|
Packit |
577717 |
/*
|
|
Packit |
577717 |
* This file perfoms the following test: dynamic memory info
|
|
Packit |
577717 |
* The pages used should increase steadily.
|
|
Packit |
577717 |
*
|
|
Packit |
577717 |
* Author: Kevin London
|
|
Packit |
577717 |
* london@cs.utk.edu
|
|
Packit |
577717 |
*/
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#include <stdio.h>
|
|
Packit |
577717 |
#include <stdlib.h>
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#include "papi.h"
|
|
Packit |
577717 |
#include "papi_test.h"
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#include "do_loops.h"
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define ALLOCMEM 200000
|
|
Packit |
577717 |
static void
|
|
Packit |
577717 |
dump_memory_info( FILE * output, PAPI_dmem_info_t * d )
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
fprintf( output, "\n--------\n" );
|
|
Packit |
577717 |
fprintf( output, "Mem Size:\t\t%lld\n", d->size );
|
|
Packit |
577717 |
fprintf( output, "Mem Peak Size:\t\t%lld\n", d->peak );
|
|
Packit |
577717 |
fprintf( output, "Mem Resident:\t\t%lld\n", d->resident );
|
|
Packit |
577717 |
fprintf( output, "Mem High Water Mark:\t%lld\n", d->high_water_mark );
|
|
Packit |
577717 |
fprintf( output, "Mem Shared:\t\t%lld\n", d->shared );
|
|
Packit |
577717 |
fprintf( output, "Mem Text:\t\t%lld\n", d->text );
|
|
Packit |
577717 |
fprintf( output, "Mem Library:\t\t%lld\n", d->library );
|
|
Packit |
577717 |
fprintf( output, "Mem Heap:\t\t%lld\n", d->heap );
|
|
Packit |
577717 |
fprintf( output, "Mem Locked:\t\t%lld\n", d->locked );
|
|
Packit |
577717 |
fprintf( output, "Mem Stack:\t\t%lld\n", d->stack );
|
|
Packit |
577717 |
fprintf( output, "Mem Pagesize:\t\t%lld\n", d->pagesize );
|
|
Packit |
577717 |
fprintf( output, "Mem Page Table Entries:\t\t%lld\n", d->pte );
|
|
Packit |
577717 |
fprintf( output, "--------\n\n" );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
int
|
|
Packit |
577717 |
main( int argc, char **argv )
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
PAPI_dmem_info_t dmem;
|
|
Packit |
577717 |
long long value[7];
|
|
Packit |
577717 |
int retval, i = 0, j = 0;
|
|
Packit |
577717 |
double *m[7];
|
|
Packit |
577717 |
|
|
Packit |
577717 |
tests_quiet( argc, argv ); /* Set TESTS_QUIET variable */
|
|
Packit |
577717 |
retval = PAPI_library_init( PAPI_VER_CURRENT );
|
|
Packit |
577717 |
if ( retval != PAPI_VER_CURRENT )
|
|
Packit |
577717 |
test_fail( __FILE__, __LINE__, "PAPI_library_init", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
for ( i = 0; i < 7; i++ ) {
|
|
Packit |
577717 |
retval = PAPI_get_dmem_info( &dmem );
|
|
Packit |
577717 |
if ( retval != PAPI_OK )
|
|
Packit |
577717 |
test_fail( __FILE__, __LINE__, "PAPI_get_dmem_info", retval );
|
|
Packit |
577717 |
/* dump_memory_info(stdout,&dmem); */
|
|
Packit |
577717 |
value[i] = dmem.size;
|
|
Packit |
577717 |
m[i] = ( double * ) malloc( ALLOCMEM * sizeof ( double ) );
|
|
Packit |
577717 |
touch_dummy( m[j], ALLOCMEM );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if ( !TESTS_QUIET ) {
|
|
Packit |
577717 |
printf( "Test case: Dynamic Memory Information.\n" );
|
|
Packit |
577717 |
dump_memory_info( stdout, &dmem );
|
|
Packit |
577717 |
printf
|
|
Packit |
577717 |
( "------------------------------------------------------------------------\n" );
|
|
Packit |
577717 |
for ( i = 0; i < 7; i++ )
|
|
Packit |
577717 |
printf( "Malloc additional: %d KB Memory Size in KB: %d\n",
|
|
Packit |
577717 |
( int ) ( ( sizeof ( double ) * ALLOCMEM ) / 1024 ),
|
|
Packit |
577717 |
( int ) value[i] );
|
|
Packit |
577717 |
printf
|
|
Packit |
577717 |
( "------------------------------------------------------------------------\n" );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
if ( value[6] >= value[5] && value[5] >= value[4] && value[4] >= value[3]
|
|
Packit |
577717 |
&& value[3] >= value[2] && value[2] >= value[1] &&
|
|
Packit |
577717 |
value[1] >= value[0] )
|
|
Packit |
577717 |
test_pass( __FILE__ );
|
|
Packit |
577717 |
else
|
|
Packit |
577717 |
test_fail( __FILE__, __LINE__, "Calculating Resident Memory",
|
|
Packit |
577717 |
( int ) value[6] );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
return 1;
|
|
Packit |
577717 |
}
|