Thanks, Gilles. Some more questions: 1. how does Open MPI define the priorities of the different collective components? what criteria is based on? 2. how does a MPI collective function (MPI_Barrier for example) choose the exact algorithm it use? based on message size, and communicator size? any other factors? 3. when does MPI_Barrier choose the algorithm? in ompi_mpi_init? or every time the API program calls the MPI_barrier? 4. all the MPI collective functions follow the same procedure to choose algorithms in the API program? It would be great if you can point out some main OMPI files and functions that are involved in the process. Dahai
On Tuesday, October 6, 2015 1:08 AM, Gilles Gouaillardet <gilles.gouaillar...@gmail.com> wrote: at first, you can check the priorities of the various coll modules with ompi_info $ ompi_info --all | grep \"coll_ | grep priority MCA coll: parameter "coll_basic_priority" (current value: "10", data source: default, level: 9 dev/all, type: int) MCA coll: parameter "coll_inter_priority" (current value: "40", data source: default, level: 9 dev/all, type: int) MCA coll: parameter "coll_libnbc_priority" (current value: "10", data source: default, level: 9 dev/all, type: int) MCA coll: parameter "coll_ml_priority" (current value: "0", data source: default, level: 9 dev/all, type: int) MCA coll: parameter "coll_self_priority" (current value: "75", data source: default, level: 9 dev/all, type: int) MCA coll: parameter "coll_sm_priority" (current value: "0", data source: default, level: 9 dev/all, type: int) MCA coll: parameter "coll_tuned_priority" (current value: "30", data source: default, level: 6 tuner/all, type: int) coll_tuned_priority likely the collective module you will be using. then you can check the various ompi_coll_tuned_*_intra_dec_fixed functions in ompi/mca/coll/tuned/coll_tuned_decision_fixed.c this is how the tuned collective module selects algorithms based on communicator size and message size. Cheers, Gilles On Sun, Oct 4, 2015 at 11:12 AM, Dahai Guo <dahaiguo2...@yahoo.com> wrote: > Thanks, Jeff. I am trying to understand in detail how Open MPI works in the > run time. What main functions does it call to select and initialize the coll > components? Using the "helloworld" as an example, how does it select and > initialize the MPI_Barrier algorithm? which C functions are involved and > used in the process? > > Dahai > > > > On Friday, October 2, 2015 7:50 PM, Jeff Squyres (jsquyres) > <jsquy...@cisco.com> wrote: > > > On Oct 2, 2015, at 2:21 PM, Dahai Guo <dahaiguo2...@yahoo.com> wrote: >> >> Is there any way to trace open mpi internal function calls in a MPI user >> program? > > Unfortunately, not easily -- other than using a debugger, for example. > >> If so, can any one explain it with an example? such as helloworld? I >> build open MPI with the VampirTrace options, and compile the following >> program with picc-vt,. but I didn't get any tracing info. > > Open MPI is a giant state machine -- MPI_INIT, for example, invokes slightly > fewer than a bazillion functions (e.g., it initializes every framework and > many components/plugins). > > Is there something in particular that you're looking for / want to know > about? > >> Thanks >> >> D. G. >> >> #include <stdio.h> >> #include <mpi.h> >> >> >> int main (int argc, char **argv) >> { >> int rank, size; >> >> MPI_Init (&argc, &argv); >> MPI_Comm_rank (MPI_COMM_WORLD, &rank); >> MPI_Comm_size (MPI_COMM_WORLD, &size); >> printf( "Hello world from process %d of %d\n", rank, size ); >> MPI_Barrier(MPI_COMM_WORLD); >> MPI_Finalize(); >> return 0; >> } >> >> _______________________________________________ >> devel mailing list >> de...@open-mpi.org >> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel >> Link to this post: >> http://www.open-mpi.org/community/lists/devel/2015/10/18125.php > > > -- > Jeff Squyres > jsquy...@cisco.com > For corporate legal information go to: > http://www.cisco.com/web/about/doing_business/legal/cri/ > > > > _______________________________________________ > devel mailing list > de...@open-mpi.org > Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel > Link to this post: > http://www.open-mpi.org/community/lists/devel/2015/10/18138.php