Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fortran 并行IO&;追加_Fortran_Fortran90 - Fatal编程技术网

Fortran 并行IO&;追加

Fortran 并行IO&;追加,fortran,fortran90,Fortran,Fortran90,当我运行我的小规模并行代码时,我通常以fileout.dat.xxx的形式输出N个文件(N是处理器的数量),其中xxx是处理器的数量(使用I3.3),然后在代码完成后将它们放入一个fileout.dat文件中 我的问题是,我是否可以在OPEN语句中使用ACCESS='append'或POSITION='append',并让所有处理器写入同一个文件?实际上,没有。POSITION='append'只是说,在执行OPEN语句后,文件指针将位于文件的末尾。但是,可以更改文件位置,例如使用BACKSPA

当我运行我的小规模并行代码时,我通常以
fileout.dat.xxx
的形式输出N个文件(N是处理器的数量),其中
xxx
是处理器的数量(使用
I3.3
),然后在代码完成后将它们放入一个
fileout.dat
文件中


我的问题是,我是否可以在
OPEN
语句中使用
ACCESS='append'
POSITION='append'
,并让所有处理器写入同一个文件?

实际上,没有。POSITION='append'只是说,在执行OPEN语句后,文件指针将位于文件的末尾。但是,可以更改文件位置,例如使用BACKSPACE、REWIND或类似语句。因此,Fortran POSITION='append'与POSIX O_append不对应,因此POSIX操作系统无法确保所有写操作都只附加到文件中,而不会覆盖较旧的数据

此外,如果您在集群上运行代码,请注意O_APPEND在许多网络文件系统(如NFS)上不起作用

为了在多个进程/线程写入单个文件的情况下执行并行I/O,请使用ACCESS='direct'或ACCESS='stream',并让进程就要写入的记录/字节范围达成一致