yum-mirror/VkFFT

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

Dmitrii Tolmachevsingle kernel - multiple batches convolution support (#159) -enabled through singleKernelMultipleBatches parameter -kernel batching is controlled through coordinateFeatures -number of input/output systems is controlled through numberBatches -sample 53 shows the usage of this optione2d3d57

develop
16.9 KiB339 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 "12.3.1")
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_53_convolution_VkFFT_single_2d_Nimages_1kernel.cpp
64		benchmark_scripts/vkFFT_scripts/src/sample_100_benchmark_VkFFT_single_nd_dct.cpp
65		benchmark_scripts/vkFFT_scripts/src/sample_101_benchmark_VkFFT_double_nd_dct.cpp
66		benchmark_scripts/vkFFT_scripts/src/sample_1000_benchmark_VkFFT_single_2_4096.cpp
67		benchmark_scripts/vkFFT_scripts/src/sample_1001_benchmark_VkFFT_double_2_4096.cpp
68		benchmark_scripts/vkFFT_scripts/src/sample_1002_benchmark_VkFFT_half_2_4096.cpp
69		benchmark_scripts/vkFFT_scripts/src/sample_1003_benchmark_VkFFT_single_3d_2_512.cpp
70		benchmark_scripts/vkFFT_scripts/src/sample_1004_benchmark_VkFFT_quadDoubleDouble_2_4096.cpp)
71else()		
72	add_executable(${PROJECT_NAME} VkFFT_TestSuite.cpp
73		benchmark_scripts/vkFFT_scripts/src/utils_VkFFT.cpp
74		benchmark_scripts/vkFFT_scripts/src/user_benchmark_VkFFT.cpp
75		benchmark_scripts/vkFFT_scripts/src/sample_0_benchmark_VkFFT_single.cpp
76		benchmark_scripts/vkFFT_scripts/src/sample_1_benchmark_VkFFT_double.cpp
77		benchmark_scripts/vkFFT_scripts/src/sample_2_benchmark_VkFFT_half.cpp
78		benchmark_scripts/vkFFT_scripts/src/sample_3_benchmark_VkFFT_single_3d.cpp
79		benchmark_scripts/vkFFT_scripts/src/sample_4_benchmark_VkFFT_single_3d_zeropadding.cpp
80		benchmark_scripts/vkFFT_scripts/src/sample_5_benchmark_VkFFT_single_disableReorderFourStep.cpp
81		benchmark_scripts/vkFFT_scripts/src/sample_6_benchmark_VkFFT_single_r2c.cpp
82		benchmark_scripts/vkFFT_scripts/src/sample_7_benchmark_VkFFT_single_Bluestein.cpp
83		benchmark_scripts/vkFFT_scripts/src/sample_8_benchmark_VkFFT_double_Bluestein.cpp
84		benchmark_scripts/vkFFT_scripts/src/sample_9_benchmark_VkFFT_quadDoubleDouble.cpp
85		benchmark_scripts/vkFFT_scripts/src/sample_10_benchmark_VkFFT_single_multipleBuffers.cpp
86		benchmark_scripts/vkFFT_scripts/src/sample_50_convolution_VkFFT_single_1d_matrix.cpp
87		benchmark_scripts/vkFFT_scripts/src/sample_51_convolution_VkFFT_single_3d_matrix_zeropadding_r2c.cpp
88		benchmark_scripts/vkFFT_scripts/src/sample_52_convolution_VkFFT_single_2d_batched_r2c.cpp
89		benchmark_scripts/vkFFT_scripts/src/sample_53_convolution_VkFFT_single_2d_Nimages_1kernel.cpp
90		benchmark_scripts/vkFFT_scripts/src/sample_100_benchmark_VkFFT_single_nd_dct.cpp
91		benchmark_scripts/vkFFT_scripts/src/sample_101_benchmark_VkFFT_double_nd_dct.cpp
92		benchmark_scripts/vkFFT_scripts/src/sample_1000_benchmark_VkFFT_single_2_4096.cpp
93		benchmark_scripts/vkFFT_scripts/src/sample_1001_benchmark_VkFFT_double_2_4096.cpp
94		benchmark_scripts/vkFFT_scripts/src/sample_1002_benchmark_VkFFT_half_2_4096.cpp
95		benchmark_scripts/vkFFT_scripts/src/sample_1003_benchmark_VkFFT_single_3d_2_512.cpp
96		benchmark_scripts/vkFFT_scripts/src/sample_1004_benchmark_VkFFT_quadDoubleDouble_2_4096.cpp)
97endif()
98target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_11)  
99add_definitions(-DVKFFT_BACKEND=${VKFFT_BACKEND})
100if(${VKFFT_BACKEND} EQUAL 0)
101	find_package(Vulkan REQUIRED)
102elseif(${VKFFT_BACKEND} EQUAL 1)
103	find_package(CUDA 9.0 REQUIRED)
104	enable_language(CUDA)
105if (MSVC)
106else()
107		set_source_files_properties(VkFFT_TestSuite.cpp PROPERTIES LANGUAGE CUDA)
108endif()
109	set_property(TARGET ${PROJECT_NAME} PROPERTY CUDA_ARCHITECTURES 60 70 75 80 86)
110	target_compile_options(${PROJECT_NAME} PUBLIC "$<$<COMPILE_LANGUAGE:CUDA>:SHELL:
111	-std=c++11
112	-DVKFFT_BACKEND=${VKFFT_BACKEND}
113	-gencode arch=compute_60,code=compute_60
114	-gencode arch=compute_70,code=compute_70 
115	-gencode arch=compute_75,code=compute_75 
116	-gencode arch=compute_80,code=compute_80 
117	-gencode arch=compute_86,code=compute_86>")
118	set_target_properties(${PROJECT_NAME} PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
119	set_target_properties(${PROJECT_NAME} PROPERTIES CUDA_RESOLVE_DEVICE_SYMBOLS ON)
120elseif(${VKFFT_BACKEND} EQUAL 2)
121	list(APPEND CMAKE_PREFIX_PATH /opt/rocm/hip /opt/rocm)
122	find_package(hip)
123	#target_compile_definitions(${PROJECT_NAME} PUBLIC -DVKFFT_OLD_ROCM) #ROCm versions before 4.5 needed kernel include of hiprtc
124elseif(${VKFFT_BACKEND} EQUAL 3)
125	find_package(OpenCL REQUIRED)
126elseif(${VKFFT_BACKEND} EQUAL 4)
127	set(LevelZero_LIBRARY "/usr/lib/x86_64-linux-gnu/")
128	set(LevelZero_INCLUDE_DIR "/usr/include/")
129	find_library(
130		LevelZero_LIB
131		NAMES "ze_loader"
132		PATHS ${LevelZero_LIBRARY}
133		PATH_SUFFIXES "lib" "lib64"
134		NO_DEFAULT_PATH
135	  )
136	find_path(
137		LevelZero_INCLUDES
138		NAMES "ze_api.h"
139		PATHS ${LevelZero_INCLUDE_DIR}
140		PATH_SUFFIXES "include" "level_zero"
141		NO_DEFAULT_PATH
142	  )
143	target_include_directories(${PROJECT_NAME} PUBLIC ${LevelZero_INCLUDES})
144elseif(${VKFFT_BACKEND} EQUAL 5)
145	add_compile_options(-WMTL_IGNORE_WARNINGS)
146	find_library(FOUNDATION_LIB Foundation REQUIRED)
147	find_library(QUARTZ_CORE_LIB QuartzCore REQUIRED)	
148	find_library(METAL_LIB Metal REQUIRED)
149	target_include_directories(${PROJECT_NAME} PUBLIC "metal-cpp/")
150endif()
151
152target_compile_definitions(${PROJECT_NAME} PUBLIC -DVK_API_VERSION=11)#10 - Vulkan 1.0, 11 - Vulkan 1.1, 12 - Vulkan 1.2 
153if(VkFFT_use_FP128_Bluestein_RaderFFT)
154        target_compile_definitions(${PROJECT_NAME} PUBLIC -DVkFFT_use_FP128_Bluestein_RaderFFT)
155endif()  
156if(VkFFT_use_FP128_double_double)
157	target_compile_definitions(${PROJECT_NAME} PUBLIC -DVKFFT_USE_DOUBLEDOUBLE_FP128)
158	target_link_libraries(${PROJECT_NAME} PUBLIC quadmath)
159endif()
160if(${VKFFT_BACKEND} EQUAL 0)
161	find_package(glslang CONFIG)
162	if (NOT ${glslang_FOUND})
163		set(ENABLE_OPT 0)
164		FetchContent_Declare(
165			glslang-main
166			GIT_TAG ${GLSLANG_GIT_TAG}
167			GIT_REPOSITORY https://github.com/KhronosGroup/glslang
168			SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/glslang-main
169		)
170		FetchContent_GetProperties(glslang-main)
171		if(NOT glslang-main_POPULATED)
172			FetchContent_Populate(glslang-main)
173		endif()
174		add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/glslang-main)
175	endif (NOT ${glslang_FOUND})
176endif()
177
178add_library(VkFFT INTERFACE)
179target_include_directories(VkFFT INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/vkFFT/)
180target_compile_definitions(VkFFT INTERFACE -DVKFFT_BACKEND=${VKFFT_BACKEND})
181
182add_library(half INTERFACE)
183target_include_directories(half INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/half_lib/)
184
185target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/benchmark_scripts/vkFFT_scripts/include/)
186
187if(${VKFFT_BACKEND} EQUAL 0)
188	if (${glslang_FOUND})
189		target_link_libraries(${PROJECT_NAME} PUBLIC glslang::SPIRV glslang::glslang Vulkan::Vulkan VkFFT half)
190	else (${glslang_FOUND})
191		target_link_libraries(${PROJECT_NAME} PUBLIC SPIRV glslang Vulkan::Vulkan VkFFT half)
192	endif (${glslang_FOUND})
193elseif(${VKFFT_BACKEND} EQUAL 1)
194	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)
195	add_definitions(-DCUDA_TOOLKIT_ROOT_DIR="${CUDA_TOOLKIT_ROOT_DIR}")
196	target_link_libraries(${PROJECT_NAME} PUBLIC ${CUDA_LIBRARIES} cuda ${CUDA_NVRTC_LIB} VkFFT half)
197	target_include_directories(${PROJECT_NAME} PUBLIC ${CUDA_INCLUDE_DIRS})
198elseif(${VKFFT_BACKEND} EQUAL 2)
199	target_link_libraries(${PROJECT_NAME} PUBLIC hip::host VkFFT half)
200elseif(${VKFFT_BACKEND} EQUAL 3)
201	target_link_libraries(${PROJECT_NAME} PUBLIC OpenCL::OpenCL VkFFT half)
202elseif(${VKFFT_BACKEND} EQUAL 4)
203	target_link_libraries(${PROJECT_NAME} PUBLIC ze_loader VkFFT half)
204elseif(${VKFFT_BACKEND} EQUAL 5)
205	target_link_libraries(${PROJECT_NAME} PUBLIC ${FOUNDATION_LIB} ${QUARTZ_CORE_LIB} ${METAL_LIB} VkFFT half)
206endif()
207
208if(build_VkFFT_FFTW_precision OR VkFFT_use_FP128_Bluestein_RaderFFT)
209	add_definitions(-DUSE_FFTW)
210	set(FFTW3_LIB_DIR "/usr/lib/x86_64-linux-gnu/")
211	set(FFTW3_INCLUDE_DIR "/usr/include/")
212	find_library(
213		FFTW_LIB
214		NAMES "libfftw3-3" "fftw3" 
215		PATHS ${FFTW3_LIB_DIR}
216		PATH_SUFFIXES "lib" "lib64"
217		NO_DEFAULT_PATH
218	  )
219	find_path(
220		FFTW_INCLUDES
221		NAMES "fftw3.h"
222		PATHS ${FFTW3_INCLUDE_DIR}
223		PATH_SUFFIXES "include"
224		NO_DEFAULT_PATH
225	  )
226        target_include_directories(${PROJECT_NAME} PUBLIC ${FFTW_INCLUDES})
227if(VkFFT_use_FP128_double_double)
228	find_library(
229		FFTWQ_LIB
230		NAMES "libfftw3q" "fftw3q"
231		PATHS ${FFTW3_LIB_DIR}
232		PATH_SUFFIXES "lib" "lib64"
233		NO_DEFAULT_PATH
234	  )
235	  target_link_libraries (${PROJECT_NAME} PUBLIC ${FFTWQ_LIB})
236endif()
237if(VkFFT_use_FP128_Bluestein_RaderFFT)        
238	find_library(
239		FFTWL_LIB
240		NAMES "libfftw3l" "fftw3l"
241		PATHS ${FFTW3_LIB_DIR}
242		PATH_SUFFIXES "lib" "lib64"
243		NO_DEFAULT_PATH
244	  )
245	target_link_libraries (${PROJECT_NAME} PUBLIC ${FFTWL_LIB})
246endif()
247	target_link_libraries (${PROJECT_NAME} PUBLIC ${FFTW_LIB})
248endif()
249
250if(build_VkFFT_cuFFT_benchmark)
251	add_definitions(-DUSE_cuFFT)
252	find_package(CUDA 9.0 REQUIRED)
253	enable_language(CUDA)	
254	if(build_VkFFT_FFTW_precision)
255		add_library(cuFFT_scripts STATIC
256		benchmark_scripts/cuFFT_scripts/src/user_benchmark_cuFFT.cu
257		benchmark_scripts/cuFFT_scripts/src/sample_0_benchmark_cuFFT_single.cu
258		benchmark_scripts/cuFFT_scripts/src/sample_1_benchmark_cuFFT_double.cu
259		benchmark_scripts/cuFFT_scripts/src/sample_2_benchmark_cuFFT_half.cu
260		benchmark_scripts/cuFFT_scripts/src/sample_3_benchmark_cuFFT_single_3d.cu
261		benchmark_scripts/cuFFT_scripts/src/sample_6_benchmark_cuFFT_single_r2c.cu
262		benchmark_scripts/cuFFT_scripts/src/sample_7_benchmark_cuFFT_single_Bluestein.cu
263		benchmark_scripts/cuFFT_scripts/src/sample_8_benchmark_cuFFT_double_Bluestein.cu
264		benchmark_scripts/cuFFT_scripts/src/sample_1000_benchmark_cuFFT_single_2_4096.cu
265		benchmark_scripts/cuFFT_scripts/src/sample_1001_benchmark_cuFFT_double_2_4096.cu
266		benchmark_scripts/cuFFT_scripts/src/sample_1003_benchmark_cuFFT_single_3d_2_512.cu
267		benchmark_scripts/cuFFT_scripts/src/precision_cuFFT_single.cu
268		benchmark_scripts/cuFFT_scripts/src/precision_cuFFT_r2c.cu
269		benchmark_scripts/cuFFT_scripts/src/precision_cuFFT_double.cu
270		benchmark_scripts/cuFFT_scripts/src/precision_cuFFT_half.cu)
271	else()
272		add_library(cuFFT_scripts STATIC
273		benchmark_scripts/cuFFT_scripts/src/user_benchmark_cuFFT.cu
274		benchmark_scripts/cuFFT_scripts/src/sample_0_benchmark_cuFFT_single.cu
275		benchmark_scripts/cuFFT_scripts/src/sample_1_benchmark_cuFFT_double.cu
276		benchmark_scripts/cuFFT_scripts/src/sample_2_benchmark_cuFFT_half.cu
277		benchmark_scripts/cuFFT_scripts/src/sample_3_benchmark_cuFFT_single_3d.cu
278		benchmark_scripts/cuFFT_scripts/src/sample_6_benchmark_cuFFT_single_r2c.cu
279		benchmark_scripts/cuFFT_scripts/src/sample_7_benchmark_cuFFT_single_Bluestein.cu
280		benchmark_scripts/cuFFT_scripts/src/sample_8_benchmark_cuFFT_double_Bluestein.cu
281		benchmark_scripts/cuFFT_scripts/src/sample_1000_benchmark_cuFFT_single_2_4096.cu
282		benchmark_scripts/cuFFT_scripts/src/sample_1001_benchmark_cuFFT_double_2_4096.cu
283		benchmark_scripts/cuFFT_scripts/src/sample_1003_benchmark_cuFFT_single_3d_2_512.cu)
284	endif()
285	set_property(TARGET cuFFT_scripts PROPERTY CUDA_ARCHITECTURES 60 70 75 80 86)
286	CUDA_ADD_CUFFT_TO_TARGET(cuFFT_scripts)
287	target_compile_options(cuFFT_scripts PRIVATE "$<$<COMPILE_LANGUAGE:CUDA>:SHELL:
288	-std=c++11
289	-gencode arch=compute_60,code=compute_60
290	-gencode arch=compute_70,code=compute_70 
291	-gencode arch=compute_75,code=compute_75 
292	-gencode arch=compute_80,code=compute_80 
293	-gencode arch=compute_86,code=compute_86>")
294	target_include_directories(cuFFT_scripts PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/benchmark_scripts/cuFFT_scripts/include)
295	target_include_directories(cuFFT_scripts PUBLIC ${CUDA_INCLUDE_DIRS})
296	set_target_properties(cuFFT_scripts PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
297	set_target_properties(cuFFT_scripts PROPERTIES CUDA_RESOLVE_DEVICE_SYMBOLS ON)
298	target_link_libraries(${PROJECT_NAME} PUBLIC cuFFT_scripts)
299endif()
300if(build_VkFFT_rocFFT_benchmark)
301	add_definitions(-DUSE_rocFFT)
302	list(APPEND CMAKE_PREFIX_PATH /opt/rocm/hip /opt/rocm)
303	find_package(hip)
304    find_package(hipfft)
305
306	if(build_VkFFT_FFTW_precision)
307		add_library(rocFFT_scripts STATIC
308		benchmark_scripts/rocFFT_scripts/src/user_benchmark_rocFFT.cpp
309		benchmark_scripts/rocFFT_scripts/src/sample_0_benchmark_rocFFT_single.cpp
310		benchmark_scripts/rocFFT_scripts/src/sample_1_benchmark_rocFFT_double.cpp
311		benchmark_scripts/rocFFT_scripts/src/sample_3_benchmark_rocFFT_single_3d.cpp
312		benchmark_scripts/rocFFT_scripts/src/sample_6_benchmark_rocFFT_single_r2c.cpp
313		benchmark_scripts/rocFFT_scripts/src/sample_7_benchmark_rocFFT_single_Bluestein.cpp
314		benchmark_scripts/rocFFT_scripts/src/sample_8_benchmark_rocFFT_double_Bluestein.cpp
315		benchmark_scripts/rocFFT_scripts/src/sample_1000_benchmark_rocFFT_single_2_4096.cpp
316		benchmark_scripts/rocFFT_scripts/src/sample_1001_benchmark_rocFFT_double_2_4096.cpp
317		benchmark_scripts/rocFFT_scripts/src/sample_1003_benchmark_rocFFT_single_3d_2_512.cpp
318		benchmark_scripts/rocFFT_scripts/src/precision_rocFFT_single.cpp
319		benchmark_scripts/rocFFT_scripts/src/precision_rocFFT_r2c.cpp
320		benchmark_scripts/rocFFT_scripts/src/precision_rocFFT_double.cpp)
321	else()
322		add_library(rocFFT_scripts STATIC
323		benchmark_scripts/rocFFT_scripts/src/user_benchmark_rocFFT.cpp
324		benchmark_scripts/rocFFT_scripts/src/sample_0_benchmark_rocFFT_single.cpp
325		benchmark_scripts/rocFFT_scripts/src/sample_1_benchmark_rocFFT_double.cpp
326		benchmark_scripts/rocFFT_scripts/src/sample_3_benchmark_rocFFT_single_3d.cpp
327		benchmark_scripts/rocFFT_scripts/src/sample_6_benchmark_rocFFT_single_r2c.cpp
328		benchmark_scripts/rocFFT_scripts/src/sample_7_benchmark_rocFFT_single_Bluestein.cpp
329		benchmark_scripts/rocFFT_scripts/src/sample_8_benchmark_rocFFT_double_Bluestein.cpp
330		benchmark_scripts/rocFFT_scripts/src/sample_1000_benchmark_rocFFT_single_2_4096.cpp
331		benchmark_scripts/rocFFT_scripts/src/sample_1001_benchmark_rocFFT_double_2_4096.cpp
332		benchmark_scripts/rocFFT_scripts/src/sample_1003_benchmark_rocFFT_single_3d_2_512.cpp)
333	endif()
334	target_include_directories(rocFFT_scripts PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/benchmark_scripts/rocFFT_scripts/include)
335	target_link_libraries(rocFFT_scripts PRIVATE hip::host hip::hipfft)
336	target_link_libraries(${PROJECT_NAME} PUBLIC rocFFT_scripts)
337endif()
338install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/vkFFT/" DESTINATION include)
339install(TARGETS ${PROJECT_NAME} DESTINATION bin)