CUDA:了解PTX信息

时间:2012-09-07 17:40:24

标签: cuda

我找不到有关PTX信息的有用信息--ptxas-options=-v 我发现2008年的NVCC pdf有一个小的模糊,但没有细节 1)64 bytes cmem[0], 12 bytes cmem[16]是什么意思?我收集它指的是不断的记忆。我不在代码中使用任何常量mem,因此这必须来自编译器。 (什么进入RO mem?)
2)49152+0 bytes smem是什么意思?是的,这是共享记忆,但这两个#是什么意思? 3)是否有一份文件可以帮助我解决这个问题? (它叫什么?)
4)我在哪里可以找到解释* .ptx文件的文档? (我希望能够阅读/理解cuda assy代码。)

2 个答案:

答案 0 :(得分:7)

  1. cmem被讨论here。在你的情况下,它意味着64个字节用于将参数传递给内核,12个字节被编译器生成的常量占用。

  2. 如果是smem,则第一个数字是您的代码请求的数据量,第二个数字(0)表示用于系统目的的内存量。

  3. 我不知道有关详细ptxas输出格式的任何官方信息。例如。在“CUDA占用计算器”中,他们只是简单地说smem的值,而不进行任何探索。

  4. nVidia website上有几个PTX文档。最根本的是PTX: Parallel Thread Execution ISA Version 3.0

答案 1 :(得分:1)

请参阅“Miscellaneous NVCC Usage”。 他们提到,持续的银行分配是特定于配置文件

PTX guide中,他们说除了64KB常量内存外,他们还有10个内存用于恒定内存。驱动程序可以在这些区域中分配和初始化常量缓冲区,并将指针作为内核函数参数传递给缓冲区。

我想,为nvcc提供的配置文件将处理哪些常量进入哪个内存。无论如何,我们不需要担心每个常量内存 cmem [n]是否小于64KB ,因为每个库大小为64KB并且对于网格中的所有线程都是通用的。