專利名稱:并行處理方法中的作業(yè)分配方法及并行處理方法
技術領域:
本發(fā)明涉及利用由主計算機和通過共用總線與該主計算機連接的多個處理器構成的計算機系統(tǒng),由多個處理器并行處理多個作業(yè)的并行處理方法中的作業(yè)分配方法。另外,涉及用以高速處理大規(guī)模的具有特定對稱性的矩陣元素計算,尤其是采用非經(jīng)驗分子軌道法的分子模擬中的??司仃囋赜嬎愕牟⑿刑幚矸椒ā?br>
背景技術:
化學領域中,作為用數(shù)值解析分子的狀態(tài)和運動的方法,有分子軌道法、分子動力學法、蒙特卡洛法等。其中,非經(jīng)驗分子軌道計算法是基于第一原理的量子力學的計算,其目的為記述分子中電子的運動。因而,該方法是用于以分子模擬為基礎,詳細解析物質(zhì)構造和化學反應的工業(yè)上重要的方法。
非經(jīng)驗分子軌道計算法中,將以構成分子的原子的原子核和軌道電子之間距離的2次方乘以經(jīng)驗常數(shù)后的數(shù)作為指數(shù)的指數(shù)函數(shù)的倒數(shù)或它們的線性組合作為基底函數(shù),相對于一個原子準備多個該基底函數(shù)。用這些基底函數(shù)的線性組合記述分子內(nèi)軌道電子的波函數(shù)即分子軌道。
確定分子軌道中基底函數(shù)的線性組合系數(shù)是非經(jīng)驗分子軌道計算法中的主要處理,該計算必須有與基底函數(shù)的數(shù)的4次方成比例的計算量和存儲容量。因此,當前的非經(jīng)驗分子軌道計算法僅僅適用于100原子左右規(guī)模的分子體系。為了使生命現(xiàn)象/化學現(xiàn)象的分子論的解釋更加現(xiàn)實,必須開發(fā)可適用于數(shù)千原子規(guī)模的分子體系的非經(jīng)驗分子軌道計算專用的計算系統(tǒng)。
作為這樣大規(guī)模的非經(jīng)驗分子軌道計算專用的計算系統(tǒng)的例子,有文獻1(白川他“超高速分子軌道計算專用機MOE的體系結(jié)構”,電子情報通信學會技術報告,vol.CPSY96-46,no.5,pp.45-50,1996)或文獻2(稲畑他,“PPRAM-MOE分子軌道計算專用服務器MOE的處理節(jié)點LSI”,電子情報通信學會技術報告,vol.CPSY98-21,no.4,pp.77-84,1998)中記載的系統(tǒng)。
這些文獻記載的計算系統(tǒng)是將主計算機和例如100個處理器(以下的說明中將用于該并行處理的處理器稱為處理單元)通過共用總線連接而構成的并行處理系統(tǒng),其目的為高速進行非經(jīng)驗分子軌道計算。
由于這些系統(tǒng)的各個并行處理單元具有高的運算處理能力且可實現(xiàn)整個系統(tǒng)的低成本,因而能夠提供性價比良好的計算系統(tǒng)。
象非經(jīng)驗分子軌道計算這樣的計算量大的場合,有效運用并行處理用的多個處理單元以實現(xiàn)進一步高速化是很重要的。特別是在上述文獻記載的系統(tǒng)中,由于在各處理單元通過共用總線和主計算機通信、進行必要的數(shù)據(jù)收發(fā)的同時進行計算處理,因而盡可能減少各處理單元中通信的等待時間以進行有效處理對于高速處理顯得尤為重要。
但是,單純的非經(jīng)驗分子軌道計算中,在形成作業(yè)并分配給并行處理單元的場合,由于各個作業(yè)的計算量(計算時間和通信量)不同,因而產(chǎn)生通信的系統(tǒng)開銷(等待時間),導致無法提高與處理單元的個數(shù)成比例的處理性能的問題。
如果進行并行處理的處理單元的個數(shù)增加,則主計算機和處理單元之間收發(fā)的總數(shù)據(jù)量雖然不變,但是處理單元的處理能力隨個數(shù)成比例增加。結(jié)果,一定時間內(nèi)必須進行通信的量(平均通信量)增加,處理單元數(shù)若超過某一個數(shù),則平均通信量超過通信網(wǎng)的處理能力(通信性能)。該情況是發(fā)生通信的系統(tǒng)開銷的一個原因。
另外,在短時間內(nèi)集中發(fā)生通信請求、總通信量在某一時刻超過通信網(wǎng)的通信性能,即發(fā)生在時間上不均一的通信負荷的場合時,發(fā)生通信的開銷,導致并行處理效率的劣化。這在平均通信量不超過通信網(wǎng)的通信性能的場合時也會發(fā)生。
從而,為了用并行計算機進行有效的處理,必須減少發(fā)生的總通信量并使通信負荷的發(fā)生在時間上均一(通信負荷隨時間分散)。
例如,多個作業(yè)中的各個作業(yè)如果是計算量(計算時間;另外,該計算中包含使用例如ROM(只讀存儲器)的變換處理等。本說明書中的計算和運算同義)和通信量(通信時間)均等的作業(yè),則通過向各處理單元分配作業(yè)使經(jīng)由共用總線進行的通信時刻延遲,從而不發(fā)生通信的開銷,可進行并行處理。
文獻3日本的(特開平5-324581號公報)中公開了在并行處理多體問題的計算時使計算負荷均一化的負荷分散方法。該文獻3記載的負荷分散方法中,以各作業(yè)的大小完全相等為前提,通過向處理單元分配個數(shù)均等的作業(yè),使計算負荷均等。
但是,非經(jīng)驗分子軌道計算中,各作業(yè)的計算循環(huán)的次數(shù)不同,且從主計算機取得的數(shù)據(jù)量的差異引起的通信量也不同。從而有僅僅通過使作業(yè)個數(shù)均等無法使計算負荷均等的問題。
除了上述文獻,文獻4(特開平6-35870號公報)、文獻5(特開平6-243112號公報)、文獻6(特開平7-295942號公報)、文獻7(特開平8-185377號公報)、文獻8(特開平10-240698號公報)等日本文獻也公開了由多個處理單元進行并行處理時的負荷分散方法。
但是,由于這些文獻4、文獻5、文獻6、文獻7、文獻8記載的任何一個負荷分散方法都是在測定或預測處理單元的負荷狀態(tài)的基礎上進行作業(yè)的調(diào)度,因而必須設置用于測定或預測的專用功能且為了進行測定或預測需要進行附加處理。
另外,文獻8記載的分散計算系統(tǒng)中雖然公開了將分散系統(tǒng)分成具有均等能力的群、以群單位進行負荷分散的方法,但是由于沒有考慮關于通信負荷的分散,有可能導致通信的開銷增大的問題。
針對上述的問題點,本發(fā)明的目的為提供即使在各個作業(yè)的計算負荷和通信負荷的大小不同的場合,也不用設置專用機構,可以用簡單的方法使負荷均等化的作業(yè)分配方法,可進行有效的并行處理,縮短整個系統(tǒng)的處理時間。
發(fā)明內(nèi)容
第1發(fā)明的并行處理方法中的作業(yè)分配方法的特征在于在利用由主計算機和通過共用總線與該主計算機連接的多個處理器構成的計算機系統(tǒng),將由所述主計算機與所述處理器之間的通信處理和所述處理器中的運算處理組成的多個作業(yè)通過所述多個處理器進行并行處理的并行處理方法中,向所述各處理器分配各作業(yè),使所述作業(yè)的通信時間與運算時間之比的平均值為規(guī)定值。
根據(jù)上述構成的第1發(fā)明,由于向多個處理器分配作業(yè)使得作業(yè)的通信時間與運算時間之比的平均值為規(guī)定值,因而通信處理和運算處理都可有效進行,能夠縮短到處理結(jié)束為止的時間。
第2發(fā)明的特征為在第1發(fā)明的并行處理方法中的作業(yè)分配方法中,所述多個作業(yè)的全體通信時間與向所述多個處理器均等分配所述多個作業(yè)時的一個作業(yè)內(nèi)的運算時間的總和大致相等時,向所述各個處理器分配各作業(yè),使得所述作業(yè)的通信時間與運算時間之比的平均值為所述處理器個數(shù)的倒數(shù)。
根據(jù)該第2發(fā)明,由于在多個作業(yè)的全體通信時間與向多個處理器均等分配多個作業(yè)時的一個作業(yè)內(nèi)的運算時間的總和大致相等時,作業(yè)的通信時間與運算時間之比的平均值為處理器個數(shù)的倒數(shù),因而不會產(chǎn)生各處理器即不通信又不運算的時間帶,在并行的多個處理器的每一個的所述運算時間結(jié)束時,處理結(jié)束。從而,可以有效進行通信處理和運算處理,縮短到處理結(jié)束為止的時間。
第3發(fā)明的特征為在第1發(fā)明的并行處理方法的作業(yè)分配方法中,向各處理器交替分配通信時間與運算時間之比大于和小于所述規(guī)定值或所述處理器個數(shù)的倒數(shù)的作業(yè)。
另外,第4發(fā)明的特征在于在第2發(fā)明的并行處理方法的作業(yè)分配方法中,向各處理器交替分配通信時間與運算時間之比大于和小于所述規(guī)定值或所述處理器個數(shù)的倒數(shù)的作業(yè)。
根據(jù)上述的第3和第4發(fā)明,通過交替分配通信時間與運算時間之比大于和小于規(guī)定值或處理器個數(shù)的倒數(shù)的作業(yè)的簡單方法,可以有效進行通信處理和運算處理。
另外,第5發(fā)明的特征為在利用由主計算機和通過共用總線與該主計算機連接的多個處理器構成的計算機系統(tǒng),將由所述主計算機與所述處理器之間的通信處理和所述處理器中的運算處理組成的多個作業(yè)通過所述多個處理器進行并行處理的并行處理方法中,用從N(N是整數(shù))到M(大于N的整數(shù))的連續(xù)整數(shù)對所述多個作業(yè)進行編號,如果就要分配完的作業(yè)的編號J小于或等于(N+M)/2,則將編號為N+(M-J-1)的作業(yè)作為下一次作業(yè)進行分配,如果就要分配完的作業(yè)的編號J大于(N+M)/2,則將編號為N+(M-J)的作業(yè)作為下一次作業(yè)進行分配,或者,如果就要分配完的作業(yè)的編號J小于(N+M)/2,則將編號為N+(M-J)的作業(yè)作為下一次作業(yè)進行分配,如果就要分配完的作業(yè)的編號J大于或等于(N+M)/2,則將編號為N+(M-J-1)的作業(yè)作為下一次作業(yè)進行分配,
如上分配各作業(yè),使得所述通信時間和所述運算時間之比的平均值為規(guī)定值。
該第5發(fā)明中,用從N(N是整數(shù))到M(大于N的整數(shù))的連續(xù)整數(shù)按照通信時間與運算時間之比從小到大或從大到小的順序?qū)ψ鳂I(yè)編號。從而,多個作業(yè)的大小的波動變小。
從而,當處理器中先前處理的作業(yè)編號大于全體作業(yè)編號中的中間值時,分配作業(yè)編號小的作業(yè)作為下一次作業(yè),先前處理的作業(yè)編號小于全體作業(yè)編號中的中間值時,分配作業(yè)編號大的作業(yè)作為下一次作業(yè)。
從而,令作業(yè)的通信時間與運算時間之比的平均值大致為處理器個數(shù)的倒數(shù),可以有效進行通信處理和運算處理,縮短至處理結(jié)束為止的時間。
另外,第6發(fā)明的特征為在利用由主計算機和通過共用總線與該主計算機連接的多個處理器構成的計算機系統(tǒng),將由所述主計算機與所述處理器之間的通信處理和所述處理器中的運算處理組成的多個作業(yè)通過所述多個處理器進行并行處理的并行處理方法中,將所述多個處理器分割成G個(G是大于或等于2的整數(shù))處理器群,群內(nèi)的所述處理器個數(shù)大致相等,同時將所述多個作業(yè)分割成G個作業(yè)群,群內(nèi)的所述作業(yè)個數(shù)大致相等,使所述處理器群和所述作業(yè)群一一對應,一個作業(yè)群內(nèi)的作業(yè)分配給對應的一個處理器群內(nèi)的處理器,使由所述通信時間和運算時間組成的大小與所述通信時間和所述運算時間之比近似的作業(yè)分別屬于所述各個不同的作業(yè)群,同時,將由所述通信時間和運算時間組成的大小與所述通信時間和所述運算時間之比近似的作業(yè)分配到所述各個作業(yè)群內(nèi),其分配順序在所述多個作業(yè)群中互不相同。
該第6發(fā)明中,將多個處理器分割成G個(G是大于或等于2的整數(shù))處理器群,群內(nèi)的處理器個數(shù)大致相等。另外,將多個作業(yè)分割成G個作業(yè)群,群內(nèi)的作業(yè)個數(shù)與處理器群的個數(shù)大致相等。從而,處理器群和作業(yè)群一一對應,一個作業(yè)群內(nèi)的作業(yè)分配給對應的一個處理器群內(nèi)的處理器。
該情況下,可將由通信時間和運算時間組成的大小與通信時間和運算時間近似的作業(yè)分散,使其分別屬于不同的作業(yè)群,而且,可將由通信時間和運算時間組成的大小與通信時間和運算時間近似的作業(yè)分散地分配到各個作業(yè)群內(nèi),使其分配順序在多個作業(yè)群中互不相同,可使多個作業(yè)的通信處理在共用總線上不會形成擁擠狀態(tài)。
從而,可有效進行通信處理和運算處理,縮短到處理結(jié)束為止的時間。
另外,第7發(fā)明是采用由主計算機和多個處理器構成的計算機系統(tǒng)進行分子軌道計算的并行處理方法,所述分子軌道計算是計算用n個(n是正整數(shù))收縮殼(縮約シエル,contracted shell)表示的分子的能量,其特征在于它執(zhí)行以下計算,即,將收縮殼R、S、T、U分別包含的原始殼r、s、t、u的各個分量、即原始基底函數(shù)i、j、k、l作為指標而表示的2電子積分函數(shù)g的函數(shù)值g(i,j,k,l)、將以所述原始基底函數(shù)k為一個構成元素的收縮基底函數(shù)K和以所述原始基底函數(shù)l為一個構成元素的收縮基底函數(shù)L作為指標而表示的密度矩陣P的元素P(K,L)與系數(shù)A1的積A1·P(K,L)·g(i,j,k,l)的所有收縮基底函數(shù)的總和f1(I,J);和所述2電子積分函數(shù)的函數(shù)值g(i,k,j,l)、所述密度矩陣P的元素P(K,L)與系數(shù)A2的積A2·P(K,L)·g(i,k,j,l)的所有收縮基底函數(shù)相關的總和f2(I,J);之和f(I,J)=f1(I,J)+f2(I,J),用以所述原始基底函數(shù)i、j為一個構成元素的所述收縮基底函數(shù)I、J中包含的所有所述原始基底函數(shù)的和進行表示的??司仃嘑的所有矩陣元素F(I,J)的計算;令最外側(cè)的循環(huán)為與滿足R≤nmax(nmax是賦予n個收縮殼的編號的最大值)和T≤R關系的所述收縮殼R和T的組合相關的循環(huán),令所述最外側(cè)的循環(huán)的內(nèi)側(cè)的第2循環(huán)為與所述收縮殼S相關的循環(huán),比所述第2循環(huán)更靠內(nèi)側(cè)的第3循環(huán)為與所述收縮殼U相關的循環(huán),或令所述第2循環(huán)為與所述收縮殼U相關的循環(huán),所述第3循環(huán)為與所述收縮殼S相關的循環(huán),令所述收縮殼S的可取值范圍小于或等于R,令所述收縮殼U的可取值范圍小于或等于R,在所述第3循環(huán)的內(nèi)側(cè)執(zhí)行的規(guī)定的2電子積分的計算和利用該結(jié)果的規(guī)定的??司仃囋氐囊徊糠值挠嬎悖辉跉w攏所述第2和第3循環(huán)而形成一個作業(yè)單位、將各個所述作業(yè)單位分配到所述處理器中進行處理的并行處理方法中,所述作業(yè)通過向所述收縮殼R的軌道量子數(shù)高的作業(yè)分配小編號、向所述收縮殼R的軌道量子數(shù)低的作業(yè)分配大編號而形成。
該第7發(fā)明的并行處理方法中,采用非經(jīng)驗分子軌道計算的??司仃囉嬎闼惴ㄟM行的??司仃嚨挠嬎悴皇芸赜谥饔嬎銠C和處理單元之間的通信性能和主計算機的處理性能,可以高速進行計算。
該場合中,與收縮殼R和T相關的循環(huán)由主計算機控制,與R和T的組合的固定的S和U相關的循環(huán)部分分配給處理單元。
由于有R≥T、S、U的關系,R的編號大的收縮殼其循環(huán)次數(shù)也多。另一方面,R的編號小的收縮殼其循環(huán)次數(shù)也少。另外,軌道量子數(shù)高的殼其計算所必要的密度矩陣需要很多,通信量也增大相應的量,軌道量子數(shù)低的殼其密度矩陣變少,通信量也減少相應的量。
從而,如該第7發(fā)明,如果向收縮殼R的軌道量子數(shù)高的作業(yè)分配小的作業(yè)編號,向收縮殼R的軌道量子數(shù)低的作業(yè)分配大的作業(yè)編號,則可減少由運算處理和通信處理之和組成的作業(yè)的大小的波動。
從而,可以容易地向并行處理的多個處理單元進行有效的作業(yè)分配。
因而,在該第7發(fā)明的分子軌道計算的并行處理方法中,采用前述的第1發(fā)明、第2發(fā)明、第3發(fā)明、第4發(fā)明或第6發(fā)明的任何一個作業(yè)分配方法,通過向所述多個處理器分配所述作業(yè),可以有效進行通信處理和運算處理,縮短處理結(jié)束的時間。
圖1是表示本發(fā)明實施例采用的計算機系統(tǒng)的一個例子的方框圖。
圖2是表示本發(fā)明實施例采用的計算機系統(tǒng)的其他例的方框圖。
圖3是以程序代碼形式表示本發(fā)明實施例的RT并行算法的圖。
圖4是表示本發(fā)明實施例的RT并行算法的流程圖。
圖5是說明對本發(fā)明實施例采用的數(shù)據(jù)進行雙緩沖時存儲器區(qū)域的使用方法的圖。
圖6是表示本發(fā)明實施例中,從主計算機向處理單元發(fā)送的密度矩陣信息的格式的一個例子的圖。
圖7是表示本發(fā)明實施例的密度矩陣數(shù)據(jù)塊的構成例的圖。
圖8是表示本發(fā)明第1實施例的分子軌道計算中并行處理器數(shù)和SCF計算的處理時間的關系的圖。
圖9是表示本發(fā)明第1實施例的分子軌道計算中并行處理器數(shù)和處理器運轉(zhuǎn)率的關系的圖。
圖10是表示本發(fā)明第1實施例的分子軌道計算中各個并行處理器的處理的結(jié)束時間的圖。
圖11是表示效率低的處理方法和效率高的處理方法中通信處理和計算處理的進行狀況的模式圖。
圖12是表示本發(fā)明第1實施例的分子軌道計算中每個作業(yè)發(fā)生的通信量和計算量的相關關系的圖。
圖13是表示本發(fā)明第2實施例采用的用以向處理單元分配作業(yè)的等待矩陣的示例的圖。
圖14是表示本發(fā)明第2實施例中并行處理器數(shù)和SCF計算的處理時間的關系的圖。
圖15是表示本發(fā)明第2實施例中并行處理器數(shù)和處理器運轉(zhuǎn)率的關系的圖。
圖16是表示本發(fā)明第2實施例中各個并行處理器的處理的結(jié)束時間的圖。
圖17是說明本發(fā)明第3實施例中作業(yè)群分割方法和作業(yè)分配方法的圖。
圖18是表示本發(fā)明第3實施例中用以向處理單元分配作業(yè)的等待矩陣的示例的圖。
圖19是表示本發(fā)明第3實施例中并行處理器數(shù)和SCF計算的處理時間的關系的圖。
圖20是表示本發(fā)明第3實施例中并行處理器數(shù)和處理器運轉(zhuǎn)率的關系的圖。
圖21是表示本發(fā)明第3實施例中各個并行處理器的處理的結(jié)束時間的圖。
圖22是說明本發(fā)明第4實施例中作業(yè)群分割方法和作業(yè)分配方法的圖。
圖23是表示本發(fā)明第4實施例中用以向處理單元分配作業(yè)的等待矩陣的示例的圖。
圖24是表示本發(fā)明第4實施例中并行處理器數(shù)和SCF計算的處理時間的關系的圖。
圖25是表示本發(fā)明第4實施例中并行處理器數(shù)和處理器運轉(zhuǎn)率的關系的圖。
圖26是表示本發(fā)明第4實施例中各個并行處理器的處理的結(jié)束時間的圖。
圖27是本發(fā)明第5實施例中作業(yè)群分割方法和作業(yè)分配方法的說明圖。
圖28是表示本發(fā)明第5實施例中用以向處理單元分配作業(yè)的等待矩陣的示例的圖。圖29是表示本發(fā)明第5實施例中并行處理器數(shù)和SCF計算的處理時間的關系的圖。
圖30是表示本發(fā)明第5實施例中并行處理器數(shù)和處理器運轉(zhuǎn)率的關系的圖。
圖31是表示本發(fā)明第5實施例中各個并行處理器的處理的結(jié)束時間的圖。
圖32是表示原始基底函數(shù)與其角動量、軌道指數(shù)、原子核座標的對應例的圖。
圖33~圖39是表示非經(jīng)驗分子軌道計算法的說明中所采用的公式的圖。
具體實施例方式
以下,參照圖說明將本發(fā)明的并行處理方法及其作業(yè)分配方法應用于在非經(jīng)驗分子軌道計算法中進行福克矩陣的計算算法的場合時的實施例。
在說明本發(fā)明的并行處理方法及其作業(yè)分配方法的實施例之前,對非經(jīng)驗分子軌道法、用于它的計算機系統(tǒng)的構成例以及該非經(jīng)驗分子軌道法中的??司仃嚨男掠嬎闼惴ㄟM行說明。
在非經(jīng)驗分子軌道計算法中,將表示分子狀態(tài)的波函數(shù)Ψ用相當于分子中的電子空間軌道的電子軌道函數(shù)φμ記述。這里,μ是表示多個分子軌道中的第μ個軌道的附加字符。如圖33(公式1)所示,分子軌道φμ用原子軌道χI的線性組合近似表示。
這里,(公式1)中,I是表示多個原子軌道中的第I個軌道的附加字符。另外,原子軌道也稱為基底函數(shù)。本說明書以下將原子軌道稱為基底函數(shù)。另外,(公式1)出現(xiàn)的CIμ是線性組合系數(shù)。(公式1)中I的總和是關于構成作為計算對象的分子的全部基底函數(shù)的總和。
為了從量子力學的角度記述分子軌道,分子內(nèi)的電子狀態(tài)必須滿足眾所周知的泡利不相容原理??紤]電子的自旋,采用如圖33的(公式2)的斯雷特矩陣式作為記述2n電子體系的分子狀態(tài)Ψ的表達式,以滿足泡利不相容原理。這里,(公式2)中,α(x)和β(x)分別表示第x個電子的自旋向上和向下的狀態(tài)。
對2n電子體系的哈密頓算子H,用1電子部分H1與2電子部分H2之和的形式表示,如圖33的(公式3)到(公式5)所示。
圖33的(公式4)中,右邊的(…)內(nèi)的第1項為電子p的運動能,第2項為第p個電子與第A個原子核的相互作用。(公式4)中,∑p(本說明書中的∑i表示求出關于i的總和,以下同)是全部電子的總和,∑A是全部原子核的總和,ZA是原子核A的電荷,rpA是電子p與原子核A的距離。
另外,(公式5)表示電子p和電子q之間的相互作用,∑p∑q(>p)是關于2個電子的組合的總和,rpq是電子p、q間的距離。
如果利用上述的哈密頓算子H和(公式2)的斯雷特矩陣式,則分子能量的期望值ε可表示成如圖34的(公式6)~(公式9)。
(公式6)中,∑μ和∑v是n個(n是正整數(shù))分子軌道的總和。(公式7)稱為“核心積分(core integration)”,以編號1的電子為代表進行書寫。另外,(公式8)和(公式9)分別稱為“庫侖積分”和“交換積分”,以電子1和電子2為代表進行書寫。另外,(公式6)到(公式9)中,dτ、dτ1、dτ2表示位置座標空間中的體積積分。
用基底函數(shù)重寫(公式6),則如圖35(公式10)~(公式13)所示。(公式13)表示的積分稱為“2電子間排斥積分(反発積分)”或省略稱為“2電子積分”。
(公式10)所示分子能量的期望值ε包含有CIμ未知數(shù),這樣無法獲得數(shù)值。CIμ是(公式1)中的線性組合常數(shù),μ是從1到n(分子軌道數(shù))的整數(shù),I是從1到N(N是基底函數(shù)的個數(shù),為正整數(shù))的整數(shù)。以下,以CIμ為元素的N×n矩陣C稱為系數(shù)矩陣。
作為決定系數(shù)矩陣,使得期望值ε最小,求出基底狀態(tài)的波函數(shù)Ψ的方法之一,可利用哈特里·??恕ち_湯的變分法(以下稱為HFR法)。省略其導出過程,作為HFR法的結(jié)果而獲得的公式如圖36的(公式14)~(公式18)所示。
FIJ、PKL分別稱為福克矩陣元素和密度矩陣元素。以下的說明中有將它們表示成F(I,J)、P(K,L)的情況。它們令I、J、K、L各自具有從1到N的值,分別以N×N矩陣的形態(tài)進行表示。
通過求解(公式14),求出系數(shù)矩陣。(公式14)相對于從1到n的所有μ以及從1到N的所有I都存在,因而形成n×N個聯(lián)立方程式。
在求解(公式14)而獲得的系數(shù)矩陣C的計算中,采用密度矩陣P。如(公式18)所示,密度矩陣P從系數(shù)矩陣C計算。從而,具體的計算步驟為,首先,提供適當?shù)南禂?shù)矩陣C,利用它計算出密度矩陣P,并使用該密度矩陣P用(公式15)計算??司仃嘑,求解(公式14)的聯(lián)立方程式,獲得新的系數(shù)矩陣C。反復進行上述的計算直到作為密度矩陣P的起源的C和作為結(jié)果獲得的C之間的差足夠小,即變成自洽。該反復計算稱為自洽計算(以下稱為SCF計算)。
實際的計算中最消耗時間的是(公式15)的??司仃囋谾IJ的計算。這是因為,必須對所有的I、J計算該(公式15),以及必須對各I、J的組合計算密度矩陣元素PKL的K、L的和。
SCF計算的方法有兩種。一種叫磁盤存儲SCF法,將第一次SCF計算時獲得的2電子積分的值全部保存到磁盤,第二次開始從磁盤讀取必要的2電子積分。另一種叫直接SCF法,在每次計算SCF時重新進行2電子積分的計算。
現(xiàn)在,由于磁盤容量的限制和訪問時間的長短等,后者即直接SCF法的利用成為主流。在采用該直接SCF法的分子軌道計算中,由于每1次SCF計算必須進行大致與N4成比例的個數(shù)的2電子積分的計算,因而2電子積分計算的高速進行與分子軌道計算的高速化有直接的聯(lián)系。
這里預先說明2電子積分G(I,J,K,L)、密度矩陣P(K,L)和??司仃嘑(I,J)的對稱性。
從(公式13)可以明白,2電子積分具有如圖36的(公式19)所示的對稱性。從而,如果能夠獲得(公式19)內(nèi)的其中一個數(shù)值,則可以獲得其他7個數(shù)值。
另外,從圖36的(公式18)可以明白P(K,L)=P(L,K),從圖36的(公式15)和圖35的(公式11)可以明白F(I,J)=F(J,I)。
非經(jīng)驗分子軌道法中,一般采用如圖37的(公式20)所示的基底函數(shù)。該(公式20)中,r、n、R是矢量,帶附加字符x、y、z者表示其分量。r是電子的座標,n是電子的角動量,R是原子核的座標。
nx+ny+nz=λ是角動量的大小,也叫軌道量子數(shù)。該軌道量子數(shù)λ為0時該軌道稱為s軌道,為1時該軌道稱為p軌道,為2時該軌道稱為d軌道。
ζm是軌道指數(shù),表示軌道的空間擴展狀態(tài)。有用軌道指數(shù)不同的多個軌道的線性組合表示一個基底函數(shù)的場合,這樣表示的基底函數(shù)稱為收縮基底函數(shù),線性組合系數(shù)dm稱為收縮系數(shù),與此相對,線性組合前圖37的(公式21)形式的函數(shù)ψ稱為原始基底函數(shù)。
按照慣例,收縮基底函數(shù)χ附上如I、J、K、L的大寫字符編號,原始基底函數(shù)ψ附上如i、j、k、l的小寫字符編號,本說明書中也依從該慣例。
軌道量子數(shù)為1時,收縮基底函數(shù)存在三種情況,即,n=(1,0,0),n=(0,1,0),n=(0,0,1)。同樣地,軌道量子數(shù)為2時存在6種情況(或,根據(jù)基底函數(shù)的構成方式為5種)的收縮基底函數(shù)。
(公式20)中圖37的(公式22)所示部分相同的多個收縮基底函數(shù)的集合稱為收縮殼。p軌道的收縮殼由3個收縮基底函數(shù)構成,另外,d軌道的收縮殼由6個(或5個)收縮基底函數(shù)構成。為了方便,在s軌道的情況也將一個收縮基底函數(shù)的集合稱為收縮殼。
(公式21)中exp[-ζ(r-R)2]的部分相同的原始基底函數(shù)的集合同樣稱為原始殼。通常向收縮殼賦予大寫字母如R、S、T、U,向原始殼賦予小寫字母如r、s、t、u,本說明書中也依照該慣例。
在實施分子軌道計算時,對每個構成作為計算對象的分子的原子預備軌道量子數(shù)不同的多個收縮殼,將這些所有的集合作為基底函數(shù)集進行利用。可以用原子核座標R和軌道量子數(shù)λ的組合(R,λ)表示一個收縮殼。
用收縮基底函數(shù)表示的2電子積分G(I,J,K,L)若采用原始基底函數(shù),則可表示成圖37的(公式23)。這里,g(i,j,k,l)可以表示成圖37的(公式24)。
G(I,J,K,L)稱為用收縮基底函數(shù)表示的2電子積分,g(i,j,k,l)稱為用原始基底函數(shù)表示的2電子積分,以下的說明中,兩者都有簡稱為2電子積分的場合。g(i,j,k,l)也具有圖37的(公式25)所示的對稱性。
原始基底函數(shù)ψ可以用其角動量n、軌道指數(shù)C、原子核座標R的組合惟一地表示。假設第i、j、k、l個原始基底函數(shù)具有圖32所示表1的角動量、軌道指數(shù)、原子核座標。
為了避免復雜的說明,以下的說明中,分別用角動量a、b、c、d代替原始基底函數(shù)的編號i、j、k、l,將2電子積分表示成[ab,cd]。
根據(jù)文獻9(S.Obara and A.Saika,JCP,vol.84,no.7,p.3964,1986)對利用上述預備的基底函數(shù)集計算2電子積分的有效方法進行說明。
首先,a、b、c、d全部為s軌道,即a=0a=(0,0,0),b=0b=(0,0,0),c=0c=(0,0,0),d=0d=(0,0,0)時,如圖38的(公式26)~(公式34)所示求出(公式24)的2電子積分。
這里,(公式26)中出現(xiàn)的[··,··](m)為輔助積分,m是輔助指標,這將在后面說明。(公式27)的積分范圍為從0到1。
另外,a、b、c、d不全為s軌道時,采用圖39的(公式35)和(公式36)所示遞推公式進行計算。
(公式35)中,附加字符i表示x或y或z分量。另外,lI是僅僅i分量為1、其他為0的矢量。而且,Ni(n)表示角動量n的i分量的值。(公式35)具有這樣的性質(zhì),即,左邊的輔助積分中出現(xiàn)的一個角動量在右邊確實減少了1以上的量,另外,左邊的輔助積分的輔助指標在右邊增加了相同的量或僅僅增加了1。
輔助指標m為0時,輔助積分[··,··](m)與2電子積分[··,··]完全一致,可用于輔助2電子積分的計算。無論是包含多大角動量的基底函數(shù)的2電子積分,都可以反復利用(公式35)使角動量減少,直到最后全部角動量變成(0,0,0)的輔助積分。由于角動量為(0,0,0)的輔助積分可以用(公式26)計算,因而如果該數(shù)值與適當?shù)南禂?shù)相乘相加,則可獲得2電子積分的數(shù)值。
實際的計算如下。
首先,根據(jù)(公式35),用8個以下的輔助積分表示2電子積分。這里出現(xiàn)的輔助積分也適用(公式35)。反復進行該步驟,將全部角動量變成(0,0,0)的輔助積分的步驟作為計算步驟記錄下來。
接著,用(公式26)計算角動量為(0,0,0)的輔助積分,從其出發(fā),按照先前的計算步驟計算輔助積分的數(shù)值,最后獲得作為目的的2電子積分的數(shù)值。
(公式35)還具有另一個重要的性質(zhì),即,2電子積分中出現(xiàn)的4個角動量的組合如果相同,則即使軌道指數(shù)和原子核座標的組合不同,也能夠采用完全相同的上述計算步驟。進行計算時,可以對應軌道指數(shù)和原子核座標僅僅改變與輔助積分相乘的系數(shù)。
如上所述,用必須計算的收縮基底函數(shù)表示的2電子積分的數(shù)相對于收縮基底函數(shù)的數(shù)N成為N4。而實際必須獲得的數(shù)值是用原始基底函數(shù)表示的2電子積分的數(shù),其總數(shù)可達到用收縮基底函數(shù)表示的2電子積分的數(shù)的數(shù)倍到數(shù)十倍(取決于構成收縮基底函數(shù)的原始基底函數(shù)的數(shù),即收縮數(shù))。
作為減少該個數(shù)的方法,首先可考慮利用(公式19)或(公式25)中記述的對稱性。但是,即使用該方法達到最佳效率,2電子積分的計算量也只能為1/8。
另一個方法是積極排除從計算精度的角度可判斷為不必要的2電子積分的計算的方法。不必要的2電子積分的判斷可如下進行。
如上所述,所有的2電子積分的數(shù)值可根據(jù)(公式26)所示的所有角動量為(0,0,0)的輔助積分
(m)的數(shù)值進行計算。從而,可以用
(m)的數(shù)值判斷2電子積分的數(shù)值對??司仃囋氐臄?shù)值的貢獻是否達到計算誤差的程度。而且,
(m)的數(shù)值的大小可以從(公式29)所示函數(shù)K(ζ,ζ’,R,R’)的值進行判斷,而且函數(shù)K(ζ,ζ’,R,R’)的值可以從圖39的(公式37)的大小進行判斷。
從而,通過用(ζa,A,ζb,B)的數(shù)值的組合估計(公式26)的第一個函數(shù)K的大小,可以判斷2電子積分[ab,**]的計算是否必要,另外,通過用(ζc,C,ζd,D)的數(shù)值的組合估計(公式26)的第二個函數(shù)K的大小,可以判斷2電子積分[**,cd]的計算是否必要。
從而,將對不必要的2電子積分的計算進行排除稱為“終止”。上述的例中,僅僅從a和b的信息進行判斷并終止的場合也可稱為用ab進行的終止,僅僅從c和d的信息進行判斷并終止的場合也可稱為用cd進行的終止。從而,僅僅從ab或cd可以判斷是否終止,這是因為圖39的(公式37)的最大值為1、下限值為0。通過進行這樣的終止,必須計算的2電子積分變成大致與N2成比例的個數(shù),可以顯著減少計算量。
如上所述,在N大的場合,利用終止減少計算量的效果明顯大于利用2電子積分的對稱性的效果,通過采用該方法,可以顯著縮短非經(jīng)驗分子軌道計算中??司仃囉嬎闼璧奶幚頃r間。
圖1表示本實施例方法所適用的并行計算系統(tǒng)的一個例子的全體結(jié)構,其在先前說明的文獻1中有說明。即,該系統(tǒng)通過共用總線3將多個處理單元2連接到主計算機1。
另外,圖2表示本實施例方法所適用的并行計算系統(tǒng)的一個例子的全體結(jié)構,其在先前說明的文獻2中有說明。圖2示例的該系統(tǒng)通過串行總線13將多個板式計算機12以雛菊鏈的方式連接到主計算機11。采用如IEEE1394串行總線作為總線13。
各板式計算機12具有相互連接的多個處理單元14,同時還具有用以連接總線13和多個處理單元14的網(wǎng)橋15。
但是,在如圖1或圖2所示的文獻1或文獻2的系統(tǒng)中,可連接到各個并行處理單元2或14的存儲器容量有限制。當前,各處理單元2或14最多可以連接數(shù)10兆字節(jié)(以下稱為Mb)左右容量的存儲器。
另外,采用上述具有較高通用性且廉價的IEEE1394串行總線作為連接主計算機1或11和各處理單元2或14的通信網(wǎng)的場合,其通信性能在目前的最佳性能至多可達到400兆字節(jié)/秒(以下稱為Mbps)的程度。
本發(fā)明的實施例中,在這樣構成的計算機系統(tǒng)中采用新的??司仃嚿伤惴ǎ梢圆恍枰叩耐ㄐ判阅?,且與各處理節(jié)點即處理單元連接的存儲器即使只有上述的目前的容量也可進行高效計算。
圖3說明以程序代碼形式表示的可進行有效并行計算的??司仃嚿伤惴?。
為了方便說明,圖3中記述了由與收縮殼R、S、T、U相關的4重循環(huán)和與其內(nèi)部的收縮基底I、J、K、L相關的4重循環(huán)構成的算法,實際的算法中,令最外側(cè)的循環(huán)為與滿足R≤Nmax(Nmax是賦予N個收縮殼的編號的最大值。在賦予從0到N的編號時,Nmax=N。)和R≥T關系的收縮殼R和T的組合(RT)相關的循環(huán)。令第2循環(huán)為與收縮殼S相關的循環(huán),第3循環(huán)為與收縮殼U相關的循環(huán)。在第3循環(huán)的內(nèi)側(cè),進行函數(shù)值G(R,S,T,U)的計算和采用其結(jié)果的規(guī)定的??司仃囋谾的一部分計算。
另外,也可以令第2循環(huán)與U相關,第3循環(huán)與S相關。即,雖然圖3中與U相關的循環(huán)形成于與S相關的循環(huán)的內(nèi)側(cè),但是也可以使該循環(huán)的順序逆轉(zhuǎn)。
與收縮殼R和收縮殼T的組合相關的循環(huán)在主計算機上控制,與收縮殼R和收縮殼T的組合固定的收縮殼S和收縮殼U相關的循環(huán)部分的處理分配給處理單元。歸攏R和T固定的第2和第3兩個循環(huán),形成一個作業(yè)單位,使各個作業(yè)單位在多個處理單元2或14中進行處理。
這樣,由于向多個處理單元進行的作業(yè)分配以RT對單位進行,因而以下的說明中將該算法稱為RT并行算法。
此時,主計算機1或11執(zhí)行所有的矩陣元素P的初始值的計算、與處理單元共同進行的SCF計算以及決定是否繼續(xù)該SCF計算等。在SCF計算時,主計算機1或11執(zhí)行向多個處理單元2或14分配R和T固定的作業(yè)單位的決定、應該向處理單元發(fā)送的矩陣P的一部分的矩陣元素的選擇、向處理單元發(fā)送選擇的矩陣元素、從處理單元發(fā)送來的矩陣F的一部分的矩陣元素的接收以及采用矩陣F進行的矩陣P的更新。
另一方面,處理單元2或14執(zhí)行從主計算機1或11發(fā)送的矩陣P的一部分的矩陣元素的接收、與收縮殼S相關的循環(huán)的控制和與收縮殼U相關的循環(huán)的控制、函數(shù)G(R,S,T,U)或函數(shù)g(i,j,k,l)的計算、矩陣F的一部分的矩陣元素的計算以及向主計算機1或11發(fā)送矩陣F的一部分的矩陣元素。
收縮殼R取從0到Nshell-1的值、收縮殼S、T、U取從0到R的值。令I為屬于R的所有收縮基底編號,J為屬于S的所有收縮基底編號,K為屬于T的所有收縮基底編號,L為屬于U的所有收縮基底編號。
另外,圖3中,假定收縮基底被賦予編號,使屬于相同收縮殼的編號連續(xù),令I、J、K、L的范圍分別為從b_basis(R)到e_basis(R)、從b_basis(S)到e_basis(S)、從b_basis(T)到e_basis(T)、從b_basis(U)到e_basis(U)。
這里,b_basis(X)、e_basis(X)是屬于收縮殼X的收縮基底的編號的最小值和最大值。在與收縮基底相關的4重循環(huán)的內(nèi)部執(zhí)行2電子積分G(·,J,K,L)的計算和??司仃囋氐挠嬎?。這里采用的密度矩陣元素是以下4個P(K,L)、P(·,J)、P(K,J)、P(I,L),另外,計算的??司仃囋厥且韵?個F(·,J)、F(K,L)、F(I,L)、F(K,J)。
這里,由于I和K是分別形成收縮殼R和T的收縮基底,因而在作業(yè)分配時,它們固定成數(shù)個(收縮殼是s軌道時為1個,是p軌道時為3個,是d軌道時為6個)。J和L則任意。
圖3中,為了簡潔地記述代碼,S和U取從0到R的R+1個的所有值進行書寫,但實際上S和U并不是取該范圍中的所有值。
屬于R的所有收縮基底和屬于S的所有收縮基底之間,用ab進行終止成立的場合下,由于可以省略所有的G(I,J,*,*)的計算,因而S不必取上述值。另外,與此同時,由于不利用P(I,J)、P(K,J),不計算F(I,J)、F(K,J),因而它們不必在主計算機和處理單元之間進行通信。
同樣,屬于T的所有收縮基底和屬于U的所有收縮基底之間,用cd進行終止成立的場合下,由于可以省略所有的G(*,*,K,L)的計算,因而U不必取上述值。另外,與此同時,由于不利用P(I,L),P(K,L),不計算F(I,L),F(xiàn)(K,L),因而它們不必在主計算機和處理單元之間進行通信。
從而,不僅可以削減與S和U相關的循環(huán)次數(shù)、削減計算量,而且可以削減不必要的矩陣元素的通信、削減通信量。
用圖4所示流程圖說明采用RT并行算法的處理的流程。以下的說明中采用圖2的系統(tǒng)。另外,圖4中,由于主計算機11和處理單元14執(zhí)行不同的處理,因而記述了不同的流程圖。
另外,雖然以多個(典型為100個)處理單元14并行連接到主計算機11作為前提,但是由于它們根據(jù)同樣的流程進行動作且它們之間的數(shù)據(jù)不相關,因而只表示了作為代表的一個處理單元14中的處理流程。另外,圖4中虛線表示的箭頭部分表示其后的處理不由其前面的處理支配,而是等待其他處理系統(tǒng)的信息輸入。
首先,說明主計算機11的處理步驟。
主計算機11執(zhí)行系數(shù)矩陣的初始設定(步驟S101)后,進入SCF循環(huán)。SCF持續(xù)循環(huán)直到新計算的系數(shù)矩陣變成自洽。
即,在SCF循環(huán)內(nèi),首先,根據(jù)(公式18)從系數(shù)矩陣計算密度矩陣(步驟S102)。然后,進入RT循環(huán),首先確定分配給處理單元的RT對編號,即惟一表示兩個收縮殼R和T的組合的編號(步驟S103)。該例的場合中,RT對編號由圖39的(公式38)所示計算式確定。
根據(jù)圖3的記述,RT對編號按照編號從小到大的順序進行分配,但是也不必一定按照上述順序,只要能對所有R、T的組合進行處理,則可以通過賦予編號或處理順序,以任何順序進行處理。
接著,將與上述的RT對編號對應的作業(yè)中必要的密度矩陣信息向被分配了該RT對編號的處理單元發(fā)送(步驟104),此時,考慮用ab和cd進行的終止,所有在處理單元的計算中不用的密度矩陣數(shù)據(jù)都不進行發(fā)送。
處理單元14接收來自該主計算機11的密度矩陣信息并存儲到接收緩沖存儲器(步驟S201)。然后,對于分配的(RT對)作業(yè),控制與收縮殼S、U相關的循環(huán),進行福克矩陣元素的計算(步驟S202),然后,計算結(jié)束后,將求出的??司仃囆畔⒋鎯Φ桨l(fā)送緩沖存儲器,從該發(fā)送緩沖存儲器向主計算機11發(fā)送該求出的福克矩陣信息(步驟S203)。
如上所述,某處理單元14中的處理結(jié)束后,主計算機11如果從該處理單元14接收了??司仃囆畔?步驟S105),則判斷對所有的處理單元進行的RT對編號的分配和密度矩陣信息的發(fā)送是否結(jié)束(步驟S106),若未結(jié)束,則返回步驟S103,確定新的RT對編號的分配,將對應于該RT對編號的密度矩陣信息向該處理單元14發(fā)送。
反復進行同樣的操作,主計算機11對所有的處理單元進行RT對編號的分配和密度矩陣信息的發(fā)送,等待從處理單元接收??司仃嚒?br>
步驟S106中,若判斷所有的RT對編號的處理結(jié)束,則主計算機11根據(jù)收集的??司仃囆畔⑶蠼鈭D36的(公式14),計算新系數(shù)矩陣(步驟S107),然后,將新系數(shù)矩陣和其之前的系數(shù)矩陣比較,判斷是否獲得自洽的解(步驟S108),若兩者十分一致,則判斷獲得自洽的解,結(jié)束計算。如果不一致,則從步驟S108返回步驟S102,根據(jù)(公式18)生成新的密度矩陣,重復同樣的操作。
另外,為了盡可能用計算處理隱蔽通信處理,頻繁使用的數(shù)據(jù)的雙緩沖也可適用于RT并行算法中。
如圖5所示,在各處理單元具有的存儲器中,將用于存儲密度矩陣信息和??司仃囆畔⒌膮^(qū)域預先分割成A和B兩塊。
然后,決定分別將用密度矩陣信息存儲區(qū)域A存儲的密度矩陣元素計算(以下,將該計算稱為類型A的計算)的??司仃囋卮鎯Φ礁?司仃囆畔⒋鎯^(qū)域A,用密度矩陣信息存儲區(qū)域B存儲的密度矩陣元素計算(以下,將該計算稱為類型B的計算)的??司仃囋卮鎯Φ礁?司仃囆畔⒋鎯^(qū)域B。
使對應于一個RT對編號的作業(yè)與類型A或類型B的計算的任何一個相對應,類型A的計算作業(yè)結(jié)束后開始類型B的計算,類型B的計算作業(yè)結(jié)束后開始類型A的計算。
在類型A的計算時,將剛剛進行的類型B的計算作業(yè)的計算結(jié)果保持在??司仃囆畔⒋鎯^(qū)域B中,另外,密度矩陣信息存儲區(qū)域B成為可自由改寫的區(qū)域。
從而,在類型A的計算作業(yè)執(zhí)行過程中,可將剛剛獲得的計算結(jié)果從??司仃囆畔⒋鎯^(qū)域B讀出并向主計算機發(fā)送,另外,可從主計算機接收下一個類型B的計算作業(yè)中使用的信息并寫入密度矩陣信息存儲區(qū)域B。類型B的計算作業(yè)的執(zhí)行過程中也可以利用區(qū)域A進行同樣的數(shù)據(jù)收發(fā)動作。
通過采用這樣的雙緩沖機構,如果可以在計算作業(yè)的處理中完成數(shù)據(jù)收發(fā)處理,則可以用計算處理隱蔽通信處理,進行有效的處理。以下所示的計算例中都進行該雙緩沖。
下面用圖6和圖7說明密度矩陣信息的構成。
圖6表示從主計算機11向處理單元14發(fā)送的密度矩陣信息的格式的一例。從收縮殼R的編號到收縮殼W[Nw-1]的編號為止為整數(shù)型數(shù)據(jù),從與收縮殼V
相關的密度矩陣數(shù)據(jù)塊到與收縮殼W[Nw-1]相關的密度矩陣數(shù)據(jù)塊為由一個或多個浮點型數(shù)據(jù)或定點型數(shù)據(jù)構成的塊。
通過圖6中從上向下的兩個收縮殼R和收縮殼T的編號,確定接收了密度矩陣信息的處理單元14應處理的RT對編號。
收縮殼R和T的編號之后是表示收縮殼的集合V和收縮殼的集合W的元素數(shù)的兩個整數(shù)型數(shù)據(jù)Nv和Nw。收縮殼V是其包含的收縮基底和收縮殼R包含的收縮基底的組合中,至少一個用ab進行的終止后剩余的編號,即用收縮殼S的循環(huán)可獲得S的收縮殼編號。
同樣,收縮殼W是其包含的收縮基底和收縮殼R包含的收縮基底的組合中,至少一個用cd進行的終止后剩余的編號,即用收縮殼U的循環(huán)可獲得U的收縮殼編號。
圖7表示密度矩陣數(shù)據(jù)塊的結(jié)構例。該結(jié)構例是作為代表例表示的與收縮殼V
相關的密度矩陣數(shù)據(jù)塊。
收縮殼的軌道量子數(shù)大于1時,與該收縮殼相關的密度矩陣數(shù)據(jù)塊還由與收縮基底相關的子塊構成。圖7所示例是構成收縮殼V
的收縮基底為m+1個即M0(V
),M1(V
),...,Mm(V
)的情況,與各個收縮基底相對應的子塊為m+1個。
一個子塊還分成兩個區(qū)域。一個是將從構成收縮殼R的收縮基底I0(R)到Ii(R)和M0(V
)作為指標的密度矩陣元素的區(qū)域。另一個是將從構成收縮殼T的收縮基底K0(T)到Kk(T)和M0(V
)作為指標的密度矩陣元素的區(qū)域。這里,i+1、k+1分別是構成收縮殼R、T的收縮基底的個數(shù),它們?nèi)Q于收縮殼R、T的軌道量子數(shù)。這些區(qū)域包含的密度矩陣元素的個數(shù)由收縮殼R和T的軌道量子數(shù)確定,從而,一組密度矩陣信息中,任何子塊都為相同的大小。
另外,雖然省略了說明,??司仃囆畔⒌慕Y(jié)構也相同,且其數(shù)據(jù)量與密度矩陣信息相同。
[關于各作業(yè)的形成方法和編號附加]從上述的說明可以明白,可分配到處理單元的作業(yè)不僅是計算處理,且包含與主計算機的通信處理。
該實施例中,形成各作業(yè),使得計算處理和通信處理之和組成的作業(yè)的大小(size)的波動變小,盡可能使作業(yè)的大小變得均等。另外,由于各處理單元具有的存儲器的容量有限制,因而形成各作業(yè),使得該存儲器保持的密度矩陣和福克矩陣的元素數(shù)盡可能少。從而,該實施例形成如下的形態(tài)。
如上所述,該實施例中,作業(yè)以RT對單位向處理單元分配。如果RT對確定,則收縮殼S和U的循環(huán)次數(shù)也確定。即,R大的場合,S和U的循環(huán)次數(shù)變多,R小的場合,S和U的循環(huán)次數(shù)變少。這里,向R大的作業(yè)分配軌道量子數(shù)低的殼,向R小的作業(yè)分配軌道量子數(shù)高的殼。
從而,在RT對的R大的作業(yè)的場合,S和U的循環(huán)次數(shù)雖然變多,但是由于向該作業(yè)分配的收縮殼的軌道量子數(shù)低,因而與其內(nèi)部的收縮基底相關的循環(huán)次數(shù)變少。相反,在R小的作業(yè)的場合,雖然S和U的循環(huán)次數(shù)變少,但是由于收縮殼的軌道量子數(shù)高,因而與其內(nèi)部的收縮基底相關的循環(huán)次數(shù)變多。從而,取決于由RT對決定的作業(yè)的計算量的波動變小。
另外,在RT對的R的編號大的作業(yè)的場合,雖然圖6的Nv、Nw變大,但是由于分配給該作業(yè)的收縮殼的軌道量子數(shù)低,因而密度矩陣信息的數(shù)據(jù)量不會變得過多,結(jié)果,取決于作業(yè)的通信量的波動變小。
從而,可以減少作業(yè)的大小的波動。
另外,在RT對的R的編號大的場合,由于Nv、Nw變大,因而有必要減少子塊的數(shù)據(jù)量,以抑制全體的容量。如前所述,子塊的數(shù)據(jù)量取決于軌道量子數(shù),與軌道量子數(shù)低的收縮殼相關的子塊其數(shù)據(jù)量變少。
該實施例中,RT對的R的編號大的收縮殼的軌道量子數(shù)被降低。相反,在RT對的R的編號小的場合,由于Nv、Nw小,因而不必減少子塊的數(shù)據(jù)量,編號小的收縮殼的軌道量子數(shù)被升高。
從而,通過這樣將軌道量子數(shù)高的殼分配給編號小的收縮殼,將軌道量子數(shù)低的殼分配給編號大的收縮殼,即使在容量小的存儲器中也可以適用于大規(guī)模的分子軌道計算。
該實施例中,由于作業(yè)以RT對單位分配給處理單元,因而作業(yè)編號與RT對編號一致。如前述,RT對編號雖然可以任意決定,但是,例如如果由圖39的(公式38)決定,則可按照R、T的大小以從小到大的順序賦予作業(yè)編號。
該例中采用圖2所示計算機系統(tǒng)。該例中,以3殘基肽Glycine-Alanine-Glutamine(以下,記為GAQ。分子式C10H18N4O5)為計算對象,用6-311++G(3d,2p)作為基底函數(shù)。
該例中,收縮殼的個數(shù)Nshell為336,其中,軌道量子數(shù)為0的s軌道的殼為167,軌道量子數(shù)為1的p軌道的殼為112,軌道量子數(shù)為2的d軌道的殼為57。
該例中,將收縮殼編號0到56分配給d軌道的殼,將57到168分配給p軌道的殼,將169到335分配給s軌道的殼。
而且,該例中,RT對的編號,即,作業(yè)編號由圖39的(公式38)決定,按照RT對編號從小到大的順序向處理單元進行作業(yè)分配。
根據(jù)該例,用RT并行算法僅僅執(zhí)行1次SCF循環(huán)時所需處理時間和處理單元數(shù)的關系的一個例子形成如圖8所示的情況。
圖8中,虛線所示直線表示處理時間與處理單元數(shù)成反比例減少的理想情況。該第1例中,可判斷當處理單元數(shù)增加到100附近時,離開理想直線,變成了不是可伸縮的并行處理。
另外,圖9表示該第1例中,全體處理時間中處理單元進行處理的時間所占的比例(運轉(zhuǎn)率),處理器數(shù)從100附近開始,運轉(zhuǎn)率下降。
該原因可認為是,相對于隨著處理單元數(shù)的增加,系統(tǒng)全體的計算處理能力提高,主計算機和處理單元之間的通信性能維持一定的情況下通信量增大,從而通信時間超過計算時間,處理單元等待數(shù)據(jù)接收而不進行計算的時間增大。
成為不是可伸縮的又一個原因可認為是向并行處理器分配計算負荷不均一。但是,從圖10所示的全部處理單元中處理結(jié)束時間的分布,可以明白計算負荷的分配大致均一。
并行處理單元中計算時間的合計為36389秒,若將其平均分配給100個處理器則變成363.89秒的計算處理。相對地,通信時間的合計為363.02秒,與計算時間大致相等。
但是,如圖10所示,第1例的并行處理中各處理單元的計算時間變成420秒左右。因而,可以說第1例的并行處理的效率差。
圖11是表示通信處理和單一處理單元中計算處理的進行狀況在處理效率低和處理效率高的情況下的比較模式圖。圖11中,網(wǎng)點部分為正在進行處理的時間帶。該網(wǎng)點部分的合計長度在通信時和計算時相同,另外,在效率低的場合和高的場合也相同。
在效率低的處理的場合中,如圖中的空白部分所示,產(chǎn)生既不進行通信也不進行計算處理的時間帶。從而,全體的到處理結(jié)束的時間變長。相對地,如果進行效率高的處理,則通信處理和計算處理都不停止,處理結(jié)束的時間變短。
圖12表示上述的第1例中每個作業(yè)發(fā)生的計算時間和通信時間的關系。該圖12是按作業(yè)編號從全部56616個作業(yè)中等間隔地抽出100個作業(yè)而繪制的。如圖12中的參照指標所示,對應作業(yè)中的收縮殼R和T的軌道量子數(shù)的組合,繪制的形狀發(fā)生變化。例如,收縮殼R的軌道量子數(shù)為1即p軌道、收縮殼T的軌道量子數(shù)為2即d軌道的場合的組合(pd)繪制成黑正方形的點。
從該圖12可以判斷,作業(yè)的大小的波動即使小,通信時間和計算時間的比例(比)也因作業(yè)而異。圖12中的點劃線是通信時間和計算時間之比為0.01的線。處理單元數(shù)為100時,如果通信時間和計算時間之比在該線以下的作業(yè)很多,則通信量變大,在計算處理中產(chǎn)生等待。相反,如果通信時間和計算時間之比在該線以上的作業(yè)很多,則計算量變大,變得容易隱蔽通信處理。
如上所述,在全體的通信時間和計算時間大致相等的場合,則無論在任何時刻,若控制作業(yè)的分配,使與在該時刻并行處理的作業(yè)相關的通信量和計算量之比的平均值落在點劃線上,則可以進行效率高的并行處理。
另外,該例中,收縮殼編號的確定方法如上所述,以軌道量子數(shù)高的殼取小編號、軌道量子數(shù)低的殼取大編號進行分配,在R大的場合,由于不會使密度矩陣信息的數(shù)據(jù)量變得過多,因而取決于作業(yè)編號的通信量的波動變小。另外,如上所述,采用上述收縮殼編號的確定方法時,取決于作業(yè)編號的計算量的波動也變小。
如果收縮殼編號不是以軌道量子數(shù)高的殼取小編號、軌道量子數(shù)低的殼取大編號進行分配,則計算時間和通信時間的取決于作業(yè)編號的波動變得比圖12所示更大,向多個處理單元均等地分配負荷變得更加困難。
考察圖12所示每個作業(yè)的計算時間和通信時間的關系,可以明白收縮殼R、T都是s軌道的場合全部位于點劃線以上的區(qū)域,而收縮殼R為s軌道、收縮殼T為p軌道的場合的一部分在點劃線以上的區(qū)域。
通過進一步考察可以明白,由圖39的(公式38)決定的作業(yè)編號如果大于約35000,則繪制曲線在點劃線以上,如果作業(yè)編號小于約35000,則繪制曲線在點劃線以下。即,RT對編號小的作業(yè)其通信時間與計算時間之比大,RT對編號大的作業(yè)其通信時間與計算時間之比小。
以下說明的第2實施例到第5實施例也象上述實施例一樣形成,使得計算時間和通信時間的波動變小,同時,利用由圖39的(公式38)決定的作業(yè)編號的作業(yè)中具有的如上述圖12所示的性質(zhì),進行更有效的作業(yè)分配。
根據(jù)上述的考察,通過使編號小的作業(yè)和編號大的作業(yè)混合來進行分配,可以期望實現(xiàn)通信負荷在時間上的分散。該第2實施例中,生成圖13所示的分配等待矩陣,向并行處理單元2或14進行分配。
為了簡單說明,圖13所示例中表示了全部作業(yè)數(shù)N為33的場合的分配等待矩陣。圖13中,括號外的數(shù)字為作業(yè)編號,它相當于分子軌道計算中的RT并行算法中的RT對編號。另外,括號內(nèi)的數(shù)字表示進行作業(yè)分配的順序。
主計算機參照該等待矩陣,以該等待矩陣的從上到下的順序?qū)⒆鳂I(yè)編號讀出,同時向處理單元分配作業(yè)。
這里,令最初的作業(yè)為編號0的作業(yè),以后,若令前面的編號為J,·若J在N/2以下,則將編號為N-J-1的作業(yè)·若J在N/2以上,則將編號為N-J的作業(yè)作為下一次向處理單元分配的作業(yè)。
從而,RT對編號小、通信時間與計算時間之比大的作業(yè)和RT對編號大、通信時間與計算時間之比小的作業(yè)交互進行分配。從而,與多個處理單元并行處理的作業(yè)相關的通信量與計算量之比的平均值為處理單元個數(shù)的倒數(shù),處理單元數(shù)為100時大約為0.01,可以進行有效的并行處理。
圖14表示采用第2實施例的作業(yè)分配方法的并行處理方法的計算中,處理時間和處理單元數(shù)的關系。作為該例的計算對象的分子和采用的基底函數(shù),與共同表示圖8結(jié)果的第1實施例中的計算對象和基底函數(shù)相同,分別為GAQ和6-311++G(3d,2p)。
與圖8的結(jié)果相比較,處理單元數(shù)為100附近的計算時間約縮短了9%,可實現(xiàn)比前述的第1實施例更高速的處理。
圖15表示該第2實施例的場合中的處理單元的運轉(zhuǎn)率和處理單元數(shù)的關系,與第1實施例的說明中的圖9對應。
從兩者的比較可以判斷,第2實施例的場合中,與第1實施例的例子相比較,在處理單元數(shù)為100附近的運轉(zhuǎn)率變高。
另外,該第2實施例中,處理單元數(shù)為100時,各處理單元的處理結(jié)束時間如圖16所示。這與第1實施例的圖10對應??膳袛酁槟芟虿⑿刑幚韱卧鹊胤峙湄摵桑Y(jié)束時間的波動變小。
另外,令分配等待矩陣的最前面的作業(yè)為RT對編號最大的作業(yè),以后,若令前面的編號為J,·若J在N/2以下,則將編號為N-J的作業(yè)·若J在N/2以上,則將編號為N-J-1的作業(yè)作為下一個向處理單元分配的作業(yè)。在該場合也可以獲得與上述同樣的效果。
另外,令任意編號的作業(yè)為最前面的作業(yè),以后,若令前面的編號為J,·若J在N/2以下,則將編號為N-J-1的作業(yè)·若J在N/2以上,則將編號為N-J的作業(yè)作為下一個分配的作業(yè),若其編號小于0或大于最大的RT對編號,則從最大的RT對編號的一半的編號的作業(yè)重新開始,以同樣的步驟確定下一次的作業(yè)編號,或者采用其他類似的方法,生成分配等待矩陣,也可獲得同樣的效果。
另外,第2實施例中,決定下一次分配的作業(yè)的編號時的條件中用于記述的除法是求出的商保留到小數(shù)點以下的準確的除法,與第3實施例以后所采用的整除不同。
第3實施例中,將多個處理單元分成群的同時,與之對應,將多個作業(yè)也分成相同數(shù)量的群,對各群分別準備分配等待矩陣。
即,將多個處理單元分割成G個(G是2以上的整數(shù))處理器群,群內(nèi)的處理單元數(shù)大致相等,同時,將多個作業(yè)分割成與處理器群數(shù)相同的G個作業(yè)群,群內(nèi)的作業(yè)數(shù)大致相等。
然后,使處理器群和作業(yè)群一一對應,一個作業(yè)群內(nèi)的作業(yè)分配給對應的一個處理器群內(nèi)的處理單元。
該分配方法中,首先,將通信時間與運算時間組成的作業(yè)大小和通信時間與運算時間之比彼此近似的作業(yè)分別分配給不同的作業(yè)群。而且,作業(yè)大小和通信時間與運算時間之比近似的作業(yè)以在各個處理器群中的分配順序不重疊的狀態(tài)分配到各個作業(yè)群內(nèi),即其在多個作業(yè)群中的分配順序互不相同。
在群數(shù)G為4、作業(yè)數(shù)N為33的簡單的場合,用圖17和圖18對該第3實施例的場合的多個作業(yè)群中一一對應的多個等待矩陣的生成方法的具體例進行說明。
與前述例相同,圖17、圖18中,括號外的編號表示作業(yè)編號即RT對編號,括號內(nèi)的編號表示在分配到相同等待矩陣的作業(yè)群內(nèi)進行分配的順序。
首先,如圖17所示,向與作業(yè)編號J除以作業(yè)群數(shù)(等待矩陣數(shù))G時的余數(shù)相當?shù)木幪杇的群分配各作業(yè)。這里,在各等待矩陣內(nèi),該分配的作業(yè)暫時按照編號順序排列。
接著,用作業(yè)編號J除以群數(shù)G(使用舍去小數(shù)點以下位的整除,以下同)時的商進行分塊。圖17的例中,各塊編號b為該商。
這里,隸屬各塊編號b的多個作業(yè)的作業(yè)編號接近,如圖12所示,作業(yè)大小且計算時間與計算時間之比變得近似,這些作業(yè)分配給各不相同的等待矩陣。
全部作業(yè)數(shù)N除以群數(shù)G的商為B時,全部作業(yè)數(shù)N為群數(shù)G的倍數(shù)的場合下,塊數(shù)變成B,而在非上述的場合下,塊數(shù)變成B+1。后者的場合中,存在有最后的塊有作業(yè)編號的等待矩陣和最后的塊無作業(yè)編號的等待矩陣。
接著,第g個作業(yè)群(第g個等待矩陣)內(nèi)的作業(yè)中,令B除以群數(shù)G的商為x,將大于或等于x×g而小于x×(g+1)的編號的作業(yè)塊中包含的作業(yè)作為最初的作業(yè)。這是因為相同塊內(nèi)的作業(yè)在多個作業(yè)群中的順序不同。
圖14的例中,因為B=N/G=33/4=8,x=B/G=8/4=2,如果是第0等待矩陣的作業(yè)群,則從大于或等于x×g=2×0=0而小于x×(g+1)=2×1=2的編號0或1的塊中選擇開始作業(yè)。該例中,選擇適合上述條件的最小的編號作為開始作業(yè)。
以下所示計算例中也采用該方式,但也可以從適合條件的編號中任意選擇開始編號。
接著,各作業(yè)群中,就要分配完的作業(yè)包含在第b個作業(yè)塊的場合時,以第b+1個作業(yè)塊內(nèi)的作業(yè)作為下一次的作業(yè)編號。但是,如果第b+1個作業(yè)塊內(nèi)沒有第g個群內(nèi)的作業(yè),則以第0個作業(yè)塊內(nèi)的作業(yè)作為下一次作業(yè)。
圖14的例中,第1等待矩陣的作業(yè)群中,b=6的第6個塊包含的編號25的作業(yè)的下一次作業(yè)變成b+1=7的第7個塊包含的編號29的作業(yè),其下一次作業(yè)變成第0個塊內(nèi)的編號1的作業(yè)(由于沒有第8個塊包含的第1個群的作業(yè))。
另外,該例中,下一次作業(yè)為第b+1個作業(yè)塊內(nèi)的作業(yè),但是下一次作業(yè)也可以為第b-1個作業(yè)塊內(nèi)的作業(yè)。該場合中,b-1如果為負,則包含有第g個群的作業(yè)的最大編號的作業(yè)塊內(nèi)的作業(yè)作為下一次作業(yè)。
圖18表示如上所述確定順序、根據(jù)各作業(yè)群內(nèi)的分配順序重排作業(yè)編號后各作業(yè)群的等待矩陣。
圖19表示第3實施例的計算中處理時間和處理單元數(shù)的關系。
作為計算對象的分子、采用的基底函數(shù)與第1實施例相同。另外,令各處理單元的運算處理能力彼此相同,5個處理單元構成一個處理器群。
從該圖19可以判斷,根據(jù)該第3實施例,與圖8的結(jié)果比較,處理單元數(shù)為100附近的計算時間約縮短了12%,可實現(xiàn)比第2實施例更高速的處理。
圖20表示該第3實施例的場合的計算例中處理單元的運轉(zhuǎn)率和處理單元數(shù)的關系,與第1實施例說明中的圖9對應。根據(jù)該圖,與第1實施例比較,在處理單元數(shù)為100附近時運轉(zhuǎn)率變高,接近100%。
另外,圖21表示該第3實施例中,處理單元數(shù)為100的場合的各處理單元的處理結(jié)束時間。雖然結(jié)束時間的波動為4秒左右,但是可大致均等地向并行處理單元分配負荷。
第4實施例在將處理單元分成群、對各群準備分配等待矩陣的方面與第3實施例相同,但是處理單元的分群方法與第3實施例不同。
在群數(shù)G為4、作業(yè)數(shù)N為33的簡單的場合,用圖22和圖23對該第4實施例的場合的多個作業(yè)群分別對應的等待矩陣的生成方法進行說明。另外,圖22、圖23中,括號外的編號表示作業(yè)編號即RT對編號,括號內(nèi)的編號表示在分配到相同等待矩陣的作業(yè)群中進行分配的順序,與前述實施例相同。
首先,如圖22所示,分配各作業(yè),使得作業(yè)編號J除以作業(yè)群數(shù)(等待矩陣數(shù))G的2倍即2×G時的余數(shù)等于g或2×G-g-1的作業(yè)包含在編號g的群中。在各等待矩陣內(nèi),分配的作業(yè)暫時按照編號順序排列。
接著,用作業(yè)編號J除以群數(shù)G(使用舍去小數(shù)點以下位的整除,以下同)時的商進行分塊。圖22中,各塊編號b為該商。
全部作業(yè)數(shù)N除以群數(shù)G的商為B時,全部作業(yè)數(shù)N為群數(shù)G的倍數(shù)的場合下,塊數(shù)變成B,而在非上述的場合下,塊數(shù)變成B+1。后者的場合中,存在有最后的塊有作業(yè)編號的等待矩陣和最后的塊無作業(yè)編號的等待矩陣。
接著,第g個作業(yè)群(第g個等待矩陣)內(nèi)的作業(yè)中,令B除以群數(shù)G的商為x,將大于或等于x×g而小于x×(g+1)的編號的作業(yè)塊中包含的作業(yè)作為最初的作業(yè)。這是因為相同塊內(nèi)的作業(yè)在多個作業(yè)群中的順序不同。
圖22的例中,因為B=N/G=33/4=8,x=B/G=8/4=2,如果是第0等待矩陣的作業(yè)群,則從大于或等于x×g=2×0=0而小于x×(g+1)=2×1=2的編號0或1的塊中選擇開始作業(yè)。該例中,選擇適合上述條件的最小的編號作為開始作業(yè)。
以下所示計算例中也采用該方式,但也可以從適合條件的編號中任意選擇開始編號。
接著,各作業(yè)群中,就要分配完的作業(yè)包含在第b個作業(yè)塊的場合時,以第b+1個作業(yè)塊內(nèi)的作業(yè)作為下一次的作業(yè)編號。但是,如果第b+1個作業(yè)塊內(nèi)沒有第g個群內(nèi)的作業(yè),則以第0個作業(yè)塊內(nèi)的作業(yè)作為下一次作業(yè)。
圖22的例中,第1等待矩陣的群中,b=6的第6個塊包含的編號25的作業(yè)的下一次作業(yè)變成b+1=7的第7個塊包含的編號30的作業(yè),其下一次作業(yè)變成第0個塊內(nèi)的編號1的作業(yè)(由于沒有第8個塊包含的第1個群的作業(yè))。
另外,該例中,下一次作業(yè)為第b+1個作業(yè)塊內(nèi)的作業(yè),但是下一次作業(yè)也可以為第b-1個作業(yè)塊內(nèi)的作業(yè)。該場合中,b-1如果為負,則包含有第g個群的作業(yè)的最大編號的作業(yè)塊內(nèi)的作業(yè)作為下一次作業(yè)。
圖23表示如上所述確定順序、根據(jù)各作業(yè)群內(nèi)的分配順序重排作業(yè)編號后各作業(yè)群的等待矩陣。
圖24表示第4實施例的計算中處理時間和處理單元數(shù)的關系。作為計算對象的分子、采用的基底函數(shù)與第1實施例相同。另外,令各處理單元的運算處理能力彼此相同,5個處理單元構成一個處理器群。
從圖24可以判斷,根據(jù)該第4實施例,與圖8的結(jié)果比較,處理單元數(shù)為100附近的計算時間約縮短了12%,可實現(xiàn)比第2實施例更高速的處理。
圖25表示該第4實施例的場合的計算例中處理單元的運轉(zhuǎn)率和處理單元數(shù)的關系,與第1實施例說明中的圖9對應。根據(jù)該圖,與第1實施例比較,在處理單元數(shù)為100附近時運轉(zhuǎn)率變高,接近100%。
另外,圖26表示該第4實施例中,處理單元數(shù)為100的場合的各處理單元的處理結(jié)束時間。雖然結(jié)束時間的波動為3.5秒左右,但是可大致均等地向并行處理單元分配負荷。
第5實施例在將處理單元和作業(yè)分成一一對應的群、對各群準備分配等待矩陣的方面與第3和第4實施例相同,另外,處理單元的分群方法與第3實施例相同,但是群內(nèi)的分配順序的確定方法與第3和第4實施例不同。
在群數(shù)G為4、作業(yè)數(shù)N為65、各群的處理單元數(shù)為2的簡單的場合,用圖27和圖28對該第5實施例的場合的多個作業(yè)群分別對應的等待矩陣的生成方法進行說明。另外,圖27、圖28中,括號外的編號表示作業(yè)編號即RT對編號,括號內(nèi)的編號表示在分配到相同等待矩陣的作業(yè)群中進行分配的順序,與前述實施例相同。
首先,如圖27所示,分配各作業(yè),使得作業(yè)編號J除以作業(yè)群數(shù)(等待矩陣數(shù))G時的余數(shù)等于g的作業(yè)包含在編號g的群中。該分配方法與第3實施例相同,但也可以用與第4實施例相同的方法進行分配。在各等待矩陣內(nèi),分配的作業(yè)暫時按照編號順序排列。
接著,用作業(yè)編號J除以群數(shù)G(使用舍去小數(shù)點以下位的整除,以下同)時的商進行分塊。圖22中,各塊編號b為該商。
全部作業(yè)數(shù)N除以群數(shù)G的商為B時,全部作業(yè)數(shù)N為群數(shù)G的倍數(shù)的場合下,塊數(shù)變成B,而在非上述的場合下,塊數(shù)變成B+1。后者的場合中,存在有最后的塊有作業(yè)編號的等待矩陣和最后的塊無作業(yè)編號的等待矩陣。
接著,第g個作業(yè)群(第g個等待矩陣)內(nèi)的作業(yè)中,令B除以G的商為x,且令x除以分配到群內(nèi)的處理單元數(shù)m的商為y,將大于或等于y×g而小于y×(g+1)的編號的作業(yè)塊中包含的作業(yè)作為最初的作業(yè)。這是因為相同塊內(nèi)的作業(yè)在多個作業(yè)群中的順序不同。
圖27的例中,因為B=N/G=65/4=16,x=B/G=16/4=4,y=x/m=4/2=2,如果是第0等待矩陣的作業(yè)群,則從大于或等于y×g=2×0=0而小于y×(g+1)=2×1=2的編號0或1的塊中選擇開始作業(yè)。該例中,選擇適合上述條件的最小的編號作為開始作業(yè)。
以下所示計算例中以選擇適合上述條件的最小編號的方式進行,但也可以從適合條件的編號中任意選擇開始編號。另外,選擇開始作業(yè)的塊的條件也可以與第3或第4實施例相同。
接著,各作業(yè)群中,就要分配完的作業(yè)包含在第b個作業(yè)塊的場合時,以第b+B/m個作業(yè)塊內(nèi)的作業(yè)作為下一次的作業(yè)編號。但是,如果第b+B/m個作業(yè)塊內(nèi)沒有第g個群內(nèi)的作業(yè),則以編號等于b+1除以(B/m)的余數(shù)的作業(yè)塊內(nèi)的作業(yè)作為下一次作業(yè)。
圖27的例中,第1等待矩陣的群中,b=7的第7個塊包含的編號29的作業(yè)的下一次作業(yè)變成b+(B/m)=7+(16/2)=15的第15個塊包含的編號61的作業(yè)。令b=15,b+(B/m)=15+(16/2)=23,由于沒有第23個塊包含的第1個群的作業(yè),因而其下一次作業(yè)變成與b+1=16除以(B/m)=8的余數(shù)相等的第0個塊內(nèi)的編號1的作業(yè)。
另外,該例中,下一次作業(yè)為第b+B/m個作業(yè)塊內(nèi)的作業(yè),但是下一次作業(yè)也可以為第b-B/m個作業(yè)塊內(nèi)的作業(yè)。該場合中,如果b-B/m為負且b=0,則其編號除以(B/m)后的余數(shù)等于(B/m)-1的作業(yè)塊中包含有第g個群的作業(yè)的最大編號的作業(yè)塊內(nèi)的作業(yè)作為下一次作業(yè),如果b-B/m為負且b不為0,則其編號除以(B/m)后的余數(shù)與b-1除以(B/m)后的余數(shù)相等的作業(yè)塊中包含有第g個群的作業(yè)的最大編號的作業(yè)塊內(nèi)的作業(yè)作為下一次作業(yè)。
圖28表示如上所述確定順序、根據(jù)各群內(nèi)的分配順序重排作業(yè)編號后的等待矩陣。
圖29表示第5實施例的計算中處理時間和處理單元數(shù)的關系。作為計算對象的分子、采用的基底函數(shù)與第1實施例相同。另外,令各處理單元的運算處理能力彼此相同,5個處理單元構成一個處理器群。
從圖29可以判斷,根據(jù)該第5實施例,與圖8的結(jié)果比較,處理單元數(shù)為100附近的計算時間約縮短了13%,可實現(xiàn)比第3、第4實施例更高速的處理。
圖30表示該計算例中處理單元的運轉(zhuǎn)率和處理單元數(shù)的關系,與第1實施例說明中的圖9對應。根據(jù)該圖,與以前的實施例比較,在處理單元數(shù)為100的附近運轉(zhuǎn)率變高,接近100%。
另外,圖31表示該第5實施例中,處理單元數(shù)為100的場合的各處理單元的處理結(jié)束時間??梢源_認結(jié)束時間的波動減少到1.5秒左右,并可以均等地向并行處理單元分配負荷。
雖然以上說明的第3、第4、第5實施例中由具有相同運算處理性能的5個處理單元構成處理器群,但是沒有必要將處理單元的個數(shù)限于此。
另外,所有的處理單元的運算處理性能不必相同,例如,可以用兩個具有2倍運算處理性能的處理單元構成一個處理器群,用4個具有1倍運算處理性能的處理單元構成其他處理器群等,使得各群之間,處理器群內(nèi)的總的運算處理性能相同。
另外,上述實施例中,以用非經(jīng)驗分子軌道計算中的RT并行算法的情況為例進行了本發(fā)明的說明,但是在其他并行處理中也可以應用本發(fā)明。
權利要求
1.一種并行處理方法,它是采用由主計算機和多個處理器構成的計算機系統(tǒng)進行分子軌道計算的方法,所述分子軌道計算是計算用n個(n是正整數(shù))收縮殼表示的分子的能量,該方法的特征在于它執(zhí)行以下計算,即,將收縮殼R、S、T、U分別包含的原始殼r、s、t、u的各個分量即原始基底函數(shù)i、j、k、l作為指標而表示的2電子積分函數(shù)g的函數(shù)值g(i,j,k,l)、將以所述原始基底函數(shù)k為一個構成元素的收縮基底函數(shù)K和以所述原始基底函數(shù)l為一個構成元素的收縮基底函數(shù)L作為指標而表示的密度矩陣P的元素P(K,L)與系數(shù)A1的積A1·P(K,L)·g(i,j,k,l)的所有收縮基底函數(shù)的總和f1(I,J);和所述2電子積分函數(shù)的函數(shù)值g(i,k,j,l)、所述密度矩陣P的元素P(K,L)與系數(shù)A2的積A2·P(K,L)·g(i,k,j,l)的所有收縮基底函數(shù)的總和f2(I,J);之和f(I,J)=f1(I,J)+f2(I,J),用以所述原始基底函數(shù)i、j為一個構成元素的所述收縮基底函數(shù)I、J中包含的所有所述原始基底函數(shù)的和進行表示的??司仃嘑的所有矩陣元素F(I,J)的計算,令最外側(cè)的循環(huán)為與滿足R≤nmax(nmax是賦予n個收縮殼的編號的最大值)和T≤R關系的所述收縮殼R和T的組合相關的循環(huán),令所述最外側(cè)的循環(huán)的內(nèi)側(cè)的第2循環(huán)為與所述收縮殼S相關的循環(huán),比所述第2循環(huán)更靠內(nèi)側(cè)的第3循環(huán)為與所述收縮殼U相關的循環(huán),或令所述第2循環(huán)為與所述收縮殼U相關的循環(huán),所述第3循環(huán)為與所述收縮殼S相關的循環(huán),令所述收縮殼S的可取值范圍小于或等于R,令所述收縮殼U的可取值范圍小于或等于R,在所述第3循環(huán)的內(nèi)側(cè)執(zhí)行的規(guī)定的2電子積分的計算和利用該結(jié)果的規(guī)定的??司仃囋氐囊徊糠值挠嬎?,在歸攏所述第2和第3循環(huán)而形成一個作業(yè)單位、將各個所述作業(yè)單位分配到所述處理器中進行處理的并行處理方法中,通過向所述收縮殼R的軌道量子數(shù)高的作業(yè)分配小編號、向所述收縮殼R的軌道量子數(shù)低的作業(yè)分配大編號而形成所述作業(yè)。
2.如權利要求1所述的并行處理方法,其特征在于在該方法中,向所述多個處理器分配各作業(yè),使所述作業(yè)的通信時間與運算時間之比的平均值為規(guī)定值。
3.如權利要求2所述的并行處理方法,其特征在于在該方法中,當多個所述作業(yè)的全體通信時間與向多個所述處理器均等分配所述多個作業(yè)時的一個作業(yè)內(nèi)的運算時間的總和大致相等時,向所述各個處理器分配各作業(yè),使得所述作業(yè)的通信時間與運算時間之比的平均值為所述處理器個數(shù)的倒數(shù)。
4.如權利要求2所述的并行處理方法,其特征在于在該方法中,分別向所述多個處理器交替分配通信時間與運算時間之比大于和小于所述規(guī)定值或所述處理器個數(shù)的倒數(shù)的作業(yè)。
5.如權利要求4所述的并行處理方法,其特征在于在該方法中,分別向所述多個處理器交替分配通信時間與運算時間之比大于和小于所述規(guī)定值或所述處理器個數(shù)的倒數(shù)的作業(yè)。
6.如權利要求1所述的并行處理方法,其特征在于在該方法中,將所述多個處理器分割成G個(G是大于或等于2的整數(shù))處理器群,群內(nèi)的所述處理器個數(shù)大致相等,同時將所述多個作業(yè)分割成G個作業(yè)群,群內(nèi)的所述作業(yè)個數(shù)大致相等,使所述處理器群和所述作業(yè)群一一對應,一個作業(yè)群內(nèi)的作業(yè)分配給對應的一個處理器群內(nèi)的處理器,使由所述通信時間和運算時間組成的大小與所述通信時間和所述運算時間之比近似的作業(yè)分別屬于所述各個不同的作業(yè)群,同時,將由所述通信時間和運算時間組成的大小與所述通信時間和所述運算時間之比近似的作業(yè)分配到所述各個作業(yè)群內(nèi),其分配順序在所述多個作業(yè)群中互不相同。
7.如權利要求1所述的并行處理方法,其特征在于在該方法中,向軌道量子數(shù)高的收縮殼分配小收縮殼編號、向所述軌道量子數(shù)低的收縮殼分配大收縮殼編號,所述作業(yè)的編號由R(R+1)/2+T計算式確定,用從N(N是整數(shù))到M(大于N的整數(shù))的連續(xù)整數(shù)進行編號,如果就要分配完的作業(yè)的編號J小于或等于(N+M)/2,則將編號為N+(M-J-1)的作業(yè)作為下一次作業(yè)進行分配,如果就要分配完的作業(yè)的編號J大于(N+M)/2,則將編號為N+(M-J)的作業(yè)作為下一次作業(yè)進行分配,或者,如果就要分配完的作業(yè)的編號J小于(N+M)/2,則將編號為N+(M-J)的作業(yè)作為下一次作業(yè)進行分配,如果就要分配完的作業(yè)的編號J大于或等于(N+M)/2,則將編號為N+(M-J-1)的作業(yè)作為下一次作業(yè)進行分配,如上分配各作業(yè),使得所述通信時間和所述運算時間之比的平均值為規(guī)定值。
8.如權利要求6所述的并行處理方法,其特征在于在該方法中,向軌道量子數(shù)高的收縮殼分配小收縮殼編號、向軌道量子數(shù)低的收縮殼分配大收縮殼編號,所述作業(yè)的編號由R(R+1)/2+T計算式確定,用從N(N是整數(shù))到M(大于N的整數(shù))的連續(xù)整數(shù)進行編號,使第g個作業(yè)群由在所述作業(yè)的編號被從0開始的編號替換時其編號除以所述G后的余數(shù)等于g的作業(yè)構成,分配各作業(yè),使得所述通信時間和所述運算時間之比的平均值為規(guī)定值。
9.如權利要求6所述的并行處理方法,其特征在于在該方法中,向軌道量子數(shù)高的收縮殼分配小收縮殼編號、向軌道量子數(shù)低的收縮殼分配大收縮殼編號,所述作業(yè)的編號由R(R+1)/2+T計算式確定,用從N(N是整數(shù))到M(大于N的整數(shù))的連續(xù)整數(shù)進行編號,使第g個作業(yè)群由在所述作業(yè)的編號被從0開始的編號替換時、作業(yè)編號除以2×G后的余數(shù)等于g的作業(yè)以及作業(yè)編號除以2×G后的余數(shù)等于(2×G-g-1)的作業(yè)構成,分配各作業(yè),使得所述通信時間和所述運算時間之比的平均值為規(guī)定值。
10.如權利要求8所述的并行處理方法,其特征在于在該方法中,在構成第g個作業(yè)群的作業(yè)中,最初向處理器分配的作業(yè)是由作業(yè)編號J除以處理器群個數(shù)G的商彼此相等的作業(yè)構成并在利用該商以大于或等于0、小于或等于B=(M-N+1)/G的整數(shù)編號的作業(yè)塊中,具有大于或等于(B/G)×g、小于(B/G)×(g+1)的編號的作業(yè)塊中所包含的編號的作業(yè)。
11.如權利要求9所述的并行處理方法,其特征在于在該方法中,在構成第g個作業(yè)群的作業(yè)中,最初向處理器分配的作業(yè)是由作業(yè)編號J除以處理器群個數(shù)G的商彼此相等的作業(yè)構成并在利用該商以大于或等于0、小于或等于B=(M-N+1)/G的整數(shù)編號的作業(yè)塊中,具有大于或等于(B/G)×g、小于(B/G)×(g+1)的編號的作業(yè)塊中所包含的編號的作業(yè)。
12.如權利要求8所述的并行處理方法,其特征在于在該方法中,構成對應處理器群的處理單元數(shù)為m的第g個作業(yè)群所包含的作業(yè)中,最初向處理器分配的作業(yè)是由作業(yè)編號J除以處理器群個數(shù)G的商彼此相等的作業(yè)構成并在利用該商以大于或等于0、小于或等于B=(M-N+1)/G的整數(shù)編號的作業(yè)塊中,具有大于或等于(B/G/m)×g、小于(B/G/m)×(g+1)的編號的作業(yè)塊中所包含的編號的作業(yè)。
13.如權利要求9所述的并行處理方法,其特征在于在該方法中,構成對應處理器群的處理單元數(shù)為m的第g個作業(yè)群所包含的作業(yè)中,最初向處理器分配的作業(yè)是由作業(yè)編號J除以處理器群個數(shù)G的商彼此相等的作業(yè)構成并在利用該商以大于或等于0、小于或等于B=(M-N+1)/G的整數(shù)編號的作業(yè)塊中,具有大于或等于(B/G/m)×g、小于(B/G/m)×(g+1)的編號的作業(yè)塊中所包含的編號的作業(yè)。
14.如權利要求10所述的并行處理方法,其特征在于在該方法中,當?shù)趃個作業(yè)群中,就要分配完的作業(yè)包含在第b個作業(yè)塊中時,若第(b+1)個作業(yè)塊中有第g個作業(yè)群的作業(yè)則將第(b+1)個作業(yè)塊內(nèi)的作業(yè),或者若第(b+1)個作業(yè)塊中沒有第g個作業(yè)群的作業(yè)則將第0個作業(yè)塊內(nèi)的作業(yè),或者,若(b-1)大于或等于0則將第(b-1)個作業(yè)塊內(nèi)的作業(yè),或者若(b-1)不是大于或等于0則將第g個作業(yè)塊內(nèi)的未分配的最大編號的作業(yè),作為所述第g個作業(yè)群的下一個作業(yè)進行分配。
15.如權利要求11所述的并行處理方法,其特征在于在該方法中,當?shù)趃個作業(yè)群中,就要分配完的作業(yè)包含在第b個作業(yè)塊中時,若第(b+1)個作業(yè)塊中有第g個作業(yè)群的作業(yè)則將第(b+1)個作業(yè)塊內(nèi)的作業(yè),若第(b+1)個作業(yè)塊中沒有第g個作業(yè)群的作業(yè)則將第0個作業(yè)塊內(nèi)的作業(yè),或者,若(b-1)大于或等于0則將第(b-1)個作業(yè)塊內(nèi)的作業(yè),若(b-1)不是大于或等于0則將第g個作業(yè)塊內(nèi)的未分配的最大編號的作業(yè),作為所述第g個作業(yè)群的下一個作業(yè)進行分配。
16.如權利要求12所述的并行處理方法,其特征在于在該方法中,當?shù)趃個作業(yè)群中,就要分配完的作業(yè)包含在第b個作業(yè)塊中時,若第b+(B/m)個作業(yè)塊中有第g個作業(yè)群的作業(yè)則將第b+(B/m)個作業(yè)塊內(nèi)的作業(yè),若第b+(B/m)個作業(yè)塊中沒有第g個作業(yè)群的作業(yè)則將編號等于b+1除以(B/m)后的余數(shù)的作業(yè)塊內(nèi)的作業(yè),或者,若b-(B/m)大于或等于0則將第b-(B/m)個作業(yè)塊內(nèi)的作業(yè),若b為0則將其編號除以(B/m)后的余數(shù)等于(B/m)-1的作業(yè)塊中、包含第g個作業(yè)群的作業(yè)的最大編號的作業(yè)塊內(nèi)的作業(yè),若b不為0則將其編號除以(B/m)后的余數(shù)等于(b-1)除以(B/m)后的余數(shù)的作業(yè)塊中、包含第g個作業(yè)群的作業(yè)的最大編號的作業(yè)塊內(nèi)的作業(yè),作為所述第g個作業(yè)群的下一個作業(yè)進行分配。
17.如權利要求13所述的并行處理方法,其特征在于在該方法中,當?shù)趃個作業(yè)群中,就要分配完的作業(yè)包含在第b個作業(yè)塊中時,若第b+(B/m)個作業(yè)塊中有第g個作業(yè)群的作業(yè)則將第b+(B/m)個作業(yè)塊內(nèi)的作業(yè),若第b+(B/m)個作業(yè)塊中沒有第g個作業(yè)群的作業(yè)則將編號等于b+1除以(B/m)后的余數(shù)的作業(yè)塊內(nèi)的作業(yè),或者,若b-(B/m)大于或等于0則將第b-(B/m)個作業(yè)塊內(nèi)的作業(yè),若b為0則將其編號除以(B/m)后的余數(shù)等于(B/m)-1的作業(yè)塊中、包含第g個作業(yè)群的作業(yè)的最大編號的作業(yè)塊內(nèi)的作業(yè),若b不為0則將其編號除以(B/m)后的余數(shù)等于(b-1)除以(B/m)后的余數(shù)的作業(yè)塊中、包含第g個作業(yè)群的作業(yè)的最大編號的作業(yè)塊內(nèi)的作業(yè),作為所述第g個作業(yè)群的下一個作業(yè)進行分配。
全文摘要
利用通過共用總線將主計算機和多個處理器連接而構成的并行計算機進行并行處理時可以向各處理器高效分配作業(yè)的方法。向各處理器交替分配通信時間與運算時間之比大于和小于規(guī)定值或處理器個數(shù)的倒數(shù)的作業(yè)。另外,使由多個處理器和多個作業(yè)對應,分割成多個群,使通信時間和運算時間組成的大小與所述通信時間和運算時間之比近似的作業(yè)分別屬于各個不同的作業(yè)群,而且,將由通信時間和運算時間組成的大小與通信時間和運算時間之比近似的作業(yè)分配到各個作業(yè)群內(nèi),其分配順序在多個作業(yè)群中互不相同。
文檔編號G06F15/16GK101038560SQ20071009167
公開日2007年9月19日 申請日期2001年4月25日 優(yōu)先權日2000年4月28日
發(fā)明者山田想, 稻畑深二郎, 宮川宣明, 高島一, 北村一泰, 長嶋云兵 申請人:大正制藥株式會社, 本田技研工業(yè)株式會社