我找不到有关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代码。)
答案 0 :(得分:7)
cmem
被讨论here。在你的情况下,它意味着64个字节用于将参数传递给内核,12个字节被编译器生成的常量占用。
如果是smem
,则第一个数字是您的代码请求的数据量,第二个数字(0
)表示用于系统目的的内存量。
我不知道有关详细ptxas
输出格式的任何官方信息。例如。在“CUDA占用计算器”中,他们只是简单地说smem
的值,而不进行任何探索。
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并且对于网格中的所有线程都是通用的。