oneapi-src / level-zero

oneAPI Level Zero Specification Headers and Loader
https://spec.oneapi.com/versions/latest/elements/l0/source/index.html
MIT License
211 stars 90 forks source link

Compilation fails for GCC 14.0.1 and Fedora 40 #148

Closed jjfumero closed 4 days ago

jjfumero commented 4 months ago

In a fresh installed machine with Fedora 40, Level Zero fails to compile:

$ gcc --version
gcc (GCC) 14.0.1 20240411 (Red Hat 14.0.1-0)
Copyright (C) 2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ uname -a
Linux fedora 6.8.7-300.fc40.x86_64

Error:

...
[  1%] Building CXX object source/utils/CMakeFiles/utils.dir/logging.cpp.o
In file included from /home/juan/repos/level-zero/build/_deps/spdlog-src/include/spdlog/fmt/fmt.h:28,
                 from /home/juan/repos/level-zero/build/_deps/spdlog-src/include/spdlog/common.h:50,
                 from /home/juan/repos/level-zero/build/_deps/spdlog-src/include/spdlog/details/file_helper.h:6,
                 from /home/juan/repos/level-zero/build/_deps/spdlog-src/include/spdlog/sinks/basic_file_sink.h:6,
                 from /home/juan/repos/level-zero/source/utils/logging.h:19,
                 from /home/juan/repos/level-zero/source/utils/logging.cpp:9:
/home/juan/repos/level-zero/build/_deps/spdlog-src/include/spdlog/fmt/bundled/core.h: In instantiation of ‘constexpr fmt::v9::detail::value<Context> fmt::v9::detail::make_value(T&&) [with Context = fmt::v9::basic_format_context<fmt::v9::appender, char>; T = fmt::v9::basic_string_view<char>&]’:
/home/juan/repos/level-zero/build/_deps/spdlog-src/include/spdlog/fmt/bundled/core.h:1777:29:   required from ‘constexpr fmt::v9::detail::value<Context> fmt::v9::detail::make_arg(T&&) [with bool IS_PACKED = true; Context = fmt::v9::basic_format_context<fmt::v9::appender, char>; type <anonymous> = fmt::v9::detail::type::string_type; T = fmt::v9::basic_string_view<char>&; typename std::enable_if<IS_PACKED, int>::type <anonymous> = 0]’
 1777 |   return make_value<Context>(val);
      |          ~~~~~~~~~~~~~~~~~~~^~~~~
/home/juan/repos/level-zero/build/_deps/spdlog-src/include/spdlog/fmt/bundled/core.h:1901:77:   required from ‘constexpr fmt::v9::format_arg_store<Context, Args>::format_arg_store(T&& ...) [with T = {fmt::v9::basic_string_view<char>&, const char (&)[3]}; Context = fmt::v9::basic_format_context<fmt::v9::appender, char>; Args = {fmt::v9::basic_string_view<char>, char [3]}]’
 1899 |         data_{detail::make_arg<
      |               ~~~~~~~~~~~~~~~~~                                              
 1900 |             is_packed, Context,
      |             ~~~~~~~~~~~~~~~~~~~                                              
 1901 |             detail::mapped_type_constant<remove_cvref_t<T>, Context>::value>(
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
 1902 |             FMT_FORWARD(args))...} {
      |             ~~~~~~~~~~~~~~~~~~                                               
/home/juan/repos/level-zero/build/_deps/spdlog-src/include/spdlog/fmt/bundled/core.h:1918:31:   required from ‘OutputIt fmt::v9::format_to(OutputIt, format_string<T ...>, T&& ...) [with OutputIt = appender; T = {basic_string_view<char>&, const char (&)[3]}; typename std::enable_if<detail::is_output_iterator<OutputIt, char>::value, int>::type <anonymous> = 0; format_string<T ...> = basic_format_string<char, basic_string_view<char>&, const char (&)[3]>]’
 1918 |   return {FMT_FORWARD(args)...};
      |                               ^
/home/juan/repos/level-zero/build/_deps/spdlog-src/include/spdlog/fmt/bundled/format-inl.h:65:14:   required from here
   65 |     format_to(it, FMT_STRING("{}{}"), message, SEP);
      |     ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/juan/repos/level-zero/build/_deps/spdlog-src/include/spdlog/fmt/bundled/core.h:3235:52:   in ‘constexpr’ expansion of ‘fmt::v9::make_format_args<>(args#0, args#1)’
/home/juan/repos/level-zero/build/_deps/spdlog-src/include/spdlog/fmt/bundled/core.h:1735:15: error: possibly dangling reference to a temporary [-Werror=dangling-reference]
 1735 |   const auto& arg = arg_mapper<Context>().map(FMT_FORWARD(val));
      |               ^~~
/home/juan/repos/level-zero/build/_deps/spdlog-src/include/spdlog/fmt/bundled/core.h:1735:46: note: the temporary was destroyed at the end of the full expression ‘fmt::v9::detail::arg_mapper<fmt::v9::basic_format_context<fmt::v9::appender, char> >().fmt::v9::detail::arg_mapper<fmt::v9::basic_format_context<fmt::v9::appender, char> >::map<fmt::v9::basic_string_view<char> >((*(const fmt::v9::basic_string_view<char>*)(& val)))’
 1735 |   const auto& arg = arg_mapper<Context>().map(FMT_FORWARD(val));

Possibly, this issue is related to #146

More context:

When I compile using an older GCC version (e.g., 12.3) I can compile with no issues.

However, I can't run the application zello_world:

./zello_world 
Driver not initialized: ZE_RESULT_ERROR_UNINITIALIZED
Did NOT find matching ZE_DEVICE_TYPE_GPU device!

I am using the intel-compute-runtime package for Fedora: https://src.fedoraproject.org/rpms/intel-compute-runtime

kloczek commented 3 months ago

There are two such errors:

[tkloczko@pers-jacek x86_64-redhat-linux-gnu]$ make -k
/usr/bin/cmake -S/home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6 -B/home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/x86_64-redhat-linux-gnu --check-build-system CMakeFiles/Makefile.cmake 0
/usr/bin/cmake -E cmake_progress_start /home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/x86_64-redhat-linux-gnu/CMakeFiles /home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/x86_64-redhat-linux-gnu//CMakeFiles/progress.marks
make  -f CMakeFiles/Makefile2 all
make[1]: Entering directory '/home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/x86_64-redhat-linux-gnu'
make  -f source/utils/CMakeFiles/utils.dir/build.make source/utils/CMakeFiles/utils.dir/depend
make[2]: Entering directory '/home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/x86_64-redhat-linux-gnu'
cd /home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/x86_64-redhat-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6 /home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/source/utils /home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/x86_64-redhat-linux-gnu /home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/x86_64-redhat-linux-gnu/source/utils /home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/x86_64-redhat-linux-gnu/source/utils/CMakeFiles/utils.dir/DependInfo.cmake "--color="
make[2]: Leaving directory '/home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/x86_64-redhat-linux-gnu'
make  -f source/utils/CMakeFiles/utils.dir/build.make source/utils/CMakeFiles/utils.dir/build
make[2]: Entering directory '/home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/x86_64-redhat-linux-gnu'
[  2%] Building CXX object source/utils/CMakeFiles/utils.dir/logging.cpp.o
cd /home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/x86_64-redhat-linux-gnu/source/utils && /usr/bin/g++ -DL0_LOADER_VERSION=\"1\" -DL0_VALIDATION_LAYER_SUPPORTED_VERSION=\"1\" -DLOADER_VERSION_MAJOR=1 -DLOADER_VERSION_MINOR=17 -DLOADER_VERSION_PATCH=0 -DLOADER_VERSION_SHA=\"\" -I/home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/third_party/spdlog_headers -I/home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/include -I/home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/source/wrapper/include -I/home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6 -I/home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/source/inc -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -O2 -g -grecord-gcc-switches -pipe -mtls-dialect=gnu2 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fdata-sections -ffunction-sections -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -flto=auto -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -Wall -Werror=format-security -fno-rtti -std=c++14 -fpermissive -fPIC -Wall -Werror -Wnon-virtual-dtor -O2 -g -DNDEBUG -std=c++14 -MD -MT source/utils/CMakeFiles/utils.dir/logging.cpp.o -MF CMakeFiles/utils.dir/logging.cpp.o.d -o CMakeFiles/utils.dir/logging.cpp.o -c /home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/source/utils/logging.cpp
In file included from /home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/third_party/spdlog_headers/spdlog/fmt/fmt.h:28,
                 from /home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/third_party/spdlog_headers/spdlog/common.h:50,
                 from /home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/third_party/spdlog_headers/spdlog/details/file_helper.h:6,
                 from /home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/third_party/spdlog_headers/spdlog/sinks/basic_file_sink.h:6,
                 from /home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/source/utils/logging.h:19,
                 from /home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/source/utils/logging.cpp:9:
/home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/third_party/spdlog_headers/spdlog/fmt/bundled/core.h: In instantiation of ‘constexpr fmt::v9::detail::value<Context> fmt::v9::detail::make_value(T&&) [with Context = fmt::v9::basic_format_context<fmt::v9::appender, char>; T = fmt::v9::basic_string_view<char>&]’:
/home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/third_party/spdlog_headers/spdlog/fmt/bundled/core.h:1777:29:   required from ‘constexpr fmt::v9::detail::value<Context> fmt::v9::detail::make_arg(T&&) [with bool IS_PACKED = true; Context = fmt::v9::basic_format_context<fmt::v9::appender, char>; type <anonymous> = fmt::v9::detail::type::string_type; T = fmt::v9::basic_string_view<char>&; typename std::enable_if<IS_PACKED, int>::type <anonymous> = 0]’
 1777 |   return make_value<Context>(val);
      |          ~~~~~~~~~~~~~~~~~~~^~~~~
/home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/third_party/spdlog_headers/spdlog/fmt/bundled/core.h:1901:77:   required from ‘constexpr fmt::v9::format_arg_store<Context, Args>::format_arg_store(T&& ...) [with T = {fmt::v9::basic_string_view<char>&, const char (&)[3]}; Context = fmt::v9::basic_format_context<fmt::v9::appender, char>; Args = {fmt::v9::basic_string_view<char>, char [3]}]’
 1899 |         data_{detail::make_arg<
      |               ~~~~~~~~~~~~~~~~~
 1900 |             is_packed, Context,
      |             ~~~~~~~~~~~~~~~~~~~
 1901 |             detail::mapped_type_constant<remove_cvref_t<T>, Context>::value>(
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
 1902 |             FMT_FORWARD(args))...} {
      |             ~~~~~~~~~~~~~~~~~~
/home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/third_party/spdlog_headers/spdlog/fmt/bundled/core.h:1918:31:   required from ‘OutputIt fmt::v9::format_to(OutputIt, format_string<T ...>, T&& ...) [with OutputIt = appender; T = {basic_string_view<char>&, const char (&)[3]}; typename std::enable_if<detail::is_output_iterator<OutputIt, char>::value, int>::type <anonymous> = 0; format_string<T ...> = basic_format_string<char, basic_string_view<char>&, const char (&)[3]>]’
 1918 |   return {FMT_FORWARD(args)...};
      |                               ^
/home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/third_party/spdlog_headers/spdlog/fmt/bundled/format-inl.h:65:14:   required from here
   65 |     format_to(it, FMT_STRING("{}{}"), message, SEP);
      |     ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/third_party/spdlog_headers/spdlog/fmt/bundled/core.h:3235:52:   in ‘constexpr’ expansion of ‘fmt::v9::make_format_args<>(args#0, args#1)’
/home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/third_party/spdlog_headers/spdlog/fmt/bundled/core.h:1735:15: error: possibly dangling reference to a temporary [-Werror=dangling-reference]
 1735 |   const auto& arg = arg_mapper<Context>().map(FMT_FORWARD(val));
      |               ^~~
/home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/third_party/spdlog_headers/spdlog/fmt/bundled/core.h:1735:46: note: the temporary was destroyed at the end of the full expression ‘fmt::v9::detail::arg_mapper<fmt::v9::basic_format_context<fmt::v9::appender, char> >().fmt::v9::detail::arg_mapper<fmt::v9::basic_format_context<fmt::v9::appender, char> >::map<fmt::v9::basic_string_view<char> >((*(const fmt::v9::basic_string_view<char>*)(& val)))’
 1735 |   const auto& arg = arg_mapper<Context>().map(FMT_FORWARD(val));
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
/home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/third_party/spdlog_headers/spdlog/fmt/bundled/core.h: In instantiation of ‘constexpr fmt::v9::detail::value<Context> fmt::v9::detail::make_value(T&&) [with Context = fmt::v9::basic_format_context<fmt::v9::appender, char>; T = std::__cxx11::basic_string<char>&]’:
/home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/third_party/spdlog_headers/spdlog/fmt/bundled/core.h:1777:29:   required from ‘constexpr fmt::v9::detail::value<Context> fmt::v9::detail::make_arg(T&&) [with bool IS_PACKED = true; Context = fmt::v9::basic_format_context<fmt::v9::appender, char>; type <anonymous> = fmt::v9::detail::type::string_type; T = std::__cxx11::basic_string<char>&; typename std::enable_if<IS_PACKED, int>::type <anonymous> = 0]’
 1777 |   return make_value<Context>(val);
      |          ~~~~~~~~~~~~~~~~~~~^~~~~
/home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/third_party/spdlog_headers/spdlog/fmt/bundled/core.h:1901:77:   required from ‘constexpr fmt::v9::format_arg_store<Context, Args>::format_arg_store(T&& ...) [with T = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&}; Context = fmt::v9::basic_format_context<fmt::v9::appender, char>; Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}]’
 1899 |         data_{detail::make_arg<
      |               ~~~~~~~~~~~~~~~~~
 1900 |             is_packed, Context,
      |             ~~~~~~~~~~~~~~~~~~~
 1901 |             detail::mapped_type_constant<remove_cvref_t<T>, Context>::value>(
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
 1902 |             FMT_FORWARD(args))...} {
      |             ~~~~~~~~~~~~~~~~~~
/home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/third_party/spdlog_headers/spdlog/fmt/bundled/core.h:1918:31:   required from ‘void spdlog::logger::log_(spdlog::source_loc, spdlog::level::level_enum, spdlog::string_view_t, Args&& ...) [with Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&}; spdlog::string_view_t = fmt::v9::basic_string_view<char>]’
 1918 |   return {FMT_FORWARD(args)...};
      |                               ^
/home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/third_party/spdlog_headers/spdlog/logger.h:80:13:   required from ‘void spdlog::logger::log(spdlog::source_loc, spdlog::level::level_enum, fmt::v9::format_string<T ...>, Args&& ...) [with Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&}; fmt::v9::format_string<T ...> = fmt::v9::basic_format_string<char, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&>]’
   80 |         log_(loc, lvl, details::to_string_view(fmt), std::forward<Args>(args)...);
      |         ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/third_party/spdlog_headers/spdlog/logger.h:85:12:   required from ‘void spdlog::logger::log(spdlog::level::level_enum, fmt::v9::format_string<T ...>, Args&& ...) [with Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&}; fmt::v9::format_string<T ...> = fmt::v9::basic_format_string<char, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&>]’
   85 |         log(source_loc{}, lvl, fmt, std::forward<Args>(args)...);
      |         ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/third_party/spdlog_headers/spdlog/logger.h:145:12:   required from ‘void spdlog::logger::warn(fmt::v9::format_string<T ...>, Args&& ...) [with Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&}; fmt::v9::format_string<T ...> = fmt::v9::basic_format_string<char, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&>]’
  145 |         log(level::warn, fmt, std::forward<Args>(args)...);
      |         ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/source/utils/logging.h:54:22:   required from here
   54 |         _logger->warn("Invalid logging level set: ", log_level);
      |         ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/third_party/spdlog_headers/spdlog/logger.h:328:75:   in ‘constexpr’ expansion of ‘fmt::v9::make_format_args<>(args#0)’
/home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/third_party/spdlog_headers/spdlog/fmt/bundled/core.h:1735:15: error: possibly dangling reference to a temporary [-Werror=dangling-reference]
 1735 |   const auto& arg = arg_mapper<Context>().map(FMT_FORWARD(val));
      |               ^~~
/home/tkloczko/rpmbuild/BUILD/level-zero-1.17.6/third_party/spdlog_headers/spdlog/fmt/bundled/core.h:1735:46: note: the temporary was destroyed at the end of the full expression ‘fmt::v9::detail::arg_mapper<fmt::v9::basic_format_context<fmt::v9::appender, char> >().fmt::v9::detail::arg_mapper<fmt::v9::basic_format_context<fmt::v9::appender, char> >::map<std::__cxx11::basic_string<char> >((*(const std::__cxx11::basic_string<char>*)(& val)))’
 1735 |   const auto& arg = arg_mapper<Context>().map(FMT_FORWARD(val));
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
cc1plus: all warnings being treated as errors
tjaalton commented 1 month ago

same on Debian unstable and Ubuntu Oracular (to be 24.10)

jjfumero commented 4 days ago

Just an update. I am not sure at which commit point started working for Fedora 40, but I just checked with the latest commit (e3152a8f881540217d589789ae71c965355a3fee) and it works.

Compute Runtime: 2024.26.30049.6 Fedora 40, Kernel 6.10.6.200

kloczek commented 4 days ago

Just tested 1.17.42 and it build correctly now. Thx.

kloczek commented 4 days ago

Cannot close this ticket ..

Jemale commented 4 days ago

Cannot close this ticket ..

I can close it