Skip to content

Commit

Permalink
add kerevalmeth=0 vs 1 acc check to CI via test/finufft_check.sh; doc…
Browse files Browse the repository at this point in the history
… in CHANGELOG
  • Loading branch information
ahbarnett committed Jul 8, 2024
1 parent ad654f3 commit 3110b60
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 18 deletions.
17 changes: 9 additions & 8 deletions CHANGELOG
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ V 2.3.0beta (6/21/24)
kernel evaluation, templating by ns with AVX-width-dependent decisions.
Up to 80% faster, dep on compiler. (Marco Barbone with help from Libin Lu).
NOTE: introduces new dependency (XSIMD), added to cMake and makefile.
* new test/finufft3dkernel_test checks kerevalmeth=0,1 same to tol (M Barbone).
* new perftest/compare_spreads.jl compares two spreadinterp libs (A Barnett).
* new benchmarker perftest/spreadtestndall sweeps all kernel widths (M Barbone).
* cufinufft now supports modeord(type 1,2 only): 0 CMCL-style increasing mode
Expand All @@ -26,15 +27,15 @@ V 2.3.0beta (6/21/24)
* improved GPU python docs: migration guide; usage from cupy, numba, torch,
pycuda. PyPI pkg still at 2.2.0beta.
* Added a clang-format pre-commit hook to ensure consistent code style.
Created a .clang-format file to define the style similar to the existing style.
Created a .clang-format file to define a style similar to the existing style.
Applied clang-format to all cmake, C, C++, and CUDA code. Ignored the blame
using .git-blame-ignore-revs. Added a contributing.md for developers.
* cuFINUFFT interface update: number of nonuniform points M is now a 64-bit integer
as opposed to 32-bit. While this does modify the ABI, most code will just need to
recompile against the new library as compilers will silently upcast any 32-bit
integers to 64-bit when calling cufinufft(f)_setpts. Note that internally, 32-bit
integers are still used, so calling cufinufft with more than 2e9 points will fail.
This restriction may be lifted in the future.
* cuFINUFFT interface update: number of nonuniform points M is now a 64-bit int
as opposed to 32-bit. While this does modify the ABI, most code will just
need to recompile against the new library as compilers will silently upcast
any 32-bit integers to 64-bit when calling cufinufft(f)_setpts. Note that
internally, 32-bit integers are still used, so calling cufinufft with more
than 2e9 points will fail. This restriction may be lifted in the future.

V 2.2.0 (12/12/23)

Expand All @@ -52,7 +53,7 @@ V 2.2.0 (12/12/23)
* CMake build structure (thanks: Wenda Zhou, Marco Barbone, Libin Lu)
- Note: the plan is to continue to support GNU makefile and make.inc.* but
to transition to CMake as the main build system.
- CI workflow using CMake on 3 OSes, 2 compilers each, PR #382 (Libin Lu)
- CI workflow using CMake on 3 OSes, 2 compilers each, PR #382 (Libin Lu)
* Docs: new tutorial content on iterative inverse NUFFTs; troubleshooting.
* GitHub-facing badges
* include/finufft/finufft_eitherprec.h moved up directory to be public (bea316c)
Expand Down
11 changes: 3 additions & 8 deletions test/README
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ OpenMP static scheduling for rand-# generation means that the test data should
be reproducible (non-stochastic). Reordering of thread ops in FINUFFT itself
leads to machine-rounding sized variations only.

These CPU test executables have suffix "f" fior single precision, else double.
These CPU test executables have suffix "f" for single precision, else double.
The source codes do not have the suffix:

basicpassfail{f} : basic double and single-prec smoke tests of the math.
Expand All @@ -22,13 +22,8 @@ finufft{1,2,3}dmany_test{f}: accuracy/speed tests for vectorized transforms,
in a given dimension. Types 1, 2, and 3 are tested.
(exit code 0 is a pass).
Call with no arguments for argument documentation.
finufft3dkernel_test{f} : test of the kernel evaluation methods.
Only 3D NUFFT are tested.
Types 1, 2, and 3 are tested.
It requires Nmodes1 Nmodes2 Nmodes3 Nsrc
sizes of the 3d grid and the number of sources.
Optional arguments are the tolerance, debug flags,
sort flag and upsampfac.
finufft3dkernel_test{f} : test kerevalmeth=0,1 give same answer within tol.
Types 1, 2, and 3 are tested, in d=3 only.
(exit code 0 is a pass).
dumbinputs{f} : test of edge cases, invalid inputs, and plan interface.
No arguments needed (exit code 0 is a pass).
Expand Down
8 changes: 7 additions & 1 deletion test/check_finufft.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

# Barnett 3/14/17. numdiff-free option 3/16/17. simpler, dual-prec 7/3/20,
# execs now have exit codes, removed any numdiff dep 8/18/20
# removed diff 6/16/23.
# removed diff 6/16/23. Added kerevalmeth=0 vs 1 test 7/8/24.

# precision-specific settings
if [[ $1 == "SINGLE" ]]; then
Expand Down Expand Up @@ -93,6 +93,12 @@ T=finufft3dmany_test$PRECSUF
E=${PIPESTATUS[0]}
if [[ $E -eq 0 ]]; then echo passed; elif [[ $E -eq $SIGSEGV ]]; then echo crashed; ((CRASHES++)); else echo failed; ((FAILS++)); fi

((N++))
T=finufft3dkernel_test$PRECSUF
./$T$FEX 20 50 30 1e3 $FINUFFT_REQ_TOL 2>$DIR/$T.err.out | tee $DIR/$T.out
E=${PIPESTATUS[0]}
if [[ $E -eq 0 ]]; then echo passed; elif [[ $E -eq $SIGSEGV ]]; then echo crashed; ((CRASHES++)); else echo failed; ((FAILS++)); fi

((N++))
T=dumbinputs$PRECSUF
./$T$FEX 2>$DIR/$T.err.out | tee $DIR/$T.out
Expand Down
2 changes: 1 addition & 1 deletion test/finufft3dkernel_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ using namespace std;
using namespace finufft::utils;

const char *help[] = {
"Tester for FINUFFT in 3d, all 3 types, either precision.",
"Test spread_kerevalmeth=0 & 1 match, for 3 types of 3D transf, either prec.",
"Usage: finufft3dkernel_test Nmodes1 Nmodes2 Nmodes3 Nsrc",
"\t[tol] error tolerance (default 1e-6)",
"\t[debug] (default 0) 0: silent, 1: text, 2: as 1 but also spreader",
Expand Down

0 comments on commit 3110b60

Please sign in to comment.