GPU Memory Plugin#
The GPU Memory plugin detects data-integrity faults in framebuffer memory and, when enabled, L1 cache. It writes known values and verifies their readback, and it reports uncorrectable error-correcting code (ECC) conditions that prevent memory operations; it is not a memory-bandwidth test.
Availability and prerequisites#
The canonical test name is memory. The framebuffer test requires the
expected ECC capability and state and enough free GPU memory for the requested
allocation. The optional L1 cache test requires compute capability 7.0 or later
and no more than 256 KB of L1 cache per streaming multiprocessor.
Behavior#
Framebuffer memory test#
The main memory test:
Allocates a significant portion of GPU memory, 75% by default.
Writes test patterns to memory using CUDA kernels.
Reads the data back and verifies its integrity.
Uses the patterns
0x00,0xAA,0x55,0xFF, and0x00.Detects memory mismatches and ECC errors.
L1 cache test#
When l1_is_allowed is enabled, the plugin performs cache operations and
validates L1 cache data integrity on supported GPUs.
Parameters#
Plugin control#
The following table lists the global parameter for the memory plugin.
Parameter |
Type |
Default |
Description |
|---|---|---|---|
is_allowed |
Bool |
When unspecified, DCGM will search configuration files for an appropriate default for the specified GPU; if no entry is found, the parameter defaults to false. |
Specifies whether or not this test is allowed to run. |
Framebuffer memory parameters#
The following table lists the parameters for the framebuffer memory test.
Parameter |
Type |
Default |
Description |
|---|---|---|---|
minimum_allocation_percentage |
Double |
75.0 |
Minimum percentage of GPU memory to allocate (0.0-100.0). |
max_free_memory_mb |
Double |
0.0 |
Maximum amount of GPU memory which will be allocated for memory testing, specified in megabytes (MB). Supersedes minimum_allocation_percentage. If not specified, the test will allocate value of minimum_allocation_percentage for the GPU memory. |
L1 cache parameters#
The following table lists the parameters for the L1 cache test.
Parameter |
Type |
Default |
Description |
|---|---|---|---|
l1_is_allowed |
Bool |
When unspecified, DCGM will search configuration files for an appropriate default for the specified GPU; if no entry is found, the parameter defaults to false. |
Enables/disables the L1 cache subtest. |
test_loops |
Double |
0 |
Number of test loops. |
test_duration |
Double |
1.0 |
Duration of L1 cache test in seconds (0 = run for test_loops). |
inner_iterations |
Double |
1024 |
Number of inner iterations per test. |
log_len |
Double |
8192 |
Length of error log for L1 cache test. |
dump_miscompares |
Bool |
True |
Whether to dump miscompare details. |
l1cache_size_kb_per_sm |
Double |
0 |
L1 cache size per SM in KB. |
Examples#
Run the basic framebuffer memory test:
$ dcgmi diag -r memory -p "memory.is_allowed=True"
Enable the L1 cache test:
$ dcgmi diag -r memory -p "memory.is_allowed=True;memory.l1_is_allowed=True"
Set max_free_memory_mb to 0.1:
$ dcgmi diag -r memory -p "memory.is_allowed=True;memory.max_free_memory_mb=0.1"
Set max_free_memory_mb to 512:
$ dcgmi diag -r memory -p "memory.is_allowed=True;memory.max_free_memory_mb=512"
Set max_free_memory_mb to 100:
$ dcgmi diag -r memory -p "memory.is_allowed=True;memory.max_free_memory_mb=100"
Results and failure conditions#
Condition |
Result or code |
Interpretation |
|---|---|---|
Repeated allocation attempts cannot satisfy
|
|
The requested amount was available initially but the plugin could not allocate enough memory to execute the test. |
Data read from framebuffer memory differs from the value written. |
|
The main memory test detected data corruption. |
CUDA reports an uncorrectable double-bit ECC error. |
|
CUDA could not complete the memory operation because of an uncorrectable ECC condition. |
The enabled L1 cache subtest reads an unexpected value. |
|
The L1 cache subtest detected a data miscompare. |
DCGM cannot query ECC state, CUDA cannot initialize or resolve the GPU, or the plugin encounters an unexpected execution error. |
|
The test could not complete. These codes do not by themselves identify faulty memory. |
Less memory is free than |
Skip |
Stop workloads using the GPU or lower the requirement if that is appropriate. No memory-integrity result was produced. |
ECC is unsupported or disabled on the selected GPU. |
|
The plugin does not run its main memory check without the expected ECC capability and state. |
The enabled L1 subtest is unsupported by the GPU. |
|
The main framebuffer-memory result remains independently meaningful. |
The plugin is disabled or the run is interrupted. |
|
The test did not complete and did not establish memory health. |