我刚刚开始为我的一些模拟工作进行 GPU 编程,并且我一直在关注本教程:
http://www.drdobbs.com/parallel/cuda-supercomputing-for-the-masses-part/208401741
但是,我对术语感到困惑,访问 nVidia 的文档让我更加困惑。
这些术语:流式多处理器、线程、扭曲、块、网格、占用、着色器
有点压倒我。
这是我非常粗略的理解:
一个 GPU 被分成多处理器(可能像其中的 2 个)。每个多处理器被分割成warp,它们被分割成块,块被分割成线程。我不知道...我希望我有一个图表。有人可以帮我吗?
编辑:让我解释一下我为什么要问这个。假设我想弄清楚什么是“扭曲”。我谷歌“CUDA 扭曲”。首先出现的是http://developer.download.nvidia.com/CUDA/training/cuda_webinars_WarpsAndOccupancy.pdf。所以我向下滚动它说:
网格由完全独立的块组成
好的,我明白了。
块由可以在自己的块内通信的线程组成
好的...
32 根线形成一条经线
现在我迷路了。32根线组成一个经线?所有线程都必须在同一个块中吗?为什么我们任意将 32 个线程标记为“经线”?我可以将 12 个线程称为“挎包”吗?所以如果一个块可以容纳 20 个线程,这是否意味着我需要 2 个块来包含一个扭曲?你可以看到我的困惑来自哪里。我查找的所有内容都取决于对其他术语的了解,所以这有点像通过阅读字典来学习一门语言——这都是循环的。