HaveAGitGat / Tdarr

Tdarr - Distributed transcode automation using FFmpeg/HandBrake + Audio/Video library analytics + video health checking (Windows, macOS, Linux & Docker)
Other
2.83k stars 90 forks source link

Select GPU per node #944

Open Funtime60 opened 6 months ago

Funtime60 commented 6 months ago

Is your feature request related to a problem? Please describe. While I see that multi gpu support was added for classic plugins, it either isn't available or isn't obvious with the new flows.

Describe the solution you'd like I would like the ability to set the ffmpeg GPU selection parameter based the node. That way I could just run two nodes on my dual GPU machine and set one GPU to each node.

Describe alternatives you've considered I haven't considered any other options as it's late at night and I cannot think on demand.

Additional context Potentially this could be expanded to allow for more variables to be stored/used per nodes.

HaveAGitGat commented 4 months ago

Simple way to do this is to run 2 Node Docker containers and assign a GPU to each with the Docker container settings, that way they're kept independent. Doing it with a single Node is a bit trickier, the 'Set Video Encoder' flow plugin should auto select the GPU with least utilisation but does not work in all cases.

Funtime60 commented 4 months ago

The issue is that this was in response to an issue on a native Windows node. I don't know if you can passthrough on docker desktop but even if you can it's not a good solution.

As for the auto GPU selection on a single node, I don't recall it ever touching the second GPU, but I'm probably wrong.

It still doesn't help with health checks.

On Wed, Feb 28, 2024, 6:24 PM HaveAGitGat @.***> wrote:

Simple way to do this is to run 2 Node Docker containers and assign a GPU to each with the Docker container settings, that way they're kept independent. Doing it with a single Node is a bit trickier, the 'Set Video Encoder' flow plugin should auto select the GPU with least utilisation but does not work in all cases.

— Reply to this email directly, view it on GitHub https://github.com/HaveAGitGat/Tdarr/issues/944#issuecomment-1970210153, or unsubscribe https://github.com/notifications/unsubscribe-auth/AF3U3U32DR6PQ2PNEL5YN3TYV2BMBAVCNFSM6AAAAABBQ76A5GVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNZQGIYTAMJVGM . You are receiving this because you authored the thread.Message ID: @.***>

HaveAGitGat commented 1 month ago

You could try using the Custom Arguments plugin and then put -hwaccel_device 0 -gpu 0 for one node and -hwaccel_device 1 -gpu 1.

You can check the node details using Check Flow Variable and checking {{{args.deps.configVars.config.nodeID}}} or {{{args.deps.configVars.config.nodeName}}}