Автор Тема: Out of memory при визуализации с несколькими GPU  (Прочитано 6251 раз)

Оффлайн chjohn

  • Житель
Добрый день.
Windows 10 Pro (с включенным автообновлением).
Blender 2.92 (хотя версия особо не влияет)
GPU 2060 super 4 шт. (версия драйверов актуальная на данный момент) + GTX 750 для монитора.

Две карты подключен через 10 сантиметровый сайзер (pci-e x1) а две через сайзер выполненный "через USB провод" (полагаю тоже pci-e x1).

Выбор RTX или CUDA особо не влияет.

У меня сцены не большие, при визуализации Blender показывает использование памяти не больше 1 Гигабайта (GPU-Z и nvidia-smi похожие данные показывают).

Однако после нескольких запусков визуализации, выскакивает ошибка Out of memory или более развернутая ошибка, опять же связанная с "нехваткой памяти".

После того как в настройках Blender отключаю одну видео карта, визуализация запускается.
Через некоторое время опять может выскочить "Out of memory" и переключение карт возобновляет работу.

Бывает Blender при запуске рендера крашится.

Для того что бы запустить визуализацию на всех GPU приходится полностью выключать станцию и запускать заново.

Могут ли сайзеры влиять на работу GPU или причина в чем то ином ?

Оффлайн Николай Николаев

  • Житель
  • emerge --keep-going
Память видеоплат не суммируются и лимитируерся минимально доступной из всех устройств. .
Возможно в визуализации задействовано такое устройство. И как вариант - требуется его исключить.

       

Оффлайн chjohn

  • Житель
Я указал что для визуализации используются только 2060 а там 8Gb памяти в каждой, из этого делаю вывод что проблема не в объеме памяти GPU устройств.

Одна и та же сцена может 29 раз запускается на визуализацию а на 30-ый раз выдать Out of memory.

Оффлайн Николай Николаев

  • Житель
  • emerge --keep-going
>> Одна и та же сцена может 29 раз запускается на визуализацию а на 30-ый раз выдать Out of memory.
... это похоже на утечку памяти ...
... такие проблемы плохо отлавливаются ...
... если есть возможность, выложи файл с моделью в сеть ...

Оффлайн ThreeDancingFlies

  • Житель
Может конечно и утечка, но возможна аппаратная проблема  с памятью на одном из ГПУ -протестируй VMT
nvidia-smi  -l 1 и мониторь, в нормальном режиме и с ошибкой сравни может что-то покажет
на винде вообще лучше не рендерить ставь линукс без ГУИ будет быстрее

Оффлайн chjohn

  • Житель
Добавил к установленной (8Гб) системной памяти еще 8Гб.
И как не странно, ошибка (Out of memory) практические исчезла.
Иногда появляется, когда во viewport включен рендер и пытаюсь запустить "основной" рендер, после выключения превью рендера, всё запускается.

Что интересно, что до, что после установки памяти, диспетчер задач показывает что памяти используется не больше 5Гб.

Оффлайн Николай Николаев

  • Житель
  • emerge --keep-going
... а что показывают средства мониторинга памяти при визуализации? до и после сообщения об ошибке? ...

Оффлайн chjohn

  • Житель
Re: Out of memory при визуализации с несколькими GPU
« Ответ #7 : 01 Апрель 2021, 10:04:37 »
До начала визуализации (запуск blender-а сразу после запуска системы)

В процессе визуализации

Загруженность GPU


Что странно nvidia-smi показывает загрузку GPU 100% а диспетчер задач показывает 1-3% кроме одного GPU.

Оффлайн Николай Николаев

  • Житель
  • emerge --keep-going
Re: Out of memory при визуализации с несколькими GPU
« Ответ #8 : 01 Апрель 2021, 13:17:55 »
... то есть очевидных проблем с нехваткой памяти нет ...
... выкладывай файл с моделью для тестирования ...

Оффлайн chjohn

  • Житель
Re: Out of memory при визуализации с несколькими GPU
« Ответ #9 : 12 Февраль 2022, 14:19:31 »
По пришествию времени, образовались такие мысли:

При запуске визуализации, Cycle подготавливает данные ("упаковывает") для отправки в GPU. Однако в общем случае предполагается что GPU\драйверы могут быть разные и по сути Cycle подготавливает данные для каждой GPU свой комплект данных, даже если все GPU абсолютно одинаковые.

Т.е. сцена которая вести 2G и отправляется на 4 GPU, "съедает" 8GB системной памяти.

Так же есть предположение что эти данные копируются из RAM в GPU напрямую "минуя" CPU, через PCIe, поэтому все нужно хранить в системной памяти и как следствие файл подкачки роли не играет.

И как результирующее предположение - если в системе N GPU с M Gb RAM то нужно иметь N*M Gb системной памяти.

На данный момент в станции установлено 64Gb RAM, являются ли вывод верные не знаю, но на данный момент проблемы с Out of memory не проявляются.

Оффлайн Samovar

  • Житель
Re: Out of memory при визуализации с несколькими GPU
« Ответ #10 : 12 Февраль 2022, 14:52:03 »
chjohn, все текстуры должны быть размером степени двойки, ...256х256, 512х512, 1024х1024, 2048х2048 ... а если, допустим, у тебя текстура 1025х513, то она будет занимать видеопамяти 2048х2048, если я ничего не путаю... плюс ещё видюха их мип-маппит. Для текстуры 1024х1024 в видеопамяти создаются её уменьшенные копии: 512х512, 256х256, 128х128, 64х64, 32х32, 16х16, 8х8, 4х4 и 2х2... всё это и жрёт видеопамять... сама геометрия жрёт видиопамяти гораздо меньше... скорость рендеринга зависит от частоты вызовов отрисовки draw сalls. Чем их меньше, тем быстрее рендеринг. Поэтому создают текстурные атласы для нескольких объектов, куда запекают все их текстуры, чтобы уменьшить количество вызовов и ускорить рендеринг...сжиамют чёрнобелые и текстуру нормалей для PBR шейдинга и старого, в одну цветную, используя каналы RGBA...
https://habr.com/ru/post/206386/
https://habr.com/ru/post/206386/

Оффлайн Николай Николаев

  • Житель
  • emerge --keep-going
Re: Out of memory при визуализации с несколькими GPU
« Ответ #11 : 12 Февраль 2022, 16:19:34 »
>>И как результирующее предположение - если в системе N GPU с M Gb RAM то нужно иметь N*M Gb системной памяти.
Думаю стоит учесть, что память устройств GPU не суммируется (да,да, не суммируется), а лимитируется по наименьшему из доступных значений.