【问题标题】:Fixed Point Library OpenCL FPGA [closed]定点库 OpenCL FPGA [关闭]
【发布时间】:2017-09-15 16:44:22
【问题描述】:

我正在尝试加快我的算法在 FPGA 上的执行速度。我正在尝试在 C 代码中寻找长度为 32:32 (64) 的固定数学库,这些库很容易转换为 OpenCL。有没有人知道好的图书馆?我试图避免使用 128 位数据类型,因为它们是 OpenCL 上的浮点数,我想如果我必须再次使用浮点数,它不会加速我的算法。任何建议表示赞赏。如果有创建自己的库的指南,我可以接受,只要它解释得足够简单,哈哈。

谢谢

【问题讨论】:

  • 我想你会发现定点库比只在设备上使用浮点硬件要慢。如今,浮点已经得到了很好的优化,而整数单元在 GPU 上的性能并不那么强大,因为大多数图形算法都使用浮点。
  • 是的,但在 FPGA 上这不是真的,因为它们在浮点计算数量方面无法击败 GPU。所以我正在考虑测试定点,看看它比浮点快多少。跨度>
  • 好点。我对 FPGA OpenCL 的实现并不熟悉,只在 CPU 或 GPU 方面发言。

标签: opencl fixed-point


【解决方案1】:

我发现 GPU 仅适用于浮点数。我会给你一些CUDA C++11/C++14的小技巧:

-使用归一化浮点范围 [-1.0,+1.0] 以获得最大精度并单独存储归一化值(累积双精度),

-如果数据无论如何都是高范围的(大数字除以有损归一化结束)归一化为中值减法(单独存储为 uint64_t)= 大数字将以较小的精度存储。可以使用修剪后的平均 f.e. 5% 而不是中位数,

-定期排序和规范化,

-2017 年使用新的 GTX1080ti (GFLOPS/USD; GFLOPS/W) 或使用 GTX 770,

-如果高端 FPGA 用作 ADC 之后或(对低功耗的高要求)嵌入式系统(通常是网络交换机、媒体处理 f.e. 视频、实时 FFT 设备等)中的预处理单元,则它们非常棒。此外,即使是这些超低功耗计算设备的最大型号,也很少以 1500 美元的价格超过数百 GFLOPS。它相当于 Palit 全新的、现成的和大多数问题已解决的 NVidia-forum GT730 4GB GDDR5,价格为 35 美元,

-获得几十美元的书“CUDA by examples”等。 J. Sanders,免费 YT 课程“Udacity 并行编程简介”和好书“专业 CUDA 编程”等。 J. Cheng 将在三个全职月内成为 CUDA C++11 中级程序员,

-自己研究用于较旧的顺序 CPU 的定点算术,以得出一些结论,即只有有限的 cos、squre root 和其他基础库。更复杂的功能是有问题的,并且没有大的社区支持来解决错误。最后,您会发现 FPU 没有任何加速,或者对于如此大的努力(从头开始编写所有内容)小于数量级,

-从一些没有受过良好教育的青少年那里以 50 美元的价格购买(最低微架构 Keppler)GPU(自流行的 GTX670 以来),

-安装 Ubuntu,获取 GNU Octave 并请引用-GNU Parallel 来解决大多数非 GPU 问题,

-使用 FPGA 开发用于大规模生产的高端 ASIC。

Post Scriptum:来自 YouTube 的用户 #WhatsACreel 可以为您编写一些定点函数 - 给他写一封电子邮件,提供一些诚实的报价。在他的频道上,他解释了定点算术的基础。

【讨论】:

  • 说实话,我很欣赏你的回答,是的,我在 GPU 上使用 CUDA 获得了更好的性能,但我需要用 FPGA 进行试验,看看我能实现什么。你怎么知道定点不是真的那么快?
【解决方案2】:

尽管人们普遍对 FPGA 与 GPU 存在误解,但 FPGA 已显示出令人印象深刻的结果。更多关于 FP16 和 INT8 的信息可以在这里找到:https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/wp/wp-01269-accelerating-deep-learning-with-opencl-and-intel-stratix-10-fpgas.pdf 尽管 OpenCL 不是基于库的 FPGA 方法,但 Altera/Intel 和 XILINX 提供了大量具有不同数据类型的示例。 https://www.altera.com/products/design-software/embedded-software-developers/opencl/developer-zone.htmlhttps://github.com/Xilinx/SDAccel_Examples 比数据宽度和类型更重要的是算法恕我直言的数据移动和数据重用方面。 V100 与 P100 相比如何提高性能 - 通过巧妙的调度、在硬件辅助下进行零复制、避免 DRAM 流量以及在 GPU 的硬件中进行张量转换。 https://devblogs.nvidia.com/tensor-core-ai-performance-milestones/ FPGA 也不例外。要获得苹果对苹果的性能基准,必须学习这些技巧并在 FPGA 上以 OpenCL 或 C (HLS) 代码实现它们。

【讨论】:

    猜你喜欢
    • 2012-09-02
    • 2017-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多