Bump PaRSEC version for refactored GPU backend #410
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Linux/MacOS Build | |
on: [push, pull_request] | |
#env: | |
jobs: | |
build: | |
strategy: | |
fail-fast: false | |
matrix: | |
build_type : [ Release, Debug ] | |
os : [ macos-latest, ubuntu-20.04 ] | |
include: | |
- os: ubuntu-20.04 | |
cxx: /usr/bin/g++-9 | |
- os: macos-latest | |
cxx: clang++ | |
name: "${{ matrix.os }}: ${{ matrix.cxx }} ${{ matrix.build_type }}" | |
runs-on: ${{ matrix.os }} | |
env: | |
CXX : ${{ matrix.cxx }} | |
DOXYGEN_VERSION : 1.9.2 | |
GH_TTG_TOKEN : ${{ secrets.GH_TTG_TOKEN }} | |
CCACHE_DIR : ${{github.workspace}}/build/.ccache | |
CCACHE_COMPRESS : true | |
CCACHE_COMPRESSLEVEL : 6 | |
OMPI_MCA_btl_vader_single_copy_mechanism : none | |
PARSEC_MCA_runtime_bind_threads : 0 | |
BUILD_CONFIG : > | |
-G Ninja | |
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} | |
-DCMAKE_PREFIX_PATH=/usr/local/opt/bison | |
-DBUILD_SHARED_LIBS=OFF | |
-DMPIEXEC_PREFLAGS='--bind-to;none;--allow-run-as-root' | |
-DCMAKE_INSTALL_PREFIX=${{github.workspace}}/install | |
-DTTG_EXAMPLES=ON | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Install prerequisite MacOS packages | |
if: ${{ matrix.os == 'macos-latest' }} | |
run: brew install ninja gcc@10 boost eigen open-mpi bison ccache | |
- name: Install prerequisites Ubuntu packages | |
if: ${{ matrix.os == 'ubuntu-20.04' }} | |
run: | | |
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null | |
sudo apt-add-repository "deb https://apt.kitware.com/ubuntu/ $(lsb_release -cs) main" | |
sudo apt-get update | |
sudo apt-get -y install ninja-build g++-9 liblapack-dev libboost-dev libboost-serialization-dev libeigen3-dev openmpi-bin libopenmpi-dev libtbb-dev ccache flex bison cmake | |
- name: Create Build Environment | |
# Some projects don't allow in-source building, so create a separate build directory | |
# We'll use this as our working directory for all subsequent commands | |
run: | | |
cmake -E make_directory ${{github.workspace}}/build | |
- name: Install doxygen for Release test | |
if: ${{ matrix.os == 'ubuntu-20.04' }} | |
run: | | |
if [ "${{matrix.build_type}}" = "Release" ]; then | |
sudo apt-get -y install libclang1-9 libclang-cpp9 graphviz fonts-liberation | |
cd ${{github.workspace}}/build | |
# If we fail getting doxygen-${DOXYGEN_VERSION}.linux.bin.tar.gz from sourceforge, | |
# use EFV's gdrive mirror of 1.9.2 to work around the unreliable sourceforge | |
# the sharing link: https://drive.google.com/file/d/16GXpH4YOEUxGXQrXOKdAIibhdfzATY0d/view?usp=sharing | |
wget https://downloads.sourceforge.net/project/doxygen/rel-${DOXYGEN_VERSION}/doxygen-${DOXYGEN_VERSION}.linux.bin.tar.gz || wget -4 --no-check-certificate -O doxygen-${DOXYGEN_VERSION}.linux.bin.tar.gz "https://drive.google.com/uc?export=download&id=16GXpH4YOEUxGXQrXOKdAIibhdfzATY0d" | |
tar xzf ./doxygen-${DOXYGEN_VERSION}.linux.bin.tar.gz | |
export DOXYGEN_DIR=${{github.workspace}}/build/doxygen-${DOXYGEN_VERSION} | |
${DOXYGEN_DIR}/bin/doxygen --version | |
# doxygen should be in PATH in subsequent steps | |
echo "${DOXYGEN_DIR}/bin" >> $GITHUB_PATH | |
fi | |
- name: Prepare ccache timestamp | |
id: ccache_cache_timestamp | |
shell: cmake -P {0} | |
run: | | |
string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC) | |
message("::set-output name=timestamp::${current_date}") | |
- name: Setup ccache cache files | |
uses: actions/cache@v1.1.0 | |
with: | |
path: ${{github.workspace}}/build/.ccache | |
key: ${{ matrix.config.name }}-ccache-${{ steps.ccache_cache_timestamp.outputs.timestamp }} | |
restore-keys: | | |
${{ matrix.config.name }}-ccache- | |
- name: Configure CMake | |
# Use a bash shell so we can use the same syntax for environment variable | |
# access regardless of the host operating system | |
shell: bash | |
working-directory: ${{github.workspace}}/build | |
# Note the current convention is to use the -S and -B options here to specify source | |
# and build directories, but this is only available with CMake 3.13 and higher. | |
# The CMake binaries on the Github Actions machines are (as of this writing) 3.12 | |
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE $BUILD_CONFIG | |
- name: Build | |
working-directory: ${{github.workspace}}/build | |
shell: bash | |
# Execute the build. You can specify a specific target with "--target <NAME>" | |
run: ccache -p && ccache -z && cmake --build . && ccache -s | |
- name: Test | |
working-directory: ${{github.workspace}}/build | |
shell: bash | |
# Execute tests defined by the CMake configuration. | |
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail | |
# run: ctest -C $BUILD_TYPE | |
run: cmake --build . --target check-ttg | |
- name: Install | |
working-directory: ${{github.workspace}}/build | |
shell: bash | |
run: cmake --build . --target install | |
- name: Test Install Tree | |
working-directory: ${{github.workspace}}/build | |
shell: bash | |
run: | | |
cmake -S $GITHUB_WORKSPACE/doc/dox/dev/devsamp/main -B test_install_devsamp -DCMAKE_PREFIX_PATH=${{github.workspace}}/install | |
cmake --build test_install_devsamp | |
cmake -E make_directory test_install_userexamples | |
cat > test_install_userexamples/CMakeLists.txt <<EOF | |
cmake_minimum_required(VERSION 3.14) | |
project(test) | |
find_package(ttg REQUIRED) | |
add_ttg_executable(simple $GITHUB_WORKSPACE/doc/dox/user/examples/simple.cc NOT_EXCLUDE_FROM_ALL) | |
add_ttg_executable(reducing $GITHUB_WORKSPACE/doc/dox/user/examples/reducing.cc NOT_EXCLUDE_FROM_ALL) | |
add_ttg_executable(iterative $GITHUB_WORKSPACE/doc/dox/user/examples/iterative.cc NOT_EXCLUDE_FROM_ALL) | |
add_ttg_executable(distributed $GITHUB_WORKSPACE/doc/dox/user/examples/distributed.cc NOT_EXCLUDE_FROM_ALL) | |
EOF | |
cmake -S test_install_userexamples -B test_install_userexamples/build -DCMAKE_PREFIX_PATH=${{github.workspace}}/install | |
cmake --build test_install_userexamples/build | |
- name: Build+Deploy Dox | |
if: ${{ matrix.os == 'ubuntu-20.04' && matrix.build_type == 'Release' && github.ref == 'refs/heads/master' }} | |
working-directory: ${{github.workspace}}/build | |
shell: bash | |
run: | | |
echo "== deploying dox ==" | |
git config --global user.email "eduard@valeyev.net" | |
git config --global user.name "GitHub Actions" | |
cmake --build . --target html | |
git clone --depth=1 https://github.com/TESSEorg/ttg.git --branch gh-pages --single-branch ttg-docs-current | |
git clone --depth=1 https://github.com/TESSEorg/ttg.git --branch gh-pages-template --single-branch ttg-docs-template | |
cmake -E make_directory ttg-docs | |
cp -rp ttg-docs-current/* ttg-docs | |
rm -rf ttg-docs-current | |
cp -p ttg-docs-template/* ttg-docs | |
rm -rf ttg-docs-template | |
cd ttg-docs | |
# copy TTG's README.md into index.md | |
cp ${{github.workspace}}/README.md index.md | |
# update dox | |
if [ -d dox-master ]; then | |
rm -rf dox-master | |
fi | |
mv ${{github.workspace}}/build/doc/dox/html dox-master | |
# Jekyll does not allow files with "special" names, e.g. whose names start with underscore | |
# must "include" such files explicitly | |
# re: how file names must be formatted: see https://github.com/jekyll/jekyll/issues/1352 | |
echo "include:" >> _config.yml | |
find dox-master -name "_*" | sed "s/dox-master\// \- /g" >> _config.yml | |
# make empty repo to ensure gh-pages contains no history | |
git init | |
git add * | |
git commit -a -q -m "rebuilt TTG master docs via GitHub Actions build: $GITHUB_RUN_NUMBER" | |
git checkout -b gh-pages | |
git remote add origin https://${GH_TTG_TOKEN}@github.com/TESSEorg/ttg.git > /dev/null 2>&1 | |
git push origin +gh-pages --force | |
cd .. | |
rm -rf ttg-docs |