papi_get_hardware_info(3) - Linux man page
Name
PAPI_get_hardware_info - get information about the system hardwareSynopsis
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,nnodes,
C_STRING vendor_string, C_INT model,
C_STRING model_string,C_INT model,
C_FLOAT revision, C_FLOAT mhz)
Description
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 heirarchy
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 heirarchy description
*/
} PAPI_hw_info_t;