[MITgcm-support] For pgf77, is there already a way to line-buffer the STDOUT and STDERR files?
Yantosca, Robert M.
yantosca at seas.harvard.edu
Mon Jan 25 12:23:56 EST 2016
Thanks Martin. It may just be faster to call FLUSH instead of setvbuf3f. I'll give it a go.
Best,
Bob Y.
--
Bob Yantosca
Senior Software Engineer
GEOS-Chem Support Team
http://wiki.geos-chem.org/GEOS-Chem_Support_Team
Group email: geos-chem-support at as.harvard.edu
Individual email: yantosca at seas.harvard.edu
(617) 496-9424
-----Original Message-----
From: Martin Losch [mailto:Martin.Losch at awi.de]
Sent: Monday, January 25, 2016 3:37 AM
To: MITgcm Support
Subject: Re: [MITgcm-support] For pgf77, is there already a way to line-buffer the STDOUT and STDERR files?
Hi Bob,
this is probably not very sophisticated:
I am using “flush" to get output in such a case and put it into the routine that I am interested in. If you want output in each timestep, you’d have to put something like “call flush(standardMessageUnit)” in to forward_step.F. If you want output only at the “monitor frequency” (runtime flag monitorFreq), then I’d put this call into monitor.F (into the if block).
Martin
> On 22 Jan 2016, at 21:51, Yantosca, Robert M. <yantosca at seas.harvard.edu> wrote:
>
> Hi –
>
> I am a new user of MITgcm. I was able to build it on the Harvard Odyssey cluster based on the tools/build_options/linux_amd64_pgf77 settings and OpenMPI.
>
> With the pgfortran compiler, the MITgcm compiles “out-of-the-box” and runs. But because pgfortran fully-buffers all disk files by default, theSTDOUT.nnnn and STDERR.nnnn files are not flushed to disk while MITgcm is running. This makes it difficult to check the progress of the run.
>
> The pgf77 compiler manual says that you can change the buffering
> options by calling the SETVBUF3F to manually set the buffering
> options. For example,
>
> INTEGER, EXTERNAL :: SETVBUF3F
> . . .
> RC = SETVBUF3F( 6, 1, 16000 )
>
> will make stdout (unit #6) line buffered with a buffer size of 16K. (I use this setting on another model and it works fine.) Then you can redirect stdout to a log file and it will be refreshed during a run.
>
> My questions:
>
> (1) Does anyone know if there is a pgfortran compiler switch that would globally reset the file-buffering options? Then I wouldn’t have to rely on SETVBUF3F.
>
> (2) Failing that, in which routine are the STDOUT.nnnn and STDERR.nnnnfiles opened? I could try to put calls to SETVBUF3F in those routines right when those files are opened to make them line-buffered.
>
> Thanks a bunch!
>
> Best,
>
> Bob Y.
>
> --
> Bob Yantosca
> Senior Software Engineer
> GEOS-Chem Support Team
> http://wiki.geos-chem.org/GEOS-Chem_Support_Team
> Group email: geos-chem-support at as.harvard.edu Individual email:
> yantosca at seas.harvard.edu
> (617) 496-9424
>
> _______________________________________________
> MITgcm-support mailing list
> MITgcm-support at mitgcm.org
> http://mitgcm.org/mailman/listinfo/mitgcm-support
_______________________________________________
MITgcm-support mailing list
MITgcm-support at mitgcm.org
http://mitgcm.org/mailman/listinfo/mitgcm-support
More information about the MITgcm-support
mailing list