SYCL: 3D FFT using oneMKL
[alexxy/gromacs.git] / src / gromacs / fft / gpu_3dfft.cpp
index 17ffe13f682e12354a74091320886fc97a48d41c..7dd21185e720d37356f876d62fa0770213041106 100644 (file)
@@ -52,6 +52,9 @@
 #    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
 #        include "gpu_3dfft_sycl_rocfft.h"
 #    endif
@@ -135,6 +138,23 @@ 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
         case FftBackend::SyclRocfft:
             impl_ = std::make_unique<Gpu3dFft::ImplSyclRocfft>(allocateGrids,