ZT - 怎樣提高呼叫數學函式的程式的效能(2)

saintsiro發表於2010-08-08

自動化向量技術是一種過程,在這個過程中 IBM XL C/C++ 或者 Fortran 彙編器會識別一個機會,去改善彙編過程中程式的效能,方法就是將對一次迴圈中一個標準庫(C/C++ 庫或者 Fortran 本質)的訪問替換為對相應 MASS 向量函式的訪問。因為 MASS 向量函式要比對一個標準庫函式的重複訪問快很多(倍數接近 30 倍),所以最後得到的效能改善效果將會是驚人的。

一個簡單的例子就是為多個論斷計算特定函式的迴圈,例如接下來的 Fortran 程式。

subroutine sub (y, x, n)
    real*8 y(*), x(*)
    integer n, i
    intrinsic exp
    do i=1,n
        y(i) = exp(x(i))  ! standard intrinsic
    end do
end subroutine

有了適當的彙編器選項,彙編器就會意識到機會去給程式加速,方法就是將對 exp() 的重複訪問替換為相應的 MASS 向量函式 vexp(),結果會產生一個程式,好像最開始是這樣寫成的這樣:

include 'massv.include'
subroutine sub (y, x, n)
    real*8 y(*), x(*)
    integer n
    call vexp (y, x, n)  ! MASS vector function
end subroutine

這只是一個簡單的範例,演示了自動向量化背後的基本思想。XL 彙編器實際上能夠識別更加複雜的機會,並在需要的條件下重新安排源程式中的指南,以建立自動向量化的機會。

在本文中的範例研究部分中,會檢查一個更加複雜和實際的範例。

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16896827/viewspace-1036475/,如需轉載,請註明出處,否則將追究法律責任。

相關文章