MPI runtime weird example

Jul 29, 2024 at 8:58pm
Hi guys,

I have a weird mpi example where I don't understand the used runtimes.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
#include <mpi.h>
#include <chrono>
#include <cmath>

void compute(int iterations) {
    double sum = 0.0;
    for (long i = 0; i < iterations; ++i) {
        sum += std::sin(i) * std::cos(i);
    }
    std::cout << "Computation result: " << sum << std::endl; // Optional: Just to use the result and avoid optimization
}

int main(int argc, char *argv[]) {
    MPI_Init(&argc, &argv); // Initialize MPI
    MPI_Comm comm = MPI_COMM_WORLD;
    int rank, nr_proc;
    MPI_Comm_rank(comm, &rank);
    MPI_Comm_size(comm, &nr_proc);

    long N = atol(argv[1]); // Number of iterations for computation

    auto start = std::chrono::high_resolution_clock::now();

    compute(N); // Perform the computation

    auto end = std::chrono::high_resolution_clock::now();
    std::chrono::duration<double> duration = end - start;
    std::cout << "Process " << rank << " took " << duration.count() << " seconds." << std::endl;

    MPI_Finalize(); // Finalize MPI
    return 0;
}


Running this with mpirun --oversubscribe -n 1 mpi_test.exe 1000000000 prints a runtime of 28s.
But running it with `-n 5` yields
1
2
3
4
5
6
7
8
9
10
Computation result: -0.133023
Process 3 took 36.1116 seconds.
Computation result: -0.133023
Process 4 took 36.3062 seconds.
Computation result: -0.133023
Process 1 took 55.0856 seconds.
Computation result: -0.133023
Process 0 took 55.2955 seconds.
Computation result: -0.133023
Process 2 took 64.1076 seconds.


Why do some processes need so much more time to do the same thing? My CPU has 12 logical cores.

edit:
Apparently, my CPU has 2 performance cores (allowing hyperthreading) and 8 efficiency cores with no hyperthreading.

But then I would expect the 4 processes to have the same runtime. These are the processes run on the hyperthreads of the 2 performance cores. Only the last process should run slower.
Last edited on Jul 29, 2024 at 9:17pm
Jul 29, 2024 at 10:53pm
its hard to know what is really going on with caches, other processes, the os scheduler, and so on.
Topic archived. No new replies allowed.