第10卷第1期 智能系统学报 Vol.10No.1 2015年2月 CAAI Transactions on Intelligent Systems Feb.2015 D0I:10.3969/j.issn.1673-4785.201403072 网络出版地址:http://www.cnki.net/kcms/doi/10.3969/j.issn.1673-4785.201403072.html GPU通用计算及其在计算智能领域的应用 丁科2,谭营12 (1.北京大学机器感知与智能教育部重点实验室,北京100871:2.北京大学信息科学技术学院,北京100871) 摘要:在日趋复杂的图形处理任务的推动下,GPU已经演化成为具有众多计算核心、计算能力强大的通用计算设备, 并被越来越多地应用于图形处理之外的计算领域。GU具有高并行、低能耗和低成本的特点,在数据并行度高的计算 任务中,相比与传统的CPU平台有着显著的优势。随着GPU体系结构的不断演进以及开发平台的逐步完善,GPU已 经进入到高性能计算的主流行列。GPU通用计算的普及,使个人和小型机构能有机会获得以往昂贵的大型、超级计算 机才能提供的计算能力,并一定程度上改变了科学计算领域的格局和编程开发模式。GPU提供的强大计算能力极大 地推动了计算智能的发展,并且已经在深度学习和群体智能优化方法等子领域获得了巨大的成功,更是在图像、语音等 领域取得了突破性的进展。随着人工智能技术和方法的不断进步,GPU将在更多的领域获得更加广泛的应用。 关键词:计算智能:群体智能;演化算法;机器学习;深度学习;图形处理器;GPU通用计算:异构计算:高性能计算 中图分类号:TP301文献标志码:A文章编号:1673-4785(2015)01-0001-11 中文引用格式:丁科,谭营.GP0通用计算及其在计算智能领域的应用[J].智能系统学报,2015,10(1):111. 英文引用格式:DING Ke,TAN Ying.A review on general purpose computing on GPUs and its applications in computational intelli- gence[J].CAAI Transactions on Intelligent Systems,2015,10(1):1-11. A review on general purpose computing on GPUs and its applications in computational intelligence DING Ke'2,TAN Ying'2 (1.Key Laboratory of Machine Perception(MOE),Peking University,Beijing 100871,China;2.School of Electronics Engineering and Computer Science,Peking University,Beijing 100871,China) Abstract:The GPU enjoys the characteristics of high parallelism,low energy consumption and cheap price.Com- pared with the traditional CPU platform,it is especially suitable for tasks with high data parallelism.GPU compu- ting has come into the mainstream of high performance computation(HPC)due to the emerging of development platforms like CUDA and OpenCL.The GPU's enormous computational power greatly promotes computational intel- ligence.A great success has been achieved in the fields such as deep learning and swarm intelligence optimization, and several breakthroughs have been seen in image,and speech recognition because of GPU.Though suffering some drawbacks,GPUs provide common people and small institutions with enormous computing power.This has changed the set-up of scientific computing and programming model because it could only be provided by expensive super- computers.To help researchers in the field of computational intelligence better utilize GPUs,a detailed survey of GPGPU is given in this paper.First,the characteristics and advantages of GPUs against CPUs are presented.Then we briefly review the development of GPU hardware followed by a survey of the evolution of development tools for GPGPU;special attention is drawn to two major platforms,CUDA and OpenCL.We end this paper with our per- spectives of the challenges and trends of GPGPU.We point out that embedding and cluster are two major trends for GPGPU and as both academia and industry continue to see increasing progress in artificial intelligence,the GPU will be more widely used in more domains. Keywords:computational intelligence;swarm intelligence;evolutionary algorithms;machine learning;deep learn- ing;graphics processing unit(GPU);general purpose computing on GPUs;heterogonous computing;high per- formance computing (HPC) 收稿日期:2014-12-18.网络出版日期:2015-01-13. GPU通用计算(general purpose computing on 基金项目:国家自然科学基金资助项目(61375119,61170057, 60875080). GPUs,GPGPU)是一种利用图形处理器(graphics 通信作者:谭营.E-mail:ytan@pku.edu.cn
第 员园 卷第 员 期摇摇摇摇摇 摇摇 摇摇摇 摇摇摇 智 能 系 统 学 报摇摇摇摇摇 摇 摇 摇 摇 摇 摇 摇 摇 摇 灾燥造援员园翼援员 圆园员缘 年 圆 月摇摇摇摇摇摇摇摇摇摇摇 悦粤粤陨 栽则葬灶泽葬糟贼蚤燥灶泽 燥灶 陨灶贼藻造造蚤早藻灶贼 杂赠泽贼藻皂泽 摇 摇 摇 摇 摇 摇 摇 摇 摇 摇 摇 摇 摇 云藻遭援 圆园员缘 阅韵陨院员园援猿怨远怨 辕 躁援蚤泽泽灶援员远苑猿鄄源苑愿缘援圆园员源园猿园苑圆 网络出版地址院澡贼贼责院 辕 辕 憎憎憎援糟灶噪蚤援灶藻贼 辕 噪糟皂泽 辕 凿燥蚤 辕 员园援猿怨远怨 辕 躁援蚤泽泽灶援员远苑猿鄄源苑愿缘援圆园员源园猿园苑圆援澡贼皂造 郧孕哉 通用计算及其在计算智能领域的应用 丁科员袁圆 袁谭营员袁圆 渊员援北京大学 机器感知与智能教育部重点实验室袁北京 员园园愿苑员曰 圆援北京大学 信息科学技术学院袁北京 员园园愿苑员冤 摘 要院在日趋复杂的图形处理任务的推动下袁郧孕哉 已经演化成为具有众多计算核心尧计算能力强大的通用计算设备袁 并被越来越多地应用于图形处理之外的计算领域遥 郧孕哉 具有高并行尧低能耗和低成本的特点袁在数据并行度高的计算 任务中袁相比与传统的 悦孕哉 平台有着显著的优势遥 随着 郧孕哉 体系结构的不断演进以及开发平台的逐步完善袁郧孕哉 已 经进入到高性能计算的主流行列遥 郧孕哉 通用计算的普及袁使个人和小型机构能有机会获得以往昂贵的大型尧超级计算 机才能提供的计算能力袁并一定程度上改变了科学计算领域的格局和编程开发模式遥 郧孕哉 提供的强大计算能力极大 地推动了计算智能的发展袁并且已经在深度学习和群体智能优化方法等子领域获得了巨大的成功袁更是在图像尧语音等 领域取得了突破性的进展遥 随着人工智能技术和方法的不断进步袁郧孕哉 将在更多的领域获得更加广泛的应用遥 关键词院计算智能曰群体智能曰演化算法曰机器学习曰深度学习曰图形处理器曰郧孕哉 通用计算曰异构计算曰高性能计算 中图分类号院栽孕猿园员摇 文献标志码院粤摇 文章编号院员远苑猿鄄源苑愿缘渊圆园员缘冤园员鄄园园园员鄄员员 中文引用格式院丁科袁谭营援 郧孕哉 通用计算及其在计算智能领域的应用咱允暂援 智能系统学报袁 圆园员缘袁 员园渊员冤 院 员鄄员员援 英文引用格式院阅陨晕郧 运藻袁栽粤晕 再蚤灶早援 粤 则藻增蚤藻憎 燥灶 早藻灶藻则葬造 责怎则责燥泽藻 糟燥皂责怎贼蚤灶早 燥灶 郧孕哉泽 葬灶凿 蚤贼泽 葬责责造蚤糟葬贼蚤燥灶泽 蚤灶 糟燥皂责怎贼葬贼蚤燥灶葬造 蚤灶贼藻造造蚤鄄 早藻灶糟藻咱允暂援 悦粤粤陨 栽则葬灶泽葬糟贼蚤燥灶泽 燥灶 陨灶贼藻造造蚤早藻灶贼 杂赠泽贼藻皂泽袁 圆园员缘袁 员园渊员冤 院 员鄄员员援 粤 则藻增蚤藻憎 燥灶 早藻灶藻则葬造 责怎则责燥泽藻 糟燥皂责怎贼蚤灶早 燥灶 郧孕哉泽 葬灶凿 蚤贼泽 葬责责造蚤糟葬贼蚤燥灶泽 蚤灶 糟燥皂责怎贼葬贼蚤燥灶葬造 蚤灶贼藻造造蚤早藻灶糟藻 阅陨晕郧 运藻员袁圆 袁 栽粤晕 再蚤灶早员袁圆 渊员援 运藻赠 蕴葬遭燥则葬贼燥则赠 燥枣 酝葬糟澡蚤灶藻 孕藻则糟藻责贼蚤燥灶 渊酝韵耘冤 袁 孕藻噪蚤灶早 哉灶蚤增藻则泽蚤贼赠袁 月藻蚤躁蚤灶早 员园园愿苑员袁 悦澡蚤灶葬曰 圆援 杂糟澡燥燥造 燥枣 耘造藻糟贼则燥灶蚤糟泽 耘灶早蚤灶藻藻则蚤灶早 葬灶凿 悦燥皂责怎贼藻则 杂糟蚤藻灶糟藻袁 孕藻噪蚤灶早 哉灶蚤增藻则泽蚤贼赠袁 月藻蚤躁蚤灶早 员园园愿苑员袁 悦澡蚤灶葬冤 粤遭泽贼则葬糟贼院栽澡藻 郧孕哉 藻灶躁燥赠泽 贼澡藻 糟澡葬则葬糟贼藻则蚤泽贼蚤糟泽 燥枣 澡蚤早澡 责葬则葬造造藻造蚤泽皂袁 造燥憎 藻灶藻则早赠 糟燥灶泽怎皂责贼蚤燥灶 葬灶凿 糟澡藻葬责 责则蚤糟藻援 悦燥皂鄄 责葬则藻凿 憎蚤贼澡 贼澡藻 贼则葬凿蚤贼蚤燥灶葬造 悦孕哉 责造葬贼枣燥则皂袁 蚤贼 蚤泽 藻泽责藻糟蚤葬造造赠 泽怎蚤贼葬遭造藻 枣燥则 贼葬泽噪泽 憎蚤贼澡 澡蚤早澡 凿葬贼葬 责葬则葬造造藻造蚤泽皂援 郧孕哉 糟燥皂责怎鄄 贼蚤灶早 澡葬泽 糟燥皂藻 蚤灶贼燥 贼澡藻 皂葬蚤灶泽贼则藻葬皂 燥枣 澡蚤早澡 责藻则枣燥则皂葬灶糟藻 糟燥皂责怎贼葬贼蚤燥灶 渊 匀孕悦冤 凿怎藻 贼燥 贼澡藻 藻皂藻则早蚤灶早 燥枣 凿藻增藻造燥责皂藻灶贼 责造葬贼枣燥则皂泽 造蚤噪藻 悦哉阅粤 葬灶凿 韵责藻灶悦蕴援 栽澡藻 郧孕哉鸳泽 藻灶燥则皂燥怎泽 糟燥皂责怎贼葬贼蚤燥灶葬造 责燥憎藻则 早则藻葬贼造赠 责则燥皂燥贼藻泽 糟燥皂责怎贼葬贼蚤燥灶葬造 蚤灶贼藻造鄄 造蚤早藻灶糟藻援 粤 早则藻葬贼 泽怎糟糟藻泽泽 澡葬泽 遭藻藻灶 葬糟澡蚤藻增藻凿 蚤灶 贼澡藻 枣蚤藻造凿泽 泽怎糟澡 葬泽 凿藻藻责 造藻葬则灶蚤灶早 葬灶凿 泽憎葬则皂 蚤灶贼藻造造蚤早藻灶糟藻 燥责贼蚤皂蚤扎葬贼蚤燥灶袁 葬灶凿 泽藻增藻则葬造 遭则藻葬噪贼澡则燥怎早澡泽 澡葬增藻 遭藻藻灶 泽藻藻灶 蚤灶 蚤皂葬早藻袁 葬灶凿 泽责藻藻糟澡 则藻糟燥早灶蚤贼蚤燥灶 遭藻糟葬怎泽藻 燥枣 郧孕哉援 栽澡燥怎早澡 泽怎枣枣藻则蚤灶早 泽燥皂藻 凿则葬憎遭葬糟噪泽袁 郧孕哉泽 责则燥增蚤凿藻 糟燥皂皂燥灶 责藻燥责造藻 葬灶凿 泽皂葬造造 蚤灶泽贼蚤贼怎贼蚤燥灶泽 憎蚤贼澡 藻灶燥则皂燥怎泽 糟燥皂责怎贼蚤灶早 责燥憎藻则援 栽澡蚤泽 澡葬泽 糟澡葬灶早藻凿 贼澡藻 泽藻贼原怎责 燥枣 泽糟蚤藻灶贼蚤枣蚤糟 糟燥皂责怎贼蚤灶早 葬灶凿 责则燥早则葬皂皂蚤灶早 皂燥凿藻造 遭藻糟葬怎泽藻 蚤贼 糟燥怎造凿 燥灶造赠 遭藻 责则燥增蚤凿藻凿 遭赠 藻曾责藻灶泽蚤增藻 泽怎责藻则鄄 糟燥皂责怎贼藻则泽援 栽燥 澡藻造责 则藻泽藻葬则糟澡藻则泽 蚤灶 贼澡藻 枣蚤藻造凿 燥枣 糟燥皂责怎贼葬贼蚤燥灶葬造 蚤灶贼藻造造蚤早藻灶糟藻 遭藻贼贼藻则 怎贼蚤造蚤扎藻 郧孕哉泽袁 葬 凿藻贼葬蚤造藻凿 泽怎则增藻赠 燥枣 郧孕郧孕哉 蚤泽 早蚤增藻灶 蚤灶 贼澡蚤泽 责葬责藻则遥 云蚤则泽贼袁 贼澡藻 糟澡葬则葬糟贼藻则蚤泽贼蚤糟泽 葬灶凿 葬凿增葬灶贼葬早藻泽 燥枣 郧孕哉泽 葬早葬蚤灶泽贼 悦孕哉泽 葬则藻 责则藻泽藻灶贼藻凿援 栽澡藻灶 憎藻 遭则蚤藻枣造赠 则藻增蚤藻憎 贼澡藻 凿藻增藻造燥责皂藻灶贼 燥枣 郧孕哉 澡葬则凿憎葬则藻 枣燥造造燥憎藻凿 遭赠 葬 泽怎则增藻赠 燥枣 贼澡藻 藻增燥造怎贼蚤燥灶 燥枣 凿藻增藻造燥责皂藻灶贼 贼燥燥造泽 枣燥则 郧孕郧孕哉曰 泽责藻糟蚤葬造 葬贼贼藻灶贼蚤燥灶 蚤泽 凿则葬憎灶 贼燥 贼憎燥 皂葬躁燥则 责造葬贼枣燥则皂泽袁 悦哉阅粤 葬灶凿 韵责藻灶悦蕴援 宰藻 藻灶凿 贼澡蚤泽 责葬责藻则 憎蚤贼澡 燥怎则 责藻则鄄 泽责藻糟贼蚤增藻泽 燥枣 贼澡藻 糟澡葬造造藻灶早藻泽 葬灶凿 贼则藻灶凿泽 燥枣 郧孕郧孕哉援 宰藻 责燥蚤灶贼 燥怎贼 贼澡葬贼 藻皂遭藻凿凿蚤灶早 葬灶凿 糟造怎泽贼藻则 葬则藻 贼憎燥 皂葬躁燥则 贼则藻灶凿泽 枣燥则 郧孕郧孕哉 葬灶凿 葬泽 遭燥贼澡 葬糟葬凿藻皂蚤葬 葬灶凿 蚤灶凿怎泽贼则赠 糟燥灶贼蚤灶怎藻 贼燥 泽藻藻 蚤灶糟则藻葬泽蚤灶早 责则燥早则藻泽泽 蚤灶 葬则贼蚤枣蚤糟蚤葬造 蚤灶贼藻造造蚤早藻灶糟藻袁 贼澡藻 郧孕哉 憎蚤造造 遭藻 皂燥则藻 憎蚤凿藻造赠 怎泽藻凿 蚤灶 皂燥则藻 凿燥皂葬蚤灶泽援 运藻赠憎燥则凿泽院糟燥皂责怎贼葬贼蚤燥灶葬造 蚤灶贼藻造造蚤早藻灶糟藻曰 泽憎葬则皂 蚤灶贼藻造造蚤早藻灶糟藻曰 藻增燥造怎贼蚤燥灶葬则赠 葬造早燥则蚤贼澡皂泽曰 皂葬糟澡蚤灶藻 造藻葬则灶蚤灶早曰 凿藻藻责 造藻葬则灶鄄 蚤灶早曰 早则葬责澡蚤糟泽 责则燥糟藻泽泽蚤灶早 怎灶蚤贼 渊郧孕哉冤 曰 早藻灶藻则葬造 责怎则责燥泽藻 糟燥皂责怎贼蚤灶早 燥灶 郧孕哉泽曰 澡藻贼藻则燥早燥灶燥怎泽 糟燥皂责怎贼蚤灶早曰 澡蚤早澡 责藻则鄄 枣燥则皂葬灶糟藻 糟燥皂责怎贼蚤灶早 渊匀孕悦冤 收稿日期院圆园员源鄄员圆鄄员愿援摇 网络出版日期院圆园员缘鄄园员鄄员猿援 基金 项 目院 国家自然科学基金资助项目 渊 远员猿苑缘员员怨袁 远员员苑园园缘苑袁 远园愿苑缘园愿园冤援 通信作者院谭营援 耘鄄皂葬蚤造院赠贼葬灶岳 责噪怎援藻凿怎援糟灶援 摇 摇 郧孕哉 通用计算 渊 早藻灶藻则葬造 责怎则责燥泽藻 糟燥皂责怎贼蚤灶早 燥灶 郧孕哉泽袁 郧孕郧孕哉冤 是一种利用图形处理器渊 早则葬责澡蚤糟泽
2· 智能系统学报 第10卷 processing unit,GPU)解决通用计算任务的异构计 IPS IPC x F (1) 算方式。 为了提高CPU的性能,可以从两方面入手:增 最初的GPU只是功能专一的协处理器,用以帮 加指令吞吐量(PC)和提高时钟频率(F)。 助中央处理器(central processing unit,CPU)从繁重 随着制作工艺的不断提高,CPU芯片的集成度 的图形图像处理任务中解脱出来。为满足人们对图 越来越高3)。一方面,在集成度更高的芯片中,各 像处理实时性和精确度不断高涨的需求,在过去的 个单元在物理上更加靠近,从而可以使器件运行在 十多年间,GPU的体系结构和制造工艺都取得了长 更高的频率上。另一方面,更多的晶体管也使得设 足的进步:GPU的计算性能及计算精度都得到了大 计更复杂精细的逻辑控制结构,以提高单位时钟周 幅提升。如今,GPU的浮点计算能力早已远超同时 期的指令吞吐量。 期的CPU。 在经过了多年的发展之后,这2种策略都遭遇 图像处理任务具有高度并行的特点,这使得 到了巨大的瓶颈。时钟频率的提高使得芯片消耗的 GPU从诞生之日起,便采用多核心的设计方案。随 功率密度(W/cm2)随之提高,供电和散热即将达到 着GPU性能的不断增强和可编程性的日渐提高, 某些基本的物理极限。如图1所示,CPU的时钟频 GPU的用途不再局限于传统的图形图像处理。目 率在经历了长期高速增长后,其提升势头难以为继。 前,GPU已经广泛应用于从小到图像解码,大到超 通过复杂的逻辑结构提高指令吞吐量也逐渐达 级计算机的各种计算领域,进入到了高性能计算的 到了收益递减点。现代处理器的内部结构已经十分 主流行列。 复杂,并已经能够从指令流中压榨出大量的并行性。 Owens等]全面综述了2007年之前的GPU 通过设计更复杂的结构来提高指令的执行能力变得 通用计算的进展情况。然而,在过去的几年里,GPU 更加困难3】」 软硬件条件都发生了极大的发展变化。GPU高级 45 10 编程平台,如CUDA、OpenCL等的出现,更是使得 40 35 GPU通用计算的面貌发生了深刻的变化。 25 本文在已有文献综述的基础上,总结了GPU通 20 5 ·Intel 用计算领域最新的软硬件发展及在计算智能领域的 10 ·AMD 应用。文章首先介绍GPU通用计算出现的背景,包 1996199820002002200420062008201020122014 括传统CPU面临的困难与挑战以及GPU作为通用 年份 计算器件的特点与优势。接着,文章回顾GPU通用 图1CPU时钟频率变化趋势 计算开发工具和平台的发展历程。然后,本文转向 Fig.1 The tendency of CPU's frequency GPU通用计算的现状,重点介绍主流的GPU编程 为应对上述困难,多核解决方案被提出,以便充 平台一NVIDIA GPU专属的CUDA平台和开放标 分利用晶体管数量的增加,进一步改善CPU。 准的OpenCL平台。GPU通用计算的主要在计算智 事实上,2004之后,主要的CPU厂商如Intel和 能领域的重要应用将在之后予以介绍。最后,文章 AMD等相继转移到多核解决方案,多核计算时代已 对GPU通用计算的目前存在的挑战及未来发展趋 全面到来。 势进行展望。 1.2GPU的特点与优势 GPU最初是为了加速图形处理而设计的专用 1GPU通用计算背景 硬件。图形渲染等任务具有很强的并行性,需要密 1.1多核计算时代 集的计算与巨大的数据传输带宽。因此,GPU从诞 CPU是计算机系统的核心部件,它为各种任务 生之日起便被设计为拥有众多核心,具有高吞吐量 提供计算能力,是一种通用的计算单元。CPU的计 的计算。并且,由于GPU的专用性,GPU芯片的晶 算能力可以用每秒钟执行指令数(instructions per 体管也更多的用于计算,而非控制和缓存(如图2 second,PS)来衡量,而IPS则是由CPU的指令吞吐 所示)。由于GPU与CPU在设计上存着巨大的差 量(instructions per clock,PC)和时钟频率F所共同 别,GPU通用计算有着自身的特点与优势。 决定的: 1)计算能力强大
责则燥糟藻泽泽蚤灶早 怎灶蚤贼袁 郧孕哉冤 解决通用计算任务的异构计 算方式遥 最初的 郧孕哉 只是功能专一的协处理器袁用以帮 助中央处理器渊糟藻灶贼则葬造 责则燥糟藻泽泽蚤灶早 怎灶蚤贼袁 悦孕哉冤从繁重 的图形图像处理任务中解脱出来遥 为满足人们对图 像处理实时性和精确度不断高涨的需求袁在过去的 十多年间袁郧孕哉 的体系结构和制造工艺都取得了长 足的进步曰郧孕哉 的计算性能及计算精度都得到了大 幅提升遥 如今袁郧孕哉 的浮点计算能力早已远超同时 期的 悦孕哉遥 图像处理任务具有高度并行的特点袁这使得 郧孕哉 从诞生之日起袁便采用多核心的设计方案遥 随 着 郧孕哉 性能的不断增强和可编程性的日渐提高袁 郧孕哉 的用途不再局限于传统的图形图像处理遥 目 前袁郧孕哉 已经广泛应用于从小到图像解码袁大到超 级计算机的各种计算领域袁进入到了高性能计算的 主流行列 遥 韵憎藻灶泽 等咱员鄄圆暂 全面综述了 圆园园苑 年之前的 郧孕哉 通用计算的进展情况遥 然而袁在过去的几年里袁郧孕哉 软硬件条件都发生了极大的发展变化遥 郧孕哉 高级 编程平台袁如 悦哉阅粤尧韵责藻灶悦蕴 等的出现袁更是使得 郧孕哉 通用计算的面貌发生了深刻的变化遥 本文在已有文献综述的基础上袁总结了 郧孕哉 通 用计算领域最新的软硬件发展及在计算智能领域的 应用遥 文章首先介绍 郧孕哉 通用计算出现的背景袁包 括传统 悦孕哉 面临的困难与挑战以及 郧孕哉 作为通用 计算器件的特点与优势遥 接着袁文章回顾 郧孕哉 通用 计算开发工具和平台的发展历程遥 然后袁本文转向 郧孕哉 通用计算的现状袁重点介绍主流的 郧孕哉 编程 平台要要要晕灾陨阅陨粤 郧孕哉 专属的 悦哉阅粤 平台和开放标 准的 韵责藻灶悦蕴 平台遥 郧孕哉 通用计算的主要在计算智 能领域的重要应用将在之后予以介绍遥 最后袁文章 对 郧孕哉 通用计算的目前存在的挑战及未来发展趋 势进行展望遥 员摇 郧孕哉 通用计算背景 员援员摇 多核计算时代 摇 摇 悦孕哉 是计算机系统的核心部件袁它为各种任务 提供计算能力袁是一种通用的计算单元遥 悦孕哉 的计 算能力可以用每秒钟执行指令数渊 蚤灶泽贼则怎糟贼蚤燥灶泽 责藻则 泽藻糟燥灶凿袁陨孕杂冤来衡量袁而 陨孕杂 则是由 悦孕哉 的指令吞吐 量渊蚤灶泽贼则怎糟贼蚤燥灶泽 责藻则 糟造燥糟噪袁陨孕悦冤和时钟频率 云 所共同 决定的院 陨孕杂 越 陨孕悦 伊 云 渊员冤 摇 摇 为了提高 悦孕哉 的性能袁可以从两方面入手院增 加指令吞吐量渊 陨孕悦冤和提高时钟频率渊云冤 遥 随着制作工艺的不断提高袁悦孕哉 芯片的集成度 越来越高咱猿暂 遥 一方面袁在集成度更高的芯片中袁各 个单元在物理上更加靠近袁从而可以使器件运行在 更高的频率上遥 另一方面袁更多的晶体管也使得设 计更复杂精细的逻辑控制结构袁以提高单位时钟周 期的指令吞吐量遥 在经过了多年的发展之后袁这 圆 种策略都遭遇 到了巨大的瓶颈遥 时钟频率的提高使得芯片消耗的 功率密度渊宰 辕 糟皂圆 冤随之提高袁供电和散热即将达到 某些基本的物理极限遥 如图 员 所示袁悦孕哉 的时钟频 率在经历了长期高速增长后袁其提升势头难以为继遥 通过复杂的逻辑结构提高指令吞吐量也逐渐达 到了收益递减点遥 现代处理器的内部结构已经十分 复杂袁并已经能够从指令流中压榨出大量的并行性遥 通过设计更复杂的结构来提高指令的执行能力变得 更加困难咱猿暂 遥 图 员摇 悦孕哉 时钟频率变化趋势 云蚤早援员摇 栽澡藻 贼藻灶凿藻灶糟赠 燥枣 悦孕哉爷泽 枣则藻择怎藻灶糟赠 为应对上述困难袁多核解决方案被提出袁以便充 分利用晶体管数量的增加袁进一步改善 悦孕哉遥 事实上袁圆园园源 之后袁主要的 悦孕哉 厂商如 陨灶贼藻造 和 粤酝阅 等相继转移到多核解决方案袁多核计算时代已 全面到来遥 员援圆 摇 郧孕哉 的特点与优势 郧孕哉 最初是为了加速图形处理而设计的专用 硬件遥 图形渲染等任务具有很强的并行性袁需要密 集的计算与巨大的数据传输带宽遥 因此袁郧孕哉 从诞 生之日起便被设计为拥有众多核心袁具有高吞吐量 的计算遥 并且袁由于 郧孕哉 的专用性袁郧孕哉 芯片的晶 体管也更多的用于计算袁而非控制和缓存渊如图 圆 所示冤 遥 由于 郧孕哉 与 悦孕哉 在设计上存着巨大的差 别袁郧孕哉 通用计算有着自身的特点与优势遥 员冤计算能力强大 窑圆窑 智 能 系 统 学 报摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇 第 员园 卷
第1期 丁科,等:GPU通用计算及其在计算智能领域的应用 ·3 与CPU相比,GPU具有更加强大的计算能力。 在下面的章节详细介绍。 在相同时期,GPU的浮点计算的理论峰值能力相比 CPU要高出一个数量级[6]」 2GPU通用计算编程平台 强大的计算能力使GPU在高性能计算领域获得 最初的GPU功能固定,只能执行图形流水线中 了广泛的应用。在全球最快的超级计算机之中,中国 的特定任务,缺乏可编程性。此时,为了利用GPU 国家超级计算天津中心的天河1A号超级计算机和美 进行通用计算,必须将计算任务封装成图形处理任 国橡树岭实验室的TTAN号超级计算机,都是依靠 务,然后交由GPU完成。这可以通过底层的汇编命 装配GPU来提升性能,并提供大部分运算能力。 令(低级着色语言)编程实现。更为高效的,通常我 GPU为高性能计算提供了新的巨大的发展潜能。 们可以通过诸如OpenGL、Cg等图形编程接口,利用 控制 计算计算 高级着色语言(shading language,SL)进行编程。 计算计算 但即使利用高级着色语言,这种方式也还存在 缓存 诸多不便。首先,开发者需要熟悉图形处理的流程, 内存 掌握一系列图形处理接口,并且需要以与任务完成 内存 CPU GPU 完全无关的一套图形处理思路来考虑问题的编程求 图2GPU的晶体管更多的用于计算单元 解。其次,图形接口是专用的程序接口,缺乏通用计 Fig.2 GPUs devote more transistors to data processing 算所需要的灵活性,开发者必须面临如何将问题重 2)廉价易得 新表述成图形处理问题的挑战。 相比与基于CPU的计算机系统,GPU更加廉 为了简化GPU编程,具有更高层硬件层次的编 价,也更容易为个人和小型机构所利用。 程模式被相继提出。GPU的统一着色器被抽象为 以NVIDIA的旗舰版GPU TITAN为例。TTAN 与具体硬件无关的、能够以特定方式并行执行线程 GPU价格不足一万元人民币,共有2688个计算核 的流处理器单元。GPU的内存、纹理缓存等存储单 心,双精度浮点运算理论峰值计算能力达到1500 元,被抽象为具有层级结构的存储体系。经过抽象 GFLP/s,额定功耗约为250W。作为对比,北京大 后,可以在流处理模式下,利用高级语言为GPU编 学理论与应用地球物理研究所的集群,由1个服务 写程序,完成通用的计算任务。 器(Dell PowerEdge R710)、46个计算结点(Dell 本节首先介绍与GPU通用计算密切相关的流 PowerEdge M6l0)、3个刀片机箱(Dell PowerEdge 处理模式。之后,转向介绍基于流行的GPU编程语 MI000)组成。每个计算结点有2颗四核Intel Xeon 言和工具。 E5520(2.26GHz,Nehalem-EP架构)处理器,共368 2.1 流处理模式 个计算核心,理论计算峰值3327GFLP/s,满载功耗 流处理模式(stream programming model)是一种 约为12kW。 类似于单指令多数据(SIMD)的编程模式。 可以看到,在提供相同数量级的计算能力的情 通过将数据组织成数据流,将计算表达成作用 况下,GPU非常的廉价,也易于装配(只需要一台能 于数据流的核函数的方式,流处理能够暴露程序中 够支持独立显卡的PC),个人和小型实验室都有条 内在的并行性。通过流处理模式,程序开发者能够 件利用。而集群等传统高性能计算设备,不但价格 更容易地利用GPU、FGPA等计算硬件的并行能力 昂贵,对场地、供电和维护等有较高的要求。可以 而不用显式地处理空间分配、同步和计算单元间的 说,GPU为PC提供了小型集群的计算能力[)。 通信等问题。对于数据并行性良好的应用,流处理 3)开发灵活 能够取得良好的性能[8] 现代的GPU都采用统一渲染架构,具有很强的 如图3所示,流处理与SMD最大的不同之处 可编程性。GPU编程的软件开发平台也趋于成熟, 在于,SMD是以指令为操作单位的,而流处理模式 CUDA、OpenCL等工具的推出,使开发者能够使用 则是以指令序列(核函数)为操作单元。数据流(输 高级编程语言为GPU开发通用计算程序。现在主 入流)与核函数一同进入流处理器,流中每个数据 流的GPU也对单精度和双精度浮点运算提供了满 元素同时被核函数执行,从而完成指定的操作,得到 足EEE标准的完全支持。对于GPU编程,我们会 输出数据(输出流)
与 悦孕哉 相比袁郧孕哉 具有更加强大的计算能力遥 在相同时期袁郧孕哉 的浮点计算的理论峰值能力相比 悦孕哉 要高出一个数量级咱远暂 遥 强大的计算能力使 郧孕哉 在高性能计算领域获得 了广泛的应用遥 在全球最快的超级计算机之中袁中国 国家超级计算天津中心的天河员粤 号超级计算机和美 国橡树岭实验室的 栽陨栽粤晕 号超级计算机袁都是依靠 装配 郧孕哉 来提升性能袁并提供大部分运算能力遥 郧孕哉 为高性能计算提供了新的巨大的发展潜能遥 图 圆摇 郧孕哉 的晶体管更多的用于计算单元 云蚤早援圆摇 郧孕哉泽 凿藻增燥贼藻 皂燥则藻 贼则葬灶泽蚤泽贼燥则泽 贼燥 凿葬贼葬 责则燥糟藻泽泽蚤灶早 圆冤廉价易得 相比与基于 悦孕哉 的计算机系统袁郧孕哉 更加廉 价袁也更容易为个人和小型机构所利用遥 以 晕灾陨阅陨粤 的旗舰版 郧孕哉 栽陨栽粤晕 为例遥 栽陨栽粤晕 郧孕哉 价格不足一万元人民币袁共有 圆 远愿愿 个计算核 心袁双精度浮点运算理论峰值计算能力达到 员 缘园园 郧云蕴孕 辕 泽袁额定功耗约为 圆缘园 宰遥 作为对比袁北京大 学理论与应用地球物理研究所的集群袁由 员 个服务 器渊 阅藻造造 孕燥憎藻则耘凿早藻 砸苑员园 冤 尧 源远 个计算结点 渊 阅藻造造 孕燥憎藻则耘凿早藻 酝远员园冤 尧 猿 个刀片机箱渊 阅藻造造 孕燥憎藻则耘凿早藻 酝员园园园冤组成遥 每个计算结点有 圆 颗四核 陨灶贼藻造 载藻燥灶 耘缘缘圆园渊圆援圆远 郧匀扎袁 晕藻澡葬造藻皂鄄耘孕 架构冤处理器袁共 猿远愿 个计算核心袁理论计算峰值 猿 猿圆苑 郧云蕴孕 辕 泽袁满载功耗 约为 员圆 噪宰遥 可以看到袁在提供相同数量级的计算能力的情 况下袁郧孕哉 非常的廉价袁也易于装配渊只需要一台能 够支持独立显卡的 孕悦冤袁个人和小型实验室都有条 件利用遥 而集群等传统高性能计算设备袁不但价格 昂贵袁对场地尧供电和维护等有较高的要求遥 可以 说袁郧孕哉 为 孕悦 提供了小型集群的计算能力咱苑暂 遥 猿冤开发灵活 现代的 郧孕哉 都采用统一渲染架构袁具有很强的 可编程性遥 郧孕哉 编程的软件开发平台也趋于成熟袁 悦哉阅粤尧韵责藻灶悦蕴 等工具的推出袁使开发者能够使用 高级编程语言为 郧孕哉 开发通用计算程序遥 现在主 流的 郧孕哉 也对单精度和双精度浮点运算提供了满 足 陨耘耘耘 标准的完全支持遥 对于 郧孕哉 编程袁我们会 在下面的章节详细介绍遥 圆摇 郧孕哉 通用计算编程平台 摇 摇 最初的 郧孕哉 功能固定袁只能执行图形流水线中 的特定任务袁缺乏可编程性遥 此时袁为了利用 郧孕哉 进行通用计算袁必须将计算任务封装成图形处理任 务袁然后交由 郧孕哉 完成遥 这可以通过底层的汇编命 令渊低级着色语言冤编程实现遥 更为高效的袁通常我 们可以通过诸如 韵责藻灶郧蕴尧悦早 等图形编程接口袁利用 高级着色语言渊 泽澡葬凿蚤灶早 造葬灶早怎葬早藻袁 杂蕴冤进行编程遥 但即使利用高级着色语言袁这种方式也还存在 诸多不便遥 首先袁开发者需要熟悉图形处理的流程袁 掌握一系列图形处理接口袁并且需要以与任务完成 完全无关的一套图形处理思路来考虑问题的编程求 解遥 其次袁图形接口是专用的程序接口袁缺乏通用计 算所需要的灵活性袁开发者必须面临如何将问题重 新表述成图形处理问题的挑战遥 为了简化 郧孕哉 编程袁具有更高层硬件层次的编 程模式被相继提出遥 郧孕哉 的统一着色器被抽象为 与具体硬件无关的尧能够以特定方式并行执行线程 的流处理器单元遥 郧孕哉 的内存尧纹理缓存等存储单 元袁被抽象为具有层级结构的存储体系遥 经过抽象 后袁可以在流处理模式下袁利用高级语言为 郧孕哉 编 写程序袁完成通用的计算任务遥 本节首先介绍与 郧孕哉 通用计算密切相关的流 处理模式遥 之后袁转向介绍基于流行的 郧孕哉 编程语 言和工具遥 圆援员摇 流处理模式 流处理模式渊 泽贼则藻葬皂 责则燥早则葬皂皂蚤灶早 皂燥凿藻造冤是一种 类似于单指令多数据渊 杂陨酝阅冤的编程模式遥 通过将数据组织成数据流袁将计算表达成作用 于数据流的核函数的方式袁流处理能够暴露程序中 内在的并行性遥 通过流处理模式袁程序开发者能够 更容易地利用 郧孕哉尧云郧孕粤 等计算硬件的并行能力 而不用显式地处理空间分配尧同步和计算单元间的 通信等问题遥 对于数据并行性良好的应用袁流处理 能够取得良好的性能咱愿暂 遥 如图 猿 所示袁流处理与 杂陨酝阅 最大的不同之处 在于袁杂陨酝阅 是以指令为操作单位的袁而流处理模式 则是以指令序列渊核函数冤为操作单元遥 数据流渊输 入流冤与核函数一同进入流处理器袁流中每个数据 元素同时被核函数执行袁从而完成指定的操作袁得到 输出数据渊输出流冤 遥 第 员 期摇摇摇摇摇摇摇摇摇摇摇摇摇摇 丁科袁等院郧孕哉 通用计算及其在计算智能领域的应用 窑猿窑
智能系统学报 第10卷 核函数 是一个由微软倡导的开放标准,旨在直接利用C++ 指® 数据 语言实现数据的并行化编程9]。 相比于常规的C++代码,C++AMP只需要按规 SIMD 定格式对数据进行绑定,然后应用并行原语启动数 用 田 用 据操作(核函数)的运行。因此,C++AMP完全隐 结果 输出流 藏了硬件的细节。开发者只需要预先绑定数组和数 图3流处理与SMD 组元素上的操作,并行化由C++AMP负责完成。C Fig.3 Stream processing and SIMD ++AMP能够根据实际的硬件情况(GPU或CPU, 流(stream)和核函数(kernel)是流处理模式中 计算核心算数等),决定并行化策略。当实际硬件 最重要的2个概念。流是一个数据集合,包含待处 不支持并行化时,代码还可以串行执行。 理的数据元素,并且这些数据的处理方式是相同或 2.5高级编程平台 相似的。核函数是由若干操作(指令)组成的操作 在OpenACC和C++AMP这2种异构编程模式 序列,它决定着要对每个数据做何种操作和处理。 下,硬件对开发者而言完全是透明的。一方面,这简 对GPU平台而言,纹理单元充当了流的角色,待处 化了并行程序的开发一串行代码只需要少量的改 理数据需要作为2维的纹理信息被流处理器读取和 动,便可以利用GPU等多核计算设备的并行计算能 操作。许多问题也可以很自然的映射为2维的纹 力。但这种简化并非没有代价,它使得并行化的过 理,如矩阵代数、物理仿真等等:而可编程着色器则 程不能被程序员显示地加以控制。而在很多情况 起着核函数的作用。 下,根据硬件和程序的具体情况,对负载和并行粒度 2.2 Brook 进行调整,对于充分利用计算设备能力、提高程序性 Book是一种基于标准C语言的流编程语言。 能是至关重要的。 它旨在基于流编程模式,对图形API进行封装,将 正如前文所述,CUDA和OpenCL是当前基于 GPU视为能够进行并行计算的协处理器,从而简化 GPU的异构编程的主流平台。它们的共同特点是, GPU通用计算的编程[8】」 既对硬件的计算和存储单元进行了很好的抽象,同 Book使人们看到了将GPU用于通用计算的巨 时又对计算设备的计算核心数量这一重要参数,加 大潜力,对GPU通用计算的发展有着深远的影响。 以适度地暴露,并且对并行粒度和并行方式也给予 Book将GPU封装为通用的并行处理器的思想及语 了更大的控制可能。这样便对完全隐藏硬件这一极 言规范更是为现在主流的GPU编程平台CUDA和 端情况的进行了良好的折衷。同时,这2种平台为 OpenCL所借鉴,而这两者正是现在GPU编程的主 GPU通用提供了从编程到调试再到性能测试的完 流开发平台。 整解决方案。 2.3 OpenACC OpenACC是一个异构并行计算标准。与 3统一计算设备架构 OpenMP类似,OpenACC定义了一套编译器指令,这 统一计算设备架构(compute unified device ar- 些指令应用于C、C++和Fortran代码,以指导编译器 chitecture,CUDA)是由NVIDIA公司于2006年11 将指定的循环或代码块,从主机CPU转移到相连的 月发布的基于NVIDIA GPU的并行程序开发架 加速设备(例如GPU)上进行运算。 构1o)。它包括一个SDK(NVCC编译器、调试器、函 简言之,OpenACC提供了一种简洁的利用并行 数库等)、一套API,以及添加了少量扩展的C/C++ 硬件的开发方式。目前,OpenACC已经在多种操作 语言(CUDA C/C++)。由它开发的程序能够在所有 系统下实现,并支持NVIDIA、AMD和Intel的多种 支持CUDA的NVIDIA GPU上运行。CUDA的推出 硬件计算设备[2。未来,OpenACC可能会并入 大大简化了对GPU进行并行编程的难度。图3示 OpenMP标准,形成一个同时支持多核与众核并行 意了NVIDIA GPU的主要计算和存储部件。接合图 编程的统一标准。 3,对CUDA开发平台的核心逐一进行简要介绍。 2.4 C++AMP 3.1核函数 C++accelerated massive parallelism(C++AMP) CUDA允许使用C/C++为CUDA计算核心
图 猿摇 流处理与 杂陨酝阅 云蚤早援猿摇 杂贼则藻葬皂 责则燥糟藻泽泽蚤灶早 葬灶凿 杂陨酝阅 摇 摇 流渊 泽贼则藻葬皂冤和核函数渊 噪藻则灶藻造冤是流处理模式中 最重要的 圆 个概念遥 流是一个数据集合袁包含待处 理的数据元素袁并且这些数据的处理方式是相同或 相似的遥 核函数是由若干操作渊指令冤 组成的操作 序列袁它决定着要对每个数据做何种操作和处理遥 对 郧孕哉 平台而言袁纹理单元充当了流的角色袁待处 理数据需要作为 圆 维的纹理信息被流处理器读取和 操作遥 许多问题也可以很自然的映射为 圆 维的纹 理袁如矩阵代数尧物理仿真等等曰而可编程着色器则 起着核函数的作用遥 圆援圆摇 月则燥燥噪 月则燥燥噪 是一种基于标准 悦 语言的流编程语言遥 它旨在基于流编程模式袁对图形 粤孕陨 进行封装袁将 郧孕哉 视为能够进行并行计算的协处理器袁从而简化 郧孕哉 通用计算的编程咱愿暂 遥 月则燥燥噪 使人们看到了将 郧孕哉 用于通用计算的巨 大潜力袁对 郧孕哉 通用计算的发展有着深远的影响遥 月则燥燥噪 将 郧孕哉 封装为通用的并行处理器的思想及语 言规范更是为现在主流的 郧孕哉 编程平台 悦哉阅粤 和 韵责藻灶悦蕴 所借鉴袁而这两者正是现在 郧孕哉 编程的主 流开发平台遥 圆援猿摇 韵责藻灶粤悦悦 韵责藻灶粤悦悦 是一个异构并行计算标准遥 与 韵责藻灶酝孕 类似袁韵责藻灶粤悦悦 定义了一套编译器指令袁这 些指令应用于 悦尧悦垣垣和 云燥则贼则葬灶 代码袁以指导编译器 将指定的循环或代码块袁从主机 悦孕哉 转移到相连的 加速设备渊例如 郧孕哉冤上进行运算遥 简言之袁韵责藻灶粤悦悦 提供了一种简洁的利用并行 硬件的开发方式遥 目前袁韵责藻灶粤悦悦 已经在多种操作 系统下实现袁并支持 晕灾陨阅陨粤尧粤酝阅 和 陨灶贼藻造 的多种 硬件计算设备咱圆员暂 遥 未 来袁 韵责藻灶粤悦悦 可能会并入 韵责藻灶酝孕 标准袁形成一个同时支持多核与众核并行 编程的统一标准遥 圆援源摇 悦垣垣粤酝孕 悦垣垣 葬糟糟藻造藻则葬贼藻凿 皂葬泽泽蚤增藻 责葬则葬造造藻造蚤泽皂渊悦垣垣 粤酝孕冤 是一个由微软倡导的开放标准袁旨在直接利用 悦垣垣 语言实现数据的并行化编程咱怨 暂 遥 相比于常规的 悦垣垣代码袁悦垣垣 粤酝孕 只需要按规 定格式对数据进行绑定袁然后应用并行原语启动数 据操作渊核函数冤 的运行遥 因此袁悦垣 垣 粤酝孕 完全隐 藏了硬件的细节遥 开发者只需要预先绑定数组和数 组元素上的操作袁并行化由 悦垣垣 粤酝孕 负责完成遥 悦 垣垣 粤酝孕 能够根据实际的硬件情况渊 郧孕哉 或 悦孕哉袁 计算核心算数等冤 袁决定并行化策略遥 当实际硬件 不支持并行化时袁代码还可以串行执行遥 圆援缘摇 高级编程平台 在 韵责藻灶粤悦悦 和 悦垣垣 粤酝孕 这 圆 种异构编程模式 下袁硬件对开发者而言完全是透明的遥 一方面袁这简 化了并行程序的开发要要要串行代码只需要少量的改 动袁便可以利用 郧孕哉 等多核计算设备的并行计算能 力遥 但这种简化并非没有代价袁它使得并行化的过 程不能被程序员显示地加以控制遥 而在很多情况 下袁根据硬件和程序的具体情况袁对负载和并行粒度 进行调整袁对于充分利用计算设备能力尧提高程序性 能是至关重要的遥 正如前文所述袁悦哉阅粤 和 韵责藻灶悦蕴 是当前基于 郧孕哉 的异构编程的主流平台遥 它们的共同特点是袁 既对硬件的计算和存储单元进行了很好的抽象袁同 时又对计算设备的计算核心数量这一重要参数袁加 以适度地暴露袁并且对并行粒度和并行方式也给予 了更大的控制可能遥 这样便对完全隐藏硬件这一极 端情况的进行了良好的折衷遥 同时袁这 圆 种平台为 郧孕哉 通用提供了从编程到调试再到性能测试的完 整解决方案遥 猿摇 统一计算设备架构 统一计算设备架构渊 糟燥皂责怎贼藻 怎灶蚤枣蚤藻凿 凿藻增蚤糟藻 葬则鄄 糟澡蚤贼藻糟贼怎则藻袁悦哉阅粤冤 是由 晕灾陨阅陨粤 公司于 圆园园远 年 员员 月发布的基于 晕灾陨阅陨粤 郧孕哉 的并行程序开发架 构咱员园 暂 遥 它包括一个 杂阅运渊晕灾悦悦 编译器尧调试器尧函 数库等冤 尧一套 粤孕陨袁以及添加了少量扩展的 悦辕悦垣垣 语言渊悦哉阅粤 悦 辕 悦垣垣冤 遥 由它开发的程序能够在所有 支持 悦哉阅粤 的 晕灾陨阅陨粤 郧孕哉 上运行遥 悦哉阅粤 的推出 大大简化了对 郧孕哉 进行并行编程的难度遥 图 猿 示 意了 晕灾陨阅陨粤 郧孕哉 的主要计算和存储部件遥 接合图 猿袁对 悦哉阅粤 开发平台的核心逐一进行简要介绍遥 猿援员摇 核函数 悦哉阅粤 允许使用 悦辕悦 垣 垣为 悦哉阅粤 计算核心 窑源窑 智 能 系 统 学 报摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇 第 员园 卷
第1期 丁科,等:GPU通用计算及其在计算智能领域的应用 5 (CUDA Core,在较早的文档中也称了Streaming 免浪费宝贵的计算资源。 Processor(SP),即流处理器)编写程序一“核 3.3内存层级结构 函数”(kernel)。 同基于CPU的常规计算机体系类似,GPU的存 不同于常规的C/C++函数,当核函数被调用 储体系也具有层次性:容量大的存储器,远离GPU, 后,它会被N个不同的CUDA线程(thread)并行的 读写也延迟大:延迟小的存储单元容量小,位置靠近 执行N次。执行核函数的每个线程都被赋予一个 GPU。 一的线程索引D。 如图5,CUDA程序在运行过程中,线程能够从 3.2线程的层级结构 不同的内存空间中读取数据。每个线程都有仅本线 如图4所示,CUDA中的线程具有层次结构。 程可见的局部内存(local memory)。局部空间一般 一定数量线程组成线程块(block):线程块再组成更 是片上的寄存器,可以几乎无延迟的读写。每个线 大的单位线程格(grid)。 程块分配有一块共享内存(shared memory),块中的 所有线程都可以读写共享内存的数据。共享内存靠 线程格 近GPU,虽然不如寄存器读写速度快,但访问延迟 线程块(0.0 线程块(0.1) 线程块(0.2) 也非常小。离GPU最远的是大容量的全局内存。 所有线程都可以访问全局内存,但读写延迟非常大, 线程块 线程块(12 大约要比共享内存高出一个数量级。 线程 局部内存 线程块(1.1) 线程块 线程 线程 线程 线程 共享内存 (0.0) (0.1) (0.2) (0.3) ( 线程 线程 线程 线程 (1.0) (1.1) (1.2) (1.3) 线程格 线程块 线程块 线程块 全局内存 图4线程的层级结构 线程块 线程块 线程块 Fig.4 Hierarchy of threads 核函数启动后,每个线程块(thread block)被分 配给某个流多处理器(streaming multiprocessor,SM) 图5线程的层级结构 上执行。线程块执行的先后顺序是不确定的,它们 Fig.5 Hierarchy of threads 必须相互独立地被执行。即不论它们按何种次序, 也不论是按并行还是串行方式,最后的执行结果都 表1对比了在NVIDIA GeForce560 Ti GPU中, 不同层级内存的数据传输率。 应该一致。 表1GPU内存数据传输率(560T,PCIe2.0x16) 不同流多处理器上的线程是相互独立的,相 Table 1 GPU memory bandwidth (560 Ti,PCIe 2.0 x16) 同流多处理器上的线程则是阻塞式的]。前者 内存/ 全局内存/共享内存/ 意味着,不同流多处理器上的线程由不同的处理 局部内存 (GB·s)(GB·81)(GB·s) 器以任意先后顺序执行:后者意味着,当一个活 跃线程受到阻塞(如执行延迟较大的数据读写操 带宽 16 128.26 1024 无延迟 作)时,流多处理器可以切换执行其他的线程,避 除以上介绍的几种存储空间外,还存在2种对
渊 悦哉阅粤 悦燥则藻袁在较早的文档中也称了 杂贼则藻葬皂蚤灶早 孕 则燥糟藻泽泽燥则 渊 杂孕 冤 袁即流处理器冤 编写程序要要要野 核 函数冶 渊 噪藻则灶藻造冤 遥 不同于常规的 悦辕悦 垣 垣函数袁当核函数被调用 后袁它会被 晕 个不同的 悦哉阅粤 线程渊 贼澡则藻葬凿冤 并行的 执行 晕 次遥 执行核函数的每个线程都被赋予一个 一的线程索引 陨阅遥 猿援圆摇 线程的层级结构 如图 源 所示袁悦哉阅粤 中的线程具有层次结构遥 一定数量线程组成线程块渊 遭造燥糟噪冤 曰线程块再组成更 大的单位线程格渊早则蚤凿冤 遥 图 源摇 线程的层级结构 云蚤早援源摇 匀蚤藻则葬则糟澡赠 燥枣 贼澡则藻葬凿泽 核函数启动后袁每个线程块渊贼澡则藻葬凿 遭造燥糟噪冤被分 配给某个流多处理器渊 泽贼则藻葬皂蚤灶早 皂怎造贼蚤责则燥糟藻泽泽燥则袁 杂酝冤 上执行遥 线程块执行的先后顺序是不确定的袁它们 必须相互独立地被执行遥 即不论它们按何种次序袁 也不论是按并行还是串行方式袁最后的执行结果都 应该一致遥 不同流多处理器上的线程是相互独立的袁相 同流多处理器上的线程则是阻塞式的咱 员园 暂 遥 前者 意味着袁不同流多处理器上的线程由不同的处理 器以任意先后顺序执行曰后者意味着袁当一个活 跃线程受到阻塞渊如执行延迟较大的数据读写操 作冤时袁流多处理器可以切换执行其他的线程袁避 免浪费宝贵的计算资源遥 猿援猿摇 内存层级结构 同基于 悦孕哉 的常规计算机体系类似袁郧孕哉 的存 储体系也具有层次性院容量大的存储器袁远离 郧孕哉袁 读写也延迟大曰延迟小的存储单元容量小袁位置靠近 郧孕哉遥 如图 缘袁悦哉阅粤 程序在运行过程中袁线程能够从 不同的内存空间中读取数据遥 每个线程都有仅本线 程可见的局部内存渊造燥糟葬造 皂藻皂燥则赠冤 遥 局部空间一般 是片上的寄存器袁可以几乎无延迟的读写遥 每个线 程块分配有一块共享内存渊 泽澡葬则藻凿 皂藻皂燥则赠冤 袁块中的 所有线程都可以读写共享内存的数据遥 共享内存靠 近 郧孕哉袁虽然不如寄存器读写速度快袁但访问延迟 也非常小遥 离 郧孕哉 最远的是大容量的全局内存遥 所有线程都可以访问全局内存袁但读写延迟非常大袁 大约要比共享内存高出一个数量级遥 图 缘摇 线程的层级结构 云蚤早援缘摇 匀蚤藻则葬则糟澡赠 燥枣 贼澡则藻葬凿泽 摇 摇 表 员 对比了在 晕灾陨阅陨粤 郧藻云燥则糟藻 缘远园 栽蚤 郧孕哉 中袁 不同层级内存的数据传输率遥 表 员摇 郧孕哉 内存数据传输率渊缘远园 栽蚤袁孕悦陨藻 圆援园 曾员远冤 栽葬遭造藻 员摇 郧孕哉 皂藻皂燥则赠 遭葬灶凿憎蚤凿贼澡 渊缘远园 栽蚤袁 孕悦陨藻 圆援园 曾员远冤 内存辕 渊郧月窑泽原员 冤 全局内存辕 渊郧月窑泽原员 冤 共享内存辕 渊郧月窑泽原员 冤 局部内存 带宽 员远 员圆愿援圆远 员 园圆源 无延迟 摇 摇 除以上介绍的几种存储空间外袁还存在 圆 种对 第 员 期摇摇摇摇摇摇摇摇摇摇摇摇摇摇 丁科袁等院郧孕哉 通用计算及其在计算智能领域的应用 窑缘窑