赞
踩
[计算机]利用GPU进行高性能数据并行计算
维普资讯
利用 GPU
进行高性能数据并行计算
一文 /丁艺 明 刘 波
GPU通过单指令 多数据 (SIMD)指令类型来支持数
据并行计算。参见图1,在单指令多数据流的结构 中,单
数 一 控制部件向每条流水线分派指令,同样的指令被所有
处理部件同时执行。例如NVIDIA8800GT显卡中包含有
14组多处理器 (Multiprocessor),每组处理器有8个处理
单元 (Processor),但每组多处理器只包含一个指令单元
(InstructionUnit)。
GPU强大计算能力
早期的3D游戏,显卡只是为屏幕上显示像素提供一
个缓存,所有的图形处理都是由CPU单独完成。图形渲
染适合并行处理,擅长于执行串行工作的CPU实际上难
以胜任这项任务。直到1995年,PC机领域第一款GPU
3dfxVoodoo出来以后,游戏的速度、画质才取得了一个
飞跃。GPU的功能更新很迅速,平均每一年多便有新一代
的GPU诞生,运算速度也越来越快。以下表1表 明2006
年度GPU与CPU价格相当的情况下,GPU的计算能力已
经远远高于CPU的计算能力。注:GFLOPS为每秒浮点
运算能力。
图1 NVDIAGeForce8体系结构
为什么GPU跑得快? GPU流式编程模型
GPU具有两点主要特征:超长流水线与并行计算。 GPU编程 以流式编程模型为基础,它以允许高效计
如果装配一台汽车需要 10个时间单元,将它分成 10 算和通信的方式构造程序。在流式编程模型中,所有数据
个流水线阶段,每个阶段分配一个时间单元,那么一条装 都表现为流。我们把流定义为具有相同数据类型的数据的
配线每一个时间单元就可以生产一辆汽车。显然流水线模 有序集。数据类型可以是简单的(整数或浮点数流)或复杂
式的生产在理想状况下要比串行方式快了十倍。 的(点或三角形或变换矩阵流)。流可以是任意长度,如果
200804 97
维普资讯
/(o~o[[u 一
流很长 (流中有上百或更多的元素),那么流上的操作并行 码计算成MD5值 ,然后再去和保存在文件系统中的MD5
度将很高。流上允许的操作包括复制它们,从它们导出子 值进行比较,进而确定输入的密码是否正确。
流,用一个单独的索引流索引入它们,以及用核在它们上 在我们的程序中,允许用户输入一长度为五的密码的
执行计算。GPU程序称为核,核操作整个流,获取一个 MD5值,每位密码变化范围是A—Za—z口、^_、01一,共64种
或多个流作为输入并产生一个或多个流作为输出。核的特 字符。穷举所有的密码并用MD5算法得到所有的MD5值,
征是它操作多个流上的所有元素而不是独立的元素。 与用户输入的MD5值比较,若枚举的密码MD5值与用户
CPU程序以异步的方式调用GPU核程序。GPU作为 输入
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。