我有一个关于英特尔 FPGA 中多个 CU 上的工作组调度的问题。当工作组被分配给可用的 CU 时,CU 什么时候被认为是可用的?是在前一个工作组的最后一个工作项已经放弃管道时还是在它处于第二阶段时(因此管道的每个阶段都被前一个工作组占用,除了第一个)?这个决定是由硬件调度程序做出的,但我还没有找到任何解释这些的公共文档。
编辑:我说的是使用面向 FPGA 的英特尔 OpenCL SDK 时发生的自动过程,而不是使用 HDL 的自定义设计。
除了工作项,工作组也在每个 CU 中流水线化。因此,您可以同时在同一个 CU 中运行多个工作组,以最大限度地提高管道效率。如果您的设计使用基于本地内存的缓冲区,当您检查 HTML 报告时,您将看到编译器正在进一步复制这些缓冲区以支持特定数量的“同时工作组”。此类工作组的数量似乎等于每个 CU 的管道深度除以工作组大小。最后,在同一 CU 中同时运行的所有工作组中的所有工作项都被一个接一个地流水线化,属于每个 CU 的工作项使用它们自己的本地缓冲区,并且每个工作组强制执行屏障同步。将在每个 CU 中安排一个新的工作组,
PS 在他们自己的论坛中获得与面向 OpenCL 的英特尔 FPGA SDK 相关的帮助可能更容易。
PPS 英特尔的 OpenCL 工作项调度程序的详细信息没有记录在任何地方。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句