0

我搜索了各种问题(和网络),但没有找到任何令人满意的答案。

我很好奇是使用线程直接加载 CPU 的内核还是使用 OpenCL 实现。OpenCl 只是为了使多处理器/内核更便携,这意味着将代码移植到 GPU 或 CPU 还是 OpenCL 更快、更高效?我知道 GPU 有更多的处理单元,但这不是问题。是代码中的间接多线程还是使用 OpneCL?

对不起,我还有一个问题...

如果 IGP 与 Descrete Graphics Card 共享 PCI 线路,并且其驱动程序无法在 Windows 7 下加载,我不得不假设它不可用,即使您只想使用集成 GPU 的处理核心。这是正确的还是有办法在没有驱动程序的情况下访问 IGP。

4

2 回答 2

1

在最近使用英特尔 opencl 工具的实验中,我们体验到 opencl 的性能与 gcc 和 icc 上的 CUDA 和基于本质的 AVX 代码非常相似——比我们看到 opencl 性能更差的早期实验(几年前)要好得多。

于 2013-11-10T10:59:46.227 回答
1

编辑:正如@Yann Vernier 在评论部分指出的那样,我对我使用的术语不够严格。所以在这篇文章中,我使用术语线程作为工作项的同义词。我不是指 CPU 线程。

我无法将 OCL 与任何其他允许使用 CPU 不同内核的技术进行比较,因为到目前为止我只使用过 OCL。
不过,我可能会提出一些关于 OCL 的意见,尤其是我不太同意 ScottD 的意见。
首先,即使为在 GPU 上运行而开发的 OCL 内核也可以在 CPU 上运行,但这并不意味着它会高效。原因很简单,OCL 在 CPU 和 GPU 上的工作方式不同。要更好地理解它的不同之处,请参阅“使用 opencl 进行异构计算”的第 6 章</a>。
总而言之,虽然 GPU 将同时在给定工作组内启动一堆线程,但 CPU 将在同一个工作组内一个接一个地在核心线程上执行。参见第 3.4 点
OCL 支持的两种不同类型的编程模型的标准。这可以解释为什么 OCL 内核在 CPU 上的效率可能低于“经典”代码:因为它是为 GPU 设计的。
开发人员将针对 CPU 还是 GPU 不是“认真工作”的问题,而只是取决于最适合您需要的编程模型的类型。此外,OCL 也支持 CPU 的事实很好,因为它可以在没有配备适当 GPU 的计算机上优雅地降级(尽管很难找到这样的计算机)。

关于 AMD 平台,我注意到带有 ATI 的笔记本电脑上的 CPU 也存在一些问题。我观察到我的一些代码性能低下并且也崩溃了。但原因是处理器是英特尔的。AMD 平台将声明有可用的 CPU 设备,即使它是 Intel CPU。但是,它将无法像应有的那样有效地使用它。当我针对 CPU 运行完全相同的代码但在安装(和使用)英特尔平台之后,所有问题都消失了。这是性能不佳的另一个可能原因。

关于 iGPU,它不共享 PCIe 线路,它位于 CPU 芯片上(至少是 Intel 的),是的,您需要驱动程序才能使用它。我假设您尝试安装驱动程序并收到一条消息,例如“您的计算机不符合最低要求……”或类似内容。我想这取决于计算机,但就我而言,我的台式机配备了 NVIDIA 和 i7 CPU(它有一个 HD4000 GPU)。为了使用 iGPU,我必须首先在 BIOS 中启用它,这样我才能安装驱动程序。当然,显示器一次只使用两个 GPU 中的一个(取决于 BIOS 设置),但我可以使用 OCL 访问两者。

于 2013-05-02T12:50:41.177 回答