diff options
author | cott <> | 2004-01-08 18:43:00 +0000 |
---|---|---|
committer | cott <> | 2004-01-08 18:43:00 +0000 |
commit | 0f1abbf0a0a976a359eb3c1eaf4c8061a6fdfbb6 (patch) | |
tree | 114b5468154aa31a35ec88c7bcf3db7daa2a0886 /CarpetAttic/CarpetIOFlexIOCheckpoint/src/checkpointrestart.cc | |
parent | c6e7dedec9e6ea4bfad9b2a22b75b5f6ba7e78bc (diff) |
Okay. Here we go. Recovery goes through without any crashes on a very simple
Okay. Here we go. Recovery goes through without any crashes on a very simple
test case. No test for consistency yet.
The code is still a huge construction site...
darcs-hash:20040108184333-19929-b0d1df37d71a59413ba5893926fef4e5862ea7a7.gz
Diffstat (limited to 'CarpetAttic/CarpetIOFlexIOCheckpoint/src/checkpointrestart.cc')
-rw-r--r-- | CarpetAttic/CarpetIOFlexIOCheckpoint/src/checkpointrestart.cc | 86 |
1 files changed, 51 insertions, 35 deletions
diff --git a/CarpetAttic/CarpetIOFlexIOCheckpoint/src/checkpointrestart.cc b/CarpetAttic/CarpetIOFlexIOCheckpoint/src/checkpointrestart.cc index e503d0bfc..d58289594 100644 --- a/CarpetAttic/CarpetIOFlexIOCheckpoint/src/checkpointrestart.cc +++ b/CarpetAttic/CarpetIOFlexIOCheckpoint/src/checkpointrestart.cc @@ -48,7 +48,7 @@ #include "ioflexio.hh" extern "C" { - static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/CarpetIOFlexIOCheckpoint/src/checkpointrestart.cc,v 1.19 2004/01/07 16:30:49 cott Exp $"; + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/CarpetAttic/CarpetIOFlexIOCheckpoint/src/checkpointrestart.cc,v 1.20 2004/01/08 19:43:33 cott Exp $"; CCTK_FILEVERSION(Carpet_CarpetIOFlexIO_checkpointrestart_cc); } @@ -229,30 +229,33 @@ int CarpetIOFlexIO_Recover (cGH* cgh, const char *basefilename, int called_from) if (called_from == CP_RECOVER_DATA) { - if(myproc ==0){ - AmrGridReader* amrreader = 0; - amrreader = new AmrGridReader(*reader); - BEGIN_REFLEVEL_LOOP(cgh) { - BEGIN_MGLEVEL_LOOP(cgh) { + AmrGridReader* amrreader = 0; - /* make sure we are looking at the first dataset where - all the good stuff ist stored! */ - reader->seek(0); - - /* Recover GH extentions */ - CCTK_INFO ("Recovering GH extensions"); - result += RecoverGHextensions (cgh, reader); - } END_MGLEVEL_LOOP; - } END_REFLEVEL_LOOP; + if(myproc==0) + amrreader = new AmrGridReader(*reader); + + BEGIN_REFLEVEL_LOOP(cgh) { + BEGIN_MGLEVEL_LOOP(cgh) { - if (! result) - { - /* Recover variables */ - CCTK_VInfo (CCTK_THORNSTRING, "Recovering data! "); - result = RecoverVariables (cgh, reader,amrreader); - } + /* make sure we are looking at the first dataset where + all the good stuff ist stored! */ + if(myproc==0) + reader->seek(0); + /* Recover GH extentions */ + CCTK_INFO ("Recovering GH extensions"); + result += RecoverGHextensions (cgh, reader); + } END_MGLEVEL_LOOP; + } END_REFLEVEL_LOOP; + + if (! result) + { + /* Recover variables */ + CCTK_VInfo (CCTK_THORNSTRING, "Recovering data! "); + result = RecoverVariables (cgh, reader,amrreader); + } + if(myproc==0) { delete reader; delete amrreader; } @@ -546,6 +549,7 @@ int CarpetIOFlexIO_Recover (cGH* cgh, const char *basefilename, int called_from) if (CCTK_MyProc(cgh)==0) { + fprintf(stderr,"\n verbose: %d\n",verbose); if (verbose) { CCTK_VInfo (CCTK_THORNSTRING, "Creating temporary checkpoint file '%s'", cp_tempname); @@ -757,10 +761,10 @@ int CarpetIOFlexIO_Recover (cGH* cgh, const char *basefilename, int called_from) { if (myGH->cp_filename_list[myGH->cp_filename_index]) { - if (checkpoint_keep > 0) - { - remove (myGH->cp_filename_list[myGH->cp_filename_index]); - } + // if (checkpoint_keep > 0) + //{ + // remove (myGH->cp_filename_list[myGH->cp_filename_index]); + //} free (myGH->cp_filename_list[myGH->cp_filename_index]); } myGH->cp_filename_list[myGH->cp_filename_index] = strdup (cp_filename); @@ -775,18 +779,33 @@ int CarpetIOFlexIO_Recover (cGH* cgh, const char *basefilename, int called_from) int RecoverVariables (cGH* cgh, IObase* reader, AmrGridReader* amrreader){ int retval = 0; - + int myproc = CCTK_MyProc (cgh); + int currdataset,ndatasets; CCTK_VInfo(CCTK_THORNSTRING,"Starting to recover data!!!"); - int ndatasets = reader->nDatasets(); - //CCTK_VInfo (CCTK_THORNSTRING, "ndatasets=%d", ndatasets); + if(myproc==0) { + ndatasets = reader->nDatasets(); + //CCTK_VInfo (CCTK_THORNSTRING, "ndatasets=%d", ndatasets); + assert (ndatasets>=0); + } + + // Broadcast number of datasets + MPI_Bcast (&ndatasets, 1, MPI_INT, 0, dist::comm); assert (ndatasets>=0); - for (int currdataset=1;currdataset < ndatasets;currdataset++) { + // BEGIN_REFLEVEL_LOOP(cgh) { + // BEGIN_MGLEVEL_LOOP(cgh) { + for (currdataset=1;currdataset < ndatasets;currdataset++) { //CCTK_VInfo(CCTK_THORNSTRING,"dataset: %d",currdataset); - reader->seek(currdataset); - ReadGF(cgh,reader,amrreader); - } + if(myproc==0) { + reader->seek(currdataset); + } + + ReadGF(cgh,reader,amrreader,currdataset); + } + + // } END_MGLEVEL_LOOP; + //} END_REFLEVEL_LOOP; return retval; } @@ -804,6 +823,3 @@ int CarpetIOFlexIO_Recover (cGH* cgh, const char *basefilename, int called_from) - - - |