Adding externally callable write data to disk function. For use in NAMD where shutdow...
authorIsaac Dooley <idooley2@illinois.edu>
Fri, 2 Apr 2010 16:23:18 +0000 (11:23 -0500)
committerIsaac Dooley <idooley2@illinois.edu>
Fri, 2 Apr 2010 16:23:18 +0000 (11:23 -0500)
src/ck-cp/controlPoints.C
src/ck-cp/controlPoints.h

index 5af430c1d42c93fae2baa46d352705731eaeda75..f4047701bfb8142579c0e6ba2e0705d862eb9034 100644 (file)
@@ -865,11 +865,15 @@ controlPointManager::controlPointManager() {
 
 
   void controlPointManager::doExitNow(){
-    if(writeDataFileAtShutdown){
-      CkPrintf("[%d] controlPointShutdown() at CkExit()\n", CkMyPe());
-      controlPointManagerProxy.ckLocalBranch()->writeDataFile();
-    }
-    CkExit();
+         writeOutputToDisk();
+         CkPrintf("[%d] Control point manager calling CkExit()\n", CkMyPe());
+         CkExit();
+  }
+
+  void controlPointManager::writeOutputToDisk(){
+         if(writeDataFileAtShutdown){
+                 controlPointManagerProxy.ckLocalBranch()->writeDataFile();
+         }
   }
 
 
@@ -1712,7 +1716,6 @@ void controlPointManager::generatePlan() {
 
 
 
-
 #define isInRange(v,a,b) ( ((v)<=(a)&&(v)>=(b)) || ((v)<=(b)&&(v)>=(a)) )
 
 
@@ -2256,6 +2259,13 @@ std::vector<double> simplexScheme::pointCoords(instrumentedData &allData, int i)
 
 
 
+void ControlPointWriteOutputToDisk(){
+       CkAssert(CkMyPe() == 0);
+       controlPointManagerProxy.ckLocalBranch()->writeOutputToDisk();
+}
+
+
+
 /*! @} */
 
 
index 4f75e7e36d516b39330d11a7409d4369ce8e55bd..6da859c3ad6878d62b1b0cece996e59530473ad2 100644 (file)
@@ -80,8 +80,8 @@ int controlPoint(const char *name, int lb, int ub);
 /// The value returned will likely change between subsequent invocations
 int controlPoint(const char *name, std::vector<int>& values);
 
-
-
+/// Write output data to disk. Callable from user program (for example, to periodically flush to disk if program might run out of time, or NAMD)
+void ControlPointWriteOutputToDisk();
 
 /// The application specifies that it is ready to proceed to a new set of control point values.
 /// This should be called after registerControlPointTiming()
@@ -779,10 +779,11 @@ public:
   /// Start shutdown procedures for the controlPoints module(s). CkExit will be called once all outstanding operations have completed (e.g. waiting for idle time & memory usage to be gathered)
   void exitIfReady();
 
-  // All outstanding operations have completed, so do the shutdown now. First write files to output, and then call CkExit().
+  /// All outstanding operations have completed, so do the shutdown now. First write files to disk, and then call CkExit().
   void doExitNow();
 
-
+  /// Write data to disk (when needed), likely at exit
+  void writeOutputToDisk();
 
 
   /// Entry method called on all PEs to request memory usage