Mentions légales du service

Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • solverstack/chameleon
  • lvilleve/chameleon-toto
  • jcletort/chameleon
  • thibault/chameleon
  • tcojean/chameleon
  • sylvand/chameleon
  • viroulea/chameleon
  • x-ltac/chameleon
  • agullo/chameleon
  • glucas/chameleon
  • pswartva/chameleon
  • aguermou1/chameleon
  • eyrauddu/chameleon
  • mverite/chameleon
  • alisito/chameleon
  • furmento/chameleon
  • fpruvost/chameleon
  • ahourcau/chameleon
  • bnicolas/chameleon
  • pesterie/chameleon
  • mmarcos/chameleon
21 results
Show changes
Showing
with 214 additions and 177 deletions
......@@ -2,9 +2,7 @@
.test_openmp:
extends: .test_script_linux
needs: [build_openmp]
interruptible: true
variables:
SYSTEM: linux
VERSION: openmp
CATEGORY: shm
LOGNAME: "chameleon-test-${SYSTEM}-${VERSION}-${CATEGORY}-${PRECISION}"
......
......@@ -2,9 +2,7 @@
.test_parsec:
extends: .test_script_linux
needs: [build_parsec]
interruptible: true
variables:
SYSTEM: linux
VERSION: parsec
CATEGORY: shm
LOGNAME: "chameleon-test-${SYSTEM}-${VERSION}-${CATEGORY}-${PRECISION}"
......
......@@ -2,9 +2,7 @@
.test_quark:
extends: .test_script_linux
needs: [build_quark]
interruptible: true
variables:
SYSTEM: linux
VERSION: quark
CATEGORY: shm
LOGNAME: "chameleon-test-${SYSTEM}-${VERSION}-${CATEGORY}-${PRECISION}"
......
---
.test_starpu:
.test_script_starpu:
extends: .test_script_linux
needs: [build_starpu]
interruptible: true
variables:
SYSTEM: linux
VERSION: starpu
LOGNAME: "chameleon-test-${SYSTEM}-${VERSION}-${CATEGORY}-${PRECISION}"
TESTS_RESTRICTION: "-R _${CATEGORY}_${PRECISION}|example -E sytrf|sysv"
TESTS_RESTRICTION: "-R _${CATEGORY}_${PRECISION}|example"
test_starpu_master:
extends: .test_starpu
extends: .test_script_starpu
rules:
- if: ($CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_BRANCH =~ /^ci-.*$/) && $CI_PIPELINE_SOURCE != "schedule"
parallel:
......@@ -19,7 +17,7 @@ test_starpu_master:
CATEGORY: [shm, mpi]
test_starpu_mr:
extends: .test_starpu
extends: .test_script_starpu
rules:
- if: ($CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME !~ /^notest-.*$/)
parallel:
......@@ -43,7 +41,8 @@ test_starpu_macosx:
- bash .gitlab/test.sh | tee ${LOGNAME}.log
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
expire_in: 180 minutes
expire_in: 1 week
when: always
paths:
- ${LOGNAME}.log
reports:
......@@ -69,7 +68,8 @@ test_starpu_macosx:
- bash -lc .gitlab/test.sh | tee "$env:LOGNAME.log"
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
expire_in: 180 minutes
expire_in: 1 week
when: always
paths:
- ${LOGNAME}.log
reports:
......
---
.test_script_starpu_plafrim:
tags: ['plafrim']
stage: test
variables:
SYSTEM: guix
script:
- guix describe -f channels | tee guix-channels.scm
- guix shell --pure --preserve=SYSTEM --preserve=VERSION --preserve=LOGNAME --preserve=BUILD_OPTIONS --preserve=TESTS_RESTRICTION --preserve=SLURM_CONSTRAINTS --preserve=LD_PRELOAD
-D chameleon-${GPU_BACKEND} ${BLAS} slurm coreutils inetutils bash-minimal --
bash .gitlab/sbatch.sh ${LOGNAME} | tee ${LOGNAME}.log
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
expire_in: 1 week
when: always
paths:
- guix-channels.scm
- ${LOGNAME}.log
reports:
junit: ${LOGNAME}-junit.xml
.test_script_starpu_plafrim_cuda:
extends: .test_script_starpu_plafrim
needs: [build_starpu_cuda]
variables:
VERSION: starpu_cuda
GPU_BACKEND: cuda
BLAS: "--with-input=openblas=intel-oneapi-mkl"
LOGNAME: "chameleon-${SYSTEM}-${VERSION}"
BUILD_OPTIONS: "-DCHAMELEON_USE_CUDA=ON -DCHAMELEON_USE_MPI=OFF -DBLA_VENDOR=Intel10_64lp_seq"
SLURM_CONSTRAINTS: "sirocco"
LD_PRELOAD: "/usr/lib64/libcuda.so"
test_starpu_cuda_master:
extends: .test_script_starpu_plafrim_cuda
rules:
- if: ($CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_BRANCH =~ /^ci-.*$/) && $CI_PIPELINE_SOURCE != "schedule"
variables:
TESTS_RESTRICTION: "-R test_shm_gpu"
test_starpu_cuda_mr:
extends: .test_script_starpu_plafrim_cuda
rules:
- if: ($CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME !~ /^notest-.*$/)
variables:
TESTS_RESTRICTION: "-R test_shm_gpu_d|test_shm_gpu_c"
......@@ -7,7 +7,6 @@ test_starpu_simgrid_simu_all:
variables:
STARPU_WORKERS_NOBIND: 1
CHAM_CI_ENV_ARG: simgrid
SYSTEM: linux
VERSION: starpu_simgrid
CATEGORY: simu
PRECISION: all
......
#!/usr/bin/env bash
###
#
# @file validate.sh
# @copyright 2023-2024 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
# Univ. Bordeaux. All rights reserved.
#
# @version 1.2.0
# @author Mathieu Faverge
# @author Florent Pruvost
# @date 2023-09-22
#
###
# Check some metrics on sonarqube (https://sonarqube.inria.fr/sonarqube/)
# and depending on the value return 0 (success) or 1 (failure).
if [ $# -gt 0 ]; then
METRIC=$1
fi
METRIC=${METRIC:-BUG}
if [[ -z $CI_MERGE_REQUEST_IID || -z $CI_PROJECT_NAMESPACE || -z $CI_PROJECT_NAME ]]; then
echo "One of the variables CI_MERGE_REQUEST_IID, CI_PROJECT_NAMESPACE,
CI_PROJECT_NAME is empty. This script must be used during a gitlab merge
request only -> Failure."
exit 1
fi
if [[ -z $SONARQUBE_LOGIN ]]; then
echo "SONARQUBE_LOGIN is empty, please give a valid sonarqube user's token,
with permissions set on the project -> Failure."
exit 1
fi
if [[ $METRIC == "BUG" ]]; then
BUG=`curl -u $SONARQUBE_LOGIN: -X GET "https://sonarqube.inria.fr/sonarqube/api/measures/component?component=${CI_PROJECT_NAMESPACE}%3A${CI_PROJECT_NAME}&pullRequest=${CI_MERGE_REQUEST_IID}&metricKeys=new_bugs" |jq '.component.measures[0].period.value' | sed -e "s#\"##g"`
echo "BUG=$BUG"
if [[ $BUG -gt 0 ]]; then
echo "%{BUG} new bugs detected by Sonarqube -> Failure."
exit 1
else
echo "No new bugs detected by Sonarqube -> Success."
exit 0
fi
elif [[ $METRIC == "COVERAGE" ]]; then
COV=`curl -u $SONARQUBE_LOGIN: -X GET "https://sonarqube.inria.fr/sonarqube/api/measures/component?component=${CI_PROJECT_NAMESPACE}%3A${CI_PROJECT_NAME}&pullRequest=${CI_MERGE_REQUEST_IID}&metricKeys=new_coverage" |jq '.component.measures[0].period.value' | sed -e "s#\"##g" | cut -d "." -f 1`
echo "COV=$COV"
if [[ $COV == "null" || -z $COV ]]; then
echo "Coverage is empty, certainly that there are no lines of new code (considered during the analysis) to compare -> Success."
else
if [[ $COV -lt 80 ]]; then
echo "Coverage on new lines is ${COV}%, which is < 80% -> Failure."
exit 1
else
echo "Coverage on new lines is ${COV}%, which is >= 80% -> Success."
exit 0
fi
fi
fi
---
validate:
stage: validate
tags: ["docker", "large"]
extends: .only-mr
needs: [sonarqube_mr]
parallel:
matrix:
- METRIC: [BUG, COVERAGE]
script:
- ./.gitlab/validate.sh $METRIC
allow_failure: true
\ No newline at end of file
......@@ -4,7 +4,7 @@
#
# @copyright 2009-2014 The University of Tennessee and The University of
# Tennessee Research Foundation. All rights reserved.
# @copyright 2012-2024 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
# @copyright 2012-2025 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
# Univ. Bordeaux. All rights reserved.
#
###
......@@ -31,7 +31,7 @@
# @author Loris Lucido
# @author Nathan Précigout
# @author Abel Calluaud
# @date 2024-07-17
# @date 2024-12-06
#
###
cmake_minimum_required(VERSION 3.5)
......@@ -349,7 +349,7 @@ endif()
# Add math library (libm), searched with MORSE module FindM.cmake
# it normally exists on all common systems provided with a C compiler
find_package(M REQUIRED)
morse_export_imported_target(MORSE M m chameleon)
morse_export_imported_target(MORSE::M m chameleon)
# If simulation we don't enter in kernel functions so that we don't need to link
# with concerned libraries
......@@ -366,12 +366,12 @@ if(NOT CHAMELEON_SIMULATION)
# CHAMELEON depends on CBLAS
#---------------------------
find_package(CBLAS REQUIRED)
morse_export_imported_target(MORSE CBLAS cblas chameleon)
morse_export_imported_target(MORSE::CBLAS cblas chameleon)
# CHAMELEON depends on LAPACKE
#-----------------------------
find_package(LAPACKE REQUIRED)
morse_export_imported_target(MORSE LAPACKE lapacke chameleon)
morse_export_imported_target(MORSE::LAPACKE lapacke chameleon)
# CHAMELEON depends on CUDA/CUBLAS
#----------------------------------
......@@ -418,8 +418,8 @@ if(NOT CHAMELEON_SIMULATION)
"\n CUDA_LIBRARIES to be found. Be sure you have"
"\n libcuda with your distribution of CUDA.")
endif()
morse_export_imported_target(CUDA CUDA cuda chameleon)
morse_export_imported_target(CUDA CUBLAS cublas chameleon)
morse_export_imported_target(CUDA::CUDA cuda chameleon)
morse_export_imported_target(CUDA::CUBLAS cublas chameleon)
endif (CUDA_FOUND)
endif(CHAMELEON_USE_CUDA)
......@@ -427,10 +427,16 @@ if(NOT CHAMELEON_SIMULATION)
# CHAMELEON depends on HIP/HIPBLAS
#----------------------------------
if (CHAMELEON_USE_HIP)
if (CHAMELEON_USE_HIP_ROC)
find_package(HIP REQUIRED)
find_package(hipblas REQUIRED)
# should define targets: hip::host, hip::device
find_package(hip REQUIRED CONFIG)
message(STATUS "hip target found")
# should define targets: roc::hipblas
find_package(hipblas REQUIRED CONFIG)
message(STATUS "hipblas target found")
elseif(CHAMELEON_USE_HIP_CUDA)
......@@ -466,56 +472,49 @@ if(NOT CHAMELEON_SIMULATION)
if(CHAMELEON_HIPBLAS_PATH)
list(APPEND HIPBLAS_INCLUDE_DIRS "${CHAMELEON_HIPBLAS_PATH}/include")
list(APPEND HIPBLAS_LIBRARIES "${CHAMELEON_HIPBLAS_PATH}/lib/libhipblas.so")
message(STATUS "HIPBLAS_INCLUDE_DIRS: ${HIP_INCLUDE_DIRS}")
message(STATUS "HIPBLAS_LIBRARIES: ${HIPBLAS_LIBRARIES}")
else()
message(FATAL_ERROR "Please set CHAMELEON_HIPBLAS_PATH to your HIPBLAS installation.")
endif()
endif()
if (HIP_FOUND)
message("-- ${Blue}Add definition CHAMELEON_USE_HIP"
" - Activate HIP in Chameleon${ColourReset}")
# create imported target because not provided with old cmake
add_library(HIP::HIP INTERFACE IMPORTED)
add_library(HIP::HIPBLAS INTERFACE IMPORTED)
if (CHAMELEON_USE_HIP_CUDA)
target_compile_definitions(HIP::HIP INTERFACE "__HIP_PLATFORM_NVIDIA__")
set(HIP_INCLUDE_DIRS "${HIP_INCLUDE_DIRS};${CUDA_INCLUDE_DIRS}")
set(HIP_LIBRARIES "${HIP_LIBRARIES};${CUDA_LIBRARIES}")
endif()
add_library(hip::hip INTERFACE IMPORTED)
add_library(roc::hipblas INTERFACE IMPORTED)
target_compile_definitions(hip::hip INTERFACE "__HIP_PLATFORM_NVIDIA__")
set(HIP_INCLUDE_DIRS "${HIP_INCLUDE_DIRS};${CUDA_INCLUDE_DIRS}")
set(HIP_LIBRARIES "${HIP_LIBRARIES};${CUDA_LIBRARIES}")
if (HIP_INCLUDE_DIRS)
set_target_properties(HIP::HIP PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${HIP_INCLUDE_DIRS}")
set_target_properties(hip::hip PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${HIP_INCLUDE_DIRS}")
if (HIPBLAS_INCLUDE_DIRS)
set_target_properties(HIP::HIPBLAS PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${HIPBLAS_INCLUDE_DIRS}")
set_target_properties(roc::hipblas PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${HIPBLAS_INCLUDE_DIRS}")
else()
message(WARNING "CHAMELEON_USE_HIP requires"
message(WARNING "CHAMELEON_USE_HIP_CUDA requires"
"\n HIPBLAS_INCLUDE_DIRS to be found. Be sure you have"
"\n hipblas headers with your distribution of HIP.")
endif()
else()
message(WARNING "CHAMELEON_USE_HIP requires"
message(WARNING "CHAMELEON_USE_HIP_CUDA requires"
"\n HIP_INCLUDE_DIRS to be found. Be sure you have"
"\n hip headers with your distribution of HIP.")
endif()
if (HIP_LIBRARIES)
set_target_properties(HIP::HIP PROPERTIES INTERFACE_LINK_LIBRARIES "${HIP_LIBRARIES}")
set_target_properties(hip::hip PROPERTIES INTERFACE_LINK_LIBRARIES "${HIP_LIBRARIES}")
if (HIPBLAS_LIBRARIES)
set_target_properties(HIP::HIPBLAS PROPERTIES INTERFACE_LINK_LIBRARIES "${HIPBLAS_LIBRARIES}")
target_link_libraries(HIP::HIPBLAS INTERFACE HIP::HIP)
message("-- ${Blue}Add definition CHAMELEON_USE_HIPBLAS"
" - Use GPU kernels from hipblas${ColourReset}")
set_target_properties(roc::hipblas PROPERTIES INTERFACE_LINK_LIBRARIES "${HIPBLAS_LIBRARIES}")
target_link_libraries(roc::hipblas INTERFACE hip::hip)
else()
message(FATAL_ERROR "CHAMELEON_USE_HIP requires"
message(FATAL_ERROR "CHAMELEON_USE_HIP_CUDA requires"
"\n HIPBLAS_LIBRARIES to be found. Be sure you have"
"\n libhipblas with your distribution of HIP.")
endif()
else()
message(FATAL_ERROR "CHAMELEON_USE_HIP requires"
message(FATAL_ERROR "CHAMELEON_USE_HIP_CUDA requires"
"\n HIP_LIBRARIES to be found. Be sure you have"
"\n libamdhip64 with your distribution of ROCm.")
endif()
if (CHAMELEON_USE_HIP_CUDA AND NOT CUDA_LIBRARIES)
if (NOT CUDA_LIBRARIES)
message(FATAL_ERROR "CHAMELEON_USE_HIP_CUDA requires"
"\n CUDA_LIBRARIES to be found. Be sure you have"
"\n libcuda with your distribution of CUDA.")
......@@ -531,17 +530,13 @@ if(NOT CHAMELEON_SIMULATION)
message("-- HIPBLAS include path: ${HIPBLAS_INCLUDE_DIRS}")
message("-- HIPBLAS libraries: ${HIPBLAS_LIBRARIES}")
morse_export_imported_target(HIP HIP hip chameleon)
morse_export_imported_target(HIP HIPBLAS hipblas chameleon)
if (CHAMELEON_USE_HIP_ROC)
morse_export_imported_target(roc hipblas rochipblas chameleon)
morse_export_imported_target(hip host hiphost chameleon)
morse_export_imported_target(hip device hipdevice chameleon)
morse_export_imported_target(hip amdhip64 hipamdhip64 chameleon)
endif()
else(HIP_FOUND)
message(FATAL_ERROR "CHAMELEON_USE_HIP requires HIP to be found")
endif (HIP_FOUND)
morse_export_imported_target(hip::hip hip chameleon)
morse_export_imported_target(roc::hipblas hipblas chameleon)
endif()
message("-- ${Blue}Add definition CHAMELEON_USE_HIP"
" - Activate HIP in Chameleon${ColourReset}")
endif(CHAMELEON_USE_HIP)
......@@ -562,7 +557,7 @@ if(NOT CHAMELEON_SIMULATION)
" - Activate MPI in Chameleon${ColourReset}")
endif (MPI_C_FOUND)
morse_export_imported_target(MPI MPI_C mpi chameleon)
morse_export_imported_target(MPI::MPI_C mpi chameleon)
if (CHAMELEON_SCHED STREQUAL "PARSEC")
message(FATAL_ERROR "CHAMELEON does not support PARSEC with MPI."
......@@ -656,7 +651,7 @@ else (NOT CHAMELEON_SIMULATION)
" - Activate MPI in Chameleon${ColourReset}")
endif (MPI_C_FOUND)
morse_export_imported_target(MPI MPI_C mpi chameleon)
morse_export_imported_target(MPI::MPI_C mpi chameleon)
endif (CHAMELEON_USE_MPI)
......@@ -766,7 +761,7 @@ add_custom_target(chameleon_all_sources ALL DEPENDS ${CHAMELEON_SOURCES_TARGETS}
if(CHAMELEON_ENABLE_DOC)
add_subdirectory(doc)
if (DOXYGEN_EXECUTABLE AND EMACS_COMPILER AND TEX_COMPILER)
if (DOXYGEN_EXECUTABLE AND EMACS_COMPILER)
add_custom_target(doc ALL DEPENDS doc-homepage doxygen-out)
endif()
endif()
......@@ -791,7 +786,7 @@ endif()
# Threads::Threads may be a dependency of BLAS/LAPACK and CUDA
# the target may be required for cmake users linking with CHAMELEONconfig.cmake
if (TARGET Threads::Threads)
morse_export_imported_target(Threads Threads threads chameleon)
morse_export_imported_target(Threads::Threads threads chameleon)
endif()
# see https://cmake.org/cmake/help/latest/module/CMakePackageConfigHelpers.html
......@@ -801,10 +796,20 @@ set(BIN_INSTALL_DIR "bin/" CACHE STRING "where to install executables relative t
set(INC_INSTALL_DIR "include/" CACHE STRING "where to install headers relative to prefix" )
set(LIB_INSTALL_DIR "lib/" CACHE STRING "where to install libraries relative to prefix" )
set(PREFIX_PATH "")
if (CMAKE_PREFIX_PATH)
list(APPEND PREFIX_PATH ${CMAKE_PREFIX_PATH})
endif()
if (DEFINED ENV{CMAKE_PREFIX_PATH})
set(ENV_PREFIX_PATH $ENV{CMAKE_PREFIX_PATH})
string(REGEX REPLACE ":" ";" ENV_PREFIX_PATH "${ENV_PREFIX_PATH}" )
list(APPEND PREFIX_PATH ${ENV_PREFIX_PATH})
endif()
configure_package_config_file(cmake_modules/CHAMELEONConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/CHAMELEONConfig.cmake
INSTALL_DESTINATION ${LIB_INSTALL_DIR}/cmake/chameleon
PATH_VARS BIN_INSTALL_DIR INC_INSTALL_DIR LIB_INSTALL_DIR)
PATH_VARS BIN_INSTALL_DIR INC_INSTALL_DIR LIB_INSTALL_DIR PREFIX_PATH)
write_basic_package_version_file(CHAMELEONConfigVersion.cmake
VERSION ${CHAMELEON_VERSION}
COMPATIBILITY AnyNewerVersion)
......@@ -821,6 +826,8 @@ include(ChameleonPkgConfig)
# Create .pc file
# ---------------
chameleon_generate_pkgconfig_files()
generate_newenv_file(PACKAGE chameleon)
#------------------------------------------------------------------------------
###############################################################################
......
chameleon-1.4.0
------------------------------------------------------------------------
- map: Add an option to dynamically change from synchronous to asynchronous when calling map function, to serialize print for example.
- Add the laswp driver and testing. Be careful, the interface does not follow the lapack API to propose the op(P) \times A, or A \times op(P) operation with op(P) equal to P or P^{-1}
- Add the gesv driver to perform LU factorization and solve with its associated testing.
- StarPU: Update the minimum requirement from 1.3 to 1.4
- StarPU: When using starpu > 1.4.8, use the new distributed submit interface in the codelets instead of the classical insert task interface.
- ci: use -Werror to prevent from adding warning to the code
- Fix: all warning reported by the switch to -Werror
- testing: Set tiles allocation by default.
chameleon-1.3.0
------------------------------------------------------------------------
- mixed-precision: introduce descripto with precision adapted to local norms
- mixed-precision: introduce descriptor with precision adapted to local norms
- Add CHAMELEON_[dz]gered... functions to reduce the precision of the tiles based on a requested accuracy
- Add CHAMELEON_[dz]gerst... functions to restore the original numerical precision of the tiles in a descriptor
- types: add support for half precision arithmetic into the data descriptors
- cuda: add half precision conversion kernels, and variants of the gemm kernels (hgemm, and gemmex)
- cuda: Check error after lauching kernels
- descriptors: Add the possibility to pass arguments to the rankof
function. This is used to provide custom distribuitions through a
given file. *WARNING*: It changes the interface of
CHAMELEON_Desc_Create_User that requires aan additional `, NULL`
parameters in the general case.
CHAMELEON_Desc_Create_User that requires an additional `, NULL`
parameters in the general case.
- control: Defined the default parameters through environment variables first and make sure the testings use the default value instead of overwritting them.
- control: Make the CHAM_context_t structure public, and provide a function to the user to access the pointer in case of the development of its own functionalities using the RUNTIME API.
- compute: Refactor the code that compute the kernel dimension to potentially enable variadic tile sizes
- compute/map: Rework the map functions family to be able to pass multiple descriptor with parameterized access types.
- compute/getrf: Add a basic LU factorization with partial pivoting (WARNING: this functionnality is still under development and does not provide full performance yet)
- compute/poinv: Add the possibility to use an intermediate distribution for the TRTRI operation
- compute/getrf_nopiv: Add lookahead through temporary buffers to better regulate the communication allocations
- runtime/starpu: Whenever possible replace the lacpy codelet by a direct memory copy from the input handler to the output one
- runtime/starpu: better separation of the public interface from the internal interface for code reusing the RUNTIME API
- testings: Display in help message the option possible values when possible
- bug: fix issue with undefined vasprintf
- bug: Make sure generic algorithms are used when at least one of the data descriptor is not 2D block cyclic and might cause issues.
- bug/starpu: Fix the --forcegpu option to integrate HIP devices withing the option and make sure it's applied only when possible
- Fix issue 124: RP_CHAMELEON_PRECISION is the set of supported precisions, while CHAMELEON_PRECISION is the set of enabled precisions
- Fix the trsm flops issue that was miscalculated.
- Fix integer overflow in malloc where size_t was not used
- ci/docker: provide a simpler docker image dedicated to the project
chameleon-1.2.0
------------------------------------------------------------------------
......
......@@ -4,7 +4,7 @@
#
# @copyright 2009-2014 The University of Tennessee and The University of
# Tennessee Research Foundation. All rights reserved.
# @copyright 2012-2024 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
# @copyright 2012-2025 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
# Univ. Bordeaux. All rights reserved.
# @copyright 2016-2018 KAUST. All rights reserved.
#
......
......@@ -9,6 +9,9 @@ set_and_check(CHAMELEON_LIB_DIR "@PACKAGE_LIB_INSTALL_DIR@")
check_required_components(CHAMELEON)
# propagate the CMAKE_PREFIX_PATH informations used during chameleon installation to give paths to dependencies
list(APPEND CMAKE_PREFIX_PATH "@PACKAGE_PREFIX_PATH@")
# dependencies of CHAMELEON
include("${CMAKE_CURRENT_LIST_DIR}/mTargets.cmake")
if (EXISTS "${CMAKE_CURRENT_LIST_DIR}/threadsTargets.cmake")
......@@ -38,13 +41,13 @@ if (@CHAMELEON_USE_CUDA@ AND NOT @CHAMELEON_SIMULATION@)
include("${CMAKE_CURRENT_LIST_DIR}/cublasTargets.cmake")
endif()
if (@CHAMELEON_USE_HIP@ AND NOT @CHAMELEON_SIMULATION@)
include("${CMAKE_CURRENT_LIST_DIR}/hipTargets.cmake")
include("${CMAKE_CURRENT_LIST_DIR}/hipblasTargets.cmake")
if (@CHAMELEON_USE_HIP_ROC@)
include("${CMAKE_CURRENT_LIST_DIR}/rochipblasTargets.cmake")
include("${CMAKE_CURRENT_LIST_DIR}/hiphostTargets.cmake")
include("${CMAKE_CURRENT_LIST_DIR}/hipdeviceTargets.cmake")
include("${CMAKE_CURRENT_LIST_DIR}/hipamdhip64Targets.cmake")
include(CMakeFindDependencyMacro)
find_dependency(hip REQUIRED)
find_dependency(hipblas REQUIRED)
else ()
include("${CMAKE_CURRENT_LIST_DIR}/hipTargets.cmake")
include("${CMAKE_CURRENT_LIST_DIR}/hipblasTargets.cmake")
endif()
endif()
......
......@@ -2,17 +2,17 @@
#
# @file ChameleonPkgConfig.cmake
#
# @copyright 2012-2024 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
# @copyright 2012-2025 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
# Univ. Bordeaux. All rights reserved.
#
###
#
# @project Chameleon
# @version 1.2.0
# @version 1.3.0
# @author Mathieu Faverge
# @author Florent Pruvost
# @author Abel Calluaud
# @date 2022-02-22
# @date 2024-12-16
#
###
include(GenPkgConfig)
......@@ -93,7 +93,6 @@ macro(chameleon_generate_pkgconfig_files)
if(CHAMELEON_USE_CUDA)
list(APPEND GPUCUBLAS_PKGCONFIG_LIBS_PRIVATE ${CUDA_CUBLAS_LIBRARIES})
list(APPEND GPUCUBLAS_PKGCONFIG_REQUIRED "cuda")
list(APPEND CHAMELEON_PKGCONFIG_REQUIRED "gpucublas")
endif()
......@@ -110,7 +109,28 @@ macro(chameleon_generate_pkgconfig_files)
)
if(CHAMELEON_USE_MPI)
list(APPEND CHAMELEON_PKGCONFIG_REQUIRED "mpi")
if("${MPI_C_LIBRARIES}" MATCHES "mpich")
set(MPI_NAME "mpich")
elseif("${MPI_C_LIBRARIES}" MATCHES "mvapich2")
set(MPI_NAME "mvapich2")
elseif("${MPI_C_LIBRARIES}" MATCHES "madmpi" OR "${MPI_C_LIBRARIES}" MATCHES "nmad")
set(MPI_NAME "nmad")
elseif("${MPI_C_LIBRARIES}" MATCHES "openmpi")
set(MPI_NAME "ompi")
else()
set(MPI_NAME "mpi")
endif()
find_file(MPIPC_PATH "${MPI_NAME}.pc"
HINTS ${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}
ENV PKG_CONFIG_PATH
PATH_SUFFIXES pkgconfig
NO_CACHE)
if(MPIPC_PATH)
list(APPEND CHAMELEON_PKGCONFIG_REQUIRED ${MPI_NAME})
else()
list(APPEND CHAMELEON_PKGCONFIG_INCS "${MPI_C_INCLUDE_DIRS}")
list(APPEND CHAMELEON_PKGCONFIG_LIBS "${MPI_C_LIBRARIES}")
endif()
endif()
generate_pkgconfig_files(
......
......@@ -4,7 +4,7 @@
#
# @copyright 2009-2014 The University of Tennessee and The University of
# Tennessee Research Foundation. All rights reserved.
# @copyright 2012-2024 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
# @copyright 2012-2025 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
# Univ. Bordeaux. All rights reserved.
#
###
......@@ -17,11 +17,12 @@
# Univ. of California Berkeley,
# Univ. of Colorado Denver.
#
# @version 1.2.0
# @version 1.3.0
# @author Florent Pruvost
# @author Mathieu Faverge
# @author Loris Lucido
# @date 2023-01-30
# @author Abel Calluaud
# @date 2024-03-27
#
###
......
......@@ -2,7 +2,11 @@ set(BUILD_SHARED_LIBS "ON" CACHE BOOL "")
set(CMAKE_INSTALL_PREFIX "$ENV{PWD}/install-$ENV{VERSION}" CACHE PATH "")
set(CMAKE_VERBOSE_MAKEFILE "ON" CACHE BOOL "")
set(CMAKE_C_FLAGS "-Werror")
if(CMAKE_C_FLAGS)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror" CACHE STRING "")
else()
set(CMAKE_C_FLAGS "-Werror" CACHE STRING "")
endif()
option(MORSE_ENABLE_WARNING "Enable warning messages" ON)
option(MORSE_ENABLE_COVERAGE "Enable flags for coverage test" ON)
......
......@@ -3,7 +3,7 @@
Python Chameleon specific substitution rules for the Precision Generator script.
@copyright 2019-2024 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
@copyright 2019-2025 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
Univ. Bordeaux. All rights reserved.
@version 1.3.0
......@@ -11,7 +11,7 @@
@author Florent Pruvost
@author Nathalie Furmento
@author Alycia Lisito
@date 2023-07-06
@date 2024-11-14
"""
_extra_blas = [
......@@ -51,6 +51,9 @@ _extra_blas = [
('', 'sprint', 'dprint', 'cprint', 'zprint' ),
('', 'sgered', 'dgered', 'cgered', 'zgered' ),
('', 'sgerst', 'dgerst', 'cgerst', 'zgerst' ),
('', 'sipiv_allreduce', 'dipiv_allreduce', 'cipiv_allreduce', 'zipiv_allreduce' ),
('', 'sperm_allreduce', 'dperm_allreduce', 'cperm_allreduce', 'zperm_allreduce' ),
('', 'sperm_reduce', 'dperm_reduce', 'cperm_reduce', 'zperm_reduce' ),
]
_extra_BLAS = [ [ x.upper() for x in row ] for row in _extra_blas ]
......@@ -96,7 +99,7 @@ subs = {
('', 'ORGLQ', 'ORGLQ', 'UNGLQ', 'UNGLQ' ),
('', 'SYEV', 'SYEV', 'HEEV', 'HEEV' ),
('', 'SYG', 'SYG', 'HEG', 'HEG' ),
('', 'const float ', 'const double ', 'const void \*', 'const void \*' ),
('', 'const float ', 'const double ', r'const void \*', r'const void \*' ), # Line that is extremely dangerous.
]
+ _extra_blas
+ _extra_BLAS
......
Subproject commit 34e01580a425eb5fc13f5495a9a602fb26a3a589
Subproject commit bc34cfd2ce19d525e2e6a82b7ec6c8bca45e2c97
......@@ -4,7 +4,7 @@
#
# @copyright 2009-2014 The University of Tennessee and The University of
# Tennessee Research Foundation. All rights reserved.
# @copyright 2012-2024 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
# @copyright 2012-2025 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
# Univ. Bordeaux. All rights reserved.
#
###
......@@ -28,7 +28,8 @@
# @author Loris Lucido
# @author Matthieu Kuhn
# @author Ana Hourcau
# @date 2024-07-17
# @author Matteo Marcos
# @date 2025-03-24
#
###
......@@ -40,11 +41,12 @@ set(CHAMELEON_CONTROL
../control/context.c
../control/control.c
../control/descriptor.c
../control/descriptor_rec.c
../control/descriptor_helpers.c
../control/descriptor_ipiv.c
../control/workspace.c
../control/descriptor_rec.c
../control/lamch.c
../control/tile.c
../control/workspace.c
../control/chameleon_f77.c
../control/chameleon_mf77.c
map.c
......@@ -149,7 +151,7 @@ set(ZSRC
zgepdf_qr.c
zgeqrs.c
zgeqrs_param.c
#zgesv.c
zgesv.c
zgesv_incpiv.c
zgesv_nopiv.c
#zgetrf.c
......@@ -158,6 +160,7 @@ set(ZSRC
zgetrf.c
zgetrs_incpiv.c
zgetrs_nopiv.c
zgetrs.c
zlacpy.c
zlange.c
zlanhe.c
......@@ -218,8 +221,8 @@ set(ZSRC
#pzhetrd_hb2ht.c
pzhetrd_he2hb.c
#pzlarft_blgtrd.c
#pzlaswp.c
#pzlaswpc.c
pzlaswp.c
pzlaswpc.c
#pztrsmrv.c
#pzunmqr_blgtrd.c
#########################
......@@ -236,7 +239,7 @@ set(ZSRC
#zhegv.c
#zhegvd.c
zhetrd.c
#zlaswp.c
zlaswp.c
#zlaswpc.c
#ztrsmrv.c
##################
......@@ -374,7 +377,7 @@ endif()
if (CHAMELEON_USE_HIP)
if (NOT CHAMELEON_SIMULATION)
target_link_libraries(chameleon PUBLIC gpuhipblas)
target_link_libraries(chameleon PUBLIC HIP::HIPBLAS)
target_link_libraries(chameleon PUBLIC roc::hipblas)
endif()
endif()
target_link_libraries(chameleon PUBLIC MORSE::M)
......
......@@ -2,16 +2,16 @@
*
* @file gepdf.h
*
* @copyright 2022-2024 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
* @copyright 2022-2025 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
* Univ. Bordeaux. All rights reserved.
*
***
*
* @brief Chameleon GEPDF auxiliary function.
*
* @version 1.2.0
* @version 1.3.0
* @author Mathieu Faverge
* @date 2022-02-22
* @date 2024-02-18
*
*/
#ifndef _chameleon_gepdf_h_
......
......@@ -2,7 +2,7 @@
*
* @file map.c
*
* @copyright 2018-2024 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
* @copyright 2018-2025 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
* Univ. Bordeaux. All rights reserved.
*
***
......@@ -11,7 +11,7 @@
*
* @version 1.3.0
* @author Mathieu Faverge
* @date 2024-03-11
* @date 2024-03-14
*
*/
#include "control/common.h"
......@@ -37,10 +37,11 @@ map_cpu( void *op_args,
}
static cham_map_operator_t map_op = {
.name = "map",
.cpufunc = map_cpu,
.cudafunc = NULL,
.hipfunc = NULL,
.name = "map",
.cpufunc = map_cpu,
.cudafunc = NULL,
.hipfunc = NULL,
.synchronous = 0,
};
/**
......