Skip to content

Commit

Permalink
Merge pull request #9 from QuState/update-readme-again
Browse files Browse the repository at this point in the history
Update README.md
  • Loading branch information
smu160 authored Feb 12, 2024
2 parents a92bea1 + d65698a commit e5e60c5
Showing 1 changed file with 10 additions and 11 deletions.
21 changes: 10 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ including [RustFFT](https://crates.io/crates/rustfft/).

## Features

- Performance on par with FFTW and far exceeding other Rust implementations
- Simple implementation using a single, general-purpose FFT algorithm
- Performance on par with other Rust FFT implementations
- Zero `unsafe` code
- Takes advantage of latest CPU features up to and including AVX-512, but performs well even without them
- Optional parallelization of some steps to 2 threads (with even more planned)
Expand Down Expand Up @@ -50,10 +50,9 @@ We also use the Cache-Optimal Bit Reveral
Algorithm ([COBRA](https://csaws.cs.technion.ac.il/~itai/Courses/Cache/bit.pdf))
on large datasets and optionally run it on 2 parallel threads, accelerating it even further.

All of this combined results in a fast and efficient FFT implementation that surpasses the performance of existing Rust
FFT crates,
including [RustFFT](https://crates.io/crates/rustfft/) on large inputs and while using significantly
less memory.
All of this combined results in a fast and efficient FFT implementation competitive with
the performance of existing Rust FFT crates,
including [RustFFT](https://crates.io/crates/rustfft/), while using significantly less memory.

## Quickstart

Expand Down Expand Up @@ -123,17 +122,17 @@ PhastFT is licensed under MIT or Apache 2.0 license, at your option.
## PhastFT vs RustFFT

[RustFFT](https://crates.io/crates/rustfft/) is another excellent FFT implementation in pure Rust.
RustFFT and PhastFT are optimized for different workloads.

RustFFT performs best on small inputs that fit entirely into the L2 cache,
while PhastFT is optimized for large input sizes common in scientific computing.

PhastFT also uses 2x less memory, which is important for processing large datasets.
RustFFT and PhastFT make different trade-offs.

RustFFT made the choice to work on stable Rust compiler at the cost of `unsafe` code,
while PhastFT contains no `unsafe` blocks but requires a nightly build of Rust compiler
to access the Portable SIMD API.

RustFFT implements multiple FFT algorithms and tries to pick the best one depending on the workload,
while PhastFT has a single FFT implementation and still achieves competitive performance.

PhastFT uses 2x less memory than RustFFT, which is important for processing large datasets.

## What's with the name?

The name, **PhastFT**, is derived from the implementation of the
Expand Down

0 comments on commit e5e60c5

Please sign in to comment.