Is it possible to add GPU affinity for Arnold?
Submitting to 8x GPU box with 1x worker uses all cards, but splitting into 4 workers with 2 cards each crashes the machine. Running 1/4 workers shows the job is still processing on all 8 cards.
https://docs.arnoldrenderer.com/display/A5ARP/Getting+Started+With+Arnold+GPU
CUDA_VISIBLE_DEVICES
This env var is on the docs, but seems a bit global
I sent a ticket to SolidAngle and they said it works like this
kick -i /mnt/path/to/your/scene.ass -device GPU -gpu 0 1
So it should be possible to incorporate this into the Arnold standalone and application plugins?
— update —
I have a ticket open for this (107936), Thinkbox are aware of this and hopefully will be integrated in the future
1 Like
Hi Anthony
Do you know if they made any progress with this? We are facing the exact same issue (well ours didn’t crash, some workers processed the scene and some just hung waiting pretty patiently doing nothing for 11 hours).
We hadn’t come across it until we tried GPU
1 Like
no, i think i didn’t look back into this, the docs have been updated to point to the autodesk site now
GPU FAQ
https://help.autodesk.com/view/ARNOL/ENU/?guid=arnold_user_guide_ac_arnold_gpu_ac_gpu_faq_html
GPU Limitations
https://help.autodesk.com/view/ARNOL/ENU/?guid=arnold_user_guide_ac_arnold_gpu_ac_features_limitations_html
Which version of Arnold (and/or host app) are you using? Which GPU’s are you using?
It’s worth submitting a very basic scene to see if it functions at all, then check the release notes for your version to see if there’s any known caveats.
PSA for anyone having failing GPU renders, Arnold GPU seems to crash when using over 3 cards, adding the first 3 devices into the selection box (0 1 2) seems to allow renders through, beyond that it crashes
You can modify the Arnold plugin python file to add more render arguments to Kick command line render process. Looking at the code, the RenderArgument(self)
function handles the making of the argument for the task render process. Here is the sample code you can use:
This will give you the list of the GPU specified under GPU affinity of the worker without ‘,’ separators
if self.OverrideGpuAffinity():
selectedGPUs = self.GpuAffinity()
gpulist = []
for gpu in selectedGPUs:
gpulist.append(gpu)
gpulist1 = " ".join( str(gpu) for gpu in gpulist )
arguments += " -device GPU"
arguments += " -gpu " + gpulist1
I have also patched a file for you to test. You would need to specify the GPU core override under Deadline Worker > Modify Worker Properties > GPU Affinity. I have not tested this code with an actual render of Arnold.
Backup and replace the “DeadlineRepository10\plugins\Arnold\Arnold.py” with the one in the attachment. Do let us know how it goes.
Arnold.py (12.9 KB)
2 Likes