Skip to content

Move the hipFFT Xt API to hipfort_hipfftxt - #638

Merged
amontoison merged 2 commits into
developfrom
users/amontoison/hipfftxt-modules
Nov 7, 2026
Merged

amontoison merged 2 commits into
developfrom
users/amontoison/hipfftxt-modules

Conversation

@amontoison

@amontoison amontoison commented Nov 7, 2026 •

Copy link
Copy Markdown
Collaborator

CUDA Fortran (NVIDIA HPC SDK) has two modules, cufft and cufftXt: cufftXt includes cufft and holds the Xt and cuFFTMp interfaces. hipFORT now mirrors it, so that hipified code maps use cufftXt to use hipfort_hipfftxt. The rule is by name: every hipfftXt* and hipfftMp* function goes to hipfort_hipfftxt, including hipfftXtSetWorkArea (declared in hipfft.h, as cufftXtSetWorkArea is in cufftXt), and every other hipfft* function stays in hipfort_hipfft.

The Xt API came with #611 and is not released yet, so this breaks nobody.

Module Contents
hipfort_hipfft, hipfort_hipfft_enums the hipfft.h API, without the hipfftXt*/hipfftMp* functions
hipfort_hipfftxt every hipfftXt* and hipfftMp* function; it uses hipfort_hipfft, so use hipfort_hipfftxt alone gives the whole hipFFT API
hipfort_hipfftxt_enums the Xt and Mp enums and constants (HIPFFT_XT_FORMAT_*, HIPFFT_COPY_*, HIPFFT_CB_*, HIPLIB_FORMAT_*, HIPFFT_COMM_*, MAX_HIP_DESCRIPTOR_GPUS)
hipfort_hipfftxt_types hipXtDesc, hipLibXtDesc

hipfort_hipfft_types (from #611) goes away: hipfft.h binds no type. The hipfftw modules are unchanged.

CUDA Fortran has a cufft module and a cufftXt module, which includes cufft
and holds the Xt and cuFFTMp interfaces. hipfort now mirrors it, so that
hipified code maps `use cufftXt` to a module of its own:

- hipfort_hipfft and hipfort_hipfft_enums hold the hipfft.h API, without the
  hipfftXt* and hipfftMp* functions; hipfort_hipfft_types goes away, as
  hipfft.h binds no type.
- hipfort_hipfftxt holds every hipfftXt* and hipfftMp* function, including
  hipfftXtSetWorkArea (declared in hipfft.h, as cufftXtSetWorkArea is in
  cufftXt), with hipfort_hipfftxt_enums and hipfort_hipfftxt_types. It uses
  hipfort_hipfft, so `use hipfort_hipfftxt` alone gives the whole hipFFT API.

The Xt API is not released yet (#611), so nothing breaks. The modules are
regenerated with the generator's new [library] uses, function_prefixes and
skip_function_prefixes keys. A hipfftxt CMake component, linked to hipFFT,
holds the Xt tests and the symbol test, and the supported-API table, the
hipFFT examples and the changelog follow.
@amontoison
amontoison requested review from a team as code owners November 7, 2026 09:18
@github-actions

github-actions Bot commented Nov 7, 2026 •

Copy link
Copy Markdown
Security scan found no critical or high findings on lines changed by this pull request

View the security scan run for complete reports.

“New” means the finding is located in a changed file on an added or modified line; it is not a base-versus-head findings delta.

They bind their cufftXt* counterparts; only the multi-process routines
have none.
@amontoison
amontoison merged commit 4473684 into develop Nov 7, 2026
14 checks passed
@amontoison
amontoison deleted the users/amontoison/hipfftxt-modules branch November 7, 2026 18:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant