Implement the Fourier Correlation Algorithm
Implement the Fourier Correlation Algorithm
Subscribe Now
Stay in the know on all things CODE. Updates are delivered to your inbox.
Overview
Fourier correlation has many applications:
- Measure the similarity of two signals
- Find the best translation to overlay similar images
- Segment volumetric medical images
A Fourier correlation algorithm† can be composed from Intel® oneAPI Math Kernel Library (oneMKL) functions for easy offload to various accelerators such as GPUs and FPGAs.
In this session, senior principal software engineer Henry Gabb:
- Covers the basics of:
- Data Parallel C++ (DPC++) queues
- Buffers, Unified Shared Memory (USM), and data movement
- Implicit vs. explicit synchronization
- Walks through buffered and USM implementations of a 1D Fourier correlation
- Discusses the movement of data between host and device and ways to avoid unnecessary data movement
† correlation=MAXLOC(IDFT(signal1)*CONJG(DFT(SIGNAL2)))) where DFT is the discrete Fourier transform, IDFT is the inverse DFT, CONJG is the complex conjugate, and MAXLOC is the location of the maximum correlation score.
Japanese Language Version
Featured Software
- Get DPC++ and oneMKL as part of the Intel® oneAPI Base Toolkit—a foundational set of tools and libraries for developing high-performance, data-centric applications across diverse architectures.
- Download the stand-alone version of oneMKL.
Resources
- Learn more about DPC++.
- Sign up for an Intel® Developer Cloud account—a free development sandbox with access to the latest Intel hardware and oneAPI software.
- Explore oneAPI including developer opportunities and benefits.
- Subscribe to Code Together, an interview series that explores the challenges at the forefront of cross-architecture development. Each biweekly episode features industry VIPs who are blazing new trails through today's data-centric world. Available wherever you get your podcasts.
Develop high-performance, data-centric applications for CPUs, GPUs, and FPGAs with this core set of tools, libraries, and frameworks including LLVM*-based compilers.