3

我真的不确定这是否是正确的地方。我对不同类型硬件的不同编程模型感兴趣。

开始是这样的,我展示了我正在使用 NVIDIA CUDA 做的一些工作。我告诉人们,使用 GPU 作为协处理器的主要问题之一是您必须在主机和 GPU 之间传输数据。然后有几个人继续向我询问有关 AMD“APU”的问题,以及图形核心与普通 CPU 核心在同一个芯片上的事实。

我通过指出 Intel/AMD CPU+GPU 芯片永远不会包含与专用 NVIDIA 卡一样多的图形内核来回避这些问题。

问题是,我真的不知道 AMD APU 或 Intel Sandy/Ivy Bridge 芯片的编程模型是什么。

我的问题是:

  1. 如何编写程序以利用 AMD/Intel 芯片上的图形内核?
  2. 这些图形核心真的可以直接访问主机内存吗?
  3. 有没有关于这些芯片在 SP 和 DP FLOPS 中的性能类型的任何信息?
  4. 来自 CUDA,在 NVIDIA GPU 和其他相关芯片的编程之间可以找到哪些相似之处?
  5. Cell 处理器的 SPE 是如何访问内存的,或者它的编程模型与今天的这些 Intel/AMD 芯片相比如何?
4

3 回答 3

2

如何编写程序以利用 AMD/Intel 芯片上的图形内核?

OpenCL,但我不认为英特尔已经完成了使用图形核心的工作。

这些图形核心真的可以直接访问主机内存吗?

是的,但有几点需要注意。

  1. 虽然到主机内存的带宽优于 PCI-e,但它并不像 GPU 对图形内存的带宽那样多(3-4 倍的差异)。
  2. 在某些情况下,OpenCL 可能需要它自己的数据副本。对于 GPU,这必须发生(主机内存 -> 图形内存),对于 APU,您要尝试确保它不会发生。据我了解,这很大程度上取决于您如何分配缓冲区。

基本上你已经改变了妥协的条款。过去,启动成本(将数据复制到图形内存)非常重要,以至于工作项目需要足够大,才能在向 GPU 发送一些东西时值得。该成本现在已经下降(没有副本),但内核的性能较低(它们更少,内存带宽更低)。

这是一个有趣的发展,它可能使 GPGPU 技术在更多情况下值得,但没有如此巨大的收益。不过,收益仍然很大。

有没有关于这些芯片在 SP 和 DP FLOPS 中的性能类型的任何信息?

我不愿重复营销数字,但 AMD A8-3850 的标题数字为480 GFLOPS

来自 CUDA,在 NVIDIA GPU 和其他相关芯片的编程之间可以找到哪些相似之处?

我没用过 CUDA,所以其他人可能想回答,但我的理解是 CUDA 和 OpenCL 有很多相同的概念(内存模型、内核等),但 CUDA 确实为聚会带来了一些 OpenCL 的东西没有(C++ 主义)

然后 Nvidia 和 AMD 之间存在架构差异,主要是 Nvidia 的内核是缩放器,而 AMD 是矢量,因此要在 AMD 上获得最佳性能,您需要编写矢量代码。

于 2011-11-25T11:53:42.537 回答
1

I only have experience with CUDA and the answer is based on that experience and some things I just did a quick search (I wanted to know some answers too).

  1. I think they are written the same way. You can use OpenCL in them all and even though there are differences in the hardware implementation they follow the same principles.

  2. I don't know how it is for AMD and Intel but I would say yes. You can do it with CUDA. Using mapped page-locked host memory you can access memory on the host directly from a kernel. NVIDIA even recommends using memory this way if you have an integrated NVIDIA system (section 5.3.1 of the CUDA C programming guide).

  3. Yes. For Intel check Intel HD Graphics DirectX Developer's Guide (Sandy Bridge) on page 11 (125GFlops max for Intel HD3000). For AMD they put some value on the specifications page of each card, example AMD Radeon HD6990. You probably can find a comparison somewhere.

  4. As I said I think the programming models are similar, OpenCL also has the notion of a kernel, host and device memory and identifiers for threads and working groups (just some examples). To maximize performance you need to know something about the specific architectures but you can work with all using similar approaches.

  5. No idea...

于 2011-11-25T10:57:06.537 回答
-1

我在 OpenCL 中使用 Bigdata 完成了工作。

如何编写程序以利用 AMD/Intel 芯片上的图形内核?

OpenCL 是一种适用于异构环境的低级编程模型。它旨在使用系统中的所有计算资源,例如;CPU、GPU、APU、FPGA 等。OpenCL 代码程序也称为内核,在 GPU 和 CPU 内核上运行。

尽管英特尔主要以其处理器而不是 GPU 而闻名,但他们现在也提供 GPU 很长一段时间了,比如英特尔 GMA 和后来的英特尔高清显卡。

于 2016-12-27T11:35:16.060 回答