-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Low-memory iGPU reports "Failed determining memory budget" #22
Comments
The memory size displayed in the GPU list id rounded up to 1GB. But according to logs and vulkaninfo the vulkan rumtime reports only 256MB usable GPU-DeviceLocal memory total. memtest_vulkan requires at least 512MB of GPU-DeviceLocal memory to operate. Try incresing UMA to 1GB, it shold run fine then. |
Increased UMA to 1GB and it still errors out, though it does give different memory limit value bagusnl_reg ~ memtest_vulkan_verbose.exe in cmd at 16:24:38 https://github.com/GpuZelenograd/memtest_vulkan v0.5.0 by GpuZelenograd To finish testing use Ctrl+C WARNING: Didn't find required layer object disable_environment in manifest JSON file, skipping this layer Verbose feature enabled (or 'verbose' found in name). Vulkan instance 1.3.261 WARNING: Didn't find required layer object disable_environment in manifest JSON file, skipping this layer WARNING: Didn't find required layer object disable_environment in manifest JSON file, skipping this layer WARNING | LAYER: windows_read_data_files_in_registry: Registry lookup failed to get layer manifest files. WARNING: Didn't find required layer object disable_environment in manifest JSON file, skipping this layer WARNING: Didn't find required layer object disable_environment in manifest JSON file, skipping this layer WARNING | LAYER: windows_read_data_files_in_registry: Registry lookup failed to get layer manifest files. Available: VK_LAYER_AMD_switchable_graphics, VK_LAYER_VALVE_steam_overlay, VK_LAYER_VALVE_steam_fossilize, VK_LAYER_RTSS WARNING: Didn't find required layer object disable_environment in manifest JSON file, skipping this layer WARNING: Didn't find required layer object disable_environment in manifest JSON file, skipping this layer WARNING: Didn't find required layer object disable_environment in manifest JSON file, skipping this layer WARNING: Didn't find required layer object disable_environment in manifest JSON file, skipping this layer 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 vulkaninfo output: bagusnl_reg vulkaninfo WARNING: [Loader Message] Code 0 : Didn't find required layer object disable_environment in manifest JSON file, skipping this layer WARNING: [Loader Message] Code 0 : windows_read_data_files_in_registry: Registry lookup failed to get layer manifest files. ========== VULKANINFO ========== |
Increased the UMA to 2GB and seems to work bagusnl_reg memtest_vulkan_verbose.exe https://github.com/GpuZelenograd/memtest_vulkan v0.5.0 by GpuZelenograd To finish testing use Ctrl+C WARNING: Didn't find required layer object disable_environment in manifest JSON file, skipping this layer Verbose feature enabled (or 'verbose' found in name). Vulkan instance 1.3.261 WARNING: Didn't find required layer object disable_environment in manifest JSON file, skipping this layer WARNING: Didn't find required layer object disable_environment in manifest JSON file, skipping this layer WARNING | LAYER: windows_read_data_files_in_registry: Registry lookup failed to get layer manifest files. WARNING: Didn't find required layer object disable_environment in manifest JSON file, skipping this layer WARNING: Didn't find required layer object disable_environment in manifest JSON file, skipping this layer WARNING | LAYER: windows_read_data_files_in_registry: Registry lookup failed to get layer manifest files. Available: VK_LAYER_AMD_switchable_graphics, VK_LAYER_VALVE_steam_overlay, VK_LAYER_VALVE_steam_fossilize, VK_LAYER_RTSS WARNING: Didn't find required layer object disable_environment in manifest JSON file, skipping this layer WARNING: Didn't find required layer object disable_environment in manifest JSON file, skipping this layer WARNING: Didn't find required layer object disable_environment in manifest JSON file, skipping this layer WARNING: Didn't find required layer object disable_environment in manifest JSON file, skipping this layer 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 Vulkaninfo output bagusnl_reg vulkaninfo WARNING: [Loader Message] Code 0 : Didn't find required layer object disable_environment in manifest JSON file, skipping this layer WARNING: [Loader Message] Code 0 : windows_read_data_files_in_registry: Registry lookup failed to get layer manifest files. ========== VULKANINFO ========== GPU-z Vulkan Memory screenshot ![image](https://github.com/GpuZelenograd/memtest_vulkan/assets/28079733/d4a7154b-19b2-4905-befc-0051ee6ed233) there seems to always be a 256MB overhead from the usual UMA size set by the "BIOS" and reported by WDDM/DirectX (it outputs 2GB, same as what it set to) |
Thanks, great investigation. I rechecked my previous experiments - and indeed the smallest DeviceLocal memory I tested was 1 GB, not 512MB. I added a note for integrated GPUs in troubleshooting There is a data for this GPU in the great open database - https://vulkan.gpuinfo.org/listreports.php?devicename=AMD%20Radeon(TM)%20Vega%203%20Graphics It has quite structured data representation, more readable than vulkainfo and GPU-Z. For windows 11 it contains data sample for 2GB and 512MB setups, and it shows 256MB available memory. You can report data sample for 1GB setting there if ypu want (it seems to lack it yet) (I'm not related in any way with that app/database, it is just very handy to investigate such issues even before getting verbose logs) |
I see, for Vega-based APU (I can't say much for RDNA based ones) the UMA size option is quite broad. Options goes from 64MB all the way up to 16GB. I'll find a time to submit my reports there. Asking this because for AMD APUs we have smartalloc which can use any part of system memory as the UMA and completely abandoning the UMA itself (it goes unused), so most of my friends that uses AMD APU uses really low UMA size |
I'm not sure if vulkan allows shaders accessing memory types that lacks DEVICE_LOCAL_BIT. I suppose that it is a somewhat strange behaviour of the driver to report such small memory sizes if it has smartalloc mechanism active - so maybe this will be adjusted in the "vulkan side of the drivers". Really, I don't undestand how vulkan-based games checks what amount of memory is available for your case. So, currently my plan is "add this situation detection and print message suggesting increasing UMA or specifying the size manually in the cmd line." And I should eventually document the extended cmdline in the readme. You can try it manually - run While runing in auto-mode memtest_vulkan carefully limits the amount of used VRAM since "allocating-nearly-all VRAM" behaviour often lead to system UI hangs, and allocating even the amount identical to the numbers reported by vulkan heaps can be very problematic. As a result memtest_vulkan honors the numbers reported by vulkan API and do not try to allocate more than reported size. Overall memtest_vualkn is tuned towards its main use cases - testing staibility of used or overclocked descrete GPUs. Also a bit of side question - what is your use case for running memtest_vulkan with integrated gpu? Testing system memory itself is much better done with CPU-based testing, so memtest_vulkan can be used just to check if the iGPU itself is fine. |
Thanks for detailed reporting. It seems taht both modes allows allocation size greater than heap size reported by vualkn API. So, I'll try to implement a fix that allows allocating minimal needed memory on integrated Gpu even for smaller heap size. Due to meory sharing some overallocating should be safe for iGPUs. And based on #30 such minimal memory allocation should be implemented for descrete GPUs too. Maybe with some file locking check on a log file, so memtest_vulkan will not allow running several insaces on the same GPU via some file locking |
Similar problem with AMD Radeon R7 (device 1002 9874 1043 8719) - device-local is reported as 256MB, but actually up to 4GB works (windows driver U0382934-Radeon-Software-Adrenalin-2020-22.6.1) |
GPU: Vega 3 iGPU (R3 3200U)
UMA: 512M
RAM: 16GB
OS: Windows 11 Latest Insider Beta
vulkaninfo output: https://gist.github.com/bagusnl/eb2125cf9e7c606b62c7dedd659b2753
Originally posted by @bagusnl in #11 (comment)
The text was updated successfully, but these errors were encountered: