MIC簡介
一:MIC是什么?
(一)MIC是架構名稱-Intel Many Integrated Core(Intel集成眾核)
(二)眾核協處理器(Co-Processor)
--通過PCIE與CPU通信
--眾核、重核
(三)基於x86架構和x86指令集
二:MIC特性
MIC卡:
最高61 cores
主頻1.2GHz
244 Threads 但是最多能開240個線程,有4個線程跑OS
最高內存容量16GB,內存帶寬352GB/s
單卡雙精度峰值性能>1.2TFLOPS
MIC Core的組成
X86架構普通指令單元
512bit向量寬度VPU
內嵌LinuxOS,可配置IP地址
通用的編程模型、語言和工具鏈
編程模型:MPI、OpenMP、OpenCl
編程語言:C、C++、Fortran
編程工具:vtune、MPITrace
編程庫:MKL
編譯器:icc/icpc/ifort
三:為什么要使用MIC?
(一)並行計算式未來發展趨勢
通用架構並行
--同構多核並行(粗粒度)
--異構眾核並行(細粒度)
CPU+GPU異構協同計算
CPU+MIC異構協同計算
(二)MIC技術優勢
1.微異構架構:開發和維護一份代碼,單節點資源最大化利用(CPU和MIC,不需要像GPU一樣重新編譯)
2.高性能與低功耗
3.軟件編程高效
MIC編程模式:
MIC五種應用模式
--串行+並行模式
並行度不高
CPU hosted
--串行+高並行模式
Offload(常用)
--對稱模式(Symmetric模式)
進程並行(MPI)
--高並行+串行模式
MIC hosted
CPU co-processed
--高並行模式(Native模式)
MIC hosted
GPU只支持offload模式(串行+高並行模式)
4.前期快速移植
(1)MIC移植:offload模式
--引語方式,類似OpenMP,不需要重寫代碼
--沿用原有OpenMP、MPI、OpenCL編程模型
Main()
{ double pi=0.0f;long i;
#pragma offload target (mic)
#pragma omp parallel for reduction(+:pi)
for(i=0;i<N;i++)
{
double t=(double)((i+0.5)/N);pi+=4.0/(1.0+t*t);
}
printf(“pi=%f\n”,pi/N);
}
(2)GPU移植:offload模式
--采用新的CUDA編程模型,程序需要重寫
--需要烤爐線程索引,數據映射等細節
5.編程復用性:CPU和MIC公用代碼
6.工具鏈豐富
7.計算規模易擴展
(四)什么時候使用MIC
適合MIC的應用
使用前提:完全擁有源代碼(必須):軟件自身源碼+數學庫源碼
應用所具備的特征
--高度並行
並行度帶到百級,最好千級以上
並行效率較高,線程可擴展性好,能擴展到200以上線程並行
--計算密集型應用,F/B高
計算/PCIE傳輸比例高,計算能掩蓋PCIE輸出
計算時間/訪存時間高,沒現成內存帶寬較低
--SIMD模式,熱點算法為向量化計算,向量化程度高
--數據可分塊處理,突破MIC容量的瓶頸
--訪存可實現連續,L1/L2Cache命中率高(局部性原理)
(MIC VS GPU)MIC和GPU的比較
算法特性 |
MIC |
GPU |
細粒度並行密集計算 |
ok |
ok |
並發性比較低 |
滿足200個並行線程 線程+指令級並行 |
需要改變算法,增加並行性 |
多邏輯分支(if..else) |
ok |
嚴重影響性能,需要設計並行算法來去除分支 |
大程序,復雜的結構 |
ok(用引語就好) |
移植和優化周期長 |
並行外設方案,熱分散 |
ok |
no |