我一直在研究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器件上同时运行多个工作项。
注意:根据您要解决的问题的性质,上述优化可能并不总是适用。