{-# LINE 1 "src/Foreign/CUDA/Runtime/Error.chs" #-}
{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE ForeignFunctionInterface #-}
module Foreign.CUDA.Runtime.Error (
Status(..), CUDAException(..),
cudaError, describe, requireSDK,
resultIfOk, nothingIfOk, checkStatus,
) where
import qualified Foreign.C.String as C2HSImp
import qualified Foreign.C.Types as C2HSImp
import qualified Foreign.Ptr as C2HSImp
import qualified System.IO.Unsafe as C2HSImp
import Foreign.CUDA.Internal.C2HS
import Text.Show.Describe
import Control.Exception
import Data.Typeable
import Foreign.C
import Foreign.Ptr
import Language.Haskell.TH
import System.IO.Unsafe
import Text.Printf
{-# LINE 37 "src/Foreign/CUDA/Runtime/Error.chs" #-}
data Status = Success
| InvalidValue
| MemoryAllocation
| InitializationError
| CudartUnloading
| ProfilerDisabled
| ProfilerNotInitialized
| ProfilerAlreadyStarted
| ProfilerAlreadyStopped
| InvalidConfiguration
| InvalidPitchValue
| InvalidSymbol
| InvalidHostPointer
| InvalidDevicePointer
| InvalidTexture
| InvalidTextureBinding
| InvalidChannelDescriptor
| InvalidMemcpyDirection
| AddressOfConstant
| TextureFetchFailed
| TextureNotBound
| SynchronizationError
| InvalidFilterSetting
| InvalidNormSetting
| MixedDeviceExecution
| NotYetImplemented
| MemoryValueTooLarge
| InsufficientDriver
| InvalidSurface
| DuplicateVariableName
| DuplicateTextureName
| DuplicateSurfaceName
| DevicesUnavailable
| IncompatibleDriverContext
| MissingConfiguration
| PriorLaunchFailure
| LaunchMaxDepthExceeded
| LaunchFileScopedTex
| LaunchFileScopedSurf
| SyncDepthExceeded
| LaunchPendingCountExceeded
| InvalidDeviceFunction
| NoDevice
| InvalidDevice
| StartupFailure
| InvalidKernelImage
| DeviceUninitialized
| MapBufferObjectFailed
| UnmapBufferObjectFailed
| ArrayIsMapped
| AlreadyMapped
| NoKernelImageForDevice
| AlreadyAcquired
| NotMapped
| NotMappedAsArray
| NotMappedAsPointer
| ECCUncorrectable
| UnsupportedLimit
| DeviceAlreadyInUse
| PeerAccessUnsupported
| InvalidPtx
| InvalidGraphicsContext
| NvlinkUncorrectable
| JitCompilerNotFound
| InvalidSource
| FileNotFound
| SharedObjectSymbolNotFound
| SharedObjectInitFailed
| OperatingSystem
| InvalidResourceHandle
| IllegalState
| SymbolNotFound
| NotReady
| IllegalAddress
| LaunchOutOfResources
| LaunchTimeout
| LaunchIncompatibleTexturing
| PeerAccessAlreadyEnabled
| PeerAccessNotEnabled
| SetOnActiveProcess
| ContextIsDestroyed
| Assert
| TooManyPeers
| HostMemoryAlreadyRegistered
| HostMemoryNotRegistered
| HardwareStackError
| IllegalInstruction
| MisalignedAddress
| InvalidAddressSpace
| InvalidPc
| LaunchFailure
| CooperativeLaunchTooLarge
| NotPermitted
| NotSupported
| SystemNotReady
| SystemDriverMismatch
| CompatNotSupportedOnDevice
| StreamCaptureUnsupported
| StreamCaptureInvalidated
| StreamCaptureMerge
| StreamCaptureUnmatched
| StreamCaptureUnjoined
| StreamCaptureIsolation
| StreamCaptureImplicit
| CapturedEvent
| StreamCaptureWrongThread
| Timeout
| GraphExecUpdateFailure
| Unknown
| ApiFailureBase
deriving (Status -> Status -> Bool
(Status -> Status -> Bool)
-> (Status -> Status -> Bool) -> Eq Status
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Status -> Status -> Bool
$c/= :: Status -> Status -> Bool
== :: Status -> Status -> Bool
$c== :: Status -> Status -> Bool
Eq,Int -> Status -> ShowS
[Status] -> ShowS
Status -> String
(Int -> Status -> ShowS)
-> (Status -> String) -> ([Status] -> ShowS) -> Show Status
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Status] -> ShowS
$cshowList :: [Status] -> ShowS
show :: Status -> String
$cshow :: Status -> String
showsPrec :: Int -> Status -> ShowS
$cshowsPrec :: Int -> Status -> ShowS
Show)
instance Enum Status where
succ :: Status -> Status
succ Status
Success = Status
InvalidValue
succ Status
InvalidValue = Status
MemoryAllocation
succ Status
MemoryAllocation = Status
InitializationError
succ Status
InitializationError = Status
CudartUnloading
succ Status
CudartUnloading = Status
ProfilerDisabled
succ Status
ProfilerDisabled = Status
ProfilerNotInitialized
succ Status
ProfilerNotInitialized = Status
ProfilerAlreadyStarted
succ Status
ProfilerAlreadyStarted = Status
ProfilerAlreadyStopped
succ Status
ProfilerAlreadyStopped = Status
InvalidConfiguration
succ Status
InvalidConfiguration = Status
InvalidPitchValue
succ Status
InvalidPitchValue = Status
InvalidSymbol
succ Status
InvalidSymbol = Status
InvalidHostPointer
succ Status
InvalidHostPointer = Status
InvalidDevicePointer
succ Status
InvalidDevicePointer = Status
InvalidTexture
succ Status
InvalidTexture = Status
InvalidTextureBinding
succ Status
InvalidTextureBinding = Status
InvalidChannelDescriptor
succ Status
InvalidChannelDescriptor = Status
InvalidMemcpyDirection
succ Status
InvalidMemcpyDirection = Status
AddressOfConstant
succ Status
AddressOfConstant = Status
TextureFetchFailed
succ Status
TextureFetchFailed = Status
TextureNotBound
succ Status
TextureNotBound = Status
SynchronizationError
succ Status
SynchronizationError = Status
InvalidFilterSetting
succ Status
InvalidFilterSetting = Status
InvalidNormSetting
succ Status
InvalidNormSetting = Status
MixedDeviceExecution
succ Status
MixedDeviceExecution = Status
NotYetImplemented
succ Status
NotYetImplemented = Status
MemoryValueTooLarge
succ Status
MemoryValueTooLarge = Status
InsufficientDriver
succ Status
InsufficientDriver = Status
InvalidSurface
succ Status
InvalidSurface = Status
DuplicateVariableName
succ Status
DuplicateVariableName = Status
DuplicateTextureName
succ Status
DuplicateTextureName = Status
DuplicateSurfaceName
succ Status
DuplicateSurfaceName = Status
DevicesUnavailable
succ Status
DevicesUnavailable = Status
IncompatibleDriverContext
succ Status
IncompatibleDriverContext = Status
MissingConfiguration
succ Status
MissingConfiguration = Status
PriorLaunchFailure
succ Status
PriorLaunchFailure = Status
LaunchMaxDepthExceeded
succ Status
LaunchMaxDepthExceeded = Status
LaunchFileScopedTex
succ Status
LaunchFileScopedTex = Status
LaunchFileScopedSurf
succ Status
LaunchFileScopedSurf = Status
SyncDepthExceeded
succ Status
SyncDepthExceeded = Status
LaunchPendingCountExceeded
succ Status
LaunchPendingCountExceeded = Status
InvalidDeviceFunction
succ Status
InvalidDeviceFunction = Status
NoDevice
succ Status
NoDevice = Status
InvalidDevice
succ Status
InvalidDevice = Status
StartupFailure
succ Status
StartupFailure = Status
InvalidKernelImage
succ Status
InvalidKernelImage = Status
DeviceUninitialized
succ Status
DeviceUninitialized = Status
MapBufferObjectFailed
succ Status
MapBufferObjectFailed = Status
UnmapBufferObjectFailed
succ Status
UnmapBufferObjectFailed = Status
ArrayIsMapped
succ Status
ArrayIsMapped = Status
AlreadyMapped
succ Status
AlreadyMapped = Status
NoKernelImageForDevice
succ Status
NoKernelImageForDevice = Status
AlreadyAcquired
succ Status
AlreadyAcquired = Status
NotMapped
succ Status
NotMapped = Status
NotMappedAsArray
succ Status
NotMappedAsArray = Status
NotMappedAsPointer
succ Status
NotMappedAsPointer = Status
ECCUncorrectable
succ Status
ECCUncorrectable = Status
UnsupportedLimit
succ Status
UnsupportedLimit = Status
DeviceAlreadyInUse
succ Status
DeviceAlreadyInUse = Status
PeerAccessUnsupported
succ Status
PeerAccessUnsupported = Status
InvalidPtx
succ Status
InvalidPtx = Status
InvalidGraphicsContext
succ Status
InvalidGraphicsContext = Status
NvlinkUncorrectable
succ Status
NvlinkUncorrectable = Status
JitCompilerNotFound
succ Status
JitCompilerNotFound = Status
InvalidSource
succ Status
InvalidSource = Status
FileNotFound
succ Status
FileNotFound = Status
SharedObjectSymbolNotFound
succ Status
SharedObjectSymbolNotFound = Status
SharedObjectInitFailed
succ Status
SharedObjectInitFailed = Status
OperatingSystem
succ Status
OperatingSystem = Status
InvalidResourceHandle
succ Status
InvalidResourceHandle = Status
IllegalState
succ Status
IllegalState = Status
SymbolNotFound
succ Status
SymbolNotFound = Status
NotReady
succ Status
NotReady = Status
IllegalAddress
succ Status
IllegalAddress = Status
LaunchOutOfResources
succ Status
LaunchOutOfResources = Status
LaunchTimeout
succ Status
LaunchTimeout = Status
LaunchIncompatibleTexturing
succ Status
LaunchIncompatibleTexturing = Status
PeerAccessAlreadyEnabled
succ Status
PeerAccessAlreadyEnabled = Status
PeerAccessNotEnabled
succ Status
PeerAccessNotEnabled = Status
SetOnActiveProcess
succ Status
SetOnActiveProcess = Status
ContextIsDestroyed
succ Status
ContextIsDestroyed = Status
Assert
succ Status
Assert = Status
TooManyPeers
succ Status
TooManyPeers = Status
HostMemoryAlreadyRegistered
succ Status
HostMemoryAlreadyRegistered = Status
HostMemoryNotRegistered
succ Status
HostMemoryNotRegistered = Status
HardwareStackError
succ Status
HardwareStackError = Status
IllegalInstruction
succ Status
IllegalInstruction = Status
MisalignedAddress
succ Status
MisalignedAddress = Status
InvalidAddressSpace
succ Status
InvalidAddressSpace = Status
InvalidPc
succ Status
InvalidPc = Status
LaunchFailure
succ Status
LaunchFailure = Status
CooperativeLaunchTooLarge
succ Status
CooperativeLaunchTooLarge = Status
NotPermitted
succ Status
NotPermitted = Status
NotSupported
succ Status
NotSupported = Status
SystemNotReady
succ Status
SystemNotReady = Status
SystemDriverMismatch
succ Status
SystemDriverMismatch = Status
CompatNotSupportedOnDevice
succ Status
CompatNotSupportedOnDevice = Status
StreamCaptureUnsupported
succ Status
StreamCaptureUnsupported = Status
StreamCaptureInvalidated
succ Status
StreamCaptureInvalidated = Status
StreamCaptureMerge
succ Status
StreamCaptureMerge = Status
StreamCaptureUnmatched
succ Status
StreamCaptureUnmatched = Status
StreamCaptureUnjoined
succ Status
StreamCaptureUnjoined = Status
StreamCaptureIsolation
succ Status
StreamCaptureIsolation = Status
StreamCaptureImplicit
succ Status
StreamCaptureImplicit = Status
CapturedEvent
succ Status
CapturedEvent = Status
StreamCaptureWrongThread
succ Status
StreamCaptureWrongThread = Status
Timeout
succ Status
Timeout = Status
GraphExecUpdateFailure
succ Status
GraphExecUpdateFailure = Status
Unknown
succ Status
Unknown = Status
ApiFailureBase
succ Status
ApiFailureBase = String -> Status
forall a. HasCallStack => String -> a
error String
"Status.succ: ApiFailureBase has no successor"
pred :: Status -> Status
pred Status
InvalidValue = Status
Success
pred Status
MemoryAllocation = Status
InvalidValue
pred Status
InitializationError = Status
MemoryAllocation
pred Status
CudartUnloading = Status
InitializationError
pred Status
ProfilerDisabled = Status
CudartUnloading
pred Status
ProfilerNotInitialized = Status
ProfilerDisabled
pred Status
ProfilerAlreadyStarted = Status
ProfilerNotInitialized
pred Status
ProfilerAlreadyStopped = Status
ProfilerAlreadyStarted
pred Status
InvalidConfiguration = Status
ProfilerAlreadyStopped
pred Status
InvalidPitchValue = Status
InvalidConfiguration
pred Status
InvalidSymbol = Status
InvalidPitchValue
pred Status
InvalidHostPointer = Status
InvalidSymbol
pred Status
InvalidDevicePointer = Status
InvalidHostPointer
pred Status
InvalidTexture = Status
InvalidDevicePointer
pred Status
InvalidTextureBinding = Status
InvalidTexture
pred Status
InvalidChannelDescriptor = Status
InvalidTextureBinding
pred Status
InvalidMemcpyDirection = Status
InvalidChannelDescriptor
pred Status
AddressOfConstant = Status
InvalidMemcpyDirection
pred Status
TextureFetchFailed = Status
AddressOfConstant
pred Status
TextureNotBound = Status
TextureFetchFailed
pred Status
SynchronizationError = Status
TextureNotBound
pred Status
InvalidFilterSetting = Status
SynchronizationError
pred Status
InvalidNormSetting = Status
InvalidFilterSetting
pred Status
MixedDeviceExecution = Status
InvalidNormSetting
pred Status
NotYetImplemented = Status
MixedDeviceExecution
pred Status
MemoryValueTooLarge = Status
NotYetImplemented
pred Status
InsufficientDriver = Status
MemoryValueTooLarge
pred Status
InvalidSurface = Status
InsufficientDriver
pred Status
DuplicateVariableName = Status
InvalidSurface
pred Status
DuplicateTextureName = Status
DuplicateVariableName
pred Status
DuplicateSurfaceName = Status
DuplicateTextureName
pred Status
DevicesUnavailable = Status
DuplicateSurfaceName
pred Status
IncompatibleDriverContext = Status
DevicesUnavailable
pred Status
MissingConfiguration = Status
IncompatibleDriverContext
pred Status
PriorLaunchFailure = Status
MissingConfiguration
pred Status
LaunchMaxDepthExceeded = Status
PriorLaunchFailure
pred Status
LaunchFileScopedTex = Status
LaunchMaxDepthExceeded
pred Status
LaunchFileScopedSurf = Status
LaunchFileScopedTex
pred Status
SyncDepthExceeded = Status
LaunchFileScopedSurf
pred Status
LaunchPendingCountExceeded = Status
SyncDepthExceeded
pred Status
InvalidDeviceFunction = Status
LaunchPendingCountExceeded
pred Status
NoDevice = Status
InvalidDeviceFunction
pred Status
InvalidDevice = Status
NoDevice
pred Status
StartupFailure = Status
InvalidDevice
pred Status
InvalidKernelImage = Status
StartupFailure
pred Status
DeviceUninitialized = Status
InvalidKernelImage
pred Status
MapBufferObjectFailed = Status
DeviceUninitialized
pred Status
UnmapBufferObjectFailed = Status
MapBufferObjectFailed
pred Status
ArrayIsMapped = Status
UnmapBufferObjectFailed
pred Status
AlreadyMapped = Status
ArrayIsMapped
pred Status
NoKernelImageForDevice = Status
AlreadyMapped
pred Status
AlreadyAcquired = Status
NoKernelImageForDevice
pred Status
NotMapped = Status
AlreadyAcquired
pred Status
NotMappedAsArray = Status
NotMapped
pred Status
NotMappedAsPointer = Status
NotMappedAsArray
pred Status
ECCUncorrectable = Status
NotMappedAsPointer
pred Status
UnsupportedLimit = Status
ECCUncorrectable
pred Status
DeviceAlreadyInUse = Status
UnsupportedLimit
pred Status
PeerAccessUnsupported = Status
DeviceAlreadyInUse
pred Status
InvalidPtx = Status
PeerAccessUnsupported
pred Status
InvalidGraphicsContext = Status
InvalidPtx
pred Status
NvlinkUncorrectable = Status
InvalidGraphicsContext
pred Status
JitCompilerNotFound = Status
NvlinkUncorrectable
pred Status
InvalidSource = Status
JitCompilerNotFound
pred Status
FileNotFound = Status
InvalidSource
pred Status
SharedObjectSymbolNotFound = Status
FileNotFound
pred Status
SharedObjectInitFailed = Status
SharedObjectSymbolNotFound
pred Status
OperatingSystem = Status
SharedObjectInitFailed
pred Status
InvalidResourceHandle = Status
OperatingSystem
pred Status
IllegalState = Status
InvalidResourceHandle
pred Status
SymbolNotFound = Status
IllegalState
pred Status
NotReady = Status
SymbolNotFound
pred Status
IllegalAddress = Status
NotReady
pred Status
LaunchOutOfResources = Status
IllegalAddress
pred Status
LaunchTimeout = Status
LaunchOutOfResources
pred Status
LaunchIncompatibleTexturing = Status
LaunchTimeout
pred Status
PeerAccessAlreadyEnabled = Status
LaunchIncompatibleTexturing
pred Status
PeerAccessNotEnabled = Status
PeerAccessAlreadyEnabled
pred Status
SetOnActiveProcess = Status
PeerAccessNotEnabled
pred Status
ContextIsDestroyed = Status
SetOnActiveProcess
pred Status
Assert = Status
ContextIsDestroyed
pred Status
TooManyPeers = Status
Assert
pred Status
HostMemoryAlreadyRegistered = Status
TooManyPeers
pred Status
HostMemoryNotRegistered = Status
HostMemoryAlreadyRegistered
pred Status
HardwareStackError = Status
HostMemoryNotRegistered
pred Status
IllegalInstruction = Status
HardwareStackError
pred Status
MisalignedAddress = Status
IllegalInstruction
pred Status
InvalidAddressSpace = Status
MisalignedAddress
pred Status
InvalidPc = Status
InvalidAddressSpace
pred Status
LaunchFailure = Status
InvalidPc
pred Status
CooperativeLaunchTooLarge = Status
LaunchFailure
pred Status
NotPermitted = Status
CooperativeLaunchTooLarge
pred Status
NotSupported = Status
NotPermitted
pred Status
SystemNotReady = Status
NotSupported
pred Status
SystemDriverMismatch = Status
SystemNotReady
pred Status
CompatNotSupportedOnDevice = Status
SystemDriverMismatch
pred Status
StreamCaptureUnsupported = Status
CompatNotSupportedOnDevice
pred Status
StreamCaptureInvalidated = Status
StreamCaptureUnsupported
pred Status
StreamCaptureMerge = Status
StreamCaptureInvalidated
pred Status
StreamCaptureUnmatched = Status
StreamCaptureMerge
pred Status
StreamCaptureUnjoined = Status
StreamCaptureUnmatched
pred Status
StreamCaptureIsolation = Status
StreamCaptureUnjoined
pred Status
StreamCaptureImplicit = Status
StreamCaptureIsolation
pred Status
CapturedEvent = Status
StreamCaptureImplicit
pred Status
StreamCaptureWrongThread = Status
CapturedEvent
pred Status
Timeout = Status
StreamCaptureWrongThread
pred Status
GraphExecUpdateFailure = Status
Timeout
pred Status
Unknown = Status
GraphExecUpdateFailure
pred Status
ApiFailureBase = Status
Unknown
pred Status
Success = String -> Status
forall a. HasCallStack => String -> a
error String
"Status.pred: Success has no predecessor"
enumFromTo :: Status -> Status -> [Status]
enumFromTo Status
from Status
to = Status -> [Status]
forall t. Enum t => t -> [t]
go Status
from
where
end :: Int
end = Status -> Int
forall a. Enum a => a -> Int
fromEnum Status
to
go :: t -> [t]
go t
v = case Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (t -> Int
forall a. Enum a => a -> Int
fromEnum t
v) Int
end of
Ordering
LT -> t
v t -> [t] -> [t]
forall a. a -> [a] -> [a]
: t -> [t]
go (t -> t
forall a. Enum a => a -> a
succ t
v)
Ordering
EQ -> [t
v]
Ordering
GT -> []
enumFrom :: Status -> [Status]
enumFrom Status
from = Status -> Status -> [Status]
forall a. Enum a => a -> a -> [a]
enumFromTo Status
from Status
ApiFailureBase
fromEnum :: Status -> Int
fromEnum Status
Success = Int
0
fromEnum Status
InvalidValue = Int
1
fromEnum Status
MemoryAllocation = Int
2
fromEnum Status
InitializationError = Int
3
fromEnum Status
CudartUnloading = Int
4
fromEnum Status
ProfilerDisabled = Int
5
fromEnum Status
ProfilerNotInitialized = Int
6
fromEnum Status
ProfilerAlreadyStarted = Int
7
fromEnum Status
ProfilerAlreadyStopped = Int
8
fromEnum Status
InvalidConfiguration = Int
9
fromEnum Status
InvalidPitchValue = Int
12
fromEnum Status
InvalidSymbol = Int
13
fromEnum Status
InvalidHostPointer = Int
16
fromEnum Status
InvalidDevicePointer = Int
17
fromEnum Status
InvalidTexture = Int
18
fromEnum Status
InvalidTextureBinding = Int
19
fromEnum Status
InvalidChannelDescriptor = Int
20
fromEnum Status
InvalidMemcpyDirection = Int
21
fromEnum Status
AddressOfConstant = Int
22
fromEnum Status
TextureFetchFailed = Int
23
fromEnum Status
TextureNotBound = Int
24
fromEnum Status
SynchronizationError = Int
25
fromEnum Status
InvalidFilterSetting = Int
26
fromEnum Status
InvalidNormSetting = Int
27
fromEnum Status
MixedDeviceExecution = Int
28
fromEnum Status
NotYetImplemented = Int
31
fromEnum Status
MemoryValueTooLarge = Int
32
fromEnum Status
InsufficientDriver = Int
35
fromEnum Status
InvalidSurface = Int
37
fromEnum Status
DuplicateVariableName = Int
43
fromEnum Status
DuplicateTextureName = Int
44
fromEnum Status
DuplicateSurfaceName = Int
45
fromEnum Status
DevicesUnavailable = Int
46
fromEnum Status
IncompatibleDriverContext = Int
49
fromEnum Status
MissingConfiguration = Int
52
fromEnum Status
PriorLaunchFailure = Int
53
fromEnum Status
LaunchMaxDepthExceeded = Int
65
fromEnum Status
LaunchFileScopedTex = Int
66
fromEnum Status
LaunchFileScopedSurf = Int
67
fromEnum Status
SyncDepthExceeded = Int
68
fromEnum Status
LaunchPendingCountExceeded = Int
69
fromEnum Status
InvalidDeviceFunction = Int
98
fromEnum Status
NoDevice = Int
100
fromEnum Status
InvalidDevice = Int
101
fromEnum Status
StartupFailure = Int
127
fromEnum Status
InvalidKernelImage = Int
200
fromEnum Status
DeviceUninitialized = Int
201
fromEnum Status
MapBufferObjectFailed = Int
205
fromEnum Status
UnmapBufferObjectFailed = Int
206
fromEnum Status
ArrayIsMapped = Int
207
fromEnum Status
AlreadyMapped = Int
208
fromEnum Status
NoKernelImageForDevice = Int
209
fromEnum Status
AlreadyAcquired = Int
210
fromEnum Status
NotMapped = Int
211
fromEnum Status
NotMappedAsArray = Int
212
fromEnum Status
NotMappedAsPointer = Int
213
fromEnum Status
ECCUncorrectable = Int
214
fromEnum Status
UnsupportedLimit = Int
215
fromEnum Status
DeviceAlreadyInUse = Int
216
fromEnum Status
PeerAccessUnsupported = Int
217
fromEnum Status
InvalidPtx = Int
218
fromEnum Status
InvalidGraphicsContext = Int
219
fromEnum Status
NvlinkUncorrectable = Int
220
fromEnum Status
JitCompilerNotFound = Int
221
fromEnum Status
InvalidSource = Int
300
fromEnum Status
FileNotFound = Int
301
fromEnum Status
SharedObjectSymbolNotFound = Int
302
fromEnum Status
SharedObjectInitFailed = Int
303
fromEnum Status
OperatingSystem = Int
304
fromEnum Status
InvalidResourceHandle = Int
400
fromEnum Status
IllegalState = Int
401
fromEnum Status
SymbolNotFound = Int
500
fromEnum Status
NotReady = Int
600
fromEnum Status
IllegalAddress = Int
700
fromEnum Status
LaunchOutOfResources = Int
701
fromEnum Status
LaunchTimeout = Int
702
fromEnum Status
LaunchIncompatibleTexturing = Int
703
fromEnum Status
PeerAccessAlreadyEnabled = Int
704
fromEnum Status
PeerAccessNotEnabled = Int
705
fromEnum Status
SetOnActiveProcess = Int
708
fromEnum Status
ContextIsDestroyed = Int
709
fromEnum Status
Assert = Int
710
fromEnum Status
TooManyPeers = Int
711
fromEnum Status
HostMemoryAlreadyRegistered = Int
712
fromEnum Status
HostMemoryNotRegistered = Int
713
fromEnum Status
HardwareStackError = Int
714
fromEnum Status
IllegalInstruction = Int
715
fromEnum Status
MisalignedAddress = Int
716
fromEnum Status
InvalidAddressSpace = Int
717
fromEnum Status
InvalidPc = Int
718
fromEnum Status
LaunchFailure = Int
719
fromEnum Status
CooperativeLaunchTooLarge = Int
720
fromEnum Status
NotPermitted = Int
800
fromEnum Status
NotSupported = Int
801
fromEnum Status
SystemNotReady = Int
802
fromEnum Status
SystemDriverMismatch = Int
803
fromEnum Status
CompatNotSupportedOnDevice = Int
804
fromEnum Status
StreamCaptureUnsupported = Int
900
fromEnum Status
StreamCaptureInvalidated = Int
901
fromEnum Status
StreamCaptureMerge = Int
902
fromEnum Status
StreamCaptureUnmatched = Int
903
fromEnum Status
StreamCaptureUnjoined = Int
904
fromEnum Status
StreamCaptureIsolation = Int
905
fromEnum Status
StreamCaptureImplicit = Int
906
fromEnum Status
CapturedEvent = Int
907
fromEnum Status
StreamCaptureWrongThread = Int
908
fromEnum Status
Timeout = Int
909
fromEnum Status
GraphExecUpdateFailure = Int
910
fromEnum Status
Unknown = Int
999
fromEnum Status
ApiFailureBase = Int
10000
toEnum :: Int -> Status
toEnum Int
0 = Status
Success
toEnum Int
1 = Status
InvalidValue
toEnum Int
2 = Status
MemoryAllocation
toEnum Int
3 = Status
InitializationError
toEnum Int
4 = Status
CudartUnloading
toEnum Int
5 = Status
ProfilerDisabled
toEnum Int
6 = Status
ProfilerNotInitialized
toEnum Int
7 = Status
ProfilerAlreadyStarted
toEnum Int
8 = Status
ProfilerAlreadyStopped
toEnum Int
9 = Status
InvalidConfiguration
toEnum Int
12 = Status
InvalidPitchValue
toEnum Int
13 = Status
InvalidSymbol
toEnum Int
16 = Status
InvalidHostPointer
toEnum Int
17 = Status
InvalidDevicePointer
toEnum Int
18 = Status
InvalidTexture
toEnum Int
19 = Status
InvalidTextureBinding
toEnum Int
20 = Status
InvalidChannelDescriptor
toEnum Int
21 = Status
InvalidMemcpyDirection
toEnum Int
22 = Status
AddressOfConstant
toEnum Int
23 = Status
TextureFetchFailed
toEnum Int
24 = Status
TextureNotBound
toEnum Int
25 = Status
SynchronizationError
toEnum Int
26 = Status
InvalidFilterSetting
toEnum Int
27 = Status
InvalidNormSetting
toEnum Int
28 = Status
MixedDeviceExecution
toEnum Int
31 = Status
NotYetImplemented
toEnum Int
32 = Status
MemoryValueTooLarge
toEnum Int
35 = Status
InsufficientDriver
toEnum Int
37 = Status
InvalidSurface
toEnum Int
43 = Status
DuplicateVariableName
toEnum Int
44 = Status
DuplicateTextureName
toEnum Int
45 = Status
DuplicateSurfaceName
toEnum Int
46 = Status
DevicesUnavailable
toEnum Int
49 = Status
IncompatibleDriverContext
toEnum Int
52 = Status
MissingConfiguration
toEnum Int
53 = Status
PriorLaunchFailure
toEnum Int
65 = Status
LaunchMaxDepthExceeded
toEnum Int
66 = Status
LaunchFileScopedTex
toEnum Int
67 = Status
LaunchFileScopedSurf
toEnum Int
68 = Status
SyncDepthExceeded
toEnum Int
69 = Status
LaunchPendingCountExceeded
toEnum Int
98 = Status
InvalidDeviceFunction
toEnum Int
100 = Status
NoDevice
toEnum Int
101 = Status
InvalidDevice
toEnum Int
127 = Status
StartupFailure
toEnum Int
200 = Status
InvalidKernelImage
toEnum Int
201 = Status
DeviceUninitialized
toEnum Int
205 = Status
MapBufferObjectFailed
toEnum Int
206 = Status
UnmapBufferObjectFailed
toEnum Int
207 = Status
ArrayIsMapped
toEnum Int
208 = Status
AlreadyMapped
toEnum Int
209 = Status
NoKernelImageForDevice
toEnum Int
210 = Status
AlreadyAcquired
toEnum Int
211 = Status
NotMapped
toEnum Int
212 = Status
NotMappedAsArray
toEnum Int
213 = Status
NotMappedAsPointer
toEnum Int
214 = Status
ECCUncorrectable
toEnum Int
215 = Status
UnsupportedLimit
toEnum Int
216 = Status
DeviceAlreadyInUse
toEnum Int
217 = Status
PeerAccessUnsupported
toEnum Int
218 = Status
InvalidPtx
toEnum Int
219 = Status
InvalidGraphicsContext
toEnum Int
220 = Status
NvlinkUncorrectable
toEnum Int
221 = Status
JitCompilerNotFound
toEnum Int
300 = Status
InvalidSource
toEnum Int
301 = Status
FileNotFound
toEnum Int
302 = Status
SharedObjectSymbolNotFound
toEnum Int
303 = Status
SharedObjectInitFailed
toEnum Int
304 = Status
OperatingSystem
toEnum Int
400 = Status
InvalidResourceHandle
toEnum Int
401 = Status
IllegalState
toEnum Int
500 = Status
SymbolNotFound
toEnum Int
600 = Status
NotReady
toEnum Int
700 = Status
IllegalAddress
toEnum Int
701 = Status
LaunchOutOfResources
toEnum Int
702 = Status
LaunchTimeout
toEnum Int
703 = Status
LaunchIncompatibleTexturing
toEnum Int
704 = Status
PeerAccessAlreadyEnabled
toEnum Int
705 = Status
PeerAccessNotEnabled
toEnum Int
708 = Status
SetOnActiveProcess
toEnum Int
709 = Status
ContextIsDestroyed
toEnum Int
710 = Status
Assert
toEnum Int
711 = Status
TooManyPeers
toEnum Int
712 = Status
HostMemoryAlreadyRegistered
toEnum Int
713 = Status
HostMemoryNotRegistered
toEnum Int
714 = Status
HardwareStackError
toEnum Int
715 = Status
IllegalInstruction
toEnum Int
716 = Status
MisalignedAddress
toEnum Int
717 = Status
InvalidAddressSpace
toEnum Int
718 = Status
InvalidPc
toEnum Int
719 = Status
LaunchFailure
toEnum Int
720 = Status
CooperativeLaunchTooLarge
toEnum Int
800 = Status
NotPermitted
toEnum Int
801 = Status
NotSupported
toEnum Int
802 = Status
SystemNotReady
toEnum Int
803 = Status
SystemDriverMismatch
toEnum Int
804 = Status
CompatNotSupportedOnDevice
toEnum Int
900 = Status
StreamCaptureUnsupported
toEnum Int
901 = Status
StreamCaptureInvalidated
toEnum Int
902 = Status
StreamCaptureMerge
toEnum Int
903 = Status
StreamCaptureUnmatched
toEnum Int
904 = Status
StreamCaptureUnjoined
toEnum Int
905 = Status
StreamCaptureIsolation
toEnum Int
906 = Status
StreamCaptureImplicit
toEnum Int
907 = Status
CapturedEvent
toEnum Int
908 = Status
StreamCaptureWrongThread
toEnum Int
909 = Status
Timeout
toEnum Int
910 = Status
GraphExecUpdateFailure
toEnum Int
999 = Status
Unknown
toEnum Int
10000 = Status
ApiFailureBase
toEnum Int
unmatched = String -> Status
forall a. HasCallStack => String -> a
error (String
"Status.toEnum: Cannot match " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Int -> String
forall a. Show a => a -> String
show Int
unmatched)
{-# LINE 49 "src/Foreign/CUDA/Runtime/Error.chs" #-}
data CUDAException
= ExitCode Status
| UserError String
deriving Typeable
instance Exception CUDAException
instance Show CUDAException where
showsPrec _ (ExitCode s) = showString ("CUDA Exception: " ++ describe s)
showsPrec _ (UserError s) = showString ("CUDA Exception: " ++ s)
cudaError :: String -> IO a
cudaError s = throwIO (UserError s)
requireSDK :: Name -> Double -> IO a
requireSDK n v = cudaError $ printf "'%s' requires at least cuda-%3.1f\n" (show n) v
instance Describe Status where
describe = cudaGetErrorString
cudaGetErrorString :: (Status) -> (String)
cudaGetErrorString a1 =
C2HSImp.unsafePerformIO $
let {a1' = cFromEnum a1} in
cudaGetErrorString'_ a1' >>= \res ->
C2HSImp.peekCString res >>= \res' ->
return (res')
{-# LINE 94 "src/Foreign/CUDA/Runtime/Error.chs" #-}
{-# INLINE resultIfOk #-}
resultIfOk :: (Status, a) -> IO a
resultIfOk (status, !result) =
case status of
Success -> return result
_ -> throwIO (ExitCode status)
{-# INLINE nothingIfOk #-}
nothingIfOk :: Status -> IO ()
nothingIfOk status =
case status of
Success -> return ()
_ -> throwIO (ExitCode status)
{-# INLINE checkStatus #-}
checkStatus :: CInt -> IO ()
checkStatus = nothingIfOk . cToEnum
foreign import ccall unsafe "Foreign/CUDA/Runtime/Error.chs.h cudaGetErrorString"
cudaGetErrorString'_ :: (C2HSImp.CInt -> (IO (C2HSImp.Ptr C2HSImp.CChar)))