在cuda中预取(通过C代码)

use*_*482 7 cuda prefetch

我正在通过C代码在CUDA(Fermi GPU)中进行数据预取.Cuda参考手册讨论了ptx级代码的预取而不是C级代码.

任何人都可以通过cuda代码(cu文件)与我联系一些有关预取的文件.任何帮助,将不胜感激.

las*_*gar 5

根据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;
}
Run Code Online (Sandbox Code Playgroud)

您可以在C中结束以下预取功能:

__device__ void prefetch_l1 (unsigned int addr)
{

  asm(" prefetch.global.L1 [ %1 ];": "=r"(addr) : "r"(addr));
}
Run Code Online (Sandbox Code Playgroud)

注意:您需要具有Compute Capability 2.0或更高版本的GPU才能进行预取.相应地传递适当的编译标志-arch=sm_20

  • 当然!检查这个GPGPU预取研究,并通过参考资料了解更多关于这个概念的信息:http://www.cc.gatech.edu/~hyesoon/lee_taco12.pdf (2认同)