MIC編程

MIC編程

(基礎部分,可參考上一篇《MIC簡介》)

幾個問題:

1.什麼是MIC

協處理器、加速卡

2.什麼是MIC編程?

讓程序運行在MIC卡上

3.如何發揮MIC卡的優勢?

並行(在衆多核心上)

4.如何並行?

應用並行庫:OpenMPMPIpThreadTBB……

 

 

MIC應用模式

MIC卡可以看作協處理器,也可以看作獨立的節點

MIC5中應用模式:

   CPU原生模式

   CPU爲主MIC爲輔模式(最常用)

   CPUMIC對等模式

   MIC爲主CPU爲輔模式

   MIC原生模式(native模式)

微異構:CPU上的某些指令放在MIC上還是有些問題的。

 

 

native模式:

什麼是native模式?

   僅在MIC卡上本地運行的模式

如何使用native模式?

   原始CPU程序,編譯時增加“-mmic”選項

   不能含SSEAVX等向量化指令代碼

native模式有什麼好處?

   簡單,無傳輸

native模式有哪些侷限?

   卡上空間有限,單核計算能力有限(應該還不如CPU

native模式適合哪種應用場景?

   簡單測試、高併發的小規模程序

 

native模式使用方式

   CPU單節點程序test_native.c

icc  test_native.c  -o  ta.out

   編譯選項增加-mmic

icc  test_native.c  -o  ta.out  -mmic

方法一:

scp將可執行程序傳到卡上

scp  ta.out  mic0:  ~/

登錄到卡上執行程序

ssh  mic0

./ta.out

遠程執行

ssh  -x  mic0  /root/ta.out

方法二:

無需將可執行程序傳到卡上

/opt/intel/mic/bin/micnativeloadex

 

 

對等模式(必須是CPUMPI程序)

什麼是對等模式?

   通過網絡在CPUMIC端協同計算的模式

如何使用對等模式?

  原始CPU程序,編譯兩個版本,其一增加”-mmic”

  不能含有SSEAVX等向量化指令代碼

對等模式有哪些侷限?

  通信開銷大

對等模式適合哪種應用場景?

  高併發的MPI程序,內部使用多線程並行

 

對等模式使用方法

CPUMPI程序

編譯兩份代碼,使用mpiicc

mpiicc  test_mpi.c  -o  tm.out

mpiicc  test_mpi.c  -o  tm.out_mic  -mmic

scpmic端可執行程序傳到卡上

scp  tm.out_mic  mic0: ~/

mic運行庫

設置環境變量export  I_MPI_MIC=enable

運行程序

mpirun  -host(主機IP)  host  -n  1  ./tm.out  : -host  mic0  -n  1

 

 

offload模式

什麼是offload模式?

  MIC作爲協處理器,負責部分運算的模式

如何使用offload模式?

  修改代碼,編寫引語,類似於OpenMP

offload模式有什麼好處?

  靈活、效率高

offload模式有哪些侷限?

  通信開銷,需要修改代碼

offload模式適合哪種應用場景?

   適合高並行加速的應用

 

offload基礎概念--主機和設備

Host-Device的定義

Host端:CPU主機端

運行串行部分

負責控制等

Device端:MIC設備端

   作爲CPUhost)的協處理器

   有獨立的存儲設備(device memory

同時啓動大量線程進行並行計算

 

CPU/MIC異構協同計算模型

Fork-join模型(一般利用此模型,計算密集型)

CPUoffload (卸載)MIC函數

MIC函數內部進行並行計算

CPU獲取MIC計算後的結果(比如說規約後的)

 

Offload模式運行流程

程序啓動,在CPU端運行主函數------程序運行到offload語句,得知接下來的代碼段要在MIC端運行------驅動程序檢測MIC卡是否存在,如果存在則調用MIC版本代碼,否則調用CPU版本代碼------(以下假設MIC卡存在)如果本次是第一次運行MIC程序,則驅動程序啓動/喚醒MIC------MIC版本代碼加載到MIC卡上------MIC端內存開闢空間,驅動程序將從數據從CPU端內存中複製到MIC端內存中------CPU端程序暫停:MIC端程序開始運行(CPU此時停下來等着)------MIC端程序段運行完成後,將數據從MIC端內存複製到CPU端內存------MIC卡回覆低功耗狀態,CPU端程序恢復運行------程序結束

 

 

發佈了31 篇原創文章 · 獲贊 11 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章