@@ -44,29 +44,57 @@ option(DEVBUILD "Log developer metrics" OFF)
44
44
45
45
option (GPU_AOT "Build AOT for Intel GPU" OFF )
46
46
option (USE_NVIDIA_BACKEND "Build for NVIDIA backend" OFF )
47
- option (USE_AMDHIP_BACKEND "Build for AMD HIP backend" OFF )
47
+ option (USE_AMD_BACKEND "Build for AMD HIP backend" OFF )
48
48
option (USE_LOOP_UNROLLING "Build with loop unrolling SYCL only" OFF )
49
49
option (USE_SM "Build for CUDA architecture" )
50
50
51
- set (USE_DEFAULT_FLAGS ON )
52
- set (INTEL_GPU_CXX_FLAGS " -O2 -fsycl " )
53
- set (NVIDIA_GPU_CXX_FLAGS " -O3 -fsycl " )
54
- set (AMD_GPU_CXX_FLAGS " -O3 -fsycl " )
55
- set (ROCM_CXX_FLAGS " -O3" )
56
- set (NVCC_CXX_FLAGS " -O3 " )
51
+ ### SYCL RELATED FLAGS START HERE
52
+ set (DEF_INTEL_GENERAL_CXX_FLAGS " -O2 -fsycl " )
53
+ set (DEF_NVIDIA_GENERAL_CXX_FLAGS " -O3 -fsycl " )
54
+ set (DEF_AMD_GENERAL_CXX_FLAGS " -O3 -fsycl " )
57
55
58
- include_directories (${OPENSSL_INCLUDE_DIR} ${jsoncpp_DIR} /../../../include )
56
+ set (DEF_INTEL_WL_CXX_FLAGS " " )
57
+ set (DEF_NVIDIA_WL_CXX_FLAGS " " )
58
+ set (DEF_AMD_WL_CXX_FLAGS " " )
59
59
60
- if ("${CMAKE_CXX_FLAGS} " STREQUAL "" )
61
- message (STATUS "Using DEFAULT compilation flags for the application" )
62
- string (APPEND CMAKE_CXX_FLAGS "${INTEL_GPU_CXX_FLAGS} " ) # Default flags for NV backend
63
- else ()
64
- message (STATUS "OVERRIDING compilation flags" )
65
- set (USE_DEFAULT_FLAGS OFF )
60
+ if (NOT "${CMAKE_CXX_FLAGS} " STREQUAL "" AND NOT "${OVERRIDE_GENERAL_CXX_FLAGS} " STREQUAL "" )
61
+ message (FATAL_ERROR "Both CMAKE_CXX_FLAGS and OVERRIDE_GENERAL_CXX_FLAGS cannot be passed in together" )
62
+ elseif ("${CMAKE_CXX_FLAGS} " STREQUAL "" AND "${OVERRIDE_GENERAL_CXX_FLAGS} " STREQUAL "" )
63
+ message (STATUS "Using DEFAULT compilation flags" )
64
+ set (INTEL_GPU_CXX_FLAGS "${DEF_INTEL_GENERAL_CXX_FLAGS} ${DEF_INTEL_WL_CXX_FLAGS} " )
65
+ set (NVIDIA_GPU_CXX_FLAGS "${DEF_NVIDIA_GENERAL_CXX_FLAGS} ${DEF_NVIDIA_WL_CXX_FLAGS} " )
66
+ set (AMD_GPU_CXX_FLAGS "${DEF_AMD_GENERAL_CXX_FLAGS} ${DEF_AMD_WL_CXX_FLAGS} " )
67
+ elseif (NOT "${OVERRIDE_GENERAL_CXX_FLAGS} " STREQUAL "" )
68
+ message (STATUS "OVERRIDING GENERAL compilation flags" )
69
+ set (INTEL_GPU_CXX_FLAGS "${OVERRIDE_GENERAL_CXX_FLAGS} ${DEF_INTEL_WL_CXX_FLAGS} " )
70
+ set (NVIDIA_GPU_CXX_FLAGS "${OVERRIDE_GENERAL_CXX_FLAGS} ${DEF_NVIDIA_WL_CXX_FLAGS} " )
71
+ set (AMD_GPU_CXX_FLAGS "${OVERRIDE_GENERAL_CXX_FLAGS} ${DEF_AMD_WL_CXX_FLAGS} " )
72
+ elseif (NOT "${CMAKE_CXX_FLAGS} " STREQUAL "" )
73
+ message (STATUS "OVERRIDING GENERAL and WORKLOAD SPECIFIC compilation flags" )
74
+ set (INTEL_GPU_CXX_FLAGS "${CMAKE_CXX_FLAGS} " )
75
+ set (NVIDIA_GPU_CXX_FLAGS "${CMAKE_CXX_FLAGS} " )
76
+ set (AMD_GPU_CXX_FLAGS "${CMAKE_CXX_FLAGS} " )
66
77
endif ()
78
+ ### END OF SYCL RELATED FLAGS
79
+
80
+ ### NVCC RELATED FLAGS START HERE
81
+ set (NVCC_WL_CXX_FLAGS " " )
82
+ set (NVCC_DEF_CXX_FLAGS " -O3 " )
83
+ set (NVCC_DEF_COMBINED_FLAGS "${NVCC_WL_CXX_FLAGS} ${NVCC_DEF_CXX_FLAGS} " )
84
+ ### END OF NVCC RELATED FLAGS
85
+
86
+
87
+ ### ROCM RELATED FLAGS START HERE
88
+ set (ROCM_WL_CXX_FLAGS " " )
89
+ set (ROCM_DEF_CXX_FLAGS " -O3 -D__HIP_PLATFORM_AMD__ " )
90
+ set (ROCM_DEF_COMBINED_FLAGS " ${ROCM_WL_CXX_FLAGS} ${ROCM_DEF_CXX_FLAGS} " )
91
+ ### END OF ROCM RELATED FLAGS
92
+
93
+ include_directories (${OPENSSL_INCLUDE_DIR} ${jsoncpp_DIR} /../../../include )
67
94
68
95
# JIT compilation
69
- if (GPU_AOT )
96
+ if (GPU_AOT )
97
+ set (CMAKE_CXX_FLAGS "${INTEL_GPU_CXX_FLAGS} " )
70
98
if ( (${GPU_AOT} STREQUAL "pvc" ) OR (${GPU_AOT} STREQUAL "PVC" ) )
71
99
message (STATUS "Enabling Intel GPU AOT compilation for ${GPU_AOT} " )
72
100
string (APPEND CMAKE_CXX_FLAGS " -fsycl-targets=spir64_gen -Xs \" -device 0x0bd5 -revision_id 0x2f\" -Xs \" -options -ze-opt-large-register-file\" " ) # Default flag for pvc
@@ -76,40 +104,56 @@ if(GPU_AOT)
76
104
endif ()
77
105
elseif (USE_NVIDIA_BACKEND )
78
106
message (STATUS "Enabling NVIDIA backend" )
79
- if (USE_DEFAULT_FLAGS )
80
- set (CMAKE_CXX_FLAGS "${NVIDIA_GPU_CXX_FLAGS} " ) # Default flags for NV backend
81
- endif ()
107
+ set (CMAKE_CXX_FLAGS "${NVIDIA_GPU_CXX_FLAGS} " )
82
108
string (APPEND CMAKE_CXX_FLAGS " -fsycl-targets=nvptx64-nvidia-cuda " ) # -O3 will be used, even though -O2 was set earlier
83
109
if (USE_SM )
84
110
message (STATUS "Building for SM_${USE_SM} architecture" )
85
111
string (APPEND CMAKE_CXX_FLAGS " -Xsycl-target-backend --cuda-gpu-arch=sm_${USE_SM} " )
86
112
endif ()
87
- elseif (USE_AMDHIP_BACKEND )
88
- message (STATUS "Enabling AMD HIP backend for ${USE_AMDHIP_BACKEND} AMD architecture" )
89
- if (USE_DEFAULT_FLAGS )
90
- set (CMAKE_CXX_FLAGS "${AMD_GPU_CXX_FLAGS} " )
113
+ elseif (USE_AMD_BACKEND )
114
+ if ("${USE_AMD_ARCH} " STREQUAL "" )
115
+ message (FATAL_ERROR "Must specify AMD arch, e.g., -DUSE_AMD_ARCH=gfx90a" )
91
116
endif ()
92
- string (APPEND CMAKE_CXX_FLAGS " -fsycl-targets=amdgcn-amd-amdhsa -Xsycl-target-backend --offload-arch=${USE_AMDHIP_BACKEND} " )
93
- add_compile_options (-DUSE_AMDHIP_BACKEND )
117
+ message (STATUS "Enabling AMD backend for ${USE_AMD_ARCH} AMD architecture" )
118
+ set (CMAKE_CXX_FLAGS "${AMD_GPU_CXX_FLAGS} " )
119
+ string (APPEND CMAKE_CXX_FLAGS " -fsycl-targets=amdgcn-amd-amdhsa -Xsycl-target-backend --offload-arch=${USE_AMD_ARCH} " )
120
+ add_compile_options (-DUSE_AMD_BACKEND )
94
121
endif ()
95
122
96
- if (USE_AMDHIP_BACKEND )
123
+ if (USE_AMD_BACKEND )
97
124
message (STATUS "Using 64 thread shuffle function code path" )
98
125
else ()
99
126
message (STATUS "Using 32 thread shuffle function code path" )
100
127
endif ()
101
128
102
129
if (ETHASHCUDA )
103
- if (USE_DEFAULT_FLAGS )
104
- message (STATUS "Using NVIDIA CUDA flags" )
105
- set (CMAKE_CXX_FLAGS "${NVCC_CXX_FLAGS} " )
130
+ message (STATUS "Compiling for NVCC" )
131
+ if (NOT "${CMAKE_CXX_FLAGS} " STREQUAL "" AND NOT "${OVERRIDE_GENERAL_CXX_FLAGS} " STREQUAL "" )
132
+ message (FATAL_ERROR "Both CMAKE_CXX_FLAGS and OVERRIDE_GENERAL_CXX_FLAGS cannot be passed in together" )
133
+ elseif ("${CMAKE_CXX_FLAGS} " STREQUAL "" AND "${OVERRIDE_GENERAL_CXX_FLAGS} " STREQUAL "" )
134
+ message (STATUS "Using DEFAULT compilation flags" )
135
+ set (CMAKE_CXX_FLAGS "${NVCC_DEF_COMBINED_FLAGS} " )
136
+ elseif (NOT "${OVERRIDE_GENERAL_CXX_FLAGS} " STREQUAL "" )
137
+ message (STATUS "OVERRIDING GENERAL compilation flags" )
138
+ set (CMAKE_CXX_FLAGS "${OVERRIDE_GENERAL_CXX_FLAGS} " )
139
+ string (APPEND CMAKE_CXX_FLAGS ${NVCC_WL_CXX_FLAGS} )
140
+ elseif (NOT "${CMAKE_CXX_FLAGS} " STREQUAL "" )
141
+ message (STATUS "OVERRIDING GENERAL and WORKLOAD SPECIFIC compilation flags" )
106
142
endif ()
107
143
endif ()
108
144
109
145
if (ETHASHHIP )
110
- if (USE_DEFAULT_FLAGS )
111
- message (STATUS "Using ROCM flags" )
112
- set (CMAKE_CXX_FLAGS "${ROCM_CXX_FLAGS} " )
146
+ if (NOT "${CMAKE_CXX_FLAGS} " STREQUAL "" AND NOT "${OVERRIDE_GENERAL_CXX_FLAGS} " STREQUAL "" )
147
+ message (FATAL_ERROR "Both CMAKE_CXX_FLAGS and OVERRIDE_GENERAL_CXX_FLAGS cannot be passed in together" )
148
+ elseif ("${CMAKE_CXX_FLAGS} " STREQUAL "" AND "${OVERRIDE_GENERAL_CXX_FLAGS} " STREQUAL "" )
149
+ message (STATUS "Using DEFAULT compilation flags" )
150
+ set (CMAKE_CXX_FLAGS "${ROCM_DEF_COMBINED_FLAGS} " )
151
+ elseif (NOT "${OVERRIDE_GENERAL_CXX_FLAGS} " STREQUAL "" )
152
+ message (STATUS "OVERRIDING GENERAL compilation flags" )
153
+ set (CMAKE_CXX_FLAGS "${OVERRIDE_GENERAL_CXX_FLAGS} " )
154
+ string (APPEND CMAKE_CXX_FLAGS ${ROCM_WL_CXX_FLAGS} )
155
+ elseif (NOT "${CMAKE_CXX_FLAGS} " STREQUAL "" )
156
+ message (STATUS "OVERRIDING GENERAL and WORKLOAD SPECIFIC compilation flags" )
113
157
endif ()
114
158
115
159
if (USE_ROCM_PATH )
@@ -187,9 +231,6 @@ include_directories(${Boost_INCLUDE_DIRS}/include ${OPENSSL_INCLUDE_DIR} ${jsonc
187
231
188
232
if (ETHASHCUDA )
189
233
add_subdirectory (libethash-cuda )
190
- if (USE_DEFAULT_FLAGS )
191
- set (CMAKE_CXX_FLAGS "${NVCC_CXX_FLAGS} " )
192
- endif ()
193
234
endif ()
194
235
if (ETHASHHIP )
195
236
add_subdirectory (libethash-hip )
0 commit comments