【发布时间】:2011-01-13 12:16:20
【问题描述】:
我在使用 cuda 理解 NVIDIA gpu 架构中的线程时遇到了一些麻烦。
请任何人澄清这些信息: 一个 8800 gpu 有 16 个 SM,每个 8 个 SP。所以我们有 128 个 SP。
我正在观看 stanford 的视频演示,它说每个 SP 都能够同时运行 96 个线程。这是否意味着它(SP)可以同时运行 96/32=3 个 warp?
此外,由于每个 SP 可以运行 96 个线程,并且每个 SM 中有 8 个 SP。这是否意味着每个 SM 可以同时运行 96*8=768 个线程??但是如果每个 SM 一次只能运行一个 Block,并且一个 Block 中的最大线程数是 512,那么并发运行 768 个线程并且最大 512 个线程的目的是什么?
一个更普遍的问题是:块、线程和经线是如何分配给 SM 和 SP 的?我读到每个 SM 一次执行一个块,一个块中的线程被划分为 warp(32 个线程),SP 执行 warp。
【问题讨论】:
-
希望我已经在回答中进行了解释,但重要的一点是每个 SM 在任何给定时间都可以执行多个块。另外,数字 96 是一个红鲱鱼,不必担心每个 SP 的线程,只需担心每个 SM 的线程,让硬件处理更精细的细节。
标签: cuda gpu parallel-processing