Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 59f9009b authored by Mathieu Faverge's avatar Mathieu Faverge
Browse files

Merge branch 'issue102' into 'master'

Fix issue #102

Closes #102

See merge request solverstack/chameleon!265
parents 548e826f 83d4e84c
No related branches found
No related tags found
No related merge requests found
......@@ -108,6 +108,24 @@ option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
set( RP_CHAMELEON_DICTIONNARY ${CMAKE_SOURCE_DIR}/cmake_modules/local_subs.py )
set( RP_CHAMELEON_PRECISIONS "s;d;c;z" )
include(RulesPrecisions)
# Check that at least one option CHAMELEON_PREC_ is set to ON
# count number of CHAMELEON_PREC_ sets to ON
math(EXPR number_of_active_prec 0)
set(CHAMELEON_PRECISIONS "")
foreach (prec ${RP_CHAMELEON_PRECISIONS})
string(TOUPPER ${prec} PREC)
if (CHAMELEON_PREC_${PREC})
math(EXPR number_of_active_prec "${number_of_active_prec}+1")
list(APPEND CHAMELEON_PRECISIONS ${PREC})
endif()
endforeach()
message("-- ${BoldGreen}Floating point precisions enabled (${number_of_active_prec}): ${CHAMELEON_PRECISIONS}.")
if (number_of_active_prec STREQUAL 0)
message(FATAL_ERROR
"Number of active precision is ${number_of_active_prec}, "
"the user should activate at least one precision in the list: "
"CHAMELEON_PREC_S;CHAMELEON_PREC_D;CHAMELEON_PREC_C;CHAMELEON_PREC_Z.")
endif()
# Options to select the runtime
# -----------------------------
......
......@@ -69,6 +69,9 @@ set(dep_message "${dep_message}"
" LDFlags .............: ${CMAKE_C_LINK_FLAGS}\n"
" EXE LDFlags .........: ${CMAKE_EXE_LINKER_FLAGS}\n"
"\n"
" Floating points precisions enabled\n"
" CHAMELEON_PRECISIONS : ${CHAMELEON_PRECISIONS}\n"
"\n"
" Implementation paradigm\n"
" CUDA ................: ${CHAMELEON_USE_CUDA}\n"
" MPI .................: ${CHAMELEON_USE_MPI}\n"
......
......@@ -117,20 +117,29 @@ CHAMELEON_Tile_to_Lapack( CHAM_desc_t *A, void *Af77, int LDA )
int CHAMELEON_Lap2Desc( cham_uplo_t uplo, void *Af77, int LDA, CHAM_desc_t *A )
{
switch( A->dtyp ) {
#if defined(PRECISION_z)
case ChamComplexDouble:
return CHAMELEON_zLap2Desc( uplo, (CHAMELEON_Complex64_t *)Af77, LDA, A );
break;
#endif
#if defined(PRECISION_c)
case ChamComplexFloat:
return CHAMELEON_cLap2Desc( uplo, (CHAMELEON_Complex32_t *)Af77, LDA, A );
break;
#endif
#if defined(PRECISION_s)
case ChamRealFloat:
return CHAMELEON_sLap2Desc( uplo, (float *)Af77, LDA, A );
break;
#endif
#if defined(PRECISION_d)
case ChamRealDouble:
default:
return CHAMELEON_dLap2Desc( uplo, (double *)Af77, LDA, A );
break;
#endif
default:
return CHAMELEON_ERR_ILLEGAL_VALUE;
}
return CHAMELEON_ERR_ILLEGAL_VALUE;
}
/**
......@@ -164,18 +173,27 @@ int CHAMELEON_Lap2Desc( cham_uplo_t uplo, void *Af77, int LDA, CHAM_desc_t *A )
int CHAMELEON_Desc2Lap( cham_uplo_t uplo, CHAM_desc_t *A, void *Af77, int LDA )
{
switch( A->dtyp ) {
#if defined(PRECISION_z)
case ChamComplexDouble:
return CHAMELEON_zDesc2Lap( uplo, A, (CHAMELEON_Complex64_t *)Af77, LDA );
break;
#endif
#if defined(PRECISION_c)
case ChamComplexFloat:
return CHAMELEON_cDesc2Lap( uplo, A, (CHAMELEON_Complex32_t *)Af77, LDA );
break;
#endif
#if defined(PRECISION_s)
case ChamRealFloat:
return CHAMELEON_sDesc2Lap( uplo, A, (float *)Af77, LDA );
break;
#endif
#if defined(PRECISION_d)
case ChamRealDouble:
default:
return CHAMELEON_dDesc2Lap( uplo, A, (double *)Af77, LDA );
break;
#endif
default:
return CHAMELEON_ERR_ILLEGAL_VALUE;
}
return CHAMELEON_ERR_ILLEGAL_VALUE;
}
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