Tesla C1060 (compute 1.3) でデータ構造をホストからコンスタント メモリに移動しようとしています。次の関数を使用します。
//mem.cu
#include "kernel.cuh"
int InitDCMem(SimuationStruct *sim)
{
SimParamGPU h_simparam;
h_simparam.na = sim->det.na;
h_simparam.nz = sim->det.nz;
h_simparam.nr = sim->det.nr;
cudaMemcpyToSymbol(d_simparam, &h_simparam, sizeof(SimParamGPU));
}
データ構造 (ヘッダー ファイル内):
//kernel.cuh
typedef struct __align__(16)
{
int na;
int nz;
int nr;
} SimParamGPU;
__constant__ SimParamGPU d_simparam;
問題は、値が GPU の定数メモリにコピーされていないように見えることです。
cudaMemcpyToSymbol do not copy dataに記載されているように再宣言する必要があり__constant__
ますか。どこか
で使うべきですか?\\mem.cu
extern
エラーはなく、値は常に 0 に設定されます。