j***@gmail.com
2008-10-31 20:14:34 UTC
Hi there,
I am writing an application where the master process needs to take a
long time to load some large files first. During this time, the other
processes have nothing to do but wait. So I have a MPI_Barrier() at
the end of the loading. What is happening in my runs on a shared
memory opteron Linux machine (four quad core chips) is that not only
the master process but some of the slave processes as well are taking
100% of CPU usage. I think this is caused by the busy waiting (spin
waiting, polling) of the Waiting functions of MPI. This feature may be
very efficient for most of MPI applications but wasted a lot of CPU
time for other users on the same machine. So I am wondering if there
is a way to let the slave nodes sleep while waiting.
I did some research and found that IBM MPI has the MP_WAIT_MODE and
the SUPER-UX MPI/XS library has MPISUSPEND to choose the waiting mode,
either polling or sleeping. I am using the MPICH2 library on a linux
platform. I am wondering if there is something I can use to achieve
the same purpose.
Thank you very much.
Shi
I am writing an application where the master process needs to take a
long time to load some large files first. During this time, the other
processes have nothing to do but wait. So I have a MPI_Barrier() at
the end of the loading. What is happening in my runs on a shared
memory opteron Linux machine (four quad core chips) is that not only
the master process but some of the slave processes as well are taking
100% of CPU usage. I think this is caused by the busy waiting (spin
waiting, polling) of the Waiting functions of MPI. This feature may be
very efficient for most of MPI applications but wasted a lot of CPU
time for other users on the same machine. So I am wondering if there
is a way to let the slave nodes sleep while waiting.
I did some research and found that IBM MPI has the MP_WAIT_MODE and
the SUPER-UX MPI/XS library has MPISUSPEND to choose the waiting mode,
either polling or sleeping. I am using the MPICH2 library on a linux
platform. I am wondering if there is something I can use to achieve
the same purpose.
Thank you very much.
Shi