Class NativeFFTBackend
java.lang.Object
org.episteme.nativ.mathematics.analysis.fft.backends.NativeFFTBackend
- All Implemented Interfaces:
FFTProvider, AlgorithmProvider, Backend, ComputeBackend, CPUBackend, NativeBackend
@AutoService({FFTProvider.class,ComputeBackend.class,CPUBackend.class,Backend.class,NativeBackend.class,AlgorithmProvider.class})
public class NativeFFTBackend
extends Object
implements FFTProvider, CPUBackend, NativeBackend
FFTW3 implementation of FFTProvider using Project Panama.
- Since:
- 1.2
- Author:
- Silvere Martin-Michiellot, Gemini AI (Google DeepMind)
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionCreates an execution context for running operations.Returns the type of hardware accelerator used by this backend.Returns the unique category of the algorithm.getName()Returns the display name for UI presentation.Returns the name of the native library this backend depends on.intReturns the execution priority (higher is better).double[][]inverseTransform(double[] real, double[] imag) float[][]inverseTransform(float[] real, float[] imag) Real[][]inverseTransform(Real[] real, Real[] imag) double[][][]inverseTransform2D(double[][] real, double[][] imag) float[][][]inverseTransform2D(float[][] real, float[][] imag) Real[][][]inverseTransform2D(Real[][] real, Real[][] imag) double[][][][]inverseTransform3D(double[][][] real, double[][][] imag) float[][][][]inverseTransform3D(float[][][] real, float[][][] imag) Real[][][][]inverseTransform3D(Real[][][] real, Real[][][] imag) Complex[]inverseTransformComplex(Complex[] data) Complex[][]inverseTransformComplex2D(Complex[][] data) Complex[][][]inverseTransformComplex3D(Complex[][][] data) booleanChecks if the provider is available in the current environment.booleanisLoaded()Checks if the native library is loaded and available.voidshutdown()Called when the provider is no longer needed (e.g., application shutdown).double[][]transform(double[] real, double[] imag) float[][]transform(float[] real, float[] imag) Real[][]double[][][]transform2D(double[][] real, double[][] imag) float[][][]transform2D(float[][] real, float[][] imag) Real[][][]transform2D(Real[][] real, Real[][] imag) double[][][][]transform3D(double[][][] real, double[][][] imag) float[][][][]transform3D(float[][][] real, float[][][] imag) Real[][][][]transform3D(Real[][][] real, Real[][][] imag) Complex[]transformComplex(Complex[] data) Complex[][]transformComplex2D(Complex[][] data) Complex[][][]transformComplex3D(Complex[][][] data) Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface AlgorithmProvider
description, getMetadata, scoreMethods inherited from interface Backend
getAlgorithmProviders, getStatusMessage, isExplicitlyDisabledMethods inherited from interface ComputeBackend
createBackend, getDescription, getIdMethods inherited from interface CPUBackend
getType, supportsComplexNumbers, supportsFloatingPoint, supportsParallelOps
-
Constructor Details
-
NativeFFTBackend
public NativeFFTBackend()
-
-
Method Details
-
isLoaded
public boolean isLoaded()Description copied from interface:NativeBackendChecks if the native library is loaded and available.- Specified by:
isLoadedin interfaceNativeBackend- Returns:
- true if the native library has been successfully loaded
-
getNativeLibraryName
Description copied from interface:NativeBackendReturns the name of the native library this backend depends on.- Specified by:
getNativeLibraryNamein interfaceNativeBackend- Returns:
- library name (e.g., "openblas", "cuda", "fftw3")
-
getPriority
public int getPriority()Description copied from interface:AlgorithmProviderReturns the execution priority (higher is better).- Specified by:
getPriorityin interfaceAlgorithmProvider- Specified by:
getPriorityin interfaceBackend
-
getName
Description copied from interface:BackendReturns the display name for UI presentation.- Specified by:
getNamein interfaceAlgorithmProvider- Specified by:
getNamein interfaceBackend- Specified by:
getNamein interfaceFFTProvider
-
getAcceleratorType
Description copied from interface:ComputeBackendReturns the type of hardware accelerator used by this backend.- Specified by:
getAcceleratorTypein interfaceComputeBackend- Specified by:
getAcceleratorTypein interfaceCPUBackend- Returns:
- the accelerator type
-
createContext
Description copied from interface:ComputeBackendCreates an execution context for running operations.The context should be used within a try-with-resources block to ensure proper cleanup of resources.
- Specified by:
createContextin interfaceComputeBackend- Returns:
- new execution context
-
getAlgorithmType
Description copied from interface:AlgorithmProviderReturns the unique category of the algorithm.- Specified by:
getAlgorithmTypein interfaceAlgorithmProvider- Specified by:
getAlgorithmTypein interfaceFFTProvider
-
isAvailable
public boolean isAvailable()Description copied from interface:AlgorithmProviderChecks if the provider is available in the current environment.- Specified by:
isAvailablein interfaceAlgorithmProvider- Specified by:
isAvailablein interfaceBackend
-
transform
public double[][] transform(double[] real, double[] imag) - Specified by:
transformin interfaceFFTProvider
-
inverseTransform
public double[][] inverseTransform(double[] real, double[] imag) - Specified by:
inverseTransformin interfaceFFTProvider
-
transform
- Specified by:
transformin interfaceFFTProvider
-
inverseTransform
- Specified by:
inverseTransformin interfaceFFTProvider
-
transformComplex
- Specified by:
transformComplexin interfaceFFTProvider
-
inverseTransformComplex
- Specified by:
inverseTransformComplexin interfaceFFTProvider
-
transform
public float[][] transform(float[] real, float[] imag) - Specified by:
transformin interfaceFFTProvider
-
inverseTransform
public float[][] inverseTransform(float[] real, float[] imag) - Specified by:
inverseTransformin interfaceFFTProvider
-
transform2D
public double[][][] transform2D(double[][] real, double[][] imag) - Specified by:
transform2Din interfaceFFTProvider
-
inverseTransform2D
public double[][][] inverseTransform2D(double[][] real, double[][] imag) - Specified by:
inverseTransform2Din interfaceFFTProvider
-
transform3D
public double[][][][] transform3D(double[][][] real, double[][][] imag) - Specified by:
transform3Din interfaceFFTProvider
-
inverseTransform3D
public double[][][][] inverseTransform3D(double[][][] real, double[][][] imag) - Specified by:
inverseTransform3Din interfaceFFTProvider
-
transform2D
public float[][][] transform2D(float[][] real, float[][] imag) - Specified by:
transform2Din interfaceFFTProvider
-
inverseTransform2D
public float[][][] inverseTransform2D(float[][] real, float[][] imag) - Specified by:
inverseTransform2Din interfaceFFTProvider
-
transform3D
public float[][][][] transform3D(float[][][] real, float[][][] imag) - Specified by:
transform3Din interfaceFFTProvider
-
inverseTransform3D
public float[][][][] inverseTransform3D(float[][][] real, float[][][] imag) - Specified by:
inverseTransform3Din interfaceFFTProvider
-
transformComplex2D
- Specified by:
transformComplex2Din interfaceFFTProvider
-
inverseTransformComplex2D
- Specified by:
inverseTransformComplex2Din interfaceFFTProvider
-
transformComplex3D
- Specified by:
transformComplex3Din interfaceFFTProvider
-
inverseTransformComplex3D
- Specified by:
inverseTransformComplex3Din interfaceFFTProvider
-
transform2D
- Specified by:
transform2Din interfaceFFTProvider
-
inverseTransform2D
- Specified by:
inverseTransform2Din interfaceFFTProvider
-
transform3D
- Specified by:
transform3Din interfaceFFTProvider
-
inverseTransform3D
- Specified by:
inverseTransform3Din interfaceFFTProvider
-
shutdown
public void shutdown()Description copied from interface:AlgorithmProviderCalled when the provider is no longer needed (e.g., application shutdown). Use this to release local resources or close native segments.- Specified by:
shutdownin interfaceAlgorithmProvider- Specified by:
shutdownin interfaceBackend
-