Hello, On Saturday 12 May 2007 11:25, Sefa Arslan wrote: > I need to use rank of the mpi processes in my sub functions ( c > language). which one has more cost?; > creating a new variable& and finding the rank in each sub function by: > int mpi_rank; > MPI_Comm_rank(MPI_COMM_WORLD,&mpi_rank); > or finding the rank in main function once, and every time sending > this information to the functions in function arguments like > foo(a,b,c,mpi_rank); Depends how often You call this function, too. But You ommitted another solution, so let's see: 1.) Calling MPI_Comm_rank involves: - Overhead of calling the function MPI_Comm_rank - Overhead of checking the communicator (in case of --enable-debug), - (otherwise, only the inline function ompi_comm_rank is evaluated as comm->c_my_rank).
2.) Calling MPI_Comm_rank once and pass the rank as parameter: - Clutters Your function parameters... 3.) Keep the mpi_rank of MPI_COMM_WORLD as global variable. The latter would be the fastest; although not possibly the nicest solution; if You already have a structure keeping init-once variables, this would be the place to keep... Hope, this helps. With best regards, Rainer -- ---------------------------------------------------------------- Dipl.-Inf. Rainer Keller http://www.hlrs.de/people/keller High Performance Computing Tel: ++49 (0)711-685 6 5858 Center Stuttgart (HLRS) Fax: ++49 (0)711-685 6 5832 POSTAL:Nobelstrasse 19 email: kel...@hlrs.de ACTUAL:Allmandring 30, R.O.030 AIM:rusraink 70550 Stuttgart