[發明專利]一種基于數學近似的浮點程序精度缺陷修復方法有效
| 申請號: | 201910033498.4 | 申請日: | 2019-01-14 |
| 公開(公告)號: | CN109840067B | 公開(公告)日: | 2021-04-20 |
| 發明(設計)人: | 毛曉光;陳立前;易昕;紀濤;王戟;董威;陳振邦;劉萬偉;劉江潮 | 申請(專利權)人: | 中國人民解放軍國防科技大學 |
| 主分類號: | G06F7/483 | 分類號: | G06F7/483;G06F11/07 |
| 代理公司: | 湖南兆弘專利事務所(普通合伙) 43008 | 代理人: | 周長清 |
| 地址: | 410073 湖南*** | 國省代碼: | 湖南;43 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 數學 似的 浮點 程序 精度 缺陷 修復 方法 | ||
1.一種基于數學近似的浮點程序精度缺陷修復方法,其特征在于,步驟包括:
步驟S1.預處理;
步驟S2.定位精度缺陷:使用線性搜索算法查找包含能觸發精度缺陷的最小輸入區間Ierr;
步驟S3.生成數學近似:使用線性近似加誤差補償的方法來近似浮點程序在最小輸入區間Ierr對應的數學函數執行,并使用迭代精化算法來生成滿足給定精度需求的數學近似列表;
步驟S4.補丁生成和優化:將生成的數學近似列表轉化為浮點程序補丁,然后對補丁執行性能進行優化;
步驟S5.補丁驗證:對最小輸入區間Ierr進行采樣,測試所有采樣輸入對應的修復后的浮點程序的輸出是否滿足精度需求,若滿足則修復結束,若不滿足且分配的計算資源還未耗盡則返回S2重新執行,若計算資源已經耗盡,則返回修復未完成,修復結束。
2.根據權利要求1所述的基于數學近似的浮點程序精度缺陷修復方法,其特征在于,所述步驟S1的步驟包括:
步驟S11.將程序加載至動態重編譯框架中;
步驟S12.識別目標程序中的浮點運算指令并替換為高精度運算指令;
步驟S13.完成所有浮點指令的替換,生成目標程序的高精度執行版本。
3.根據權利要求1所述的基于數學近似的浮點程序精度缺陷修復方法,其特征在于,計算程序輸出誤差的公式是:
其中fp(x)代表目標程序,f(x)代表目標程序對應的數學函數,x表示輸入;
使用目標程序的高精度執行版本計算f(x)的輸出值。
4.根據權利要求1-3中任意一項所述的基于數學近似的浮點程序精度缺陷修復方法,其特征在于,所述步驟S2使用線性搜索算法的具體步驟為:
步驟S21.從能觸發精度缺陷的輸入x做為初始點,并設定初始步長step;
步驟S22.根據步長選取新輸入點,并搜索新輸入點附近的輸入是否能觸發精度缺陷,若可以則調整步長step,并根據步長生成新的輸入點,返回執行S22,若不可以,則進入S23;
步驟S23.對步長減半并對其值取反,根據步長選取新輸入點,若步長小于給定閾值δ,存取新輸入點,執行S25,否則執行S24;
步驟S24.搜索新輸入點附近的輸入是否能觸發精度缺陷,若可以返回執行S23,若不可以對步長減半,根據步長選取新輸入點,返回執行S24;
步驟S25.首次執行此步驟,重新選取x作為初始點,并設定初始步長為-step,返回執行S22,否則執行S26;
步驟S26.使用兩次存下來的新輸入點作為最小輸入區間的邊界產生能觸發精度缺陷的最小輸入區間Ierr。
5.根據權利要求4所述的基于數學近似的浮點程序精度缺陷修復方法,其特征在于,所述步驟S21中計算初始步長的公式是:
step=ulp(x)*j
其中,x是初始輸入點,j是一個正整數,ulp(x)的計算公式如下:
所述步驟S22和S23中根據步長選取新輸入點的具體計算公式是:
x′=x+step
所述步驟S22中調整步長的具體計算公式是:
step=times*step
其中times是[1.5,3.0]之間的一個實數;
所述步驟S23中給定閾值δ大小是:
δ=ulp(x)*100。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國人民解放軍國防科技大學,未經中國人民解放軍國防科技大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201910033498.4/1.html,轉載請聲明來源鉆瓜專利網。





