From 04715ce7e9e4b80bb49ad5872762cd2ed7edeeaf Mon Sep 17 00:00:00 2001 From: "Opitz, Daniel" Date: Fri, 17 Jan 2025 15:03:06 +0100 Subject: [PATCH] removed internal rtas builder, made EMBREE_SYCL_L0_RTAS_BUILDER the default --- CMakeLists.txt | 5 -- CMakePresets.json | 2 - kernels/common/device.cpp | 11 +--- kernels/level_zero/CMakeLists.txt | 6 -- kernels/level_zero/ze_wrapper.cpp | 79 ++------------------------ kernels/level_zero/ze_wrapper.h | 10 +--- kernels/sycl/rthwif_embree_builder.cpp | 6 -- scripts/cmake-presets/continuous.json | 7 --- scripts/cmake-presets/integrate.json | 2 - scripts/cmake-presets/nightly.json | 7 --- scripts/cmake-presets/performance.json | 1 - scripts/cmake-presets/release.json | 2 - tutorials/common/sycl/util.h | 4 +- 13 files changed, 11 insertions(+), 131 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d9536b202f..ead510159e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -195,11 +195,6 @@ IF (EMBREE_SYCL_SUPPORT) ENDIF() ENDIF() -CMAKE_DEPENDENT_OPTION(EMBREE_SYCL_L0_RTAS_BUILDER "Enable Level Zero RTAS builder" ON "EMBREE_SYCL_SUPPORT" OFF) -IF (EMBREE_SYCL_L0_RTAS_BUILDER) - ADD_DEFINITIONS("-DEMBREE_SYCL_L0_RTAS_BUILDER") -ENDIF() - OPTION(EMBREE_RAY_MASK "Enables ray mask support." ON) OPTION(EMBREE_BACKFACE_CULLING "Enables backface culling.") OPTION(EMBREE_BACKFACE_CULLING_CURVES "Enables backface culling for curve primitives." OFF) diff --git a/CMakePresets.json b/CMakePresets.json index 624717c0e7..db547d9609 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -40,7 +40,6 @@ "cacheVariables": { "CMAKE_BUILD_TYPE": "Release", "EMBREE_SYCL_SUPPORT": "ON", - "EMBREE_SYCL_L0_RTAS_BUILDER" : "OFF", "EMBREE_SYCL_AOT_DEVICES": "none", "EMBREE_MAX_ISA": "AVX512", "EMBREE_USE_GOOGLE_BENCHMARK": "ON", @@ -83,7 +82,6 @@ "cacheVariables": { "CMAKE_BUILD_TYPE": "Release", "EMBREE_SYCL_SUPPORT": "ON", - "EMBREE_SYCL_L0_RTAS_BUILDER" : "OFF", "EMBREE_SYCL_AOT_DEVICES": "none", "EMBREE_MAX_ISA": "AVX512" } diff --git a/kernels/common/device.cpp b/kernels/common/device.cpp index 60252466a2..32f92feafb 100644 --- a/kernels/common/device.cpp +++ b/kernels/common/device.cpp @@ -662,7 +662,6 @@ namespace embree if (result != ZE_RESULT_SUCCESS) throw_RTCError(RTC_ERROR_UNKNOWN, "zeDriverGetExtensionProperties failed"); -#if defined(EMBREE_SYCL_L0_RTAS_BUILDER) bool ze_rtas_builder = false; for (uint32_t i=0; i #include -ZeWrapper::RTAS_BUILD_MODE ZeWrapper::rtas_builder = ZeWrapper::AUTO; +bool ZeWrapper::rtas_builder_selected = false; static std::mutex zeWrapperMutex; static void* handle = nullptr; @@ -90,7 +90,8 @@ ZeWrapper::~ZeWrapper() { ze_result_t selectLevelZeroRTASBuilder(ze_driver_handle_t hDriver) { - if (ZeWrapper::rtas_builder == ZeWrapper::LEVEL_ZERO) + /* only select rtas builder once! */ + if (ZeWrapper::rtas_builder_selected) return ZE_RESULT_SUCCESS; auto zeRTASBuilderCreateExpTemp = find_symbol(handle,"zeRTASBuilderCreateExp"); @@ -119,33 +120,10 @@ ze_result_t selectLevelZeroRTASBuilder(ze_driver_handle_t hDriver) zeRTASParallelOperationGetPropertiesExpInternal = find_symbol(handle,"zeRTASParallelOperationGetPropertiesExp"); zeRTASParallelOperationJoinExpInternal = find_symbol(handle,"zeRTASParallelOperationJoinExp"); - ZeWrapper::rtas_builder = ZeWrapper::LEVEL_ZERO; + ZeWrapper::rtas_builder_selected = true; return ZE_RESULT_SUCCESS; } -void selectInternalRTASBuilder() -{ -#if defined(ZE_RAYTRACING_DISABLE_INTERNAL_BUILDER) - throw std::runtime_error("internal builder disabled at compile time"); -#else - if (ZeWrapper::rtas_builder == ZeWrapper::INTERNAL) - return; - - zeRTASBuilderCreateExpInternal = &zeRTASBuilderCreateExp; - zeRTASBuilderDestroyExpInternal = &zeRTASBuilderDestroyExp; - zeDriverRTASFormatCompatibilityCheckExpInternal = &zeDriverRTASFormatCompatibilityCheckExp; - zeRTASBuilderGetBuildPropertiesExpInternal = &zeRTASBuilderGetBuildPropertiesExp; - zeRTASBuilderBuildExpInternal = &zeRTASBuilderBuildExp; - - zeRTASParallelOperationCreateExpInternal = &zeRTASParallelOperationCreateExp; - zeRTASParallelOperationDestroyExpInternal = &zeRTASParallelOperationDestroyExp; - zeRTASParallelOperationGetPropertiesExpInternal = &zeRTASParallelOperationGetPropertiesExp; - zeRTASParallelOperationJoinExpInternal = &zeRTASParallelOperationJoinExp; - - ZeWrapper::rtas_builder = ZeWrapper::INTERNAL; -#endif -} - ze_result_t ZeWrapper::init() { std::lock_guard lock(zeWrapperMutex); @@ -169,42 +147,12 @@ ze_result_t ZeWrapper::init() return ZE_RESULT_SUCCESS; } -ze_result_t ZeWrapper::initRTASBuilder(ze_driver_handle_t hDriver, RTAS_BUILD_MODE rtas_build_mode) +ze_result_t ZeWrapper::initRTASBuilder(ze_driver_handle_t hDriver) { std::lock_guard lock(zeWrapperMutex); - /* only select rtas builder once! */ - if (rtas_builder != RTAS_BUILD_MODE::AUTO) - { - if (rtas_build_mode == RTAS_BUILD_MODE::AUTO) - return ZE_RESULT_SUCCESS; - - if (rtas_builder == rtas_build_mode) - return ZE_RESULT_SUCCESS; - - return ZE_RESULT_ERROR_UNKNOWN; - } - try { - - if (rtas_build_mode == RTAS_BUILD_MODE::AUTO) - { - try { - if (selectLevelZeroRTASBuilder(hDriver) != ZE_RESULT_SUCCESS) - selectInternalRTASBuilder(); - } catch (std::exception& e) { - selectInternalRTASBuilder(); - } - } - - else if (rtas_build_mode == RTAS_BUILD_MODE::INTERNAL) - selectInternalRTASBuilder(); - - else if (rtas_build_mode == RTAS_BUILD_MODE::LEVEL_ZERO) - return selectLevelZeroRTASBuilder(hDriver); - - else - throw std::runtime_error("internal error"); + return selectLevelZeroRTASBuilder(hDriver); } catch (std::exception& e) { return ZE_RESULT_ERROR_UNKNOWN; @@ -354,21 +302,6 @@ ze_result_t ZeWrapper::zeDeviceGetProperties(ze_device_handle_t ze_handle, ze_de { if (!handle || !zeDeviceGetPropertiesInternal) throw std::runtime_error("ZeWrapper not initialized, call ZeWrapper::init() first."); - - if (ZeWrapper::rtas_builder == ZeWrapper::INTERNAL) - { - if (props->pNext && ((ze_base_properties_t*)props->pNext)->stype == ZE_STRUCTURE_TYPE_RTAS_DEVICE_EXP_PROPERTIES) - { - ze_result_t result = zeDeviceGetRTASPropertiesExp(ze_handle, (ze_rtas_device_exp_properties_t*)props->pNext); - if (result != ZE_RESULT_SUCCESS) return result; - - void* pNext = props->pNext; - props->pNext = ((ze_base_properties_t*)props->pNext)->pNext; - result = zeDeviceGetPropertiesInternal(ze_handle, props); - props->pNext = pNext; - return result; - } - } return zeDeviceGetPropertiesInternal(ze_handle, props); } diff --git a/kernels/level_zero/ze_wrapper.h b/kernels/level_zero/ze_wrapper.h index f4f409ed5a..f378eb3163 100644 --- a/kernels/level_zero/ze_wrapper.h +++ b/kernels/level_zero/ze_wrapper.h @@ -27,16 +27,10 @@ typedef struct _ze_rtas_builder_build_op_debug_exp_desc_t struct ZeWrapper { - enum RTAS_BUILD_MODE { - AUTO = 0, // try L0 implementation first and fallback to internal implementation - INTERNAL = 1, // use internal RTAS build implementation - LEVEL_ZERO = 2, // use Level Zero provided RTAS build implementation - }; - ~ZeWrapper(); static ze_result_t init(); - static ze_result_t initRTASBuilder(ze_driver_handle_t hDriver, RTAS_BUILD_MODE rtas_build_mode = RTAS_BUILD_MODE::AUTO); + static ze_result_t initRTASBuilder(ze_driver_handle_t hDriver); static ze_result_t zeMemFree(ze_context_handle_t, void*); static ze_result_t zeMemAllocHost(ze_context_handle_t, const ze_host_mem_alloc_desc_t*, size_t, size_t, void**); @@ -66,6 +60,6 @@ struct ZeWrapper static ze_result_t zeRTASParallelOperationGetPropertiesExp( ze_rtas_parallel_operation_exp_handle_t hParallelOperation, ze_rtas_parallel_operation_exp_properties_t* pProperties ); static ze_result_t zeRTASParallelOperationJoinExp( ze_rtas_parallel_operation_exp_handle_t hParallelOperation); - static RTAS_BUILD_MODE rtas_builder; + static bool rtas_builder_selected; }; diff --git a/kernels/sycl/rthwif_embree_builder.cpp b/kernels/sycl/rthwif_embree_builder.cpp index 4711172d87..4810ead8db 100644 --- a/kernels/sycl/rthwif_embree_builder.cpp +++ b/kernels/sycl/rthwif_embree_builder.cpp @@ -109,9 +109,7 @@ namespace embree if (result != ZE_RESULT_SUCCESS) return -1; bool ze_extension_ray_tracing = false; -#if defined(EMBREE_SYCL_L0_RTAS_BUILDER) bool ze_rtas_builder = false; -#endif for (uint32_t i=0; i(sycl_device); diff --git a/scripts/cmake-presets/continuous.json b/scripts/cmake-presets/continuous.json index 5d0e3d916e..59a8383135 100644 --- a/scripts/cmake-presets/continuous.json +++ b/scripts/cmake-presets/continuous.json @@ -18,7 +18,6 @@ "cacheVariables": { "CMAKE_BUILD_TYPE": "RelWithDebInfo", "EMBREE_SYCL_SUPPORT": "ON", - "EMBREE_SYCL_L0_RTAS_BUILDER" : "ON", "EMBREE_SYCL_AOT_DEVICES": "none", "EMBREE_MAX_ISA": "SSE2" } @@ -33,7 +32,6 @@ "cacheVariables": { "CMAKE_BUILD_TYPE": "RelWithDebInfo", "EMBREE_SYCL_SUPPORT": "ON", - "EMBREE_SYCL_L0_RTAS_BUILDER" : "OFF", "EMBREE_SYCL_AOT_DEVICES": "none", "EMBREE_MAX_ISA": "SSE2" } @@ -51,7 +49,6 @@ "cacheVariables": { "CMAKE_BUILD_TYPE": "RelWithAssert", "EMBREE_SYCL_SUPPORT": "ON", - "EMBREE_SYCL_L0_RTAS_BUILDER" : "ON", "EMBREE_SYCL_AOT_DEVICES": "none", "EMBREE_MAX_ISA": "AVX512" } @@ -66,7 +63,6 @@ "cacheVariables": { "CMAKE_BUILD_TYPE": "RelWithAssert", "EMBREE_SYCL_SUPPORT": "ON", - "EMBREE_SYCL_L0_RTAS_BUILDER" : "OFF", "EMBREE_SYCL_AOT_DEVICES": "none", "EMBREE_MAX_ISA": "SSE2" } @@ -77,7 +73,6 @@ "cacheVariables": { "CMAKE_BUILD_TYPE": "RelWithAssert", "EMBREE_SYCL_SUPPORT": "ON", - "EMBREE_SYCL_L0_RTAS_BUILDER" : "OFF", "EMBREE_SYCL_AOT_DEVICES": "none", "EMBREE_MAX_ISA": "SSE2" } @@ -88,7 +83,6 @@ "cacheVariables": { "CMAKE_BUILD_TYPE": "Release", "EMBREE_SYCL_SUPPORT": "ON", - "EMBREE_SYCL_L0_RTAS_BUILDER" : "ON", "EMBREE_SYCL_AOT_DEVICES": "none", "EMBREE_MAX_ISA": "SSE2" } @@ -99,7 +93,6 @@ "cacheVariables": { "CMAKE_BUILD_TYPE": "Release", "EMBREE_SYCL_SUPPORT": "ON", - "EMBREE_SYCL_L0_RTAS_BUILDER" : "ON", "EMBREE_SYCL_AOT_DEVICES": "none", "EMBREE_MAX_ISA": "SSE2" } diff --git a/scripts/cmake-presets/integrate.json b/scripts/cmake-presets/integrate.json index 9a1fc84560..09904eb13a 100644 --- a/scripts/cmake-presets/integrate.json +++ b/scripts/cmake-presets/integrate.json @@ -115,7 +115,6 @@ "cacheVariables": { "CMAKE_BUILD_TYPE": "Release", "EMBREE_SYCL_SUPPORT": "ON", - "EMBREE_SYCL_L0_RTAS_BUILDER" : "OFF", "EMBREE_SYCL_AOT_DEVICES": "none", "EMBREE_MAX_ISA": "AVX512" } @@ -127,7 +126,6 @@ "cacheVariables": { "CMAKE_BUILD_TYPE": "Release", "EMBREE_SYCL_SUPPORT": "ON", - "EMBREE_SYCL_L0_RTAS_BUILDER" : "OFF", "EMBREE_SYCL_AOT_DEVICES": "none", "EMBREE_MAX_ISA": "SSE2" } diff --git a/scripts/cmake-presets/nightly.json b/scripts/cmake-presets/nightly.json index c493884795..634ab03cfb 100644 --- a/scripts/cmake-presets/nightly.json +++ b/scripts/cmake-presets/nightly.json @@ -18,7 +18,6 @@ "cacheVariables": { "CMAKE_BUILD_TYPE": "RelWithDebInfo", "EMBREE_SYCL_SUPPORT": "ON", - "EMBREE_SYCL_L0_RTAS_BUILDER" : "OFF", "EMBREE_SYCL_AOT_DEVICES": "none", "EMBREE_MAX_ISA": "SSE2", "EMBREE_MAX_INSTANCE_LEVEL_COUNT": "2" @@ -30,7 +29,6 @@ "cacheVariables": { "CMAKE_BUILD_TYPE": "RelWithDebInfo", "EMBREE_SYCL_SUPPORT": "ON", - "EMBREE_SYCL_L0_RTAS_BUILDER" : "ON", "EMBREE_SYCL_AOT_DEVICES": "none", "EMBREE_MAX_ISA": "SSE2" } @@ -41,7 +39,6 @@ "cacheVariables": { "CMAKE_BUILD_TYPE": "RelWithDebInfo", "EMBREE_SYCL_SUPPORT": "ON", - "EMBREE_SYCL_L0_RTAS_BUILDER" : "OFF", "EMBREE_SYCL_AOT_DEVICES": "none", "EMBREE_MAX_ISA": "SSE2" } @@ -52,7 +49,6 @@ "cacheVariables": { "CMAKE_BUILD_TYPE": "RelWithDebInfo", "EMBREE_SYCL_SUPPORT": "ON", - "EMBREE_SYCL_L0_RTAS_BUILDER" : "OFF", "EMBREE_SYCL_AOT_DEVICES": "none", "EMBREE_MAX_ISA": "SSE2", "EMBREE_MAX_INSTANCE_LEVEL_COUNT": "2" @@ -64,7 +60,6 @@ "cacheVariables": { "CMAKE_BUILD_TYPE": "Release", "EMBREE_SYCL_SUPPORT": "ON", - "EMBREE_SYCL_L0_RTAS_BUILDER" : "OFF", "EMBREE_SYCL_AOT_DEVICES": "none", "EMBREE_MAX_ISA": "SSE2" } @@ -75,7 +70,6 @@ "cacheVariables": { "CMAKE_BUILD_TYPE": "Release", "EMBREE_SYCL_SUPPORT": "ON", - "EMBREE_SYCL_L0_RTAS_BUILDER" : "ON", "EMBREE_SYCL_AOT_DEVICES": "none", "EMBREE_MAX_ISA": "AVX512" } @@ -86,7 +80,6 @@ "cacheVariables": { "CMAKE_BUILD_TYPE": "Release", "EMBREE_SYCL_SUPPORT": "ON", - "EMBREE_SYCL_L0_RTAS_BUILDER" : "ON", "EMBREE_SYCL_AOT_DEVICES": "none", "EMBREE_MAX_ISA": "AVX512" } diff --git a/scripts/cmake-presets/performance.json b/scripts/cmake-presets/performance.json index 410034c3d6..7fe6fbe398 100644 --- a/scripts/cmake-presets/performance.json +++ b/scripts/cmake-presets/performance.json @@ -29,7 +29,6 @@ "binaryDir": "${sourceDir}/build", "cacheVariables": { "EMBREE_SYCL_SUPPORT": "ON", - "EMBREE_SYCL_L0_RTAS_BUILDER" : "OFF", "EMBREE_SYCL_AOT_DEVICES": "none" } } diff --git a/scripts/cmake-presets/release.json b/scripts/cmake-presets/release.json index b878cda015..8322ea19c4 100644 --- a/scripts/cmake-presets/release.json +++ b/scripts/cmake-presets/release.json @@ -58,7 +58,6 @@ "cacheVariables": { "CMAKE_BUILD_TYPE": "Release", "EMBREE_SYCL_SUPPORT": "ON", - "EMBREE_SYCL_L0_RTAS_BUILDER" : "OFF", "EMBREE_SYCL_AOT_DEVICES": "none", "EMBREE_MAX_ISA": "AVX512" } @@ -70,7 +69,6 @@ "cacheVariables": { "CMAKE_BUILD_TYPE": "Release", "EMBREE_SYCL_SUPPORT": "ON", - "EMBREE_SYCL_L0_RTAS_BUILDER" : "OFF", "EMBREE_SYCL_AOT_DEVICES": "none", "EMBREE_MAX_ISA": "AVX512" } diff --git a/tutorials/common/sycl/util.h b/tutorials/common/sycl/util.h index d8c5e9006c..8f2d829524 100644 --- a/tutorials/common/sycl/util.h +++ b/tutorials/common/sycl/util.h @@ -30,7 +30,7 @@ namespace embree { has_raytracing = true; if (has_raytracing && strncmp("ZE_experimental_rtas_builder",extensions[i].name,sizeof(extensions[i].name)) == 0) { - ze_result_t result_rtas_builder = ZeWrapper::initRTASBuilder(hDriver,ZeWrapper::RTAS_BUILD_MODE::LEVEL_ZERO); + ze_result_t result_rtas_builder = ZeWrapper::initRTASBuilder(hDriver); if (result_rtas_builder == ZE_RESULT_ERROR_DEPENDENCY_UNAVAILABLE) { return; } @@ -72,11 +72,9 @@ namespace embree { throw std::runtime_error("No raytracing capable SYCL platform found. Please install a recent driver. On Linux, make sure that the intel-level-zero-gpu package is installed."); } -#if defined(EMBREE_SYCL_L0_RTAS_BUILDER) if (!has_accel_builder_support) { throw std::runtime_error("No driver support for acceleration structure building found. Please install a recent driver. On Linux, make sure that the package intel-level-zero-gpu-raytracing is installed."); } -#endif } inline void printDeviceInfo(sycl::device const& device)