在FPGA上优化实现复数浮点计算.doc

在FPGA上优化实现复数浮点计算.doc

ID:27869368

大小:133.50 KB

页数:5页

时间:2018-12-06

在FPGA上优化实现复数浮点计算.doc_第1页
在FPGA上优化实现复数浮点计算.doc_第2页
在FPGA上优化实现复数浮点计算.doc_第3页
在FPGA上优化实现复数浮点计算.doc_第4页
在FPGA上优化实现复数浮点计算.doc_第5页
资源描述:

《在FPGA上优化实现复数浮点计算.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、在FPGA上优化实现复数浮点计算  性能浮点处理一直与高性能CPU相关联。在过去几年中,GPU也成为功能强大的浮点处理平台,超越了图形,称为GP-GPU(通用图形处理单元)。新创新是在苛刻的应用中实现基于FPGA的浮点处理。本文的重点是FPGA及其浮点性能和设计流程,以及OpenCL的使用,这是高性能浮点计算前沿的编程语言。  各种处理平台的GFLOP指标在不断提高,现在,TFLOP/s这一术语已经使用的非常广泛了。但是,在某些平台上,峰值GFLOP/s,即,TFLOP/s表示的器件性能信息有限。它只表示了每秒能够完成的理论浮点加法或者乘法总数

2、。分析表明,FPGA单精度浮点处理能够超过1TFLOP/s。  一种不太复杂的常用算法是FFT。使用单精度浮点实现了4096点FFT。它能够在每个时钟周期输入输出四个复数采样。每一个FFT内核运行速度超过80GFLOP/s,大容量FPGA的资源支持实现7个这类的内核。  但是,如图1所示,这一FPGA的FFT算法GFLOP/s接近400GFLOP/s。这是“按键式”OpenCL编译结果,不需要FPGA专业知识。使用逻辑锁定和DSE进行优化,7内核设计接近单内核设计的Fmax,将其GFLOP/s提升至500,超过了10GFLOP/s每瓦。  这一

3、每瓦GFLOP/s要比CPU或者GPU功效高很多。对比一下GPU,GPU在这些FFT长度上效率并不高,因此,没有进行基准测试。当FFT长度达到几十万个点时,GPU效率才比较高,能够为CPU提供有效的加速功能。    图1:AlteraStraTIxV5SGSD8FPGA浮点FFT性能。  总之,实际的GFLOP/s一般只达到峰值或者理论GFLOP/s的一小部分。出于这一原因,更好的方法是采用算法来对比性能,这种算法能够合理的表示典型应用的特性。算法越复杂,典型实际应用的基准测试就越具有代表性。  并不是依靠供应商的峰值GFLOP/s指标来确定处

4、理技术,而是使用比较复杂具有代表性的第三方评估。高性能计算理想的算法是Cholesky分解。  这一算法经常用于线性代数,高效的解出多个方程,可以实现矩阵求逆功能。这一算法非常复杂,要获得合理的结果总是要求浮点数值表示。计算需求与N3成正比,N是矩阵维度,因此,一般对处理要求很高。实际GFLOP/s取决于矩阵大小以及所要求的矩阵处理吞吐量。  表1显示了基于NvidiaGPU指标1.35TFLOP/s的基准测试结果,使用了各种库,以及XilinxVirtex6XC6VSX475T,其密度达到475KLC,这种FPGA针对DSP处理进行了优化。用

5、于Cholesky基准测试时,这些器件在密度上与AlteraFPGA相似。    表1:田纳西州大学的GPU和XilinxFPGACholesky基准测试。  LAPACK和MAGMA是商用库,而GPUGFLOP/s是指采用田纳西州大学开发的OpenCL实现的。对于小规模矩阵,后者更优化一些。  中等规模的AlteraStraTIxVFPGA(460kLE)也进行了基准测试,使用了单精度浮点Cholesky算法。如表2所示,在StraTIxVFPGA上进行Cholesky算法的性能要比Xilinx结果高很多。    表2:BDTI的Altera

6、FPGACholesky和QR基准测试。  应指出,矩阵大小并不相同。田纳西州大学结果是从[512×512]矩阵大小开始的。BDTI基准测试达到了[360×360]矩阵大小。原因是,矩阵规模较小时,GPU效率非常低,因此,在这些应用中,不应该使用它们来加速CPU。在规模较小的矩阵时,FPGA的工作效率非常高。  其次,BDTI基准测试是基于每个Cholesky内核的。每个可参数赋值的Cholesky内核支持选择矩阵大小,矢量大小和通道数量。矢量大小大致决定了FPGA资源。较大的[360×360]矩阵使用了较长的矢量,支持这一FPGA中实现一个内

7、核,达到91GFLOP/s。较小的[60×60]矩阵使用的资源更少,因此,可以实现两个内核,总共是2×39=78GFLOP/s。最小的[30×30]矩阵支持实现三个内核,总共是3×26=78GFLOP/s。  FPGA看起来更适合解决数据规模较小的问题。原因之一是因为计算负载随N3而增大,数据I/O随N2增大,最终,随着数据的增加,GPU的I/O瓶颈不再是问题。另一项考虑是吞吐量。随着矩阵规模的增大,由于每个矩阵的处理量增大,矩阵每秒吞吐量会大幅度下降。在某些点,吞吐量变得非常低,以至于无法满足很多应用的要求。在很多情况下,会分解大规模矩阵,处

8、理每个小的子矩阵,以解决由于庞大的处理负载造成的吞吐量限制问题。  对于FFT,计算负载增加Nlog2N,而数据I/O随N增大而增大。对于规模较大的数

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。