首页 > 其他 > 详细

CUDA软硬件的基本理解

时间:2020-08-17 08:27:31      阅读:69      评论:0      收藏:0      [点我收藏+]

 

1、软件层

  CUDA从软件层分为流、线程格、线程块、线程。在一次Kernel调用时,需要指定一个grid下划分的block的布局和数量,以及一个block下thread的布局和数量。

  cuda stream(流)对应一个任务,存储了一个执行序列,如内存数据交换、执行kernel函数、内存数据交换。如果是多任务(不同kernel函数),则可以使用cuda stream,每个流携带一个kernel函数。(仿佛能并行???)

 

2、硬件层

  GPU由多个SM组成,每个SM下包含 多个SP(执行单元)、共享内存、指令单元等。每个SM以block为单位执行任务(每个SM分配一个block),故block个数最好为SM的倍数,所以block下的线程可以通过共享内存进行通信,block之间无法通过shared memory通信。

  GPU应该是划分为一个内存拷贝引擎和一个kernel执行引擎,所以使用cuda stream可以在一定程度上并行。

  注:关于不同的kernel函数能否同时并行执行,好像是不行,但是为啥每个SM都有指令单元,那SM之间为啥不能执行不同的kernel并行呢???

技术分享图片

 

CUDA软硬件的基本理解

原文:https://www.cnblogs.com/chen9510/p/13515574.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!