ZT - 怎樣提高呼叫數學函式的程式的效能(4)
本文向您提供了對 IBM MASS 庫以及 IBM XL C/C++ 和 XL Fortran 彙編器的自動向量化功能的描述。另外,本文演示了對範例程式(離散 Fourier 轉變)使用各種彙編器選項的操作,向您展示了透過使用 MASS 自動向量化的自動呼叫功能,使得與以前版本相比速度提高了 8.94 倍的效果。
[@more@]本文向您提供了對 IBM MASS 庫以及 IBM XL C/C++ 和 XL Fortran 彙編器的自動向量化功能的描述。另外,本文演示了對範例程式(離散 Fourier 轉變)使用各種彙編器選項的操作,向您展示了透過使用 MASS 自動向量化的自動呼叫功能,使得與以前版本相比速度提高了 8.94 倍的效果。
這種演示想要透過一種程式來鼓勵使用者,這種程式會訪問數學函式以驗證可用的彙編器選項,並從 IBM XL C/C++ 或者 XL Fortran 彙編器的自動向量化加速中獲益。
subroutine dft (x, a, phi , n) real*8 x(n), a(n), phi(n) integer n ! Compute discrete Fourier transform of real inputs ! x(i) and convert to polar form. real*8, parameter :: pi=3.1415926535897932384d0 real*8 y_re(n), y_im(n), t, term_re, term_im intrinsic exp, cos, sin, sqrt, atan y_re(1:n) = 0.d0 y_im(1:n) = 0.d0 do k=1,n ! compute y(k), k-th DFT output do i=1,n ! compute i-th term of y(k): ! x(k)*exp(-2*pi*I*(k-1)*(i-1)/n) ! compute real and imaginary parts of i-th term ! using exp(I*t)=exp(t)*(cos(t)+I*sin(t)) t = -2.d0*pi*(k-1)*(i-1)/n term_re = x(i) * cos(t) * exp(t) term_im = x(i) * sin(t) * exp(t) ! add term to sum y_re(k) = y_re(k) + term_re y_im(k) = y_im(k) + term_im end do end do ! transform y to polar coordinates do k=1,n ! compute amplitude of y(k) a(k) = sqrt (y_re(k)**2 + y_im(k)**2) ! compute phase of y(k) phi(k) = atan (y_im(k) / y_reim(k)) end do end subroutine ! initialize input data subroutine init (a, n) real*8 a(n) integer n intrinsic sin,sqrt do j=1,n a(j)=sin(1.d0/sqrt(real(j,8))) end do end subroutine |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16896827/viewspace-1036477/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ZT - 怎樣提高呼叫數學函式的程式的效能(1)函式
- ZT - 怎樣提高呼叫數學函式的程式的效能(2)函式
- ZT - 怎樣提高呼叫數學函式的程式的效能(5)函式
- ZT - 怎樣提高呼叫數學函式的程式的效能(6)函式
- ZT - 怎樣提高呼叫數學函式的程式的效能(7)函式
- [Q]怎樣建立基於函式索引zt函式索引
- 怎樣提高伺服器的效能伺服器
- 透過使用型別庫提高VB呼叫DLL函式的效能 (轉)型別函式
- 利用函式的惰性載入提高 javascript 程式碼效能函式JavaScript
- 移除函式呼叫能有更好的效能函式
- 透過例子學習Lua(4)--函式的呼叫(轉)函式
- 函式的呼叫方式和引數函式
- Itrace跟蹤程式呼叫庫函式引數選項-怎麼學習linux運維函式Linux運維
- 【C語言】函式的概念和函式的呼叫(引數傳遞)C語言函式
- 函式呼叫的引數規則與解包函式
- 怎樣測試程式的平均效能
- 像數學公式一樣徹底簡單理解JavaScript函式呼叫與this 指標公式JavaScript函式指標
- 函式呼叫引數變數傳值的問題函式變數
- 在C++中使用Lambda函式提高程式碼效能C++函式
- 淺析一個函式呼叫另一個函式的變數函式變數
- C程式函式呼叫&系統呼叫C程式函式
- 外部函式的呼叫函式
- js中的寫出想jquery中的函式一樣呼叫JSjQuery函式
- 程式中的函式引數函式
- 人人都能學會的python程式設計教程10:呼叫函式Python程式設計函式
- JS中函式內套函式的呼叫JS函式
- Javascript的函式呼叫與thisJavaScript函式
- Lua中呼叫ref和out修飾引數的函式/過載函式函式
- 數學函式函式
- java可以像python中的函式式工具裡的reduce那樣呼叫嗎?JavaPython函式
- 函數語言程式設計4-高階函式函數程式設計函式
- js函式 函式自呼叫 返回函式的函式 (閉包)JS函式
- Swift 呼叫 Objective-C 的可變引數函式SwiftObject函式
- ASP中函式呼叫對引數的影響 (轉)函式
- C#程式碼與javaScript函式的相互呼叫C#JavaScript函式
- 學習javaScript必知必會(1)~js介紹、函式、匿名函式、自呼叫函式、不定長引數JavaScriptJS函式
- 函式呼叫棧的問題函式
- 虛擬函式的呼叫原理函式