如何在 CLion 中处理 OpenMPI 项目
OpenMPI 是 消息传递接口 (MPI) 库的一个开源实现,该标准旨在支持高性能并行计算。 OpenMPI 结合了多个 MPI 项目的技术和资源。
本教程将指导您完成设置、构建、运行和调试 OpenMPI 项目的步骤。 这些说明是通用的,您可以将它们应用到您的源代码中。 为了说明这些步骤,我们使用了一个包含 OpenMPI 函数的简单 C++ 应用程序。 这些说明是针对在 macOS 上工作的情况给出的。
0. 开始前:在系统中安装 OpenMPI 开始之前:在您的系统上安装 OpenMPI
1. 在 CLion 中创建一个新项目
从主菜单中选择 或在欢迎屏幕上点击 新项目。

在左侧窗格中,选择项目类型(在我们的示例中为 C++ 可执行文件)。
提供项目位置并设置语言标准。
点击 创建。
CLion 将生成一个 Stub CMake 项目:

2. 添加您的源文件
将您的源文件复制到项目文件夹。
在我们的示例中,文件是 openmpi_test.cpp 和 openmpi_test.h 。 如果您想将它们用作示例,请复制粘贴以下代码,或者使用您自己的文件:
#include <mpi.h> #include <cstdio> void print_processors() { // Initialize the MPI environment MPI_Init(nullptr, nullptr); // Get the number of processes int world_size; MPI_Comm_size(MPI_COMM_WORLD, &world_size); // Get the rank of the process int world_rank; MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); // Get the name of the processor char processor_name[MPI_MAX_PROCESSOR_NAME]; int name_len; MPI_Get_processor_name(processor_name, &name_len); // Print off a hello world message printf("Hello world from processor %s, rank %d out of %d processors\n", processor_name, world_rank, world_size); // Finalize the MPI environment. MPI_Finalize(); }#ifndef OPENMPI_TEST_OPENPMI_HELLO_H #define OPENMPI_TEST_OPENPMI_HELLO_H void print_processors(); #endif //OPENMPI_TEST_OPENPMI_HELLO_H#include "openmpi_test.h" int main() { print_processors(); return 0; }此时,新文件尚未添加到 CMake 项目结构中,OpenMPI 代码无法被 IDE 识别:

将文件添加到 CMake。
要添加单个文件,请点击通知栏中的 添加到 CMake 项目。
要添加多个文件,请在项目树中选择它们,并从上下文菜单中调用 添加到 CMake 项目。
选择目标,CLion 将自动添加文件:

3. 调整 CMakeLists.txt 并加载项目
打开 CMakeLists.txt 文件并进行以下更改:
在
add_executable之前添加此行:find_package(MPI REQUIRED)在
add_executable之后添加此行:target_link_libraries(<your_project_name> PRIVATE MPI::MPI_CXX)CMakeLists.txt 内容示例:
cmake_minimum_required(VERSION 3.25) project(openmpi_test) set(CMAKE_CXX_STANDARD 17) # Add MPI Package to Project find_package(MPI REQUIRED) add_executable(openmpi_test main.cpp openmpi_hello.cpp) # Link MPI libraries target_link_libraries(openmpi_test PRIVATE MPI::MPI_CXX)当您在 CMakeLists.txt 中进行更改时,CLion 会显示一个图标,提示重新加载项目结构。 点击它或按快捷键:

CMake 重新加载和项目构建应成功完成:

如果有错误,请仔细检查您的 CMakeLists.txt 和您的 OpenMPI 安装。
您可以在 cmake-构建-debug 文件夹中找到二进制文件(或者在您更改的其他构建位置中):

4。 构建您的程序
使用以下选项之一:
从主菜单调用 。
有关此操作的更多信息,请参阅 构建操作。
CLion 会为 CMakeLists.txt 中检测到的每个目标自动创建一个类型为 CMake Application 的配置。
要使用配置构建目标,请在切换器中选择它,然后点击锤子图标或按 Ctrl+F9:

5. (可选)配置 CMake 配置文件
在 CMake 配置文件 设置中,您可以调整构建选项、环境变量、构建目录和其他参数。
转到 。
在此对话框中,您可以编辑配置文件设置并创建/删除配置文件。 有关更多信息,请参阅 CMake 配置文件。

项目配置文件列在配置切换器中。 在构建 CMake 配置之前,请确保选择所需的配置文件。

5. 运行应用程序
OpenMPI 程序应在特殊启动器下运行, mpiexec、 mpirun 或 orterun (用于在 OpenMPI 中执行串行和并行作业的同义词)。 要使用所需的程序参数调用它们,请使用 CLion 的 Shell 脚本 配置。
在主菜单中,进入 .
点击
并选择 Shell 脚本:

调整配置设置:
编辑配置名称。
在 执行: 中,选择 脚本文本。
在 脚本文本 中,指定运行程序的命令。
在我们的示例中,它是
mpiexec -n 4 ./cmake-build-debug/openmpi_test

保存设置,然后在切换器中选择新创建的配置并点击
或按 Shift+F10。

您的程序应成功启动。 CLion 将在 终端 工具窗口中显示输出:

6。 通过附加到进程进行调试
为了在 CLion 中调试 OpenMPI 应用程序,您需要先启动它,然后将调试器附加到每个正在运行的进程。
通过点击所需行左侧的边距,在代码中放置 断点。
在每个断点之前添加以下代码片段:
int i = 0; while (!i) sleep(5);在
sleep(5);行上放置一个断点。
使用 或 使用配置 重新构建。
确保选择了 Debug 配置文件。
运行 Shell Script 配置。 在切换器中选择它,然后点击
或按 Shift+F10。

按 Ctrl+Alt+F5 或从主菜单中选择 。
在打开的对话框中,搜索您想要附加的进程,然后点击 附加方式...。

在 调试工具窗口 的变量窗格中,选择
i并按 F2 。 设置一个非零值:
像往常一样继续调试。
附加调试器后,您可以使用所有 CLion 的调试功能,例如 不同类型的断点、 单步操作、 内存 和 反汇编 视图、 表达式求值 等。

重复步骤 6-9 以调试另一个进程。