高效使用FORTRAN陣列

2021-03-31 19:08:41 字數 900 閱讀 1827

發信人: huicai (老灰菜), 信區: fortran

標  題: 高效使用fortran陣列

發信站: 瀚海星雲 (2023年10月10日23:06:02 星期四), 站內信件

高效使用fortran陣列

1、陣列整體訪問

最快的陣列操作發生在連續訪問整個陣列或大部分陣列的時候。對整個陣列或大部分陣列實施乙個或者幾個陣列操作要比對分散的陣列元素經行龐大的操作效率高得多。

與其使用顯式的陣列迴圈訪問不如使用陣列的基本操作,例如需要把陣列變數a的每個元素都增加1:

a=a+1

讀寫乙個陣列時,應該使用陣列名而不是指定每乙個元素編號的do迴圈或者隱do迴圈。

2、使用列為主的陣列訪問和儲存

引用所謂fortran陣列時,要保證使用正確的引用語法並注意列為主的「正常」增加順序。對於列為主的順序,陣列最左邊的下標變化最快。

行為主的順序(例如c語言)或任意順序的多維陣列訪問常常會使cpu快取記憶體的使用效率低下,所以應該避免行為主的順序。

3、盡量使用fortran90內在陣列過程

4、多維陣列的維的寬度

在分散訪問陣列元素的多維陣列中,應避免最左側的陣列維的寬度為2的冪次方,比如512。

因為快取記憶體的大小是2的冪次方,如果陣列的大小也是2的冪次方,那麼分散訪問陣列元素時就會降低快取記憶體的使用效率。在alpha系統上,如果陣列最左側的維寬度正好是快取記憶體的倍數的話,則這個程式坑幾乎無法利用快取記憶體。

如果是順序訪問或者整體訪問陣列則不存在這個問題。

一種改善的方法是增加維的寬度,允許存在一些沒用的元素,從而使最左側的寬度變成非2的冪次方,,例如把最左側512變為520就能更有效地利用快取記憶體。

在較高階的優化中(**以上),編譯系統會填補由2的冪次方問題可能引起的快取記憶體的使用效率低下。

----

Fortran陣列 函式 xdd

1.陣列的宣告 integer,parameter num 5 integer student num 或者 integer a 10 或者 integer a 10,6 student 1 5 第乙個元素值為5,預設索引值從1開始 賦初值integer a 5 data 1,2,3,4,5 dat...

Fortran 學習手記 陣列篇

part i 陣列定義 1.fortran最大支援7維的陣列 2.定義陣列大小的引數可以是數字或者常數 parameter 但不可以是變數 3.定義陣列的幾種形式 1 integer a 10,10 最簡單的方法 2 integer,dimension 10,10 a 另外一種做法 3 intege...

Fortran中的指標使用

fortran中的指標如何使用,功能怎樣,下面的的5個例子足可以讓你明白一切 對於單個值,用起來很簡單,但是無法體現指標的強大功能,示例1 program test pointer 1 implicit none integer,pointer p1,p2 定義指標 integer s alloca...