電磁功能材料優化設計的粗顆粒並行方法及系統與流程
2023-07-25 06:44:46

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