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: keller_at_[hidden]
ACTUAL:Allmandring 30, R.O.030 AIM:rusraink
70550 Stuttgart
|