You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vulkan Memory Allocator(VMA)在NVIDIA GPU上运行样本失败求助

解决Vulkan Memory Allocator样本程序断言失败问题

问题概述

已安装Vulkan Memory Allocator(VMA)及样本程序,运行时触发断言失败:

Assertion failed: file.is_open(), file C:\Users\usr\VulkanMemoryAllocator\src\VulkanSample.cpp, line 296

环境及设备信息:

  • OS:Windows 11
  • IDE:Visual Studio 2022
  • GPU:NVIDIA RTX 2060
  • 驱动版本:546.65
  • Vulkan SDK版本:1.3.275.0
  • VMA样本版本:3.0.1
  • 已安装Microsoft Visual C++ Redistributable 2015/2017/2019 x64版本,且更新了NVIDIA驱动

设备及Vulkan配置详情:

Vulkan Memory Allocator Sample 3.0.1
使用的Vulkan API版本:1.3
physicalDeviceProperties:
driverVersion: 0x88904000
vendorID: 0x10DE (NVIDIA)
deviceID: 0x1E89
deviceType: 2 (DISCRETE_GPU)
deviceName: NVIDIA GeForce RTX 2060
limits:
maxMemoryAllocationCount: 4096
bufferImageGranularity: 1024 B
nonCoherentAtomSize: 64 B
physicalDeviceVulkan11Properties:
maxMemoryAllocationSize: 4292870144 B (4.00 GB)
physicalDeviceVulkan12Properties:
driverID: 4 (NVIDIA_PROPRIETARY)
driverName: NVIDIA
driverInfo: 546.65

MEMORY HEAPS:
heapCount=3, typeCount=5
Heap 0: 6247415808 B (5.82 GB) DEVICE_LOCAL
Type 1: DEVICE_LOCAL
Heap 1: 25648566272 B (23.89 GB)
Type 0:
Type 2: HOST_VISIBLE, HOST_COHERENT
Type 3: HOST_VISIBLE, HOST_COHERENT, HOST_CACHED
Heap 2: 224395264 B (214.00 MB) DEVICE_LOCAL
Type 4: DEVICE_LOCAL, HOST_VISIBLE, HOST_COHERENT

结论:
- 2个DEVICE_LOCAL堆,总计6.03 GB。
- 2个HOST_VISIBLE堆,总计24.10 GB。
- 1个同时为DEVICE_LOCAL和HOST_VISIBLE的堆,总计214.00 MB。
- 不存在仅HOST_VISIBLE但非HOST_COHERENT的类型。
- 1个既非DEVICE_LOCAL也非HOST_VISIBLE的类型。
- 不存在AMD专属的DEVICE_COHERENT或DEVICE_UNCACHED类型。
- 不存在LAZILY_ALLOCATED类型。
- 带有VERTEX_BUFFER用途的缓冲区可在某些非DEVICE_LOCAL类型中创建。
- 带有OPTIMAL平铺和SAMPLED用途的图像可在某些非DEVICE_LOCAL类型中创建。

已启用的扩展和功能:
Validation layer: 1
Sparse binding: 1
VK_EXT_memory_budget: 1
VK_AMD_device_coherent_memory: 0
bufferDeviceAddress: 1
VK_EXT_memory_priority: 1

问题原因分析

断言file.is_open()失败说明程序尝试打开某个文件但未成功,常见原因包括:

  • 程序运行时工作目录错误,导致找不到目标文件
  • 样本依赖的资源文件未被正确复制到输出目录
  • 文件所在目录权限不足,程序无法读取文件

解决方案

1. 调整程序工作目录

在Visual Studio中操作:

  • 右键点击VMA样本项目 → 属性 → 调试 → 工作目录
  • 将工作目录设置为样本资源文件所在的目录,比如项目根目录$(ProjectDir),或具体资源文件夹路径$(ProjectDir)assets

2. 确保资源文件复制到输出目录

  • 找到样本项目中的资源文件(如纹理、配置文件等)
  • 右键点击文件 → 属性 → 常规 → 复制到输出目录,设置为「如果较新则复制」或「始终复制」
  • 手动检查输出目录(如x64/Debug或x64/Release),确认资源文件存在

3. 检查文件权限

  • 避免将程序安装在C:\Program Files这类系统保护目录
  • 若程序已在保护目录,尝试以管理员身份运行Visual Studio或样本程序

4. 定位缺失的具体文件

打开VulkanSample.cpp第296行,查看代码中尝试打开的文件名,比如:

std::ifstream file("sample_texture.png");
assert(file.is_open()); // 第296行

找到文件名后,手动确认文件位置,要么将文件移至程序工作目录,要么修改代码中的文件路径为绝对路径

内容的提问来源于stack exchange,提问作者siwameron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 16:02:07