Manta Interactive Ray Tracer Development Mailing List

Text archives Help


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


Chronological Thread 
  • From: Solomon Boulos <boulos@cs.utah.edu>
  • Cc: MANTA <manta@sci.utah.edu>
  • Subject: Re: [Manta] r1933 - trunk/Engine/LoadBalancers
  • Date: Sun, 16 Dec 2007 16:31:12 -0800

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