该基准测试演示了在英特尔® FPGA 上的 1D 快速傅立叶变换 (1D FFT) 的 OpenCL™ 实施。该基准测试可以处理多达 1600 万个复杂的单精度浮点值,并支持动态变化的数据大小。
用于处理如此大数据集的算法有六个阶段。例如,假设我们要处理 100 万个点:
- 将 1M 点视为 1K x 1K 矩阵,从外部存储器中读取并即时转置。
- 在所有行(转置矩阵)上运行 1K 1D FFT。
- 将得出的数值乘以调整旋转因子。
- 转置矩阵并写入外部存储器中的临时缓冲区。
- 在所有行上运行 1K 1D FFT。
- 转置矩阵并将输出写入外部存储器。
整个系统由通过通道连接的三个内核组成。主机将三个内核的集合排入队列两次以进行完整计算。第一个入队执行上面的步骤 1-4,第二个入队执行步骤 5-6。这本质上是一个带有额外转置和旋转乘法的 2D FFT 核心。
代码很容易参数化,以支持不同的 FFT 大小以及不同的性能要求。
FFT 性能
内核的性能取决于并行处理的点数、使用的数据布局以及外部存储器的数量和速度。下面的测量是在带有两个 DDR3-1600 的 BittWare S5-PCIe-HQ D8 上完成。对 8 个并行点的 1M 点 FFT 和 4 个并行点的 4M FFT 进行了测量。
MSPS 是“每秒数百万个样本”。
特性
- 一个工作项目内核
- 内核通道
- 优化矩阵转置
下载
该设计示例提供 OpenCL 设备 (.cl) 和主机应用程序的源代码。为了编译主机应用程序,Linux* 包包含一个 Makefile,Windows 包包含一个 Microsoft Visual Studio 2010 项目。
本示例提供以下下载:
该设计的使用受硬件参考设计许可协议中条款和条件的管理和约束。
软件和硬件要求
此设计示例需要以下工具:
- 英特尔® FPGA 软件 17.1 或更高版本
- 英特尔® FPGA SDK for OpenCL 17.1 或更高版本
- Linux:GNU Make 和 gcc
- Windows:Microsoft Visual Studio 2010
要下载英特尔设计工具,请访问 OpenCL 下载页面。本设计实例仅支持 Linux 操作系统
OpenCL 和 OpenCL 标识是苹果公司的商标,需获得 Khronos 的许可方能使用。
*产品基于已发布的 Khronos 规范,并已通过 Khronos 一致性测试流程。最新的一致性状态信息可以在 www.khronos.org/conformance 上找到。