我一直在研究Altera OpenCL一段时间,以通过将计算部分移至FPGA来改进繁重的计算程序。我设法执行了Altera提供的向量加法示例,并且工作正常。我查看了Altera OpenCL的文档,并了解到OpenCL使用管道并行处理来提高性能。

我想知道是否有可能实现类似于FPGA中使用Altera OpenCL并行执行的VHDL中多个进程的并行执行。就像在一台可以并行执行的设备中启动多个内核一样?可能吗?如何检查它是否受支持?任何帮助,将不胜感激。

谢谢!

最佳答案

快速答案是肯定的。

根据Altera OpenCL指南,通常有两种方法可以实现此目的:

1 / SIMD用于矢量化数据加载/存储

2 /复制设备上的计算资源

对于1 /,使用num_simd_work_items和reqd_work_group_size内核属性,同一工作组中的多个工作项将同时运行

对于2 /,请使用num_compute_units内核属性,多个工作组将同时运行

请先开发单个工作项内核,然后使用1 /提高内核性能,最后通常考虑2 /。

通过执行1 /和2 /,将有多个工作组,每个工作组在FPGA器件上同时运行多个工作项。

注意:根据您要解决的问题的性质,上述优化可能并不总是适用。

10-08 11:30