Cycles: fix and enable JIT oneAPI CentOS7 builds for drivers 23570+

The current specific CentOS7 workaround we have for AoT, which is to
disable __FAST_MATH__ by using -fhonor-nans, now also fixes the
compilation issue for JIT as well since at least driver 23570.
This commit is contained in:
Xavier Hallade 2022-07-12 15:45:46 +02:00
parent 4a445c8dc0
commit 47dd42485e
3 changed files with 5 additions and 9 deletions

View File

@ -1560,7 +1560,7 @@ class CyclesPreferences(bpy.types.AddonPreferences):
if sys.platform.startswith("win"):
col.label(text="and Windows driver version 101.1660 or newer", icon='BLANK1')
elif sys.platform.startswith("linux"):
col.label(text="and Linux driver version xx.xx.28000 or newer", icon='BLANK1')
col.label(text="and Linux driver version xx.xx.23570 or newer", icon='BLANK1')
elif device_type == 'METAL':
col.label(text="Requires Apple Silicon with macOS 12.2 or newer", icon='BLANK1')
col.label(text="or AMD with macOS 12.3 or newer", icon='BLANK1')

View File

@ -844,10 +844,9 @@ if(WITH_CYCLES_DEVICE_ONEAPI)
else()
list(APPEND sycl_compiler_flags -fPIC)
# avoid getting __FAST_MATH__ to be defined for the graphics compiler on CentOS 7 until the compile-time issue it triggers gets fixed.
if(WITH_CYCLES_ONEAPI_BINARIES)
list(APPEND sycl_compiler_flags -fhonor-nans)
endif()
# We avoid getting __FAST_MATH__ to be defined when building on CentOS 7 until the compilation crash
# it triggers at either AoT or JIT stages gets fixed.
list(APPEND sycl_compiler_flags -fhonor-nans)
# add $ORIGIN to cycles_kernel_oneapi.so rpath so libsycl.so and
# libpi_level_zero.so can be placed next to it and get found.

View File

@ -670,10 +670,7 @@ bool oneapi_enqueue_kernel(KernelContext *kernel_context,
}
static const int lowest_supported_driver_version_win = 1011660;
/* TODO: once Linux JIT compilation crash from CentOS generated spv is fixed, adjust version below.
* Until then, set CYCLES_ONEAPI_ALL_DEVICES environment variable to avoid getting it filtered out.
*/
static const int lowest_supported_driver_version_neo = 28000;
static const int lowest_supported_driver_version_neo = 23570;
static int parse_driver_build_version(const sycl::device &device)
{