Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
tsoc
superbenchmark
Commits
c2e7a543
Unverified
Commit
c2e7a543
authored
Dec 27, 2023
by
Yuting Jiang
Committed by
GitHub
Dec 27, 2023
Browse files
Dockerfile - Add rocm6.0 dockerfile (#602)
**Description** Add rocm6.0 dockerfile.
parent
e8777e24
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
265 additions
and
12 deletions
+265
-12
.github/workflows/build-image.yml
.github/workflows/build-image.yml
+5
-0
dockerfile/rocm5.7.x.dockerfile
dockerfile/rocm5.7.x.dockerfile
+10
-11
dockerfile/rocm6.0.x.dockerfile
dockerfile/rocm6.0.x.dockerfile
+180
-0
third_party/Makefile
third_party/Makefile
+2
-0
third_party/Megatron/megatron_deepspeed_rocm6.patch
third_party/Megatron/megatron_deepspeed_rocm6.patch
+39
-0
third_party/perftest
third_party/perftest
+1
-1
third_party/perftest_rocm6.patch
third_party/perftest_rocm6.patch
+28
-0
No files found.
.github/workflows/build-image.yml
View file @
c2e7a543
...
@@ -40,6 +40,11 @@ jobs:
...
@@ -40,6 +40,11 @@ jobs:
tags
:
superbench/main:rocm5.7
tags
:
superbench/main:rocm5.7
runner
:
[
self-hosted
,
rocm-build
]
runner
:
[
self-hosted
,
rocm-build
]
build_args
:
"
NUM_MAKE_JOBS=64"
build_args
:
"
NUM_MAKE_JOBS=64"
-
name
:
rocm6.0
dockerfile
:
rocm6.0.x
tags
:
superbench/main:rocm6.0
runner
:
[
self-hosted
,
rocm-build
]
build_args
:
"
NUM_MAKE_JOBS=64"
steps
:
steps
:
-
name
:
Checkout
-
name
:
Checkout
uses
:
actions/checkout@v2
uses
:
actions/checkout@v2
...
...
dockerfile/rocm5.7.x.dockerfile
View file @
c2e7a543
...
@@ -110,21 +110,18 @@ RUN bash -c 'echo -e "gfx90a:xnack-\ngfx90a:xnac+\ngfx940\ngfx941\ngfx942\ngfx10
...
@@ -110,21 +110,18 @@ RUN bash -c 'echo -e "gfx90a:xnack-\ngfx90a:xnac+\ngfx940\ngfx941\ngfx942\ngfx10
# Install OpenMPI
# Install OpenMPI
ENV
OPENMPI_VERSION=4.1.x
ENV
OPENMPI_VERSION=4.1.x
# Check if Open MPI is installed
# Check if Open MPI is installed
RUN
[
-d
/usr/local/bin/mpirun
]
||
{
\
RUN
cd
/tmp
&&
\
echo
"Open MPI not found. Installing Open MPI..."
&&
\
cd
/tmp
&&
\
git clone
--recursive
https://github.com/open-mpi/ompi.git
-b
v
${
OPENMPI_VERSION
}
&&
\
git clone
--recursive
https://github.com/open-mpi/ompi.git
-b
v
${
OPENMPI_VERSION
}
&&
\
cd
ompi
&&
\
cd
ompi
&&
\
./autogen.pl
&&
\
./autogen.pl
&&
\
mkdir
build
&&
\
mkdir
build
&&
\
cd
build
&&
\
cd
build
&&
\
../configure
--prefix
=
/usr/local
--enable-orterun-prefix-by-default
--enable-mpirun-prefix-by-default
--enable-prte-prefix-by-default
--with-rocm
=
/opt/rocm
&&
\
../configure
--prefix
=
/usr/local
/mpi
--enable-orterun-prefix-by-default
--enable-mpirun-prefix-by-default
--enable-prte-prefix-by-default
--with-rocm
=
/opt/rocm
&&
\
make
-j
$(
nproc
)
&&
\
make
-j
$(
nproc
)
&&
\
make
-j
$(
nproc
)
install
&&
\
make
-j
$(
nproc
)
install
&&
\
ldconfig
&&
\
ldconfig
&&
\
cd
/
&&
\
cd
/
&&
\
rm
-rf
/tmp/openmpi-
${
OPENMPI_VERSION
}*
;
\
rm
-rf
/tmp/openmpi-
${
OPENMPI_VERSION
}*
}
# Install Intel MLC
# Install Intel MLC
RUN
cd
/tmp
&&
\
RUN
cd
/tmp
&&
\
...
@@ -166,11 +163,13 @@ RUN apt install rocm-cmake -y && \
...
@@ -166,11 +163,13 @@ RUN apt install rocm-cmake -y && \
WORKDIR
${SB_HOME}
WORKDIR
${SB_HOME}
ADD
third_party third_party
ADD
third_party third_party
RUN
make
RCCL_HOME
=
/opt/rccl/build/
MPI_HOME
=
/usr/local
ROCBLAS_BRANCH
=
release/rocm-rel-5.7.1.1
HIPBLASLT_BRANCH
=
release-staging/rocm-rel-5.7
ROCM_VER
=
rocm-5.5.0
-C
third_party rocm
-o
cpu_hpl
-o
cpu_stream
-o
megatron_lm
# Apply patch
RUN
cd
third_party/perftest
&&
\
git apply ../perftest_rocm6.patch
RUN
make
RCCL_HOME
=
/opt/rccl/build/
ROCBLAS_BRANCH
=
release/rocm-rel-5.7.1.1
HIPBLASLT_BRANCH
=
release/rocm-rel-5.7
ROCM_VER
=
rocm-5.5.0
-C
third_party rocm
-o
cpu_hpl
-o
cpu_stream
-o
megatron_lm
ADD
. .
ADD
. .
#ENV USE_HIPBLASLT_DATATYPE=1
#ENV USE_HIPBLASLT_DATATYPE=1
ENV
CXX=/opt/rocm/bin/hipcc
RUN
python3
-m
pip
install
.[amdworker]
&&
\
RUN
python3
-m
pip
install
.[amdworker]
&&
\
make cppbuild
&&
\
CXX
=
/opt/rocm/bin/hipcc
make cppbuild
&&
\
make postinstall
make postinstall
dockerfile/rocm6.0.x.dockerfile
0 → 100644
View file @
c2e7a543
ARG
BASE_IMAGE=rocm/pytorch:rocm6.0_ubuntu22.04_py3.9_pytorch_2.0.1
FROM
${BASE_IMAGE}
# OS:
# - Ubuntu: 22.04
# - Docker Client: 20.10.8
# ROCm:
# - ROCm: 6.0
# Lib:
# - torch: 2.0.1
# - rccl: 2.18.3+hip6.0 develop:7e1cbb4
# - hipblaslt: 950ca43
# - openmpi: 4.1.x
# - apex: 1.0.0
# Intel:
# - mlc: v3.10
LABEL
maintainer="SuperBench"
ENV
DEBIAN_FRONTEND=noninteractive
RUN
apt-get update
&&
\
apt-get
-q
install
-y
--no-install-recommends
\
autoconf
\
automake
\
bc
\
build-essential
\
curl
\
dmidecode
\
git
\
hipify-clang
\
iproute2
\
jq
\
libaio-dev
\
libboost-program-options-dev
\
libcap2
\
libcurl4-openssl-dev
\
libnuma-dev
\
libpci-dev
\
libssl-dev
\
libtinfo5
\
libtool
\
lshw
\
net-tools
\
numactl
\
openssh-client
\
openssh-server
\
pciutils
\
python3-mpi4py
\
rsync
\
sudo
\
util-linux
\
vim
\
wget
\
&&
\
rm
-rf
/tmp/
*
ARG
NUM_MAKE_JOBS=64
# Check if CMake is installed and its version
RUN
cmake_version
=
$(
cmake
--version
2>/dev/null |
grep
-oP
"(?<=cmake version )(
\d
+
\.\d
+)"
||
echo
"0.0"
)
&&
\
required_version
=
"3.24.1"
&&
\
if
[
"
$(
printf
"%s
\n
"
"
$required_version
"
"
$cmake_version
"
|
sort
-V
|
head
-n
1
)
"
!=
"
$required_version
"
]
;
then
\
echo
"existing cmake version is
${
cmake_version
}
"
&&
\
cd
/tmp
&&
\
wget
-q
https://github.com/Kitware/CMake/releases/download/v
${
required_version
}
/cmake-
${
required_version
}
.tar.gz
&&
\
tar
xzf cmake-
${
required_version
}
.tar.gz
&&
\
cd
cmake-
${
required_version
}
&&
\
./bootstrap
--prefix
=
/usr
--no-system-curl
--parallel
=
16
&&
\
make
-j
${
NUM_MAKE_JOBS
}
&&
\
make
install
&&
\
rm
-rf
/tmp/cmake-
${
required_version
}*
\
else
\
echo
"CMake version is greater than or equal to 3.23"
;
\
fi
# Install Docker
ENV
DOCKER_VERSION=20.10.8
RUN
cd
/tmp
&&
\
wget
-q
https://download.docker.com/linux/static/stable/x86_64/docker-
${
DOCKER_VERSION
}
.tgz
-O
docker.tgz
&&
\
tar
--extract
--file
docker.tgz
--strip-components
1
--directory
/usr/local/bin/
&&
\
rm
docker.tgz
# Update system config
RUN
mkdir
-p
/root/.ssh
&&
\
touch
/root/.ssh/authorized_keys
&&
\
mkdir
-p
/var/run/sshd
&&
\
sed
-i
"s/[# ]*PermitRootLogin prohibit-password/PermitRootLogin yes/"
/etc/ssh/sshd_config
&&
\
sed
-i
"s/[# ]*PermitUserEnvironment no/PermitUserEnvironment yes/"
/etc/ssh/sshd_config
&&
\
sed
-i
"s/[# ]*Port.*/Port 22/"
/etc/ssh/sshd_config
&&
\
echo
"* soft nofile 1048576
\n
* hard nofile 1048576"
>>
/etc/security/limits.conf
&&
\
echo
"root soft nofile 1048576
\n
root hard nofile 1048576"
>>
/etc/security/limits.conf
# Get Ubuntu version and set as an environment variable
RUN
export
UBUNTU_VERSION
=
$(
lsb_release
-r
-s
)
RUN
echo
"Ubuntu version:
$UBUNTU_VERSION
"
ENV
UBUNTU_VERSION=${UBUNTU_VERSION}
# Install OFED
ENV
OFED_VERSION=5.9-0.5.6.0
# Check if ofed_info is present and has a version
RUN if
!
command
-v
ofed_info
>
/dev/null 2>&1
;
then
\
echo
"OFED not found. Installing OFED..."
;
\
cd
/tmp
&&
\
wget
-q
http://content.mellanox.com/ofed/MLNX_OFED-
${
OFED_VERSION
}
/MLNX_OFED_LINUX-
${
OFED_VERSION
}
-ubuntu
${
UBUNTU_VERSION
}
-x86_64
.tgz
&&
\
tar
xzf MLNX_OFED_LINUX-
${
OFED_VERSION
}
-ubuntu
${
UBUNTU_VERSION
}
-x86_64
.tgz
&&
\
PATH
=
/usr/bin:
${
PATH
}
MLNX_OFED_LINUX-
${
OFED_VERSION
}
-ubuntu
${
UBUNTU_VERSION
}
-x86_64
/mlnxofedinstall
--user-space-only
--without-fw-update
--force
--all
&&
\
rm
-rf
MLNX_OFED_LINUX-
${
OFED_VERSION
}*
;
\
fi
# Add target file to help determine which device(s) to build for
ENV
ROCM_PATH=/opt/rocm
RUN
bash
-c
'echo -e "gfx90a:xnack-\ngfx90a:xnac+\ngfx940\ngfx941\ngfx942:sramecc+:xnack-\n" >> ${ROCM_PATH}/bin/target.lst'
# Install OpenMPI
ENV
OPENMPI_VERSION=4.1.x
# Check if Open MPI is installed
RUN
cd
/tmp
&&
\
git clone
--recursive
https://github.com/open-mpi/ompi.git
-b
v
${
OPENMPI_VERSION
}
&&
\
cd
ompi
&&
\
./autogen.pl
&&
\
mkdir
build
&&
\
cd
build
&&
\
../configure
--prefix
=
/usr/local/mpi
--enable-orterun-prefix-by-default
--enable-mpirun-prefix-by-default
--enable-prte-prefix-by-default
--with-rocm
=
/opt/rocm
&&
\
make
-j
$(
nproc
)
&&
\
make
-j
$(
nproc
)
install
&&
\
ldconfig
&&
\
cd
/
&&
\
rm
-rf
/tmp/openmpi-
${
OPENMPI_VERSION
}*
# Install Intel MLC
RUN
cd
/tmp
&&
\
wget
-q
https://downloadmirror.intel.com/763324/mlc_v3.10.tgz
-O
mlc.tgz
&&
\
tar
xzf mlc.tgz Linux/mlc
&&
\
cp
./Linux/mlc /usr/local/bin/
&&
\
rm
-rf
./Linux mlc.tgz
# Install RCCL
RUN
cd
/opt/
&&
\
git clone https://github.com/ROCmSoftwarePlatform/rccl.git
&&
\
cd
rccl
&&
\
mkdir
build
&&
\
cd
build
&&
\
CXX
=
/opt/rocm/bin/hipcc cmake
-DHIP_COMPILER
=
clang
-DCMAKE_BUILD_TYPE
=
Release
-DCMAKE_VERBOSE_MAKEFILE
=
1
\
-DCMAKE_PREFIX_PATH
=
"
${
ROCM_PATH
}
/hsa;
${
ROCM_PATH
}
/hip;
${
ROCM_PATH
}
/share/rocm/cmake/;
${
ROCM_PATH
}
"
\
..
&&
\
make
-j
${
NUM_MAKE_JOBS
}
ENV
PATH="/opt/superbench/bin:/usr/local/bin/:/opt/rocm/hip/bin/:/opt/rocm/bin/:${PATH}" \
LD_PRELOAD="/opt/rccl/build/librccl.so:$LD_PRELOAD" \
LD_LIBRARY_PATH="/usr/local/lib/:/opt/rocm/lib:${LD_LIBRARY_PATH}" \
SB_HOME=/opt/superbench \
SB_MICRO_PATH=/opt/superbench \
ANSIBLE_DEPRECATION_WARNINGS=FALSE \
ANSIBLE_COLLECTIONS_PATH=/usr/share/ansible/collections
RUN
echo
PATH
=
"
$PATH
"
>
/etc/environment
&&
\
echo
LD_LIBRARY_PATH
=
"
$LD_LIBRARY_PATH
"
>>
/etc/environment
&&
\
echo
SB_MICRO_PATH
=
"
$SB_MICRO_PATH
"
>>
/etc/environment
RUN
apt
install
rocm-cmake
-y
&&
\
python3
-m
pip
install
--upgrade
pip wheel
setuptools
==
65.7
WORKDIR
${SB_HOME}
ADD
third_party third_party
# Apply patch
RUN
cd
third_party/perftest
&&
\
git apply ../perftest_rocm6.patch
RUN
make
RCCL_HOME
=
/opt/rccl/build/
ROCBLAS_BRANCH
=
release/rocm-rel-6.0
HIPBLASLT_BRANCH
=
release/rocm-rel-6.0
ROCM_VER
=
rocm-5.5.0
-C
third_party rocm
-o
cpu_hpl
-o
cpu_stream
-o
megatron_lm
RUN
cd
third_party/Megatron/Megatron-DeepSpeed
&&
\
git apply ../megatron_deepspeed_rocm6.patch
ADD
. .
ENV
USE_HIP_DATATYPE=1
ENV
USE_HIPBLAS_COMPUTETYPE=1
RUN
python3
-m
pip
install
.[amdworker]
&&
\
CXX
=
/opt/rocm/bin/hipcc make cppbuild
&&
\
make postinstall
third_party/Makefile
View file @
c2e7a543
...
@@ -7,10 +7,12 @@ MPI_HOME ?= /usr/local/mpi
...
@@ -7,10 +7,12 @@ MPI_HOME ?= /usr/local/mpi
HIP_HOME
?=
/opt/rocm/hip
HIP_HOME
?=
/opt/rocm/hip
RCCL_HOME
?=
/opt/rocm/rccl
RCCL_HOME
?=
/opt/rocm/rccl
HPCX_HOME
?=
/opt/hpcx
HPCX_HOME
?=
/opt/hpcx
ROCM_PATH
?=
/opt/rocm
CUDA_VER
?=
$(
shell
nvcc
--version
|
grep
'release'
|
awk
'{print $$6
}
'
|
cut
-c2-
|
cut
-d
'.'
-f1-2
)
CUDA_VER
?=
$(
shell
nvcc
--version
|
grep
'release'
|
awk
'{print $$6
}
'
|
cut
-c2-
|
cut
-d
'.'
-f1-2
)
ROCBLAS_BRANCH
?=
rocm-
$(
shell
dpkg
-l
|
grep
'rocm-dev '
|
awk
'{print $$3
}
'
|
cut
-d
'.'
-f1-3
)
ROCBLAS_BRANCH
?=
rocm-
$(
shell
dpkg
-l
|
grep
'rocm-dev '
|
awk
'{print $$3
}
'
|
cut
-d
'.'
-f1-3
)
HIPBLASLT_BRANCH
?=
rocm-
$(
shell
dpkg
-l
|
grep
'rocm-dev '
|
awk
'{print $$3
}
'
|
cut
-d
'.'
-f1-3
)
HIPBLASLT_BRANCH
?=
rocm-
$(
shell
dpkg
-l
|
grep
'rocm-dev '
|
awk
'{print $$3
}
'
|
cut
-d
'.'
-f1-3
)
ROCM_VER
?=
$(
shell
hipconfig
-R
|
grep
-oP
'\d+\.\d+\.\d+'
||
echo
"0.0.0"
)
.PHONY
:
all cuda_with_msccl cuda rocm common cuda_cutlass cuda_bandwidthTest cuda_nccl_tests cuda_perftest cuda_msccl rocm_perftest fio rocm_rccl_tests rocm_rocblas rocm_bandwidthTest gpcnet cuda_gpuburn cpu_stream cpu_hpl directx_amf_encoding_latency directx_amd rocm_hipblaslt megatron_lm megatron_deepspeed apex_rocm
.PHONY
:
all cuda_with_msccl cuda rocm common cuda_cutlass cuda_bandwidthTest cuda_nccl_tests cuda_perftest cuda_msccl rocm_perftest fio rocm_rccl_tests rocm_rocblas rocm_bandwidthTest gpcnet cuda_gpuburn cpu_stream cpu_hpl directx_amf_encoding_latency directx_amd rocm_hipblaslt megatron_lm megatron_deepspeed apex_rocm
...
...
third_party/Megatron/megatron_deepspeed_rocm6.patch
0 → 100644
View file @
c2e7a543
diff --git a/megatron/fused_kernels/scaled_masked_softmax_cuda.cu b/megatron/fused_kernels/scaled_masked_softmax_cuda.cu
index 76086de..1533648 100644
--- a/megatron/fused_kernels/scaled_masked_softmax_cuda.cu
+++ b/megatron/fused_kernels/scaled_masked_softmax_cuda.cu
@@ -4,7 +4,7 @@
#include <cuda.h>
#include <cuda_runtime.h>
#include <cuda_fp16.h>
-#ifndef __HIP_PLATFORM_HCC__
+#ifndef __HIP_PLATFORM_AMD__
#include <cuda_profiler_api.h>
#endif
#include <ATen/cuda/CUDAContext.h>
diff --git a/megatron/fused_kernels/scaled_softmax_cuda.cu b/megatron/fused_kernels/scaled_softmax_cuda.cu
index 90e1c9f..d217aec 100644
--- a/megatron/fused_kernels/scaled_softmax_cuda.cu
+++ b/megatron/fused_kernels/scaled_softmax_cuda.cu
@@ -4,7 +4,7 @@
#include <cuda.h>
#include <cuda_runtime.h>
#include <cuda_fp16.h>
-#ifndef __HIP_PLATFORM_HCC__
+#ifndef __HIP_PLATFORM_AMD__
#include <cuda_profiler_api.h>
#endif
#include <ATen/cuda/CUDAContext.h>
diff --git a/megatron/fused_kernels/scaled_upper_triang_masked_softmax_cuda.cu b/megatron/fused_kernels/scaled_upper_triang_masked_softmax_cuda.cu
index 74c9f3d..03b5fc8 100644
--- a/megatron/fused_kernels/scaled_upper_triang_masked_softmax_cuda.cu
+++ b/megatron/fused_kernels/scaled_upper_triang_masked_softmax_cuda.cu
@@ -4,7 +4,7 @@
#include <cuda.h>
#include <cuda_runtime.h>
#include <cuda_fp16.h>
-#ifndef __HIP_PLATFORM_HCC__
+#ifndef __HIP_PLATFORM_AMD__
#include <cuda_profiler_api.h>
#endif
#include <ATen/cuda/CUDAContext.h>
perftest
@
dffd1dd8
Compare
5fb4f10a
...
dffd1dd8
Subproject commit
5fb4f10a7e7827ed15e53c25810a10be279d6e23
Subproject commit
dffd1dd8b8a26dad2634a546e7e4d082dc882fbc
third_party/perftest_rocm6.patch
0 → 100644
View file @
c2e7a543
diff --git a/configure.ac b/configure.ac
index 20eceda..c8f0c07 100755
--- a/configure.ac
+++ b/configure.ac
@@ -237,7 +237,7 @@
AC_ARG_WITH([rocm],
],
[AS_CASE([$with_rocm],
[yes|no], [],
- [CPPFLAGS="-I$with_rocm/include $CPPFLAGS"
+ [CPPFLAGS="-I$with_rocm/include -D__HIP_PLATFORM_AMD__=1 $CPPFLAGS"
LDFLAGS="-L$with_rocm/lib64 -Wl,-rpath=$with_rocm/lib64 -L$with_rocm/lib -Wl,-rpath=$with_rocm/lib -lamdhip64 $LDFLAGS"])
])
diff --git a/src/rocm_memory.c b/src/rocm_memory.c
index e9a9136..b6cb23a 100644
--- a/src/rocm_memory.c
+++ b/src/rocm_memory.c
@@ -44,8 +44,8 @@
static int init_rocm(int device_id) {
hipDeviceProp_t prop = {0};
ROCM_CHECK(hipGetDeviceProperties(&prop, device_id));
- printf("Using ROCm Device with ID: %d, Name: %s, PCI Bus ID: 0x%x, GCN Arch: %d\n",
- device_id, prop.name, prop.pciBusID, prop.gcnArch);
+ printf("Using ROCm Device with ID: %d, Name: %s, PCI Bus ID: 0x%x, GCN Arch: %s\n",
+ device_id, prop.name, prop.pciBusID, prop.gcnArchName);
return SUCCESS;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment