Здесь показаны различия между двумя версиями данной страницы.
Следующая версия | Предыдущая версия | ||
пгниу-кеплер:по:blender [24.10.2016 15:39:45] 127.0.0.1 внешнее изменение |
— (текущий) | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Работа с Blender ====== | ||
- | ===== Что делать до использования? ===== | ||
- | Перед использованием необходимо загрузить модуль: | ||
- | <code>module load blender/2.77a </code> | ||
- | ===== Где расположен в системе? ===== | ||
- | Blender установлен в: | ||
- | <code> /shared/opt/blender/2.77a/ </code> | ||
- | ===== Запуск на CPU ===== | ||
- | ---- | ||
- | Запуск рендера на CPU производится следующей командой: | ||
- | <code> blender -noaudio -b <путь к исходному файлу *.blend> -E CYCLES -o <путь выходного файла> -f <кол-во кадров></code> | ||
- | |||
- | В команде использованы след. ключи: | ||
- | * noaudio - нет звукового потока | ||
- | * b - использование background | ||
- | * E - использование выбранного движка для рендера | ||
- | * o - путь вывода | ||
- | * f - рендер кадров (frames), не анимации. | ||
- | |||
- | Для просмотра всех ключей и справки необходимо выполнить команду: | ||
- | <code> blender --help </code> | ||
- | **Примечание.** Запускать рендер, используя CPU можно и на управляющем узле, так и на вычислительном. | ||
- | |||
- | ===== Запуск на GPU ===== | ||
- | ---- | ||
- | Для того, чтобы запустить рендер на GPU необходимо написать скрипт на языке python (*.py). | ||
- | Скрипт должен содержать следующие строки: | ||
- | <code> | ||
- | import bpy | ||
- | bpy.context.user_preferences.system.compute_device_type = 'CUDA' | ||
- | bpy.context.user_preferences.system.compute_device = 'CUDA_MULTI_0' | ||
- | bpy.data.scenes["Scene"].cycles.device = 'GPU' | ||
- | </code> | ||
- | ---- | ||
- | |||
- | **Примечание.** Значение 'CUDA_MULTI_0' показывает, что рендер будет производиться на всех свободных картах GPU. | ||
- | Также возможно использование значения 'CUDA_0', которое показывает, что рендер будет производиться на одной карте GPU. | ||
- | |||
- | После того, как скрипт создан, путь к нему необходимо указать в команде запуска с помощью ключа P: | ||
- | |||
- | <code> blender -noaudio -b <путь к исходному файлу *.blend> -E CYCLES -o <путь выходного файла> -P <путь к скрипту> -f 1 </code> | ||
- | |||
- | **Примечание.** Рендер, с использованием GPU, возможен только с вычислительного узла. | ||
- | |||
- | ===== Как запустить рендер с дополнительными настройками, которые нельзя указать ключами ===== | ||
- | ---- | ||
- | Все интересующие настройки необходимо написать в скрипт на языке python. | ||
- | Ниже приведен пример скрипта: | ||
- | <code> | ||
- | import bpy | ||
- | #User Preferences.System.Compute device | ||
- | bpy.context.user_preferences.system.compute_device_type = 'CUDA' | ||
- | bpy.context.user_preferences.system.compute_device = 'CUDA_MULTI_0' | ||
- | #Scene.Render.Device. | ||
- | bpy.data.scenes["Scene"].cycles.device = 'GPU' | ||
- | #Scene.Render.Animation | ||
- | bpy.ops.render.render(animation=True) | ||
- | #Scene.Dimensions.Resolution.X | ||
- | bpy.data.scenes["Scene"].render.resolution_x = 1280 | ||
- | #Scene.Dimensions.Resolution.Y | ||
- | bpy.data.scenes["Scene"].render.resolution_y = 800 | ||
- | #Scene.Dimensions.Resolution.Percentage | ||
- | bpy.data.scenes["Scene"].render.resolution_percentage = 100 | ||
- | #Scene.Dimensions.Frame Range.Start frame | ||
- | bpy.data.scenes["Scene"].frame_start = 0 | ||
- | #Scene.Dimensions.Frame Range.End Frame | ||
- | bpy.data.scenes["Scene"].frame_end = 3000 | ||
- | #Scene.Dimensions.Frame Range.Frame step | ||
- | bpy.data.scenes["Scene"].frame_step = 1 | ||
- | #Scene.Dimensions.Frame Rate | ||
- | bpy.types.Menu.framerate_presents = 24 | ||
- | #Scene.Output.File format | ||
- | bpy.data.scenes["Scene"].render.image_settings.file_format = 'PNG' | ||
- | #Scene.Output.Color mode | ||
- | bpy.data.scenes["Scene"].render.image_settings.color_mode = 'RGB' | ||
- | #Scene.Output.Color depth | ||
- | bpy.data.scenes["Scene"].render.image_settings.color_depth = '16' | ||
- | #Scene.Sampling | ||
- | bpy.types.Menu.Sampling_presets = 'Final' | ||
- | #Scene.Sampling.Samples.Render | ||
- | bpy.data.scenes["Scene"].cycles.samples = 24 | ||
- | #Scene.Sampling.Samples.Preview | ||
- | bpy.data.scenes["Scene"].cycles.preview_samples = 12 | ||
- | #User Preferences.System.Anisotropic filter | ||
- | bpy.context.user_preferences.system.anisotropic_filter = 'FILTER_16' | ||
- | </code> | ||
- | |||
- | После написания скрипта необходимо указать его при запуске с ключом -P. | ||
- | |||
- | **Примечание.** Если необходимых настроек нет в данном примере, необходимо зайти в графическом режиме в Blender и навести мышь на интересующую настройку. После чего появится всплывающая иконка, как записать эту настройку на языке python. | ||
- | |||
- | ===== Оптимизация ===== | ||
- | ---- | ||
- | До этого раздела запуск рендера предполагал использование одного вычислительного узла. | ||
- | |||
- | ==== Как запустить рендер, используя все вычислительные узлы МВК ПГНИУ-Кеплер? ==== | ||
- | |||
- | Вопрос оптимизации был решен следующим образом. Имеется возможность, используя скрипты рендерить на каждом вычислительном узле определенное кол-во кадров. | ||
- | Например, на первом вычислительном узле будут рендериться с 0 по 613 кадр: | ||
- | <code> | ||
- | bpy.data.scenes["Scene"].frame_start = 0 | ||
- | bpy.data.scenes["Scene"].frame_end = 613 | ||
- | bpy.data.scenes["Scene"].frame_step = 1 | ||
- | </code> | ||
- | А на втором, с 614 по 1227 кадр: | ||
- | <code> | ||
- | bpy.data.scenes["Scene"].frame_start = 614 | ||
- | bpy.data.scenes["Scene"].frame_end = 1227 | ||
- | bpy.data.scenes["Scene"].frame_step = 1 | ||
- | </code> | ||
- | И так далее. | ||
- | |||
- | ==== Как запустить выполнение на разных вычислительных узлах? ==== | ||
- | |||
- | Запуск производится с управляющего узла с помощью планировщика задач bsub. | ||
- | Пример команды (в примере используется логирование, используя утилиту tee): | ||
- | <code> | ||
- | bsub -m "compute000" "blender -noaudio -b Scene.blend -E CYCLES -o ~/blender_results_node000/ -P exercise_gpu000.py -a |tee ~/blender_results_node000/exercise_log_000" | ||
- | </code> |