本發(fā)明涉及功能材料設(shè)計和高性能計算領(lǐng)域,尤其涉及電磁功能材料優(yōu)化設(shè)計的粗顆粒并行方法及系統(tǒng)。
背景技術(shù):
電磁功能材料由于具備某種特定的電磁響應(yīng)特征,廣泛應(yīng)用于各種功能元器件,在信息技術(shù)、電磁防護(hù)、國防等重點領(lǐng)域發(fā)揮著關(guān)鍵作用,對高新技術(shù)的發(fā)展及新產(chǎn)業(yè)的形成具有重要的意義。為獲得電磁功能材料更寬頻段、更優(yōu)異的電磁響應(yīng)特征,需要根據(jù)事先設(shè)定的電磁響應(yīng)技術(shù)指標(biāo),從材料介質(zhì)選材到立體結(jié)構(gòu)等方面進(jìn)行嚴(yán)格的優(yōu)化設(shè)計。電磁功能材料優(yōu)化設(shè)計需要針對優(yōu)化算法給出的每一種介質(zhì)組合及其形成的立體結(jié)構(gòu),建立電磁功能材料個體,計算其在一系列頻率下的電磁響應(yīng)。為實現(xiàn)某個電磁響應(yīng)技術(shù)指標(biāo)的電磁功能材料優(yōu)化設(shè)計,需要針對大量不同個體進(jìn)行大規(guī)模電磁場數(shù)值計算。這類大規(guī)模數(shù)值計算由于不同計算實例具有不同結(jié)構(gòu),從而生成不同數(shù)量的剖分網(wǎng)格,導(dǎo)致不同計算實例的計算復(fù)雜度不對等,對于這類不對等的海量計算,需要高效率并行計算方法設(shè)計,充分考慮不同實例計算復(fù)雜度的不對等,盡可能提高并行計算效率。
常規(guī)并行計算基本針對單個計算實例并行,也就是說所有進(jìn)程同時進(jìn)行一個個體在某些優(yōu)化頻點下的計算,在大量循環(huán)的計算部分實現(xiàn)并行,并行顆粒通常很細(xì),這樣導(dǎo)致不同進(jìn)程之間存在大量的數(shù)據(jù)交換,降低并行效率;其次,由于不同進(jìn)程計算進(jìn)度不同,不可避免在需要數(shù)據(jù)共享和同步時出現(xiàn)大量等待,從而導(dǎo)致整體并行效率很低;再者,由于單個實例計算中相當(dāng)部分的計算過程有先后順序,數(shù)據(jù)有依賴性,因此針對單個計算實例并行時,有相當(dāng)部分的計算無法并行化,這也嚴(yán)重降低整體并行效率。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于提供一種電磁功能材料優(yōu)化設(shè)計的粗顆粒并行方法及系統(tǒng),以解決現(xiàn)階段電磁功能材料優(yōu)化設(shè)計中并行計算效率低的問題。
本發(fā)明提供了一種電磁功能材料優(yōu)化設(shè)計的粗顆粒并行方法,其包括:
步驟1:根據(jù)電磁功能材料的優(yōu)化目標(biāo),以及電磁功能材料頻率響應(yīng)特征曲線連續(xù)性的原理,選取一個以上優(yōu)化頻點,以及選定優(yōu)化算法;
步驟2:根據(jù)所述優(yōu)化算法生成一個以上初始優(yōu)化個體;所述初始優(yōu)化個體為電磁功能材料的結(jié)構(gòu);
步驟3:構(gòu)建執(zhí)行所述初始優(yōu)化個體在所有優(yōu)化頻點下的電磁響應(yīng)及個體目標(biāo)函數(shù)計算的粗顆粒,并獲得包括所述粗顆粒的串行版本;
步驟4:在串行版本的基礎(chǔ)上,以粗顆粒為基本執(zhí)行單元,獲得多個進(jìn)程同時計算多個計算任務(wù)的并行版本;
步驟5:利用所述優(yōu)化算法生成一個以上優(yōu)化個體,優(yōu)化個體在每個優(yōu)化頻點下的電磁響應(yīng)及優(yōu)化個體目標(biāo)函數(shù)計算形成粗顆粒執(zhí)行的計算任務(wù),采用隨機(jī)排序的分配策略對粗顆粒執(zhí)行的計算任務(wù)進(jìn)行處理,獲取計算任務(wù)的新序列;
步驟6:每個計算進(jìn)程采用先申請先分配策略申請分配新序列下待分配的計算任務(wù),并調(diào)用相應(yīng)的粗顆粒進(jìn)行計算;
步驟7:判斷新序列里是否存在待分配的計算任務(wù),若存在,返回步驟6,否則,進(jìn)行步驟8;
步驟8:收集所有計算結(jié)果,將所有計算結(jié)果進(jìn)行目標(biāo)化處理,并將處理結(jié)果與預(yù)期優(yōu)化目標(biāo)進(jìn)行比較,若沒有達(dá)到優(yōu)化目標(biāo),進(jìn)行步驟5,否則,結(jié)束。
在一些實施例中,優(yōu)選為,在步驟3之后,步驟4之前,所述粗顆粒并行方法還包括:調(diào)試所述串行版本內(nèi)粗顆粒能否正常運行;若能正常運行,進(jìn)行步驟4;若不能正常運行,進(jìn)行步驟3。
所述步驟6中,所述先申請先分配策略為:第一計算進(jìn)程在申請分配第一計算任務(wù)時,生成第一狀態(tài)文件對第一計算任務(wù)進(jìn)行標(biāo)記,如果所述第一狀態(tài)文件存在,則表明第一計算任務(wù)已經(jīng)被分配,第一計算進(jìn)程自動申請分配第二計算任務(wù);所述狀態(tài)文件的生成方式為:文件鎖定與解鎖技術(shù)。
所述文件鎖定與解鎖技術(shù)為:
若狀態(tài)文件是寫加鎖狀態(tài),則在所述狀態(tài)文件被解鎖之前,所有對所述狀態(tài)文件加鎖的線程都會被阻塞;
若狀態(tài)文件在讀加鎖狀態(tài),所有以讀模式對所述狀態(tài)文件進(jìn)行加鎖的線程都可以得到訪問權(quán),以寫模式對所述狀態(tài)文件進(jìn)行加鎖的線程將會被阻塞;
若狀態(tài)文件在讀模式的鎖狀態(tài),且有另外的線程以寫模式對所述狀態(tài)文件加鎖,所述狀態(tài)文件會阻塞其他讀模式加鎖的請求。
所述步驟2包括:根據(jù)所述優(yōu)化算法生成一個以上優(yōu)化個體;將優(yōu)化個體數(shù)確定為計算任務(wù)數(shù)。則所述步驟7中判斷新序列里是否存在待分配的計算任務(wù)包括:統(tǒng)計文件鎖定與解鎖技術(shù)生成的計算任務(wù)狀態(tài)文件數(shù)量;若計算任務(wù)狀態(tài)文件數(shù)量與所述計算任務(wù)數(shù)相同,則所有計算任務(wù)被分配,否則,存在待分配的計算任務(wù)。
所述電磁功能材料為特定頻率范圍內(nèi)具有滿足特定要求的電磁響應(yīng)特征材料,包括:吸波材料、電磁屏蔽材料、頻率選擇材料或干擾抑制材料。所述優(yōu)化算法包括差分進(jìn)化算法、蟻群算法或遺傳優(yōu)化算法。
本發(fā)明提出一種電磁功能材料優(yōu)化設(shè)計的粗顆粒并行系統(tǒng),其包括:
選定模塊,用于根據(jù)電磁功能材料的優(yōu)化目標(biāo),以及電磁功能材料頻率響應(yīng)特征曲線連續(xù)性的原理,選取一個以上優(yōu)化頻點,以及選定優(yōu)化算法;
生成模塊,用于根據(jù)所述優(yōu)化算法生成一個以上初始優(yōu)化個體;所述初始優(yōu)化個體為電磁功能材料的結(jié)構(gòu);
構(gòu)建模塊,用于構(gòu)建執(zhí)行所述初始優(yōu)化個體在所有優(yōu)化頻點下的電磁響應(yīng)及個體目標(biāo)函數(shù)計算的粗顆粒,并獲得包括所述粗顆粒的串行版本;并且,在串行版本的基礎(chǔ)上,以粗顆粒為基本執(zhí)行單元,獲得并行版本;
優(yōu)化與排序模塊,用于利用所述優(yōu)化算法生成一個以上優(yōu)化個體,優(yōu)化個體在每個優(yōu)化頻點下的電磁響應(yīng)及優(yōu)化個體目標(biāo)函數(shù)計算形成粗顆粒執(zhí)行的計算任務(wù),采用隨機(jī)排序的分配策略對計算任務(wù)進(jìn)行處理,獲取計算任務(wù)的新序列;
分配模塊,用于調(diào)度各計算進(jìn)程采用先申請先分配策略申請分配新序列下待分配的計算任務(wù),并調(diào)用相應(yīng)的粗顆粒進(jìn)行計算;
判斷模塊,用于判斷新序列里是否存在待分配的計算任務(wù);
比較模塊,用于收集所有計算結(jié)果,將所有計算結(jié)果進(jìn)行目標(biāo)化處理,并將處理結(jié)果與預(yù)期優(yōu)化目標(biāo)進(jìn)行比較。
本發(fā)明實施例提供的電磁功能材料優(yōu)化設(shè)計的粗顆粒并行方法及系統(tǒng),與現(xiàn)有技術(shù)相比,首先獲得包含粗顆粒形成的獨立模塊的串行版本并以粗顆粒為基本執(zhí)行單元進(jìn)行并行,而非現(xiàn)有技術(shù)的大量循環(huán)的計算部分實現(xiàn)并行,進(jìn)而提高并行計算效率,其中粗顆粒執(zhí)行一個優(yōu)化個體在所有優(yōu)化頻點下的電磁響應(yīng)及個體目標(biāo)函數(shù)計算。在此基礎(chǔ)上,采用隨機(jī)排序的分配策略對粗顆粒執(zhí)行的計算任務(wù)進(jìn)行處理。該隨機(jī)排序的分配策略能徹底打亂所有計算任務(wù)的分配順序,可避免相對復(fù)雜的計算任務(wù)集中在某些節(jié)點上造成大量時間的硬盤讀寫,從而實現(xiàn)各計算節(jié)點同時計算的任務(wù)占用的峰值內(nèi)存總和由進(jìn)程數(shù)和所有模型占用峰值內(nèi)存的平均值而非最高值決定。然后,每個計算進(jìn)程采用先申請先分配策略申請分配計算任務(wù),并進(jìn)行計算,直至所有計算任務(wù)完成。該先申請先分配策略根據(jù)各個計算進(jìn)程的完成情況進(jìn)行動態(tài)計算任務(wù)分配,從而避免了不同計算節(jié)點、不同計算進(jìn)程由于計算速度的快慢造成長時間等待。
由上可知,本發(fā)明通過的電磁功能材料優(yōu)化設(shè)計的粗顆粒并行方法,有效的解決了現(xiàn)階段電磁功能材料優(yōu)化設(shè)計中并行計算效率低的問題。
附圖說明
圖1為本發(fā)明一個實施例中電磁功能材料優(yōu)化設(shè)計的粗顆粒并行方法步驟示意圖;
圖2為本發(fā)明一個實施例中隨機(jī)分配策略流程示意圖;
圖3為本發(fā)明一個實施例中先申請先分配策略流程示意圖;
圖4為本發(fā)明一個實施例中文件標(biāo)記技術(shù)標(biāo)記流程示意圖。
具體實施方式
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明的一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
針對現(xiàn)階段的電磁功能材料優(yōu)化設(shè)計中并行計算效率低的問題,本發(fā)明提出了一種電磁功能材料優(yōu)化設(shè)計的粗顆粒并行方法。如圖1所示,其具體包括:
步驟1:根據(jù)電磁功能材料的優(yōu)化目標(biāo),以及電磁功能材料頻率響應(yīng)特征曲線連續(xù)性的原理,選取一個以上優(yōu)化頻點,以及選定優(yōu)化算法;
其中,電磁功能材料為特定頻率范圍內(nèi)具有滿足特定要求的電磁響應(yīng)特征材料,包括:吸波材料、電磁屏蔽材料、頻率選擇材料或干擾抑制材料,優(yōu)化算法包括差分進(jìn)化算法、蟻群算法或遺傳優(yōu)化算法;
步驟2:根據(jù)優(yōu)化算法生成一個以上初始優(yōu)化個體,優(yōu)化個體為電磁功能材料的結(jié)構(gòu),初始優(yōu)化個體相當(dāng)于程序優(yōu)化所需的初始值;
步驟3:構(gòu)建執(zhí)行一個優(yōu)化個體在所有優(yōu)化頻點下的電磁響應(yīng)及個體目標(biāo)函數(shù)計算的粗顆粒,并獲得包括所述粗顆粒的串行版本;
其中,粗顆粒是執(zhí)行一個優(yōu)化個體在所有選定頻點下電磁響應(yīng)及個體目標(biāo)函數(shù)計算的程序代碼,串行版本不僅僅是包括粗顆粒,還包括優(yōu)化個體的各個參數(shù),即串行版本可進(jìn)行用戶參數(shù)的讀取、判斷是否達(dá)到優(yōu)化目標(biāo)、根據(jù)優(yōu)化算法形成新的優(yōu)化個體,以及輸出計算結(jié)果等;
步驟4:在串行版本的基礎(chǔ)上,以粗顆粒為基本執(zhí)行單元,獲得多個進(jìn)程同時計算多個計算任務(wù)的并行版本,并行的多個進(jìn)程使用同一個粗顆粒去執(zhí)行計算任務(wù);
步驟5:利用優(yōu)化算法生成一個以上的優(yōu)化個體,優(yōu)化個體在每個優(yōu)化頻點下的電磁響應(yīng)及個體目標(biāo)函數(shù)計算形成粗顆粒執(zhí)行的計算任務(wù),采用隨機(jī)排序的分配策略對粗顆粒執(zhí)行的計算任務(wù)進(jìn)行處理,獲取計算任務(wù)的新序列;
隨機(jī)排序的分配策略為:將計算任務(wù)的順序隨機(jī)打亂,產(chǎn)生新的隨機(jī)序列;計算任務(wù)為一個優(yōu)化個體在所有優(yōu)化頻點上的電磁響應(yīng)及個體目標(biāo)函數(shù)計算;
步驟6:每個計算進(jìn)程采用先申請先分配策略申請分配新序列下待分配的計算任務(wù),并調(diào)用相應(yīng)的粗顆粒進(jìn)行計算;
先申請先分配策略為:第一計算進(jìn)程在申請分配第一計算任務(wù)時,生成第一狀態(tài)文件對第一進(jìn)行標(biāo)記,如果第一狀態(tài)文件存在,則表明第一計算任務(wù)已經(jīng)被分配,第一計算進(jìn)程自動申請分配第二計算任務(wù);
步驟7:判斷新序列里是否存在待分配的計算任務(wù),若存在,返回步驟6,否則,進(jìn)行步驟8;
步驟8:收集所有計算結(jié)果,將所有計算結(jié)果進(jìn)行目標(biāo)化處理,并將處理結(jié)果與預(yù)期優(yōu)化目標(biāo)進(jìn)行比較,若沒有達(dá)到優(yōu)化目標(biāo),進(jìn)行步驟5,否則,結(jié)束。
在上述步驟2中,優(yōu)化個體為電磁功能材料的結(jié)構(gòu),其中,電磁功能材料的結(jié)構(gòu)不僅僅是指電磁功能材料的組合材料結(jié)構(gòu),還包括每個組合材料的空間結(jié)構(gòu)、不同介質(zhì)復(fù)合結(jié)構(gòu)、介質(zhì)構(gòu)成等。假設(shè)優(yōu)化10層的復(fù)合結(jié)構(gòu)吸波材料,則10層材料,每層厚度、每層選材等等會形成無數(shù)種可能,每種可能都是一種復(fù)合吸波材料的結(jié)構(gòu)。
在步驟3之后,步驟4之前,所述粗顆粒并行方法還包括:調(diào)試所述串行版本內(nèi)粗顆粒能否正常運行;若能正常運行,進(jìn)行步驟4;若不能正常運行,進(jìn)行步驟3。判斷串行版本內(nèi)所有粗顆粒是否能并行,是為了確定所得到的串行版本可以進(jìn)行并行優(yōu)化,即可以進(jìn)行步驟3以下的步驟。否則,只能再次修改粗顆粒模塊代碼,以保證執(zhí)行計算任務(wù)的代碼實現(xiàn)。
在步驟5中,先申請先分配策略通過文件標(biāo)記技術(shù)實現(xiàn)的,并且狀態(tài)文件的生成方式為:文件鎖定與解鎖技術(shù)。
如圖4所示,文件鎖定與解鎖技術(shù)通過文件讀寫鎖保證一次只能一個技術(shù)進(jìn)程讀或?qū)懲挥嬎闳蝿?wù);并具有以下特征:
若狀態(tài)文件是寫加鎖狀態(tài),則在狀態(tài)文件被解鎖之前,所有對狀態(tài)文件加鎖的線程都會被阻塞;
若狀態(tài)文件在讀加鎖狀態(tài),所有以讀模式對狀態(tài)文件進(jìn)行加鎖的線程都可以得到訪問權(quán),以寫模式對狀態(tài)文件進(jìn)行加鎖的線程將會被阻塞;
若狀態(tài)文件在讀模式的鎖狀態(tài),且有另外的線程以寫模式對狀態(tài)文件加鎖,狀態(tài)文件會阻塞其他讀模式加鎖的請求。
并且,步驟2包括:根據(jù)優(yōu)化算法生成一個以上優(yōu)化個體,并確定計算任務(wù)數(shù),計算任務(wù)數(shù)為優(yōu)化個體數(shù)。
則在步驟7中判斷所有粗顆粒執(zhí)行的計算任務(wù)是否完成包括:通過文件鎖定與解鎖技術(shù)生成的計算任務(wù)狀態(tài)文件數(shù)量與計算任務(wù)數(shù)相同,則所有計算任務(wù)完成,否則,沒有完成。并且,可定義并行計算中多個進(jìn)程中的一個進(jìn)程為主進(jìn)程,主進(jìn)程負(fù)責(zé)將所有計算任務(wù)分配到各進(jìn)程,負(fù)責(zé)收集各進(jìn)程的計算結(jié)果(目標(biāo)函數(shù)值)并根據(jù)目標(biāo)函數(shù)完成優(yōu)化算法的各步驟。主進(jìn)程還將根據(jù)收集的計算結(jié)果判定計算任務(wù)是否完成。
在上述步驟中,電磁響應(yīng)計算是指為了獲得一個優(yōu)化個體在頻率下的響應(yīng)(針對不同優(yōu)化目的,這里的響應(yīng)可以是材料的吸波效能、屏蔽效能、干擾抑制效能等)而進(jìn)行的計算,包括根據(jù)個體的結(jié)構(gòu)特征進(jìn)行建模、再利用數(shù)值計算獲得描述響應(yīng)特征的量。在程序編寫過程中,將每個頻率下每個優(yōu)化個體(特定的復(fù)合結(jié)構(gòu)電磁功能材料)的電磁響應(yīng)及個體目標(biāo)函數(shù)計算作為一個獨立的程序模塊編寫,便于后續(xù)并行過程中每個進(jìn)程內(nèi)的串行計算。并且,以獨立的程序模塊(一個優(yōu)化個體在所有選定頻點下的計算程序模塊)作為并行的基本單元就稱為粗顆粒并行,而不是獨立程序模塊里面更細(xì)的循環(huán)作為并行基本單元。
同時,在優(yōu)化個體計算過程中,為了形成描述電磁功能材料在優(yōu)化頻段內(nèi)響應(yīng)特征的曲線而進(jìn)行離散頻率點的計算,為了形成反映響應(yīng)特征的光滑曲線,需要計算比典型優(yōu)化頻點多得多的頻點,如計算1GHz~18GHz范圍內(nèi)的吸波效能,采用步長0.1GHz的采樣頻點,需要計算181個點,計算完成后,將181個點的吸波效能繪圖(橫坐標(biāo)為頻率、縱坐標(biāo)為計算的吸波效能),形成吸波效能曲線。
隨機(jī)排序的分配策略和先申請先分配策略合稱為隨機(jī)動態(tài)分配計算任務(wù)策略,其中“隨機(jī)”是指隨機(jī)分配策略,“動態(tài)”分配是指先申請先分配策略。隨機(jī)排序的分配策略是針對計算任務(wù)而言,如圖2所示,假設(shè)有100個計算任務(wù),編號為1,2,...,100,隨機(jī)分配是指不按編號1,2,3,...依次分配,而是按隨機(jī)的順序分配。這樣做的目的是避免復(fù)雜計算集中在某些計算節(jié)點上,譬如100個計算任務(wù),前50個計算模型復(fù)雜,需要20GB內(nèi)存,后50個計算模型簡單,只需要10GB內(nèi)存。這100個計算任務(wù)由2個都有32GB內(nèi)存的計算節(jié)點完成,如果按順序分配,每個節(jié)點分配兩個計算任務(wù),則有相當(dāng)部分的時間是兩個復(fù)雜任務(wù)同時計算,峰值內(nèi)存為40GB,造成大量時間的硬盤讀寫,隨機(jī)排序的分配策略則能很大程度的減少或避免這種問題。先申請先分配策略則是針對計算節(jié)點而言,與先申請先分配對應(yīng)的是預(yù)先分配,通常根據(jù)計算任務(wù)的多少和計算進(jìn)程的多少預(yù)先給各計算進(jìn)程進(jìn)行分配,分配完成后,后面的并行計算過程中不可更改。如圖3所示,先申請先分配策略不是一次性分配完,而是根據(jù)不同進(jìn)程的計算進(jìn)度實現(xiàn)動態(tài)分配,在某個進(jìn)程計算完一個模型,動態(tài)分配下一個計算模型之前,需要檢查計算任務(wù)是否已經(jīng)被分配,只有計算任務(wù)沒有被分配才從未被分配的任務(wù)中分配下一個任務(wù)給該進(jìn)程。譬如100個計算任務(wù),10個進(jìn)程,如果預(yù)先分配,則是每個進(jìn)程分配10個計算任務(wù)(無論是順序分配還是隨機(jī)分配),計算過程中無論出現(xiàn)什么情況各進(jìn)程的計算任務(wù)都不會改變,而先申請先分配則是根據(jù)各進(jìn)程計算任務(wù)的完成情況進(jìn)行的動態(tài)分配,這樣可以避免不同計算節(jié)點、不同進(jìn)程由于計算速度的快慢造成長時間等待,這種等待可能因為不同節(jié)點由于硬件配置不同導(dǎo)致的計算能力不同,最終導(dǎo)致計算相同數(shù)量的任務(wù)所需的CPU時間不同,也可能因為不同計算模型的復(fù)雜程度不同導(dǎo)致相同配置節(jié)點計算不同模型的CPU時間不同。
例如,利用差分進(jìn)化算法優(yōu)化一種帶頻率選擇表面的3~10層復(fù)合結(jié)構(gòu)吸波材料,計算模型表明,同一類型計算由于優(yōu)化個體計算模型結(jié)構(gòu)和復(fù)雜度不同,導(dǎo)致網(wǎng)格剖分產(chǎn)生的單元數(shù)量有較大差異,從而不同優(yōu)化個體計算需要的內(nèi)存也有較大差異。統(tǒng)計結(jié)果表明,如果采用二階有限元計算,相同網(wǎng)格剖分參數(shù)設(shè)置情況下,優(yōu)化算法產(chǎn)生的3層復(fù)合結(jié)構(gòu),帶有1層頻率選擇表面,厚度5mm的模型,計算所需內(nèi)存峰值最小,約為8GB;優(yōu)化算法產(chǎn)生的10層復(fù)合結(jié)構(gòu),帶有6層頻率選擇表面,厚度5mm的模型,計算所需內(nèi)存峰值最大,超過20GB。如果一個集群每個節(jié)點內(nèi)存為48GB,利用該集群采用二階有限元并行計算,最簡單的模型可以同時開啟6個進(jìn)程,最復(fù)雜的模型則只能同時開啟2個進(jìn)程,否則系統(tǒng)會將部分硬盤空間作為虛擬內(nèi)存供程序使用。目前常用的硬盤驅(qū)動器HDD硬盤讀寫速度在80MB/s左右,而物理內(nèi)存的讀寫速度有百倍以上的提高,例如,對于DDR3 1333MHz的服務(wù)器內(nèi)存,其數(shù)據(jù)傳輸速率達(dá)到10.6GB/s。這一比較結(jié)果說明,如果并行計算開啟的進(jìn)程過多,導(dǎo)致計算過程中部分硬盤存儲空間被當(dāng)作虛擬內(nèi)存讀取,將使得程序運行速度降低百倍以上。為避免計算過程中部分硬盤存儲空間被當(dāng)作虛擬內(nèi)存讀取的現(xiàn)象,在開啟進(jìn)程時,需要考慮每個進(jìn)程運行時可能需要的最大內(nèi)存,以此為依據(jù)確定每個節(jié)點能開啟的最大進(jìn)程數(shù)。如果采用普通方法粗顆粒并行計算,則每節(jié)點最多能開啟2個進(jìn)程。實驗結(jié)果表明,采用本發(fā)明的隨機(jī)動態(tài)分配計算任務(wù)策略,每節(jié)點開啟4個進(jìn)程,且內(nèi)存使用率長期在80%以上,基本做到了內(nèi)存使用峰值平均化和內(nèi)存峰值出現(xiàn)時間上的錯位。
采用C++實現(xiàn)的文件鎖定與解鎖技術(shù)的典型代碼如下所示:
1)創(chuàng)建標(biāo)識文件并加鎖,其他進(jìn)程不能讀/寫該文件:
out.open(filename,_SH_DENYRW);
2)讀標(biāo)識文件并加鎖,其他進(jìn)程不能寫該文件:
ifstream in(filename,ios::in,_SH_DENYWR);
3)寫標(biāo)識文件并加鎖,其他進(jìn)程不能讀/寫該文件:
out.open(filename,ios::app,_SH_DENYRW);
在一些程序中存在讀者寫者問題,也就是說,對某些資源的訪問會存在兩種可能的情況,一種是訪問必須是排它行的,就是獨占的意思,這稱作寫操作;另一種情況就是訪問方式可以是共享的,就是說可以有多個線程同時去訪問某個資源,這種就稱作讀操作。這個問題模型是從對文件的讀寫操作中引申出來的。
讀寫鎖和互斥量(mutex)同為線程同步常用的機(jī)制,讀寫鎖比起mutex具有更高的適用性,具有更高的并行性,可以有多個線程同時占用讀模式的讀寫鎖,但是只能有一個線程占用寫模式的讀寫鎖,讀寫鎖的三種狀態(tài):
1.當(dāng)讀寫鎖是寫加鎖狀態(tài)時,在這個鎖被解鎖之前,所有試圖對這個鎖加鎖的線程都會被阻塞
2.當(dāng)讀寫鎖在讀加鎖狀態(tài)時,所有試圖以讀模式對它進(jìn)行加鎖的線程都可以得到訪問權(quán),但是以寫模式對它進(jìn)行加鎖的線程將會被阻塞
3.當(dāng)讀寫鎖在讀模式的鎖狀態(tài)時,如果有另外的線程試圖以寫模式加鎖,讀寫鎖通常會阻塞隨后的讀模式鎖的請求,這樣可以避免讀模式鎖長期占用,而等待的寫模式鎖請求則長期阻塞。
針對上述電磁功能材料優(yōu)化設(shè)計的粗顆粒并行方法,本發(fā)明還公開了一種電磁功能材料優(yōu)化設(shè)計的粗顆粒并行系統(tǒng),其包括:
選定模塊,用于根據(jù)電磁功能材料的優(yōu)化目標(biāo),以及電磁功能材料頻率響應(yīng)特征曲線連續(xù)性的原理,選取一個以上優(yōu)化頻點,以及選定優(yōu)化算法;
生成模塊,用于根據(jù)優(yōu)化算法生成一個以上初始優(yōu)化個體;優(yōu)化個體為電磁功能材料的結(jié)構(gòu);
構(gòu)建模塊,用于構(gòu)建執(zhí)行初始優(yōu)化個體在所有優(yōu)化頻點下的電磁響應(yīng)及個體目標(biāo)函數(shù)計算的粗顆粒,并獲得包括所述粗顆粒的串行版本;并且,在串行版本的基礎(chǔ)上,以粗顆粒為基本執(zhí)行單元,獲得并行版本;
優(yōu)化與排序模塊,用于利用所述優(yōu)化算法生成一個以上優(yōu)化個體,優(yōu)化個體在每個優(yōu)化頻點下的電磁響應(yīng)及優(yōu)化個體目標(biāo)函數(shù)計算形成粗顆粒執(zhí)行的計算任務(wù),采用隨機(jī)排序的分配策略對計算任務(wù)進(jìn)行處理,獲取計算任務(wù)的新序列;
分配模塊,用于調(diào)度各計算進(jìn)程采用先申請先分配策略申請分配新序列下待分配的計算任務(wù),并調(diào)用相應(yīng)的粗顆粒進(jìn)行計算;
判斷模塊,用于判斷新序列里是否存在待分配的計算任務(wù);
比較模塊,用于收集所有計算結(jié)果,將所有計算結(jié)果進(jìn)行目標(biāo)化處理,并將處理結(jié)果與預(yù)期優(yōu)化目標(biāo)進(jìn)行比較。
以上僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。