CUDA里一个WARP中有32个线程,SM里有48个SP,每个SP对应一个线程?

一个SM在一个时间点上会执行一个Block中的一个Warp,48个SP会不会有点多?具体是怎么分配这48个SP的计算资源的。... 一个SM在一个时间点上会执行一个Block中的一个Warp,48个SP会不会有点多?具体是怎么分配这48个SP的计算资源的。 展开
 我来答
泷皖莲6
推荐于2017-11-27 · TA获得超过622个赞
知道小有建树答主
回答量:304
采纳率:0%
帮助的人:313万
展开全部
你好,

并行度是很复杂、很难估计的,它和很多因素有关,不能单从SP的数量来判断。一个SM最多有48个SP可以同时运行,它们执行同样的指令或者休眠,但是并不是说它们每一个负责一个block或者thread的运算。实际上,threads是按warp为单位执行的,一个warp有32个threads。一个SM可以最多有48个warp是active的,但是由于一个GPU时钟时间内可以执行的指令非常有限,所以这些warp不是全部并行执行的,而是随着GPU时钟来回切换执行,这个机制很复杂,是由GPU自己来部署的。所以,比较这种并行度是很难的,一般不这样比也不这样去考虑并行运算。

如果是单一的GPU优化问题,那就是比程序的吞吐量(throughput)和GPU最大吞吐量之间 (peak throughput)的差值,看一下优化的程度是不是好,越靠近最大吞吐量的优化就越好。如果只是做了一个加速的可能性,那么就比较加速比就可以了。

在实际编程中,你其实只需要考虑CUDA编程指南上面提到的那些优化方法就行了,比如增大occupancy,instruction level parallelism(指令级并行)等等就足够了。

谢谢,望采纳
乐观的L无谓
2018-04-17 · TA获得超过1.9万个赞
知道小有建树答主
回答量:84
采纳率:100%
帮助的人:1.1万
展开全部

并行度是很复杂、很难估计的,它和很多因素有关,不能单从SP的数量来判断。一个SM最多有48个SP可以同时运行,它们执行同样的指令或者休眠,但是并不是说它们每一个负责一个block或者thread的运算。

实际上,threads是按warp为单位执行的,一个warp有32个threads。一个SM可以最多有48个warp是active的,但是由于一个GPU时钟时间内可以执行的指令非常有限,所以这些warp不是全部并行执行的,而是随着GPU时钟来回切换执行,这个机制很复杂,是由GPU自己来部署的。所以,比较这种并行度是很难的,一般不这样比也不这样去考虑并行运算。

如果是单一的GPU优化问题,那就是比程序的吞吐量(throughput)和GPU最大吞吐量之间 (peak throughput)的差值,看一下优化的程度是不是好,越靠近最大吞吐量的优化就越好。如果只是做了一个加速的可能性,那么就比较加速比就可以了。

在实际编程中,你其实只需要考虑CUDA编程指南上面提到的那些优化方法就行了,比如增大occupancy,instruction level parallelism(指令级并行)等等就足够了。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tyongguang
2018-11-06 · 超过17用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:30.5万
展开全部

“SM里有48个SP”, 一个SM里有48个SP的显卡是不存在的。
“一个SM在一个时间点上会执行一个Block中的一个Warp”,这是不准确的。具体能同时跑几个Warp由Compute capability所决定。楼主看的资料比较老,以前确实是这样的。

每一款具有cuda计算能力的显卡都有一个属性叫Compute capability,这个值由主版本和次版本号组成,比如:5.0, 6.1等。这值的主版本表示了这款显卡的架构。
同一款架构里SM里所包含的SP是固定的,同一时间跑几个Warp也是基本固定的。比如说:

Compute Capability 5.x  ,A multiprocessor consists of:
128 CUDA cores for arithmetic operations (see Arithmetic Instructions for throughputs of arithmetic operations),
32 special function units for single-precision floating-point transcendental functions,
4 warp schedulers.

Compute Capability 7.x,A multiprocessor consists of:
64 FP32 cores for single-precision arithmetic operations,
32 FP64 cores for double-precision arithmetic operations, 28
64 INT32 cores for integer math,
8 mixed-precision Tensor Cores for deep learning matrix arithmetic
16 special function units for single-precision floating-point transcendental functions,
4 warp schedulers.

参考:网页链接

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式