1-
21# MIT License
32
43# Copyright (c) 2015 University of West Bohemia
@@ -60,7 +59,7 @@ set(CMAKE_CXX_EXTENSIONS OFF) # Use -std, not -gnu
6059
6160option (GPU_AOT "Build AOT for Intel GPU" OFF )
6261option (USE_NVIDIA_BACKEND "Build for NVIDIA backend" OFF )
63- option (USE_AMDHIP_BACKEND "Build for AMD HIP backend" OFF )
62+ option (USE_AMD_BACKEND "Build for AMD HIP backend" OFF )
6463
6564set (SOURCES
6665 cuSVM/cuSVMSolver.dp.cpp
@@ -76,28 +75,39 @@ set(SOURCES
7675 #infrastructure/SYCL.cpp
7776)
7877
79- list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR} /cmake" )
80-
8178include_directories (${CMAKE_SOURCE_DIR}
8279 ${CMAKE_SOURCE_DIR} /libSVM
8380 ${CMAKE_SOURCE_DIR} /cuSVM
8481 ${CMAKE_SOURCE_DIR} /infrastructure)
8582
8683
87-
8884# Use either default or user defined CXX flags
8985# -DCMAKE_CXX_FLAGS=" -blah -blah " overrides the default flags
86+ set (DEF_INTEL_WL_CXX_FLAGS " -DMKL_ILP64 " )
87+ set (DEF_NVIDIA_WL_CXX_FLAGS " -DUSE_CUBLAS " )
88+ set (DEF_AMD_WL_CXX_FLAGS " -DUSE_HIPBLAS " )
9089
91- set (INTEL_GPU_CXX_FLAGS " -O3 -fsycl" )
92- set (NVIDIA_GPU_CXX_FLAGS " -O3 -fsycl -DUSE_CUBLAS " )
93- set (AMD_GPU_CXX_FLAGS " -O3 -fsycl -DUSE_HIPBLAS - D__HIP_PLATFORM_AMD__" )
90+ set (DEF_INTEL_GENERAL_CXX_FLAGS " -O3 -fsycl " )
91+ set (DEF_NVIDIA_GENERAL_CXX_FLAGS " -O3 -fsycl " )
92+ set (DEF_AMD_GENERAL_CXX_FLAGS " -O3 -fsycl -D__HIP_PLATFORM_AMD__ " )
9493
95- set (USE_DEFAULT_FLAGS ON )
96- if ("${CMAKE_CXX_FLAGS} " STREQUAL "" )
94+ if (NOT "${CMAKE_CXX_FLAGS} " STREQUAL "" AND NOT "${OVERRIDE_GENERAL_CXX_FLAGS} " STREQUAL "" )
95+ message (FATAL_ERROR "Both CMAKE_CXX_FLAGS and OVERRIDE_GENERAL_CXX_FLAGS cannot be passed in together" )
96+ elseif ("${CMAKE_CXX_FLAGS} " STREQUAL "" AND "${OVERRIDE_GENERAL_CXX_FLAGS} " STREQUAL "" )
9797 message (STATUS "Using DEFAULT compilation flags" )
98- else ()
99- message (STATUS "OVERRIDING DEFAULT compilation flags" )
100- set (USE_DEFAULT_FLAGS OFF )
98+ set (INTEL_GPU_CXX_FLAGS "${DEF_INTEL_GENERAL_CXX_FLAGS} ${DEF_INTEL_WL_CXX_FLAGS} " )
99+ set (NVIDIA_GPU_CXX_FLAGS "${DEF_NVIDIA_GENERAL_CXX_FLAGS} ${DEF_NVIDIA_WL_CXX_FLAGS} " )
100+ set (AMD_GPU_CXX_FLAGS "${DEF_AMD_GENERAL_CXX_FLAGS} ${DEF_AMD_WL_CXX_FLAGS} " )
101+ elseif (NOT "${OVERRIDE_GENERAL_CXX_FLAGS} " STREQUAL "" )
102+ message (STATUS "OVERRIDING GENERAL compilation flags" )
103+ set (INTEL_GPU_CXX_FLAGS "${OVERRIDE_GENERAL_CXX_FLAGS} ${DEF_INTEL_WL_CXX_FLAGS} " )
104+ set (NVIDIA_GPU_CXX_FLAGS "${OVERRIDE_GENERAL_CXX_FLAGS} ${DEF_NVIDIA_WL_CXX_FLAGS} " )
105+ set (AMD_GPU_CXX_FLAGS "${OVERRIDE_GENERAL_CXX_FLAGS} ${DEF_AMD_WL_CXX_FLAGS} " )
106+ elseif (NOT "${CMAKE_CXX_FLAGS} " STREQUAL "" )
107+ message (STATUS "OVERRIDING GENERAL and WORKLOAD SPECIFIC compilation flags" )
108+ set (INTEL_GPU_CXX_FLAGS "${CMAKE_CXX_FLAGS} " )
109+ set (NVIDIA_GPU_CXX_FLAGS "${CMAKE_CXX_FLAGS} " )
110+ set (AMD_GPU_CXX_FLAGS "${CMAKE_CXX_FLAGS} " )
101111endif ()
102112
103113#add_compile_options(-DRUN_ON_GPU)
@@ -112,30 +122,32 @@ elseif(USE_AMD_BACKEND)
112122 target_link_libraries (${PROJECT_NAME} -lhipblas)
113123else ()
114124 message (STATUS "Enabling INTEL backend" )
115- find_package (oneMKL REQUIRED CONFIG HINTS ${oneMKLROOT} )
116- message (STATUS "Found oneMKL: ${oneMKL_DIR} " )
117- target_link_libraries (${PROJECT_NAME} PRIVATE MKL::onemkl)
125+ link_directories (${MKLROOT} /lib/intel64)
126+ target_link_libraries (${PROJECT_NAME} mkl_sycl mkl_intel_ilp64 mkl_tbb_thread mkl_core pthread dl m)
118127endif ()
119128
120- if (GPU_AOT)
129+ if (GPU_AOT)
121130 message (STATUS "Enabling INTEL backend" )
122- if (USE_DEFAULT_FLAGS)
123- set (CMAKE_CXX_FLAGS "${INTEL_GPU_CXX_FLAGS} " ) # Default flags for Intel backend
131+ set (CMAKE_CXX_FLAGS "${INTEL_GPU_CXX_FLAGS} " )
132+ if ( (${GPU_AOT} STREQUAL "pvc" ) OR (${GPU_AOT} STREQUAL "PVC" ) )
133+ message (STATUS "Enabling Intel GPU AOT compilation for ${GPU_AOT} " )
134+ string (APPEND CMAKE_CXX_FLAGS " -fsycl-targets=spir64_gen -Xs \" -device 0x0bd5 -revision_id 3\" " )
135+ else ()
136+ message (STATUS "Using custom AOT compilation flag ${GPU_AOT} " )
137+ string (APPEND CMAKE_CXX_FLAGS " ${GPU_AOT} " ) # User should be aware of advanced AOT compilation flags
124138 endif ()
125- message (STATUS "Using custom AOT compilation flag ${GPU_AOT} " )
126- string (APPEND CMAKE_CXX_FLAGS " ${GPU_AOT} " ) # User should be aware of advanced AOT compilation flags
127- elseif (USE_NVIDIA_BACKEND)
139+ elseif (USE_NVIDIA_BACKEND)
128140 message (STATUS "Enabling NVIDIA backend" )
129- if (USE_DEFAULT_FLAGS )
130- set ( CMAKE_CXX_FLAGS "${NVIDIA_GPU_CXX_FLAGS} " ) # Default flags for NV backend
131- endif ( )
132- string ( APPEND CMAKE_CXX_FLAGS " -fsycl-targets=nvidia_gpu_sm_ ${USE_SM} " )
133- elseif (USE_AMD_BACKEND )
134- message ( STATUS "Enabling AMD HIP backend. " )
135- if (USE_DEFAULT_FLAGS )
136- set ( CMAKE_CXX_FLAGS " ${AMD_GPU_CXX_FLAGS} " ) # Default flags for AMD backend (gfx908 for MI100)
137- endif ( )
138- string ( APPEND CMAKE_CXX_FLAGS " -fsycl-targets=amd_gpu_gfx ${USE_AMD_ARCH } " )
141+ set ( CMAKE_CXX_FLAGS " ${NVIDIA_GPU_CXX_FLAGS} " )
142+ string ( APPEND CMAKE_CXX_FLAGS " -fsycl-targets=nvidia_gpu_sm_ ${USE_SM} " )
143+ elseif (USE_AMDHIP_BACKEND )
144+ message ( STATUS "Enabling AMD HIP backend for ${USE_AMDHIP_BACKEND} AMD architecture " )
145+ set ( CMAKE_CXX_FLAGS " ${AMD_GPU_CXX_FLAGS} " )
146+ string ( APPEND CMAKE_CXX_FLAGS " -fsycl-targets=amd_gpu_gfx ${USE_AMD_ARCH} " )
147+ else ( )
148+ # JIT case
149+ message ( STATUS "Enabling INTEL backend" )
150+ set ( CMAKE_CXX_FLAGS "${INTEL_GPU_CXX_FLAGS } " )
139151endif ()
140152
141153# Output the compiler flags that were constructed for visual inspection
@@ -144,4 +156,4 @@ file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/a9a
144156 DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
145157
146158#add_executable(${PROJECT_NAME} ${SOURCES})
147- target_link_libraries (${PROJECT_NAME} PRIVATE sycl stdc++fs)
159+ target_link_libraries (${PROJECT_NAME} sycl stdc++fs)
0 commit comments