我正在通过 C 代码在 CUDA (Fermi GPU) 中进行数据预取。 Cuda 参考手册讨论了 ptx 级别代码的预取,而不是 C 级别代码的预取。
任何人都可以向我提供一些有关通过 cuda 代码(cu 文件)预取的文档或内容吗?任何帮助,将不胜感激。
根据PTX手册以下是 PTX 中预取的工作原理:
您可以将 PTX 指令嵌入到 CUDA 内核中。这是一个小样本NVIDIA 的文档:
__device__ int cube (int x)
{
int y;
asm("{\n\t" // use braces for local scope
" .reg .u32 t1;\n\t" // temp reg t1,
" mul.lo.u32 t1, %1, %1;\n\t" // t1 = x * x
" mul.lo.u32 %0, t1, %1;\n\t" // y = t1 * x
"}"
: "=r"(y) : "r" (x));
return y;
}
您可能会得出以下 C 语言预取函数的结论:
__device__ void prefetch_l1 (unsigned int addr)
{
asm(" prefetch.global.L1 [ %1 ];": "=r"(addr) : "r"(addr));
}
注意:预取需要计算能力2.0或更高版本的GPU。相应地传递正确的编译标志-arch=sm_20
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)