diff --git a/.gitlab-ci-env.sh b/.gitlab-ci-env.sh index e055861482b5c1614a142cd3457cb9fce253d4ba..d615bff8669efbc3606e3c367e75882f841788d9 100755 --- a/.gitlab-ci-env.sh +++ b/.gitlab-ci-env.sh @@ -26,32 +26,11 @@ if [[ "$SYSTEM" == "linux" ]]; then fi export STARPU_DIR=/home/gitlab/install/starpu${STARPU_VARIANT} - # add additional env. var. depending on the starpu variant - case $STARPU_VARIANT in - -hip ) - export CMAKE_PREFIX_PATH=$STARPU_DIR:/opt/rocm - export LD_LIBRARY_PATH=/opt/rocm/lib - ;; - -hipcuda ) - export CMAKE_PREFIX_PATH=$STARPU_DIR:$HIPCUDA_DIR - export LD_LIBRARY_PATH=$HIPCUDA_DIR/lib - export HIP_PLATFORM=nvidia - export HIP_PATH=$HIPCUDA_DIR - ;; - * ) - ;; - esac - # for build: better to rely on pkg-config than to guess libraries with the env. var. - export PKG_CONFIG_PATH=$PARSEC_DIR/lib/pkgconfig:$PKG_CONFIG_PATH export PKG_CONFIG_PATH=$STARPU_DIR/lib/pkgconfig:$PKG_CONFIG_PATH - export PKG_CONFIG_PATH=$SIMGRID_DIR/lib/pkgconfig:$PKG_CONFIG_PATH # for ctest: we need this at runtime - export LD_LIBRARY_PATH=$PARSEC_DIR/lib:$LD_LIBRARY_PATH - export LD_LIBRARY_PATH=$QUARK_DIR/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=$STARPU_DIR/lib:$LD_LIBRARY_PATH - export LD_LIBRARY_PATH=$SIMGRID_DIR/lib:$LD_LIBRARY_PATH elif [[ "$SYSTEM" == "windows" ]]; then diff --git a/.gitlab/build.sh b/.gitlab/build.sh index de06d28ccbb1424496d8169a107b7c404ae247bb..a3ef571a10ac7488299e1de34e8e040e9365662d 100755 --- a/.gitlab/build.sh +++ b/.gitlab/build.sh @@ -3,8 +3,25 @@ set -ex SCAN="" -if [[ "$SYSTEM" != "windows" ]]; then - if [[ "$SYSTEM" == "macosx" ]]; then +# Configure with CMake +case $SYSTEM in + + linux) + echo "build on linux" + source .gitlab-ci-env.sh $CHAM_CI_ENV_ARG + if [[ $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH ]]; then + SCAN="scan-build -plist --intercept-first --exclude CMakeFiles --analyze-headers -o analyzer_reports " + fi + eval '${SCAN}cmake -B build-${VERSION} -S . -C cmake_modules/gitlab-ci-initial-cache.cmake $BUILD_OPTIONS' + ;; + + guix) + echo "build on guix" + cmake -B build-${VERSION} -S . -C cmake_modules/gitlab-ci-initial-cache.cmake $BUILD_OPTIONS + ;; + + macosx) + echo "build on macosx" # check starpu is already installed and install it if necessary DEP_INSTALLED=`brew ls --versions starpu | cut -d " " -f 2` if [[ -z "${DEP_INSTALLED}" ]]; then @@ -24,23 +41,27 @@ if [[ "$SYSTEM" != "windows" ]]; then cmake -B build-${VERSION} -S . \ -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=$PWD/install-${VERSION} \ -DMORSE_ENABLE_COVERAGE=OFF -DBLA_PREFER_PKGCONFIG=ON - else - source .gitlab-ci-env.sh $CHAM_CI_ENV_ARG - if [[ $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH ]] - then - SCAN="scan-build -plist --intercept-first --exclude CMakeFiles --analyze-headers -o analyzer_reports " - fi - eval '${SCAN}cmake -B build-${VERSION} -S . -C cmake_modules/gitlab-ci-initial-cache.cmake $BUILD_OPTIONS' - fi -else - # on windows the mpi_f08 interface is missing, see https://www.scivision.dev/windows-mpi-msys2/ - # do not use static libraries because executables are too large and the build - # directory can reach more than 10Go - cmake -GNinja -B build-${VERSION} -S . \ - -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=$PWD/install-${VERSION} \ - -DCHAMELEON_USE_MPI=OFF -fi + ;; + + windows) + echo "build on windows" + # on windows the mpi_f08 interface is missing, see https://www.scivision.dev/windows-mpi-msys2/ + # do not use static libraries because executables are too large and the build + # directory can reach more than 10Go + cmake -GNinja -B build-${VERSION} -S . \ + -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=$PWD/install-${VERSION} \ + -DCHAMELEON_USE_MPI=OFF + ;; + *) + echo "The SYSTEM environment variable is $SYSTEM. It is not one of : linux, guix, macosx, windows -> exit 1." + exit 1 + ;; +esac + +# Compile eval '${SCAN}cmake --build build-${VERSION} -j 4' + +# Install cmake --install build-${VERSION} # @@ -59,6 +80,8 @@ export FC=gfortran # Set the path variables if [[ "$SYSTEM" == "linux" ]]; then + #export LIBRARY_PATH=$PWD/../../install-${VERSION}/lib:/usr/local/lib:$LIBRARY_PATH + #export LD_LIBRARY_PATH=$PWD/../../install-${VERSION}/lib:/usr/local/lib:$LD_LIBRARY_PATH export LIBRARY_PATH=$PWD/../../install-${VERSION}/lib:$LIBRARY_PATH export LD_LIBRARY_PATH=$PWD/../../install-${VERSION}/lib:$LD_LIBRARY_PATH elif [[ "$SYSTEM" == "macosx" ]]; then @@ -69,10 +92,12 @@ elif [[ "$SYSTEM" == "windows" ]]; then export PATH=$PWD/../../install-${VERSION}/bin:$PATH fi -# 1) using cmake: -./link_cmake.sh $PWD/../../install-${VERSION} -# 2) using pkg-config: -./link_pkgconfig.sh $PWD/../../install-${VERSION} +#if [[ "$SYSTEM" != "guix" ]]; then + # 1) using cmake: + ./link_cmake.sh $PWD/../../install-${VERSION} + # 2) using pkg-config: + ./link_pkgconfig.sh $PWD/../../install-${VERSION} +#fi cd ../.. rm -r install-${VERSION} diff --git a/.gitlab/build.yml b/.gitlab/build.yml index b79afef185608c55a760b731963fd3fd2db321f9..e5d6743322aec15b494fc88129fb6f2672b926b3 100644 --- a/.gitlab/build.yml +++ b/.gitlab/build.yml @@ -1,16 +1,18 @@ --- -.build_script_linux: +.build_script_common: stage: build - tags: ["docker", "large"] extends: .only-master-mr - script: - - bash .gitlab/build.sh | tee ${LOGNAME}.log artifacts: name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" - expire_in: 180 minutes + expire_in: 1 week untracked: true when: always +.build_script_linux: + extends: .build_script_common + script: + - bash .gitlab/build.sh | tee ${LOGNAME}.log + build_hmat: extends: .build_script_linux variables: @@ -27,7 +29,6 @@ build_openmp: LOGNAME: "chameleon-build-${SYSTEM}-${VERSION}" BUILD_OPTIONS: "-DCHAMELEON_SCHED=OPENMP" - build_parsec: extends: .build_script_linux variables: @@ -50,25 +51,34 @@ build_starpu: SYSTEM: linux VERSION: starpu LOGNAME: "chameleon-build-${SYSTEM}-${VERSION}" - BUILD_OPTIONS: "-DCHAMELEON_USE_CUDA=ON -DCHAMELEON_USE_MPI=ON" + BUILD_OPTIONS: "-DCHAMELEON_USE_CUDA=OFF -DCHAMELEON_USE_MPI=ON" -build_starpu_hip: - extends: .build_script_linux +.build_script_guix: + tags: ['plafrim'] + extends: .build_script_common + script: + - guix describe -f channels + - guix shell --pure --preserve=SYSTEM --preserve=VERSION --preserve=LOGNAME --preserve=BUILD_OPTIONS + -D chameleon-${GUIX_CHAMELEON_VARIANT} coreutils bash-minimal -- + bash .gitlab/build.sh | tee ${LOGNAME}.log + +build_starpu_cuda: + extends: .build_script_guix variables: - SYSTEM: linux - VERSION: starpu_hip + SYSTEM: guix + VERSION: starpu_cuda + GUIX_CHAMELEON_VARIANT: cuda LOGNAME: "chameleon-build-${SYSTEM}-${VERSION}" - CHAM_CI_ENV_ARG: hip - BUILD_OPTIONS: "-DCHAMELEON_USE_HIP_ROC=ON -DCHAMELEON_USE_MPI=ON" + BUILD_OPTIONS: "-DCHAMELEON_USE_CUDA=ON -DCHAMELEON_USE_MPI=ON -DBLA_VENDOR=OpenBLAS" -build_starpu_hipcuda: - extends: .build_script_linux +build_starpu_hip: + extends: .build_script_guix variables: - SYSTEM: linux - VERSION: starpu_hipcuda + SYSTEM: guix + VERSION: starpu_hip + GUIX_CHAMELEON_VARIANT: hip LOGNAME: "chameleon-build-${SYSTEM}-${VERSION}" - CHAM_CI_ENV_ARG: hipcuda - BUILD_OPTIONS: "-DCHAMELEON_USE_HIP_CUDA=ON -DCHAMELEON_HIPBLAS_PATH=/home/gitlab/hipcuda/hipblas -DCHAMELEON_USE_MPI=ON" + BUILD_OPTIONS: "-DCHAMELEON_USE_HIP_ROC=ON -DCHAMELEON_USE_MPI=ON -DBLA_VENDOR=OpenBLAS -DCMAKE_C_COMPILER=gcc -DCMAKE_Fortran_COMPILER=gfortran" build_starpu_simgrid: extends: .build_script_linux @@ -91,7 +101,7 @@ build_starpu_macosx: - bash .gitlab/build.sh | tee ${LOGNAME}.log artifacts: name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" - expire_in: 180 minutes + expire_in: 1 week paths: - ${LOGNAME}.log cache: @@ -113,7 +123,7 @@ build_starpu_macosx: - bash -lc .gitlab/build.sh | tee "$env:LOGNAME.log" artifacts: name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" - expire_in: 180 minutes + expire_in: 1 week paths: - ${LOGNAME}.log cache: diff --git a/.gitlab/check_link/link_cmake.sh b/.gitlab/check_link/link_cmake.sh index 613218956c689e3187ae72e99207f2d51a2b2305..3b995b52b32a4c3702af05adb3e557494efedc94 100755 --- a/.gitlab/check_link/link_cmake.sh +++ b/.gitlab/check_link/link_cmake.sh @@ -21,7 +21,7 @@ then exit 1 fi cmake -B build -DCMAKE_PREFIX_PATH=$1 -cmake --build build --verbose +cmake --build build --verbose if [[ "$VERSION" != "starpu_simgrid" ]]; then ctest --test-dir build --verbose fi