m4rs-mt / ILGPU

ILGPU JIT Compiler for high-performance .Net GPU programs
http://www.ilgpu.net
Other
1.38k stars 117 forks source link

Support for OpenCL 1.2 #1013

Closed queequac closed 1 year ago

queequac commented 1 year ago

Currently ILGPU seems to support only OpenCL 2.0 and above.

Windows on ARM has only support for OpenCL 1.2, as a result enumerating devices does not register the Snapdragon's Adreno GPU. (Because the OpenCL compatibility pack does only provice 1.2, even though the hardware would provide 2.0 full.)

I am not an expert, but seems the only difference between 1.2 and 2.0 is support of atomic operations.

Would it be an option to (optionally) enable support for 1.2 and throwing an exception in case of atomic operations? Or are these crucial for ILGPU so we could not make them optional?

queequac commented 1 year ago

Even though I realized this also won't help me on Windows on ARM/Snapdragon, since the OpenCL compatibility pack provides no GenericAddressSpace capability...

MoFtZ commented 1 year ago

hi @queequac. Unfortunately, the key missing feature in OpenCL 1.2 is the Generic Address Space functionality. The same applies to OpenCL 3.0.

My understanding is that there is a non-trivial amount of work required to support OpenCL without Generic Address Space.

The current focus is to one day implement SPIR-V support, which will potentially supersede OpenCL.