Skip to content

Commit 6d17c5b

Browse files
authored
BUILD: add support for specific gpu arch with ROCM (openucx#987)
1 parent b2d5a78 commit 6d17c5b

File tree

4 files changed

+38
-8
lines changed

4 files changed

+38
-8
lines changed

config/m4/rocm.m4

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,17 @@
44
# See file LICENSE for terms.
55
#
66

7+
ROCM_ARCH_NATIVE="--offload-arch=native"
8+
ROCM_ARCH908="--offload-arch=gfx908"
9+
ROCM_ARCH90A="--offload-arch=gfx90a"
10+
ROCM_ARCH94="--offload-arch=gfx940 \
11+
--offload-arch=gfx941 \
12+
--offload-arch=gfx942"
13+
ROCM_ARCH10="--offload-arch=gfx1030"
14+
ROCM_ARCH11="--offload-arch=gfx1100 \
15+
--offload-arch=gfx1101 \
16+
--offload-arch=gfx1102"
17+
718
# ROCM_PARSE_FLAGS(ARG, VAR_LIBS, VAR_LDFLAGS, VAR_CPPFLAGS)
819
# ----------------------------------------------------------
920
# Parse whitespace-separated ARG into appropriate LIBS, LDFLAGS, and
@@ -73,7 +84,12 @@ AC_ARG_WITH([rocm],
7384
[Enable the use of ROCm (default is autodetect).])],
7485
[],
7586
[with_rocm=guess])
76-
87+
AC_ARG_WITH([rocm-arch],
88+
[AS_HELP_STRING([--with-rocm-arch=arch-code],
89+
[Defines target GPU architecture,
90+
see rocm documentation for valid --offload-arch options for details
91+
'all-arch-no-native' for all default architectures but not native])],
92+
[], [with_rocm_arch=all])
7793
rocm_happy=no
7894
hip_happy=no
7995
AS_IF([test "x$with_rocm" != "xno"],
@@ -115,15 +131,26 @@ AS_IF([test "x$with_rocm" != "xno"],
115131
AC_SUBST([ROCM_ROOT])],
116132
[AC_MSG_WARN([ROCm not found])])
117133
134+
135+
# Check whether we run on ROCm 6.0 or higher
136+
CHECK_ROCM_VERSION(6, ROCM_VERSION_60_OR_GREATER)
137+
AC_MSG_CHECKING([if ROCm version is 6.0 or above])
138+
139+
AS_IF([test "x$rocm_happy" = "xyes"],
140+
[AS_IF([test "x$with_rocm_arch" = "xall"],
141+
[ROCM_ARCH="${ROCM_ARCH908} ${ROCM_ARCH90A} ${ROCM_ARCH94} ${ROCM_ARCH10} ${ROCM_ARCH11} ${ROCM_ARCH_NATIVE}"],
142+
[AS_IF([test "x$with_rocm_arch" = "xall-arch-no-native"],
143+
[ROCM_ARCH="${ROCM_ARCH908} ${ROCM_ARCH90A} ${ROCM_ARCH94} ${ROCM_ARCH10} ${ROCM_ARCH11}"],
144+
[ROCM_ARCH="$with_rocm_arch"])])
145+
AS_IF([test "$ROCM_VERSION_60_OR_GREATER" = "1"],
146+
AC_SUBST([ROCM_ARCH], ["$ROCM_ARCH"]),
147+
AC_SUBST([ROCM_ARCH], [""]))])
118148
CPPFLAGS="$SAVE_CPPFLAGS"
119149
LDFLAGS="$SAVE_LDFLAGS"
120150
LIBS="$SAVE_LIBS"
121151
122152
HIP_BUILD_FLAGS([$with_rocm], [HIP_LIBS], [HIP_LDFLAGS], [HIP_CPPFLAGS])
123153
124-
# Check whether we run on ROCm 6.0 or higher
125-
CHECK_ROCM_VERSION(6, ROCM_VERSION_60_OR_GREATER)
126-
AC_MSG_CHECKING([if ROCm version is 6.0 or above])
127154
if test "$ROCM_VERSION_60_OR_GREATER" = "1" ; then
128155
AC_MSG_RESULT([yes])
129156
else

configure.ac

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,9 @@ AC_MSG_NOTICE([ C++ compiler: ${CXX} ${CXXFLAGS} ${BASE_CXXFLAGS}])
265265
AS_IF([test "x$cuda_happy" = "xyes"],[
266266
AC_MSG_NOTICE([ NVCC gencodes: ${NVCC_ARCH}])
267267
])
268+
AS_IF([test "x$rocm_happy" = xyes],[
269+
AC_MSG_NOTICE([ROCM architectures: ${ROCM_ARCH}])
270+
])
268271
AC_MSG_NOTICE([ Perftest: ${mpi_enable}])
269272
AC_MSG_NOTICE([ Gtest: ${gtest_enable}])
270273
AC_MSG_NOTICE([ MC modules: <$(echo ${mc_modules}|tr ':' ' ') >])

cuda_lt.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ mkdir -p $pic_dir
2828

2929
tmpcmd="${@:3}"
3030
if [[ "$tmpcmd" == *"amdclang"* ]]; then
31-
cmd="${@:3:2} -x hip -target x86_64-unknown-linux-gnu --offload-arch=gfx908 --offload-arch=gfx90a --offload-arch=gfx940 --offload-arch=gfx941 --offload-arch=gfx942 --offload-arch=gfx1030 --offload-arch=gfx1100 --offload-arch=gfx1101 --offload-arch=gfx1102 --offload-arch=native ${@:5} -fPIC -O3 -o ${pic_filepath}"
31+
cmd="${@:3:2} -x hip -target x86_64-unknown-linux-gnu ${@:5} -fPIC -O3 -o ${pic_filepath}"
3232
elif [[ "$tmpcmd" == *"hipcc"* ]]; then
3333
cmd="${@:3} -fPIC -o ${pic_filepath}"
3434
else
@@ -38,7 +38,7 @@ echo $cmd
3838
$cmd
3939

4040
if [[ "$tmpcmd" == *"amdclang"* ]]; then
41-
cmd="${@:3:2} -x hip -target x86_64-unknown-linux-gnu --offload-arch=gfx908 --offload-arch=gfx90a --offload-arch=gfx940 --offload-arch=gfx941 --offload-arch=gfx942 --offload-arch=gfx1030 --offload-arch=gfx1100 --offload-arch=gfx1101 --offload-arch=gfx1102 --offload-arch=native ${@:5} -O3 -o ${npic_filepath}"
41+
cmd="${@:3:2} -x hip -target x86_64-unknown-linux-gnu ${@:5} -O3 -o ${npic_filepath}"
4242
else
4343
cmd="${@:3} -o ${npic_filepath}"
4444
fi

src/components/ec/rocm/kernel/Makefile.am

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ HIPCCFLAGS = \
1717
LINK = $(LIBTOOL) --mode=link $(CC) -o $@
1818

1919
.cu.o:
20-
$(HIPCC) -c $< -o $@ $(HIPCCFLAGS)
20+
$(HIPCC) -c $< -o $@ $(ROCM_ARCH) $(HIPCCFLAGS)
2121

2222
.cu.lo:
23-
/bin/bash $(top_srcdir)/cuda_lt.sh "$(LIBTOOL)" $@ $(HIPCC) -c $< $(HIPCCFLAGS)
23+
/bin/bash $(top_srcdir)/cuda_lt.sh "$(LIBTOOL)" $@ $(HIPCC) -c $< $(ROCM_ARCH) $(HIPCCFLAGS)
2424

2525
comp_noinst = libucc_ec_rocm_kernels.la
2626

0 commit comments

Comments
 (0)