Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 3559bd6d authored by BARROS DE ASSIS Lucas's avatar BARROS DE ASSIS Lucas Committed by Mathieu Faverge
Browse files

New testing/timing structure

parent 96bfc4f5
No related branches found
No related tags found
1 merge request!166New testing/timing structure
Showing
with 904 additions and 0 deletions
......@@ -1030,6 +1030,7 @@ endif(CHAMELEON_ENABLE_EXAMPLE AND NOT CHAMELEON_SIMULATION)
# Testing executables
if(CHAMELEON_ENABLE_TESTING AND NOT CHAMELEON_SIMULATION)
add_subdirectory(testing)
add_subdirectory(new-testing)
endif(CHAMELEON_ENABLE_TESTING AND NOT CHAMELEON_SIMULATION)
# Timing executables
......
......@@ -42,6 +42,7 @@ subs = {
('int', 'float', 'double', 'CHAMELEON_Complex32_t', r'\bCHAMELEON_Complex64_t'),
('ChamPattern', 'ChamRealFloat', 'ChamRealDouble', 'ChamComplexFloat', r'\bChamComplexDouble' ),
('ChamPattern', 'ChamRealFloat', 'ChamRealDouble', 'ChamRealFloat', r'\bChamRealDouble' ),
('int', 'float', 'double', 'complex32', r'\bcomplex64' ),
# ----- Additional BLAS
('', 'sTile', 'dTile', 'cTile', 'zTile' ),
......
......@@ -122,6 +122,8 @@ static inline int chameleon_min( int a, int b ) {
if ( a < b ) return a; else return b;
}
typedef double cham_fixdbl_t;
END_C_DECLS
#endif /* _chameleon_types_h_ */
###
#
# @file CMakeLists.txt
#
# @copyright 2009-2014 The University of Tennessee and The University of
# Tennessee Research Foundation. All rights reserved.
# @copyright 2012-2019 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
# Univ. Bordeaux. All rights reserved.
#
###
#
# @project CHAMELEON
# CHAMELEON is a software package provided by:
# Inria Bordeaux - Sud-Ouest,
# Univ. of Tennessee,
# King Abdullah Univesity of Science and Technology
# Univ. of California Berkeley,
# Univ. of Colorado Denver.
#
# @version 0.9.2
# @author Cedric Castagnede
# @author Emmanuel Agullo
# @author Mathieu Faverge
# @author Lucas Barros de Assis
# @date 2014-11-16
#
###
if (CHAMELEON_SIMULATION)
message(ERROR "new-testing directory should not be included when simulation is enabled")
endif()
# Generate chameleon auxiliary testing sources for all possible precisions
# --------------------------------------------------------------------
set(NEWTESTING_HDRS_GENERATED "")
set(ZHDR
testing_zauxiliary.h
testing_zcheck.h
)
precisions_rules_py(NEWTESTING_HDRS_GENERATED "${ZHDR}"
PRECISIONS "s;d;c;z;ds;zc" )
add_custom_target(new-testing_include ALL SOURCES ${NEWTESTING_HDRS_GENERATED})
set(CHAMELEON_SOURCES_TARGETS "${CHAMELEON_SOURCES_TARGETS};new-testing_include" CACHE INTERNAL "List of targets of sources")
# Generate chameleon testing sources for all possible precisions
# ----------------------------------------------------------
set(ZSRC
testing_zauxiliary.c
testing_zcheck.c
##################
# LAPACK
##################
#testing_zlaset.c
testing_zlacpy.c
testing_zlange.c
testing_zlanhe.c
testing_zlansy.c
testing_zlantr.c
testing_zgeadd.c
testing_ztradd.c
testing_zlascal.c
testing_zgemm.c
testing_zhemm.c
testing_zherk.c
testing_zher2k.c
testing_zsymm.c
testing_zsyrk.c
testing_zsyr2k.c
testing_ztrmm.c
testing_ztrsm.c
testing_zpotrf.c
testing_zpotrs.c
testing_zposv.c
testing_ztrtri.c
testing_zlauum.c
testing_zpotri.c
testing_zsytrf.c
testing_zsytrs.c
testing_zsysv.c
testing_zgetrf.c
testing_zgetrs.c
testing_zgesv.c
testing_zgeqrf.c
testing_zungqr.c
testing_zunmqr.c
testing_zgelqf.c
testing_zunglq.c
testing_zunmlq.c
# testing_zgeqrs.c
# testing_zgelqs.c
testing_zgels.c
testing_zgeqrf_hqr.c
testing_zungqr_hqr.c
testing_zunmqr_hqr.c
testing_zgelqf_hqr.c
testing_zunglq_hqr.c
testing_zunmlq_hqr.c
# testing_zgeqrs_hqr.c
# testing_zgelqs_hqr.c
testing_zgels_hqr.c
)
# Add include and link directories
# --------------------------------
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
include_directories(${CMAKE_CURRENT_BINARY_DIR})
# Define what libraries we have to link with
# ------------------------------------------
unset(libs_for_tests)
# testing executables depend on chameleon and cblas, lapacke, mpi (already chameleon's dependencies)
list(APPEND libs_for_tests chameleon)
# message(STATUS "libs testings: ${libs_for_tests}")
# Create one testing per precision with all files
# -----------------------------------------------
foreach(_precision ${CHAMELEON_PRECISION} )
precisions_rules_py(${_precision}SRC_GENERATED "${ZSRC}"
PRECISIONS "${_precision}" )
add_executable(${_precision}new-testing
${${_precision}SRC_GENERATED}
values.c
run_list.c
parameters.c
)
add_dependencies(${_precision}new-testing
chameleon_include
coreblas_include
control_include
new-testing_include
)
set_property(TARGET ${_precision}new-testing PROPERTY LINKER_LANGUAGE Fortran)
target_link_libraries(${_precision}new-testing ${libs_for_tests})
install(TARGETS ${_precision}new-testing
DESTINATION bin/new-testing)
endforeach()
# Force generation of sources
# ---------------------------
set(NEWTESTING_SRCS)
foreach(_precision ${CHAMELEON_PRECISION})
list(APPEND NEWTESTING_SRCS ${${_precision}SRC_GENERATED})
endforeach()
add_custom_target(new-testing_sources ALL SOURCES ${NEWTESTING_SRCS})
set(CHAMELEON_SOURCES_TARGETS "${CHAMELEON_SOURCES_TARGETS};new-testing_sources" CACHE INTERNAL "List of targets of sources")
#-------- Tests ---------
include(CTestLists.cmake)
# copy input files
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/input DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
###
### END CMakeLists.txt
###
#
# Check testing/
#
set(NP 2) # Amount of MPI processes
set(THREADS 2) # Amount of threads
set(N_GPUS 0) # Amount of graphic cards
set(TEST_CATEGORIES shm)
if (CHAMELEON_USE_MPI AND MPI_C_FOUND)
set( TEST_CATEGORIES ${TEST_CATEGORIES} mpi )
endif()
if (CHAMELEON_USE_CUDA AND CUDA_FOUND)
set(N_GPUS 0 1)
endif()
foreach(prec ${RP_CHAMELEON_PRECISIONS})
set (CMD ./${prec}new-testing)
#
# Create the list of test based on precision and runtime
#
set( TESTS lacpy lange lantr lansy )
if ( ${prec} STREQUAL c OR ${prec} STREQUAL z )
set( TESTS ${TESTS} lanhe )
endif()
set( TESTS ${TESTS}
geadd tradd lascal
gemm symm syrk syr2k trmm trsm )
if ( ${prec} STREQUAL c OR ${prec} STREQUAL z )
set( TESTS ${TESTS}
hemm herk her2k )
endif()
set( TESTS ${TESTS}
potrf potrs posv trtri lauum )
if ( NOT CHAMELEON_SCHED_PARSEC )
set( TESTS ${TESTS} potri )
endif()
if ( ${prec} STREQUAL c OR ${prec} STREQUAL z )
set( TESTS ${TESTS}
sytrf sytrs sysv )
endif()
set( TESTS ${TESTS}
getrf getrs gesv
geqrf gelqf
geqrf_hqr gelqf_hqr)
if ( ${prec} STREQUAL c OR ${prec} STREQUAL z )
set( TESTS ${TESTS}
ungqr unglq unmqr unmlq
ungqr_hqr unglq_hqr unmqr_hqr unmlq_hqr)
else()
set( TESTS ${TESTS}
orgqr orglq ormqr ormlq
orgqr_hqr orglq_hqr ormqr_hqr ormlq_hqr)
endif()
set( TESTS ${TESTS}
#geqrs gelqs
#geqrs_hqr gelqs_hqr
gels
gels_hqr )
foreach(cat ${TEST_CATEGORIES})
foreach(gpus ${N_GPUS})
if (${gpus} EQUAL 1)
set(cat ${cat}_gpu)
endif()
if (${cat} STREQUAL "mpi")
set (PREFIX mpiexec --bind-to none -n ${NP})
else()
set (PREFIX "")
endif()
foreach(_test ${TESTS})
add_test(test_${cat}_${prec}${_test} ${PREFIX} ${CMD} -c -t ${THREADS} -g ${gpus} -P 1 -o ${_test} -f input/${_test}.in )
endforeach()
endforeach()
endforeach()
endforeach()
This diff is collapsed.
# You can enumerate each parameter's values as an explicit list separated by commas or by a range start:end[:step]
# Not given parameters will receive default values
# GEADD
# nb: Tile size
# ib: Inner tile size
# M: Number of rows of matrix A
# N: Number of columns of matrix B
# LDA: Leading dimension of matrix A
# LDB: Leading dimension of matrix B
# trans: Wether the matrix A is not tranposed, transposed or conjugate transposed (0: not transposed, 1: transposed, 2: conjugate transposed)
# alpha: Scalar alpha
# beta: Scalar beta
nb = 16, 17
ib = 8
m = 15, 17, 33
n = 13, 19, 35
lda = 37
ldb = 39
trans = 0:2
# You can enumerate each parameter's values as an explicit list separated by commas or by a range start:end[:step]
# Not given parameters will receive default values
# GELQF
# nb: Tile size
# ib: Inner tile size
# m: Number of rows of the A matrix
# n: Number of columns of the A matrix
# lda: Leading dimension of the A matrix
# RH: Size of each subdomain when using RH
nb = 16, 17
ib = 8
m = 13, 17, 35
n = 15, 19, 33
lda = 41
qra = 0, 3
\ No newline at end of file
# You can enumerate each parameter's values as an explicit list separated by commas or by a range start:end[:step]
# Not given parameters will receive default values
# GELQF_HQR
# nb: Tile size
# ib: Inner tile size
# m: Number of rows of the A matrix
# n: Number of columns of the A matrix
# lda: Leading dimension of the A matrix
# qra: Size of TS domain
# qrp: Size of high level tree for distributed mode
# llvl: Tree used for low level reduction insides nodes
# hlv: Tree used for high level reduction between nodes, only if qrp > 1
# domino: Enable/Disable the domino between upper and lower trees
nb = 8, 9
ib = 3
m = 13, 17, 35
n = 15, 19, 33
lda = 41
qra = 2
qrp = -1
llvl = -1
hlvl = -1
domino = -1
\ No newline at end of file
# You can enumerate each parameter's values as an explicit list separated by commas or by a range start:end[:step]
# Not given parameters will receive default values
# GELQS
# nb: Tile size
# ib: Inner tile size
# m: Number of rows of the A matrix
# n: Number of columns of the A matrix
# lda: Leading dimension of the A matrix
# RH: Size of each subdomain when using RH
nb = 16, 17
ib = 8
m = 13, 17, 35
n = 15, 19, 33
lda = 41
qra = 0, 3
\ No newline at end of file
# You can enumerate each parameter's values as an explicit list separated by commas or by a range start:end[:step]
# Not given parameters will receive default values
# GELS
# nb: Tile size
# ib: Inner tile size
# M: Number of rows of matrix A
# N: Number of columns of matrix B
# K: Number of columns of matrix A and rows of Matrix B
# LDA: Leading dimension of matrix A
# LDB: Leading dimension of matrix B
# trans: Wether the system involves A (ChamNoTrans) or A^H *ChamTransConj)
# RH: Size of each subdomain when using RH
nb = 16, 17
ib = 8
m = 17, 31, 35
n = 15, 29, 33
k = 11, 27, 37
lda = 43
ldb = 45
trans = 0, 2
qra = 0, 3
\ No newline at end of file
# You can enumerate each parameter's values as an explicit list separated by commas or by a range start:end[:step]
# Not given parameters will receive default values
# GELS
# nb: Tile size
# ib: Inner tile size
# M: Number of rows of matrix A
# N: Number of columns of matrix B
# K: Number of columns of matrix A and rows of Matrix B
# LDA: Leading dimension of matrix A
# LDB: Leading dimension of matrix B
# trans: Wether the system involves A (ChamNoTrans) or A^H *ChamTransConj). Currently only ChamNoTrans is supported.
# qra: Size of TS domain
# qrp: Size of high level tree for distributed mode
# llvl: Tree used for low level reduction insides nodes
# hlv: Tree used for high level reduction between nodes, only if qrp > 1
# domino: Enable/Disable the domino between upper and lower trees
nb = 8, 9
ib = 3
m = 17, 31, 35
n = 15, 29, 33
k = 11, 27, 37
lda = 43
ldb = 45
trans = 0
qra = 2
qrp = -1
llvl = -1
hlvl = -1
domino = -1
\ No newline at end of file
# You can enumerate each parameter's values as an explicit list separated by commas or by a range start:end[:step]
# Not given parameters will receive default values
# GEMM
# nb: Tile size
# ib: Inner tile size
# M: Number of rows of matrix A and C
# N: Number of columns of matrix B and C
# K: Number of columns of matrix A and rows of matrix B
# LDA: Leading dimension of matrix A
# LDB: Leading dimension of matrix B
# LDC: Leading dimension of matrix C
# transA: Wether the matrix A is not tranposed, transposed or conjugate transposed (0: not transposed, 1: transposed, 2: conjugate transposed)
# transB: Wether the matrix B is not tranposed, transposed or conjugate transposed (0: not transposed, 1: transposed, 2: conjugate transposed)
# alpha: Scalar alpha
# beta: Scalar beta
nb = 16, 17
ib = 8
m = 15, 25, 37
n = 13, 23, 35
k = 14, 24, 34
lda = 41
ldb = 43
ldc = 41
transA = 0:2
transB = 0:2
# You can enumerate each parameter's values as an explicit list separated by commas or by a range start:end[:step]
# Not given parameters will receive default values
# GEQRF
# nb: Tile size
# ib: Inner tile size
# m: Number of rows of the A matrix
# n: Number of columns of the A matrix
# lda: Leading dimension of the A matrix
# RH: Size of each subdomain when using RH
nb = 16, 17
ib = 8
m = 13, 17, 35
n = 15, 19, 33
lda = 41
qra = 0, 3
\ No newline at end of file
# You can enumerate each parameter's values as an explicit list separated by commas or by a range start:end[:step]
# Not given parameters will receive default values
# GEQRF_HQR
# nb: Tile size
# ib: Inner tile size
# m: Number of rows of the A matrix
# n: Number of columns of the A matrix
# lda: Leading dimension of the A matrix
# qra: Size of TS domain
# qrp: Size of high level tree for distributed mode
# llvl: Tree used for low level reduction insides nodes
# hlv: Tree used for high level reduction between nodes, only if qrp > 1
# domino: Enable/Disable the domino between upper and lower trees
nb = 8, 9
ib = 3
m = 13, 17, 57
n = 15, 19, 55
lda = 59
qra = 2
qrp = -1
llvl = -1
hlvl = -1
domino = -1
\ No newline at end of file
# You can enumerate each parameter's values as an explicit list separated by commas or by a range start:end[:step]
# Not given parameters will receive default values
# GEQRS
# nb: Tile size
# ib: Inner tile size
# m: Number of rows of the A matrix
# n: Number of columns of the A matrix
# lda: Leading dimension of the A matrix
# RH: Size of each subdomain when using RH
nb = 16, 17
ib = 8
m = 13, 17, 35
n = 15, 19, 33
lda = 41
qra = 0, 3
\ No newline at end of file
# You can enumerate each parameter's values as an explicit list separated by commas or by a range start:end[:step]
# Not given parameters will receive default values
# GESV
# nb: Tile size
# ib: Inner tile size
# n: Order of the matrix A and number of rows of matrix B
# nrhs: The number of columns of matrix B
# lda: Leading dimension of matrix A
# ldb: Leading dimension of matrix B
nb = 16, 17
ib = 8
n = 15, 21, 35
nrhs = 13, 22, 33
lda = 40
ldb = 41
seedA = 4687
\ No newline at end of file
# You can enumerate each parameter's values as an explicit list separated by commas or by a range start:end[:step]
# Not given parameters will receive default values
# GETRF
# nb: Tile size
# ib: Inner tile size
# m: Number of rows of the matrix A
# n: Number of columns of the matrix A
# lda: Leading dimension of matrix A
nb = 16, 17
ib = 8
m = 13, 17, 35
n = 15, 19, 33
lda = 41
\ No newline at end of file
# You can enumerate each parameter's values as an explicit list separated by commas or by a range start:end[:step]
# Not given parameters will receive default values
# GETRS
# nb: Tile size
# ib: Inner tile size
# m: Order of the matrix A and number of rows of matrix B
# n: The number of columns of matrix B
# lda: Leading dimension of matrix A
# ldb: Leading dimension of matrix B
nb = 16, 17
ib = 8
m = 13, 17, 35
n = 15, 19, 33
lda = 41
ldb = 42
\ No newline at end of file
# You can enumerate each parameter's values as an explicit list separated by commas or by a range start:end[:step]
# Not given parameters will receive default values
# HEMM
# nb: Tile size
# ib: Inner tile size
# side: whether the hermitian matrix A appears on the left or right side of the multiplication operation (0: left, 1: right)
# uplo: matrix part to be used (0: Upper, 1: Lower)
# M: Number of rows of matrix A and C
# N: Number of columns of matrix B and C
# LDA: Leading dimension of matrix A
# LDB: Leading dimension of matrix B
# LDC: Leading dimension of matrix C
# alpha: Scalar alpha
# beta: Scalar beta
# bump: bump value for Hermitian matrices
nb = 16, 17
ib = 8
side = 0:1
uplo = 0:1
m = 15, 25, 37
n = 13, 23, 35
lda = 41
ldb = 43
ldc = 41
bump = 0
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