AWS Thinkbox Discussion Forums

Gaffer support?

I’m curious to know if Thinkbox has any plans to add support for Gaffer (http://www.gafferhq.org/) any time?

It’s an open source tool from Image Engine that does some really cool stuff, some aspects of Katana as well as other things. On top of geometry and image processing it can take a whole bunch of tasks and submit them to a render farm including dependencies. Seems like a natural fit for Deadline.

If not I’ll probably write my own plugin, but figured I’d check so I’m not needlessly duplicating work.

Not yet, but we’re definitely willing to lend a hand! (By answering forum threads :smiley:)

any news about gaffer support ? from thinkbox or someone else ?
this software is the futur !

You’re only the second person to ask so far. :slight_smile:

I’ve updated the internal tracker for this, but so far the demand isn’t quite there yet.

We’re now implementing Katana, but a more full featured Gaffer pipeline would definitely be interesting.

I have a pretty solid Deadline plugin + Gaffer Dispatcher going that I’m planning on open sourcing, hopefully in early-mid January.

I have a little more to do on cleaning up unit testing and then I’ll post it and see how it works for you guys.

3 Likes

sounds great ! do you have a git or something to follow / help you on this ?

hi, from what I see, many people want this but doesn’t take time to ask it to aws

Whiskytree has already made their own plugin for deadline and use it in production
Dwarf studio (next to me, in montpellier France) is working on too
some talk from Whiskytree about gaffer and deadline in this video

http://www.gafferhq.org/news/siggraph-2018-presentation/

It’s been a long time coming but I finally have my Deadline dispatcher for Gaffer up on GitHub: https://github.com/hypothetical-inc/GafferDeadline. It should handle any Gaffer graph you can come up with - it falls back to a scripted dependency scheme if normal frame-to-frame and job-to-job won’t work.

I hope you guys find it useful!

3 Likes

Nice, thanks! Been checking Gaffer out.

Can someone gives a hand to add gpu affinity support to @egmehl 's gaffer tool ?

bests

Hey William, I can try and help you out some more, it may be a better topic for github: cannot affect GPU to task · Issue #10 · hypothetical-inc/GafferDeadline · GitHub

1 Like

Hi @egmehl,

We are able to use the GafferDeadline plugin for our Deadline rendering at Fractal and that’s working really nicely for us. So first of all a big thank you.

While we are able to add additional Deadline Settings such as “Name” and “OutputDirectory0” etc.

Wondering how to add the rendering threads param to the Gaffer rendering job for Deadline. So that the same (int) value can be picked up by the constructed full command line and the same will be respected when the job/task is rendered on a multi-core machine?

For the job’s “Gaffer Settings” section we don’t see a way to pass “-threads”

Additionally, for reference and context: Initial Deadline Setup Issues & Help Required - #15 by Fractal_Admin

Thanks,
Bhavik
Fractal Picture

Great to hear it’s working for you Bhavik!

For the threads, how would you ideally like to be able to use it? There are a few places I can think of where you might want to set the thread count

  1. Per Gaffer task - which would be in the settings panel from your top screen shot, along with Priority, etc.
  2. Per Deadline worker - which I expect GafferDeadline would get the value based on the Deadline Worker’s CPU affinity

I think it would make sense to look at both of those values and set the number of threads the lesser of the two.

Would that cover the uses you need? Are there any other places you need to set the thread count?

1 Like

Hi @egmehl the goal is to pass the flag -threads n to the final command line being constructed and executed by Deadline. It would be something like this:

gaffer execute -threads 16 -script comp.gfr -nodes ImageWriter -frames 1-10

for say a 72-core render node. So with the Deadline Job Properties → General → Concurrent Tasks we can set it to 4 and run four concurrent rendering tasks/frames on the same Deadline worker.

Currently, also this method of Deadline’s Concurrent Tasks count is working and we are able to run multiple concurrent tasks/frames on the same Deadline Worker. However, I believe that with the ability to pass -threads n to the Gaffer execute command line, we will be able to tell the rendering process to use only a fixed no of rendering threads/cores and prevent it from oversubscribing all the available CPU Cores of the given Deadline worker.

And as you pointed out correctly the Dispatcher section of the ArnoldRender node allows for an option to set Concurrent Tasks but I couldn’t find out or figure out how to pass -threads n for the Deadline’s submission parameters and have it passed for the actual command execution by the Deadline worker.

Hope that explains it and makes sense.

Please let me know if there are any questions.

Thanks,
Bhavik
Fractal Picture

Hey Bhavik,
I added the thread support tonight. It’s not in a release yet, I have a few more things to add for the next release, but you can get the same package as a release would have by downloading the code from the main (only) branch on GitHub - hypothetical-inc/GafferDeadline: Deadline Dispatcher for Gaffer.

There are two ways to set the number of threads to use :

  1. The Dispatcher options in Gaffer has a plug where you can set the number of threads to use. If it’s 0, it will be ignored.
  2. You can set the CPU Affinity Override of the Deadline Worker. Gaffer will then use the number of CPUs enabled as its thread count.
  3. If neither of those are set, it will use all available CPUs / cores.
  4. If both are set, it will use the lesser number of threads from either option #1 or #2 above.

Let me know, or open an issue on the Github page if you run into any troubles!

2 Likes

Hey Eric @egmehl

Many thanks for integrating this so quickly and apologies couldn’t respond to this thread sooner.

We will give it a try soon.

This is very neat (two thumbs up) and If I understand correctly, when the Gaffer job is submitted without the option -thread n the below configuration for the given Worker will automatically pass -thread 40, is that correct?

and on the same lines, for heterogeneous Deadline Workers with a mix of various CPU/Cores/Threads count this method will pass the dynamic rendering thread count -thread n value to Gaffer execute command depending on the respective Deadline Worker’s CPU Affinity, is that so?

Thanks,
Bhavik
Fractal Picture

Yes, you are correct on all counts. It will always respect the number of threads made available by CPU Affinity, and if a specific job requests even fewer threads, it will use that lower number.

Got it thanks @egmehl

Privacy | Site terms | Cookie preferences