Skip to content

StochasticAnalytics/FastFFT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FastFFT

2d Unit Tests 3d Unit Tests 2d Regression Tests

Project Summary

Goals:

This project aims to accelerate a specific subset of Fast Fourier Transforms (FFTs) especially important in image processing. My personal flavor of which is high-resolution phase-contrast cryo-Electron Microscopy. The gist is to take advantage of the cufftdx library from Nvidia, currently in early access, as well as algorithmic ideas from Sorensen et. al [1]. I worked out the initial proof of principle using hand coded DFTs that are, of course, inferior to the library routines provided with cufftdx.

An additional experiment tied to this project, is the development of the scientific manuscript "live" alongside the development of the code. While most of my projects are pretty safe from being scooped, this one is decidedly "scoopable" as it should have broad impact, and also shouldn't be to hard to implement once the info is presented.

Use Cases with expected 2-5x perf gains over "naive" general purpose libraries:

  • Zero padded FFTs
  • Cross-correlation with a limited peak search radius
  • Sparse FFTs

Design:

The FourierTransformer class, in the FastFFT namespace may be used in your cpp/cuda project by including the header. The basic usage is as follows:

  • The input/output data pointers, size and type are set. (analagous to the cufftXtMakePlanMany)
  • Class methods are provided to handle memory allocation on the gpu as well as transfer to/from host/device.
  • Simple methods for FwdFFT, InvFFT, CrossCorrelation etc. are public and call the correct combination of substranforms based on the data and padding/trimming wanted.

The library will also be built to be accessible from python and matlab, via the numpy ctypes and mex/cudaMex interfaces.

Manuscript:

The live development of the manuscript is being updated regularly as of late summer 2021.