58 lines
2.0 KiB
Bash
Executable File
58 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# Regression test for scripts/build/package-gpu-libs.sh ROCm data bundling.
|
|
#
|
|
# Guards issue #10660: hipBLASLt (rocblaslt) resolves its TensileLibrary_lazy_gfx*.dat
|
|
# kernel data relative to the bundled libhipblaslt.so. The packager copied the
|
|
# rocblas/ data dir but not the hipblaslt/ data dir, so the bundled backend
|
|
# fell back to slow generic kernels and logged
|
|
# rocblaslt error: Cannot read "TensileLibrary_lazy_gfx1201.dat": No such file or directory
|
|
#
|
|
# This test fabricates a fake ROCm tree containing both rocblas/ and hipblaslt/
|
|
# tensile data, points the packager at it via ROCM_BASE_DIRS, and asserts BOTH
|
|
# data directories are bundled into the target lib dir.
|
|
set -euo pipefail
|
|
|
|
CURDIR=$(dirname "$(realpath "$0")")
|
|
SCRIPT="$CURDIR/package-gpu-libs.sh"
|
|
|
|
WORK=$(mktemp -d)
|
|
trap 'rm -rf "$WORK"' EXIT
|
|
|
|
# Fabricate a fake ROCm install with both rocblas and hipblaslt tensile data.
|
|
FAKE_ROCM="$WORK/opt/rocm"
|
|
mkdir -p "$FAKE_ROCM/lib/rocblas/library"
|
|
mkdir -p "$FAKE_ROCM/lib/hipblaslt/library"
|
|
echo "fake rocblas tensile" > "$FAKE_ROCM/lib/rocblas/library/TensileLibrary_lazy_gfx1201.dat"
|
|
echo "fake hipblaslt tensile" > "$FAKE_ROCM/lib/hipblaslt/library/TensileLibrary_lazy_gfx1201.dat"
|
|
|
|
TARGET="$WORK/target"
|
|
mkdir -p "$TARGET"
|
|
|
|
# shellcheck source=/dev/null
|
|
source "$SCRIPT" "$TARGET"
|
|
|
|
# Point the data-dir copy at the fabricated tree instead of the real /opt/rocm,
|
|
# then run the actual ROCm packager. This asserts package_rocm_libs itself
|
|
# bundles BOTH data dirs, not just that the helper works in isolation.
|
|
export BUILD_TYPE=hipblas
|
|
export ROCM_BASE_DIRS="$FAKE_ROCM"
|
|
package_rocm_libs
|
|
|
|
fail=false
|
|
if [ ! -e "$TARGET/rocblas/library/TensileLibrary_lazy_gfx1201.dat" ]; then
|
|
echo "FAIL: rocblas tensile data was NOT bundled"
|
|
fail=true
|
|
fi
|
|
if [ ! -e "$TARGET/hipblaslt/library/TensileLibrary_lazy_gfx1201.dat" ]; then
|
|
echo "FAIL: hipblaslt tensile data was NOT bundled (regression of #10660)"
|
|
fail=true
|
|
fi
|
|
|
|
if [ "$fail" = true ]; then
|
|
ls -R "$TARGET" || true
|
|
exit 1
|
|
fi
|
|
|
|
echo "PASS: rocblas and hipblaslt tensile data were both bundled"
|
|
exit 0
|