/usr/include/sc_flops.h is in libp4est-dev 1.1-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | /*
This file is part of the SC Library.
The SC Library provides support for parallel scientific applications.
Copyright (C) 2010 The University of Texas System
The SC Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The SC Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the SC Library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
*/
#ifndef SC_FLOPS_H
#define SC_FLOPS_H
#include <sc.h>
SC_EXTERN_C_BEGIN;
typedef struct sc_flopinfo
{
double seconds; /* current time from sc_MPI_Wtime */
/* these variables measure onward from from sc_flops_start */
double cwtime; /* cumulative wall time */
float crtime; /* cumulative real time */
float cptime; /* cumulative process time */
long long cflpops; /* cumulative floating point operations */
/* measure since sc_flops_start or the previous sc_flops_count */
double iwtime; /* interval wall time */
float irtime; /* interval real time */
float iptime; /* interval process time */
long long iflpops; /* interval floating point operations */
float mflops; /* MFlop/s rate in this interval */
/* without SC_PAPI only seconds, ?wtime and ?rtime are meaningful */
}
sc_flopinfo_t;
/**
* Calls PAPI_flops. Aborts on PAPI error.
* The first call sets up the performance counters.
* Subsequent calls return cumulative real and process times,
* cumulative floating point operations and the flop rate since the last call.
*/
void sc_flops_papi (float *rtime, float *ptime,
long long *flpops, float *mflops);
/**
* Prepare sc_flopinfo_t structure and start flop counters.
* Must only be called once during the program run.
* This function calls sc_flops_papi.
*
* \param [out] fi Members will be initialized.
*/
void sc_flops_start (sc_flopinfo_t * fi);
/**
* Update sc_flopinfo_t structure with current measurement.
* Must only be called after sc_flops_start.
* Can be called any number of times.
* This function calls sc_flops_papi.
*
* \param [in,out] fi Members will be updated.
*/
void sc_flops_count (sc_flopinfo_t * fi);
/**
* Call sc_flops_count (fi) and copies fi into snapshot.
*
* \param [in,out] fi Members will be updated.
* \param [out] snapshot On output is a copy of fi.
*/
void sc_flops_snap (sc_flopinfo_t * fi,
sc_flopinfo_t * snapshot);
/**
* Call sc_flops_count (fi) and override snapshot interval timings
* with the differences since the previous call to sc_flops_snap.
* The interval mflop rate is computed by iflpops / 1e6 / irtime.
* The cumulative timings in snapshot are copied form fi.
*
* \param [in,out] fi Members will be updated.
* \param [in,out] snapshot Interval timings measured since sc_flops_snap.
*/
void sc_flops_shot (sc_flopinfo_t * fi,
sc_flopinfo_t * snapshot);
/**
* Call sc_flops_count (fi) and work on all arguments in the list
* of type sc_flopinfo_t * as in sc_flops_shot. Last argument must be NULL.
*/
void sc_flops_shotv (sc_flopinfo_t * fi, ...);
SC_EXTERN_C_END;
#endif /* !SC_FLOPS_H */
|