【发布时间】:2017-12-19 17:40:15
【问题描述】:
我想分发一个使用 openCL 的 Windows/Linux 应用程序,但我找不到最好的方法。
目前我的问题只在 Windows 上:
1- 我使用的是 Intel CPU,如何管理 Intel 和 AMD(最终用户的 CPU)?
2- 对于使用 Visual Studio DLL 的应用程序的分发,我们有 Visual Studio Redistributable 来轻松管理它并避免大量安装 Visual Studio。 openCL 有这样的包吗?
3- 最后,我不知道我是否必须提供OpenCL.dll(不同观点的例子here)
我在网上阅读了几个关于这个问题的主题,但没有明确的解决方案。
感谢您的帮助。
【问题讨论】:
-
OpenCL 关心的不是 CPU 的 ISA,而是 GPU 的。通常,所有 Intel (IA-64) 和 AMD (AMD64) 用户只需要一个 x64 版本。如果您实际上已经在具有不同编译器和优化选项的不同处理器上分析了您的代码并发现了证明它合理的性能差异,则仅分发两个(或更多)二进制文件。
-
好吧,这可以解释为什么我没有找到关于这个主题的信息,这只是一个误会。所以我认为在我的应用程序中提供 OpenCL.dll 没有问题?
-
@Dai:IA-64 是安腾。 x86-64 在英特尔的手册中有时称为 IA-32e。库确实需要在 CPU 上运行以向 GPU 发送指令,因此它们确实需要匹配 CPU 的 ISA。例如,AArch64 OpenCL 库无法在 x86-64 上运行。关键是无论您使用的是 Intel 还是 AMD CPU,x86-64 仍然是 x86-64。它们都实现了相同的架构,有时具有不同的扩展或性能。
-
不,包中不需要 opencl.dll。程序通过驱动程序自动使用/找到它。为什么选择 Visual Studio DLL?仅查询 cpu 设备的 opencl,以查找用户的 cpu。
-
@PeterCordes 是的,我并不是说为 ARM 构建的
opencl.dll可以在 x86 机器上运行