diff --git a/projects/roctracer/cmake_modules/env.cmake b/projects/roctracer/cmake_modules/env.cmake index 5627df083f..727cd0839e 100644 --- a/projects/roctracer/cmake_modules/env.cmake +++ b/projects/roctracer/cmake_modules/env.cmake @@ -43,9 +43,16 @@ if ( DEFINED ENV{CMAKE_DEBUG_TRACE} ) add_definitions ( -DDEBUG_TRACE=1 ) endif() +## Enable KFD wrapper +if ( DEFINED HIP_VDI ) + add_definitions ( -DHIP_VDI=${HIP_VDI} ) +else() + set ( HIP_VDI 0 ) +endif() + ## Enable KFD wrapper if ( DEFINED KFD_WRAPPER ) - add_definitions ( -DKFD_WRAPPER=1 ) + add_definitions ( -DKFD_WRAPPER=${KFD_WRAPPER} ) endif() ## Enable HIP/HCC local build @@ -128,5 +135,7 @@ message ( "-----HSA-Runtime-Lib: ${HSA_RUNTIME_LIB_PATH}" ) message ( "-------------HCC-Inc: ${HCC_INC_DIR}" ) message ( "-------------HIP-Inc: ${HIP_INC_DIR}" ) message ( "-------------KFD-Inc: ${HSA_KMT_INC_PATH}" ) +message ( "-------------HIP-VDI: ${HIP_VDI}" ) +message ( "---------KFD_WRAPPER: ${KFD_WRAPPER}" ) message ( "-----CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}" ) message ( "---CMAKE_PREFIX_PATH: ${CMAKE_PREFIX_PATH}" ) diff --git a/projects/roctracer/inc/roctracer_hcc.h b/projects/roctracer/inc/roctracer_hcc.h index 7caee7c9ad..252b984d2a 100644 --- a/projects/roctracer/inc/roctracer_hcc.h +++ b/projects/roctracer/inc/roctracer_hcc.h @@ -23,11 +23,26 @@ THE SOFTWARE. #ifndef INC_ROCTRACER_HCC_H_ #define INC_ROCTRACER_HCC_H_ +#if HIP_VDI +#define HIP_OP_ID_NUMBER 3 +#define HIP_OP_ID_COPY 1 +extern "C" { +typedef void (hipInitAsyncActivityCallback_t)(void* id_callback, void* op_callback, void* arg); +typedef bool (hipEnableAsyncActivityCallback_t)(unsigned op, bool enable); +typedef const char* (hipGetOpName_t)(unsigned op); +} +#else // !HIP_VDI #if LOCAL_BUILD #include #else #include #endif +#define HIP_OP_ID_NUMBER hc::HSA_OP_ID_NUMBER +#define HIP_OP_ID_COPY hc::HSA_OP_ID_COPY +typedef decltype(Kalmar::CLAMP::InitActivityCallback) hipInitAsyncActivityCallback_t; +typedef decltype(Kalmar::CLAMP::EnableActivityCallback) hipEnableAsyncActivityCallback_t; +typedef decltype(Kalmar::CLAMP::GetCmdName) hipGetOpName_t; +#endif // !HIP_VDI #include "roctracer.h" diff --git a/projects/roctracer/src/core/loader.h b/projects/roctracer/src/core/loader.h index 2da49aa8a7..1c4005dd3b 100644 --- a/projects/roctracer/src/core/loader.h +++ b/projects/roctracer/src/core/loader.h @@ -99,26 +99,26 @@ class HipApi { }; // HCC runtime library loader class +#include "inc/roctracer_hcc.h" class HccApi { public: typedef BaseLoader Loader; - typedef decltype(Kalmar::CLAMP::InitActivityCallback) InitActivityCallback_t; - typedef decltype(Kalmar::CLAMP::EnableActivityCallback) EnableActivityCallback_t; - typedef decltype(Kalmar::CLAMP::GetCmdName) GetCmdName_t; - - InitActivityCallback_t* InitActivityCallback; - EnableActivityCallback_t* EnableActivityCallback; - GetCmdName_t* GetCmdName; + hipInitAsyncActivityCallback_t* InitActivityCallback; + hipEnableAsyncActivityCallback_t* EnableActivityCallback; + hipGetOpName_t* GetOpName; protected: void init(Loader* loader) { - // Kalmar::CLAMP::InitActivityCallback - InitActivityCallback = loader->GetFun("InitActivityCallbackImpl"); - // Kalmar::CLAMP::EnableActivityIdCallback - EnableActivityCallback = loader->GetFun("EnableActivityCallbackImpl"); - // Kalmar::CLAMP::GetCmdName - GetCmdName = loader->GetFun("GetCmdNameImpl"); +#if HIP_VDI + InitActivityCallback = loader->GetFun("InitActivityCallback"); + EnableActivityCallback = loader->GetFun("EnableActivityCallback"); + GetOpName = loader->GetFun("GetCmdName"); +#else + InitActivityCallback = loader->GetFun("InitActivityCallbackImpl"); + EnableActivityCallback = loader->GetFun("EnableActivityCallbackImpl"); + GetOpName = loader->GetFun("GetCmdNameImpl"); +#endif } }; diff --git a/projects/roctracer/src/core/roctracer.cpp b/projects/roctracer/src/core/roctracer.cpp index 55428a2aba..6b58dced69 100644 --- a/projects/roctracer/src/core/roctracer.cpp +++ b/projects/roctracer/src/core/roctracer.cpp @@ -556,7 +556,7 @@ PUBLIC_API const char* roctracer_op_string( break; } case ACTIVITY_DOMAIN_HCC_OPS: { - return roctracer::HccLoader::Instance().GetCmdName(kind); + return roctracer::HccLoader::Instance().GetOpName(kind); break; } case ACTIVITY_DOMAIN_HIP_API: { @@ -606,7 +606,7 @@ static inline uint32_t get_op_num(const uint32_t& domain) { switch (domain) { case ACTIVITY_DOMAIN_HSA_OPS: return 1; case ACTIVITY_DOMAIN_HSA_API: return HSA_API_ID_NUMBER; - case ACTIVITY_DOMAIN_HCC_OPS: return hc::HSA_OP_ID_NUMBER; + case ACTIVITY_DOMAIN_HCC_OPS: return HIP_OP_ID_NUMBER; case ACTIVITY_DOMAIN_HIP_API: return HIP_API_ID_NUMBER; #ifdef KFD_WRAPPER case ACTIVITY_DOMAIN_KFD_API: return KFD_API_ID_NUMBER; diff --git a/projects/roctracer/test/CMakeLists.txt b/projects/roctracer/test/CMakeLists.txt index d794c44c39..3be85fc399 100644 --- a/projects/roctracer/test/CMakeLists.txt +++ b/projects/roctracer/test/CMakeLists.txt @@ -33,7 +33,7 @@ set ( RUN_SCRIPT "${TEST_DIR}/run.sh" ) add_custom_target( mytest COMMAND make -C "${TEST_DIR}/MatrixTranspose" COMMAND sh -xc "cp ${TEST_DIR}/MatrixTranspose/MatrixTranspose ${PROJECT_BINARY_DIR}/test" - COMMAND make -C "${TEST_DIR}/MatrixTranspose_test" + COMMAND HIP_VDI=${HIP_VDI} make -C "${TEST_DIR}/MatrixTranspose_test" COMMAND sh -xc "cp ${TEST_DIR}/MatrixTranspose_test/MatrixTranspose ${PROJECT_BINARY_DIR}/test/MatrixTranspose_test" ) diff --git a/projects/roctracer/test/MatrixTranspose_test/Makefile b/projects/roctracer/test/MatrixTranspose_test/Makefile index e74d66b0d1..3caef12634 100644 --- a/projects/roctracer/test/MatrixTranspose_test/Makefile +++ b/projects/roctracer/test/MatrixTranspose_test/Makefile @@ -2,6 +2,7 @@ ROOT_PATH = ../.. LIB_PATH = $(ROOT_PATH)/build ROC_LIBS = -L$(LIB_PATH) -lroctracer64 -lroctx64 export LD_LIBRARY_PATH=$(LIB_PATH) +HIP_VDI ?= 0 ITERATIONS ?= 100 HIP_PATH?= $(wildcard /opt/rocm/hip) @@ -23,7 +24,7 @@ EXECUTABLE=./MatrixTranspose all: clean $(EXECUTABLE) -CXXFLAGS =-g -I$(ROOT_PATH) -I$(ROOT_PATH)/inc -DLOCAL_BUILD=1 -DITERATIONS=$(ITERATIONS) +CXXFLAGS =-g -I$(ROOT_PATH) -I$(ROOT_PATH)/inc -DLOCAL_BUILD=1 -DHIP_VDI=${HIP_VDI} -DITERATIONS=$(ITERATIONS) CXX=$(HIPCC) $(EXECUTABLE): $(OBJECTS) diff --git a/projects/roctracer/test/MatrixTranspose_test/MatrixTranspose.cpp b/projects/roctracer/test/MatrixTranspose_test/MatrixTranspose.cpp index c2c50ebc41..c2a4ebad3c 100644 --- a/projects/roctracer/test/MatrixTranspose_test/MatrixTranspose.cpp +++ b/projects/roctracer/test/MatrixTranspose_test/MatrixTranspose.cpp @@ -32,7 +32,7 @@ THE SOFTWARE. #include #ifndef ITERATIONS -# define ITERATIONS 100 +# define ITERATIONS 101 #endif #define WIDTH 1024 @@ -273,7 +273,7 @@ void activity_callback(const char* begin, const char* end, void* arg) { record->device_id, record->queue_id ); - if (record->op == hc::HSA_OP_ID_COPY) fprintf(stdout, " bytes(0x%zx)", record->bytes); + if (record->op == HIP_OP_ID_COPY) fprintf(stdout, " bytes(0x%zx)", record->bytes); } else if (record->domain == ACTIVITY_DOMAIN_EXT_API) { fprintf(stdout, " external_id(%lu)", record->external_id