当我运行 cuda 二进制文件时,我看到了“无效设备符号”的消息。编译过程中没有错误。消息在下面。
Cuda error in file 'euler3d.cu' in line 416 : invalid device symbol.
相关源代码如下。
CUDA_SAFE_CALL( cudaMemcpyToSymbol(ff_variable, h_ff_variable, NVAR*sizeof(float)) );
源代码有什么问题吗?实际上这段代码来自 Rodinia v2.1,cfd 基准程序。我正在使用 cuda 3.1 版并使用以下选项进行编译。
nvcc -Xptxas -v -O3 --gpu-architecture=compute_13 --gpu-code=compute_13 euler3d.cu -o euler3d -I$(CUDA_SDK_PATH)/common/inc -L$(CUDA_SDK_PATH)/lib $(CUTIL_LIB)
ff_variable 相关代码在这里。
#define NDIM 3
#define VAR_MOMENTUM 1
#define VAR_DENSITY_ENERGY (VAR_MOMENTUM+NDIM)
#define NVAR (VAR_DENSITY_ENERGY+1)
__constant__ float ff_variable[NVAR];