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

RTX3000系列GPU无浮点原子Min/Max支持的替代方案咨询

关于Vulkan浮点原子操作的问题
  • 我的RTX3000系列GPU不支持VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT特性,想了解是否有部分Intel APU支持该ATOMIC_FLOAT_2特性。
  • 我需要一种能够对浮点字段进行原子访问和比较的替代方案。令我困惑的是,GPU架构的原生数据格式为浮点,但该功能并未在整个GPU生态中强制支持,求可行的解决思路。

我曾尝试启用该特性,但原子结构体中的所有字段均返回0(表示不支持),相关Vulkan代码如下:

VkPhysicalDeviceFeatures2 features2 = {
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2};
    VkPhysicalDeviceVulkan13Features vulkan_1_3_features = {
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES};
    VkPhysicalDeviceVulkan12Features vulkan_1_2_features = {
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES};
    VkPhysicalDeviceVulkan11Features vulkan_1_1_features = {
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES};
    VkPhysicalDeviceAccelerationStructureFeaturesKHR acceleration_structure_features = {
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR};
    VkPhysicalDeviceRayTracingPipelineFeaturesKHR ray_tracing_pipeline_features = {
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR};
    VkPhysicalDeviceRayQueryFeaturesKHR ray_query_features = {VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR};
    VkPhysicalDeviceShaderAtomicFloatFeaturesEXT shader_atomic_float_features = {
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT};
    VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT shader_atomic_float2_features = {
        VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT};

    features2.pNext = &vulkan_1_3_features;
    vulkan_1_3_features.pNext = &vulkan_1_2_features;
    vulkan_1_2_features.pNext = &vulkan_1_1_features;
    vulkan_1_1_features.pNext = &acceleration_structure_features;
    acceleration_structure_features.pNext = &ray_tracing_pipeline_features;
    ray_tracing_pipeline_features.pNext = &ray_query_features;
    ray_query_features.pNext = &shader_atomic_float_features;
    shader_atomic_float_features.pNext = &shader_atomic_float2_features;

    vkGetPhysicalDeviceFeatures2(context->device.physical_device, &features2);

如果尝试使用该特性,设备会丢失,相关GLSL代码如下:

#version 450
#extension GLSL_EXT_shader_atomic_float2: require
...

shared float min_distance;

main(){
...
atomicMin(min_distance);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 19:23:21