多线程向量运算设计示例

建议用于:

  • 设备:不详

  • Quartus®:v16.1

author-image

作者

此示例设计在两个单独的线程中运行一个类的两个实例。每个实例使用不同的内核:第一个实例执行向量加法内核来执行: C = A + B 其中 A、B 和 C 是 N 元素向量。第二个实例执行成员向量乘法内核以执行:C = A * B(成员)。内核有意保持简单而不优化。

由于无法将设备编程为同时使用两个单独的程序,因此两个问题实例共享相同的 OpenCL™ 程序(因此在相同的上下文中运行)。但是,正如本示例中的情况,两个线程可以具有单独的命令队列。为简单起见,两个线程运行在相同代码的两个实例上,参数不同,但它们通常可以运行两个不同的类。

除了演示基本的 OpenCL 应用程序编程接口 (API),此示例还支持在多个 OpenCL 设备之间划分问题(如果可用)。如果有 M 个可用设备,则将问题划分为每个设备在 N/M 个点上运行。主机程序假定所有设备都属于同一类型(即可以使用相同的二进制文件,但可以将代码泛化为轻松支持不同的设备类型)。

下载

该设计示例提供 OpenCL 设备 (.cl) 和主机应用程序的源代码。为了编译主机应用程序,Linux* 包包含一个 Makefile,Windows* 包包含一个 Microsoft* Visual Studio 2010 项目。

本示例提供以下下载:

该设计的使用受硬件参考设计许可协议中条款和条件的管理和约束。

软件和硬件要求

此设计示例需要以下工具:

  • 英特尔® FPGA 软件 v17.1 或更高版本
  • 英特尔 FPGA SDK for OpenCL™ v17.1 或更高版本
  • Linux:GNU Make 和 gcc
  • Windows:Microsoft Visual Studio 2010

要下载英特尔® 设计工具,请访问 OpenCL 下载页面。对底层操作系统的要求与英特尔 FPGA SDK for OpenCL 的要求相同。

OpenCL 和 OpenCL 标识是苹果公司的商标,需获得 Khronos 的许可方能使用。

*产品基于已发布的 Khronos 规范,并已通过 Khronos 一致性测试流程。最新的一致性状态信息可以在 www.khronos.org/conformance 上找到。