Was thinking about the whole issue of a few buckets holding up a render. Would it be possible that once all buckets have been assigned and computers start to finish. Rather than have them become idle, it will take an unfinished bucket, stop it, and sudivide it into 16 peices and then have the machines work on the smaller peices instead.
Announcement
Collapse
No announcement yet.
DR: Subdivide Final Buckets
Collapse
X
-
DR: Subdivide Final Buckets
Jeff Adams - Freelance Architectural Illustrator
http://www.jamodeler.com/freelance/Tags: None
-
unfortunately this is not possible. Once a bucket gets a cpu assignment and starts rendering, there is no way to stop that and add more cpus to it. What you may do is just set your buckets to smaller size. If you have too many cpus...then having them at 32x32 or 48x48 for average size images is going to make a difference.Dmitry Vinnik
Silhouette Images Inc.
ShowReel:
https://www.youtube.com/watch?v=qxSJlvSwAhA
https://www.linkedin.com/in/dmitry-v...-identity-name
Comment
-
from my conversations with vlado, this is not an easy task. I thought of something else rather, you can assign a cpu to a number of rays, rather then buckets, and then specify the depth of the rays...the further the depth the better the rendering is...but that way. each cpu can work in a bulk of rays, probably increasing overall performance.
Not sure how practical that would be though.Dmitry Vinnik
Silhouette Images Inc.
ShowReel:
https://www.youtube.com/watch?v=qxSJlvSwAhA
https://www.linkedin.com/in/dmitry-v...-identity-name
Comment
-
Originally posted by Morbid Angel View Postfrom my conversations with vlado, this is not an easy task. I thought of something else rather, you can assign a cpu to a number of rays, rather then buckets, and then specify the depth of the rays...the further the depth the better the rendering is...but that way. each cpu can work in a bulk of rays, probably increasing overall performance.
Not sure how practical that would be though.
Comment
-
I guess you could make it so that the last set of buckets is internally subdivided into smaller ones. But what that would mean is, if a last bucket on one thread would render for couple of minutes, if its devided between say 4 smaller buckets, and gets 4 threads, its not that better, because each bucket border has to be anti-aliased twice to ensure smooth transition. Its just the same as if you make the default bucket to be 8x8 for example, and even if you have 50 threads, they will render much longer, because of the high aa in the border areas.Dmitry Vinnik
Silhouette Images Inc.
ShowReel:
https://www.youtube.com/watch?v=qxSJlvSwAhA
https://www.linkedin.com/in/dmitry-v...-identity-name
Comment
-
and the time that the cpus will take to calculate these "more AA" will be longer than the fact that there will be more power allocated to the bucket initial size ?
lets say :
1 core = 1 bucket = 10 minutes
"normaly" : 10 cores = on 1 bucket = 1 minute
due to the fact that the AA hase to be calculated, say that with 10 core it's not 1 minute but 2
you will still have win some time 10min VS 2min, even with the fact that it have to calculate that AA.
maby am I wrong, and that the AA is "so" long that even with more core, the cpu power doesn't reverse the time waiting?
Stan3LP Team
Comment
-
Im not a math genius by far, but the x2 aliasing along the border will not equal to 2 minutes as oppose to 1. Its something more like minutes power of 2, not sure though.
Its simple, run a small test, with smaller bucket size vs an average size.Dmitry Vinnik
Silhouette Images Inc.
ShowReel:
https://www.youtube.com/watch?v=qxSJlvSwAhA
https://www.linkedin.com/in/dmitry-v...-identity-name
Comment
-
If the buckets are a known number, and the number of threads known, could the last buckets be divided before they are assigned?
So if there's 8 buckets left to assign, and 4 threads, the last 4 buckets are halved in before they are assigned.
Comment
-
I guess its possible. But, I can assume its a hell of a lot of code, for a small speed increase...Dmitry Vinnik
Silhouette Images Inc.
ShowReel:
https://www.youtube.com/watch?v=qxSJlvSwAhA
https://www.linkedin.com/in/dmitry-v...-identity-name
Comment
-
so I ran some tests. Not in vray however, because I don't have it at work. But the formula should be relatively similar between mr and vray.
I had rendered a some what complicated scene with a resolution of 64x64 and using bucket size of 64, thus only one thread had rendered it out of the 8 that I have.
Then I have subdivided the bucket size into 16 pixels, which ment 4 threads have rendered the scene. Then I have subdivided into 8 pixels, which ment that 8 threads have rendered the scene.
The times were:
for 1 thread of 64 pixels, for 64x64 (resolution) I got 24 seconds.
for 4 threads of 16 pixels, for 64x64 (resolution) I got 7 seconds.
for 8 threads of 8 pixels, for 64x64 (resolution) I got 4 seconds.
So I guess it does indeed makes sense to subdivide final buckets into say 4 or 8, it could be a user specified option.Dmitry Vinnik
Silhouette Images Inc.
ShowReel:
https://www.youtube.com/watch?v=qxSJlvSwAhA
https://www.linkedin.com/in/dmitry-v...-identity-name
Comment
-
and lastly I ran a test with vray in 3ds max. same setup as before single scene with 64x64 pixels on single 64 pixel thread has rendered in 30 seconds, then with 4 threads at 16 pixels in 15 seconds, and 8 threads with 8 pixels in 7 seconds.Dmitry Vinnik
Silhouette Images Inc.
ShowReel:
https://www.youtube.com/watch?v=qxSJlvSwAhA
https://www.linkedin.com/in/dmitry-v...-identity-name
Comment
Comment