Files
ROCm/tools/rocm-build/build_composable_kernel.sh
Ameya Keshava Mallya 295e1e2998 Updating scripts for 6.4
2025-04-11 20:44:44 +00:00

97 lines
3.1 KiB
Bash
Executable File

#!/bin/bash
set -ex
source "$(dirname "${BASH_SOURCE[0]}")/compute_utils.sh"
# Temporarily disable Address Sanitizer
ENABLE_ADDRESS_SANITIZER=false
set_component_src composable_kernel
disable_debug_package_generation
# Set the GPU_ARCH_LIST to the supported GPUs needed after https://github.com/ROCm/composable_kernel/pull/1536/
GPU_ARCH_LIST="gfx908;gfx90a;gfx942;gfx1030;gfx1100;gfx1101;gfx1102;gfx1200;gfx1201"
build_miopen_ck() {
echo "Start Building Composable Kernel"
if [ "${ENABLE_ADDRESS_SANITIZER}" == "true" ]; then
set_asan_env_vars
set_address_sanitizer_on
GPU_ARCH_LIST="gfx908:xnack+;gfx90a:xnack+;gfx942:xnack+"
else
unset_asan_env_vars
set_address_sanitizer_off
fi
if [ "${ENABLE_STATIC_BUILDS}" == "true" ]; then
GPU_ARCH_LIST="gfx942"
ack_and_skip_static
fi
# if ENABLE_GPU_ARCH is set in env by Job parameter ENABLE_GPU_ARCH, then set GPU_ARCH_LIST to that value
# This needs to be removed when CK aligns with other component and uses -DAMDGPU_TARGET or _DGPO_TARGET
# then we can use set_gpu_arch from compure_helper.sh and get rid of all if clauses
if [ -n "$ENABLE_GPU_ARCH" ]; then
GPU_ARCH_LIST="$ENABLE_GPU_ARCH"
fi
# Latest CK requiring Python 3.8 as the minimum.
# Point CMake to that explicit location and adjust LD_LIBRARY_PATH.
PYTHON_VERSION_WORKAROUND=''
echo "DISTRO_ID: ${DISTRO_ID}"
if [ "$DISTRO_ID" = "rhel-8.8" ] || [ "$DISTRO_NAME" == "sles" ] || [ "$DISTRO_ID" = "debian-10" ]; then
EXTRA_PYTHON_PATH=/opt/Python-3.8.13
PYTHON_VERSION_WORKAROUND="-DCK_USE_ALTERNATIVE_PYTHON=${EXTRA_PYTHON_PATH}/bin/python3.8"
# For the python interpreter we need to export LD_LIBRARY_PATH.
export LD_LIBRARY_PATH=${EXTRA_PYTHON_PATH}/lib:$LD_LIBRARY_PATH
fi
cd $COMPONENT_SRC
mkdir "$BUILD_DIR" && cd "$BUILD_DIR"
init_rocm_common_cmake_params
cmake \
-DBUILD_DEV=OFF \
"${rocm_math_common_cmake_params[@]}" \
${PYTHON_VERSION_WORKAROUND} \
-DCPACK_GENERATOR="${PKGTYPE^^}" \
-DCMAKE_CXX_COMPILER=$(set_build_variables __CLANG++__) \
-DCMAKE_C_COMPILER=$(set_build_variables __CLANG__) \
${LAUNCHER_FLAGS} \
-DGPU_ARCHS="${GPU_ARCH_LIST}" \
"$COMPONENT_SRC"
cmake --build . -- -j${PROC} package
cmake --build "$BUILD_DIR" -- install
copy_if "${PKGTYPE}" "${CPACKGEN:-"DEB;RPM"}" "${PACKAGE_DIR}" "${BUILD_DIR}"/*."${PKGTYPE}"
}
# Use the function to unset the LDFLAGS and CXXFLAGS
# specifically set for ASAN
unset_asan_env_vars() {
ASAN_CMAKE_PARAMS="false"
export ADDRESS_SANITIZER="OFF"
export LD_LIBRARY_PATH=""
export ASAN_OPTIONS=""
}
set_address_sanitizer_off() {
export CFLAGS=""
export CXXFLAGS=""
export LDFLAGS=""
}
clean_miopen_ck() {
echo "Cleaning MIOpen-CK build directory: ${BUILD_DIR} ${PACKAGE_DIR}"
rm -rf "$BUILD_DIR" "$PACKAGE_DIR"
echo "Done!"
}
stage2_command_args "$@"
case $TARGET in
build) build_miopen_ck; build_wheel ;;
outdir) print_output_directory ;;
clean) clean_miopen_ck ;;
*) die "Invalid target $TARGET" ;;
esac