定点库OpenCLFPGA

定点库OpenCLFPGA,opencl,fixed-point,Opencl,Fixed Point,我正试图加快我的算法在FPGA上的执行速度。我试图寻找C代码中长度为32:32(64)的固定数学库,这将很容易转换为OpenCL。有人知道一个好的图书馆吗?我试图避免使用128位的数据类型,因为它们在OpenCL上是浮点型的,如果我不得不再次使用浮点型,我想它不会加快我的算法。如有任何建议,我们将不胜感激。如果有一个创建自己的库的指南,我可以接受,只要它解释得足够简单,哈哈 谢谢我发现GPU只适用于浮动。我将为您提供一些CUDA C++11/C++14技巧: -使用标准化浮点范围[-1.0,+1

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


谢谢

我发现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之后的预处理单元或嵌入式系统(通常为网络交换机、媒体处理(如视频)、实时FFT设备等)(对低功耗的高要求)内的预处理单元,则高端FPGA非常有用。此外,即使是这些超低功耗计算设备的最伟大型号,也很少能以1500美元的价格超过数百GFLOPS。它相当于全新的,脱壳的,大部分问题由佩利特以35美元在NVidia论坛GT730 4GB GDDR5上解决

-获得几十美元的书“CUDA by examples”等J.Sanders,免费YT课程“Udacity intro to parallel programming”和好书“professional CUDA programming”等J.Cheng,在三个全职月内成为CUDA C++11中级程序员

-自行研究针对较旧顺序CPU的定点算法,得出这样的结论:cos、平方根和其他基的库有限。更复杂的函数是有问题的,并且没有大的社区支持来解决错误。最终,你会发现FPU上没有任何速度提升,或者比这么大的工作量(从头开始编写所有内容)的数量级还小

-从一些没有受过良好教育的青少年那里花50美元购买(最小微体系结构Keppler)GPU(自流行的GTX670以来)

-安装Ubuntu,获得GNU倍频程,请引用GNU并行程序解决大多数非GPU问题

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


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

尽管人们对FPGA和GPU有着普遍的误解,但FPGA已经显示出非常令人印象深刻的结果。有关FP16和INT8的更多信息,请访问: 尽管OpenCL不是一种基于库的FPGA方法,但Altera/Intel和XILINX提供了大量不同数据类型的示例。 和 算法IMHO的数据移动和数据重用方面比数据宽度和类型更重要。V100如何比P100在性能上得到提升-通过巧妙的调度、使用硬件辅助进行零拷贝、避免DRAM通信量以及在GPU硬件中进行张量传输。
FPGA也不例外。要获得apple-To-apple性能基准,必须学习这些技巧,并在OpenCL或C(HLS)代码中的FPGA上实现它们。

我想你会发现,定点库比在设备上使用浮点硬件要慢。如今,浮点运算已经得到了很好的优化,而整数单位在GPU上也没有那么强大,因为大多数图形算法都使用浮点运算。是的,但在FPGA上这是不正确的,因为它们在浮点运算的数量上无法超过GPU。所以我想测试定点运算,看看它比浮点运算快多少。好点。我不熟悉FPGA OpenCL的实现,只是从CPU或GPU的角度讲。老实说,我很感谢你的回答,是的,我在GPU上使用CUDA可以获得更好的性能,但我需要用FPGA进行实验,看看我能实现什么。你怎么知道定点的速度不是那么快?