diff --git a/src/chameleon.c b/src/chameleon.c index 935c4ed96cbbc9ac9744b94689bb3da8ece7f4e6..0f3a184039269033ed1b3e4817abfb72492c4e71 100644 --- a/src/chameleon.c +++ b/src/chameleon.c @@ -1,5 +1,6 @@ #include "main.h" #ifdef HAVE_CHAMELEON +#include "chameleon.h" cham_flttype_t chameleonType; int (*CHAMELEON_sytrf_Tile)( cham_uplo_t, CHAM_desc_t * ) = NULL; // LLt facto int (*CHAMELEON_sytrs_Tile)( cham_uplo_t, CHAM_desc_t *, CHAM_desc_t * ) = NULL; // LLt solve @@ -14,6 +15,7 @@ testFEMBEM_initChameleon( ScalarType stype ) { /* Set the scalar type and the functions used by CHAMELEON */ switch(stype) { +#if defined(CHAMELEON_PREC_S) case (SIMPLE_PRECISION) : chameleonType = ChamRealFloat; CHAMELEON_sytrf_Tile = CHAMELEON_spotrf_Tile; @@ -22,6 +24,8 @@ testFEMBEM_initChameleon( ScalarType stype ) { CHAMELEON_getrf_nopiv_Tile = CHAMELEON_sgetrf_nopiv_Tile; CHAMELEON_getrs_nopiv_Tile = CHAMELEON_sgetrs_nopiv_Tile; break ; +#endif +#if defined(CHAMELEON_PREC_D) case (DOUBLE_PRECISION) : chameleonType = ChamRealDouble; CHAMELEON_sytrf_Tile = CHAMELEON_dpotrf_Tile; @@ -30,6 +34,8 @@ testFEMBEM_initChameleon( ScalarType stype ) { CHAMELEON_getrf_nopiv_Tile = CHAMELEON_dgetrf_nopiv_Tile; CHAMELEON_getrs_nopiv_Tile = CHAMELEON_dgetrs_nopiv_Tile; break ; +#endif +#if defined(CHAMELEON_PREC_C) case (SIMPLE_COMPLEX) : chameleonType = ChamComplexFloat; CHAMELEON_sytrf_Tile = CHAMELEON_csytrf_Tile; @@ -38,6 +44,8 @@ testFEMBEM_initChameleon( ScalarType stype ) { CHAMELEON_getrf_nopiv_Tile = CHAMELEON_cgetrf_nopiv_Tile; CHAMELEON_getrs_nopiv_Tile = CHAMELEON_cgetrs_nopiv_Tile; break ; +#endif +#if defined(CHAMELEON_PREC_Z) case (DOUBLE_COMPLEX) : chameleonType = ChamComplexDouble; CHAMELEON_sytrf_Tile = CHAMELEON_zsytrf_Tile; @@ -46,6 +54,7 @@ testFEMBEM_initChameleon( ScalarType stype ) { CHAMELEON_getrf_nopiv_Tile = CHAMELEON_zgetrf_nopiv_Tile; CHAMELEON_getrs_nopiv_Tile = CHAMELEON_zgetrs_nopiv_Tile; break ; +#endif default : SETERRQ(1, "testHCHAMELEON : unknown scalar type\n") ; break ; @@ -60,30 +69,38 @@ int CHAMELEON_gemm_Tile( CHAM_desc_t *descA, int ierr = 0; switch(stype) { +#if defined(CHAMELEON_PREC_S) case (SIMPLE_PRECISION) : ierr = CHAMELEON_sgemm_Tile( ChamNoTrans, ChamNoTrans, (float)1., descA, descX, (float)0., descY ); CHKERRQ(ierr); break ; +#endif +#if defined(CHAMELEON_PREC_D) case (DOUBLE_PRECISION) : ierr = CHAMELEON_dgemm_Tile( ChamNoTrans, ChamNoTrans, (double)1., descA, descX, (double)0., descY); CHKERRQ(ierr); break ; +#endif +#if defined(CHAMELEON_PREC_C) case (SIMPLE_COMPLEX) : ierr = CHAMELEON_cgemm_Tile( ChamNoTrans, ChamNoTrans, (CHAMELEON_Complex32_t)1., descA, descX, (CHAMELEON_Complex32_t)0., descY); CHKERRQ(ierr); break ; +#endif +#if defined(CHAMELEON_PREC_Z) case (DOUBLE_COMPLEX) : ierr = CHAMELEON_zgemm_Tile( ChamNoTrans, ChamNoTrans, (CHAMELEON_Complex64_t)1., descA, descX, (CHAMELEON_Complex64_t)0., descY); CHKERRQ(ierr); break ; +#endif default : SETERRQ(1, "CHAMELEON_gemm_Tile: unknown scalar type\n") ; break ; diff --git a/src/hchameleon.c b/src/hchameleon.c index f2ee0335ff1c57d6424db5ff4827ca7013a1c827..d475a013b1663996b1ef325157ea9ca8729ebf3e 100644 --- a/src/hchameleon.c +++ b/src/hchameleon.c @@ -313,20 +313,28 @@ TCORE_uncompress( HCHAM_desc_t *hdescA, int (*CORE_lacpy)( cham_uplo_t, int, int, const void *, int, void *, int ) = NULL; switch( hdescA->super->dtyp ) { +#if defined(CHAMELEON_PREC_S) case ChamRealFloat: CORE_lacpy = (core_lacpy_fct_t)CORE_slacpy; break ; +#endif +#if defined(CHAMELEON_PREC_D) case ChamRealDouble: CORE_lacpy = (core_lacpy_fct_t)CORE_dlacpy; break ; +#endif +#if defined(CHAMELEON_PREC_C) case ChamComplexFloat: CORE_lacpy = (core_lacpy_fct_t)CORE_clacpy; break ; +#endif +#if defined(CHAMELEON_PREC_Z) case ChamComplexDouble: CORE_lacpy = (core_lacpy_fct_t)CORE_zlacpy; break ; +#endif default : - //SETERRQ(1, "HCHAMELEON_uncompress_matrix: unknown scalar type\n") ; + SETERRQ(1, "HCHAMELEON_uncompress_matrix: unknown scalar type\n") ; break ; } CORE_lacpy( ChamUpperLower, tileA->m, tileA->n,