Open maleadt opened 1 year ago
Worked around by https://github.com/JuliaGPU/NVVM.jl/issues/1, but lets keep this open until there's an officially supported solution.
It's been suggested that a better solution is to ship ptxas
(or libnvptxcompiler
once it's distributed as a dynamic library) and use that to ensure the PTX ISA emitted is supported.
EDIT: I'm not actually sure this is going to work; is GPU machine code generated by ptxas
from CUDA 12.x compatible with an 11.x driver? Things like cooperative groups rely on special allocations made by the driver, so this seems questionable.
EDIT: I'm not actually sure this is going to work; is GPU machine code generated by
ptxas
from CUDA 12.x compatible with an 11.x driver? Things like cooperative groups rely on special allocations made by the driver, so this seems questionable.
Turns out this incompatibility is real, and we won't be able to use ptxas
from CUDA 12.x to target an 11.x-era driver. Guess we'll have to wait for a proper feature (https://github.com/JuliaGPU/NVVM.jl/pull/4 is too much of a hack).
We currently can't realistically use NVVM, because it always sets the PTX version to the latest one available. For example, current libNVVM_jll comes from CUDA 12.1, so the PTX version is set to 8.1, only supporting the very latest drivers. I've filed a feature request with NVIDIA to make the PTX version configurable, which should just be a matter of setting a TargetMachine option.
The alternative, using the libNVVM from the user's toolkit, is unwanted because we'd then need to support multiple versions of the NVVM IR.