Safe Haskell | None |
---|---|
Language | Haskell98 |
Transformations of single datasets.
- type Transform sh a b = Acc (Array sh a) -> Acc (Array sh b)
- transform :: (Shape sh, Slice sh, Elt e, Real e) => Handle (sh :. Int) e a b -> Transform (sh :. Int) a b
- data Handle sh e a b
- plan1D :: (Elt e, Real e) => Mode DIM1 e a b -> DIM1 -> IO (Handle DIM1 e a b)
- plan2D :: (Elt e, Real e) => Mode DIM2 e a b -> DIM2 -> IO (Handle DIM2 e a b)
- plan3D :: (Elt e, Real e) => Mode DIM3 e a b -> DIM3 -> IO (Handle DIM3 e a b)
- class (RealFloat e, IsFloating e) => Real e
- data Mode sh e a b
- forwardComplex :: (Shape sh, Slice sh, Real e) => Mode sh e (Complex e) (Complex e)
- inverseComplex :: (Shape sh, Slice sh, Real e) => Mode sh e (Complex e) (Complex e)
- forwardReal :: (Shape sh, Slice sh, Real e) => Mode (sh :. Int) e e (Complex e)
- inverseReal :: (Shape sh, Slice sh, Real e) => Mode (sh :. Int) e (Complex e) e
Documentation
transform :: (Shape sh, Slice sh, Elt e, Real e) => Handle (sh :. Int) e a b -> Transform (sh :. Int) a b Source
The implementation works on all arrays of rank less than or equal to 3. The result is un-normalised.
plan1D :: (Elt e, Real e) => Mode DIM1 e a b -> DIM1 -> IO (Handle DIM1 e a b) Source
The plan must be created in the context where the transform is executed.
See plan1D
for details.
forwardReal :: (Shape sh, Slice sh, Real e) => Mode (sh :. Int) e e (Complex e) Source
In contrast to plain CUFFT functions the data is redundant.
That is, an array of shape sh
is transformed to an array of shape sh
.
This way, all dimensions of an array are handled the same way.
Chances are good,
that the internal post processing is fused with following array operations
and thus the redundant data will not be stored in a manifest array.