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...