PAPI3:PAPI get hardware info.3
From PAPIDocs
Jump to: navigation, search


NAME

  • PAPI_get_hardware_info - get information about the system hardware

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,
totalcpus,  C_INT  vendor,
vendor_string,   C_INT  model,
model_string,
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.

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 heirarchy description

Errors

PAPI_EINVAL One or more of the arguments is invalid.

Bugs

If called before the behavior of the routine is undefined.

NOTE

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

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.\en",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 heirarchy description */
} PAPI_hw_info_t;

See Also

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