Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BurstFFT

BurstFFT is an FFT (Fast Fourier Transform) implementation in high-performance C# with Unity's Burst compiler.

This repository contains the following three variants of Fourier transform implementation.

  • NaiveDFT: Unoptimized naive C# implementation of DFT
  • BurstDFT: Vectorized/parallelized DFT implementation, optimized with Burst
  • BurstFFT: Vectorized Cooley-Tukey FFT implementation, optimized with Burst

You can also enable parallelization on BurstFFT by disabling the SINGLE_THREAD symbol in BurstFft.cs.

Results

Windows Desktop (Ryzen 7 3700X, 3.6GHz, 8 cores)

table

graph

MacBook Pro 15 Late 2013 (Core i7, 2.3GHz, 4 cores)

table

graph

Thoughts and Findings

  • It's quite easy to parallelize DFT with Unity's C# Job System. The more cores it has, the faster it runs.
  • Although the parallelized DFT runs quite fast compared to the unoptimized one, it never beat the single-threaded FFT.
  • The traditional Cooley-Tukey FFT is hard to parallelize in a performant way. The results above show that the 8-core BurstFFT runs slower than the 4-core one.

About

FFT implementation in C# optimized for Unity's Burst compiler

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages