我已经搜索了各种问题(和网络),但没有找到任何令人满意的答案。
我很好奇是使用线程直接加载CPU的核心,还是使用OpenCL实现。OpenCl仅仅是为了让多处理器/内核更容易移植,也就是把代码移植到OpenCL或CPU上,还是OpenCL更快、更高效?我知道GPU有更多的处理单元,但这不是问题。它是在代码中间接多线程,还是使用OpneCL?
抱歉我有另一个问题..。
如果IGP与离散图形卡共享PCI线路,并且它的驱动程序无法在Windows 7下加载,我不得不假设它将不可用,即使您只想使用集成GPU的处理内核。这是否正确,或者是否有一种无需驱动程序即可访问IGP的方法。
发布于 2013-05-02 20:50:41
编辑:正如@Yann Vernier在评论部分指出的那样,我对我使用的术语还不够严格。因此,在这篇文章中,我使用术语线程作为工作项的同义词。我不是指CPU线程。
我真的不能将OCL与任何其他允许使用CPU的不同内核的技术进行比较,因为到目前为止我只使用了OCL。
然而,我可能会带来一些关于开放源码语言的意见,特别是我并不真正同意ScottD。
首先,即使开发在GPU上运行的OCL内核在CPU上也可以运行得很好,但这并不意味着它将是高效的。原因很简单,GPU在CPU和上的工作方式不同。要很好地理解它们之间的区别,请参阅“heterogeneous computing with opencl”的第6章。
总而言之,虽然GPU将在给定工作组内同时启动一组线程,但CPU将在同一工作组内一个接一个地在一个核心上执行。关于the standard支持的两种不同类型的编程模型,请参阅OCL的第3.4点。这可以解释为什么OCL内核在CPU上的效率低于“经典”代码:因为它是为GPU设计的。
开发人员针对的是CPU还是GPU,这并不是一个“严肃工作”的问题,而只是取决于最适合您需要的编程模型的类型。此外,OCL支持CPU的事实也很好,因为它可以在没有配备适当GPU的计算机上优雅地降级(尽管很难找到这样的计算机)。
关于AMD平台,我已经注意到一些问题的CPU以及笔记本电脑上的ATI。我观察到我的一些代码的性能很低,并且也崩溃了。但原因是处理器是英特尔的。AMD平台将声明有可用的CPU设备,即使它是Intel CPU。然而,它不能像它应该的那样有效地使用它。当我以CPU为目标运行完全相同的代码时,但是在安装(和使用) Intel平台之后,所有的问题都消失了。这是性能不佳的另一个可能原因。
关于iGPU,它不共享CPU线,它在PCIe芯片上(至少在英特尔),是的,你需要驱动程序来使用它。我假设您尝试安装驱动程序,并得到类似“您的计算机不满足最低要求…”的消息。或者类似的东西。我猜这取决于电脑,但就我的情况而言,我的台式机配备了NVIDIA和i7处理器(它有一个HD4000图形处理器)。为了使用iGPU,我必须首先在基本输入输出系统中启用它,这允许我安装驱动程序。当然,显示器一次只使用两个图形处理器中的一个(取决于基本输入输出系统的设置),但我可以用OCL访问这两个图形处理器。
发布于 2013-11-10 18:59:46
在最近使用英特尔opencl工具的实验中,我们体验到opencl的性能与在gcc和icc上基于CUDA和内部代码的AVX代码非常相似--比我们看到opencl性能较差的早期实验(几年前)要好得多。
https://stackoverflow.com/questions/16263465
复制相似问题