accelerate-fftw 0.0 → 1.0
raw patch · 3 files changed
+26/−43 lines, 3 filesdep ~acceleratedep ~accelerate-iodep ~basePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: accelerate, accelerate-io, base
API changes (from Hackage documentation)
- Data.Array.Accelerate.FFTW.Manifest: type Element a = (FFTWReal a, Elt a, BlockPtrs (EltRepr a) ~ ((), Ptr a), BlockPtrs (EltRepr' a) ~ Ptr a)
+ Data.Array.Accelerate.FFTW.Manifest: type Element a = (FFTWReal a, Elt a, BlockPtrs (EltRepr a) ~ Ptr a)
Files
- accelerate-fftw.cabal +8/−8
- src/Data/Array/Accelerate/CArray/Conversion.hs +16/−30
- src/Data/Array/Accelerate/FFTW/Manifest.hs +2/−5
accelerate-fftw.cabal view
@@ -1,10 +1,10 @@ Name: accelerate-fftw-Version: 0.0+Version: 1.0 License: BSD3 License-File: LICENSE Author: Henning Thielemann <haskell@henning-thielemann.de> Maintainer: Henning Thielemann <haskell@henning-thielemann.de>-Homepage: http://code.haskell.org/~thielema/accelerate-fftw/+Homepage: http://hub.darcs.net/thielema/accelerate-fftw/ Category: Math Synopsis: Accelerate frontend to the FFTW library (Fourier transform) Description:@@ -15,22 +15,22 @@ Build-Type: Simple Source-Repository this- Tag: 0.0+ Tag: 1.0 Type: darcs- Location: http://code.haskell.org/~thielema/accelerate-fftw/+ Location: http://hub.darcs.net/thielema/accelerate-fftw/ Source-Repository head Type: darcs- Location: http://code.haskell.org/~thielema/accelerate-fftw/+ Location: http://hub.darcs.net/thielema/accelerate-fftw/ Library Build-Depends: fft >=0.1.7 && <0.2, carray >=0.1.5 && <0.2, storable-complex >=0.2.1 && <0.3,- accelerate-io >=0.15 && <0.16,- accelerate >=0.15 && <0.16,- base >=4.5 && <4.8+ accelerate-io >=1.0 && <1.1,+ accelerate >=1.0 && <1.2,+ base >=4.5 && <4.11 GHC-Options: -Wall -fwarn-missing-import-lists Hs-Source-Dirs: src
src/Data/Array/Accelerate/CArray/Conversion.hs view
@@ -4,7 +4,7 @@ import qualified Data.Array.Accelerate.IO as AIO import qualified Data.Array.Accelerate as A-import Data.Array.Accelerate.Array.Sugar (EltRepr, EltRepr')+import Data.Array.Accelerate.Array.Sugar (EltRepr) import Data.Array.Accelerate (Array, DIM1, DIM2, Z(Z), (:.)((:.))) import qualified Data.Array.CArray as CArray@@ -25,43 +25,37 @@ accFromCArrayReal1D ::- (A.Elt a, Storable a, AIO.BlockPtrs (EltRepr a) ~ ((), Ptr a)) =>+ (A.Elt a, Storable a, AIO.BlockPtrs (EltRepr a) ~ Ptr a) => CArray Int a -> Array DIM1 a accFromCArrayReal1D arr = let (len, fptr) = CArray.toForeignPtr arr in unsafePerformIO $- withForeignPtr fptr $ \ptr -> AIO.fromPtr (Z :. len) ((), ptr)+ withForeignPtr fptr $ \ptr -> AIO.fromPtr (Z :. len) ptr accFromCArrayReal2D ::- (A.Elt a, Storable a, AIO.BlockPtrs (EltRepr a) ~ ((), Ptr a)) =>+ (A.Elt a, Storable a, AIO.BlockPtrs (EltRepr a) ~ Ptr a) => CArray (Int, Int) a -> Array DIM2 a accFromCArrayReal2D arr = unsafePerformIO $ withCArray arr $ \ptr ->- AIO.fromPtr (accDimsFromArrayBounds2D $ CArray.bounds arr) ((), ptr)+ AIO.fromPtr (accDimsFromArrayBounds2D $ CArray.bounds arr) ptr accFromCArrayComplex1D ::- (A.Elt a, Storable a, RealFloat a,- AIO.BlockPtrs (EltRepr a) ~ ((), Ptr a),- AIO.BlockPtrs (EltRepr' a) ~ Ptr a) =>+ (A.Elt a, Storable a, RealFloat a, AIO.BlockPtrs (EltRepr a) ~ Ptr a) => CArray Int (Complex a) -> Array DIM1 (Complex a) accFromCArrayComplex1D arr = accFromCArrayComplex (accDimsFromArrayBounds1D $ CArray.bounds arr) arr accFromCArrayComplex2D ::- (A.Elt a, Storable a, RealFloat a,- AIO.BlockPtrs (EltRepr a) ~ ((), Ptr a),- AIO.BlockPtrs (EltRepr' a) ~ Ptr a) =>+ (A.Elt a, Storable a, RealFloat a, AIO.BlockPtrs (EltRepr a) ~ Ptr a) => CArray (Int, Int) (Complex a) -> Array DIM2 (Complex a) accFromCArrayComplex2D arr = accFromCArrayComplex (accDimsFromArrayBounds2D $ CArray.bounds arr) arr accFromCArrayComplex :: (Ix i, A.Shape sh,- A.Elt a, Storable a, RealFloat a,- AIO.BlockPtrs (EltRepr a) ~ ((), Ptr a),- AIO.BlockPtrs (EltRepr' a) ~ Ptr a) =>+ A.Elt a, Storable a, RealFloat a, AIO.BlockPtrs (EltRepr a) ~ Ptr a) => sh -> CArray i (Complex a) -> Array sh (Complex a) accFromCArrayComplex sh arr = unsafePerformIO $@@ -80,34 +74,30 @@ cArrayFromAccReal1D ::- (A.Elt a, Storable a, AIO.BlockPtrs (EltRepr a) ~ ((), Ptr a)) =>+ (A.Elt a, Storable a, AIO.BlockPtrs (EltRepr a) ~ Ptr a) => Array DIM1 a -> CArray Int a cArrayFromAccReal1D arr = let (Z:.len) = A.arrayShape arr in unsafePerformIO $- createCArray (0,len-1) $ \ptr -> AIO.toPtr arr ((), ptr)+ createCArray (0,len-1) $ \ptr -> AIO.toPtr arr ptr cArrayFromAccReal2D ::- (A.Elt a, Storable a, AIO.BlockPtrs (EltRepr a) ~ ((), Ptr a)) =>+ (A.Elt a, Storable a, AIO.BlockPtrs (EltRepr a) ~ Ptr a) => Array DIM2 a -> CArray (Int, Int) a cArrayFromAccReal2D arr = unsafePerformIO $ createCArray (arrayBounds2DFromAccDims $ A.arrayShape arr) $ \ptr ->- AIO.toPtr arr ((), ptr)+ AIO.toPtr arr ptr cArrayFromAccComplex1D ::- (A.Elt a, Storable a, RealFloat a,- AIO.BlockPtrs (EltRepr a) ~ ((), Ptr a),- AIO.BlockPtrs (EltRepr' a) ~ Ptr a) =>+ (A.Elt a, Storable a, RealFloat a, AIO.BlockPtrs (EltRepr a) ~ Ptr a) => Array DIM1 (Complex a) -> CArray Int (Complex a) cArrayFromAccComplex1D arr = cArrayFromAccComplex (arrayBounds1DFromAccDims $ A.arrayShape arr) arr cArrayFromAccComplex2D ::- (A.Elt a, Storable a, RealFloat a,- AIO.BlockPtrs (EltRepr a) ~ ((), Ptr a),- AIO.BlockPtrs (EltRepr' a) ~ Ptr a) =>+ (A.Elt a, Storable a, RealFloat a, AIO.BlockPtrs (EltRepr a) ~ Ptr a) => Array DIM2 (Complex a) -> CArray (Int,Int) (Complex a) cArrayFromAccComplex2D arr = cArrayFromAccComplex@@ -115,9 +105,7 @@ cArrayFromAccComplex :: (Ix i, A.Shape sh,- A.Elt a, Storable a, RealFloat a,- AIO.BlockPtrs (EltRepr a) ~ ((), Ptr a),- AIO.BlockPtrs (EltRepr' a) ~ Ptr a) =>+ A.Elt a, Storable a, RealFloat a, AIO.BlockPtrs (EltRepr a) ~ Ptr a) => (i,i) -> Array sh (Complex a) -> CArray i (Complex a) cArrayFromAccComplex bnds arr = unsafePerformIO $ do fmap (uncurry (CArray.liftArray2 (Complex.:+))) $@@ -128,9 +116,7 @@ withCArrayComplex :: (Ix i, A.Shape sh,- A.Elt a, Storable a, RealFloat a,- AIO.BlockPtrs (EltRepr a) ~ ((), Ptr a),- AIO.BlockPtrs (EltRepr' a) ~ Ptr a) =>+ A.Elt a, Storable a, RealFloat a, AIO.BlockPtrs (EltRepr a) ~ Ptr a) => (sh -> (i,i)) -> (CArray i (Complex a) -> CArray i (Complex a)) -> Array sh (Complex a) -> Array sh (Complex a)
src/Data/Array/Accelerate/FFTW/Manifest.hs view
@@ -17,7 +17,7 @@ import qualified Data.Array.Accelerate.IO as AIO import qualified Data.Array.Accelerate as A-import Data.Array.Accelerate.Array.Sugar (EltRepr, EltRepr')+import Data.Array.Accelerate.Array.Sugar (EltRepr) import Data.Array.Accelerate (Array, (:.)((:.))) import Foreign.Storable.Complex ()@@ -31,10 +31,7 @@ type Transform sh a = Array sh a -> Array sh a -type Element a =- (FFTWReal a, A.Elt a,- AIO.BlockPtrs (EltRepr a) ~ ((), Ptr a),- AIO.BlockPtrs (EltRepr' a) ~ Ptr a)+type Element a = (FFTWReal a, A.Elt a, AIO.BlockPtrs (EltRepr a) ~ Ptr a) dft :: (A.Shape sh, Element a) =>