【发布时间】:2018-05-14 00:52:43
【问题描述】:
我是 FPGA 世界的新手。我尝试编译一些 OpenCl 程序,但我注意到编译“Hello_World”程序需要很长时间(几个小时)。所以我想知道为什么在 FPGA 上编译 OpenCL 内核需要很长时间(几个小时)?另外,当我们在其上编译/执行 OpenCl 时,FPGA 是否被重新编程?
【问题讨论】:
我是 FPGA 世界的新手。我尝试编译一些 OpenCl 程序,但我注意到编译“Hello_World”程序需要很长时间(几个小时)。所以我想知道为什么在 FPGA 上编译 OpenCL 内核需要很长时间(几个小时)?另外,当我们在其上编译/执行 OpenCl 时,FPGA 是否被重新编程?
【问题讨论】:
将顺序代码转换为硬件很困难,在某些情况下,编译器会尝试多个版本的事物以找到最佳的硬件组合。这不像为 CPU 和 GPU 编译,所以工作流程是完全不同的(你在构建时编译内核而不是运行时)。最终结果通常是比 CPU 和 GPU 等更通用的计算设备更快和/或使用更少能量的硬件。有一些出色的“Altera 上的 OpenCL”视频解释了编译是如何工作的,但总结是:编译到抽象机,对于每个指令/步骤,删除该步骤不需要的抽象机硬件,然后合并所有剩余的硬件进入芯片上编程的内容。数据通过硬件“流动”,而不是像在 CPU/GPU 上那样存在于内存和寄存器中。
【讨论】: