On Wed, Feb 28, 2024 at 6:59 AM camrymanjr--- via NumPy-Discussion <
numpy-discussion@python.org> wrote:

> Good day!
>
> My name is Alexander Levin.
>
> My colleague and I did a project on optimisation of two-dimensional
> Fourier transform algorithm six months ago. We took your implementation of
> numpy fft2d as a unit of quality.
>

Thanks for sharing Alexander.


> In the course of our research we found out that initially mathematically
> the method uses a far from optimal algorithm. As you may know, your
> operation goes first by rows then by columns applying a one-dimensional
> transformation. After spending some time researching mathematical papers on
> this topic, we found and implemented a new approach, the so-called
> Cooley-Tukey butterfly, optimised by Russian mathematicians in 2016.
>
> The output is a completely new approach, where we immediately apply a
> two-dimensional operation and save a serious proportion of time on it. As a
> result, we wrote a C++ package for Python, using Cython as a wrapper. The
> result was the package and an article on Medium describing the process. On
> tests for matrices ranging in size from 2048x512 to 8192x8192, our
> algorithm outperformed the NumPy transformation by an average of 50% in
> time.
>

Did you also benchmark against `scipy.fft` by any chance? SciPy uses a
newer C++ version of PocketFFT. In NumPy we just switched over from the
older C code of PocketFFT to the newer C++ code:
https://github.com/numpy/numpy/pull/25536. That PR also solves the
upcasting that your Medium article touches on; we now have proper
float32/complex64 support. Note that SciPy also has a multi-threaded
version, which you can enable with the `workers` keyword.

It'd also be interesting perhaps to benchmark memory usage, since your
article touches on eliminating temporary arrays.

After discussing this matter with my colleague with whom we did the above
> development, we came to a common desire to share our results with you. Your
> company has been making a huge contribution to the IT community for almost
> 20 years on a pro bono basis. We share your philosophy and so we want to
> make the CS world a better place by providing you with our code to optimise
> the approach in an existing operation in your package.
>

Great to hear that. Note that we're not a company - more a loosely
organized team of mostly volunteers and some folks who get to work on NumPy
as part of their day job at a company or university.


> We would like to offer you our development version, though it'll need some
> minor improvements, we'd love to finish them collaboratively with you and
> hear your thoughts regarding what we have discovered and done so far. We'd
> be honored to help you and become NumPy contributors.
>

Performance improvements are always of interest, so if this is an
algorithmic improvement without loss of accuracy, then that sounds very
relevant. And more contributors are always welcome!

Cheers,
Ralf

I trust that our vision will resonate with you and that you will agree with
> us. I invite you to read our quick article about the process, which I have
> linked below, and our fully functioning package and share your views on our
> contribution to NumPy. We are willing to edit the code to fit your
> standards, as we believe that the best use of our work will be to
> contribute to the development of technology in the world.
>
> Thank you for your time. We look forward to your response and opinion.
>
> Medium Article about the process:
> https://medium.com/p/7963c3b2f3c9
> GitHub Source code Repository:
> https://github.com/2D-FFT-Project/2d-fft
> _______________________________________________
> NumPy-Discussion mailing list -- numpy-discussion@python.org
> To unsubscribe send an email to numpy-discussion-le...@python.org
> https://mail.python.org/mailman3/lists/numpy-discussion.python.org/
> Member address: ralf.gomm...@googlemail.com
>
_______________________________________________
NumPy-Discussion mailing list -- numpy-discussion@python.org
To unsubscribe send an email to numpy-discussion-le...@python.org
https://mail.python.org/mailman3/lists/numpy-discussion.python.org/
Member address: arch...@mail-archive.com

Reply via email to