積和熔加運(yùn)算
積和熔加運(yùn)算
融合乘加運(yùn)算的操作和乘積累加的基本一樣,對(duì)于浮點(diǎn)數(shù)的操作也是一條指令完成。但不同的是,非融合乘加的乘積累加運(yùn)算,處理浮點(diǎn)數(shù)時(shí),會(huì)先完成b×c的乘積,將其結(jié)果數(shù)值修約到N個(gè)比特,然后才將修約后的結(jié)果與寄存器a的數(shù)值相加,再把結(jié)果修約到N個(gè)比特;融合乘加則是先完成a+b×c的操作,獲得最終的完整結(jié)果后方才修約到N個(gè)比特。由于減少了數(shù)值修約次數(shù),這種操作可以提高運(yùn)算結(jié)果的精度,以及提高運(yùn)算效率和速率。
積和融加運(yùn)算可以顯著提升像是這些運(yùn)算的性能和精度:
點(diǎn)積
矩陣乘法
多項(xiàng)式方程求解(像是秦九韶算法等)
牛頓法求解函數(shù)的零點(diǎn)
積和融加運(yùn)算通常被依靠用來(lái)獲取更精確的運(yùn)算結(jié)果。然而,Kahan指出,如果不加思索地使用這種運(yùn)算操作,在某些情況下可能會(huì)帶來(lái)問(wèn)題。像是平方差公式x ? y,它等價(jià)于 ((x×x) ? y×y),若果x與y已知數(shù)值,使用積和融加運(yùn)算來(lái)求結(jié)果,哪怕x = y時(shí),因?yàn)樵谶M(jìn)行首次乘法操作時(shí)無(wú)視低位的有效比特,可能會(huì)使運(yùn)算結(jié)果出錯(cuò),如果是多步運(yùn)算,第一步就出錯(cuò)則會(huì)連累后續(xù)的運(yùn)算結(jié)果接連出錯(cuò),比如前述的平方差求值后,再取結(jié)果的平方根,那么這個(gè)結(jié)果也會(huì)出錯(cuò)。
參見(jiàn)
熔合乘法累積指令集
BLAS
免責(zé)聲明:以上內(nèi)容版權(quán)歸原作者所有,如有侵犯您的原創(chuàng)版權(quán)請(qǐng)告知,我們將盡快刪除相關(guān)內(nèi)容。感謝每一位辛勤著寫(xiě)的作者,感謝每一位的分享。
- 有價(jià)值
- 一般般
- 沒(méi)價(jià)值
{{item.userName}} 舉報(bào)
{{item.time}} {{item.replyListShow ? '收起' : '展開(kāi)'}}評(píng)論 {{curReplyId == item.id ? '取消回復(fù)' : '回復(fù)'}}
{{_reply.userName}} 舉報(bào)
{{_reply.time}}