gpt4 book ai didi

CUDA 常量存储库

转载 作者:行者123 更新时间:2023-12-04 08:12:17 24 4
gpt4 key购买 nike

当我们使用 xptxas 检查寄存器使用情况时,我们会看到如下内容:

ptxas info : Used 63 registers, 244 bytes cmem[0], 51220 bytes cmem[2], 24 bytes cmem[14], 20 bytes cmem[16]

我想知道目前是否有任何文档清楚地解释了 cmem[x]。将常量内存分成多个bank有什么意义,总共有多少bank,除了0、2、14、16之外的bank还有什么用?

作为旁注,@njuffa(特别感谢您)之前在 nvidia 的论坛上解释了什么是银行 0、2、14、16:

使用的常量内存被划分为常量程序“变量”(bank 1),加上编译器生成的常量(bank 14)。

cmem[0]:内核参数

cmem[2]:用户定义的常量对象

cmem[16]:编译器生成的常量(其中一些可能对应于源代码中的文字常量)

最佳答案

据我所知,CUDA 对 GPU 常量组的使用没有正式记录。常量组的数量和使用在 GPU 代之间确实不同。这些是程序员不必担心的低级实现细节。

如果需要,可以通过查看为给定平台生成的机器代码 (SASS) 来逆向使用常量库。事实上,这就是我想出原始问题中引用的信息的方式(此信息来自我的 NVIDIA 开发者论坛帖子)。我记得,我在那里提供的信息是基于专门应用于费米级设备的临时逆向工程,但我目前无法验证这一点,因为论坛目前无法访问。

拥有多个常量库的原因之一是保留用户可见的常量内存供 CUDA 程序员使用,同时将硬件或工具提供的额外只读信息存储在额外的常量库中。

请注意,CUDA 数学库作为源文件提供,并且函数被内联到用户代码中,因此 CUDA 数学库函数的常量内存使用量包含在用户可见常量内存的统计数据中。

关于CUDA 常量存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12290708/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com