请教大家几个问题哈,哎,最近实验室快把我逼疯了。。

superlynn 2010-11-07 02:56:25
1、用一维的block和thread,也就是带状分布,请问每个block里面的thread数目一般怎么设置呀?对整个性能是怎么影响的?师兄说一般是256?哎 。。。

2、我在kernel程序里,想定义一个数组,比如 int a[3],是不是这个就在local memory分配内存了?那要是想在寄存器里怎么办(速度会快)?要是写成int a[0], a[1], a[2],问题是在下面的程序里不能用循环了。。。5555

3、在kernel程序用share memory静态分配内存时,分配的内存就是每个线程需要的?还是分配每个block需要的?
每个线程处理的东西彼此不相关,是不是不用写___synthreads()呀

头晕了都。。。可能对GPU工作的原理还不是很清楚。。。哎。。。。

拜托大家!
...全文
122 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
victorypiter 2010-11-09
  • 打赏
  • 举报
回复
其实这些问题很简单,自己看看ProgrammingGuide 就懂了,
再不懂,可以站内信我。
Cyrosly 2010-11-07
  • 打赏
  • 举报
回复
1 : thread的数目要看具体应用,和你寄存器和共享内存以及局部内存的使用情况而定,一般情况下设置成256或192,但有时设置成更小或更大性能反而更高

2 : 一般小数组不会分配到local memory,但如果寄存器冲突图里的颜色过多,那么寄存器在选择寄存器溢出抉择时的确会首先选择以数组声明的变量。

3 : 是每个active block中的线程需要的,但硬件不会理会到底哪个block使用, 只在执行之前为每个SM指定一次(分配的说法有待商榷),然后哪那个block在哪个SM上执行,就用那个SM上的共享内存。 最后:使得,只要在同一个指令点所有的行为没有数据相关性就不需要

589

社区成员

发帖
与我相关
我的任务
社区描述
CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。
社区管理员
  • CUDA编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧