对寄存器和共享内存使用无符号短整数是否有意义? [英] Does it make sense to use an unsigned short integer for registers and shared memory?

查看:99
本文介绍了对寄存器和共享内存使用无符号短整数是否有意义?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Does it make sense to use an unsigned short integer for registers (for saving register's memory) and shared memory (faster access) in CUDA programs?

我创建模板设备功能(使用寄存器和共享内存),专门用于uint和ushort。
使用:
对于uint:25个寄存器,速度460 MB /秒。
对于ushort:26个寄存器,速度为420 MB /秒。

I create template device function (using registers and shared memory) and specialize it for uint and ushort. Use: For uint: 25 registers and speed 460 MB/sec. For ushort: 26 registers and speed 420 MB/sec.

因此,没有理由使用无符号short int。

So there is no reason to use unsigned short int.

推荐答案

我对CUDA没有丰富的经验,但我已经读过,我们应该避免使用未签名的类型()。

I don't have big experience with CUDA, but I've read, that we should avoid using unsigned types (Cuda C Best Practices Guide).

使用共享内存可能是提高应用程序性能的最佳方法。您应该考虑如何优化内核。当您经常从全局内存中读取相同的值时,或者您需要在内核中使用一个线程(所有内核将数据加载到SM并停止,但先从SM而不是从全局内存中读取数据)时,请使用共享内存。

Using shared memory can be the best way to increase performance in our apps. You should think how to optimize your kernel. When you often read the same value from global memory or you need to use one thread in kernel (all kernel load data to SM and stop but first read data from SM not from global memory), use shared memory.

一切取决于您要做什么。如果要优化内核,请发布一些代码。

Everything depends on what do you want to do. If you want to optimize kernel, please post some code.

这篇关于对寄存器和共享内存使用无符号短整数是否有意义?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆