Skip to content
Open
74 changes: 73 additions & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,9 @@ edition = "2021"
[dependencies]
realfft = "3.3.0"
rustfft = "6.1.0"
ipp-sys = { git = "ssh://[email protected]/holoplot/ipp-sys.git", rev = "97e758c4b87b0b16800a76dd4e4603b61fc4eb09", features = ["2022"], optional = true }
num-complex = "0.4.6"

[features]
default = []
ipp = ["ipp-sys"]
13 changes: 12 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ As the original C++ implementation, this library implements:

- Partitioned convolution algorithm (using uniform block sizes)
- Optional support for non-uniform block sizes (`TwoStageFFTConvolver`)
- An optimised version of the convolvers using Intel IPP (if the `ipp` feature is enabled)

On top of that it implements:

Expand All @@ -16,9 +17,19 @@ On top of that it implements:

Compared to the original C++ implementation, this implementation does _not_ provide:

- Its own FFT implementation (it currently uses the rustfft crate)
- Its own FFT implementation (it currently uses the rustfft crate by default or the IPP library if the `ipp` feature is enabled)
- The option to use SSE instructions in the `FFTConvolver`

## Prerequisites:

- rust >=1.72.0

#### Optional dependencies:

- Intel IPP (if the `ipp` feature is enabled)

When building with the `ipp` feature, the `ipp-sys` crate is used to link against the IPP library. To build with the `ipp` feature (`cargo build --features ipp`), you need to have the IPP library installed and the `IPPROOT` environment variable set to the root directory of the IPP installation. On Linux this is achieved by running:

- `source /opt/intel/oneapi/setvars.sh`

If you want `ipp` to be statically linked, export `IPP_STATIC=1` before running `cargo build`.
Loading