999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

VLPL-S在Knights Landing上的優化與性能評估*

2018-02-05 03:46:23丁丹迪文敏華林新華
計算機與生活 2018年2期
關鍵詞:程序優化方法

丁丹迪,文敏華,周 姍,陳 民,林新華

1.上海交通大學 高性能計算中心,上海 200240

2.英特爾亞太研發中心,上海 200240

3.上海交通大學 物理與天文系,上海 200240

4.東京工業大學,日本 東京

1 引言

隨著高性能計算領域的快速發展,激光等離子體模擬程序可以在更大維度以及更高的精度下進行。“虛擬激光等離子體實驗室”程序(virtual laser plasma lab,VLPL)[1]是一份基于C++開發的三維激光等離子體模擬程序,被廣泛應用于激光與等離子體相互作用的研究中[2-4]。VLPL-S由上海交通大學陳民研究員在VLPL基礎上進一步開發,優化了碰撞電離、場致電離以及兩體碰撞效應和粒子跟蹤,并提供了對眾核平臺的支持。在代碼中,電子的離化是使用虛函數開發實現的,體現了面向對象編程語言的特性;移動窗口方法也應用到了程序中以研究加速能量達GeV的長距離激光尾波場加速問題;通過加入以上的模擬方法,程序可以對Terahertz輻射、中性氣體與激光相互作用中的光脈沖及離化波前演化、激光尾波場加速及表面電子加速等物理過程進行研究[5]。

在本文中,VLPL-S使用多種方法優化,并在Intel?第二代Xeon PhiTM處理器(代號Knights Landing)上進行性能評估。由于原程序的熱點受限于訪存延遲,預取優化方法顯著提升了程序在Knights Landing(KNL)上的性能。通過應用多線程優化,VLPL-S在KNL集群上的性能也得以提升。使用這些優化方法后,VLPL-S相比于原版程序獲得了1.68倍的加速比。

本文組織結構如下:第2章介紹相關工作;第3章和第4章簡要介紹Particle-in-Cell(PIC)算法和Intel KNL架構;第5章講述詳細的優化方法;第6章對優化后的性能進行評估;第7章給出結論以及后續優化思路。

2 相關工作

在最近高性能計算快速發展的三十年內,許多學者提出了各自PIC算法的實現。這些實現從側面說明了PIC算法的并行可能性。Bastrakov等人[6]最近講述了對其實現的PIC代碼在多核平臺、KNC(Knights Corner,Intel第一代Xeon Phi眾核處理器)以及GPGPU(general purpose GPU)上的性能評估。通過他們的優化,程序的數據局部性得以提升,并能更充分利用處理器SIMD(single instruction multiple data)指令,最終在一個8核的Xeon E5-2690平臺上實現了7倍的加速比,以及在共享內存集群上實現了99%的強擴展性。對于其代碼在KNC上的實現,Bastrakov等人僅在7100X協處理器上實現了相對于8核Xeon E5-2690 CPU 1.5倍的加速比。其程序在KNC上的性能僅相當于Xeon Phi 7100X峰值性能的20%。與此不同,在基于Fermi架構的GPGPU平臺上他們通過原子操作以減少場部分數據讀寫,最終單精度版本的程序實現了相對于8核Xeon E5-2690 CPU 10倍以上的加速比。

此外,Surmin等人[7]開發了一套KNC平臺上的高性能PIC代碼,代碼名稱是PICADOR。優化后,程序的數據局部性和向量化程度得以提高,最終在Intel Xeon E5-2600 CPU上實現了3.75倍的加速比,在Xeon Phi 5110P(KNC)協處理器上實現7.5倍的加速比。PICADOR在Xeon Phi 5110P上的性能是其在單Xeon CPU上性能的1.6倍。Surmin等學者還評估了PICADOR在KNL上的性能[8],僅重新針對KNL平臺編譯代碼就獲得了相對于KNC上2.43倍的加速比。在優化后,PIDADOR又獲得了1.89倍的加速比,并且實現了100 GFLOPS的雙精度峰值性能。

VLPL-S常用于離化相關的模擬流程,因此以相較于其他的PIC實現,VLPL-S在模擬過程中會產生更多的新粒子,從而此程序需要消耗更多的內存,并且粒子移動也會產生更多的通信開銷。盡管現在已經處于P級計算能力的時代,想要在眾核平臺上實現極致的性能也是不容易的。Nakashima[9]也在其文章中展示了在眾核平臺上實現高度并行及向量化的PIC程序的困難性。好消息是Intel的新一代Xeon Phi處理器提供了高達6 TFLOPS的峰值計算能力與由MCDRAM(multi-channel dynamic random access memory)帶來的極高訪存帶寬,并且也同時提供了與CPU平臺統一的編程環境,因此在KNL這個新平臺上移植并優化VLPL-S程序將會是一項有意義的研究工作。

3 VLPL-S介紹

本部分將簡要介紹VLPL及VLPL-S程序中所使用的算法,PIC算法的介紹可參見文獻[10]。

程序中的模擬空間是一個由均勻的網格所劃分的三維空間。麥克斯韋方程組所定義的電場強度E和磁場強度B儲存在網格當中,并用有限時域差分法(finite difference time domain,FDTD)求解[7]。粒子以有限大小的粒子云模型表示,眾多粒子分布由初始等離子體條件給定,單個粒子云在算法中具體體現為動量p、位置r、質量m以及電荷q。粒子的位置r和速度v根據洛倫茲力以及Boris數值方程求解,進而得出粒子的移動量。帶電粒子移動會產生電流j,是麥克斯韋方程組中的源項。

Fig.1 Stages and data dependency in PIC algorithm圖1 PIC算法的流程及數據依賴

PIC算法中包含4個主要的處理過程,每個過程所涉及到的方程以及數據依賴可參見圖1。主循環的一次執行表示一個時間步的模擬。每個時間步中包含了上述的4個過程。場計算(field solver)部分會更新網格中儲存的電磁場強度;場插值及力計算部分會計算帶電粒子在電磁場中所受的洛倫茲力;粒子推動部分會根據粒子的動力學數據更新粒子位置并在網格中移動粒子;最后的部分是統計各個網格中由粒子運動所產生的電流。從代碼實現角度來看,將部分場強計算、粒子受力及推動部分整合到一起可以提高數據局部性。整合后的部分在VLPL-S代碼move_particle()函數中實現。VLPL-S代碼中還考慮了激光與等離子體的相互作用,因此需要一個額外的流程來處理激光在電磁場中所受的影響。在PIC算法的所有處理流程中,粒子推動(particle push)部分耗時最多,因此move_particle()也是整個VLPLS程序的熱點。

關于空間劃分方法,VLPL-S在三維空間的每個維度都進行了網格均分。VLPL-S中每個網格的大小都是相同的,每個 MPI(message passing interface)進程包含相同數量的網格。由于采用了這樣的空間劃分方法,只有在模擬粒子的空間分布十分均勻的算例時才能取得良好的負載均衡性。

PIC方法中包含兩種不同的數據集。首先是空間中的粒子數據,其次是網格上的電磁場數據及電流、粒子密度等數據[7]。由于粒子推動及電流計算部分有復雜的計算過程以及對兩個數據集的讀寫,它們占去了大部分的運行時間。VLPL-S程序中粒子由鏈表數據結構表示。每個網格維護一條單向鏈表,其中儲存了此網格中的所有粒子。由鏈表所產生的隨機訪存對性能的影響將在之后討論。

4 Intel Knights Landing

Knights Landing是Intel?Xeon PhiTM眾核處理器的第二代產品,它具有多個新的特性。首先KNL支持自啟動,也就是說它可以作為一個獨立的處理器來使用而不僅僅是協處理器。其次,藉由其片上整合的MCDRAM,KNL提供了400+GB/s的訪存帶寬,同時還包含傳統的DDR4內存以提供大內存容量支持。MCDRAM有不同的使用方式:cache、flat和hybrid。不同的方式有不同的地址空間映射以及物理內存劃分方法。此外KNL還有不同的訪存路由處理模擬:All-to-All、Quadrant、SNC(sub NUMA clustering)。關于KNL的詳細介紹可參見文獻[11-12]。詳細的帶寬數據[13]以及和雙路Xeon節點帶寬的對比可見表1。

Table 1 Measured stream bandwidth of Xeon and Xeon Phi表1 Xeon和Xeon Phi的實測帶寬 GB/s

KNL的芯片由36個Tile組成。這些Tile由二維片上網格所連接。每個Tile中有兩個核以及1 MB的共享L2緩存。每核中有兩個向量處理單元。詳細的KNL架構可見圖2(b)。OPA(Intel?Omini-Path architecture)也集成到KNL上以提供高速互連。

5 優化方法

本部分首先介紹VLPL-S程序的關鍵特性以及性能瓶頸,然后詳細講述本文所采用的優化方法。

5.1 基礎優化

Fig.2 Knights Landing overview圖2 Knights Landing架構

通常來說,平方根操作相比其他操作需要更多的時鐘周期,并且對512位寬數據的平方根也會產生更大的開銷。原版的VLPL-S程序基本使用的是單精度浮點數,但是由于編譯器在混合精度表達式中的自動精度擴展,發現由Intel編譯產生的匯編程序中,部分單精度浮點數在平方根操作時被擴展成為雙精度浮點數。精度擴展的初衷是保證數據的精確性,因此單精度與雙精度的復合表達式中的單精度數據被自動擴展成為雙精度數據。這在VLPL-S程序中不是必須的,因此將部分雙精度數據強制轉換成為單精度數據,從而可以減少部分平方根操作產生的數據等待。

虛函數在C++中是由虛表所實現的,它需要在運行時根據內存地址來決定函數調用的入口,而函數調用所產生的寄存器讀寫又是十分不利于性能的[14]。另外,自動內聯是編譯器提供的一個對高性能計算程序十分有用的特性。自動內聯可以減少核心計算時上下文切換所帶來的開銷。然而自動內聯并不能作用于虛函數,因此將程序中所使用到的虛函數都進行工程重寫,改為可以被自動內聯的普通函數。

5.2 訪存優化

在對VLPL-S的介紹中提到,程序中的粒子數據是使用鏈表的數據結構進行儲存的。PIC算法中每個時間步都需要處理空間中所有的粒子,因此模擬過程中對鏈表的多次遍歷就是不可避免的。鏈表數據結構中每個節點的內存是單獨分配的,因此這些節點處于內存中的不同位置。由此造成遍歷鏈表時的低效隨機訪存。

預取是一個用于減少訪存延遲影響的常用優化方法。硬件預取與軟件預取共同工作以給處理器的計算單元提供數據[15]。然而,目前的硬件預取很難對遍歷鏈表時的隨機訪存進行預測,即便使用Intel ICC編譯器也不能對其做自動軟件預取優化。為了取得更高的訪存性能,使用Intrinsic庫將鏈表中下一個要處理的粒子數據預取到L1緩存。由于鏈表的訪存特性,在讀取到當前節點的數據之前并不知道下一個節點的數據位置,因此單純的預取也不能完全隱藏鏈表訪存延遲。為此,在每個網格中維護了一個前向查找表,以便在計算每個網格時預取所需要用到的粒子數據。這樣就可以提前預取數據以更好地隱藏隨機訪存延遲。

5.3 多線程優化

與Xeon相比較,盡管KNL的主頻要低一些,但KNL擁有更多的核心。更多核心需要運行更多的進程才能全部利用其計算能力,因此要想在KNL上實現極致的性能,就必須實現極致的并行性。

VLPL-S程序的熱點是PIC算法中的粒子推動函數,它占用了程序執行時間的80%以上。其中由粒子運動產生的電流數據需要更新到網格當中,網格中的不同粒子可能會同時更新同一個位置的數據。因此,在多線程并行化的同時需要處理數據沖突的問題。

在每個時間步的迭代之后,粒子可能會移動到屬于其他進程的網格中。每個進程邊界上的電磁場數據也需要和其周圍的進程進行同步更新,因此每個時間步之后需要同步一次數據。由此,整個程序運行過程中會產生大量的MPI通信。在Intel ITAC工具的幫助下,發現當MPI進程增加時MPI通信開銷所占的時間比也在增加。此外,負載均衡性較差的算例會產生更多的MPI通信開銷。此問題的原因是進程之間計算量不同而每個時間步都需要同步,因此計算量較少的進程會阻塞在MPI通信函數等待其他進程。為了降低通信帶來的開銷以及在MPI進程內提升負載均衡性,本文使用OpenMP對VLPL-S程序進行了多線程優化。

如上文所述,一個粒子的移動會對其周圍多個網格的電流產生影響。不同線程中的粒子可能會同時對一個網格的電流做出貢獻,因而產生了數據寫沖突問題。本文提出3種方法來處理數據寫沖突問題。

(1)原子操作

OpenMP庫提供了原子操作語句,其指定的內存地址同時只能由一個線程操作,這就可以避免數據寫沖突。具體來說OpenMP提供了一個最小化的關鍵區塊以實現原子操作[16]。從PIC算法上來說,每個粒子只需要對其周圍的網格做出貢獻,因此只需在每個線程的邊界區域應用Atomic操作即可。應用此方法后的線程網格示意圖如圖3(a)所示。

Fig.3 Scheme of methods avoiding data hazard of thread level parallelism圖3 避免數據寫沖突的處理方法示意圖

(2)被動貢獻方法

在原版的VLPL-S代碼當中,粒子移動所產生的電流數據被直接寫入到對應的網格當中。對于粒子而言,這種寫數據方法是主動貢獻法。在被動貢獻方法中,電流在產生之后先會保存在粒子自己的數據結構體之中,當所有粒子的電流計算完成后再從網格的粒度遍歷數據,以將電流從粒子中讀取并統計寫入到網格當中。如上而言,每個粒子需要一片緩存空間來保存產生的電流數據。被動貢獻方法的示意圖如圖3(b)所示。

(3)緩存規約方法

這個方法是在被動貢獻方法的基礎上提出的。為了保存粒子移動所產生電流的中間數據,需要在粒子結構體中增加3個32位的變量。VLPL-S模擬中通常包含了百萬以上個粒子,這些新增的數據空間將會使整個程序所需要的內存空間急劇增加,同時也會產生更多的訪存需求。緩存規約方法在被動貢獻方法基礎上做出了改進,將電流數據暫存到網格數據中,這樣只需要在每個網格中新增9個變量的數據空間即可保存電流數據。相較于被動貢獻法,緩存規約方法所需的內存空間更低。圖4為緩存規約方法的示意圖。

Fig.4 Scheme of buffering and reduction for avoiding data hazard圖4 應對數據寫沖突的緩存規約方法

在MPI層面,不同的進程擁有相同數量的網格。由于粒子在網格之間的頻繁移動,粒子在網格中的分布可能逐步變得不均勻。在OpenMP層面,水平和垂直方向的嵌套循環可以展開成為一個循環,因而可以使用OpenMP動態調度方法來處理粒子在進程內的分布不均衡問題。

5.4 向量化

KNL提供的一個重要特性是每個核心擁有兩個512位的向量處理單元。本節將講述一個對于鏈表數據結構的中間向量化方法。對于此方法的評估及討論將在第6章進行。

鏈表數據結構是針對有頻繁插入與刪除操作的數據集所設計的,它的優點是任意節點的插入與刪除的時間復雜度都是O(1)。然而,遍歷鏈表時的隨機內存訪問卻是高性能計算應用所不希望看到的。

為了充分利用512位寬的向量化處理單元以及對向量化所帶來的性能提升有一個初步的認識,本文采用了工作量較小但有一些額外開銷的臨時向量化方法。此方法的簡要示意圖見圖5。在原程序中,盡管每個粒子的質量、電荷及動量等數據儲存在連續的內存空間,但是4個相鄰粒子的質量數據卻是離散的,這樣的內存布局不能直接向量化。此臨時向量化方法會一次讀取數個粒子的數據,并將同類數據拼裝打包到連續的內存當中,這樣就可以組成512位的向量化數據。VLPL-S程序使用的是32位單精度浮點數,為了組成512位的向量化數據,每次計算之前需要讀取的粒子數量由1個變為了16個。

Fig.5 An example of packing 4 linked particles圖5 拼裝組合4個粒子數據的示意圖

6 結果討論

6.1 算例及測試平臺說明

本文使用兩個不同的算例來進行性能測試。表2展示了詳細的算例配置。其中,算例A是一個主要用戶性能測試的算例,因為粒子的分布是相對均勻的,所以算例A有較好的負載均衡性。此外,算例A模擬的空間在水平和垂直方向上的網格數量是相當的,這對于大多數的空間劃分方法都是適用的。算例B是一個用于實際研究的算例。初始化時,粒子在空間中的分布是完全均衡的,但隨著模擬的進行,粒子的分布變得不均衡。此外,算例B的模擬空間是一個高度較低的空間,這導致了在空間劃分時垂直方向最多只能劃分為60個。

Table 2 Details about workloads表2 測試所用算例說明

在3個平臺上對VLPL-S的性能進行了測試,表3展示了3個平臺的詳細配置。VLPL-S在KNL上使用了多種的Memory mode和Cluster mode進行了測試,詳細的配置將隨性能數據一起給出。測試時KNL平臺的代碼編譯選項是“-O3-xMIC-AVX512”,Xeon平臺的編譯選項是“-O3-xCORE-AVX2”。

Table 3 Machine configuration表3 測試平臺配置說明

6.2 在KNL上對原版VLPL-S代碼的性能評估

KNL一個重要的新特性是對CPU平臺程序的二進制兼容性。為了了解KNL平臺對原生CPU程序的支持及其性能,參照Intel編譯器團隊的指導,僅使用“-xMIC-AVX512”對原版程序進行了重新編譯。圖6展示了VLPL-S在KNL的不同Memory mode及Cluster mode上的性能。

當使用MCDRAM時,VLPL-S在不同的Memory mode及Cluster mode下的性能基本是一致的。而僅使用DDR內存則性能會差很多。使用MCDRAM時,程序從128個進程擴展到256個進程的加速比約為1.5,如果使用DDR內存則基本沒有加速比。原因是MCDRAM能提供相比于DDR內存更高的內存帶寬。程序使用256個進程運行時,其性能已受限于訪存帶寬。

6.3 優化方法的效果評估

Fig.6 Apreview of performance of VLPL-S on KNL圖6 原版VLPL-S程序在KNL上的性能

Fig.7 Performance gain of using different optimizations on Xeon and Xeon Phi platforms圖7 使用不同優化方法在Xeon及Xeon Phi平臺上的加速比

第5章提到的優化方法所取得的性能提升如圖7所示。KNL平臺使用了Flat memory mode以及Quadrant cluster mode。VLPL-S在Xeon Phi 7210平臺上運行了256個進程,在雙路Xeon E5-2699v3平臺上運行了36個進程。程序在KNL上使用256個進程時性能是最佳的,其原因是MCDRAM能夠提供足夠的訪存帶寬。KNL平臺每個核心有兩個VPU,單精度的標量計算程序對VPU不會產生極高的壓力,因此VLPL-S可以在超線程上獲得性能提升。對于CPU平臺而言,其內存帶寬是相對有限的,同時每個核心僅有一個VPU,因此CPU上運行36個進程時性能是最佳的。

(1)基礎優化

如圖7所示,基礎優化方法在KNL平臺上的加速比比CPU平臺上的高。原因是KNL主頻較低,上下文切換的開銷更大,因此消除虛函數的優化在KNL上更加有效。此外,算例A在基礎優化后的性能提升高于算例B的性能提升。原因是粒子在算例A中移動得較少,因此通信所占的時間更少,使得主要作用于計算部分的優化更加有效。

(2)訪存優化

為了評估預取的效果,使用Intel VTuneTM收集了運行時的硬件計數器數據。如圖8所示(測試平臺為雙路E5-2699v3),緩存缺失率下降了。預取優化對CPU和KNL都十分有效。對算例A而言,其他KNL平臺上的加速比是1.21倍,這比它在Xeon平臺上的要高。原因是KNL平臺上運行了8倍于CPU平臺的進程數量,MCDRAM提供了更高的訪存帶寬。對于算例B而言,由于其負載不均衡性,預取主要作用于相對任務較重的進程,從而不能有效提升整體程序的帶寬。因此算例A在KNL平臺上獲得了更高的加速比。

Fig.8 Cache miss rate reduced圖8 緩存缺失率下降

(3)多線程優化

應用多線程優化后,VLPL-S在單節點上取得了相當的性能提升。對算例A而言,程序在KNL平臺取得了1.14倍的加速比,在CPU平臺上取得了1.05倍的加速比。對于算例B而言,程序在KNL平臺上實現了1.27倍的加速比,在CPU平臺上實現了1.11倍的加速比。兩個算例在KNL平臺上所獲得的加速比都更高。在未使用多線程優化的情況下,VLPL-S最佳的運行配置是KNL平臺256個進程,CPU平臺36個進程。多線程優化僅在程序的熱點應用,在超線程的幫助下它的硬件過度使用開銷相對更低。此外,算例B在兩個平臺上所取得的加速比都比算例A要高。其原因是多線程優化后的線程動態調度策略可以在線程層面上緩解算例B的負載不均衡問題。

MPI+OpenMP的混合使用模式極大提升了VLPLS在多個KNL節點上的擴展性。擴展性在使用OPA互連的Intel Endeavor集群上測試得出,KNL和BDW節點都采用OPA進行節點互連。如圖9所示,VLPLS在BDW集群上的強擴展性略高于線性。當運行于更多的節點時,每個節點所需要的內存變得更少,因此可以緩存的數據比例更多。這使得程序的數據局部性隨節點數增加而提高。

算例A中,模擬的網格空間共有1 200×1 200個網格,每個網格中有16個粒子。總共的內存開銷是1 200×1 200×(網格數據大小+16×粒子數據大小)=1 735.83 MB。當擴展到32個雙路E5-2697v4節點時,可用的L3緩存大小是2 880 MB,這已經大于程序的總內存需求了。因此VLPL-S程序在BDW集群上表現出了極好的擴展性。

在Intel Trace Analyzer and Collector的幫助下,本文測試了每個MPI操作所消耗的時間。程序中唯一的一個MPI集體通信操作MPI_Bcast占據了大部分MPI通信時間,尤其是在使用4個及更多KNL節點的時候。程序中MPI_Bcast僅用于同步一個32位狀態變量,在假設程序狀態沒有異常的情況下消除了MPI_Bcast操作。如圖9所示,程序移除MPI_Bcast后的擴展性獲得了較大的提升。對MPI_Bcast操作在KNL平臺和CPU平臺進行了詳細的性能測試,結果如圖10所示。當使用兩個及更多節點時,MPI_Bcast在KNL平臺上的延遲要比其在CPU平臺上的延遲高出3倍以上。同時,在單節點上運行多于64個進程之后,MPI_Bcast的性能也極度下降。測試結果見圖11。這可能是超線程帶來的硬件共享所導致的。

Fig.9 Strong scalability of VLPL-S on BDW and KNL clusters圖9 VLPL-S在BDW和KNL平臺上的強擴展性

Fig.10 MPI_Bcast performance on BDW and KNL clusters圖10 MPI_Bcast在BDW及KNL集群上的性能

(4)向量化

本文采用的臨時向量化方法導致了程序性能下降,尤其是在KNL平臺。進行數據拼裝打包后,訪存時間與計算時間不再重疊。本文測試了程序的緩存缺失率后發現,應用此向量化方法缺失率上升。之前預取優化后,算例A在KNL平臺上取得了較高的加速比,但向量化之后,每次計算前需要讀取16個粒子的數據,弱化了之前預取帶來的訪存隱藏效果。由此原因,在KNL平臺上原本受益于預取優化最多的算例A在臨時的向量化優化之后性能下降也最多。

顯然,當前版本的VLPL-S程序還離極致的性能很遠。將鏈表數據結構改寫為Struct of Array(SOA)是優化過程中關鍵的一步。

Fig.11 MPI_Bcast performance on single-node KNL圖11 MPI_Bcast在單個KNL節點上的性能

6.4 總結

總體來說,對于主要用于性能測試的算例A而言,優化后的VLPL-S程序在Xeon Phi 7210上的性能是其在雙路E5-2699v3上的1.77倍,也是其在雙路E5-2697v4上性能的1.53倍。優化后的程序性能如圖12所示。圖中HSW表示雙路E5-2699v3;BDW表示雙路E5-2697v4;KNL表示Xeon Phi 7210 Flat Quadrant模式。64個進程及每個進程4個線程的運行配置在KNL平臺上取得了最好的性能,18個進程及每個進程兩個線程的配置在CPU平臺取得了最好的成績。對于算例B而言,VLPL-S程序在Xeon Phi 7210上的性能要比其在雙路E5-2697v4上的低,這是由算例B的負載不均衡性造成的。負載不均衡性將兩個平臺的性能對比轉變為單核性能的對比,而KNL的核心主頻較低,因此不占優勢。

Fig.12 Performance comparision of VLPL-S on different platforms圖12 VLPL-S在不同平臺上的性能比較

盡管不同的優化方法在不同平臺上取得了不同性能提升,這些常用的優化手段在KNL及CPU平臺都是有效的。盡管MPI的性能在使用OPA互連的KNL平臺上要低一些,使用多線程優化后VLPL-S在KNL集群上的擴展性也是可以接受的。由此可見,對于VLPL-S來說多線程優化在KNL平臺上是十分必要的。

7 結論及未來工作

綜上所述,對于VLPL-S來說常規的優化方法在Xeon PhiTM和Xeon平臺上都是有效的。KNL平臺的MCDRAM提供了極高的訪存帶寬,從而極大地提高了VLPL-S程序的性能。MPI與OpenMP混合的運行模式在單節點及多節點上實現了最佳性能。

鑒于目前所采用的臨時向量化方法對性能沒有提升,VLPL-S程序必須使用SOA替換鏈表數據結構才能實現極致的性能。這部分工作目前正在進行中,對SOA版本程序進行性能評估及分析后會做更進一步的討論。在SOA版本的基礎上,可以做更多針對MCDRAM及512位向量處理單元的優化。

Intel MPI在KNL平臺上的性能低于其在CPU平臺上的性能,尤其是MPI集體操作的性能。其原因是目前MPI在KNL平臺上的實現還不成熟,之后會對此問題進行更詳細的研究與討論。

致謝林新華特別致謝日本學術振興會JSPS的RONPAKU項目資助。陳民感謝Pukhov教授提供了VLPL程序的源代碼以及他對本文工作的支持。感謝Intel亞太研發中心高性能計算組里王哲及其他同事的優化建議。

[1]Pukhov A.Three-dimensional electromagnetic relativistic particle-in-cell code VLPL(Virtual Laser Plasma Lab)[J].Journal of Plasma Physics,1999,61(3):425-433.

[2]Faure J,Glinec Y,Pukhov A,et al.A laser-plasma accelerator producing monoenergetic electron beams[J].Nature,2004,431(7008):541-544.

[3]Pukhov A,Meyer-Ter-Vehn J.Laser wake field acceleration:the highly non-linear broken-wave regime[J].Applied Physics B,2002,74(4/5):355-361.

[4]Pukhov A.Strong field interaction of laser radiation[J].Reports on Progress in Physics,2002,66(1):R1-R55.

[5]Chen Min,Luo Ji,Li Feiyu,et al.Tunable synchrotron-like radiation from centimeter scale plasma channels[J].Light:Science&Applications,2016,5(1):e16015.

[6]Bastrakov S,Meyerov I,Surmin I,et al.Particle-in-cell plasma simulation on CPUs,GPUs and Xeon Phi coprocessors[C]//LNCS 8488:Proceedings of the 29th International Supercomputing Conference,Leipzig,Jun 22-26,2014.Berlin,Heidelberg:Springer,2014:513-514.

[7]Surmin I A,Bastrakov S I,Efimenko E S,et al.Particle-incell laser-plasma simulation on Xeon Phi coprocessors[J].Computer Physics Communications,2016,202:204-210.

[8]Surmin I,Bastrakov S,Matveev Z,et al.Co-design of a particle-in-cell plasma simulation code for Intel Xeon Phi:a first look at Knights Landing[C]//LNCS 10049:Proceedings of the 2016 International Conference on Algorithms and Architectures for Parallel Processing,Granada,Dec 14-16,2016.Berlin,Heidelberg:Springer,2016:319-329.

[9]Nakashima H.Manycore challenge in particle-in-cell simulation:how to exploit 1 TFlops peak performance for simulation codes with irregular computation[J].Computers&Electrical Engineering,2015,46:81-94.

[10]Grigoryev Y N,Vshivkov V A,Fedoruk M P.Numerical"particle-in-cell"methods:theory and applications[M].Berlin:Walter de Gruyter,2002.

[11]Reinders J.Knights Landing,an overview for developers[EB/OL].[2016-06-27].https://software.intel.com/sites/default/files/managed/f3/87/Slides--Knights-Landing--An-Overview-for-Developers.pdf.

[12]Sodani A.Knights landing(KNL):2nd generation Intel?Xeon Phi processor[C]//Proceedings of the Hot Chips 27 Symposium,Cupertino,Aug 22-25,2015.Washington:IEEE Computer Society,2015:1-24.

[13]McCalpin J D.A survey of memory bandwidth and machine balance in current high performance computers[J].IEEE Technical Committee on Computer Architecture Newsletter,1995:19-25.

[14]Driesen K,H?lzle U.The direct cost of virtual function calls in C++[J].ACM Sigplan Notices,1996,31(10):306-323.

[15]Vanderwiel S P,Lilja D J.Data prefetch mechanisms[J].ACM Computing Surveys,2000,32(2):174-199.

[16]Barney B.OpenMP tutorial[EB/OL].[2016-07-29].https://computing.llnl.gov/tutorials/openMP/.

猜你喜歡
程序優化方法
超限高層建筑結構設計與優化思考
房地產導刊(2022年5期)2022-06-01 06:20:14
民用建筑防煙排煙設計優化探討
關于優化消防安全告知承諾的一些思考
一道優化題的幾何解法
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
主站蜘蛛池模板: 2021国产精品自产拍在线| 思思99思思久久最新精品| 啪啪永久免费av| 日韩久草视频| 99在线视频精品| 波多野结衣一二三| 国产成人综合日韩精品无码首页| 亚洲娇小与黑人巨大交| 亚洲精品无码日韩国产不卡| 免费看av在线网站网址| 美女无遮挡被啪啪到高潮免费| 国产av一码二码三码无码| 无码av免费不卡在线观看| 国产一级妓女av网站| 91蝌蚪视频在线观看| 91外围女在线观看| 国产99欧美精品久久精品久久| 99久久免费精品特色大片| 亚洲乱伦视频| 99热这里只有精品5| 成人国产三级在线播放| 爱做久久久久久| 亚洲精品动漫在线观看| 日韩av在线直播| 亚洲精品成人7777在线观看| 毛片在线播放a| 欧美激情首页| 亚洲欧洲日韩综合| 国产丝袜丝视频在线观看| 国产精品污视频| 久久人搡人人玩人妻精品 | 乱人伦99久久| 亚洲午夜国产精品无卡| 九色最新网址| 国产真实乱了在线播放| 视频一本大道香蕉久在线播放| 亚洲av无码久久无遮挡| 欧美日韩国产精品综合| 午夜不卡视频| 国产欧美日韩va| 国产裸舞福利在线视频合集| 人妻精品全国免费视频| 亚洲第一综合天堂另类专| 久久亚洲黄色视频| 国产精品尤物铁牛tv| 手机在线免费不卡一区二| 国产欧美中文字幕| 92精品国产自产在线观看| 毛片最新网址| 欧美在线观看不卡| 香蕉综合在线视频91| 亚洲精品福利视频| 在线精品亚洲国产| 国产精品刺激对白在线| 欧美97色| 久久青草精品一区二区三区| 在线国产91| 美女国产在线| 99精品免费欧美成人小视频| 亚洲啪啪网| 国产清纯在线一区二区WWW| 天天综合网在线| 亚洲无码高清视频在线观看 | 欧美日韩在线第一页| 午夜国产大片免费观看| a毛片在线播放| 成人夜夜嗨| 18禁高潮出水呻吟娇喘蜜芽| 久久特级毛片| 久久99国产乱子伦精品免| 欧美一级在线| 欧美人人干| 青青草欧美| 欧美一级在线| 日韩视频免费| 香港一级毛片免费看| 亚洲综合久久成人AV| a级毛片在线免费| 五月婷婷导航| 免费无码网站| 欧美国产综合视频| 手机在线免费不卡一区二|