高效使用FORTRAN数组

本文介绍了高效使用FORTRAN数组的方法,包括数组整体访问,使用列为主的数组访问和存储以提高CPU高速缓存使用效率,尽量使用FORTRAN90内在数组过程,以及在多维数组中避免最左侧维宽度为2的幂次方,顺序或整体访问则不受此限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

发信人: huicai (老灰菜), 信区: Fortran
标  题: 高效使用FORTRAN数组
发信站: 瀚海星云 (2002年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的幂次方问题可能引起的高速缓存的使用效率低下。
--
※ 来源:·瀚海星云 bbs.ustc.edu.cn·[FROM: 210.45.124.65]
--

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值