本發(fā)明屬于粒子模擬方法并行技術(shù)領(lǐng)域。在通過計算機程序?qū)崿F(xiàn)一維粒子模擬算法及其并行化過程中,涉及一種在一維算法并行過程中如何去除數(shù)據(jù)競爭的并行方法,具體為一種在粒子模擬算法并行中去除數(shù)據(jù)競爭的線分配并行方法。
背景技術(shù):
在氣體放電、真空電子器件等涉及場與帶電粒子相互作用的領(lǐng)域中,帶電粒子在場的作用下運動,從而改變帶電粒子在空間中的分布狀態(tài)。粒子的狀態(tài)反過來影響空間的場分布。在上述場與帶電粒子相互作用過程中,有時結(jié)構(gòu)和物理特性是滿足面對稱的,或者只有一個方向的互作用是主要的,或者有某兩個方向的物理特性可以通過理論解析的方法得到,則對該類場與帶電粒子相互作用的數(shù)值模擬可以采用一維粒子模擬方法來實現(xiàn)。利用一維粒子模擬方法對場與粒子相互作用問題的描述中,由于模擬粒子數(shù)目較多、時間和空間步長較小等基于數(shù)值模擬精確度的要求,導(dǎo)致計算機模擬負擔(dān)很大,而通過將模擬程序并行化,可以大大縮短運行時間。但在并行過程中,由于存在數(shù)據(jù)競爭,極大地抑制了并行程序的并行效率。
當多個線程對同一塊內(nèi)存進行修改的時候就會帶來數(shù)據(jù)競爭,而一維粒子模擬程序計算過程中,如果以網(wǎng)格為單元分配線程,則遇到的數(shù)據(jù)競爭一般有三種情況:
1、不同線程中粒子跨越到同一網(wǎng)格的時候。該種情況的具體實例如圖1所示,當線程i中的粒子和線程j中的粒子同時跨越到線程k中的網(wǎng)格時,線程i使線程k中的網(wǎng)格的粒子數(shù)從n變到n+1,線程j也使得線程k的網(wǎng)格的粒子數(shù)從n變到n+1,這就使得線程i和線程j對線程k的網(wǎng)格的粒子數(shù)統(tǒng)計出現(xiàn)了數(shù)據(jù)競爭。
2、不同線程中粒子對同一網(wǎng)格內(nèi)電流密度均有貢獻的時候。該種情況的具體實例如圖2所示,當線程i中的粒子和線程j中的粒子同時對線程k中的網(wǎng)格的電流密度均有貢獻時,對于線程k中的網(wǎng)格的電流密度的求解會存在數(shù)據(jù)競爭。
3、不同線程中粒子對同一網(wǎng)格內(nèi)電荷密度均有貢獻的時候。該種情況的具體實例如圖3所示,當線程i中的粒子和線程j中的粒子同時對線程k中的網(wǎng)格的電荷密度均有貢獻時,對于線程k中的網(wǎng)格的電荷密度的求解會存在數(shù)據(jù)競爭。
對于帶有上述數(shù)據(jù)競爭的一維粒子模擬程序,為了保證計算的準確性,對其并行的常規(guī)方法有兩種。第一種方法是不并行具有競爭的部分,即包含數(shù)據(jù)競爭部分的程序串行執(zhí)行;第二種方法是用鎖或者原子操作來對并行程序進行控制,即包含數(shù)據(jù)競爭部分的程序在無競爭時并行、在競爭發(fā)生時串行。采用第一種方法對一維粒子模擬程序進行并行時,由于存在數(shù)據(jù)競爭部分的程序是串行的,而數(shù)據(jù)競爭部分占總體程序的比例很高,所以第一種方法的并行效率很低,加速比很小。采用第二種方法對一維粒子模擬程序進行并行時,數(shù)據(jù)競爭部分采用鎖或者原子操作來控制,當競爭未發(fā)生時并行效率高,但當競爭發(fā)生時實質(zhì)也是串行執(zhí)行的,而競爭發(fā)生的頻率在一維粒子模擬程序中很高,所以第二種方法的并行效率也很低。
技術(shù)實現(xiàn)要素:
針對上述存在問題或不足,為了解決一維粒子模擬程序在并行過程中由于存在數(shù)據(jù)競爭導(dǎo)致并行效率低的問題,本發(fā)明提供了一種在粒子模擬算法并行中去除數(shù)據(jù)競爭的線分配并行方法。
具體技術(shù)方案如下:
步驟1、
設(shè)定粒子在單位時間步長內(nèi)的運動最多可以跨越L個網(wǎng)格;
設(shè)定求解網(wǎng)格上電流密度時,某一個網(wǎng)格中的粒子對電流密度的貢獻最多影響與粒子所在網(wǎng)格相鄰的M個網(wǎng)格;
設(shè)定求解網(wǎng)格上電荷密度時,某一個網(wǎng)格中的粒子對電荷密度的貢獻最多影響與粒子所在網(wǎng)格相鄰的N個網(wǎng)格;
步驟2、
由以上三個設(shè)定可知,一維粒子模擬算法中一個網(wǎng)格的數(shù)據(jù)競爭影響范圍取決于L、M、N中的最大值。假設(shè)L、M、N中的最大值為nMax,則一維粒子模擬算法中一個網(wǎng)格的數(shù)據(jù)競爭影響范圍為Ns=2×nMax+1網(wǎng)格。然后對所有網(wǎng)格新增一個為后續(xù)應(yīng)用去除數(shù)據(jù)競爭方法的編號,編號規(guī)則是以長度為Ns數(shù)目的網(wǎng)格集合為單元,依次編號為1、2、……、Ns,并以此循環(huán),直至遍歷所有網(wǎng)格為止。
步驟3、
待所有網(wǎng)格均被賦予編號之后,將編號相同的網(wǎng)格提取出來放入一個集合中,則最終可以產(chǎn)生Ns個集合。這Ns個集合中的每一個集合,其中的所有網(wǎng)格均不存在數(shù)據(jù)競爭,可以直接并行。最后將Ns個集合串行執(zhí)行。
綜上所述,本發(fā)明通過采用如上的線分配并行方法使得對粒子模擬算法并行的效率因去除數(shù)據(jù)競爭而明顯提高。
附圖說明
圖1為粒子跨越網(wǎng)格時產(chǎn)生的數(shù)據(jù)競爭;
圖2為求解電流密度時產(chǎn)生的數(shù)據(jù)競爭;
圖3為求解電荷密度時產(chǎn)生的數(shù)據(jù)競爭;
圖4為去除數(shù)據(jù)競爭的線分配方法中的網(wǎng)格編號實例;
圖5為去除數(shù)據(jù)競爭的線分配方法中的網(wǎng)格分組實例。
具體實施方式
下面結(jié)合附圖和實施例對本發(fā)明作進一步詳細說明。
假設(shè)nMax=3,則Ns=7。
首先以長度為Ns=7的連續(xù)網(wǎng)格集合為單元,依次編號為1、2、……、7,并以此循環(huán),直至遍歷所有網(wǎng)格為止。如圖4所示。
然后將編號相同的網(wǎng)格提取出來放入一個集合中,則最終可以產(chǎn)生7個集合,如圖5所示。其中編號為1的所有網(wǎng)格形成第1個集合,編號為2的所有網(wǎng)格形成第2個集合,以此類推,直至編號為7的所有網(wǎng)格形成第7個集合。
這7個集合中的每一個集合,其中的所有網(wǎng)格均不存在數(shù)據(jù)競爭,因此集合內(nèi)部可以直接并行。最后7個集合之間串行執(zhí)行。
綜上可見,本發(fā)明通過采用如上的線分配并行方法去除了對粒子模擬算法并行中的數(shù)據(jù)競爭,明顯提高了粒子模擬算法的并行效率。