diff --git a/bin/run_tool.sh b/bin/run_tool.sh index ed1609face..2538286d87 100755 --- a/bin/run_tool.sh +++ b/bin/run_tool.sh @@ -22,7 +22,8 @@ export PATH=.:$PATH export HSA_TOOLS_LIB=librocprofiler64.so.1 # tool library loaded by ROC profiler if [ -z "$ROCP_TOOL_LIB" ] ; then - export ROCP_TOOL_LIB=libintercept_test.so + echo "Tool library is not defined: ROCP_TOOL_LIB" + exit 1 fi # enable error messages export HSA_TOOLS_REPORT_LOAD_FAILURE=1 diff --git a/build.sh b/build.sh index f90f09dbbe..dd7cb8b686 100755 --- a/build.sh +++ b/build.sh @@ -3,7 +3,4 @@ BIN_DIR=`dirname $0` BLD_DIR=$BIN_DIR/build export CMAKE_PREFIX_PATH=/opt/rocm/include/hsa:/opt/rocm -rm -rf $BLD_DIR && mkdir $BLD_DIR && cd $BLD_DIR && cmake .. -make -j -make mytest -./run.sh +rm -rf $BLD_DIR && mkdir $BLD_DIR && cd $BLD_DIR && cmake .. && make -j && make mytest && ./run.sh diff --git a/src/core/rocprofiler.cpp b/src/core/rocprofiler.cpp index 38aa5f9330..b5c0a02c28 100644 --- a/src/core/rocprofiler.cpp +++ b/src/core/rocprofiler.cpp @@ -669,12 +669,12 @@ PUBLIC_API hsa_status_t rocprofiler_remove_queue_callbacks() { } // Start/stop queue callbacks -hsa_status_t rocprofiler_start_queue_callbacks() { +PUBLIC_API hsa_status_t rocprofiler_start_queue_callbacks() { API_METHOD_PREFIX rocprofiler::InterceptQueue::Start(); API_METHOD_SUFFIX } -hsa_status_t rocprofiler_stop_queue_callbacks() { +PUBLIC_API hsa_status_t rocprofiler_stop_queue_callbacks() { API_METHOD_PREFIX rocprofiler::InterceptQueue::Stop(); API_METHOD_SUFFIX diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 42b6383819..4b3aec0293 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -40,15 +40,22 @@ target_include_directories ( "c_test" PRIVATE ${ROOT_DIR} ${HSA_RUNTIME_INC_PATH file( GLOB UTIL_SRC "${TEST_DIR}/util/*.cpp" ) ## Standalone test sources -set ( STEXE_NAME "standalone_test" ) -set ( STTST_SRC +set ( ST_EXE_NAME "standalone_test" ) +set ( ST_TST_SRC ${TEST_DIR}/app/standalone_test.cpp ${TEST_DIR}/ctrl/test_hsa.cpp ) +## Standalone intercept test sources +set ( STIN_EXE_NAME "stand_intercept_test" ) +set ( STIN_TST_SRC + ${TEST_DIR}/app/stand_intercept_test.cpp + ${TEST_DIR}/ctrl/test_hsa.cpp +) + ## Intercept test sources -set ( INEXE_NAME "intercept_test" ) -set ( INTST_SRC +set ( IN_EXE_NAME "intercept_test" ) +set ( IN_TST_SRC ${TEST_DIR}/app/intercept_test.cpp ${TEST_DIR}/ctrl/test_hsa.cpp ) @@ -72,14 +79,19 @@ add_custom_target( mytest ) ## Building standalone test executable -add_executable ( ${STEXE_NAME} ${STTST_SRC} ${UTIL_SRC} ${KERN_SRC} ) -target_include_directories ( ${STEXE_NAME} PRIVATE ${TEST_DIR} ${ROOT_DIR} ${HSA_RUNTIME_INC_PATH} ) -target_link_libraries ( ${STEXE_NAME} ${ROCPROFILER_TARGET} ${HSA_RUNTIME_LIB} ${HSA_KMT_LIB} c stdc++ dl pthread rt ) +add_executable ( ${ST_EXE_NAME} ${ST_TST_SRC} ${UTIL_SRC} ${KERN_SRC} ) +target_include_directories ( ${ST_EXE_NAME} PRIVATE ${TEST_DIR} ${ROOT_DIR} ${HSA_RUNTIME_INC_PATH} ) +target_link_libraries ( ${ST_EXE_NAME} ${ROCPROFILER_TARGET} ${HSA_RUNTIME_LIB} ${HSA_KMT_LIB} c stdc++ dl pthread rt ) + +## Building standalone intercept test executable +add_executable ( ${STIN_EXE_NAME} ${STIN_TST_SRC} ${UTIL_SRC} ${KERN_SRC} ) +target_include_directories ( ${STIN_EXE_NAME} PRIVATE ${TEST_DIR} ${ROOT_DIR} ${HSA_RUNTIME_INC_PATH} ) +target_link_libraries ( ${STIN_EXE_NAME} ${ROCPROFILER_TARGET} ${HSA_RUNTIME_LIB} ${HSA_KMT_LIB} c stdc++ dl pthread rt ) ## Building intercept test executable -add_library ( ${INEXE_NAME} SHARED ${INTST_SRC} ${UTIL_SRC} ${KERN_SRC} ) -target_include_directories ( ${INEXE_NAME} PRIVATE ${TEST_DIR} ${ROOT_DIR} ${HSA_RUNTIME_INC_PATH} ) -target_link_libraries ( ${INEXE_NAME} ${ROCPROFILER_TARGET} ${HSA_RUNTIME_LIB} ${HSA_KMT_LIB} c stdc++ dl pthread rt ) +add_library ( ${IN_EXE_NAME} SHARED ${IN_TST_SRC} ${UTIL_SRC} ${KERN_SRC} ) +target_include_directories ( ${IN_EXE_NAME} PRIVATE ${TEST_DIR} ${ROOT_DIR} ${HSA_RUNTIME_INC_PATH} ) +target_link_libraries ( ${IN_EXE_NAME} ${ROCPROFILER_TARGET} ${HSA_RUNTIME_LIB} ${HSA_KMT_LIB} c stdc++ dl pthread rt ) ## Building ctrl test executable add_executable ( ${EXE_NAME} ${CTRL_SRC} ${UTIL_SRC} ${KERN_SRC} ) diff --git a/test/app/intercept_test_stand.cpp b/test/app/stand_intercept_test.cpp similarity index 94% rename from test/app/intercept_test_stand.cpp rename to test/app/stand_intercept_test.cpp index 4f46f65efc..9764255782 100644 --- a/test/app/intercept_test_stand.cpp +++ b/test/app/stand_intercept_test.cpp @@ -151,12 +151,17 @@ hsa_status_t dispatch_callback(const rocprofiler_callback_data_t* callback_data, } int main() { - bool ret_val = false; + bool ret_val = true; const char* kiter_s = getenv("ROCP_KITER"); const char* diter_s = getenv("ROCP_DITER"); const unsigned kiter = (kiter_s != NULL) ? atol(kiter_s) : 1; const unsigned diter = (diter_s != NULL) ? atol(diter_s) : 1; + // Adding dispatch observer + rocprofiler_queue_callbacks_t callbacks_ptrs{}; + callbacks_ptrs.dispatch = dispatch_callback; + rocprofiler_set_queue_callbacks(callbacks_ptrs, NULL); + // Instantiate HSA resources HsaRsrcFactory::Create(); @@ -168,19 +173,15 @@ int main() { hsa_queue_t* queue = NULL; if (HsaRsrcFactory::Instance().CreateQueue(agent_info, 128, &queue) == false) abort(); - // Adding dispatch observer - rocprofiler_queue_callbacks_t callbacks_ptrs{}; - callbacks_ptrs.dispatch = dispatch_callback; - rocprofiler_set_queue_callbacks(callbacks_ptrs, NULL); - // Test initialization - TestHsa::SetQueue(queue); - TestHsa::HsaInstantiate(0); + TestHsa::HsaInstantiate(); for (unsigned ind = 0; ind < kiter; ++ind) { - printf("Iterastion %u:\n", ind); - ret_val = RunKernel(0, NULL, diter); - if (ret_val) ret_val = RunKernel(0, NULL, diter); + printf("Iteration %u:\n", ind); + if ((ind & 1) == 0) rocprofiler_start_queue_callbacks(); + else rocprofiler_stop_queue_callbacks(); + ret_val = RunKernel(0, NULL, agent_info, queue, diter); + if (ret_val) ret_val = RunKernel(0, NULL, agent_info, queue, diter); } TestHsa::HsaShutdown(); diff --git a/test/run.sh b/test/run.sh index 20be268b0d..0627775113 100755 --- a/test/run.sh +++ b/test/run.sh @@ -32,9 +32,12 @@ fi test_status=0 test_runnum=0 test_number=0 +failed_tests="Failed tests:" + xeval_test() { test_number=$test_number } + eval_test() { label=$1 cmdline=$2 @@ -44,6 +47,7 @@ eval_test() { eval "$cmdline" if [ $? != 0 ] ; then echo "$label: FAILED" + failed_tests="$failed_tests\n $test_number: \"$label\"" test_status=$(($test_status + 1)) else echo "$label: PASSED" @@ -76,10 +80,16 @@ eval_test "C test" ./test/c_test unset HSA_TOOLS_LIB unset ROCP_TOOL_LIB eval_test "Standalone sampling usage model test" ./test/standalone_test +# Standalone intercepting test +# ROC profiler library loaded by HSA runtime +export HSA_TOOLS_LIB=librocprofiler64.so.1 +export ROCP_HSA_INTERCEPT=2 +export ROCP_KITER=100 +export ROCP_DITER=10 +eval_test "Standalone intercepting test" ./test/stand_intercept_test +unset ROCP_HSA_INTERCEPT ## Intercepting usage model test -# ROC profiler library loaded by HSA runtime -export HSA_TOOLS_LIB=librocprofiler64.so # tool library loaded by ROC profiler export ROCP_TOOL_LIB=./test/libintercept_test.so export ROCP_KITER=50 @@ -158,4 +168,7 @@ eval_test "libtool test, OpenCL sample" ./test/ocl/SimpleConvolution #ms_print massif.out. echo "$test_number tests total / $test_runnum tests run / $test_status tests failed" +if [ $test_status != 0 ] ; then + echo $failed_tests +fi exit $test_status