2017-08-09 79 views
0

我是OpenCL的新手,在FPGA上使用OpenCL进行分组密码加密。我读了一些论文,知道Opencl中有两种内核(单个工作项和NDRange)。 NDRange内核的功能不会由编译器自动流水线化,而单个工作项内核的功能将会自动流水线化。OpenCL单一工作项VS FPGA NDRange内核

建议在FPGA上实现单个工作项内核而不是NDRange内核 ?为什么?如果我想让内核在循环中运行直到读取所有数据,那么内核(一次从主机获取一些数据 - 在FPGA上运行 - 写回)。管道如何实现?

+1

我建议检查FPGA供应商的指导。他们最了解他们的编译器。我在他们的网站上也看到了一些很好的视频。所以你不仅可以学习这个问题的答案,你可能在这个过程中学到更多。 – Dithermaster

回答

1

单个工作项内核允许您将计算循环移动到内核中,并且您可以生成自定义管道,对累计进行明智的优化,并通过“编译指示”控制访问模式。 NDRange内核依赖于您在工作项目之间对数据进行分区,编译器会生成SIMD类型的硬件,每个单元由您的内核描述。如果您的问题具有常规的数据并行性,使分区变得简单,那就太好了。 OpenCL的NDRange内核专为GPU等SIMD计算单元而设计。您还可以利用“通道”在流应用程序中的单个工作项内核之间移动数据,从而减少DRAM带宽。对于NDRange内核,您将不得不使用全局内存作为内核之间数据共享的媒介。