c++eclipseparallel-processingmpiprocessors

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


I have the following code that when executed with eclipse 2020.12, the output is this: "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;
}

But, when I execute this through command line with following commands, it works as expected

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

it shows 4 hello , which is number of my cores. I was wondering why eclipse cannot recognize but the sampe cpp file with another way of execution works fine! and the output will be :

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

Solution

  • Create a new run configuration from the Parallel Application template. On the Resources tab, set Target System Configuration to Generic OpenMPI Interactive or Generic MPICH2 Interactive based on whether your MPI implementation derives from Open MPI or MPICH. Set Connection Type to Local. Then set the number of processes in the Basic Options tab.

    enter image description here

    Switch to the Application tab and put the path to the executable file in Application program. Just click the Browse button next of it and navigate to either Debug or Release directory and select the executable there.

    enter image description here

    The Run button should now turn blue and you can press it.

    enter image description here