FFT Execution Error: Cufft Callbacks During Graph Capture not permitted

I use cuda 11.8 and try to capture an fft using cufft callbacks.

I got the following error message:

[error] [debug.cpp:51] Error 900: operation not permitted when stream is capturing

Is it possible to graph capture fft-s using cufft callbacks?
If I am not capturing, the code runs perfectly.

Ty

I’m not aware of any limitations like this and there don’t seem to be any limitations documented in the cufft manual. It’s possible you are running into some other limitation on stream capturing.

It seems that:
in CUDA 11.8 and CUDA 12.0, CUDA Graphs are not supported for callback routines that load data in out-of-place mode transforms.

AFAIK this is not currently documented, but I expect documentation fixes in the future. Furthermore, I have some indication that CUFFT callbacks are being worked on, so this limitation may not be always present in the future. I won’t be able to provide further forward-looking statements at this time.

Some possible workaround avenues:

  • don’t use cuda graphs or,
  • use store callbacks but not load callbacks, or,
  • use load callbacks with in-place transforms, only, if you intend to use graph capture, or,
  • use a CUDA version prior to CUDA 11.8