From a852370a2500808abe4f3a525ceb563d9d87ff50 Mon Sep 17 00:00:00 2001 From: German Andryeyev Date: Mon, 26 Jul 2021 14:35:02 -0400 Subject: [PATCH] SWDEV-290384 - Add compilation option for direct disaptch DISABLE_DIRECT_DISPATCH flag will control compilation. Default is OFF. Change-Id: I7d4207b8a79f5e3eb61440c5fbe5034c6ce75cce --- hipamd/src/CMakeLists.txt | 8 +++++++- hipamd/src/hip_context.cpp | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/hipamd/src/CMakeLists.txt b/hipamd/src/CMakeLists.txt index 84ecdb5eab..858f430b6b 100755 --- a/hipamd/src/CMakeLists.txt +++ b/hipamd/src/CMakeLists.txt @@ -40,6 +40,8 @@ if(ADDRESS_SANITIZER) set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${ASAN_LINKER_FLAGS}") endif() +option(DISABLE_DIRECT_DISPATCH "Disable Direct Dispatch" OFF) + option(BUILD_SHARED_LIBS "Build the shared library" ON) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") @@ -148,6 +150,10 @@ else() target_include_directories(amdhip64 PRIVATE $) endif() +if(DISABLE_DIRECT_DISPATCH) + target_compile_definitions(amdhip64 PRIVATE DISABLE_DIRECT_DISPATCH) +endif() + # Short-Term solution for pre-compiled headers for online compilation # Enable pre compiled header if(__HIP_ENABLE_PCH) @@ -296,7 +302,7 @@ add_custom_command(TARGET amdhip64 POST_BUILD COMMAND add_library(host INTERFACE) target_link_libraries(host INTERFACE amdhip64) - + add_library(device INTERFACE) target_link_libraries(device INTERFACE host) diff --git a/hipamd/src/hip_context.cpp b/hipamd/src/hip_context.cpp index 0e114029f3..3779c317d2 100755 --- a/hipamd/src/hip_context.cpp +++ b/hipamd/src/hip_context.cpp @@ -39,8 +39,14 @@ void init() { if (!amd::Runtime::initialized()) { amd::IS_HIP = true; GPU_NUM_MEM_DEPENDENCY = 0; - AMD_DIRECT_DISPATCH = flagIsDefault(AMD_DIRECT_DISPATCH) ? IS_LINUX : AMD_DIRECT_DISPATCH; +#if DISABLE_DIRECT_DISPATCH + constexpr bool kDirectDispatch = false; +#else + constexpr bool kDirectDispatch = IS_LINUX; +#endif + AMD_DIRECT_DISPATCH = flagIsDefault(AMD_DIRECT_DISPATCH) ? kDirectDispatch : AMD_DIRECT_DISPATCH; amd::Runtime::init(); + LogPrintfInfo("Direct Dispatch: %d", AMD_DIRECT_DISPATCH); } const std::vector& devices = amd::Device::getDevices(CL_DEVICE_TYPE_GPU, false);