You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CMakeLists.txt
+4-1Lines changed: 4 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -18,7 +18,7 @@ option(FINUFFT_ENABLE_SANITIZERS "Whether to enable sanitizers, only effective f
18
18
option(FINUFFT_USE_OPENMP "Whether to use OpenMP for parallelization. If disabled, the finufft library will be single threaded. This does not affect the choice of FFTW library."ON)
19
19
option(FINUFFT_USE_CPU "Whether to build the ordinary FINUFFT library (libfinufft)."ON)
20
20
option(FINUFFT_USE_CUDA "Whether to build CUDA accelerated FINUFFT library (libcufinufft). This is completely independent of the main FINUFFT library"OFF)
21
-
option(FINUFFT_STATIC_LINKING "Whether to build the static FINUFFT library."ON)
21
+
option(FINUFFT_STATIC_LINKING "If ON builds the static finufft library, if OFF build a shared finufft library."ON)
22
22
option(FINUFFT_BUILD_DEVEL "Whether to build development executables"OFF)
23
23
option(FINUFFT_BUILD_EXAMPLES "Whether to build the FINUFFT examples"OFF)
24
24
option(FINUFFT_BUILD_TESTS "Whether to build the FINUFFT tests"OFF)
Copy file name to clipboardExpand all lines: docs/devnotes.rst
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,14 +4,14 @@ Developer notes
4
4
===============
5
5
6
6
* Developers needing to update/regenerate documentation in general, including our readthedocs website, see ``docs/README``. Developers changing MATLAB/octave interfaces or docs, also see ``matlab/README``. Please also see ``contributing.md`` for code style and git hook guidelines.
7
-
* cmake supports sphinx generation one can do by ``cmake --build . --target finufft_sphinx``. This will crete a folder called finufft_sphinx in your build directory, opening ``index.html`` will preview the updated documentation.
8
-
* cmake sphinx requires shpinx and texext to be installed in python
7
+
9
8
* To update the version number, this needs to be done by hand in the following places:
10
9
11
10
- ``CMakeLists.txt`` for cmake
12
11
- ``docs/conf.py`` for sphinx
13
-
- ``python/finufft/setup.py`` for the python pkg version
14
-
- ``python/cufinufft/setup.py`` for the GPU python pkg version
12
+
- ``docs/install.rst`` cmake git tags
13
+
- ``python/finufft/finufft/__init__.py`` for the python pkg version
14
+
- ``python/cufinufft/cufinufft/__init__.py`` for the GPU python pkg version
15
15
- ``include/finufft/defs.h`` for the debug>0 output
16
16
- ``matlab/Contents.m`` for the MATLAB/Octave help
17
17
- ``CHANGELOG``: don't forget to describe the new features and changes, folding lines at 80 chars.
Please post an `Issue <https://github.com/flatironinstitute/finufft/issues>`_
14
14
to document your installation problem.
15
-
When using CMake, finufft requires no external dependencies except (c/c++ compilers supporting OpenMP).
15
+
When using CMake, finufft requires no external dependencies except (c/c++ compilers supporting OpenMP and c++17).
16
16
However GNU ``makefile`` assumes that FFTW (single/double) are installed.
17
+
Python-only users can simply install via ``pip install finufft`` which downloads a generic binary from PyPI. Only if you prefer a custom compilation, see :ref:`below<install-python>`.
17
18
18
19
.. note::
19
20
finufft builds with no issues on Linux and MacOS using any compiler, in our experience GCC-13 gives best performance.
20
21
On Windows MSVC works fine. The llvm toolchain included in Visual Studio does not seem to have OpenMP, it is possible to build single-threaded FINUFFT.
21
22
The official windows LLVM distribution builds finufft with no issues but debug builds using sanitizers break.
22
-
23
-
.. note::
24
-
25
23
On windows finufft built with MSVC requires ``VCOMP140D.DLL`` which is part of the `Microsoft Visual C++ Redistributable <https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170>`_.
26
24
It is likely to be already installed in your system.
27
25
If the library is built with LLVM it requires ``libomp140.x86.64.dll``, more information `here <https://devblogs.microsoft.com/cppblog/improved-openmp-support-for-cpp-in-visual-studio/>`_.
28
-
Python-only users can simply install via ``pip install finufft`` which downloads a generic binary from PyPI. Only if you prefer a custom compilation, see :ref:`below<install-python>`.
26
+
29
27
30
28
CMake CPM Based Installation
31
29
----------------------------
@@ -40,13 +38,13 @@ Then add the following to your ``CMakeLists.txt``:
@@ -127,11 +125,12 @@ Here are all our build options, showing name, explanatory text, and default valu
127
125
:end-before: @cmake_opts_end
128
126
129
127
.. note::
130
-
It is possible to choose between ``FFTW`` and `DUCC fft <https://gitlab.mpcdf.mpg.de/mtr/ducc>`_, Ducc fft is from the same author as `pocket fft <https://gitlab.mpcdf.mpg.de/mtr/pocketfft>`_.
128
+
It is possible to choose between ``FFTW`` and `ducc fft <https://gitlab.mpcdf.mpg.de/mtr/ducc>`_, ducc fft is from the same author as `pocket fft <https://gitlab.mpcdf.mpg.de/mtr/pocketfft>`_.
131
129
Pocket fft is the fft used by `scipy <https://scipy.org/>`_.
132
-
An idea about ducc performance can be found in `this discussion <https://github.com/flatironinstitute/finufft/pull/463#issuecomment-2223988300>`_. We encourage the power user can try switching to ducc0 to see if it improves performance.
130
+
An idea about ducc performance can be found in `this discussion <https://github.com/flatironinstitute/finufft/pull/463#issuecomment-2223988300>`_. We encourage the power user to try switching to ducc to see if it improves performance.
133
131
134
132
.. warning::
133
+
Note to the user, using --fast-math or /fp:fast can break finufft and its tests.
135
134
On windows with msvc cl, ``ducc fft`` has to compile with ``/fp:fast``, otherwise some tests (run_finufft3d_test_float, run_finufft3dmany_test_float) may fail because of the resulting error is larger than the tolerance.
136
135
On the other hand, finufft on windows with msvc cl should not compile with flag ``/fp:fast``, with ``/fp:fast`` the test run_dumbinputs_double will result in segfault, because /fp:fast makes values (NaN, +infinity, -infinity, -0.0) may not be propagated or behave strictly according to the IEEE-754 standard.
137
136
@@ -143,7 +142,7 @@ For example, to configure, build and test the development preset (which builds t
143
142
144
143
cmake -S . -B build --preset dev # dev is the preset name
145
144
cmake --build build
146
-
ctest
145
+
ctest --test-dir build/
147
146
148
147
.. warning::
149
148
@@ -179,7 +178,7 @@ If there is an error in testing on what you consider a standard set-up,
179
178
please file a detailed bug report as a New Issue at https://github.com/flatironinstitute/finufft/issues
180
179
181
180
182
-
Quick linux GNU MAKE install instructions
181
+
Quick linux GNU make install instructions
183
182
--------------------------------
184
183
185
184
Make sure you have packages ``fftw3`` and ``fftw3-dev`` (or their
@@ -460,7 +459,7 @@ section of ``mexopts.sh``.
460
459
461
460
462
461
463
-
3) Windows GNU MAKE: tips for compiling
462
+
3) Windows GNU make: tips for compiling
464
463
-------------------------------
465
464
466
465
We have users who have adjusted the makefile to work - at least to some extent - on Windows 10. If you are only interested in calling from Octave (which already comes with MinGW-w64 and FFTW), then we have been told this can be done very simply: from within Octave, go to the ``finufft`` directory and do ``system('make octave')``. You may have to tweak ``OCTAVE`` in your ``make.inc`` in a similar fashion to below.
Copy file name to clipboardExpand all lines: docs/overview.src
+2-3Lines changed: 2 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@
7
7
:width: 45%
8
8
.. image:: spreadpic.png
9
9
:width: 54%
10
-
10
+
11
11
`FINUFFT <https://github.com/flatironinstitute/finufft>`_ is a library to compute efficiently the three most common types of nonuniform fast Fourier transform
12
12
(NUFFT) to a specified precision, in one, two, or three dimensions,
13
13
either on a multi-core shared-memory machine, or on a GPU.
@@ -18,7 +18,7 @@ has very simple interfaces to most major numerical languages
18
18
but also has more advanced (vectorized and "guru") interfaces that
19
19
allow multiple strength vectors and the reuse of FFT plans.
20
20
The CPU library
21
-
is written in C++ (with limited use of ++ features), OpenMP, and calls
21
+
is written in C++, OpenMP, and calls
22
22
`FFTW <http://www.fftw.org>`_.
23
23
It has been developed since 2017 at the `Center for Computational Mathematics
24
24
<https://www.simonsfoundation.org/flatiron/center-for-computational-mathematics/>`_ at the `Flatiron Institute <https://www.simonsfoundation.org/flatiron>`_,
@@ -158,4 +158,3 @@ $a_{kj} = e^{ik x_j}$, then use BLAS3 (eg ``ZGEMM``) to compute $F = AC$,
158
158
where each column of $F$ and $C$ is a new instance of :eq:`1d1`.
159
159
If you have very many columns this can be competitive with a NUFFT
160
160
even for $M$ and $N$ up to $10^4$, because BLAS3 is so fast.
0 commit comments