平行計算初步認識
阿新 • • 發佈:2020-11-28
簡介
平行計算是現代計算機的基礎。每個公司每個產品應用,如果能衝鋒利用cpu的多核效能,將會給人以不同的感受
主要使用openmp 和 opencl這兩個庫
note
平行計算
gcc 自動化平行計算編譯命令
gcc -03 -floop-parallelize-all -ftree-parallelize-loops=K -fdump-tree-parloops-details src.c
K推薦使用計算機的核心數量
intel compiler
icc -c -parallel -par-report file.cc
三種並行方式
- 資料並行(Data parallelization)
- 例如音訊流,如果一整段音訊處理不快的話,分段處理
- 結構並行(Instruction parallelization)
- 常規操作,A去巴拉巴拉,B去巴拉巴拉
- 資訊流並行(Parallelization of information flows)
- 類似於結構並行,不是特別清楚
C 多執行緒計時函式
ctime_r and localtime_r
對於openmp的支援
參考連結 https://www.cnblogs.com/lfri/p/10111315.html
編譯命令 g++ test.cpp -o test -fopenmp
Compiler name | Compiler Key OpenMp |
---|---|
Gcc | -fopenmp |
icc(Intel C/C++ compiler) | -openmp |
Sun C/C++ compiler | -xopenmp |
Visual Studio C/C++ compiler | /openmp |
PGI | -mp |
標頭檔案 #include <omp.h>
openCL
實現了簡單的CPU & GPU的並行處理
doc
-
OpenCL – official site:http://www.khronos.org/opencl/
-
Intel OpenCL: http://software.intel.com/en-us/articles/intel-opencl-sdk/
-
NVIDIA OpenCL: https://developer.nvidia.com/cuda-zone
-
AMD OpenCL: http://www.amd.com/us/products/technologies/stream-technology/opencl/Pages/opencl.aspx