пятница, 29 октября 2010 г.

Как отследить насколько загружен GPU при вычислениях?

Недавно меня озадачили, задав вопрос: -«А как понять, что моя видеокарта вычисляет и насколько она загружена?»
Глупый вопрос, знаю, но пришлось рассказать человеку в деталях. Как средство измерения и анализа я использую GPU-Z, отличная утилита и главное не изобилует излишним функционалом, а для мониторинга загруженности GPU, это идеальная тулза.

Скриншоты GPUZ. Закладки Graphics Card и Sensors (в состоянии без нагрузки) и Sensors (во время вычислений на GPU).
Для нашего примера, воспользуемся скриншотами состояний из GPU-Z, во время визуализации сцены с автомобилем. На что стоит обратить внимание в первую очередь. Сначала узнайте сколько шейдерных ядер у вашей модели GPU (например, у моей Quadro FX 1800 их всего 64), какой объем памяти на борту вашей карты (у Quadro FX 1800 объем графической памяти составляет 768 Мб (не так уж и много)).

Схема архитектуры NVIDIA Fermi.
Основное на что стоит собрать внимание, это с какой максимальной частотой работают шейдерные процессоры (ядра) (в терминологии NVIDIA – CUDA ядра).

Блок с CUDA ядрами в GF100 (“Fermi”)
Итак, во время вычислений нагрузка идет именно на шейдерные процессоры, они как раз и работают с программным обеспечением написанном на CUDA C.
Если взглянуть на картинку из GPU-Z, вы увидите, когда выполняются вычисления на GPU, частота шейдерных процессоров увеличивается до максимального уровня. При этом для экономии энергии и вообще для более аккуратной работы, GPU во время простоя или выполнения несложных задач, просто плавно понижает частоты.
Так же, когда идет работа с CUDA приложениями, все данные которые необходимы для вычислений и могут поместиться в память графического ускорителя, будут находиться в памяти GPU. Это и демонстрирует изображение из GPU-Z в начале этого поста.
И в заключение хочется заметить, если и этого вам мало, то в GPU-Z есть отличный пункт “GPU Load” в котором отображается загруженность GPU, и при вычислениях с помощью CUDA приложений она обычно составляет 97 – 99%.

четверг, 28 октября 2010 г.

Сцена экстерьера для mental ray & iray

Наконец доделал базовую сцену для экстерьера и полностью настроил её для визуализации в mental ray. Изначально хотел сделать с фанатизмом и т.п. прелестями в визуализации, но поняв что времени уже мягко говоря впритык, то не стал издеваться над моделью и шейдерами. Итоговый вариант, визуализированный с помощью mental ray вы видите ниже.

Сцена экстерьера автомобиля для тестов GPU ускоренных визуализаторов.
Сегодня займусь адаптацией шейдеров под iray, т.к. с автомобильными шейдерами у него крайне плохо, и не поддерживается ни один из шейдеров типов CarPaint или Metallic_Paint.
С V-Ray и V-Ray RT все намного легче, притом же создано под них огромное количество материалов и пресетов, что настроить сцену под эти два визуализатора будет гораздо легче.

суббота, 23 октября 2010 г.

Первые впечатления от V-Ray RT GPU...

Итак, прошло буквально пару дней как ко мне приехал для тестов свеженький дистрибутив V-Ray и лицензия на него. После успешной установки и настройки я получил ключ для загрузки на тесты V-Ray RT GPU beta.
Первые впечатления от рендера я сейчас здесь и отпишу.
Первое что хочется заметить, V-Ray RT Это не Production renderer как в случае с iray for 3ds Max. Его основная задача сделать высококачественную Preview визуализацию и обновлять изображение по мере изменения сцены, материалов, освещения и других элементов. Это позволит быстро осуществить настройку сцены и выполнить тестовые визуализации. В предыдущем посте я уже говорил, что со стандартной версией V-Ray RT CPU производительность на этапе настройки шейдеров и освещения повышается 6 раз (хотя у кого как, но главное то что повышение производительности в работе наблюдается).
В первом тесте я взял нашу модель с экстерьером и машиной, зада стандартный V-RayMtl и установил источник света V-RaySun. Визуализация осуществляется из камеры V-RayPhysicalCamera с настроенной экспозицией и балансом белого.
Я пока не стал замерять скорость визуализации сцены и визуализации после внесения изменений, это я сделаю в след. посте, а быстренько пробежался по функционалу и интеграции в 3ds Max.

V-Ray RT визуализирует сцену в режиме ActiveShade в отдельном диалоговом окне.
V-Ray RT может быть использован только в качестве ActiveShade визуализатора, об этом он сообщит если вы выбрали его в качестве Production визуализатора.
В режиме ActiveShade он может быть использован как в отдельном диалоговом окне (см. рисунок выше), так и в качестве окна проекций режима ActiveShade.

V-Ray RT визуализирует сцену в режиме ActiveShade в окне проекции камеры.
Благодаря этому можно спокойно настраивать материалы и освещение, при этом не перегружая рабочее пространство множеством окон. Если требуется изменить положение камеры или объекта, просто перетащите их используя инструменты Move, Rotate & Scale, учтите, что эти операции делать можно только в окнах проекций, а не в окне ActiveShade (ограничения такие).
Другой пример, это применение V-Ray RT как раз для отображения изменений в материале и освещении. Я назначил материал с синим цветом и легкими размытыми отражениями, и далее отвизуализировал сцену с помощью V-Ray RT GPU. Как и было показано в демонстрации Chaos Group после изменения цвета в материале, сцена моментально была пересчитана и был получен новый результат.

V-Ray RT визуализирует сцену в режиме ActiveShade до и после изменения цвета материала.
Теперь же стоит обратить внимание на загрузку GPU при визуализации сцены с помощью V-Ray RT GPU. Все примеры загрузки GPU мы собрали с помощью утилиты GPU-Z 0.4.6.

GPU в не загруженном состоянии.
Все эксперименты я делаю с использованием GPU NVIDIA Quadro FX 1800, у этой модели используется 64 ядра CUDA и 768 Мб памяти. На зиображении выше, показано что GPU практически никак не используется и его память практически пуста.
Когда запущен 3ds Max и загружена сцена, примерно загружается до 140 Мб графической памяти, каждый раз этот показатель может отличаться.

GPU при загруженной трехмерной сцене в 3ds Max.
Когда в дело вступает V-Ray RT GPU, сцена транслируется в формат данных V-Ray и загружается сначала в системную ОЗУ, после чего данные передаются на вычисления и хранение в память GPU.

GPU при загруженной трехмерной сцене в 3ds Max.
Во время использования V-Ray RT GPU, сцена занимает порядка 250 - 320Мб в памяти графической карты. Так как визуализация осуществляется в режиме реального времени, то графический процессор будет постоянно задействован в вычислениях и нагружен, пока мы не закроем окно с V-Ray RT.
Вот здесь то и становится актуальным применение дорогих и производительных GPU с большими объемами памяти. Подробнее об этом я опишу здесь и в своей статье на RENDER.RU, а так же на CG Event 2010 в своем докладе.
В целом, остался очень доволен производительностью V-Ray RT GPU в такой сцене, при этом, по сравнению с iray он не весит полностью работу системы и 3ds Max, и позволяет комфортно оперировать с другими приложениями и ковырянием с трехмерными моделями.

понедельник, 11 октября 2010 г.

И все же он быстрее…

Итак, после предыдущего и первого «разочаровывающего» теста iray, я решил пройтись по документации и протестировать его с аналогичными визуализаторами из той же категории.
Визуализаторы разделены как минимум на две большие категории – biased и unbiased визуализаторы. Первые из них это классические визуализаторы, где все элементы изображения вычисляются отдельно и потом уже на финальном этапе объединяются для получения конечного изображения (или выводятся по слоям). Так же в этом типе визуализаторов для экономии времени разработчики используют упрощенные математические модели освещения и описания свойств поверхностей - для увеличения скорости визуализации.

Визуализаторы второй категории используют более корректные физические модели света и визуализируют сразу все «одним махом». При этом максимально загружая вычислительные ресурсы. На выходе вы получаете изображение, строящееся из множества точек, каждая из которых обладает большим количеством данных основанных на физически корректной модели освещения (это с одной стороны и объясняет шум на изображении), чем больше точек вычисляется, тем лучше результат. Но для того что бы их вычислить необходимо потратить много времени. Обычные процессоры тут как раз и начинают загибаться.

На выручку может прийти применение GPU для ускорения вычислений. Благо используемые в unbiased рендерах алгоритмы отлично поддаются распараллеливанию, это то, что нам как раз нужно.
Какие рендеры сейчас представляют обе категории? Список дается ниже.
Biased визуализаторы (наиболее широко известные):
- mental ray
- RenderMan
- V-Ray
- Brazil
- finalRender
- (NEW) finalRender R4 (GPU Accelerated)
- 3delight (RenderMan compliant)
Unbiased визуализаторы:
- iray from mental images (mental ray compliant* & GPU Accelerated)
- V-Ray RT CPU (V-Ray compliant**)
- V-Ray RT GPU (V-Ray compliant**, GPU Accelerated)
- FryRender
- ARION (FryRender compliant & GPU Accelerated)
- Octane (GPU Accelerated)
- Indigo renderer
Примечание:
* - mental images iray совместим с большинством возможностей mental ray в standalone версии (но существует ряд ограничений (дополнительно можно узнать из документации).
** - V-Ray RT CPU & V-Ray RT GPU интегрированы полностью в среду Autodesk 3ds Max и полностью взаимодействуют с biased версией V-Ray, поддерживают материалы и текстуры V-Ray. Благодаря поддержке интерактивной визуализации, можно ускорить процесс создания материала в несколько раз, по словам знакомых, V-Ray RT CPU ускорил их работу в x6 раз (!!!).
GPU Ray tracing engines
Отдельное направление, которое сейчас продвигается компанией NVIDIA – интерактивный ray tracing с возможностью интеграции в различные приложений. Базируется на применении комплекса инструментов NVIDIA APEX и входящем в него NVIDIA OptiX. Особенность данных инструментов заключается в оптимизации под применение профессиональных решений NVIDIA Quadro.
Теперь перейдем ближе к рассматриваемым визуализаторам. Первый тест был сделан не очень то корректно, mental ray будет считать быстрее чем iray по причине, что он biased рендер, и строит изображение по отдельным этапам, а так же используя упрощенные модели освещения.
Но вот если сравнить iray с аналогичными ему unbiased визуализаторами, то тут станет сразу заметно, что он выполняет визуализацию значительно быстрее.
Сравнение времени визуализации в Maxwell Render, iray for 3ds Max 2011 и ARION.
После первого теста, я как уже упомянул выше, решил сделать тесты с аналогичными визуализаторами. За основу был взят Maxwell Render, как наиболее уже устоявшийся стандарт среди unbiased визуализаторов и с большим набором возможностей.

Модель сцены импортированная и настроенная в Maxwell Studio.
Далее, то же самое было сделано для ARION. Т.к. сцена создавалась изначально в 3ds Max, то в нем я применил Daylight system и шейдеры Arch&Design для визуализации с помощью iray.

Сцена в 3ds Max Design 2011, с открытыми параметрами iray renderer.
Тесты показали следующий результат. Около получаса потребовалось Maxwell Render, что бы визуализировать эту простенькую сценку до приемлемого качества. Но вот совершенно иное время показали GPU Accelerated визуализаторы. Iray потребовалось всего 10 минут что бы получить представленный нижу результат, а вот ARION при затраченных 12 минутах показал еще и не самый лучший результат в картинке.

Финальные рендеры тестовой сцены.
В целом, более чем в 2 раза быстрее, чем Maxwell render оказался именно iray. И это только при использовании NVIDIA Quadro FX 1800. Т.к. это простая сценка и особой сложности в ней нет, по этому результату сложно сказать, что все же он быстрее или лучше. Теперь буду создавать сцены с большим количеством объектов и разными поверхностями.
Главное, это сейчас получить V-Ray и на его основе сделать полностью все тесты со сценами.
Конечно, не хватает интерактивных возможностей iray for 3ds Max, так же не очень корректно он работает в редакторе материалов, при этом программа даже подвисает или некорректно дает результат с разными шейдерами. За это конечно стоит пинать разработчиков, но надеюсь они решат все эти задачи к выходу следующей версии 3ds Max 2012.

четверг, 7 октября 2010 г.

3ds Max Design 2011: iray renderer

Наконец свершилось! Дождался я своего релиза Subscription Advantage Pack для 3ds Max.
Все уже давно ждали, когда же интегрируют iray renderer в 3ds Max, дождались...
...теперь можно использовать GPU в качестве мощного ускорителя для визуализации трехмерных сцен. iray renderer поддерживает практически все CUDA GPU's от NVIDIA. Вы можете использовать практически всех представителей линеек NVIDIA GeForce, NVIDIA Quadro и NVIDIA Tesla.

Я лично использую NVIDIA Quadro. Но стоит вопрос при том, какую модель GPU использовать и на какие её качества стоит обращать внимание. Первое это конечно вычислительные ядра CUDA, чем их больше, тем лучше, далее идет объем памяти, даже можно скзать он один из самых важных показателей, т.к. все данные для вычислений хранятся именно в памяти GPU. Если памяти не так много (меньше 1Гб), то при визуализации больших сцен, используется и основная оперативная память, а это конечно сказывается на производительности. Так же не стоит забывать и о пропускной способности шины графической памяти, чем она больше, тем быстрее будут выполняться вычисления.
Первый тест (блин комом)
Как только я получил свою копию Subscriprion Advantage Pack, я решил провести несколько тестов с экстерьером. Все тесты делались в Autodesk 3ds Max Design 2011 SP 1 Subscription Advantage Pack.

Сцена с экстерьером здания.
В сцене порядка 815 объектов, к каждому из них применены материалы Arch&Design, в сцене достаточно много отражающих и преломляющих поверхностей.
Визуализация выполнялась на моей основной рабочей станции с CPU Intel Core 2 Duo E6600, 6Gb RAM и GPU NVIDIA Quadro FX 1800.
Первый тест мы выполнили визуализатором mental ray 3.8.

Время визуализации этой сцены 6 минут 30 секунд.
Как видно из приведенного выше примера, все достаточно просто классический визуализатор выполнил свою задачу достаточно быстро (рендер кадра Full HD). При этмо качество изображения достаточно высокое.
А вот теперь перейдем к iray. Тут меня ожидал достаточно большой ком и блин.
Первый тест с iray я сделал практически просто указав время визуализации 6 минут 30 секунд. Результат мягко говоря не тот, что я ожидал.

Тест визуализации экстерьера с помощью iray 1.1.
Т.к. данный визуализатор и вообще весь принцип iray очень жестко зависит от времени визуализации, мы получили совершенно отличающийся результат от того, что мы получили в рендере классическим mental ray.
Как видите очень много просто недовизуализированных участков на изображении. Но это не столь печальный результат. Это можно списать на саму модель GPU с всего 64 вычислительными ядрами и 768Мб памяти.
Стоит только чуть изменить настройки и методы вычисления, сразу же можно улучшить результат.
Настройки для третьего теста были заданы вручную (показано на иллюстрации ниже).

Параметры для третьего теста iray.
Третий тест был выполнен чуть дольше по времени, но при этом благодаря вручную выставленных параметрам удалось повысить и качество изображения.

Результаты визуализации с помощью iray и вручную выставленных параметров.
А вот теперь о наболевшем, хоть картинка и считается достаточно быстро (если учесть что чем мощнее GPU тем быстрее и лучше будет получаемый результат), то мы так и не видим пока достаточно качественно реализованного продукта. Не хватает интерактивности в визуализации (об Active Shade вообще можно забыть), совершенно криво реализована поддержка многих шейдеров, и нет толковой реализации в редакторе материалов, из-за чего макс просто виснет и начинает долго думать при открытии редактора материалов.
Дальше мы поиграемся с интерьерами, тут как раз iray может показать высокий результат в визуализации, но при этом, мы поиграемся и с различными шейдерами и материалами.

P.S. Потопаю сегодня к коллегам из комп слонов, клянчить железки для тестов... скоро тесты на разных GPU.