申请/专利权人:北京君正集成电路股份有限公司
申请日:2022-07-25
公开(公告)日:2024-02-02
公开(公告)号:CN117492699A
主分类号:G06F7/556
分类号:G06F7/556;G06F9/38
优先权:
专利状态码:在审-实质审查的生效
法律状态:2024.02.23#实质审查的生效;2024.02.02#公开
摘要:本发明提供一种基于SIMD指令集的exp指数函数的实现方法,包括S1:加载数据;S2:将输入数据的范围限制在‑88.7~88.7之间;S3,先将x拆分成两部分相加,即x=x_bas+x_rem公式4,再将ex拆分成两部分相乘,即ex=exp_bas*exp_rem公式8,其中exp_bas=2x_int公式6,exp_rem=ex_rem公式7,先求ex的第一部分exp_bas;S4求ex的第二部分exp_rem:利用泰勒展开式求公式7,以e为底指数函数的泰勒公式是公式9,ex_rem展开为公式10;S5:求得的exp_bas与exp_rem相乘,求公式8的结果;S6:将计算结果从寄存器中保存到内存中。
主权项:1.一种基于SIMD指令集的exp指数函数的实现方法,其特征在于,所述方法包括S1:加载数据,是以32bit的整数倍加载,一个寄存器最多能够加载512bit数据;单精度浮点数float为32bit,一个寄存器能够加载16个单精度浮点数,所以一条SIMD指令能够同时对16个单精度浮点数进行计算;S2:将输入数据的范围限制在-88.7~88.7之间;S3:为了加快exp函数的运算速度,将ex拆分成两部分相乘,其中x为步骤S2中经过范围限制后的输入数据,因此需要先将x拆分成两部分相加,公式如下:x_int=intxln2公式1x_bas=x_int*ln2公式2x_rem=x-x_bas公式3公式1中,intxln2是将x除以ln2的结果转化为int类型即保留结果整数部分舍去小数部分,x_int表示x除以ln2的商;公式2中x_bas表示商x_int乘以除数ln2的结果;公式3中x_rem表示x除以ln2的余数;由被除数=商*除数+余数可得:x=x_bas+x_rem公式4由公式4x拆分成两部分相加后,ex拆分成两部分相乘,步骤如下: 令令ex=exp_bas*exp_rem公式81利用SIMD指令求公式1;2利用SIMD指令求公式6的exp_bas;S4:求ex的第二部分exp_rem:1利用SIMD指令求公式3;2利用泰勒展开式求公式7,以e为底指数函数的泰勒公式是 ex_rem展开为 公式10;S5:利用SIMD指令将上述步骤求得的exp_bas与exp_rem相乘,求公式8的结果;S6:将计算结果从寄存器中保存到内存中。
全文数据:
权利要求:
百度查询: 北京君正集成电路股份有限公司 一种基于SIMD指令集的exp指数函数的实现方法
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。