- 安装 MPI 环境:在 Windows 上,最主流的选择是 Microsoft MPI (MS-MPI)。
- 配置开发环境:将 MPI 的头文件和库文件路径集成到你的 C 语言开发环境中(这里以 Visual Studio 为例,因为它对 MS-MPI 支持最好)。
- 编写 "Hello World" MPI 程序:一个最简单的例子来验证环境是否配置成功。
- 编译和运行 MPI 程序:使用 MPI 的编译和运行命令。
- 进阶与资源:提供更多学习资源和高级主题。
第 1 步:安装 MPI 环境 (Microsoft MPI)
Microsoft MPI 是微软官方支持的 MPI 实现,与 Windows 系统集成度高,是 Windows 平台上的首选。

-
下载 MS-MPI SDK
- 访问 Microsoft MPI 官方下载页面:https://aka.ms/msmpisdk
- 你会看到一个名为
Microsoft MPI SDK的安装程序,下载它。
-
安装 MS-MPI SDK
- 运行下载的安装程序(
MicrosoftMPI_SDK_x64.msi)。 - 按照安装向导的提示完成安装,默认安装路径通常是
C:\Program Files (x86)\Microsoft SDKs\MPI。 - 安装程序会自动将
C:\Program Files (x86)\Microsoft SDKs\MPI\Bin\添加到系统的PATH环境变量中,这样你就可以在命令行中直接使用mpiexec命令了。
- 运行下载的安装程序(
-
验证安装
- 打开一个新的 命令提示符 (CMD) 或 PowerShell 窗口。
- 输入以下命令:
mpiexec
- 如果安装成功,你会看到
mpiexec的帮助信息,而不是 "'mpiexec' 不是内部或外部命令..." 这样的错误提示。
第 2 步:配置开发环境 (以 Visual Studio 2025/2025 为例)
虽然你可以用任何文本编辑器写代码,然后用命令行编译,但在 Visual Studio 中配置会方便得多。
-
安装 Visual Studio
- 确保你安装了 Visual Studio。Community 版本是免费的,并且完全足够。
- 在安装 Visual Studio 时,请确保勾选了 “使用 C++ 的桌面开发” (Desktop development with C++) 工作负载,这个工作负载包含了 C/C++ 编译器,这对于编译 MPI 程序是必需的。
-
配置项目属性
-
打开 Visual Studio,创建一个新的 C++ 空项目 (Visual C++ -> Windows Desktop -> Console App)。
-
在 解决方案资源管理器 中,右键点击你的项目,选择 “属性” (Properties)。
-
在弹出的属性页中,确保顶部的 “配置” 是 “所有配置 (All Configurations)”,“平台” 是 “x64”,MPI 程序通常在 64 位系统上运行。
-
配置包含目录 (Include Directories)
- 在左侧导航栏中,展开 “配置属性” (Configuration Properties) -> “C/C++” -> “常规” (General)。
- 找到 “附加包含目录” (Additional Include Directories)。
- 点击下拉框,选择 “编辑” (Edit...)。
- 添加 MS-MPI 的头文件路径:
C:\Program Files (x86)\Microsoft SDKs\MPI\Include如果你的 Visual Studio 是 32 位的,可能需要添加
C:\Program Files\Microsoft SDKs\MPI\Include,但通常我们都用 64 位编译器。
-
配置库目录 (Library Directories)
- 在左侧导航栏中,展开 “配置属性” (Configuration Properties) -> “链接器” (Linker) -> “常规” (General)。
- 找到 “附加库目录” (Additional Library Directories)。
- 点击下拉框,选择 “编辑” (Edit...)。
- 添加 MS-MPI 的库文件路径:
C:\Program Files (x86)\Microsoft SDKs\MPI\Lib\x64同样,根据你的平台选择
x64或x86目录。
-
配置链接器输入 (Linker Input)
- 在左侧导航栏中,展开 “配置属性” (Configuration Properties) -> “链接器” (Linker) -> “输入” (Input)。
- 找到 “附加依赖项” (Additional Dependencies)。
- 点击下拉框,选择 “编辑” (Edit...)。
- 添加 MS-MPI 的核心库文件:
mpi.lib
-
你的 Visual Studio 项目已经配置好,可以用来编译 MPI 程序了。
第 3 步:编写 "Hello World" MPI 程序
这是一个经典的 MPI 程序,它会显示每个进程的编号和总进程数。
- 在 Visual Studio 项目中,找到
main.c文件(或你创建的.c文件),将以下代码粘贴进去:
// main.c
#include <mpi.h>
#include <stdio.h>
int main(int argc, char** argv) {
// 1. 初始化 MPI 环境
// MPI_Init 会解析 argc 和 argv,并启动 MPI 执行环境
MPI_Init(&argc, &argv);
// 2. 获取当前进程的编号(Rank)
// Rank 是一个从 0 到总进程数-1 的整数,用于标识每个进程
int world_rank;
MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
// 3. 获取 MPI 通信域中的总进程数
int world_size;
MPI_Comm_size(MPI_COMM_WORLD, &world_size);
// 4. 打印 "Hello World" 消息
// 每个进程都会打印自己的信息
printf("Hello from process %d of %d\n", world_rank, world_size);
// 5. 终止 MPI 环境
// MPI_Finalize 会清理所有 MPI 资源
MPI_Finalize();
return 0;
}
第 4 步:编译和运行 MPI 程序
在 Visual Studio 中,直接按 F5 或 Ctrl+F5 运行程序,它只会使用一个进程(因为你的本地机器只有一个 "节点"),为了看到 MPI 的并行效果,你必须使用 mpiexec 命令。
在 Visual Studio 中运行 (推荐)
-
设置启动命令
- 右键点击项目,选择 “属性” (Properties)。
- 在左侧导航栏中,展开 “配置属性” (Configuration Properties) -> “调试” (Debugging)。
- 在 “命令” (Command) 字段中,输入
mpiexec。 - 在 “参数” (Arguments) 字段中,输入
-n 4 "$(TargetPath)"。-n 4:告诉mpiexec启动 4 个进程,你可以根据你的 CPU 核心数来修改这个数字。$(TargetPath):这是 Visual Studio 的宏,会自动替换为你的可执行文件的完整路径(C:\...\x64\Debug\YourProject.exe)。
-
运行程序
- 现在按
F5或点击 “本地 Windows 调试器” 按钮。 - Visual Studio 会调用
mpiexec来启动你的程序,你应该会在 “输出” (Output) 窗口中看到类似下面的结果(顺序可能不同):
Hello from process 1 of 4 Hello from process 0 of 4 Hello from process 3 of 4 Hello from process 2 of 4你会看到 4 行 "Hello" 输出,分别对应 4 个不同的进程。
- 现在按
在命令行中编译和运行
如果你想不依赖 Visual Studio IDE 进行编译,可以使用命令行。
-
打开 x64 Native Tools 命令提示符
在 Windows 开始菜单中,搜索 "x64 Native Tools Command Prompt for VS 2025" (或你安装的 VS 版本),这个终端已经预设好了所有编译环境和库路径。
-
编译代码
- 使用
cl.exe编译器进行编译。cl.exe是 Visual Studio 的 C/C++ 编译器。 - 假设你的代码文件是
main.c,在终端中运行:cl main.c /link mpi.lib
- 这会生成一个
main.exe文件。
- 使用
-
运行程序
- 使用
mpiexec命令运行生成的可执行文件:mpiexec -n 4 main.exe
- 你会看到和在 Visual Studio 中运行时一样的输出结果。
- 使用
第 5 步:进阶与资源
常见 MPI 函数简介
MPI_Send和MPI_Recv:MPI 最核心的两个函数,用于进程间的点对点通信,一个进程发送数据,另一个进程接收数据。MPI_Bcast:广播函数,一个进程(根进程)将数据发送到通信域中的所有其他进程。MPI_Scatter和MPI_Gather:分散和聚集函数。Scatter将一个数组中的数据分散到各个进程中,每个进程获得一部分。Gather则是相反的操作,将各个进程的数据收集到一个数组中。MPI_Reduce:归约函数,对各个进程提供的数据进行某种操作(如求和、求最大值等),并将最终结果存放在一个指定的进程中。
学习资源
-
官方文档
- Microsoft MPI 文档: https://docs.microsoft.com/en-us/message-passing-interface/microsoft-mpi
- MPI 论坛: https://www.mpi-forum.org/ (MPI 标准的制定者)
-
在线教程
- Introduction to High-Performance Computing for Scientists and Engineers: 这本书有免费的在线版本,其中的 MPI 部分非常经典。
- YouTube 上的教程: 搜索 "MPI tutorial C" 或 "MPI for beginners",有很多优秀的视频教程。
-
更多例子
可以在 GitHub 上搜索 "MPI examples C",找到大量开源的示例代码。
在 Windows C 语言下使用 MPI 的标准流程是:
- 安装 Microsoft MPI SDK。
- 配置 Visual Studio 项目的包含目录、库目录和附加依赖项。
- 编写 C 代码,并包含
mpi.h头文件。 - 使用
mpiexec -n N your_program.exe来运行程序,以启动 N 个并行进程。
掌握了这个流程,你就可以开始在 Windows 平台上进行 C 语言的 MPI 并行编程了。
