Skip to content

Commit c70f624

Browse files
committed
MPICH: Configure --with-device=ch4:ofi,ucx
1 parent 182f6f5 commit c70f624

File tree

7 files changed

+33
-36
lines changed

7 files changed

+33
-36
lines changed

.github/workflows/cd-wheel.yml

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,6 @@ on: # yamllint disable-line rule:truthy
2121
default: ''
2222
required: false
2323
type: string
24-
variant:
25-
description: 'Build variant'
26-
default: ''
27-
required: false
28-
type: string
2924
os-arch:
3025
description: 'Target OS-Architecture'
3126
default: ''
@@ -50,14 +45,6 @@ on: # yamllint disable-line rule:truthy
5045
default: ''
5146
required: false
5247
type: string
53-
variant:
54-
description: 'Build variant'
55-
default: ''
56-
type: choice
57-
options:
58-
- ''
59-
- ofi
60-
- ucx
6148
os-arch:
6249
description: "Target OS-Architecture"
6350
default: Linux-x86_64
@@ -77,7 +64,6 @@ env:
7764
MPINAME: '${{ inputs.mpiname }}'
7865
VERSION: '${{ inputs.version }}'
7966
RELEASE: '${{ inputs.release }}'
80-
VARIANT: '${{ inputs.variant }}'
8167

8268
jobs:
8369

@@ -174,7 +160,7 @@ jobs:
174160
CIBW_TEST_COMMAND: >-
175161
bash {project}/cibw-check-mpi.sh
176162
CIBW_ENVIRONMENT_PASS: >-
177-
MPINAME VARIANT RELEASE
163+
MPINAME RELEASE
178164
CIBW_ENVIRONMENT_LINUX: >-
179165
SOURCE="/project/package/source"
180166
WORKDIR="/project/package/workdir"

.github/workflows/cd.yml

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,6 @@ on: # yamllint disable-line rule:truthy
2323
default: ''
2424
required: false
2525
type: string
26-
variant:
27-
description: 'Build variant'
28-
default: ''
29-
type: choice
30-
options:
31-
- ''
32-
- ofi
33-
- ucx
3426
os-arch:
3527
description: "Target OS-Architecture"
3628
default: all
@@ -58,7 +50,6 @@ jobs:
5850
mpiname: ${{ inputs.mpiname }}
5951
version: ${{ inputs.version }}
6052
release: ${{ inputs.release }}
61-
variant: ${{ inputs.variant }}
6253
os-arch: ${{ inputs.os-arch }}
6354

6455
publish-anaconda:

build-wheel.sh

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,18 @@ DESTDIR=package/install
77
ARCHLIST=${ARCHLIST:-$(uname -m)}
88

99
export CIBW_BUILD_FRONTEND='build'
10-
export CIBW_BUILD='cp312-*'
10+
export CIBW_BUILD='cp313-*'
1111
export CIBW_SKIP='*musllinux*'
1212
export CIBW_ARCHS=$ARCHLIST
1313
export CIBW_BEFORE_ALL='bash {project}/cibw-build-mpi.sh'
1414
export CIBW_TEST_COMMAND='bash {project}/cibw-check-mpi.sh'
15-
export CIBW_ENVIRONMENT_PASS='MPINAME VARIANT RELEASE SOURCE WORKDIR DESTDIR'
15+
export CIBW_ENVIRONMENT_PASS='MPINAME RELEASE SOURCE WORKDIR DESTDIR'
1616
export CIBW_REPAIR_WHEEL_COMMAND_MACOS='delocate-wheel --ignore-missing-dependencies --exclude libmpi --exclude libpmpi --require-archs {delocate_archs -w {dest_dir} -v {wheel}'
1717

1818
if test "$(uname)" = Linux; then
19+
if command -v podman > /dev/null; then
20+
export CIBW_CONTAINER_ENGINE=podman
21+
fi
1922
export SOURCE="/project/$SOURCE"
2023
export WORKDIR="/host/$PWD/$WORKDIR"
2124
export DESTDIR="/host/$PWD/$DESTDIR"

check-wheel.sh

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@ cd "$workdir"
1818
whlname=$(basename "$wheelfile")
1919
pkgname=${whlname%%-*}
2020
mpiname=${pkgname%_*}
21-
variant=${pkgname#"${mpiname}"}
22-
variant=${variant#_}
2321

2422
data=$(ls -d "$pkgname"-*.data/data)
2523
if test "$(uname)" = Linux; then
@@ -69,7 +67,7 @@ if test "$mpiname" = "mpich"; then
6967
libraries=(
7068
"$data"/lib/libmpi.*
7169
)
72-
if test "$variant" = "ucx"; then
70+
if test -d "$data"/lib/ucx; then
7371
libraries+=(
7472
"$data"/lib/libuc[mpst]*.*
7573
"$data"/lib/ucx/libuc*.*

cibw-build-mpi.sh

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
set -euo pipefail
33

44
mpiname="${MPINAME:-mpich}"
5-
variant="${VARIANT:-}"
65

76
PROJECT=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
87
PACKAGE=$PROJECT/package
@@ -14,11 +13,16 @@ PREFIX=${PREFIX:-"/opt/$mpiname"}
1413

1514
if test "$mpiname" = "mpich"; then
1615
version=$(sed -n 's/MPICH_VERSION=\(.*\)/\1/p' "$SOURCE"/maint/Version)
16+
case $(uname)-$(uname -m) in
17+
Linux-x86_64) device=ch4:ofi,ucx ;;
18+
Linux-aarch64) device=ch4:ofi,ucx ;;
19+
*) device=ch4:ofi ;;
20+
esac
1721
options=(
1822
CC=cc
1923
CXX=c++
2024
--prefix="$PREFIX"
21-
--with-device=ch4:"${variant:-ofi}"
25+
--with-device="$device"
2226
--with-pm=hydra:gforker
2327
--with-libfabric=embedded
2428
--with-ucx=embedded
@@ -76,9 +80,6 @@ if test "$(uname)" = Darwin; then
7680
export MACOSX_DEPLOYMENT_TARGET="10.9"
7781
export ac_cv_func_aligned_alloc="no" # macOS>=10.15
7882
fi
79-
if test "$variant" = ucx; then
80-
echo "ERROR: UCX is not supported on macOS"; exit 1;
81-
fi
8283
fi
8384

8485
case $(uname) in

cibw-check-mpi.sh

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,22 @@ RUN mpicxx helloworld.cxx -o helloworld-cxx
6969
RUN command -v mpiexec
7070
RUN mpiexec -n 3 ./helloworld-c
7171
RUN mpiexec -n 3 ./helloworld-cxx
72+
73+
if test "$mpiname" = "mpich"; then
74+
case $(uname)-$(uname -m) in
75+
Linux-x86_64) ch4netmods=(ofi ucx) ;;
76+
Linux-aarch64) ch4netmods=(ofi ucx) ;;
77+
*) ch4netmods=(ofi) ;;
78+
esac
79+
export MPICH_CH4_OFI_CAPABILITY_DEBUG=1
80+
export MPICH_CH4_UCX_CAPABILITY_DEBUG=1
81+
for netmod in "${ch4netmods[@]}"; do
82+
printf "testing ch4:%s ... " "$netmod"
83+
export MPICH_CH4_NETMOD="$netmod"
84+
./helloworld-c | grep -i "$netmod" > /dev/null
85+
printf "OK\n"
86+
done
87+
unset MPICH_CH4_OFI_CAPABILITY_DEBUG
88+
unset MPICH_CH4_UCX_CAPABILITY_DEBUG
89+
unset MPICH_CH4_NETMOD
90+
fi

package/setup.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,8 @@ def get_tag(self):
1717

1818

1919
mpiname = os.environ.get("MPINAME", "mpich")
20-
variant = os.environ.get("VARIANT", "")
2120
release = os.environ.get("RELEASE", "")
22-
pkgname = f"{mpiname}-{variant}" if variant else mpiname
21+
pkgname = mpiname
2322

2423
if mpiname == "mpich":
2524
project = "MPICH"

0 commit comments

Comments
 (0)