@@ -5,6 +5,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 3.17)
55set (CMAKE_CXX_STANDARD 17
66 CACHE STRING "Minimum required C++ standard (default is 17)" )
77set (CMAKE_CXX_STANDARD_REQUIRED ON )
8+ set (CMAKE_CXX_EXTENSIONS OFF )
89set (CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE )
910# Set the name of the project and target:
1011SET (TARGET "dftfe_exe" )
@@ -30,6 +31,7 @@ IF (WITH_GPU)
3031 enable_language (CUDA)
3132 ELSEIF ("${GPU_LANG} " STREQUAL "hip" )
3233 enable_language (HIP)
34+ ELSEIF ("${GPU_LANG} " STREQUAL "sycl" )
3335 ELSE ()
3436 MESSAGE (FATAL_ERROR "\n "
3537 "*** Could not find valid GPU_LANG=cuda/hip ***\n\n "
@@ -274,6 +276,26 @@ SET(DEVICE_SRC
274276 ./utils/FEBasisOperationsKernelsInternalDevice.cc
275277 ./src/atom/AtomicCenteredNonLocalOperatorKernelsDevice.cc
276278 )
279+ ELSEIF ("${GPU_LANG} " STREQUAL "sycl" )
280+ SET (DEVICE_SRC
281+ ./utils/MemoryTransferKernelsDevice.cc
282+ ./utils/DeviceKernelsGeneric.cc
283+ ./utils/DeviceDirectCCLWrapper.cc
284+ ./src/dft/densityCalculatorDeviceKernels.cc
285+ ./src/dft/densityFirstOrderResponseCalculatorDeviceKernels.cc
286+ ./src/dft/solveVselfInBinsDeviceKernels.cc
287+ ./src/dft/kineticEnergyDensityCalculatorDeviceKernels.cc
288+ ./src/linAlg/linearAlgebraOperationsDeviceKernels.cc
289+ ./src/force/forceWfcContractionsDeviceKernels.cc
290+ ./utils/constraintMatrixInfoDeviceKernels.cc
291+ ./utils/DeviceAPICalls.sycl.cc
292+ ./utils/BLASWrapperDevice.cc
293+ ./utils/MPICommunicatorP2PKernelsDevice.cc
294+ ./src/solvers/linearSolverCGDeviceKernels.cc
295+ ./utils/matrixFreeDeviceKernels.cc
296+ ./utils/FEBasisOperationsKernelsInternalDevice.cc
297+ ./src/atom/AtomicCenteredNonLocalOperatorKernelsDevice.cc
298+ )
277299
278300ENDIF ()
279301
@@ -288,6 +310,8 @@ IF (WITH_GPU)
288310 ELSEIF ("${GPU_VENDOR} " STREQUAL "nvidia" )
289311 ADD_DEFINITIONS (-D__HIP_PLATFORM_NVIDIA__)
290312 ENDIF ()
313+ ELSEIF ("${GPU_LANG} " STREQUAL "sycl" )
314+ set_source_files_properties (${DEVICE_SRC} PROPERTIES COMPILE_FLAGS ${CMAKE_SYCL_FLAGS} )
291315 ENDIF ()
292316ENDIF ()
293317IF (WITH_GPU)
@@ -353,6 +377,9 @@ ENDIF()
353377
354378IF (USE_64BIT_INT)
355379 ADD_DEFINITIONS (-DDFTFE_WITH_64BIT_INT)
380+ IF ("${GPU_VENDOR} " STREQUAL "intel" )
381+ add_compile_options ("-fno-sycl-id-queries-fit-in-int" )
382+ ENDIF ()
356383ENDIF ()
357384
358385#
@@ -379,6 +406,9 @@ IF (WITH_GPU)
379406 ADD_DEFINITIONS (-DDFTFE_WITH_DEVICE_NVIDIA)
380407 ELSEIF ("${GPU_VENDOR} " STREQUAL "amd" )
381408 ADD_DEFINITIONS (-DDFTFE_WITH_DEVICE_AMD)
409+ ELSEIF ("${GPU_VENDOR} " STREQUAL "intel" )
410+ ADD_DEFINITIONS (-DDFTFE_WITH_DEVICE_INTEL)
411+ ADD_DEFINITIONS (-DDFTFE_WITH_DEVICE_MKL)
382412 ENDIF ()
383413
384414 IF ("${GPU_LANG} " STREQUAL "cuda" )
@@ -393,6 +423,34 @@ IF (WITH_GPU)
393423 ADD_DEFINITIONS (-DDFTFE_WITH_DEVICE_LANG_HIP)
394424 find_package (hipblas)
395425 target_link_libraries (${TARGETLIB} PUBLIC roc::hipblas)
426+ ELSEIF ("${GPU_LANG} " STREQUAL "sycl" )
427+ MESSAGE (STATUS "DFTFE with GPU LANG SYCL" )
428+ ADD_DEFINITIONS (-DDFTFE_WITH_DEVICE_LANG_SYCL)
429+ find_program (MPI_BASE_CXX_COMPILER "icpx" )
430+ get_filename_component (_REALPATH_SYCL_COMPILER "${MPI_BASE_CXX_COMPILER} " REALPATH)
431+ get_filename_component (SYCL_BIN_DIR "${_REALPATH_SYCL_COMPILER} " DIRECTORY )
432+ get_filename_component (SYCL_PACKAGE_DIR "${SYCL_BIN_DIR} " DIRECTORY CACHE )
433+ find_file (SYCL_INCLUDE_DIR
434+ NAMES
435+ include
436+ HINTS
437+ ${SYCL_PACKAGE_DIR}
438+ NO_DEFAULT_PATH)
439+ target_include_directories (${TARGETLIB} PUBLIC ${SYCL_INCLUDE_DIR} )
440+ target_include_directories (${TARGETLIB} PUBLIC ${SYCL_INCLUDE_DIR} /sycl)
441+ set (MKL_INTERFACE lp64)
442+ set (ENABLE_SCALAPACK ON )
443+ set (MKL_MPI mpich)
444+ find_PACKAGE (IntelSYCL REQUIRED)
445+ find_package (MKL REQUIRED)
446+ target_link_libraries (${TARGETLIB} PUBLIC MKL::MKL)
447+ get_target_property (MKL_SYCL_INCLUDE_DIRS MKL::MKL_SYCL INTERFACE_INCLUDE_DIRECTORIES )
448+ target_include_directories (${TARGETLIB} PUBLIC ${MKL_SYCL_INCLUDE_DIRS} )
449+ get_target_property (mkl_sycl_includes MKL::MKL_SYCL INTERFACE_INCLUDE_DIRECTORIES )
450+ target_include_directories (${TARGETLIB} PUBLIC ${mkl_sycl_includes} )
451+ get_target_property (mkl_sycl_libs MKL::MKL_SYCL INTERFACE_LINK_LIBRARIES)
452+ target_link_libraries (${TARGETLIB} PUBLIC ${mkl_sycl_libs} )
453+ set_target_properties (${TARGETLIB} PROPERTIES LINK_FLAGS ${CMAKE_SYCL_FLAGS} )
396454 ENDIF ()
397455 IF (WITH_GPU_AWARE_MPI)
398456 ADD_DEFINITIONS (-DDFTFE_WITH_DEVICE_AWARE_MPI)
0 commit comments