include("../../include/msg-header.inc"); ?>
From: Rainer Keller (keller_at_[hidden])
Date: 2007-05-12 09:58:11
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