第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种对
渊 悦哉阅粤 悦燥则藻袁在较早的文档中也称了 杂贼则藻葬皂蚤灶早 孕 则燥糟藻泽泽燥则 渊 杂孕 冤 袁即流处理器冤 编写程序要要要野 核 函数冶 渊 噪藻则灶藻造冤 遥 不同于常规的 悦辕悦 垣 垣函数袁当核函数被调用 后袁它会被 晕 个不同的 悦哉阅粤 线程渊 贼澡则藻葬凿冤 并行的 执行 晕 次遥 执行核函数的每个线程都被赋予一个 一的线程索引 陨阅遥 猿援圆摇 线程的层级结构 如图 源 所示袁悦哉阅粤 中的线程具有层次结构遥 一定数量线程组成线程块渊 遭造燥糟噪冤 曰线程块再组成更 大的单位线程格渊早则蚤凿冤 遥 图 源摇 线程的层级结构 云蚤早援源摇 匀蚤藻则葬则糟澡赠 燥枣 贼澡则藻葬凿泽 核函数启动后袁每个线程块渊贼澡则藻葬凿 遭造燥糟噪冤被分 配给某个流多处理器渊 泽贼则藻葬皂蚤灶早 皂怎造贼蚤责则燥糟藻泽泽燥则袁 杂酝冤 上执行遥 线程块执行的先后顺序是不确定的袁它们 必须相互独立地被执行遥 即不论它们按何种次序袁 也不论是按并行还是串行方式袁最后的执行结果都 应该一致遥 不同流多处理器上的线程是相互独立的袁相 同流多处理器上的线程则是阻塞式的咱 员园 暂 遥 前者 意味着袁不同流多处理器上的线程由不同的处理 器以任意先后顺序执行曰后者意味着袁当一个活 跃线程受到阻塞渊如执行延迟较大的数据读写操 作冤时袁流多处理器可以切换执行其他的线程袁避 免浪费宝贵的计算资源遥 猿援猿摇 内存层级结构 同基于 悦孕哉 的常规计算机体系类似袁郧孕哉 的存 储体系也具有层次性院容量大的存储器袁远离 郧孕哉袁 读写也延迟大曰延迟小的存储单元容量小袁位置靠近 郧孕哉遥 如图 缘袁悦哉阅粤 程序在运行过程中袁线程能够从 不同的内存空间中读取数据遥 每个线程都有仅本线 程可见的局部内存渊造燥糟葬造 皂藻皂燥则赠冤 遥 局部空间一般 是片上的寄存器袁可以几乎无延迟的读写遥 每个线 程块分配有一块共享内存渊 泽澡葬则藻凿 皂藻皂燥则赠冤 袁块中的 所有线程都可以读写共享内存的数据遥 共享内存靠 近 郧孕哉袁虽然不如寄存器读写速度快袁但访问延迟 也非常小遥 离 郧孕哉 最远的是大容量的全局内存遥 所有线程都可以访问全局内存袁但读写延迟非常大袁 大约要比共享内存高出一个数量级遥 图 缘摇 线程的层级结构 云蚤早援缘摇 匀蚤藻则葬则糟澡赠 燥枣 贼澡则藻葬凿泽 摇 摇 表 员 对比了在 晕灾陨阅陨粤 郧藻云燥则糟藻 缘远园 栽蚤 郧孕哉 中袁 不同层级内存的数据传输率遥 表 员摇 郧孕哉 内存数据传输率渊缘远园 栽蚤袁孕悦陨藻 圆援园 曾员远冤 栽葬遭造藻 员摇 郧孕哉 皂藻皂燥则赠 遭葬灶凿憎蚤凿贼澡 渊缘远园 栽蚤袁 孕悦陨藻 圆援园 曾员远冤 内存辕 渊郧月窑泽原员 冤 全局内存辕 渊郧月窑泽原员 冤 共享内存辕 渊郧月窑泽原员 冤 局部内存 带宽 员远 员圆愿援圆远 员 园圆源 无延迟 摇 摇 除以上介绍的几种存储空间外袁还存在 圆 种对 第 员 期摇摇摇摇摇摇摇摇摇摇摇摇摇摇 丁科袁等院郧孕哉 通用计算及其在计算智能领域的应用 窑缘窑
.6 智能系统学报 第10卷 所有线程可见的只读存储空间一常量内存(co 除了上面提到的Nsight可以用于性能分析外, stant memory)和纹理内存(texture memory)。常量 CUDA SDK还提供Visual Profiler工具,能够以可视 内存和纹理内存的访问延迟同全局内存相同,但前 化的方式展示程序各部分的运行时间,方便寻找性 者配备有缓存(cache),在数据局部性较好时,访问 能瓶颈,以便有针对性地进行优化。 延迟要小于全局内存(参见图6)。 4开放计算语言 流多理器SM) GPU端 主机端 流多处理器SM) CPU 开放计算语言(open computing language, 流多处理器(SM 纹理缓存 OpenCL)是一个完全开放和免费的异构计算编程 纹理内存 内存 标准,它由非盈利性技术组织Khronos Group负责维 常量缓君 常量内存 全局 护。OpenCL提供了一种跨平台、硬件无关的并行计 内存 算解决方案。由它编写的程序不仅能够在多核 CPU、APU及GPU上运行,还能运行在单核CPU甚 寄存器 至DSP和FPGA等硬件设备上。OpenCL获得了主 共享内存 要硬件厂商Intel、AMD和NVIDIA的积极支持。 图6 NVIDIA GPU主要结构简图 OpenCL的目标是提出一种跨硬件、跨平台的异 Fig.6 Diagram of NVIDIA GPU structure 构编程框架标准。OpenCL规范主要由平台模型、执 同一线程块内的线程可以通过共享内存 行模型、内存模型和编程模型[3]4部分组成,它在 (shared memory)(块中每个都可以读写共享内存中 硬件的抽象描述的基础上,制定了异构的并行编程 的数据)和同步机制来相互协作。具体而言,程序 模式。在制定OpenCL标准时,Khronos Group大量 员可以在核函数内调用内建函数来设置同步点,以 借鉴了CUDA4],因此,2种并行解决方案有很多相 使线程执行到该处后,停下来等待,直到同一块中的 似之处,其中,大部分关键概念都可以一一对应。 所有线程均达到同步点。 4.1设备的层级模型 3.4函数库 OpenCL定义了具有多级结构的异构并行体系 除了提供以C/C++为基础语言的高级编程平 模型。如图7所示,这一体系包括一个主机(host), 台,CUDA SDK还提供了许多函数库,高效实现常见 多个设备(device):每个设备中包括若干计算单元 操作,提高开发速度。例如,矩阵计算的cuBLAS和 (compute unit,.CU)。计算单元对应于AMD GPU cuSPARSE,实施快速傅里叶变换的cuFFT,用于批量 的计算单元(CU)或CUDA中的流多处理器(SM), 但它也可以是CPU核心,还可以是DSP和FPGA等 生成随机数的cuRAND,以及用于加速人工神经网络 的cuDNN2B]等。除了函数库外,还有大量第三方 运算设备。计算单元又由若干处理单元(processing element,PE)组成。图8给出了内存模型。 开源或商业函数库可供选择。这些函数库涵盖基本 代数运算、数值计算、统计、图像处理、机器视觉、视频 设备 设备 设备 设备 编码解码,GS等领域。这些函数的数量和范围也在 不断的增加,最新进展可以参见文献[11]。 CU 3.5调试与性能分析 PE 调试和优化是编程开发重要的环节,也是GPU PE 编程的一个难点。为简化调试和优化流程,提高开 PE 发效率,CUDA提供了一系列软件工具。 Parallel Nsight是集调试和性能测试于一体的 编程辅助工具。Nsight可以集成在Visual Studio PE (Windows下)和Eclipse(Linux下),实现交互式调 试。在Linux环境下,开发者还可以在cuda-gd在 主机 命令下进行调试,或将cuda-gdh同IDE配合使用。 此外,CUDA SDK还提供了cuda-memcheck程序,检 图7 OpenCL设备模型 查内存越界访问错误。 Fig.7 OpenCL device model
所有线程可见的只读存储空间要要要常量内存渊 糟燥灶鄄 泽贼葬灶贼 皂藻皂燥则赠冤 和纹理内存渊 贼藻曾贼怎则藻 皂藻皂燥则赠冤 遥 常量 内存和纹理内存的访问延迟同全局内存相同袁但前 者配备有缓存渊 糟葬糟澡藻冤 袁在数据局部性较好时袁访问 延迟要小于全局内存渊参见图 远冤遥 图 远摇 晕灾陨阅陨粤 郧孕哉 主要结构简图 云蚤早援远摇 阅蚤葬早则葬皂 燥枣 晕灾陨阅陨粤 郧孕哉 泽贼则怎糟贼怎则藻 同一线程块内的线程可以通过共享内存 渊 泽澡葬则藻凿 皂藻皂燥则赠冤 渊块中每个都可以读写共享内存中 的数据冤和同步机制来相互协作遥 具体而言袁程序 员可以在核函数内调用内建函数来设置同步点袁以 使线程执行到该处后袁停下来等待袁直到同一块中的 所有线程均达到同步点遥 猿援源摇 函数库 除了提供以 悦辕悦垣垣为基础语言的高级编程平 台袁悦哉阅粤 杂阅运 还提供了许多函数库袁高效实现常见 操作袁提高开发速度遥 例如袁矩阵计算的 糟怎月蕴粤杂 和 糟怎杂孕粤砸杂耘袁 实施快速傅里叶变换的 糟怎云云栽袁用于批量 生成随机数的 糟怎砸粤晕阅袁以及用于加速人工神经网络 的 糟怎阅晕晕咱 员圆鄄 员猿 暂等遥 除了函数库外袁还有大量第三方 开源或商业函数库可供选择遥 这些函数库涵盖基本 代数运算尧数值计算尧统计尧图像处理尧机器视觉尧视频 编码解码尧郧陨杂 等领域遥 这些函数的数量和范围也在 不断的增加袁最新进展可以参见文献咱员员暂遥 猿援缘摇 调试与性能分析 调试和优化是编程开发重要的环节袁也是 郧孕哉 编程的一个难点遥 为简化调试和优化流程袁提高开 发效率袁悦哉阅粤 提供了一系列软件工具遥 孕葬则葬造造藻造 晕泽蚤早澡贼 是集调试和性能测试于一体的 编程辅助工具遥 晕泽蚤早澡贼 可以集成在 灾蚤泽怎葬造 杂贼怎凿蚤燥 渊宰蚤灶凿燥憎泽 下冤和 耘糟造蚤责泽藻 渊 蕴蚤灶怎曾 下冤 袁实现交互式调 试遥 在 蕴蚤灶怎曾 环境下袁开发者还可以在 糟怎凿葬鄄早凿遭 在 命令下进行调试袁或将 糟怎凿葬鄄早凿遭 同 陨阅耘 配合使用遥 此外袁悦哉阅粤 杂阅运 还提供了 糟怎凿葬鄄皂藻皂糟澡藻糟噪 程序袁检 查内存越界访问错误遥 除了上面提到的 晕泽蚤早澡贼 可以用于性能分析外袁 悦哉阅粤 杂阅运 还提供 灾蚤泽怎葬造 孕则燥枣蚤造藻则 工具袁能够以可视 化的方式展示程序各部分的运行时间袁方便寻找性 能瓶颈袁以便有针对性地进行优化遥 源摇 开放计算语言 开放计算语言 渊 燥责藻灶 糟燥皂责怎贼蚤灶早 造葬灶早怎葬早藻袁 韵责藻灶悦蕴 冤 是一个完全开放和免费的异构计算编程 标准袁它由非盈利性技术组织 运澡则燥灶燥泽 郧则燥怎责 负责维 护遥 韵责藻灶悦蕴 提供了一种跨平台尧硬件无关的并行计 算解决方案遥 由它编写的程序不仅能够在多核 悦孕哉尧粤孕哉 及 郧孕哉 上运行袁还能运行在单核 悦孕哉 甚 至 阅杂孕 和 云孕郧粤 等硬件设备上遥 韵责藻灶悦蕴 获得了主 要硬件厂商 陨灶贼藻造尧粤酝阅 和 晕灾陨阅陨粤 的积极支持遥 韵责藻灶悦蕴 的目标是提出一种跨硬件尧跨平台的异 构编程框架标准遥 韵责藻灶悦蕴 规范主要由平台模型尧执 行模型尧内存模型和编程模型咱员猿 暂 源 部分组成袁它在 硬件的抽象描述的基础上袁制定了异构的并行编程 模式遥 在制定 韵责藻灶悦蕴 标准时袁运澡则燥灶燥泽 郧则燥怎责 大量 借鉴了 悦哉阅粤咱员源 暂 袁因此袁圆 种并行解决方案有很多相 似之处袁其中袁大部分关键概念都可以一一对应遥 源援员摇 设备的层级模型 韵责藻灶悦蕴 定义了具有多级结构的异构并行体系 模型遥 如图 苑 所示袁这一体系包括一个主机渊 澡燥泽贼冤 袁 多个设备渊 凿藻增蚤糟藻冤 曰每个设备中包括若干计算单元 渊糟燥皂责怎贼藻 怎灶蚤贼袁 悦哉冤 遥 计算单元对应于 粤酝阅 郧孕哉 的计算单元渊悦哉冤或 悦哉阅粤 中的流多处理器渊 杂酝冤袁 但它也可以是 悦孕哉 核心袁还可以是 阅杂孕 和 云孕郧粤 等 运算设备遥 计算单元又由若干处理单元渊 责则燥糟藻泽泽蚤灶早 藻造藻皂藻灶贼袁 孕耘冤组成遥 图 愿 给出了内存模型遥 图 苑摇 韵责藻灶悦蕴 设备模型 云蚤早援苑摇 韵责藻灶悦蕴 凿藻增蚤糟藻 皂燥凿藻造 窑远窑 智 能 系 统 学 报摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇 第 员园 卷
第1期 丁科,等:GPU通用计算及其在计算智能领域的应用 ·7 计算单元1 计算单元M OpenCL的核函数启动后,每个工作项都会执行 私有内相 私有内存 私有内宿 私有内存 核函数中指令,这一点也与CUDA相同。由于 工作项1 工作项W 工作项1 工作项N OpenCL是与具体硬件无关的,因此,核函数的启动 相对CUDA要复杂一些。(CUDA中,复杂的维护工 局部内存 局部内存 作由运行时负责,用户也可以通过Driver API来显 全局/常量缓存 示的管理和查询。由于CUDA是针对专用硬件平 全局内存 台,因此,一般而言没有这样做的必要。) 如图10,OpenCL首先需要创建一个上下文 图8 OpenCL内存模型 Fig.8 OpenCL memory model (context)来管理设备,不同类型的硬件对应不同类 如图8所示,OpenCL规范还定义了内存的层级 型的上下文。上下文对硬件设备进行了封装,为主 结构和可见性:远离计算单元的全局内存(global 机调用设备的提供了统一的接口。主机启动核函数 memory)和常量内存(constant memory)是全局可见 后,核函数被放在一个命令队列(CMD queue)中,等 待执行。当设备完成一个核函数的执行后,会取出 的,片上的局部内存(local memory)、计算单元内部 的私有内存(private memory)则是局部可见的。 队列中的第一个核函数继续执行。关于OpenCL更 4.2数据并行模型 详细的说明,可以参考[B,5);关于基于AMD GPU OpenCL定义了程序的执行模式。图9给出了 的编程开发,可以参见16] OpenCL抽象的数据并行模型。在OpenCL的概念 命令队列 应用程序 一核函数 中,执行单元也同是以层级结构进行组织的:工作项 (work item)组成工作组(work group),工作组进而 核函数 命令队列 构成索引空间一NDRange。OpenCL的工作项,相 当于CUDA的线程,是核函数执行的最小单元;工 OpenCL上下文 OpenCL设备 OpenCL设备 作组对应于CUDA的线程块,工作组内的项有更加 方便的数据共享和同步机制,便于彼此协作。工作 图10 OpenCL通过命令队列和上下文管理核函数执行 组又被置于更大的索引空间NDRange中,它发挥着 Fig.10 OpenCL manages the kernels through com- CUDA中线程格的作用,为工作组和工作项提供全 mand queue and context 局索引。 4.4函数库 全局大小(0) 工作组 OpenCL的生态系统也提供了大量的函数库,方 组ID 0.1 便开发者利用。开源的数学函数库clMath实现了 0.0 工作项 1.0 1.1 快速傅里叶变换(F℉T)和基础线性代数全程库 (BLAS)。其中,FFT支持1~3维的实数和复数变 换:BLAS支持全部1~3级别的代数运算。在 clMath的基础上,MAGMA提供了矩阵的LU、QR和 局部大小(0) Chokesky分解、特征值计算等重要的矩阵操作的 图9 OpenCL并行执行模型 OpenCL实现。 Fig.9 OpenCL execution model 4.5调试和性能工具 同CUDA一样,工作项除了拥有在工作组内的 目前已有许多优秀的工具,用于OpenCL程序的 坐标外,也具有工作组内的唯一的索引和唯一的全 调试和优化。AMD APP SDK中的CodeXL包含了一 局索引:工作组也有着类似的索引结构。 整套软件工具,帮助开发者最大限度地发掘GPU的 4.3设备管理与核函数启动 计算潜力。CodeXL包括功能强大的调试器,能够对 OpenCL的核函数的基本结构同CUDA完全相 CPU和GPU端的代码进行细致的监测,同时还能对 同,只是在具体编写时所使用的关键字不同。 OpenCL的kernel函数进行表态分析。CodeXL可以
图 愿摇 韵责藻灶悦蕴 内存模型 云蚤早援愿摇 韵责藻灶悦蕴 皂藻皂燥则赠 皂燥凿藻造 如图 愿 所示袁韵责藻灶悦蕴 规范还定义了内存的层级 结构和可见性院远离计算单元的全局内存渊 早造燥遭葬造 皂藻皂燥则赠冤和常量内存渊 糟燥灶泽贼葬灶贼 皂藻皂燥则赠冤 是全局可见 的袁片上的局部内存渊造燥糟葬造 皂藻皂燥则赠冤 尧计算单元内部 的私有内存渊 责则蚤增葬贼藻 皂藻皂燥则赠冤则是局部可见的遥 源援圆摇 数据并行模型 韵责藻灶悦蕴 定义了程序的执行模式遥 图 怨 给出了 韵责藻灶悦蕴 抽象的数据并行模型遥 在 韵责藻灶悦蕴 的概念 中袁执行单元也同是以层级结构进行组织的院工作项 渊憎燥则噪 蚤贼藻皂冤 组成工作组渊 憎燥则噪 早则燥怎责冤 袁工作组进而 构成索引空间要要要晕阅砸葬灶早藻遥 韵责藻灶悦蕴 的工作项袁相 当于 悦哉阅粤 的线程袁是核函数执行的最小单元曰工 作组对应于 悦哉阅粤 的线程块袁工作组内的项有更加 方便的数据共享和同步机制袁便于彼此协作遥 工作 组又被置于更大的索引空间 晕阅砸葬灶早藻 中袁它发挥着 悦哉阅粤 中线程格的作用袁为工作组和工作项提供全 局索引遥 图 怨摇 韵责藻灶悦蕴 并行执行模型 云蚤早援怨摇 韵责藻灶悦蕴 藻曾藻糟怎贼蚤燥灶 皂燥凿藻造 同 悦哉阅粤 一样袁工作项除了拥有在工作组内的 坐标外袁也具有工作组内的唯一的索引和唯一的全 局索引曰工作组也有着类似的索引结构遥 源援猿摇 设备管理与核函数启动 韵责藻灶悦蕴 的核函数的基本结构同 悦哉阅粤 完全相 同袁只是在具体编写时所使用的关键字不同遥 韵责藻灶悦蕴 的核函数启动后袁每个工作项都会执行 核函数中指令袁 这一点也与 悦哉阅粤 相 同遥 由 于 韵责藻灶悦蕴 是与具体硬件无关的袁因此袁核函数的启动 相对 悦哉阅粤 要复杂一些遥 渊悦哉阅粤 中袁复杂的维护工 作由运行时负责袁用户也可以通过 阅则蚤增藻则 粤孕陨 来显 示的管理和查询遥 由于 悦哉阅粤 是针对专用硬件平 台袁因此袁一般而言没有这样做的必要遥冤 摇 摇 如图 员园袁 韵责藻灶悦蕴 首先需要创建一个上下文 渊糟燥灶贼藻曾贼冤来管理设备袁不同类型的硬件对应不同类 型的上下文遥 上下文对硬件设备进行了封装袁为主 机调用设备的提供了统一的接口遥 主机启动核函数 后袁核函数被放在一个命令队列渊悦酝阅 择怎藻怎藻冤中袁等 待执行遥 当设备完成一个核函数的执行后袁会取出 队列中的第一个核函数继续执行遥 关于 韵责藻灶悦蕴 更 详细的说明袁可以参考咱 员猿袁员缘 暂 曰关于基于 粤酝阅 郧孕哉 的编程开发袁可以参见咱员远 暂 遥 图 员园摇 韵责藻灶悦蕴 通过命令队列和上下文管理核函数执行 云蚤早援 员园 摇 韵责藻灶悦蕴 皂葬灶葬早藻泽 贼澡藻 噪藻则灶藻造泽 贼澡则燥怎早澡 糟燥皂鄄 皂葬灶凿 择怎藻怎藻 葬灶凿 糟燥灶贼藻曾贼 源援源摇 函数库 韵责藻灶悦蕴 的生态系统也提供了大量的函数库袁方 便开发者利用遥 开源的数学函数库 糟造酝葬贼澡 实现了 快速傅里叶变换 渊 云云栽冤 和基础线性代数全程库 渊月蕴粤杂冤 遥 其中袁云云栽 支持 员耀猿 维的实数和复数变 换曰月蕴粤杂 支持全部 员耀猿 级别的代数运算遥 在 糟造酝葬贼澡 的基础上袁酝粤郧酝粤 提供了矩阵的 蕴哉尧匝砸 和 悦澡燥噪藻泽噪赠 分解尧特征值计算等重要的矩阵操作的 韵责藻灶悦蕴 实现遥 源援缘摇 调试和性能工具 目前已有许多优秀的工具袁用于 韵责藻灶悦蕴 程序的 调试和优化遥 粤酝阅 粤孕孕 杂阅运 中的 悦燥凿藻载蕴 包含了一 整套软件工具袁帮助开发者最大限度地发掘 郧孕哉 的 计算潜力遥 悦燥凿藻载蕴 包括功能强大的调试器袁能够对 悦孕哉 和 郧孕哉 端的代码进行细致的监测袁同时还能对 韵责藻灶悦蕴 的 噪藻则灶藻造 函数进行表态分析遥 悦燥凿藻载蕴 可以 第 员 期摇摇摇摇摇摇摇摇摇摇摇摇摇摇 丁科袁等院郧孕哉 通用计算及其在计算智能领域的应用 窑苑窑
8 智能系统学报 第10卷 配合Visual Studio使用,也可以单独使用。 超大型神经网络的训练,正是得益于两块GU的强 5计算智能领域应用 大计算能力。 Stanford大学的研究人员提出了基于GPU阵列 GPU通用计算已经进入高性能计算的主流行 和分布式运算加速神经网络的计算框架21)。这个 列,被用于流体模拟、物理仿真、图像和信号处理、数 由16个GPU组成的GPU阵列,能够训练比1000 值计算等诸多,并取得了良好的加速效果。文献[1- CPU的Google集群大6.5倍规模的深度神经网络。 2]和[17]给出了GPU在许多关键领域和问题上的 巨大的实用性使得基于GPU的人工神经网络受到 重要应用。本节主要回顾GPU在计算智能领域的 科研机构和T企业的重视,是GPU能用计算研究 应用。 热点。 计算智能算法一般具备并行性的特点,因此,特 5.2群体智能优化算法 别适用利用GPU平台进行高效的并行化实现。 群体智能优化算法是一类基于群体的启发式随 5.1人工神经网络 机优化算法,在工程和科学领域有着广泛的应用。 人工神经网络(artificial neural network,ANN), 然而,群体算法优化过程中需要对目标函数进行大 模仿生物神经网络的结构和功能,通过联结大量的人 量的评估,这也极大的限制了群体算法在某些问题 工神经元进行计算。由于出色的特征学习能力,深度 中的应用。群体算法的内在并行性,使得它们可以 神经网络已经在图像识别、语言识别等领域取得了突 很好地利用GPU多核心、高度并行的特性。 破性进展。图11展示了深层卷积神经网络在学习图 Zhou等[21最早利用GPU进行PS0算法的加 像的低阶和高阶特征上表现出的良好性能8] 速工作,在当时的硬件条件下,取得了8X倍的加速 比。随后,基于GPU的PSO变种及多目标群体算 也相继被提出[2324]。 作为典型的基于GPU的群体智能优化方法实 现,Ding等5]提出了基于GPU并行加速的烟花算 法(GPU-FWA)I]。图12示意了烟花算法基于 GPU实现的基本流程。 (a)低阶特征 (b)高阶特征 CPU GPU 图11 通过深度神经网络学习到的低阶和高阶特征可 设定算 Fig.11 Low level and high level features learned by DNNI 法参数 核函数调用 随着深度学习](deep learning)研究的不断深 核函数返可】 初始化种群 入,人工神经网络的规模越来越大,计算复杂性不断 核函数调用 目标函数评价 膨胀。通常,深度神经网络包含上百万甚至上亿个 核函数返回 自由参数,需要在海量的数据集上进行学习。因此, 返回 结束心 加速深度神经网络的训练速度是工程和科学领域的 结果 存 核函数调用 重要研究内容,直接关系到对深度神经网络的研究 核函数返可 计算爆炸半径 以及其在实际中的应用。 核函数调用 核函数返可 FWA搜索 共享 超级计算机和大规模集群的成本高昂,个人和 内存 核函数调用 中小型研究机和企业构难于负担。GPU通用计算, 核函数返可 Ar变异 极大地降低了深度神经网络的研究和应用的门槛。 2012,Krizhevsky等[2o】,搭建了一个深度神经 图12基于GPU的烟花算法实现示意图 网络并用于图像识别。这个神经网络含有6000万 Fig.12 Diagram of GPU-FWA 个参数,650000个神经元。这个神经网络在Ima- GPU-FWA充分利用了GPU内存层级结构,主 geNet测试集(共有1000个类别)上,取得了17%的 要数据通讯被限制在共享内存之间,从而减少了数 Top5分类错误率,取得了突破性的进展。而这个 据传输开销。同时,GPU-FWA通过一种改进后的
配合 灾蚤泽怎葬造 杂贼怎凿蚤燥 使用袁也可以单独使用遥 缘摇 计算智能领域应用 郧孕哉 通用计算已经进入高性能计算的主流行 列袁被用于流体模拟尧物理仿真尧图像和信号处理尧数 值计算等诸多袁并取得了良好的加速效果遥 文献咱员鄄 圆暂和咱员苑暂给出了 郧孕哉 在许多关键领域和问题上的 重要应用遥 本节主要回顾 郧孕哉 在计算智能领域的 应用遥 计算智能算法一般具备并行性的特点袁因此袁特 别适用利用 郧孕哉 平台进行高效的并行化实现遥 缘援员摇 人工神经网络 人工神经网络渊 葬则贼蚤枣蚤糟蚤葬造 灶藻怎则葬造 灶藻贼憎燥则噪袁 粤晕晕冤袁 模仿生物神经网络的结构和功能袁通过联结大量的人 工神经元进行计算遥 由于出色的特征学习能力袁深度 神经网络已经在图像识别尧语言识别等领域取得了突 破性进展遥 图 员员 展示了深层卷积神经网络在学习图 像的低阶和高阶特征上表现出的良好性能咱 员愿 暂 遥 图 员员摇 通过深度神经网络学习到的低阶和高阶特征咱圆苑暂 云蚤早援员员摇 蕴燥憎 造藻增藻造 葬灶凿 澡蚤早澡 造藻增藻造 枣藻葬贼怎则藻泽 造藻葬则灶藻凿 遭赠 阅晕晕咱 圆苑 暂 随着深度学习咱员怨 暂渊 凿藻藻责 造藻葬则灶蚤灶早冤研究的不断深 入袁人工神经网络的规模越来越大袁计算复杂性不断 膨胀遥 通常袁深度神经网络包含上百万甚至上亿个 自由参数袁需要在海量的数据集上进行学习遥 因此袁 加速深度神经网络的训练速度是工程和科学领域的 重要研究内容袁直接关系到对深度神经网络的研究 以及其在实际中的应用遥 超级计算机和大规模集群的成本高昂袁个人和 中小型研究机和企业构难于负担遥 郧孕哉 通用计算袁 极大地降低了深度神经网络的研究和应用的门槛遥 圆园员圆袁 运则蚤扎澡藻增泽噪赠 等咱圆园 暂 袁搭建了一个深度神经 网络并用于图像识别遥 这个神经网络含有 远 园园园 万 个参数袁远缘园 园园园 个神经元遥 这个神经网络在 陨皂葬鄄 早藻晕藻贼 测试集渊共有 员 园园园 个类别冤上袁取得了 员苑豫的 栽燥责 缘 分类错误率袁取得了突破性的进展遥 而这个 超大型神经网络的训练袁正是得益于两块 郧孕哉 的强 大计算能力遥 杂贼葬灶枣燥则凿 大学的研究人员提出了基于 郧孕哉 阵列 和分布式运算加速神经网络的计算框架咱 圆员 暂 遥 这个 由 员远 个 郧孕哉 组成的 郧孕哉 阵列袁能够训练比 员 园园园 悦孕哉 的 郧燥燥早造藻 集群大 远援缘 倍规模的深度神经网络遥 巨大的实用性使得基于 郧孕哉 的人工神经网络受到 科研机构和 陨栽 企业的重视袁是 郧孕哉 能用计算研究 热点遥 缘援圆摇 群体智能优化算法 群体智能优化算法是一类基于群体的启发式随 机优化算法袁在工程和科学领域有着广泛的应用遥 然而袁群体算法优化过程中需要对目标函数进行大 量的评估袁这也极大的限制了群体算法在某些问题 中的应用遥 群体算法的内在并行性袁使得它们可以 很好地利用 郧孕哉 多核心尧高度并行的特性遥 在澡燥怎 等咱圆圆 暂最早利用 郧孕哉 进行 孕杂韵 算法的加 速工作袁在当时的硬件条件下袁取得了 愿载 倍的加速 比遥 随后袁基于 郧孕哉 的 孕杂韵 变种及多目标群体算 也相继被提出咱圆猿 鄄圆源 暂 遥 作为典型的基于 郧孕哉 的群体智能优化方法实 现袁阅蚤灶早 等咱 圆缘 暂提出了基于 郧孕哉 并行加速的烟花算 法渊 郧孕哉鄄云宰粤冤 咱 圆远 暂 遥 图 员圆 示意了烟花算法基于 郧孕哉 实现的基本流程遥 图 员圆摇 基于 郧孕哉 的烟花算法实现示意图 云蚤早援员圆摇 阅蚤葬早则葬皂 燥枣 郧孕哉鄄云宰粤 摇 摇 郧孕哉鄄云宰粤 充分利用了 郧孕哉 内存层级结构袁主 要数据通讯被限制在共享内存之间袁从而减少了数 据传输开销遥 同时袁郧孕哉鄄云宰粤 通过一种改进后的 窑愿窑 智 能 系 统 学 报摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇 第 员园 卷
第1期 丁科,等:GPU通用计算及其在计算智能领域的应用 .9 交互机制,进一步提高了运行速度。在对经典基准 以及人们对于语音、视频等多媒体资源需要的不断 测试函数上的测试表明,GPU-WA相对于传统基 高涨,GPU也在这是相对新兴的领域得到广泛应 于CPU的烟花算法,加速近200倍。 用。未来,GPU通用计算也很有可能在这些领域发 群体智能优化方法也在大量实际问题获得良好 挥重要影响,有望在这一领域带来一场计算变革。 应用。Rymut等[2n]实现的GPU版本的基于PS0的 而这些非传统的计算设备往往具有低功耗和嵌入式 体追踪算法提速20~40倍。Mussi等[28]实现的基于 的特点,这也给GPU计算带来了新的挑战[0,]。 异步PSO的人体追踪算法,将原程序由CPU端的几 互联网的日新月异,大数据的来势汹汹,也为大 分钟,提升到了几秒钟内完成,实现了跟踪的实时性, 规模服务器端计算带来了巨大的挑战。将GPU用 提高的算法的实用性。Nobile等9]将GPU多种群 于服务器将是应对挑战的一种潜在的应对方案。由 PS0应用于生物系统的参数估计,运行时间从6h缩 于GPU缺乏CPU的通用性和灵活性,选择合适的 减到14min,大大加快了参数选择过程。利用GPU 组织方式便尤为重要。一种可能的方案是将GPU 加速群体算法,不仅提高了原有应用的速度,而且也 和CPU按照一定的比例组合(例如,一个计算结点 扩展了群体优化方法的应用范围。新的基于GU的 配置若干数量的CPU和GPU)。目前,针对GPU阵 群体算法的应用在不断的出现,成研究的热点。 列或分布式集群,已经有一些硬件连接解决方案和 中间件支持。然而,这CPU和GPU之间的通信可 6分析与讨论 能带来潜在的性能瓶颈。混合架构是另一种可能的 6.1GPU通用计算的缺点 选择方案。例如,AMD等硬件厂商提出HSA(heter 首先,并非所有的计算任务都适合利用GPU进 ogeneous system architecture)概念,试图将GPU和 行计算。GPU适用于存在大量的数据并行性并且 CPU在物理架构上进行深度整合,通过共享物理内 数据之间无复杂逻辑依赖的计算任务(典型的如矩 存方式减小通信开销。由于基于HAS这一新型体 阵计算)。对于存在复杂逻辑和随机读写的应用场 系结构的硬件还未大规模面世,因此其性能还有待 景,GPU可能并不是最佳的选择。 在理论和实践中进一步检验。 其次,GPU对于算数运算的支持还有待提高。 虽然现在主流GPU都支持符合EEE标准的浮点运 7结束语 算,但在对双精度浮点的支持上还有待提高。例如, 在计算领域,已经从多核时代跨向众核时代,具 经验表明,对于同样的网络结构和训练方法,使用单 有众核架构的GPU已经进入高性能计算的主流行 精度运算的出错概率要明显高于双精度运算。同时, 列。目前,GPU通用编程的软硬件平台已经相对成 普通消费级别的GPU不支持ECC校验,这一点在开 熟,成为了计算领域的重要力量。GPU能以相对低 发对运算可靠性要求较高的应用时需要特别注意。 廉的价格提供巨大的计算能力,从而获得了广泛的 同常规的并行编程一样,GPU的高度并行性也 应用。GPU通用计算的普及,使个人和小型机构能 使得程序的调试工作较为困难。虽然已有大量工具 有机会获得以往昂贵的大型、超级计算机才能提供 可以用来辅助调试,但对于逻辑错误等的调试依然 的计算能力。可以说,GPU在一定程度上改变了计 是一项艰巨的挑战。 算领域的格局和编程开发模式。 另外,目前基于GPU开发的程序在可移植上还 GPU高度并行的特点使得GPU能够高效地实 存在不足。CUDA由于其简易性和相对完善的生 现计算智能算法,以应对大规模复杂问题,并且已经 态,在GPGPU领域处于绝对的领先地位,然而它仅 在人工神经网络和群体智能优化算法等方面获得了 仅支持NVIDIA的GPU。基于开放标准的OpenCL 大量的成功应用。GPU已经成为深度学习领域中 的程序虽然具有移植性,但是移植性能情况取决于 事实上的标准计算平台,在图像、语音自然语言处理 硬件平台OpenCL驱动性能。目前,OpenCL的流行 等领域发挥着不可替代的作用。基于多GPU和 度正在不断提升,软硬件厂商对OpenCL支持力度 GPU集群的深度网络实现与训练,也是深度学习领 也在不断增大。在未来几年,GPU编程的可移植性 域的研究热点。群体智能优化方法以其内在并行 有望逐渐改善。 性,在GPU平台获得了良好的加速效果,从而扩大 6.2GPU通用计算发展趋势 了群体算法求解问题的规模和范围。随着多目标优 由于智能手机、平板电脑和可穿戴设备的普及, 化应用和研究的日益广泛,基于GPU的多目标群体
交互机制袁进一步提高了运行速度遥 在对经典基准 测试函数上的测试表明袁郧孕哉鄄云宰粤 相对于传统基 于 悦孕哉 的烟花算法袁加速近 圆园园 倍遥 群体智能优化方法也在大量实际问题获得良好 应用遥 砸赠皂怎贼 等咱 圆苑 暂实现的 郧孕哉 版本的基于 孕杂韵 的 体追踪算法提速 圆园 耀 源园 倍遥 酝怎泽泽蚤 等咱 圆愿 暂实现的基于 异步 孕杂韵 的人体追踪算法袁将原程序由 悦孕哉 端的几 分钟袁提升到了几秒钟内完成袁实现了跟踪的实时性袁 提高的算法的实用性遥 晕燥遭蚤造藻 等咱 圆怨 暂 将 郧孕哉 多种群 孕杂韵 应用于生物系统的参数估计袁运行时间从 远 澡 缩 减到 员源 皂蚤灶袁大大加快了参数选择过程遥 利用 郧孕哉 加速群体算法袁不仅提高了原有应用的速度袁而且也 扩展了群体优化方法的应用范围遥 新的基于 郧孕哉 的 群体算法的应用在不断的出现袁成研究的热点遥 远摇 分析与讨论 远援员摇 郧孕哉 通用计算的缺点 首先袁并非所有的计算任务都适合利用 郧孕哉 进 行计算遥 郧孕哉 适用于存在大量的数据并行性并且 数据之间无复杂逻辑依赖的计算任务渊典型的如矩 阵计算冤 遥 对于存在复杂逻辑和随机读写的应用场 景袁郧孕哉 可能并不是最佳的选择遥 其次袁郧孕哉 对于算数运算的支持还有待提高遥 虽然现在主流 郧孕哉 都支持符合 陨耘耘耘 标准的浮点运 算袁但在对双精度浮点的支持上还有待提高遥 例如袁 经验表明袁对于同样的网络结构和训练方法袁使用单 精度运算的出错概率要明显高于双精度运算遥 同时袁 普通消费级别的 郧孕哉 不支持 耘悦悦 校验袁这一点在开 发对运算可靠性要求较高的应用时需要特别注意遥 同常规的并行编程一样袁郧孕哉 的高度并行性也 使得程序的调试工作较为困难遥 虽然已有大量工具 可以用来辅助调试袁但对于逻辑错误等的调试依然 是一项艰巨的挑战遥 另外袁目前基于 郧孕哉 开发的程序在可移植上还 存在不足遥 悦哉阅粤 由于其简易性和相对完善的生 态袁在 郧孕郧孕哉 领域处于绝对的领先地位袁然而它仅 仅支持 晕灾陨阅陨粤 的 郧孕哉遥 基于开放标准的 韵责藻灶悦蕴 的程序虽然具有移植性袁但是移植性能情况取决于 硬件平台 韵责藻灶悦蕴 驱动性能遥 目前袁韵责藻灶悦蕴 的流行 度正在不断提升袁软硬件厂商对 韵责藻灶悦蕴 支持力度 也在不断增大遥 在未来几年袁郧孕哉 编程的可移植性 有望逐渐改善遥 远援圆摇 郧孕哉 通用计算发展趋势 由于智能手机尧平板电脑和可穿戴设备的普及袁 以及人们对于语音尧视频等多媒体资源需要的不断 高涨袁郧孕哉 也在这是相对新兴的领域得到广泛应 用遥 未来袁郧孕哉 通用计算也很有可能在这些领域发 挥重要影响袁有望在这一领域带来一场计算变革遥 而这些非传统的计算设备往往具有低功耗和嵌入式 的特点袁这也给 郧孕哉 计算带来了新的挑战咱 猿园袁猿员 暂 遥 互联网的日新月异袁大数据的来势汹汹袁也为大 规模服务器端计算带来了巨大的挑战遥 将 郧孕哉 用 于服务器将是应对挑战的一种潜在的应对方案遥 由 于 郧孕哉 缺乏 悦孕哉 的通用性和灵活性袁选择合适的 组织方式便尤为重要遥 一种可能的方案是将 郧孕哉 和 悦孕哉 按照一定的比例组合渊例如袁一个计算结点 配置若干数量的 悦孕哉 和 郧孕哉冤 遥 目前袁针对 郧孕哉 阵 列或分布式集群袁已经有一些硬件连接解决方案和 中间件支持遥 然而袁这 悦孕哉 和 郧孕哉 之间的通信可 能带来潜在的性能瓶颈遥 混合架构是另一种可能的 选择方案遥 例如袁粤酝阅 等硬件厂商提出 匀杂粤渊 澡藻贼藻则鄄 燥早藻灶藻燥怎泽 泽赠泽贼藻皂 葬则糟澡蚤贼藻糟贼怎则藻冤 概念袁试图将 郧孕哉 和 悦孕哉 在物理架构上进行深度整合袁通过共享物理内 存方式减小通信开销遥 由于基于 匀粤杂 这一新型体 系结构的硬件还未大规模面世袁因此其性能还有待 在理论和实践中进一步检验遥 苑摇 结束语 在计算领域袁已经从多核时代跨向众核时代袁具 有众核架构的 郧孕哉 已经进入高性能计算的主流行 列遥 目前袁郧孕哉 通用编程的软硬件平台已经相对成 熟袁成为了计算领域的重要力量遥 郧孕哉 能以相对低 廉的价格提供巨大的计算能力袁从而获得了广泛的 应用遥 郧孕哉 通用计算的普及袁使个人和小型机构能 有机会获得以往昂贵的大型尧超级计算机才能提供 的计算能力遥 可以说袁郧孕哉 在一定程度上改变了计 算领域的格局和编程开发模式遥 郧孕哉 高度并行的特点使得 郧孕哉 能够高效地实 现计算智能算法袁以应对大规模复杂问题袁并且已经 在人工神经网络和群体智能优化算法等方面获得了 大量的成功应用遥 郧孕哉 已经成为深度学习领域中 事实上的标准计算平台袁在图像尧语音自然语言处理 等领域发挥着不可替代的作用遥 基于多 郧孕哉 和 郧孕哉 集群的深度网络实现与训练袁也是深度学习领 域的研究热点遥 群体智能优化方法以其内在并行 性袁在 郧孕哉 平台获得了良好的加速效果袁从而扩大 了群体算法求解问题的规模和范围遥 随着多目标优 化应用和研究的日益广泛袁基于 郧孕哉 的多目标群体 第 员 期摇摇摇摇摇摇摇摇摇摇摇摇摇摇 丁科袁等院郧孕哉 通用计算及其在计算智能领域的应用 窑怨窑
·10· 智能系统学报 第10卷 智能优化方法将逐步流行,以更好地应对大规模复 University Press,2010:205-220 杂优化问题。 [16]MUNSHI A,GASTER B,MATTSON T G,et al.OpenCL 总之,作为通用计算单元,GPU将以更加多样 Programming Guide[M].Boston:Addison_Wesley Profes- 化的形式活跃在智能计算及其他计算领域。 sional,2011:63-68. [17]AMD上海研发中心.跨平台的多核与从核编程讲 参考文献: 义一0 penCL的方式[M].上海:AMD,2010:1-154. [1]OWENS J D,LUEBKE D,GOVINDARAJU N,et al.A [I8]FARBER R.高性能CUDA应用设计与开发[M].北京: survey of general-purpose computation on graphics hardware 机械工业出版社,2013:1-49 [J].Computer Graphics Forum,2007,26(1):80-113. [19]ZEILER M,FERGUS R.Visualizing and understanding [2]0WENS J D,LUEBKE D,GOVINDARAJU N,et al.GPU convolutional networks[C]//Proceedings of the 13th Eu- computing[J].Proceedings of the IEEE,2008,96(5): ropean Conference on Computer Vision.Zurich,Switzer- 879-899. land.2014:818-833. [3]SUTTER H.The free lunch is over:a fundamental turn to- [20]HINTON G,OSINDERO S,WELLING M,et al.Unsuper- ward concurrency in software[J].Dr.Dobb's Journal, vised discovery of nonlinear structure using contrastive 2005,30(3):202-210. backpropagation[]].Nature,2006,30(4):725-731. [4]ROSS P E.Why CPU frequeney stalled [J].Spectrum, [21]KRIZHEVSKY A,SUTSKEVER I,HINTON G.Imagenet 2008,45(4):72-78 classification with deep convolutional neural networks [5]BORKAR S.Getting gigascale chips:challenges and oppor- [C]//Advances in Neural Information Processing Systems tunities in continuing Moore's Law[J].Queue,2003,1 25.Reno,.Nevada,USA,2012:1106-1114 (7):26-33. [22]COATES A,HUVAL B,WANG T,et al.Deep learning [6]NVIDIA.CUDA C programming guide v6.5[R].Santa Clar- with COTS HPC systems[C]//Proceedings of the 30th In- a,CA,USA:NVIDIA Corporation,2014. ternational Conference on Machine Learing.Atlanta, [7]JARARWEH Y,JARRAH M,BOUSSELHAM A,et al. USA,2013:1337-1345. GPU-based personal supercomputing[C]//2013 IEEE Jor- [23]ZHOU Y,TAN Y.GPU-based parallel particle swarm opti- dan Conference on Applied Electrical Engineering and Com- mization[C]//IEEE Congress on Evolutionary Computa- puting Technologies.Amman,2013:1-5. tion.Trondheim,Norway,2009:1493-1500. [8]KAPASI U J,RIXNER S,DALLY W J,et al.Programma- [24]ZHOU Y,TAN Y.Particle swarm optimization with trig- ble stream processors[]Computer,2003,36(8):54-62. gered mutation and its implementation based on GPU [9]BUCK I,FOLEY T,HORN D,et al.Brook for GPUs: [C]//GECCO'10:Proceedings of the 12th Annual Con- stream computing on graphics hardware[J].ACM Transac- ference on Genetic and Evolutionary Computation.Port- tions on Graphics,2004,23(3):777-786. land,Oregon,USA,2010:1-8. 10]Microsoft.C++accelerated massive parallelism[Z].Red- [25]ZHOU Y,TAN Y.GPU-based parallel multi-objective par- mond,WA,USA:Microsoft,2013. ticle swarm optimization[J].International Journal of Artifi- [11]NVIDIA.CUDA C best practices guide version 4.1[R]. cial Intelligence,2011,7(A11):125-141. Santa Clara,CA,USA:NVIDIA Corporation,2012. [26]DING K.TAN Y.A GPU-based parallel fireworks algo- [12]NVIDIA.GPU-Accelerated Libraries OL/EB ][2015-01- rithm for optimization [C]//GECCO'13:Proceedings of 5].https://developer.nvidia.com/gpu-accelerated-libraries. the Fifteenth Annual Conference on Genetic and Evolution- 13 ]JIA Y,SHELHAMER E,DONAHUE J,et al.Caffe:con- ary Computation Conference.Amsterdam,the Netherlands, volutional architecture for fast feature embedding [C]/ 2013:9-16. Proceedings of the ACM International Conference on Multi- [27]TAN Y,ZHU Y.Fireworks algorithm for optimization media,[s.1.],2014:675-678 [C]//First International Conference of Swarm Intelli- [I4]GASTER B,HOWES L,KAELI D R,等.OpenCL异构计 gence.Beijing,China,2010:355-364. 算[M].北京:清华大学出版社,2012:10-35. [28]RYMUT B,KWOLEK B.GPU-supported object tracking [15]KIRK D B,HWU WW.Programming massively parallel using adaptive appearance models and particle swarm opti- processors:a Hands-on approach[M].Beijing:Tsinghua mization[C]//International Conference on Computer Vi-
智能优化方法将逐步流行袁以更好地应对大规模复 杂优化问题遥 总之袁作为通用计算单元袁 郧孕哉 将以更加多样 化的形式活跃在智能计算及其他计算领域遥 参考文献院 咱员暂 韵宰耘晕杂 允 阅袁 蕴哉耘月运耘 阅袁 郧韵灾陨晕阅粤砸粤允哉 晕袁 藻贼 葬造援 粤 泽怎则增藻赠 燥枣 早藻灶藻则葬造鄄责怎则责燥泽藻 糟燥皂责怎贼葬贼蚤燥灶 燥灶 早则葬责澡蚤糟泽 澡葬则凿憎葬则藻 咱 允暂援 悦燥皂责怎贼藻则 郧则葬责澡蚤糟泽 云燥则怎皂袁 圆园园苑袁 圆远渊员冤 院 愿园鄄员员猿援 咱圆暂韵宰耘晕杂 允 阅袁 蕴哉耘月运耘 阅袁 郧韵灾陨晕阅粤砸粤允哉 晕袁 藻贼 葬造 郧孕哉 糟燥皂责怎贼蚤灶早咱 允暂援 孕则燥糟藻藻凿蚤灶早泽 燥枣 贼澡藻 陨耘耘耘袁 圆园园愿袁 怨远 渊 缘冤 院 愿苑怨鄄愿怨怨援 咱猿暂 杂哉栽栽耘砸 匀援 栽澡藻 枣则藻藻 造怎灶糟澡 蚤泽 燥增藻则院 葬 枣怎灶凿葬皂藻灶贼葬造 贼怎则灶 贼燥鄄 憎葬则凿 糟燥灶糟怎则则藻灶糟赠 蚤灶 泽燥枣贼憎葬则藻 咱 允 暂援 阅则援 阅燥遭遭 爷 泽 允燥怎则灶葬造袁 圆园园缘袁 猿园渊猿冤 院 圆园圆鄄圆员园援 咱源暂 砸韵杂杂 孕 耘援 宰澡赠 悦孕哉 枣则藻择怎藻灶糟赠 泽贼葬造造藻凿 咱 允 暂援 杂责藻糟贼则怎皂袁 圆园园愿袁 源缘渊源冤 院 苑圆鄄苑愿援 咱缘暂月韵砸运粤砸 杂援 郧藻贼贼蚤灶早 早蚤早葬泽糟葬造藻 糟澡蚤责泽院 糟澡葬造造藻灶早藻泽 葬灶凿 燥责责燥则鄄 贼怎灶蚤贼蚤藻泽 蚤灶 糟燥灶贼蚤灶怎蚤灶早 酝燥燥则藻 鸳 泽 蕴葬憎 咱 允暂援 匝怎藻怎藻袁 圆园园猿袁 员 渊苑冤 院 圆远鄄猿猿援 咱远暂晕灾陨阅陨粤援 悦哉阅粤 悦 责则燥早则葬皂皂蚤灶早 早怎蚤凿藻 增远援缘咱砸暂援 杂葬灶贼葬 悦造葬则鄄 葬袁 悦粤袁 哉杂粤院 晕灾陨阅陨粤 悦燥则责燥则葬贼蚤燥灶袁 圆园员源援 咱苑暂 允粤砸粤砸宰耘匀 再袁 允粤砸砸粤匀 酝袁 月韵哉杂杂耘蕴匀粤酝 粤袁 藻贼 葬造援 郧孕哉鄄遭葬泽藻凿 责藻则泽燥灶葬造 泽怎责藻则糟燥皂责怎贼蚤灶早咱 悦暂 辕 辕 圆园员猿 陨耘耘耘 允燥则鄄 凿葬灶 悦燥灶枣藻则藻灶糟藻 燥灶 粤责责造蚤藻凿 耘造藻糟贼则蚤糟葬造 耘灶早蚤灶藻藻则蚤灶早 葬灶凿 悦燥皂鄄 责怎贼蚤灶早 栽藻糟澡灶燥造燥早蚤藻泽援 粤皂皂葬灶袁 圆园员猿院 员鄄缘援 咱愿暂运粤孕粤杂陨 哉 允袁 砸陨载晕耘砸 杂袁 阅粤蕴蕴再 宰 允袁 藻贼 葬造援 孕则燥早则葬皂皂葬鄄 遭造藻 泽贼则藻葬皂 责则燥糟藻泽泽燥则泽咱 允暂援 悦燥皂责怎贼藻则袁 圆园园猿袁 猿远渊愿冤 院 缘源鄄远圆援 咱怨暂 月哉悦运 陨袁 云韵蕴耘再 栽袁 匀韵砸晕 阅袁 藻贼 葬造援 月则燥燥噪 枣燥则 郧孕哉泽院 泽贼则藻葬皂 糟燥皂责怎贼蚤灶早 燥灶 早则葬责澡蚤糟泽 澡葬则凿憎葬则藻咱 允暂援 粤悦酝 栽则葬灶泽葬糟鄄 贼蚤燥灶泽 燥灶 郧则葬责澡蚤糟泽袁 圆园园源袁 圆猿渊猿冤 院 苑苑苑鄄苑愿远援 咱员园暂酝蚤糟则燥泽燥枣贼援 悦垣垣 葬糟糟藻造藻则葬贼藻凿 皂葬泽泽蚤增藻 责葬则葬造造藻造蚤泽皂咱 在暂援 砸藻凿鄄 皂燥灶凿袁 宰粤袁 哉杂粤院 酝蚤糟则燥泽燥枣贼袁 圆园员猿援 咱员员暂 晕灾陨阅陨粤援 悦哉阅粤 悦 遭藻泽贼 责则葬糟贼蚤糟藻泽 早怎蚤凿藻 增藻则泽蚤燥灶 源援 员 咱 砸暂援 杂葬灶贼葬 悦造葬则葬袁 悦粤袁 哉杂粤院 晕灾陨阅陨粤 悦燥则责燥则葬贼蚤燥灶袁 圆园员圆援 咱员圆暂 晕灾陨阅陨粤援 郧孕哉鄄粤糟糟藻造藻则葬贼藻凿 蕴蚤遭则葬则蚤藻泽 咱 韵蕴 辕 耘月暂援 咱 圆园员缘鄄园员鄄 园缘暂援 澡贼贼责泽院辕 辕 凿藻增藻造燥责藻则援灶增蚤凿蚤葬援糟燥皂 辕 早责怎鄄葬糟糟藻造藻则葬贼藻凿鄄造蚤遭则葬则蚤藻泽援 咱 员猿暂 允陨粤 再袁 杂匀耘蕴匀粤酝耘砸 耘袁 阅韵晕粤匀哉耘 允袁 藻贼 葬造援 悦葬枣枣藻院 糟燥灶鄄 增燥造怎贼蚤燥灶葬造 葬则糟澡蚤贼藻糟贼怎则藻 枣燥则 枣葬泽贼 枣藻葬贼怎则藻 藻皂遭藻凿凿蚤灶早 咱 悦 暂 辕 辕 孕则燥糟藻藻凿蚤灶早泽 燥枣 贼澡藻 粤悦酝 陨灶贼藻则灶葬贼蚤燥灶葬造 悦燥灶枣藻则藻灶糟藻 燥灶 酝怎造贼蚤鄄 皂藻凿蚤葬袁 咱 泽援造援暂 袁 圆园员源院 远苑缘鄄远苑愿援 咱员源暂郧粤杂栽耘砸 月袁 匀韵宰耘杂 蕴袁 运粤耘蕴陨 阅 砸袁等援 韵责藻灶悦蕴 异构计 算咱酝暂援 北京院 清华大学出版社袁 圆园员圆院 员园鄄猿缘援 咱员缘暂 运陨砸运 阅 月袁 匀宰哉 宰 宰援 孕则燥早则葬皂皂蚤灶早 皂葬泽泽蚤增藻造赠 责葬则葬造造藻造 责则燥糟藻泽泽燥则泽院 葬 匀葬灶凿泽鄄燥灶 葬责责则燥葬糟澡咱 酝暂援 月藻蚤躁蚤灶早院 栽泽蚤灶早澡怎葬 哉灶蚤增藻则泽蚤贼赠 孕则藻泽泽袁 圆园员园院 圆园缘鄄圆圆园援 咱员远暂酝哉晕杂匀陨 粤袁 郧粤杂栽耘砸 月袁 酝粤栽栽杂韵晕 栽 郧袁 藻贼 葬造援 韵责藻灶悦蕴 孕则燥早则葬皂皂蚤灶早 郧怎蚤凿藻咱酝暂援 月燥泽贼燥灶院 粤凿凿蚤泽燥灶赃宰藻泽造藻赠 孕则燥枣藻泽鄄 泽蚤燥灶葬造袁 圆园员员院 远猿鄄远愿援 咱员苑暂 粤酝阅 上海研发中心援 跨平台的多核与从核编程讲 义要要要韵责藻灶悦蕴 的方式咱酝暂援 上海院 粤酝阅袁 圆园员园院 员鄄员缘源援 咱 员愿暂云粤砸月耘砸 砸援 高性能 悦哉阅粤 应用设计与开发咱酝暂援 北京院 机械工业出版社袁 圆园员猿院 员鄄源怨援 咱员怨暂 在耘陨蕴耘砸 酝袁 云耘砸郧哉杂 砸援 灾蚤泽怎葬造蚤扎蚤灶早 葬灶凿 怎灶凿藻则泽贼葬灶凿蚤灶早 糟燥灶增燥造怎贼蚤燥灶葬造 灶藻贼憎燥则噪泽咱 悦暂 辕 辕 孕则燥糟藻藻凿蚤灶早泽 燥枣 贼澡藻 员猿贼澡 耘怎鄄 则燥责藻葬灶 悦燥灶枣藻则藻灶糟藻 燥灶 悦燥皂责怎贼藻则 灾蚤泽蚤燥灶援 在怎则蚤糟澡袁 杂憎蚤贼扎藻则鄄 造葬灶凿袁 圆园员源院 愿员愿鄄愿猿猿援 咱 圆园暂匀陨晕栽韵晕 郧袁 韵杂陨晕阅耘砸韵 杂袁 宰耘蕴蕴陨晕郧 酝袁 藻贼 葬造援 哉灶泽怎责藻则鄄 增蚤泽藻凿 凿蚤泽糟燥增藻则赠 燥枣 灶燥灶造蚤灶藻葬则 泽贼则怎糟贼怎则藻 怎泽蚤灶早 糟燥灶贼则葬泽贼蚤增藻 遭葬糟噪责则燥责葬早葬贼蚤燥灶咱 允暂援 晕葬贼怎则藻袁 圆园园远袁 猿园渊源冤 院 苑圆缘鄄苑猿员援 咱圆员暂运砸陨在匀耘灾杂运再 粤袁 杂哉栽杂运耘灾耘砸 陨袁 匀陨晕栽韵晕 郧援 陨皂葬早藻灶藻贼 糟造葬泽泽蚤枣蚤糟葬贼蚤燥灶 憎蚤贼澡 凿藻藻责 糟燥灶增燥造怎贼蚤燥灶葬造 灶藻怎则葬造 灶藻贼憎燥则噪泽 咱悦暂 辕 辕 粤凿增葬灶糟藻泽 蚤灶 晕藻怎则葬造 陨灶枣燥则皂葬贼蚤燥灶 孕则燥糟藻泽泽蚤灶早 杂赠泽贼藻皂泽 圆缘援 砸藻灶燥袁 晕藻增葬凿葬袁 哉杂粤袁 圆园员圆院 员员园远鄄员员员源援 咱圆圆暂 悦韵粤栽耘杂 粤袁 匀哉灾粤蕴 月袁 宰粤晕郧 栽袁 藻贼 葬造援 阅藻藻责 造藻葬则灶蚤灶早 憎蚤贼澡 悦韵栽杂 匀孕悦 泽赠泽贼藻皂泽咱悦暂 辕 辕 孕则燥糟藻藻凿蚤灶早泽 燥枣 贼澡藻 猿园贼澡 陨灶鄄 贼藻则灶葬贼蚤燥灶葬造 悦燥灶枣藻则藻灶糟藻 燥灶 酝葬糟澡蚤灶藻 蕴藻葬则灶蚤灶早援 粤贼造葬灶贼葬袁 哉杂粤袁 圆园员猿院 员猿猿苑鄄员猿源缘援 咱圆猿暂在匀韵哉 再袁 栽粤晕 再援 郧孕哉鄄遭葬泽藻凿 责葬则葬造造藻造 责葬则贼蚤糟造藻 泽憎葬则皂 燥责贼蚤鄄 皂蚤扎葬贼蚤燥灶咱 悦 暂 辕 辕 陨耘耘耘 悦燥灶早则藻泽泽 燥灶 耘增燥造怎贼蚤燥灶葬则赠 悦燥皂责怎贼葬鄄 贼蚤燥灶援 栽则燥灶凿澡藻蚤皂袁 晕燥则憎葬赠袁 圆园园怨院 员源怨猿鄄员缘园园援 咱圆源暂 在匀韵哉 再袁 栽粤晕 再援 孕葬则贼蚤糟造藻 泽憎葬则皂 燥责贼蚤皂蚤扎葬贼蚤燥灶 憎蚤贼澡 贼则蚤早鄄 早藻则藻凿 皂怎贼葬贼蚤燥灶 葬灶凿 蚤贼泽 蚤皂责造藻皂藻灶贼葬贼蚤燥灶 遭葬泽藻凿 燥灶 郧孕哉 咱悦暂 辕 辕 郧耘悦悦韵忆员园院 孕则燥糟藻藻凿蚤灶早泽 燥枣 贼澡藻 员圆贼澡 粤灶灶怎葬造 悦燥灶鄄 枣藻则藻灶糟藻 燥灶 郧藻灶藻贼蚤糟 葬灶凿 耘增燥造怎贼蚤燥灶葬则赠 悦燥皂责怎贼葬贼蚤燥灶援 孕燥则贼鄄 造葬灶凿袁 韵则藻早燥灶袁 哉杂粤袁 圆园员园院 员鄄愿援 咱 圆缘暂在匀韵哉 再袁 栽粤晕 再援 郧孕哉鄄遭葬泽藻凿 责葬则葬造造藻造 皂怎造贼蚤鄄燥遭躁藻糟贼蚤增藻 责葬则鄄 贼蚤糟造藻 泽憎葬则皂 燥责贼蚤皂蚤扎葬贼蚤燥灶咱 允暂援 陨灶贼藻则灶葬贼蚤燥灶葬造 允燥怎则灶葬造 燥枣 粤则贼蚤枣蚤鄄 糟蚤葬造 陨灶贼藻造造蚤早藻灶糟藻袁 圆园员员袁 苑渊粤员员冤 院 员圆缘鄄员源员援 咱圆远暂 阅陨晕郧 运袁 栽粤晕 再援 粤 郧孕哉鄄遭葬泽藻凿 责葬则葬造造藻造 枣蚤则藻憎燥则噪泽 葬造早燥鄄 则蚤贼澡皂 枣燥则 燥责贼蚤皂蚤扎葬贼蚤燥灶 咱 悦 暂 辕 辕 郧耘悦悦韵忆 员猿院 孕则燥糟藻藻凿蚤灶早泽 燥枣 贼澡藻 云蚤枣贼藻藻灶贼澡 粤灶灶怎葬造 悦燥灶枣藻则藻灶糟藻 燥灶 郧藻灶藻贼蚤糟 葬灶凿 耘增燥造怎贼蚤燥灶鄄 葬则赠 悦燥皂责怎贼葬贼蚤燥灶 悦燥灶枣藻则藻灶糟藻援 粤皂泽贼藻则凿葬皂袁 贼澡藻 晕藻贼澡藻则造葬灶凿泽袁 圆园员猿院 怨鄄员远援 咱圆苑暂 栽粤晕 再袁 在匀哉 再援 云蚤则藻憎燥则噪泽 葬造早燥则蚤贼澡皂 枣燥则 燥责贼蚤皂蚤扎葬贼蚤燥灶 咱 悦 暂 辕 辕 云蚤则泽贼 陨灶贼藻则灶葬贼蚤燥灶葬造 悦燥灶枣藻则藻灶糟藻 燥枣 杂憎葬则皂 陨灶贼藻造造蚤鄄 早藻灶糟藻援 月藻蚤躁蚤灶早袁 悦澡蚤灶葬袁 圆园员园院 猿缘缘鄄猿远源援 咱 圆愿暂 砸再酝哉栽 月袁 运宰韵蕴耘运 月援 郧孕哉鄄泽怎责责燥则贼藻凿 燥遭躁藻糟贼 贼则葬糟噪蚤灶早 怎泽蚤灶早 葬凿葬责贼蚤增藻 葬责责藻葬则葬灶糟藻 皂燥凿藻造泽 葬灶凿 责葬则贼蚤糟造藻 泽憎葬则皂 燥责贼蚤鄄 皂蚤扎葬贼蚤燥灶咱 悦暂 辕 辕 陨灶贼藻则灶葬贼蚤燥灶葬造 悦燥灶枣藻则藻灶糟藻 燥灶 悦燥皂责怎贼藻则 灾蚤鄄 窑员园窑 智 能 系 统 学 报摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇摇 第 员园 卷