← All ideas
  • Published 29 Oct 2017

checkpointing for Cycles

Checkpointing provides incremental saving of progress during render. It allows for rendering to be interrupted and even resumed later on a different machine. Renderman is an example of software that currently supports this. One highly useful application of this feature would be in cloud rendering.

For example:

Google Cloud Platform offers what they call "Preemptible Virtual Machines" at a substantial discount. These are virtual machines that may be provisioned at a fixed lower cost, but are appropriate only for fault-tolerant workloads. Checkpointing in Cycles would allow people to render on Google Cloud Platform using preemptibles while minimizing any lost render time caused by the preemption of provisioned machines.

For more information, see:

cloud.google.com/preemptible-vms/

renderman.pixar.com/resources/current/RenderMan/risRecovery.html

100%

Development Status: Open

Upvote 1 Downvote 0
jbklug
29 Oct 2017

6 Comments

jason

Just as a follow-up, I believe a feature similar to this proposal has been committed to Blender's master branch.

jason

How would this work on renders that use the Node Compositor? Would the compositor process just be postponed/disabled until the full frame completes rendering?

Also, what would the user interface for this feature look like in Blender? Would it simply be a pause/checkpoint button? Where would that button be located (UV/Image Editor? Render Properties?). Mock-up screenshots would help.

jbklug Author

Good questions. I think the compositing pipeline would be deferred. Checkpointing seems appropriate mainly for Cycles only. As for the user interface, I have to say I'm really only interested in something like "--checkpoint" as a command line parameter. I'd like to be able to spin up 1000 preemptible virtual machines and start renders with checkpointing enabled regardless of what an artist has set in the .blend file.

jason

To that end, I think these are definitely details that you should include in your proposal.

lsscpp

To expand this: save temporary EXR every X samples could be a start. The tile render goes in steps and saves a full-image temp Multilayer EXR. It would be useful to save renders in case of crash or powerfailure. Or even for just previewing. Then a further step would be an additional temp meta file with all rendering data, to be able to restart a render from the checkpoint state