SCA/HPCAsia 2026 tutorial #809
Workflow file for this run
This file contains hidden or 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: Compilation Testing for DYAD | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| logLevel: | |
| description: 'Log level' | |
| required: true | |
| default: 'warning' | |
| environment: | |
| description: 'Environment to deploy' | |
| required: false | |
| default: 'staging' | |
| push: | |
| branches: [ main ] | |
| pull_request: | |
| branches: [ main ] | |
| jobs: | |
| compile-flux: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| flux: [ master ] | |
| mode: ["UCX"] | |
| os: [ ubuntu-24.04 ] | |
| compiler: [ gcc ] | |
| gcc: [ 14 ] | |
| profiler_mode: ["NONE"] | |
| name: ${{ matrix.os }}-${{ matrix.compiler }}-${{ matrix.gcc }}-${{ matrix.flux }}-${{ matrix.mode }} | |
| runs-on: ${{ matrix.os }} # Docker-based jobs must run on Ubuntu | |
| env: | |
| FLUX_VERSION: ${{ matrix.flux }} | |
| CC: gcc-${{ matrix.gcc }} | |
| CXX: g++-${{ matrix.gcc }} | |
| SPACK_DIR: "/home/runner/work/spack" | |
| DYAD_INSTALL_PREFIX: "/home/runner/work/dyad/install" | |
| DYAD_KVS_NAMESPACE: "test" | |
| DYAD_DTL_MODE: ${{ matrix.mode }} | |
| DYAD_PATH: "/home/runner/work/dyad/temp/" | |
| steps: | |
| - name: Push checkout | |
| if: github.event_name == 'push' | |
| uses: actions/checkout@v3 | |
| - name: PR checkout | |
| if: github.event_name == 'pull_request' | |
| uses: actions/checkout@v3 | |
| with: | |
| ref: ${{ github.event.pull_request.head.sha }} | |
| - name: Set up GCC | |
| uses: egor-tensin/setup-gcc@v1 | |
| with: | |
| version: ${{ matrix.gcc }} | |
| - name: Install system deps | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y --no-install-recommends \ | |
| gcc g++ gfortran \ | |
| cmake \ | |
| autoconf \ | |
| automake \ | |
| libtool \ | |
| libtool-bin \ | |
| openmpi-bin \ | |
| libopenmpi-dev \ | |
| libarchive-dev \ | |
| ncurses-bin \ | |
| hwloc \ | |
| lua5.3 liblua5.3-dev \ | |
| python3 \ | |
| python3-pip \ | |
| python3-venv \ | |
| libczmq-dev \ | |
| lua-posix-dev \ | |
| lz4 \ | |
| pkgconf \ | |
| libzmq5 \ | |
| sqlite3 | |
| pip3 --version && python3 --version | |
| gcc --version | |
| sudo pip3 install jsonschema cffi ply pyyaml | |
| sudo chmod 777 /usr -R | |
| - name: Install Spack | |
| run: | | |
| git clone --depth=2 https://github.com/spack/spack.git ${SPACK_DIR} | |
| - name: Load existing dependencies | |
| run: | | |
| . ${SPACK_DIR}/share/spack/setup-env.sh | |
| mkdir -p /home/runner/.spack | |
| GCC_VERSION="14.2.0" | |
| cat > /home/runner/.spack/packages.yaml <<EOF | |
| packages: | |
| all: | |
| target: [x86_64] | |
| providers: | |
| mpi: [openmpi] | |
| python: | |
| buildable: False | |
| externals: | |
| - spec: "python@3.12.3" | |
| prefix: /usr | |
| czmq: | |
| buildable: False | |
| externals: | |
| - spec: "czmq@4.2.1" | |
| prefix: /usr | |
| sqlite: | |
| buildable: False | |
| externals: | |
| - spec: "sqlite@3.45.1" | |
| prefix: /usr | |
| libzmq: | |
| buildable: False | |
| externals: | |
| - spec: "libzmq@4.3.5" | |
| prefix: /usr | |
| lua: | |
| buildable: False | |
| externals: | |
| - spec: "lua@5.3.6" | |
| prefix: /usr | |
| lua-luaposix: | |
| buildable: False | |
| externals: | |
| - spec: "lua-luaposix@36.2.1" | |
| prefix: /usr | |
| lz4: | |
| buildable: False | |
| externals: | |
| - spec: "lz4@1.9.4" | |
| prefix: /usr | |
| ncurses: | |
| buildable: False | |
| externals: | |
| - spec: "ncurses@6.4" | |
| prefix: /usr | |
| pkgconf: | |
| buildable: False | |
| externals: | |
| - spec: "pkgconf@1.8.1" | |
| prefix: /usr | |
| hwloc: | |
| buildable: False | |
| externals: | |
| - spec: "hwloc@2.10.0" | |
| prefix: /usr | |
| libarchive: | |
| buildable: False | |
| externals: | |
| - spec: "libarchive@3.7.2" | |
| prefix: /usr | |
| autoconf: | |
| buildable: False | |
| externals: | |
| - spec: "autoconf@2.71" | |
| prefix: /usr | |
| automake: | |
| buildable: False | |
| externals: | |
| - spec: "automake@1.16.5" | |
| prefix: /usr | |
| libtool: | |
| buildable: False | |
| externals: | |
| - spec: "libtool@2.4.7" | |
| prefix: /usr | |
| m4: | |
| buildable: False | |
| externals: | |
| - spec: "m4@1.4.19" | |
| prefix: /usr | |
| openmpi: | |
| buildable: False | |
| externals: | |
| - spec: "openmpi@4.1.6" | |
| prefix: /usr | |
| openssl: | |
| buildable: False | |
| externals: | |
| - spec: "openssl@2.1.7" | |
| prefix: /usr | |
| # pkg-config: | |
| # buildable: False | |
| # externals: | |
| # - spec: "pkg-config@0.29.1" | |
| # prefix: /usr | |
| gcc: | |
| externals: | |
| - spec: gcc@${GCC_VERSION} languages=c,c++ | |
| prefix: /usr | |
| extra_attributes: | |
| compilers: | |
| c: ${CC} | |
| cxx: ${CXX} | |
| buildable: False | |
| EOF | |
| echo "-------------------------------" | |
| cat /home/runner/.spack/packages.yaml | |
| echo "-------------------------------" | |
| spack compiler find --scope=user | |
| spack external find | |
| - name: Install Spack dependencies | |
| run: | | |
| mkdir -p ${DYAD_INSTALL_PREFIX} | |
| python3 -m venv ${DYAD_INSTALL_PREFIX} | |
| . ${SPACK_DIR}/share/spack/setup-env.sh | |
| spack install -j4 flux-core@${FLUX_VERSION} | |
| spack install -j4 mochi-margo | |
| if [[ $DYAD_DTL_MODE == 'UCX' ]]; then | |
| spack install -j4 ucx@1.18.0 | |
| fi | |
| if [[ $DYAD_PROFILER_MODE == 'CALIPER' ]]; then | |
| spack install -j4 caliper | |
| fi | |
| #spack install cpp-logger | |
| #spack load cpp-logger | |
| - name: Compile DYAD | |
| run: | | |
| echo "Activating spack" | |
| . ${SPACK_DIR}/share/spack/setup-env.sh | |
| spack load flux-core | |
| spack load mochi-margo | |
| if [[ $DYAD_DTL_MODE == 'UCX' ]]; then | |
| spack load ucx@1.18.0 | |
| fi | |
| if [[ $DYAD_PROFILER_MODE == 'CALIPER' ]]; then | |
| spack load caliper | |
| fi | |
| echo "Install DYAD" | |
| cd ${GITHUB_WORKSPACE} | |
| ls | |
| pwd | |
| mkdir build | |
| cd build | |
| export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:${DYAD_INSTALL_PREFIX}/lib/pkgconfig | |
| CONFIGURE_FLAGS="-DDYAD_PROFILER=NONE" | |
| if [[ $DYAD_DTL_MODE == 'UCX' ]]; then | |
| CONFIGURE_FLAGS="-DDYAD_ENABLE_UCX_DATA=ON -DDYAD_PROFILER=NONE" | |
| fi | |
| COMMON_FLAGS="-DDYAD_LIBDIR_AS_LIB=ON -DDYAD_ENABLE_MARGO_DATA=ON -DCMAKE_BUILD_TYPE=Debug -DDYAD_LOGGER=FLUX -DDYAD_LOGGER_LEVEL=INFO" | |
| cmake --version | |
| cmake -DCMAKE_INSTALL_PREFIX=${DYAD_INSTALL_PREFIX} ${CONFIGURE_FLAGS} ${COMMON_FLAGS} .. | |
| make VERBOSE=1 install -j | |
| - name: Install PyDYAD | |
| run: | | |
| source ${DYAD_INSTALL_PREFIX}/bin/activate | |
| pip install flux-python==0.80.0 | |
| cd ${GITHUB_WORKSPACE}/pydyad | |
| pip install -v -e . | |
| cd ${GITHUB_WORKSPACE} | |
| - name: Install Test | |
| run: | | |
| . ${SPACK_DIR}/share/spack/setup-env.sh | |
| export LD_LIBRARY_PATH=${DYAD_INSTALL_PREFIX}/lib:${LD_LIBRARY_PATH} | |
| export CFLAGS="-I${DYAD_INSTALL_PREFIX}/include" | |
| export CXXFLAGS="-I${DYAD_INSTALL_PREFIX}/include" | |
| export LDFLAGS="-L${DYAD_INSTALL_PREFIX}/lib" | |
| cd ${GITHUB_WORKSPACE}/docs/demos/ecp_feb_2023 | |
| make all | |
| - name: Test DYAD with separate FS c | |
| timeout-minutes: 1 | |
| run: | | |
| mkdir -m 775 -p $DYAD_PATH | |
| . ${SPACK_DIR}/share/spack/setup-env.sh | |
| spack load flux-core | |
| export PATH=${PATH}:${DYAD_INSTALL_PREFIX}/bin:${DYAD_INSTALL_PREFIX}/sbin | |
| export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${DYAD_INSTALL_PREFIX}/lib | |
| echo "Starting flux brokers" | |
| flux start --test-size=2 /bin/bash ${GITHUB_WORKSPACE}/.github/prod-cons/dyad_prod_cons_test.sh "c" | |
| - name: Test DYAD with separate FS cpp | |
| timeout-minutes: 1 | |
| run: | | |
| mkdir -m 775 -p $DYAD_PATH | |
| . ${SPACK_DIR}/share/spack/setup-env.sh | |
| spack load flux-core | |
| export PATH=${PATH}:${DYAD_INSTALL_PREFIX}/bin:${DYAD_INSTALL_PREFIX}/sbin | |
| export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${DYAD_INSTALL_PREFIX}/lib | |
| echo "Starting flux brokers" | |
| flux start --test-size=2 /bin/bash ${GITHUB_WORKSPACE}/.github/prod-cons/dyad_prod_cons_test.sh "cpp" | |
| - name: Test DYAD with separate FS python | |
| timeout-minutes: 1 | |
| run: | | |
| mkdir -m 775 -p $DYAD_PATH | |
| source ${DYAD_INSTALL_PREFIX}/bin/activate | |
| . ${SPACK_DIR}/share/spack/setup-env.sh | |
| spack load flux-core | |
| export PATH=${PATH}:${DYAD_INSTALL_PREFIX}/bin:${DYAD_INSTALL_PREFIX}/sbin | |
| export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${DYAD_INSTALL_PREFIX}/lib | |
| export PYTHONPATH=${GITHUB_WORKSPACE}/pydyad:${PYTHONPATH}:${DYAD_INSTALL_PREFIX}/lib/python3*/site-packages | |
| echo "Starting flux brokers" | |
| flux start --test-size=2 /bin/bash ${GITHUB_WORKSPACE}/.github/prod-cons/dyad_prod_cons_test.sh "python" | |
| #- name: Test DYAD with DLIO benchmark | |
| # timeout-minutes: 10 | |
| # run: | | |
| #mkdir -m 775 -p $DYAD_PATH | |
| #source ${DYAD_INSTALL_PREFIX}/bin/activate | |
| #. ${SPACK_DIR}/share/spack/setup-env.sh | |
| #export PATH=${PATH}:${DYAD_INSTALL_PREFIX}/bin:${DYAD_INSTALL_PREFIX}/sbin | |
| #export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${DYAD_INSTALL_PREFIX}/lib | |
| #export PYTHONPATH=${GITHUB_WORKSPACE}/tests/integration/dlio_benchmark:${GITHUB_WORKSPACE}/pydyad:$PYTHONPATH | |
| #pip install -v -r ${GITHUB_WORKSPACE}/tests/integration/dlio_benchmark/requirements.txt | |
| #echo "Starting flux brokers" | |
| #cd ${GITHUB_WORKSPACE}/tests/integration/dlio_benchmark | |
| #flux start --test-size=2 /bin/bash ./script.sh ${GITHUB_WORKSPACE} ${DYAD_INSTALL_PREFIX} | |