【问题标题】:How to detect whether GPU is AMD or NVIDIA from inside HIP code如何从 HIP 代码中检测 GPU 是 AMD 还是 NVIDIA
【发布时间】:2022-10-16 19:01:37
【问题描述】:

我目前正在编写与 NVIDIA 的 deviceQuery 示例代码等效的 HIP。我希望 my code 在 AMD 和 NVIDIA 硬件上工作。 现在,hipDeviceProp_t 与 cudaDeviceProp_t 并不完全相同,因为与后者相比,前者在结构中既有新字段也有缺失字段。 目前,我编写的代码仅适用于 AMD GPU,当我在 NVIDIA GPU 上尝试时会出现段错误,我认为这是由于访问了 cudaDeviceProp_t 中不存在的字段。它还缺少一个关键部分来检测相同gfx??? GCN 架构代码中的确切 GPU 模型。

如何判断检测到的 GPU 是 AMD 还是 NVIDIA?

编辑:为了比较,SYCL 有sycl::info::device::vendor 提供此信息。

【问题讨论】:

    标签: c++ hip


    【解决方案1】:

    您可以使用IDXGIAdapter::VendorId 获取供应商 ID。如果您需要获取供应商 ID,可以使用 PCI Lookup 之类的网站。

    您将需要 Direct3D 和 DXGI 设备。

    #define VENDOR_NVIDIA 0x10DE
    
    extern IDXGIAdapter* pDXGIAdapter;
    
    std::string GetGPUVendor()
    {
        DXGI_ADAPTER_DESC Description;
        if (SUCCEEDED(pDXGIAdapter->GetDesc(&Description)))
        {
            switch (Description.VendorId)
            {
                case VENDOR_NVIDIA:
                    return "NVIDIA";
                // ...
                default:
                    return "Unknown";
            }
        }
        else
        {
            return "Failed";
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-27
      • 2017-09-04
      • 2015-09-10
      • 2013-02-27
      • 1970-01-01
      • 2012-02-27
      • 2020-07-18
      相关资源
      最近更新 更多