本部落格將看c++並行程式設計的例子
1. 執行緒程序原理
執行緒是輕量級的程序,乙個程序可以擁有多個執行緒。
編譯多執行緒程式加入
g++ -lphread
2. openmp庫加速
2.1 openmp庫加速配置及hello,world
事實上有個openmp庫,可以實現單台cpu的加速
windows下使用vs
configuration properties->c/c++->language->openmp support,在下拉列表裡選擇yes。然後才能使用openmp
並行**為例,只需要把相應的行注釋掉,就是序列**了
預設情況下,並行區內執行緒數=系統中核的個數
在linux下使用g++即可
#include #include "omp.h"
int main()
g++ test.cpp
./a.out
輸出乙個
g++ -fopenmp test.cpp
./a.out
輸出12個,預設為cpu的邏輯核數(=cpu塊數*cpu物理核數*(開啟超執行緒*2))
export omp_num_threads=6
./a.out
輸出6個
一旦採用了openmp,執行緒數量就將由編譯器來決定(而不是您),因此無論執行緒數量如何,重要的是使程式能夠正常執行
2. 實戰測試
#include #include #include #include //乙個簡單的耗時任務
double sum0(double* data,long data_count);
int main()
double sum0(double* data,long data_count)
endtime = clock();
cout << "totle time : " <<(double)(endtime - starttime) / (clocks_per_sec*1000) << "ms" << endl;
return 0;
}
在linux上執行能看到結果
[1] linux下檢視核數
[2] windows下檢視核數
[3] windows下openmp的配置
[4] linux下openmp程式設計基礎
[5] c++並行與分布式程式設計[書籍]
C 非同步程式設計 並行程式設計
c 裡多執行緒程式設計寫法有很多種,這裡記錄三種。thread 算是比較常用的寫法,出來時間也比較早,一般分帶引數和不帶引數兩種寫法 thread thread1 new thread new threadstart threadmethod1 不帶引數 thread1.start thread t...
C 並行程式設計 PLINQ
實列 console.writeline hello world console.writeline 當前計算機處理器數 environment.processorcount concurrentqueueproducts new concurrentqueue 向集合中新增多條資料 可以修改資料量...
c 並行程式設計 平行計算筆記 001
平行計算筆記 001 安裝mpi,openmp動力 需要用高效能計算求解微分方程,這也將是我這接下來三年的學習方向之一。目前以mpi為主,將來肯定會涉及到異構計算。希望寫這些筆記記錄我的修煉歷程。目前的學習目標及就是掌握將偏微分方程組的差分形式稠密化。對將來的看法 主要的方向是平行計算的程式開發。希...