Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 31cf7fbe authored by Mathieu Faverge's avatar Mathieu Faverge Committed by SYLVAND Guillaume
Browse files

Add a functionnality to dump the memory ration tile by tile after generation

parent 43ad8683
No related branches found
No related tags found
No related merge requests found
......@@ -456,6 +456,7 @@ int HCHAMELEON_generate_matrix( cham_flttype_t flttype, int NB, int PQ[2
hmat_interface_t *hi );
int HCHAMELEON_destroy_matrix( HCHAM_desc_t *hdescA );
hmat_info_t HCHAMELEON_getinfo( HCHAM_desc_t *hdesc );
void HCHAMELEON_getrank( HCHAM_desc_t *hdesc, char *name );
CHAM_desc_t *HCHAMELEON_uncompress_matrix( HCHAM_desc_t *hdesc );
void HCHAMELEON_lapmr( char forward, char trans, int nrhs,
HCHAM_desc_t *hdesc,
......
......@@ -10,6 +10,8 @@
#include <coreblas.h>
#include <pthread.h>
static FILE *rankfile = NULL;
/**
* Detect if the tile is local or not
*/
......@@ -414,6 +416,57 @@ hmat_info_t HCHAMELEON_getinfo( HCHAM_desc_t *hdesc )
return ginfo;
}
static int
HCHAMELEON_map_getrank( const CHAM_desc_t *desc,
cham_uplo_t uplo, int m, int n,
CHAM_tile_t *tile, void *op_args )
{
size_t lr_size = -1;
switch( desc->dtyp ) {
case ChamComplexDouble:
lr_size = hmat_zcoefsize( tile->mat );
break;
case ChamComplexFloat:
lr_size = hmat_ccoefsize( tile->mat );
break;
case ChamRealDouble:
lr_size = hmat_dcoefsize( tile->mat );
break;
case ChamRealFloat:
lr_size = hmat_scoefsize( tile->mat );
break;
default:
fprintf( stderr, "ERROR: unknown data type to get compressed size\n" );
}
fprintf( rankfile, "%p;%p;%ld;%ld;%ld;%ld\n",
op_args, tile, (long)m, (long)n,
lr_size, (long)tile->m * (long)tile->n );
return 0;
}
void HCHAMELEON_getrank( HCHAM_desc_t *hdesc, char *name )
{
cham_uplo_t uplo = symMatSolver ? ChamLower : ChamUpperLower;
char *rankfilename;
asprintf( &rankfilename, "initial_size_%s.csv", name );
rankfile = fopen( rankfilename, "w" );
free(rankfilename);
fprintf( rankfile, "matrix_ptr;tile_ptr;tile_m;tile_n;tile_lrsze;tile_frsze\n" );
CHAMELEON_map_Tile( uplo, hdesc->super,
HCHAMELEON_map_getrank, hdesc->hi );
fclose( rankfile );
rankfile = NULL;
return;
}
void HCHAMELEON_lapmr( char forward, char trans, int nrhs,
HCHAM_desc_t *hdesc,
char *Bptr )
......
......@@ -79,6 +79,7 @@ int testHCHAMELEON(void) {
// Assembly driven by chameleon
HCHAM_desc_t hdescA;
HCHAMELEON_generate_matrix( chameleonType, NB, dims, &hdescA, hi );
HCHAMELEON_getrank( &hdescA, "A" );
temps_final = getTime ();
temps_cpu = temps_final - temps_initial ;
......@@ -124,8 +125,10 @@ int testHCHAMELEON(void) {
{
HCHAM_desc_t hdescB;
HCHAMELEON_generate_matrix( chameleonType, NB, dims, &hdescB, hi );
HCHAMELEON_getrank( &hdescB, "B" );
HCHAM_desc_t hdescC;
HCHAMELEON_generate_matrix( chameleonType, NB, dims, &hdescC, hi );
HCHAMELEON_getrank( &hdescC, "C" );
/* ===================================================================================== */
/* Appelle le produit mat.vec : A.rhs -> solHMAT */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment