Skip to content

Commit

Permalink
Add MIOpen 5.2.3 (#5630)
Browse files Browse the repository at this point in the history
* t

* Partial fix for MIOpen

* Remove logs

* Completely fix MIOpen build

* Revert boost

* Add half to products

* Specify compat
  • Loading branch information
pxl-th authored Oct 5, 2022
1 parent ff42e95 commit 67704d9
Show file tree
Hide file tree
Showing 4 changed files with 141 additions and 0 deletions.
8 changes: 8 additions & 0 deletions M/MIOpen/[email protected]/build_tarballs.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
using Pkg
using BinaryBuilder

include("../common.jl")

build_tarballs(
ARGS, configure_build(v"5.2.3")...;
preferred_gcc_version=v"7", preferred_llvm_version=v"9")
18 changes: 18 additions & 0 deletions M/MIOpen/[email protected]/bundled/patches/boost-fix.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
diff --git a/include/miopen/config.h.in b/include/miopen/config.h.in
index 1849b4344..d0c6f2a9b 100644
--- a/include/miopen/config.h.in
+++ b/include/miopen/config.h.in
@@ -117,4 +117,13 @@
((HIP_PACKAGE_VERSION_MAJOR * 1000ULL + HIP_PACKAGE_VERSION_MINOR) * 1000000 + \
HIP_PACKAGE_VERSION_PATCH)

+/// WORKAROUND_BOOST_ISSUE_392
+/// Workaround for https://github.com/boostorg/config/issues/392#issuecomment-1109889533
+/// See also https://github.com/ROCmSoftwarePlatform/MIOpen/pull/1490#issuecomment-1109928102,
+/// https://github.com/ROCmSoftwarePlatform/MIOpen/pull/1543
+/// TODO: Remove the W/A as soon we switch to the properly fixed boost.
+#if MIOPEN_BACKEND_HIP
+#include <hip/hip_version.h>
+#endif
+
#endif
75 changes: 75 additions & 0 deletions M/MIOpen/common.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
const NAME = "MIOpen"

const ROCM_GIT = "https://github.com/ROCmSoftwarePlatform/MIOpen/"
const GIT_TAGS = Dict(
v"5.2.3" => "28747847446955b3bab24f7fc65c1a6b863a12f12ad3a35e0312072482d38122",
)

const ROCM_PLATFORMS = [
Platform("x86_64", "linux"; libc="glibc", cxxstring_abi="cxx11"),
# TODO add, when rocBLAS 5.2.3+ is built for musl
# Platform("x86_64", "linux"; libc="musl", cxxstring_abi="cxx11"),
]
const PRODUCTS = [
LibraryProduct(["libMIOpen"], :libMIOpen, ["lib"]),
FileProduct("include/half.hpp", :libhalf),
]

function configure_build(version)
buildscript = raw"""
mv ${WORKSPACE}/srcdir/half/include/half.hpp ${prefix}/include
export HALF_INCLUDE_DIR=${prefix}/include
mv ${WORKSPACE}/srcdir/rocm-clang* ${prefix}/llvm/bin
cd ${WORKSPACE}/srcdir/MIOpen*/
atomic_patch -p1 ${WORKSPACE}/srcdir/patches/boost-fix.patch
mkdir build
export AMDGPU_TARGETS="gfx900;gfx906;gfx90a;gfx1010;gfx1012;gfx1030"
export ROCM_PATH=${prefix}
export HIP_PATH=${prefix}/hip
export HIP_PLATFORM=amd
export HIP_RUNTIME=rocclr
export HIP_COMPILER=clang
CXXFLAGS="${CXXFLAGS} -I${prefix}/include/rocblas" \
cmake -S . -B build \
-DCMAKE_CXX_COMPILER=${prefix}/llvm/bin/rocm-clang++ \
-DCMAKE_INSTALL_PREFIX=${prefix} \
-DCMAKE_PREFIX_PATH=${prefix} \
-DCMAKE_BUILD_TYPE=Release \
-DROCM_PATH=${ROCM_PATH} \
-DAMDGPU_TARGETS=${AMDGPU_TARGETS} \
-DBoost_USE_STATIC_LIBS=OFF \
-DMIOPEN_BACKEND=HIP \
-DMIOPEN_USE_MLIR=OFF \
-DHALF_INCLUDE_DIR=${HALF_INCLUDE_DIR}
make -j${nproc} -C build install
install_license ${WORKSPACE}/srcdir/MIOpen*/LICENSE.txt
"""

sources = [
ArchiveSource(
ROCM_GIT * "archive/rocm-$(version).tar.gz", GIT_TAGS[version]),
ArchiveSource(
"https://downloads.sourceforge.net/project/half/half/2.1.0/half-2.1.0.zip",
"ad1788afe0300fa2b02b0d1df128d857f021f92ccf7c8bddd07812685fa07a25";
unpack_target="half"),
DirectorySource("./bundled"),
DirectorySource("../scripts"),
]
dependencies = [
BuildDependency(PackageSpec(; name="ROCmLLVM_jll", version)),
BuildDependency(PackageSpec(; name="rocm_cmake_jll", version)),
Dependency("HIP_jll"; compat=string(version)),
Dependency("rocBLAS_jll"; compat=string(version)),
Dependency("Zlib_jll"),
Dependency("SQLite_jll"),
Dependency("boost_jll"; compat="1.79.0"),
]
NAME, version, sources, buildscript, ROCM_PLATFORMS, PRODUCTS, dependencies
end
40 changes: 40 additions & 0 deletions M/MIOpen/scripts/rocm-clang++
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#!/bin/bash

ARGS=( "$@" )
PRE_FLAGS=()
POST_FLAGS=()

PRE_FLAGS+=( -target ${target} )
PRE_FLAGS+=( --sysroot=/opt/${target}/${target}/sys-root )
PRE_FLAGS+=( --gcc-toolchain=/opt/${target} )

if [[ " ${ARGS[@]} " != *' -x assembler '* ]]; then
PRE_FLAGS+=( -march=x86-64 )
PRE_FLAGS+=( -mtune=generic )
fi

COMPILE_BASE_DIR=/opt/${target}/${target}
COMPILE_CPP_DIR=${COMPILE_BASE_DIR}/include/c++/*

if [[ " ${ARGS[@]} " != *' -c '* ]] && [[ " ${ARGS[@]} " != *' -E '* ]] && [[ " ${ARGS[@]} " != *' -M '* ]] && [[ " ${ARGS[@]} " != *' -fsyntax-only '* ]]; then
POST_FLAGS+=( -rtlib=libgcc )
POST_FLAGS+=( -stdlib=libstdc++ )
POST_FLAGS+=( -fuse-ld=lld )
fi

COMPILE_BASE_DIR=/opt/${target}/${target}
LINK_GCC_DIR=/opt/${target}/lib/gcc/${target}/*
# Need `-isystem` to be in post flags, for `#include_next` to work.
POST_FLAGS+=(-isystem ${COMPILE_CPP_DIR} -isystem ${COMPILE_CPP_DIR}/${target})
POST_FLAGS+=(-B ${LINK_GCC_DIR} -L ${LINK_GCC_DIR} -L ${COMPILE_BASE_DIR}/lib64)

if [[ " ${ARGS[@]} " == *"-march="* ]]; then
echo "BinaryBuilder: Cannot force an architecture via -march" >&2
exit 1
fi

if [ ${USE_CCACHE} == "true" ]; then
CCACHE="ccache"
fi

${CCACHE} ${prefix}/llvm/bin/clang++ "${PRE_FLAGS[@]}" "${ARGS[@]}" "${POST_FLAGS[@]}"

0 comments on commit 67704d9

Please sign in to comment.