If you want to keep long-waiting MPI processes from clogging your CPU
pipeline and heating up your machines, you can turn blocking MPI
collectives into nicer ones by implementing them in terms of MPI-3
nonblocking collectives using something like the following.

I typed this code straight into this email, so you should validate it


#include #include <unistd.h>
const int myshortdelay = 1; /* microseconds */
const int mylongdelay = 1; /* seconds */
#define USE_USLEEP 0
#define USE_SLEEP 0

#include <sched.h>
#define USE_YIELD 0

int MPI_Bcast( void *buffer, int count, MPI_Datatype datatype, int root,
MPI_Comm comm )
  MPI_Request request;
    int rc = PMPI_Ibcast(buffer, count, datatype, root, comm, &request);
    if (rc!=MPI_SUCCESS) return rc;
  int flag = 0;
  while (!flag)
    int rc = PMPI_Test(&request, &flag, MPI_STATUS_IGNORE)
    if (rc!=MPI_SUCCESS) return rc;

    /* pick one of these... */
    cpu_relax(); /*
#warning Hard polling may not be the best idea...
  return MPI_SUCCESS;

On Sun, Oct 16, 2016 at 2:24 AM, MM <finjulh...@gmail.com> wrote:
> I would like to see if there are any updates re this thread back from
> https://mail-archive.com/users@lists.open-mpi.org/msg15154.html
> I've got 3 boxes at home, a laptop and 2 other quadcore nodes . When the
CPU is at 100% for a long time, the fans make quite some noise:-)
> The laptop runs the UI, and the 2 other boxes are the compute nodes.
> The user triggers compute tasks at random times... In between those times
when no parallelized compute is done, the user does analysis, looks at data
and so on.
> This does not involve any MPI compute.
> At that point, the nodes are blocked in a mpi_broadcast with each of the
4 processes on each of the nodes polling at 100%, triggering the cpu fan:-)
> homogeneous openmpi 1.10.3  linux 4.7.5
> Nowadays, are there any more options than the yield_when_idle mentioned
in that initial thread?
> The model I have used for so far is really a master/slave model where the
master sends the jobs (which take substantially longer than the MPI
communication itself), so in this model I would want the mpi nodes to be
really idle and i can sacrifice the latency while there's nothing to do.
> if there are no other options, is it possible to somehow start all the
processes outside of the mpi world, then only start the mpi framework once
it's needed?
> Regards,
> _______________________________________________
> users mailing list
> users@lists.open-mpi.org
> https://rfd.newmexicoconsortium.org/mailman/listinfo/users

Jeff Hammond
users mailing list

Reply via email to