MPI
注意,MPI是多进程的。
1.在程序中加入MPI支持:
加入头文件mpi.h,并在程序开头做初始化,退出时,关闭MPI。
2.编译:
c文件用mpicc编译,c++文件用mpicxx编译。如:
$ mpicxx how_to_use_mpi.cpp -o how_to_use_mpi
3.运行:
mpirun使用mpi运行程序,-n参数指定进程数:
$ mpirun -n 4 ./how_to_use_mpi
OpenMP
1. 在C/C++和Fortran中,都有编译器支持OpenMP,不需要额外安装。注意,OpenMP是多线程的。
2.以c文件为例,介绍OpenMP的编程使用:
#include <stdio.h>
#ifdef _OPENMP
#include <omp.h>
#endif
int main() {
#pragma omp parallel
printf("is parallel ! \n");
printf("is sequential \n");
}
3.编译:
$ gcc -fopenmp omp.c -o omp
-fopenmp编译选项告诉编译器,编译omp.c时,要传入宏_OPENMP。
3.运行:
指定线程数,这里使用4个线程:
$ export OMP_NUM_THREADS=4
可以看到#pragma omp parallel后面紧跟的一句指令执行了4次。如果不止一条指令,可以用{}指定。
参考: