【发布时间】:2021-10-26 07:41:31
【问题描述】:
我有一段代码将二维数组 var 写入一个 fortran 无格式文件。
我希望它是逐行编写的。因此,我需要以非最优顺序循环 fortran,因为建议先在外部维度上循环。
write(fileid, pos = pos) ((var(i,j),j=1,size(var,2)),i=1,size(var,1))
我想知道转置我写入文件的方式是否会更优化,或者这是否没有必要,因为在这种情况下 I/O 进程应该支配缓存/内存访问。
【问题讨论】:
-
您的测量结果显示了什么?
-
我没有做任何测量,因为我认为这个问题可能有一个通用的答案。但是,如果你告诉我没有任何通用的答案,那么我会进行一些测试并让社区知道,当然,我会在我的基准测试中提供一个体面的描述。
-
我们有各种大小的缓存和缓冲区以及各种大小的数据。我们有硬盘、SSD 磁盘,我们在同一设备上有磁盘,通过某种互连、以太网访问磁盘......很难假设一个通用的答案。