GPU通用計算(GPGPU)——將圖形處理器用于高性能計算領域
時間:2008-12-09 11:01:00
來源:UltraLAB圖形工作站方案網站
人氣:14269
作者:admin
1.1 研究背景和意義
隨著當前計算機性能的不斷提高,應用范圍越來越廣泛,不同的計算任務和計算需求都在快速增長,這就決定了處理器朝著通用化和專用化兩個方向飛速發(fā)展。一方面,以CPU為代表的通用處理器是現(xiàn)代計算機的核心部件,經過多次器件換代的變遷,不僅集成度大大提高,性能和功能也大為改善,除了負責解釋、執(zhí)行指令和完成各種算術邏輯運算外,還控制并協(xié)調計算機各部分的執(zhí)行。另一方面,處理器在特定領域應用的專用化程度也越來越高,例如在視頻、圖像和音頻處理等領域,都出現(xiàn)了相應的專用處理器(如VPU、GPU、APU等)。在針對特定應用方面與通用處理器相比,專用處理器能夠更加高效的滿足特定的計算任務和需求。
近年來,計算機圖形處理器(GPU,Graphics Processing Unit)正在以大大超過摩爾定律的速度高速發(fā)展,極大的提高了計算機圖形處理的速度和質量,不但促進了圖像處理、虛擬現(xiàn)實、計算機仿真等相關應用領域的快速發(fā)展,同時也為人們利用GPU進行圖形處理以外的通用計算提供了良好的運行平臺[1]。
GPU應用領域的拓寬與其硬件發(fā)展有著極大關系。GPU自1999年首先由NVIDIA公司提出后,就其發(fā)展的速度而言,是CPU更新速度的三倍。從 1993年開始,GPU的性能以每年2.8倍的速度增長。目前,圖形處理器已經經歷了五代發(fā)展,平均每半年就有新一代的GPU問世。
2004年,NVIDIA GeForce 6800 Ultra處理器峰值速度可達40GFLOPS,對比Intel Pentium 4 3.0GHz,采用SSE2指令集也只能達到6 GFLOPS[3]。NVIDIA最新發(fā)布的GeForce 8800圖形處理器集成了6.8億個晶體管,擁有128個流處理單元,其峰值運算能力超過340GFLOPS,而Intel最新的Pentium4 Core 2 Extreme X6800只有46.88GFLOPS。
圖 1 GPU與CPU的發(fā)展與性能比較
圖形處理器技術的迅速發(fā)展帶來的并不只是速度的提高,還產生了很多全新的圖形硬件技術,使GPU具有流處理、高密集并行運算、可編程流水線等特性,從而極大的拓展了GPU的處理能力和應用范圍[2]。
正是由于GPU具有高效的并行性和靈活的可編程性等特點,越來越多的研究人員和商業(yè)組織開始利用GPU完成一些非圖形繪制方面的計算,并開創(chuàng)了一個新的研究領域:基于GPU的通用計算(GPGPU,General-Purpose computation on GPU),其主要研究內容是如何利用GPU在圖形處理之外的其他領域進行更為廣泛的科學計算[4]。目前已成功應用于代數(shù)計算、流體模擬、數(shù)據(jù)庫應用、頻譜分析等非圖形應用領域[5],甚至包括智能信息處理系統(tǒng)和數(shù)據(jù)挖掘工具等商業(yè)化應用。同時,也產生了一些針對GPU開發(fā)的通用計算工具包,能夠基于 GPU平臺對FFT、BLAS、排序及線性方程組求解等科學計算進行優(yōu)化實現(xiàn)。
基于GPU的通用計算已成為近幾年人們關注的一個研究熱點。將GPU用于通用計算的主要目的是為了加速計算,加速的動力來自GPU在高性能計算方面所具有的優(yōu)勢:
(1)高效的并行性。這一功能主要是通過GPU多條繪制流水線的并行計算來體現(xiàn)的。在目前主流的GPU中,配置多達16個片段處理流水線,6個頂點處理流水線。多條流水線可以在單一控制部件的集中控制下運行,也可以獨立運行。GPU的頂點處理流水線使用MIMD方式控制,片段處理流水線使用SIMD結構。相對于并行機而言,GPU提供的并行性在十分廉價的基礎上,為很多適合于在GPU上進行處理的應用提供了一個很好的并行方案。
(2)高密集的運算。GPU通常具有128位或256位的內存位寬,因此GPU在計算密集型應用方面具有很好的性能。
(3)超長圖形流水線。GPU超長圖形流水線的設計以吞吐量的最大化為目標(如NVIDIA GeForce 3流水線有800個階段),因此GPU作為數(shù)據(jù)流并行處理機,在對大規(guī)模的數(shù)據(jù)流并行處理方面具有明顯的優(yōu)勢。
如圖2所示,CPU中的大部分晶體管主要用于構建控制電路(如分支預測等)和Cache,只有少部分的晶體管來完成實際的運算工作。GPU與CPU的設計目標不同,其控制電路相對簡單,而且對Cache的需求較小,所以大部分晶體管可以組成各類專用電路和多條流水線,使GPU的計算速度有了突破性的飛躍,擁有驚人的處理浮點運算的能力。 #p#page_title#e#
圖 2 GPU與CPU內部結構比較
正是由于GPU在并行處理和計算密集型問題求解等方面所具有的諸多優(yōu)勢,GPU已成為目前普通PC機所擁有的強大、高效的計算資源。從系統(tǒng)架構上看, GPU是針對向量計算進行了優(yōu)化的高度并行的數(shù)據(jù)流處理機。這種以數(shù)據(jù)流作為處理單元的處理機,在對數(shù)據(jù)流的處理上可以獲得很高的效率。根據(jù)NVIDIA 公司開發(fā)的GPU工具包CUDA(Compute Unified Device Architecture)的測試結果顯示,利用GPU實現(xiàn)FFT、BLAS、排序及線性方程組求解等科學計算,與單純依靠CPU實現(xiàn)的算法相比,平均性能提高了近20倍[7]。
由此可見,GPU的發(fā)展速度(包括集成度、計算密集型問題的處理能力等)已遠遠超過通用處理器,特別是隨著可編程能力、并行處理能力和應用范圍方面得到不斷提升和擴展,使得GPU已成為當前計算機系統(tǒng)中具備高性能處理能力的部件。因此,充分利用現(xiàn)有計算資源,發(fā)揮GPU的高性能計算能力,在GPU與CPU 的協(xié)作模式、GPU通用計算的計算模式以及性能優(yōu)化等方面進行深入研究,將對進一步拓展目前高性能計算體系結構,為科學計算和工程應用提供新型的計算資源具有重要意義。
1.2 國內外研究現(xiàn)狀
目前,以NVIDIA和ATI為代表的GPU產品正處于快速發(fā)展的過程當中,每隔半年左右新一代的產品便會誕生。GPU在增加更多功能的同時,也提供了更強的處理能力。隨著科學計算可視化、醫(yī)療圖像、虛擬現(xiàn)實等學科的發(fā)展和娛樂產業(yè)的推動,需要高性能計算的一些領域和計算機圖形領域越來越緊密的結合起來。 2003年,世界圖形學硬件年會(SIGGRAPH/EUROGRAPHICS Graphics Hardware 2003)迅速將其重點轉向了計算機圖形處理器的非圖形應用。之后,IEEE、SIGGRAPH、SUPERCOMPUTING等國際會議每年都設立了 GPGPU相關專題的討論組。越來越多的科研機構開始利用GPU的處理能力進行非圖形繪制方面的科學計算研究。
在基于GPU通用計算的應用系統(tǒng)方面,主要包括幾何計算、碰撞檢測、運動規(guī)劃、代數(shù)運算、優(yōu)化計算、偏微分方程、數(shù)值求解等。
在圖形處理器出現(xiàn)的早期,Larsen等人在2001年利用多紋理技術實現(xiàn)了矩陣運算操作。2001年后,隨著NVIDIA GeForce 3圖形處理器的出現(xiàn),頂點級可編程(Vertex Program)開始普及。雖然這個時候片段級上還只是固定的幾條指令,但利用GPU進行通用計算方面的應用已經全面展開。Thompson等人在頂點級實現(xiàn)了一個代數(shù)運算的框架系統(tǒng),其中包括矢量運算和矩陣乘法等[8]。2002年,人們開始利用Texture Shader結合Register Combiner來求解擴散方程[9]。2003年片段級可編程(Fragment Program)出現(xiàn),大大加速了GPU通用計算方面的研究。很多研究人員開始利用片段程序來求解一般代數(shù)問題,包括流體模擬、物理現(xiàn)象仿真、有限差分方程組求解和優(yōu)化等[10]。
2004年,美國研制的GPU集群系統(tǒng)(The Stony Brook Visual Computing Cluster)[11]運用于城市氣流模擬。另外,美國北卡羅萊那大學將GPU計算應用于數(shù)據(jù)庫領域,利用GPU硬件對數(shù)據(jù)庫的關系查詢、合取選擇、聚集操作等進行加速和優(yōu)化[2]。GPU 甚至被用來進行聲音的合成運算,以使CPU和APU(Audio Processing Unit)達到良好的均衡。同年,美國國防技術情報中心公開發(fā)布了《GPU:未來高性能計算引擎》的科技報告,內容包括對GPU通用計算應用于高性能計算領域的發(fā)展展望和未來面臨的挑戰(zhàn)。
2005年10月NVIDIA和ATI公司相繼開發(fā)基于GPGPU的物理計算API,使得GPU能夠利用浮點片段著色器單元處理包含大量并行操作的科學計算任務。
2006年,分布式計算項目Folding@Home在蛋白質折疊的研究中充分發(fā)揮了GPU的高性能優(yōu)勢。該項目利用ATI GPU獲得了每臺計算機100GFLOPS的高性能[12]。另外,ATI公司在SIGGRAPH 2006上做了數(shù)據(jù)并行虛擬機(Data Parallel Virtual Machine)的演示,并使用了專門為GPU通用計算而設計的“Close to the Metal”API。通過在一個顯卡上使用多個GPU來形成數(shù)據(jù)流處理集群,通過強大的數(shù)據(jù)并行處理機的性能來解決GPU并行數(shù)據(jù)加速的問題。 #p#page_title#e#
目前,國內在GPU通用計算方面的研究也在一些科研機構和院校逐步開展起來。2004年,清華大學利用GPU的并行計算能力和數(shù)據(jù)流處理能力,在GPU上實現(xiàn)了一種新的輻射度計算方法,并實現(xiàn)了Jacobi迭代法快速求解線性方程組。另外,中科院計算技術研究所、華中科技大學、西南交通大學等也相繼針對特定應用在GPU上進行了實驗驗證。
在GPU通用計算的軟件開發(fā)環(huán)境方面,OpenGL作為事實上的工業(yè)標準已為學術界和工業(yè)界所普遍接受,其中包括了GPU廠商以及OpenGL架構委員會(ARB)所擴充的函數(shù),以此來實現(xiàn)GPU廠商提供的新功能[14]。DirectX則根據(jù)GPU新產品功能的擴充與進展及時的發(fā)布新的版本。二者在實現(xiàn) GPU通用計算方面都需要使用者非常熟悉GPU圖形繪制的原理和硬件結構等許多具體問題。
高級繪制語言和實時繪制語言的出現(xiàn),如NVIDIA的Cg[14],OpenGL Shading Language,High Level Shading Language[21]等,為編程人員提供了直接基于圖形API(OpenGL或DirectX)編程的較為方便和高層次的工具。另外,隨著 Brook、SH等通用繪制語言的出現(xiàn),允許開發(fā)人員在不考慮圖形繪制和硬件結構的情況下,充分利用GPU的可編程性編寫面向通用計算的繪制程序。
隨著時間的推移,GPU通用計算的應用也將越來越廣泛。然而,目前在軟硬件方面依然存在很多需要克服的問題。首先,GPU是面向圖形的,在硬件結構、指令系統(tǒng)、處理流程等方面和真正用于通用計算的CPU有本質差別;其次,在GPU計算的軟件環(huán)境方面需要進行更多的研究和探索,如制定統(tǒng)一的抽象界面、編程模型、開發(fā)環(huán)境和工具軟件等[2];另外,GPU通用計算需要在計算模式上提出一種能夠很好的適應于問題求解的方法。
目前,GPU通用計算在研究領域通過IEEE、SIGGRAPH、SUPERCOMPUTING等國際會議以及GPGPU、Folding@Home等組織的全力支持,已經初現(xiàn)向主流計算的趨勢發(fā)展。另外在商業(yè)化方面,NVIDIA、AMD等公司也計劃推出包括GPGPU開發(fā)工具、全新的流處理硬件以及 GPU+CPU的雙核體系結構等一系列新型的高性能計算環(huán)境,同時也產生了一些用于信息處理等領域的商業(yè)化GPGPU應用。這些都為GPU通用計算提供了良好的平臺和發(fā)展空間。但GPU通用計算不論是在硬件上,還是在軟件上仍然存在很多問題,從研究到實用還要很長的路要走。
在后續(xù)的研究工作中,將對本文仍然未解決的一些問題進行研究,包括針對GPU—CPU協(xié)作模式的精確模型建立和完整的性能描述,GPU流計算模式對GPU 通用計算的具體編程方法上的框架模型,以及對GPU流計算模式的性能建立模型,綜合各種因素對性能的影響,對GPU流計算模型進行完整的性能評估和測試等。除此以外,后續(xù)的研究工作將圍繞以下幾個關鍵問題進行深入研究。
(1)與現(xiàn)實應用緊密結合,充分利用GPU通用計算的優(yōu)勢,進一步拓展GPU通用計算的應用范圍。通過對具體問題的加速和優(yōu)化實現(xiàn),努力使GPU通用計算有更好的實用性,能夠為更多的人所接受和認可。
(2)深入研究GPU-CPU協(xié)作計算模式和多GPU體系結構,進一步利用GPU與CPU良好的協(xié)作性構建具有高性能的計算環(huán)境,最大程度上發(fā)揮專用處理器和通用處理器各自的優(yōu)勢。
(3)在基于GPU通用計算的算法構造、優(yōu)化、實現(xiàn)等方面為建立良好的數(shù)據(jù)結構組織和優(yōu)化策略。
(4)針對GPU通用計算的開發(fā)工具、調試器、優(yōu)化策略進行深入的研究,為GPU通用計算設計并實現(xiàn)一個界面友好、可擴展性強的開發(fā)環(huán)境。
隨著當前計算機性能的不斷提高,應用范圍越來越廣泛,不同的計算任務和計算需求都在快速增長,這就決定了處理器朝著通用化和專用化兩個方向飛速發(fā)展。一方面,以CPU為代表的通用處理器是現(xiàn)代計算機的核心部件,經過多次器件換代的變遷,不僅集成度大大提高,性能和功能也大為改善,除了負責解釋、執(zhí)行指令和完成各種算術邏輯運算外,還控制并協(xié)調計算機各部分的執(zhí)行。另一方面,處理器在特定領域應用的專用化程度也越來越高,例如在視頻、圖像和音頻處理等領域,都出現(xiàn)了相應的專用處理器(如VPU、GPU、APU等)。在針對特定應用方面與通用處理器相比,專用處理器能夠更加高效的滿足特定的計算任務和需求。
近年來,計算機圖形處理器(GPU,Graphics Processing Unit)正在以大大超過摩爾定律的速度高速發(fā)展,極大的提高了計算機圖形處理的速度和質量,不但促進了圖像處理、虛擬現(xiàn)實、計算機仿真等相關應用領域的快速發(fā)展,同時也為人們利用GPU進行圖形處理以外的通用計算提供了良好的運行平臺[1]。
GPU應用領域的拓寬與其硬件發(fā)展有著極大關系。GPU自1999年首先由NVIDIA公司提出后,就其發(fā)展的速度而言,是CPU更新速度的三倍。從 1993年開始,GPU的性能以每年2.8倍的速度增長。目前,圖形處理器已經經歷了五代發(fā)展,平均每半年就有新一代的GPU問世。
2004年,NVIDIA GeForce 6800 Ultra處理器峰值速度可達40GFLOPS,對比Intel Pentium 4 3.0GHz,采用SSE2指令集也只能達到6 GFLOPS[3]。NVIDIA最新發(fā)布的GeForce 8800圖形處理器集成了6.8億個晶體管,擁有128個流處理單元,其峰值運算能力超過340GFLOPS,而Intel最新的Pentium4 Core 2 Extreme X6800只有46.88GFLOPS。
圖 1 GPU與CPU的發(fā)展與性能比較
圖形處理器技術的迅速發(fā)展帶來的并不只是速度的提高,還產生了很多全新的圖形硬件技術,使GPU具有流處理、高密集并行運算、可編程流水線等特性,從而極大的拓展了GPU的處理能力和應用范圍[2]。
正是由于GPU具有高效的并行性和靈活的可編程性等特點,越來越多的研究人員和商業(yè)組織開始利用GPU完成一些非圖形繪制方面的計算,并開創(chuàng)了一個新的研究領域:基于GPU的通用計算(GPGPU,General-Purpose computation on GPU),其主要研究內容是如何利用GPU在圖形處理之外的其他領域進行更為廣泛的科學計算[4]。目前已成功應用于代數(shù)計算、流體模擬、數(shù)據(jù)庫應用、頻譜分析等非圖形應用領域[5],甚至包括智能信息處理系統(tǒng)和數(shù)據(jù)挖掘工具等商業(yè)化應用。同時,也產生了一些針對GPU開發(fā)的通用計算工具包,能夠基于 GPU平臺對FFT、BLAS、排序及線性方程組求解等科學計算進行優(yōu)化實現(xiàn)。
基于GPU的通用計算已成為近幾年人們關注的一個研究熱點。將GPU用于通用計算的主要目的是為了加速計算,加速的動力來自GPU在高性能計算方面所具有的優(yōu)勢:
(1)高效的并行性。這一功能主要是通過GPU多條繪制流水線的并行計算來體現(xiàn)的。在目前主流的GPU中,配置多達16個片段處理流水線,6個頂點處理流水線。多條流水線可以在單一控制部件的集中控制下運行,也可以獨立運行。GPU的頂點處理流水線使用MIMD方式控制,片段處理流水線使用SIMD結構。相對于并行機而言,GPU提供的并行性在十分廉價的基礎上,為很多適合于在GPU上進行處理的應用提供了一個很好的并行方案。
(2)高密集的運算。GPU通常具有128位或256位的內存位寬,因此GPU在計算密集型應用方面具有很好的性能。
(3)超長圖形流水線。GPU超長圖形流水線的設計以吞吐量的最大化為目標(如NVIDIA GeForce 3流水線有800個階段),因此GPU作為數(shù)據(jù)流并行處理機,在對大規(guī)模的數(shù)據(jù)流并行處理方面具有明顯的優(yōu)勢。
如圖2所示,CPU中的大部分晶體管主要用于構建控制電路(如分支預測等)和Cache,只有少部分的晶體管來完成實際的運算工作。GPU與CPU的設計目標不同,其控制電路相對簡單,而且對Cache的需求較小,所以大部分晶體管可以組成各類專用電路和多條流水線,使GPU的計算速度有了突破性的飛躍,擁有驚人的處理浮點運算的能力。 #p#page_title#e#
圖 2 GPU與CPU內部結構比較
正是由于GPU在并行處理和計算密集型問題求解等方面所具有的諸多優(yōu)勢,GPU已成為目前普通PC機所擁有的強大、高效的計算資源。從系統(tǒng)架構上看, GPU是針對向量計算進行了優(yōu)化的高度并行的數(shù)據(jù)流處理機。這種以數(shù)據(jù)流作為處理單元的處理機,在對數(shù)據(jù)流的處理上可以獲得很高的效率。根據(jù)NVIDIA 公司開發(fā)的GPU工具包CUDA(Compute Unified Device Architecture)的測試結果顯示,利用GPU實現(xiàn)FFT、BLAS、排序及線性方程組求解等科學計算,與單純依靠CPU實現(xiàn)的算法相比,平均性能提高了近20倍[7]。
由此可見,GPU的發(fā)展速度(包括集成度、計算密集型問題的處理能力等)已遠遠超過通用處理器,特別是隨著可編程能力、并行處理能力和應用范圍方面得到不斷提升和擴展,使得GPU已成為當前計算機系統(tǒng)中具備高性能處理能力的部件。因此,充分利用現(xiàn)有計算資源,發(fā)揮GPU的高性能計算能力,在GPU與CPU 的協(xié)作模式、GPU通用計算的計算模式以及性能優(yōu)化等方面進行深入研究,將對進一步拓展目前高性能計算體系結構,為科學計算和工程應用提供新型的計算資源具有重要意義。
1.2 國內外研究現(xiàn)狀
目前,以NVIDIA和ATI為代表的GPU產品正處于快速發(fā)展的過程當中,每隔半年左右新一代的產品便會誕生。GPU在增加更多功能的同時,也提供了更強的處理能力。隨著科學計算可視化、醫(yī)療圖像、虛擬現(xiàn)實等學科的發(fā)展和娛樂產業(yè)的推動,需要高性能計算的一些領域和計算機圖形領域越來越緊密的結合起來。 2003年,世界圖形學硬件年會(SIGGRAPH/EUROGRAPHICS Graphics Hardware 2003)迅速將其重點轉向了計算機圖形處理器的非圖形應用。之后,IEEE、SIGGRAPH、SUPERCOMPUTING等國際會議每年都設立了 GPGPU相關專題的討論組。越來越多的科研機構開始利用GPU的處理能力進行非圖形繪制方面的科學計算研究。
在基于GPU通用計算的應用系統(tǒng)方面,主要包括幾何計算、碰撞檢測、運動規(guī)劃、代數(shù)運算、優(yōu)化計算、偏微分方程、數(shù)值求解等。
在圖形處理器出現(xiàn)的早期,Larsen等人在2001年利用多紋理技術實現(xiàn)了矩陣運算操作。2001年后,隨著NVIDIA GeForce 3圖形處理器的出現(xiàn),頂點級可編程(Vertex Program)開始普及。雖然這個時候片段級上還只是固定的幾條指令,但利用GPU進行通用計算方面的應用已經全面展開。Thompson等人在頂點級實現(xiàn)了一個代數(shù)運算的框架系統(tǒng),其中包括矢量運算和矩陣乘法等[8]。2002年,人們開始利用Texture Shader結合Register Combiner來求解擴散方程[9]。2003年片段級可編程(Fragment Program)出現(xiàn),大大加速了GPU通用計算方面的研究。很多研究人員開始利用片段程序來求解一般代數(shù)問題,包括流體模擬、物理現(xiàn)象仿真、有限差分方程組求解和優(yōu)化等[10]。
2004年,美國研制的GPU集群系統(tǒng)(The Stony Brook Visual Computing Cluster)[11]運用于城市氣流模擬。另外,美國北卡羅萊那大學將GPU計算應用于數(shù)據(jù)庫領域,利用GPU硬件對數(shù)據(jù)庫的關系查詢、合取選擇、聚集操作等進行加速和優(yōu)化[2]。GPU 甚至被用來進行聲音的合成運算,以使CPU和APU(Audio Processing Unit)達到良好的均衡。同年,美國國防技術情報中心公開發(fā)布了《GPU:未來高性能計算引擎》的科技報告,內容包括對GPU通用計算應用于高性能計算領域的發(fā)展展望和未來面臨的挑戰(zhàn)。
2005年10月NVIDIA和ATI公司相繼開發(fā)基于GPGPU的物理計算API,使得GPU能夠利用浮點片段著色器單元處理包含大量并行操作的科學計算任務。
2006年,分布式計算項目Folding@Home在蛋白質折疊的研究中充分發(fā)揮了GPU的高性能優(yōu)勢。該項目利用ATI GPU獲得了每臺計算機100GFLOPS的高性能[12]。另外,ATI公司在SIGGRAPH 2006上做了數(shù)據(jù)并行虛擬機(Data Parallel Virtual Machine)的演示,并使用了專門為GPU通用計算而設計的“Close to the Metal”API。通過在一個顯卡上使用多個GPU來形成數(shù)據(jù)流處理集群,通過強大的數(shù)據(jù)并行處理機的性能來解決GPU并行數(shù)據(jù)加速的問題。 #p#page_title#e#
目前,國內在GPU通用計算方面的研究也在一些科研機構和院校逐步開展起來。2004年,清華大學利用GPU的并行計算能力和數(shù)據(jù)流處理能力,在GPU上實現(xiàn)了一種新的輻射度計算方法,并實現(xiàn)了Jacobi迭代法快速求解線性方程組。另外,中科院計算技術研究所、華中科技大學、西南交通大學等也相繼針對特定應用在GPU上進行了實驗驗證。
在GPU通用計算的軟件開發(fā)環(huán)境方面,OpenGL作為事實上的工業(yè)標準已為學術界和工業(yè)界所普遍接受,其中包括了GPU廠商以及OpenGL架構委員會(ARB)所擴充的函數(shù),以此來實現(xiàn)GPU廠商提供的新功能[14]。DirectX則根據(jù)GPU新產品功能的擴充與進展及時的發(fā)布新的版本。二者在實現(xiàn) GPU通用計算方面都需要使用者非常熟悉GPU圖形繪制的原理和硬件結構等許多具體問題。
高級繪制語言和實時繪制語言的出現(xiàn),如NVIDIA的Cg[14],OpenGL Shading Language,High Level Shading Language[21]等,為編程人員提供了直接基于圖形API(OpenGL或DirectX)編程的較為方便和高層次的工具。另外,隨著 Brook、SH等通用繪制語言的出現(xiàn),允許開發(fā)人員在不考慮圖形繪制和硬件結構的情況下,充分利用GPU的可編程性編寫面向通用計算的繪制程序。
隨著時間的推移,GPU通用計算的應用也將越來越廣泛。然而,目前在軟硬件方面依然存在很多需要克服的問題。首先,GPU是面向圖形的,在硬件結構、指令系統(tǒng)、處理流程等方面和真正用于通用計算的CPU有本質差別;其次,在GPU計算的軟件環(huán)境方面需要進行更多的研究和探索,如制定統(tǒng)一的抽象界面、編程模型、開發(fā)環(huán)境和工具軟件等[2];另外,GPU通用計算需要在計算模式上提出一種能夠很好的適應于問題求解的方法。
目前,GPU通用計算在研究領域通過IEEE、SIGGRAPH、SUPERCOMPUTING等國際會議以及GPGPU、Folding@Home等組織的全力支持,已經初現(xiàn)向主流計算的趨勢發(fā)展。另外在商業(yè)化方面,NVIDIA、AMD等公司也計劃推出包括GPGPU開發(fā)工具、全新的流處理硬件以及 GPU+CPU的雙核體系結構等一系列新型的高性能計算環(huán)境,同時也產生了一些用于信息處理等領域的商業(yè)化GPGPU應用。這些都為GPU通用計算提供了良好的平臺和發(fā)展空間。但GPU通用計算不論是在硬件上,還是在軟件上仍然存在很多問題,從研究到實用還要很長的路要走。
在后續(xù)的研究工作中,將對本文仍然未解決的一些問題進行研究,包括針對GPU—CPU協(xié)作模式的精確模型建立和完整的性能描述,GPU流計算模式對GPU 通用計算的具體編程方法上的框架模型,以及對GPU流計算模式的性能建立模型,綜合各種因素對性能的影響,對GPU流計算模型進行完整的性能評估和測試等。除此以外,后續(xù)的研究工作將圍繞以下幾個關鍵問題進行深入研究。
(1)與現(xiàn)實應用緊密結合,充分利用GPU通用計算的優(yōu)勢,進一步拓展GPU通用計算的應用范圍。通過對具體問題的加速和優(yōu)化實現(xiàn),努力使GPU通用計算有更好的實用性,能夠為更多的人所接受和認可。
(2)深入研究GPU-CPU協(xié)作計算模式和多GPU體系結構,進一步利用GPU與CPU良好的協(xié)作性構建具有高性能的計算環(huán)境,最大程度上發(fā)揮專用處理器和通用處理器各自的優(yōu)勢。
(3)在基于GPU通用計算的算法構造、優(yōu)化、實現(xiàn)等方面為建立良好的數(shù)據(jù)結構組織和優(yōu)化策略。
(4)針對GPU通用計算的開發(fā)工具、調試器、優(yōu)化策略進行深入的研究,為GPU通用計算設計并實現(xiàn)一個界面友好、可擴展性強的開發(fā)環(huán)境。
下一篇:Cuda技術革命一瞥