Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

compile error on MAX 1100: level-zero-tests/utils/test_harness/src/test_harness_device.cpp:90:32: error: ‘zeDeviceGetRootDevice’ was not declared in this scope; did you mean ‘zeDeviceGetSubDevices’ #33

Open
KevinYuk opened this issue Nov 1, 2023 · 3 comments

Comments

@KevinYuk
Copy link

KevinYuk commented Nov 1, 2023

/home/dev/level-zero-tests/utils/test_harness/src/test_harness_device.cpp: In function ‘_ze_device_handle_t* level_zero_tests::get_root_device(ze_device_handle_t)’:
/home/dev/level-zero-tests/utils/test_harness/src/test_harness_device.cpp:90:32: error: ‘zeDeviceGetRootDevice’ was not declared in this scope; did you mean ‘zeDeviceGetSubDevices’?
90 | EXPECT_EQ(ZE_RESULT_SUCCESS, zeDeviceGetRootDevice(device, &root_device));
| ^~~~~~~~~~~~~~~~~~~~~
gmake[2]: *** [utils/test_harness/CMakeFiles/test_harness.dir/build.make:76: utils/test_harness/CMakeFiles/test_harness.dir/src/test_harness_device.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:2063: utils/test_harness/CMakeFiles/test_harness.dir/all] Error 2
gmake: *** [Makefile:146: all] Error 2

@KevinYuk KevinYuk changed the title compile error: level-zero-tests/utils/test_harness/src/test_harness_device.cpp:90:32: error: ‘zeDeviceGetRootDevice’ was not declared in this scope; did you mean ‘zeDeviceGetSubDevices’ compile error on MAX 1100: level-zero-tests/utils/test_harness/src/test_harness_device.cpp:90:32: error: ‘zeDeviceGetRootDevice’ was not declared in this scope; did you mean ‘zeDeviceGetSubDevices’ Nov 1, 2023
@christgau
Copy link

Same issue here, but because headers from the devel packages apparently do not match the version level-zero-tests expects. Unfortunately, the level-zero-tests repo here does not have tags, releases, or even branches (except for master and upstream) so one cannot check which version the commits are build.

What I see in my case it that oneapi-src/level-zero@5d1d2d5 introduced the call in question and also raised the API version to 1.17. However, headers from OS's devel package are at 1.16 (see enum _ze_api_version_t in ze_api.h).

So either build level_zero based on API version 1.17 by yourself or checkout an older commit of level_zero_tests. In the master branch you can guess when the previous "release" has been made, since commits from upstream appear to be moved into master in batches.

I just tried with 9f09c59 from here and devel package with API being at 1.16 (package version is 1.11.0 for whatever reason) and that worked.

@lisanna-dettwyler
Copy link
Contributor

We're weighing the value of fixing backwards-compatibility issues for spec releases prior to 1.8. Is this particular issue still a concern?

@eero-t
Copy link

eero-t commented Apr 16, 2024

We're weighing the value of fixing backwards-compatibility issues for spec releases prior to 1.8. Is this particular issue still a concern?

@lisanna-dettwyler Besides header guards mentioned in #34, there should be pkg-config check for the minimum required L0 version [1].


[1] L0 spec v1.8 was first supported in Oct 2023 release of the L0 frontend: https://github.com/oneapi-src/level-zero/releases/tag/v1.15.1

As to versions of L0 backend & frontend in Linux distros:

Frontend versions are too old in Fedora 38, Debian stable and Ubuntu versions older than 24.04 LTS. But newer Fedora versions, Debian testing and Ubuntu 24.04 LTS do have new enough versions.

=> pkg-check for frontend version 1.15.1 could be fine.


As to older spec releases....

zesInit() used in this project came in L0 spec v1.5, which was supported only by L0 frontend v1.9.x (Jan 2023): https://github.com/oneapi-src/level-zero/releases/tag/v1.9.4

But Intel L0 backend had full support for it only since 23.26.26690.12 (Jul 2023): intel/compute-runtime#650

Versions in Debian 12 (Stable / bookworm) are both too old, but Trixie (Testing) versions are both new enough.

All Fedora versions have both new enough frontend & backend, so for Fedora & Debian it would be enough to check for >= 1.9 frontend version.

Ubuntu 23.10 is problematic, it has new enough frontend (1.12), but backend is way too old (22.x) [2]. I think that can be ignored though as it's soon out of support and in the new 24.04 LTS, both are new enough.

[2] So in 23.10, L0 backend would return "uninitialized" error when Sysman plugin calls frontend zesInit() function, whereas with zeInit() everything would work fine.

=> Supporting older versions does not seem worth the trouble, unless distros L0 backend versions for v1.8 spec could cause issues?

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants