POV-Ray : Newsgroups : povray.off-topic : Need help with an algorithm : Need help with an algorithm Server Time
4 Nov 2024 13:23:38 EST (-0500)
  Need help with an algorithm  
From: Nicolas Alvarez
Date: 26 Mar 2008 18:09:18
Message: <47ead79e$1@news.povray.org>
As you have probably heard before, I have a POV-Ray renderfarm. When I 
rendered the cups scene from the "waste of time!" thread on p.b.i, I had 
some tiles take 3 seconds (pure plain floor; most of the spent time was 
decompressing the photon map, not POV-Ray itself), and others take 15 
minutes. I don't like the wasted overhead with super-short tiles. But I 
can't just increase the tile size, because then other tiles may be so 
slow they may end up hanging around while lots of other computers are idle.

So... I need a way to split tiles to get somewhat evenly distributed 
render time. I know it's impossible to get them all take exactly the 
same time, but at least I'd like them all within the same order of 
magnitude ;)

I made a script that uses a quad tree. It reads a histogram image 
generated by POV-Ray, splits it in four, and sums the pixel color on 
each of the four areas. Then it checks which has the highest sum, and 
splits that one once more. Then again calculates sums on each area (7 
areas at this level), gets highest, and splits. The stop condition could 
be anything: the number of tiles, or the smallest tile size, or the 
speed of the slowest tile.

And uhm... Seemed to work fine.

http://stuff.povaddict.com.ar/split.png
http://stuff.povaddict.com.ar/split2.png

Sort of.

I noticed doing this I definitely get rid of all tiles slower than a 
certain value, but I don't really get evenly distributed times. In one 
test, the "fastest" tile had a sum of 3210 (this is the sum of pixels in 
the histogram image; in some unspecified unit) and the fastest had 
61467. That's too varying. It could very well mean 2 minutes and 40 
minutes respectively.

The problem seems to be when splitting a slow area that contains one 
fast area and one very slow area (relatively, in pixels per second; of 
course it's faster than the big tile it belongs to!).

Any ideas? I'll post some more images later.


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.