Cycles Distributed Rendering

"second is to use this: https://gitlab.com/skororu/dtr I really would like to use it but changing my farm host names will destroy my workflow with other programs…

Can describe how you’d like the script to handle your hostnames? The script is under active development, and I’m always happy to consider adding new features.

Currently you can specify render nodes using the following methods in the config file:

node=192.168.0.128 (username render on node 192.168.0.128)
[email protected] (username alice on node 192.168.0.187)
node=bob@pixie (username bob on node pixie)
node=unicorn (username render on node unicorn)

S

Yes, www.github.com/jamesyonan/brenda this is distributed rendering on the amazon ec2 cloud, it works very well, not to difficult to setup and it’s cheap. Because I’m on windows I setup a Linux server vm to manage my ec2 rendering, and I use s3browser to upload my render files to s3. Read the help at the website above and get started.
There is also a detailed explanation on you tube just search james yonan Brenda, 1 hour lecture on how it works!

www.github.com/jamesyonan/brenda does subframe rendering on multiple nodes, look into it. it’s cheap and quick, gpu rendering is possible but expensive on aws.amazon.com.

Well, all those alternatives are quiet alternatives to, using a previous example, modo´s way. You simply put modo in slave mode and launch a render from other computer.
Loki works well depending on computers and the scene. It´s a very good approach.
The other alternatives for DP(all of them) needs a lot of configuration, manipulation, knowledge,…I´m not a linux expert, i´m a designer. What I need is a relative simple tool.

So blender cycles does not natively support per frame network rendering and distributed network rendering?
First issue is no biggie I can copy blender on another computer and render frame ranges there for animation.
But distributed single frame renderer would be great as already mentioned useful for look dev.

Is it really less than 300kb?

I’m getting this error when running it.

Edit I updted java it seems to run now.

I’ve been trying to make Loki render work its saving out blank renders. Even a simple cube in a scene. :smiley:
Does it support 2.78b?

Edit. I got it working when I disabled automatic cache. Strange.

Just wanted to let you know this is going to be included in the next version of BitWrk. In fact, it’s already in the code https://github.com/indyjo/bitwrk/issues/128.

Local workers will receive local jobs, without involving the BitWrk service.

Any wishes/suggestions?

Not sure if there is still interest in it, but i had modified a script to do just that (the original question of this thread).
As i once needed to print out large pamflets with a rendering (huge prints).
the script basically used bordered rendering (and had a tile loop).
it was possible to split up an image into several parts, or one could split it over a few pc’s.
Not sure if i still got it let me know if you need it.

For those wanting network rendering without using Blenders network render tool. Just set “Use Placeholders” and make sure overwrite is not checked. Then you can simply open blender on each machine and render the same scene to the same folder on your network. Each machine will just skip images (due to placeholder) and select the next missing image to render out. No need to do frame ranges or anything like that. Of course this is not single frame rendering.

Just a small screencap to demonstrate how to setup the network rendering master using the upcoming version of BitWrk. A similar procedure must be performed for every worker computer. Alternatively, everything can be done on the command line.

Feel free to post suggestions/hints!

Ok, here it is: single-frame network rendering for Blender using BitWrk.

I just released version 0.6.0-RC1 and I’ll be very happy to hear your opinions. It’s a release candidate meant for testing before I announce the actual version 0.6.0.

Downloads for Mac and Windows.

The network rendering use case is supported (see video in my last post) as well as peer-to-peer rendering.

I am currently running two servers providing rendering power (for Blender 2.78, 512M) for FREE, so please go ahead and make them melt! Simply set “BTC 0” as price for your bids. Absolutely no registration required.

Have fun!

Hi folks quick question:

i work at Wayne state and was contacted by science people to see if we can make Blender run on the network grid.

The Grid currently has the combined processing power of 8,212 cores runs Rocks version 6.1 and CentOS 6. These resources are managed by Altair’s PBS Professional 12 job scheduler.

I log in via ssh and run a job script to submit work to the queue.

I have two questions:

On one node that has n amount of GPUs it is easy to access the GPUs but I noticed the K40 are only running with 30% each.
Any idea why this might happen?

For CPU rendering across nodes does blender even allow tile based rendering ? One tile per new CPU-node?

I looked into many of the add-ones but I don’t thing this will work for us.
I have to ask the guys maintain the grid but to my understanding PBS launches Blender on each selected device and then quites it.
so one cannot launch x amount of Blender and keep them in slave mode.

I have the feeling that just because of this blender cannot be used the same way as on renderframs that have blender as an engine installed. Or am I wrong?

Hi Claas, how’s it going?

I can only comment on your second question. If you start Blender with a script, e.g. using a command line such as

blender --background myfile.blend -F EXR --render-output output -Y -noaudio -E CYCLES -P script.py --render-frame 42

you can pass in a script that is executed first. In the script, you may setup a render border:


percentage = render.resolution_percentage
resx = int(render.resolution_x * percentage / 100)
resy = int(render.resolution_y * percentage / 100)

# Add 0.5 to integer coords to avoid errors caused by rounding towards zero
render.border_min_x = (xmin+0.5) / resx
render.border_max_x = (xmax+1.5) / resx
render.border_min_y = (ymin+0.5) / resy
render.border_max_y = (ymax+1.5) / resy

render.use_border = True
render.use_crop_to_border = True

Blender will then produce a file output.exr that covers a tile from (xmin, ymin) to (xmax, ymax). That’s more or less how BitWrk does it.

As a last step, you need to find a way to download the result files and stitch them back together.

By the way, how did your experiments with BitWrk turn out? I suspect you ran into problems but I’d be interested to hear what you would need.

Jonas

Reading up here clearly shows cycles needs a userfriendly networking concept.

Scripts, stitching etc. is all stuff i don’t wanna bothered with in a production process.

No pun intended.

Jens

Claas’ use case might be a little over the top for most of us, so scripting this might be an option for him.

But did you try BitWrk? I’m trying to make it as user-friendly as possible, and some feedback from the community can only make it better.

As an old lux developer, i was thinking more of the ease if simply adding render nodes by ip where a cycles standalone waits for a render job :wink:

Imho such should be implemented straight into blender ( for the master part ) and as a cycles function in the standalone app.

For certain reasons i don’t like to handle this by third party ( stuff ).

I am aware that with tiles rendering this might be harder to realize than with progressive render modes.

Jens

Hi Jens and Indyjo

well my scenario is a little different. On a local network (class room with PCs) one could easily set-up all those add-ons.

My case is quite different because it uses the university grid computational system.
While the GPU cluster has 5 nodes with each 4 K40 GPU cards the CPU access spans few hundred PCs which makes using master slave things just not feasible to administer.

Ideally yes this network rendering should be implemented in Blender better while I am not sure how this would work on a grid vs a local network.

Indyjo I will look into how the scripting could work.

It seems with the grid there are few others issues too such as full GPU usage not present (only 30%) and I have not yet made a CPU load check. Last time I ran a job with 168 cores but the rendertime was a little hahaha slow. … But even the 64 core PC wasnt that crazy considering the 3.6ghz CPU in it.

Regarding BitWork the admins were not in favor and rather want to use the GRID than the lab computers.

Lukas added experimental network rendering to cycles a while back, I did a windows build for people testing and it worked OK, are bugs etc but worked for me in all my tests. It creates a cycles standalone network app, Just load your control version of blender, Change render type to network device, add the IP of all machines wanted to use. You have to run the command line network app on each network device (it’s in the same directory as the blender.exe) and start the render on the control PC with blender running.

I think the source is still on Lukas github page, So just build for cent OS and should be OK.