cuFFTMp is based on NVSHMEM. However, the user is not allowed to link and use NVSHMEM in its own application. This may cause crashes at application start time. This limitation will be lifted in a future release of cuFFTMp.

However, some functionalities of cuFFTMp require NVSHMEM-allocated memory. cuFFT then re-exposes a few NVSHMEM functions. Those functions exist but are not defined in the cuFFT headers.

The user interested in using those functions can define them directly, e.g., by doing

extern "C" cufftResult _cufftMpNvshmemMalloc(size_t size, void **buff);

extern "C" cufftResult _cufftMpNvshmemFree(void *buff);

The use of those functions require at least one cuFFTMp plan to be created prior to their usage and to not have been destroyed yet.