Bring back scopes on Buffer construction #689
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-22.04 ] | |
device : [host, cuda] | |
include: | |
- os: ubuntu-22.04 | |
cc: /usr/bin/gcc-12 | |
cxx: /usr/bin/g++-12 | |
- os: macos-latest | |
cc: clang | |
cxx: clang++ | |
exclude: | |
- os: macos-latest | |
device: cuda | |
name: "${{ matrix.os }}: ${{ matrix.cxx }} ${{ matrix.device }} ${{ 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 | |
-DCMAKE_CXX_STANDARD=20 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install prerequisite MacOS packages | |
if: ${{ matrix.os == 'macos-latest' }} | |
run: | | |
brew install ninja boost eigen open-mpi bison ccache | |
echo "MPIEXEC=/opt/homebrew/bin/mpiexec" >> $GITHUB_ENV | |
- name: Install prerequisites Ubuntu packages | |
if: ${{ matrix.os == 'ubuntu-22.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++-12 liblapack-dev libboost-dev libboost-serialization-dev libboost-random-dev libeigen3-dev openmpi-bin libopenmpi-dev libtbb-dev ccache flex bison cmake doxygen | |
echo "MPIEXEC=/usr/bin/mpiexec" >> $GITHUB_ENV | |
- name: Install extra dependencies | |
if: ${{ matrix.device == 'cuda'}} | |
run: | | |
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb | |
sudo dpkg -i cuda-keyring_1.1-1_all.deb | |
sudo apt update | |
sudo apt install -y cuda-toolkit | |
echo "CUDA_BUILD_OPTS=-DENABLE_CUDA=ON -DTTG_ENABLE_CUDA=ON -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-12.6 -DCMAKE_CUDA_COMPILER=/usr/local/cuda-12.6/bin/nvcc -DCMAKE_CUDA_HOST_COMPILER=${{ matrix.cxx }}" >> $GITHUB_ENV | |
- 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: 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@v4 | |
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 $CUDA_BUILD_OPTS || (cat CMakeFiles/CMakeConfigureLog.yaml) | |
- 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: Build [cuda] | |
if: ${{ matrix.device == 'cuda' }} | |
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 . --target bspmm-cuda-parsec testing_dpotrf_cuda-parsec chain-ttg-cuda-parsec && ccache -s | |
- name: Test [host] | |
if: ${{ matrix.device == 'host' }} | |
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: ccache -p && ccache -z && cmake --build . --target check-ttg && ccache -s | |
- 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/helloworld -B test_install_devsamp_helloworld -DCMAKE_PREFIX_PATH=${{github.workspace}}/install || (cat /home/runner/work/ttg/ttg/install/lib/cmake/ttg/ttg-config.cmake && test_install_devsamp_helloworld/CMakeFiles/CMakeConfigureLog.yaml) | |
cmake --build test_install_devsamp_helloworld | |
$MPIEXEC -n 2 test_install_devsamp_helloworld/helloworld-parsec | |
$MPIEXEC -n 2 test_install_devsamp_helloworld/helloworld-mad | |
cmake -S $GITHUB_WORKSPACE/doc/dox/dev/devsamp/fibonacci -B test_install_devsamp_fibonacci -DCMAKE_PREFIX_PATH=${{github.workspace}}/install || (cat /home/runner/work/ttg/ttg/install/lib/cmake/ttg/ttg-config.cmake && cat test_install_devsamp_fibonacci/CMakeFiles/CMakeConfigureLog.yaml) | |
cmake --build test_install_devsamp_fibonacci | |
$MPIEXEC -n 2 test_install_devsamp_fibonacci/fibonacci-parsec | |
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 || (cat /home/runner/work/ttg/ttg/install/lib/cmake/ttg/ttg-config.cmake && cat test_install_devsamp_fibonacci/CMakeFiles/CMakeConfigureLog.yaml) | |
cmake --build test_install_userexamples/build | |
- name: Build+Deploy Dox | |
if: ${{ matrix.os == 'ubuntu-22.04' && matrix.build_type == 'Release' && matrix.device == 'host' && github.ref == 'refs/heads/master' }} | |
working-directory: ${{github.workspace}}/build | |
shell: bash | |
run: | | |
echo "== deploying dox ==" | |
git config --global user.email "[email protected]" | |
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 |