Skip to content

acm-uic/SIG-MATH-Fourier

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ACM@UIC SIG-MATH Fourier transforms project

This repository is a "from-scratch" implementation of the Fourier Transforms engine that support both the basic single-threaded algorithms all the way to SIMD/SIMT (GPU) accelerations.

Note

The goal of this project is mainly educational. We seek to explore the understanding of the Fourier Transforms from blackboard math all the way to code implementation while also exploring different aspects of effective optimization techniques accross different archtectures and computing paradigms.

Compiling and running

The library currently supports two execution pathways:

  1. Native binary compilation
  2. Python bindings

Each pathway supports two compute modes:

  • basic: standard single-threaded CPU execution
  • CUDA: NVIDIA GPU acceleration using SIMT parallelism.

Binary compilations

With native binary compilations, the source files are at src/<mode>/ and we have scaffold the basic Makefile script with the common optimizations turned on.

  • make run_basic will compile and run the single-threaded execution binary.
  • make run_cuda (requires CUDA) will compile and run the CUDA execution binary.

Python bindings

The library supports Python interoperability of C++ and CUDA codes through the pybind11. The main modules for our package will be that of sigMathFourier for basic mode and sigMathFourierCUDA for the CUDA mode.

To compile the module, execute the python-modules/make-<mode_bindings>.sh script. And to use it, place the resulting shared library (.so file) to a place where the Python interpreter can see.

Applications to Solving Differential Equations

We also explore applications of the Fourier Transforms numerical solutions of differential equations, as an introductory look into the world of the Spectral Methods. All of the sources pertaining to this excursions are listed at pde/ and to compile the PDE solver engines, please see the PDE applications sections of the Makefile.

Requirements

  • C++ >=20 compatible compiler (i.e. g++ or clang++)
  • Python
  • For CUDA:
    • NVIDIA GPU.
    • The CUDA Toolkit (either from Nvidia or Spack)

Contribute

Of course, feel free to contribute in a way you see fit via pull-request. We recommend forking the repository and make pull requests from you fork.

In particular, we are looking forward to expand the backend horizon (OpenMP, AVX, SYCL,...) of our "from-scratch" apporach and also resolving the repository issues.

About

Repository for SIG Math started in Spring 2026 focusing on Fourier methods

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages