cuda - 对寄存器和共享内存使用无符号短整数有意义吗?

标签 cuda gpgpu

在 CUDA 程序中对寄存器(用于保存寄存器的内存)和共享内存(更快的访问)使用无符号短整数是否有意义?

我创建了模板__device__函数(使用寄存器和共享内存)并将其专门用于uintushort。 使用:

  • 对于 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/

相关文章:

cross-platform - OpenCL - 支持具有相同二进制文件的不同平台

performance - 我应该研究 PTX 来优化我的内核吗?如果是这样,如何?

c++ - cudaMalloc3D - 简单示例

cuda - cudaMallocHost() 、 cudaCreateEvent() 与执行内核异步吗?

cuda - 将对象复制到设备?

c - PyCUDA 无法包含 <curand_kernel.h> - 错误 : no extern "C" linkage

cuda - 在 Google Colab 上执行 CUDA 程序时如何链接库?

c++ - C++函数调用后SSBO的内容无效

opengl - opengl 中的 mipmap 生成 - 是硬件加速吗?

java - 从 Java 运行时为 Linux 运行命令