Skip to content

assume_buffer_outlives_graph compilation failed #3433

Open
@zhanmyz

Description

@zhanmyz

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

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.

Metadata

Metadata

Assignees

Labels

sightingSuspicious library behavior. Should be promoted to a bug when confirmed

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions