/* * This file is part of the Pablo Performance Analysis Environment * * (R) * The Pablo Performance Analysis Environment software is NOT in * the public domain. However, it is freely available without fee for * education, research, and non-profit purposes. By obtaining copies * of this and other files that comprise the Pablo Performance Analysis * Environment, you, the Licensee, agree to abide by the following * conditions and understandings with respect to the copyrighted software: * * 1. The software is copyrighted in the name of the Board of Trustees * of the University of Illinois (UI), and ownership of the software * remains with the UI. * * 2. Permission to use, copy, and modify this software and its documentation * for education, research, and non-profit purposes is hereby granted * to Licensee, provided that the copyright notice, the original author's * names and unit identification, and this permission notice appear on * all such copies, and that no charge be made for such copies. Any * entity desiring permission to incorporate this software into commercial * products should contact: * * Professor Daniel A. Reed reed@cs.uiuc.edu * University of Illinois * Department of Computer Science * 2413 Digital Computer Laboratory * 1304 West Springfield Avenue * Urbana, Illinois 61801 * USA * * 3. Licensee may not use the name, logo, or any other symbol of the UI * nor the names of any of its employees nor any adaptation thereof in * advertizing or publicity pertaining to the software without specific * prior written approval of the UI. * * 4. THE UI MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THE * SOFTWARE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT EXPRESS * OR IMPLIED WARRANTY. * * 5. The UI shall not be liable for any damages suffered by Licensee from * the use of this software. * * 6. The software was developed under agreements between the UI and the * Federal Government which entitle the Government to certain rights. * ************************************************************************** * * Developed by: The Pablo Research Group * University of Illinois at Urbana-Champaign * Department of Computer Science * 1304 W. Springfield Avenue * Urbana, IL 61801 * * http://www-pablo.cs.uiuc.edu * * Send comments to: pablo-feedback@guitar.cs.uiuc.edu * * Copyright (c) 1987-1996 * The University of Illinois Board of Trustees. * All Rights Reserved. * * PABLO is a registered trademark of * The Board of Trustees of the University of Illinois * registered in the U.S. Patent and Trademark Office. * * Author: Dan Wells (dwells@cs.uiuc.edu) * * Project Manager and Principal Investigator: * Daniel A. Reed (reed@cs.uiuc.edu) * * Funded in part by National Science Foundation grants NSF CCR87-06653 * and NSF CDA87-22836 (Tapestry), DARPA contracts DABT63-91-K-0004, * DABT63-93-C-0040, DABT63-94-C-0049 (SIO), and F30602-96-C-0161, NASA * contracts NAG-1-613 (ICLASS), USRA 5555-22, and NGT-51023, and a * collaborative research agreement with the Intel Supercomputer * Systems Division */ /* * HDFrecord.h: Class to represent HDF records. * * $Header$ */ #ifndef HDFRECORD_RT_H #define HDFRECORD_RT_H #ifndef NULL #define NULL 0 #endif #include #include #include #include "ProcIDs.h" #ifndef min #define min( x , y ) ( x <= y ? x : y ) #endif #ifndef max #define max( x , y ) ( x >= y ? x : y ) #endif /*======================================================================* // Enumeration of time fields in an HDFrec_t below * //======================================================================*/ enum TimeFields { HDF_, MPI, Malloc, AllIO, Open, Close, Read, Write, Aread, Awrite, Seek, Wait, Misc, MPIOread, MPIOreadAll, MPIOwrite, MPIOwriteAll, MPIOiRead, MPIOiWrite, MPIOother, nTallyFields, MPIOreadTrans, MPIOreadAllTrans, MPIOwriteTrans, MPIOwriteAllTrans }; /*======================================================================* // Enumeration of byte fields in an HDFrec_t below * //======================================================================*/ enum ByteFields{ MallocBytes, ReadBytes, WriteBytes, AreadBytes, AwriteBytes, MPIOreadBytesReq, MPIOreadBytesTrans, MPIOwriteBytesReq, MPIOwriteBytesTrans, MPIOreadAllBytesReq, MPIOreadAllBytesTrans, MPIOwriteAllBytesReq, MPIOwriteAllBytesTrans, MPIOiReadBytesReq, MPIOiWriteBytesReq, nByteFields, nHistFields = AwriteBytes+1 }; /*======================================================================* // Definition of first and last IO event. * //======================================================================*/ #define FirstIO Open #define LastIO Misc #define nBkts 4 #define ONEK 1024 int BktLim[] = { 1, 4*ONEK, 64*ONEK, 256*ONEK, INT_MAX } ; /*======================================================================* // Definition of structure used to account activity in an HDF call * //======================================================================*/ typedef struct { int nCalls; /* number of proc calls */ CLOCK lastCall; /* time of last call */ CLOCK incDur; /* inclusive duration */ CLOCK excDur; /* exclusive duration */ CLOCK times[nTallyFields]; /* Tally op/calls times */ int counts[nTallyFields]; /* Tally op/calls counts */ int bytes[nByteFields]; /* Tally bytes transferred */ int Hists[nHistFields][nBkts]; /* Historgrams */ long hdfID; /* data set ID */ long xRef; /* data set cross reference */ } HDFrec_t; /*======================================================================* // Node used to maintain linked lists of HDF procedure activity. * //======================================================================*/ typedef struct HDFnode { CLOCK lastIOtime; /* last IO time stamp */ HDFrec_t record; /* data */ struct HDFnode *ptr; /* link pointer */ int eventID; /* event ID */ } HDFnode_t; /*======================================================================* // Structure used to produce SDDF packets for Named identifiers. * //======================================================================*/ typedef struct { int packetLength; /* bytes in packet */ int packetType; /* == PKT_DATA */ int packetTag; /* == FAMILY_ */ int fileType; /* Type of data set */ int fileID; /* File ID */ int nameLen; /* length of file */ } HDFNamePacket_t; /*======================================================================* // Node used to form linked lists to track named identifiers. * //======================================================================*/ typedef struct fileRec { struct fileRec *ptr; long hdfID; long PabloID; char *fileName; } fileRec_t; /*======================================================================= // Utility programs to determine field index for a given eventID * //=====================================================================*/ int getHDFFieldIndex( int eventID ); int getHDFByteFieldIndex( int eventID ); /* * Define flags to distinguish misc i/o begin from misc i/o end */ #define MISC_BEGIN 0 #define MISC_END 1 #endif /* HDFRECORD_RT_H */