Skip to content

Commit

Permalink
removed internal rtas builder, made EMBREE_SYCL_L0_RTAS_BUILDER the d…
Browse files Browse the repository at this point in the history
…efault
  • Loading branch information
dopitz committed Jan 20, 2025
1 parent dcd35a0 commit cee738e
Show file tree
Hide file tree
Showing 41 changed files with 23 additions and 8,538 deletions.
43 changes: 0 additions & 43 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,37 +51,6 @@ jobs:
cmake --preset nightly-linux-DG2-JIT-MULTILEVEL -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTENSITY=3
cmake --build build --config Release --target test_package
nightly-linux-DG2-INTERNAL-L0RTAS-build:
secrets: inherit
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker.yml@main
with:
image: embree/ubuntu:22.04
runs-on: '[ "Linux", "docker", "build" ]'
project: embree
dpcpp-version: intel-llvm/nightly-2023-12-18-rk
artifact-out: nightly-linux-DG2-INTERNAL-L0RTAS-build
artifact-path: ./build/*.tar.gz
cmd: |
module load cmake/3.25.3
cmake --preset nightly-linux-DG2-INTERNAL-L0RTAS -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTENSITY=3
cmake --build build --config Release --target build
linux-DG2-JIT-INTERNAL-L0RTAS-test:
secrets: inherit
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker.yml@main
needs: ["nightly-linux-DG2-INTERNAL-L0RTAS-build"]
with:
image: embree/ubuntu:22.04
options: --device=/dev/dri:/dev/dri
runs-on: '[ "Linux", "docker", "dg2" ]'
project: embree
env-from-files: ./.github/workflows/gfx-ubuntu22-public.env
artifact-in: nightly-linux-DG2-INTERNAL-L0RTAS-build
cmd: |
module load cmake/3.25.3
cmake --preset nightly-linux-DG2-INTERNAL-L0RTAS -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTENSITY=3
cmake --build build --config Release --target test_package
linux-DG2-JIT-PUBLIC-sycl-RC-build:
secrets: inherit
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker.yml@main
Expand Down Expand Up @@ -381,18 +350,6 @@ jobs:
cmake --preset nightly-windows-DG2-JIT -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTENSITY=4
cmake --build build --config Release --target test_package
windows-DG2-JIT-INTERNAL-VALIDATION_API:
secrets: inherit
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/windows.yml@main
with:
runs-on: '[ "Windows", "NAS", "dg2" ]'
project: embree
env-from-files: ./.github/workflows/dpcpp-sycl-nightly.env ./.github/workflows/gfx-windows-public.env
cmd: |
python scripts/test.py configure platform:x64 compiler:dpcpp isa:SSE2 build:Release EMBREE_SYCL_SUPPORT:ON sycl:none rt_validation_api:ON implicit_dispatch_globals:OFF L0RTAS:OFF intensity:3 tasking:TBB2020.3
python scripts/test.py build
python scripts/test.py test
windows-DG2-JIT-sycl-RC-build:
secrets: inherit
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/windows.yml@main
Expand Down
5 changes: 0 additions & 5 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
2 changes: 0 additions & 2 deletions CMakePresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -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"
}
Expand Down
66 changes: 0 additions & 66 deletions CMakeUserPresets.json

This file was deleted.

1 change: 0 additions & 1 deletion kernels/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ ENDIF()

IF (EMBREE_SYCL_SUPPORT)
ADD_SUBDIRECTORY(level_zero)
ADD_SUBDIRECTORY(rthwif)
ENDIF()

IF (EMBREE_CONFIG)
Expand Down
11 changes: 2 additions & 9 deletions kernels/common/device.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<extensions.size(); i++)
{
Expand All @@ -672,22 +671,16 @@ namespace embree
if (!ze_rtas_builder)
throw_RTCError(RTC_ERROR_LEVEL_ZERO_RAYTRACING_SUPPORT_MISSING, "ZE_experimental_rtas_builder extension not found. Please install a recent driver. On Linux, make sure that the package intel-level-zero-gpu-raytracing is installed");

result = ZeWrapper::initRTASBuilder(hDriver,ZeWrapper::LEVEL_ZERO);
result = ZeWrapper::initRTASBuilder(hDriver);
if (result == ZE_RESULT_ERROR_DEPENDENCY_UNAVAILABLE) {
throw_RTCError(RTC_ERROR_LEVEL_ZERO_RAYTRACING_SUPPORT_MISSING, "cannot load ZE_experimental_rtas_builder extension. Please install a recent driver. On Linux, make sure that the package intel-level-zero-gpu-raytracing is installed");
}
if (result != ZE_RESULT_SUCCESS)
throw_RTCError(RTC_ERROR_UNKNOWN, "cannot initialize ZE_experimental_rtas_builder extension");
#else
ZeWrapper::initRTASBuilder(hDriver,ZeWrapper::INTERNAL);
#endif

if (State::verbosity(1))
{
if (ZeWrapper::rtas_builder == ZeWrapper::INTERNAL)
std::cout << " Internal RTAS Builder" << std::endl;
else
std::cout << " Level Zero RTAS Builder" << std::endl;
std::cout << " Level Zero RTAS Builder" << std::endl;
}

/* check if extension library can get loaded */
Expand Down
6 changes: 0 additions & 6 deletions kernels/level_zero/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,6 @@ target_include_directories(ze_wrapper INTERFACE $<BUILD_INTERFACE:${CMAKE_CURREN
TARGET_COMPILE_DEFINITIONS(ze_wrapper PRIVATE ZE_LOADER_NAME_LINUX="${EMBREE_ZE_LOADER_RUNTIME_LINK_NAME_LINUX}")
TARGET_COMPILE_DEFINITIONS(ze_wrapper PRIVATE ZE_LOADER_NAME_WINDOWS="${EMBREE_ZE_LOADER_RUNTIME_LINK_NAME_WINDOWS}")

IF (NOT EMBREE_SYCL_L0_RTAS_BUILDER)
TARGET_LINK_LIBRARIES(ze_wrapper PUBLIC embree_rthwif)
ELSE()
TARGET_COMPILE_DEFINITIONS(ze_wrapper PRIVATE ZE_RAYTRACING_DISABLE_INTERNAL_BUILDER)
ENDIF()

SET_PROPERTY(TARGET ze_wrapper PROPERTY FOLDER common)
SET_PROPERTY(TARGET ze_wrapper APPEND PROPERTY COMPILE_FLAGS " ${FLAGS_LOWEST}")

Expand Down
3 changes: 3 additions & 0 deletions kernels/level_zero/ze_api.h
Original file line number Diff line number Diff line change
Expand Up @@ -9257,6 +9257,9 @@ typedef enum _ze_rtas_device_exp_flag_t
typedef enum _ze_rtas_format_exp_t
{
ZE_RTAS_FORMAT_EXP_INVALID = 0, ///< Invalid acceleration structure format
ZE_RTAS_FORMAT_EXP_VERSION_1 = 1,
ZE_RTAS_FORMAT_EXP_VERSION_2 = 2,
ZE_RTAS_FORMAT_EXP_VERSION_MAX = 2,
ZE_RTAS_FORMAT_EXP_FORCE_UINT32 = 0x7fffffff

} ze_rtas_format_exp_t;
Expand Down
3 changes: 3 additions & 0 deletions kernels/level_zero/ze_rtas.h
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,9 @@ typedef enum _ze_rtas_device_exp_flag_t
typedef enum _ze_rtas_format_exp_t
{
ZE_RTAS_FORMAT_EXP_INVALID = 0, ///< Invalid acceleration structure format
ZE_RTAS_FORMAT_EXP_VERSION_1 = 1,
ZE_RTAS_FORMAT_EXP_VERSION_2 = 2,
ZE_RTAS_FORMAT_EXP_VERSION_MAX = 2,
ZE_RTAS_FORMAT_EXP_FORCE_UINT32 = 0x7fffffff

} ze_rtas_format_exp_t;
Expand Down
91 changes: 11 additions & 80 deletions kernels/level_zero/ze_wrapper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,13 @@

#include "ze_wrapper.h"

#include "../rthwif/rtbuild/rtbuild.h"

#include <iostream>
#include <cstdio>
#include <cassert>
#include <mutex>
#include <string.h>

ZeWrapper::RTAS_BUILD_MODE ZeWrapper::rtas_builder = ZeWrapper::AUTO;
bool ZeWrapper::rtas_builder_selected = false;

static std::mutex zeWrapperMutex;
static void* handle = nullptr;
Expand Down Expand Up @@ -92,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<decltype(zeRTASBuilderCreateExp)*>(handle,"zeRTASBuilderCreateExp");
Expand Down Expand Up @@ -121,33 +120,10 @@ ze_result_t selectLevelZeroRTASBuilder(ze_driver_handle_t hDriver)
zeRTASParallelOperationGetPropertiesExpInternal = find_symbol<decltype(zeRTASParallelOperationGetPropertiesExp)*>(handle,"zeRTASParallelOperationGetPropertiesExp");
zeRTASParallelOperationJoinExpInternal = find_symbol<decltype(zeRTASParallelOperationJoinExp)*>(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 = &zeRTASBuilderCreateExpImpl;
zeRTASBuilderDestroyExpInternal = &zeRTASBuilderDestroyExpImpl;
zeDriverRTASFormatCompatibilityCheckExpInternal = &zeDriverRTASFormatCompatibilityCheckExpImpl;
zeRTASBuilderGetBuildPropertiesExpInternal = &zeRTASBuilderGetBuildPropertiesExpImpl;
zeRTASBuilderBuildExpInternal = &zeRTASBuilderBuildExpImpl;

zeRTASParallelOperationCreateExpInternal = &zeRTASParallelOperationCreateExpImpl;
zeRTASParallelOperationDestroyExpInternal = &zeRTASParallelOperationDestroyExpImpl;
zeRTASParallelOperationGetPropertiesExpInternal = &zeRTASParallelOperationGetPropertiesExpImpl;
zeRTASParallelOperationJoinExpInternal = &zeRTASParallelOperationJoinExpImpl;

ZeWrapper::rtas_builder = ZeWrapper::INTERNAL;
#endif
}

ze_result_t ZeWrapper::init()
{
std::lock_guard<std::mutex> lock(zeWrapperMutex);
Expand All @@ -171,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<std::mutex> 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;
Expand Down Expand Up @@ -290,7 +236,7 @@ ze_result_t zeDeviceGetRTASPropertiesExp( const ze_device_handle_t hDevice, ze_r

/* fill properties */
pProperties->flags = 0;
pProperties->rtasFormat = (ze_rtas_format_exp_t) ZE_RTAS_DEVICE_FORMAT_EXP_INVALID;
pProperties->rtasFormat = (ze_rtas_format_exp_t) ZE_RTAS_FORMAT_EXP_INVALID;
pProperties->rtasBufferAlignment = 128;

/* check for supported device ID */
Expand All @@ -307,7 +253,7 @@ ze_result_t zeDeviceGetRTASPropertiesExp( const ze_device_handle_t hDevice, ze_r
/* disabling of device check through env variable */
const char* disable_device_check = std::getenv("EMBREE_DISABLE_DEVICEID_CHECK");
if (disable_device_check && strcmp(disable_device_check,"1") == 0) {
pProperties->rtasFormat = (ze_rtas_format_exp_t) ZE_RTAS_DEVICE_FORMAT_EXP_VERSION_1;
pProperties->rtasFormat = (ze_rtas_format_exp_t) ZE_RTAS_FORMAT_EXP_VERSION_1;
return ZE_RESULT_SUCCESS;
}

Expand All @@ -320,7 +266,7 @@ ze_result_t zeDeviceGetRTASPropertiesExp( const ze_device_handle_t hDevice, ze_r
(0x56C0 <= device_id && device_id <= 0x56C1);

if (dg2) {
pProperties->rtasFormat = (ze_rtas_format_exp_t) ZE_RTAS_DEVICE_FORMAT_EXP_VERSION_1;
pProperties->rtasFormat = (ze_rtas_format_exp_t) ZE_RTAS_FORMAT_EXP_VERSION_1;
return ZE_RESULT_SUCCESS;
}

Expand All @@ -332,7 +278,7 @@ ze_result_t zeDeviceGetRTASPropertiesExp( const ze_device_handle_t hDevice, ze_r
(device_id == 0x0BD4);

if (pvc) {
pProperties->rtasFormat = (ze_rtas_format_exp_t) ZE_RTAS_DEVICE_FORMAT_EXP_VERSION_1;
pProperties->rtasFormat = (ze_rtas_format_exp_t) ZE_RTAS_FORMAT_EXP_VERSION_1;
return ZE_RESULT_SUCCESS;
}

Expand All @@ -345,7 +291,7 @@ ze_result_t zeDeviceGetRTASPropertiesExp( const ze_device_handle_t hDevice, ze_r
(device_id == 0x7D60);

if (mtl) {
pProperties->rtasFormat = (ze_rtas_format_exp_t) ZE_RTAS_DEVICE_FORMAT_EXP_VERSION_1;
pProperties->rtasFormat = (ze_rtas_format_exp_t) ZE_RTAS_FORMAT_EXP_VERSION_1;
return ZE_RESULT_SUCCESS;
}

Expand All @@ -356,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);
}
Expand Down
Loading

0 comments on commit cee738e

Please sign in to comment.