Manta Interactive Ray Tracer Development Mailing List

Text archives Help


Re: [Manta] r1933 - trunk/Engine/LoadBalancers


Chronological Thread 
  • From: "Steven G. Parker" <sparker@cs.utah.edu>
  • To: Solomon Boulos <boulos@cs.utah.edu>
  • Cc: MANTA <manta@sci.utah.edu>
  • Subject: Re: [Manta] r1933 - trunk/Engine/LoadBalancers
  • Date: Sun, 16 Dec 2007 17:40:13 -0700

A smaller value might help for a a cache-intensive scene that is also fairly load-balanced (by grouping together more tiles). However, it probably does make sense to increase the default. A task stealing lb is probably an even better idea.

Steve


On Dec 16, 2007, at 5:31 PM, Solomon Boulos wrote:

Note, I didn't see a difference on my machine for bin/manta even when I cranked up the granularity to 100000. Why is the default so small? It doesn't seem to benefit us at all...

On Dec 16, 2007, at 4:28 PM, boulos@sci.utah.edu wrote:

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