CUDA REFERENCE
CUDA error codes, with the name and the string
Every cudaError code, enum name and message the CUDA 12.6 runtime printed on a Tesla T4 on 2026-09-01, including which ones poison the context.
Every value the CUDA runtime's error enum can return, with the name cudaGetErrorName gives back and the message cudaGetErrorString gives back, printed by a program on a real GPU rather than copied from a header.
| Captured on | Tesla T4 (sm_75), driver 595.84, CUDA 12.6 (V12.6.85) |
| Date | 2026-09-01 |
| Program | code/errors/_strings/dump_error_strings.cu |
| Transcript | code/errors/_strings/evidence/run-2026-09-01.txt |
These strings are version-specific, and that is the point of naming the toolkit. The table below is what CUDA 12.6 printed. The 13.3 documentation lists more enumerators than 12.6 defines, so a reader on 13.x will find codes here that their runtime does not have, and codes in their runtime that are not here. Read the header above before quoting a row.
The code and the string are two different things, and neither is the enum name. A program that prints only the number gives you nothing searchable; a program that prints only the string cannot be grepped for reliably, because the text changes between releases. Print all three.
Two quirks worth knowing
cudaGetErrorString(cudaSuccess) returns no error, not an empty string. A logger that prints the message unconditionally will print "no error" on every successful call, which is how a clean run comes to look like it is reporting failures.
Exactly one message in the whole table ends in a full stop: code 222, the provided PTX was compiled with an unsupported toolchain. Every other string has no terminating punctuation. If you are matching text, copy it exactly.
Which codes poison the context
The distinction that matters at three in the morning is not severity, it is whether the CUDA context survives. Some errors kill it, and every later call in that process fails until the process restarts, so the second, third and fourth messages you see are noise. Others leave the context healthy and are safe to handle and continue from.
Sticky, measured on this card. After an illegal memory access (700) the next call returns 700 as well: cudaFree after the failure -> 700 in code/errors/unspecified-launch-failure/evidence/run-2026-09-01.txt. Same shape for a device-side assert (710), where next call (cudaFree) -> 710 in code/errors/device-side-assert-triggered/evidence/run-2026-09-01.txt. An unspecified launch failure (719) behaves the same way. Restart the process; there is nothing to recover.
Not sticky, also measured. An invalid device ordinal (101) leaves everything working, and cudaSetDevice(0) succeeds immediately after cudaSetDevice(1) fails. A failed allocation (2) takes nothing and leaks nothing, with the free-memory figure byte-identical either side of it. A rejected launch configuration (1) is refused before anything runs, and the following synchronize returns success. A missing kernel image (209) reports at the launch and leaves the context usable. And an initialization error (3) in a forked child does not harm the parent. Each of those is a transcript under code/errors/, named on the matching error page.
The rule to carry: a code raised at the launch, before any device work happened, is recoverable. A code raised by device work that already went wrong is not.
The table
All 131 rows exactly as the program printed them, cudaSuccess included. Rows with a page link to it; rows without do not pretend to have one.
| Code | cudaGetErrorName |
cudaGetErrorString |
Page |
|---|---|---|---|
| 0 | cudaSuccess |
no error | |
| 1 | cudaErrorInvalidValue |
invalid argument | /errors/invalid-argument |
| 2 | cudaErrorMemoryAllocation |
out of memory | /errors/out-of-memory |
| 3 | cudaErrorInitializationError |
initialization error | /errors/initialization-error |
| 4 | cudaErrorCudartUnloading |
driver shutting down | |
| 5 | cudaErrorProfilerDisabled |
profiler disabled while using external profiling tool | |
| 6 | cudaErrorProfilerNotInitialized |
profiler not initialized: call cudaProfilerInitialize() | |
| 7 | cudaErrorProfilerAlreadyStarted |
profiler already started | |
| 8 | cudaErrorProfilerAlreadyStopped |
profiler already stopped | |
| 9 | cudaErrorInvalidConfiguration |
invalid configuration argument | /errors/invalid-configuration-argument |
| 12 | cudaErrorInvalidPitchValue |
invalid pitch argument | |
| 13 | cudaErrorInvalidSymbol |
invalid device symbol | /errors/invalid-device-symbol |
| 16 | cudaErrorInvalidHostPointer |
invalid host pointer | |
| 17 | cudaErrorInvalidDevicePointer |
invalid device pointer | |
| 18 | cudaErrorInvalidTexture |
invalid texture reference | |
| 19 | cudaErrorInvalidTextureBinding |
texture is not bound to a pointer | |
| 20 | cudaErrorInvalidChannelDescriptor |
invalid channel descriptor | |
| 21 | cudaErrorInvalidMemcpyDirection |
invalid copy direction for memcpy | |
| 22 | cudaErrorAddressOfConstant |
invalid address of constant | |
| 23 | cudaErrorTextureFetchFailed |
fetch from texture failed | |
| 24 | cudaErrorTextureNotBound |
cannot fetch from a texture that is not bound | |
| 25 | cudaErrorSynchronizationError |
incorrect use of __syncthreads() | |
| 26 | cudaErrorInvalidFilterSetting |
linear filtering not supported for non-float type | |
| 27 | cudaErrorInvalidNormSetting |
read as normalized float not supported for 32-bit non float type | |
| 28 | cudaErrorMixedDeviceExecution |
device emulation mode and device execution mode cannot be mixed | |
| 31 | cudaErrorNotYetImplemented |
feature not yet implemented | |
| 32 | cudaErrorMemoryValueTooLarge |
memory size or pointer value too large to fit in 32 bit | |
| 34 | cudaErrorStubLibrary |
CUDA driver is a stub library | |
| 35 | cudaErrorInsufficientDriver |
CUDA driver version is insufficient for CUDA runtime version | |
| 36 | cudaErrorCallRequiresNewerDriver |
API call is not supported in the installed CUDA driver | |
| 37 | cudaErrorInvalidSurface |
invalid surface reference | |
| 43 | cudaErrorDuplicateVariableName |
duplicate global variable looked up by string name | |
| 44 | cudaErrorDuplicateTextureName |
duplicate texture looked up by string name | |
| 45 | cudaErrorDuplicateSurfaceName |
duplicate surface looked up by string name | |
| 46 | cudaErrorDevicesUnavailable |
CUDA-capable device(s) is/are busy or unavailable | |
| 49 | cudaErrorIncompatibleDriverContext |
incompatible driver context | |
| 52 | cudaErrorMissingConfiguration |
global function call is not configured | |
| 53 | cudaErrorPriorLaunchFailure |
unspecified launch failure in prior launch | |
| 65 | cudaErrorLaunchMaxDepthExceeded |
launch would exceed maximum depth of nested launches | |
| 66 | cudaErrorLaunchFileScopedTex |
launch failed because kernel uses unsupported, file-scoped textures (texture objects are supported) | |
| 67 | cudaErrorLaunchFileScopedSurf |
launch failed because kernel uses unsupported, file-scoped surfaces (surface objects are supported) | |
| 68 | cudaErrorSyncDepthExceeded |
cudaDeviceSynchronize failed because caller's grid depth exceeds cudaLimitDevRuntimeSyncDepth | |
| 69 | cudaErrorLaunchPendingCountExceeded |
launch failed because launch would exceed cudaLimitDevRuntimePendingLaunchCount | |
| 98 | cudaErrorInvalidDeviceFunction |
invalid device function | /errors/invalid-device-function |
| 100 | cudaErrorNoDevice |
no CUDA-capable device is detected | /errors/no-cuda-capable-device |
| 101 | cudaErrorInvalidDevice |
invalid device ordinal | /errors/invalid-device-ordinal |
| 102 | cudaErrorDeviceNotLicensed |
device doesn't have valid Grid license | |
| 103 | cudaErrorSoftwareValidityNotEstablished |
integrity checks failed | |
| 127 | cudaErrorStartupFailure |
startup failure in cuda runtime | |
| 200 | cudaErrorInvalidKernelImage |
device kernel image is invalid | |
| 201 | cudaErrorDeviceUninitialized |
invalid device context | |
| 205 | cudaErrorMapBufferObjectFailed |
mapping of buffer object failed | |
| 206 | cudaErrorUnmapBufferObjectFailed |
unmapping of buffer object failed | |
| 207 | cudaErrorArrayIsMapped |
array is mapped | |
| 208 | cudaErrorAlreadyMapped |
resource already mapped | |
| 209 | cudaErrorNoKernelImageForDevice |
no kernel image is available for execution on the device | /errors/no-kernel-image-is-available |
| 210 | cudaErrorAlreadyAcquired |
resource already acquired | |
| 211 | cudaErrorNotMapped |
resource not mapped | |
| 212 | cudaErrorNotMappedAsArray |
resource not mapped as array | |
| 213 | cudaErrorNotMappedAsPointer |
resource not mapped as pointer | |
| 214 | cudaErrorECCUncorrectable |
uncorrectable ECC error encountered | |
| 215 | cudaErrorUnsupportedLimit |
limit is not supported on this architecture | |
| 216 | cudaErrorDeviceAlreadyInUse |
exclusive-thread device already in use by a different thread | |
| 217 | cudaErrorPeerAccessUnsupported |
peer access is not supported between these two devices | |
| 218 | cudaErrorInvalidPtx |
a PTX JIT compilation failed | |
| 219 | cudaErrorInvalidGraphicsContext |
invalid OpenGL or DirectX context | |
| 220 | cudaErrorNvlinkUncorrectable |
uncorrectable NVLink error detected during the execution | |
| 221 | cudaErrorJitCompilerNotFound |
PTX JIT compiler library not found | |
| 222 | cudaErrorUnsupportedPtxVersion |
the provided PTX was compiled with an unsupported toolchain. | |
| 223 | cudaErrorJitCompilationDisabled |
PTX JIT compilation was disabled | |
| 224 | cudaErrorUnsupportedExecAffinity |
the provided execution affinity is not supported | |
| 225 | cudaErrorUnsupportedDevSideSync |
the provided PTX contains unsupported call to cudaDeviceSynchronize | |
| 300 | cudaErrorInvalidSource |
device kernel image is invalid | |
| 301 | cudaErrorFileNotFound |
file not found | |
| 302 | cudaErrorSharedObjectSymbolNotFound |
shared object symbol not found | |
| 303 | cudaErrorSharedObjectInitFailed |
shared object initialization failed | |
| 304 | cudaErrorOperatingSystem |
OS call failed or operation not supported on this OS | |
| 400 | cudaErrorInvalidResourceHandle |
invalid resource handle | |
| 401 | cudaErrorIllegalState |
the operation cannot be performed in the present state | |
| 402 | cudaErrorLossyQuery |
attempted introspection would be semantically lossy | |
| 500 | cudaErrorSymbolNotFound |
named symbol not found | |
| 600 | cudaErrorNotReady |
device not ready | |
| 700 | cudaErrorIllegalAddress |
an illegal memory access was encountered | /errors/illegal-memory-access |
| 701 | cudaErrorLaunchOutOfResources |
too many resources requested for launch | /errors/too-many-resources-requested |
| 702 | cudaErrorLaunchTimeout |
the launch timed out and was terminated | |
| 703 | cudaErrorLaunchIncompatibleTexturing |
launch uses incompatible texturing mode | |
| 704 | cudaErrorPeerAccessAlreadyEnabled |
peer access is already enabled | |
| 705 | cudaErrorPeerAccessNotEnabled |
peer access has not been enabled | |
| 708 | cudaErrorSetOnActiveProcess |
cannot set while device is active in this process | |
| 709 | cudaErrorContextIsDestroyed |
context is destroyed | |
| 710 | cudaErrorAssert |
device-side assert triggered | /errors/device-side-assert-triggered |
| 711 | cudaErrorTooManyPeers |
peer mapping resources exhausted | |
| 712 | cudaErrorHostMemoryAlreadyRegistered |
part or all of the requested memory range is already mapped | |
| 713 | cudaErrorHostMemoryNotRegistered |
pointer does not correspond to a registered memory region | |
| 714 | cudaErrorHardwareStackError |
hardware stack error | |
| 715 | cudaErrorIllegalInstruction |
an illegal instruction was encountered | |
| 716 | cudaErrorMisalignedAddress |
misaligned address | /errors/misaligned-address |
| 717 | cudaErrorInvalidAddressSpace |
operation not supported on global/shared address space | |
| 718 | cudaErrorInvalidPc |
invalid program counter | |
| 719 | cudaErrorLaunchFailure |
unspecified launch failure | /errors/unspecified-launch-failure |
| 720 | cudaErrorCooperativeLaunchTooLarge |
too many blocks in cooperative launch | |
| 800 | cudaErrorNotPermitted |
operation not permitted | |
| 801 | cudaErrorNotSupported |
operation not supported | |
| 802 | cudaErrorSystemNotReady |
system not yet initialized | |
| 803 | cudaErrorSystemDriverMismatch |
system has unsupported display driver / cuda driver combination | |
| 804 | cudaErrorCompatNotSupportedOnDevice |
forward compatibility was attempted on non supported HW | |
| 805 | cudaErrorMpsConnectionFailed |
MPS client failed to connect to the MPS control daemon or the MPS server | |
| 806 | cudaErrorMpsRpcFailure |
the remote procedural call between the MPS server and the MPS client failed | |
| 807 | cudaErrorMpsServerNotReady |
MPS server is not ready to accept new MPS client requests | |
| 808 | cudaErrorMpsMaxClientsReached |
the hardware resources required to create MPS client have been exhausted | |
| 809 | cudaErrorMpsMaxConnectionsReached |
the hardware resources required to support device connections have been exhausted | |
| 810 | cudaErrorMpsClientTerminated |
the MPS client has been terminated by the server | |
| 811 | cudaErrorCdpNotSupported |
is using CUDA Dynamic Parallelism, but the current configuration, like MPS, does not support it | |
| 812 | cudaErrorCdpVersionMismatch |
unsupported interaction between different versions of CUDA Dynamic Parallelism | |
| 900 | cudaErrorStreamCaptureUnsupported |
operation not permitted when stream is capturing | |
| 901 | cudaErrorStreamCaptureInvalidated |
operation failed due to a previous error during capture | |
| 902 | cudaErrorStreamCaptureMerge |
operation would result in a merge of separate capture sequences | |
| 903 | cudaErrorStreamCaptureUnmatched |
capture was not ended in the same stream as it began | |
| 904 | cudaErrorStreamCaptureUnjoined |
capturing stream has unjoined work | |
| 905 | cudaErrorStreamCaptureIsolation |
dependency created on uncaptured work in another stream | |
| 906 | cudaErrorStreamCaptureImplicit |
operation would make the legacy stream depend on a capturing blocking stream | |
| 907 | cudaErrorCapturedEvent |
operation not permitted on an event last recorded in a capturing stream | |
| 908 | cudaErrorStreamCaptureWrongThread |
attempt to terminate a thread-local capture sequence from another thread | |
| 909 | cudaErrorTimeout |
wait operation timed out | |
| 910 | cudaErrorGraphExecUpdateFailure |
the graph update was not performed because it included changes which violated constraints specific to instantiated graph update | |
| 911 | cudaErrorExternalDevice |
an async error has occured in external entity outside of CUDA | |
| 912 | cudaErrorInvalidClusterSize |
a kernel launch error has occurred due to cluster misconfiguration | |
| 913 | cudaErrorFunctionNotLoaded |
the function handle is not loaded when calling an API that requires a loaded function | |
| 914 | cudaErrorInvalidResourceType |
one or more resources passed in are not valid resource types for the operation | |
| 915 | cudaErrorInvalidResourceConfiguration |
one or more resources are insufficient or non-applicable for the operation | |
| 999 | cudaErrorUnknown |
unknown error |
Written 2026-09-01. Every row above is the output of code/errors/_strings/dump_error_strings.cu, captured to code/errors/_strings/evidence/run-2026-09-01.txt on 2026-09-01 on ornn-internal-t4-spot-5v08: Tesla T4 (sm_75), driver 595.84, CUDA 12.6 (V12.6.85). No value in this table was typed by hand or taken from documentation. Author and reviewer: not yet assigned; this page does not publish until both are named.