在我的装有 Windows 7 操作系统的计算机中,我有来自该供应商的三个版本的 OpenCL SDKS:
- 英特尔
- 英伟达
- AMD。
我用他们每个人构建我的应用程序。作为输出,我有三个不同的二进制文件。例如:my_app_intel_x86、my_app_amd_x86、my_app_nvidia_x86
此二进制文件对此有所不同:
- 他们在 likange 过程中使用不同的 SDK
- 他们试图在运行时找到不同的 OpenCL 平台名称
我可以只使用一个 SDK 并检查平台的运行时间吗?
在我的装有 Windows 7 操作系统的计算机中,我有来自该供应商的三个版本的 OpenCL SDKS:
我用他们每个人构建我的应用程序。作为输出,我有三个不同的二进制文件。例如:my_app_intel_x86、my_app_amd_x86、my_app_nvidia_x86
此二进制文件对此有所不同:
我可以只使用一个 SDK 并检查平台的运行时间吗?
SDK 提供调试工具、平台和可能的扩展,OpenCL API 无论如何都保持不变。您可以链接到所需的任何 SDK,它会生成与您可以找到的任何 OpenCL 运行时兼容的可执行文件。请记住,这些是面向开发人员的 SDK——最终用户可能只有他的图形驱动程序(支持 OpenCL),它并不关心您用于构建软件的 SDK。
理想情况下,您应该为您的程序使用默认平台,但让用户覆盖它(您可以在运行时选择各种平台!)。您还可以使用启发式方法来确定哪个设备最快,例如:
此外,如果您使用特定的扩展程序,请确保只接受支持它们的设备...
我可以只使用一个 SDK 并检查平台的运行时间吗?
是的,你绝对可以而且应该这样做,但我担心你所说的“检查平台”是什么意思——正如我上面所说的,SDK 对你可以运行构建程序的平台绝对没有影响。我可以使用 AMD SDK 构建我的代码,并在带有 nVidia 显卡或 Intel 处理器的系统上运行可执行文件(唯一的区别是我可能无法访问由我提供的 AMD 特定的扩展) SDK,但扩展将被 AMD 驱动程序识别,因此您甚至不需要安装 SDK 即可运行代码 - 但您将构建它)。