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
Commits on Source (301)
Showing
with 327 additions and 146 deletions
...@@ -26,32 +26,11 @@ if [[ "$SYSTEM" == "linux" ]]; then ...@@ -26,32 +26,11 @@ if [[ "$SYSTEM" == "linux" ]]; then
fi fi
export STARPU_DIR=/home/gitlab/install/starpu${STARPU_VARIANT} 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. # 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=$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 # 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=$STARPU_DIR/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$SIMGRID_DIR/lib:$LD_LIBRARY_PATH
elif [[ "$SYSTEM" == "windows" ]]; then elif [[ "$SYSTEM" == "windows" ]]; then
......
--- ---
stages: stages:
- docker
- pre - pre
- build - build
- test - test
- coverage - coverage
- analyze - analyze
- validate
- deploy - deploy
# git config --global ahev been added to get around the issue related in
# https://github.com/actions/checkout/issues/760 for github
# Does not seem to be fixed for gitlab-runner yet
before_script:
- git config --global --add safe.directory $CI_PROJECT_DIR
- git config --global --add safe.directory $CI_PROJECT_DIR/cmake_modules/morse_cmake
- git config --global --add safe.directory $CI_PROJECT_DIR/coreblas/hmat-oss
- git config --global --add safe.directory $CI_PROJECT_DIR/hqr
- git config --global --add safe.directory $CI_PROJECT_DIR/testing/test_fembem
- git submodule update --init --recursive
include: include:
- .gitlab/preliminary.yml
- .gitlab/common.yml - .gitlab/common.yml
- .gitlab/preliminary.yml
- .gitlab/docker.yml
- .gitlab/build.yml - .gitlab/build.yml
- .gitlab/test_starpu.yml - .gitlab/test_starpu.yml
- .gitlab/test_starpu_plafrim.yml
- .gitlab/test_starpu_simgrid.yml - .gitlab/test_starpu_simgrid.yml
- .gitlab/test_parsec.yml - .gitlab/test_parsec.yml
- .gitlab/test_quark.yml - .gitlab/test_quark.yml
...@@ -32,7 +23,6 @@ include: ...@@ -32,7 +23,6 @@ include:
- .gitlab/coverage.yml - .gitlab/coverage.yml
- .gitlab/coverity.yml - .gitlab/coverity.yml
- .gitlab/sonarqube.yml - .gitlab/sonarqube.yml
- .gitlab/validate.yml
- .gitlab/bench_plafrim.yml - .gitlab/bench_plafrim.yml
- .gitlab/pages.yml - .gitlab/pages.yml
- .gitlab/release.yml - .gitlab/release.yml
#
# @file Dockerfile
#
# @copyright 2024-2025 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
# Univ. Bordeaux. All rights reserved.
#
# @version 1.3.0
# @author Florent Pruvost
# @date 2024-12-03
#
# This docker image is used to test the package during gitlab-ci pipelines.
# It should be stored in the gitlab's project container registry:
# https://gitlab.inria.fr/solverstack/chameleon/container_registry
#
FROM registry.gitlab.inria.fr/solverstack/docker/analysis
USER root
# Chameleon dependencies: cpu kernels
RUN apt-get -y upgrade --no-install-recommends \
libblas-dev \
liblapack-dev \
liblapacke-dev
RUN update-alternatives --set libblas.so-x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/blas/libblas.so
RUN update-alternatives --set libblas.so.3-x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/blas/libblas.so.3
RUN update-alternatives --set liblapack.so-x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/lapack/liblapack.so
RUN update-alternatives --set liblapack.so.3-x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3
# Starpu dependencies
RUN apt-get -y upgrade --no-install-recommends \
autoconf \
automake \
libtool-bin \
libfxt-dev \
libhwloc-dev \
libopenmpi-dev \
libsimgrid-dev
RUN apt-get autoremove -y
RUN apt-get autoclean -y
RUN apt-get purge -y
RUN update-ca-certificates
# Install PARSEC
RUN git clone https://bitbucket.org/mfaverge/parsec.git && \
cd parsec && \
git checkout mymaster && \
git checkout 6022a61dc96c25f11dd2aeabff2a5b3d7bce867d && \
git submodule update && \
cmake -B build -DCMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=ON -DPARSEC_GPU_WITH_CUDA=OFF -DPARSEC_DIST_WITH_MPI=OFF && \
cmake --build build -j5 && \
cmake --install build && \
cd .. && \
rm parsec/ -rf
# Install QUARK
RUN git clone https://github.com/ecrc/quark && \
cd quark/ && \
git checkout db4aef9a66a00487d849cf8591927dcebe18ef2f && \
sed -i -e "s#prefix=.*#prefix=/usr#g" make.inc && \
sed -i -e "s#CFLAGS=.*#CFLAGS= -g -O2 -DADD_ -fPIC#g" make.inc && \
make && \
make install && \
cd .. && \
rm quark/ -rf
# Install StarPU
RUN wget https://files.inria.fr/starpu/starpu-1.4.7/starpu-1.4.7.tar.gz > /dev/null 2>&1 && \
tar xzf starpu-1.4.7.tar.gz && \
cd starpu-1.4.7/ && \
./configure --prefix=/home/gitlab/install/starpu --enable-debug --disable-build-doc --with-fxt --disable-simgrid && \
make -j5 install
# Install StarPU with Simgrid
RUN cd starpu-1.4.7/ && \
./configure --prefix=/home/gitlab/install/starpu-simgrid --enable-debug --disable-build-doc --with-fxt --enable-simgrid && \
make -j5 install && \
cd ../ && \
rm starpu-1.4.7/ -rf && \
rm starpu-1.4.7.tar.gz
USER gitlab
# Set some default environment variables
ENV LIBRARY_PATH=/usr/local/lib
ENV LD_LIBRARY_PATH=/usr/local/lib
ENV PKG_CONFIG_PATH=/home/gitlab/install/starpu/lib/pkgconfig
#
# @file Dockerfile-pages
#
# @copyright 2024-2025 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
# Univ. Bordeaux. All rights reserved.
#
# @version 1.3.0
# @author Florent Pruvost
# @date 2024-12-03
#
# This docker image is used to test the package during gitlab-ci pipelines.
# It should be stored in the gitlab's project container registry:
# https://gitlab.inria.fr/solverstack/chameleon/container_registry
#
FROM registry.gitlab.inria.fr/solverstack/chameleon
USER root
# Chameleon tools/pages.sh script additional dependencies
RUN apt-get -y upgrade --no-install-recommends \
emacs \
emacs-goodies-el \
elpa-htmlize \
python3-click \
python3-elasticsearch \
python3-pandas \
r-cran-ggplot2 \
r-cran-plyr \
r-cran-reshape2
RUN apt-get autoremove -y
RUN apt-get autoclean -y
RUN apt-get purge -y
USER gitlab
# Set some default environment variables
ENV LIBRARY_PATH=/usr/local/lib
ENV LD_LIBRARY_PATH=/usr/local/lib
ENV PKG_CONFIG_PATH=/home/gitlab/install/starpu/lib/pkgconfig
...@@ -3,8 +3,25 @@ set -ex ...@@ -3,8 +3,25 @@ set -ex
SCAN="" SCAN=""
if [[ "$SYSTEM" != "windows" ]]; then # Configure with CMake
if [[ "$SYSTEM" == "macosx" ]]; then case $SYSTEM in
guix)
echo "build on guix"
cmake -B build-${VERSION} -S . -C cmake_modules/gitlab-ci-initial-cache.cmake $BUILD_OPTIONS
;;
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'
;;
macosx)
echo "build on macosx"
# check starpu is already installed and install it if necessary # check starpu is already installed and install it if necessary
DEP_INSTALLED=`brew ls --versions starpu | cut -d " " -f 2` DEP_INSTALLED=`brew ls --versions starpu | cut -d " " -f 2`
if [[ -z "${DEP_INSTALLED}" ]]; then if [[ -z "${DEP_INSTALLED}" ]]; then
...@@ -24,29 +41,39 @@ if [[ "$SYSTEM" != "windows" ]]; then ...@@ -24,29 +41,39 @@ if [[ "$SYSTEM" != "windows" ]]; then
cmake -B build-${VERSION} -S . \ cmake -B build-${VERSION} -S . \
-DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=$PWD/install-${VERSION} \ -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=$PWD/install-${VERSION} \
-DMORSE_ENABLE_COVERAGE=OFF -DBLA_PREFER_PKGCONFIG=ON -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 ]] windows)
then echo "build on windows"
SCAN="scan-build -plist --intercept-first --exclude CMakeFiles --analyze-headers -o analyzer_reports " # on windows the mpi_f08 interface is missing, see https://www.scivision.dev/windows-mpi-msys2/
fi # do not use static libraries because executables are too large and the build
eval '${SCAN}cmake -B build-${VERSION} -S . -C cmake_modules/gitlab-ci-initial-cache.cmake $BUILD_OPTIONS' # directory can reach more than 10Go
fi cmake -GNinja -B build-${VERSION} -S . \
else -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=$PWD/install-${VERSION} \
# on windows the mpi_f08 interface is missing, see https://www.scivision.dev/windows-mpi-msys2/ -DCHAMELEON_USE_MPI=OFF
# 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 . \ echo "The SYSTEM environment variable is $SYSTEM. It is not one of : guix, linux, macosx, windows -> exit 1."
-DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=$PWD/install-${VERSION} \ exit 1
-DCHAMELEON_USE_MPI=OFF ;;
fi esac
eval '${SCAN}cmake --build build-${VERSION} -j 4'
# Compile
eval '${SCAN}cmake --build build-${VERSION} -j ${CMAKE_BUILD_PARALLEL_LEVEL} > /dev/null'
# Install
cmake --install build-${VERSION} cmake --install build-${VERSION}
# #
# Check link to chameleon # Check link to chameleon
# #
cd .gitlab/check_link/
# Set the path variables
if [[ "$SYSTEM" == "windows" ]]; then
export PATH="/c/Windows/WinSxS/x86_microsoft-windows-m..namespace-downlevel_31bf3856ad364e35_10.0.19041.1_none_21374cb0681a6320":$PATH
fi
source install-${VERSION}/bin/chameleon_env
# Set the compiler # Set the compiler
if [[ "$SYSTEM" == "macosx" ]]; then if [[ "$SYSTEM" == "macosx" ]]; then
...@@ -57,18 +84,7 @@ else ...@@ -57,18 +84,7 @@ else
fi fi
export FC=gfortran export FC=gfortran
# Set the path variables cd .gitlab/check_link/
if [[ "$SYSTEM" == "linux" ]]; then
export LIBRARY_PATH=$PWD/../../install-${VERSION}/lib:$LIBRARY_PATH
export LD_LIBRARY_PATH=$PWD/../../install-${VERSION}/lib:$LD_LIBRARY_PATH
elif [[ "$SYSTEM" == "macosx" ]]; then
export LIBRARY_PATH=$PWD/../../install-${VERSION}/lib:$LIBRARY_PATH
export DYLD_LIBRARY_PATH=$PWD/../../install-${VERSION}/lib:$DYLD_LIBRARY_PATH
elif [[ "$SYSTEM" == "windows" ]]; then
export PATH="/c/Windows/WinSxS/x86_microsoft-windows-m..namespace-downlevel_31bf3856ad364e35_10.0.19041.1_none_21374cb0681a6320":$PATH
export PATH=$PWD/../../install-${VERSION}/bin:$PATH
fi
# 1) using cmake: # 1) using cmake:
./link_cmake.sh $PWD/../../install-${VERSION} ./link_cmake.sh $PWD/../../install-${VERSION}
# 2) using pkg-config: # 2) using pkg-config:
......
--- ---
.build_script_linux: .build_script_common:
stage: build stage: build
tags: ["docker", "large"]
extends: .only-master-mr extends: .only-master-mr
script: variables:
- bash .gitlab/build.sh | tee ${LOGNAME}.log CMAKE_BUILD_PARALLEL_LEVEL: 4
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
expire_in: 180 minutes expire_in: 1 week
untracked: true untracked: true
when: always when: always
.build_script_linux:
extends: .build_script_common
tags: ['ci.inria.fr', 'linux', 'large']
variables:
GIT_CLONE_PATH: $CI_BUILDS_DIR/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME
SYSTEM: linux
script:
- bash .gitlab/build.sh | tee ${LOGNAME}.log
build_hmat: build_hmat:
extends: .build_script_linux extends: .build_script_linux
variables: variables:
SYSTEM: linux
VERSION: hmat VERSION: hmat
LOGNAME: "chameleon-build-${SYSTEM}-${VERSION}" LOGNAME: "chameleon-build-${SYSTEM}-${VERSION}"
BUILD_OPTIONS: "-DCHAMELEON_USE_CUDA=OFF -DCHAMELEON_USE_MPI=ON -DCHAMELEON_USE_HMAT=ON" BUILD_OPTIONS: "-DCHAMELEON_USE_CUDA=OFF -DCHAMELEON_USE_MPI=ON -DCHAMELEON_USE_HMATOSS=ON"
build_openmp: build_openmp:
extends: .build_script_linux extends: .build_script_linux
variables: variables:
SYSTEM: linux
VERSION: openmp VERSION: openmp
LOGNAME: "chameleon-build-${SYSTEM}-${VERSION}" LOGNAME: "chameleon-build-${SYSTEM}-${VERSION}"
BUILD_OPTIONS: "-DCHAMELEON_SCHED=OPENMP" BUILD_OPTIONS: "-DCHAMELEON_SCHED=OPENMP"
build_parsec: build_parsec:
extends: .build_script_linux extends: .build_script_linux
variables: variables:
SYSTEM: linux
VERSION: parsec VERSION: parsec
LOGNAME: "chameleon-build-${SYSTEM}-${VERSION}" LOGNAME: "chameleon-build-${SYSTEM}-${VERSION}"
BUILD_OPTIONS: "-DCHAMELEON_SCHED=PARSEC" BUILD_OPTIONS: "-DCHAMELEON_SCHED=PARSEC"
...@@ -39,7 +43,6 @@ build_parsec: ...@@ -39,7 +43,6 @@ build_parsec:
build_quark: build_quark:
extends: .build_script_linux extends: .build_script_linux
variables: variables:
SYSTEM: linux
VERSION: quark VERSION: quark
LOGNAME: "chameleon-build-${SYSTEM}-${VERSION}" LOGNAME: "chameleon-build-${SYSTEM}-${VERSION}"
BUILD_OPTIONS: "-DCHAMELEON_SCHED=QUARK" BUILD_OPTIONS: "-DCHAMELEON_SCHED=QUARK"
...@@ -47,33 +50,42 @@ build_quark: ...@@ -47,33 +50,42 @@ build_quark:
build_starpu: build_starpu:
extends: .build_script_linux extends: .build_script_linux
variables: variables:
SYSTEM: linux
VERSION: starpu VERSION: starpu
LOGNAME: "chameleon-build-${SYSTEM}-${VERSION}" 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: .build_script_guix:
extends: .build_script_linux tags: ['plafrim']
extends: .build_script_common
variables: variables:
SYSTEM: linux SYSTEM: guix
VERSION: starpu_hip CMAKE_BUILD_PARALLEL_LEVEL: 20
script:
- guix describe -f channels
- guix shell --pure --preserve=SYSTEM --preserve=VERSION --preserve=LOGNAME --preserve=BUILD_OPTIONS --preserve=CMAKE_BUILD_PARALLEL_LEVEL
-D chameleon-${GPU_BACKEND} ${BLAS} coreutils bash-minimal --
bash .gitlab/build.sh | tee ${LOGNAME}.log
build_starpu_cuda:
extends: .build_script_guix
variables:
VERSION: starpu_cuda
GPU_BACKEND: cuda
BLAS: "--with-input=openblas=intel-oneapi-mkl"
LOGNAME: "chameleon-build-${SYSTEM}-${VERSION}" LOGNAME: "chameleon-build-${SYSTEM}-${VERSION}"
CHAM_CI_ENV_ARG: hip BUILD_OPTIONS: "-DCHAMELEON_USE_CUDA=ON -DCHAMELEON_USE_MPI=OFF -DBLA_VENDOR=Intel10_64lp_seq"
BUILD_OPTIONS: "-DCHAMELEON_USE_HIP_ROC=ON -DCHAMELEON_USE_MPI=ON"
build_starpu_hipcuda: build_starpu_hip:
extends: .build_script_linux extends: .build_script_guix
variables: variables:
SYSTEM: linux VERSION: starpu_hip
VERSION: starpu_hipcuda GPU_BACKEND: hip
LOGNAME: "chameleon-build-${SYSTEM}-${VERSION}" LOGNAME: "chameleon-build-${SYSTEM}-${VERSION}"
CHAM_CI_ENV_ARG: hipcuda BUILD_OPTIONS: "-DCHAMELEON_USE_HIP_ROC=ON -DCHAMELEON_USE_MPI=OFF -DBLA_VENDOR=OpenBLAS -DCMAKE_C_COMPILER=gcc -DCMAKE_Fortran_COMPILER=gfortran"
BUILD_OPTIONS: "-DCHAMELEON_USE_HIP_CUDA=ON -DCHAMELEON_HIPBLAS_PATH=/home/gitlab/hipcuda/hipblas -DCHAMELEON_USE_MPI=ON"
build_starpu_simgrid: build_starpu_simgrid:
extends: .build_script_linux extends: .build_script_linux
variables: variables:
SYSTEM: linux
VERSION: starpu_simgrid VERSION: starpu_simgrid
LOGNAME: "chameleon-build-${SYSTEM}-${VERSION}" LOGNAME: "chameleon-build-${SYSTEM}-${VERSION}"
CHAM_CI_ENV_ARG: simgrid CHAM_CI_ENV_ARG: simgrid
...@@ -87,11 +99,13 @@ build_starpu_macosx: ...@@ -87,11 +99,13 @@ build_starpu_macosx:
SYSTEM: macosx SYSTEM: macosx
VERSION: starpu VERSION: starpu
LOGNAME: "chameleon-build-${SYSTEM}-${VERSION}" LOGNAME: "chameleon-build-${SYSTEM}-${VERSION}"
CMAKE_BUILD_PARALLEL_LEVEL: 4
script: script:
- bash .gitlab/build.sh | tee ${LOGNAME}.log - bash .gitlab/build.sh | tee ${LOGNAME}.log
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
expire_in: 180 minutes expire_in: 1 week
when: always
paths: paths:
- ${LOGNAME}.log - ${LOGNAME}.log
cache: cache:
...@@ -109,11 +123,13 @@ build_starpu_macosx: ...@@ -109,11 +123,13 @@ build_starpu_macosx:
MSYSTEM: UCRT64 MSYSTEM: UCRT64
VERSION: starpu VERSION: starpu
LOGNAME: "chameleon-build-${SYSTEM}-${VERSION}" LOGNAME: "chameleon-build-${SYSTEM}-${VERSION}"
CMAKE_BUILD_PARALLEL_LEVEL: 4
script: script:
- bash -lc .gitlab/build.sh | tee "$env:LOGNAME.log" - bash -lc .gitlab/build.sh | tee "$env:LOGNAME.log"
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
expire_in: 180 minutes expire_in: 1 week
when: always
paths: paths:
- ${LOGNAME}.log - ${LOGNAME}.log
cache: cache:
......
### ###
# #
# @copyright 2013-2024 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, # @copyright 2013-2025 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
# Univ. Bordeaux. All rights reserved. # Univ. Bordeaux. All rights reserved.
# #
# @version 1.3.0 # @version 1.3.0
# @author Mathieu Faverge # @author Mathieu Faverge
# @author Florent Pruvost # @author Florent Pruvost
# @date 2024-06-13 # @date 2024-06-17
# #
### ###
cmake_minimum_required(VERSION 3.5) cmake_minimum_required(VERSION 3.5)
......
...@@ -2,13 +2,13 @@ ...@@ -2,13 +2,13 @@
### ###
# #
# @file link_cmake.sh # @file link_cmake.sh
# @copyright 2023-2024 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, # @copyright 2023-2025 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
# Univ. Bordeaux. All rights reserved. # Univ. Bordeaux. All rights reserved.
# #
# @version 1.3.0 # @version 1.3.0
# @author Florent Pruvost # @author Florent Pruvost
# @author Mathieu Faverge # @author Mathieu Faverge
# @date 2023-12-07 # @date 2024-12-03
# #
# Check that linking with the project is ok when using cmake. # Check that linking with the project is ok when using cmake.
# #
...@@ -21,7 +21,7 @@ then ...@@ -21,7 +21,7 @@ then
exit 1 exit 1
fi fi
cmake -B build -DCMAKE_PREFIX_PATH=$1 cmake -B build -DCMAKE_PREFIX_PATH=$1
cmake --build build --verbose cmake --build build --verbose
if [[ "$VERSION" != "starpu_simgrid" ]]; then if [[ "$VERSION" != "starpu_simgrid" ]]; then
ctest --test-dir build --verbose ctest --test-dir build --verbose
fi fi
...@@ -2,13 +2,13 @@ ...@@ -2,13 +2,13 @@
### ###
# #
# @file link_pkgconfig.sh # @file link_pkgconfig.sh
# @copyright 2023-2024 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, # @copyright 2023-2025 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
# Univ. Bordeaux. All rights reserved. # Univ. Bordeaux. All rights reserved.
# #
# @version 1.3.0 # @version 1.3.0
# @author Florent Pruvost # @author Florent Pruvost
# @author Mathieu Faverge # @author Mathieu Faverge
# @date 2023-12-07 # @date 2024-06-17
# #
# Check that linking with the project is ok when using pkg-config. # Check that linking with the project is ok when using pkg-config.
# #
......
...@@ -3,13 +3,15 @@ ...@@ -3,13 +3,15 @@
# #
--- ---
default: default:
image: registry.gitlab.inria.fr/solverstack/docker/distrib image: $CI_REGISTRY_IMAGE
tags: ['ci.inria.fr', 'linux', 'large'] interruptible: true
variables:
GIT_SUBMODULE_STRATEGY: recursive
# push event: executed only if the source branch name is master or starts with ci- # push event: executed only if the source branch name is master or starts with ci-
# schedule event: not executed # schedule event: not executed
.only-master: .only-master:
interruptible: true
rules: rules:
- if: ($CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_BRANCH =~ /^ci-.*$/) && $CI_PIPELINE_SOURCE != "schedule" - if: ($CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_BRANCH =~ /^ci-.*$/) && $CI_PIPELINE_SOURCE != "schedule"
...@@ -17,24 +19,27 @@ default: ...@@ -17,24 +19,27 @@ default:
# merge request event: executed if the source branch name does not start with notest- # merge request event: executed if the source branch name does not start with notest-
# schedule event: not executed # schedule event: not executed
.only-master-mr: .only-master-mr:
interruptible: true
rules: rules:
- if: ($CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_BRANCH =~ /^ci-.*$/) && $CI_PIPELINE_SOURCE != "schedule" - if: ($CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_BRANCH =~ /^ci-.*$/) && $CI_PIPELINE_SOURCE != "schedule"
- if: ($CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME !~ /^notest-.*$/) - if: ($CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME !~ /^notest-.*$/)
# merge request event: executed if the source branch name does not start with notest- # merge request event: executed if the source branch name does not start with notest-
.only-mr: .only-mr:
interruptible: true
rules: rules:
- if: ($CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME !~ /^notest-.*$/) - if: ($CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME !~ /^notest-.*$/)
.test_script_linux: .test_script_linux:
stage: test stage: test
tags: ['ci.inria.fr', 'linux', 'large']
variables:
GIT_CLONE_PATH: $CI_BUILDS_DIR/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME
SYSTEM: linux
script: script:
- bash .gitlab/test.sh | tee ${LOGNAME}.log - bash .gitlab/test.sh | tee ${LOGNAME}.log
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
expire_in: 180 minutes expire_in: 1 week
untracked: true untracked: true
when: always
reports: reports:
junit: ${LOGNAME}-junit.xml junit: ${LOGNAME}-junit.xml
...@@ -7,12 +7,15 @@ ...@@ -7,12 +7,15 @@
--- ---
.coverage: .coverage:
stage: coverage stage: coverage
tags: ['ci.inria.fr', 'linux']
variables:
GIT_CLONE_PATH: $CI_BUILDS_DIR/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME
script: script:
- tools/coverage.sh - ./tools/coverage.sh
coverage: /^\s*lines......:\s*\d+.\d+\%/ coverage: /^\s*lines......:\s*\d+.\d+\%/
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
expire_in: 180 minutes expire_in: 1 week
paths: paths:
- chameleon-*.lcov - chameleon-*.lcov
- chameleon.lcov - chameleon.lcov
...@@ -32,7 +35,6 @@ coverage_master: ...@@ -32,7 +35,6 @@ coverage_master:
coverage_mr: coverage_mr:
extends: .coverage extends: .coverage
interruptible: true
rules: rules:
- if: ($CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME !~ /^notest-.*$/) - if: ($CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME !~ /^notest-.*$/)
needs: [test_openmp_mr,test_parsec_mr,test_quark_mr,test_starpu_mr,test_starpu_simgrid_simu_all] needs: [test_openmp_mr,test_parsec_mr,test_quark_mr,test_starpu_mr,test_starpu_simgrid_simu_all]
--- ---
coverity: coverity:
stage: analyze stage: analyze
tags: ["docker", "large"] tags: ['ci.inria.fr', 'linux', 'large']
interruptible: true
rules: rules:
- if: ($CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_BRANCH =~ /^ci-.*$/) && $CI_PIPELINE_SOURCE != "schedule" - if: ($CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_BRANCH =~ /^ci-.*$/) && $CI_PIPELINE_SOURCE != "schedule"
- if: ($CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME !~ /^notest-.*$/) - if: ($CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME !~ /^notest-.*$/)
...@@ -12,17 +11,7 @@ coverity: ...@@ -12,17 +11,7 @@ coverity:
variables: variables:
VERSION: coverity VERSION: coverity
script: script:
- (mkdir -p build-$VERSION && cd build-$VERSION && - ./tools/coverity.sh
cmake .. -C ../cmake_modules/gitlab-ci-initial-cache.cmake
-DCHAMELEON_USE_CUDA=ON -DCHAMELEON_USE_MPI=ON &&
cov-build --dir ../cov-int make -j 4)
- tar czvf chameleon.tgz cov-int
- curl --form token=$COVERITY_TOKEN
--form email=florent.pruvost@inria.fr
--form file=@chameleon.tgz
--form version="`git rev-parse --short HEAD`"
--form description=""
https://scan.coverity.com/builds?project=Chameleon
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
expire_in: 1 week expire_in: 1 week
......
---
.docker_script_common:
stage: docker
tags: ['ci.inria.fr', 'linux']
image: docker
when: manual
before_script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
script:
- docker build -f $IMAGE_FILE -t $IMAGE_NAME $PWD
- docker push $IMAGE_NAME
docker-tests:
extends: .docker_script_common
variables:
IMAGE_FILE: .gitlab/Dockerfile
IMAGE_NAME: $CI_REGISTRY_IMAGE
docker-pages:
extends: .docker_script_common
variables:
IMAGE_FILE: .gitlab/Dockerfile-pages
IMAGE_NAME: $CI_REGISTRY_IMAGE/pages
--- ---
pages: pages:
stage: deploy stage: deploy
tags: ['ci.inria.fr', 'linux']
image: $CI_REGISTRY_IMAGE/pages
extends: .only-master extends: .only-master
needs: [coverage_master] needs: [coverage_master]
variables:
VERSION: pages
script:
- ./tools/pages.sh
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
expire_in: 1 week expire_in: 1 week
paths: paths:
- public - public
variables:
VERSION: pages
script:
- ./tools/pages.sh
...@@ -4,7 +4,8 @@ ...@@ -4,7 +4,8 @@
--- ---
preliminary_checks: preliminary_checks:
stage: pre stage: pre
interruptible: true tags: ['ci.inria.fr', 'linux']
image: registry.gitlab.inria.fr/solverstack/docker/pre
rules: rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event" - if: $CI_PIPELINE_SOURCE == "merge_request_event"
parallel: parallel:
......
--- ---
release: release:
stage: deploy stage: deploy
tags: ['ci.inria.fr', 'linux']
rules: rules:
- if: $CI_COMMIT_TAG =~ /^v[0-9]\.[0-9]\.[0-9]$/ && $CI_PIPELINE_SOURCE != "schedule" - if: $CI_COMMIT_TAG =~ /^v[0-9]\.[0-9]\.[0-9]$/ && $CI_PIPELINE_SOURCE != "schedule"
dependencies: [] dependencies: []
variables:
GIT_CONFIG_COUNT: 1
GIT_CONFIG_KEY_0: "safe.directory"
GIT_CONFIG_VALUE_0: "*"
VERSION: release
script:
- ./tools/release.sh
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
expire_in: 1 week expire_in: 1 week
paths: paths:
- chameleon-*.tar.gz - chameleon-*.tar.gz
variables:
VERSION: release
script:
- ./tools/release.sh
#!/bin/bash
# sbatch.sh : submit slurm jobs and wait for completion before exiting
set -x
if [ $# -gt 0 ]
then
JOB_NAME=$1
fi
JOB_NAME=${JOB_NAME:-chameleon}
# to get kernels execution on both cpus and gpus
export STARPU_SCHED=random
# execution commands
sbatch --wait \
--job-name="$JOB_NAME" \
--output="$JOB_NAME.out" \
--nodes=1 \
--exclusive --ntasks-per-node=1 --threads-per-core=1 \
--constraint="$SLURM_CONSTRAINTS" \
--time=01:00:00 \
$(dirname "$0")/test.sh
# get the error code from the last command: sbatch --wait ...
err=$?
cat $JOB_NAME.out
# exit with error code from the guix command
exit $err
--- ---
.sonarqube: .sonarqube:
stage: analyze stage: analyze
tags: ["docker", "large"] tags: ['ci.inria.fr', 'linux']
variables: variables:
GIT_CLONE_PATH: $CI_BUILDS_DIR/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME
GIT_CONFIG_COUNT: 1
GIT_CONFIG_KEY_0: "safe.directory"
GIT_CONFIG_VALUE_0: "*"
GIT_DEPTH: "0"
VERSION: sonarqube VERSION: sonarqube
script: script:
- ls -l build*/*.json - ls -l build*/*.json
...@@ -13,7 +18,7 @@ ...@@ -13,7 +18,7 @@
- ./tools/analysis.sh - ./tools/analysis.sh
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
expire_in: 180 minutes expire_in: 1 week
when: always when: always
paths: paths:
- filelist.txt - filelist.txt
...@@ -30,7 +35,6 @@ sonarqube_master: ...@@ -30,7 +35,6 @@ sonarqube_master:
sonarqube_mr: sonarqube_mr:
extends: .sonarqube extends: .sonarqube
interruptible: true
rules: rules:
- if: ($CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME !~ /^notest-.*$/) - if: ($CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME !~ /^notest-.*$/)
when: manual when: manual
......
#!/usr/bin/env bash #!/usr/bin/env bash
set -e
fatal() {
echo "$0: error occurred, exit"
exit 1
}
set -x set -x
cd build-$VERSION cd build-$VERSION
source ../.gitlab-ci-env.sh $CHAM_CI_ENV_ARG || fatal source ../.gitlab-ci-env.sh $CHAM_CI_ENV_ARG
CTESTCOMMAND=`echo "ctest --output-on-failure --no-compress-output $TESTS_RESTRICTION -T Test --output-junit ../${LOGNAME}-junit.xml"` ctest --output-on-failure --no-compress-output $TESTS_RESTRICTION --output-junit ../${LOGNAME}-junit.xml
$CTESTCOMMAND || fatal
if [[ "$SYSTEM" == "linux" ]]; then if [[ "$SYSTEM" == "linux" ]]; then
# clang is used on macosx and it is not compatible with MORSE_ENABLE_COVERAGE=ON # clang is used on macosx and it is not compatible with MORSE_ENABLE_COVERAGE=ON
# so that we can only make the coverage report on the linux runner with gcc # so that we can only make the coverage report on the linux runner with gcc
......
...@@ -5,7 +5,6 @@ test_hmat: ...@@ -5,7 +5,6 @@ test_hmat:
- .only-master-mr - .only-master-mr
needs: [build_hmat] needs: [build_hmat]
variables: variables:
SYSTEM: linux
VERSION: hmat VERSION: hmat
CATEGORY: none CATEGORY: none
PRECISION: all PRECISION: all
......