-
Notifications
You must be signed in to change notification settings - Fork 79
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #527 from DiamonDinoia/perftests
Adding perftest. This adds performance testers for devs, not part of CI. It adds a documentation page on perf changes from 2.2. to 2.3.
- Loading branch information
Showing
41 changed files
with
714 additions
and
10 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,112 @@ | ||
Performance | ||
============ | ||
|
||
This page shows the performance of the various version of FINUFFT starting from version 2.2.0. The goal is to ensure that performance does not regress between releases. | ||
The results serve also as a user guideline to select the best compile time configuration (compiler, flags, fft implementation) and the best runtime parameters (upsampling factor, number of threads). | ||
Please note that the performance depends on multiple parameters. | ||
Notably: dimensions, size, digits requested, upsamplig factor, CPU utilised, compiler flags, SIMD instructions. | ||
Due to the curse of dimensionality it is not possible to test all possible configurations. | ||
Hence, we selected some use cases from this `GitHub discussion <https://github.com/flatironinstitute/finufft/discussions/398>`_. | ||
If none of the following examples is of any help for your specific use case, participating in the discussion is the best way to communicate with us and the benchmarks may be updated to satisfy the majority of the users. | ||
|
||
This `GitHub discussion <https://github.com/flatironinstitute/finufft/discussions/452>`_ shows instead the performance of the spreader/interpolator with different compilers and gives more insight on which one might be the faster for a specific CPU. | ||
|
||
|
||
The CPU used for all benchmarks is Intel(R) Xeon(R) w5-3435X, the compiler is GCC 13.2.0. | ||
The compiler flags are the ones used as a default in the CMakeLists.txt of the version tested we only impose a Release build and `-march=native`. | ||
The title of the image contains the parameters used. | ||
- pref: precision f=float, d=double | ||
- N(x): dimension along one axes | ||
- M: number of non-uniform points | ||
- type: transform type (1, 2 or 3) | ||
|
||
The other parameters are the same as finufft_opts. | ||
|
||
To generate the results run `bench.py` as is inside perftest. It requires ``numpy``, ``pandas`` and ``matplotlib``. | ||
The script assumes a bash like shell and it might not work on Windows. | ||
.. warning:: | ||
DO NOT RUN the script from inside the finufft git directory as it will mess up the git directory and fail! | ||
|
||
1D Transforms | ||
--------------------------------------------- | ||
|
||
Type 1 | ||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
.. image:: pics/10000x1x1-type-1-upsamp2.00-precf-thread1.png | ||
.. image:: pics/10000x1x1-type-1-upsamp1.25-precf-thread1.png | ||
.. image:: pics/10000x1x1-type-1-upsamp2.00-precd-thread1.png | ||
.. image:: pics/10000x1x1-type-1-upsamp1.25-precd-thread1.png | ||
|
||
Type 2 | ||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
.. image:: pics/10000x1x1-type-2-upsamp1.25-precd-thread1.png | ||
.. image:: pics/10000x1x1-type-2-upsamp1.25-precf-thread1.png | ||
.. image:: pics/10000x1x1-type-2-upsamp2.00-precd-thread1.png | ||
.. image:: pics/10000x1x1-type-2-upsamp2.00-precf-thread1.png | ||
|
||
Type 3 | ||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
.. image:: pics/10000x1x1-type-3-upsamp1.25-precd-thread1.png | ||
.. image:: pics/10000x1x1-type-3-upsamp1.25-precf-thread1.png | ||
.. image:: pics/10000x1x1-type-3-upsamp2.00-precd-thread1.png | ||
.. image:: pics/10000x1x1-type-3-upsamp2.00-precf-thread1.png | ||
|
||
2D transforms | ||
--------------------------------------------- | ||
Type 1 | ||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
||
.. image:: pics/320x320x1-type-1-upsamp1.25-precf-thread1.png | ||
.. image:: pics/320x320x1-type-1-upsamp1.25-precd-thread1.png | ||
.. image:: pics/320x320x1-type-1-upsamp2.00-precf-thread1.png | ||
.. image:: pics/320x320x1-type-1-upsamp2.00-precd-thread1.png | ||
|
||
Type 2 | ||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
.. image:: pics/320x320x1-type-2-upsamp1.25-precf-thread1.png | ||
.. image:: pics/320x320x1-type-2-upsamp1.25-precd-thread1.png | ||
.. image:: pics/320x320x1-type-2-upsamp2.00-precf-thread1.png | ||
.. image:: pics/320x320x1-type-2-upsamp2.00-precd-thread1.png | ||
|
||
Type 3 | ||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
.. image:: pics/320x320x1-type-3-upsamp1.25-precf-thread1.png | ||
.. image:: pics/320x320x1-type-3-upsamp1.25-precd-thread1.png | ||
.. image:: pics/320x320x1-type-3-upsamp2.00-precf-thread1.png | ||
.. image:: pics/320x320x1-type-3-upsamp2.00-precd-thread1.png | ||
|
||
2D transforms Multi-Threaded | ||
--------------------------------------------- | ||
|
||
Type 1 | ||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
.. image:: pics/320x320x1-type-1-upsamp1.25-precf-thread32.png | ||
.. image:: pics/320x320x1-type-1-upsamp2.00-precf-thread32.png | ||
|
||
Type 2 | ||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
.. image:: pics/320x320x1-type-2-upsamp1.25-precf-thread32.png | ||
.. image:: pics/320x320x1-type-2-upsamp2.00-precf-thread32.png | ||
|
||
Type 3 | ||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
.. image:: pics/320x320x1-type-3-upsamp1.25-precf-thread32.png | ||
.. image:: pics/320x320x1-type-3-upsamp2.00-precf-thread32.png | ||
|
||
3D transforms Multi-Threaded (float32) | ||
--------------------------------------------- | ||
|
||
Type 1 | ||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
.. image:: pics/192x192x128-type-1-upsamp1.25-precf-thread32.png | ||
.. image:: pics/192x192x128-type-1-upsamp2.00-precf-thread32.png | ||
|
||
Type 2 | ||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
.. image:: pics/192x192x128-type-2-upsamp1.25-precf-thread32.png | ||
.. image:: pics/192x192x128-type-2-upsamp2.00-precf-thread32.png | ||
|
||
Type 3 | ||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
.. image:: pics/192x192x128-type-3-upsamp1.25-precf-thread32.png | ||
.. image:: pics/192x192x128-type-3-upsamp2.00-precf-thread32.png |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.