开始使用面向 OpenCL™ 应用的英特尔® SDK 2019:核心概念

1.概述


2.简介

面向 OpenCL™ 应用的英特尔® SDK 2019 和英特尔® System Studio 2019 的 OpenCL™ 组件是基于英特尔® 图形技术和英特尔® CPU的主要 OpenCL™ 开发工具。SDK 工具包括 3 个组件层,以支持开发人员堆栈。

Intel® SDK for OpenCL™ Applications 2019 overview

  • 开发人员工具
    • 面向 OpenCL™ 应用的调试设施
    • 面向 OpenCL™ 应用的分析设施
    • 面向 Eclipse* 和 Visual Studio* 的 IDE 插件 - 面向 OpenCL™ API 的英特尔® 代码构建工具
    • 面向 OpenCL™ 的英特尔® SDK - 离线编译器,ioc64/ioc32
      • ioc64/ioc32 是一个用于离线(而不是在运行时)构建 OpenCL™ 内核的命令行实用程序。ioc64/ioc32 支持各种输出类型,包括 SPIR-V(标准可移植中间表示)。系统上的英特尔® 设备可通过 ioc64/ioc32 连接 OpenCL™ 实施。
  • OpenCL™ 标头和 OpenCL™ ICD Loader 库
    • 用于构建与执行 OpenCL™ 程序的标头与链接库
  • 英特尔® Experimental OpenCL™ 2.1 CPU Only 实施
    • 用于在 CPU 上运行内核,无需加速器/协处理器设备。该试验运行时仅用于开发目的。不得用于分发。

 

面向 OpenCL™ 应用的英特尔® SDK 包含任何内核模式组件。


3.基本示例

可使用 SDK 组件构建正常运行的 OpenCL™ 应用(用绿色显示),如下所示:

 

Intel® SDK for OpenCL™ Applications 2019 Simple Build

  • 首先,开发人员编写一个到多个 C 或 C++ 源代码,并添加 OpenCL™ 标头(最左侧,.cpp)。
    • 程序可选择一个 OpenCL™ 平台,如英特尔® Experimental OpenCL™ 2.1 CPU Only 平台。
    • C 或 C++ 程序指示 interrogator 运行时中的 OpenCL™ API 设施创建上下文,并选择一个可用的 OpenCL™ 平台和设备。
  • 接下来,开发人员编写 OpenCL-C 内核源文件(中间,.cl),利用一个选项对内核进行预编译。
  • 开发人员构建与连接 C 并 C++ 对象至 OpenCL™ ICD Loader 运行时库(中间靠右)
  • 在运行时,OpenCL™ API 设施可以即时构建 OpenCL-C 内核,也可以加载用户预编译的内核。OpenCL™ 实施调度 OpenCL™ 目标设备上的内核库执行。
    • 在以上示例中,目标设备为 CPU。由配备英特尔® Experimental OpenCL™ 2.1 CPU Only 运行时的平台编译并执行内核。

编写与执行 OpenCL™ 应用时,还有各个其他注意事项。访问 OpenCL™ 上的 Khronos* 参考注册页面了解更多详情。另请参阅面向 OpenCL™ 应用的英特尔® SDK 2019 版本说明。


4.生产示例

以下 3 个示例介绍了面向不同 OpenCL™ 目标设备的 SDK 设置。对每个层的组件进行了更详细的说明。注:本文未提及英特尔® FPGA 设备。有关英特尔® FPGA 开发人员资源和指南,请访问 fpgasoftware.intel.com 门户。

英特尔® CPU / Windows* 操作系统或 Linux* 操作系统

第一个示例展示了采用面向 OpenCL™ 应用的英特尔® CPU 运行时 16.1.2(一种适合生产部署的 OpenCL™ 实施)的 CPU。注:该场景同样适用于支持的 Windows* 操作系统和 Linux* 操作系统:

Intel® SDK for OpenCL™ Applications 2019 CPU Stack

用户应用 (.c/.cpp) 使用 OpenCL™ ICD Loader 参考库 (libOpenCL.so/OpenCL.dll) 选择 CPU 目标设备,后者由面向 OpenCL™ 应用的英特尔® CPU 运行时 16.1.2 提供。用户应用 (.cpp) 通过 CPU 实施传输内核程序 (.cl)。内核直接在 CPU 上执行。无需使用显卡设备或协处理器设备。


有关面向 OpenCL™ 应用的英特尔® CPU 运行时的更多信息,请访问面向 OpenCL™ 部署的英特尔® 文章。注:现已推出面向 OpenCL™ 应用的英特尔® CPU 运行时 18.1。

面向 Windows* 操作系统的英特尔® 图形技术驱动程序包也包括本示例介绍的面向 OpenCL™ 应用的英特尔® CPU 运行时分发版。Windows* 操作系统可能已默认安装了该程序包。出于兼容性与漏洞修复方面的考虑,:

如欲查看面向 Windows* 操作系统的软件开发简介,请访问 面向 OpenCL™ 应用的英特尔® SDK 2019 Windows* 操作系统入门指南


英特尔® 图形技术 / Windows* 操作系统

第二个示例展示了面向 OpenCL™ 应用的英特尔® SDK 2019,针对搭载 Windows* 操作系统的英特尔® 图形技术。

组件框突出显示为:

  • 紫色 - 申请支持的英特尔® CPU 和支持的英特尔® 图形技术平台。
  • 蓝色 - 申请支持的英特尔® CPU 平台。
  • 红色 - 申请支持的英特尔® 图形技术平台。

Intel® SDK for OpenCL™ Applications 2019 Windows* OS Intel® Graphics Technology

此处,用户应用 (.c/.cpp) 使用 OpenCL™ ICD Loader 参考库 (OpenCL.dll) 选择英特尔® 图形技术设备,后者由面向 OpenCL™ 驱动程序的英特尔® 图形计算运行时提供。用户应用 (.c/.cpp) 通过英特尔® 图形技术实施传输内核程序 (.cl)。在英特尔® 图形技术硬件上执行内核。


该 OpenCL™ 实施作为面向 Windows* 操作系统的英特尔® 图形技术驱动程序包的一部分发布。面向 Windows* 操作系统的英特尔® 图形技术驱动程序包还包括在上一个示例中提到的 CPU 独立分发版。在采用英特尔® 处理器和英特尔® 图形技术的系统上安装的 Windows* 操作系统分发版可能默认安装了该程序包。请考虑从 downloadcenter.intel.com/zh-cn/ 或系统厂商更新该程序包。有关英特尔® 图形技术部署部分的更多信息,请访问 部署页面

如欲查看面向 Windows* 操作系统的软件开发简介,请访问 面向 OpenCL™ 应用的英特尔® SDK 2019 Windows* 操作系统入门指南


英特尔® 图形技术 / Linux* 操作系统

第三个示例展示了针对 Linux* 操作系统上英特尔® 图形技术的 SDK 开发:

Intel® SDK for OpenCL™ Applications 2019 Linux* OS Intel® Graphics Technology

用户应用 (.c/.cpp) 使用 OpenCL™ ICD Loader 参考库 (libOpenCL.so) 选择英特尔® 图形技术设备,后者由面向 OpenCL™ 驱动程序的英特尔® 图形技术运行时提供。用户应用 (.c/.cpp) 通过英特尔® 图形技术实施传输内核程序 (.cl)。在英特尔® 图形技术硬件上执行内核程序。内核不是在 CPU 上执行的。


面向 OpenCL™ 驱动程序的英特尔® 图形计算运行时被称作 “NEO”,它是一个不断维护的开源 OpenCL™ 实施。它被引入英特尔® 图形技术第八代微架构 Broadwell 处理器和第九代平台及更高版本中。面向 OpenCL™ 应用的英特尔® SDK 2019 旨在支持 NEO 实施的开发以及淘汰传统 SRB5.0 实施。有关 NEO 的更多信息,请参阅 面向 OpenCL™ 运行时的英特尔® 部署页面NEO github 页面


5.更多资源和后续步骤

如欲获取能够进行异构分析的工具,可考虑英特尔® VTune™ 放大器:

如欲获取 OpenCL™ 应用监控与调试方面的轻量级开发帮助,请参阅 OpenCL™ 应用开源项目的拦截层。

如欲了解英特尔® 处理器 SKU 的特色英特尔® 图形技术,请访问 ark 数据库

在某些情况下,如果在同一个流程中使用 Experimental OpenCL™ 2.1 CPU Only 运行时和其他 OpenCL™ 实施,可能发生错误。该实施仅用于开发目的。请勿将其用于生产应用。在开发和生产用例中,面向 OpenCL™ 应用的英特尔® CPU 运行时 18.1 是替换试验运行时的理想之选。

 

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

*其他的名称和品牌可能是其他所有者的资产

有关编译器优化的更完整信息,请参阅优化通知