文章 ID: 000073931 内容类型: 故障排除 上次审核日期: 2019 年 10 月 25 日

为什么我的 OpenCL™ 内核在版本 18.1.2 及更早版本中成功编译,但在版本 19.1 及更高版本中失败?

环境

  • 英特尔® Quartus® Prime Pro Edition
  • 面向 OpenCL™ 专业版的英特尔® FPGA SDK
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    说明

    如果您的 OpenCL 内核在版本 18.1.2 及更早版本中成功编译,但在版本 19.1 及更高版本中失败,请查找类似于以下内容的消息。

    #aoc:正在检查内存使用率是否大于 100%...

    #aoc:警告 RAM 利用率为 173%!

    如果显示该消息,编译将失败,因为 M20K 利用率超过 100%。

    在以前版本的 英特尔® FPGA SDK for OpenCL™ 中,如果编译器估计 M20K 利用率超过 100%,则编译器会自动禁用所有内存系统的本地内存复制。从 19.1 版开始,编译器不再自动禁用本地内存复制。

    解决方法

    使用内存属性来控制片上内存复制,如此处的示例所示。

    int __attribute__((memory, numbanks(1), singlepump, max_replicates(3))) lmem[1028];

    有关更多信息,请参阅《面向 OpenCL 的英特尔 FPGA软件开发套件专业版:最佳实践指南》的以下章节。

    通过控制内存复制因子来优化对本地内存的访问

    相关产品

    本文适用于 1 产品

    英特尔® 可编程设备

    本页面上的内容是原始英文内容的人工翻译与计算机翻译的组合。我们提供此内容是为了您的便利并且仅供参考,未必完整或准确。如果本页面的英文版与翻译版之间存在任何冲突,应以英文版为准。 查看此页面的英语版本。