鮑建樟 豐鑫田 于建國,*
(1北京師范大學(xué)管理學(xué)院系統(tǒng)科學(xué)系,北京100875;2北京師范大學(xué)化學(xué)學(xué)院,北京100875)
GPU引發(fā)的計算化學(xué)革命
鮑建樟1豐鑫田2于建國2,*
(1北京師范大學(xué)管理學(xué)院系統(tǒng)科學(xué)系,北京100875;2北京師范大學(xué)化學(xué)學(xué)院,北京100875)
綜述了圖形處理器(GPU)在計算化學(xué)中的應(yīng)用和進(jìn)展.首先簡單介紹了GPU在科學(xué)計算中應(yīng)用的發(fā)展,然后分別詳細(xì)講述了迄今幾個使用GPU和CUDA(compute unified device architecture,顯卡廠商N(yùn)vidia推出的計算平臺)開發(fā)工具設(shè)計的量子化學(xué)計算和分子動力學(xué)(MD)模擬的算法和程序,尤其對目前唯一完全使用GPU技術(shù)開發(fā)的量子化學(xué)計算軟件TeraChem做了完備的介紹,包括算法、實現(xiàn)的細(xì)節(jié)和程序目前的功能.此外,本文還對GPU在計算化學(xué)上將會發(fā)揮的作用做出了極為樂觀的展望.
GPU;CUDA;計算化學(xué);分子動力學(xué);TeraChem
計算化學(xué)是基于計算科學(xué)的原理來解決化學(xué)問題的一個化學(xué)分支學(xué)科.計算科學(xué)和技術(shù)的任何進(jìn)步,都會迅速應(yīng)用于計算化學(xué),為計算化學(xué)帶來長足的進(jìn)步.而敏銳的計算化學(xué)家們,也時刻關(guān)注著計算科學(xué)的每一個新進(jìn)展,切盼這些進(jìn)展能對使用計算機(jī)從微觀上了解化學(xué)和生命現(xiàn)象帶來突破和契機(jī).無疑,自2007年起GPU在計算化學(xué)上的應(yīng)用和導(dǎo)致的一些具有革命意義的進(jìn)展(且該浪潮的勢頭還正方興未艾)對任何與計算化學(xué)有關(guān)的學(xué)科的科學(xué)工作者,都是應(yīng)該密切關(guān)注和深入了解的.概要介紹GPU用于科學(xué)計算的基本技術(shù)和原理,窮極搜羅至今有關(guān)的成果,條分縷析地歸類分析,為計算化學(xué)家和關(guān)注并需要計算化學(xué)成果的非計算化學(xué)家提供一個引導(dǎo)性的材料,使他們能把握前進(jìn)的脈搏,而爭取迅速迎頭趕上,并在其中爭得一席之地,是寫這篇綜述的初衷.
在這篇綜述中,第二節(jié)將簡單介紹GPU以及它在數(shù)值計算中應(yīng)用發(fā)展的幾個階段及加速在GPU上的計算軟件開發(fā)的工具;第三節(jié)將逐一介紹迄今使用GPU改進(jìn)量子化學(xué)計算算法和程序的努力和一個極有前景的完全基于GPU的量子化學(xué)計算軟件TeraChem;第四節(jié)介紹使用GPU對MD算法的改進(jìn)和迄今能在GPU上運行的MD程序.最后簡單總結(jié)并展望基于GPU的計算化學(xué)算法和程序的輝煌前景.
價格合理的GPU(graphics processing units,圖形處理器)最先是為能在計算機(jī)游戲中生動真切顯示三維圖形而設(shè)計的計算機(jī)硬件.為了更好地顯示三維(3D)圖形,GPU需要對每個要顯示的畫面進(jìn)行大量的浮點運算.GPU最先的設(shè)計者們完全沒有意識到,他們在每一個GPU中安排的數(shù)百個計算單元具有能夠進(jìn)行數(shù)量可觀的并行運算的特征,使得GPU在今天成了科學(xué)計算的寵兒.相比而言,一直在計算機(jī)中擔(dān)負(fù)計算使命的每一個CPU(central processing unit,中央處理器)到今天也最多只能有數(shù)個運算單元(多核).GPU的設(shè)計特性使得巨大數(shù)目的并行事件同時進(jìn)入GPU的RAM(random-access memory,隨機(jī)存取存儲器),即相同操作能在GPU的內(nèi)存不同部分執(zhí)行.這屬于SIMD(single instruction,multiple data,單指令多數(shù)據(jù))類型.典型的GPU包含許多分列成組的計算單元,每組共享能快速進(jìn)入的內(nèi)存和一個指令單位.這些高度密集的計算單元需要更大的cache和控制單元.GPU在數(shù)值計算中表現(xiàn)出的優(yōu)異性能與已經(jīng)趨于平緩發(fā)展的CPU相比展現(xiàn)出了令人耳目一新的表現(xiàn)(見圖1,數(shù)據(jù)1收集到2008年6月).而之后不到三年的時間(到2011年3月),Nvidia的GeForce GTX 590的GPU的浮點運算峰值和內(nèi)存帶寬就又沖到了2488.3 GFlop·s-1和2×163.87 GB·s-1.2
GPU結(jié)構(gòu)的本身具備進(jìn)入科學(xué)計算的基本需求.最早將GPU用在數(shù)值計算中的企圖可以追溯到20年前.3盡管之后各種努力和嘗試不絕如縷,4,5但很長時間以來一直沒有突破性的進(jìn)展,原因是缺少科學(xué)計算編程的有效工具.當(dāng)時一般是用特定的匯編語言或圖形取向的應(yīng)用編程接口(API,application programming interface),如OpenGL或DirectX等編程,工作量之巨大讓人望而生畏.值得一提的工作有最早的Yang等6使用OpenGL作為載體編制出程序,在GPU上進(jìn)行了分子動力學(xué)的模擬計算;之后有Anderson等7在GPU上進(jìn)行量子蒙特卡羅(QMC)計算的嘗試.
圖1 GPU與CPU的浮點運算峰值和內(nèi)存帶寬的比較Fig.1 Comparisons of peak GFlop and memory bandwidth of GPU and CPUThe data come from NVIDIAwebsite.1GT200=GeForce GTX 280,G92=GeForce 9800 GTX,G80=GeForce 8800 GTX,G71=GeForce 7900 GTX, G70=GeForce 7800 GTX,NV40=GeForce 6800 Ultra,NV35=GeForce FX 5950 Ultra,NV30=GeForce FX 5800
由于GPU硬件快速發(fā)展的促動和科學(xué)計算高速化的迫切需求,在GPU上用于科學(xué)計算簡易快捷的編程工具應(yīng)運而生.它們是ATI Stream Technology8和Nvidia的CUDA(compute unified device architecture).9Stream計算機(jī)編程范式(paradigm)最先是ATI公司為在多個計算單元或多種計算硬件,如CPU和GPU間容易進(jìn)行平行計算設(shè)計的,不需特別規(guī)定不同計算單元間的交流和傳遞.之后ATI公司在2006年被AMD公司收并,直到2010年后期,ATI品牌徹底被AMD取代.CUDA是一個類似于C語言的高級、直觀的編程語言,并能被C語句調(diào)用. NVIDIA公司最近還推出了Parallel Nsight,9使CUDA能在微軟公司最為普及的軟件開發(fā)平臺Visual Studio上使用.這惠及了數(shù)百萬的軟件開發(fā)工作者.可以毫不夸張地說,CUDA給GPU在科學(xué)計算上應(yīng)用的飛速發(fā)展插上了翅膀.一時間諸多的與數(shù)值計算有關(guān)的科學(xué)家趨之若鶩,這已經(jīng)在改變著科學(xué)計算的面貌了.
現(xiàn)有數(shù)值計算的程序編碼已是浩如煙海,無論如何方便的在GPU上的編程工具,如CUDA,仍無法重復(fù)所有已有的編碼和算法.若有簡便的工具將現(xiàn)有的數(shù)值計算的程序轉(zhuǎn)換到GPU上,將善莫大焉.在這個方向上的嘗試和進(jìn)展包括能在GPU上計算的量子化學(xué)和固體物理中常用的一些算法中的子程序庫,如進(jìn)行傅里葉變換的CUFFT10和線性代數(shù)庫CUBLAS11和MAGMA.12
一開始影響GPU在科學(xué)計算上普及使用的另一障礙是早期GPU較低的數(shù)值精度,隨著NVIDIA公司的支持32位浮點運算精度的G80系列GPU卡的推出和64位的GeForce 8800 GTX GPU卡的推出,用于科學(xué)計算的精度問題得到了徹底的解決.盡管在64位浮點運算精度下,運算速度會有所損失.
量子化學(xué)計算的基本方法,從頭算(ab initio)和密度泛函理論(DFT)的最主要計算工作,是求得雙電子排斥積分(也包括DFT中的交換-相關(guān)積分的數(shù)值求取)和生成Fock矩陣以及矩陣的對角化.
Yasuda13第一個認(rèn)識到可使用GPU來提高計算電子排斥積分(ERI)的速度.他使用GeForce 8800 GTX GPU卡,發(fā)展出了使用GPU計算DFT的KS矩陣的Coulomb積分的算法,但僅適用于s和p基函數(shù).這個算法在Taxol和Valinomycin的小基組和LSDA DFT計算里,使用GPU計算Coulomb勢,僅需CPU常規(guī)計算時間的1/3.盡管使用的GPU僅支持單精度浮點數(shù)運算,但仍然有可以接受的精度. Yasuda的算法是在Gaussian 03程序14上完成的.
GPU對積分的計算只能包括s和p基函數(shù)是遠(yuǎn)遠(yuǎn)不夠的.將GPU上的積分計算擴(kuò)展到d及更高角量子數(shù)的基函數(shù)的困難在于目前最大的單個GPU也無法容納這些高角量子數(shù)的計算殼層.如對于一個(ff|ff)雙電子積分的殼層,在中間計算時共需要5376個浮點數(shù),它們要做多次的乘法運算,最終需約104個浮點數(shù).對于雙精度,這相應(yīng)于123008 bytes,遠(yuǎn)遠(yuǎn)超出了目前最大單片GPU的容量.有人在等待著很快有更大的GPU上市,但Asadchev等15另辟蹊徑,近來提出了一個使用CUDA能計算到g型基函數(shù)的算法.他們將計算的中間結(jié)果存放在裝置的內(nèi)存,而不是GPU中,并將這些殼層塊的積分重新排序,滿足這些積分的頻繁調(diào)用.這樣做帶來的問題是為了適應(yīng)所有積分類型的有效排列的方式,原來在CPU下使用的大量程序需要重寫.他們采用了由一個個模塊自動生成的方式來解決這個問題.使用GTX275和Tesla T10 GPU卡,他們與GAMESS16比較了雙電子排斥積分的運算速度. CPU能達(dá)到1 GFlop·s-1(每秒鐘進(jìn)行1 giga浮點運算),而GPU在單精度和雙精度運算時能分別達(dá)到50和25 GFlop·s-1.
對DFTGGA中的XC(交換-相關(guān))勢的數(shù)值計算,仍是Yasuda17首先提出了在GPU上計算的算法.他采用的策略是在僅將XC較費時的步驟交由GPU,其余仍由CPU處理.使用NVIDIA的GeForce 8800 GTX卡,與2.8 GHz的Intel Pentium 4相比,該步計算的加速能達(dá)到40倍.
Aspuru-Guzik等18,19將開發(fā)基于GPU的量子化學(xué)算法的注意力放在了包括相關(guān)能校正的RI-MP2 (RI:resolution-of-the identity)方法上.除了對于含過渡金屬的體系,MP2計算的平衡幾何構(gòu)型優(yōu)于廣為使用的DFT.MP2計算中最為耗時的是原子軌道基的積分向分子軌道基的變換.這一般是體系基函數(shù)數(shù)目N的5次方(O(N5)).引入RI積分近似可減少計算時間而又沒有明顯的精度損失.Aspuru-Guzik等分析RI-MP2計算各個步驟對計算機(jī)時間的需求,認(rèn)識到RI-MP2計算中主要的時間消耗是在從半變換的三指標(biāo)積分變換為分子軌道積分時的矩陣相乘.他們使用CUBLAS16的函數(shù)在GPU上執(zhí)行矩陣相乘的運算(將CUBLAS的函數(shù)引入量子化學(xué)計算這還是首次).據(jù)他們自己的測試,在單精度下,計算速度能達(dá)到原來使用CPU的4.3倍.18使用NVIDIA Tesla C1060 GPU和4 GB的內(nèi)存,他們測試了有168個原子的分子Valinomycin,在單精度、混合精度和雙精度下分別能比CPU提速13.8、10.0和7.8倍,在雙精度下,誤差接近于零.他們的計算是植根于另一廣為使用的商品化量子化學(xué)計算程序Q-Chem.20
在此還應(yīng)提及一個不被化學(xué)家熟悉的、使用Daubechies波,而不是Gaussian型的基函數(shù)的程序包BigDFT.21BigDFT使用CUDA在GPU上編程,達(dá)到了極高的并行效率,使用GPU的版本能比CPU的提速達(dá)6倍.
量子化學(xué)計算程序Firefly22的前身是著名的量子化學(xué)程序GAMESS16的變種PC GAMESS.近來Firefly在它的MP4(SDTQ)計算中使用了GPU,對于Cl-(HF)5分子使用6-311+G(2d,2p)基組進(jìn)行單點計算,在使用四個GPU(2 GTX295+2 C1060)時,計算速度提高了近10倍.23
通用的量子化學(xué)程序包Q-Chem20的一個突出特點是具有運算速度非常快的DFT計算功能.近來Q-Chem的開發(fā)者們Gan等24也將GPU用于進(jìn)一步提高DFT計算速度.結(jié)合已有的可用于DFT一些步驟的GPU算法和Q-Chem在DFT計算上的改進(jìn),提出一個方案(task based programming,object-oriented design,OPENMP for multithreading,MPI for cross node communications,即基于作業(yè)編程、目標(biāo)取向設(shè)計、用OPENMP作多線程和用MPI處理節(jié)點間的交通).作者自己的測試計算對Taxol分子(C47H51NO14),使用一片C1060 GPU,計算速度提高了24倍,若使用4片GPU,速度提高達(dá)到了102倍.
對將GPU使用到量子化學(xué)計算極為關(guān)注和付出努力的還有美國Iowa州立大學(xué)的Gordon教授. Gordon教授的研究小組是GAMESS程序16的維護(hù)者,并不斷開發(fā)和發(fā)展.最先對GPU計算精度的不足曾影響了Gordon教授對之的投入,隨著雙精度的GPU卡的出現(xiàn),Gordon教授和GAMESS研發(fā)小組變成了積極的參與者.Gordon教授和他的研發(fā)小組正在重寫GAMESS中的程序,使之能在GPU上高效使用,相信很快就有這樣的GAMESS版本推出.25
以上提到的近幾年提出的使用GPU提高量子化學(xué)計算速度的算法中,除了BigDFT,21其余都是利用現(xiàn)有軟件包,改善其中部分算法,在某一特定計算步驟,使計算速度得到提高.而剛于2010年推出的TeraChem程序則完全使用CUDA概念,重寫了GPU上的量化計算的基本程序.26TeraChem是由美國Stanford大學(xué)的Ufimtsev和Martinez編寫完成的,由美國PetaChem公司于2010年推出商業(yè)化版本.27由于他們在GPU的量子化學(xué)程序的先驅(qū)性的工作和突出貢獻(xiàn),Martinez教授被Gordon稱為美國量子化學(xué)家的GPU的領(lǐng)頭人.25
Ufimtsev和Martinez28提出的計算雙電子排斥積分基于McMurchie-Davidson框架,檢驗了三種分配GPU/CPU工作和處理任務(wù)分塊的模式(1B1CI、1T1CI和1T1PI),先進(jìn)行由H原子組成的體系的(ss|ss)型積分的運算,然后推廣到包括由p函數(shù)組成的基的排斥積分.他們發(fā)現(xiàn)若從Gaussian基的雙電子排斥積分直接進(jìn)入Fock矩陣,而不是如傳統(tǒng)的將Gaussian軌道基的排斥積分收縮到Slater軌道(STO),在GPU下能有極高的效率.對于由64個H組成的體系,使用6-311G和三種模式計算排斥積分,分別耗費7.086、0.675和0.428 s,加上用CPU的預(yù)計算的0.009 s和GPU-CPU轉(zhuǎn)換的0.883 s,最快的1T1PI模式共需1.320 s.而使用GAMESS在單CPU下則需170.8 s.Ufimtsev和Martinez29隨后報道了完全使用GPU進(jìn)行Hartree-Fock計算的方法.基于以前提出的1T1PI處理雙電子排斥積分的方法28,他們提出了Hartree-Fock的J矩陣和K矩陣在GPU下依據(jù)大小分塊處理的算法,還研究了多GPU的并行化處理:每個GPU處理自己的J矩陣子塊,計算K矩陣時每個GPU處理K矩陣的不同的行.使用三個GPU卡(GTX280)做檢驗,能達(dá)到一個GPU卡的2.0-2.8的效率.他們測試了從24個原子到453個原子組成的分子的Hartree-Fock單點能量計算.使用3-21G和6-31G基組以及一個GPU卡(GeForce 280 GTX),在雙精度下,與GAMESS相比,速度能提高40到600多倍,而總能量的差別可忽略不計.
Ufimtsev和Martinez系列文章的第三篇26是關(guān)于能量解析梯度計算的GPU處理,包括Coulomb和交換部分計算的處理.加上多GPU卡的并行計算的處理,該方法可用于Hartree-Fock能量和DFT能量的解析梯度的計算.使用GPU程序和單個GPU卡(GeForce 295 GTX),與在4核2.66 GHz CPU上運行的GAMESS程序相比,從小到大的分子,GPU仍然可有數(shù)倍到超過百倍的速度提高.
這樣,他們提出的在GPU上運行的量子化學(xué)計算的算法,涵蓋了基本的從頭算/DFT的全部三個耗時步驟(雙電子積分、Hartree-Fock/Kohn-Shan矩陣處理和能量的解析梯度).基于此,Martinez推出了他們的TeraChem程序.262010年春推出的為1.05版,能進(jìn)行閉殼層的Hartree-Fock和DFT的單點能量計算,基于解析梯度的幾何構(gòu)型極小化和過渡態(tài)優(yōu)化的計算,以及基于以上計算(能量和解析梯度)的動力學(xué)模擬(MD)和簡單的QM/MM計算.使用TeraChem,很容易檢驗和實現(xiàn)上述他們的三篇論文的結(jié)果.最近(2011年4月)推出的v1.45版已能進(jìn)行包括d軌道和含過渡金屬原子體系的HF和DFT計算,并能達(dá)到與sp軌道差不多的速度提高.具體算法的改進(jìn)和實現(xiàn)還未見有詳細(xì)報道.
TeraChem更為不凡,需引起密切關(guān)注的原因是這是第一個完全基于GPU,從零開始編制的量子化學(xué)計算程序.本文引述的在Ufimtsev和Martinez的工作之前或之后的關(guān)于GPU的量子化學(xué)計算的算法的文章,雖都基于某一特定量子化學(xué)程序包實現(xiàn),但至今還都沒有能進(jìn)入公開發(fā)行的程序包中,有些或許只能永遠(yuǎn)停留在紙面上.而TeraChem一進(jìn)入人們的視野,就以完備的商品軟件的姿態(tài)出現(xiàn).據(jù)PetaChem網(wǎng)站披露,TeraChem在2010年春天一推出,短短半年就有超過4000份的試用版本發(fā)出,展現(xiàn)出蓬勃的生命力.
量子蒙特卡羅(QMC)是求解與時間無關(guān)的薛定諤方程的精確方法之一,30并且QMC很容易并行化.Anderson等7在2007年就提出了在GPU上加速Q(mào)MC計算的方案.使用CUDA核優(yōu)化緩存使用,在GPU上進(jìn)行需求很大的并行計算.對于8-32個原子的體系,比CPU上的執(zhí)行,速度能有5倍的提高. Meredith等31在單精度的GPU上用量子簇近似,使用規(guī)整晶格上的二維Hubbard近似研究超導(dǎo)在臨界溫度下的混亂效應(yīng),在GPU上使用CUBLAS庫執(zhí)行矩陣乘法,得到與CPU上的雙精度可比的結(jié)果.
MD計算對生物分子的模擬自McCammon等對酶的計算為肇基,32當(dāng)時的計算水平是500個原子,模擬的時間10 ps.之后飛速發(fā)展,到了今天,模擬的生物體系包括數(shù)百萬個原子,模擬時間能持續(xù)到微秒都已成常規(guī).而科學(xué)家對生命現(xiàn)象的深入了解仍在向計算化學(xué)家不斷提出更高的要求.如對蛋白質(zhì)折疊的MD模擬研究,折疊行為約需毫秒來完成,如以納秒為步長做模擬,且每步計算花費一天計,這樣的模擬就需執(zhí)行一百萬天,即差不多3000年.這確實是對計算化學(xué)家提出了嚴(yán)峻的挑戰(zhàn).雖然有人花費巨資搭建豪華計算機(jī)系統(tǒng),如日本的總耗資超過一千五百萬美元的MDGRAPE-3系統(tǒng),33,34這是使用專門設(shè)計的硬件加速搜尋表以加速直接空間非鍵的計算.但這樣的耗費巨資并為某一特定問題專門設(shè)計的硬件完全無法做廣泛的推廣,且不說耗資驚人了.而GPU適時的出現(xiàn)為MD對生物的模擬計算帶來了曙光.
由于在GPU下編程的困難,早期試圖在GPU上提高M(jìn)D計算速度的努力有許多是走入迷途的,報導(dǎo)的結(jié)果也是使人信疑參半.至今被普遍接受的GPU上MD算法的成功改進(jìn)仍屬本文開始提及的Yang等6的工作,尤其值得贊許的是該工作是在CUDA推出之前,直接使用OpenGL編程,在GPU上實現(xiàn)需驚人的工作量,并達(dá)到了10倍以上速度的提高.雖然他們的算法相當(dāng)簡捷,在模擬過程中僅包含Lennard-Jones相互作用和建立一個鄰接目錄,而缺乏對生物體系模擬的許多計算步驟,但這個先驅(qū)性的工作仍有力地證實了GPU能在MD模擬上發(fā)揮重要作用.
早期使用GPU改進(jìn)MD運算速度的嘗試大都局限于使用簡化的模型,或者只針對于特定的問題做處理,而不是著眼于對真正MD的全面改進(jìn).Liu等35是第一個使用CUDA來對MD的計算進(jìn)行改進(jìn)的.他們僅在GPU上計算簡化的范德華勢,而避免了對凝聚態(tài)體系MD模擬的復(fù)雜的乘積運算.Stone等36在他們的文章里仔細(xì)討論了一系列用于分子模擬的算法,提出了第一個直接空間范德華勢和靜電勢在GPU上合并處理的方法,但該方法并不包括任何實際的MD計算,而僅僅是在被模擬體系臨近庫侖勢的時間平均的計算中使用GPU,并引入到MD程序包NAMD37中,誕生了NAMD的GPU加速的新版.
之后還有一些使用GPU對MD算法的局部改進(jìn),38,39直到Anderson等40將共價項的貢獻(xiàn)與使用GPU計算的范德瓦爾和簡諧鍵勢項加入到他們的HOOMD程序包41中,用于研究非離子液體.可以認(rèn)為,GPU版的HOOMD朝向真正完整的GPU的MD程序前進(jìn)了一大步.
真正能稱之為使用GPU的MD程序產(chǎn)品是到2009/2010年才出現(xiàn)的.至今只有三個MD程序包可認(rèn)為基本滿足,它們分別是Harvey等42的ACEMD、Friedrichs等43的OpenMM和Philips等37的NAMD.
ACEMD可謂是第一個支持全部GPU加速功能的處理凝聚相的MD程序包,可處理周期性邊界和短程、長程的靜電作用.使用GPU加速后,有很明顯的速度提高.OpenMM是一個程序庫,起先僅是對于小的和中等大小的體系使用非鍵項的間接求和方法來計算溶劑的廣義Born模型,之后Eastman和Pande44對之改進(jìn),顯性計算進(jìn)行溶劑的MD模擬.最新推出(2011年3月11日)的OpenMM版是v3.0.著名MD程序包GROMACS45新近的GPU版將OpenMM納入其中,可在GPU上大大提高M(jìn)D計算的速度.NAMD的v2.7b2版也添加了GPU加速的明確進(jìn)行溶劑化計算的功能,在對一個由25095個原子組成的生物體系的模擬計算,速度提高到了8.6倍.NAMD最新的版本是v2.8b1,仍是以CPU計算為主,在多節(jié)點間進(jìn)行MD計算,而將之置于GPU的環(huán)境,使用單片或多片GPU來提高CPU的單個節(jié)點內(nèi)的計算效率以達(dá)到提高M(jìn)D計算速度的目的.
AMBER程序可謂是MD計算機(jī)程序家族中最為著名的一員,46由一些使用AMBER力場47進(jìn)行與MD有關(guān)計算的程序包組成.最近AMBER程序家族的PMEMD程序在顯性溶劑PME(particle mesh Ewald)和廣義Born模型(GB,generalized Born)的處理中使用Nvidia的GPU,并因之推出了AMBER11版,48但使用GPU后的速度提高和計算精度還都有待于檢驗.
最近推出的另一MD程序HOOMD-BLUE 0.9.241也聲稱支持GPU的運算.算法的作者聲稱他們的整個MD計算都在GPU上進(jìn)行,單片GPU運算的速度相當(dāng)于30個微處理器.40
盡管有諸多的對MD在GPU上應(yīng)用的算法的創(chuàng)立和改進(jìn),和相應(yīng)的能在GPU上運行的MD程序的推出,其中某些還聲稱是完全使用了在GPU上基于CUDA開發(fā)的新算法,但相對于GPU的量子化學(xué)計算程序能對速度有50-100倍的提高,GPU上的MD程序的速度提高還不盡如人意(最高速度提高的倍數(shù)大約為10,但據(jù)我們驗證,除特殊情況,基本無法達(dá)到這個速率),這是由MD計算的本質(zhì)決定的.盡管今天的CPU,甚至GPU的計算速度已足夠快,但硬件間數(shù)據(jù)傳遞的速度仍是瓶頸,而MD計算卻是非常依賴和需要這些傳輸.GPU運算速度的提高無助于這些傳輸,甚至加重了節(jié)點間數(shù)據(jù)傳輸?shù)膲毫?這就是為什么至今GPU上的MD程序僅限于單個GPU(OpenMM和AMBER)或單個節(jié)點內(nèi)的多個GPU(ACEMD).僅NAMD試圖在多節(jié)點上應(yīng)用GPU改進(jìn)MD的計算速度,試圖模擬非常大的體系,而不是優(yōu)化單節(jié)點內(nèi)的運行,這需要數(shù)量眾多的GPU卡,而僅有差強(qiáng)人意的速度提高,且“性價比”還相當(dāng)?shù)?
近年由CUDA帶動的GPU在科學(xué)計算上的蓬勃應(yīng)用和發(fā)展,不可能不進(jìn)入計算化學(xué)領(lǐng)域.自2010年以來,接連有GPU在計算化學(xué)(包括量子化學(xué)計算和MD模擬)的綜述文章發(fā)表,如G?tz等49題為“Quantum Chemistry on GPU”的綜述,和Xu等50對GPU在生物分子MD模擬的進(jìn)展的綜述(本文的一些材料間接引自這兩篇綜述),最近美國Chemical&Engineering News上的一篇題為“GPU革命(The GPU Revolution)”的短文也對GPU將對計算化學(xué)的貢獻(xiàn)和前景給出了極為樂觀的評價和期許.25
縱觀由三年來多方努力和如雨后春筍般的在GPU上的量子化學(xué)計算和MD模擬算法和程序的呈現(xiàn),僅有Ufimtsev和Martinez辛勤創(chuàng)立的Tera-Chem軟件是完全從零的基礎(chǔ)上、完全為GPU計算設(shè)計和實現(xiàn),卻也達(dá)到了計算速度的可喜提高,而其它量子化學(xué)程序和差不多所有的MD程序都還有各種各樣的缺憾和不足.TeraChem或許會成為量子化學(xué)計算的一個新里程碑.如同四十年前Gaussian 70和九十年代初量子化學(xué)軟件的商品化大潮,呈現(xiàn)以二十年為周期的飛躍.
同時,Nvidia會不斷推出容量更大、速度更快的GPU,而價格也會愈來愈低,CUDA也會不斷擴(kuò)充新功能,并愈來愈完善,使得在GPU上編制科學(xué)計算程序成為常規(guī).而AMD的ATI Stream Technology和相應(yīng)的硬件或許在很近的將來會成為Nvidia的GPU卡和CUDA的有力競爭者,而且GPU在科學(xué)計算上的應(yīng)用也將出現(xiàn)百花齊放的繁盛局面.這些都使我們相信,我們處在一個計算化學(xué)新時代來臨的前夜.
(1)NVIDIACUDA.Compute Unified DeviceArchitecture Programming Guide Version 3.0.http://www.nvidia.com/object/ cuda_develop.html(accessed March 6,2010).
(2) Comparison of Nvidia Graphics Processing Units.http://en. wikipedia.org/wiki/Comparison_of_Nvidia_graphics_ processing_units(accessed March 6,2010).
(3) Lengyel,J.;Reichert,M.;Donald,B.R.;Greenberg,D.P. Comput.Graph.1990,24,327.
(4) Bohn,C.A.Joint Conference on Intelligent Systems 1999(JCIS? 98)1998,2,64.
(5) Hoff,K.E.,II.;Culver,T.;Keyser,J.;Ming,L.;Manocha,D. Fast Computation of Generalized Voronoi Diagrams Using Graphics hardware.In Proceeding of SIGGRAPH 99,Danvers, August 8-13,1999;Assison-Wssley Publishing Company, 1999,277-286.
(6)Yang,J.;Wang,Y.;Chen,Y.J.Comput.Phys.2007,221,799.
(7)Anderson,A.G.;Goddard,W.A.,III.;Schroder,P.Comput. Phys.Commun.2007,177,265.
(8)ATI Stream Technology,http://www.amd.com/US/PRODUCTS/ TECHNOLOGIES/STREAM-TECHNOLOGY/Pages/ stream-technology.aspx(AccessedApril 13,2011).
(9) CUDA:Santa Clara,CA.http://www.nvidia.com/object/ cuda_home_new.html(accessedApril 13,2011).
(10) NVIDIA:Santa Clara,CA,CUFFT Library.http://developer. download.nvidia.com/compute/cuda/2_3/toolkit/docs/ CUFFT_Library_2.3.pdf(accessed March 6,2010).
(11) NVIDIA:Santa Clara,CA,CUBLAS Library 2.0.http:// developer.download.nvidia.com/compute/cuda/2_0/docs/ CUBLAS_Library_2.0.pdf(accessed March 6,2010).
(12) Innovative Computing Laboratory,University of Tennessee, MatrixAlgebra on GPU and MulticoreArchitectures.http://icl. cs.utk.edu/magma(accessed March 6,2010).
(13)Yasuda,K.J.Comput.Chem.2008,29,334.
(14) Frisch,M.J.;Trucks,G.W.;Schlegel,H.B.;et al.Gaussian 03, Revision B.01;Gaussian Inc.:Pittsburgh,PA,2003.
(15)Asadchev,A.;Allada,V.;Felder,J.;Bode,B.M.;Gordon,M.S.; Windus,T.L.J.Chem.Theory Comput.2010,6(3),696.
(16) (a)Schmidt,M.W.;Baldridge,K.K.;Boatz,J.A.;Elbert,S.T.; Gordon,M.S.;Jensen,J.H.;Koseki,S.;Matsunaga,N.; Nguyen,K.A.;Su,S.;Windus,T.L.;Dupuis,M.;Montgomery, J.A.J.Comput.Chem.1993,14,1347. (b)Gordon,M.S.;Schmidt,M.W.Advances in Electronic Structure Theory:In Theory and Applications of Computational Chemistry:the First Forty Years;Dykstra,C.E.,Frenking,G., Kim,K.S.,Scuseria,G.E.,Eds.;Elsevier:Amsterdam,2005; p 1167.
(17)Yasuda,K.J.Chem.Theory Comput.2008,4,1230.
(18)Kermes,S.;Olivares-Amaya,R.;Vogt,L.;Shao,Y.; Amador-Bedolla,C.;Aspuru-Guzik,A.J.Phys.Chem.A 2008, 112,2049.
(19) Olivares-Amaya,R.;Watson,M.A.;Edgar,R.G.;Vogt,L.; Shao,Y.;Aspuru-Guzik,A.J.Chem.Theory Comput.2010,6, 135.
(20) Shao,Y.H.;Fusti-Molnar,L.;Jung,Y.S.et al.Phys.Chem. Chem.Phys.2006,8,3172.
(21) Genovese,L.;Ospici,M.;Deutsch,T.;Mehaut,J.F.;Neelov,A.; Goedecker,S.J.Chem.Phys.2009,131,34103.
(22) Granovsky,A.A.Firefly version 7.1.G.http://classic.chem.msu. su/gran/firefly/index.html(accessedApril 4,2011).
(23) http://classic.chem.msu.su/gran/gamess/cuding.html(accessed April 4,2011).
(24) Gan,Z.;Shao,Y.;Kong,J.;Olivares-Amaya,R.;Aspuru-Guzik, A.http://www.nvidia.com/content/GTC/documents/ 1050_GTC09.pdf(accessedApril 4,2011).
(25) Wolf,L.Chemical and Engineering News 2010,88,27.
(26) Ufimtsev,I.S.;Martinez,T.J.J.Chem.Theory Comput.2009, 5,2619.
(27)TeraChem.http://www.petachem.com(accessed March 6,2010).
(28) Ufimtsev,I.S.;Martinez,T.J.J.Chem.Theory Comput.2008, 4,222.
(29) Ufimtsev,I.S.;Martinez,T.J.J.Chem.Theory Comput.2009, 5,1004.
(30) Ceperley,D.;Alder,B.Quantum Monte Carlo.Science 1986, 231,555.
(31) Meredith,J.S.;Alvarez,G.;Maier,T.A.;Schulthess,T.C.; Vette,J.S.Parallel Comput.2009,35,151.
(32)McCammon,J.A.;Gelin,B.R.;Karplus,M.Nature 1977,267, 585
(33) Susukita,R.;Ebisuzaki,T.;Elmegreen,B.G.;Furusawa,H.; Kato,K.;Kawai,A.;Kobayashi,Y.;Koishi,T.;McNiven,G. D.;Narumi,T.;Yasuoka,K.Comput.Phys.Commun.2003, 155,115.
(34) Narumi,T.;Ohno,Y.;Noriyuk,F.;Okimoto,N.;Suenaga,A.; Yanai,R.;Taiji,M.In From Computational Biophysics to Systems Biology:MDGRAPE-3;Meinke,J.,Zimmermann,O., Mohanty,S.,Hansmann,U.H.E.Eds.;J.von Neumann Institute for Computing:Jülich,2006;p 29.
(35) Liu,W.;Schmidt,B.;Voss,G.;Müller-Wittig,W.In High Performance Computing-HiPC 2007:Lecture Notes in Computer Science;Aluru,S.,Parashar,M.,Badrinath,R., Prasanna,V.K.Eds.;Springer,Berlin/Heidelberg,2007; Vol.4873,p 185.
(36) Stone,J.E.;Phillips,J.C.;Freddolino,P.L.;Hardy,D.J.; Trabuco,L.G.;Schulten,K.J.Comput.Chem.2007,28,2618.
(37) Phillips,J.C.;Stone,J.E.;Schulten,K.Adapting a Message-Driven ParallelApplication to GPUAccelerated Clusters.In SC?08:Proceedings of the 2008 ACM/IEEE conference on Super Computing,1-9,IEEE Press,Piscataway, NJ,USA,2008.
(38) van Meel,J.A.;Arnold,A.;Frenkel,D.;Portegies Zwart,S.F.; Belleman,R.G.Mol.Simulat.2008,34,259.
(39) Rapaport,D.C.Comput.Phys.Commun.2011,182,926.
(40)Anderson,J.A.;Lorenz,C.D.;Travesset,A.J.Comput.Phys. 2008,227,5342.
(41)HOOMD:General Purpose Molecular Dynamics on Multiple GPUs Implemented Using CUDAJoshuaA.Anderson Path to Petascale:Adapting GEO/CHEM/ASTROApplications for Accelerators andAccelerator Clusters,April 2009.http://www. ncsa.uiuc.edu/Conferences/accelerators/agenda.html(accessed April 4,2011).
(42) Harvey,M.J.;Giupponi,G.;De Fabritiis,G.J.Chem.Theory Comput.2009,5,1632.
(43) Friedrichs,M.S.;Eastman,P.;Vaidyanathan,V.;Houston,M.; Le Grand,S.;Beberg,A.L.;Ensign,D.L.;Bruns,C.M.; Pande,V.S.J.Comput.Chem.2009,30,864.
(44) Eastman,P.;Pande,V.S.J.Comput.Chem.2010,31,1268.
(45)GROMACS http://www.gromacs.org(accessedApril 4,2011).
(46) Pearlman,D.A.;Case,D.A.;Caldwell,J.W.;Ross,W.S.; Cheatham,T.E.,III.;DeBolt,S.,Ferguson,D.;Seibel,G.; Kollman,P.Comp.Phys.Commun.2005,91,1.
(47) Cornell,W.D.;Cieplak,P.;Bayly,C.I.;Gould,I.R.;Merz,K. M.,Jr.;Ferguson,D.M.;Spellmeyer,D.C.;Fox,T.;Caldwell, J.W.;Kollman,P.A.J.Am.Chem.Soc.1995,117,5179.
(48) Case,D.A.;Darden,T.A.;Cheatham,T.E.,III.;Simmerling,C. L.;Wang,J.;Duke,R.E.;Luo,R.;Walker,R.C.;Zhang,W.; Merz,K.M.;Roberts,B.;Wang,B.;Hayik,S.;Roitberg,A.; Seabra,G.;Kolossváry,I.;Wong,K.F.;Paesani,F.;Vanicek,J.; Liu,J.;Wu,X.;Brozell,S.R.;Steinbrecher,T.;Gohlke,H.;Cai, Q.;Ye,X.;Wang,J.;Hsieh,M.J.;Cui,G.;Roe,D.R.; Mathews,D.H.;Seetin,M.G.;Sagui,C.;Babin,V.;Luchko, T.;Gusarov,S.;Kovalenko,A.;Kollman,P.A.AMBER 11; University of California:San Francisco.
(49) G?tz,A.W.;W?lfle,T.;Walker,R.C.Annual Reports in Computational Chemistry;Elsevier:Amsterdam,2010;Vol.6, p 21.
(50) Xu,D.;Williamson,M.J.;Walker,R.C.Annual Reports in Computational Chemistry;Elsevier:Amsterdam,2010;Vol.6, p 1
April 15,2011;Revised:June 9,2011;Published on Web:June 24,2011.
GPU Triggered Revolution in Computational Chemistry
BAO Jian-Zhang1FENG Xin-Tian2YU Jian-Guo2,*
(1Department of Systems Science,School of Management,Beijing Normal University,Beijing 100875,P.R.China;2College of Chemistry,Beijing Normal University,Beijing 100875,P.R.China)
Over the last 3 years,the use of graphics processing units(GPU)in general purpose computing has been increasing because of the development of GPU hardware and programming tools such as CUDA(compute unified device architecture).Here,we summarize the progress in algorithms and the corresponding software with regard to computational chemistry using GPU including quantum chemistry and molecular dynamics simulations in detail.We introduce and explore the newly developed TeraChem program,which is unique quantum chemical software and we discuss the algorithms, implementations,and functionality of the program.Finally,we give an optimistic outlook for the use of GPU in computational chemistry.
GPU;CUDA;Computational chemistry;Molecular dynamics;TeraChem
?Corresponding author.Email:jianguo_yu@bnu.edu.cn;Tel:+86-10-58802051.
The project was supported by the National Natural Science Foundation of China(20733002,20873008,21073014).
國家自然科學(xué)基金(20733002,20873008,21073014)資助項目
O641