Skip to content

replace IPP by fftw3 for convolution operations (aka Potential).#1089

Open
MaartenHilferink wants to merge 3 commits intomainfrom
issue_463_fftw3c
Open

replace IPP by fftw3 for convolution operations (aka Potential).#1089
MaartenHilferink wants to merge 3 commits intomainfrom
issue_463_fftw3c

Conversation

@MaartenHilferink
Copy link
Copy Markdown
Collaborator

PR Classification

Code cleanup and backend refactor to replace Intel IPP with FFTW3 for convolution operations.

PR Summary

This pull request removes all Intel IPP dependencies and migrates the convolution backend to FFTW3, improving portability and maintainability. The codebase now uses FFTW3 for all high-performance convolution and potential analysis.

  • Potential.cpp: Replaces all IPP-based convolution logic with FFTW3-based implementations, adds thread-safe FFTW plan and kernel FFT caching, and introduces new error handling.
  • Potential.h: Updates data structures and function signatures to support FFTW3, removes IPP-specific fields, and documents the new backend.
  • GeoDLL.vcxproj and related build files: Removes IPP references, adds FFTW3 as a dependency, and ensures correct linking and packaging.
  • Removes all IPP-related source/header files (IppBase.h, UseIpp.h, UseIpp.cpp) and Int16/IPPI code paths.
  • Updates documentation and comments throughout the codebase to reflect the switch to FFTW3.

- Remove IppBase.h, UseIpp.cpp, UseIpp.h and all IPP dependencies

- Implement FFTW3-based convolution with performance optimizations:

  * Plan caching with shared_mutex for thread-safe reuse

  * Pre-computed kernel FFT stored in kernel_info.kernelFfts

  * Thread-local work buffers to avoid per-call allocation

  * Use fftw_execute_dft_r2c/c2r for parallel tile processing

- Update vcpkg.json to include fftw3 dependency

- Update GeoDLL.vcxproj to remove IPP references
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants