FPGA-半精度浮点数(float_16)及其VHLS求逆实现方法

本文介绍了半精度浮点数float16的基本概念及其在16*16矩阵求逆算法中的应用。详细解释了float16的数据格式与计算方式,并提供了float16库的使用方法及在vhls中采用svd分解求逆的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、最近朋友要我开发一个16*16矩阵求逆的算法,这个算法我早已实现,寻思没啥大问题,就开始做了,做一半发现入坑了,因为我也是第一次知道,半精度浮点数属于一个新的数据类型。float16是英伟达做并行计算为减少存储空间而定义的新的数据格式,只占用16位,相当于2个字节的内存,在IEEE 754-2008中,它被称作binary16。

2、关于float16的计算

直接上链接,下面这篇文章对float32与float16做了详细的分析,然而对于我们码农来说,没用

彻底搞懂float16与float32的计算方式_leo0308的博客-优快云博客_float16精度1 float 16与float 321.1 float161.1.1 计算方式float 16又称半精度, 用16个比特也就是2个字节表示一个数。如下图所示, 其中1位符号位, 5位指数位, 10位小数位。那么, 这16个比特位是怎么表示1个数的呢 ? 分3部分:符号位 , 指数部分, 小数部分。a 符号位: 1代表负数, 0代表正数。b 指数部分,5个比特位, 全0和全1有特殊用途,所以是00001~11110, 也就是1到30, 减去偏置15,指数部分最终范围为-14 ~15.c 小https://blog.youkuaiyun.com/leo0308/article/details/117398166?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166175948316782414992910%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=166175948316782414992910&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-1-117398166-null-null.142^v42^pc_rank_34,185^v2^tag_show&utm_term=float16&spm=1018.2226.3001.4187

3、关于float16的使用办法

第2节是float16的计算方法,对我们来说基本可以不看。本节给出float16的下载链接,调库才是我们程序员应该做的事情。需要注意的是,这个c++库函数只能在VS2017版本以上调用。

刚开始看文档说c++ 11.0版本就行,我电脑c++版本都16了,寻思没啥问题,干了一下午都不行,于是换成了vs2017完美解决。

half: Half-precision floating-point libraryicon-default.png?t=M7J4http://half.sourceforge.net/4、关于使用float16数据格式在vhls中采用svd分解求逆算法:

和以前没啥区别,因为官方的float16库已经很完整了,甚至支持三角函数、开方、指数、与float16/32/64四则运算等高级算法。四则运算直接用键盘上的+、-、*、/即可完成flot16的操作。

唯一的不同是代码结构更加复杂

5、实验部分

本节给出本人基于float16开发的16*16矩阵求逆截图。需要代码的请联系本人邮箱

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发光的沙子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值