OpenMP编程要素

编译制导指令

编译制导指令格式:

#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,将指定线程的专有变量广播到其它线程的同名变量

copyin threadprivate类型变量需要用主线程同名变量初始化

default


API函数

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)