Open
Description
Summary
When compiling the benchdnn test of oneDNN, the following error occurred:
......
[ 95%] Building CXX object tests/benchdnn/CMakeFiles/benchdnn.dir/eltwise/ref_eltwise.cpp.o
[ 95%] Building CXX object tests/benchdnn/CMakeFiles/benchdnn.dir/gnorm/bench_gnorm.cpp.o
[ 95%] Building CXX object tests/benchdnn/CMakeFiles/benchdnn.dir/gnorm/gnorm.cpp.o
[ 95%] Building CXX object tests/benchdnn/CMakeFiles/benchdnn.dir/gnorm/gnorm_aux.cpp.o
[ 95%] Building CXX object tests/benchdnn/CMakeFiles/benchdnn.dir/gnorm/ref_gnorm.cpp.o
[ 95%] Building CXX object tests/benchdnn/CMakeFiles/benchdnn.dir/graph/allocator.cpp.o
/home/user/oneDNN/oneDNN/tests/benchdnn/dnnl_common.cpp:390:33: error: no member named 'assume_buffer_outlives_graph' in namespace 'sycl::ext::oneapi::experimental::property::graph'
389 | {sycl::ext::oneapi::experimental::property::graph::
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
390 | assume_buffer_outlives_graph {}}};
| ^
[ 95%] Building CXX object tests/benchdnn/CMakeFiles/benchdnn.dir/graph/bench_graph.cpp.o
[ 95%] Building CXX object tests/benchdnn/CMakeFiles/benchdnn.dir/graph/custom_driver.cpp.o
[ 95%] Building CXX object tests/benchdnn/CMakeFiles/benchdnn.dir/graph/deserialize.cpp.o
1 error generated.
gmake[2]: *** [tests/benchdnn/CMakeFiles/benchdnn.dir/build.make:538: tests/benchdnn/CMakeFiles/benchdnn.dir/dnnl_common.cpp.o] Error 1
gmake[2]: *** Waiting for unfinished jobs....
gmake[1]: *** [CMakeFiles/Makefile2:7255: tests/benchdnn/CMakeFiles/benchdnn.dir/all] Error 2
gmake: *** [Makefile:146: all] Error 2
Version
oneDNN: v3.9.0
Environment
oneDNN includes hardware-specific optimizations and may behave
differently on depending on the compiler and build environment. Include
the following information to help reproduce the issue:
- CPU: 12th Gen Intel(R) Core(TM) i7-12700K
- GPU: Intel(R) Arc(TM) A770 Graphics
- OS: Ubuntu 22.04.1 SMP PREEMPT_DYNAMIC, Linux kernel: 6.8.0-52-generic
- Compiler: gcc 11.4.0
- CMake: 3.26.0
- CMake output log
cmake -S $(pwd) \
-B build \
-DDNNL_CPU_RUNTIME=SYCL \
-DDNNL_GPU_RUNTIME=SYCL \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=$(pwd)/build/lib
-- The C compiler identification is IntelLLVM 2024.0.2
-- The CXX compiler identification is IntelLLVM 2024.0.2
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /opt/intel/oneapi/compiler/2024.0/bin/icx - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /opt/intel/oneapi/compiler/2024.0/bin/icpx - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- DNNL_TARGET_ARCH: X64
-- DNNL_LIBRARY_NAME: dnnl
-- Performing Test SYCL_FLAG_SUPPORTED
-- Performing Test SYCL_FLAG_SUPPORTED - Success
-- OpenCL runtime is found in the environment: /opt/intel/oneapi/compiler/2024.0/lib/libOpenCL.so
-- DPC++ support is enabled (OpenCL and Level Zero)
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Found OpenMP_C: -fiopenmp
-- Found OpenMP_CXX: -fiopenmp
-- Found OpenMP: TRUE
-- TBB: /opt/intel/oneapi/tbb/2021.11
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
-- Could NOT find Doxyrest (missing: DOXYREST_EXECUTABLE)
-- Found Python: /usr/bin/python3.10 (found suitable version "3.10.12", minimum required is "3.7") found components: Interpreter
-- Could NOT find Sphinx (missing: SPHINX_EXECUTABLE)
-- Found Git: /usr/bin/git (found version "2.34.1")
-- Enabled testing coverage: CI
-- Enabled workload: TRAINING
-- Enabled primitives: ALL
-- Enabled primitive CPU ISA: ALL
-- Enabled primitive GPU ISA: ALL
-- Enabled GeMM kernels ISA: ALL
-- Primitive cache is enabled
-- The ASM compiler identification is IntelLLVM
-- Found assembler: /opt/intel/oneapi/compiler/2024.0/bin/icx
-- Performing Test COMPILER_ALLOWS_ALIAS_ATTRIBUTES
-- Performing Test COMPILER_ALLOWS_ALIAS_ATTRIBUTES - Success
-- GPU Compute reference kernels are enabled
-- Graph component is enabled
-- Configuring done (2.3s)
-- Generating done (0.3s)
-- Build files have been written to: /home/user/oneDNN/test/oneDNN/build
- git hash: 9136964
Steps to reproduce
$ git clone https://github.com/uxlfoundation/oneDNN.git
$ cd oneDNN
$ source /opt/intel/oneapi/setvars.sh
$ export CC=icx
$ export CXX=icpx
$ cmake -S $(pwd) \
-B build \
-DDNNL_CPU_RUNTIME=SYCL \
-DDNNL_GPU_RUNTIME=SYCL \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=$(pwd)/build/lib
$ cmake --build build -j$(nproc)
Observed behavior
Compilation fails with errors pointing to the experimental attribute of the SYCL Graph no longer existing, causing the benchdnn tests to fail to build.
/home/user/oneDNN/oneDNN/tests/benchdnn/dnnl_common.cpp:390:33: error: no member named 'assume_buffer_outlives_graph' in namespace 'sycl::ext::oneapi::experimental::property::graph'
389 | {sycl::ext::oneapi::experimental::property::graph::
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
390 | assume_buffer_outlives_graph {}}};
| ^
Expected behavior
oneDNN should be compatible with the latest version of DPC++/SYCL, or provide a configurable option (such as turning off the Graph property) so that benchdnn can be compiled smoothly by default.