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

Reply via email to