我的目标是利用应用程序中的缓存,搜索在线示例表明使用__ldg
应该相对简单。
NVIDIA
提供了有关GPU
优化的文档(可在此处找到:https : //www.olcf.ornl.gov/wp-content/uploads/2013/02/GPU_Opt_Fund-CW1.pdf),其中提供了简单的示例:
__global__ void kernel ( int *output, int *input)
{
...
output[idx] = __ldg( &input[idx] );
}
但是,当我尝试对此进行编译时,出现以下错误消息:
error: identifier "__ldg" is undefined.
不幸的是,在Google搜索此错误消息的解决方案是无济于事的。有什么建议可以解决这个简单的例子吗?
我是否缺少编译器标志?
供参考,我的设备是3.5的计算能力,我正在使用CUDA 5.5
。
谢谢你。
该__ldg()
固有只在计算能力3.5(或更新版本)架构可用。
这意味着:
这意味着:
nvcc -arch=sm_30 ...
nvcc -arch=sm_35 ...
nvcc -gencode arch=compute30,code=sm_30 -gencode arch=compute_35,code=sm_35 ...
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句