我正嘗試用gfortran和Intel Xeon CPU在Fortran程序中矢量化循環。矢量化Fortran中的循環與矢量處理器
此前,該矢量被constating
!VOCL LOOP,NOVREC
!DIR$ IVDEP
這可能對富士通的循環之前已經工作落實。但是這些都不行了。
有沒有人有想法如何矢量化循環。
由於我這個新手,這將是完美的,如果你能證明一個例子來測試結果
下面是我用它來測試它是否工作
PROGRAM VECT_TEST
IMPLICIT NONE
INTEGER :: L(10)
INTEGER :: I
DO I = 1, 10
L(I) = I
END DO
!VOCL LOOP,NOVREC
!DIR$ IVDEP
DO I = 1, 10
L(I)=L(I) + 1
END DO
END PROGRAM
隨着代碼測試命令
gfortran vect_test.f -fopt-info-all -O3
我喜歡這個
錯誤輸出vect_test.f:18:0:note:=== vect_slp_analyze_bb === vect_test.f:18:0: note:=== vect_analyze_data_refs === vect_test.f:18:0:note:not vectorized :基本塊中沒有足夠的數據引用。
你可以從這裏開始https://software.intel .com/en-us/articles/Getting-started-with-intel-composer-xe-2013-compiler-pragmas-and-directives https://software.intel.com/sites/default/files/article/301483/ simd.upate.pdf –
是的,我做到了。其實我也試過了!DIR $ SMID也沒用。我會顯示代碼。也許我以錯誤的方式測試它 – Shiyu
閱讀https://software.intel.com/zh-cn/articles/overview-of-vectorization-reports-and-new-vec-report6 –