PAPI 7.1.0.0
Loading...
Searching...
No Matches
dmem_info.c
Go to the documentation of this file.
1/*
2 * This file perfoms the following test: dynamic memory info
3 * The pages used should increase steadily.
4 *
5 * Author: Kevin London
6 * london@cs.utk.edu
7 */
8
9#include <stdio.h>
10#include <stdlib.h>
11
12#include "papi.h"
13#include "papi_test.h"
14
15#include "do_loops.h"
16
17#define ALLOCMEM 200000
18static void
20{
21 fprintf( output, "\n--------\n" );
22 fprintf( output, "Mem Size:\t\t%lld\n", d->size );
23 fprintf( output, "Mem Peak Size:\t\t%lld\n", d->peak );
24 fprintf( output, "Mem Resident:\t\t%lld\n", d->resident );
25 fprintf( output, "Mem High Water Mark:\t%lld\n", d->high_water_mark );
26 fprintf( output, "Mem Shared:\t\t%lld\n", d->shared );
27 fprintf( output, "Mem Text:\t\t%lld\n", d->text );
28 fprintf( output, "Mem Library:\t\t%lld\n", d->library );
29 fprintf( output, "Mem Heap:\t\t%lld\n", d->heap );
30 fprintf( output, "Mem Locked:\t\t%lld\n", d->locked );
31 fprintf( output, "Mem Stack:\t\t%lld\n", d->stack );
32 fprintf( output, "Mem Pagesize:\t\t%lld\n", d->pagesize );
33 fprintf( output, "Mem Page Table Entries:\t\t%lld\n", d->pte );
34 fprintf( output, "--------\n\n" );
35}
36
37int
38main( int argc, char **argv )
39{
41 long long value[7];
42 int retval, i = 0, j = 0;
43 double *m[7];
44
45 tests_quiet( argc, argv ); /* Set TESTS_QUIET variable */
47 if ( retval != PAPI_VER_CURRENT )
48 test_fail( __FILE__, __LINE__, "PAPI_library_init", retval );
49
50 for ( i = 0; i < 7; i++ ) {
51 retval = PAPI_get_dmem_info( &dmem );
52 if ( retval != PAPI_OK )
53 test_fail( __FILE__, __LINE__, "PAPI_get_dmem_info", retval );
54/* dump_memory_info(stdout,&dmem); */
55 value[i] = dmem.size;
56 m[i] = ( double * ) malloc( ALLOCMEM * sizeof ( double ) );
57 touch_dummy( m[j], ALLOCMEM );
58 }
59
60 if ( !TESTS_QUIET ) {
61 printf( "Test case: Dynamic Memory Information.\n" );
62 dump_memory_info( stdout, &dmem );
63 printf
64 ( "------------------------------------------------------------------------\n" );
65 for ( i = 0; i < 7; i++ )
66 printf( "Malloc additional: %d KB Memory Size in KB: %d\n",
67 ( int ) ( ( sizeof ( double ) * ALLOCMEM ) / 1024 ),
68 ( int ) value[i] );
69 printf
70 ( "------------------------------------------------------------------------\n" );
71 }
72 if ( value[6] >= value[5] && value[5] >= value[4] && value[4] >= value[3]
73 && value[3] >= value[2] && value[2] >= value[1] &&
74 value[1] >= value[0] )
75 test_pass( __FILE__ );
76 else
77 test_fail( __FILE__, __LINE__, "Calculating Resident Memory",
78 ( int ) value[6] );
79
80 return 1;
81}
int i
Get information about the dynamic memory usage of the current program.
initialize the PAPI library.
static void dump_memory_info(FILE *output, PAPI_dmem_info_t *d)
Definition: dmem_info.c:19
#define ALLOCMEM
Definition: dmem_info.c:17
void touch_dummy(double *array, int size)
Definition: do_loops.c:343
#define PAPI_VER_CURRENT
Definition: f90papi.h:54
#define PAPI_OK
Definition: f90papi.h:73
int TESTS_QUIET
Definition: test_utils.c:18
Return codes and api definitions.
FILE * stdout
int tests_quiet(int argc, char **argv)
Definition: test_utils.c:376
void PAPI_NORETURN test_fail(const char *file, int line, const char *call, int retval)
Definition: test_utils.c:491
void PAPI_NORETURN test_pass(const char *filename)
Definition: test_utils.c:432
int main()
Definition: pernode.c:20
A pointer to the following is passed to PAPI_get_dmem_info()
Definition: papi.h:865
long long pte
Definition: papi.h:877
long long locked
Definition: papi.h:874
long long shared
Definition: papi.h:870
long long peak
Definition: papi.h:866
long long text
Definition: papi.h:871
long long heap
Definition: papi.h:873
long long size
Definition: papi.h:867
long long library
Definition: papi.h:872
long long stack
Definition: papi.h:875
long long pagesize
Definition: papi.h:876
long long high_water_mark
Definition: papi.h:869
long long resident
Definition: papi.h:868
int retval
Definition: zero_fork.c:53