OpenCL™ 快速傅立叶变换 FFT (1D) 片外

建议用于:

  • 设备:不详

  • Quartus®:v17.1

author-image

作者

该基准测试演示了在英特尔® 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 上找到。