什么是 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 系统的多个开源和商业编译器。
广告