混合架構超算并行程序設計與應用 課件【ch05】神威異構眾核程序設計_第1頁
混合架構超算并行程序設計與應用 課件【ch05】神威異構眾核程序設計_第2頁
混合架構超算并行程序設計與應用 課件【ch05】神威異構眾核程序設計_第3頁
混合架構超算并行程序設計與應用 課件【ch05】神威異構眾核程序設計_第4頁
混合架構超算并行程序設計與應用 課件【ch05】神威異構眾核程序設計_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

“新工科建設之路·計算機類專業(yè)系列教材混合架構超算并行程序設計與應用神威異構眾核程序設計第五章01神威超算及編程環(huán)境概述神威超算及編程環(huán)境概述神威超算的背景及歷史近年來,神威系列超算一直秉承自主創(chuàng)新的發(fā)展方針。2011年推出的“神威藍光”超算成為國內首個全部采用國產(chǎn)處理器和系統(tǒng)軟件構建的千萬億次計算機系統(tǒng)。2015年,“神威·太湖之光”超算系統(tǒng)落戶國家超級計算無錫中心,如圖5-1所示。神威·太湖之光超算由國家并行計算機工程技術研究中心研制,安裝了40960個我國自主研發(fā)的申威26010(SW26010)眾核處理器。神威超算及編程環(huán)境概述神威超算的背景及歷史神威超算及編程環(huán)境概述神威超算的背景及歷史新一代神威超算是神威·太湖之光的繼承者,不僅采用了4200萬內核的國產(chǎn)處理器在Linpack基準測試中,峰值性能更是達到每秒1.3百億億次,比現(xiàn)在全球排名第一的美國超算Frontier更強。在2022年的世界超算TOP500榜單上,神威·太湖之光以93.1PFLOPS的性能排名第六,第一由美國橡樹嶺國家實驗室新近推出的Frontier超算摘得。而我國的新一代神威超算理論上在2021年就完成了E級計算,性能上超越Frontier,但是未參與TOP500排名。神威超算及編程環(huán)境概述神威·太湖之光超算架構互連系統(tǒng)由計算網(wǎng)絡、存儲網(wǎng)絡和管理網(wǎng)絡組成,實現(xiàn)不同類型節(jié)點之間的數(shù)據(jù)傳輸。計算網(wǎng)絡采用自主研發(fā)的神威網(wǎng)絡芯片組,實現(xiàn)了高帶寬、低延遲通信;存儲網(wǎng)絡采用神威網(wǎng)絡技術進行存儲;管理網(wǎng)絡采用以太網(wǎng)協(xié)議連接系統(tǒng)的所有節(jié)點和管理單元。維護系統(tǒng)提供系統(tǒng)配置與管理、實時狀態(tài)監(jiān)控、運行環(huán)境實時監(jiān)控與診斷等功能,覆蓋了計算、互連、存儲、電力、冷卻、系統(tǒng)服務、運行環(huán)境等多個硬件架構部分。神威·太湖之光超算架構神威超算及編程環(huán)境概述電力系統(tǒng)采用基于高壓整流的三級直流電源轉換方式冷卻系統(tǒng)負責為主機、存儲、動力系統(tǒng)等提供良好的冷卻條件,提供高效的冷卻技術,包括液冷、熱管傳導、風冷和混合冷卻。SW26010處理器采用片上融合的異構眾核架構(如圖5-3所示)使用64位自主SW64指令系統(tǒng)。神威·太湖之光超算架構神威超算及編程環(huán)境概述在編程模式上,神威超算主從核之間的交互支持OpenACC和加速線程庫Athread。其中最常使用的是Athread庫,如圖5-4所示,類似于Pthread線程庫,Athread庫使用Spawn方式啟動從核任務,使用Join方式等待從核任務結束。神威·太湖之光超算架構神威超算及編程環(huán)境概述新一代神威超算架構新一代神威超算的計算能力由國產(chǎn)的多核SW26010P處理器提供,該處理器包括6個核組(CG)與SW26010類似,每個核組包括1個管理核心(MPE)和1個運算核心簇(CPE簇),如圖5-5所示。每個SW26010P處理器由390個處理單元組成。在2021年的戈登貝爾獎獲得者的研究中,他們在新一代神威超算上,共使用了107520個SW26010P處理器,并行規(guī)模達到了前所未有的41932800個核心。神威超算及編程環(huán)境概述新一代神威超算架構神威超算及編程環(huán)境概述1.swgcc編譯器swgcc編譯器是一款基于GCC編譯器的為神威眾核處理器配備的底層基礎編譯器,是SACA編程環(huán)境的重要組成部分,是連接神威眾核處理器與應用程序的橋梁,稱為國產(chǎn)眾核基礎編譯器。在SW26010上,支持的編譯器有swgcc和sw5c/sw5CC兩種,對后者的支持要完善一些,而對swgcc的支持較不完善。但是到了新一代神威平臺上,編譯工具鏈全部都切換到swgcc上了。神威編程環(huán)境神威超算及編程環(huán)境概述2.使用說明國產(chǎn)眾核基礎編譯器支持C、C++、FORTRAN語言,并且通過選項區(qū)別支持主核和從核代碼生成,如表5-1所示。編譯器新增動態(tài)鏈接功能,用于支持人工智能類應用對動態(tài)編譯及運行的需求,提升系統(tǒng)的通用性。神威編程環(huán)境神威超算及編程環(huán)境概述訪存層次1.gds/gst訪存gds/gst是離散訪存,在從核端可以通過主存的地址直接從主存中調取數(shù)據(jù)或者向主存存儲數(shù)據(jù)。這種方式的優(yōu)點是編程方便,不用以LDM作為數(shù)據(jù)緩存:缺點是速度慢、延遲高。一般適用于傳輸少量的數(shù)據(jù)(如配置),對大量的數(shù)據(jù)訪問需求,建議使用DMA+LDM進行訪問。神威超算及編程環(huán)境概述訪存層次2.DMA+LDM訪存DMA(DirectMemoryAccess)是直接內存訪問。從核可以發(fā)起DMA操作實現(xiàn)LDM與主存之間的數(shù)據(jù)傳輸,提高從核訪問主存的效率。對LDM上的數(shù)據(jù),一般用“__thread_local”修飾符進行修飾。3.LDM共享(僅SW26010P)神威眾核芯片一個核組內的存儲分為位于主核的主存和每個從核私有的位于每個從核的LDM。神威超算及編程環(huán)境概述訪存層次編程時,從核函數(shù)棧空間默認位于主存中,在運行時加-b選項可以將??臻g設置到LDM內。從核LDM空間可劃分為私有空間、連續(xù)共享空間和從核數(shù)據(jù)Cache空間三部分,三部分空間分檔可調,LDM使用時各空間的劃分如圖5-7所示。02神威眾核編程神威眾核編程眾核程序結構為適應神威異構眾核架構,SACA采用異構加速編程模式。SACA程序由主核程序和從核程序組成,主核程序運行在運算控制核心(主核)上,負責數(shù)據(jù)和加速任務的分配與管理;從核程序運行在運算核心(從核)上,實現(xiàn)對核心功能模塊的加速。主核程序采用SACA運行時,Athread的相關接口對加速線程任務進行管理操作,根據(jù)接口功能的不同,加速線程任務將會在一個或多個線程陣列上執(zhí)行。線程任務啟動后,主核可以繼續(xù)運行其他串行代碼;而調用加速線程任務回收接口后,就將等待從核陣列完成加速任務的執(zhí)行。神威眾核編程眾核程序結構一個神威眾核程序通常由三部分組成,如下所述。1.主函數(shù)主函數(shù)運行眾核加速前的主程序,運行在純主核上,調用神威主核函數(shù)進行眾核加速。神威眾核編程眾核程序結構2.神威主核函數(shù)神威主核函數(shù)聲明從核函數(shù),設置從核函數(shù)參數(shù),將從核函數(shù)Spawn到從核陣列上并開始從核陣列計算。從核陣列計算開始后,主核函數(shù)等待所有從核陣列完成計算并退出,在主核函數(shù)啟動從核陣列后等待從核陣列計算完成期間,主核函數(shù)可以執(zhí)行與從核陣列異步執(zhí)行的在主核運行的代碼。3.神威從核函數(shù)神威從核函數(shù)是由主核函數(shù)Spawn到從核上由從核異步執(zhí)行的函數(shù)。神威眾核編程從核函數(shù)從核執(zhí)行單獨編寫的從核函數(shù),主核函數(shù)將同一個從核函數(shù)Spawn到從核陣列上的每個從核,由從核進行計算,從核支持C和FORTRAN,也支持簡單的C++。主核函數(shù)Spawn從核函數(shù)時,可以將一個主存地址以參數(shù)的方式傳遞給從核函數(shù);當需要向從核函數(shù)傳遞多個參數(shù)時,可以將多個參數(shù)聲明為一個結構體,在主核函數(shù)中創(chuàng)建結構體變量并對其賦值,Spawn時將結構體變量的地址以參數(shù)的方式傳遞給從核函數(shù),從而實現(xiàn)向從核函數(shù)傳遞多個參數(shù)。神威眾核編程第一個并行程序1.第一個眾核程序矩陣乘法對結果是8x8維的矩陣,有兩種方式。第一種,通過串行進行處理,通過循環(huán)分別對每一行的值和每一列的值進行計算。加入每一列或每一行進行計算需要1ms,那么整體計算的時間將是64ms。第二種,將矩陣分成64個分塊,每個從核計算1個分塊。同樣每個從核計算時間為1ms,在不考慮從核和主核之間通信的情況下,整體的計算時間僅僅需要1ms即可。神威眾核編程第一個并行程序矩陣并行計算,理論上通過使用更多的硬件資源可以減少計算的時間,但這會引入從核和主核之間的通信開銷。以矩陣C=AxB為例,運用并行計算的思想,將矩陣C二維分成64個分塊,每個從核計算1個分塊,每個從核計算與C分塊相關的4的1塊行和B的1塊列,如圖5-9所示。神威眾核編程示例:stencil計算優(yōu)化stencil的計算是有限差分方法的核心內容,是偏微分方程等工程領域的重要基礎。首先,分析數(shù)據(jù)依賴及計算模式。如圖5-10所示,當計算更新當前格點上的數(shù)據(jù)時需要其本身及上、下、左、右各兩個格點的值,如果更新二維數(shù)組(矩陣)的一行數(shù)據(jù)則需要用到與其相鄰的一共5行數(shù)據(jù)。神威眾核編程示例:stencil計算優(yōu)化然后,考慮從核計算的一種可能的任務劃分方法,一個CPE負責更新一行的值。此時對應從核需要加載5行數(shù)據(jù),并在計算完成后需要寫回1行數(shù)據(jù)??紤]讓每個CPE計算連續(xù)的tile行,則CPE需要加速tie+4行數(shù)據(jù)并一共寫tile行數(shù)據(jù)。一般的并行方式是采用LDM作為中間緩存,先將計算所需的數(shù)據(jù)復制到LDM中,再讓CPE計算。計算結果也保存在LDM中,在所有tile行都計算完成后再寫回,或者計算完一行就寫回一行。神威眾核編程示例:stencil計算優(yōu)化最后,我們考慮較少地利用從核LDM空間而采用計算完一行就寫回一行結果的策略。這里,首先通過矩陣總行數(shù)row,計算出CPE需要計算的輪次loop_num;然后按輪次計算tile行的形式,計算加載數(shù)據(jù)的起始地址A_host_start和計算結果的起始地址A_new_host;接著采用athread_get()(DMA的方式)加載數(shù)據(jù)并等待數(shù)據(jù)加載完成。加載完成后,即開始計算;并在一行計算完成后,通過athread_put()(DMA的方式)將計算結果寫回主存。03神威SIMD神威SIMD1.標量與向量標量:運算粒度為單個元素。向量:運算粒度為一組有序的標量。以單精度浮點數(shù)為例的標量和向量示意圖如圖5-11所示。SIMD簡介神威SIMD一條向量運算指令等價于一個由標量運算構成的小循環(huán),它們完成的都是數(shù)組的加法操作,向量運算相當于將循環(huán)展開,用一條向量加法指令就能完成對4個標量數(shù)據(jù)的處理。這就是單指令流多數(shù)據(jù)流的含義,既可以有效減少中間的重復指令,又可以降低循環(huán)間的控制相關性。SIMD簡介神威SIMD2.向量化改寫的一般步驟對兩個從核函數(shù)中的標量計算段進行向量化改寫,首先將循環(huán)分裂,把一組標量數(shù)據(jù)賦給向量擴展類型的變量;然后將所有標量運算改為向量運算;最后在計算完畢后,把存儲結果的向量展開并賦值到指定標量數(shù)組中,流程如圖5-14所示。SIMD簡介神威SIMDSIMD簡介3.向量化常用的運算操作例如,SW26010部分支持flatv4數(shù)據(jù)類型的向量運算操作如表5-2所示。神威SIMDSIMD簡介在使用向量運算的過程中,還需要注意有沒有額外的優(yōu)化空間。例如,多次重復的計算可以用一個中間變量暫存,消除幾余計算,減少計算次數(shù);觀察有沒有可以用到乘加融合部件進行優(yōu)化的計算,如果存在一些計算,在不影響計算結果的前提下,調整計算順序可以變?yōu)樾稳鏪+/-](A[+/-]B)*C的形式,就用單條(負)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論