Giter Site home page Giter Site logo

Comments (9)

galkinvv avatar galkinvv commented on May 22, 2024 1

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:

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.

xczh avatar xczh commented on May 22, 2024

@galkinvv Thank you very much for your help 😄

from memtest_vulkan.

galkinvv avatar galkinvv commented on May 22, 2024

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.

xczh avatar xczh commented on May 22, 2024

I noticed 5G. But there is still 1G of heap size in the third line, what is that?

image

from memtest_vulkan.

xczh avatar xczh commented on May 22, 2024

Thank you for such a detailed explanation ~😄

I looked at the Vulkan information of gpu-z and it looks like this:

image

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.

galkinvv avatar galkinvv commented on May 22, 2024

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.

xczh avatar xczh commented on May 22, 2024

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.

galkinvv avatar galkinvv commented on May 22, 2024

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.

Th3Rom3 avatar Th3Rom3 commented on May 22, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.