Skip to content

Commit

Permalink
Simplify CI and bump version requirements (#3687)
Browse files Browse the repository at this point in the history
Description of changes:
- reduce number of CI images for CUDA jobs (partial fix for #3611)
- test CUDA 9.1 and 10.1 using compatible compilers without patches (fixes #3654)
- drop support for Ubuntu 16.04
- bump minimal Boost version to 1.65 (partial fix for #3093)
- bump Python packages to the versions available in Ubuntu 18.04 (partial fix for #3421)
- add missing lxml package (fixes #3686)
- fix issues in docs revealed by the new Doxygen and Sphinx versions
  • Loading branch information
jngrad authored Apr 27, 2020
2 parents ed01bed + 7bcb911 commit 35e0865
Show file tree
Hide file tree
Showing 21 changed files with 1,739 additions and 1,137 deletions.
115 changes: 63 additions & 52 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
image: docker.pkg.github.com/espressomd/docker/ubuntu-18.04:a1192b35590a1a474c55fe1e9a1e6c25758454ea
image: docker.pkg.github.com/espressomd/docker/ubuntu-20.04:06b6216c7aa3555bcf28c90734dbb84e7285c96f

stages:
- prepare
Expand All @@ -19,7 +19,7 @@ stages:
variables:
GIT_SUBMODULE_STRATEGY: none
dependencies: []
timeout: 15m
timeout: 40m
interruptible: false
tags:
- linux
Expand All @@ -38,7 +38,6 @@ status_pending:
style:
<<: *global_job_definition
stage: prepare
image: docker.pkg.github.com/espressomd/docker/ubuntu-20.04:b0de8c7df57d39edf72ad7d40c28bb67467dd7ec
dependencies: []
before_script:
- git submodule deinit .
Expand All @@ -58,14 +57,13 @@ style:
style_doxygen:
<<: *global_job_definition
stage: prepare
image: docker.pkg.github.com/espressomd/docker/ubuntu-cuda-10.1:c9fe9d6d79ffd7e3e89ef282548e0b5278afde2c
dependencies: []
script:
- mkdir build
- cd build
- cp ../maintainer/configs/maxset.hpp myconfig.hpp
- cmake .. -DWITH_CUDA=OFF
- bash ../maintainer/CI/dox_warnings.sh
- cmake .. -DWITH_CUDA=ON -DWITH_SCAFACOS=ON
- sh ../maintainer/CI/dox_warnings.sh
tags:
- docker
- linux
Expand All @@ -75,6 +73,9 @@ style_doxygen:
default:
<<: *global_job_definition
stage: build
variables:
CC: 'gcc-9'
CXX: 'g++-9'
script:
- export with_cuda=false myconfig=default with_coverage=true
- bash maintainer/CI/build_cmake.sh
Expand All @@ -85,6 +86,9 @@ default:
maxset:
<<: *global_job_definition
stage: build
variables:
CC: 'gcc-9'
CXX: 'g++-9'
script:
- export with_cuda=false myconfig=maxset with_coverage=true
- bash maintainer/CI/build_cmake.sh
Expand All @@ -95,41 +99,35 @@ maxset:
no_rotation:
<<: *global_job_definition
stage: build
variables:
CC: 'gcc-9'
CXX: 'g++-9'
script:
- export with_cuda=false myconfig=no_rotation with_coverage=true
- bash maintainer/CI/build_cmake.sh
tags:
- docker
- linux

ubuntu-20.04-sanitizer:
ubuntu:wo-dependencies:
<<: *global_job_definition
image: docker.pkg.github.com/espressomd/docker/ubuntu-20.04:b0de8c7df57d39edf72ad7d40c28bb67467dd7ec
stage: build
variables:
CC: 'clang-9'
CXX: 'clang++-9'
image: docker.pkg.github.com/espressomd/docker/ubuntu-wo-dependencies:06b6216c7aa3555bcf28c90734dbb84e7285c96f
script:
- export myconfig=maxset with_cuda=true with_cuda_compiler=clang with_coverage=false
- export with_static_analysis=true test_timeout=900
- export with_asan=true ASAN_OPTIONS="allocator_may_return_null=1"
- export with_ubsan=true UBSAN_OPTIONS=suppressions=${CI_PROJECT_DIR}/maintainer/CI/ubsan.supp
- export myconfig=maxset with_cuda=false make_check_unit_tests=false make_check_python=false
- bash maintainer/CI/build_cmake.sh
timeout: 2h
tags:
- docker
- linux
- cuda

### Builds with different Distributions
### Builds with different distributions

debian:10:
<<: *global_job_definition
stage: build
image: docker.pkg.github.com/espressomd/docker/debian:446ff604bbfa63f30ddb462697fa0d0dc2630460
script:
- export with_cuda=false
- export myconfig=maxset make_check_python=false
- export with_cuda=false myconfig=maxset make_check_python=false
- bash maintainer/CI/build_cmake.sh
tags:
- docker
Expand Down Expand Up @@ -182,13 +180,32 @@ fedora:latest:

### Builds with CUDA

clang-sanitizer:
<<: *global_job_definition
stage: build
variables:
CC: 'clang-9'
CXX: 'clang++-9'
script:
- export myconfig=maxset with_cuda=true with_cuda_compiler=clang with_coverage=false
- export with_static_analysis=true test_timeout=900
- export with_asan=true ASAN_OPTIONS="allocator_may_return_null=1"
- export with_ubsan=true UBSAN_OPTIONS=suppressions=${CI_PROJECT_DIR}/maintainer/CI/ubsan.supp
- bash maintainer/CI/build_cmake.sh
timeout: 2h
tags:
- docker
- linux
- cuda

cuda10-maxset:
<<: *global_job_definition
stage: build
image: docker.pkg.github.com/espressomd/docker/ubuntu-cuda-10.1:c9fe9d6d79ffd7e3e89ef282548e0b5278afde2c
variables:
CC: 'gcc-8'
CXX: 'g++-8'
script:
- export myconfig=maxset with_cuda=true with_coverage=false test_timeout=900 srcdir=${CI_PROJECT_DIR}
- export cmake_params="-DIPYTHON_EXECUTABLE=$(which jupyter)"
- bash maintainer/CI/build_cmake.sh
artifacts:
paths:
Expand All @@ -202,10 +219,13 @@ cuda10-maxset:
cuda9-maxset:
<<: *global_job_definition
stage: build
image: docker.pkg.github.com/espressomd/docker/ubuntu-cuda-9.0:c9fe9d6d79ffd7e3e89ef282548e0b5278afde2c
image: docker.pkg.github.com/espressomd/docker/ubuntu-18.04:06b6216c7aa3555bcf28c90734dbb84e7285c96f
variables:
CC: 'gcc-6'
CXX: 'g++-6'
GCOV: 'gcov-6'
script:
- export myconfig=maxset with_cuda=true with_coverage=true test_timeout=900 srcdir=${CI_PROJECT_DIR}
- sed -i 's/ or "DISPLAY" in os.environ/ or True/' src/python/espressomd/visualization.pyx
- bash maintainer/CI/build_cmake.sh
artifacts:
paths:
Expand All @@ -220,7 +240,9 @@ cuda9-maxset:
tutorials-samples-maxset:
<<: *global_job_definition
stage: build
image: docker.pkg.github.com/espressomd/docker/ubuntu-cuda-10.1:c9fe9d6d79ffd7e3e89ef282548e0b5278afde2c
variables:
CC: 'gcc-8'
CXX: 'g++-8'
script:
- export myconfig=maxset with_cuda=true with_coverage=false make_check_unit_tests=false make_check_python=false
- export make_check_tutorials=true make_check_samples=true make_check_benchmarks=false test_timeout=1200
Expand All @@ -233,7 +255,9 @@ tutorials-samples-maxset:
tutorials-samples-default:
<<: *global_job_definition
stage: build
image: docker.pkg.github.com/espressomd/docker/ubuntu-cuda-10.1:c9fe9d6d79ffd7e3e89ef282548e0b5278afde2c
variables:
CC: 'gcc-8'
CXX: 'g++-8'
script:
- export myconfig=default with_cuda=true with_coverage=false make_check_unit_tests=false make_check_python=false
- export make_check_tutorials=true make_check_samples=true make_check_benchmarks=false test_timeout=1200
Expand All @@ -248,7 +272,9 @@ tutorials-samples-default:
tutorials-samples-empty:
<<: *global_job_definition
stage: build
image: docker.pkg.github.com/espressomd/docker/ubuntu-cuda-10.1:c9fe9d6d79ffd7e3e89ef282548e0b5278afde2c
variables:
CC: 'gcc-8'
CXX: 'g++-8'
script:
- export myconfig=empty with_cuda=true with_coverage=false make_check_unit_tests=false make_check_python=false
- export make_check_tutorials=true make_check_samples=true make_check_benchmarks=false test_timeout=1200 with_scafacos=false
Expand All @@ -263,7 +289,9 @@ tutorials-samples-empty:
tutorials-samples-no-gpu:
<<: *global_job_definition
stage: build
image: docker.pkg.github.com/espressomd/docker/ubuntu-cuda-10.1:c9fe9d6d79ffd7e3e89ef282548e0b5278afde2c
variables:
CC: 'gcc-8'
CXX: 'g++-8'
script:
- export myconfig=maxset with_cuda=true with_coverage=false make_check_unit_tests=false make_check_python=false
- export make_check_tutorials=true make_check_samples=true make_check_benchmarks=false test_timeout=1200 hide_gpu=true
Expand All @@ -277,10 +305,12 @@ tutorials-samples-no-gpu:
installation:
<<: *global_job_definition
stage: build
image: docker.pkg.github.com/espressomd/docker/ubuntu-cuda-10.1:c9fe9d6d79ffd7e3e89ef282548e0b5278afde2c
variables:
CC: 'gcc-8'
CXX: 'g++-8'
script:
- export myconfig=maxset with_cuda=true with_coverage=false make_check_unit_tests=false make_check_python=false
- export srcdir=${CI_PROJECT_DIR} test_timeout=1800 build_type=Release
- export srcdir=${CI_PROJECT_DIR} build_type=Release
- bash maintainer/CI/build_cmake.sh
- cd build
- make install
Expand All @@ -298,13 +328,11 @@ installation:
- docker
- linux
- cuda
timeout: 2h
when: manual

empty:
<<: *global_job_definition
stage: build
image: docker.pkg.github.com/espressomd/docker/ubuntu-20.04:b0de8c7df57d39edf72ad7d40c28bb67467dd7ec
variables:
CC: 'clang-9'
CXX: 'clang++-9'
Expand All @@ -316,23 +344,12 @@ empty:
- linux
- cuda

ubuntu:wo-dependencies:
<<: *global_job_definition
stage: build
image: docker.pkg.github.com/espressomd/docker/ubuntu-wo-dependencies:446ff604bbfa63f30ddb462697fa0d0dc2630460
script:
- export myconfig=maxset with_cuda=false make_check_unit_tests=false make_check_python=false
- bash maintainer/CI/build_cmake.sh
tags:
- docker
- linux

### Builds with ROCm

rocm-maxset:
<<: *global_job_definition
stage: build
image: docker.pkg.github.com/espressomd/docker/rocm:446ff604bbfa63f30ddb462697fa0d0dc2630460
image: docker.pkg.github.com/espressomd/docker/rocm:06b6216c7aa3555bcf28c90734dbb84e7285c96f
script:
- export myconfig=maxset with_cuda=true with_cuda_compiler=hip
- bash maintainer/CI/build_cmake.sh
Expand Down Expand Up @@ -381,7 +398,6 @@ intel:19:
check_sphinx:
<<: *global_job_definition
stage: additional_checks
image: docker.pkg.github.com/espressomd/docker/ubuntu-cuda-10.1:c9fe9d6d79ffd7e3e89ef282548e0b5278afde2c
needs:
- cuda10-maxset
when: on_success
Expand All @@ -402,7 +418,6 @@ check_sphinx:
run_tutorials:
<<: *global_job_definition
stage: additional_checks
image: docker.pkg.github.com/espressomd/docker/ubuntu-cuda-10.1:c9fe9d6d79ffd7e3e89ef282548e0b5278afde2c
needs:
- cuda10-maxset
when: on_success
Expand All @@ -426,7 +441,6 @@ run_tutorials:
run_doxygen:
<<: *global_job_definition
stage: additional_checks
image: docker.pkg.github.com/espressomd/docker/ubuntu-cuda-10.1:c9fe9d6d79ffd7e3e89ef282548e0b5278afde2c
needs:
- cuda10-maxset
when: on_success
Expand All @@ -446,10 +460,9 @@ run_doxygen:
check_cuda_maxset_no_gpu:
<<: *global_job_definition
stage: additional_checks
image: docker.pkg.github.com/espressomd/docker/ubuntu-cuda-9.0:c9fe9d6d79ffd7e3e89ef282548e0b5278afde2c
when: on_success
needs:
- cuda9-maxset
- cuda10-maxset
script:
- export CUDA_VISIBLE_DEVICES=""
- cd ${CI_PROJECT_DIR}/build
Expand All @@ -462,10 +475,9 @@ check_cuda_maxset_no_gpu:
check_with_odd_no_of_processors:
<<: *global_job_definition
stage: additional_checks
image: docker.pkg.github.com/espressomd/docker/ubuntu-cuda-9.0:c9fe9d6d79ffd7e3e89ef282548e0b5278afde2c
when: on_success
needs:
- cuda9-maxset
- cuda10-maxset
script:
- cd ${CI_PROJECT_DIR}/build
- cmake -DTEST_NP=3 .
Expand All @@ -479,7 +491,6 @@ check_with_odd_no_of_processors:
.deploy_base:
<<: *global_job_definition
stage: deploy
image: docker.pkg.github.com/espressomd/docker/ubuntu-20.04:e24415d47e2611662efe56b9946f1d0c1dda32d7
only:
- python
before_script:
Expand Down
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ matrix:
- os: linux
sudo: required
services: docker
env: myconfig=maxset image=espressomd/docker-ubuntu-18.04:446ff604bbfa63f30ddb462697fa0d0dc2630460
env: myconfig=maxset image=espressomd/docker-ubuntu-20.04:06b6216c7aa3555bcf28c90734dbb84e7285c96f

script:
- maintainer/CI/build_docker.sh
24 changes: 5 additions & 19 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -279,13 +279,11 @@ if(WITH_TESTS)
list(APPEND BOOST_COMPONENTS unit_test_framework)
endif()

if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
set(BOOST_MINIMUM_VERSION "1.65.0")
if(CUDA_FOUND AND CUDA_VERSION VERSION_GREATER_EQUAL "9.0")
set(BOOST_MINIMUM_VERSION "1.66.0")
endif()
else()
set(BOOST_MINIMUM_VERSION "1.58.0")
set(BOOST_MINIMUM_VERSION "1.65.0")

if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel" AND CUDA_FOUND
AND CUDA_VERSION VERSION_GREATER_EQUAL "9.0")
set(BOOST_MINIMUM_VERSION "1.66.0")
endif()

# old Boost.MPI versions contain a use-after-free bug that seems to only cause
Expand All @@ -296,18 +294,6 @@ endif()

find_package(Boost ${BOOST_MINIMUM_VERSION} REQUIRED ${BOOST_COMPONENTS})

if(Boost_VERSION VERSION_GREATER_EQUAL 106400 AND Boost_VERSION VERSION_LESS
106500)
# Boost 1.64 has incompatible Serialization and MPI modules, see
# https://svn.boost.org/trac10/ticket/12723 . Some distributions, like Fedora,
# have backported the patch.
file(READ "${Boost_INCLUDE_DIR}/boost/mpi/detail/mpi_datatype_primitive.hpp"
boost_mpi_datatype_file)
if(boost_mpi_datatype_file MATCHES "boost::serialization::detail::get_data")
message(FATAL_ERROR "Boost 1.64 is unsupported")
endif()
endif()

#
# Paths
#
Expand Down
Loading

0 comments on commit 35e0865

Please sign in to comment.