1. 程式人生 > 實用技巧 >平行計算初步認識

平行計算初步認識

簡介

平行計算是現代計算機的基礎。每個公司每個產品應用,如果能衝鋒利用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

三種並行方式

  1. 資料並行(Data parallelization)
    • 例如音訊流,如果一整段音訊處理不快的話,分段處理
  2. 結構並行(Instruction parallelization)
    • 常規操作,A去巴拉巴拉,B去巴拉巴拉
  3. 資訊流並行(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

  1. OpenCL – official site:http://www.khronos.org/opencl/

  2. Intel OpenCL: http://software.intel.com/en-us/articles/intel-opencl-sdk/

  3. NVIDIA OpenCL: https://developer.nvidia.com/cuda-zone

  4. AMD OpenCL: http://www.amd.com/us/products/technologies/stream-technology/opencl/Pages/opencl.aspx