diff --git a/ci/.gitlab-ci.yml b/ci/.gitlab-ci.yml index 113fc834f5..22e9772142 100644 --- a/ci/.gitlab-ci.yml +++ b/ci/.gitlab-ci.yml @@ -1,5 +1,6 @@ include: - - local: 'ci/cpu/asan_ubsan_lsan.yml' + # - local: 'ci/cpu/asan_ubsan_lsan.yml' + - local: 'ci/cpu/tsan.yml' # - local: 'ci/cpu/clang12_release.yml' # - local: 'ci/cpu/clang13_release_cxx20.yml' # - local: 'ci/cpu/clang14_release_stdexec.yml' diff --git a/ci/cpu/tsan.yml b/ci/cpu/tsan.yml new file mode 100644 index 0000000000..9e01e370ed --- /dev/null +++ b/ci/cpu/tsan.yml @@ -0,0 +1,34 @@ +include: + - local: 'ci/common-ci.yml' + +cpu tsan deps: + extends: .build_deps_common + variables: + EXTRA_APTGET: "clang-15 libomp-15-dev" + COMPILER: clang@15 + USE_MKL: "ON" + SPACK_ENVIRONMENT: ci/docker/tsan.yaml + BUILD_IMAGE: $CSCS_REGISTRY_PATH/cpu-tsan/build + +cpu tsan build: + extends: + - .build_common + - .build_for_daint-mc + needs: + - cpu tsan deps + variables: + DEPLOY_IMAGE: $CSCS_REGISTRY_PATH/cpu-tsan/deploy:$CI_COMMIT_SHA + # For symbolizing stacktraces with llvm-symbolizer + EXTRA_APTGET_DEPLOY: "llvm-15" + +cpu tsan test: + extends: .run_common + needs: + - cpu tsan build + variables: + # Override use of libSegFault, not necessary with sanitizers + LD_PRELOAD: "" + trigger: + include: + - artifact: pipeline.yml + job: cpu tsan build diff --git a/ci/docker/tsan.yaml b/ci/docker/tsan.yaml new file mode 100644 index 0000000000..4fbbe55f5e --- /dev/null +++ b/ci/docker/tsan.yaml @@ -0,0 +1,29 @@ +# +# Distributed Linear Algebra with Future (DLAF) +# +# Copyright (c) 2018-2024, ETH Zurich +# All rights reserved. +# +# Please, refer to the LICENSE file in the root directory. +# SPDX-License-Identifier: BSD-3-Clause +# + +spack: + include: + - /spack_environment/common.yaml + + view: false + concretizer: + unify: + true + + specs: + - dla-future@master cxxflags="-fsanitize=thread -fno-omit-frame-pointer" ldflags="-fsanitize=thread -shared-libsan" +miniapps +ci-test + + packages: + all: + variants: + - 'build_type=RelWithDebInfo' + pika: + require: + - 'malloc=system'