【问题标题】:Coprocessor accelerators compared to GPUs与 GPU 相比的协处理器加速器
【发布时间】:2015-04-04 10:50:44
【问题描述】:

Intel Xeon-Phi 这样的协处理器是否应该像 GPU 一样被使用,所以应该卸载大量执行 单个内核 的块,以便只有协处理器处理的整体吞吐量会提高速度,卸载独立线程(任务)也会提高效率?

【问题讨论】:

  • 通常,两者都需要相当程度的并行性。对于任何更有意义的问题,您的问题都非常广泛。
  • 建议这些使用模式互斥是不正确的。英特尔至强融核同时支持它们。如需更详细的答案,请提出更准确的问题。

标签: gpu intel gpgpu hardware-acceleration xeon-phi


【解决方案1】:

Xeon Phi 需要高度的功能并行性(不同线程)和矢量并行性 (SIMD)。由于内核本质上是增强型奔腾处理器,串行代码运行缓慢。这将随着下一代而有所改变,因为它将使用更快、更现代的内核。当前的 Xeon Phi 也像任何协处理器一样存在 I/O 瓶颈,必须通过 PCIe 总线进行通信。

因此,尽管您可以将内核卸载到每个处理器并利用 512 位矢量化(类似于 GPGPU),但您也可以将代码分成许多不同的功能块(即不同的代码/内核)并在不同的一组英特尔至强融核内核。同样,不同的代码块也必须利用 512 位 SIMD 向量。

Xeon Phi 也作为本机处理器运行,因此您可以通过挂载 NFS 目录树、使用 TCP/IP 在集群中的卡和其他处理器之间进行通信、使用 MPI 等来访问其他资源。请注意,这不是 '卸载'但本机执行。但 PCIe 总线仍然是限制 I/O 的重要瓶颈。

总结一下,

  • 您可以使用类似于 GPGPU 使用的卸载模型,
  • Xeon Phi 本身也可以支持功能并行(多个内核),但每个内核还必须利用 512 位 SIMD。
  • 您还可以编写本机代码并使用 MPI,将 Xeon Phi 视为传统(非卸载)节点(始终记住 PCIe I/O 瓶颈)

【讨论】:

  • 谢谢。我最感兴趣的是使用 OpenMP/OpenACC 卸载任务。您是否知道 threadblocks 是如何分配给内核的?这些块是否在某种程度上类似于 CUDA 编程模型(随机)?或者总是只有一个线程块,它将线程分布在所有可用的内核上?
  • 借助 OpenMP,英特尔提供环境变量,允许您指定希望分配线程的位置和方式。 KMP_PLACE_THREADS 允许您指定要使用的内核数以及每个内核要使用的线程数。 KMP_AFFINITY 允许您指定希望如何分配线程。紧凑的亲和性将按顺序分配线程。分散关联将尝试以循环方式将线程放置在核心上。顺便说一句,这些变量也适用于其他英特尔处理器。
  • @froth 我在哪里可以找到更多相关信息? (即那些环境变量以及英特尔至强融核的编程模型?)
  • @MarcAndreson 你可以去software.intel.com/en-us/xeonphi。编程选项卡下有关于编程的文章、博客和人们提出类似问题的论坛。然后是编译器和工具参考手册和用户指南,您可以在页面顶部的工具->文档下找到。免责声明 - 正如 URL 所暗示的那样,该站​​点归英特尔所有,您在那里找到的答案将集中在英特尔产品上。还有几本书(死树和电子书)来自通常的在线书商。
猜你喜欢
  • 2016-05-14
  • 2021-09-15
  • 1970-01-01
  • 2016-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-02
相关资源
最近更新 更多