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 |