国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

神威太湖之光上分子動(dòng)力學(xué)模擬的性能優(yōu)化?

2021-11-09 05:52:20陳一峯
軟件學(xué)報(bào) 2021年9期
關(guān)鍵詞:規(guī)則化神威線程

田 卓,陳一峯

(北京大學(xué) 信息科學(xué)與技術(shù)學(xué)院,北京 100 871)

分子動(dòng)力學(xué)模擬是考察系統(tǒng)隨時(shí)間演化的行為[1,2].在一定時(shí)間內(nèi),靠計(jì)算機(jī)模擬分子和原子體系運(yùn)動(dòng),廣泛應(yīng)用于物理、化學(xué)、生物等領(lǐng)域.用分子動(dòng)力學(xué)模擬微觀生物現(xiàn)象如蛋白質(zhì)折疊[3,4]所需時(shí)間尺度為毫秒,為捕獲原子震蕩現(xiàn)象,每個(gè)迭代步設(shè)為1fs~2.5fs,模擬總時(shí)長(zhǎng)若為毫秒,需要1012個(gè)迭代步.相鄰兩個(gè)迭代步間具有相關(guān)性,需要一次通信,而頻繁通信成為此類問(wèn)題計(jì)算性能的主要瓶頸.

時(shí)間演化類問(wèn)題從時(shí)間軸來(lái)模擬體系演化.時(shí)間被離散化為一定步長(zhǎng)為間隔的時(shí)間點(diǎn),下一個(gè)時(shí)間點(diǎn)的狀態(tài)依賴上一個(gè)時(shí)間點(diǎn)的狀態(tài),兩個(gè)狀態(tài)之間需要一次通信以交換數(shù)據(jù).典型的應(yīng)用是分子動(dòng)力學(xué)模擬[5,6],分子沿著這些時(shí)間點(diǎn)運(yùn)動(dòng),每個(gè)時(shí)間點(diǎn)對(duì)應(yīng)分子的一個(gè)狀態(tài).分子在t時(shí)刻的狀態(tài)用向量X(t)表示,記錄t時(shí)刻所有粒子的位置,速度等狀態(tài)信息.t+1 時(shí)刻的狀態(tài)X(t+1)由t時(shí)刻狀態(tài)X(t)演算而來(lái),即X(t+1)=f(X(t)).因而,不同時(shí)刻粒子狀態(tài)間的關(guān)系是相互依賴的,需要通信.而神威上的通信延遲較長(zhǎng)[7],包括網(wǎng)卡上的通信延遲以及較長(zhǎng)的數(shù)據(jù)通路所帶來(lái)的通信延遲都太長(zhǎng)了.此類計(jì)算模式的時(shí)間演化類程序在高延遲的神威集群上如何優(yōu)化,規(guī)避通信延遲,提高性能,是本文的宗旨.

神威太湖之光超級(jí)計(jì)算機(jī)以理論峰值125.4PFLOPS/s 位居世界第一,其SW26010 處理器是針對(duì)神威定制的多核處理器,每個(gè)處理器由4 個(gè)核組組成,每個(gè)核組包含1 個(gè)主核和64 個(gè)從核.神威超級(jí)計(jì)算機(jī)上共安裝了40 96 0 個(gè)SW26010 處理器,共10 64 9 600 個(gè)核[8].在神威上,大部分應(yīng)用是以一個(gè)CPU 作為單位編程[9],只用4個(gè)核組中的一個(gè)核組進(jìn)行計(jì)算和通信,如圖1所示.CPU 上的4 個(gè)核組共享一個(gè)網(wǎng)絡(luò)端口,若問(wèn)題規(guī)模不變,這就迫使我們充分利用所有核組的計(jì)算能力,以提高性能,如圖2,4 個(gè)主核同時(shí)計(jì)算和通信.由圖可見(jiàn),兩種模式的區(qū)別是:(1)進(jìn)程數(shù)不同;(2)消息個(gè)數(shù)不同.設(shè)問(wèn)題規(guī)模為N,進(jìn)程個(gè)數(shù)為P,模式1,進(jìn)程上任務(wù)量為N/P,消息個(gè)數(shù)m.模式2,每進(jìn)程上任務(wù)量N/4P,消息個(gè)數(shù)4×m.消息個(gè)數(shù)增加了4 倍,因而帶來(lái)了通信延遲.如何在以核組為單位的編程模式中減少消息個(gè)數(shù),優(yōu)化通信延遲.

如圖3所示,每個(gè)CPU 只選一個(gè)進(jìn)程用于與外界通信[10],片上所有核間的數(shù)據(jù)同步是通過(guò)共享片外存儲(chǔ)來(lái)實(shí)現(xiàn),減少了用于通信的進(jìn)程數(shù),即實(shí)現(xiàn)了消息個(gè)數(shù)的減少,優(yōu)化了通信延遲.這是神威上較快的共享數(shù)據(jù)的方式[7],但由于多核訪存需要經(jīng)過(guò)訪存隊(duì)列,這種方式仍然較慢,帶來(lái)訪存延遲.

Fig.1 Node master process mode圖1 節(jié)點(diǎn)主進(jìn)程方式

Fig.2 Core groups programming圖2 核組為單位編程

Fig.3 Reducing the number of processes圖3 減少進(jìn)程數(shù)方式

針對(duì)諸如分子動(dòng)力學(xué)模擬等延遲敏感的時(shí)間演化類應(yīng)用,本文的主要貢獻(xiàn)是,給出了完整的主從核異構(gòu)的國(guó)產(chǎn)神威處理器上的一系列優(yōu)化技術(shù),為類似的通信受限類程序提供了參考.

(1)異構(gòu)體系結(jié)構(gòu)下核間同步的優(yōu)化,采用共享內(nèi)存等待與從核同步相結(jié)合的方式,優(yōu)化訪存延遲,進(jìn)而優(yōu)化通信延遲;

(2)改變計(jì)算模式,采取有利于減少核間數(shù)據(jù)關(guān)聯(lián)和依賴關(guān)系的計(jì)算模式,減少相鄰迭代步間的通信次數(shù)和數(shù)據(jù)等待,優(yōu)化通信延遲;

(3)高效訪存及規(guī)則化以提升性能.數(shù)據(jù)傳輸與計(jì)算重疊,以優(yōu)化從核訪主存效率.規(guī)則化數(shù)據(jù)結(jié)構(gòu)以提升性能,使得向量長(zhǎng)度對(duì)齊、連續(xù)、大小規(guī)整.

本文第1 節(jié)對(duì)神威太湖之光的結(jié)構(gòu)及實(shí)例的計(jì)算模式進(jìn)行描述.第2 節(jié)給出神威上的幾種優(yōu)化技術(shù),并進(jìn)行詳細(xì)闡述.第3 節(jié)對(duì)實(shí)現(xiàn)結(jié)果進(jìn)行描述.第4 節(jié)對(duì)已有研究工作進(jìn)行分析和總結(jié).第5 節(jié)總結(jié)全文.

1 神威結(jié)構(gòu)及計(jì)算實(shí)例

1.1 神威結(jié)構(gòu)

神威太湖之光超級(jí)計(jì)算機(jī)是基于主從核異構(gòu)的體系結(jié)構(gòu)[7],如圖4所示.處理器芯片SW26010 由4 個(gè)核組(core gro ups,簡(jiǎn)稱CGs)構(gòu)成,每個(gè)核組包含一個(gè)主核MPE(運(yùn)算控制核心,management pro cessing e lement,簡(jiǎn)稱MPE)和一個(gè)CPE 集群(computing p rocessing elements,簡(jiǎn)稱CPEs).CPE 集群由64 個(gè)從核按照8×8 的網(wǎng)狀格式組成,64 個(gè)從核陣列之間可采用低延遲的寄存器方式通信.4 個(gè)核組間通過(guò)片上網(wǎng)絡(luò)(network on chip,簡(jiǎn)稱Noc)連接,每個(gè)核組有自己的內(nèi)存空間,通過(guò)內(nèi)存控制器(memory controller,簡(jiǎn)稱MC)連接到MPE 和CPEs 上.協(xié)議處理單元(protocol processing unit,簡(jiǎn)稱PPU)負(fù)責(zé)處理來(lái)自CPEs 和MPE 不同類型的請(qǐng)求.所有核組通過(guò)系統(tǒng)接口(system interface,簡(jiǎn)稱SI)與外界相連.

Fig.4 Architecture of the SW26010 processor圖4 神威體系結(jié)構(gòu)

每個(gè)從核有64KB 的SPM(scratch pad memory).為了提高內(nèi)存帶寬的使用率,從核可通過(guò)DMA 方式批量訪問(wèn)主存(main memory),DMA 通道能夠高效地在主存和SPM 間傳遞數(shù)據(jù).國(guó)產(chǎn)眾核服務(wù)器的高性能集群上,每個(gè)節(jié)點(diǎn)大小為4,節(jié)點(diǎn)內(nèi)相對(duì)進(jìn)程號(hào)為0 的進(jìn)程是節(jié)點(diǎn)主進(jìn)程.節(jié)點(diǎn)內(nèi)4 個(gè)進(jìn)程共享同一個(gè)網(wǎng)絡(luò)端口,由系統(tǒng)接口SI 連接.在優(yōu)化算法中,我們選用0 號(hào)主進(jìn)程用于通信,其余3 個(gè)進(jìn)程與0 號(hào)進(jìn)程間通過(guò)片上共享數(shù)據(jù)交互信息.

申威異構(gòu)的體系架構(gòu)下,若問(wèn)題本身的計(jì)算具有高頻迭代性質(zhì),同時(shí)不同處理單元上的所分配的計(jì)算任務(wù)之間具有相互依賴性,由此產(chǎn)生的相互依賴的計(jì)算需要在多個(gè)異構(gòu)單元下進(jìn)行高頻通信以及同步訪存.本文提出的優(yōu)化策略能夠?yàn)榇祟愌舆t敏感類應(yīng)用的性能優(yōu)化提供一定的參考.本文的算例是基于時(shí)間演化類程序的典型代表分子動(dòng)力學(xué)模擬為例,此外,本文提出的優(yōu)化策略同樣普適于類似的高頻迭代類應(yīng)用如stencil 計(jì)算,它是很多科學(xué)計(jì)算類應(yīng)用最為重要和耗時(shí)最多的計(jì)算核心.此類應(yīng)用的特征是問(wèn)題本身的求解需要大量高頻迭代,迭代算法耗時(shí)較多.此類應(yīng)用在異構(gòu)體系結(jié)構(gòu)下的性能瓶頸是系統(tǒng)較長(zhǎng)的延遲,性能優(yōu)化的重點(diǎn)在于提高迭代頻率.

1.2 計(jì)算實(shí)例

分子動(dòng)力學(xué)模擬是指用計(jì)算機(jī)模擬大量粒子系統(tǒng)中每個(gè)粒子的運(yùn)動(dòng)過(guò)程.系統(tǒng)中每個(gè)粒子在其他粒子所形成的勢(shì)場(chǎng)下運(yùn)動(dòng),運(yùn)動(dòng)方程遵循牛頓定律[11].牛頓方程如下:

其中:N表示系統(tǒng)中的原子數(shù);Mi,ri,Fi分別表示原子i的質(zhì)量、位移以及受力;Φ表示勢(shì)函數(shù),勢(shì)函數(shù)需能夠描述系統(tǒng)在時(shí)間演化的各個(gè)階段,即原子各種狀態(tài)下的相互作用.復(fù)雜系統(tǒng)的描述多采用多體勢(shì),本文研究的硅材料,原子間的作用勢(shì)取決于原子間的距離以及原子間的成鍵方向[12,13].硅原子間的多體作用模型采用典型的共價(jià)鍵勢(shì)Tersoff 勢(shì)描述.Tersoff 勢(shì)函數(shù)的數(shù)學(xué)表示為

fR為排斥勢(shì),fA為吸引勢(shì),fC為截?cái)嗪瘮?shù),bij為鍵級(jí)項(xiàng):

本文以分子動(dòng)力學(xué)模擬中多體作用模型實(shí)現(xiàn)的單晶硅體系原子模擬為計(jì)算實(shí)例,說(shuō)明這種計(jì)算模式的應(yīng)用在神威集群上運(yùn)行時(shí)所遇到的性能瓶頸,并給出幾種優(yōu)化技術(shù).硅原子之間的多體作用模型采用Tersoff 勢(shì)函數(shù)[14],該模型的特點(diǎn)是原子之間的相互作用依賴于原子所處的局域環(huán)境.每個(gè)迭代步將原子t時(shí)刻的狀態(tài)推演到t+1 時(shí)刻,更新原子狀態(tài)時(shí),需獲得該原子的所有鄰居原子的狀態(tài)信息,即每個(gè)迭代步需要一次同步.原子之間的依賴關(guān)系具有局部相關(guān)性,因而導(dǎo)致一定的異步性.此類時(shí)間演化類問(wèn)題,硅原子的狀態(tài)是由時(shí)間來(lái)推進(jìn)演化的,因此,不同迭代步之間是相互依賴的,需要一次通信.

考慮常溫下,硅晶體保持規(guī)則的金剛石晶胞結(jié)構(gòu),每個(gè)原子周圍有4 個(gè)鄰近原子.如圖5所示,硅原子a有4個(gè)鄰居原子b,c,d,e,每個(gè)原子由不同線程計(jì)算.t時(shí)刻,每個(gè)線程更新了5 個(gè)粒子的位置信息,進(jìn)入下一個(gè)迭代步.a原子的受力受到它的所有鄰居原子的影響,需要得到4 個(gè)鄰居粒子的位置信息,來(lái)計(jì)算不同鄰居對(duì)a的分子間作用力.因此,需要一次通信來(lái)獲得所有鄰居在t時(shí)刻的位置信息.

Fig.5 Schematic of interatomic interaction圖5 硅原子間相互作用示意圖

有效的原子模擬現(xiàn)象,需要1012個(gè)迭代步,相鄰迭代步間需要一次通信,那么在實(shí)驗(yàn)室環(huán)境下,觀察到有效的原子模擬現(xiàn)象是不現(xiàn)實(shí)的.為了提高硅原子模擬的迭代頻率,有效的做法是減少迭代步間通信的延遲.由神威體系高性能集群的特點(diǎn)可知,其上的通信延遲較長(zhǎng).那么針對(duì)諸如分子動(dòng)力學(xué)模擬的時(shí)間演化類程序,如何在神威上減少通信延遲、提高迭代頻率,本文給出了一系列優(yōu)化技術(shù).

2 神威上的優(yōu)化

CPU 的從核線程負(fù)責(zé)計(jì)算,兩個(gè)從核線程位于CPU0 和CPU1 上,如圖6.CPU0 上的從核線程產(chǎn)生的數(shù)據(jù),是CPU1 上的從核線程下一個(gè)迭代步的輸入,輸出又作為CPU0 上從核線程下個(gè)迭代步的輸入.這樣產(chǎn)生了數(shù)據(jù)依賴關(guān)系.

Fig.6 Data communication loop between different CPUs on Sunway圖6 神威上不同CPU 間的數(shù)據(jù)通信環(huán)路

若不做任何計(jì)算,數(shù)據(jù)在兩個(gè)CPU 之間傳遞一個(gè)來(lái)回也需要花費(fèi)時(shí)間.CPU 計(jì)算能力即使再快,這個(gè)通信環(huán)路花費(fèi)的時(shí)間長(zhǎng)的話,也沒(méi)有任何意義.不考慮任何計(jì)算時(shí)間,系統(tǒng)的速度極限即每秒能做多少次迭代,與這個(gè)環(huán)路每秒能做多少次通信是一樣的.經(jīng)測(cè)試,神威上的速度極限是每秒能做3 00 0 次通信,但這個(gè)速度實(shí)際上太慢了.環(huán)路上的通信延遲,包括發(fā)生在網(wǎng)卡上和每臺(tái)服務(wù)器上的延遲都太長(zhǎng)了.對(duì)通信受限的時(shí)間演化類程序而言,通信延遲將極大地制約神威機(jī)器性能的發(fā)揮.因此,我們希望在神威上優(yōu)化通信延遲.

SW26010 眾核處理器采用片上融合的異構(gòu)體系結(jié)構(gòu)[15],包含4 個(gè)核組,如圖7所示.4 個(gè)核組之間通過(guò)片上互聯(lián)網(wǎng)絡(luò)(network on chip,簡(jiǎn)稱Noc)連接,片上互聯(lián)網(wǎng)絡(luò)與系統(tǒng)接口(system i nterface,簡(jiǎn)稱SI)相連,系統(tǒng)接口連接到以太網(wǎng).由申威處理器4 個(gè)核組與以太網(wǎng)連接的方式可以看出:4 個(gè)核組在硬件上共享同一個(gè)網(wǎng)絡(luò)接口,系統(tǒng)的通信能力固定.如果4 個(gè)核組的260 個(gè)核并發(fā)通信,多核并發(fā)通信將造成進(jìn)程間競(jìng)爭(zhēng)網(wǎng)絡(luò)資源;同時(shí),較多的消息個(gè)數(shù)將導(dǎo)致網(wǎng)絡(luò)阻塞,通信性能降低.因此,本文考慮選用一個(gè)主核負(fù)責(zé)與外界通信,芯片內(nèi)部采用核間同步策略來(lái)降低競(jìng)爭(zhēng)成本,實(shí)現(xiàn)網(wǎng)絡(luò)通信消息個(gè)數(shù)的減少,優(yōu)化通信延遲.

Fig.7 Connection of network on SW26010圖7 申威芯片網(wǎng)絡(luò)連接示意圖

分子動(dòng)力學(xué)模擬中,粒子的狀態(tài)迭代函數(shù)需要獲取其遠(yuǎn)程鄰居粒子的狀態(tài)信息,如更新后的位置,以進(jìn)行新的受力計(jì)算,進(jìn)而更新加速度、速度和位移.迭代函數(shù)的性質(zhì)決定了不同處理器之間的計(jì)算是相互依賴的,需要大量頻繁的數(shù)據(jù)同步.本文采用的單進(jìn)程通信能夠降低處理器內(nèi)部的通信開(kāi)銷,以及維護(hù)大量通信鏈接對(duì)資源的占用而帶來(lái)性能優(yōu)化.這部分的優(yōu)勢(shì)是因?yàn)榉肿觿?dòng)力學(xué)模擬程序是時(shí)間演化類以及高頻迭代類程序的典型代表,不同處理器核間頻繁大量的數(shù)據(jù)交換導(dǎo)致此類程序?qū)ρ舆t較敏感,網(wǎng)絡(luò)延遲對(duì)算法的性能影響較大.因此,神威系統(tǒng)上單進(jìn)程通信的優(yōu)化算法主要針對(duì)對(duì)異構(gòu)架構(gòu)下類似的延遲敏感及通信受限類應(yīng)用的優(yōu)化提供了參考.

2.1 減少消息個(gè)數(shù),優(yōu)化通信延遲

2.1.1 片上同步減少消息個(gè)數(shù),但帶來(lái)訪存延遲

SW26010 芯片由4 個(gè)核組構(gòu)成,以核組為單位的編程模式中,每個(gè)核組的64 個(gè)從核在計(jì)算結(jié)束后,需要通過(guò)其所在主核與其他進(jìn)程通信,交換粒子更新后的狀態(tài)信息,以進(jìn)入下一個(gè)迭代步.由SW26010 芯片的結(jié)構(gòu)特點(diǎn)可知:4 個(gè)核組通過(guò)系統(tǒng)接口SI 共享同一個(gè)網(wǎng)絡(luò)端口,系統(tǒng)的通信能力固定.那么,如何優(yōu)化通信延遲成為首要解決的問(wèn)題.

本文通過(guò)減少用于通信的進(jìn)程數(shù)以減少消息個(gè)數(shù),優(yōu)化通信延遲.每個(gè)節(jié)點(diǎn)選取0 號(hào)核組即0 號(hào)進(jìn)程作為通信進(jìn)程,CPU 上其余3 個(gè)進(jìn)程與0 號(hào)進(jìn)程間通過(guò)片上同步進(jìn)行通信.與以核組為單位的編程模式相比,通信進(jìn)程數(shù)減少到原來(lái)的四分之一.

具體做法如圖8所示,每個(gè)節(jié)點(diǎn)的0 號(hào)主核首先進(jìn)入通信等待狀態(tài),等待接收其他節(jié)點(diǎn)在上一時(shí)刻所更新的粒子信息.接收消息后,0 號(hào)主核需要將消息同步給本節(jié)點(diǎn)的所有從核以開(kāi)始計(jì)算.由于神威處理器芯片是主從核異構(gòu)模式,該同步過(guò)程包括兩部分:主核同步和從核同步.0 號(hào)主核將消息同步給其他3 個(gè)主核,此時(shí),4 個(gè)主核完成同步.每個(gè)主核需要將消息同步給該核組的64 個(gè)從核,實(shí)現(xiàn)主從核的同步.至此,所有負(fù)責(zé)計(jì)算的256 個(gè)從核得到了其他節(jié)點(diǎn)的粒子信息,開(kāi)始計(jì)算.由于主從核的異步執(zhí)行,此時(shí)4 個(gè)核組的0 號(hào)主核等待本核組的所有從核計(jì)算結(jié)束.核組內(nèi)的從核計(jì)算結(jié)束后,通過(guò)與該核組的主核執(zhí)行一次主從核同步,使得該核組的主核獲得本核組的所有從核已計(jì)算完成的消息.4 個(gè)核組執(zhí)行一次主核同步,同步所有核組計(jì)算完成的狀態(tài).0 號(hào)主核將計(jì)算后的粒子狀態(tài)通信給其他節(jié)點(diǎn).至此,一個(gè)完整的迭代步結(jié)束.

Fig.8 Process of synchronization on the chip圖8 片上同步的實(shí)現(xiàn)流程

異構(gòu)體系結(jié)構(gòu)下代碼分為兩部分:主核代碼和從核代碼,如圖9、圖10所示.

圖8 表示一個(gè)完整的迭代步,包括計(jì)算部分和通信部分.一個(gè)迭代步內(nèi),需要兩次主核同步、兩次主核與從核同步.由于神威處理器沒(méi)有cache,同步均需通過(guò)共享內(nèi)存數(shù)據(jù)的方式來(lái)實(shí)現(xiàn)[16],即同步需訪存.掣肘于神威處理器訪存長(zhǎng)延遲的特點(diǎn),節(jié)點(diǎn)同步雖減少了網(wǎng)絡(luò)通信的消息個(gè)數(shù),但同時(shí)也帶來(lái)了訪存延遲,對(duì)優(yōu)化消息個(gè)數(shù)帶來(lái)了挑戰(zhàn).那么,如何優(yōu)化訪存延遲?

申威處理器上內(nèi)存總大小為32GB,每個(gè)核組通過(guò)內(nèi)存控制器與8GB 的本核組內(nèi)存相連,如圖7所示,不同核組之間如需同步,需要訪問(wèn)片外存儲(chǔ)器.那么,多核組之間共享內(nèi)存空間在內(nèi)存分配上將帶來(lái)一定的性能損失[16].該部分的性能損失在本文的優(yōu)化算法中,采用節(jié)點(diǎn)共享變量的方式規(guī)避.多核組間通過(guò)檢測(cè)節(jié)點(diǎn)共享變量實(shí)現(xiàn)同步,而非顯式同步的方式優(yōu)化訪存延遲.在節(jié)點(diǎn)主進(jìn)程上設(shè)置節(jié)點(diǎn)共享變量,不同核組間通過(guò)共享變量以獲取所有核組間的同步狀態(tài),以此規(guī)避了對(duì)大內(nèi)存的頻繁訪問(wèn)而帶來(lái)的訪存延遲.

Fig.9 Code on MPE for node-sync algorithm圖9 片上同步的主核代碼

Fig.10 Code on CPEs for node-sync algorithm圖10 片上同步的從核代碼

2.1.2 共享內(nèi)存等待與核間同步相結(jié)合,優(yōu)化訪存延遲

神威處理器主從核異構(gòu)的體系結(jié)構(gòu)特點(diǎn),導(dǎo)致主從核之間的同步需要通過(guò)訪問(wèn)片外存儲(chǔ)器實(shí)現(xiàn).多核訪存需要經(jīng)過(guò)訪存隊(duì)列,這種同步方式較慢,帶來(lái)訪存延遲.可見(jiàn),片上同步的主要瓶頸在于同步需訪存.神威體系結(jié)構(gòu)下,主核間同步可通過(guò)節(jié)點(diǎn)共享變量實(shí)現(xiàn),單個(gè)核組的從核間同步速度較快,無(wú)需訪存.那么,如何實(shí)現(xiàn)所有主從核間的快速同步?我們采用共享內(nèi)存等待與核間同步相結(jié)合的方式,具體做法如圖11所示.

Fig.11 Process of combining shared memory waiting with inter-core synchronization圖11 共享內(nèi)存等待與核間同步相結(jié)合實(shí)現(xiàn)流程

流程如下:每個(gè)節(jié)點(diǎn)的0 號(hào)主核負(fù)責(zé)通信,將通信完成指示變量定義為節(jié)點(diǎn)共享變量,節(jié)點(diǎn)內(nèi)所有主核同時(shí)可見(jiàn).那么節(jié)點(diǎn)內(nèi)的主核間可通過(guò)節(jié)點(diǎn)共享變量進(jìn)行同步,無(wú)需顯式同步.此時(shí),每個(gè)核組的0 號(hào)從核等待通信完成指示變量的變化.當(dāng)該變量加1 后,說(shuō)明主核已完成通信,接收到其他節(jié)點(diǎn)在t時(shí)刻的狀態(tài)信息.0 號(hào)從核此時(shí)需要將此狀態(tài)同步給所在核組的其余63 個(gè)從核.同一核組的從核間同步速度較快,無(wú)需訪存.每個(gè)核組的從核完成組內(nèi)同步后,從核開(kāi)始并行加速計(jì)算.核組內(nèi)所有從核完成計(jì)算后,該核組內(nèi)的64 個(gè)從核經(jīng)過(guò)一次從核同步,以保證64 個(gè)從核狀態(tài)統(tǒng)一.從核同步后,每個(gè)核組的0 號(hào)從核將計(jì)算完成的節(jié)點(diǎn)共享變量加1.該共享變量對(duì)所有核組的主核同時(shí)可見(jiàn).所有從核加速計(jì)算的同時(shí),0 號(hào)通信主核等待4 個(gè)0 號(hào)從核計(jì)算完成的節(jié)點(diǎn)共享變量的變化.當(dāng)0 號(hào)主核檢測(cè)到4 個(gè)0 號(hào)從核均將計(jì)算完成指示變量加1 后,0 號(hào)主核開(kāi)始與其他節(jié)點(diǎn)進(jìn)行通信.至此,完成一個(gè)完整的迭代步.主從核的代碼實(shí)現(xiàn)參見(jiàn)圖12、圖13 的虛代碼所示.

Fig.12 Code on MPE for shared memory waiting圖12 共享內(nèi)存等待算法的主核代碼

Fig.13 Code on CPEs for shared memory waiting圖13 共享內(nèi)存等待算法的從核代碼

神威異構(gòu)體系結(jié)構(gòu)下,單核組通信的模式需利用核間同步,以同步通信數(shù)據(jù).SW26010 芯片的硬件結(jié)構(gòu)決定了主從核之間同步需要訪問(wèn)片外存儲(chǔ)器,申威處理器較長(zhǎng)的訪存延遲導(dǎo)致該同步模式效率較低,本文采用共享內(nèi)存等待的方式規(guī)避訪存延遲.共享內(nèi)存等待方式的優(yōu)勢(shì)是:核組間無(wú)需顯式同步,只需要設(shè)置共享內(nèi)存等待變量;該變量對(duì)節(jié)點(diǎn)內(nèi)所有主核同時(shí)可見(jiàn),只需要檢測(cè)共享內(nèi)存指示變量的變化來(lái)實(shí)現(xiàn)不同核組間的隱式同步,避免了核組同步時(shí)的訪存操作,規(guī)避了申威處理器較長(zhǎng)的訪存時(shí)延.

2.2 改變計(jì)算模式,減少核間等待,優(yōu)化通信延遲

2.2.1 基本的并行模式

共價(jià)鍵分子的原子間相互作用勢(shì)不僅取決于原子間的距離,與原子間的成鍵方向有密切關(guān)系,因此需要考慮周圍原子的影響.硅原子之間的多體作用模型采用Tersoff 勢(shì)函數(shù)[14],計(jì)算涉及兩個(gè)以上的原子.計(jì)算原子i受到它的鄰居j的作用力時(shí),需要考慮i的其他3 個(gè)鄰居此時(shí)對(duì)i的影響.見(jiàn)圖14:由Tersoff 勢(shì)函數(shù)可得到鄰居j對(duì)i的作用力func1,力是相互作用力,原子j也受到了一個(gè)大小相等方向相反的作用力?func1,并且需要加到j(luò)原子上[17].在神威上是多線程計(jì)算,j粒子同時(shí)在由另外一個(gè)線程計(jì)算j粒子與它的鄰居粒子之間的受力.這個(gè)方向相反的作用力?func1 在同一時(shí)刻不能同時(shí)加到j(luò)粒子身上.基本算法是:需要存儲(chǔ)本線程所計(jì)算的對(duì)應(yīng)原子受到其所有鄰居原子的全部作用力,通過(guò)同步,傳遞給對(duì)應(yīng)原子所在線程.所有鄰居原子線程的受力計(jì)算結(jié)束后,接收消息,將原子受到的鄰居粒子的反作用力疊加起來(lái),保證所有原子作用力的計(jì)算是完整的、準(zhǔn)確的.

對(duì)每個(gè)原子i而言,以計(jì)算它的鄰居粒子j=0 對(duì)它的作用力func1 為例,說(shuō)明受力計(jì)算的過(guò)程.首先,計(jì)算鄰居粒子j對(duì)i的作用力時(shí),需要考慮i粒子其余3 個(gè)鄰居粒子k0,k1,k2此時(shí)對(duì)i的影響.func1 是i和j之間大小相等、方向相反的相互作用力,即i粒子對(duì)j粒子的反作用力?func1,需同時(shí)累加到j(luò)粒子上.若為并行程序,此時(shí)j粒子正在由其他線程計(jì)算j粒子與它的鄰居粒子之間的受力.不能同時(shí)把?func1 累加到j(luò)粒子上,需要交互粒子信息.最后,其他的3 個(gè)鄰居粒子也受到了反作用力?func2,同樣需要在3 個(gè)粒子的受力上減去.受力計(jì)算結(jié)束后,算法采用蛙跳格式更新位移.

Fig.14 Inter-atomic forces圖14 原子間作用力

在分子動(dòng)力學(xué)模擬中,分子間作用力的計(jì)算時(shí)間占80%以上[18,19],是最重要的部分,也是發(fā)揮神威機(jī)器計(jì)算性能的關(guān)鍵所在.在迭代過(guò)程中,計(jì)算核心需要頻繁地交互粒子信息,以保證分子間作用力計(jì)算的準(zhǔn)確性.神威機(jī)器高延遲的特點(diǎn),將使粒子信息的交互遇到瓶頸,此類應(yīng)用會(huì)限制神威性能的發(fā)揮.程序特點(diǎn)是典型的BSP 模式,如圖15所示.每個(gè)迭代步將粒子的位置,速度等信息存儲(chǔ)在一個(gè)向量中,該向量包含多個(gè)分量.粒子間作用力的計(jì)算只涉及到其鄰居粒子,向量的不同分量間具有局部相關(guān)性.即:后面的分量是由前面幾個(gè)分量計(jì)算而來(lái),僅與前面的幾個(gè)分量有關(guān).數(shù)據(jù)的局部相關(guān)性和依賴性,導(dǎo)致具有一定的異步性.

Fig.15 Implementation process of parallel algorithm圖15 并行實(shí)現(xiàn)算法流程圖

2.2.2 改變計(jì)算模式,減少通信次數(shù),優(yōu)化消息個(gè)數(shù)

在原來(lái)的計(jì)算模式中,向量的一個(gè)分量在計(jì)算過(guò)程中會(huì)產(chǎn)生一些中間數(shù)據(jù),另外的分量可以利用.向量的不同分量之間是相互依賴的關(guān)系,是緊耦合的,導(dǎo)致芯片內(nèi)部通過(guò)主存的這種數(shù)據(jù)傳輸和數(shù)據(jù)交換會(huì)大量增加.我們打破了這種依賴,變?yōu)樗神詈?把原來(lái)互相寫同步的計(jì)算模式變成了每個(gè)線程自己去做多步的計(jì)算,是獨(dú)立計(jì)算,減少迭代步中間的同步次數(shù),更流水化.代價(jià)是會(huì)造成計(jì)算量少量增加,但是整個(gè)吞吐率反而提高了.

多體作用模型中,如圖16所示,計(jì)算i粒子受到鄰居j的作用力時(shí),其他3 個(gè)鄰居k0,k1,k2也對(duì)i粒子產(chǎn)生了作用力.這意味著j,k0,k1,k2分別受到了來(lái)自i粒子的反作用力,需要從它們的受力上減去.考慮i粒子的全部受力,不僅需要計(jì)算它受到其鄰居粒子的作用力,還需要計(jì)算i粒子作為鄰居粒子時(shí),它所受到的反作用力.如圖17所示,當(dāng)i粒子作為j的鄰居粒子時(shí),它會(huì)受到j(luò)粒子對(duì)它的反作用力?func3.此外,如圖18所示,j粒子在計(jì)算它的鄰居k對(duì)其作用力時(shí),會(huì)對(duì)i產(chǎn)生一個(gè)反作用力?func4,也需要從i粒子的受力上減去.

具體做法如下:

(1)計(jì)算i粒子受到的作用力.i粒子所受到的作用力來(lái)自于它的所有鄰居粒子.虛代碼如圖19所示.變量j循環(huán)i粒子的所有鄰居,例如,i粒子的第0 個(gè)鄰居j=0 時(shí),計(jì)算j對(duì)i的作用力func1.變量k循環(huán)i粒子除了j以外的所有鄰居,它們對(duì)i粒子的力為func2,不同的鄰居,如k0,k1,k2對(duì)i粒子的力不同,與位置有關(guān);

(2)計(jì)算i粒子受到的反作用力.i粒子所受到的反作用力來(lái)自于以它的鄰居粒子為主的計(jì)算過(guò)程中,如i粒子作為j粒子的鄰居時(shí),i粒子所受到反作用力.計(jì)算j粒子受力時(shí),遍歷j的所有鄰居.假設(shè)j的0 號(hào)鄰居為i,計(jì)算得到i作為j的鄰居時(shí),i受到的反作用力func3,需要從i粒子的受力上減去.atom[i].f?=func3.若0 號(hào)鄰居不為i,j對(duì)i的反作用力func4,atom[i].f?=func4.

Fig.16 Force of i atom圖16 i 粒子受到的作用力

Fig.17 Reaction force func3圖17 i 粒子受到的反作用力func3

Fig.18 Reaction force func4圖18 i 粒子受到的反作用力func4

Fig.19 Algorithm for changing the calculation mode圖19 改變計(jì)算模式的算法

i粒子受到的反作用力在原算法中是由負(fù)責(zé)計(jì)算它的鄰居粒子受力的線程完成,如func3 和func4 是由負(fù)責(zé)計(jì)算j粒子的線程完成,那么線程間會(huì)產(chǎn)生相互依賴.在新的算法中,i粒子受到的反作用力仍由負(fù)責(zé)計(jì)算i粒子受力的線程計(jì)算.即將互相寫同步的緊耦合計(jì)算模式改為獨(dú)立計(jì)算的松耦合模式.每個(gè)線程在計(jì)算粒子受力時(shí)獨(dú)立計(jì)算,通信僅發(fā)生在迭代計(jì)算完成后,減少了通信次數(shù)和核間等待,優(yōu)化了通信延遲.

硅粒子結(jié)晶的多體作用模型中,原計(jì)算模式下,粒子i只需要負(fù)責(zé)計(jì)算它的4 個(gè)鄰居粒子對(duì)它的作用力,其他粒子對(duì)i粒子的反作用力通過(guò)進(jìn)程間同步而得.優(yōu)化后的計(jì)算模式為:減少粒子i與其鄰居粒子間的同步次數(shù),由i粒子完成反作用力部分的計(jì)算.所增加的計(jì)算量是i粒子需計(jì)算其鄰居粒子對(duì)它的所有反作用力.以i粒子受到其鄰居粒子j的反作用力為例,當(dāng)i粒子作為j粒子的第1 個(gè)鄰居粒子時(shí),i粒子受到j(luò)對(duì)i的反作用力func3.當(dāng)i粒子作為j粒子的第2 個(gè)、第3 個(gè)或第4 個(gè)鄰居粒子時(shí),i粒子受到j(luò)對(duì)i的反作用力為func4.那么func3和func4 的值需要從i粒子的受力計(jì)算中減去.該部分的計(jì)算與原計(jì)算模式相比為增加的部分.計(jì)算模式的改變打破了數(shù)據(jù)依賴,將緊耦合變?yōu)樗神詈?雖然帶來(lái)了計(jì)算量的增加,但是提高了吞吐.

本文提出的計(jì)算模式的優(yōu)化策略,適用于類似的時(shí)間演化類或高頻迭代程序,當(dāng)問(wèn)題本身的結(jié)構(gòu)特性為數(shù)據(jù)具有局部相關(guān)性和依賴性,由此可產(chǎn)生一定的異步性的性質(zhì),可利用本文提出的優(yōu)化計(jì)算模式的方式,將不同數(shù)據(jù)之間緊耦合的依賴關(guān)系變?yōu)樗神詈?將原計(jì)算模式中互相寫同步的計(jì)算模式改為更流水化的獨(dú)立計(jì)算.該部分的計(jì)算對(duì)計(jì)算強(qiáng)度影響的主要原因是,由于減少了進(jìn)程間同步操作而避免了受力計(jì)算的同步更新,因此需要在本地進(jìn)程額外替其他進(jìn)程執(zhí)行相應(yīng)的計(jì)算,雖然計(jì)算強(qiáng)度少量增加,但該算法利用了處理器較強(qiáng)的計(jì)算性能,掩蓋了因計(jì)算強(qiáng)度增加而帶來(lái)的性能損耗,提高了吞吐,優(yōu)化了性能.

2.3 高效訪存及規(guī)則化

2.3.1 高效訪存

在分子間作用力的計(jì)算過(guò)程中,從核需要頻繁地訪問(wèn)粒子信息,從核訪問(wèn)主存的延遲極大地限制了神威性能的發(fā)揮.每個(gè)從核上提供了64KB 的高速緩存空間SPM,在算法實(shí)現(xiàn)上,需要頻繁訪問(wèn)的粒子信息通過(guò)DMA方式批量傳送至SPM,以優(yōu)化從核訪主存效率.

每個(gè)線程負(fù)責(zé)N個(gè)粒子的計(jì)算,線程i將所負(fù)責(zé)的所有原子和其鄰居原子的速度、位移等信息從主存加載到SPM 中,如圖20所示.迭代計(jì)算前,將粒子信息通過(guò)同步DMA 加載到SPM 中,m_memcpy(MEM_TO_CACHE),將所有粒子的鄰居粒子信息通過(guò)異步DMA 加載到SPM 中,m_memcpy_async(MEM_TO_CACHE);迭代計(jì)算完成后,通過(guò)異步DMA 方式,將本線程所負(fù)責(zé)粒子的更新信息從SPM 拷貝回系統(tǒng)內(nèi)存,m_memcpy_async(CACHE_TO_MEM).異步DMA 方式將計(jì)算與主存訪問(wèn)相重疊.虛代碼如圖21所示.

Fig.20 SPM and main memory exchange data in DMA mode圖20 SP M 與主存間以DMA 方式交互數(shù)據(jù)

Fig.21 Algorithm for efficient accessing memory圖21 高效訪存算法

2.3.2 規(guī)則化

分子動(dòng)力學(xué)模擬中,以硅結(jié)晶過(guò)程為例.問(wèn)題本身不一定是規(guī)則的,但是可以以盡量規(guī)則化的方法進(jìn)行計(jì)算,在數(shù)據(jù)結(jié)構(gòu)上盡量規(guī)則化.所謂規(guī)則化,就是按照向量長(zhǎng)度是對(duì)齊,連續(xù),大小規(guī)整[20].規(guī)整是按照硬件結(jié)構(gòu)來(lái)規(guī)整的,具體做法是:將數(shù)據(jù)結(jié)構(gòu)規(guī)則化,向量寬度規(guī)則化.程序中的主要數(shù)據(jù)結(jié)構(gòu)是存儲(chǔ)例子位移、速度、加速度等信息,有一些非規(guī)則的部分.由于神威芯片的核是向量化的、規(guī)則化的,即硬件是規(guī)則化的,我們?cè)谠O(shè)計(jì)類型和數(shù)據(jù)結(jié)構(gòu)的時(shí)候,將數(shù)據(jù)規(guī)則存儲(chǔ).由于芯片的向量化、規(guī)則化,因而規(guī)則化數(shù)據(jù)結(jié)構(gòu)以提升性能.本文考慮常溫下,晶體硅的模擬.硅晶體為規(guī)則的晶胞結(jié)構(gòu),有4 個(gè)鄰居粒子.受力計(jì)算中,需分別計(jì)算4 個(gè)鄰居粒子b,c,d,e與a粒子的距離,如圖22所示.

Fig.22 Distance between atoms圖22 原子間的距離

4 次距離的計(jì)算是不凝聚的,我們針對(duì)神威核向量化的特點(diǎn),考慮指令優(yōu)化,進(jìn)行規(guī)則化計(jì)算.三維距離是計(jì)算兩點(diǎn)間3 個(gè)維度上的差的平方和再開(kāi)方,即:

由硅粒子的規(guī)則晶胞結(jié)構(gòu)可知,a粒子的受力需計(jì)算4 個(gè)鄰居粒子與a粒子的距離.我們利用規(guī)則化的數(shù)據(jù)結(jié)構(gòu),首先將粒子三維坐標(biāo)的數(shù)據(jù)結(jié)構(gòu)規(guī)則化.神威的并行C 語(yǔ)言上擴(kuò)展的數(shù)據(jù)類型為doublev4,由4 個(gè)雙精度浮點(diǎn)數(shù)構(gòu)成.粒子坐標(biāo)即定義為doublev4 類型的數(shù)據(jù)結(jié)構(gòu),如doublev4a.s;表示a粒子的位置,它的4 個(gè)浮點(diǎn)數(shù)分別代表三維坐標(biāo)和0.規(guī)則化的數(shù)據(jù)結(jié)構(gòu)去計(jì)算a與b,c,d,e之間距離時(shí),每?jī)牲c(diǎn)間需進(jìn)行差平方后的求和操作.如圖23所示,a與b間的距離首先需計(jì)算公式(12):

Fig.23 Vector representation of the distance between atoms圖23 原子間的距離的向量表示

若順序執(zhí)行4 次這樣的求和指令,那么這4 次計(jì)算是不凝聚的.考慮規(guī)則化計(jì)算,以提高訪存凝聚性.規(guī)則化計(jì)算的方式進(jìn)行指令優(yōu)化,通過(guò)一個(gè)求和指令,實(shí)現(xiàn)4 次求和計(jì)算.規(guī)則化的向量化求和是計(jì)算4 個(gè)向量之和,而不是向量的4 個(gè)分量之和.因而考慮將原始的4 個(gè)向量進(jìn)行轉(zhuǎn)置,實(shí)現(xiàn)規(guī)則化計(jì)算.修改后的形式如圖24所示.

Fig.24 Distance representation after transposition圖24 轉(zhuǎn)置后的距離表示

由此可見(jiàn):對(duì)轉(zhuǎn)置后的4 個(gè)向量進(jìn)行向量化求和后再開(kāi)平方,得到的向量的4 個(gè)分量分別表示4 個(gè)粒子與a粒子的歐幾里得距離.由此可見(jiàn):向量化的SIMD 指令等價(jià)于一個(gè)4 次循環(huán)操作,減少了指令數(shù),降低了對(duì)指令訪問(wèn)帶寬的要求,而且減少了循環(huán)引起的控制相關(guān),提升了訪存凝聚性,提高了效率.

3 實(shí)驗(yàn)結(jié)果

3.1 單節(jié)點(diǎn)性能

我們的實(shí)例是基于硅結(jié)晶的模擬,實(shí)驗(yàn)設(shè)計(jì)上,我們逐步對(duì)比了不同的優(yōu)化方法對(duì)性能的影響,以及不同問(wèn)題規(guī)模下性能的差異.在這一部分,我們主要闡述了在第2 節(jié)中所提出的3 種優(yōu)化技術(shù)對(duì)性能的提升效果.為了說(shuō)明可擴(kuò)展性,我們測(cè)試了兩種不同的問(wèn)題規(guī)模,分別是4 096 個(gè)粒子和32 768 個(gè)粒子.我們的測(cè)試是運(yùn)行在單節(jié)點(diǎn)上,啟用4 個(gè)核組.表1 給出了神威的系統(tǒng)配置.

Table 1 Su nway TaihuLight supercomputer system configuration表1 神威太湖之光超級(jí)計(jì)算機(jī)的系統(tǒng)配置

圖25 描述了每一步采用不同的優(yōu)化方法帶來(lái)的加速比的提升,我們的優(yōu)化方法最終能夠?qū)崿F(xiàn)18x 的加速比.共享內(nèi)存等待與從核同步相結(jié)合的方式對(duì)加速比的提升影響較大,緊耦合的計(jì)算模式、訪存優(yōu)化及規(guī)則化對(duì)性能提升也有一定的影響.從性能提升的角度,我們減少了消息個(gè)數(shù),優(yōu)化了通信以及訪存延遲,對(duì)時(shí)間演化類問(wèn)題迭代頻率的提升做出了較大貢獻(xiàn).

Fig.25 Speedup of different optimization methods圖25 不同優(yōu)化方法的加速比

3.2 多節(jié)點(diǎn)性能

我們的實(shí)驗(yàn)平臺(tái)是基于神威太湖之光高性能集群.為測(cè)試程序的強(qiáng)可擴(kuò)展性,我們首先測(cè)試了單個(gè)CPU 的性能.單個(gè)SW26010 處理器的性能取決于每個(gè)從核上所負(fù)責(zé)計(jì)算的原子個(gè)數(shù),我們測(cè)試了每個(gè)從核上處理不同數(shù)目的原子時(shí)性能的變化,見(jiàn)表2.模擬速度最大可以達(dá)到120KSteps/s.每個(gè)CPU 上所負(fù)責(zé)的原子個(gè)數(shù)最大為98K,浮點(diǎn)利用率達(dá)到15%.

Table 2 Single SW26010 processor performance表2 單SW26010 處理器的性能

程序的弱可擴(kuò)展性測(cè)試是基于相同的數(shù)據(jù)規(guī)模,節(jié)點(diǎn)個(gè)數(shù)不同時(shí),考察系統(tǒng)的性能.強(qiáng)可擴(kuò)展性的測(cè)試是基于不同的粒子數(shù),擴(kuò)展系統(tǒng)的節(jié)點(diǎn)數(shù),節(jié)點(diǎn)數(shù)目隨著粒子數(shù)的增加而增長(zhǎng).我們的測(cè)試是針對(duì)典型的細(xì)粒度分布,來(lái)考察典型計(jì)算模式下,系統(tǒng)的速率及強(qiáng)可擴(kuò)展性.

我們的測(cè)試?yán)昧薙W26010 處理器的所有4 個(gè)核組,每個(gè)處理器運(yùn)行4 個(gè)進(jìn)程,但負(fù)責(zé)通信的進(jìn)程只有0號(hào)主進(jìn)程.為了驗(yàn)證程序的強(qiáng)可擴(kuò)展性,我們考察了不同規(guī)模的節(jié)點(diǎn)個(gè)數(shù),從8 個(gè)節(jié)點(diǎn)到32 768 個(gè)節(jié)點(diǎn).

每個(gè)節(jié)點(diǎn)4 個(gè)進(jìn)程,最多可達(dá)到131K 個(gè)進(jìn)程.不同的系統(tǒng)規(guī)模下,每個(gè)進(jìn)程上負(fù)責(zé)處理的原子個(gè)數(shù)固定不變,為512 個(gè)原子.我們考察這種典型計(jì)算模式下系統(tǒng)的運(yùn)算速率.

我們的實(shí)驗(yàn)為考察程序的強(qiáng)可擴(kuò)展性,隨著進(jìn)程數(shù)的增加,粒子數(shù)同比例增長(zhǎng),即每個(gè)進(jìn)程上所負(fù)責(zé)計(jì)算的粒子數(shù)目保持不變.在上述細(xì)粒度分布的條件下,我們得到這種典型計(jì)算模式下的速率,即每秒迭代的步數(shù),見(jiàn)表3 第4 列.

節(jié)點(diǎn)數(shù) 進(jìn)程數(shù) 粒子數(shù) Steps/s us/step Time

Table 3 Comparison of software solution on Sunway表3 神威上不同系統(tǒng)規(guī)模下的對(duì)比

我們的測(cè)試通過(guò)改變系統(tǒng)規(guī)模,即進(jìn)程數(shù)來(lái)觀察系統(tǒng)性能的變化,如圖26所示.縱坐標(biāo)是每個(gè)迭代步所消耗的時(shí)間,橫坐標(biāo)表示了進(jìn)程數(shù)的不同,在每個(gè)點(diǎn)上的數(shù)據(jù),對(duì)應(yīng)了不同的粒子數(shù).

Fig.26 Time spent on each iteration step at different system sizes圖26 不同系統(tǒng)規(guī)模下每個(gè)迭代步的耗時(shí)

同時(shí),我們還測(cè)試了在不同系統(tǒng)規(guī)模下,程序總耗時(shí)的變化,如圖27所示.在圖27 的折線圖中,標(biāo)出了每個(gè)進(jìn)程點(diǎn)所對(duì)應(yīng)的粒子個(gè)數(shù),可觀察到時(shí)間的變化.

Fig.27 Time changes with different scales圖27 不同系統(tǒng)規(guī)模下時(shí)間的變化

我們的目標(biāo)是提高通信受限類程序的迭代頻率,為了比較系統(tǒng)的實(shí)際性能,我們采用的度量公式如下:

performance=natoms×nsteps/sec.

在不同的系統(tǒng)規(guī)模下,對(duì)應(yīng)的粒子個(gè)數(shù)也不同,綜合對(duì)比系統(tǒng)性能.如圖28所示,系統(tǒng)性能隨著進(jìn)程數(shù)的增加而穩(wěn)步提升.

Fig.28 Performance with different system sizes圖28 不同系統(tǒng)規(guī)模下的性能

由表4 可知,本文給出的優(yōu)化策略高于其他軟件解決方案.當(dāng)原子個(gè)數(shù)小于10million 時(shí),迭代速度大于10Ksteps/s,該迭代速度高于現(xiàn)有的絕大部分軟件解決方案.同時(shí),較Anton 硬件解決方案的優(yōu)勢(shì)是它的可擴(kuò)展性,系統(tǒng)規(guī)模可達(dá)到幾萬(wàn)個(gè)處理器并行執(zhí)行,同時(shí)可模擬的原子個(gè)數(shù)可達(dá)到5 千萬(wàn)以上.這對(duì)大規(guī)模的分子動(dòng)力學(xué)模擬提供了有價(jià)值的參考.

Table 4 Performance comparisons of hardware and software solutions for MD表4 分子動(dòng)力學(xué)模擬軟硬件解決方案的性能對(duì)比

4 相關(guān)工作

計(jì)算密集型和訪存密集型程序在神威“太湖之光”上得以優(yōu)化.Stencil 問(wèn)題具有較高的計(jì)算吞吐,在神威上實(shí)現(xiàn)計(jì)算-通信重疊,優(yōu)化通信開(kāi)銷[25].優(yōu)化神威上HPCG 算法中的有效內(nèi)存帶寬以及增強(qiáng)算法的可擴(kuò)展性[9].GTC-P 大規(guī)模并行模擬的高性能計(jì)算程序針對(duì)神威的訪存帶寬進(jìn)行優(yōu)化[26].

神威“太湖之光”超級(jí)計(jì)算機(jī)強(qiáng)大的運(yùn)算能力,使其能夠處理多種大規(guī)模的應(yīng)用.在神威高性能集群上實(shí)現(xiàn)了超大規(guī)模的氣象模擬[27].大規(guī)模非線性地震模擬[28]針對(duì)神威體系結(jié)構(gòu)特點(diǎn)給出并行化解決方案.此類應(yīng)用的特點(diǎn)是數(shù)據(jù)規(guī)模龐大,針對(duì)內(nèi)存空間和帶寬給出了優(yōu)化方案.

時(shí)間演化類應(yīng)用旨在解決的問(wèn)題是提高迭代頻率,加速時(shí)間演化過(guò)程.Anton[21,22]機(jī)器是針對(duì)分子動(dòng)力學(xué)模擬設(shè)計(jì)的一款專用目的計(jì)算機(jī),硬件上設(shè)計(jì)的低延遲、高帶寬特點(diǎn)的網(wǎng)絡(luò)以用于快速同步,但是限制了系統(tǒng)的物理規(guī)模.在神威上,從數(shù)據(jù)的預(yù)取和向量化角度優(yōu)化[29]LAMMPS 中對(duì)內(nèi)存數(shù)據(jù)的訪問(wèn).針對(duì)計(jì)算密集型的GROMACS 程序,在神威“太湖之光”上解決內(nèi)存帶寬限制的問(wèn)題[30].

由于時(shí)間演化類應(yīng)用本身數(shù)據(jù)依賴性的特點(diǎn),不同處理器間的頻繁通信將極大地制約迭代頻率的提高.本文以減少延遲敏感的時(shí)間演化類程序的通信延遲為主要目標(biāo),優(yōu)化通信,并提出幾種有效的并行化策略,為類似的通信受限類程序在異構(gòu)的國(guó)產(chǎn)化神威機(jī)器上的應(yīng)用提供了藍(lán)本.

5 總結(jié)

在本文中,我們實(shí)現(xiàn)了分子動(dòng)力學(xué)模擬程序在神威太湖之光超級(jí)計(jì)算機(jī)上的優(yōu)化.我們的實(shí)現(xiàn)是基于以核組為單位的編程模式,在系統(tǒng)規(guī)模和網(wǎng)絡(luò)通信能力不變的前提下,利用片上同步,減少了消息個(gè)數(shù),優(yōu)化了通信延遲.通過(guò)共享內(nèi)存等待與從核同步相結(jié)合的方式,進(jìn)一步優(yōu)化了片上同步帶來(lái)的訪存延遲.同時(shí),我們針對(duì)分子間多體作用力的計(jì)算模式進(jìn)行修改,將互相寫同步的緊耦合計(jì)算模式改為松耦合.減少了迭代步中間的同步次數(shù),打破了不同線程間的依賴關(guān)系,提高了吞吐.此外,進(jìn)行了訪存優(yōu)化以及規(guī)則化數(shù)據(jù)結(jié)構(gòu)以提高訪存凝聚性.我們的工作是針對(duì)諸如分子動(dòng)力學(xué)模擬等延遲敏感的時(shí)間演化類應(yīng)用如何提高迭代頻率,給出的一系列優(yōu)化技術(shù),為類似的通信受限類程序在主從核異構(gòu)的國(guó)產(chǎn)神威處理器上的優(yōu)化提供了參考.今后的工作中,我們將進(jìn)一步探索神威上的優(yōu)化技術(shù),對(duì)時(shí)間演化類程序進(jìn)行高效模擬.

猜你喜歡
規(guī)則化神威線程
論黨的民主集中制的規(guī)則化
理論探索(2021年6期)2021-05-26 17:06:22
流翔高鈣顯神威 科學(xué)種植促增收
數(shù)據(jù)規(guī)則化技術(shù)的研究及應(yīng)用
數(shù)據(jù)規(guī)則化技術(shù)在焉耆盆地老資料處理中的應(yīng)用
采用移動(dòng)掃描成像法實(shí)現(xiàn)高壓氣瓶?jī)?nèi)壁凹坑缺陷檢測(cè)
三角函數(shù)結(jié)論求值顯神威
淺談linux多線程協(xié)作
《神威啟示錄》系列報(bào)道三 神威現(xiàn)代中藥研發(fā)的新思考
Linux線程實(shí)現(xiàn)技術(shù)研究
么移動(dòng)中間件線程池并發(fā)機(jī)制優(yōu)化改進(jìn)
白河县| 漯河市| 西吉县| 东光县| 麦盖提县| 巴楚县| 花垣县| 延边| 大理市| 寿宁县| 海晏县| 泊头市| 绥中县| 襄樊市| 鄢陵县| 鹤壁市| 吉首市| 平昌县| 连州市| 沧源| 江孜县| 平江县| 桂平市| 松溪县| 西城区| 海口市| 洮南市| 大荔县| 东源县| 高安市| 礼泉县| 固镇县| 肃宁县| 盐城市| 林周县| 宁安市| 内乡县| 钦州市| 元谋县| 江门市| 启东市|