專利名稱:在多處理器系統(tǒng)上進(jìn)行分子動(dòng)力學(xué)模擬的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,具體地,涉及在多處理器系統(tǒng)上進(jìn)行分子動(dòng)力學(xué)模擬
的方法和裝置。
背景技術(shù):
分子動(dòng)力學(xué)模擬的含義是利用計(jì)算機(jī)模擬分子的運(yùn)動(dòng)過(guò)程。其是一個(gè)重要的 HPC(High Performance Computing,高性能計(jì)算)應(yīng)用,經(jīng)常在調(diào)查物質(zhì)的性質(zhì)時(shí)使用。利 用分子動(dòng)力學(xué)模擬,通過(guò)在計(jì)算機(jī)中追蹤全部分子的運(yùn)動(dòng)規(guī)律,能夠?qū)С鑫镔|(zhì)全體的性質(zhì), 從而能夠處理分子級(jí)別上的問(wèn)題,這在材料、生物、光學(xué)、醫(yī)學(xué)等研究領(lǐng)域都具有實(shí)際的意 義。 在分子動(dòng)力學(xué)模擬中,為了得到分子的運(yùn)動(dòng)軌跡,需要時(shí)刻地追蹤全部分子的運(yùn) 動(dòng),這樣,就會(huì)存在大量的迭代模擬計(jì)算步驟。在分子動(dòng)力學(xué)模擬中,在每一次迭代步驟中, 需要分別計(jì)算每一個(gè)分子的能夠表明該分子的當(dāng)前狀態(tài)的力、加速度、速度以及位置等屬 性。 可以理解,在計(jì)算上,分子動(dòng)力學(xué)模擬是一項(xiàng)非常龐大的工作,因?yàn)閷⒂写罅康姆?子需要模擬,以及大量的模擬步驟需要執(zhí)行。 在分子動(dòng)力學(xué)模擬中,計(jì)算時(shí)間的絕大部分都消耗在了計(jì)算分子對(duì)之間的作用力 上,因?yàn)樵趯?duì)特定分子進(jìn)行分子間作用力的計(jì)算時(shí),需要考慮該分子的所有周圍相鄰分子, 即需要分別求取這些周圍相鄰分子與該特定分子之間的作用力,然后對(duì)這些作用力進(jìn)行求 和等運(yùn)算。 在現(xiàn)有的分子動(dòng)力學(xué)模擬方案中,通常都是將需要進(jìn)行分子動(dòng)力學(xué)模擬的整個(gè)物 質(zhì)空間在空間坐標(biāo)系中劃分為MXMXM個(gè)立方體小盒子或者長(zhǎng)方體的小盒子,以便據(jù)此找 到相鄰分子。也就是說(shuō),每一個(gè)分子都根據(jù)其位置屬于一個(gè)特定的小盒子。以下說(shuō)明書中 都以MXMXM個(gè)立方體小盒子為例進(jìn)行陳述,但是本領(lǐng)域技術(shù)人員可以知道,長(zhǎng)方體的小 盒子也是類似的。對(duì)于MXMXM個(gè)立方體小盒子,每一個(gè)小盒子的各邊的長(zhǎng)度等于截?cái)喟?徑,該截?cái)喟霃绞且粋€(gè)預(yù)先確定的值。如果兩個(gè)分子之間的距離大于截?cái)喟霃?,則這兩個(gè)分 子之間的作用力將被忽略。采用這種方式,能夠方便分子之間的作用力的計(jì)算。
具體地,圖1是通常的分子動(dòng)力學(xué)模擬方案的圖示說(shuō)明。如圖1所示,在通常的分 子動(dòng)力學(xué)模擬方案中,在計(jì)算中心小盒子(用灰色表示)中的特定分子的作用力時(shí),需要考 慮該中心小盒子周圍的26個(gè)(上方的9個(gè)、下方的9個(gè)以及除上下方之外的側(cè)方的8個(gè)) 小盒子(均未填充顏色)以及該中心小盒子本身共27個(gè)小盒子,以找到與該特定分子之間 的距離處于截?cái)喟霃街畠?nèi)的所有相鄰分子,來(lái)計(jì)算各相鄰分子與該特定分子之間的作用力 之和。即,在通常的方案中考慮 27個(gè)小盒子=26個(gè)周圍相鄰小盒子+中心小盒子自身。 目前存在有多種不同的算法來(lái)優(yōu)化分子間作用力的計(jì)算,linkcell方法是其中性 能最好的一種。在linkcell方法中,根據(jù)牛頓第3定律、即作用力a — b =-作用力b — a,考慮對(duì)于兩個(gè)分子之間的作用力只計(jì)算一次?;谶@一考慮,在linkcell方法中,在計(jì)算 一個(gè)特定分子的作用力時(shí),通過(guò)僅尋找14個(gè)小盒子來(lái)代替通常方案中的27個(gè)小盒子,能夠 減少幾乎一半的計(jì)算量。即,在linkcell方法中考慮
14個(gè)小盒子=13個(gè)周圍相鄰小盒子+中心小盒子自身。 具體地,圖2是linkcell方法的圖示說(shuō)明。如圖2所示,在linkcell方法中,在 計(jì)算中心小盒子(用深灰色表示)中的特定分子的作用力時(shí),需要考慮其上方以及側(cè)方的 共13個(gè)(上方的9個(gè)以及側(cè)方的4個(gè))小盒子(用淺灰色表示)中的分子。
但是,上述所有的現(xiàn)有分子動(dòng)力學(xué)模擬方案都是在單處理器系統(tǒng)的平臺(tái)上實(shí)現(xiàn) 的,在這樣的平臺(tái)上實(shí)現(xiàn),模擬性能是不理想的。 Cell寬頻引擎(Cell Broadband Engine, CBE)是一種單芯片多處理器系統(tǒng)。如 圖3所示,CBE系統(tǒng)具有在一個(gè)共享的、相干的主存儲(chǔ)器上進(jìn)行操作的9個(gè)處理器,其中包括 一個(gè)主處理器(Power Processing Unit,PPU)禾口 8個(gè)協(xié)處理器(Synergistic Processing unit, SPU),各SPU具有256K字節(jié)大小的本地存儲(chǔ)器,并且各SPU依賴于DMA (Direct MemoryAccess)操作來(lái)進(jìn)行其本地存儲(chǔ)器與主存儲(chǔ)器之間的數(shù)據(jù)傳輸。在這樣的系統(tǒng)結(jié)構(gòu) 下,CBE能夠提供杰出的計(jì)算能力。具體來(lái)說(shuō),Cell處理器在時(shí)鐘頻率3. 2GHz的情況下能 夠達(dá)到204G浮點(diǎn)運(yùn)算數(shù)/秒。具有這樣高的計(jì)算能力,對(duì)于具有高計(jì)算任務(wù)量的分子動(dòng)力 學(xué)模擬來(lái)說(shuō),CBE顯然是一個(gè)理想的執(zhí)行平臺(tái)。 但是,如果將上述現(xiàn)有的分子動(dòng)力學(xué)模擬方案直接應(yīng)用于CBE這樣的多處理器系 統(tǒng),則并不能夠得到性能的極大提升,其原因如下。 在現(xiàn)有的分子動(dòng)力學(xué)模擬方案中,各個(gè)小盒子的分子數(shù)據(jù)是分散存儲(chǔ)在存儲(chǔ)器中 的,一個(gè)小盒子中的分散存儲(chǔ)的分子數(shù)據(jù)通過(guò)鏈表串接起來(lái)。也就是說(shuō),每一個(gè)小盒子都 具有一個(gè)與其對(duì)應(yīng)的鏈表,該鏈表包含了指向該小盒子中的所有分子數(shù)據(jù)的存儲(chǔ)位置的指 針。此外,用一個(gè)全局?jǐn)?shù)組來(lái)存儲(chǔ)全部鏈表的表頭。 并且,在現(xiàn)有的分子動(dòng)力學(xué)模擬方案中,考慮到分子是不斷運(yùn)動(dòng)的,一個(gè)分子可能 會(huì)從一個(gè)小盒子運(yùn)動(dòng)到另一個(gè)小盒子,甚至是越過(guò)相鄰小盒子,所以在每一個(gè)迭代計(jì)算步 驟之后都要使分子與小盒子的隸屬關(guān)系得到調(diào)整。這種調(diào)整通過(guò)調(diào)整鏈表來(lái)實(shí)現(xiàn)。具體 地,使分子數(shù)據(jù)的存儲(chǔ)位置不變,而通過(guò)調(diào)整鏈表,將這種與小盒子的隸屬關(guān)系變化了的分 子的數(shù)據(jù)從原小盒子的鏈表中移除并鏈接到新移動(dòng)到的小盒子的鏈表中,來(lái)體現(xiàn)分子在所 模擬的物質(zhì)空間中的位置變化。 如果對(duì)于CBE應(yīng)用上述方案,則在各SPU從CBE的主存儲(chǔ)器獲取一個(gè)所需的小盒 子的分子數(shù)據(jù)到其本地存儲(chǔ)器中以便進(jìn)行分子間作用力的計(jì)算等模擬計(jì)算時(shí),由于該小盒 子中的分子數(shù)據(jù)在主存儲(chǔ)器中的存儲(chǔ)位置是離散的,所以需要利用與該小盒子對(duì)應(yīng)的鏈表 來(lái)依次定位該小盒子中的每一個(gè)分子數(shù)據(jù)的存儲(chǔ)位置,并依次利用DMA操作將這些分子數(shù) 據(jù)獲取到其本地存儲(chǔ)器中。這樣,由于分子數(shù)據(jù)是分散存儲(chǔ)的,所以每獲取一個(gè)分子數(shù)據(jù)就 需要進(jìn)行一次DMA操作,即在一次DMA操作中僅能夠獲取一個(gè)分子數(shù)據(jù)。這樣,各SPU為了 獲取所需的小盒子的分子數(shù)據(jù),需要利用DMA操作重復(fù)地進(jìn)行與主存儲(chǔ)器之間的分子數(shù)據(jù) 交換,這樣,會(huì)導(dǎo)致模擬性能的急劇降低。 因此,需要設(shè)計(jì)出一種適合于CBE這樣的多處理器系統(tǒng)的分子動(dòng)力學(xué)模擬方案。
發(fā)明內(nèi)容
鑒于上述問(wèn)題,本發(fā)明提供了一種在多處理器系統(tǒng)上進(jìn)行分子動(dòng)力學(xué)模擬的方法 和裝置,以便通過(guò)使所模擬的物質(zhì)空間中的各個(gè)小盒子的分子數(shù)據(jù)分別連續(xù)存儲(chǔ)在與該小 盒子對(duì)應(yīng)的存儲(chǔ)區(qū)域中,使該多處理器系統(tǒng)中的各加速器能夠利用較少的DMA操作從主存 儲(chǔ)器中獲得多個(gè)小盒子的分子數(shù)據(jù)到其本地存儲(chǔ)器中,從而減少與主存儲(chǔ)器之間的頻繁數(shù) 據(jù)交換,提升模擬性能。 根據(jù)本發(fā)明的一個(gè)方面,提供了一種在多處理器系統(tǒng)上進(jìn)行分子動(dòng)力學(xué)模擬的方 法,其中該多處理器系統(tǒng)包括至少一個(gè)核心處理器以及多個(gè)加速器(accelerator),該方法 包括將需要進(jìn)行分子動(dòng)力學(xué)模擬的物質(zhì)空間劃分為多個(gè)小盒子;以每一個(gè)小盒子的分子 數(shù)據(jù)連續(xù)存儲(chǔ)在與該小盒子對(duì)應(yīng)的存儲(chǔ)區(qū)域中的方式,將上述多個(gè)小盒子的分子數(shù)據(jù)存儲(chǔ) 在該多處理器系統(tǒng)的主存儲(chǔ)器中;以及以在一次DMA操作中獲取至少一個(gè)小盒子的分子數(shù) 據(jù)的方式,使上述多個(gè)加速器并行地從上述主存儲(chǔ)器中重復(fù)獲取上述多個(gè)小盒子的分子數(shù) 據(jù),并進(jìn)行分子動(dòng)力學(xué)模擬計(jì)算。 根據(jù)本發(fā)明的另一個(gè)方面,提供了一種在多處理器系統(tǒng)中進(jìn)行分子動(dòng)力學(xué)模擬的
裝置,其中該多處理器系統(tǒng)包括至少一個(gè)核心處理器以及多個(gè)加速器,該裝置包括小盒子 劃分單元,其將需要進(jìn)行分子動(dòng)力學(xué)模擬的物質(zhì)空間劃分為多個(gè)小盒子;分子數(shù)據(jù)保存單
元,其以每一個(gè)小盒子的分子數(shù)據(jù)連續(xù)存儲(chǔ)在與該小盒子對(duì)應(yīng)的存儲(chǔ)區(qū)域中的方式,將上 述多個(gè)小盒子的分子數(shù)據(jù)存儲(chǔ)在該多處理器系統(tǒng)的主存儲(chǔ)器中;以及模擬單元,其以在一 次DMA操作中獲取至少一個(gè)小盒子的分子數(shù)據(jù)的方式,使上述多個(gè)加速器并行地從上述主 存儲(chǔ)器中重復(fù)獲取上述多個(gè)小盒子的分子數(shù)據(jù),并進(jìn)行分子動(dòng)力學(xué)模擬計(jì)算。
相信通過(guò)以下結(jié)合附圖對(duì)本發(fā)明具體實(shí)施方式
的說(shuō)明,能夠使人們更好地了解本 發(fā)明上述的特點(diǎn)、優(yōu)點(diǎn)和目的。
圖1是通常的分子動(dòng)力學(xué)模擬方案的圖示說(shuō)明;
圖2是linkcell方法的圖示說(shuō)明;
圖3是CBE的系統(tǒng)框圖; 圖4是根據(jù)本發(fā)明實(shí)施例的在多處理器系統(tǒng)上進(jìn)行分子動(dòng)力學(xué)模擬的方法的流 程圖; 圖5是圖4中的分子數(shù)據(jù)存儲(chǔ)步驟410的詳細(xì)流程圖; 圖6是圖4中的分子數(shù)據(jù)獲取及分子動(dòng)力學(xué)模擬計(jì)算步驟415的詳細(xì)流程圖;
圖7、8是圖6的過(guò)程的圖示說(shuō)明; 圖9是圖6中的逐層分子數(shù)據(jù)獲取及分子動(dòng)力學(xué)模擬步驟615的詳細(xì)流程圖;
圖10-12是圖9的過(guò)程的圖示說(shuō)明;以及 圖13是根據(jù)本發(fā)明實(shí)施例的在多處理器系統(tǒng)中進(jìn)行分子動(dòng)力學(xué)模擬的裝置的方 框圖。
具體實(shí)施例方式
下面就結(jié)合附圖對(duì)本發(fā)明的各個(gè)優(yōu)選實(shí)施例進(jìn)行詳細(xì)說(shuō)明。
圖4是根據(jù)本發(fā)明實(shí)施例的在多處理器系統(tǒng)上進(jìn)行分子動(dòng)力學(xué)模擬的方法的流 程圖。其中,該多處理器系統(tǒng)具有至少一個(gè)核心處理器以及多個(gè)加速器(accelerator)。具 體地,該多處理器系統(tǒng)例如可以是前述具有一個(gè)PPU(核心處理器)和8個(gè)SPU(加速器) 的CBE。 本實(shí)施例的在多處理器系統(tǒng)上進(jìn)行分子動(dòng)力學(xué)模擬的方法,與前述現(xiàn)有的分子動(dòng)
力學(xué)模擬方案中使各個(gè)小盒子的分子數(shù)據(jù)分散存儲(chǔ)并利用鏈表將其串接起來(lái)的方式不同,
所采用的是在該多處理器系統(tǒng)的主存儲(chǔ)器中使進(jìn)行分子動(dòng)力學(xué)模擬的物質(zhì)空間中的各個(gè)
小盒子內(nèi)的分子數(shù)據(jù)分別連續(xù)存儲(chǔ)在各個(gè)小盒子所對(duì)應(yīng)的存儲(chǔ)區(qū)域中的方式。 以下說(shuō)明書中都以MXMXM個(gè)立方體小盒子為例進(jìn)行陳述,但是本領(lǐng)域技術(shù)人員
可以知道,長(zhǎng)方體的小盒子也是類似的。 具體地,如圖4所示,本實(shí)施例的在多處理器系統(tǒng)上進(jìn)行分子動(dòng)力學(xué)模擬的方法, 首先在步驟405,將需要進(jìn)行分子動(dòng)力學(xué)模擬的物質(zhì)空間劃分為多個(gè)、例如MXMXM個(gè)立方 體小盒子,其中,該多個(gè)立方體小盒子的每一個(gè)的各邊長(zhǎng)度等于預(yù)先確定的截?cái)喟霃健T摬?驟與前面參照?qǐng)D1、2所描述的現(xiàn)有的方案是同樣的。 在步驟410,以每一個(gè)小盒子的分子數(shù)據(jù)連續(xù)存儲(chǔ)在與該小盒子對(duì)應(yīng)的存儲(chǔ)區(qū)域 中的方式,將上述多個(gè)小盒子的分子數(shù)據(jù)存儲(chǔ)在該多處理器系統(tǒng)的主存儲(chǔ)器中。對(duì)于該步 驟,將在后面結(jié)合圖5進(jìn)行詳細(xì)說(shuō)明。 在步驟415,以在一次DMA操作中獲取至少一個(gè)小盒子的分子數(shù)據(jù)的方式,使上述 多個(gè)加速器并行地從上述主存儲(chǔ)器中重復(fù)獲取上述多個(gè)小盒子的分子數(shù)據(jù),并進(jìn)行分子動(dòng) 力學(xué)模擬計(jì)算。對(duì)于該步驟,將在后面結(jié)合圖6、7進(jìn)行詳細(xì)說(shuō)明。 下面,結(jié)合圖5詳細(xì)描述上面圖4中的分子數(shù)據(jù)存儲(chǔ)步驟410。圖5是根據(jù)本發(fā)明 實(shí)施例的該步驟410的詳細(xì)流程圖。 如圖5所示,首先,在步驟505,在該多處理器系統(tǒng)的主存儲(chǔ)器中,設(shè)置與所模擬的 物質(zhì)空間中的上述多個(gè)小盒子的數(shù)量對(duì)應(yīng)的多個(gè)存儲(chǔ)區(qū)域。其中,每一個(gè)存儲(chǔ)區(qū)域用于存 儲(chǔ)上述多個(gè)小盒子中的一個(gè)的分子數(shù)據(jù)。 具體地,在如上述步驟405中所述將所模擬的物質(zhì)空間劃分為MXMXM個(gè)立方體 小盒子的情況下,在該步驟505,在該多處理器系統(tǒng)的主存儲(chǔ)器中設(shè)置MXMXM個(gè)存儲(chǔ)區(qū) 域,以分別存儲(chǔ)該MX MX M個(gè)小盒子的分子數(shù)據(jù)。 此外,在一個(gè)優(yōu)選實(shí)施例中,在該步驟中,在主存儲(chǔ)器中連續(xù)地設(shè)置上述多個(gè)存儲(chǔ) 區(qū)域。 此外,由于如上所述分子是不斷運(yùn)動(dòng)的,一個(gè)分子可能會(huì)從一個(gè)小盒子運(yùn)動(dòng)到另
一個(gè)小盒子,所以相應(yīng)地, 一個(gè)小盒子中的分子數(shù)目也是變化的。為此,在該步驟中,將上述
多個(gè)存儲(chǔ)區(qū)域的每一個(gè)設(shè)定得足夠大,以便即使在其相應(yīng)的小盒子中的分子數(shù)目發(fā)生變化
時(shí),該存儲(chǔ)區(qū)域也能夠完全存儲(chǔ)該小盒子中的全部分子數(shù)據(jù)。具體地,可以預(yù)先設(shè)定一個(gè)小
盒子中最大可能的分子數(shù)目,然后根據(jù)該最大可能的分子數(shù)目來(lái)設(shè)定該多個(gè)存儲(chǔ)區(qū)域的每
一個(gè)的大小。此外,優(yōu)選地,該多個(gè)存儲(chǔ)區(qū)域的大小是相同的。 在步驟510,確定上述多個(gè)小盒子與上述多個(gè)存儲(chǔ)區(qū)域的對(duì)應(yīng)關(guān)系。 在一個(gè)實(shí)施例中,可以為上述多個(gè)小盒子設(shè)置在空間坐標(biāo)系中的相對(duì)位置坐標(biāo),
并通過(guò)該相對(duì)位置坐標(biāo)確定上述多個(gè)小盒子與上述多個(gè)存儲(chǔ)區(qū)域的對(duì)應(yīng)關(guān)系。
8
具體地,參照?qǐng)Dl,可以將所模擬的物質(zhì)空間中位于空間坐標(biāo)系原點(diǎn)的小盒子的相 對(duì)位置坐標(biāo)設(shè)置為(x = 0, y = 0, z = O),并且沿x軸的正方向使小盒子的x坐標(biāo)依次遞 增,例如將x軸正方向上的第二個(gè)小盒子的坐標(biāo)設(shè)置為(x = 1, y = 0, z = 0),依此類推; 此外,沿y軸的正方向使小盒子的y坐標(biāo)依次遞增,例如將y軸正方向上的第二個(gè)小盒子的 坐標(biāo)設(shè)置為(x = 0, y = 1, z = 0),依此類推;再者,沿z軸的正方向使小盒子的z坐標(biāo)依 次遞增,例如將z軸正方向上的第二個(gè)小盒子的坐標(biāo)設(shè)置為(x = O,y = O,z = 1),依此類 推。 然后,在上述相對(duì)位置坐標(biāo)的基礎(chǔ)上,并且在如上所述所模擬的物質(zhì)空間被劃分 為MXMXM個(gè)立方體小盒子的情況下,根據(jù)下式(1)將坐標(biāo)為(x,y,z)的小盒子與上述多 個(gè)存儲(chǔ)區(qū)域中其相應(yīng)的存儲(chǔ)區(qū)域?qū)?yīng)起來(lái)
Index = x+MXy+M2Xz (1) 其中,Index指示該坐標(biāo)為(x,y,z)的小盒子所對(duì)應(yīng)的存儲(chǔ)區(qū)域的順序號(hào)。即,根 據(jù)Index,能夠確定與坐標(biāo)為(x, y, z)的小盒子對(duì)應(yīng)的存儲(chǔ)區(qū)域是上述多個(gè)(在此情況下 是MXMXM個(gè))存儲(chǔ)區(qū)域中、從初始地址開始的第Index個(gè)存儲(chǔ)區(qū)域。
具體地,參照?qǐng)D1 ,假設(shè)所模擬的物質(zhì)空間被劃分為3 X 3 X 3 (即M = 3)個(gè)小盒子, 則可以將位于空間坐標(biāo)系原點(diǎn)的小盒子的相對(duì)位置坐標(biāo)確定為(x = 0, y = 0, z = O),從 而根據(jù)上式(l),能夠確定該小盒子所對(duì)應(yīng)的存儲(chǔ)區(qū)域的順序號(hào)為Index = x+MXy+M2Xz =0+3X0+32X0 = 0。此外,可以將x軸正方向上緊接著的第二個(gè)小盒子的坐標(biāo)設(shè)置為(x =L y = 0, z = O),從而根據(jù)上式(l),能夠確定該小盒子所對(duì)應(yīng)的存儲(chǔ)區(qū)域的順序號(hào)為 Index = x+MXy+M2Xz = 1+3X0+32X0 = 1,依此類推;此外,可以將y軸正方向上的第二個(gè) 小盒子的坐標(biāo)設(shè)置為(x = 0, y = 1, z = 0),從而根據(jù)上式(1),能夠確定該小盒子所對(duì)應(yīng) 的存儲(chǔ)區(qū)域的順序號(hào)為Index = x+MXy+M2Xz = 0+3Xl+32X0 = 3,依此類推;再者,可以 將z軸正方向上的第二個(gè)小盒子的坐標(biāo)設(shè)置為(x = 0,y = 0,z = l),從而根據(jù)上式(1), 能夠確定該小盒子所對(duì)應(yīng)的存儲(chǔ)區(qū)域的順序號(hào)為Index = x+MXy+M2Xz = 0+3X0+32Xl =9,依此類推。 此外,根據(jù)上述小盒子在空間坐標(biāo)系中的相對(duì)位置坐標(biāo),還能夠確定各個(gè)小盒子 之間的相鄰關(guān)系。例如,能夠確定坐標(biāo)為(x = 1, y = 0, z = 0)的小盒子是坐標(biāo)為(x = O,y = O,z = 0)的小盒子的右側(cè)相鄰小盒子,坐標(biāo)為(x = O,y = l,z = 0)的小盒子是坐 標(biāo)為(x = 0, y = 0, z = 0)的小盒子的正上方相鄰小盒子。 以上小盒子與存儲(chǔ)區(qū)域的對(duì)應(yīng)關(guān)系以及小盒子之間的相鄰關(guān)系,在各加速器為進(jìn) 行分子動(dòng)力學(xué)模擬計(jì)算而獲取相關(guān)的多個(gè)小盒子時(shí),是要應(yīng)用到的,所以如果能夠根據(jù)小 盒子的坐標(biāo)直接確定這些關(guān)系,則對(duì)于各加速器而言將是非常便利的。 以上雖然說(shuō)明了利用小盒子的相對(duì)位置坐標(biāo)來(lái)確定小盒子與存儲(chǔ)區(qū)域的對(duì)應(yīng)關(guān) 系的情況,但是并不限于此,也可以直接為上述多個(gè)小盒子以及多個(gè)存儲(chǔ)區(qū)域設(shè)置相對(duì)應(yīng) 的編號(hào),以便按照編號(hào)將該多個(gè)小盒子與上述多個(gè)存儲(chǔ)區(qū)域一一對(duì)應(yīng)。 在步驟515,按照上述多個(gè)小盒子與上述多個(gè)存儲(chǔ)區(qū)域的對(duì)應(yīng)關(guān)系,將該多個(gè)小盒 子的分子數(shù)據(jù)分別存儲(chǔ)到上述多個(gè)存儲(chǔ)區(qū)域中各自相應(yīng)的存儲(chǔ)區(qū)域中。其中,每一個(gè)小盒 子的分子數(shù)據(jù)在與該小盒子對(duì)應(yīng)的存儲(chǔ)區(qū)域中是連續(xù)存儲(chǔ)的。 此外,在一個(gè)實(shí)施例中,在上述多個(gè)存儲(chǔ)區(qū)域的各個(gè)的開頭,指示該存儲(chǔ)區(qū)域中所存儲(chǔ)的分子數(shù)據(jù)的數(shù)量,即該存儲(chǔ)區(qū)域所對(duì)應(yīng)的小盒子中的分子數(shù)目,以便利上述多個(gè)加
速器中相應(yīng)的加速器對(duì)該存儲(chǔ)區(qū)域中的數(shù)據(jù)的訪問(wèn)。 以上,就是對(duì)圖5的分子數(shù)據(jù)存儲(chǔ)過(guò)程的詳細(xì)描述。 下面,結(jié)合圖6、7詳細(xì)描述上面圖4的方法中的分子數(shù)據(jù)獲取及分子動(dòng)力學(xué)模擬 計(jì)算步驟415。圖6是根據(jù)本發(fā)明實(shí)施例的該步驟415的詳細(xì)流程圖,圖7、8是圖6的過(guò)程 的圖示說(shuō)明。 如圖6所示,首先在步驟605,根據(jù)上述多個(gè)加速器的數(shù)量,將上述多個(gè)小盒子劃 分為相應(yīng)的多個(gè)部分。其中每一個(gè)部分包括多層小盒子。 具體地,如圖7所示,在該步驟中,沿空間坐標(biāo)系的z軸方向,將上述多個(gè)小盒子劃 分為多個(gè)部分。 此外,在一個(gè)實(shí)施例中,根據(jù)負(fù)載平衡原則,將上述多個(gè)小盒子劃分為均等的多個(gè) 部分。也就是說(shuō),在如上所述所模擬的物質(zhì)空間被劃分為MXMXM個(gè)小盒子、加速器的數(shù)量 為m的情況下,將該多個(gè)小盒子沿z軸劃分為與加速器的數(shù)量對(duì)應(yīng)的多個(gè)部分,每一個(gè)部分 包括M/m層的小盒子。 需要說(shuō)明的是,在圖7中,是沿z軸方向來(lái)進(jìn)行劃分的,但是,劃分方式并不僅限于 此,而也可以沿x軸或y軸將上述多個(gè)小盒子劃分為與加速器的數(shù)量對(duì)應(yīng)的多個(gè)部分等。
在步驟610,如圖7所示,將上述多個(gè)部分分配給上述多個(gè)加速器,以使每一個(gè)加 速器負(fù)責(zé)處理其中的一個(gè)部分。 在步驟615,使上述多個(gè)加速器并行地對(duì)于各自的部分,以在一次DMA操作中獲取 至少一個(gè)小盒子的分子數(shù)據(jù)的方式,逐層獲取分子數(shù)據(jù)并進(jìn)行分子動(dòng)力學(xué)模擬計(jì)算,其中 該多個(gè)加速器在并行處理中相互之間始終隔著多層小盒子。 如上所述,由于分子是不斷運(yùn)動(dòng)的,一個(gè)分子可能會(huì)從一個(gè)小盒子運(yùn)動(dòng)到另一個(gè) 小盒子,所以需要在每一個(gè)迭代計(jì)算步驟之后對(duì)分子與小盒子的隸屬關(guān)系進(jìn)行調(diào)整。在本 實(shí)施例中,由于如上所述每一個(gè)小盒子中的分子數(shù)據(jù)是連續(xù)存儲(chǔ)在與該小盒子對(duì)應(yīng)的存儲(chǔ) 區(qū)域中的,所以在進(jìn)行分子與小盒子的隸屬關(guān)系的調(diào)整時(shí),可以通過(guò)在各個(gè)小盒子所對(duì)應(yīng) 的存儲(chǔ)區(qū)域之間直接移動(dòng)分子數(shù)據(jù)來(lái)實(shí)現(xiàn)。 但是,當(dāng)在多個(gè)加速器上并行地進(jìn)行分子動(dòng)力學(xué)模擬的情況下,若兩個(gè)不同的加 速器上的小盒子在所模擬的物質(zhì)空間上相互距離太近,則如圖8所示有可能會(huì)產(chǎn)生這些小 盒子中的分子運(yùn)動(dòng)到同一目標(biāo)小盒子中,從而這兩個(gè)加速器需要同時(shí)使用該目標(biāo)小盒子的 分子數(shù)據(jù)進(jìn)行模擬計(jì)算之后的調(diào)整的情況,這樣就會(huì)產(chǎn)生數(shù)據(jù)沖突。 在本實(shí)施例中,通過(guò)采取上述各包含多層小盒子的多個(gè)部分的劃分方式并使各個(gè) 加速器在并行處理中相互之間始終隔開多層小盒子,來(lái)避免在分子與小盒子的隸屬關(guān)系的 調(diào)整時(shí)可能出現(xiàn)的上述數(shù)據(jù)沖突的情況。 具體地,在本實(shí)施例中,如圖7所示,在沿空間坐標(biāo)系的z軸方向?qū)⑸鲜龆鄠€(gè)小盒
子劃分為多個(gè)部分的情況下,為了使各個(gè)加速器在并行處理時(shí)相互隔開多層小盒子,可以 使各個(gè)加速器對(duì)于其各自的部分,按照相同的層順序,例如沿z軸從下到上或從上到下,逐 層小盒子地進(jìn)行分子數(shù)據(jù)的獲取以及分子動(dòng)力學(xué)模擬計(jì)算。 這樣,在該多個(gè)加速器獲取各自的第一層小盒子的分子數(shù)據(jù)時(shí),這些第一層相互 之間便隔著多層小盒子,從而由于該多個(gè)加速器按照相同的層順序進(jìn)行并行處理,所以這種分隔狀態(tài)能夠始終保持,即各個(gè)加速器所并行處理的層相互之間始終能夠隔著多層小盒 子。 這樣,便能夠避免當(dāng)前位于不同的加速器上的兩個(gè)小盒子在物質(zhì)空間上的距離過(guò) 近,從而引起數(shù)據(jù)沖突的情況。 此外,在采取其他的劃分方式,例如沿x軸或y軸將上述多個(gè)小盒子劃分為多個(gè)部 分的情況下,也可以依此來(lái)實(shí)現(xiàn)。 下面,結(jié)合圖9-12詳細(xì)描述上面圖6中的逐層分子數(shù)據(jù)獲取及模擬計(jì)算步驟615。 圖9是根據(jù)本發(fā)明實(shí)施例的、以一個(gè)加速器為例的該步驟615的詳細(xì)流程圖,圖10-12是圖 9的過(guò)程的圖示說(shuō)明。 需要說(shuō)明的是,如前面針對(duì)linkcell方法所描述的,在對(duì)某一中心小盒子中的分
子進(jìn)行分子間作用力的計(jì)算等模擬計(jì)算時(shí),要考慮、從而獲取該中心小盒子本身以及該中
心小盒子的上方以及側(cè)方的13個(gè)相鄰小盒子共14個(gè)小盒子中的分子數(shù)據(jù)。 相對(duì)于此,在圖9的過(guò)程中,在進(jìn)行中心小盒子的模擬計(jì)算時(shí),并不僅獲取與該模
擬計(jì)算相關(guān)的14個(gè)單個(gè)的小盒子,而是獲取這14個(gè)小盒子分別所在的整個(gè)條帶的分子數(shù)
據(jù)。也就是說(shuō),在圖9的過(guò)程中,是以條帶為單位,逐個(gè)層中的逐個(gè)條帶地來(lái)獲取分子數(shù)據(jù)
并進(jìn)行分子動(dòng)力學(xué)模擬計(jì)算的。 具體地,如圖9所示,首先在步驟905,將由多個(gè)小盒子劃分而成的上述多個(gè)部分 中,分配給當(dāng)前加速器的部分中的第一層設(shè)定為當(dāng)前處理的層。其中,可以將該部分中沿z 軸正方向上的最底層作為第一層,使該加速器沿z軸正方向逐層進(jìn)行處理,也可以將z軸正 方向上的最頂層作為第一層,使該加速器沿z軸反方向逐層進(jìn)行處理。
在步驟910,將上述當(dāng)前處理的層劃分為多欄。 具體地,參照?qǐng)D10,在該步驟中,沿著空間坐標(biāo)系中的x軸,將該當(dāng)前處理的層劃 分為多欄。 在該步驟中,之所以將當(dāng)前處理的層劃分為多欄,是考慮到在多處理器系統(tǒng)中通 常存在加速器的本地存儲(chǔ)器大小限制的問(wèn)題。例如,在CBE中,每個(gè)SPU的本地存儲(chǔ)器容量 僅是256K。在此情況下,由于所模擬的物質(zhì)空間中的一層小盒子通常包括大量的分子數(shù)據(jù), 各加速器的本地存儲(chǔ)器容量通常是遠(yuǎn)遠(yuǎn)不夠的,所以就需要逐一地獲取該層中的部分分子 數(shù)據(jù)來(lái)進(jìn)行處理。 從而,在本實(shí)施例中,將當(dāng)前處理的層沿x軸劃分為多欄,以便如圖9所示,逐個(gè)欄 來(lái)進(jìn)行分子數(shù)據(jù)的處理。其中,該多欄的欄長(zhǎng)度、即一欄中x軸方向上的小盒子的數(shù)量,依 該多處理器系統(tǒng)中加速器的本地存儲(chǔ)器容量以及一個(gè)小盒子中所包含的分子數(shù)量來(lái)確定。
在步驟915,將當(dāng)前處理的層中的第一欄設(shè)定為當(dāng)前欄。 在步驟920,使該加速器對(duì)于當(dāng)前欄中要進(jìn)行分子動(dòng)力學(xué)模擬計(jì)算的條帶(以下, 稱為中心條帶),以在一次DMA操作中獲取至少一個(gè)小盒子的分子數(shù)據(jù)的方式,獲取與該條 帶的分子動(dòng)力學(xué)模擬計(jì)算有關(guān)的多個(gè)條帶的分子數(shù)據(jù)到其本地存儲(chǔ)器中。其中,所謂一個(gè) 條帶,如圖9、10所示,是一欄中x軸方向上的一行小盒子。 具體地,如圖11、12所示,假設(shè)當(dāng)前要進(jìn)行模擬計(jì)算的中心小盒子位于條帶0上, 則由于與該中心小盒子的模擬計(jì)算有關(guān)的上方以及側(cè)方的13個(gè)相鄰小盒子分別位于該條 帶0的上方以及側(cè)方的條帶1-4上,所以在本實(shí)施例中,使該加速器將條帶1-4與條帶0 (中
11心條帶)一同整個(gè)條帶地獲取到其本地存儲(chǔ)器中。 由此,可以理解,在當(dāng)前欄中的第一個(gè)條帶作為要進(jìn)行分子動(dòng)力學(xué)模擬計(jì)算的中 心條帶的情況下,需要獲取該中心條帶本身、該條帶的下一條帶、該條帶上方相鄰的3個(gè)條 帶共5個(gè)條帶的分子數(shù)據(jù)到該加速器的本地存儲(chǔ)器中。并且,本領(lǐng)域的技術(shù)人員可以理解, 由于該第一個(gè)條帶處于當(dāng)前層的邊界,所以作為該條帶的上方相鄰的三個(gè)條帶之一,將使 用該中心條帶的上一層的、與該中心條帶所在的一邊相對(duì)的另一邊上的條帶。并且,對(duì)于在 模擬計(jì)算中所存在的所有類似邊界問(wèn)題,都是類似來(lái)進(jìn)行處理的。 此外,在要進(jìn)行分子動(dòng)力學(xué)模擬計(jì)算的中心條帶并不是當(dāng)前欄中的第一個(gè)條帶的 情況下,并不需要使加速器重新獲取所有與該條帶的分子動(dòng)力學(xué)模擬計(jì)算有關(guān)的5個(gè)條帶 的分子數(shù)據(jù)到其本地存儲(chǔ)器中,因?yàn)橐呀?jīng)有部分條帶在前一條帶的分子動(dòng)力學(xué)模擬計(jì)算中 被存儲(chǔ)在了該加速器的本地存儲(chǔ)器中,而僅需要獲取這5個(gè)條帶中還未存儲(chǔ)在該加速器的 本地存儲(chǔ)器中的條帶即可。即,僅需要獲取該中心條帶的下一相鄰條帶以及該中心條帶的 上方的下一條帶即可。 此外,在本實(shí)施例中,由于每一個(gè)小盒子中的分子數(shù)據(jù)都是連續(xù)存儲(chǔ)在與該小盒 子對(duì)應(yīng)的存儲(chǔ)區(qū)域中的,所以在獲取分子數(shù)據(jù)時(shí),一個(gè)小盒子中的分子數(shù)據(jù)能夠在一次DMA 操作中全部被獲取到加速器的本地存儲(chǔ)器中。從而,在本步驟中,可以以在一次DMA操作中 獲取一個(gè)小盒子的方式,使該加速器獲取所需的多個(gè)條帶。 進(jìn)而,在如圖5的步驟505中所述的那樣,所模擬的物質(zhì)空間中的多個(gè)小盒子所對(duì)
應(yīng)的存儲(chǔ)區(qū)域在主存儲(chǔ)器中連續(xù)地設(shè)置,即該多個(gè)小盒子連續(xù)地存儲(chǔ)在主存儲(chǔ)器中的情況
下,利用一次DMA操作能夠獲取相鄰的多個(gè)小盒子的分子數(shù)據(jù)。從而,在本步驟中,可以以
在一次DMA操作中獲取多個(gè)小盒子的方式,使該加速器獲取所需的多個(gè)條帶。 再者,在如圖5的步驟510中所描述的那樣為所模擬的物質(zhì)空間中的小盒子設(shè)置
相對(duì)位置坐標(biāo)并利用該相對(duì)位置坐標(biāo)將各個(gè)小盒子與其存儲(chǔ)區(qū)域?qū)?yīng)起來(lái)的情況下,由
于x軸方向上的一行小盒子所對(duì)應(yīng)的存儲(chǔ)區(qū)域是連續(xù)的,所以能夠利用一次DMA操作獲取
這一行小盒子或這一行小盒子中的一部分、即一個(gè)條帶的分子數(shù)據(jù)到加速器的本地存儲(chǔ)器
中。從而,在本步驟中,可以以在一次DMA操作中獲取由多個(gè)小盒子構(gòu)成的一個(gè)條帶的方
式,使該加速器獲取所需的多個(gè)條帶。在此過(guò)程中,可以根據(jù)小盒子的相對(duì)位置坐標(biāo),來(lái)定
位與中心條帶相關(guān)的上方及側(cè)方的條帶,進(jìn)而獲取這些條帶的分子數(shù)據(jù)。 進(jìn)而,在該步驟中,使上述加速器根據(jù)前面確定的上述多個(gè)小盒子與上述多個(gè)存
儲(chǔ)區(qū)域的對(duì)應(yīng)關(guān)系,來(lái)獲取上述多個(gè)條帶的分子數(shù)據(jù)。 接著,在步驟925,該加速器利用其本地存儲(chǔ)器中所存儲(chǔ)的上述多個(gè)條帶的分子數(shù) 據(jù),進(jìn)行中心條帶的分子數(shù)據(jù)的分子動(dòng)力學(xué)模擬計(jì)算。在該步驟中,利用這多個(gè)條帶的分子 數(shù)據(jù),完成該中心條帶上的所有小盒子的分子動(dòng)力學(xué)模擬計(jì)算。也就是說(shuō),對(duì)于該中心條帶 上的所有小盒子,依次利用這多個(gè)條帶中的相關(guān)小盒子的分子數(shù)據(jù)來(lái)進(jìn)行分子動(dòng)力學(xué)模擬 計(jì)算。 在步驟930,判斷當(dāng)前欄中是否所有條帶均經(jīng)過(guò)了分子動(dòng)力學(xué)模擬計(jì)算,如果是, 則轉(zhuǎn)到步驟940,否則,前進(jìn)到步驟935。 在步驟935,將當(dāng)前欄中上述中心條帶的下一條帶設(shè)定為要進(jìn)行分子動(dòng)力學(xué)模擬 計(jì)算的中心條帶,并返回到步驟920,繼續(xù)處理該下一條帶。
在步驟940,判斷當(dāng)前層中是否還有未處理的欄,如果有,則前進(jìn)到步驟945,否則 轉(zhuǎn)到步驟950。 在步驟945,將該當(dāng)前欄的下一欄設(shè)定為要進(jìn)行處理的欄。接著,返回到步驟920, 繼續(xù)處理該下一欄。 在步驟950,判斷分配給該加速器的部分中是否還有未處理的層,如果有,則前進(jìn) 到步驟955,否則該過(guò)程結(jié)束。 在步驟955,設(shè)定下一個(gè)要進(jìn)行處理的層。在各加速器對(duì)于分配給其的部分,在z 軸方向上從最底層開始向上逐層進(jìn)行處理的情況下,將當(dāng)前處理的層的上方的層設(shè)定為下 一個(gè)要進(jìn)行處理的層,在從最頂層開始向下逐層進(jìn)行處理的情況下,將下方的層設(shè)定為下 一個(gè)要進(jìn)行處理的層。 接著,返回到步驟910,繼續(xù)處理該下一層。 以上,就是對(duì)圖9的逐層分子數(shù)據(jù)獲取及模擬計(jì)算過(guò)程的詳細(xì)描述。 需要說(shuō)明的是,在圖9的過(guò)程中,雖然包括了將當(dāng)前處理的層劃分為多欄的步驟,
但可以理解,該步驟是考慮到加速器的本地存儲(chǔ)器容量的限制才執(zhí)行的,在各加速器的本
地存儲(chǔ)器容量允許的情況下,當(dāng)然也可以不執(zhí)行該步驟,即不將當(dāng)前處理的層劃分為多欄,
而將該層作為整體來(lái)進(jìn)行處理。 此外,在圖9的過(guò)程中,雖然在將當(dāng)前處理的層劃分為多欄時(shí)所說(shuō)明的是沿著空 間坐標(biāo)系的x軸進(jìn)行劃分的情況,但是,并不限于此,也可以采用其他的劃分方式,例如將 當(dāng)前處理的層沿著空間坐標(biāo)系的y軸劃分為多欄等。 此外,雖然在圖9中說(shuō)明了各加速器在進(jìn)行模擬計(jì)算時(shí)獲取多個(gè)條帶的分子數(shù)據(jù) 的情況,但是,并不限于此,也可以如現(xiàn)有技術(shù)中那樣,對(duì)于中心小盒子的分子動(dòng)力學(xué)模擬 計(jì)算,僅獲取與該模擬計(jì)算有關(guān)的14個(gè)小盒子的分子數(shù)據(jù)。 以上就是對(duì)本實(shí)施例的在多處理器系統(tǒng)上進(jìn)行分子動(dòng)力學(xué)模擬的方法的詳細(xì)描 述。在本實(shí)施例中,通過(guò)使所模擬的物質(zhì)空間中的每一個(gè)小盒子的分子數(shù)據(jù)連續(xù)存儲(chǔ)在與 該小盒子對(duì)應(yīng)的存儲(chǔ)區(qū)域中,能夠使各加速器利用較少的DMA操作從主存儲(chǔ)器中獲得多個(gè) 小盒子的分子數(shù)據(jù)到其本地存儲(chǔ)器中,從而減少與主存儲(chǔ)器之間的頻繁數(shù)據(jù)交換。進(jìn)而, 通過(guò)使所模擬的物質(zhì)空間中的多個(gè)小盒子按照位置關(guān)系連續(xù)存儲(chǔ),能夠使各加速器在一次 DMA操作中獲取由多個(gè)小盒子組成的一個(gè)條帶的分子數(shù)據(jù)到其本地存儲(chǔ)器中,從而按照條 帶來(lái)進(jìn)行分子動(dòng)力學(xué)模擬,這樣能夠進(jìn)一步減少與主存儲(chǔ)器之間的數(shù)據(jù)交換。從而,相對(duì)于 前述現(xiàn)有的分子動(dòng)力學(xué)模擬方案,本實(shí)施例的分子動(dòng)力學(xué)模擬方法能夠提高計(jì)算時(shí)間對(duì)數(shù) 據(jù)傳輸時(shí)間的比率,從而提高模擬性能。 在同一發(fā)明構(gòu)思下,本發(fā)明提供一種在多處理器系統(tǒng)中進(jìn)行分子動(dòng)力學(xué)模擬的裝 置。下面結(jié)合附圖對(duì)其進(jìn)行描述。 圖13是根據(jù)本發(fā)明實(shí)施例的在多處理器系統(tǒng)中進(jìn)行分子動(dòng)力學(xué)模擬的裝置的方 框圖。其中,該多處理器系統(tǒng)具有至少一個(gè)核心處理器以及多個(gè)加速器。具體地,該多處理 器系統(tǒng)例如可以是前述具有一個(gè)PPU(核心處理器)和8個(gè)SPU(加速器)的CBE。
具體地,如圖13所示,本實(shí)施例的在多處理器系統(tǒng)中進(jìn)行分子動(dòng)力學(xué)模擬的裝置 10包括小盒子劃分單元11、分子數(shù)據(jù)保存單元12、多個(gè)部分劃分單元13、分配單元14以 及模擬單元15。
13
小盒子劃分單元11將需要進(jìn)行分子動(dòng)力學(xué)模擬的物質(zhì)空間劃分為多個(gè)立方體的小盒子。 分子數(shù)據(jù)保存單元12以每一個(gè)小盒子的分子數(shù)據(jù)連續(xù)存儲(chǔ)在與該小盒子對(duì)應(yīng)的存儲(chǔ)區(qū)域中的方式,將上述多個(gè)小盒子的分子數(shù)據(jù)存儲(chǔ)在該多處理器系統(tǒng)的主存儲(chǔ)器中。
如圖13所示,分子數(shù)據(jù)保存單元12進(jìn)一步包括存儲(chǔ)區(qū)域設(shè)置單元121、對(duì)應(yīng)關(guān)系確定單元122以及保存單元123。 存儲(chǔ)區(qū)域設(shè)置單元121在上述多處理器系統(tǒng)的主存儲(chǔ)器中,設(shè)置與上述多個(gè)小盒子的數(shù)量對(duì)應(yīng)的多個(gè)存儲(chǔ)區(qū)域。在一個(gè)優(yōu)選實(shí)施例中,存儲(chǔ)區(qū)域設(shè)置單元121在該主存儲(chǔ)器中連續(xù)地設(shè)置該多個(gè)存儲(chǔ)區(qū)域。 對(duì)應(yīng)關(guān)系確定單元122確定上述多個(gè)小盒子與上述多個(gè)存儲(chǔ)區(qū)域的對(duì)應(yīng)關(guān)系。在一個(gè)優(yōu)選實(shí)施例中,對(duì)應(yīng)關(guān)系確定單元122為該多個(gè)小盒子設(shè)置在空間坐標(biāo)系中的相對(duì)位置坐標(biāo),并且通過(guò)相對(duì)位置坐標(biāo)的計(jì)算,確定該多個(gè)小盒子與上述多個(gè)存儲(chǔ)區(qū)域的對(duì)應(yīng)關(guān)系。 保存單元123以每一個(gè)小盒子的分子數(shù)據(jù)連續(xù)存儲(chǔ)在與該小盒子對(duì)應(yīng)的存儲(chǔ)區(qū)域中的方式,按照上述多個(gè)小盒子與上述多個(gè)存儲(chǔ)區(qū)域的對(duì)應(yīng)關(guān)系,將該多個(gè)小盒子的分子數(shù)據(jù)分別存儲(chǔ)到上述多個(gè)存儲(chǔ)區(qū)域。 多個(gè)部分劃分單元13根據(jù)上述多個(gè)加速器的數(shù)量,將上述多個(gè)小盒子劃分為相應(yīng)的多個(gè)部分,其中每一個(gè)部分包括多層小盒子。 分配單元14將上述多個(gè)部分分配給上述多個(gè)加速器,以使每一個(gè)加速器處理其中的一個(gè)部分。 模擬單元15以在一次DMA操作中獲取至少一個(gè)小盒子的分子數(shù)據(jù)的方式,使上述多個(gè)加速器并行地從上述主存儲(chǔ)器中重復(fù)獲取上述多個(gè)小盒子的分子數(shù)據(jù),并進(jìn)行分子動(dòng)力學(xué)模擬計(jì)算。 具體地,模擬單元15使上述多個(gè)加速器并行地對(duì)于各自的部分,以在一次DMA操作中獲取至少一個(gè)小盒子的分子數(shù)據(jù)的方式,逐層獲取分子數(shù)據(jù)并進(jìn)行分子動(dòng)力學(xué)模擬計(jì)算,其中該多個(gè)加速器在并行處理中相互之間始終隔著多層小盒子。進(jìn)一步地,模擬單元15
使該多個(gè)加速器并行地對(duì)于各自的部分,逐個(gè)層中的逐個(gè)條帶地獲取分子數(shù)據(jù)并進(jìn)行分子動(dòng)力學(xué)模擬計(jì)算,其中一個(gè)條帶包含多個(gè)小盒子。 如圖13所示,模擬單元15進(jìn)一步包括分子數(shù)據(jù)獲取單元151以及模擬計(jì)算單元152。 分子數(shù)據(jù)獲取單元151使上述多個(gè)加速器并行地對(duì)于各自的部分,從第一層開始
逐層地對(duì)于當(dāng)前層中的各個(gè)條帶,以在一次DMA操作中獲取至少一個(gè)小盒子的分子數(shù)據(jù)
的方式,獲取與該條帶的分子動(dòng)力學(xué)模擬計(jì)算有關(guān)的多個(gè)條帶的分子數(shù)據(jù)到本地存儲(chǔ)器
中。并且,分子數(shù)據(jù)獲取單元151使上述多個(gè)加速器分別根據(jù)前面確定的上述多個(gè)小盒子
與上述多個(gè)存儲(chǔ)區(qū)域的對(duì)應(yīng)關(guān)系,來(lái)獲取其各自的多個(gè)條帶的分子數(shù)據(jù)。 模擬計(jì)算單元152使上述多個(gè)加速器并行地,利用其本地存儲(chǔ)器中存儲(chǔ)的上述多
個(gè)條帶的分子數(shù)據(jù),進(jìn)行分子動(dòng)力學(xué)模擬計(jì)算。 在一個(gè)實(shí)施例中,該模擬單元15還包括可選的欄劃分單元153,其根據(jù)上述多個(gè)加速器的本地存儲(chǔ)器容量以及上述多個(gè)小盒子中的分子數(shù)目,對(duì)于上述多個(gè)加速器的每一
14個(gè),將其當(dāng)前處理的層劃分為多欄。 在此情況下,分子數(shù)據(jù)獲取單元151以及模擬計(jì)算單元152,使上述多個(gè)加速器并
行地對(duì)于其多欄的每一個(gè)中的各個(gè)當(dāng)前條帶,以在一次DMA操作中獲取至少一個(gè)小盒子的
分子數(shù)據(jù)的方式,獲取與該條帶的分子動(dòng)力學(xué)模擬計(jì)算有關(guān)的多個(gè)條帶的分子數(shù)據(jù)到本地
存儲(chǔ)器中,并利用該多個(gè)條帶的分子數(shù)據(jù)進(jìn)行該當(dāng)前條帶的分子動(dòng)力學(xué)模擬計(jì)算。 在一個(gè)優(yōu)選實(shí)施例中,每一個(gè)條帶中的各個(gè)小盒子所對(duì)應(yīng)的存儲(chǔ)區(qū)域在主存儲(chǔ)器
中是連續(xù)地設(shè)置的。 在此情況下,模擬單元15使上述多個(gè)加速器并行地對(duì)于各自的部分,以在一次DMA操作中獲取一個(gè)條帶的分子數(shù)據(jù)的方式,逐個(gè)層中的逐個(gè)條帶地獲取分子數(shù)據(jù)并進(jìn)行分子動(dòng)力學(xué)模擬計(jì)算。 以上就是對(duì)本實(shí)施例的在多處理器系統(tǒng)中進(jìn)行分子動(dòng)力學(xué)模擬的裝置的詳細(xì)描
述。其中,該裝置io及其各個(gè)組成部分,可以由專用的電路或芯片構(gòu)成,也可以通過(guò)計(jì)算機(jī)
(處理器)執(zhí)行相應(yīng)的程序來(lái)實(shí)現(xiàn)。 本發(fā)明還提供一種程序產(chǎn)品,包含在多處理器系統(tǒng)上實(shí)現(xiàn)以上所有方法的程序代碼以及承載該程序代碼的承載介質(zhì)。 以上雖然通過(guò)一些示例性的實(shí)施例對(duì)本發(fā)明的在多處理器系統(tǒng)上進(jìn)行分子動(dòng)力學(xué)模擬的方法和裝置進(jìn)行了詳細(xì)的描述,但是以上這些實(shí)施例并不是窮舉的,本領(lǐng)域技術(shù)人員可以在本發(fā)明的精神和范圍內(nèi)實(shí)現(xiàn)各種變化和修改。因此,本發(fā)明并不限于這些實(shí)施例,本發(fā)明的范圍僅以所附權(quán)利要求為準(zhǔn)。
權(quán)利要求
一種在多處理器系統(tǒng)上進(jìn)行分子動(dòng)力學(xué)模擬的方法,其中該多處理器系統(tǒng)包括至少一個(gè)核心處理器以及多個(gè)加速器,該方法包括將需要進(jìn)行分子動(dòng)力學(xué)模擬的物質(zhì)空間劃分為多個(gè)小盒子;以每一個(gè)小盒子的分子數(shù)據(jù)連續(xù)存儲(chǔ)在與該小盒子對(duì)應(yīng)的存儲(chǔ)區(qū)域中的方式,將上述多個(gè)小盒子的分子數(shù)據(jù)存儲(chǔ)在該多處理器系統(tǒng)的主存儲(chǔ)器中;以及以在一次DMA操作中獲取至少一個(gè)小盒子的分子數(shù)據(jù)的方式,使上述多個(gè)加速器并行地從上述主存儲(chǔ)器中重復(fù)獲取上述多個(gè)小盒子的分子數(shù)據(jù),并進(jìn)行分子動(dòng)力學(xué)模擬計(jì)算。
2. 根據(jù)權(quán)利要求1所述的方法,其中所述小盒子為立方體或者長(zhǎng)方體。
3. 根據(jù)權(quán)利要求1所述的方法,其中將上述多個(gè)小盒子的分子數(shù)據(jù)存儲(chǔ)在該多處理器 系統(tǒng)的主存儲(chǔ)器中的步驟進(jìn)一步包括在上述多處理器系統(tǒng)的主存儲(chǔ)器中,設(shè)置與上述多個(gè)小盒子的數(shù)量對(duì)應(yīng)的多個(gè)存儲(chǔ)區(qū)域;確定上述多個(gè)小盒子與上述多個(gè)存儲(chǔ)區(qū)域的對(duì)應(yīng)關(guān)系;以及按照上述多個(gè)小盒子與上述多個(gè)存儲(chǔ)區(qū)域的對(duì)應(yīng)關(guān)系,將該多個(gè)小盒子的分子數(shù)據(jù)分 別存儲(chǔ)到上述多個(gè)存儲(chǔ)區(qū)域中。
4. 根據(jù)權(quán)利要求3所述的方法,其中上述多個(gè)存儲(chǔ)區(qū)域在上述主存儲(chǔ)器中是連續(xù)地設(shè) 置的。
5. 根據(jù)權(quán)利要求3所述的方法,其中確定上述多個(gè)小盒子與上述多個(gè)存儲(chǔ)區(qū)域的對(duì)應(yīng) 關(guān)系的步驟進(jìn)一步包括為上述多個(gè)小盒子設(shè)置在空間坐標(biāo)系中的相對(duì)位置坐標(biāo);以及 通過(guò)相對(duì)位置坐標(biāo)的計(jì)算,確定該多個(gè)小盒子與上述多個(gè)存儲(chǔ)區(qū)域的對(duì)應(yīng)關(guān)系。
6. 根據(jù)權(quán)利要求2 5中的任意一項(xiàng)所述的方法,其中使上述多個(gè)加速器并行地從上 述主存儲(chǔ)器中重復(fù)獲取上述多個(gè)小盒子的分子數(shù)據(jù),并進(jìn)行分子動(dòng)力學(xué)模擬計(jì)算的步驟進(jìn) 一步包括根據(jù)上述多個(gè)加速器的數(shù)量,將上述多個(gè)小盒子劃分為相應(yīng)的多個(gè)部分,其中每一個(gè) 部分包括多層小盒子;將上述多個(gè)部分分配給上述多個(gè)加速器,以使每一個(gè)加速器處理其中的一個(gè)部分;以及使上述多個(gè)加速器并行地對(duì)于各自的部分,逐層獲取分子數(shù)據(jù)并進(jìn)行分子動(dòng)力學(xué)模擬 計(jì)算,其中上述多個(gè)加速器在并行處理中相互之間始終隔著多層小盒子。
7. 根據(jù)權(quán)利要求6所述的方法,其中將上述多個(gè)小盒子劃分為相應(yīng)的多個(gè)部分的步驟 進(jìn)一步包括沿空間坐標(biāo)系的坐標(biāo)軸方向?qū)⑸鲜龆鄠€(gè)小盒子劃分為相應(yīng)的多個(gè)部分。
8. 根據(jù)權(quán)利要求6所述的方法,其中使上述多個(gè)加速器并行地對(duì)于各自的部分,逐層 獲取分子數(shù)據(jù)并進(jìn)行分子動(dòng)力學(xué)模擬計(jì)算的步驟進(jìn)一步包括使上述多個(gè)加速器并行地對(duì)于各自的部分,逐個(gè)層中的逐個(gè)條帶地獲取分子數(shù)據(jù)并進(jìn) 行分子動(dòng)力學(xué)模擬計(jì)算,其中一個(gè)條帶包含多個(gè)小盒子。
9. 根據(jù)權(quán)利要求8所述的方法,其中使上述多個(gè)加速器并行地對(duì)于各自的部分,逐個(gè) 層中的逐個(gè)條帶地獲取分子數(shù)據(jù)并進(jìn)行分子動(dòng)力學(xué)模擬計(jì)算的步驟進(jìn)一步包括使上述多個(gè)加速器并行地對(duì)于各自的部分,從第一層開始逐層地對(duì)于當(dāng)前層中的各個(gè)當(dāng)前條帶,獲取與該當(dāng)前條帶的分子動(dòng)力學(xué)模擬計(jì)算有關(guān)的多個(gè) 條帶的分子數(shù)據(jù)到本地存儲(chǔ)器中,并利用該多個(gè)條帶的分子數(shù)據(jù)進(jìn)行該當(dāng)前條帶的分子動(dòng) 力學(xué)模擬計(jì)算。
10. 根據(jù)權(quán)利要求8所述的方法,其中使上述多個(gè)加速器并行地對(duì)于各自的部分,逐個(gè) 層中的逐個(gè)條帶地獲取分子數(shù)據(jù)并進(jìn)行分子動(dòng)力學(xué)模擬計(jì)算的步驟進(jìn)一步包括使上述多個(gè)加速器并行地對(duì)于各自的部分,從第一層開始逐層地根據(jù)上述多個(gè)加速器的本地存儲(chǔ)器容量以及上述多個(gè)小盒子中的分子數(shù)目,將當(dāng)前層 劃分為多欄;以及對(duì)于該多欄的每一個(gè)中的各個(gè)當(dāng)前條帶,獲取與該當(dāng)前條帶的分子動(dòng)力學(xué)模擬計(jì)算有 關(guān)的多個(gè)條帶的分子數(shù)據(jù)到本地存儲(chǔ)器中,并利用該多個(gè)條帶的分子數(shù)據(jù)進(jìn)行該當(dāng)前條帶 的分子動(dòng)力學(xué)模擬計(jì)算。
11. 根據(jù)權(quán)利要求8 11中的任意一項(xiàng)所述的方法,其中每一個(gè)條帶中的各個(gè)小盒子 所對(duì)應(yīng)的存儲(chǔ)區(qū)域在上述主存儲(chǔ)器中是連續(xù)地設(shè)置的;并且使上述多個(gè)加速器并行地對(duì)于各自的部分,逐個(gè)層中的逐個(gè)條帶地獲取分子數(shù)據(jù)并進(jìn) 行分子動(dòng)力學(xué)模擬計(jì)算的步驟進(jìn)一步包括使上述多個(gè)加速器并行地對(duì)于各自的部分,以在一次DMA操作中獲取一個(gè)條帶的分子 數(shù)據(jù)的方式,逐個(gè)層中的逐個(gè)條帶地獲取分子數(shù)據(jù)并進(jìn)行分子動(dòng)力學(xué)模擬計(jì)算。
12. —種在多處理器系統(tǒng)中進(jìn)行分子動(dòng)力學(xué)模擬的裝置,其中該多處理器系統(tǒng)包括至 少一個(gè)核心處理器以及多個(gè)加速器,該裝置包括小盒子劃分單元,其將需要進(jìn)行分子動(dòng)力學(xué)模擬的物質(zhì)空間劃分為多個(gè)小盒子; 分子數(shù)據(jù)保存單元,其以每一個(gè)小盒子的分子數(shù)據(jù)連續(xù)存儲(chǔ)在與該小盒子對(duì)應(yīng)的存儲(chǔ)區(qū)域中的方式,將上述多個(gè)小盒子的分子數(shù)據(jù)存儲(chǔ)在該多處理器系統(tǒng)的主存儲(chǔ)器中;以及 模擬單元,其以在一次DMA操作中獲取至少一個(gè)小盒子的分子數(shù)據(jù)的方式,使上述多個(gè)加速器并行地從上述主存儲(chǔ)器中重復(fù)獲取上述多個(gè)小盒子的分子數(shù)據(jù),并進(jìn)行分子動(dòng)力學(xué)模擬計(jì)算。
13. 根據(jù)權(quán)利要求12所述的裝置,其中所述小盒子為立方體或者長(zhǎng)方體。
14. 根據(jù)權(quán)利要求12所述的裝置,其中上述分子數(shù)據(jù)保存單元進(jìn)一步包括 存儲(chǔ)區(qū)域設(shè)置單元,其在上述多處理器系統(tǒng)的主存儲(chǔ)器中,設(shè)置與上述多個(gè)小盒子的數(shù)量對(duì)應(yīng)的多個(gè)存儲(chǔ)區(qū)域;對(duì)應(yīng)關(guān)系確定單元,其確定上述多個(gè)小盒子與上述多個(gè)存儲(chǔ)區(qū)域的對(duì)應(yīng)關(guān)系;以及 保存單元,其以每一個(gè)小盒子的分子數(shù)據(jù)連續(xù)存儲(chǔ)在與該小盒子對(duì)應(yīng)的存儲(chǔ)區(qū)域中的方式,按照上述多個(gè)小盒子與上述多個(gè)存儲(chǔ)區(qū)域的對(duì)應(yīng)關(guān)系,將該多個(gè)小盒子的分子數(shù)據(jù)分別存儲(chǔ)到上述多個(gè)存儲(chǔ)區(qū)域中。
15. 根據(jù)權(quán)利要求14所述的裝置,其中上述多個(gè)存儲(chǔ)區(qū)域在上述主存儲(chǔ)器中是連續(xù)地 設(shè)置的。
16. 根據(jù)權(quán)利要求12 15所述的裝置,還包括多個(gè)部分劃分單元,其根據(jù)上述多個(gè)加速器的數(shù)量,將上述多個(gè)小盒子劃分為相應(yīng)的 多個(gè)部分,其中每一個(gè)部分包括多層小盒子;以及分配單元,其將上述多個(gè)部分分配給上述多個(gè)加速器,以使每一個(gè)加速器處理其中的 一個(gè)部分;其中,上述模擬單元使上述多個(gè)加速器并行地對(duì)于各自的部分,逐層獲取分子數(shù)據(jù)并 進(jìn)行分子動(dòng)力學(xué)模擬計(jì)算,其中上述多個(gè)加速器在并行處理中相互之間始終隔著多層小盒 子。
17. 根據(jù)權(quán)利要求16所述的裝置,其中上述模擬單元進(jìn)一步使上述多個(gè)加速器并行地 對(duì)于各自的部分,逐個(gè)層中的逐個(gè)條帶地獲取分子數(shù)據(jù)并進(jìn)行分子動(dòng)力學(xué)模擬計(jì)算,其中 一個(gè)條帶包含多個(gè)小盒子。
18. 根據(jù)權(quán)利要求17所述的裝置,其中上述模擬單元進(jìn)一步包括 分子數(shù)據(jù)獲取單元,其使上述多個(gè)加速器并行地對(duì)于各自的部分,從第一層開始逐層地對(duì)于當(dāng)前層中的各個(gè)當(dāng)前條帶,以在一次DMA操作中獲取至少一個(gè)小盒子的分子數(shù)據(jù) 的方式,獲取與該當(dāng)前條帶的分子動(dòng)力學(xué)模擬計(jì)算有關(guān)的多個(gè)條帶的分子數(shù)據(jù)到本地存儲(chǔ) 器中;以及模擬計(jì)算單元,其使上述多個(gè)加速器并行地,利用其本地存儲(chǔ)器中存儲(chǔ)的上述多個(gè)條 帶的分子數(shù)據(jù),進(jìn)行上述當(dāng)前條帶的分子動(dòng)力學(xué)模擬計(jì)算。
19. 根據(jù)權(quán)利要求18所述的裝置,其中上述模擬單元還包括欄劃分單元,其根據(jù)上述多個(gè)加速器的本地存儲(chǔ)器容量以及上述多個(gè)小盒子中的分子 數(shù)目,對(duì)于上述多個(gè)加速器的每一個(gè),將其當(dāng)前處理的層劃分為多欄;其中上述分子數(shù)據(jù)獲取單元以及模擬計(jì)算單元,使上述多個(gè)加速器并行地對(duì)于其多欄 的每一個(gè)中的各個(gè)當(dāng)前條帶,獲取與該當(dāng)前條帶的分子動(dòng)力學(xué)模擬計(jì)算有關(guān)的多個(gè)條帶的 分子數(shù)據(jù)到本地存儲(chǔ)器中,并利用該多個(gè)條帶的分子數(shù)據(jù)進(jìn)行該當(dāng)前條帶的分子動(dòng)力學(xué)模 擬計(jì)算。
20. 根據(jù)權(quán)利要求17 19中的任意一項(xiàng)所述的裝置,其中每一個(gè)條帶中的各個(gè)小盒子 所對(duì)應(yīng)的存儲(chǔ)區(qū)域在上述主存儲(chǔ)器中是連續(xù)地設(shè)置的;并且上述模擬單元使上述多個(gè)加速器并行地對(duì)于各自的部分,以在一次DMA操作中獲取一 個(gè)條帶的分子數(shù)據(jù)的方式,逐個(gè)層中的逐個(gè)條帶地獲取分子數(shù)據(jù)并進(jìn)行分子動(dòng)力學(xué)模擬計(jì)算。
全文摘要
本發(fā)明提供一種在多處理器系統(tǒng)上進(jìn)行分子動(dòng)力學(xué)模擬的方法和裝置。該多處理器系統(tǒng)包括至少一個(gè)核心處理器以及多個(gè)加速器。該方法包括將需要進(jìn)行分子動(dòng)力學(xué)模擬的物質(zhì)空間劃分為多個(gè)小盒子;以每一個(gè)小盒子的分子數(shù)據(jù)連續(xù)存儲(chǔ)在與該小盒子對(duì)應(yīng)的存儲(chǔ)區(qū)域中的方式,將上述多個(gè)小盒子的分子數(shù)據(jù)存儲(chǔ)在該多處理器系統(tǒng)的主存儲(chǔ)器中;以在一次DMA操作中獲取至少一個(gè)小盒子的分子數(shù)據(jù)的方式,使上述多個(gè)加速器并行地從主存儲(chǔ)器中重復(fù)獲取上述多個(gè)小盒子的分子數(shù)據(jù),并進(jìn)行分子動(dòng)力學(xué)模擬計(jì)算。本發(fā)明通過(guò)使每一個(gè)小盒子的分子數(shù)據(jù)連續(xù)存儲(chǔ)在與該小盒子對(duì)應(yīng)的存儲(chǔ)區(qū)域中,能夠使各加速器在進(jìn)行模擬時(shí)減少與主存儲(chǔ)器的數(shù)據(jù)交換,從而提高模擬性能。
文檔編號(hào)G06F17/50GK101782930SQ20091000325
公開日2010年7月21日 申請(qǐng)日期2009年1月21日 優(yōu)先權(quán)日2009年1月21日
發(fā)明者李廣磊, 汪文俊, 王佰玲, 鐘忻 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司