-
Notifications
You must be signed in to change notification settings - Fork 128
139 lines (133 loc) · 4.69 KB
/
main.yaml
File metadata and controls
139 lines (133 loc) · 4.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
name: OpenMPI tests
on: [push, pull_request]
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
OPEN_UCX_LINK: https://github.com/openucx/ucx
OPEN_UCX_BRANCH: master
OPEN_MPI_LINK: https://github.com/open-mpi/ompi.git
OPEN_MPI_BRANCH: v5.0.x
IMB_LINK: https://github.com/intel/mpi-benchmarks.git
IMB_COLLS: allgather,allgatherv,allreduce,alltoall,alltoallv,barrier,bcast,gather,gatherv,reduce,reduce_scatter,reduce_scatter_block,scatter,scatterv
jobs:
tests:
runs-on: ubuntu-latest
steps:
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends doxygen doxygen-latex
- name: Get UCX
run: git clone ${OPEN_UCX_LINK} -b ${OPEN_UCX_BRANCH} /tmp/ucx
- name: Build UCX
run: |
cd /tmp/ucx && ./autogen.sh
./contrib/configure-release --without-java --without-go --disable-numa --prefix $PWD/install
make -j install
- uses: actions/checkout@v4
- name: Build UCC
run: |
./autogen.sh
./configure --prefix=/tmp/ucc/install --enable-gtest --with-ucx=/tmp/ucx/install
make -j`nproc` install
make gtest
- name: Run ucc_info
run: |
/tmp/ucc/install/bin/ucc_info -vc
- name: Run CMake tests
run: |
set -e
cmake -S test/cmake -B /tmp/cmake-ucc -DCMAKE_PREFIX_PATH=/tmp/ucc/install
cd /tmp/cmake-ucc
cmake --build .
./test_ucc
- name: Get OMPI
run: |
git clone ${OPEN_MPI_LINK} -b ${OPEN_MPI_BRANCH} /tmp/ompi
cd /tmp/ompi
git submodule update --init --recursive
- name: Build OMPI
run: >
cd /tmp/ompi
./autogen.pl --exclude pml-cm,mtl,coll-adapt,coll-han,coll-inter,coll-ftagree
./configure
--prefix=/tmp/ompi/install
--enable-mpirun-prefix-by-default
--disable-mpi-fortran
--disable-man-pages
--with-ucx=/tmp/ucx/install
--with-ucc=/tmp/ucc/install
make -j install
- name: Build ucc_perftest (with OMPI)
run: |
set -e
CC=/tmp/ompi/install/bin/mpicc CXX=/tmp/ompi/install/bin/mpicxx \
./configure --prefix=/tmp/ucc/install --enable-gtest --with-ucx=/tmp/ucx/install --with-mpi=/tmp/ompi/install
make -C tools/perf -j`nproc`
make -C tools/perf install
- name: Run ucc_perftest
run: |
set -e
test -x /tmp/ucc/install/bin/ucc_perftest
export LD_LIBRARY_PATH=/tmp/ucc/install/lib:/tmp/ucx/install/lib:/tmp/ompi/install/lib:$LD_LIBRARY_PATH
COLLS=(
allgather allgatherv allreduce alltoall alltoallv
barrier bcast gather gatherv
reduce reduce_scatter reduce_scatterv scatterv
)
for c in "${COLLS[@]}"; do
echo "Running ucc_perftest -c ${c}"
/tmp/ompi/install/bin/mpirun \
-np 4 -H localhost:4 \
--bind-to none \
--mca pml ucx \
--mca pml_ucx_tls any \
--mca pml_ucx_devices any \
--mca coll_ucc_enable 0 \
-x LD_LIBRARY_PATH \
-x UCC_LOG_LEVEL=info \
-x UCC_TLS=ucp \
-x UCC_CONFIG_FILE= \
/tmp/ucc/install/bin/ucc_perftest \
-c "${c}" -m host -d float32 -b 1024 -e 1024 -n 10 -w 2
done
INPLACE_COLLS=(
allgather allgatherv allreduce
gather gatherv
reduce reduce_scatter reduce_scatterv
)
for c in "${INPLACE_COLLS[@]}"; do
echo "Running ucc_perftest (inplace) -c ${c}"
/tmp/ompi/install/bin/mpirun \
-np 4 -H localhost:4 \
--bind-to none \
--mca pml ucx \
--mca pml_ucx_tls any \
--mca pml_ucx_devices any \
--mca coll_ucc_enable 0 \
-x LD_LIBRARY_PATH \
-x UCC_LOG_LEVEL=info \
-x UCC_TLS=ucp \
-x UCC_CONFIG_FILE= \
/tmp/ucc/install/bin/ucc_perftest \
-c "${c}" -m host -d float32 -b 1024 -e 1024 -n 10 -w 2 -i
done
- name: Get IMB
run: git clone ${IMB_LINK} /tmp/imb
- name: Build IMB
run: |
cd /tmp/imb
make CC=/tmp/ompi/install/bin/mpicc CXX=/tmp/ompi/install/bin/mpicxx CPPFLAGS="-DCHECK=1" -j IMB-MPI1
- name: Run IMB-DCHECK
run: >
/tmp/ompi/install/bin/mpirun
-np 8
-H localhost:8
--bind-to none
--mca pml ucx
--mca pml_ucx_tls any
--mca pml_ucx_devices any
--mca coll_ucc_priority 100
--mca coll_ucc_enable 1
/tmp/imb/IMB-MPI1 ${IMB_COLLS} -iter 10 -iter_policy off