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)) );
ソースコードに問題はありますか?実際、このコードはロディニア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];