-
Notifications
You must be signed in to change notification settings - Fork 766
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Illegal Instruction vgatherpd from parallel_for #17767
Comments
You can try compiling with the
This should produce an LLVM bitcode file for each kernel. You can then run them through |
Maybe I have done something useful... I found the "Intercept Layer for OpenCL" project and ran
where I observe in gdb-oneapi the illegal instruction (sorry for screenshots) I then took the dumped objects and ran them though the dissembler provided with the intercept layer:
I observe in
Hopefully the following files are attached in the zip:
Edit: I realize I had
Please let me know if providing more or different output is useful. |
Describe the bug
Hello,
I am not sure if this is the correct place to raise this issue, please feel free to point me to a more appropriate place if required. i.e. is here [1] also the Intel OpenCL CPU runtime repository (only GPU is mentioned)?
We have SYCL parallel_fors, which unfortunately are hard to extract out of our code base to produce an MFE (we have our own C++ templated loop abstraction on top of SYCL, see here for an example [2]), that produces illegal instruction errors with oneapi. I am happy to extract some SPIR-V and provide it if someone can point me at the incantation/rough guide to do this (on the assumption that the issue is in Intel OpenCL and the SPIR-V is sufficient to reproduce?).
These loops run correctly with:
These loops fail when:
The symptom is an Illegal instruction that gdb-oneapi points to a vpgatherqq/vpgatherpqd. Screenshots attached from two completely different machines, one an Intel Raptor Lake the other an AMD Zen4. On both machines the instruction has an duplication of registers in the arguments which googling suggests is invalid? I do not know enough avx2/avx512 assembly to verify that the duplicate register is actually the problem.
[1] https://github.com/intel/compute-runtime
[2] https://excalibur-neptune.github.io/NESO-Particles/dev/sphinx/html/concept/particle_loop.html#advection-example
To reproduce
Extracting a MFE has been challenging, I am happy to run tools and provide more output if someone can point me at what to run. i.e. is there a way I can dump the SPIR-V for the failing kernels?
Environment
Additional context
No response
The text was updated successfully, but these errors were encountered: