许多 OpenCL SDK。我应该选择哪一个?
Posted
技术标签:
【中文标题】许多 OpenCL SDK。我应该选择哪一个?【英文标题】:Many OpenCL SDK's. Which of them i should choose? 【发布时间】:2012-11-11 16:40:26 【问题描述】:在我的装有 Windows 7 操作系统的计算机上,我有来自该供应商的三个版本的 OpenCL SDKS:
英特尔 英伟达 AMD。我用他们每个人构建我的应用程序。 作为输出,我有三个不同的二进制文件。 例如:my_app_intel_x86、my_app_amd_x86、my_app_nvidia_x86
这个二进制文件在这方面有所不同:
-
他们在likange过程中使用不同的SDK
他们试图在运行时找到不同的 OpenCL 平台名称
我可以只使用一个 SDK 并检查平台的运行时间吗?
【问题讨论】:
【参考方案1】:SDK 提供调试工具、平台和可能的扩展,OpenCL API 保持不变。您可以链接到所需的任何 SDK,它会生成与您可以找到的任何 OpenCL 运行时兼容的可执行文件。请记住,这些是 SDK,适用于开发人员 - 最终用户可能只有他的图形驱动程序(支持 OpenCL),它并不关心您用于构建软件的 SDK。
理想情况下,您应该为您的程序使用默认平台,但让用户覆盖它(您可以在运行时选择各种平台!)。您还可以使用启发式方法来确定哪个设备最快,例如:
迭代每个可用平台 针对每个平台,迭代每个设备 以某种相关方式对该设备进行基准测试 选择最快的一个此外,如果您使用特定的扩展程序,请确保只接受支持它们的设备...
我可以只使用一个 SDK 并检查平台的运行时间吗?
是的,您绝对可以而且应该这样做,但我担心您所说的“检查平台”是什么意思——正如我上面所说,SDK 对您可以运行构建程序的平台绝对没有影响。我可以使用 AMD SDK 构建我的代码,并在带有 nVidia 显卡或 Intel 处理器的系统上运行可执行文件(唯一的区别是我可能无法访问由我提供的 AMD 特定的扩展) SDK,但扩展将被 AMD 驱动程序识别,因此您甚至不需要安装 SDK 即可运行代码 - 但您需要构建它。
【讨论】:
Thomas,感谢您的完整回答。我给你这个答案是因为我对 AMD、NVIDIA SDK 的行为有些不足。 2012 年 3 月至 4 月,我的应用程序在供应商的驱动程序或供应商的用户空间 dll 中崩溃。我没有太多空闲时间,我决定采用“小型”解决方法来构建三个具有不同链接的不同二进制文件。我将尽快尝试构建我的应用程序并再次在任何地方运行。谢谢。以上是关于许多 OpenCL SDK。我应该选择哪一个?的主要内容,如果未能解决你的问题,请参考以下文章