Mentions légales du service

Skip to content
Snippets Groups Projects
Commit cb7a6020 authored by SYLVAND Guillaume's avatar SYLVAND Guillaume
Browse files

Add GEMM case for HCHAMELEON

parent 09b35e11
No related branches found
No related tags found
No related merge requests found
...@@ -233,6 +233,7 @@ enum algo { ...@@ -233,6 +233,7 @@ enum algo {
_gemvHLIBPRO, _gemvHLIBPRO,
_solveHLIBPRO, _solveHLIBPRO,
_gemvHCHAMELEON, _gemvHCHAMELEON,
_gemmHCHAMELEON,
_solveHCHAMELEON _solveHCHAMELEON
} ; } ;
......
...@@ -43,6 +43,10 @@ int main(int argc, char **argv) { ...@@ -43,6 +43,10 @@ int main(int argc, char **argv) {
testedAlgo = _solveHLIBPRO ; testedAlgo = _solveHLIBPRO ;
printf("Testing : solve HLIBPRO.\n") ; printf("Testing : solve HLIBPRO.\n") ;
} }
if (MpfArgHasName(&argc, argv, 1, "-gemmhchameleon") > 0) {
testedAlgo = _gemmHCHAMELEON ;
printf("Testing : gemm H-CHAMELEON.\n") ;
}
if (MpfArgHasName(&argc, argv, 1, "-gemvhchameleon") > 0) { if (MpfArgHasName(&argc, argv, 1, "-gemvhchameleon") > 0) {
testedAlgo = _gemvHCHAMELEON ; testedAlgo = _gemvHCHAMELEON ;
printf("Testing : gemv H-CHAMELEON.\n") ; printf("Testing : gemv H-CHAMELEON.\n") ;
...@@ -66,6 +70,7 @@ int main(int argc, char **argv) { ...@@ -66,6 +70,7 @@ int main(int argc, char **argv) {
case _solveHLIBPRO: case _solveHLIBPRO:
break; break;
case _gemvHCHAMELEON: case _gemvHCHAMELEON:
case _gemmHCHAMELEON:
case _solveHCHAMELEON: // Add "--chameleon" in the command line if it is not yet there case _solveHCHAMELEON: // Add "--chameleon" in the command line if it is not yet there
if (!MpfArgHasName(&argc, argv, 0, "--chameleon")) argv[argc++]="--chameleon"; if (!MpfArgHasName(&argc, argv, 0, "--chameleon")) argv[argc++]="--chameleon";
break; break;
...@@ -96,6 +101,7 @@ int main(int argc, char **argv) { ...@@ -96,6 +101,7 @@ int main(int argc, char **argv) {
ierr=initHLIBPRO(&argc, &argv) ; CHKERRQ(ierr) ; ierr=initHLIBPRO(&argc, &argv) ; CHKERRQ(ierr) ;
break; break;
case _gemvHCHAMELEON: case _gemvHCHAMELEON:
case _gemmHCHAMELEON:
case _solveHCHAMELEON: case _solveHCHAMELEON:
mpf_hmat_settings.engine = mpf_hmat_seq; mpf_hmat_settings.engine = mpf_hmat_seq;
ierr = init_hmat_interface(); CHKERRQ(ierr); ierr = init_hmat_interface(); CHKERRQ(ierr);
...@@ -301,6 +307,7 @@ int main(int argc, char **argv) { ...@@ -301,6 +307,7 @@ int main(int argc, char **argv) {
ierr = testHLIBPRO(); CHKERRQ(ierr); ierr = testHLIBPRO(); CHKERRQ(ierr);
break; break;
case _gemvHCHAMELEON: case _gemvHCHAMELEON:
case _gemmHCHAMELEON:
case _solveHCHAMELEON: case _solveHCHAMELEON:
ierr = testHCHAMELEON(); CHKERRQ(ierr); ierr = testHCHAMELEON(); CHKERRQ(ierr);
break; break;
......
...@@ -110,6 +110,38 @@ int testHCHAMELEON(void) { ...@@ -110,6 +110,38 @@ int testHCHAMELEON(void) {
/* Switch on the various H-CHAMELEON tests */ /* Switch on the various H-CHAMELEON tests */
/* ===================================================================================== */ /* ===================================================================================== */
switch(testedAlgo) { switch(testedAlgo) {
case _gemmHCHAMELEON:
{
HCHAM_desc_t hdescB;
HCHAMELEON_generate_matrix( chameleonType, NB, dims, &hdescB, hi );
HCHAM_desc_t hdescC;
HCHAMELEON_generate_matrix( chameleonType, NB, dims, &hdescC, hi );
/* ===================================================================================== */
/* Appelle le produit mat.vec : A.rhs -> solHMAT */
/* ===================================================================================== */
Mpf_printf(MPI_COMM_WORLD, "\n**** Computing HMATxHMAT product...\n") ;
temps_initial = getTime ();
/* Compute the mat.vec product A.rhs -> solCHAM */
if ( generate_traces ) {
CHAMELEON_Enable( CHAMELEON_PROFILING_MODE );
}
CHAMELEON_gemm_Tile( hdescA.super, hdescB.super, hdescC.super );
if ( generate_traces ) {
CHAMELEON_Disable( CHAMELEON_PROFILING_MODE );
}
temps_final = getTime ();
temps_cpu = temps_final - temps_initial;
Mpf_printf( MPI_COMM_WORLD,"<PERFTESTS> TpsCpuGEMM = %f \n", temps_cpu );
HCHAMELEON_destroy_matrix( &hdescB );
HCHAMELEON_destroy_matrix( &hdescC );
}
break;
case _gemvHCHAMELEON: case _gemvHCHAMELEON:
/* ===================================================================================== */ /* ===================================================================================== */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment