什么是 OpenMP?


OpenMP是一组编译器指令,也是为 C、C++ 或 FORTRAN 中编写的程序设计的 API,可为共享内存环境中的并行编程提供支持。OpenMP 将并行区域标识为可能并行运行的代码块。应用程序开发者在并行区域中向其代码插入编译器指令,这些指令指示 OpenMP 运行时库并行执行该区域。以下 C 程序演示了包含 printf() 语句的并行区域上方的编译器指令 −

#include <omp.h>
#include <stdio.h>
int main(int argc, char *argv[]){
   /* sequential code */
   #pragma omp parallel{
      printf("I am a parallel region.");
   }
   /* sequential code */
   return 0;
}

当 OpenMP 遇到指令时

#pragma omp parallel

它将创建任意数量的线程,这些线程是系统中的处理内核。因此,对于双核系统,将创建两个线程,对于四核系统将创建四个线程,依此类推。然后所有线程将同时执行并行区域。当每个线程退出并行区域时,它将终止。OpenMP 提供了多个其他指令,用于并行运行代码区域,包括并行化循环。

除了提供用于并行化的指令之外,OpenMP 还允许开发者在多种并行级别之间进行选择。比如,他们可以手动设置线程数。它还允许开发者识别数据在各线程之间是共享的,还是私有的。OpenMP 可用于 Linux、Windows 和 Mac OS X 系统的多个开源和商业编译器。

更新日期:2019-10-11

7K+ 浏览量

开启你的职业生涯

完成课程即可获得认证

就开始
广告