intel / llvm

Intel staging area for llvm.org contribution. Home for Intel LLVM-based projects.
Other
1.22k stars 730 forks source link

clang version 18.0.0 gives runtime error while creating sycl::queue with sycl::image support #11135

Closed ghost closed 12 months ago

ghost commented 1 year ago

sycl::queue created with aspect_selector(sycl::aspect::image) throws runtime error on clang version 18.0.0

To Reproduce

  1. Reproducer code snippet - test.txt
  2. Command to compile and run - clang++ -fsycl -fsycl-targets=nvptx64-nvidia-cuda test.cpp && ./a.out
  3. Run time error thrown-

terminate called after throwing an instance of 'sycl::_V1::runtime_error' what(): No device of requested type available. -1 (PI_ERROR_DEVICE_NOT_FOUND) Aborted (core dumped)

Expected Output -

Starting... Creating queue with sycl image support...

Running on NVIDIA H100 PCIe

Environment (please complete the following information):

Additional context

Code gives expected output with clang 17.0.0

clang version 17.0.0 (https://github.com/intel/llvm a7a6de2e40a2908e96ad26533c0b2d087866c225) Target: x86_64-unknown-linux-gnu Thread model: posix

AlexeySachkov commented 1 year ago

Hi @Shwetha-Selma,

Tagging @steffenlarsen here to comment, but I think that the result is expected: sycl::aspect::image stands for SYCL 2020 images support and there are no devices which would support them. We have added an extension to query support for legacy 1.2.1 images.

See intel/llvm#9217 and intel/llvm#9368 for more details.

ghost commented 1 year ago

Hi @Shwetha-Selma,

Tagging @steffenlarsen here to comment, but I think that the result is expected: sycl::aspect::image stands for SYCL 2020 images support and there are no devices which would support them. We have added an extension to query support for legacy 1.2.1 images.

See #9217 and #9368 for more details.

Hi @AlexeySachkov Thanks for the reply, changing sycl::aspect::image to sycl::aspect::ext_intel_legacy_image resolved my issue. But I have a couple of queries,

  1. Is legacy 1.2.1 images part of SYCL bindless images?
  2. SYCL images do not support single-channel image format hence we had to manually adjust it to 4-channel image format, Is this the same for SYCL bindless images as well? or do bindless images provide support for single-channel image format?
steffenlarsen commented 1 year ago

Tag @ProGTX to help answer the bindless image questions above.

ghost commented 12 months ago

Tag @ProGTX to help answer the bindless image questions above.

@ProGTX @steffenlarsen @przemektmalon @Seanst98 Any answers/update for my question?

steffenlarsen commented 12 months ago

Alternatively, tag @przemektmalon | @Seanst98 .

przemektmalon commented 12 months ago

Hi @Shwetha-Selma, to answer your queries regarding bindless images

1. Is legacy 1.2.1 images part of **SYCL bindless images**?

I'm not 100% how to interpret this, so please let me know if this answers your query.

The sycl::aspect::ext_intel_legacy_image is not the aspect that enables bindless images. The aspect for our extension is sycl::aspect::ext_oneapi_bindless_images. Legacy 1.2.1 images are not part of Bindless Images.

Our Bindless Image extension does, however, introduce some aspects of images that were originally in SYCL 1.2.1. E.g., we re-introduce sycl::image_channel_order and sycl::image_channel_type.

2. SYCL images do not support single-channel image format hence we had to manually adjust it to 4-channel image format, Is this the same for SYCL bindless images as well? or do bindless images provide support for single-channel image format?

Bindless images provide support for 1-, 2-, and 4-channel images.

isaacault commented 12 months ago

But I have a couple of queries,

Hi @Shwetha-Selma, I believe I may be able to help.

1. Is legacy 1.2.1 images part of **SYCL bindless images**?

SYCL Bindless Images, as outlined in the Experimental Extension Doc, are part of neither legacy 1.2.1 images nor 2020 images. As well, neither of 1.2.1 images nor 2020 images are part of bindless images.

As stated in the doc, bindless images are "meant as building blocks for implementing SYCL 2020 images on top of", making bindless images their own type but with there being an influence from 2020 images.

If you would like to query for support of SYCL Bindless images, please use sycl::aspect::ext_oneapi_bindless_images.

2. SYCL images do not support single-channel image format hence we had to manually adjust it to 4-channel image format, Is this the same for SYCL bindless images as well? or do bindless images provide support for single-channel image format?

Bindless images support 1, 2, or 4 channel image formats. The specifics can be found in the here, where you'll see that Bindless images have reverted from the SYCL 2020 image_format way back to the legacy image_channel_order and image_channel_type, allowing for more flexibility from the user.

ghost commented 12 months ago

@przemektmalon @isaacault Thanks so much for the detailed answer, it does clear my doubts.

AlexeySachkov commented 12 months ago

@przemektmalon @isaacault Thanks so much for the detailed answer, it does clear my doubts.

@Shwetha-Selma, does it mean that we can close the issue? Are there any other questions left unanswered?

ghost commented 12 months ago

@przemektmalon @isaacault Thanks so much for the detailed answer, it does clear my doubts.

@Shwetha-Selma, does it mean that we can close the issue? Are there any other questions left unanswered?

My doubts are clarified. you can close this issue.