




已阅读5页,还剩56页未读, 继续免费阅读
(电子科学与技术专业论文)基于gpu的硬件加速方法在粒子模拟中的应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
a b s t r a c t a bs t r a c t w i t ht h er a p i dd e v e l o p m e n to fc o m p u t e rp e r f o r m a n c e ,p e o p l eh o p et os i m u l a t e t h ec h a r a c t e r i s t i c so fp l a s m am o r ea c c u r a t e l y , s ot h i st h ew h o l et h r e e - d i m e n s i o n a l r e l a t i v i s t i cp a r t i c l es i m u l a t i o nm o d e li sg r a d u a l l yr a i s e d , w i t ht h ei n t r o d u c t i o no ft h e m a c r op a r t i c l e su pt o10 6 10 1 0 ,w h i c hm a k e st h es i m u l a t i v ec o n s u m p t i o no fc o m p u t e r r e s o u r c e so ft h ep i c ( i n c l u d i n gt h em e m o r ya n dc o m p u t i n gt i m e ) i n c r e a s ei no r d e ro f m a g n i t u d e i no r d e rt os o l v et h eh u g ec o m p u t a t i o n a lb u r d e n , i t ss o 啊t a lt od e v e l o pt h e c o r r e s p o n d i n gp a r a l l e lp i cs i m u l a t i v ea l g o r i t h m m a n ym a t u r em e t h o d so ft h e p a r a l l e lp i cs i m u l a t i v ea l g o r i t h m sa r eb a s e do nt h et r a d i t i o n a lc e n t r a lp r o c e s s i n gu n i t ( c p u ) ,b u tt h el i m i t e dr e s o u r c e so fc p u b e c o m et h eb o t t l e n e c k o v e rt h ep a s td e c a d e , an e wm a s s i v ep a r a l l e lp r o c e s s o r g p u ( g r a p h i cp r o c e s s i n gu n i t ,g r a p h i c sp r o c e s s o o b e g a nt ob ea p p l i e dt os c i e n t i f i cc o m p u t i n g t h ef i r s tc h a p t e ro ft h et h e s i sd e s c r i b e st h ep r o f i l ea n dt h ed e v e l o p m e n to ft h e s i m u l a t i o no fp l a s m ap a r t i c u l a ra n dt h ep r o b l e m st h a tf a c e di nc a l c u l a t i o n t h e d e v e l o p i n gc o u r s eo ft h eg p ua n di t sp r o g r e s s i n gs i t u a t i o nt h a ta p p l i e di np a r a l l e l c o m p u t i n g t h es e c o n dc h a p t e ri n t r o d u c e sc u d au n i f i e dc o m p u t i n gf r a m e w o r k ,i nw h i c ht h e g p ui sc o n s i d e r e da sah a r d w a r ea n ds o f t w a r es y s t e m so fd a t ap a r a l l e lc o m p u t i n g d e v i c e a n di nt h i sp a r t ,t h ed e t a i l e dd e s c r i p t i o no ft h ec o a r s e g r a i n e da n df i n e - g r a i n e d m e t h o d su s e dw h e nf a c i n gt h ec o m p u t i n gt a s ki nt h ep r o c e s so fp r o b l e ma n a l y s i si s g i v e n , a n da l s ot h em a p p i n gm e t h o da n ds c h e d u l e ri m p l e m e n t a t i o ni n t h eg p u h a r d w a r eo ft h el a r g e s c a l ep a r a l l e lp r o g r a m m ew i t h i nt h ec u d am o d e l t h et h i r dc h a p t e ri n t r o d u c e dt h es i m u l a t i v em e t h o d so ft h ep l a s m ap a r t i c u l a r , u s i n gt h em o v e m e n tt r a c ko ft h es i m u l a t i v ea n n u l a re l e c t r o nb e a mi nt h ec y l i n d r i c a l s y s t e ma sa ne x a m p l e t h et h e o r e t i c a la n a l y s i si n c l u d e s :t h es o l u t i o no fe l e c t r o n i c m o t i o ne q u a t i o n ,t h es o l u t i o no ft h ec h a r g es o u r c ea n dt h es o l u t i o no ft h et h r e ep a r t so f t h ep o i s s o ne q u a t i o n a st h ee l e c t r o nb e a mh a st h i sr i n g l i k ef e a t u r ea n dt h ea x i a l s y m m e t r yo ft h ec y l i n d r i c a ls y s t e m ,t h ec y l i n d r i c a lc o o r d i n a t e si sa p p l i e di nt h e o r e t i c a l i i a b s t r a c t a n a l y s i sa n dn u m e r i c a ls i m u l a t i o n t h ef o u r t hc h a p t e rc o m b i n e st h ei n t r o d u c t i o no ft h es e c o n da n dn l i r dc h a p t e r s , a n a l y z e dt h ef e a s i b i l i t yo ft h ep i cs i m u l a t i o ni ng p u ,b r o u g h tf o r w a r dt h eo v e r a l l i m p l e m e n t a t i o np r o c e s s t h ew h o l ec a l c u l a t i o ni n c l u d e s :t h es o l u t i o no fm o v e m e n to f c h a r g e dp a r t i c l e s ,t h eu p d a t e so fe l e c t r o np o t e n t i a lg r i da n dt h es o l u t i o no fc h a r g e d e n s i t y i no r d e rt oa v o i dt h ec o n f l i c t si nm e m o r yw h i l ei n p u t t i n g , t h ea l g o r i t h mm a y c h a n g e dt oa t o m i cf u n c t i o nw h e nc a l c u l a t i n gt h ee l e c t r o nd e n s i t y p r o v i d i n g t h e p a r a l l e lv e r s i o no fd a t aa n dt h ei m p l e m e n t a t i o nf o r mo fc u d a ,a n da l s o 谢mt h e c o m p a r i s o no ft h es e r i a lp r o g r a m m eo fc p u ,s oah i g h e rp r e c i s i o na n da10t i m e s s p e e d - u pr a t i oi sg o t k e y w o r d :p i c ,g p u ,p a r a l l e lc o m p u t i n g , c u d a i i i 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使订过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 签名: 臣磁 】:九膨f i 多月羁i 论文使户h 授权 本学位沦文作者完全了解i 乜子科技人学有关保留、他j j 位论艾 的规定,确木义保留夕i :向圈家有关部门或机构送父论文的复刚,f 7 f :和磁 微,允y f :沦义被奔阅和f te - 。彳丈人授权电子科技大学州以将学位论文 的全部或部分内容编入有关数据库进行榆索,可以采j tj 影印、编i = :f j 或 扫描等复制于段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签私:丝导师签瓠: ij :加卜,:卜箩jj 孓 第一章绪论 1 1 粒子模拟概述 第一章绪论 等离子体粒子模拟【l 】是指通过跟踪大量带电粒子在外加电磁场以及自洽电场 作用下的运动来模拟等离子体的动力学特性。初期等离子体模拟一般采用动力学 模拟或流体力学模拟方法。自2 0 世纪6 0 年侧2 - 3 1 ,b u n e m a n ,e l d r i d g e 和d a w s o n 等人先后创立了等离子体的粒子模拟方法( p a r t i c l e i n c e l l ,简称p i c ) 。等离子体 粒子模拟方法是一种更为基本,更容易在计算机上实现的数值模拟方法。近几十 年来计算机硬件的飞速发展,对等离子体粒子模拟方法的研究和应用领域产生了 巨大影响。经过多年的研究和发展,离子体粒子模拟方法已经被广泛应用在受控 热核聚变、自由电子极光、空间物理和低温等离子体等问题的研究之中。 最初的p i c 方法应用一维模型,模拟了1 0 2 1 0 3 个宏粒子,所耗计算机内存 约小于1 0 0 k b 。不过随着高速高性能计算机的飞速发展,人们渴望能够更加精确 的模拟等离子体的特性,为此全三维相对论的粒子模拟逐渐被提出来,引入的宏 粒子数目达到1 0 6 1 0 1 0 个【4 】,这使得p i c 模拟消耗的计算机资源( 包括计算机内 存以及计算时间) 呈数量级的增长,为了解决庞大的计算负担,开发相应的并行 p i c 模拟算法非常重要。 至今为止,并行p i c 模拟的很多成熟算法都基于传统体系结构的中央处理器 ( c p u ) ,单台中央处理器的计算能力即使不断增加,往往也是无能为力,而9 0 年 代发展起来的图形处理器( g p u ) 的计算能力现已远高于c p u 一到两个量级【5 叫,并 且描述g p u 速度发展的“黄氏定律 ( 以n v i d i a 公司总裁黄仁勋命名) 也比“摩 尔定律 要快,具有性价比和计算密度高、低能耗等优势,因此如何在p i c 模拟 中利用g p u 的强大计算能力已成为一个重要的研究课题。 1 2 图形处理器通用计算的发展概述 在过去的十年中,计算机处理器的设计因为受到功率和计算性能的限制已经 开始向多核方向发展。传统计算机的处理器一般包括c p u ( c e n t r a lp r o c e s s i n gu n i t , 中央处理机) 和g p u ( g r a p h i c a lp r o c e s s i n gu n i t ,图形处理单元) 。 电子科技大学硕士学位论文 c p u 的设计以运行单线程程序为目的,为了把处理器的功耗控制在合理的范 围内( 集成电路功率消耗物理限制) 【”,c p u 中的晶体管绝大多数都被用于制造数 据缓存( c a c h e ) 或流控制( f l o we o n t 0 1 ) 。与c p u 相比g p u 在设计时有效的利用晶 体管资源。g p u 中的晶体管大多数被用来制造数据处理中的算术逻辑单元( a l u ) 。 c p u 程序中的指令级并行太少,而单线程处理器的指令级并行潜力已经被挖掘殆 尽,而g p u 却是为了解决计算密集型( 计算密度为数学运算与存储器操作的比 率) 、高度并行化的问题而设计。g p u 处理所有数据元素都执行相同操作的程序, 对精密的流控制能力不高。这类问题具有较高的计算密度许多数据元素同时运 行,可以通过计算来隐藏存储器访问延时,不必使用较太的数据缓存。 g p u 比较适合解决规则数据结构、可预测存取模式的问题。例如:有限元、 油气勘探、医疗成像、基因分析、天文计算、金融分析、分子动力学仿真、流体 力学模拟、音视频解码、地理信息系统等领域。 c o n t r o l i - r ! i i i _ l o c p ug p u 图1 - i c p u 与g p u 芯片架构对比 由于硬件架构的设计,使g p u 在理论浮点计算能力和理论存储带宽方面的性 能也要比c p u 优越。下面是2 0 0 3 2 0 0 8 年c p u 和g p u 理论峰值单精度浮点计算 能力和理论存储器带宽的对比。 山a 暑| 第一章绪论 j * nj 吼砸d u nm a r 澌m 蹿 2 32 0 0 42 52 0 0 62 7 线 图1 - 2c p u 与g p u 单精度浮点计算能力对比 1 2 巷 啪 8 0 0 由 d 黼 g 啪 6 0 4 0 柏 e g u 1 缸 7 7 f :7 1 , 一7 n o r t b 。o d e 妄 2 0 0 3 2 0 0 42 0 0 5 2 0 52 0 0 7 图1 3c p u 与g p u 存储器带宽发展对比 现代三维图形处理器( g p u ) 已经从基于固定功能单元流水线( f i x e df u n c t i o n p i p e l i n e ) 的体系结构逐步发展成基于可编程的并行处理单元的体系结构,并且它 的计算能力已经超过了目前的多核心c p u 。传统的图形流水线( g r a p h i c sp i p e l i n e ) 是由多个独立的可编程的阶段所构成,这些可编程阶段有: 1 顶点处理器( v e r t e xp r o c e s s o r s ) ,用于执行顶点着色程序( v e r t e xs h a d 砷 2 像素着色器- ( p i x e lf r a g m e n tp r o c e s s o r s ) ,用于执行片段着色程序( f r a g m e n t s h a d e r ) 3 -o_lko鼍i 电子科技大学硕士学位论文 表1 1 可支持c u d a 编程的g p u 的发展简史 年份型号描述 全球第一颗g p u 8 1 ,由两个模块组成,一个是由进行3 2 位浮点 g c f o r c e - 2 5 6数运算的固定功能单元组成的顶点转换和顶点光照处理器;另 1 9 9 9 年8 月 一个是由进行定点数运算的固定功能单元组成像素着色流水线 ( 或片元着色流水线) 。 g e f o r c e3 第一款拥有可编程项点着色器的g p u ,由可编程的顶点处理器 2 0 0 1 年 和不可编程的片元处理器组成。 2 0 0 2 年g e f o r c ef x第一款使用3 2 位浮点流水线作为可编程的顶点处理器的g p u g e f o r c e8 系第一款基于t e s h 架构的g p u ,它率先采用了统一渲染架构, 2 0 0 6 年列g p u以通用渲染单元替代了原来分离的顶点着色单元和像素着色单 元,能够支持d i r e c r t x1 0 0 。n v i d i a 的g p u 开始支持c u d a 。 t c s l a 2 架构的g p u ,在t e s l a 架构的基础上改进科对存储器的 2 0 0 8 年 g t 2 0 0 访问,加入了对共享存储器的原子操作( 6 4 b i t 整形只支持全局存 储器) 和双精度浮点运算的支持 发布f e r m i 架提升双精度运算能力、支持e c c 纠错、真正的缓存结构、更 2 0 0 9 年 构大的共享内存、更快的转换速度、更快的原子操作 近年来g p u 并行计算技术今年来的发展以及在国内外的应用如下: 2 0 0 3 年,斯坦福大学的i a nb u c k 等人开发了基于c g 的b r o o k 源到源【9 】编译 器,简化了g p g p u 的开发。 2 0 0 5 年,a t i 推出了s t r e a m 通用计算开发包,s t r e a m 通用计算开发包仍以b r o o k 为基础【l o j 。 2 0 0 7 年,n v i d i a 推出了将g p u 作为数据并行计算设备的软硬件体系的 c u d a ( c o m p u t e ru n i f i e dd e v i c ea r c h i t e c t u r e ,统一计算设备结构) 编程模型1 1 】。 2 0 0 7 年,n v i d i a 发布了c u b a l s 基本线性函数库【1 1 1 以及特征值分解范例【1 2 】。 c u b l a s 提供了高效的线性代数计算子程序。 2 0 0 7 年,s h e e tl a h a b a r , p i n g a g r a w a l 等在c u d a 上实现了一个神经网络【1 3 】。 2 0 0 8 年,香港大学w e n b i nf a n g 等人在c u d a 上实现了k m e a n s 聚类算法【1 4 1 。 2 0 0 8 年,c h r i s t i a nl e s s i g 在c u d a 上实现了m r r r 算法【l5 1 。 4 第章绪论 1 3 本文的研究工作及贡献 1 3 i 本文的研究工作内容 本文的研究工作主要包括: 1 深入研究了c u d a 的软件模型以及硬件实现方法。 2 分析了g p u 并行计算架构与传统并行系统的区别与联系。 3 分析了静电模型的p i c 模拟方法在g p u 中并行实现所面临的问题,将整 体的模拟按照流程及数据相关性,分解为多个任务。将不适合g p u 计算 的部分进行改进使其可以并行的在g p u 上运行。 4 基于g p u 实现了并行的p i c 粒子模拟,并且以c p u 程序为参照,对精确 度和加速比进行了详尽的罗列和分析。 1 3 2 研究贡献 本文的研究贡献主要包括: 1 深入研究了p i c 模拟方法在g p u 上的并行性,实现了基于g p u 的静电 模型的p i c 模拟算法及代码。通过与c p u 端串行程序进行对比,在保证 精度的前提下取得了较高的加速比。 2 提出数据转换算法,将计算电荷密度过程中的双精度浮点数转换为6 4 位 整形数进行计算,从而解决了多个带电粒子在同一网格内时,并行求解 可能会引入的内存写入冲突问题。 1 4 本文内容安排 第一章绪论 简述了粒子模拟计算中所遇到的问题和g p u 并行计算的发展历史,说明了研 究的意义,对本文研究的主要内容做出了简述,总结了自己所做出的主要贡献, 最后介绍了本文的结果安排。 第二张c u d a 介绍 详细介绍了c u d a 的软硬件编程模型,并分析了g p u 的构架和c u d a 多线 程映射在g p u 上的具体执行方式。最后介绍了c u d a 程序编程及优化所需要注 意的事项。 5 电子科技大学硕士学位论文 第三张圆柱体重粒子轨迹的p i c 模拟 以分析多环形电子注在圆柱系统中的运动轨迹为例介绍了等离子体的模拟方 法。对电子运动方程的求解、电荷源的求解以及p o i s s o n 方程的求解三个部分进 行了详尽的理论分析。 第四章g p u 技术在p i c 模拟中的应用 粒子模拟的并行实现及优化,首先分析p i c 模拟的总体实现方法,然后对任 务进行划分,介绍了分步实现的方案,与c p u 程序计算结果进行了详细的对比。 第五章总结 全面的归纳了本文所作的工作,并指出了目前的工作成果和不足之处以及未 来的工作方向。 6 第二章c u d a 介绍 2 1 引言 第二章c u d a 介绍 2 0 0 7 年6 月,n v i d i a 推出了c u d a ( c o m p u t e u n i f i e dd e v i c ea r c h i t e c t u r e , 统一计算设备构架) 。c u d a 是一种将g p u 视作数据并行计算设备的软硬件体系。 c u d a 程序的设计不需要借助图形学的a p i ,而是采用了比较通用的c 语言 进行开发。由于采用的是c c + + 编译器为前端,以c c + + 语法为基础设计,因此 对熟悉c 系列语言的程序员来说,c u d a 的语法比较容易掌握,他们不必重新学 习其他其它语法,能够比较容易的从c p u 过渡到g p u 程序的设计。当然,程序 员人仍需要对g p u 架构和并行计算方面的知识有一定了解,才能开发出高性能的 c u d a 程序。同时,c u d a 采用了统一处理架构,降低了编程的难度,使得n v i d i a 相比a m d a t i 后来居上。相比a m d 的g p u ,n v i d i ag p u 引入了片内共享存 储器,提高了效率。 c u d a 的核心有三个关键特性:线程组层次结构、共享存储器和栅同步( b a r r i e r s y n c h r o n i z a t i o n ) 。这三个关键特性提供了线程并行实现的细粒度的数据并行,任 务并行实现的粗粒度的线程块间并行。同一个线程块中的线程可以通过共享内存 和栅同步实现通信,不同线程块之间的线程不能通信【l 争1 8 】。它们指导开发者将问 题分解为可独立处理的粗粒度问题,再细分为细粒度的片段,从而通过协作的方 法并行解决问题。下文将以电磁计算中最为常见的矩阵( 2 5 6 2 5 6 ) 与向量( 2 5 6 ) 相 乘的算法在c u d a 中实现为例,分析c u d a 计算的软件实现及硬件执行方法。 2 2c u d a 软件实现 2 2 1c u d ac 语言 c u d a 的a p i 由一系列软件组成。处于其核心地位的是c u d a c 语言,可以 由n v i d i a 的c u d a 编译器n v e c 编译。值得指出的是,c u d a c 不是c 语言,而 是由c 语言进行扩展而来的编程语言。c u d a 对c 的扩展主要包括以下四个方面: 1 函数类型限定符( f u n c t i o nt y p eq u a l i f i e r ) ,对函数进行标示,指定函数是在 7 电子科技大学硕士学位论文 宿主( c p u ) 上运行还是在设备( g p u ) 上运行,以及函数是可通过宿主还是可通过设 备调用。限定符有:d e v i c e 在设备上执行,仅可通过设备调用。g l o b a l 在 设备上执行,仅可通过宿主调用。在宿主上执行,仅可通过宿主调用host 。 2 变量类型限定符,对变量进行标示,指定变量存储在设备( g p u ) 上的存储 器位置以及生命周期。限定符有:d e v i c e 位于全局存储器空间,与应用程序 具有相同的生命周期,可以通过网格内所有线程访问,也可通过运行时库从宿主 访问。c o n s t a n t 位于常量存储器空间,与应用程序具有相同的生命周期,可以 通过网格内所有线程访问,也可通过运行时库从宿主访问。s h a r e d 位于线程 块的的共享存储器空间,与块具有相同的生命周期,仅可通过块内所有线程访问。 3 指令,通过设置网格和线程块,控制核函数的并行执行。对 g l o b a l函数的任何调用都必须制定该调用函数执行配置( e x e c u t i o n c o n f i g u r a t i o n ) 。可以通过函数名称和括号内参数列表之间插入 形式的表达式来制定。例如一个函数的声明如下: 百0 b a l v o i df u n ( i n t 母p a r a m e t e r ) ; 必须通过如下方法来调用此函数: f u n ( i n t 宰p a r a m e t e r ) ; 执行配置的参数将在函数参数之前被赋值,与函数参数一起通过共享存储器 同时传给设备。 4 为了区分不同的线程块和线程,加入了五个内建变量。g r i d d i m 包含网格 的维度,b l o c k l d x 包含网格内块的索引,b l o c k d i m 包含块的维度,t h r e a d l d x 包含 块内的线程索引,w a r p s i z e 此变量的类型为i n t ,包含以线程为单位的w a r p 块大 小。在c u d a 中不能获取任何内置变量的地址,不允许为任何内置变量赋值。 2 2 2c u d a 存储器结构 c u d a 规定的存储器模型如图2 - 1 所示。其中g p u 片内存储器有共享存储器 ( s h a r e dm e m o r y ) 和寄存器( r e 百s t r e g ) 。会被g p u 缓存的有常量存储器( c o n s t a n t m e m o r y ) 空间和纹理存储 ( t e x t u r em e m o r y ) ,可以加速对片外缓存的访问。位于 g p u 显存中的存储器有本地存储器( l o c a lm e m o r y ) 和全局存储器( g l o b a l m e m o r y ) 。 8 第二章c u d a 介绍 b l o c k ( 0 口】 黼驾删 警登i 登寥i 黼瀚攀黼啤 警i 挈i 图2 - 1 存储器层救机榭 在g p u 的存储器中只有纹理存储器、常量存储器和全局存储器即可以从g p u 访问也可以从c p u 访问。是实现g p u 和c p u 之闻数据通信的重要渠道。而这三 个存储器因为支持的操作方式不同使用方式也有所不同。 首先全局存储器,全局存储器没有被缓存,使用的是普通的显存,访问延时 很大,所以在使用的过程中一定要按照正确的访问模式来获得最大的内存带宽。 全局存储器即可和c p u 进行通信叉可以支持g p u 进行读写的唯一一类存储器, 所以在每次计算的过程中都必须访问全局存储器。在矩阵和向量相乘的计算时 在g p u 计算开始前首先应该将矩阵和向量信息从c p u 端拷贝到g p u 端,这时数 据信息全部存储在全局存储器之中。在c u d a 模型中g p u 的任意线程都可以对 全局存储器任意位置进行读写操作。 因为低带宽,大数据量的限制,全局存储器的访问延时会对整个程序有较大 的影响。由于架构设计方面的原因,只有访问满足合并访问要求时,硬件才能以 最少的事务量获取( 或存储) 数据,全局存储器才能交付晟高的存储器带宽。对 全局内存的合并访问需要以下两个条件。首先,设备能够在单个指令中将3 2 b i t , 电子科技大学硕士学位论文 6 4 b i t 或1 2 8 b i t 从全局内从读取到寄存器。其次,在执行单个数据读取或写入指令 期间,每个h a l f - w a r p 中同时访问全局内存地址的每个线程应该进行排列,一遍内 存访问可以合并到单个邻近的、对齐的内存访问中。 表2 - 1 合并访问条件 g 8 0g t 2 0 0 1 6 个3 2 b i t 对齐到6 4 b y t e1 6 个8 b i t 对齐到3 2 b y t e 1 6 个6 4 b i t 对齐到1 2 8 b y t e1 6 个1 6 b i t 对齐到6 4 b y t e 1 6 个1 2 8 b i t 对齐到1 2 8 b y t e 1 6 个3 2 b i t 对齐到1 2 8 b y t e 1 2 8 b i t 时存储空间为两个连续的1 2 8 b y t e1 6 个6 4 b i t 对齐到1 2 8 b y t e h a l f - w a r p 中第k 个线程访问第k 个数据h a l f - w a r p 中线程访问没有要求 有时为了满足对数据的合并访问,可能需要将g p u 和c p u 中的数据存储结 构进行改变。例如:在处理矩阵与向量相乘的计算中,为了满足存储器合并访问, 矩阵数据存储的数据结构为了计算简单c p u 中将二维矩阵按照行优先方式存储 为一个向量的结构,以便g p u 读取。 t h 0t h l t h 0t h l 图2 - 2 合并访问示意图 t h 0 t h l 5t h l 6 t h 3 1 隧嬲桫缈粥臻溯缨矽嬲呖露秽黟猢湖 x 蓬点,# 囊镊磊旋;:蛹羹;锄荔玩坟。勰筋亥蕴 m 0 t h l 5t h l 6 t h 3 1 图2 - 3 合并访问示意图 i o 第二章c u d a 介绍 其次是常量存储器和纹理存储器,g p u 访问时它们都是仅支持读操作的存储 器。它们利用了g p u 用于图形计算的专用单元实现。常量存储器和纹理存储器实 际存在于帧缓冲区d r a m 中,但由于它们的只读性质,所以可以在g p u 中进行 缓存,加快访问速度。读取时仅在高速缓存不命中时,才从设备中读取数据,如 果高速缓存命中则仅消耗读取相应高速缓存所需要的时间。这也意味着如果c p u 或者g p u 要更改常数存储器或者纹理存储器的值,缓存中的值在更新完成之前无 法使用。常数存储器空间较小( 只有6 4 1 0 ,支持随机访问。纹理存储器尺寸则大得 多,并且支持二维寻址( 传统的缓存只支持一维寻址) 。因为常量存储器和纹理存 储器只支持g p u 的读操作,所以在计算过程中,并非必须用到的存储器。 在计算过程中,常量存储器可以用来存储在计算时只读的内存数据,当 h a l f - w a r p 的所有线程读取同一地址,就会向h a l f - w a r p 内所有线程产生一次广播, 此时从常量存储器中读取数据速度与从寄存器读取一样快( 寄存器读取速度最 快) 。访问所消耗的时间随h a l f - w a r p 内读取不同地址的线程数目线性增减。建议 用整个w a r p 的所有线程读取同一地址,因为f e r m i 设备需要此操作来实现完全的 快速读取。c u d a 程序中,常量存储器常用来存储计算中所需要的只读的表或者 是存储及操作模式符合查表方式操作的数据,而使用插值或者滤波的纹理存储器 访问对大尺寸的二维或者三维图像或者采样序列进行高带宽的流式访问。 虽然纹理存储器的读取延迟要比常量存储器大的多,但是纹理存储器针对2 d 空间局部进行了优化,所以读取紧密相邻的纹理存储器地址的同一w a r p 的线程将 达到最佳性能。此外,它还为具有恒定延迟的流式拾取而设计,在实际应用中, 一次高速缓存命中会降低d r a m 宽带需求,但没有改变拾取延时。 对于每个线程来说,它们都有自己私有的本地存储器和寄存器。在数据存储 时优先使用的是寄存器,和c p u 寄存器拥有很高的带宽一样,访问寄存器不会给 每条指令带来额外的时钟周期,是所有存储器中最快的内存形式,仅可以通过线 程访问。在计算过程中每个线程块能够使用的寄存器数量是固定的。在g t 2 0 0 架 构中,每个线程块可以访问1 6 k 的寄存器文件,而每个多处理器可以运行一个线程 块,即每个多处理器可以访问1 6 k 寄存器文件,每个多处理器有8 个流处理器, 所以每个流处理器能够分配到2 k 的寄存器文件。当寄存器被消耗完时,数据将自 动被存储在本地存储器。检查p t x 汇编代码或在通过n v c c 在输出中查找本地存储 器的使用情况,命令如下:“- p t x a s o p t i o n s = - v 。也可以使用使用n v c e 选项, “- m a x r r e g c o u n t = v a l u e ”告诉编译器使用更多寄存器( 注意:可以指定的最大寄 存器数量为1 2 8 ) 。对每个线程来说,本地存储器也是私有的,但是本地存储器是 电子科技大学硕士学位论文 显存中的一个分区,访问速度可能比寄存器或共享内存慢1 5 0 倍,而且使用过多 本地存储器的情况下,程序也会意外终止。因此,编程时要尽量避免将数据放到 本地存储器中,这可以通过修改线程块块大小来增加每个线程拥有存储器的数量, 也可以把需要反复操作的数据放入共享存储器来替代寄存器等方法来解决。 最后是可以被同一线程块内所有线程读写的共享存储器,它具有与块的生命 期相同的生存期。因为位于芯片上,所以访问共享存储器的速度要比全局存储器 和本地存储器空间的速度快的多。实际上对于一个w a r p 块内的所有线程来说,只 要线程间不存在b a n kc o n f l i c t ,访问贡献存储器的速度就与访问寄存器一样快。共 享存储器是实现一个线程块内线程间通信的延迟最小的方法。在c u d a 核代码 中,共享存储器一般用于保存一个线程块中公用的变量( 例如计算中循环迭代计 数器的次数) 或者在计算中要反复操作的数据( 例如求2 5 6 个数的最小值,并用于 以后计算) 。一般而言,在k e r n e l 运行时,要先将数据从全局存储器写入共享存储 器:计算完成后要将共享存储器中的结果转存入全局存储器。共享存储器不能直 接和全局存储器进行数据通信,在实际操作中全局存储器的数据要先被读入寄存 器然后再存入共享存储器。在一个c u d a 程序中合理的使用共享存储器可以使 g p u 计算性能大幅度提升。 g 8 0 和g t 2 0 0 中每个多处理器拥有1 6 k b 的共享内存,f e r m i 架构中每个多 处理器的拥有的可用被缓存的片上内存,它们既可以被分配为4 8 k b 共享内存和 1 6 k bl 1 缓存也可以被分为1 6 k bs h a r dm e m o r y 和4 8 k bl 1 缓存。例如:在电磁 模拟方面的计算中需要将大量已知的数据存储在共享内存中,这样就可以配置 4 8 k 的共享内存来存储数据,这样就可以使计算速度达到3 倍以上。而在一些不 能提前知道计算所需内存读取地址的问题时,可以分配4 8 k 的l l 缓存,这样将 比直接从d r a m 中读取数据的速度要快的多。所以无论是对s h a r dm e m o r y 需求 高或不高的程序都能从中受益。 f e r m i 中的l 2 缓存容量达到了7 6 8 k b 可以提供读写操作也可以作为纹理来 使用,而且是所有s m 单元共享的,每一个s m 单元都能从中获得最新数据,实 现了g p u 内的高速数据共享。l 2 缓存对一些数据的存储地址不能提前知道的算 法特别适用。例如:稀疏矩阵乘法。原子内存操作是指能够让并发的线程正确的 对相同的共享的数据结构进行正确的读、写和修改操作。在并行程序的设计中云 子内存操作相当重要。由于在硬件中合并了更多的原子计算单元和l 2 缓存。使 得f e r m i 架构下的原子操作比g t 2 0 0 架构下的原子操作快多达2 0 倍。 1 2 第二章c u d a 介绍 。 “喘篙嚣嚣”l t k b l 1c h 1 _ l j 5 器譬 。t s k b t l c 气 卜11 一让矗萏;滴i d j 芒 电子科技大学硕士学位论文 地创建、调度和执行这些线程。在c p u 中,这些操作是重量级的,但是在c u d a 中,这些操作是轻量级的。c u d a 编程模型需要通过c p u 与g p u 相互协作共同 执行的编程模型。将c p u 视作主机用来执行串行逻辑和任务调度以及读取一些大 规模计算所需要的数据。把g p u 视作协处理器,用来执行属于密度高计算量大的 并行的计算部分。例如,在进行矩阵与向量乘法的计算中程序流程是,首先c p u 端生成矩阵与向量数据,然后通过c p u 于g p u 进行通信将数据信息拷贝到g p u 端的全局内存中,在g p u 端并行计算,将计算完成后的结果传送回c p u ,输出 运行结果,程序运行完成。 在c u d a 模型中,g p u 端执行的程序被称为k e n l e l 【蛉”】,每个k e r n e l 对应一 个网格( 鲥d ) ,一个网格包含多个线程块( b l o c k ) ,每个线程块包含若干个线程。g 8 0 和g t 2 0 0 架构中每个线程块最多可以有5 1 2 个线程,f e r m i 架构中每个线程块最 多可以有1 5 3 6 个线程。在g 8 0 架构中每个网格最多可以有1 2 2 8 8 个线程块,g t 2 0 0 中每个网格最多可以有3 0 7 2 0 个线程块,f e r m i 架构下每个网格最多可以有2 4 5 7 6 个线程块。并行计算编程模型需要并行线程之间的同步,通信,数据共享,以及 协同处理一个结果。为了能够管理大量的需要协同的并行线程,引入了c t a ( c o o p e r a t i v et h r e a da r r a y ) 这个概念。在c u d a 术语中,c t a 被称为线程块( t h r e a d b l o c k ) 。 在c u d a 程序执行过程中,不同线程块之间的线程不能进行通信,同一线程 块之间的线程可以通过共享存储器和栅同步( b a r r i e rs y n c h r o n i z a t i o n ) 实现块内线程 通信。所以在c u d a 程序设计中,程序员必须将计算任务划分为若干不相干的 粗粒度问题用线程块来处理,再将粗粒度的问题划分为细粒度的问题用线程来处 理。这样粗粒度并行和细粒度并行就分别存在于同一个网格内的线程块和同一线 程块的线程之中。 在计算矩阵( 2 5 6 x 2 5 6 ) 与向量相乘的计算式,可以通过b l o c k d i m 来设定网格 块的维度,假如我们让一个线程块处理两行的数据计算就设置b l o c k d i m 为( 5 1 2 , 1 ,1 ) ,这时整个乘法就可以用1 2 8 个线程块来完成,鲥d d 硫设置为( 1 2 8 ,1 ,1 ) 。 也可以每个线程块2 5 6 个线程,用2 5 6 个线程块来完成2 5 6 行元素的计算。在程 序执行过程中这2 5 6 个线程块能够独立的以任意顺序执行( 能够串行加并行或者 完全并行执行) 。在同一线程块的数据计算过程中,会要对线程块内各个线程计算 结果进行加总,所以可以通过共享存储器来进行线程块内通信,完成求和运算。 c u d a 采用这种独立的执行方式就可以为任意数量的处理器安排线程块,从而使 开发出来的程序具有可伸缩性,和硬件的可向后扩展性。一个g p u 上的程序不需 1 4 第二章c u d a 介绍 要任何重新修改就可以在任何支持c u d a 的g p u 上运行。一个网格内的线程块 数量通常根据所处理数据大小而设定,而不是由系统中硬件处理器数量所决定。 m h 甘d ( 晦1 1 m 目d ( 0 :o 一 矗 ,; o t l - e 州t o , q )m 血d ( 1 1 幽2 - 5c u d a 线程结构 g 8 0 和g t 2 0 0 架构,g p u 一次只能执行一个k e r n e l 函数即只能计算一个网 格,即使在执
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 鱼儿不动了课件
- 魅力女性运动课件
- 济南市2024-2025学年八年级下学期语文月考模拟试卷
- 高速铁路课程课件
- 电解池电镀课件
- 高速电路安全知识培训课件
- 高速收费员安全培训课件
- 电芯知识培训心得
- 10kV及以下配网工程施工组织设计(方案)
- 电脑知识培训主题课件
- 2025至2030中国航空客运销售代理行业市场运行发展分析及前景趋势与投资报告
- 浙江杭州市2024-2025学年高一下学期6月期末考试英语试题及答案
- 愈见倾听师考试题及答案
- 2025至2030年中国液态食品包装机械行业市场供需态势及发展前景研判报告
- 首诊负责制试题及答案
- 渐进片试题及答案
- 2024浙江遂昌农商银行新员工招聘笔试历年典型考题及考点剖析附带答案详解
- 学校篮球共建协议书
- 文件销毁保密协议书
- 高考英语必背688个高频词汇清单
- 2025年助理医师资格证考试之口腔助理医师通关题库(附带答案)
评论
0/150
提交评论