Re: Flushing memory into output file

From: Axel Kohlmeyer (akohlmey_at_gmail.com)
Date: Thu Oct 07 2010 - 12:42:50 CDT

On Thu, Oct 7, 2010 at 12:58 PM, Parisa Akhski
<Parisa.Akhshi_at_chem.queensu.ca> wrote:

dear parisa,

> Dear NAMD users,
>
> I ran a simulation and it crashed. Some of the output files specifically dcd
> file (trajectory) are not written properly (missing several frames). I mean
> before transferring data from memory to dcd file, it crashed. Is there any
> command I could use to flush the memory? For instance, in Fortran, there is
> a command (call flush) that flushes the memory anytime it is called. This
> way it avoids losing data due to the late flushing.

there are actually two steps needed to commit data
c style buffered i/o to a disk. there is the fflush(3)
library call that commits the userland buffers to the
kernel and the sync(2)/fsync(2) to commit kernel
buffers to disk.

there is not technical problem to implement this,
but the downside is that the sync() part particularly
can seriously impact the performance.

a better approach would be to understand the
reason(s) for the crashes and make sure that
your jobs don't crash or other wise start from the
last clean restart (and keep enough of them around)
and just redo the small part of the simulation.

cheers,
    axel.

p.s.: of course you are free to build your own version
of namd that does synchronous i/o.

>
> Thanks in advance,
>
> Parisa
>

-- 
Dr. Axel Kohlmeyer    akohlmey_at_gmail.com
http://sites.google.com/site/akohlmey/
Institute for Computational Molecular Science
Temple University, Philadelphia PA, USA.

This archive was generated by hypermail 2.1.6 : Wed Feb 29 2012 - 05:23:16 CST