OpenMP的环境变量
OpenMP的環境變量:
環境變量
描述
示例
OMP_SCHEDULE
控制for循環任務分配結構的調度
OMP_SCHEDULE=”guided,2”
OMP_NUM_THREADS
設置默認線程的個數
OMP_SCHEDULE=4
OpenMP的庫函數
函數名稱
描述
int omp_get_num_threads(void)
返回當前使用的線程個數,如果在并行區域外則返回1
int omp_set_num_threads(int i)
設置要使用的線程個數,它可以覆蓋OMP_NUM_THREADS
int omp_get_thread_num(void)
返回當前線程號,0代表主線程
int omp_get_num_procs(void)
返回可用的處理核(處理器)個數,對于支持超線程技術的處理器被算作兩個處理核
OpenMP的調度方案
調度類型
描述
static
將所有循環迭代劃分成相等大小的塊
dynamic
使用一個內部隊列,當某線程可用時,為其分配由塊大小所制定的一定數量的循環迭代
guided
與dynamic策略類似,但是塊大小開始較大,后來逐步減小。可選參數chunk指定塊大小的最小值,默認為1
runtime
運行時由OMP_SCHEDULE決定使用上面三種的哪種策略
OpenMP的編譯
平臺和編譯器
命令
windows平臺 intel C++編譯器
icl /Qopenmp
linux平臺 intel C++編譯器
icl -openmp
gcc
gcc -fopenmp
_OPENMP宏可以用來判斷OpenMP是否被支持,通過它可以寫出任何C語言編譯器(即使不支持OpenMP)都可以編譯的代碼。代碼如下所示:
ifdef _OPENMP
include
else
define omp_get_thread_num() 0
endif
Visual C++? 2008對OpenMP的支持
VC++2008根據項目屬性配置的指示進行 /openmp編譯器切換,當配置了OpenMP支持后,編譯器會提供_OPENMP定義,可以使用#ifdef _OPENMP來決定程序使用或者不使用OpenMP。配置VC++2008項目,在project的property頁面上的C/C++ -> Language 選項卡中將OpenMP Support這項設置為Yes,在需要使用OpenMP函數的cpp文件中引用#include
總結
以上是生活随笔為你收集整理的OpenMP的环境变量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ESP8266使用历程
- 下一篇: 基于网络索引树的异常轨迹检测算法