1
-
2
1
# MIT License
3
2
4
3
# Copyright (c) 2015 University of West Bohemia
@@ -60,7 +59,7 @@ set(CMAKE_CXX_EXTENSIONS OFF) # Use -std, not -gnu
60
59
61
60
option (GPU_AOT "Build AOT for Intel GPU" OFF )
62
61
option (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 )
64
63
65
64
set (SOURCES
66
65
cuSVM/cuSVMSolver.dp.cpp
@@ -76,28 +75,39 @@ set(SOURCES
76
75
#infrastructure/SYCL.cpp
77
76
)
78
77
79
- list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR} /cmake" )
80
-
81
78
include_directories (${CMAKE_SOURCE_DIR}
82
79
${CMAKE_SOURCE_DIR} /libSVM
83
80
${CMAKE_SOURCE_DIR} /cuSVM
84
81
${CMAKE_SOURCE_DIR} /infrastructure )
85
82
86
83
87
-
88
84
# Use either default or user defined CXX flags
89
85
# -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 " )
90
89
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__ " )
94
93
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 "" )
97
97
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} " )
101
111
endif ()
102
112
103
113
#add_compile_options(-DRUN_ON_GPU)
@@ -112,30 +122,32 @@ elseif(USE_AMD_BACKEND)
112
122
target_link_libraries (${PROJECT_NAME} -lhipblas )
113
123
else ()
114
124
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 )
118
127
endif ()
119
128
120
- if (GPU_AOT )
129
+ if (GPU_AOT )
121
130
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
124
138
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 )
128
140
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 } " )
139
151
endif ()
140
152
141
153
# Output the compiler flags that were constructed for visual inspection
@@ -144,4 +156,4 @@ file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/a9a
144
156
DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
145
157
146
158
#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