Skip to content

Fix up FFTW #50

Description

@s-cavalier

FFTW implementation could probably use some improvements.

Action items:

  • Implement an FFTW class. This should do a couple of things including compile-time size checks, proper allocator usage over fftwmalloc (fftwmalloc only requires 32 byte alignment to use vector isnstructions; memorybuffer has been modified to account for this), compile time FFTWplan(?) if possible, support plan loading/unloading, with a primary callable overload to run on a tensor. There should be std::floating_point and complex specializations if possible.
  • Implement with the eval system. Look to matrix_eval as reference; take an expression and serialize it as the input, and store the result.
  • The operator() should be the main interface expecting a const Tensor& in and a Tensor& out. This way it melds with some of the other systems we are working on. Also keeps things simple, keep a comptime check on the sizes for everything.

Sachit's integration with BLAS is generally a good reference on how to mesh the existing systems. Try and avoid defining new concepts unless there's good motivation to, however.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions