c++ - 如何从 HIP 代码内部检测 GPU 是 AMD 还是 NVIDIA

标签 c++ hip

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

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

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

最佳答案

使用 HIP 时,您可以在编译时知道您是针对 AMD 还是 Nvidia GPU 进行编译。有no support for both AMD and Nvidia GPU code in the same translation unit .

因此,您可以尝试依赖以下预处理器定义:

#if defined(__HIP_PLATFORM_AMD__)
    // AMD GPU code should take this code path
#elif defined(__HIP_PLATFORM_NVIDIA__)
    // Nvidia takes this code path.
#else
    #error "Unknown platform"
#endif

关于c++ - 如何从 HIP 代码内部检测 GPU 是 AMD 还是 NVIDIA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72982826/

相关文章:

image - Haskell 图像处理 (HIP) 在 Pixel RGB 上运行

haskell HIP : Apply Filter to an Image

c++ - 反转按位左移和或赋值

c++ - 后缀运算符重载中虚拟参数的用途? C++

c++ - 如何在 VS Coded UI Test Builder 的自定义控件中将测试提供程序从 MSAA 切换到 UIA

c++ - 如何将数据从txt文件写入数据库?

c++ - 有谁知道为什么 Visual Studio 2015 Update 2 中使用 native c++ 的智能感知如此慢?

haskell - 如何使用 Haskell 图像处理生成图像