Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: Re: [OMPI users] curious behavior during wait for broadcast: 100% cpu
From: Ralph Castain (rhc_at_[hidden])
Date: 2010-12-08 10:35:23


I know we have said this many times - OMPI made a design decision to poll hard while waiting for messages to arrive to minimize latency.

If you want to decrease cpu usage, you can use the yield_when_idle option (it will cost you some latency, though) - see ompi_info --param ompi all

Or don't set affinity and we won't be as aggressive - but you'll lose some performance

Choice is yours! :-)

On Dec 8, 2010, at 8:08 AM, Hicham Mouline wrote:

> Hello,
>
> on win32 openmpi 1.4.3, I have a slave process that reaches this pseudo-code and then blocks and the CPU usage for that process stays at 25% all the time (I have a quadcore processor). When I set the affinity to 1 of the cores, that core is 100% busy because of my slave process.
>
> main()
> {
> ....
> .....
> MPI_ISEND
>
> std::cout<< "about to get broadcast"<<std::endl;
> MPI_Bcast of an integer
> std::cout<< " broadcast received"<<std::endl;
> ...
> }
>
> The first printout is seen but not the next which makes me thing the process is inside the MPI_Bcast call. Should the CPU be 100% busy while this call is waiting for the broadcast message to arrive?
>
> Any ideas? below the output of ompi-info:
> ------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Package: Open MPI
> Distribution
> Open MPI: 1.4.3
> Open MPI SVN revision: r23834
> Open MPI release date: Oct 05, 2010
> Open RTE: 1.4.3
> Open RTE SVN revision: r23834
> Open RTE release date: Oct 05, 2010
> OPAL: 1.4.3
> OPAL SVN revision: r23834
> OPAL release date: Oct 05, 2010
> Ident string: 1.4.3
> Prefix: C:/Program Files/openmpi
> Configured architecture: x86 Windows-5.1
> Configure host: LC12-003-D-055A
> Configured by: hicham.mouline
> Configured on: 18:07 19/11/2010
> Configure host:
> Built by: hicham.mouline
> Built on: 18:07 19/11/2010
> Built host:
> C bindings: yes
> C++ bindings: yes
> Fortran77 bindings: no
> Fortran90 bindings: no
> Fortran90 bindings size: na
> C compiler: C:/Program Files/Microsoft Visual Studio
> 9.0/VC/bin/cl.exe
> C compiler absolute: C:/Program Files/Microsoft Visual Studio
> 9.0/VC/bin/cl.exe
> C++ compiler: C:/Program Files/Microsoft Visual Studio
> 9.0/VC/bin/cl.exe
> C++ compiler absolute: C:/Program Files/Microsoft Visual Studio
> 9.0/VC/bin/cl.exe
> Fortran77 compiler: CMAKE_Fortran_COMPILER-NOTFOUND
> Fortran77 compiler abs: none
> Fortran90 compiler:
> Fortran90 compiler abs: none
> C profiling: yes
> C++ profiling: yes
> Fortran77 profiling: no
> Fortran90 profiling: no
> C++ exceptions: no
> Thread support: no
> Sparse Groups: no
> Internal debug support: no
> MPI parameter check: runtime
> Memory profiling support: no
> Memory debugging support: no
> libltdl support: no
> Heterogeneous support: no
> mpirun default --prefix: yes
> MPI I/O support: yes
> MPI_WTIME support: gettimeofday
> Symbol visibility support: yes
> FT Checkpoint support: yes (checkpoint thread: no)
> MCA backtrace: none (MCA v2.0, API v2.0, Component v1.4.3)
> MCA paffinity: windows (MCA v2.0, API v2.0, Component v1.4.3)
> MCA carto: auto_detect (MCA v2.0, API v2.0, Component v1.4.3)
> MCA maffinity: first_use (MCA v2.0, API v2.0, Component v1.4.3)
> MCA timer: windows (MCA v2.0, API v2.0, Component v1.4.3)
> MCA installdirs: windows (MCA v2.0, API v2.0, Component v1.4.3)
> MCA installdirs: env (MCA v2.0, API v2.0, Component v1.4.3)
> MCA installdirs: config (MCA v2.0, API v2.0, Component v1.4.3)
> MCA crs: none (MCA v2.0, API v2.0, Component v1.4.3)
> MCA dpm: orte (MCA v2.0, API v2.0, Component v1.4.3)
> MCA pubsub: orte (MCA v2.0, API v2.0, Component v1.4.3)
> MCA allocator: basic (MCA v2.0, API v2.0, Component v1.4.3)
> MCA allocator: bucket (MCA v2.0, API v2.0, Component v1.4.3)
> MCA coll: basic (MCA v2.0, API v2.0, Component v1.4.3)
> MCA coll: hierarch (MCA v2.0, API v2.0, Component v1.4.3)
> MCA coll: self (MCA v2.0, API v2.0, Component v1.4.3)
> MCA coll: sm (MCA v2.0, API v2.0, Component v1.4.3)
> MCA coll: sync (MCA v2.0, API v2.0, Component v1.4.3)
> MCA mpool: rdma (MCA v2.0, API v2.0, Component v1.4.3)
> MCA mpool: sm (MCA v2.0, API v2.0, Component v1.4.3)
> MCA pml: ob1 (MCA v2.0, API v2.0, Component v1.4.3)
> MCA bml: r2 (MCA v2.0, API v2.0, Component v1.4.3)
> MCA btl: self (MCA v2.0, API v2.0, Component v1.4.3)
> MCA btl: sm (MCA v2.0, API v2.0, Component v1.4.3)
> MCA btl: tcp (MCA v2.0, API v2.0, Component v1.4.3)
> MCA topo: unity (MCA v2.0, API v2.0, Component v1.4.3)
> MCA osc: pt2pt (MCA v2.0, API v2.0, Component v1.4.3)
> MCA osc: rdma (MCA v2.0, API v2.0, Component v1.4.3)
> MCA iof: hnp (MCA v2.0, API v2.0, Component v1.4.3)
> MCA iof: orted (MCA v2.0, API v2.0, Component v1.4.3)
> MCA iof: tool (MCA v2.0, API v2.0, Component v1.4.3)
> MCA oob: tcp (MCA v2.0, API v2.0, Component v1.4.3)
> MCA odls: process (MCA v2.0, API v2.0, Component v1.4.3)
> MCA rmaps: round_robin (MCA v2.0, API v2.0, Component v1.4.3)
> MCA rmaps: seq (MCA v2.0, API v2.0, Component v1.4.3)
> MCA rml: ftrm (MCA v2.0, API v2.0, Component v1.4.3)
> MCA rml: oob (MCA v2.0, API v2.0, Component v1.4.3)
> MCA routed: binomial (MCA v2.0, API v2.0, Component v1.4.3)
> MCA routed: linear (MCA v2.0, API v2.0, Component v1.4.3)
> MCA plm: process (MCA v2.0, API v2.0, Component v1.4.3)
> MCA errmgr: default (MCA v2.0, API v2.0, Component v1.4.3)
> MCA ess: env (MCA v2.0, API v2.0, Component v1.4.3)
> MCA ess: hnp (MCA v2.0, API v2.0, Component v1.4.3)
> MCA ess: singleton (MCA v2.0, API v2.0, Component v1.4.3)
> MCA ess: tool (MCA v2.0, API v2.0, Component v1.4.3)
> MCA grpcomm: basic (MCA v2.0, API v2.0, Component v1.4.3)
>
> regards,
>
> _______________________________________________
> users mailing list
> users_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/users