OpenMP是把程序中的循環操做分給電腦的各個CPU處理器並行進行。好比說我要循環運行100次,個人電腦有兩個處理器,那OpenMP就會平均分給兩個處理器並行運行,每一個處理器運行50次。
使用方法
1. 在工程中的解決方案資源管理器中,工程右鍵——屬性——配置屬性——C/C++——語言,把其中的OpenMP支持設置爲是。
2. 在代碼中添加頭文件:spa
#include <omp.h>
3. 在須要並行的for循環代碼上添加代碼code
#pragma omp parallel for for(int i=0;i<50;i++) { }
另外,用int num=omp_get_num_procs();獲取能夠使用的處理器個數。
結果
在四個處理器的電腦上,未使用以前,每一個處理器的使用率大概在35%左右,使用後,使用率能夠達到90%多,運行時間減小42.66%。
在八個處理器的電腦上,未使用以前,每一個處理器的使用率大概在30%左右,使用後,使用率能夠達到100%左右,運行時間減小76.63%。
注意
1. 使用OpenMP後,循環運行不是按順序運行的,好比在循環中打印i的值,就會發現打印出來的值不是按順序打印的。
2. 使用OpenMP時,循環的次數必須是肯定的。
3. for循環中的操做必須是肯定的,也就是說不論i值是多少,均可以確切運行循環中的操做,好比不能出現a[i]=a[i-1]+a[i+1]之類的操做。
4. 注意循環中的內存處理,不要有衝突。blog