什么是 MPI 与 OpenMP?
MPI(Message Passing Interface,消息传递接口)是一种用于分布式内存系统的并行编程标准,广泛应用于集群和超级计算机。
OpenMP(Open Multi-Processing)是一种用于共享内存系统的多线程并行编程 API,适用于多核 CPU 的并行加速。
典型使用场景
- MPI:跨节点大规模科学计算、天气模拟、流体力学等。
- OpenMP:单机多核加速、图像处理、数值计算等。
简单代码示例
MPI 示例(C语言)
#include <mpi.h>
#include <stdio.h>
int main(int argc, char** argv) {
MPI_Init(&argc, &argv);
int world_rank;
MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
printf("Hello from rank %d\n", world_rank);
MPI_Finalize();
return 0;
}
OpenMP 示例(C语言)
#include <omp.h>
#include <stdio.h>
int main() {
#pragma omp parallel
{
int id = omp_get_thread_num();
printf("Hello from thread %d\n", id);
}
return 0;
}
如何选择 MPI 还是 OpenMP?
通常根据硬件架构和问题规模决定:
- 若程序运行在多台机器组成的集群上,优先使用 MPI。
- 若程序运行在单台多核服务器或 PC 上,优先使用 OpenMP。
- 也可混合使用(MPI + OpenMP)以兼顾分布式与共享内存优势。