【问题标题】:WIll Opencl still run on AMD gpu, if I were to write a program with OpenCL from Nvidia Vendor?如果我要使用来自 Nvidia 供应商的 OpenCL 编写程序,Opencl 还会在 AMD gpu 上运行吗?
【发布时间】:2022-03-14 19:55:02
【问题描述】:

所以我从 Nvidia 供应商处下载了 OpenCL,并编写了一个程序。所以我想知道我的程序还能在 AMD GPU 上运行还是需要安装 AMD 版本的 OpenCL?

【问题讨论】:

  • 请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。

标签: opencl amd


【解决方案1】:

简而言之:是的,使用OpenCL headers from Nvidia toolkit 开发的程序也可以在 AMD 和 Intel GPU 上运行。 Nvidia GPU 的程序始终在 OpenCL C 1.2 中,AMD/Intel GPU 支持 OpenCL C 1.2/2.0/2.1/2.2,它始终向后兼容 OpenCL C 1.2。


但是,根据硬件的差异,您可能会遇到一些罕见的问题。

一个示例:Nvidia GPU 使用 32 个线程的“扭曲”,因此如果您选择工作组大小 32 或 32 的倍数,您将充分利用硬件。 AMD GCN GPU 至少需要工作组大小 64 或 64 的倍数才能充分利用硬件。只有工作组大小为 32,您只能获得一半的算术性能。

另一个例子:对于 Nvidia GPU,你可以在private 内存中仍然有相当大的表,如果它太多,你会溢出到全局内存中(使它非常慢,但仍然可以正常工作)。一些 AMD GPU 无法容纳这么多 private 变量,并且会在编译期间抛出错误,因此您必须将表移动到 constant 内存中(这适用于 AMD 和 Nvidia)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    • 2013-08-18
    • 1970-01-01
    • 2012-07-03
    • 2012-08-17
    相关资源
    最近更新 更多