OpenMp 個人筆記(一)

2021-06-21 11:52:21 字數 884 閱讀 1943

1先來個helloworld

noname1.c**:

#include #include #include #include void test()

clock_t t2=clock();

printf("time = %d\n",t2-t1);

}int main(int argc, char* argv)

clock_t t2= clock();

printf("total time: %d\n",t2-t1);

test();

return 0;

}

編譯的命令列:

gcc -std=c99 -fopenmp noname1.c -o hello.exe

pause

這裡要加上-fopenmp,-o可以指定輸出的檔名,預設的是a.exe。

在筆者的破機子上這個**跑出來的結果是

time=600

time=690

totaltime=700

time=660

totaltime 是兩個test並行執行的時間,最後乙個time是乙個test執行的時間,可以看到這個效果還是不錯的。關鍵我們幾乎什麼都沒乾,只不過在for迴圈上加了一條類似注釋而已。因為筆者還要寫**,靠著平行計算的名頭來忽悠畢業,所以還是先扯一點openmp的概念吧。

2 fork/join模式

openmp是的賣點是「共享式儲存」並行,筆者現在還不是非常明白她的運作機理。而所謂的fork/join模式是說要等並行程式執行完成之後才能執行後面的非並行部分,不知道這和fork,join有什麼關係? 相當於主線程建立的執行緒是不會和主線程一起並行執行的。

openmp學習筆記

pragma omp parallel僅在您指定了 fopenmp編譯器選項後才會發揮作用。在編譯期間,gcc 會根據硬體和作業系統配置在執行時生成 建立盡可能多的執行緒。每個執行緒的起始例程為 塊中位於指令之後的 這種行為是 隱式的並行化 而 openmp 本質上由一組功能強大的編譯指示組成,幫您...

OpenMP學習筆記

date 2016 02 22 author kagula environment 1 core i7 4790k 2 win10 64bits 3 vs2013 update5 4 gcc 4.4.7 centos 6.5自帶 prologue openmp適合單機多核cpu,使用非常方便。多種主...

openMP學習筆記之一 雜記

1 使用libffi啟動執行,ffi全稱foreign function inte ce,參考的介紹,2 在clang前端有很多openmp相關的處理,不僅限於openmp子資料夾,比如clang lib ast exprconstant.cpp對buildin omp is initial dev...