使用 MPI 时,parallel eclipse 无法识别处理器的真实数量

parallel eclipse does not recognize true number of processors when using MPI

我有以下代码,当使用 eclipse 2020.12 执行时,输出是这样的:“Hello from rank 0 out of 1”

#include <iostream>
#include <mpi.h>
using namespace std;

int main(int argc, char* argv[])
{

    MPI_Init(&argc, &argv);

    int rank;
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);

    int size;
    MPI_Comm_size(MPI_COMM_WORLD, &size);
    int data;

    if (rank > 0) {

        MPI_Recv(&data, 1, MPI_INT, rank-1, 0, MPI_COMM_WORLD,MPI_STATUS_IGNORE);
                cout << "Rank "<< rank<< " has received message with data " << data
                        << " from rank " << rank-1
                        << endl;
    }

    cout << "Hello from rank " << rank<< " out of " << size<< endl;

    if (rank < size-1) {
        data = rank*rank;

        MPI_Send(&data, 1, MPI_INT, rank+1, 0, MPI_COMM_WORLD);
    }

    MPI_Finalize();
    return 0;
}

但是,当我使用以下命令通过命令行执行此操作时,它按预期工作

mpic++ -o name name.cpp
mpiexec -np 4 ./name

它显示 4 hello ,这是我的核心数。我想知道为什么 eclipse 无法识别,但具有另一种执行方式的 sampe cpp 文件工作正常!输出将是:

Hello from rank 0 out of 4
Rank 1 has received message with data 0 from rank 0
Hello from rank 1 out of 4
Rank 2 has received message with data 1 from rank 1
Hello from rank 2 out of 4
Rank 3 has received message with data 4 from rank 2
Hello from rank 3 out of 4

转到项目并:

  • 用第二个鼠标按钮单击
  • select Run As > Run Configurations
  • select 并行应用程序
  • 用第二个鼠标按钮单击
  • 点击新配置
  • 点击新建配置
  • 点击资源
  • 来自“目标系统配置”下拉菜单select 例如“通用远程交互”
  • 在连接类型 select 本地(因为您将 运行 在本地运行 eclipse)

  • 切换到点击应用程序
  • 在应用程序中输入你mpi的路径运行 例如 /usr/bin/mpirun

  • 终于切换到 Arguments
  • application argument中传递参数“-np 4”

  • 点击运行

从并行应用程序模板创建新的 运行 配置。在 Resources 选项卡上,将 Target System Configuration 设置为 Generic OpenMPI InteractiveGeneric MPICH2 Interactive 取决于您的 MPI 实现是源自 Open MPI 还是 MPICH。将 连接类型 设置为 本地 。然后在基本选项选项卡中设置进程数。

切换到应用程序选项卡并将可执行文件的路径放入应用程序。只需单击它旁边的 Browse 按钮并导航到 DebugRelease 目录和 select 那里的可执行文件。

运行 按钮现在应该变成蓝色,您可以按下它了。