cudaMalloc()を利用しないでDeviceメモリを確保する方法
__device__をつけてバッファを用意する。
HOST側のプログラムからは次の関数を利用してアドレスを取得する。
cudaError_t cudaGetSymbolAddress (void **devPtr, const char * symbol);
こんな感じになるかな
__device__ int d_buff[256]; int main(void) { int h_data[256] = {0,} int *d_ptr; cudaGetSymbolAddress((void**)&d_ptr, d_buff); cudaMemcpy(d_ptr, h_data, sizeof(int) * 256, cudaMemcpyHostToDevice); // 以下略 }
ただ、cudaMalloc()を使わないことに、特にメリットはないと思う。
素直にcudaMalloc()を使う方が良いだろう。