Comments (9)
GPU-Z screenshow looks fine. (BTW vulkan heap sizes are visible in the GPU-Z too on the Advanced->Vulkan page).
Typically the third heap is related to PCIe Bar/resizable bar. It is part of video memory accessible not only from GPU but additonally directly accessible from the CPU via the PCIe memory space.
Your situation seems to be not unique: there are 2 reports of 5600XT on Windows on the GPU database which are neary identical buthave different memory sizes:
- https://vulkan.gpuinfo.org/displayreport.php?id=18825#memory heap0 size 6,157,238,272 bytes
- https://vulkan.gpuinfo.org/displayreport.php?id=16729#memory heap0 size 5,351,931,904 bytes (size like yours)
And the second report has a heap 3 greater than in first report.
So, it maybe really a bug in memtest_vulkan: it seems that those DEVICE_LOCAL heap sizes must be summed during total memory size calculaion in memtest_vulkan logic, I'll investigate it. Thanks for reporting!
from memtest_vulkan.
@galkinvv Thank you very much for your help 😄
from memtest_vulkan.
This doesn't look like a problem with VRAM. It more looks like special driver reservation.
The heap size output below the red rect shows that the vulkan driver reports only 5.0GB heap on your GPU - this is the number used to calculate GPU memory size.
Could you run the TechPowerup GPU-Z and attach its screenshot here?
from memtest_vulkan.
I noticed 5G. But there is still 1G of heap size in the third line, what is that?
from memtest_vulkan.
Thank you for such a detailed explanation ~😄
I looked at the Vulkan information of gpu-z and it looks like this:
This seems even more weirder: memory 5-8 seems to repeat memory 1-4, while the actual shared memory of the gpu is only 16GB. How should I understand the meaning of memory 1-8?
from memtest_vulkan.
Vulkan API can have several memory types for each memory heap. It seems that GPU-Z lists memory types, not memory heaps
If you rename memtest-vulkan.exe
by adding verbose
to the exe file name (like memtest-vulkan-verbose.exe
, if not already, I see part of verbose output in your screenshot) it would list memory heaps and types separately, noting the memory heap index for each memory type.
Here is example output from my RX5700:
1: Bus=0x03:00 DevId=0x731F API 1.3.237 0x8000FA 8GB AMD Radeon RX 5700 2: Bus=0x00:00 DevId=0x5902 API 1.3.215 v101(0x194843) 4GB Intel(R) HD Graphics 610 (first device will be autoselected in 7 seconds) Override index to test: ...testing default device confirmed Loading memory info for selected device index 0... heap size 7.7GB budget 7.0GB usage 0.0GB flags=DEVICE_LOCAL | MULTI_INSTANCE | MULTI_INSTANCE_KHR heap size 3.7GB budget 3.5GB usage 0.0GB flags=(empty) heap size 0.2GB budget 0.2GB usage 0.0GB flags=DEVICE_LOCAL | MULTI_INSTANCE | MULTI_INSTANCE_KHR Spawned child Child { stdin: None, stdout: None, stderr: None, .. } with PID 3156 Verbose feature enabled (or 'verbose' found in name). Vulkan instance 1.3.241 WARNING: vkEnumerateInstanceLayerProperties: Unable to resolve symbol "" in implicit layer library "C:\windows\System32\DriverStore\FileRepository\u0391195.inf_amd64_09ef84849323988b\B391209\.\amdvlk64.dll" WARNING: windows_read_data_files_in_registry: Registry lookup failed to get layer manifest files. WARNING: vkEnumerateInstanceLayerProperties: Unable to resolve symbol "" in implicit layer library "C:\windows\System32\DriverStore\FileRepository\u0391195.inf_amd64_09ef84849323988b\B391209\.\amdvlk64.dll" WARNING: windows_read_data_files_in_registry: Registry lookup failed to get layer manifest files. Available: VK_LAYER_AMD_switchable_graphics Extensions: VK_KHR_device_group_creation, VK_KHR_external_fence_capabilities, VK_KHR_external_memory_capabilities, VK_KHR_external_semaphore_capabilities, VK_KHR_get_physical_device_properties2, VK_KHR_get_surface_capabilities2, VK_KHR_surface, VK_KHR_win32_surface, VK_EXT_debug_report, VK_EXT_debug_utils, VK_EXT_swapchain_colorspace, VK_KHR_portability_enumeration, VK_LUNARG_direct_driver_loading WARNING: windows_read_data_files_in_registry: Registry lookup failed to get layer manifest files. ERROR: loader_validate_layers: Layer 0 does not exist in the list of available layers Not using validation layers due to ERROR_LAYER_NOT_PRESENT while getting erupt::generated::InstanceLoader in context instance with validation WARNING: windows_read_data_files_in_registry: Registry lookup failed to get layer manifest files. Loading memory info for selected device index 0... 0 MemoryType { property_flags: DEVICE_LOCAL, heap_index: 0 } 1 MemoryType { property_flags: HOST_VISIBLE | HOST_COHERENT, heap_index: 1 } 2 MemoryType { property_flags: DEVICE_LOCAL | HOST_VISIBLE | HOST_COHERENT, heap_index: 2 } 3 MemoryType { property_flags: HOST_VISIBLE | HOST_COHERENT | HOST_CACHED, heap_index: 1 } 4 MemoryType { property_flags: DEVICE_LOCAL | DEVICE_COHERENT_AMD | DEVICE_UNCACHED_AMD, heap_index: 0 } 5 MemoryType { property_flags: HOST_VISIBLE | HOST_COHERENT | DEVICE_COHERENT_AMD | DEVICE_UNCACHED_AMD, heap_index: 1 } 6 MemoryType { property_flags: DEVICE_LOCAL | HOST_VISIBLE | HOST_COHERENT | DEVICE_COHERENT_AMD | DEVICE_UNCACHED_AMD, heap_index: 2 } 7 MemoryType { property_flags: HOST_VISIBLE | HOST_COHERENT | HOST_CACHED | DEVICE_COHERENT_AMD | DEVICE_UNCACHED_AMD, heap_index: 1 } CoherentIO memory type 2 inside heap MemoryHeap { size: 268435456, flags: DEVICE_LOCAL | MULTI_INSTANCE | MULTI_INSTANCE_KHR } Trying 6.594GB buffer... Test memory size 6.6GB type 0: MemoryType { property_flags: DEVICE_LOCAL, heap_index: 0 } MemoryHeap { size: 8304721920, flags: DEVICE_LOCAL | MULTI_INSTANCE | MULTI_INSTANCE_KHR } Standard 5-minute test of 1: Bus=0x03:00 DevId=0x731F API 1.3.237 0x8000FA 8GB AMD Radeon RX 5700 1 iteration. Passed 0.0363 seconds written: 3.2GB 396.0GB/sec checked: 6.5GB 231.2GB/sec
from memtest_vulkan.
I understand, I have indeed turned on verbose mode. Here are some of my outputs:
Verbose feature enabled (or 'verbose' found in name). Vulkan instance 1.3.204
WARNING | DRIVER: windows_read_data_files_in_registry: Registry lookup failed to get layer manifest files.
WARNING | DRIVER: windows_read_data_files_in_registry: Registry lookup failed to get layer manifest files.
Available:
VK_LAYER_AMD_switchable_graphics
Extensions: VK_KHR_device_group_creation, VK_KHR_external_fence_capabilities, VK_KHR_external_memory_capabilities, VK_KHR_external_semaphore_capabilities, VK_KHR_get_physical_device_properties2, VK_KHR_get_surface_capabilities2, VK_KHR_surface, VK_KHR_win32_surface, VK_EXT_debug_report, VK_EXT_debug_utils, VK_EXT_swapchain_colorspace
WARNING | DRIVER: windows_read_data_files_in_registry: Registry lookup failed to get layer manifest files.
ERROR: loader_validate_layers: Layer 0 does not exist in the list of available layers
Not using validation layers due to ERROR_LAYER_NOT_PRESENT while getting erupt::generated::InstanceLoader in context instance with validation
WARNING | DRIVER: windows_read_data_files_in_registry: Registry lookup failed to get layer manifest files.
1: Bus=0x03:00 DevId=0x731F API 1.3.217 0x8000E9 5GB AMD Radeon RX 5600 XT
Loading memory info for selected device index 0...
heap size 5.0GB budget 4.3GB usage 0.0GB flags=DEVICE_LOCAL | MULTI_INSTANCE | MULTI_INSTANCE_KHR
heap size 15.6GB budget 15.1GB usage 0.0GB flags=(empty)
heap size 1.0GB budget 0.9GB usage 0.0GB flags=DEVICE_LOCAL | MULTI_INSTANCE | MULTI_INSTANCE_KHR
Spawned child Child { stdin: None, stdout: None, stderr: None, .. } with PID 12920
Verbose feature enabled (or 'verbose' found in name). Vulkan instance 1.3.204
WARNING | DRIVER: windows_read_data_files_in_registry: Registry lookup failed to get layer manifest files.
WARNING | DRIVER: windows_read_data_files_in_registry: Registry lookup failed to get layer manifest files.
Available:
VK_LAYER_AMD_switchable_graphics
Extensions: VK_KHR_device_group_creation, VK_KHR_external_fence_capabilities, VK_KHR_external_memory_capabilities, VK_KHR_external_semaphore_capabilities, VK_KHR_get_physical_device_properties2, VK_KHR_get_surface_capabilities2, VK_KHR_surface, VK_KHR_win32_surface, VK_EXT_debug_report, VK_EXT_debug_utils, VK_EXT_swapchain_colorspace
WARNING | DRIVER: windows_read_data_files_in_registry: Registry lookup failed to get layer manifest files.
ERROR: loader_validate_layers: Layer 0 does not exist in the list of available layers
Not using validation layers due to ERROR_LAYER_NOT_PRESENT while getting erupt::generated::InstanceLoader in context instance with validation
WARNING | DRIVER: windows_read_data_files_in_registry: Registry lookup failed to get layer manifest files.
Loading memory info for selected device index 0...
0 MemoryType { property_flags: DEVICE_LOCAL, heap_index: 0 }
1 MemoryType { property_flags: HOST_VISIBLE | HOST_COHERENT, heap_index: 1 }
2 MemoryType { property_flags: DEVICE_LOCAL | HOST_VISIBLE | HOST_COHERENT, heap_index: 2 }
3 MemoryType { property_flags: HOST_VISIBLE | HOST_COHERENT | HOST_CACHED, heap_index: 1 }
4 MemoryType { property_flags: DEVICE_LOCAL | DEVICE_COHERENT_AMD | DEVICE_UNCACHED_AMD, heap_index: 0 }
5 MemoryType { property_flags: HOST_VISIBLE | HOST_COHERENT | DEVICE_COHERENT_AMD | DEVICE_UNCACHED_AMD, heap_index: 1 }
6 MemoryType { property_flags: DEVICE_LOCAL | HOST_VISIBLE | HOST_COHERENT | DEVICE_COHERENT_AMD | DEVICE_UNCACHED_AMD, heap_index: 2 }
7 MemoryType { property_flags: HOST_VISIBLE | HOST_COHERENT | HOST_CACHED | DEVICE_COHERENT_AMD | DEVICE_UNCACHED_AMD, heap_index: 1 }
CoherentIO memory type 2 inside heap MemoryHeap { size: 1073741824, flags: DEVICE_LOCAL | MULTI_INSTANCE | MULTI_INSTANCE_KHR }
Trying 3.949GB buffer...
Test memory size 3.9GB type 0: MemoryType { property_flags: DEVICE_LOCAL, heap_index: 0 } MemoryHeap { size: 5351931904, flags: DEVICE_LOCAL | MULTI_INSTANCE | MULTI_INSTANCE_KHR }
Standard 5-minute test of 1: Bus=0x03:00 DevId=0x731F API 1.3.217 0x8000E9 5GB AMD Radeon RX 5600 XT
1 iteration. Passed 0.0291 seconds written: 1.9GB 296.2GB/sec checked: 3.8GB 164.7GB/sec
36 iteration. Passed 1.0255 seconds written: 65.6GB 288.0GB/sec checked: 131.2GB 164.5GB/sec
207 iteration. Passed 5.0166 seconds written: 320.6GB 287.4GB/sec checked: 641.2GB 164.4GB/sec
1232 iteration. Passed 30.0137 seconds written: 1921.9GB 288.8GB/sec checked: 3843.8GB 164.5GB/sec
2255 iteration. Passed 30.0003 seconds written: 1918.1GB 288.1GB/sec checked: 3836.2GB 164.3GB/sec
Subprocess status exit code: 65 parent_close_requested true
memtest_vulkan: no any errors, testing PASSed.
press any key to continue...
The above output indicates that only 3.9GB of 6GB of VMem has been applied for testing. This may be related to video memory detection issue mentioned above. If you fix this issue, I would be happy to retest it. Thank you again!
from memtest_vulkan.
Unfortunately, memory reserved/placed in another heap by the driver can't be tested in current memtest_vulkan paradigm. From my practice in VRAM testing - for stability testing 70% of memory is enough. The stability test result does not depend on "70% of memory is tested" VS "95% of memory is tested", because most of the problems are not in "memory storage phase" but in "memory data send/receive phase".
So memtest_vulkan tries to allocate "simply huge enough memory area", not "try hard to allocate as huge as possible", and in this paradigm the bug is only with total device memory size display, NOT with selection of memory size for test.
The testing part of memtest_vulkan behaves according to the heap0 memory budget returned by the driver - it allocates reported memory budget minus several hundreds MB. From my earlier experience during development - trying to allocate memory size equal-or-greater to the reported heap0 budget often lead to system extreme slowdown or lockups since the Windows UI rendering requires some video memory.
So trying to test more memory is risky and can lead to system lockup. You can probe it manually if you really want by creating test.cmd
file with following content:
memtest-vulkan.exe 1 4500000000
The last argument is memory size in bytes for testing, it overrides the auto-detected memory size for testing
from memtest_vulkan.
A quick note on this issue coming from my system with the following main hardware config:
Gigabyte B550 Aorus Pro V1
Ryzen 7 5800X3D
32GB DDR4 3200
XFX RX 6800 with 16GB of VRAM
With resize bar enabled my video memory heap would be detected as only 0.5GB whereas it works well with resizeBAR disabled in UEFI.
Just wanted to note this for posterity.
from memtest_vulkan.
Related Issues (20)
- No GTT->VRAM unswapping with amdgpu + memtest_vulkan HOT 2
- Runtime error: Failed determining memory budget HOT 8
- Better design for multiple parallel runs
- Starting header updates
- radv/amdgpu: Failed to allocate a buffer HOT 2
- Crash on pipe error after Ctrl+C on linux while piped to `tee`
- Question about results HOT 2
- AMD Vega Frontier Edition 16GB HBM is reported as 24 GB HOT 12
- Low-memory iGPU reports "Failed determining memory budget" HOT 9
- amdgpu: GPU reset begin! HOT 3
- rtx 3060 gets checkered screen freeze after short time HOT 1
- Correctly exit while running over ssh session
- Add switch to stop memtest when error was detected. HOT 1
- Issue with vulkan drivers: loader_icd_scan fails HOT 2
- Tool uses only up to 90% of vram when more is available HOT 2
- Nvidia 1GB Quadro K600 (Video-Card) - INIT OR FIRST testing failed due to runtime error HOT 3
- Build does not discover and link libvulkan.so.1 HOT 2
- fails to initialise on MoltenVK: `VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR` HOT 2
- Drastically different bandwidth to the expected with default memory usage (pair of 4k HDR displays) HOT 8
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from memtest_vulkan.