Is the "-Xptxas=-abi=no" option gone in CUDA 9.x?

I have some kernels that I used to compile with the ABI disabled.

I now see the option is gone from CUDA 9.2.

Presumably (?) some registers are being used even if there are no spills?

I’d also be interested in learning more about what functionality the current kernel ABI is providing to the overall CUDA system.



I think the ABI provides the necessary infrastructure to have a stack and to make function calls. It allows for device side linking and is probably also necessary to do device side memory allocations on the heap.

Without ABI your kernel had to inline all function calls.

I guess they cut it because it the feature became difficulty to maintain in the long term.

Ah, that’s what I was assuming as well. :(

There seems to be remnants of support for the switch – ptxas recognizes it but “off” is not a valid option.

Oh well… I’ll miss those 2 or 3 registers.

Device-side printf() and dynamic parallelism require the ABI as well, as do various C++ features.

ABIs are a good thing. In the best of all worlds CUDA would have used an ABI right off the bat, but (at least as I recall), sm_1x hardware was too primitive to support an ABI.