Manta Interactive Ray Tracer Development Mailing List

Text archives Help


[MANTA] r513 - in branches/AFR: Engine/Control Engine/ImageTraversers Engine/ImageTraversers/AFR Interface StandAlone UserInterface


Chronological Thread 
  • From: abe@sci.utah.edu
  • To: manta@sci.utah.edu
  • Subject: [MANTA] r513 - in branches/AFR: Engine/Control Engine/ImageTraversers Engine/ImageTraversers/AFR Interface StandAlone UserInterface
  • Date: Mon, 29 Aug 2005 15:49:05 -0600 (MDT)

Author: abe
Date: Mon Aug 29 15:49:04 2005
New Revision: 513

Added:
   branches/AFR/UserInterface/NullUI.h
      - copied unchanged from r511, branches/itanium2/UserInterface/NullUI.h
Modified:
   branches/AFR/Engine/Control/AFRPipeline.cc
   branches/AFR/Engine/Control/AFRPipeline.h
   branches/AFR/Engine/Control/RTRT.h
   branches/AFR/Engine/Control/RTRT_register.cc
   branches/AFR/Engine/ImageTraversers/AFImageTraverser.cc
   branches/AFR/Engine/ImageTraversers/AFImageTraverser.h
   branches/AFR/Engine/ImageTraversers/AFR/stats.cc
   branches/AFR/Interface/RTRTInterface.h
   branches/AFR/StandAlone/manta.cc
   branches/AFR/UserInterface/CMakeLists.txt
Log:

Added "-ui null" option from itanium2 branch for batch benchmarks. 

Also added Afr::BenchHelper which outputs samples/second after all threads 
initialize.

M    StandAlone/manta.cc
M    UserInterface/CMakeLists.txt
A    UserInterface/NullUI.h
M    Interface/RTRTInterface.h
M    Engine/Control/RTRT.h
M    Engine/Control/AFRPipeline.cc
M    Engine/Control/RTRT_register.cc
M    Engine/Control/AFRPipeline.h
M    Engine/ImageTraversers/AFR/stats.cc
M    Engine/ImageTraversers/AFImageTraverser.cc
M    Engine/ImageTraversers/AFImageTraverser.h


Modified: branches/AFR/Engine/Control/AFRPipeline.cc
==============================================================================
--- branches/AFR/Engine/Control/AFRPipeline.cc  (original)
+++ branches/AFR/Engine/Control/AFRPipeline.cc  Mon Aug 29 15:49:04 2005
@@ -156,17 +156,15 @@
 
///////////////////////////////////////////////////////////////////////////////
 // ADD CALLBACKS
 
///////////////////////////////////////////////////////////////////////////////
 
-void AFRPipeline::addOneShotCallback(Whence /*whence*/, long frame,
+void AFRPipeline::addOneShotCallback(Whence whence, long frame,
                              CallbackBase_2Data<int, int>* callback)
 {
-#if NOTFINISHED
   // What about adding callbacks during anim cycle?
-#endif
   callbackLock.writeLock();
-#if NOTFINISHED
+
   if(whence == RTRTInterface::Relative)
-    frame += current Fame;
-#endif
+    frame += animFrameState.frameNumber;
+
   oneShots.insert(OneShotMapType::value_type(frame, callback));
   callbackLock.writeUnlock();
 }
@@ -677,7 +675,6 @@
        
   int numChannels = static_cast<int>(channels.size());
        
-       std::cout << "Thread in setupPipelines" << std::endl;
        
        // Create a setup context.
        SetupContext globalcontext(this, numChannels, 0, numProcs,

Modified: branches/AFR/Engine/Control/AFRPipeline.h
==============================================================================
--- branches/AFR/Engine/Control/AFRPipeline.h   (original)
+++ branches/AFR/Engine/Control/AFRPipeline.h   Mon Aug 29 15:49:04 2005
@@ -78,6 +78,7 @@
                                                                              
                                                                  bool 
changePipeline);
 
                        // Image Traversers
+      virtual ImageTraverser *getImageTraverser() { return 
currentImageTraverser; };
                        virtual bool selectImageTraverser(const string& spec);
                        virtual void registerComponent(const string& name, 
ImageTraverserCreator creator);
                        virtual listType listImageTraversers() const;

Modified: branches/AFR/Engine/Control/RTRT.h
==============================================================================
--- branches/AFR/Engine/Control/RTRT.h  (original)
+++ branches/AFR/Engine/Control/RTRT.h  Mon Aug 29 15:49:04 2005
@@ -43,6 +43,7 @@
                                   bool changePipeline);
 
     // Image Traversers
+    virtual ImageTraverser *getImageTraverser() { return 
currentImageTraverser; };
     virtual bool selectImageTraverser(const string& spec);
     virtual void registerComponent(const string& name, ImageTraverserCreator 
creator);
     virtual listType listImageTraversers() const;

Modified: branches/AFR/Engine/Control/RTRT_register.cc
==============================================================================
--- branches/AFR/Engine/Control/RTRT_register.cc        (original)
+++ branches/AFR/Engine/Control/RTRT_register.cc        Mon Aug 29 15:49:04 
2005
@@ -39,6 +39,7 @@
 #include <Model/Groups/Group.h>
 #include <UserInterface/PromptUI.h>
 #include <UserInterface/XWindowUI.h>
+#include <UserInterface/NullUI.h>
 
 
 namespace Manta {
@@ -101,6 +102,7 @@
     rtrt->registerComponent("zoom", &ZoomIdleMode::create);
 
     // Register user interfaces
+               rtrt->registerComponent("null", &NullUI::create);
     rtrt->registerComponent("prompt", &PromptUI::create);
     rtrt->registerComponent("X", &XWindowUI::create);
 

Modified: branches/AFR/Engine/ImageTraversers/AFImageTraverser.cc
==============================================================================
--- branches/AFR/Engine/ImageTraversers/AFImageTraverser.cc     (original)
+++ branches/AFR/Engine/ImageTraversers/AFImageTraverser.cc     Mon Aug 29 
15:49:04 2005
@@ -563,6 +563,7 @@
   {
     if(samples_done[context.proc].value >= (xres*yres)) {
       initpass[context.proc] = true;
+      std::cerr << "Thread: " << context.proc << " initialized" << std::endl;
     }
   }
   else 
@@ -673,4 +674,50 @@
     }
     while(minError/maxError<MAX_MIN_RATIO && count<MAX_MERGE_SPLIT_LIMIT);
   }
+}
+
+#include <Interface/RTRTInterface.h>
+#include <Interface/Callback.h>
+
+
+// If all of the threads have initialized start the benchmark.
+void BenchHelper::tryStart( int, int ) {
+  
+  AFImageTraverser *traverser = (AFImageTraverser 
*)rtrt->getImageTraverser();
+  
+  // Check to see if all threads initialized.
+  if (!traverser->allThreadsInitialized()) {
+    // std::cout << "Try setup failed" << std::endl;
+    rtrt->addOneShotCallback(RTRTInterface::Relative, 10,
+                             Callback::create(this, &BenchHelper::tryStart));
+    return;
+  }
+
+  // std::cout << "Beginning benchmark" << std::endl;
+  
+  // Otherwise
+  start_time = SCIRun::Time::currentSeconds();
+  start_samples = traverser->getSamplesDone();
+  
+  rtrt->addOneShotCallback(RTRTInterface::Relative, outer_loops,
+                           Callback::create(this, &BenchHelper::stop));
+}
+
+// Take the final measurement.
+void BenchHelper::stop (int, int) {
+  
+  AFImageTraverser *traverser = (AFImageTraverser 
*)rtrt->getImageTraverser();
+  
+  double end_time = SCIRun::Time::currentSeconds();
+  unsigned int end_samples = traverser->getSamplesDone();
+
+  // Determine samples per second.
+  double sps = (double)(end_samples - start_samples) / (end_time - 
start_time);
+  
+  // Output performance.
+  std::cout << sps << std::endl;
+  
+  delete this;
+  
+  SCIRun::Thread::exitAll(0);
 }

Modified: branches/AFR/Engine/ImageTraversers/AFImageTraverser.h
==============================================================================
--- branches/AFR/Engine/ImageTraversers/AFImageTraverser.h      (original)
+++ branches/AFR/Engine/ImageTraversers/AFImageTraverser.h      Mon Aug 29 
15:49:04 2005
@@ -2,6 +2,9 @@
 #ifndef Manta_Engine_AFImageTraverser_h
 #define Manta_Engine_AFImageTraverser_h
 
+#include <SCIRun/Core/Thread/Time.h>
+#include <SCIRun/Core/Thread/Thread.h>
+
 #include <Interface/ImageTraverser.h>
 #include <Interface/Fragment.h>
 #include <sgi_stl_warnings_off.h>
@@ -115,7 +118,7 @@
                        
       // ??????????????
                        double *chunkTimeStamp;
-                       bool *initpass;
+                       bool   *initpass;
       
       
/////////////////////////////////////////////////////////////////////////
       // Arguments.
@@ -131,8 +134,42 @@
         }
         return total;
       };
+
+      inline bool allThreadsInitialized() {
+        bool all = true;
+        for (int i=0;(i<num_clients)&&all;++i) {
+          all = initpass[i] && all;
+        }
+
+        return all;
+      }
                };
 
+
+    
///////////////////////////////////////////////////////////////////////////
+    
///////////////////////////////////////////////////////////////////////////
+    // SAMPLES PER SECOND BENCH  SAMPLES PER SECOND BENCH  SAMPLES PER SECOND
+    
///////////////////////////////////////////////////////////////////////////
+    
///////////////////////////////////////////////////////////////////////////
+    class BenchHelper {
+    private:
+      RTRTInterface *rtrt;
+      long outer_loops;
+
+      double start_time;
+      unsigned int start_samples;
+
+      
+    public:
+      BenchHelper( RTRTInterface *rtrt_, long outer_loops_ ) :
+        rtrt( rtrt_ ), outer_loops( outer_loops_ ) { };
+
+      void tryStart( int, int );
+      void stop( int, int );
+
+    };
+
+    
        };
 };
 

Modified: branches/AFR/Engine/ImageTraversers/AFR/stats.cc
==============================================================================
--- branches/AFR/Engine/ImageTraversers/AFR/stats.cc    (original)
+++ branches/AFR/Engine/ImageTraversers/AFR/stats.cc    Mon Aug 29 15:49:04 
2005
@@ -21,7 +21,10 @@
        n++;
        //assert(xi>=0);
        assert(wi>0);
-       assert(uniform_decrease>0);
+       // assert(uniform_decrease>0);
+  if (uniform_decrease > 0)
+    return;
+  
        sigma_wi *= uniform_decrease;
        sigma_xi_wi *= uniform_decrease;
 

Modified: branches/AFR/Interface/RTRTInterface.h
==============================================================================
--- branches/AFR/Interface/RTRTInterface.h      (original)
+++ branches/AFR/Interface/RTRTInterface.h      Mon Aug 29 15:49:04 2005
@@ -49,6 +49,7 @@
                                   bool changePipeline) = 0;
 
     // Image Traversers
+    virtual ImageTraverser *getImageTraverser() = 0;
     typedef ImageTraverser* (*ImageTraverserCreator)(const vector<string>& 
args);
     virtual bool selectImageTraverser(const string& spec) = 0;
     virtual void registerComponent(const string& name, ImageTraverserCreator 
creator) = 0;

Modified: branches/AFR/StandAlone/manta.cc
==============================================================================
--- branches/AFR/StandAlone/manta.cc    (original)
+++ branches/AFR/StandAlone/manta.cc    Mon Aug 29 15:49:04 2005
@@ -9,8 +9,10 @@
 #include <Core/Exceptions/InternalError.h>
 #include <Core/Thread/Time.h>
 #include <strings.h>
+#include <SCIRun/Core/Thread/Thread.h>
 
 #include <Engine/Control/AFRPipeline.h>
+#include <Engine/ImageTraversers/AFImageTraverser.h>
 
 #include <sgi_stl_warnings_off.h>
 #include <iostream>
@@ -20,7 +22,8 @@
 using namespace Manta;
 
 using SCIRun::InternalError;
-using SCIRun::Time;
+// using SCIRun::Time;
+using SCIRun::Thread;
 
 #if HAVE_IEEEFP_H
 #include <ieeefp.h>
@@ -91,17 +94,22 @@
 
 void BenchHelper::start(int, int)
 {
-  startTime = Time::currentSeconds();
+  startTime = SCIRun::Time::currentSeconds();
 }
 
 void BenchHelper::stop(int, int)
 {
-  double dt = Time::currentSeconds()-startTime;
+  double dt = SCIRun::Time::currentSeconds()-startTime;
   double fps = static_cast<double>(numFrames)/dt;
   // cout << "Benchmark completed in " << dt << " seconds (" << numFrames << 
" frames, " << fps << " frames per second)\n";
+
   std::cout << fps << std::endl;
-       rtrt->finish();
-  delete this;
+
+  Thread::exitAll(0);
+  
+  
+  // rtrt->finish();
+  // delete this;
 }
 
 int
@@ -152,6 +160,7 @@
       if(arg == "-help"){
                                usage(rtrt);
       } else if(arg == "-bench"){
+#if 0
                                long numFrames = 100;
                                long warmup = 10;
                                if(getLongArg(i, args, numFrames)){
@@ -164,6 +173,23 @@
                                                                              
                                                   Callback::create(b, 
&BenchHelper::start));
                                
rtrt->addOneShotCallback(RTRTInterface::Absolute, warmup+numFrames,
                                                                              
                                                   Callback::create(b, 
&BenchHelper::stop));
+#endif
+        // Number of outer loops to measure after initialization.
+        long outer_loops;
+        
+        if (!getLongArg(i,args,outer_loops)) {
+          cerr << "Usage -bench <outer_loops>" << endl;
+          exit(1);
+        }
+
+        // Create the benchmark helper.
+        Afr::BenchHelper *b = new Afr::BenchHelper( rtrt, outer_loops );
+
+        // Check to see if all threads are initialized in 100 "frames"
+        rtrt->addOneShotCallback(RTRTInterface::Relative, 10,
+                                                                             
                                                   Callback::create(b, 
&Afr::BenchHelper::tryStart));
+
+        
       } else if(arg == "-camera"){
                                string s;
                                if(!getStringArg(i, args, s))

Modified: branches/AFR/UserInterface/CMakeLists.txt
==============================================================================
--- branches/AFR/UserInterface/CMakeLists.txt   (original)
+++ branches/AFR/UserInterface/CMakeLists.txt   Mon Aug 29 15:49:04 2005
@@ -1,5 +1,10 @@
 
-ADD_LIBRARY (Manta_UserInterface PromptUI.cc XWindowUI.cc)
+ADD_LIBRARY (Manta_UserInterface
+            PromptUI.h 
+            PromptUI.cc
+            XWindowUI.h 
+            XWindowUI.cc
+            NullUI.h)
 TARGET_LINK_LIBRARIES(Manta_UserInterface Manta_Interface
                       Manta_Core_XUtils Manta_Core)
 TARGET_LINK_LIBRARIES(Manta_UserInterface ${OPENGL_LIBRARIES} 
${X11_LIBRARIES})




  • [MANTA] r513 - in branches/AFR: Engine/Control Engine/ImageTraversers Engine/ImageTraversers/AFR Interface StandAlone UserInterface, abe, 08/29/2005

Archive powered by MHonArc 2.6.16.

Top of page