news 2026/4/18 7:20:35

【TVM教程】Vulkan 运行时

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【TVM教程】Vulkan 运行时

TVM 现已更新到 0.21.0 版本,TVM 中文文档已经和新版本对齐。

Apache TVM 是一个深度的深度学习编译框架,适用于 CPU、GPU 和各种机器学习加速芯片。更多 TVM 中文文档可访问 →Apache TVM

TVM 支持使用 Vulkan 计算着色器来执行任务。 每个计算内核都会被编译成一个 SPIR-V 着色器,然后可通过 TVM 接口进行调用。

Vulkan 功能与限制

由于不同的 Vulkan 实现可能启用了不同的可选特性,或具有不同的物理限制, 代码生成必须了解可用的特性。这些特性对应于特定的 Vulkan 能力与限制,如Vulkan Capabilities Table <tvm-table-vulkan-capabilities>{.interpreted-text role=“ref”} 所示。 若未指定,TVM 会假定该能力不可用,或该限制为 Vulkan 规范中 Required Limits 一节所定义的最小保证值。

这些参数既可以在定义Target <tvm-target-specific-target>{.interpreted-text role=“ref”} 时显式指定, 也可以从设备中查询。若要从设备查询,可使用特殊参数-from_device=N,以从设备 IDN查询所有 Vulkan 参数。 任何额外显式指定的参数将覆盖从设备查询到的参数。

参数名称(Target Parameter)所需 Vulkan 版本/扩展查询的 Vulkan 参数结构体字段默认值
supported_subgroup_operations(支持的子群操作)Vulkan 1.1+VkPhysicalDeviceSubgroupProperties::supportedOperations0(对应子群特性标志位 VkSubgroupFeatureFlagBits)
max_push_constants_size(最大 Push 常量大小)VkPhysicalDeviceLimits::maxPushConstantsSize128 字节
max_uniform_buffer_range(最大 Uniform Buffer 范围)VkPhysicalDeviceLimits::maxUniformBufferRange16384 字节
max_storage_buffer_range(最大 Storage Buffer 范围)VkPhysicalDeviceLimits::maxStorageBufferRange2^27 字节
max_per_stage_descriptor_storage_buffer(每阶段可用 Storage Buffer 描述符数量)VkPhysicalDeviceLimits::maxPerStageDescriptorStorageBuffers4
supports_storage_buffer_storage_class(支持 Storage Buffer 类型)VK_KHR_storage_buffer_storage_class(无需查询,取决于扩展是否启用)false
supports_storage_buffer_8bit_access(支持 8 位 Storage Buffer 访问)VK_KHR_8bit_storageVkPhysicalDevice8BitStorageFeaturesKHR::storageBuffer8BitAccessfalse
supports_storage_buffer_16bit_access(支持 16 位 Storage Buffer 访问)VK_KHR_16bit_storageVkPhysicalDevice16BitStorageFeaturesKHR::storageBuffer16BitAccessfalse
supports_float16(支持 float16 浮点类型)VK_KHR_shader_float16_int8VkPhysicalDeviceShaderFloat16Int8FeaturesKHR::shaderFloat16false
supports_float64(支持 float64 浮点类型)VkPhysicalDeviceFeatures::shaderFloat64false
supports_int8(支持 int8 类型)VK_KHR_shader_float16_int8VkPhysicalDeviceShaderFloat16Int8FeaturesKHR::shaderInt8false
supports_int16(支持 int16 类型)VkPhysicalDeviceFeatures::shaderInt16false
supports_int64(支持 int64 类型)VkPhysicalDeviceFeatures::shaderInt64false

截至 2021 年 5 月,并非所有 Vulkan 实现都受到支持。 例如,需要支持 64 位整数。若 Vulkan 目标不受支持, 在生成 SPIR-V 代码时将会报错。 目前也在努力消除此类限制,以支持更多 Vulkan 实现。

SPIR-V 功能

某些设备特性也对应于 SPIR-V 的功能或扩展,必须在着色器中声明,或要求使用最低版本的 SPIR-V。 TVM 生成的着色器会声明执行所需的最小扩展、功能以及最低 SPIR-V 版本。

如果着色器生成需要的能力或扩展在Target中未启用,将会抛出异常。

参数名称(Target Parameter)所需 SPIR-V 版本/扩展声明的功能(Capability)
supported_subgroup_operations(支持的子群操作)SPIR-V 1.3+视具体子群特性而定(参考 VkSubgroupFeatureFlagBits)
supports_storage_buffer_storage_class(支持 Storage Buffer 类)SPV_KHR_storage_buffer_storage_class(使用该扩展隐式启用)
supports_storage_buffer_8bit_access(支持 8 位存储缓冲访问)SPV_KHR_8bit_storageStorageBuffer8BitAccess
supports_storage_buffer_16bit_access(支持 16 位存储缓冲访问)SPV_KHR_16bit_storageStorageBuffer16BitAccess
supports_float16(支持 Float16 浮点类型)Float16
supports_float64(支持 Float64 浮点类型)Float64
supports_int8(支持 Int8 类型)Int8
supports_int16(支持 Int16 类型)Int16
supports_int64(支持 Int64 类型)Int64

Vulkan 特定环境变量

SPIR-V 代码生成器和 Vulkan 运行时均可通过环境变量修改部分运行时行为。 这些变量主要用于调试,以便更轻松地测试特定代码路径或输出更多信息。 所有布尔类型变量在设置为非零整数时视为"真"。 未设置、设为 0 或空字符串时,视为"假"。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 6:51:08

快速验证:游戏下载限制的用户体验优化方案

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 设计一个快速原型&#xff0c;模拟游戏下载限制的用户体验优化方案。原型应包括&#xff1a;1. 用户遇到限制时的界面&#xff1b;2. 优化后的界面&#xff08;如倒计时提示、替代…

作者头像 李华
网站建设 2026/4/18 6:34:49

【实时同步黑科技】:利用变更检测与差量传输实现秒级响应

第一章&#xff1a;远程文件同步优化在分布式系统与跨地域协作日益普及的背景下&#xff0c;远程文件同步的效率直接影响开发与运维流程的流畅性。传统的同步工具如 rsync 虽然稳定&#xff0c;但在面对大量小文件或高延迟网络时&#xff0c;往往出现性能瓶颈。通过合理配置同步…

作者头像 李华
网站建设 2026/3/28 1:27:05

NGINX WINDOWS零基础入门指南

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个NGINX WINDOWS学习应用&#xff0c;提供交互式教程和新手友好的界面。点击项目生成按钮&#xff0c;等待项目生成完整后预览效果 今天想和大家分享一下我在Windows上折腾N…

作者头像 李华
网站建设 2026/4/17 19:59:18

MediaPipe Holistic极简体验:5块钱玩转全身动作捕捉

MediaPipe Holistic极简体验&#xff1a;5块钱玩转全身动作捕捉 引言&#xff1a;视频创作者的AI特效新玩具 每次刷短视频时看到那些酷炫的AR特效&#xff0c;你是不是也心痒痒想给自己作品加点料&#xff1f;但一想到要学复杂的3D建模和动作捕捉技术就打了退堂鼓。今天我要介…

作者头像 李华
网站建设 2026/4/18 2:08:27

Holistic Tracking最佳实践:云端GPU按秒计费,成本降80%

Holistic Tracking最佳实践&#xff1a;云端GPU按秒计费&#xff0c;成本降80% 引言&#xff1a;动作捕捉开发者的成本困境 作为一名个人开发者&#xff0c;当你想要尝试动作捕捉技术时&#xff0c;是否遇到过这样的困扰&#xff1a;买专业显卡太贵且利用率低&#xff0c;租云…

作者头像 李华