单SM架构CUDA GPU能否并行执行两个512线程核函数?
关于单SM CUDA GPU上多核函数执行的调度问题
不能在单个SM的CUDA GPU上并行执行两个独立的CUDA核函数,它们会以串行方式运行:
- CUDA核函数的调度基于设备执行上下文,同一时间单个SM只能归属于一个核函数的执行上下文。启动第一个核函数后,它会占用该SM的所有可用资源(只要其线程/块的资源需求在SM容量范围内),第二个核函数会进入等待队列,直到第一个核函数完全执行完毕才会启动。
- 虽然SM内部以**块(block)**为单位分配寄存器、共享内存、warp调度器等资源,但这种分配仅针对当前正在执行的单个核函数。不同核函数之间不存在资源共享或并行调度的情况——哪怕SM还有剩余闲置线程单元(比如你提到的512线程核函数运行时剩下512个闲置核心),第二个核函数也无法利用这些闲置资源,必须等待前一个核函数执行完成。
- 需要明确:同一核函数内的多个块可以在SM上并发执行(只要SM资源能容纳多个块),但跨核函数的并行执行在单SM设备上是不支持的,这是CUDA调度机制的固有规则。
内容的提问来源于stack exchange,提问作者Guido Sales Calvano
相关产品推荐
相关产品推荐

