OpenCL客户端要求

时间:2012-03-22 14:40:27

标签: driver opencl

我使用AMD SDK v2.5和ATI Catalyst驱动程序在我的计算机上实现了一个项目,因为我有一个ATI HD5570显卡。

我希望我的可执行文件在不同的平台上运行。 我希望能够检查是否可以在运行可执行文件的配置中找到可用的OpenCL平台。 当然配置可以有Nvidia显卡。

我通过互联网搜索但我无法找到问题的最终答案。通过我的搜索,我完全迷失了。是否有一种众所周知的部署安装客户端驱动程序的方法?是否有一种强有力的,组织良好的方法来满足所有这些需求? OpenCL不是太乱了吗?

谢谢和问候,

编辑: 简而言之,

我想为客户端计算机提供1)我的可执行文件2)任何必要的文件和DLL,我想保持这些支持文件最小化。那么客户端计算机是否有办法在不安装SDK的情况下运行我的代码? (客户端计算机可能有来自不同供应商的GPU设备)

编辑2:

客户端的需求/安装是否取决于开发人员使用的SDK?如果没有,为什么我的客户端收到getplatformID错误,即使他为他的nvidia gpu安装了最新的驱动程序?

编辑3:

如果他想运行在不同计算机(可能使用不同供应商)开发的OpenCL .exe,我的客户应该怎么做?

2 个答案:

答案 0 :(得分:0)

如果您在系统上安装了多个版本的OpenCL,您将看到多个版本 平台。

调用clGetPlatformIDs以获取平台数量。计数将大于1.

再次调用clGetPlatformIDs以获取ID列表。

调用clGetPlatformInfo获取每个平台的信息。

接下来决定使用哪个平台,然后获取设备信息和属性。 然后建立OpenCL上下文并在所选平台和设备组合上排队并运行内核。

这是如何以及为何有效?有关ICD扩展详细信息,请参阅Khronos网站

http://www.khronos.org/registry/cl/extensions/khr/cl_khr_icd.txt

答案 1 :(得分:0)

嗯IMHO你需要知道你计划运行的客户端计算机的硬件细节,没有通用的OpenCL.dll或atiocl.dll / atiocl64.dll nvcuda.dll,你可以将它与应用程序打包并希望一切正常。

即使你只运行CPU而不是GPU,你需要供应商提供的OpenCL.dll(openCL运行时)才能在客户端计算机中出现,然后才能尝试进行clGetPlatformIDs ......或类似的调用。

HTH