====== Работа с Blender ====== ===== Что делать до использования? ===== Перед использованием необходимо загрузить модуль: module load blender/2.77a ===== Где расположен в системе? ===== Blender установлен в: /shared/opt/blender/2.77a/ ===== Запуск на CPU ===== ---- Запуск рендера на CPU производится следующей командой: blender -noaudio -b <путь к исходному файлу *.blend> -E CYCLES -o <путь выходного файла> -f <кол-во кадров> В команде использованы след. ключи: * noaudio - нет звукового потока * b - использование background * E - использование выбранного движка для рендера * o - путь вывода * f - рендер кадров (frames), не анимации. Для просмотра всех ключей и справки необходимо выполнить команду: blender --help **Примечание.** Запускать рендер, используя CPU можно и на управляющем узле, так и на вычислительном. ===== Запуск на GPU ===== ---- Для того, чтобы запустить рендер на GPU необходимо написать скрипт на языке python (*.py). Скрипт должен содержать следующие строки: 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' ---- **Примечание.** Значение 'CUDA_MULTI_0' показывает, что рендер будет производиться на всех свободных картах GPU. Также возможно использование значения 'CUDA_0', которое показывает, что рендер будет производиться на одной карте GPU. После того, как скрипт создан, путь к нему необходимо указать в команде запуска с помощью ключа P: blender -noaudio -b <путь к исходному файлу *.blend> -E CYCLES -o <путь выходного файла> -P <путь к скрипту> -f 1 **Примечание.** Рендер, с использованием GPU, возможен только с вычислительного узла. ===== Как запустить рендер с дополнительными настройками, которые нельзя указать ключами ===== ---- Все интересующие настройки необходимо написать в скрипт на языке python. Ниже приведен пример скрипта: 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' После написания скрипта необходимо указать его при запуске с ключом -P. **Примечание.** Если необходимых настроек нет в данном примере, необходимо зайти в графическом режиме в Blender и навести мышь на интересующую настройку. После чего появится всплывающая иконка, как записать эту настройку на языке python. ===== Оптимизация ===== ---- До этого раздела запуск рендера предполагал использование одного вычислительного узла. ==== Как запустить рендер, используя все вычислительные узлы МВК ПГНИУ-Кеплер? ==== Вопрос оптимизации был решен следующим образом. Имеется возможность, используя скрипты рендерить на каждом вычислительном узле определенное кол-во кадров. Например, на первом вычислительном узле будут рендериться с 0 по 613 кадр: bpy.data.scenes["Scene"].frame_start = 0 bpy.data.scenes["Scene"].frame_end = 613 bpy.data.scenes["Scene"].frame_step = 1 А на втором, с 614 по 1227 кадр: bpy.data.scenes["Scene"].frame_start = 614 bpy.data.scenes["Scene"].frame_end = 1227 bpy.data.scenes["Scene"].frame_step = 1 И так далее. ==== Как запустить выполнение на разных вычислительных узлах? ==== Запуск производится с управляющего узла с помощью планировщика задач bsub. Пример команды (в примере используется логирование, используя утилиту tee): 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"