NAME

PAPI_get_hardware_info - get information about the system hardware

CONTENTS

Synopsis
Description
Note
Arguments
Return Values
Errors
Example
Data Structure
Bugs
See Also

SYNOPSIS

C Interface

#include <papi.h> 

const PAPI_hw_info_t *PAPI_get_hardware_info(void); 

Fortran Interface

#include fpapi.h 

PAPIF_get_hardware_info(C_INT ncpu, C_INT nnodes,  
           C_INT  totalcpus,  C_INT  vendor, 
           C_STRING  vendor_string,   C_INT  model, 
           C_STRING  model_string,
           C_FLOAT  revision,  C_FLOAT  mhz)

DESCRIPTION

In C, this function returns a pointer to a structure containing information about the hardware on which the program runs. In Fortran, the values of the structure are returned explicitly.

NOTE

The C structure contains detailed information about cache and TLB sizes. This information is not available from Fortran.

ARGUMENTS

The following arguments are implicit in the structure returned by the C function, or explicitly returned by Fortran.

ncpu -- number of CPUs in an SMP Node

nnodes -- number of Nodes in the entire system

totalcpus -- total number of CPUs in the entire system

vendor -- vendor id number of CPU

vendor_string -- vendor id string of CPU

model -- model number of CPU

model_string -- model string of CPU

revision -- Revision number of CPU

mhz -- Cycle time of this CPU; *may* be an estimate generated at init time with a quick timing routine

mem_hierarchy -- PAPI memory hierarchy description

RETURN VALUES

On success, the C function returns a non-NULL pointer, and the Fortran function returns PAPI_OK.
On error, NULL is returned by the C function, and a non-zero error code is returned by the Fortran function.

ERRORS

PAPI_EINVAL
  One or more of the arguments is invalid.

EXAMPLE


const PAPI_hw_info_t *hwinfo = NULL;
        
if (PAPI_library_init(PAPI_VER_CURRENT) != PAPI_VER_CURRENT)
  exit(1);

if ((hwinfo = PAPI_get_hardware_info()) == NULL) exit(1);

printf("%d CPU’s at %f Mhz.\n",hwinfo->totalcpus,hwinfo->mhz);

DATA STRUCTURE

The C data structure returned by this function is found in papi.h and reproduced below:


   typedef struct _papi_mh_tlb_info {
      int type; /* See papi.h for PAPI_MH definitions. */
      int num_entries;
      int associativity;
   } PAPI_mh_tlb_info_t;

typedef struct _papi_mh_cache_info { int type; /* See papi.h for PAPI_MH definitions. */ int size; int line_size; int num_lines; int associativity; } PAPI_mh_cache_info_t;

typedef struct _papi_mh_level_info { PAPI_mh_tlb_info_t tlb[2]; PAPI_mh_cache_info_t cache[2]; } PAPI_mh_level_t;

typedef struct _papi_mh_info { /* mh for mem hierarchy maybe? */ int levels; PAPI_mh_level_t level[PAPI_MAX_MEM_HIERARCHY_LEVELS]; } PAPI_mh_info_t;

typedef struct _papi_hw_info { int ncpu; /* Number of CPU’s in an SMP Node */ int nnodes; /* Number of Nodes in the entire system */ int totalcpus; /* Total number of CPU’s in the entire system */ int vendor; /* Vendor number of CPU */ char vendor_string[PAPI_MAX_STR_LEN]; /* Vendor string of CPU */ int model; /* Model number of CPU */ char model_string[PAPI_MAX_STR_LEN]; /* Model string of CPU */ float revision; /* Revision of CPU */ float mhz; /* Cycle time of this CPU, *may* be estimated at init time with a quick timing routine */ PAPI_mh_info_t mem_hierarchy; /* PAPI memory hierarchy description */ } PAPI_hw_info_t;

BUGS

If called before PAPI_library_init() the behavior of the routine is undefined.

SEE ALSO

PAPI_library_init (3), PAPI_get_dmem_info (3), PAPI_get_opt (3), PAPI_get_executable_info (3)


PAPI Programmer’s Reference PAPI_get_hardware_info (3) September, 2004

  Innovative Computing Laboratory
2001 R&D Winner  
Computer Science Department
  University of Tennessee