我如何在cpu和gpu中的某些部分运行程序的某些部分?

时间:2012-07-02 17:07:11

标签: visual-c++ opencl

我想编写一个程序,其中一些代码在cpu中运行,其中一些代码在gpu中运行。我想使用opencl.it是可以做到的,如果是的我怎么能这样做?我想使用visual studio。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您可以在OpenCL中使用多个设备。使用给定的API获取设备信息,然后使用句柄在每个设备上创建上下文。休息就像简单的OpenCL程序一样简单。您还可以启动任务并行内核。有关更多信息,请参阅AMD / nVIDIA OpenCL编程指南。

答案 2 :(得分: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

  4. 这有助于您在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