Иногда для эффективного распределения нагрузки на “железо” бывает нужно запустить рендер из Blender только на определенных видеокартах их нескольких имеющихся.
Для этого можно использовать несложный скрипт, в котором указать номера используемых для рендера устройств.
Для начала нужно определить, в каком порядке и под какими номерами Blender видит имеющиеся видеокарты.
Для этого откроем в Blender текстовый редактор, вставим в него следующий скрипт:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import bpy def enable_gpus(device_type, use_cpus=False): preferences = bpy.context.preferences cycles_preferences = preferences.addons["cycles"].preferences cuda_devices, opencl_devices = cycles_preferences.get_devices() if device_type == "CUDA": devices = cuda_devices elif device_type == "OPENCL": devices = opencl_devices else: raise RuntimeError("Unsupported device type") for i,device in enumerate(devices): print("%i %s %s " % (i,device.type,device.name)) enable_gpus("CUDA") |
Нажмите на кнопку “Run Script” для его выполнения, после чего в системной консоли (Window – Toggle System Console) будет отображен список доступных видеокарт с их порядковыми номерами.
Определившись с нужными номерами, создайте в любом текстовом редакторе файл с именем custom_gpu_render.py, вставьте в него следующий скрипт и сохраните в нужное место.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
import bpy def enable_gpus(device_type,device_list): preferences = bpy.context.preferences cycles_preferences = preferences.addons["cycles"].preferences cuda_devices, opencl_devices = cycles_preferences.get_devices() if device_type == "CUDA": devices = cuda_devices elif device_type == "OPENCL": devices = opencl_devices else: raise RuntimeError("Unsupported device type") activated_gpus = [] for i,device in enumerate(devices): if (i in device_list): device.use = True activated_gpus.append(device.name) else: device.use = False cycles_preferences.compute_device_type = device_type for scene in bpy.data.scenes: scene.cycles.device = "GPU" return activated_gpus ######################### dev_list = [0, 3] ######################### gpus = enable_gpus("CUDA", dev_list) print("Activated gpu's: ") print(gpus) |
В списке
1 2 3 |
######################### dev_list = [0, 3] ######################### |
в квадратных скобках через запятую укажите номера нужных видеокарт. Скрипт в текущем примере будет использовать видеокарты под номерами 0 и 3.
Для того чтобы запустить рендер с подключением данного скрипта, в командной строке консоли введите:
для ОС Windows (все файлы размещены в корне диска D):
1 |
"c:\Program Files\blender-2.81a-windows64\blender.exe" -b d:\file_to_render.blend -P d:\custom_gpu_render.py |
для ОС Linux (все нужные файлы размещены в директории /tmp):
1 |
blender -b /tmp/file_to_render.blend -P /tmp/custom_gpu_render.py |
В процессе рендера Blender будет использовать только указанные вами видеокарты.
Автор скриптов Виктор Мукаев.