OpenMP基础东西

我的梦境 提交于 2020-11-19 05:44:11

经历了一段时间的对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设置室友允许嵌套并行

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!