Accéder au contenu.
Menu Sympa

starpu-devel - Re: [starpu-devel] [StarPU-MPI: no dedicated thread for communication; function to set MPI_THREAD_MULTIPLE]

Objet : Developers list for StarPU

Archives de la liste

Re: [starpu-devel] [StarPU-MPI: no dedicated thread for communication; function to set MPI_THREAD_MULTIPLE]


Chronologique Discussions 
  • From: Maxim Abalenkov <maxim.abalenkov@gmail.com>
  • To: Philippe SWARTVAGHER <philippe.swartvagher@inria.fr>
  • Cc: starpu-devel@inria.fr
  • Subject: Re: [starpu-devel] [StarPU-MPI: no dedicated thread for communication; function to set MPI_THREAD_MULTIPLE]
  • Date: Thu, 12 Sep 2024 13:00:40 +0100
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=maxim.abalenkov@gmail.com; spf=Pass smtp.mailfrom=maxim.abalenkov@gmail.com; spf=None smtp.helo=postmaster@mail-wm1-f53.google.com
  • Ironport-data: A9a23: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 gSRD7MC6Ihp5ayfNHB6CenExn6pbk8xMg==
  • Ironport-hdrordr: A9a23:woaht6ghwnqjn1/lJ8yDXPaCwXBQXvcji2hC6mlwRA09TyVXrb HXoB17726QtN91YhsdcL+7Sc+9qB/nhP1ICMwqTM6ftXfdyQmVxfBZnO/fKlTbckWUltK1l5 0QCZSWYOeQMbEQt7ec3ODXKada/DBFysyVbCXlokuFgTsEV0gZ1XYFNu9TKCNLeDU=
  • Ironport-phdr: A9a23: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 WS/
  • Ironport-sdr: 66e2d7f5_scVARjCTT7RSSwUw4Fe+IFG3GKGJvuALAObkd0UAY7V0HtL SYX9dytF1wdumzrEmLTKj0Rw78lfQG7xZFCSDxg==

Hello Philippe et al.,

How are you? Thank you for your reply.

Have also a look on all possible environment variables to configure StarPU execution, especially STARPU_MPI_NOBIND=1 (cf https://files.inria.fr/starpu/testing/master/doc/html/ExecutionConfigurationThroughEnvironmentVariables.html#mpiConf).

I think STARPU_MPI_NOBIND=1 should help in my case. I expect to have very little communication in my code. That’s why I would like to avoid reserving a core for MPI communication only. I will try that.

But, IMO, StarPU+MPI on Mac will give you poor performance anyway, so it doesn't really matter if you have +/- 1 core used for computations (for prototyping, for instance)…

Do you know, what is the reason for that? Why does StarPU-MPI perform badly on a Mac? 

I have my code in StarPU for shared-memory and StarPU-MPI. I would like to run a simple performance comparison test between these two versions. Can you please confirm my logic? To run StarPU-MPI on a single node using only this node’s cores, I set the number of StarPU CPUs equal to the number of MPI. For example to have four MPI processes each running on a dedicated CPU core I will run my code as

  STARPU_NCUDA=0 STARPU_NOPENCL=0 STARPU_NCPU=4 mpiexec -np 4 ./code

Is that right? Thank you and have a great day ahead!

Best wishes,
Maxim

Maxim Abalenkov \\ maxim.abalenkov@gmail.com
+44 7 486 486 505 \\ www.maxim.abalenkov.uk

On 11 Sep 2024, at 15:36, Philippe SWARTVAGHER <philippe.swartvagher@inria.fr> wrote:

Hello,

Le 11/09/2024 à 13:28, Maxim Abalenkov a écrit :
1) I would like StarPU-MPI to use all available threads for computation (i.e. avoid to have a dedicated thread for MPI communication). To achieve that I create a StarPU configuration structure and set the variable ‘reserve_ncpu = 0’.
    // ensure StarPU does not reserse CPUs solely for MPI communication
    struct starpu_conf conf = {.reserve_ncpus = 0};
    int status = starpu_conf_init(&conf);
    STARPU_CHECK_RETURN_VALUE(status, "starpu_conf_init");
    // initialise StarPU MPI
    status = starpu_mpi_init_conf(&argc, &argv, 1, MPI_COMM_WORLD, &conf);
    STARPU_CHECK_RETURN_VALUE(status, "starpu_mpi_init_conf");
    starpu_mpi_comm_rank(MPI_COMM_WORLD, &rank);
    starpu_mpi_comm_size(MPI_COMM_WORLD, &np);
However, when I print out timing results for each CPU worker I see only seven workers:
Worker CPU 0…

Worker CPU 6…
Am I creating the StarPU configuration incorrectly or is this (the hardware) reality of the Apple M2 CPU?

Hmm, looking at code, everything happens here : https://gitlab.inria.fr/starpu/starpu/-/blob/master/mpi/src/starpu_mpi_init.c?ref_type=heads#L366

So to avoid reserving a core for the MPI thread, you should either:
- set on which core / hyperthread the MPI thread will be bound (but it will fight with a worker thread, unless you use STARPU_WORKERS_CPUID or STARPU_WORKERS_COREID to tell StarPU not to bind a worker on this core)
- set STARPU_MPI_DRIVER_CALL_FREQUENCY to a strictly positive value, but this will disable the MPI thread, and communication work will be done only between compute tasks (is it something you want?)

Have also a look on all possible environment variables to configure StarPU execution, especially STARPU_MPI_NOBIND=1 (cf https://files.inria.fr/starpu/testing/master/doc/html/ExecutionConfigurationThroughEnvironmentVariables.html#mpiConf).

But, IMO, StarPU+MPI on Mac will give you poor performance anyway, so it doesn't really matter if you have +/- 1 core used for computations (for prototyping, for instance)...


2) Many StarPU-MPI examples use MPI_THREAD_MULTIPLE to allow multiple simultaneous calls to MPI library. In the examples, the value is set by calling ‘MPI_Init_thread()’. As I understand it is defined in various ‘helper.h’ files in the ‘tests’ directory. Is there a convenient StarPU API function to set ‘MPI_THREAD_MULTIPLE'? I tried including these helper header files. But I immediately face the errors of being unable to find “common/config.h”.

I guess common/config.h is just available inside the StarPU sources, not when you link with StarPU as an external library.

I think the best way to initialize MPI through StarPU is to call starpu_mpi_init{_conf}() with the argument initialize_mpi=1 to let StarPU call MPI_Init_thread() itself. Again, have a look on the documentation: https://files.inria.fr/starpu/testing/master/doc/html/MPISupport.html#MPIInitialization


--
Philippe SWARTVAGHER
Assistant Professor @ ENSEIRB-MATMECA
Research team Topal @ Inria Bordeaux-Sud Ouest




Archives gérées par MHonArc 2.6.19+.

Haut de le page