yum-mirror/VkFFT

git clone https://git.yummers.dev/yum-mirror/VkFFT

yumBump glslang version4d140b8

master
16.6 KiB331 linesraw
1cmake_minimum_required(VERSION 3.11)
2project(VkFFT_TestSuite)
3
4if(NOT CMAKE_BUILD_TYPE)
5set(CMAKE_CONFIGURATION_TYPES "Release" CACHE STRING "" FORCE)
6set(CMAKE_BUILD_TYPE "Release" CACHE STRING "" FORCE)
7endif()
8
9if (NOT DEFINED GLSLANG_GIT_TAG)
10	set(GLSLANG_GIT_TAG "16.6.0")
11endif()
12
13include(FetchContent)
14set(VKFFT_BACKEND 0 CACHE STRING "0 - Vulkan, 1 - CUDA, 2 - HIP, 3 - OpenCL, 4 - Level Zero, 5 - Metal")
15
16if(${VKFFT_BACKEND} EQUAL 1)
17	option(build_VkFFT_cuFFT_benchmark "Build VkFFT cuFFT benchmark" ON)
18else()
19	option(build_VkFFT_cuFFT_benchmark "Build VkFFT cuFFT benchmark" OFF)
20endif()
21
22if(${VKFFT_BACKEND} EQUAL 2)
23	option(build_VkFFT_rocFFT_benchmark "Build VkFFT rocFFT benchmark" ON)
24else()
25	option(build_VkFFT_rocFFT_benchmark "Build VkFFT rocFFT benchmark" OFF)
26endif()
27
28option(build_VkFFT_FFTW_precision "Build VkFFT FFTW precision comparison" OFF)
29option(VkFFT_use_FP128_Bluestein_RaderFFT "Use LD for Bluestein and Rader FFT kernel calculations. Currently requires LD FFT library, like FFTWl, will be reworked" OFF)
30option(VkFFT_use_FP128_double_double "Build VkFFT quad double-double" OFF)
31
32if (MSVC)
33	set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT ${PROJECT_NAME})
34	add_definitions(-D_CRT_SECURE_NO_WARNINGS)
35endif()
36if(build_VkFFT_FFTW_precision)
37	add_executable(${PROJECT_NAME} VkFFT_TestSuite.cpp
38		benchmark_scripts/vkFFT_scripts/src/utils_VkFFT.cpp
39		benchmark_scripts/vkFFT_scripts/src/user_benchmark_VkFFT.cpp
40		benchmark_scripts/vkFFT_scripts/src/sample_0_benchmark_VkFFT_single.cpp
41		benchmark_scripts/vkFFT_scripts/src/sample_1_benchmark_VkFFT_double.cpp
42		benchmark_scripts/vkFFT_scripts/src/sample_2_benchmark_VkFFT_half.cpp
43		benchmark_scripts/vkFFT_scripts/src/sample_3_benchmark_VkFFT_single_3d.cpp
44		benchmark_scripts/vkFFT_scripts/src/sample_4_benchmark_VkFFT_single_3d_zeropadding.cpp
45		benchmark_scripts/vkFFT_scripts/src/sample_5_benchmark_VkFFT_single_disableReorderFourStep.cpp
46		benchmark_scripts/vkFFT_scripts/src/sample_6_benchmark_VkFFT_single_r2c.cpp
47		benchmark_scripts/vkFFT_scripts/src/sample_7_benchmark_VkFFT_single_Bluestein.cpp
48		benchmark_scripts/vkFFT_scripts/src/sample_8_benchmark_VkFFT_double_Bluestein.cpp
49		benchmark_scripts/vkFFT_scripts/src/sample_9_benchmark_VkFFT_quadDoubleDouble.cpp
50		benchmark_scripts/vkFFT_scripts/src/sample_10_benchmark_VkFFT_single_multipleBuffers.cpp
51		benchmark_scripts/vkFFT_scripts/src/sample_11_precision_VkFFT_single.cpp
52		benchmark_scripts/vkFFT_scripts/src/sample_12_precision_VkFFT_double.cpp
53		benchmark_scripts/vkFFT_scripts/src/sample_13_precision_VkFFT_half.cpp
54		benchmark_scripts/vkFFT_scripts/src/sample_14_precision_VkFFT_single_nonPow2.cpp
55		benchmark_scripts/vkFFT_scripts/src/sample_15_precision_VkFFT_single_r2c.cpp
56		benchmark_scripts/vkFFT_scripts/src/sample_16_precision_VkFFT_single_dct.cpp
57		benchmark_scripts/vkFFT_scripts/src/sample_17_precision_VkFFT_double_dct.cpp
58		benchmark_scripts/vkFFT_scripts/src/sample_18_precision_VkFFT_double_nonPow2.cpp
59		benchmark_scripts/vkFFT_scripts/src/sample_19_precision_VkFFT_quadDoubleDouble_nonPow2.cpp
60		benchmark_scripts/vkFFT_scripts/src/sample_50_convolution_VkFFT_single_1d_matrix.cpp
61		benchmark_scripts/vkFFT_scripts/src/sample_51_convolution_VkFFT_single_3d_matrix_zeropadding_r2c.cpp
62		benchmark_scripts/vkFFT_scripts/src/sample_52_convolution_VkFFT_single_2d_batched_r2c.cpp
63		benchmark_scripts/vkFFT_scripts/src/sample_100_benchmark_VkFFT_single_nd_dct.cpp
64		benchmark_scripts/vkFFT_scripts/src/sample_101_benchmark_VkFFT_double_nd_dct.cpp
65		benchmark_scripts/vkFFT_scripts/src/sample_1000_benchmark_VkFFT_single_2_4096.cpp
66		benchmark_scripts/vkFFT_scripts/src/sample_1001_benchmark_VkFFT_double_2_4096.cpp
67		benchmark_scripts/vkFFT_scripts/src/sample_1002_benchmark_VkFFT_half_2_4096.cpp
68		benchmark_scripts/vkFFT_scripts/src/sample_1003_benchmark_VkFFT_single_3d_2_512.cpp
69		benchmark_scripts/vkFFT_scripts/src/sample_1004_benchmark_VkFFT_quadDoubleDouble_2_4096.cpp)
70else()		
71	add_executable(${PROJECT_NAME} VkFFT_TestSuite.cpp
72		benchmark_scripts/vkFFT_scripts/src/utils_VkFFT.cpp
73		benchmark_scripts/vkFFT_scripts/src/user_benchmark_VkFFT.cpp
74		benchmark_scripts/vkFFT_scripts/src/sample_0_benchmark_VkFFT_single.cpp
75		benchmark_scripts/vkFFT_scripts/src/sample_1_benchmark_VkFFT_double.cpp
76		benchmark_scripts/vkFFT_scripts/src/sample_2_benchmark_VkFFT_half.cpp
77		benchmark_scripts/vkFFT_scripts/src/sample_3_benchmark_VkFFT_single_3d.cpp
78		benchmark_scripts/vkFFT_scripts/src/sample_4_benchmark_VkFFT_single_3d_zeropadding.cpp
79		benchmark_scripts/vkFFT_scripts/src/sample_5_benchmark_VkFFT_single_disableReorderFourStep.cpp
80		benchmark_scripts/vkFFT_scripts/src/sample_6_benchmark_VkFFT_single_r2c.cpp
81		benchmark_scripts/vkFFT_scripts/src/sample_7_benchmark_VkFFT_single_Bluestein.cpp
82		benchmark_scripts/vkFFT_scripts/src/sample_8_benchmark_VkFFT_double_Bluestein.cpp
83		benchmark_scripts/vkFFT_scripts/src/sample_9_benchmark_VkFFT_quadDoubleDouble.cpp
84		benchmark_scripts/vkFFT_scripts/src/sample_10_benchmark_VkFFT_single_multipleBuffers.cpp
85		benchmark_scripts/vkFFT_scripts/src/sample_50_convolution_VkFFT_single_1d_matrix.cpp
86		benchmark_scripts/vkFFT_scripts/src/sample_51_convolution_VkFFT_single_3d_matrix_zeropadding_r2c.cpp
87		benchmark_scripts/vkFFT_scripts/src/sample_52_convolution_VkFFT_single_2d_batched_r2c.cpp
88		benchmark_scripts/vkFFT_scripts/src/sample_100_benchmark_VkFFT_single_nd_dct.cpp
89		benchmark_scripts/vkFFT_scripts/src/sample_101_benchmark_VkFFT_double_nd_dct.cpp
90		benchmark_scripts/vkFFT_scripts/src/sample_1000_benchmark_VkFFT_single_2_4096.cpp
91		benchmark_scripts/vkFFT_scripts/src/sample_1001_benchmark_VkFFT_double_2_4096.cpp
92		benchmark_scripts/vkFFT_scripts/src/sample_1002_benchmark_VkFFT_half_2_4096.cpp
93		benchmark_scripts/vkFFT_scripts/src/sample_1003_benchmark_VkFFT_single_3d_2_512.cpp
94		benchmark_scripts/vkFFT_scripts/src/sample_1004_benchmark_VkFFT_quadDoubleDouble_2_4096.cpp)
95endif()
96target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_11)  
97add_definitions(-DVKFFT_BACKEND=${VKFFT_BACKEND})
98if(${VKFFT_BACKEND} EQUAL 0)
99	find_package(Vulkan REQUIRED)
100elseif(${VKFFT_BACKEND} EQUAL 1)
101	find_package(CUDA 9.0 REQUIRED)
102	enable_language(CUDA)
103if (MSVC)
104else()
105		set_source_files_properties(VkFFT_TestSuite.cpp PROPERTIES LANGUAGE CUDA)
106endif()
107	set_property(TARGET ${PROJECT_NAME} PROPERTY CUDA_ARCHITECTURES 60 70 75 80 86)
108	target_compile_options(${PROJECT_NAME} PUBLIC "$<$<COMPILE_LANGUAGE:CUDA>:SHELL:
109	-std=c++11
110	-DVKFFT_BACKEND=${VKFFT_BACKEND}
111	-gencode arch=compute_60,code=compute_60
112	-gencode arch=compute_70,code=compute_70 
113	-gencode arch=compute_75,code=compute_75 
114	-gencode arch=compute_80,code=compute_80 
115	-gencode arch=compute_86,code=compute_86>")
116	set_target_properties(${PROJECT_NAME} PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
117	set_target_properties(${PROJECT_NAME} PROPERTIES CUDA_RESOLVE_DEVICE_SYMBOLS ON)
118elseif(${VKFFT_BACKEND} EQUAL 2)
119	list(APPEND CMAKE_PREFIX_PATH /opt/rocm/hip /opt/rocm)
120	find_package(hip)
121	#target_compile_definitions(${PROJECT_NAME} PUBLIC -DVKFFT_OLD_ROCM) #ROCm versions before 4.5 needed kernel include of hiprtc
122elseif(${VKFFT_BACKEND} EQUAL 3)
123	find_package(OpenCL REQUIRED)
124elseif(${VKFFT_BACKEND} EQUAL 4)
125	set(LevelZero_LIBRARY "/usr/lib/x86_64-linux-gnu/")
126	set(LevelZero_INCLUDE_DIR "/usr/include/")
127	find_library(
128		LevelZero_LIB
129		NAMES "ze_loader"
130		PATHS ${LevelZero_LIBRARY}
131		PATH_SUFFIXES "lib" "lib64"
132		NO_DEFAULT_PATH
133	  )
134	find_path(
135		LevelZero_INCLUDES
136		NAMES "ze_api.h"
137		PATHS ${LevelZero_INCLUDE_DIR}
138		PATH_SUFFIXES "include" "level_zero"
139		NO_DEFAULT_PATH
140	  )
141	target_include_directories(${PROJECT_NAME} PUBLIC ${LevelZero_INCLUDES})
142elseif(${VKFFT_BACKEND} EQUAL 5)
143	add_compile_options(-WMTL_IGNORE_WARNINGS)
144	find_library(FOUNDATION_LIB Foundation REQUIRED)
145	find_library(QUARTZ_CORE_LIB QuartzCore REQUIRED)	
146	find_library(METAL_LIB Metal REQUIRED)
147	target_include_directories(${PROJECT_NAME} PUBLIC "metal-cpp/")
148endif()
149
150target_compile_definitions(${PROJECT_NAME} PUBLIC -DVK_API_VERSION=11)#10 - Vulkan 1.0, 11 - Vulkan 1.1, 12 - Vulkan 1.2 
151if(VkFFT_use_FP128_Bluestein_RaderFFT)
152        target_compile_definitions(${PROJECT_NAME} PUBLIC -DVkFFT_use_FP128_Bluestein_RaderFFT)
153endif()  
154if(VkFFT_use_FP128_double_double)
155	target_compile_definitions(${PROJECT_NAME} PUBLIC -DVKFFT_USE_DOUBLEDOUBLE_FP128)
156	target_link_libraries(${PROJECT_NAME} PUBLIC quadmath)
157endif()
158if(${VKFFT_BACKEND} EQUAL 0)
159	set(ENABLE_OPT 0)
160	FetchContent_Declare(
161		glslang-main
162		GIT_TAG ${GLSLANG_GIT_TAG}
163		GIT_REPOSITORY https://github.com/KhronosGroup/glslang
164		SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/glslang-main
165	)
166	FetchContent_GetProperties(glslang-main)
167	if(NOT glslang-main_POPULATED)
168		FetchContent_Populate(glslang-main)
169	endif()
170	target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/glslang-main/glslang/Include/)
171	add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/glslang-main)
172endif()
173
174add_library(VkFFT INTERFACE)
175target_include_directories(VkFFT INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/vkFFT/)
176target_compile_definitions(VkFFT INTERFACE -DVKFFT_BACKEND=${VKFFT_BACKEND})
177
178add_library(half INTERFACE)
179target_include_directories(half INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/half_lib/)
180
181target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/benchmark_scripts/vkFFT_scripts/include/)
182
183if(${VKFFT_BACKEND} EQUAL 0)
184	target_link_libraries(${PROJECT_NAME} PUBLIC SPIRV glslang Vulkan::Vulkan VkFFT half)
185elseif(${VKFFT_BACKEND} EQUAL 1)
186	find_library(CUDA_NVRTC_LIB libnvrtc nvrtc HINTS "${CUDA_TOOLKIT_ROOT_DIR}/lib64" "${LIBNVRTC_LIBRARY_DIR}" "${CUDA_TOOLKIT_ROOT_DIR}/lib/x64" /usr/lib64 /usr/local/cuda/lib64)
187	add_definitions(-DCUDA_TOOLKIT_ROOT_DIR="${CUDA_TOOLKIT_ROOT_DIR}")
188	target_link_libraries(${PROJECT_NAME} PUBLIC ${CUDA_LIBRARIES} cuda ${CUDA_NVRTC_LIB} VkFFT half)
189	target_include_directories(${PROJECT_NAME} PUBLIC ${CUDA_INCLUDE_DIRS})
190elseif(${VKFFT_BACKEND} EQUAL 2)
191	target_link_libraries(${PROJECT_NAME} PUBLIC hip::host VkFFT half)
192elseif(${VKFFT_BACKEND} EQUAL 3)
193	target_link_libraries(${PROJECT_NAME} PUBLIC OpenCL::OpenCL VkFFT half)
194elseif(${VKFFT_BACKEND} EQUAL 4)
195	target_link_libraries(${PROJECT_NAME} PUBLIC ze_loader VkFFT half)
196elseif(${VKFFT_BACKEND} EQUAL 5)
197	target_link_libraries(${PROJECT_NAME} PUBLIC ${FOUNDATION_LIB} ${QUARTZ_CORE_LIB} ${METAL_LIB} VkFFT half)
198endif()
199
200if(build_VkFFT_FFTW_precision OR VkFFT_use_FP128_Bluestein_RaderFFT)
201	add_definitions(-DUSE_FFTW)
202	set(FFTW3_LIB_DIR "/usr/lib/x86_64-linux-gnu/")
203	set(FFTW3_INCLUDE_DIR "/usr/include/")
204	find_library(
205		FFTW_LIB
206		NAMES "libfftw3-3" "fftw3" 
207		PATHS ${FFTW3_LIB_DIR}
208		PATH_SUFFIXES "lib" "lib64"
209		NO_DEFAULT_PATH
210	  )
211	find_path(
212		FFTW_INCLUDES
213		NAMES "fftw3.h"
214		PATHS ${FFTW3_INCLUDE_DIR}
215		PATH_SUFFIXES "include"
216		NO_DEFAULT_PATH
217	  )
218        target_include_directories(${PROJECT_NAME} PUBLIC ${FFTW_INCLUDES})
219if(VkFFT_use_FP128_double_double)
220	find_library(
221		FFTWQ_LIB
222		NAMES "libfftw3q" "fftw3q"
223		PATHS ${FFTW3_LIB_DIR}
224		PATH_SUFFIXES "lib" "lib64"
225		NO_DEFAULT_PATH
226	  )
227	  target_link_libraries (${PROJECT_NAME} PUBLIC ${FFTWQ_LIB})
228endif()
229if(VkFFT_use_FP128_Bluestein_RaderFFT)        
230	find_library(
231		FFTWL_LIB
232		NAMES "libfftw3l" "fftw3l"
233		PATHS ${FFTW3_LIB_DIR}
234		PATH_SUFFIXES "lib" "lib64"
235		NO_DEFAULT_PATH
236	  )
237	target_link_libraries (${PROJECT_NAME} PUBLIC ${FFTWL_LIB})
238endif()
239	target_link_libraries (${PROJECT_NAME} PUBLIC ${FFTW_LIB})
240endif()
241
242if(build_VkFFT_cuFFT_benchmark)
243	add_definitions(-DUSE_cuFFT)
244	find_package(CUDA 9.0 REQUIRED)
245	enable_language(CUDA)	
246	if(build_VkFFT_FFTW_precision)
247		add_library(cuFFT_scripts STATIC
248		benchmark_scripts/cuFFT_scripts/src/user_benchmark_cuFFT.cu
249		benchmark_scripts/cuFFT_scripts/src/sample_0_benchmark_cuFFT_single.cu
250		benchmark_scripts/cuFFT_scripts/src/sample_1_benchmark_cuFFT_double.cu
251		benchmark_scripts/cuFFT_scripts/src/sample_2_benchmark_cuFFT_half.cu
252		benchmark_scripts/cuFFT_scripts/src/sample_3_benchmark_cuFFT_single_3d.cu
253		benchmark_scripts/cuFFT_scripts/src/sample_6_benchmark_cuFFT_single_r2c.cu
254		benchmark_scripts/cuFFT_scripts/src/sample_7_benchmark_cuFFT_single_Bluestein.cu
255		benchmark_scripts/cuFFT_scripts/src/sample_8_benchmark_cuFFT_double_Bluestein.cu
256		benchmark_scripts/cuFFT_scripts/src/sample_1000_benchmark_cuFFT_single_2_4096.cu
257		benchmark_scripts/cuFFT_scripts/src/sample_1001_benchmark_cuFFT_double_2_4096.cu
258		benchmark_scripts/cuFFT_scripts/src/sample_1003_benchmark_cuFFT_single_3d_2_512.cu
259		benchmark_scripts/cuFFT_scripts/src/precision_cuFFT_single.cu
260		benchmark_scripts/cuFFT_scripts/src/precision_cuFFT_r2c.cu
261		benchmark_scripts/cuFFT_scripts/src/precision_cuFFT_double.cu
262		benchmark_scripts/cuFFT_scripts/src/precision_cuFFT_half.cu)
263	else()
264		add_library(cuFFT_scripts STATIC
265		benchmark_scripts/cuFFT_scripts/src/user_benchmark_cuFFT.cu
266		benchmark_scripts/cuFFT_scripts/src/sample_0_benchmark_cuFFT_single.cu
267		benchmark_scripts/cuFFT_scripts/src/sample_1_benchmark_cuFFT_double.cu
268		benchmark_scripts/cuFFT_scripts/src/sample_2_benchmark_cuFFT_half.cu
269		benchmark_scripts/cuFFT_scripts/src/sample_3_benchmark_cuFFT_single_3d.cu
270		benchmark_scripts/cuFFT_scripts/src/sample_6_benchmark_cuFFT_single_r2c.cu
271		benchmark_scripts/cuFFT_scripts/src/sample_7_benchmark_cuFFT_single_Bluestein.cu
272		benchmark_scripts/cuFFT_scripts/src/sample_8_benchmark_cuFFT_double_Bluestein.cu
273		benchmark_scripts/cuFFT_scripts/src/sample_1000_benchmark_cuFFT_single_2_4096.cu
274		benchmark_scripts/cuFFT_scripts/src/sample_1001_benchmark_cuFFT_double_2_4096.cu
275		benchmark_scripts/cuFFT_scripts/src/sample_1003_benchmark_cuFFT_single_3d_2_512.cu)
276	endif()
277	set_property(TARGET cuFFT_scripts PROPERTY CUDA_ARCHITECTURES 60 70 75 80 86)
278	CUDA_ADD_CUFFT_TO_TARGET(cuFFT_scripts)
279	target_compile_options(cuFFT_scripts PRIVATE "$<$<COMPILE_LANGUAGE:CUDA>:SHELL:
280	-std=c++11
281	-gencode arch=compute_60,code=compute_60
282	-gencode arch=compute_70,code=compute_70 
283	-gencode arch=compute_75,code=compute_75 
284	-gencode arch=compute_80,code=compute_80 
285	-gencode arch=compute_86,code=compute_86>")
286	target_include_directories(cuFFT_scripts PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/benchmark_scripts/cuFFT_scripts/include)
287	target_include_directories(cuFFT_scripts PUBLIC ${CUDA_INCLUDE_DIRS})
288	set_target_properties(cuFFT_scripts PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
289	set_target_properties(cuFFT_scripts PROPERTIES CUDA_RESOLVE_DEVICE_SYMBOLS ON)
290	target_link_libraries(${PROJECT_NAME} PUBLIC cuFFT_scripts)
291endif()
292if(build_VkFFT_rocFFT_benchmark)
293	add_definitions(-DUSE_rocFFT)
294	list(APPEND CMAKE_PREFIX_PATH /opt/rocm/hip /opt/rocm)
295	find_package(hip)
296    find_package(hipfft)
297
298	if(build_VkFFT_FFTW_precision)
299		add_library(rocFFT_scripts STATIC
300		benchmark_scripts/rocFFT_scripts/src/user_benchmark_rocFFT.cpp
301		benchmark_scripts/rocFFT_scripts/src/sample_0_benchmark_rocFFT_single.cpp
302		benchmark_scripts/rocFFT_scripts/src/sample_1_benchmark_rocFFT_double.cpp
303		benchmark_scripts/rocFFT_scripts/src/sample_3_benchmark_rocFFT_single_3d.cpp
304		benchmark_scripts/rocFFT_scripts/src/sample_6_benchmark_rocFFT_single_r2c.cpp
305		benchmark_scripts/rocFFT_scripts/src/sample_7_benchmark_rocFFT_single_Bluestein.cpp
306		benchmark_scripts/rocFFT_scripts/src/sample_8_benchmark_rocFFT_double_Bluestein.cpp
307		benchmark_scripts/rocFFT_scripts/src/sample_1000_benchmark_rocFFT_single_2_4096.cpp
308		benchmark_scripts/rocFFT_scripts/src/sample_1001_benchmark_rocFFT_double_2_4096.cpp
309		benchmark_scripts/rocFFT_scripts/src/sample_1003_benchmark_rocFFT_single_3d_2_512.cpp
310		benchmark_scripts/rocFFT_scripts/src/precision_rocFFT_single.cpp
311		benchmark_scripts/rocFFT_scripts/src/precision_rocFFT_r2c.cpp
312		benchmark_scripts/rocFFT_scripts/src/precision_rocFFT_double.cpp)
313	else()
314		add_library(rocFFT_scripts STATIC
315		benchmark_scripts/rocFFT_scripts/src/user_benchmark_rocFFT.cpp
316		benchmark_scripts/rocFFT_scripts/src/sample_0_benchmark_rocFFT_single.cpp
317		benchmark_scripts/rocFFT_scripts/src/sample_1_benchmark_rocFFT_double.cpp
318		benchmark_scripts/rocFFT_scripts/src/sample_3_benchmark_rocFFT_single_3d.cpp
319		benchmark_scripts/rocFFT_scripts/src/sample_6_benchmark_rocFFT_single_r2c.cpp
320		benchmark_scripts/rocFFT_scripts/src/sample_7_benchmark_rocFFT_single_Bluestein.cpp
321		benchmark_scripts/rocFFT_scripts/src/sample_8_benchmark_rocFFT_double_Bluestein.cpp
322		benchmark_scripts/rocFFT_scripts/src/sample_1000_benchmark_rocFFT_single_2_4096.cpp
323		benchmark_scripts/rocFFT_scripts/src/sample_1001_benchmark_rocFFT_double_2_4096.cpp
324		benchmark_scripts/rocFFT_scripts/src/sample_1003_benchmark_rocFFT_single_3d_2_512.cpp)
325	endif()
326	target_include_directories(rocFFT_scripts PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/benchmark_scripts/rocFFT_scripts/include)
327	target_link_libraries(rocFFT_scripts PRIVATE hip::host hip::hipfft)
328	target_link_libraries(${PROJECT_NAME} PUBLIC rocFFT_scripts)
329endif()
330install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/vkFFT/" DESTINATION include)
331install(TARGETS ${PROJECT_NAME} DESTINATION bin)