私は定数メモリを使用するデバイス/ホスト機能を持っています。デバイス上では正常に動作しますが、ホスト上ではこのメモリは初期化されていないようです。同じ__constant__メモリを使用するCUDAホストとデバイス
#include <iostream>
#include <stdio.h>
const __constant__ double vals[2] = { 0.0, 1000.0 };
__device__ __host__ double f(size_t i)
{
return vals[i];
}
__global__ void kern()
{
printf("vals[%d] = %lf\n", threadIdx.x, vals[threadIdx.x]);
}
int main() {
std::cerr << f(0) << " " << f(1) << std::endl;
kern<<<1, 2>>>();
cudaThreadSynchronize();
}
このプリントは(CC 2.0以上が必要です)
0 0
vals[0] = 0.000000
vals[1] = 1000.000000
問題とどのように私は、デバイスとホストメモリ定数の両方が同時に初期化され得ることができるとは何ですか?
私は自分自身で解決策を見つけ出し、あなたと完全に一致します。ありがとう! – davinchi
ええ、これはより堅牢です、私は同意します。しかし、それはさらにタイプすることです;) – CygnusX1