在Linux中用C语言进行OpenMP并行程序设计
·············································································································
今天聊一聊OpenMP并行程序中的常见指令、库函数和指令总结
1、OpenMP并行程序运行原理
OpenMP并行程序主要是进行计算机上的并行程序设计而使用的,通过parallel等指令运行的,实际上,OpenMP就是编译器指令和库函数的集合。
OpenMP运行模式是fork/join模式,即在程序尚未进入并行区域时,仅是有主线程,当进入并行区域后,就产生其他并行的线程运行,在并行区域未结束前,主线程的串行部分不会运行,要等并行线程结束后才继续运行主线程剩余部分。
2、OpenMP并行程序目标、优点
OpenMP的编译器指令的目标及优点主要有:
- 产生一个并行区域;
- 划分线程中的代码块;
- 在线程之间分配循环迭代;
- 序列化代码段;
- 同步线程间的工作
3、OpenMP并行程序常见指令
OpenMP并行程序指令的格式如下:
#pragma omp 指令 [子句[子句]…]
···········································································································
【总结】OpenMP并行程序常见指令有如下:
- parallel:用在一个代码段之前,表示这段代码将被多个线程并行执行;
- for:用于for循环之前,将循环分配到多个线程中并行执行,以实现任务分担,必须保证每次循环之间无相关性;
- parallel for:parallel 和 for语句的结合,也是用在一个for循环之前,表示for循环的代码将被多个线程并行执行,它同时具有并行域的产生和任务分担两个功能;
- sections&#x