All Projects → keijiro → BurstFFT

keijiro / BurstFFT

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

Programming Languages

C#
18002 projects

Projects that are alternatives of or similar to BurstFFT

Audiospectrum
Audio spectrum using fft in iOS
Stars: ✭ 178 (+97.78%)
Mutual labels:  fft
Gist
A C++ Library for Audio Analysis
Stars: ✭ 244 (+171.11%)
Mutual labels:  fft
ModularMusicVisualizer
Project in Hiatus, unmaintained, being rewritten privately. Will Open Source when stuff is ready. Project will be Renamed.
Stars: ✭ 81 (-10%)
Mutual labels:  fft
Openear
windows based project that try to decoding protocols (tetra,dmr, ...) using rtl-sdr
Stars: ✭ 200 (+122.22%)
Mutual labels:  fft
Mathnet Numerics
Math.NET Numerics
Stars: ✭ 2,688 (+2886.67%)
Mutual labels:  fft
lsp-dsp-lib
DSP library for signal processing
Stars: ✭ 37 (-58.89%)
Mutual labels:  fft
Hacksby
Description and unofficial implementation of Furby's audio protocol
Stars: ✭ 165 (+83.33%)
Mutual labels:  fft
FFTVisualizer
This project demonstrates DSP capabilities of Terasic DE2-115
Stars: ✭ 17 (-81.11%)
Mutual labels:  fft
Noise
Noise is an Android wrapper for kissfft, a FFT implementation written in C.
Stars: ✭ 234 (+160%)
Mutual labels:  fft
tinyspec-cling
tiny spectral synthesizer with livecoding support
Stars: ✭ 31 (-65.56%)
Mutual labels:  fft
Dcfnet pytorch
DCFNet: Discriminant Correlation Filters Network for Visual Tracking
Stars: ✭ 200 (+122.22%)
Mutual labels:  fft
Fourier
Fast Fourier transforms (FFTs) in Rust
Stars: ✭ 206 (+128.89%)
Mutual labels:  fft
ooura
Javascript port of Ooura FFT implementation
Stars: ✭ 23 (-74.44%)
Mutual labels:  fft
Rustfft
A mixed-radix FFT library written in pure Rust
Stars: ✭ 183 (+103.33%)
Mutual labels:  fft
osm
Open sound meter. FFT based application for tuning sound systems.
Stars: ✭ 122 (+35.56%)
Mutual labels:  fft
Torch Dct
DCT (discrete cosine transform) functions for pytorch
Stars: ✭ 173 (+92.22%)
Mutual labels:  fft
BDMatch
An automatic subtitle shifter from a video to another. 将字幕由一个视频匹配到另一个的自动时间轴平移工具。
Stars: ✭ 44 (-51.11%)
Mutual labels:  fft
rfsoc sam
RFSoC Spectrum Analyser Module on PYNQ.
Stars: ✭ 44 (-51.11%)
Mutual labels:  fft
gqrx
Software defined radio receiver powered by GNU Radio and Qt.
Stars: ✭ 2,345 (+2505.56%)
Mutual labels:  fft
susa
High Performance Computing (HPC) and Signal Processing Framework
Stars: ✭ 55 (-38.89%)
Mutual labels:  fft

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.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].