Manta Interactive Ray Tracer Development Mailing List

Text archives Help


[Manta] r1933 - trunk/Engine/LoadBalancers


Chronological Thread 
  • From: boulos@sci.utah.edu
  • To: manta@sci.utah.edu
  • Subject: [Manta] r1933 - trunk/Engine/LoadBalancers
  • Date: Sun, 16 Dec 2007 17:28:16 -0700 (MST)

Author: boulos
Date: Sun Dec 16 17:28:15 2007
New Revision: 1933

Modified:
   trunk/Engine/LoadBalancers/WQLoadBalancer.cc
   trunk/Engine/LoadBalancers/WQLoadBalancer.h
Log:
Engine/LoadBalancers/WQLoadBalancer.cc
Engine/LoadBalancers/WQLoadBalancer.h

 Adding support for specifying granularity on as an argument to the
 WorkQueue load balancer (this helps for high sample per pixel
 renderings)


Modified: trunk/Engine/LoadBalancers/WQLoadBalancer.cc
==============================================================================
--- trunk/Engine/LoadBalancers/WQLoadBalancer.cc        (original)
+++ trunk/Engine/LoadBalancers/WQLoadBalancer.cc        Sun Dec 16 17:28:15 
2007
@@ -1,7 +1,8 @@
-
+#include <Core/Exceptions/IllegalArgument.h>
+#include <Core/Util/Args.h>
+#include <Core/Util/NotFinished.h>
 #include <Engine/LoadBalancers/WQLoadBalancer.h>
 #include <Interface/Context.h>
-#include <Core/Util/NotFinished.h>
 
 using namespace Manta;
 
@@ -10,8 +11,17 @@
   return new WQLoadBalancer(args);
 }
 
-WQLoadBalancer::WQLoadBalancer(const vector<string>& /* args */)
-{
+WQLoadBalancer::WQLoadBalancer(const vector<string>& args) {
+  granularity = 5;
+  for (size_t i = 0; i < args.size(); i++) {
+    if (args[i] == "-granularity") {
+      if (!getIntArg(i, args, granularity)) {
+        throw IllegalArgument("WQLoadBalancer -granularity", i, args);
+      }
+    } else {
+      throw IllegalArgument("WQLoadBalancer", i, args);
+    }
+  }
 }
 
 WQLoadBalancer::~WQLoadBalancer()
@@ -38,23 +48,23 @@
 }
 
 void WQLoadBalancer::setupDisplayChannel(SetupContext& context,
-                                        int numAssignments)
+                                         int numAssignments)
 {
   ChannelInfo* ci = channelInfo[context.channelIndex];
   ci->numAssignments = numAssignments;
-  ci->workq.refill(ci->numAssignments, context.numProcs, 5);
+  ci->workq.refill(ci->numAssignments, context.numProcs, granularity);
 }
 
 void WQLoadBalancer::setupFrame(const RenderContext& context)
 {
   if(context.proc == 0){
     ChannelInfo* ci = channelInfo[context.channelIndex];
-    ci->workq.refill(ci->numAssignments, context.numProcs, 5);
+    ci->workq.refill(ci->numAssignments, context.numProcs, granularity);
   }
 }
 
 bool WQLoadBalancer::getNextAssignment(const RenderContext& context,
-                                      int& s, int& e)
+                                       int& s, int& e)
 {
   ChannelInfo* ci = channelInfo[context.channelIndex];
   return ci->workq.nextAssignment(s, e);

Modified: trunk/Engine/LoadBalancers/WQLoadBalancer.h
==============================================================================
--- trunk/Engine/LoadBalancers/WQLoadBalancer.h (original)
+++ trunk/Engine/LoadBalancers/WQLoadBalancer.h Sun Dec 16 17:28:15 2007
@@ -17,10 +17,10 @@
 
     virtual void setupBegin(const SetupContext&, int numChannels);
     virtual void setupDisplayChannel(SetupContext& context,
-                                    int numAssignments);
+                                     int numAssignments);
     virtual void setupFrame(const RenderContext& context);
     virtual bool getNextAssignment(const RenderContext& context,
-                                  int& start, int& end);
+                                   int& start, int& end);
 
     static LoadBalancer* create(const vector<string>& args);
   private:
@@ -34,6 +34,7 @@
       int numAssignments;
     };
     vector<ChannelInfo*> channelInfo;
+    int granularity;
   };
 }
 





Archive powered by MHonArc 2.6.16.

Top of page