1

我想编写一个程序,其中一些代码在 cpu 中运行,而另一些在 gpu 中运行。我想使用opencl。如果可以,我可以怎么做?我想使用Visual Studio。

4

3 回答 3

0

You can use multiple devices in OpenCL. Use the given APIs to get info on devices and then use the handle to create context on each device. Rest is as easy as a simple OpenCL program. You can also launch a task-parallel kernel. More info is available in AMD/nVIDIA OpenCL Programming Guide.

于 2012-07-03T11:45:36.087 回答
0

你绝对可以做到,这就是 CPU+GPU 组合的大型程序。如果您认为您的部分代码可以并行化,例如展开几个循环,或者如果您正在处理断开连接的数据集,那么将这些项目放在 GPU 上。如果它是顺序的并且需要大量同步并且确实在某些循环上忙于等待,则将其放入 CPU 中。

实现这一点的方法很简单,首先在主机部分编写您的算法/逻辑,然后使用 OpenCL API 函数设置 GPU 以执行并行代码,在 GPU 计算单元上运行的函数称为内核,因此您需要编写一个OpenCL (C99) 语言中的核函数。

网络上有很好的指导可以帮助您完成此任务。

  1. AMD APP SDK 2.7 http://developer.amd.com/sdks/AMDAPPSDK/downloads/Pages/default.aspx 您将获得大量 OpenCL 示例,从简单的 hello world 到以简单方式实现的复杂算法。

  2. AMD APP Profiler 这与 AMD APP SDK 2.7 一起提供,可帮助您分析您编写的内容

  3. AMD gDEBugger http://developer.amd.com/tools/gDEBugger/Pages/default.aspx

这有助于您在 GPU 中调试 OpenCL 程序,主机代码调试使用 Visual Studio 调试器。

英特尔还提供了类似的示例,请看这里: http: //software.intel.com/en-us/articles/vcsource-samples/

Nvidia 示例在这里:http: //developer.download.nvidia.com/compute/cuda/3_0/sdk/website/OpenCL/website/samples.html

于 2012-07-04T03:06:50.767 回答
0

也许您可以尝试使用微软支持的AMP 。

于 2012-07-03T05:37:05.613 回答