OpenMP程式設計要素

2021-06-22 10:07:08 字數 1597 閱讀 1989

編譯制導指令格式:

#pragma omp 功能指令 [子句[, 子句]...]

功能指令:

parallel用於**塊之前,建立並行域,並將**塊分配到並行域所有執行緒並行執行

for用於for迴圈前,將迴圈分配到並行域執行緒並行執行

parallel for 用於for迴圈前,建立並行域並將迴圈分配到並行域執行緒並行執行

sections用於多個**塊的並行執行,各個**塊用section指令標出

parallel sections

single用在並行域內,僅單個執行緒執行

cirtical用於臨界區之前,每次只有乙個執行緒進入臨界區

flush保證各個執行緒的資料一致

barrier同步

atomic原子操作

master僅主線程執行

threadprivate指定變數為執行緒專有

子句:

private執行緒私有變數(副本)

firstprivate同上,並用主線程同名變數初始化

lastprivate同private,並將執行緒變數值複製回主線程同名變數中

reduction指定規約運算

nowait忽略隱含同步

num_threads指定並行域內線程數量

schedule任務分配排程型別

shared執行緒間共享的變數

ordered指定for並行域內**,按序列迴圈次序執行

copyprivate配合single,將指定執行緒的專有變數廣播到其它執行緒的同名變數

copyinthreadprivate型別變數需要用主線程同名變數初始化

default

omp_in_parallel是否在並行域內

omp_get_thread_num返回執行緒號

omp_set_num_threads設定執行緒數量

omp_get_num_threads

omp_get_max_threads返回並行域可用的最大執行緒數目

omp_get_max_procs返回處理器個數

omp_get_dynamic動態改變執行緒數目

omp_set_dynamic

omp_get_nested並行巢狀

omp_set_nested

omp_init(_nest)_lock初始化(巢狀)鎖

omp_destroy(_nest)_lock

omp_set(_nest)_lock

omp_unset(_nest)_lock

omp_test(_nest)_lock非阻塞加鎖

omp_get_wtime獲取wall time時間

omp_set_wtime

omp_schedule與同名函式意義相同

omp_num_threads

omp_dynamic

omp_nested

OpenMP 程式設計指南

2 openmp並行程式設計 二 1 fork join並行執行模式的概念 2 openmp指令和庫函式介紹 3 parallel 指令的用法 4 for指令的使用方法 5 sections和section指令的用法。閱讀全文 3 openmp中的資料處理子句 本文主要介紹了openmp中的priv...

Openmp程式設計練習

include stdio.h include omp.h include 使用sleep 函式需要包含此標頭檔案 int num omp lock t lock int getnum void chushou int i int main omp destroy lock lock return ...

OpenMP並行程式設計(一)

openmp並行程式設計 一 openmp是乙個支援共享儲存並行設計的庫,特別適宜多核cpu上的並行程式設計。今天在雙核cpu機器上試了一下openmp並行程式設計,發現效率方面超出想象,因此寫出來分享給大家。在vc8.0中專案的屬性對話方塊中,左邊框裡的 配置屬性 下的 c c 下的 語言 頁裡,...