openmp環境變數和庫函式

2021-06-08 10:22:12 字數 1411 閱讀 3926

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

gccgcc -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的環境變數及庫函式

openmp的環境變數 環境變數 描述 示例 omp schedule 控制for迴圈任務分配結構的排程 omp schedule guided,2 omp num threads 設定預設執行緒的個數 omp schedule 4 openmp的庫函式 函式名稱 描述int omp get num...

OpenMP的環境變數

openmp的環境變數 環境變數 描述示例 omp schedule 控制for迴圈任務分配結構的排程 omp schedule guided,2 omp num threads 設定預設執行緒的個數 omp schedule 4 openmp的庫函式 函式名稱 描述int omp get num ...

設定openMP環境變數

openmp在windows環境下比較容易實現,只要開啟vs2008中的編譯選項 openmp,設定一下環境變數omp num threads就可以了。一般是新建乙個c 專案,以次選擇project alt f7 屬性 配置屬性 configuration property c c 語言 langu...