src: Adds multi-init and multi-finalize support #459
Workflow file for this run
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: SOS-github-actions | |
on: [push, pull_request] | |
defaults: | |
run: | |
shell: bash | |
env: | |
SOS_INSTALL_DIR: ${{ github.workspace }}/install/sos | |
LIBFABRIC_INSTALL_DIR: ${{ github.workspace }}/install/libfabric | |
UCX_INSTALL_DIR: ${{ github.workspace }}/install/ucx | |
PORTALS4_INSTALL_DIR: ${{ github.workspace }}/install/portals4 | |
LIBEVENT_INSTALL_DIR: ${{ github.workspace }}/install/libevent | |
PRRTE_INSTALL_DIR: ${{ github.workspace }}/install/prrte | |
PMIX_INSTALL_DIR: ${{ github.workspace }}/install/pmix | |
SOS_BUILD_STATIC_OPTS: --disable-shared --enable-static | |
XPMEM_INSTALL_DIR: ${{ github.workspace }}/install/xpmem | |
SOS_PM: mpiexec.hydra | |
SOS_PM_POST: true | |
jobs: | |
OFI: | |
runs-on: ubuntu-20.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- config_name: PMI simple | |
sos_config: --enable-pmi-simple | |
libfabric_version: v1.7.x | |
- config_name: PMI simple | |
sos_config: --enable-pmi-simple | |
libfabric_version: v1.9.x | |
- config_name: PMI simple | |
sos_config: --enable-pmi-simple | |
libfabric_version: v1.11.x | |
- config_name: PMI simple | |
sos_config: --enable-pmi-simple | |
libfabric_version: v1.13.x | |
- config_name: Deprecated tests | |
sos_config: --enable-pmi-simple --enable-deprecated-tests | |
libfabric_version: v1.13.x | |
- config_name: MR-Basic, AV-map, memcpy | |
sos_config: --enable-ofi-mr=basic --enable-av-map --disable-cxx --enable-memcpy | |
--enable-pmi-simple --with-hwloc=no | |
libfabric_version: v1.13.x | |
- config_name: PMI MPI | |
sos_config: --disable-fortran --enable-pmi-mpi CC=mpicc | |
libfabric_version: v1.13.x | |
- config_name: Remove Virtual Addressing (RVA) | |
sos_config: --disable-fortran --enable-error-checking --enable-remote-virtual-addressing | |
--disable-aslr-check --enable-pmi-simple | |
libfabric_version: v1.13.x | |
- config_name: heap use malloc | |
env_setup: export SHMEM_SYMMETRIC_HEAP_USE_MALLOC=1 | |
sos_config: --disable-threads --enable-error-checking --enable-pmi-simple --with-hwloc=no | |
libfabric_version: v1.13.x | |
# too slow, times out on Github (but passes on another Ubuntu 20.04 system)... | |
#- config_name: CMA, MR Basic, RVA | |
# sos_config: --disable-fortran --with-cma --enable-error-checking --enable-profiling | |
# --enable-ofi-mr=basic --enable-av-map --enable-remote-virtual-addressing | |
# --enable-pmi-simple | |
# libfabric_version: v1.13.x | |
- config_name: XPMEM RVA | |
xpmem_version: master | |
sos_config: --with-xpmem=${XPMEM_INSTALL_DIR} --enable-error-checking | |
--enable-remote-virtual-addressing --enable-pmi-simple | |
libfabric_version: v1.13.x | |
- config_name: XPMEM shared atomics | |
xpmem_version: master | |
sos_config: --with-xpmem=${XPMEM_INSTALL_DIR} --enable-shr-atomics | |
--enable-error-checking --enable-pmi-simple | |
libfabric_version: v1.13.x | |
- config_name: RVA, thread completion | |
sos_config: --enable-error-checking --enable-remote-virtual-addressing | |
--enable-thread-completion --enable-pmi-simple | |
libfabric_version: v1.13.x | |
- config_name: huge pages, zero bounce | |
env_setup: SHMEM_SYMMETRIC_HEAP_USE_HUGE_PAGES=1 SHMEM_BOUNCE_SIZE=0 | |
sos_config: --enable-error-checking --enable-remote-virtual-addressing | |
--enable-pmi-simple --enable-ofi-fence --with-hwloc=no | |
libfabric_version: v1.13.x | |
- config_name: auto algorithms | |
env_setup: export SHMEM_BARRIER_ALGORITHM=auto; | |
export SHMEM_BCAST_ALGORITHM=auto; | |
export SHMEM_REDUCE_ALGORITHM=auto; | |
export SHMEM_COLLECT_ALGORITHM=auto; | |
export SHMEM_FCOLLECT_ALGORITHM=auto | |
sos_config: --enable-error-checking --enable-remote-virtual-addressing | |
--enable-thread-completion --enable-pmi-simple | |
libfabric_version: v1.13.x | |
- config_name: linear algorithms | |
env_setup: export SHMEM_BARRIER_ALGORITHM=linear; | |
export SHMEM_BCAST_ALGORITHM=linear; | |
export SHMEM_REDUCE_ALGORITHM=linear; | |
export SHMEM_COLLECT_ALGORITHM=linear; | |
export SHMEM_FCOLLECT_ALGORITHM=linear | |
sos_config: --enable-error-checking --enable-remote-virtual-addressing | |
--enable-pmi-simple --with-hwloc=no | |
libfabric_version: v1.13.x | |
- config_name: tree algorithms | |
env_setup: export SHMEM_BARRIER_ALGORITHM=tree; | |
export SHMEM_BCAST_ALGORITHM=tree; | |
export SHMEM_REDUCE_ALGORITHM=tree; | |
export SHMEM_OFI_STX_MAX=0 | |
sos_config: --enable-error-checking --enable-remote-virtual-addressing | |
--enable-pmi-simple --enable-manual-progress | |
libfabric_version: v1.13.x | |
- config_name: dissem/recdbl algorithms | |
env_setup: export SHMEM_BARRIER_ALGORITHM=dissem; | |
export SHMEM_REDUCE_ALGORITHM=recdbl; | |
export SHMEM_FCOLLECT_ALGORITHM=recdbl; | |
export SHMEM_OFI_STX_AUTO=1 | |
sos_config: --enable-error-checking --enable-remote-virtual-addressing | |
--enable-pmi-simple --enable-manual-progress --enable-hard-polling --with-hwloc=no | |
libfabric_version: v1.13.x | |
- config_name: ring reduce algorithm | |
env_setup: export SHMEM_REDUCE_ALGORITHM=ring | |
sos_config: --enable-error-checking --enable-pmi-simple | |
libfabric_version: v1.13.x | |
- config_name: ring fcollect algorithm, tx/rx single poll limit | |
env_setup: export SHMEM_FCOLLECT_ALGORITHM=ring; | |
export SHMEM_OFI_TX_POLL_LIMIT=1; | |
export SHMEM_OFI_RX_POLL_LIMIT=1; | |
export SHMEM_OFI_STX_THRESHOLD=1024 | |
sos_config: --enable-error-checking --enable-remote-virtual-addressing | |
--enable-pmi-simple | |
libfabric_version: v1.13.x | |
- config_name: STX random | |
env_setup: export SHMEM_OFI_STX_MAX=8; | |
export SHMEM_OFI_STX_ALLOCATOR=random | |
sos_config: --enable-error-checking --enable-remote-virtual-addressing | |
--enable-pmi-simple | |
libfabric_version: v1.13.x | |
- config_name: RPM build | |
env_setup: export SOS_CHECK_TARBALL_RPM=1 | |
sos_config: --enable-pmi-simple | |
rpm_build: true | |
libfabric_version: v1.13.x | |
- config_name: Lengthy tests | |
sos_config: --enable-lengthy-tests --enable-pmi-simple | |
libfabric_version: v1.13.x | |
- config_name: Manpages | |
sos_config: --enable-manpages --enable-pmi-simple | |
libfabric_version: v1.13.x | |
- config_name: Without OFI inject | |
sos_config: --disable-ofi-inject --enable-pmi-simple | |
libfabric_version: v1.13.x | |
- config_name: Without Non-fetch AMO | |
sos_config: --disable-nonfetch-amo --enable-pmi-simple | |
libfabric_version: v1.13.x | |
name: OFI ${{ matrix.libfabric_version }} (${{ matrix.config_name }}) | |
steps: | |
- name: Checking OS version | |
run: | | |
echo "OS_NAME=$(lsb_release -si)-$(lsb_release -sr)" >> $GITHUB_ENV | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
submodules: 'true' | |
- name: Install dependencies | |
run: | | |
sudo apt-get install -y gfortran rpm mpich libmpich-dev libhwloc-dev | |
sudo sysctl -w kernel.yama.ptrace_scope=0 | |
sudo sysctl -w kernel.randomize_va_space=0 | |
# LIBFABRIC | |
- name: Cache libfabric install | |
id: cache-libfabric | |
uses: actions/cache@v2 | |
with: | |
path: ${{ env.LIBFABRIC_INSTALL_DIR }} | |
key: libfabric-${{ matrix.libfabric_version }}-${{ env.OS_NAME }} | |
- name: Checkout libfabric | |
if: steps.cache-libfabric.outputs.cache-hit != 'true' | |
uses: actions/checkout@v4 | |
with: | |
repository: ofiwg/libfabric | |
path: repos/libfabric | |
ref: ${{ matrix.libfabric_version }} | |
- name: Build libfabric | |
if: steps.cache-libfabric.outputs.cache-hit != 'true' | |
run: | | |
cd repos/libfabric | |
./autogen.sh | |
mkdir build; cd build | |
../configure --prefix=${LIBFABRIC_INSTALL_DIR} | |
make -j | |
make install | |
# XPMEM | |
- name: Cache XPMEM install | |
if: ${{ matrix.xpmem_version }} | |
id: cache-xpmem | |
uses: actions/cache@v2 | |
with: | |
path: ${{ env.XPMEM_INSTALL_DIR }} | |
key: xpmem-${{ matrix.xpmem_version }}-${{ env.OS_NAME }} | |
- name: Checkout XPMEM | |
if: ${{ matrix.xpmem_version }} | |
uses: actions/checkout@v4 | |
with: | |
repository: hjelmn/xpmem | |
path: repos/xpmem | |
ref: ${{ matrix.xpmem_version }} | |
- name: Build XPMEM | |
if: ${{ matrix.xpmem_version }} | |
run: | | |
cd repos/xpmem | |
sudo apt-get install linux-headers-`uname -r` | |
./autogen.sh | |
./configure --prefix=${XPMEM_INSTALL_DIR} | |
make -j | |
sudo make install | |
sudo insmod ${XPMEM_INSTALL_DIR}/lib/modules/`uname -r`/kernel/xpmem/xpmem.ko | |
sudo chown `whoami` /dev/xpmem | |
# SOS | |
- name: Build SOS (${{ matrix.sos_config }}) | |
run: | | |
git submodule update --remote | |
./autogen.sh | |
mkdir build; cd build | |
../configure --prefix=${SOS_INSTALL_DIR} --with-ofi=${LIBFABRIC_INSTALL_DIR} ${{ matrix.sos_config }} | |
make -j | |
make install | |
- name: Test SOS (${{ matrix.sos_config }}) | |
run: | | |
cd build | |
make check TESTS= -j | |
${{ matrix.env_setup }} | |
SHMEM_DEBUG=1 SHMEM_INFO=1 SHMEM_OFI_PROVIDER=sockets make VERBOSE=1 TEST_RUNNER="${SOS_PM} -np 2" check | |
cat modules/tests-sos/test/unit/hello.log | |
- name: Test RPM (${{ matrix.rpm_build }}) | |
if: ${{ matrix.rpm_build }} | |
run: | | |
# FIXME: RPM with a prefix not working on Ubuntu 20.04 (related to _docdir?) | |
#./configure --with-ofi=${LIBFABRIC_INSTALL_DIR} ${{ matrix.sos_config }} --enable-rpm-prefix | |
#make dist | |
#rpmbuild -ta ./sandia-openshmem-*.tar.gz --define "configargs --with-ofi=${LIBFABRIC_INSTALL_DIR} ${{ matrix.sos_config }}" --define "_prefix /usr/shmem" | |
#make clean | |
./configure --with-ofi=${LIBFABRIC_INSTALL_DIR} ${{ matrix.sos_config }} | |
make dist | |
rpmbuild -ta ./sandia-openshmem-*.tar.gz --define "configargs --with-ofi=${LIBFABRIC_INSTALL_DIR} ${{ matrix.sos_config }}" | |
# Sanity check distribution tarball | |
tar zxvf sandia-openshmem-*.tar.gz | |
sos_version=$(cat configure.ac | grep AC_INIT | awk -F"]" '{print substr($2, 4, length($2)-2)}') | |
cd "sandia-openshmem-"$sos_version | |
./autogen.sh | |
mkdir build | |
cd build | |
../configure --with-ofi=${LIBFABRIC_INSTALL_DIR} ${{ matrix.sos_config }} | |
make -j check TESTS= | |
${SOS_PM_PRE} | |
SHMEM_DEBUG=1 SHMEM_INFO=1 make VERBOSE=1 TEST_RUNNER="${SOS_PM} -np 2" check | |
${SOS_PM_POST} | |
# PMIx: | |
# runs-on: ubuntu-20.04 | |
# strategy: | |
# fail-fast: false | |
# matrix: | |
# include: | |
# - sos_transport: libfabric | |
# libfabric_version: v1.7.x | |
# sos_transport_config: --with-ofi=${LIBFABRIC_INSTALL_DIR} --without-ucx --without-portals4 | |
# run_all_tests: true | |
# libevent_version: release-2.1.10-stable | |
# pmix_version: v4.1.1rc2 | |
# prrte_version: v2.0 | |
# sos_pm: prun | |
# sos_pm_pre: prte --daemonize --host localhost:4 | |
# sos_pm_post: pterm | |
# - sos_transport: ucx | |
# ucx_version: v1.9.0 | |
# sos_transport_config: --with-ucx=${UCX_INSTALL_DIR} --without-ofi --without-portals4 | |
# run_all_tests: true | |
# libevent_version: release-2.1.10-stable | |
# pmix_version: v4.1.1rc2 | |
# prrte_version: v2.0 | |
# sos_pm: prun | |
# sos_pm_pre: prte --daemonize --host localhost:4 | |
# sos_pm_post: pterm | |
# - sos_transport: portals4 | |
# portals4_version: master | |
# sos_transport_config: --with-portals4=${PORTALS4_INSTALL_DIR} --without-ofi --without-ucx | |
# run_all_tests: false | |
# libevent_version: release-2.1.10-stable | |
# pmix_version: v4.1.1rc2 | |
# prrte_version: v2.0 | |
# sos_pm: prun | |
# sos_pm_pre: prte --daemonize --host localhost:4 | |
# sos_pm_post: pterm | |
# | |
# name: PMIx (${{ matrix.sos_transport }}) | |
# | |
# steps: | |
# - name: Checking OS version | |
# run: | | |
# echo "OS_NAME=$(lsb_release -si)-$(ls_release -sr)" >> $GITHUB_ENV | |
# - uses: actions/checkout@v2 | |
# - name: Install dependencies | |
# run: | | |
# sudo apt-get install -y gfortran libhwloc-dev libev-dev libev-libevent-dev | |
# | |
# # LIBFABRIC | |
# - name: Cache libfabric install | |
# if: ${{ matrix.sos_transport == 'libfabric' }} | |
# id: cache-libfabric | |
# uses: actions/cache@v2 | |
# with: | |
# path: ${{ env.LIBFABRIC_INSTALL_DIR }} | |
# key: libfabric-${{ matrix.libfabric_version }}-${{ env.OS_NAME }} | |
# - name: Checkout libfabric | |
# if: ${{ matrix.sos_transport == 'libfabric' && steps.cache-libfabric.outputs.cache-hit != 'true' }} | |
# uses: actions/checkout@v2 | |
# with: | |
# repository: ofiwg/libfabric | |
# path: repos/libfabric | |
# ref: ${{ matrix.libfabric_version }} | |
# - name: Build libfabric | |
# if: ${{ matrix.sos_transport == 'libfabric' && steps.cache-libfabric.outputs.cache-hit != 'true' }} | |
# run: | | |
# cd repos/libfabric | |
# ./autogen.sh | |
# mkdir build; cd build | |
# ../configure --prefix=${LIBFABRIC_INSTALL_DIR} | |
# make -j | |
# make install | |
# | |
# # UCX | |
# - name: Cache UCX install | |
# if: ${{ matrix.sos_transport == 'ucx' }} | |
# id: cache-ucx | |
# uses: actions/cache@v2 | |
# with: | |
# path: ${{ env.UCX_INSTALL_DIR }} | |
# key: ucx-${{ matrix.ucx_version }}-${{ env.OS_NAME }} | |
# - name: Checkout UCX | |
# if: ${{ matrix.sos_transport == 'ucx' && steps.cache-ucx.outputs.cache-hit != 'true' }} | |
# uses: actions/checkout@v2 | |
# with: | |
# repository: openucx/ucx | |
# path: repos/ucx | |
# ref: ${{ matrix.ucx_version }} | |
# - name: Build UCX | |
# if: ${{ matrix.sos_transport == 'ucx' && steps.cache-ucx.outputs.cache-hit != 'true' }} | |
# run: | | |
# cd repos/ucx | |
# ./autogen.sh | |
# mkdir build; cd build | |
# ../configure --prefix=${UCX_INSTALL_DIR} --enable-mt --disable-numa --without-java | |
# make -j | |
# make install | |
# | |
# ## Portals4 | |
# - name: Cache Portals4 install | |
# if: ${{ matrix.sos_transport == 'portals4' }} | |
# id: cache-portals4 | |
# uses: actions/cache@v2 | |
# with: | |
# path: ${{ env.PORTALS4_INSTALL_DIR }} | |
# key: portals4-${{ matrix.portals4_version }}-${{ env.OS_NAME }} | |
# - name: Checkout Portals4 | |
# if: ${{ matrix.sos_transport == 'portals4' && steps.cache-portals4.outputs.cache-hit != 'true' }} | |
# uses: actions/checkout@v2 | |
# with: | |
# repository: regrant/portals4 | |
# path: repos/portals4 | |
# ref: ${{ matrix.portals4_version }} | |
# - name: Build Portals4 | |
# if: ${{ matrix.sos_transport == 'portals4' && steps.cache-portals4.outputs.cache-hit != 'true' }} | |
# run: | | |
# cd repos/portals4 | |
# ./autogen.sh | |
# mkdir build; cd build | |
# ../configure --prefix=${PORTALS4_INSTALL_DIR} --enable-zero-mrs --enable-reliable-udp --disable-pmi-from-portals ${SOS_BUILD_STATIC_OPTS} | |
# make -j | |
# make install | |
# | |
# # Libevent | |
# - name: Cache libevent install | |
# id: cache-libevent | |
# uses: actions/cache@v2 | |
# with: | |
# path: ${{ env.LIBEVENT_INSTALL_DIR }} | |
# key: libevent-${{ matrix.libevent_version }}-${{ env.OS_NAME }} | |
# - name: Checkout libevent | |
# if: steps.cache-libevent.outputs.cache-hit != 'true' | |
# uses: actions/checkout@v2 | |
# with: | |
# repository: libevent/libevent | |
# path: repos/libevent | |
# ref: ${{ matrix.libevent_version }} | |
# - name: Build libevent | |
# if: steps.cache-libevent.outputs.cache-hit != 'true' | |
# run: | | |
# cd repos/libevent | |
# ./autogen.sh | |
# ./configure --prefix=${LIBEVENT_INSTALL_DIR} | |
# make clean all install | |
# | |
# # PMIx | |
# - name: Cache PMIx install | |
# id: cache-pmix | |
# uses: actions/cache@v2 | |
# with: | |
# path: ${{ env.PMIX_INSTALL_DIR }} | |
# key: pmix-${{ matrix.pmix_version }}-${{ env.OS_NAME }} | |
# - name: Checkout PMIx | |
# if: steps.cache-pmix.outputs.cache-hit != 'true' | |
# uses: actions/checkout@v2 | |
# with: | |
# repository: openpmix/pmix | |
# path: repos/pmix | |
# ref: ${{ matrix.pmix_version }} | |
# - name: Build PMIx | |
# if: steps.cache-pmix.outputs.cache-hit != 'true' | |
# run: | | |
# cd repos/pmix | |
# ./autogen.pl | |
# ./configure --prefix=${PMIX_INSTALL_DIR} --with-libevent=${LIBEVENT_INSTALL_DIR} --without-libev --disable-debug CFLAGS=-O3 ${SOS_BUILD_STATIC_OPTS} | |
# make install | |
# | |
# # Build PRRTE | |
# - name: Cache PRRTE install | |
# id: cache-prrte | |
# uses: actions/cache@v2 | |
# with: | |
# path: ${{ env.PRRTE_INSTALL_DIR }} | |
# key: prrte-${{ matrix.prrte_version}}-${{ env.OS_NAME }} | |
# - name: Checkout PRRTE | |
# if: steps.cache-prrte.outputs.cache-hit != 'true' | |
# uses: actions/checkout@v2 | |
# with: | |
# repository: openpmix/prrte | |
# path: repos/prrte | |
# ref: ${{ matrix.prrte_version }} | |
# - name: Build PRRTE | |
# if: steps.cache-prrte.outputs.cache-hit != 'true' | |
# run: | | |
# cd repos/prrte | |
# ./autogen.pl | |
# ./configure --prefix=${PRRTE_INSTALL_DIR} --with-pmix=${PMIX_INSTALL_DIR} --without-slurm --with-libevent=${LIBEVENT_INSTALL_DIR} --without-libev ${SOS_BUILD_STATIC_OPTS} | |
# make install | |
# | |
# # SOS | |
# - name: Build SOS | |
# run: | | |
# ./autogen.sh | |
# mkdir build; cd build | |
# ../configure --prefix=${SOS_INSTALL_DIR} ${{ matrix.sos_transport_config }} --with-pmix=${PMIX_INSTALL_DIR} | |
# make -j | |
# make install | |
# - name: Test SOS (all tests) | |
# if: ${{ matrix.sos_transport == 'libfabric' || matrix.sos_transport == 'ucx' }} | |
# run: | | |
# cd build | |
# make check TESTS= -j | |
# export PATH=${PRRTE_INSTALL_DIR}/bin:$PATH | |
# ${{ matrix.sos_pm_pre }} | |
# SHMEM_INFO=1 make VERBOSE=1 TEST_RUNNER="${{ matrix.sos_pm }} -np 2" check | |
# cat modules/tests-sos/test/unit/hello.log | |
# ${{ matrix.sos_pm_post }} | |
# - name: Test SOS (hello) | |
# if: ${{ matrix.sos_transport == 'portals4' }} | |
# run: | | |
# cd build | |
# make check TESTS= -j | |
# export PATH=${PRRTE_INSTALL_DIR}/bin:$PATH | |
# ${{ matrix.sos_pm_pre }} | |
# SHMEM_INFO=1 ${{ matrix.sos_pm }} -np 1 modules/tests-sos/test/unit/hello | |
# ${{ matrix.sos_pm_post }} | |
# | |
UCX: | |
runs-on: ubuntu-20.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- config_name: ucx-1.9.0 | |
ucx_version: v1.9.0 | |
xpmem_version: master | |
sos_config: [--enable-pmi-simple --disable-fortran, | |
--with-cma --enable-error-checking --enable-profiling | |
--enable-pmi-simple --disable-fortran --with-hwloc=no, | |
--with-xpmem --enable-error-checking --enable-pmi-simple --with-hwloc=no] | |
steps: | |
- name: Checking OS version | |
run: | | |
echo "OS_NAME=$(lsb_release -si)-$(lsb_release -sr)" >> $GITHUB_ENV | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
submodules: 'true' | |
- name: Install dependencies | |
run: | | |
sudo apt-get install -y gfortran mpich libmpich-dev | |
sudo sysctl -w kernel.yama.ptrace_scope=0 | |
sudo sysctl -w kernel.randomize_va_space=0 | |
# XPMEM | |
- name: Checkout XPMEM | |
uses: actions/checkout@v4 | |
with: | |
repository: hjelmn/xpmem | |
path: repos/xpmem | |
ref: ${{ matrix.xpmem_version }} | |
- name: Build XPMEM | |
run: | | |
cd repos/xpmem | |
sudo apt-get install linux-headers-`uname -r` | |
./autogen.sh | |
./configure --prefix=/usr | |
make -j | |
sudo make install | |
sudo insmod /usr/lib/modules/`uname -r`/kernel/xpmem/xpmem.ko | |
sudo chown `whoami` /dev/xpmem | |
# UCX | |
- name: Cache UCX install | |
id: cache-ucx | |
uses: actions/cache@v2 | |
with: | |
path: ${{ env.UCX_INSTALL_DIR }} | |
key: ucx-${{ matrix.ucx_version}}-${{ env.OS_NAME }} | |
- name: Checkout UCX | |
if: steps.cache-ucx.outputs.cache-hit != 'true' | |
uses: actions/checkout@v4 | |
with: | |
repository: openucx/ucx | |
path: repos/ucx | |
ref: ${{ matrix.ucx_version }} | |
- name: Build UCX | |
if: steps.cache-ucx.outputs.cache-hit != 'true' | |
run: | | |
cd repos/ucx | |
./autogen.sh | |
mkdir build; cd build | |
../configure --prefix=${UCX_INSTALL_DIR} --enable-mt --disable-numa --without-java | |
make -j | |
make install | |
# SOS | |
- name: Build SOS (${{ matrix.sos_config }}) | |
run: | | |
git submodule update --remote | |
./autogen.sh | |
mkdir build; cd build | |
../configure --prefix=${SOS_INSTALL_DIR} --with-ucx=${UCX_INSTALL_DIR} ${{ matrix.sos_config }} | |
make -j | |
make install | |
- name: Test SOS (${{ matrix.sos_config }}) | |
run: | | |
cd build | |
make check TESTS= -j | |
SHMEM_DEBUG=1 SHMEM_INFO=1 make VERBOSE=1 TEST_RUNNER="${SOS_PM} -np 2" check | |
cat modules/tests-sos/test/unit/hello.log | |
Portals4: | |
runs-on: ubuntu-20.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- config_name: portals4 | |
portals4_version: master | |
xpmem_version: master | |
- name: Heap use malloc | |
env_setup: export SHMEM_SYMMETRIC_HEAP_USE_MALLOC=1 | |
sos_config: --disable-threads --enable-error-checking --enable-pmi-simple --with-hwloc=no | |
- name: Heap use huge pages, zero bounce | |
env_setup: export SHMEM_SYMMETRIC_HEAP_USE_HUGE_PAGES=1; export SHMEM_BOUNCE_SIZE=0 | |
sos_config: --enable-error-checking --enable-remote-virtual-addressing --enable-pmi-simple --enable-ofi-fence | |
sos_config: [--enable-pmi-simple --with-hwloc=no, | |
--disable-fortran --enable-error-checking --enable-remote-virtual-addressing | |
--disable-aslr-check --enable-pmi-simple, | |
--with-cma --enable-error-checking --enable-profiling | |
--enable-remote-virtual-addressing --enable-pmi-simple, | |
--with-xpmem --enable-shr-atomics --enable-error-checking --enable-pmi-simple, | |
--enable-pmi-mpi CC=mpicc --disable-fortran --with-hwloc=no] | |
steps: | |
- name: Checking OS version | |
run: | | |
echo "OS_NAME=$(lsb_release -si)-$(lsb_release -sr)" >> $GITHUB_ENV | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
submodules: 'true' | |
- name: Install dependencies | |
run: | | |
sudo apt-get install -y gfortran mpich libmpich-dev libev-dev libev-libevent-dev libhwloc-dev | |
sudo sysctl -w kernel.yama.ptrace_scope=0 | |
sudo sysctl -w kernel.randomize_va_space=0 | |
# XPMEM | |
- name: Checkout XPMEM | |
uses: actions/checkout@v4 | |
with: | |
repository: hjelmn/xpmem | |
path: repos/xpmem | |
ref: ${{ matrix.xpmem_version }} | |
- name: Build XPMEM | |
run: | | |
cd repos/xpmem | |
sudo apt-get install linux-headers-`uname -r` | |
./autogen.sh | |
./configure --prefix=/usr | |
make -j | |
sudo make install | |
sudo insmod /usr/lib/modules/`uname -r`/kernel/xpmem/xpmem.ko | |
sudo chown `whoami` /dev/xpmem | |
# Portals4 | |
- name: Cache Portals4 install | |
id: cache-portals4 | |
uses: actions/cache@v2 | |
with: | |
path: ${{ env.PORTALS4_INSTALL_DIR }} | |
key: portals4-${{ matrix.portals4_version}}-${{ env.OS_NAME }} | |
- name: Checkout Portals4 | |
if: steps.cache-portals4.outputs.cache-hit != 'true' | |
uses: actions/checkout@v4 | |
with: | |
repository: regrant/portals4 | |
path: repos/portals4 | |
ref: ${{ matrix.portals4_version }} | |
- name: Build Portals4 | |
if: steps.cache-portals4.outputs.cache-hit != 'true' | |
run: | | |
cd repos/portals4 | |
./autogen.sh | |
mkdir build; cd build | |
../configure --prefix=${PORTALS4_INSTALL_DIR} --enable-zero-mrs --enable-reliable-udp --disable-pmi-from-portals | |
make -j | |
make install | |
# SOS | |
- name: Build SOS (${{ matrix.name }}) | |
run: | | |
git submodule update --remote | |
./autogen.sh | |
mkdir build; cd build | |
../configure --prefix=${SOS_INSTALL_DIR} --with-portals4=${PORTALS4_INSTALL_DIR} ${{ matrix.sos_config }} | |
make -j | |
make install | |
- name: Test SOS (${{ matrix.name }}) | |
run: | | |
cd build | |
make check TESTS= -j | |
${SOS_PM} -np 1 modules/tests-sos/test/unit/hello | |
XPMEM_Only: | |
runs-on: ubuntu-20.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- config_name: transport_none | |
xpmem_version: master | |
sos_config: [--with-xpmem --enable-shr-atomics --enable-error-checking --enable-pmi-simple] | |
steps: | |
- name: Checking OS version | |
run: | | |
echo "OS_NAME=$(lsb_release -si)-$(lsb_release -sr)" >> $GITHUB_ENV | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
submodules: 'true' | |
- name: Install dependencies | |
run: | | |
sudo apt-get install -y gfortran mpich libmpich-dev libev-dev libev-libevent-dev libhwloc-dev | |
sudo sysctl -w kernel.yama.ptrace_scope=0 | |
sudo sysctl -w kernel.randomize_va_space=0 | |
# XPMEM | |
- name: Checkout XPMEM | |
uses: actions/checkout@v4 | |
with: | |
repository: hjelmn/xpmem | |
path: repos/xpmem | |
ref: ${{ matrix.xpmem_version }} | |
- name: Build XPMEM | |
run: | | |
cd repos/xpmem | |
sudo apt-get install linux-headers-`uname -r` | |
./autogen.sh | |
./configure --prefix=/usr | |
make -j | |
sudo make install | |
sudo insmod /usr/lib/modules/`uname -r`/kernel/xpmem/xpmem.ko | |
sudo chown `whoami` /dev/xpmem | |
# SOS | |
- name: Build SOS (${{ matrix.name }}) | |
run: | | |
git submodule update --remote | |
./autogen.sh | |
mkdir build; cd build | |
../configure --prefix=${SOS_INSTALL_DIR} ${{ matrix.sos_config }} | |
make -j | |
make install | |
- name: Test SOS (${{ matrix.name }}) | |
run: | | |
cd build | |
make check TESTS= -j | |
SHMEM_DEBUG=1 SHMEM_INFO=1 make VERBOSE=1 TEST_RUNNER="${SOS_PM} -np 2" check | |
${SOS_PM} -np 1 modules/tests-sos/test/unit/hello |