!~z@      !"#$%&'()*+,-./0123456789:;<=>?7[2013..2018] Robert Clifton-Everest, Trevor L. McDonellBSD3.Trevor L. McDonell <tmcdonell@cse.unsw.edu.au> experimentalnon-portable (GHC extensions)None -@cufftIntegral conversionAcufftFloating conversionBcufftObtain C value from Haskell C.DcufftObtain Haskell C from C value.Ecufft#Convert a C enumeration to Haskell.Fcufft#Convert a Haskell enumeration to C.@ABDEF7[2013..2018] Robert Clifton-Everest, Trevor L. McDonellBSD3.Trevor L. McDonell <tmcdonell@cse.unsw.edu.au> experimentalnon-portable (GHC extensions)None 2cufft+Error codes used by cuFFT library functions 8http://docs.nvidia.com/cuda/cufft/index.html#cufftresultcufftDescribe an error codecufft&Raise a CUFFTException in the IO MonadcufftReturn the results of a function on successful execution, otherwise throw an exception with an error string associated with the return codecufftlThrow an exception with an error string associated with an unsuccessful return code, otherwise return unit.    7[2013..2018] Robert Clifton-Everest, Trevor L. McDonellBSD3.Trevor L. McDonell <tmcdonell@cse.unsw.edu.au> experimentalnon-portable (GHC extensions)None I cufftThe cuFFT library supports complex- and real-valued transforms. This data type enumerates the kind of transform a plan will execute.Key:R: real (32-bit float)D: double (64-bit float)C8: single-precision complex numbers (32-bit, interleaved)Z8: double-precision complex numbers (64-bit, interleaved)'cufft.A handle used to store and access cuFFT plans.8A handle is created by the FFT planning functions (e.g. *5) and used during execution of the transforms (e.g. ).(The handle may be reused, but should be .aed once it is no longer required, in order to release associated GPU memory and other resources.*cufftKCreates a 1D FFT plan configured for a specified signal size and data type.zThe third argument tells cuFFT how many 1D transforms, of size given by the first argument, to configure. Consider using -" for multiple transforms instead. Ahttp://docs.nvidia.com/cuda/cufft/index.html#function-cufftplan1d+cufftNCreates a 2D FFT plan configuration for a specified signal size and data type. Ahttp://docs.nvidia.com/cuda/cufft/index.html#function-cufftplan2d,cufftNCreates a 3D FFT plan configuration for a specified signal size and data type. Ahttp://docs.nvidia.com/cuda/cufft/index.html#function-cufftplan3d-cufftxCreates a batched plan configuration for many signals of a specified size and data type in either 1, 2 or 3 dimensions.cThis function supports more complicated input and output data layouts. If not specified (that is, G^ is passed for either of the second or third parameters), contiguous data arrays are assumed.AData layout configuration consists of three fields, respectively:.storage dimensions of the input data in memoryathe distance between two successive input elements in the innermost (least significant) dimension^the distance between the first element of two consecutive signals in a batch of the input data Chttp://docs.nvidia.com/cuda/cufft/index.html#function-cufftplanmany.cufftRelease resources associated with the given plan. This function should be called once a plan is no longer needed, to avoid wasting GPU memory. Bhttp://docs.nvidia.com/cuda/cufft/index.html#function-cufftdestroy/cufft*cufftSize of the transformationcufftTransformation data typecufft1Number of one-dimensional transforms to configure+cufftThe transform size in the xU-dimension. This is the slowest changing dimension of a transform (strided in memory)cufftThe transform size in the yX-dimension. This is the fastest changing dimension of a transform (contiguous in memory)cufftTransformation data type,cufftThe transform size in the xW-dimension. This is the slowest changing dimension of the transform (strided in memory)cufftThe transform size in the y -dimension.cufftThe transform size in the zZ-dimension. This is the fastest changing dimension of the transform (contiguous in memory)cufftTransformation data type-cufft3The size of the transform in each dimension, where (n !! 0)- is the size of the outermost dimension, and  (n !! rank-1)C the size of the innermost (contiguous) dimension of the transform.cufftInput data layout. If G', the data is assumed to be contiguous.cufftOutput data layout. If G", the data is stored contiguously.cufftTransformation typecufftBatch size for this transform !"#$%&'()*+,-.'() !"#$%&*+,-.7[2013..2018] Robert Clifton-Everest, Trevor L. McDonellBSD3.Trevor L. McDonell <tmcdonell@cse.unsw.edu.au> experimentalnon-portable (GHC extensions)None l2cufftFFT transform direction5cufft9Executes a single-precision complex-to-complex transform.YIf the input and output device pointers are the same, an in-place transform is executed. Ohttp://docs.nvidia.com/cuda/cufft/index.html#function-cufftexecc2c-cufftexecz2z6cufft9Executes a double-precision complex-to-complex transform.YIf the input and output device pointers are the same, an in-place transform is executed. Ohttp://docs.nvidia.com/cuda/cufft/index.html#function-cufftexecc2c-cufftexecz2z7cufftKExecutes a single-precision real-to-complex, implicitly forward, transform.fIf the input and output device pointers refer to the same address, an in-place transform is executed. Ohttp://docs.nvidia.com/cuda/cufft/index.html#function-cufftexecr2c-cufftexecd2z8cufftKExecutes a double-precision real-to-complex, implicitly forward, transform.fIf the input and output device pointers refer to the same address, an in-place transform is executed. Ohttp://docs.nvidia.com/cuda/cufft/index.html#function-cufftexecr2c-cufftexecd2z9cufftKExecutes a single-precision complex-to-real, implicitly forward, transform.fIf the input and output device pointers refer to the same address, an in-place transform is executed. Ohttp://docs.nvidia.com/cuda/cufft/index.html#function-cufftexecc2r-cufftexecz2d:cufftKExecutes a double-precision complex-to-real, implicitly forward, transform.fIf the input and output device pointers refer to the same address, an in-place transform is executed. Ohttp://docs.nvidia.com/cuda/cufft/index.html#function-cufftexecc2r-cufftexecz2d5cufftplan handle, of type !cuffttransform directioncufft input datacufft output data6cufftplan handle, of type $cuffttransform directioncufft input datacufft output data7cufftplan handle, of type "cufft input datacufft output data8cufftplan handle, of type %cufft input datacufft output data9cufftplan handle, of type #cufft input datacufft output data:cufftplan handle, of type &cufft input datacufft output data 23456789: 23456789:7[2013..2018] Robert Clifton-Everest, Trevor L. McDonellBSD3.Trevor L. McDonell <tmcdonell@cse.unsw.edu.au> experimentalnon-portable (GHC extensions)None wK?cufft;Set the execution stream which all subsequent cuFFT library functions will execute with. This enables the activity in this execution stream (e.g. kernel launches and data transfer) to overlap with activity in other execution streams. The association remains until the plan is destroyed or the stream is changed.dIf not set, functions execute in the default stream, which never overlaps with any other operation. Dhttp://docs.nvidia.com/cuda/cufft/index.html#function-cufftsetstream??7[2013..2018] Robert Clifton-Everest, Trevor L. McDonellBSD.Trevor L. McDonell <tmcdonell@cse.unsw.edu.au> experimentalnon-portable (GHC extensions)Noney !"#$%&'(*+,-.23456789:? !"#$%&'(*+,-.H      !"#$%&'()*+,-./01123456789:;<=>?@ABCDEFGHIJKLMNOPQRST$cufft-0.9.0.1-IoK8Swbj2QoHjdSPhLFJMLForeign.CUDA.FFT.StreamForeign.CUDA.FFT.ErrorForeign.CUDA.FFT.PlanForeign.CUDA.FFT.ExecuteForeign.CUDA.FFT.Internal.C2HSexecC2CForeign.CUDA.FFT$cuda-0.10.0.0-GpGXg3KCJfQ7Gz8LaVRozWForeign.CUDA.Driver.StreamStreamCUFFTExceptionExitCode UserErrorResultSuccess InvalidPlan AllocFailed InvalidType InvalidValue InternalError ExecFailed SetupFailed InvalidSize UnalignedDataIncompleteParameterList InvalidDevice ParseError NoWorkspaceNotImplemented LicenseError NotSupporteddescribe cufftError resultIfOk nothingIfOk checkStatus $fEnumResult$fShowCUFFTException$fExceptionCUFFTException $fEqResult $fShowResultTypeC2CR2CC2RZ2ZD2ZZ2DHandle useHandleplan1Dplan2Dplan3DplanManydestroy $fEnumType$fEqType $fShowTypeModeForwardInverseexecZ2ZexecR2CexecD2ZexecC2RexecZ2D $fEnumMode$fEqMode $fShowMode $fBoundedMode setStreamcIntConv cFloatConv cFromBoolghc-prim GHC.TypesBoolcToBoolcToEnum cFromEnumbase GHC.MaybeNothing