如何在任何文件中包含带有cuda常量的头文件

时间:2016-04-16 17:34:11

标签: c++ cuda constants

我有这个常量的头文件

__constant__ er_t SERIES_PREC;
__constant__ er_t ONE;
__constant__ er_t HALF;

我不能在任何* .cu文件中包含此头文件 - 错误链接。 在这种情况下如何使用常量内存?

1 个答案:

答案 0 :(得分:1)

尝试重现此问题,我对以下内容没有任何疑问:

头文件:

#pragma once

__constant__ int mystuff ;
__constant__ int othersuff ;

__global__ void f(int* val);
__global__ void g(int* val);

首先.cu文件:

#include "constants.cuh"
__global__ void f(int* val) { *val = mystuff ; }

第二个.cu文件:

#include "constants.cuh"
__global__ void g(int* val) { *val = mystuff ; }

Main .cu文件:

#include "constants.cuh"
int main()
{
    int* g_out ;
    cudaMalloc ((void**)&g_out, sizeof(int));

    f<<<1,1>>>(g_out);
    g<<<1,1>>>(g_out);
    ....

没有问题(CUDA 7.5,Visual Studio 2012)。也许你的er_t结构有些东西是编译器不接受的。它是否有任何可能引发警告/错误消息的初始值设定项或字段?