mirror of
https://gitlab.com/libeigen/eigen.git
synced 2026-01-18 17:31:19 +01:00
<!-- Thanks for contributing a merge request! Please name and fully describe your MR as you would for a commit message. If the MR fixes an issue, please include "Fixes #issue" in the commit message and the MR description. In addition, we recommend that first-time contributors read our [contribution guidelines](https://eigen.tuxfamily.org/index.php?title=Contributing_to_Eigen) and [git page](https://eigen.tuxfamily.org/index.php?title=Git), which will help you submit a more standardized MR. Before submitting the MR, you also need to complete the following checks: - Make one PR per feature/bugfix (don't mix multiple changes into one PR). Avoid committing unrelated changes. - Rebase before committing - For code changes, run the test suite (at least the tests that are likely affected by the change). See our [test guidelines](https://eigen.tuxfamily.org/index.php?title=Tests). - If possible, add a test (both for bug-fixes as well as new features) - Make sure new features are documented Note that we are a team of volunteers; we appreciate your patience during the review process. Again, thanks for contributing! --> ### Reference issue <!-- You can link to a specific issue using the gitlab syntax #<issue number> --> ### What does this implement/fix? <!--Please explain your changes.--> Currently, we run each test 3 times to account for flaky tests. Sometimes, the test fails so quickly that the random seed is the same for the subsequent test, which fails the exact same way. This MR uses a nanosecond seed which resolves the issue described above. Now, if the test does not pass on the first attempt but passes on the retries, the gitlab job status will be yellow but still be treated as a pass in the ci/cd pipeline. Hopefully, this means we will get more passes and help us identify room for improvement. ### Additional information <!--Any additional information you think is important.--> See merge request libeigen/eigen!2025
303 lines
10 KiB
YAML
303 lines
10 KiB
YAML
# Base configuration for linux cross-compilation.
|
|
.build:linux:cross:
|
|
needs: []
|
|
extends: .common:linux:cross
|
|
stage: build
|
|
variables:
|
|
EIGEN_CI_BUILD_TARGET: buildtests
|
|
script:
|
|
- . ci/scripts/build.linux.script.sh
|
|
tags:
|
|
- saas-linux-2xlarge-amd64
|
|
rules:
|
|
- if: $CI_PIPELINE_SOURCE == "schedule" && $CI_PROJECT_NAMESPACE == "libeigen"
|
|
- if: $CI_PIPELINE_SOURCE == "web" && $CI_PROJECT_NAMESPACE == "libeigen"
|
|
- if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_PROJECT_NAMESPACE == "libeigen" && $CI_MERGE_REQUEST_LABELS =~ "/all-tests/"
|
|
cache:
|
|
key: "$CI_JOB_NAME_SLUG-$CI_COMMIT_REF_SLUG-BUILD"
|
|
paths:
|
|
- ${EIGEN_CI_BUILDDIR}/
|
|
|
|
######## x86-64 ################################################################
|
|
|
|
.build:linux:cross:x86-64:
|
|
extends: .build:linux:cross
|
|
variables:
|
|
EIGEN_CI_TARGET_ARCH: x86_64
|
|
EIGEN_CI_CROSS_TARGET_TRIPLE: x86_64-linux-gnu
|
|
|
|
# GCC-6 (minimum on Ubuntu 18.04)
|
|
build:linux:cross:x86-64:gcc-6:default:
|
|
extends: .build:linux:cross:x86-64
|
|
image: ubuntu:18.04
|
|
variables:
|
|
EIGEN_CI_C_COMPILER: gcc-6
|
|
EIGEN_CI_CXX_COMPILER: g++-6
|
|
EIGEN_CI_CROSS_INSTALL: g++-6-x86-64-linux-gnu
|
|
EIGEN_CI_CROSS_C_COMPILER: x86_64-linux-gnu-gcc-6
|
|
EIGEN_CI_CROSS_CXX_COMPILER: x86_64-linux-gnu-g++-6
|
|
|
|
# GCC-10 (stable recent version)
|
|
build:linux:cross:x86-64:gcc-10:default:
|
|
extends: .build:linux:cross:x86-64
|
|
variables:
|
|
EIGEN_CI_C_COMPILER: gcc-10
|
|
EIGEN_CI_CXX_COMPILER: g++-10
|
|
EIGEN_CI_CROSS_INSTALL: g++-10-x86-64-linux-gnu
|
|
EIGEN_CI_CROSS_C_COMPILER: x86_64-linux-gnu-gcc-10
|
|
EIGEN_CI_CROSS_CXX_COMPILER: x86_64-linux-gnu-g++-10
|
|
|
|
build:linux:cross:x86-64:gcc-10:avx:
|
|
extends: build:linux:cross:x86-64:gcc-10:default
|
|
variables:
|
|
EIGEN_CI_ADDITIONAL_ARGS: "-DEIGEN_TEST_AVX=on"
|
|
|
|
build:linux:cross:x86-64:gcc-10:avx2:
|
|
extends: build:linux:cross:x86-64:gcc-10:default
|
|
variables:
|
|
EIGEN_CI_ADDITIONAL_ARGS: "-DEIGEN_TEST_AVX2=on"
|
|
|
|
build:linux:cross:x86-64:gcc-10:avx512dq:
|
|
extends: build:linux:cross:x86-64:gcc-10:default
|
|
variables:
|
|
EIGEN_CI_ADDITIONAL_ARGS: "-DEIGEN_TEST_AVX512DQ=on"
|
|
|
|
# Clang-6 (minimum on Ubuntu 20.04)
|
|
build:linux:cross:x86-64:clang-6:default:
|
|
extends: .build:linux:cross:x86-64
|
|
image: ubuntu:20.04
|
|
variables:
|
|
EIGEN_CI_INSTALL: g++-8 clang-6.0 lld-6.0
|
|
EIGEN_CI_C_COMPILER: clang-6.0
|
|
EIGEN_CI_CXX_COMPILER: clang++-6.0
|
|
EIGEN_CI_CROSS_INSTALL: g++-8-x86-64-linux-gnu clang-6.0 lld-6.0
|
|
EIGEN_CI_ADDITIONAL_ARGS: -DCMAKE_EXE_LINKER_FLAGS=-fuse-ld=lld-6.0
|
|
|
|
# Clang-12 (stable recent version)
|
|
build:linux:cross:x86-64:clang-12:default:
|
|
extends: .build:linux:cross:x86-64
|
|
variables:
|
|
EIGEN_CI_INSTALL: clang-12
|
|
EIGEN_CI_C_COMPILER: clang-12
|
|
EIGEN_CI_CXX_COMPILER: clang++-12
|
|
EIGEN_CI_CROSS_INSTALL: g++-10-x86-64-linux-gnu clang-12
|
|
|
|
build:linux:cross:x86-64:clang-12:avx:
|
|
extends: build:linux:cross:x86-64:clang-12:default
|
|
variables:
|
|
EIGEN_CI_ADDITIONAL_ARGS: "-DEIGEN_TEST_AVX=on"
|
|
|
|
build:linux:cross:x86-64:clang-12:avx2:
|
|
extends: build:linux:cross:x86-64:clang-12:default
|
|
variables:
|
|
EIGEN_CI_ADDITIONAL_ARGS: "-DEIGEN_TEST_AVX2=on"
|
|
|
|
build:linux:cross:x86-64:clang-12:avx512dq:
|
|
extends: build:linux:cross:x86-64:clang-12:default
|
|
variables:
|
|
EIGEN_CI_ADDITIONAL_ARGS: "-DEIGEN_TEST_AVX512DQ=on"
|
|
|
|
build:linux:docs:
|
|
extends: .build:linux:cross
|
|
variables:
|
|
EIGEN_CI_TARGET_ARCH: any
|
|
EIGEN_CI_BUILD_TARGET: doc
|
|
EIGEN_CI_INSTALL: ca-certificates clang flex python3 bison graphviz
|
|
EIGEN_CI_C_COMPILER: clang
|
|
EIGEN_CI_CXX_COMPILER: clang++
|
|
EIGEN_CI_BEFORE_SCRIPT: ". ci/scripts/build_and_install_doxygen.sh Release_1_13_2"
|
|
rules:
|
|
- if: $CI_PIPELINE_SOURCE == "schedule" && $CI_PROJECT_NAMESPACE == "libeigen"
|
|
- if: $CI_PIPELINE_SOURCE == "web" && $CI_PROJECT_NAMESPACE == "libeigen"
|
|
- if: $CI_PIPELINE_SOURCE == "push" && $CI_PROJECT_NAMESPACE == "libeigen" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
|
- if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_PROJECT_NAMESPACE == "libeigen" && $CI_MERGE_REQUEST_LABELS =~ "/all-tests/"
|
|
|
|
|
|
# # Sanitizers (Disabled because ASAN hangs and MSAN requires instrumented libc++)
|
|
# build:linux:cross:x86-64:clang-12:default:asan:
|
|
# extends: build:linux:cross:x86-64:clang-12:default
|
|
# variables:
|
|
# EIGEN_CI_ADDITIONAL_ARGS:
|
|
# -DEIGEN_TEST_CUSTOM_CXX_FLAGS=-fsanitize=address,undefined
|
|
# -DEIGEN_TEST_CUSTOM_LINKER_FLAGS=-fsanitize=address,undefined
|
|
|
|
# build:linux:cross:x86-64:clang-12:default:msan:
|
|
# extends: build:linux:cross:x86-64:clang-12:default
|
|
# variables:
|
|
# EIGEN_CI_ADDITIONAL_ARGS:
|
|
# -DEIGEN_TEST_CUSTOM_CXX_FLAGS=-fsanitize=memory
|
|
# -DEIGEN_TEST_CUSTOM_LINKER_FLAGS=-fsanitize=memory
|
|
|
|
######## CUDA ##################################################################
|
|
|
|
.build:linux:cuda:
|
|
extends: .build:linux:cross:x86-64
|
|
variables:
|
|
# Additional flags passed to the cuda compiler.
|
|
EIGEN_CI_CUDA_CXX_FLAGS: ""
|
|
# Compute architectures present in the GitLab CI runners.
|
|
EIGEN_CI_CUDA_COMPUTE_ARCH: "50;75"
|
|
EIGEN_CI_BUILD_TARGET: buildtests_gpu
|
|
EIGEN_CI_TEST_CUDA_CLANG: "off"
|
|
EIGEN_CI_ADDITIONAL_ARGS:
|
|
-DEIGEN_TEST_CUDA=on
|
|
-DEIGEN_CUDA_CXX_FLAGS=${EIGEN_CI_CUDA_CXX_FLAGS}
|
|
-DEIGEN_CUDA_COMPUTE_ARCH=${EIGEN_CI_CUDA_COMPUTE_ARCH}
|
|
-DEIGEN_TEST_CUDA_CLANG=${EIGEN_CI_TEST_CUDA_CLANG}
|
|
tags:
|
|
# Build on regular linux to limit GPU cost.
|
|
- saas-linux-2xlarge-amd64
|
|
|
|
# GCC-10, CUDA-12.2
|
|
build:linux:cuda-12.2:gcc-10:
|
|
extends: .build:linux:cuda
|
|
image: nvidia/cuda:12.2.0-devel-ubuntu20.04
|
|
variables:
|
|
EIGEN_CI_C_COMPILER: gcc-10
|
|
EIGEN_CI_CXX_COMPILER: g++-10
|
|
|
|
# Clang-12, CUDA-12.2
|
|
build:linux:cuda-12.2:clang-12:
|
|
extends: build:linux:cuda-12.2:gcc-10
|
|
variables:
|
|
EIGEN_CI_C_COMPILER: clang-12
|
|
EIGEN_CI_CXX_COMPILER: clang++-12
|
|
EIGEN_CI_TEST_CUDA_CLANG: "on"
|
|
|
|
######### HIP ##################################################################
|
|
# Note: these are currently build-only, until we get an AMD-supported runner.
|
|
|
|
# ROCm HIP
|
|
build:linux:rocm-latest:gcc-10:
|
|
extends: .build:linux:cross
|
|
image: rocm/dev-ubuntu-24.04:latest
|
|
variables:
|
|
EIGEN_CI_C_COMPILER: gcc-10
|
|
EIGEN_CI_CXX_COMPILER: g++-10
|
|
EIGEN_CI_BUILD_TARGET: buildtests_gpu
|
|
EIGEN_CI_ADDITIONAL_ARGS: -DEIGEN_TEST_HIP=on
|
|
cache: [] # Disable cache for ROCm, since it fails whenever the image updates.
|
|
|
|
|
|
######## Arm ###################################################################
|
|
|
|
.build:linux:cross:arm:
|
|
extends: .build:linux:cross
|
|
variables:
|
|
EIGEN_CI_TARGET_ARCH: arm
|
|
EIGEN_CI_CROSS_TARGET_TRIPLE: arm-linux-gnueabihf
|
|
EIGEN_CI_ADDITIONAL_ARGS: >
|
|
-DEIGEN_TEST_CUSTOM_CXX_FLAGS=-march=armv7-a;-mfpu=neon-vfpv4
|
|
-DCMAKE_SYSTEM_NAME=Linux
|
|
-DCMAKE_CROSSCOMPILING_EMULATOR=qemu-arm-static;-L;/usr/arm-linux-gnueabihf
|
|
|
|
build:linux:cross:arm:gcc-10:default:
|
|
extends: .build:linux:cross:arm
|
|
variables:
|
|
EIGEN_CI_CROSS_INSTALL: g++-10-arm-linux-gnueabihf qemu-user-static
|
|
EIGEN_CI_CROSS_C_COMPILER: arm-linux-gnueabihf-gcc-10
|
|
EIGEN_CI_CROSS_CXX_COMPILER: arm-linux-gnueabihf-g++-10
|
|
|
|
build:linux:cross:arm:clang-12:default:
|
|
extends: .build:linux:cross:arm
|
|
variables:
|
|
EIGEN_CI_INSTALL: clang-12
|
|
EIGEN_CI_C_COMPILER: clang-12
|
|
EIGEN_CI_CXX_COMPILER: clang++-12
|
|
EIGEN_CI_CROSS_INSTALL: g++-10-arm-linux-gnueabihf clang-12 qemu-user-static
|
|
|
|
######## aarch64 ###############################################################
|
|
|
|
.build:linux:cross:aarch64:
|
|
extends: .build:linux:cross
|
|
variables:
|
|
EIGEN_CI_TARGET_ARCH: aarch64
|
|
EIGEN_CI_CROSS_TARGET_TRIPLE: aarch64-linux-gnu
|
|
EIGEN_CI_ADDITIONAL_ARGS: -DEIGEN_TEST_CUSTOM_CXX_FLAGS=-march=armv8.2-a+fp16
|
|
tags:
|
|
- saas-linux-large-arm64
|
|
|
|
build:linux:cross:aarch64:gcc-10:default:
|
|
extends: .build:linux:cross:aarch64
|
|
variables:
|
|
EIGEN_CI_C_COMPILER: gcc-10
|
|
EIGEN_CI_CXX_COMPILER: g++-10
|
|
EIGEN_CI_CROSS_INSTALL: g++-10-aarch64-linux-gnu
|
|
EIGEN_CI_CROSS_C_COMPILER: aarch64-linux-gnu-gcc-10
|
|
EIGEN_CI_CROSS_CXX_COMPILER: aarch64-linux-gnu-g++-10
|
|
|
|
build:linux:cross:aarch64:clang-12:default:
|
|
extends: .build:linux:cross:aarch64
|
|
variables:
|
|
EIGEN_CI_INSTALL: clang-12
|
|
EIGEN_CI_C_COMPILER: clang-12
|
|
EIGEN_CI_CXX_COMPILER: clang++-12
|
|
EIGEN_CI_CROSS_INSTALL: g++-10-aarch64-linux-gnu clang-12
|
|
|
|
######## ppc64le ###############################################################
|
|
|
|
.build:linux:cross:ppc64le:
|
|
extends: .build:linux:cross
|
|
image: ubuntu:24.04
|
|
variables:
|
|
EIGEN_CI_TARGET_ARCH: ppc64le
|
|
EIGEN_CI_CROSS_TARGET_TRIPLE: powerpc64le-linux-gnu
|
|
EIGEN_CI_ADDITIONAL_ARGS: >-
|
|
-DCMAKE_SYSTEM_NAME=Linux
|
|
-DCMAKE_CROSSCOMPILING_EMULATOR=qemu-ppc64le-static;-L;/usr/powerpc64le-linux-gnu
|
|
|
|
build:linux:cross:ppc64le:gcc-14:default:
|
|
extends: .build:linux:cross:ppc64le
|
|
variables:
|
|
EIGEN_CI_CROSS_INSTALL: g++-14-powerpc64le-linux-gnu qemu-user-static
|
|
EIGEN_CI_CROSS_C_COMPILER: powerpc64le-linux-gnu-gcc-14
|
|
EIGEN_CI_CROSS_CXX_COMPILER: powerpc64le-linux-gnu-g++-14
|
|
|
|
build:linux:cross:ppc64le:clang-16:default:
|
|
extends: .build:linux:cross:ppc64le
|
|
variables:
|
|
EIGEN_CI_C_COMPILER: clang-16
|
|
EIGEN_CI_CXX_COMPILER: clang++-16
|
|
EIGEN_CI_CROSS_INSTALL: g++-14-powerpc64le-linux-gnu clang-16 qemu-user-static
|
|
|
|
######## loongarch64 #################################################
|
|
|
|
.build:linux:cross:loongarch64:
|
|
extends: .build:linux:cross
|
|
variables:
|
|
EIGEN_CI_TARGET_ARCH: loongarch64
|
|
EIGEN_CI_CROSS_TARGET_TRIPLE: loongarch64-linux-gnu
|
|
|
|
# GCC-14 (minimum on Ubuntu 24)
|
|
build:linux:cross:loongarch64:gcc-14:default:
|
|
extends: .build:linux:cross:loongarch64
|
|
image: ubuntu:24.04
|
|
variables:
|
|
EIGEN_CI_CROSS_INSTALL: g++-14-loongarch64-linux-gnu qemu-user-static
|
|
EIGEN_CI_CROSS_C_COMPILER: loongarch64-linux-gnu-gcc-14
|
|
EIGEN_CI_CROSS_CXX_COMPILER: loongarch64-linux-gnu-g++-14
|
|
EIGEN_CI_ADDITIONAL_ARGS: >-
|
|
-DCMAKE_SYSTEM_NAME=Linux
|
|
-DCMAKE_CROSSCOMPILING_EMULATOR=qemu-loongarch64-static;-L;/usr/loongarch64-linux-gnu
|
|
-DEIGEN_TEST_LSX=on
|
|
|
|
######## MR Smoke Tests ########################################################
|
|
|
|
build:linux:cross:x86-64:gcc-10:default:smoketest:
|
|
extends: build:linux:cross:x86-64:gcc-10:default
|
|
variables:
|
|
EIGEN_CI_BUILD_TARGET: buildsmoketests
|
|
rules:
|
|
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
|
tags:
|
|
- saas-linux-medium-amd64
|
|
|
|
build:linux:cross:x86-64:clang-12:default:smoketest:
|
|
extends: build:linux:cross:x86-64:clang-12:default
|
|
variables:
|
|
EIGEN_CI_BUILD_TARGET: buildsmoketests
|
|
rules:
|
|
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
|
tags:
|
|
- saas-linux-medium-amd64
|