我有使用常量內存的設備/主機功能。它在設備上運行正常,但在主機上,似乎此內存仍未初始化。CUDA主機和使用相同的設備__constant__內存
#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 2012-02-28 15:40:20
是的,這是更強大,我同意。但它也是更多類型;) – CygnusX1 2012-02-28 16:28:21