2014-03-12 34 views
0

我是OpenCL编程的初学者。我的个人电脑上安装了Windows 8.1,包括英特尔图形和AMD Radeon 7670.当我搜索下载OpenCL SDK和样本helloworld程序时,我发现有单独的SDK和程序可以使用完全不同的格式。我必须使用C而不是C++。任何人都可以建议我应该安装哪个SDK?请帮忙。OpenCL哪个SDK最好?

回答

1

在最低级别上,各种OpenCL SDK相同;它们都包含来自Khronos网站的cl.h。包含该头文件后,您可以写入OpenCL API,然后您需要链接到SDK中提供的OpenCL.lib。在运行时,您的应用程序将加载GPU供应商安装在/ Windows/System32中的OpenCL.dll。

或者,您可以包含cl.hpp并使用C++包装器,但由于您说您是C程序员,并且由于大多数书籍都使用C API,因此请使用cl.h.我想认为这可能会解释你所做的“完全不同格式的程序”观察,这就是为什么我在这里提出它。

一个SDK比另一个SDK的好处通常是分析和调试。例如,AMD SDK包含APP Profiler(或现在的CodeXL),它将帮助您了解如何更快地制作内核。 NVIDIA为同样的目的提供Parallel Nsight,而且Intel也有性能工具。

因此,您可以根据您计算机中的硬件选择您的SDK,但要明白,一旦编码到OpenCL API,您的应用程序就可以在其他供应商的其他GPU上运行 - 这就是OpenCL的好处。您甚至应该能够从一个供应商处获得样品,以便从另一个供应商的硬件上执行。

需要注意的一件事是版本:如果您编码到OpenCL 1.2 SDK,则可能无法在OpenCL 1.1硬件上运行。

+0

不错的总结,但另一个重要的事实是,除了任何GPU之外,AMD平台还将CPU识别为OpenCL设备,而Nvidia平台仅识别GPU。 –

+0

我还会补充一点,Nvidia的Parallel Nsight和分析工具不能与OpenCL一起使用,只能使用CUDA,但这对于OP来说并不重要,因为只使用了AMD GPU和Intel CPU。 – chippies

+0

@roybatty,好点。英特尔OpenCL运行时还将CPU公开为设备。任何和所有这些平台可以同时安装和使用。 – Dithermaster

0

对我来说,OpenCL最棒的地方在于,你根本不需要SDK,因为它在一个通用接口背后抽象出不同的供应商实现(请参阅本主题中的答案:Do I really need an OpenCL SDK?)。