diff --git a/CMake/config.h.in b/CMake/config.h.in index 15827eda08ca08e9dfb3a9763dc07234aa945dfe..0d5c2a2b3403cb06e486736e8459b4b17d5cdfc4 100644 --- a/CMake/config.h.in +++ b/CMake/config.h.in @@ -70,4 +70,4 @@ #cmakedefine HAVE_HMAT #cmakedefine HAVE_CHAMELEON #cmakedefine HAVE_HLIBPRO -#cmakedefine HAVE_COMPOSE +#cmakedefine HAVE_COMPOSYX diff --git a/CMakeLists.txt b/CMakeLists.txt index 2ccdccabe015077cc81b414aa63c4b89cb66d464..c309ecf70b9b59860fad0ee92bb9046d9950c3c2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -140,12 +140,12 @@ if ( NOT TARGET MAPHYSPP::maphyspp ) find_package(maphyspp) if(maphyspp_FOUND) message(STATUS "Found maphys++") - set(HAVE_COMPOSE TRUE) + set(HAVE_COMPOSYX TRUE) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) endif() else() - set(HAVE_COMPOSE TRUE) + set(HAVE_COMPOSYX TRUE) endif() # ======================== diff --git a/include/main.h b/include/main.h index a91931209897010cc0201a0edb5ab32d8598547a..c6644ed3d512fde69902591c4a880e42a43a444c 100644 --- a/include/main.h +++ b/include/main.h @@ -145,8 +145,8 @@ enum algo { _gemvHCHAMELEON, _gemmHCHAMELEON, _solveHCHAMELEON, - _gemvCOMPOSE, - _solveCOMPOSE + _gemvCOMPOSYX, + _solveCOMPOSYX } ; /*! \brief Algorithms that we want to test. */ @@ -286,7 +286,7 @@ int testCHAMELEON(double * relative_error); int testHLIBPRO(double * relative_error); int initHLIBPRO(int* argc, char*** argv) ; int testHCHAMELEON(double * relative_error); -int testCOMPOSE(double * relative_error); +int testCOMPOSYX(double * relative_error); #ifdef HAVE_CHAMELEON extern cham_flttype_t chameleonType; diff --git a/src/compose.cpp b/src/compose.cpp index 9856bef0fff4a36beafd2ddeb5fe0a07983e73f4..12afc6098263d8d0315cdd0bb6dcbe30d4b30b99 100644 --- a/src/compose.cpp +++ b/src/compose.cpp @@ -1,5 +1,5 @@ #include "main.h" -#if defined(HAVE_COMPOSE) +#if defined(HAVE_COMPOSYX) -#endif // defined(HAVE_COMPOSE) +#endif // defined(HAVE_COMPOSYX) diff --git a/src/help.c b/src/help.c index 1ff6e60fb7facaa398fdb27d2a001c9b08951208..7345abc7088950d87803a5c8298db8f575022c9a 100644 --- a/src/help.c +++ b/src/help.c @@ -64,11 +64,11 @@ int printHelp() { #else " HLIBPRO solver support not available.\n" #endif - #ifdef HAVE_COMPOSE - " -gemvcompose: gemv COMPOSE.\n" - " -solvecompose: solve COMPOSE.\n" + #ifdef HAVE_COMPOSYX + " -gemvcomposyx: gemv COMPOSYX.\n" + " -solvecomposyx: solve COMPOSYX.\n" #else - " COMPOSE solver support not available.\n" + " COMPOSYX solver support not available.\n" #endif "\n" #ifdef HAVE_HMAT @@ -129,8 +129,8 @@ int printHelp() { " --hlibpro-ncpus: Number of CPUs (default is OMP_NUM_THREADS if it is set, 12 otherwise)\n" "\n" #endif - #ifdef HAVE_COMPOSE - // Options for compose + #ifdef HAVE_COMPOSYX + // Options for composyx //"\n" #endif " -h/--help: Display this help\n\n"); diff --git a/src/main.c b/src/main.c index 6d8ad0853116e49058a00440858efb61f0d3ea8a..5ea76793ccd0d4f9f991339aa425473ec9779534 100644 --- a/src/main.c +++ b/src/main.c @@ -100,13 +100,13 @@ int main(int argc, char **argv) { testedAlgo = _gemvHCHAMELEON ; printf("Testing : gemv H-CHAMELEON.\n") ; } - if (MpfArgHasName(&argc, argv, 1, "-gemvcompose") > 0) { - testedAlgo = _gemvCOMPOSE ; - printf("Testing : gemv COMPOSE.\n") ; + if (MpfArgHasName(&argc, argv, 1, "-gemvcomposyx") > 0) { + testedAlgo = _gemvCOMPOSYX ; + printf("Testing : gemv COMPOSYX.\n") ; } - if (MpfArgHasName(&argc, argv, 1, "-solvecompose") > 0) { - testedAlgo = _solveCOMPOSE ; - printf("Testing : solve COMPOSE.\n") ; + if (MpfArgHasName(&argc, argv, 1, "-solvecomposyx") > 0) { + testedAlgo = _solveCOMPOSYX ; + printf("Testing : solve COMPOSYX.\n") ; } if (MpfArgHasName(&argc, argv, 1, "-solvehchameleon") > 0) { testedAlgo = _solveHCHAMELEON ; @@ -131,8 +131,8 @@ int main(int argc, char **argv) { case _solveHCHAMELEON: // Add "--chameleon" in the command line if it is not yet there if (!MpfArgHasName(&argc, argv, 0, "--chameleon")) argv[argc++]="--chameleon"; break; - case _gemvCOMPOSE: - case _solveCOMPOSE: + case _gemvCOMPOSYX: + case _solveCOMPOSYX: // nothing break; case _undefined: @@ -169,8 +169,8 @@ int main(int argc, char **argv) { #endif ierr = init_hmat_interface(); CHKERRQ(ierr); break; - case _gemvCOMPOSE: - case _solveCOMPOSE: + case _gemvCOMPOSYX: + case _solveCOMPOSYX: break; case _undefined: default: @@ -385,9 +385,9 @@ int main(int argc, char **argv) { case _solveHCHAMELEON: ierr = testHCHAMELEON(&relative_error); CHKERRQ(ierr); break; - case _gemvCOMPOSE: - case _solveCOMPOSE: - ierr = testCOMPOSE(&relative_error); CHKERRQ(ierr); + case _gemvCOMPOSYX: + case _solveCOMPOSYX: + ierr = testCOMPOSYX(&relative_error); CHKERRQ(ierr); break; default: SETERRQ(1, "Unknown algorithm=%d", testedAlgo); diff --git a/src/testCOMPOSE.cpp b/src/testCOMPOSE.cpp index ba6cb3c2679f31585af5636da70c6f618270d815..d650b1f07f7b1dcbe24143d35054cc1628e29641 100644 --- a/src/testCOMPOSE.cpp +++ b/src/testCOMPOSE.cpp @@ -1,8 +1,8 @@ #include "main.h" -/*! \brief Runs the test using COMPOSE solver +/*! \brief Runs the test using COMPOSYX solver */ -#if defined(HAVE_COMPOSE) +#if defined(HAVE_COMPOSYX) char * C_PACKAGE_NAME = const_cast<char *>(PACKAGE_NAME) ; char * C_FILE = const_cast<char *>(__FILE__); @@ -45,7 +45,7 @@ template<> struct nonzero_type<std::complex<float>> { using type = CnonZero; }; template<> struct nonzero_type<std::complex<double>> { using type = ZnonZero; }; template<typename Scalar> -int testCOMPOSE_FEM(double * relative_error){ +int testCOMPOSYX_FEM(double * relative_error){ using NonZero = typename nonzero_type<Scalar>::type; @@ -66,7 +66,7 @@ int testCOMPOSE_FEM(double * relative_error){ myCtx->colDim = N; temps_initial = getTime (); - Mpf_printf( MPI_COMM_WORLD, "\n**** Creating COMPOSE ...\n" ); + Mpf_printf( MPI_COMM_WORLD, "\n**** Creating COMPOSYX ...\n" ); int row_min = 1; int row_max = N; @@ -104,16 +104,16 @@ int testCOMPOSE_FEM(double * relative_error){ temps_final = getTime(); temps_cpu = temps_final - temps_initial ; - Mpf_printf(MPI_COMM_WORLD,"<PERFTESTS> TpsCpuCOMPOSECreation = %f \n", temps_cpu) ; + Mpf_printf(MPI_COMM_WORLD,"<PERFTESTS> TpsCpuCOMPOSYXCreation = %f \n", temps_cpu) ; DenseMatrix<Scalar> B; DenseMatrix<Scalar> X; - void *solCOMPOSE = nullptr; + void *solCOMPOSYX = nullptr; switch(testedAlgo){ - case _gemvCOMPOSE: + case _gemvCOMPOSYX: - Mpf_printf(MPI_COMM_WORLD, "\n**** Computing COMPOSE product...\n") ; + Mpf_printf(MPI_COMM_WORLD, "\n**** Computing COMPOSYX product...\n") ; temps_initial = getTime(); if (simplePrec) @@ -121,8 +121,8 @@ int testCOMPOSE_FEM(double * relative_error){ B = DenseMatrix<Scalar>::view(N, nbRHS, (Scalar*) rhs, N); - solCOMPOSE = MpfCalloc(vectorSize, sizeof(D_type)) ; C_CHKPTRQ(solCOMPOSE) ; - X = DenseMatrix<Scalar>::view(N, nbRHS, (Scalar*) solCOMPOSE, N); + solCOMPOSYX = MpfCalloc(vectorSize, sizeof(D_type)) ; C_CHKPTRQ(solCOMPOSYX) ; + X = DenseMatrix<Scalar>::view(N, nbRHS, (Scalar*) solCOMPOSYX, N); X = A * B; @@ -130,26 +130,26 @@ int testCOMPOSE_FEM(double * relative_error){ temps_cpu = temps_final - temps_initial ; if (simplePrec) { - simpleToDouble(solCOMPOSE, vectorSize); + simpleToDouble(solCOMPOSYX, vectorSize); simpleToDouble(rhs, vectorSize); } - Mpf_printf(MPI_COMM_WORLD,"<PERFTESTS> TpsCpuGEMVCOMPOSE= %f \n", temps_cpu) ; + Mpf_printf(MPI_COMM_WORLD,"<PERFTESTS> TpsCpuGEMVCOMPOSYX= %f \n", temps_cpu) ; // Compare les 2 produits matrice-vecteur Mpf_printf(MPI_COMM_WORLD, "\n**** Comparing results...\n") ; - ierr=computeRelativeError(solCOMPOSE, solCLA, relative_error); C_CHKERRQ(ierr); + ierr=computeRelativeError(solCOMPOSYX, solCLA, relative_error); C_CHKERRQ(ierr); Mpf_printf(MPI_COMM_WORLD, "<PERFTESTS> Error = %.4e \n", *relative_error); - if(solCOMPOSE) MpfFree(solCOMPOSE); + if(solCOMPOSYX) MpfFree(solCOMPOSYX); break; - case _solveCOMPOSE: + case _solveCOMPOSYX: { - Mpf_printf(MPI_COMM_WORLD, "\n\n**** Factorizing COMPOSE Mat...\n") ; + Mpf_printf(MPI_COMM_WORLD, "\n\n**** Factorizing COMPOSYX Mat...\n") ; temps_initial = getTime(); Pastix<SparseMatrixCOO<Scalar>, DenseMatrix<Scalar>> solver(A); @@ -167,7 +167,7 @@ int testCOMPOSE_FEM(double * relative_error){ temps_final = getTime(); temps_cpu = temps_final - temps_initial; - Mpf_printf(MPI_COMM_WORLD,"<PERFTESTS> TpsCpuCOMPOSEFacto = %f \n", temps_cpu) ; + Mpf_printf(MPI_COMM_WORLD,"<PERFTESTS> TpsCpuCOMPOSYXFacto = %f \n", temps_cpu) ; temps_initial = getTime(); if (simplePrec) @@ -175,8 +175,8 @@ int testCOMPOSE_FEM(double * relative_error){ B = DenseMatrix<Scalar>::view(N, nbRHS, (Scalar*) solCLA, N); - solCOMPOSE = MpfCalloc(vectorSize, sizeof(D_type)) ; C_CHKPTRQ(solCOMPOSE) ; - X = DenseMatrix<Scalar>::view(N, nbRHS, (Scalar*) solCOMPOSE, N); + solCOMPOSYX = MpfCalloc(vectorSize, sizeof(D_type)) ; C_CHKPTRQ(solCOMPOSYX) ; + X = DenseMatrix<Scalar>::view(N, nbRHS, (Scalar*) solCOMPOSYX, N); X = solver * B; @@ -184,13 +184,13 @@ int testCOMPOSE_FEM(double * relative_error){ temps_cpu = temps_final - temps_initial; if (simplePrec) { - simpleToDouble(solCOMPOSE, vectorSize); + simpleToDouble(solCOMPOSYX, vectorSize); } - Mpf_printf(MPI_COMM_WORLD,"<PERFTESTS> TpsCpuSolveCOMPOSE = %f \n", temps_cpu); - // Compare the two vectors solCOMPOSE and rhs + Mpf_printf(MPI_COMM_WORLD,"<PERFTESTS> TpsCpuSolveCOMPOSYX = %f \n", temps_cpu); + // Compare the two vectors solCOMPOSYX and rhs Mpf_printf(MPI_COMM_WORLD, "\n**** Comparing results...\n") ; - ierr=computeRelativeError(solCOMPOSE, rhs, relative_error) ; C_CHKERRQ(ierr) ; + ierr=computeRelativeError(solCOMPOSYX, rhs, relative_error) ; C_CHKERRQ(ierr) ; Mpf_printf(MPI_COMM_WORLD, "<PERFTESTS> Error = %.4e \n", *relative_error); } @@ -203,7 +203,7 @@ int testCOMPOSE_FEM(double * relative_error){ } template<typename Scalar> -int testCOMPOSE_BEM(double * relative_error){ +int testCOMPOSYX_BEM(double * relative_error){ int ierr = 0; double temps_initial, temps_final, temps_cpu; @@ -223,7 +223,7 @@ int testCOMPOSE_BEM(double * relative_error){ myCtx->colDim = N; temps_initial = getTime (); - Mpf_printf( MPI_COMM_WORLD, "\n**** Creating COMPOSE ...\n" ); + Mpf_printf( MPI_COMM_WORLD, "\n**** Creating COMPOSYX ...\n" ); int row_min = 1; int row_max = N; @@ -254,7 +254,7 @@ int testCOMPOSE_BEM(double * relative_error){ auto A_first_block = A.get_block_view(0, 0, nrows_show, nrows_show); A_first_block.display("First block 5x5"); } - Mpf_printf(MPI_COMM_WORLD,"<PERFTESTS> TpsCpuCOMPOSECreation = %f \n", temps_cpu) ; + Mpf_printf(MPI_COMM_WORLD,"<PERFTESTS> TpsCpuCOMPOSYXCreation = %f \n", temps_cpu) ; if (computeNorm) { temps_initial = getTime(); @@ -266,12 +266,12 @@ int testCOMPOSE_BEM(double * relative_error){ DenseMatrix<Scalar> B; DenseMatrix<Scalar> X; - void *solCOMPOSE = nullptr; + void *solCOMPOSYX = nullptr; switch(testedAlgo){ - case _gemvCOMPOSE: + case _gemvCOMPOSYX: - Mpf_printf(MPI_COMM_WORLD, "\n**** Computing COMPOSE product...\n") ; + Mpf_printf(MPI_COMM_WORLD, "\n**** Computing COMPOSYX product...\n") ; temps_initial = getTime(); if (simplePrec) @@ -280,8 +280,8 @@ int testCOMPOSE_BEM(double * relative_error){ B = DenseMatrix<Scalar>::view(N, nbRHS, (Scalar*) rhs, N); //B.display("B"); - solCOMPOSE = MpfCalloc(vectorSize, sizeof(D_type)) ; C_CHKPTRQ(solCOMPOSE) ; - X = DenseMatrix<Scalar>::view(N, nbRHS, (Scalar*) solCOMPOSE, N); + solCOMPOSYX = MpfCalloc(vectorSize, sizeof(D_type)) ; C_CHKPTRQ(solCOMPOSYX) ; + X = DenseMatrix<Scalar>::view(N, nbRHS, (Scalar*) solCOMPOSYX, N); X = A * B; @@ -289,26 +289,26 @@ int testCOMPOSE_BEM(double * relative_error){ temps_cpu = temps_final - temps_initial ; if (simplePrec) { - simpleToDouble(solCOMPOSE, vectorSize); + simpleToDouble(solCOMPOSYX, vectorSize); simpleToDouble(rhs, vectorSize); } - Mpf_printf(MPI_COMM_WORLD,"<PERFTESTS> TpsCpuGEMVCOMPOSE= %f \n", temps_cpu) ; + Mpf_printf(MPI_COMM_WORLD,"<PERFTESTS> TpsCpuGEMVCOMPOSYX= %f \n", temps_cpu) ; /* Compare les 2 produits matrice-vecteur */ Mpf_printf(MPI_COMM_WORLD, "\n**** Comparing results...\n") ; - ierr=computeRelativeError(solCOMPOSE, solCLA, relative_error); C_CHKERRQ(ierr); + ierr=computeRelativeError(solCOMPOSYX, solCLA, relative_error); C_CHKERRQ(ierr); Mpf_printf(MPI_COMM_WORLD, "<PERFTESTS> Error = %.4e \n", *relative_error); - if (solCOMPOSE) MpfFree(solCOMPOSE); + if (solCOMPOSYX) MpfFree(solCOMPOSYX); break; - case _solveCOMPOSE: + case _solveCOMPOSYX: { - Mpf_printf(MPI_COMM_WORLD, "\n\n**** Factorizing COMPOSE Mat...\n") ; + Mpf_printf(MPI_COMM_WORLD, "\n\n**** Factorizing COMPOSYX Mat...\n") ; temps_initial = getTime(); auto solver = ~A; @@ -317,7 +317,7 @@ int testCOMPOSE_BEM(double * relative_error){ temps_final = getTime(); temps_cpu = temps_final - temps_initial; - Mpf_printf(MPI_COMM_WORLD,"<PERFTESTS> TpsCpuCOMPOSEFacto = %f \n", temps_cpu) ; + Mpf_printf(MPI_COMM_WORLD,"<PERFTESTS> TpsCpuCOMPOSYXFacto = %f \n", temps_cpu) ; temps_initial = getTime(); if (simplePrec) @@ -326,8 +326,8 @@ int testCOMPOSE_BEM(double * relative_error){ B = DenseMatrix<Scalar>::view(N, nbRHS, (Scalar*) solCLA, N); //B.display("B"); - solCOMPOSE = MpfCalloc(vectorSize, sizeof(D_type)) ; C_CHKPTRQ(solCOMPOSE) ; - X = DenseMatrix<Scalar>::view(N, nbRHS, (Scalar*) solCOMPOSE, N); + solCOMPOSYX = MpfCalloc(vectorSize, sizeof(D_type)) ; C_CHKPTRQ(solCOMPOSYX) ; + X = DenseMatrix<Scalar>::view(N, nbRHS, (Scalar*) solCOMPOSYX, N); X = solver * B; @@ -335,13 +335,13 @@ int testCOMPOSE_BEM(double * relative_error){ temps_cpu = temps_final - temps_initial; if (simplePrec) { - simpleToDouble(solCOMPOSE, vectorSize); + simpleToDouble(solCOMPOSYX, vectorSize); } - Mpf_printf(MPI_COMM_WORLD,"<PERFTESTS> TpsCpuSolveCOMPOSE = %f \n", temps_cpu); - /* Compare the two vectors solCOMPOSE and rhs */ + Mpf_printf(MPI_COMM_WORLD,"<PERFTESTS> TpsCpuSolveCOMPOSYX = %f \n", temps_cpu); + /* Compare the two vectors solCOMPOSYX and rhs */ Mpf_printf(MPI_COMM_WORLD, "\n**** Comparing results...\n") ; - ierr=computeRelativeError(solCOMPOSE, rhs, relative_error) ; C_CHKERRQ(ierr) ; + ierr=computeRelativeError(solCOMPOSYX, rhs, relative_error) ; C_CHKERRQ(ierr) ; Mpf_printf(MPI_COMM_WORLD, "<PERFTESTS> Error = %.4e \n", *relative_error); } @@ -353,45 +353,45 @@ int testCOMPOSE_BEM(double * relative_error){ return 0; } -int testCOMPOSE(double * relative_error){ +int testCOMPOSYX(double * relative_error){ int ierr; if(testedModel == _bem){ switch(stype) { case (SIMPLE_PRECISION) : - ierr = testCOMPOSE_BEM<float>(relative_error); + ierr = testCOMPOSYX_BEM<float>(relative_error); break ; case (DOUBLE_PRECISION) : - ierr = testCOMPOSE_BEM<double>(relative_error); + ierr = testCOMPOSYX_BEM<double>(relative_error); break ; case (SIMPLE_COMPLEX) : - ierr = testCOMPOSE_BEM<std::complex<float>>(relative_error); + ierr = testCOMPOSYX_BEM<std::complex<float>>(relative_error); break ; case (DOUBLE_COMPLEX) : - ierr = testCOMPOSE_BEM<std::complex<double>>(relative_error); + ierr = testCOMPOSYX_BEM<std::complex<double>>(relative_error); break ; default : - C_SETERRQ(1, "testCOMPOSE : unknown scalar type\n") ; + C_SETERRQ(1, "testCOMPOSYX : unknown scalar type\n") ; break ; } } else{ // if(testedModel == _fem) switch(stype) { case (SIMPLE_PRECISION) : - ierr = testCOMPOSE_FEM<float>(relative_error); + ierr = testCOMPOSYX_FEM<float>(relative_error); break ; case (DOUBLE_PRECISION) : - ierr = testCOMPOSE_FEM<double>(relative_error); + ierr = testCOMPOSYX_FEM<double>(relative_error); break ; case (SIMPLE_COMPLEX) : - ierr = testCOMPOSE_FEM<std::complex<float>>(relative_error); + ierr = testCOMPOSYX_FEM<std::complex<float>>(relative_error); break ; case (DOUBLE_COMPLEX) : - ierr = testCOMPOSE_FEM<std::complex<double>>(relative_error); + ierr = testCOMPOSYX_FEM<std::complex<double>>(relative_error); break ; default : - C_SETERRQ(1, "testCOMPOSE : unknown scalar type\n") ; + C_SETERRQ(1, "testCOMPOSYX : unknown scalar type\n") ; break ; } } @@ -399,6 +399,6 @@ int testCOMPOSE(double * relative_error){ return ierr; } -#else // HAVE_COMPOSE not defined - int testCOMPOSE(double *){ return 0; } -#endif // defined(HAVE_COMPOSE) +#else // HAVE_COMPOSYX not defined + int testCOMPOSYX(double *){ return 0; } +#endif // defined(HAVE_COMPOSYX)