Files
rocm-systems/bin/build_kernel.sh
T

68 lines
1.6 KiB
Bash
Raw Normal View History

2020-03-19 01:27:06 -05:00
#!/bin/sh -x
2020-04-22 12:02:21 -05:00
SO_EXT="hsaco"
2019-04-01 20:46:40 -05:00
TEST_NAME=$1
DST_DIR=$2
2020-03-19 01:27:06 -05:00
ROCM_DIR=$3
TGT_LIST=$4
2019-04-01 20:46:40 -05:00
if [ -z "$TEST_NAME" ] ; then
echo "Usage: $0 <test name> <dst dir>"
2020-04-22 12:02:21 -05:00
echo " Will look for <test name>.cl and will build <test name>.$SO_EXT dynamic code object library"
2019-04-01 20:46:40 -05:00
exit 1
fi
2020-04-22 12:02:21 -05:00
OBJ_NAME=$(echo "_$(basename $TEST_NAME)" | sed -e 's/_./\U&\E/g' -e 's/_//g')
2019-04-01 20:46:40 -05:00
if [ -z "$DST_DIR" ] ; then
DST_DIR=$(dirname TEST_NAME)
fi
2020-03-19 01:27:06 -05:00
if [ -z "$ROCM_DIR" ] ; then
ROCM_DIR=/opt/rocm
2019-04-01 20:46:40 -05:00
fi
2020-03-19 01:27:06 -05:00
if [ -z "$TGT_LIST" ] ; then
2020-05-26 21:56:07 -05:00
TGT_LIST=`$ROCM_DIR/bin/rocminfo | grep "amdgcn-amd-amdhsa--" | head -n 1 | sed -n "s/^.*amdgcn-amd-amdhsa--\(\w*\).*$/\1/p"`
2020-03-19 01:27:06 -05:00
fi
2019-04-01 20:46:40 -05:00
2020-03-19 01:27:06 -05:00
if [ -z "$TGT_LIST" ] ; then
echo "Error: GPU targets not found"
exit 1
fi
2019-04-01 20:46:40 -05:00
2020-03-19 01:27:06 -05:00
OCL_VER="2.0"
2020-04-22 12:02:21 -05:00
if [ -e $ROCM_DIR/llvm ] ; then
LLVM_DIR=$ROCM_DIR/llvm
LIB_DIR=$ROCM_DIR/lib
2020-04-22 12:02:21 -05:00
else
LLVM_DIR=$ROCM_DIR/hcc
LIB_DIR=$LLVM_DIR/lib
fi
BC_DIR=$LIB_DIR/bitcode
if [ ! -d "$BC_DIR" ] ; then BC_DIR=$LIB_DIR; fi
2020-04-22 12:02:21 -05:00
CLANG_ROOT=$LLVM_DIR/lib/clang
CLANG_DIR=`ls -d $CLANG_ROOT/* | head -n 1`
if [ "$CLANG_DIR" = "" ] ; then
echo "Error: LLVM clang library was not found"
exit 1
fi
BIN_DIR=$LLVM_DIR/bin
INC_DIR=$CLANG_DIR/include
2020-03-19 01:27:06 -05:00
BITCODE_OPTS="\
-Xclang -mlink-bitcode-file -Xclang $BC_DIR/opencl.amdgcn.bc \
-Xclang -mlink-bitcode-file -Xclang $BC_DIR/ockl.amdgcn.bc \
-Xclang -mlink-bitcode-file -Xclang $BC_DIR/ocml.amdgcn.bc"
2020-03-19 01:27:06 -05:00
for GFXIP in $TGT_LIST ; do
OBJ_PREF=$GFXIP
2020-04-22 12:02:21 -05:00
OBJ_FILE="${OBJ_PREF}_${OBJ_NAME}.$SO_EXT"
$BIN_DIR/clang -cl-std=CL$OCL_VER -include $INC_DIR/opencl-c.h $BITCODE_OPTS -target amdgcn-amd-amdhsa -mcpu=$GFXIP -mno-code-object-v3 $TEST_NAME.cl -o $DST_DIR/$OBJ_FILE
echo "'$OBJ_FILE' generated"
2020-03-19 01:27:06 -05:00
done
2019-04-01 20:46:40 -05:00
exit 0