Kin*_*son 7 cuda gpu-constant-memory
当我们使用xptxas检查寄存器使用情况时,我们会看到如下内容:
ptxas info : Used 63 registers, 244 bytes cmem[0], 51220 bytes cmem[2], 24 bytes cmem[14], 20 bytes cmem[16]
Run Code Online (Sandbox Code Playgroud)
我想知道目前是否有任何文件清楚地解释了cmem [x].将常数存储器分成多个存储体,总共有多少存储体,除了0,2,14,16之外的其他存储体用于什么?
作为旁注,@ njuffa(特别感谢你)之前在nvidia的论坛上解释过什么是0,2,14,16银行:
使用的常量存储器在常量程序"变量"(存储区1)中分区,加上编译器生成的常量(存储区14).
cmem [0]:内核参数
cmem [2]:用户定义的常量对象
cmem [16]:编译器生成的常量(其中一些可能对应源代码中的文字常量)
据我所知,CUDA对GPU恒定库的使用并未正式记录.恒定库的数量和用法在GPU代之间确实不同.这些是程序员不必担心的低级实现细节.
如果需要,可以通过查看为给定平台生成的机器代码(SASS)来反转设计常量库的使用.事实上,这就是我提出原始问题中引用的信息的方式(这些信息来自我的NVIDIA开发者论坛帖子).我记得,我在那里提供的信息是基于专门应用于费米级设备的特殊逆向工程,但我目前无法验证这一点,因为论坛暂时无法访问.
具有多个恒定存储体的一个原因是为了使用CUDA程序员而保留用户可见的恒定存储器,同时存储由硬件或工具提供的附加恒定存储体中的附加只读信息.
请注意,CUDA数学库作为源文件提供,函数内联到用户代码中,因此CUDA数学库函数的常量内存使用情况包含在用户可见常量内存的统计信息中.
归档时间: |
|
查看次数: |
2642 次 |
最近记录: |