我正在进行GPU编程以完成一些模拟工作,我一直在学习本教程:
http://www.drdobbs.com/parallel/cuda-supercomputing-for-the-masses-part/208401741
但是,我的术语很混乱,访问nVidia的文档让我更加困惑。
这些术语:流多处理器,线程,warp,块,网格,占用,着色器
让我感到压倒一切。
这是我非常粗略的理解:
GPU被分成多处理器(可能就像其中的2个)。每个多处理器都被分成warp,warp被分成块,这些块被分成线程。我不知道......我希望我有一张图。有人可以帮助我吗?
编辑:让我解释一下我为什么这么问。假设我试图找出“扭曲”是什么。我谷歌“CUDA扭曲”。首先出现的是http://developer.download.nvidia.com/CUDA/training/cuda_webinars_WarpsAndOccupancy.pdf。所以我向下滚动,它说:
网格由块组成 这完全是 独立
好的,我明白了。
块由线程组成 可以在内部进行交流 他们自己的块
好了...
32个线程形成一个warp
现在我迷路了。 32个线程形成扭曲?所有线程都必须在同一个块中吗?为什么我们任意将32个线程标记为“warp”?我可以将12个线程称为“书包”吗?因此,如果一个块可以容纳20个线程,这是否意味着我需要2个块来包含warp?你可以看到我的困惑来自哪里。我查看的所有内容都取决于了解其他术语,所以有点像尝试通过阅读字典来学习语言 - 这都是循环的。
答案 0 :(得分:6)
以SO单一问题/答案格式解释像CUDA或GPU架构这样的东西并不可行。需要长篇大论的问题经常被关闭。
您面临的挑战是可以理解的。有时你需要一个更有条理的主题介绍,而不是通过谷歌搜索术语。
NVIDIA提供各种资源:
仅举几例。我建议您先参加介绍性和高级网络研讨会。如果你打算做很多GPU编码,花费大约2个小时:
使用CUDA C进行GPU计算 - 简介(2010) 使用CUDA C概述GPU计算的基础知识将通过代码示例的演练来说明。无需先前的GPU计算经验
使用CUDA C进行GPU计算 - 高级1(2010) 第一级优化技术,如全局内存优化和处理器利用率。将使用实际代码示例来说明概念
这些都是3岁的事实对你提出的问题无关紧要。当然欢迎您浏览更新版本的网络研讨会 - 有很多。