经历了一段时间的对OpenMP的研究之后,总结了OpenMP的一些基本语,和大家共享一下,相互学习
parallel for也是用在一个循环之前表示for循环的代码将被多个线程并行执行
sections 用在可能会被并行执行的代码段之前
parallel sections
critical 用在一段代码临界区之前
single用在一段只被单个线程执行的代码之前,表示后面的代码段将被单线程执行
flush用来保证线程的缓存数据和实际内存保持一致,即各个线程看到的共享变量是一致的
barrier用于并行去内代码的线程同步所有线程同步,所有线程执行到barrier是要停止,直到所有线程都执行到barrier是才往下执行
atomic 用于指定一块内存区域被自动更新
master 用于指定一段代码块有主线程执行
ordered用于指定并行区域的循环按顺序执行
thread private 用于指定一个变量是线程私有的
OpenMP的字句有以下一些
private
firstprivate
lastprivate
reduction
nowait忽略指定中暗含的等待
num_threads指定线程的个数
schedule指定如何调度for循环迭代
shared指定一个或多个变量为多个线程之间的共享变量
ordered用来指定for循环的执行要按顺序执行
copyprivate用于single指令中的指定变量为多个线程共享变量
copyin用来指定一个threadprivate的变量的值要用于主线程的值进行初始化
default用来指定并性处理区域内额变量的使用方法是shared的
omp_get_num_procs:返回多处理机的处理器个数
omp_get_num_threads返回并行区域的线程个数
omp_get_thread_num返回线程号
omp_set_num_threads设置并行执行代码的线程个数
omp_init_lock初始化一个简单锁
omp_set_lock上锁操作
omp_unset_lock解锁操作
omp_destroy_lock关闭一个锁
OpenMP的环境变量主要有四个
OMP_NUM_THREADS设置可用的最大线程数量
OMP_SCHEDULE设置调度类型一调度块大小
OMP_DYNAMIC用于设置是否允许动态改变线程数
OMP_NESTED设置室友允许嵌套并行
来源:oschina
链接:https://my.oschina.net/u/261347/blog/115045