在 CUDA 程序中对寄存器(用于保存寄存器的内存)和共享内存(更快的访问)使用无符号短整数是否有意义?
我创建了模板__device__
函数(使用寄存器和共享内存)并将其专门用于uint
和ushort
。
使用:
- 对于
uint
:25 个寄存器,速度 460 MB/秒。 - 对于
ushort
:26 个寄存器,速度 420 MB/秒。
因此没有理由使用unsigned Short int
。
最佳答案
我在 CUDA 方面没有丰富的经验,但我读过,我们应该避免使用无符号类型 ( Cuda C Best Practices Guide )。
使用共享内存可能是提高应用性能的最佳方式。你应该考虑如何优化你的内核。当您经常从全局内存中读取相同的值或需要在内核中使用一个线程(所有内核将数据加载到 SM 并停止但首先从 SM 中读取数据而不是从全局内存中读取数据)时,请使用共享内存。
一切都取决于你想做什么。如果你想优化内核,请发布一些代码。
关于cuda - 对寄存器和共享内存使用无符号短整数有意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12733856/