HPCToolkit
MPI_Init.c
Go to the documentation of this file.
1
// -*-Mode: C++;-*- // technically C99
2
3
// * BeginRiceCopyright *****************************************************
4
//
5
// $HeadURL$
6
// $Id$
7
//
8
// --------------------------------------------------------------------------
9
// Part of HPCToolkit (hpctoolkit.org)
10
//
11
// Information about sources of support for research and development of
12
// HPCToolkit is at 'hpctoolkit.org' and in 'README.Acknowledgments'.
13
// --------------------------------------------------------------------------
14
//
15
// Copyright ((c)) 2002-2019, Rice University
16
// All rights reserved.
17
//
18
// Redistribution and use in source and binary forms, with or without
19
// modification, are permitted provided that the following conditions are
20
// met:
21
//
22
// * Redistributions of source code must retain the above copyright
23
// notice, this list of conditions and the following disclaimer.
24
//
25
// * Redistributions in binary form must reproduce the above copyright
26
// notice, this list of conditions and the following disclaimer in the
27
// documentation and/or other materials provided with the distribution.
28
//
29
// * Neither the name of Rice University (RICE) nor the names of its
30
// contributors may be used to endorse or promote products derived from
31
// this software without specific prior written permission.
32
//
33
// This software is provided by RICE and contributors "as is" and any
34
// express or implied warranties, including, but not limited to, the
35
// implied warranties of merchantability and fitness for a particular
36
// purpose are disclaimed. In no event shall RICE or contributors be
37
// liable for any direct, indirect, incidental, special, exemplary, or
38
// consequential damages (including, but not limited to, procurement of
39
// substitute goods or services; loss of use, data, or profits; or
40
// business interruption) however caused and on any theory of liability,
41
// whether in contract, strict liability, or tort (including negligence
42
// or otherwise) arising in any way out of the use of this software, even
43
// if advised of the possibility of such damage.
44
//
45
// ******************************************************* EndRiceCopyright *
46
47
/******************************************************************************
48
* File: MPI_Init.c
49
*
50
* Purpose: override MPI initialization to capture rank
51
*
52
* Modification history:
53
* 28 October 2007 - created - John Mellor-Crummey
54
*****************************************************************************/
55
56
57
58
/******************************************************************************
59
* standard include files
60
*****************************************************************************/
61
#include <mpi.h>
62
63
64
65
/******************************************************************************
66
* standard include files
67
*****************************************************************************/
68
#include "
name.h
"
69
70
71
72
/******************************************************************************
73
* forward declarations
74
*****************************************************************************/
75
76
static
void
remember_rank
();
77
78
79
80
/******************************************************************************
81
* interface functions
82
*****************************************************************************/
83
84
/*-----------------------------------------------------------------------------
85
* Function MPI_Init
86
* Purpose: override MPI initialization in C/C++ programs to capture MPI rank
87
*---------------------------------------------------------------------------*/
88
int
MPI_Init
(
int
*argc,
char
***argv )
89
{
90
int
retval = PMPI_Init(argc, argv);
91
92
if
(retval == MPI_SUCCESS)
remember_rank
();
93
94
return
retval;
95
}
96
97
98
/*-----------------------------------------------------------------------------
99
* Function mpi_init_
100
* Purpose: override MPI initialization in Fortran programs to capture MPI rank
101
*---------------------------------------------------------------------------*/
102
void
mpi_init_
(
int
*ierr)
103
{
104
pmpi_init_(ierr);
105
if
(*ierr == MPI_SUCCESS)
remember_rank
();
106
}
107
108
109
110
/******************************************************************************
111
* private operations
112
*****************************************************************************/
113
114
/*-----------------------------------------------------------------------------
115
* Function remember_rank
116
* Purpose: record MPI rank for later use by csprof
117
*---------------------------------------------------------------------------*/
118
static
void
remember_rank
()
119
{
120
int
rank;
121
122
if
(MPI_Comm_rank(MPI_COMM_WORLD, &rank) == MPI_SUCCESS) {
123
hpcrun_set_mpirank
(rank);
124
}
125
}
126
remember_rank
static void remember_rank()
Definition:
MPI_Init.c:118
hpcrun_set_mpirank
void hpcrun_set_mpirank(int rank)
Definition:
name.c:109
MPI_Init
int MPI_Init(int *argc, char ***argv)
Definition:
MPI_Init.c:88
mpi_init_
void mpi_init_(int *ierr)
Definition:
MPI_Init.c:102
name.h
src
tool
hpcrun
os
catamount
MPI_Init.c
Generated by
1.8.13