Skip to content

Request to Add a oneAPI Sample fourier_correlation #417

@hagabb

Description

@hagabb

Summary

This is a request for a new code sample called fourier_correlation, which composes the Fourier correlation algorithm from oneMKL functions.

##Purpose
The samplesy show how to compose more complex mathematical operations from multiple functions while paying attention to where the data resides (to minimize host-device transfers) and where explicit synchronization is required vs. where synchronization is implicit in the task graph.

Description

The Fourier correlation algorithm is commonly used to align 1D signals, overlay 2D images, perform 3D volumetric medical image registration, etc. The algorithm has high arithmetic intensity and the datasets are usually large so performance is critical.

The Fourier correlation algorithm is corr = IDFT(DFT(sig1) * CONJG(DFT(sig2))) where sig1 and sig2 are the real input data (e.g., 1D signals, 2D images, or 3D volumetric images), DFT is the discrete Fourier transform, IDFT is the inverse DFT, and CONJG is the complex conjugate. The necessary functions are available in oneMKL. In addition, oneMKL random number generators are used to add noise to the input data, which is a common technique in signal processing.

The two example codes implement the Fourier correlation algorithm using explicit buffering and USM. They show how to compose more complex mathematical operations from multiple functions while paying attention to where the data resides (to minimize host-device transfers) and where explicit synchronization is required vs. where synchronization is implicit in the task graph.

@srdontha
@JoeOster
@petercad

Domain

Libraries/oneMKL

Dependencies

None

Proposed folder Location

oneAPI-samples/Libraries/oneMKL/fourier_correlation

Metadata

Metadata

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions