c 並行程式設計

2021-07-31 11:12:57 字數 1263 閱讀 5077

本部落格將看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為主,將來肯定會涉及到異構計算。希望寫這些筆記記錄我的修煉歷程。目前的學習目標及就是掌握將偏微分方程組的差分形式稠密化。對將來的看法 主要的方向是平行計算的程式開發。希...