天天看點

MIC程式設計

MIC程式設計

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

幾個問題:

1.什麼是MIC?

協處理器、加速卡

2.什麼是MIC程式設計?

讓程式運作在MIC卡上

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

并行(在衆多核心上)

4.如何并行?

應用并行庫:OpenMP、MPI、pThread、TBB……

MIC應用模式

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

MIC有5中應用模式:

   CPU原生模式

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

   CPU與MIC對等模式

   MIC為主CPU為輔模式

   MIC原生模式(native模式)

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

native模式:

什麼是native模式?

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

如何使用native模式?

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

   不能含SSE、AVX等向量化指令代碼

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

對等模式(必須是CPU的MPI程式)

什麼是對等模式?

   通過網絡在CPU和MIC端協同計算的模式

如何使用對等模式?

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

  不能含有SSE、AVX等向量化指令代碼

對等模式有哪些局限?

  通信開銷大

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

  高并發的MPI程式,内部使用多線程并行

對等模式使用方法

CPU、MPI程式

編譯兩份代碼,使用mpiicc

mpiicc  test_mpi.c  -o  tm.out

mpiicc  test_mpi.c  -o  tm.out_mic  -mmic

scp将mic端可執行程式傳到卡上

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裝置端

   作為CPU(host)的協處理器

   有獨立的儲存設備(device memory)

同時啟動大量線程進行并行計算

CPU/MIC異構協同計算模型

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

CPU“offload (解除安裝)”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端程式恢複運作------程式結束

繼續閱讀