CUDA:了解PTX信息

CUDA:了解PTX信息,cuda,Cuda,我在PTX info--ptxas options=-v 我发现了一个2008年的NVCC pdf,它有一个小的简介,但没有详细信息。 1) 什么是64字节cmem[0],12字节cmem[16]的意思?我想它指的是恒定的记忆。我在代码中没有使用任何常量mem,因此它必须来自编译器。(什么进入RO mem? 2) 49152+0字节smem是什么意思?是的,这是共享内存,但这两者是什么意思 3) 有医生能帮我吗?(它叫什么? 4) 在哪里可以找到解释*.ptx文件的文档?(我希望能够阅读/理解c

我在PTX info
--ptxas options=-v
我发现了一个2008年的NVCC pdf,它有一个小的简介,但没有详细信息。
1) 什么是64字节cmem[0],12字节cmem[16]的意思?我想它指的是恒定的记忆。我在代码中没有使用任何常量mem,因此它必须来自编译器。(什么进入RO mem?
2)
49152+0字节smem
是什么意思?是的,这是共享内存,但这两者是什么意思 3) 有医生能帮我吗?(它叫什么?
4) 在哪里可以找到解释*.ptx文件的文档?(我希望能够阅读/理解cuda assy代码。)

  • 讨论了cmem。在您的例子中,这意味着64个字节用于向内核传递参数,12个字节被编译器生成的常量占用

  • 对于
    smem
    ,第一个数字是代码请求的数据量,第二个数字(
    0
    )表示系统使用了多少内存

  • 我不知道关于详细的
    ptxas
    输出格式的任何官方信息。例如,在“CUDA占用率计算器”中,他们只是简单地说对
    smem
    的值求和,没有任何解释

  • 上有几个PTX文档。最基本的是

  • 请参阅“”。 他们提到,固定的银行分配是特定于个人资料的

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

    我猜,为nvcc提供的配置文件将考虑哪些常量进入哪个内存。无论如何,如果每个常量内存cmem[n]小于64KB,我们不必担心,因为每个内存组的大小都是64KB,对于网格中的所有线程都是通用的

    cmem[x]-x=内存库:0=内核参数数据/信息,2=用户定义的常量存储,14&16=编译器生成的常量存储