diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 7db143a8d465f93dd0da35ad150ed827165e6a01..0000000000000000000000000000000000000000 --- a/.travis.yml +++ /dev/null @@ -1,170 +0,0 @@ -######## Testing minimal compiler requirements ######## -# GCC 8.1.0 -# Clang 8.0 -# Apple Clang 1100.0.33.16 -####################################################### - -# Ignore bors testing branches. -if: NOT branch =~ \.tmp$ - -language: cpp -sudo: false - -matrix: - include: -########################## OS X ######################### -## test gcc8 - single node/rank with threading backend ## - - name: "osx, gcc, serial, py" - os: osx - osx_image: xcode12 - python: 3.6 - env: - - MATRIX_EVAL="brew install gcc@8 && brew link --force --overwrite gcc@8 && brew install cmake && CC=gcc-8 && CXX=g++-8" - - BUILD_NAME=cthread-osx-gcc-py - - WITH_DISTRIBUTED=serial WITH_PYTHON=true PY=3 WITH_NEUROML=ON ARCH=native - compiler: gcc-8 - -## test gcc8 - mpi with threading backend ## - - name: "osx, gcc, mpi, py" - os: osx - osx_image: xcode12 - python: 3.6 - env: - - MATRIX_EVAL="brew install gcc@8 && brew link --force --overwrite gcc@8 && brew install cmake && CC=gcc-8 && CXX=g++-8" - - BUILD_NAME=mpi-osx-gcc-py - - WITH_DISTRIBUTED=mpi WITH_PYTHON=true PY=3 WITH_NEUROML=ON ARCH=native - compiler: gcc-8 - -## test clang9 - single node/rank with threading backend ## - - name: "osx, apple clang, serial, py" - os: osx - osx_image: xcode12 - python: 3.6 - env: - - MATRIX_EVAL="CC=clang && CXX=clang++" - - BUILD_NAME=cthread-osx-clang-py - - WITH_DISTRIBUTED=serial WITH_PYTHON=true PY=3 WITH_NEUROML=ON ARCH=native - compiler: clang - -## test clang9 - mpi with threading backend ## - - name: "osx, apple clang, mpi, py" - os: osx - osx_image: xcode12 - python: 3.6 - env: - - MATRIX_EVAL="CC=clang && CXX=clang++" - - BUILD_NAME=mpi-osx-clang - - WITH_DISTRIBUTED=mpi WITH_PYTHON=true PY=3 WITH_NEUROML=ON ARCH=native - compiler: clang - -######################### LINUX ######################### -## test gcc8 - single node/rank with threading backend ## - - name: "linux, gcc, serial, py" - os: linux - dist: bionic - addons: - apt: - sources: - packages: - - g++-8 - - openmpi-bin - - libopenmpi-dev - - libxml2 - env: - - MATRIX_EVAL="CC=gcc-8 && CXX=g++-8" - - BUILD_NAME=cthread-linux-gcc-py - - WITH_DISTRIBUTED=serial WITH_PYTHON=true PY=3 WITH_NEUROML=ON ARCH=haswell - compiler: gcc-8 - -## test gcc8 - mpi with threading backend ## - - name: "linux, gcc, mpi, py" - os: linux - dist: bionic - addons: - apt: - sources: - packages: - - g++-8 - - openmpi-bin - - libopenmpi-dev - - libxml2 - env: - - MATRIX_EVAL="CC=gcc-8 && CXX=g++-8" - - BUILD_NAME=mpi-linux-gcc-py - - WITH_DISTRIBUTED=mpi WITH_PYTHON=true PY=3 WITH_NEUROML=ON ARCH=haswell - compiler: gcc-8 - -## test clang8 - single node/rank with threading backend ## -# Note: need g++8 for C++17 stdlib. - - name: "linux, clang, serial, py" - os: linux - dist: bionic - addons: - apt: - sources: - packages: - - g++-8 - - clang-8 - - openmpi-bin - - libopenmpi-dev - - libxml2 - env: - - MATRIX_EVAL="CC=clang-8 && CXX=clang++-8" - - BUILD_NAME=cthread-linux-clang-py - - WITH_DISTRIBUTED=serial WITH_PYTHON=true PY=3 WITH_NEUROML=ON ARCH=native - compiler: clang-8.0 - -## test clang8 - mpi with threading backend ## -# Note: need g++8 for C++17 stdlib. - - name: "linux, clang, mpi, py" - os: linux - dist: bionic - addons: - apt: - sources: - packages: - - g++-8 - - clang-8 - - openmpi-bin - - libopenmpi-dev - - libxml2 - env: - - MATRIX_EVAL="CC=clang-8 && CXX=clang++-8" - - BUILD_NAME=mpi-linux-clang-py - - WITH_DISTRIBUTED=mpi WITH_PYTHON=true PY=3 WITH_NEUROML=ON ARCH=native - compiler: clang-8.0 - -before_install: - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then export HOMEBREW_NO_AUTO_UPDATE=1; brew cask uninstall --force oclint; fi - -install: - - | - if [[ "$WITH_PYTHON" == "true" ]]; then - curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py - python$PY get-pip.py - pip$PY --version - pip$PY install pandas - pip$PY install seaborn - fi - - if [[ ( "$WITH_PYTHON" == "true" ) && ( "$TRAVIS_OS_NAME" == "osx" ) ]]; then pip$PY install numpy; fi - - | - if [[ "$WITH_DISTRIBUTED" == "mpi" ]]; then - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then - brew install open-mpi; - if [[ "$WITH_PYTHON" == "true" ]]; then - pip$PY install mpi4py - fi - elif [[ ( "$TRAVIS_OS_NAME" == "linux" ) && ( "$WITH_PYTHON" == "true" ) ]]; then - pip$PY install mpi4py - fi - fi - -before_script: - - eval "${MATRIX_EVAL}" - -script: source ./scripts/travis/build.sh - -notifications: - email: - on_success: never - on_failure: always diff --git a/README.md b/README.md index 448660def79e387ace900c9b0934f440810d63fd..e357256d13ad13b58dcb6d02257c61828b0e6203 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,8 @@ -[](https://gitlab.com/cscs-ci/arbor-sim/arbor/-/commits/master) [](https://travis-ci.org/arbor-sim/arbor) [](https://codecov.io/gl/cscs-ci:arbor-sim/arbor) [](https://gitpod.io/#https://github.com/arbor-sim/arbor) +[](https://gitlab.com/cscs-ci/arbor-sim/arbor/-/commits/master) +[](https://github.com/arbor-sim/arbor/actions?query=workflow%3A%22Basic+Tests+and+Documentation%22) +[](https://codecov.io/gl/cscs-ci:arbor-sim/arbor) +[](https://gitpod.io/#https://github.com/arbor-sim/arbor) +[](https://arbor.readthedocs.io/en/latest/) # Arbor Library diff --git a/doc/contrib/pr.rst b/doc/contrib/pr.rst index 5eb2dae5263d32bf1a2523301eef2c3ea8d705bd..01d1d11e264c222bdb466bdb4b76a8ad723ebb85 100644 --- a/doc/contrib/pr.rst +++ b/doc/contrib/pr.rst @@ -32,12 +32,13 @@ the workflow is as follows: as the Arbor project. If this is a problem for you, please contact us at `arbor-sim@fz-juelich.de <mailto:arbor-sim@fz-juelich.de>`__. -5. A PR on Github is automatically built and tested by our CI bot called Travis. - You can also run these tests yourself by building them first +5. A PR on Github is automatically built and tested by GitHub Actions CI pipelines. + You can run these tests yourself by building them first (``make tests``) and then running them (``./bin/*unit*``). - If you make changes effecting simulations on GPUs, you can post a reply to - your PR with ``bors try``. This will run our GPU test-suite. + your PR with ``bors try``, which will run the test-suite with GPU and MPI + enabled on `Piz Daint <https://www.cscs.ch/computers/piz-daint/>`_. 6. A member of the Arbor development team will review your contribution. If they approve, your PR will be merged! Normally this should happen within a few days. @@ -55,7 +56,7 @@ Each pull request is reviewed according to these guidelines: - At least one core Arbor team member needs to mark your PR with a positive review. -- Travis CI must produce a favourable result on your PR. +- GitHub Actions CI must produce a favourable result on your PR. - An Arbor team member will (squash) merge the PR with the PR change summery as commit message. - Consider using Gitpod to review larger PRs, see under checks on the Github PR page. diff --git a/doc/index.rst b/doc/index.rst index 0424bb7b259f6b34db56e1313e81fabd9e0d03c7..bb28039bb6121869cee6efdf8449998dbff7aaa1 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -1,8 +1,8 @@ Arbor ===== -.. image:: https://travis-ci.org/arbor-sim/arbor.svg?branch=master - :target: https://travis-ci.org/arbor-sim/arbor +.. image:: https://github.com/arbor-sim/arbor/workflows/Basic%20Tests%20and%20Documentation/badge.svg + :target: https://github.com/arbor-sim/arbor/actions?query=workflow%3A%22Basic+Tests+and+Documentation%22 Welcome to the documentation for Arbor, the multi-compartment neural network simulation library. diff --git a/scripts/travis/build.sh b/scripts/travis/build.sh deleted file mode 100755 index 60e6e95b385452b524888b2ec3b99b4fc16a45c1..0000000000000000000000000000000000000000 --- a/scripts/travis/build.sh +++ /dev/null @@ -1,135 +0,0 @@ -RED='\033[0;31m' -YELLOW='\033[0;33m' -CLEAR='\033[0m' - -error() {>&2 echo -e "${RED}ERROR${CLEAR}: $1"; exit 1;} -progress() { echo; echo -e "${YELLOW}STATUS${CLEAR}: $1"; echo;} - -base_path=`pwd` -build_path=build-${BUILD_NAME} - -# -# print build-specific and useful information -# -progress "build environment" - -compiler_version=`${CXX} --version | grep -m1 ""` -cmake_version=`cmake --version | grep version | awk '{print $3}'` - -echo "compiler : ${compiler_version}" -echo "cmake : ${cmake_version}" -echo "build path : ${build_path}" -echo "base path : ${base_path}" -echo "python3 : $(which python3)" -echo "python3ver : $(python3 --version)" - -if [[ "${WITH_DISTRIBUTED}" == "mpi" ]]; then - echo "mpi : on" - export OMPI_CC=${CC} - export OMPI_CXX=${CXX} - CC="mpicc" - CXX="mpicxx" - launch="mpiexec -n 4" - # on mac: - # --oversubscribe flag allows more processes on a node than processing elements - # --mca btl tcp,self for Open MPI to use the "tcp" and "self" Byte Transfer Layers for transporting MPI messages - # "self" to deliver messages to the same rank as the sender - # "tcp" sends messages across TCP-based networks (Transmission Control Protocol with Internet Protocol) - if [[ "$TRAVIS_OS_NAME" = "osx" ]]; then - launch="${launch} --oversubscribe --mca btl tcp,self" - fi - WITH_MPI="ON" -else - echo "mpi : off" - launch="" - WITH_MPI="OFF" -fi - -if [[ "${WITH_PYTHON}" == "true" ]]; then - echo "python : on" - ARB_WITH_PYTHON="ON" - # The build process creates the arbor module in build_path/python/arbor - export PYTHONPATH=$PYTHONPATH:${base_path}/${build_path}/python - python_path=$base_path/python - echo "python src : ${python_path}" - echo "PYTHONPATH : ${PYTHONPATH}" - - if [[ "$TRAVIS_OS_NAME" = "linux" ]]; then - pypref=$(python-config --prefix) - PY_FLAGS="-DPYTHON_EXECUTABLE=$pypref/bin/python3.6 -DPYTHON_INCLUDE_DIR=$pypref/include/python3.6m -DPYTHON_LIBRARY=$pypref/lib/python3.6/config-3.6m-x86_64-linux-gnu/libpython3.6m.so" - else - PY_FLAGS="" - fi -else - echo "python : off" - ARB_WITH_PYTHON="OFF" -fi - -# -# make build path -# -mkdir -p $build_path -cd $build_path - -# -# run cmake -# -progress "Configuring with cmake" - -# Fix CMake/Homebrew/XCode mess. See: https://github.com/apple/swift/pull/32436 -if which xcrun >/dev/null; then - typeset -x CMAKE_PREFIX_PATH="${CMAKE_PREFIX_PATH}":$(xcrun --sdk macosx --show-sdk-path)/usr -fi - -cmake_flags="-DARB_WITH_ASSERTIONS=ON -DARB_USE_BUNDLED_LIBS=ON -DARB_WITH_NEUROML=${WITH_NEUROML} -DARB_WITH_MPI=${WITH_MPI} -DARB_WITH_PYTHON=${ARB_WITH_PYTHON} -DARB_ARCH=${ARCH} ${CXX_FLAGS} ${PY_FLAGS}" -echo "cmake flags: ${cmake_flags}" -cmake .. ${cmake_flags} || error "unable to configure cmake" - -export ARB_NUM_THREADS=2 - -progress "C++ unit tests" -make unit -j4 || error "building unit tests" -./bin/unit --gtest_color=no || error "running unit tests" - -progress "C++ modcc unit testss" -make unit-modcc -j4 || error "building modcc unit tests" -./bin/unit-modcc --gtest_color=no || error "running modcc unit tests" - -progress "C++ distributed unit tests (local)" -make unit-local -j4 || error "building local distributed unit tests" -./bin/unit-local || error "running local distributed unit tests" - -if [[ "${WITH_DISTRIBUTED}" == "mpi" ]]; then - progress "C++ distributed unit tests (MPI)" - make unit-mpi -j4 || error "building MPI distributed unit tests" - ${launch} ./bin/unit-mpi || error "running MPI distributed unit tests" -fi - -if [[ "${WITH_PYTHON}" == "true" ]]; then - progress "Building python module" - make pyarb -j4 || error "building pyarb" - progress "Python unit tests" - python$PY $python_path/test/unit/runner.py -v2 || error "running python unit tests (serial)" - progress "Python example: network_ring" - python$PY $python_path/example/network_ring.py || error "running python network_ring example" - progress "Python example: single_cell_model" - python$PY $python_path/example/single_cell_model.py || error "running python single_cell_model example" - progress "Python example: single_cell_recipe" - python$PY $python_path/example/single_cell_recipe.py || error "running python single_cell_recipe example" - progress "Python example: single_cell_detailed" - python$PY $python_path/example/single_cell_detailed.py $python_path/example/morph.swc || error "running python single_cell_detailed example" - progress "Python example: single_cell_detailed_recipe" - python$PY $python_path/example/single_cell_detailed_recipe.py $python_path/example/morph.swc || error "running python single_cell_detailed_recipe example" - progress "Python example: single_cell_swc" - python$PY $python_path/example/single_cell_swc.py $base_path/test/unit/swc/pyramidal.swc || error "running python single_cell_swc example" - if [[ "${WITH_DISTRIBUTED}" = "mpi" ]]; then - if [[ "$TRAVIS_OS_NAME" = "osx" ]]; then - progress "Python distributed unit tests (MPI)" - ${launch} python$PY $python_path/test/unit_distributed/runner.py -v2 || error "running python distributed unit tests (MPI)" - else - progress "Python distributed unit tests (MPI) -- skipping on Linux due to Travis config issues on Bionic." - fi - fi -fi - -cd $base_path