Speaker
Description
Running FFTs, possibly with different sizes and types, from multiple threads is becoming necessary to improve both the program flexibility and execution efficiency, with an increasing number of CPU cores on a typical SMP machine. However, the native interface in FFTW and Intel MKL does not fully support this use scenario due to thread safety issues. To address this issue, SafeFFT is designed as a simple C++ interface that allows various FFTs can be planned and executed from multiple OpenMP threads safely. The internal implementation is based on a hash map with a custom OpenMP read-write lock that allows various FFT plans can be safely allocated, saved, and reused. Nested OpenMP threading is also supported to improve the utilization of CPU cores.