Skip to content

Commit

Permalink
Added GPU spread interp only test (#631)
Browse files Browse the repository at this point in the history
* Added GPU spread interp only test, cmake call CPU spreadinteronly
  • Loading branch information
DiamonDinoia authored Feb 19, 2025
1 parent b8cea9d commit d2e0ff7
Show file tree
Hide file tree
Showing 4 changed files with 556 additions and 204 deletions.
1 change: 1 addition & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ If not stated, FINUFFT is assumed (cuFINUFFT <=1.3 is listed separately).

Master, using release name V 2.4.0 (2/11/25)

* Added GPU spread interp only test. Added CPU spread interp only test to cmake
* Make attributes private in Python Plan classes and allow read-only access to
them using properties (Andén #608).
* Remove possibility to supply real dtypes to Plan interfaces. Now only complex
Expand Down
153 changes: 88 additions & 65 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,19 @@ set(TESTS
finufft2dmany_test
finufft3d_test
finufft3dmany_test
finufft3dkernel_test)
finufft3dkernel_test
spreadinterp1d_test
)

foreach(TEST ${TESTS})
add_executable(${TEST} ${TEST}.cpp)
target_compile_features(${TEST} PRIVATE cxx_std_17)
finufft_link_test(${TEST})

add_executable(${TEST}f ${TEST}.cpp)
target_compile_definitions(${TEST}f PRIVATE -DSINGLE)
target_compile_features(${TEST}f PRIVATE cxx_std_17)
finufft_link_test(${TEST}f)
add_executable(${TEST} ${TEST}.cpp)
target_compile_features(${TEST} PRIVATE cxx_std_17)
finufft_link_test(${TEST})

add_executable(${TEST}f ${TEST}.cpp)
target_compile_definitions(${TEST}f PRIVATE -DSINGLE)
target_compile_features(${TEST}f PRIVATE cxx_std_17)
finufft_link_test(${TEST}f)
endforeach()

# copy the DLLs to the build directory so that the tests can find them there fix
Expand All @@ -28,75 +30,96 @@ copy_dll(finufft basicpassfail)
# Add ctest definitions not for both precisions...
add_executable(testutils testutils.cpp)
if(FINUFFT_USE_DUCC0)
target_compile_definitions(testutils PRIVATE -DFINUFFT_USE_DUCC0)
target_compile_definitions(testutils PRIVATE -DFINUFFT_USE_DUCC0)
endif()
target_compile_features(testutils PRIVATE cxx_std_17)
finufft_link_test(testutils)
add_test(
NAME run_testutils
COMMAND testutils
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
NAME run_testutils
COMMAND testutils
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)

if(NOT FINUFFT_USE_DUCC0)
add_executable(fftw_lock_test fftw_lock_test.cpp)
target_compile_features(fftw_lock_test PRIVATE cxx_std_17)
finufft_link_test(fftw_lock_test)

add_test(
NAME run_fftw_lock_test
COMMAND fftw_lock_test
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
add_executable(fftw_lock_test fftw_lock_test.cpp)
target_compile_features(fftw_lock_test PRIVATE cxx_std_17)
finufft_link_test(fftw_lock_test)

add_test(
NAME run_fftw_lock_test
COMMAND fftw_lock_test
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)
endif()

# Add ctest definitions that run at both precisions...
function(add_tests_with_prec PREC REQ_TOL CHECK_TOL SUFFIX)
# All of the following should be run at OMP_NUM_THREADS=4 or something small,
# as in makefile. This prevents them taking a huge time on a, say, 128-core
# Rome node. ... but I don't know platform-indep way to do that! Does anyone?

add_test(
NAME run_basic_pass_fail_${PREC}
COMMAND basicpassfail${SUFFIX}
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})

add_test(
NAME run_finufft1d_test_${PREC}
COMMAND finufft1d_test${SUFFIX} 1e2 2e2 ${REQ_TOL} 0 2 0.0 ${CHECK_TOL}
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})

add_test(
NAME run_finufft1dmany_test_${PREC}
COMMAND finufft1dmany_test${SUFFIX} 3 1e2 2e2 ${REQ_TOL} 0 0 0 2 0.0
# All of the following should be run at OMP_NUM_THREADS=4 or something small,
# as in makefile. This prevents them taking a huge time on a, say, 128-core
# Rome node. ... but I don't know platform-indep way to do that! Does anyone?

add_test(
NAME run_basic_pass_fail_${PREC}
COMMAND basicpassfail${SUFFIX}
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)

add_test(
NAME run_finufft1d_test_${PREC}
COMMAND finufft1d_test${SUFFIX} 1e2 2e2 ${REQ_TOL} 0 2 0.0 ${CHECK_TOL}
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)

add_test(
NAME run_finufft1dmany_test_${PREC}
COMMAND
finufft1dmany_test${SUFFIX} 3 1e2 2e2 ${REQ_TOL} 0 0 0 2 0.0
${CHECK_TOL}
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})

add_test(
NAME run_finufft2d_test_${PREC}
COMMAND finufft2d_test${SUFFIX} 1e2 1e1 1e3 ${REQ_TOL} 0 2 0.0 ${CHECK_TOL}
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})

add_test(
NAME run_finufft2dmany_test_${PREC}
COMMAND finufft2dmany_test${SUFFIX} 3 1e2 1e1 1e3 ${REQ_TOL} 0 0 0 2 0.0
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)

add_test(
NAME run_finufft2d_test_${PREC}
COMMAND
finufft2d_test${SUFFIX} 1e2 1e1 1e3 ${REQ_TOL} 0 2 0.0 ${CHECK_TOL}
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)

add_test(
NAME run_finufft2dmany_test_${PREC}
COMMAND
finufft2dmany_test${SUFFIX} 3 1e2 1e1 1e3 ${REQ_TOL} 0 0 0 2 0.0
${CHECK_TOL}
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})

add_test(
NAME run_finufft3d_test_${PREC}
COMMAND finufft3d_test${SUFFIX} 5 10 20 1e2 ${REQ_TOL} 0 2 0.0 ${CHECK_TOL}
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})

add_test(
NAME run_finufft3dmany_test_${PREC}
COMMAND finufft3dmany_test${SUFFIX} 2 5 10 20 1e2 ${REQ_TOL} 0 0 0 2 0.0
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)

add_test(
NAME run_finufft3d_test_${PREC}
COMMAND
finufft3d_test${SUFFIX} 5 10 20 1e2 ${REQ_TOL} 0 2 0.0 ${CHECK_TOL}
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)

add_test(
NAME run_finufft3dmany_test_${PREC}
COMMAND
finufft3dmany_test${SUFFIX} 2 5 10 20 1e2 ${REQ_TOL} 0 0 0 2 0.0
${CHECK_TOL}
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})

add_test(
NAME run_dumbinputs_${PREC}
COMMAND dumbinputs${SUFFIX}
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})

WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)

add_test(
NAME run_dumbinputs_${PREC}
COMMAND dumbinputs${SUFFIX}
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)

add_test(
NAME spreadinterp1d_${PREC}
COMMAND
spreadinterp1d_test${SUFFIX} 1e3 1e3 ${REQ_TOL} 0 2 2.0 ${CHECK_TOL}
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)
endfunction()

# use above function to actually add the tests, with certain requested and check
Expand Down
Loading

0 comments on commit d2e0ff7

Please sign in to comment.