@@ -5,6 +5,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 3.17)
5
5
set (CMAKE_CXX_STANDARD 17
6
6
CACHE STRING "Minimum required C++ standard (default is 17)" )
7
7
set (CMAKE_CXX_STANDARD_REQUIRED ON )
8
+ set (CMAKE_CXX_EXTENSIONS OFF )
8
9
set (CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE )
9
10
# Set the name of the project and target:
10
11
SET (TARGET "dftfe_exe" )
@@ -30,6 +31,7 @@ IF (WITH_GPU)
30
31
enable_language (CUDA )
31
32
ELSEIF ("${GPU_LANG} " STREQUAL "hip" )
32
33
enable_language (HIP )
34
+ ELSEIF ("${GPU_LANG} " STREQUAL "sycl" )
33
35
ELSE ()
34
36
MESSAGE (FATAL_ERROR "\n "
35
37
"*** Could not find valid GPU_LANG=cuda/hip ***\n\n "
@@ -274,6 +276,26 @@ SET(DEVICE_SRC
274
276
./utils/FEBasisOperationsKernelsInternalDevice.cc
275
277
./src/atom/AtomicCenteredNonLocalOperatorKernelsDevice.cc
276
278
)
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
+ )
277
299
278
300
ENDIF ()
279
301
@@ -288,6 +310,8 @@ IF (WITH_GPU)
288
310
ELSEIF ("${GPU_VENDOR} " STREQUAL "nvidia" )
289
311
ADD_DEFINITIONS (-D__HIP_PLATFORM_NVIDIA__ )
290
312
ENDIF ()
313
+ ELSEIF ("${GPU_LANG} " STREQUAL "sycl" )
314
+ set_source_files_properties (${DEVICE_SRC} PROPERTIES COMPILE_FLAGS ${CMAKE_SYCL_FLAGS} )
291
315
ENDIF ()
292
316
ENDIF ()
293
317
IF (WITH_GPU )
@@ -353,6 +377,9 @@ ENDIF()
353
377
354
378
IF (USE_64BIT_INT )
355
379
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 ()
356
383
ENDIF ()
357
384
358
385
#
@@ -379,6 +406,9 @@ IF (WITH_GPU)
379
406
ADD_DEFINITIONS (-DDFTFE_WITH_DEVICE_NVIDIA )
380
407
ELSEIF ("${GPU_VENDOR} " STREQUAL "amd" )
381
408
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 )
382
412
ENDIF ()
383
413
384
414
IF ("${GPU_LANG} " STREQUAL "cuda" )
@@ -393,6 +423,34 @@ IF (WITH_GPU)
393
423
ADD_DEFINITIONS (-DDFTFE_WITH_DEVICE_LANG_HIP )
394
424
find_package (hipblas )
395
425
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} )
396
454
ENDIF ()
397
455
IF (WITH_GPU_AWARE_MPI )
398
456
ADD_DEFINITIONS (-DDFTFE_WITH_DEVICE_AWARE_MPI )
0 commit comments