dpctl icon indicating copy to clipboard operation
dpctl copied to clipboard

Add support for raw_kernel_arg extension

Open sommerlukas opened this issue 9 months ago • 1 comments

Add support for the DPC++ SYCL extension raw_kernel_arg that allows to pass a binary blob as kernel arguments.

This is for example useful if the kernel uses a struct as kernel parameter, but is loaded from SPIR-V and the argument type is unknown for set_arg.

The implementation follows #1984.

  • [x] Have you provided a meaningful PR description?
  • [x] Have you added a test, reproducer or referred to an issue with a reproducer?
  • [x] Have you tested your changes locally for CPU and GPU devices?
  • [x] Have you made sure that new changes do not introduce compiler warnings?
  • [ ] Have you checked performance impact of proposed changes?
  • [x] Have you added documentation for your changes, if necessary?
  • [ ] Have you added your changes to the changelog?
  • [ ] If this PR is a work in progress, are you opening the PR as a draft?

sommerlukas avatar Apr 02 '25 14:04 sommerlukas

Coverage Status

coverage: 86.354% (-0.06%) from 86.41% when pulling 5fb74e63bd2ea17dccfc7a60ddd24fd2c5a64939 on sommerlukas:raw-kernel-arg into 3e74087e4ad8ea9bcc226ceaa65fc0f555b75594 on IntelPython:master.

coveralls avatar Apr 02 '25 17:04 coveralls

@sommerlukas Master now has a fix for nightly build, so please merge or rebase on master so the tests run on nightly compiler

ndgrigorian avatar Apr 14 '25 16:04 ndgrigorian

Thanks for the feedback @ndgrigorian @AlexanderKalistratov!

After taking a look at how the opaque pointers for other std::vector work, I've changed the approach: I've removed RawKernelArgDataTy entirely, so that the opaque pointer (DPCTLSyclRawKernelArgRef) now directly points to std::vector<unsigned char>. That way, we can avoid defining a struct with std::vector in the header, so the offending includes of <vector> and <cstring> are now removed.

sommerlukas avatar Apr 22 '25 16:04 sommerlukas

@ndgrigorian @AlexanderKalistratov Friendly ping for reviews. CI is looking quite good now, I can unfortunately not see the logs for the single failing Jenkins job.

sommerlukas avatar Apr 30 '25 15:04 sommerlukas

@ndgrigorian @AlexanderKalistratov Friendly ping for reviews. CI is looking quite good now, I can unfortunately not see the logs for the single failing Jenkins job.

Sorry, forgot to put my final review on this.

Jenkins job is unrelated. I'll give it a last look over but I think it's ready to go in.

ndgrigorian avatar Apr 30 '25 18:04 ndgrigorian