diff --git a/bin/build_kernel.sh b/bin/build_kernel.sh new file mode 100755 index 0000000000..6c4afe6f46 --- /dev/null +++ b/bin/build_kernel.sh @@ -0,0 +1,30 @@ +#!/bin/sh + +TEST_NAME=$1 +DST_DIR=$2 + +if [ -z "$TEST_NAME" ] ; then + echo "Usage: $0 " + echo " Will look for .cl and will build .so dynamic object library" + exit 1 +fi + +if [ -z "$DST_DIR" ] ; then + DST_DIR=$(dirname TEST_NAME) +fi + +GFXIP=$(/opt/rocm/bin/rocminfo | grep "amdgcn-amd-amdhsa--" | head -n 1 | sed -n "s/^.*amdgcn-amd-amdhsa--\(\w*\).*$/\1/p") +if [ -z "$GFXIP" ] ; then + echo "GPU is not found" + exit 1 +fi + +OBJ_PREF=$(echo $GFXIP | head -c 4) +OBJ_NAME=$(echo "_$(basename $TEST_NAME)" | sed -e 's/_./\U&\E/g' -e 's/_//g') +OBJ_FILE=${OBJ_PREF}_${OBJ_NAME}.hsaco + +/opt/rocm/opencl/bin/x86_64/clang -cl-std=CL2.0 -cl-std=CL2.0 -include /opt/rocm/opencl/include/opencl-c.h -Xclang -mlink-bitcode-file -Xclang /opt/rocm/opencl/lib/x86_64/bitcode/opencl.amdgcn.bc -Xclang -mlink-bitcode-file -Xclang /opt/rocm/opencl/lib/x86_64/bitcode/ockl.amdgcn.bc -target amdgcn-amd-amdhsa -mcpu=$GFXIP -mno-code-object-v3 $TEST_NAME.cl -o $OBJ_FILE + +echo "'$OBJ_FILE' is generated for '$GFXIP'" + +exit 0 diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index c7d86ccfb1..7f128e86d1 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -57,12 +57,12 @@ set ( CTRL_SRC ## Dummy kernel set ( DUMMY_NAME dummy_kernel ) -execute_process ( COMMAND sh -xc "cp ${TEST_DIR}/${DUMMY_NAME}/*.hsaco ${PROJECT_BINARY_DIR}" ) +execute_process ( COMMAND sh -xc "${TEST_DIR}/../bin/build_kernel.sh ${TEST_DIR}/${DUMMY_NAME}/${DUMMY_NAME} ${PROJECT_BINARY_DIR}" ) ## Test kernel set ( TEST_NAME simple_convolution ) set ( KERN_SRC ${TEST_DIR}/${TEST_NAME}/${TEST_NAME}.cpp ) -execute_process ( COMMAND sh -xc "cp ${TEST_DIR}/${TEST_NAME}/*.hsaco ${PROJECT_BINARY_DIR}" ) +execute_process ( COMMAND sh -xc "${TEST_DIR}/../bin/build_kernel.sh ${TEST_DIR}/${TEST_NAME}/${TEST_NAME} ${PROJECT_BINARY_DIR}" ) ## Building standalone test executable add_executable ( ${STEXE_NAME} ${STTST_SRC} ${UTIL_SRC} ${KERN_SRC} )