GPU 的硬件基本概念,Cuda和Opencl名词关系对应

GPU 的硬件基本概念

Nvidia的版本:

  实际上在 nVidia 的 GPU 里,最基本的处理单元是所谓的 SP(Streaming Processor),而一颗 nVidia 的 GPU
里,会有非常多的 SP 可以同时做计算;而数个 SP 会在附加一些其他单元,一起组成一个 SM(Streaming Multiprocessor)。几个 SM
则会在组成所谓的 TPC(Texture Processing Clusters)。

  在 G80/G92 的架构下,总共会有 128 个 SP,以 8 个 SP 为一组,组成 16 个 SM,再以两个 SM 为一个 TPC,共分成 8
个 TPC 来运作。而在新一代的 GT200 里,SP 则是增加到 240 个,还是以 8 个 SP 组成一个 SM,但是改成以 3 个 SM 组成一个
TPC,共 10 组 TPC。

对应到 CUDA

  而在 CUDA 中,应该是没有 TPC 的那一层架构,而是只要根据 GPU 的 SM、SP 的数量和资源来调整就可以了。

  如果把 CUDA 的 Grid - Block - Thread 架构对应到实际的硬件上的话,会类似对应成 GPU - Streaming
Multiprocessor - Streaming Processor;一整个 Grid 会直接丢给 GPU 来执行,而 Block 大致就是对应到
SM,thread 则大致对应到 SP。当然,这个讲法并不是很精确,只是一个简单的比喻而已。

AMD 版本:

三 OPENCL架构

另外work-item对应硬件上的一个PE(processing
element),而一个work-group对应硬件上的一个CU(computing
unit)。这种对应可以理解为,一个work-item不能被拆分到多个PE上处理;同样,一个work-group也不能拆分到多个CU上同时处理(忘了哪里看到的信息)。当映射到OpenCL硬件模型上时,每一个work-item运行在一个被称为处理基元(processing
element)的抽象硬件单元上,其中每个处理基元可以处理多个work-item(注:摘自《OpenCL异构计算》P87)。(如此而言,是不是说对于二维的globalx必须是localx的整数倍,globaly必须是localy的整数倍?那么如果我数据很大,work-item所能数量很多,如果一个group中中work-item的数量不超过CU中PE的个数,那么group的数量就可能很多;如果我想让group数量小点,那work-item的数目就会很多,还能不能处理了呢?这里总是找不多一个权威的解释,还请高手指点!针对group和item的问题) 。

对应CUDA组织多个workgroup,每个workgroup划分为多个thread.

由于硬件的限制,比如cu中pe数量的限制,实际上workgroup中线程并不是同时执行的,而是有一个调度单位,同一个workgroup中的线程,按照调度单位分组,然后一组一组调度硬件上去执行。这个调度单位在nvidia的硬件上称作warp,在AMD的硬件上称作wavefront,或者简称为wave

所以理解上可以简单总结如下

首先解释下Cuda中的名词:

Block: 相当于opencl 中的work-group

Thread:相当于opencl 中的work-item

SP:   相当于opencl 中的PE

SM:  相当于opencl 中的CU

warp: 相当于opencl 中的wavefront(简称wave).

GPU 的硬件基本概念,Cuda和Opencl名词关系对应,布布扣,bubuko.com

时间: 2024-08-04 14:13:53

GPU 的硬件基本概念,Cuda和Opencl名词关系对应的相关文章

CUDA和OpenCL异同点比较

CUDA和OpenCL异同点比较 一.概述 对CUDA和opencl有一定的编程经验,但是细心的人可以发现,OPENCL就是仿照CUDA来做的.既然两个GPU的编程框架如此相像,那么他们究竟有什么不同呢?下面就一一道来. 二.数据并行的模型 OpenCL采用的数据并行模型就是采用CUDA的数据并行模型.下面的表格反应了CUDA和opencl并行模型之间的映射关系. OpenCL CUDA Kernel函数 Kernel函数 主机程序 主机程序 N-DRange 网格 工作项 线程 工作组 线程块

硬件基础概念、常识集

本文是底层开发中遇到的一些基础概念.常识的集合列表,将不断扩充. 当扩展到一定数量后,会进行分门别类的整理. 注意,这些定义或者解释并非学术性的,所以并不严格,但对于我来说,这些描述方式更便于我理解. 追求定义严格.规范的读者可直接忽略本文. 脉宽调制: 就是把一个时间连续.取值连续的模拟信号变换成时间离散.取值离散的数字信号后在信道中传输. 脉冲编码调制就是对模拟信号先抽样,再对样值幅度量化.编码的过程. 简单一句话,就是模拟信号转数字信号.

服务器常用的GPU与硬件信息

MapD中使用了8个K40,其配置信息如下: 目前,我用的是4个P100,信息如下: 比较常用的还有K80,配置信息如下: 我的硬件存储信息:

?《数据库系统概念》3-主键、关系运算

? 一.关系数据库相关 a)在将数据呈现给用户时,主要需解决两个关键问题:如何检索.更新数据以及对数据的保护.而用户对字段的使用决定了其是否原子性,比如phone,即使保存单个电话号码,如果根据电话号码区分运营商.地域,则是不满足原子性的.b)键的分类:超键(Super key),由若干字段组合起来,可以唯一地标识一个数据对象候选键(Candidate key),超键的不同组合方式主键(Primary key) 被数据库设计者选中的候选键c)主键的选择需能够唯一地标识一个数据对象,且不会改变或很

[linuxeden] 程序员的野心:让GPU像CPU一样运行

GPU代表的是图形处理单元,但是,这些小小芯片除了处理图形功能,还有其它用处.比如,Google使用GPU来为人脑建模,Salesforce则依赖GPU分析Twitter微博数据流.GPU很适合并行处理运算,也就是同时执行成千上万个任务.怎么做呢?你得开发一个新软件,让它挖掘GPU芯片的潜力.最近美国印第安纳大学计算机博士埃里克-浩克(Eric Holk)就作出尝试,他开发了一个应用程序来运行GPU.浩克说:“GPU编程仍然需要程序员管理许多低层细节,这些细节是与GPU执行的主要任务分离 的.我

【CUDA学习】GPU硬件结构

GPU的硬件结构,也不是具体的硬件结构,就是与CUDA相关的几个概念:thread,block,grid,warp,sp,sm. sp: 最基本的处理单元,streaming processor  最后具体的指令和任务都是在sp上处理的.GPU进行并行计算,也就是很多个sp同时做处理 sm:多个sp加上其他的一些资源组成一个sm,  streaming multiprocessor. 其他资源也就是存储资源,共享内存,寄储器等. warp:GPU执行程序时的调度单位,目前cuda的warp的大小

OpenCV GPU CUDA OpenCL 配置

首先,正确安装OpenCV,并且通过测试. 我理解GPU的环境配置由3个主要步骤构成. 1. 生成关联文件,即makefile或工程文件 2. 编译生成与使用硬件相关的库文件,包括动态.静态库文件. 3. 将生成的库文件加入到程序中,加入过程类似于OpenCV库的添加过程. 详细操作参见: http://wenku.baidu.com/link?url=GGDJLZFwhj26F50GqW-q1ZcWek-QN2kAgVJ5SHrQcmte-nx9-GyIUKxGwIvtzJ_WoBddvasI

OpenCL入门:(二:用GPU计算两个数组和)

本文编写一个计算两个数组和的程序,用CPU和GPU分别运算,计算运算时间,并且校验最后的运算结果.文中代码偏多,原理建议阅读下面文章,文中介绍了OpenCL相关名词概念. http://opencl.codeplex.com/wikipage?title=OpenCL%20Tutorials%20-%201  (英文版) http://www.cnblogs.com/leiben/archive/2012/06/05/2536508.html (博友翻译的中文版) 一.创建工程 按照OpenCL

CUDA 5 ---- GPU架构(Fermi、Kepler)

GPU架构 SM(Streaming Multiprocessors)是GPU架构中非常重要的部分,GPU硬件的并行性就是由SM决定的. 以Fermi架构为例,其包含以下主要组成部分: CUDA cores Shared Memory/L1Cache Register File Load/Store Units Special Function Units Warp Scheduler GPU中每个SM都设计成支持数以百计的线程并行执行,并且每个GPU都包含了很多的SM,所以GPU支持成百上千的