Fix hipSYCL build with CUDA target
[alexxy/gromacs.git] / src / gromacs / fft / gpu_3dfft.cpp
index 9b931cfb2fd188c5ed63f1aded7474b3345243ac..3eeca1a78440392e0d39cbd88b409ec4b2e00967 100644 (file)
 #    include "gpu_3dfft_ocl.h"
 #elif GMX_GPU_SYCL
 #    include "gpu_3dfft_sycl.h"
+#    if GMX_SYCL_DPCPP && GMX_FFT_MKL
+#        include "gpu_3dfft_sycl_mkl.h"
+#    endif
+#    if GMX_SYCL_HIPSYCL && GMX_HIPSYCL_HAVE_HIP_TARGET
+#        include "gpu_3dfft_sycl_rocfft.h"
+#    endif
 #endif
 
 #if Heffte_FOUND
@@ -132,6 +138,40 @@ Gpu3dFft::Gpu3dFft(FftBackend           backend,
 #    elif GMX_GPU_SYCL
     switch (backend)
     {
+#        if GMX_SYCL_DPCPP && GMX_FFT_MKL
+        case FftBackend::SyclMkl:
+            impl_ = std::make_unique<Gpu3dFft::ImplSyclMkl>(allocateGrids,
+                                                            comm,
+                                                            gridSizesInXForEachRank,
+                                                            gridSizesInYForEachRank,
+                                                            nz,
+                                                            performOutOfPlaceFFT,
+                                                            context,
+                                                            pmeStream,
+                                                            realGridSize,
+                                                            realGridSizePadded,
+                                                            complexGridSizePadded,
+                                                            realGrid,
+                                                            complexGrid);
+            break;
+#        endif
+#        if GMX_SYCL_HIPSYCL && GMX_HIPSYCL_HAVE_HIP_TARGET
+        case FftBackend::SyclRocfft:
+            impl_ = std::make_unique<Gpu3dFft::ImplSyclRocfft>(allocateGrids,
+                                                               comm,
+                                                               gridSizesInXForEachRank,
+                                                               gridSizesInYForEachRank,
+                                                               nz,
+                                                               performOutOfPlaceFFT,
+                                                               context,
+                                                               pmeStream,
+                                                               realGridSize,
+                                                               realGridSizePadded,
+                                                               complexGridSizePadded,
+                                                               realGrid,
+                                                               complexGrid);
+            break;
+#        endif
         case FftBackend::Sycl:
             impl_ = std::make_unique<Gpu3dFft::ImplSycl>(allocateGrids,
                                                          comm,