Оптимизация скорости работы в CATIA

Раздел для пользователей изучающих CATIA.

Re: Оптимизация скорости работы в CATIA

Сообщение zerganalizer » 24 июн 2009 03:57

Попробовал фичу VBO на ноуте, карта 7000GO, стоит как квадра. Тестировал на модельке audi A3, стабильно прирост в c:TestVisuPerfoDraw на 5-6% и в статике, и в динамике (867 против 915, 964 против 1015). Проблем с прозрачностью не нашел пока. Прогрузка модели в видеопамять теперь без задержки (было 7-8 сек на этой модели). Пока оставил включенным, посмотрю в режиме проектирования как будет себя вести. Где увеличение в разы?
Автоматизирую все, что логично.
Аватара пользователя
zerganalizer
Moderator
 
Сообщения: 901
Зарегистрирован: 20 май 2008 15:20

Re: Оптимизация скорости работы в CATIA

Сообщение deLuther » 24 июн 2009 11:21

А где можно эту модель (Audi A3) найти?
И в каком она формате - cgr?
Тогда может в этом и проблема (то же что и для модели BMW).
Плюс небольшая разница может объясняться тем что карточка работает как квадра, со своим тестом (см. ссылку) я смог выяснить что на квадрах разница между обычной отрисовкой (через glDrawElements) и glDrawElements с использованием VBO может отсутствовать, т.к. и обычный режим значительно ускоряется (по сравнению с не-квадро). Механизм такого ускорения мне не ясен, но он есть. Причём по результатам на Quadro 570M, получалось что VBO-режим даже проигрывал, не VBO-режим давал практически теоретическую производительность в 300 млн. треугольников в сек. (конечно это для моего теста, а не катьки).
deLuther
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 16 сен 2008 15:23

Re: Оптимизация скорости работы в CATIA

Сообщение car2ner » 24 июн 2009 17:30

zerganalizer писал(а):Попробовал фичу VBO на ноуте, карта 7000GO, стоит как квадра. Тестировал на модельке audi A3, стабильно прирост в c:TestVisuPerfoDraw на 5-6% и в статике, и в динамике (867 против 915, 964 против 1015). Проблем с прозрачностью не нашел пока. Прогрузка модели в видеопамять теперь без задержки (было 7-8 сек на этой модели). Пока оставил включенным, посмотрю в режиме проектирования как будет себя вести. Где увеличение в разы?

А вы точно ее в системные переменные вписали, а не в катин енвиронмент? А еще я для полноты картины включал качество тесселации 0,01 и сглаживание (антиальясинг) на максимум, а также режим материалов. Можете модельке Ауди придать материал-шейдер car paint.

2deLuther
Речь, видимо, идет об этой модели. Она в поверхностях сделана (IGES)
Аватара пользователя
car2ner
Moderator
 
Сообщения: 254
Зарегистрирован: 22 сен 2007 15:20
Откуда: Челябинск

Re: Оптимизация скорости работы в CATIA

Сообщение deLuther » 24 июн 2009 22:17

Шейдеры имеют слабое отношение к VBO. Я могу использовать любое задание геометрии и использовать шейдеры, это разные расширения.
Можно попиксельное освещение задать и на 2х миллионах треугольников тоже дофига кадров в секунду получить...
VBO отвечает только за геометрию. А вот тесселяция очень даже при чём :)
Материалы слегка при чём за счёт того что текстурные координаты можно через VBO грузить.
deLuther
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 16 сен 2008 15:23

Re: Оптимизация скорости работы в CATIA

Сообщение Sten » 24 июн 2009 22:41

car2ner писал(а):P.S. В ноутбучных картах, как правило, заложена опция "забора" части ОЗУ под видеопамять, в моем случае - до 512 Мб. Но в этом случае получается масло масляное - перегон из ОЗУ в видеопамять, которая в свою очередь имитируется за счет ОЗУ :crazy: Т.е. при превышении "чистой" видеопамяти может получиться даже медленнее.

Как-то на одной птицефабрике мы заморочились выбором железа под специфичную задачу (надо было загружать секцию самолёта со всеми потрахами и генерить чертежи), и обязательно надо было делать на 32-битах. Благо с желающими дать погонять железо не было проблем, то оторвались мы по полной, и между делом всплыл один неприятный факт. ОЗУ видеокарта может забирать не только на ноутах. Квадровые карточки, а также Атишные на определенных материнках "резервируют" 1 гб оперативки, вне зависимости от того сколько видеокарта имеет своей ОЗУ. Ребята из ХП и ИБМ как-то это обосновали с железячной точки зрения, но легче от этого не стало. Вообщем мораль такая, при выборе материнки и видеокарты надо всегда проверять как карточка себя ведет на данной материнки, так как терять 1Гб при максимуме в 4ГБ очень неприятно :dash1:
Sten
Moderator
 
Сообщения: 504
Зарегистрирован: 20 сен 2007 00:09

Re: Оптимизация скорости работы в CATIA

Сообщение deLuther » 24 июн 2009 23:00

За это надо сказать спасибо 32 битам. На современных материнках есть функция ремапинга (точно не помню как называется, в инструкцию лезть лень).
Но 4х гигов всё равно не будет. У меня например 3.25 Гб при установленных 4х, а приложения и два зачастую еле-еле могут использовать. Хочется 4 гига - надо ставить 64 бита :(
А "отъедает" не только видеокарта.
deLuther
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 16 сен 2008 15:23

Re: Оптимизация скорости работы в CATIA

Сообщение [PTM] » 24 июн 2009 23:05

режимы PAE и 3GB пробовали?
первый работает только на сервачной платформе
Аватара пользователя
[PTM]
Moderator
 
Сообщения: 2139
Images: 40
Зарегистрирован: 13 сен 2007 13:03
Откуда: Rzn
Blog: View Blog (15)

Re: Оптимизация скорости работы в CATIA

Сообщение Sten » 24 июн 2009 23:12

deLuther писал(а):За это надо сказать спасибо 32 битам. На современных материнках есть функция ремапинга (точно не помню как называется, в инструкцию лезть лень).
Но 4х гигов всё равно не будет. У меня например 3.25 Гб при установленных 4х, а приложения и два зачастую еле-еле могут использовать. Хочется 4 гига - надо ставить 64 бита :(
А "отъедает" не только видеокарта.

64 бита конечно хорошо, только оперативки надо больше,чем на 32-х для того же объёма данных. Мы экспериментально выведи коэффициент 1.5-1.8 где-то Плюс на остальное тоже надо больше (на те же Винды). В итоге стоимость железа сильно подскакивал. Конечно приятно было работать на 16Гб ХПшке, но при её стоимости в 30К баксов сильно не разгуляешься. Да и потом выяснилось,что у 17-го релиза какие-то траблы с совместимостью данных между 64 и 32 битными версиями и 64-битки приказали долго жить.
Sten
Moderator
 
Сообщения: 504
Зарегистрирован: 20 сен 2007 00:09

Re: Оптимизация скорости работы в CATIA

Сообщение deLuther » 25 июн 2009 00:14

Ок.

Что касается наших баранов.
Запустил я тест этой ауди, прирост маловат.
(repeat 500)
3D accuracy fixed 0.01
triangles - 527460
VBO on
edges off - 16.16 ms
edges on - 23.25 ms
VBO off
edges off - 27.22 ms
edges on - 38.56 ms
Не сильный прирост, надо будет лог посмотреть почему в этом случае так.
Антиальязинг не включал, рёбра/линии не сильно влияют.
FSAA сильно, но проверять с ним бессмыслено - достаточно посмотреть что катька, когда модель крутишь, временно его отрубает и включает при остановке манипуляций. Таким образом реальную работу даже FSAA 16x не сильно тормознёт. А вот тест, ясен пень, даст худший результат (сцена рисуется 16 раз). Правда на это с VBO уходит ~188 мс. (т.е. где-то в 8 раз медленнее - 188/25, а не 16 как может показаться).
Но одно можно сказать - как-то избирательно катька использует VBO.
С одной стороны - трубопроводы с почти миллионом треугольников и ускорение почти на порядок, с другой - поверхности из IGES с полу миллионом и даже двукратного преимущества нет.
deLuther
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 16 сен 2008 15:23

Re: Оптимизация скорости работы в CATIA

Сообщение car2ner » 25 июн 2009 01:17

Тест той же модели. nVidia 8400M GS 128 Mb (шина 64 бита)
c:Triangles count 356707
c:TestVisuPerfoDraw repeat 40, angle 9, static
3D accuracy fixed 0.01; Standalone backface culling off (видны обе стороны поверхностей)

VBO on
edges off - 38.30
edges on - 42.24
edges off, materials, texture/carpaint (применен ко всей модели) - 32.00
edges off, FSAA 4x 148.57

VBO off
edges off - 252.60
edges on - 291.80
edges off, materials, texture/carpaint (применен ко всей модели) - 388.90
edges off, FSAA 4x 996.67

Похоже, чем слабее карта - тем выше прирост от VBO. И тут, видимо, самое узкое место - это 64-битная шина. И удивил результат с шейдерами. А еще схиданое дерево дает прирост скорости от 10 до 20% :unknown:
Аватара пользователя
car2ner
Moderator
 
Сообщения: 254
Зарегистрирован: 22 сен 2007 15:20
Откуда: Челябинск

Re: Оптимизация скорости работы в CATIA

Сообщение deLuther » 25 июн 2009 02:04

А вот интересно от чего зависит количество треугольников, модель одна... тесселяция вроде тоже, от версии катьки что ли?

carpaint VBO on edges off ~20 ms
VBO off edges off ~53 ms
deLuther
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 16 сен 2008 15:23

Re: Оптимизация скорости работы в CATIA

Сообщение deLuther » 25 июн 2009 02:08

car2ner писал(а):А еще схиданое дерево дает прирост скорости от 10 до 20% :unknown:

У меня и больше получалось (если дерево/спецификация большое, весь экран закрывает).
Дерево тоже рисуется средствами OpenGL, а вывод текста в OpenGL не слишком уж оптимальная штука.
deLuther
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 16 сен 2008 15:23

Re: Оптимизация скорости работы в CATIA

Сообщение car2ner » 25 июн 2009 12:26

deLuther писал(а):А вот интересно от чего зависит количество треугольников, модель одна... тесселяция вроде тоже, от версии катьки что ли?

Версия Кати у меня такая-же: V5R19SP2. Есть предположение, что может зависеть от диагонали и резолюции экрана: типа зачем на маленькой диагонали столько треугольников? все-равно же ни черта не разглядишь :) У меня на ноуте 13,3" резолюция 1280х800
Аватара пользователя
car2ner
Moderator
 
Сообщения: 254
Зарегистрирован: 22 сен 2007 15:20
Откуда: Челябинск

Re: Оптимизация скорости работы в CATIA

Сообщение deLuther » 25 июн 2009 13:29

Дык и у меня не сильно больше - 1280x1024, а вот как программа диагональ будет узнавать?
Лезть в свойства монитора, по-моему лишняя возня и вряд ли имеет смысл под это усложнять алгоритм. :D

ps. Кстати, раз уж так хочется антиальязинга, то логичнее поискать в дровах видяхи настройки на соответствующую тему.
Например если для ATI врубить SMOOTHVISION HD:Anti-Aliasing Level 8, Filter Edge-detect (Samples 24x), то это будет примерно как FSAA 4x по качеству картинки, но при скорости FSAA 0...
Та же audi
VBO on, edges on
FSAA off
без настроек в дровах - 22.03
с edge-detect - 22.59
FSAA 4x
56.78
deLuther
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 16 сен 2008 15:23

Re: Оптимизация скорости работы в CATIA

Сообщение [PTM] » 25 июн 2009 22:53

c:Performance gauges

мне нравится)
Аватара пользователя
[PTM]
Moderator
 
Сообщения: 2139
Images: 40
Зарегистрирован: 13 сен 2007 13:03
Откуда: Rzn
Blog: View Blog (15)

Re: Оптимизация скорости работы в CATIA

Сообщение zerganalizer » 26 июн 2009 00:36

Похоже, VBO нужен реально тем, у кого нет квадробуфера и карта не проф, хотя приятнее, когда моделька кэшируется сразу.Моделька да, она, IGES. Плюс я ее раскрасил (стекла цветные прозрачные плюс наложена FS окружающая среда. Текстура "краски для машин" упоминаемая тут у меня сильно просаживает fps, раза в 3, карта слаба шейдерами. На GT 8600 на десктопе провал процентов на 30-40 всего. У меня и акад летает при модельке в sat в 480 Мб, в dwg - около 270 Мб. При этом она еще и рисуется даже со сквозной полупрозрачностью целиком при манипулировании, без пропадания частей. На работе 7300 и 256Мб - половина может пропасть при манипулировании, в буфер карты что-то уже не лезет. Ищем в инете разлочку дров для Nvidia в квадру.
Автоматизирую все, что логично.
Аватара пользователя
zerganalizer
Moderator
 
Сообщения: 901
Зарегистрирован: 20 май 2008 15:20

Re: Оптимизация скорости работы в CATIA

Сообщение deLuther » 26 июн 2009 01:20

А есть уверенность что автокад хоть как-то использует видеопамять?
Не проверял его на вшивость - не стоит. До дури профессиональных OpenGL-приложений не пользуются видеопамятью для геометрии.
Т.е. видеопамять по сути вообще не используется (только первичный, вторичный, Z-буфер и подобное). По сути всё ПО где без дисплей-листов, VBO это уже высший пилотаж - возни с ним больше, фишка пришедшая в OpenGL из DirectX :D
То что часть модели пропадает при манипулировании, скорее означает что приложение сокращает само количество рисуемых объектов.
Если не хватает видеопамяти, то это проявляется более "весело".
Про квадробуфер не понял... можно пояснить?
Если это четверная буферизация видеобуфера (типа двойной), то речь не об этом.
Речь о том что количество данных пересылаемых каждый кадр видеокарте радикально сокращается.
Т.е. послали на первом кадре и потом просто используем.
Правда для кадовского применения я считаю что дисплей-листы всё же более идеальный вариант.
VBO реально нужен всем в т.ч. и профи-картам, раз уж в катьке избрали такую модель.
Недаром эта инициатива пришла со стороны ATI - у них скорее всего драйвера без хитростей а-ля NVidia, впрочем могу ошибаться.
Но, по данным тестов ViewPerf, у NVidia Quadro явный перевес в обычных режимах (без дисплей-листов, VBO во вьюперфе пока нет), но не на больших моделях.

ps. кстати хотел попросить прогнать мой тестик на квадро (только помощнее FX570), интересует поведение с дисплей-листами.
Да и вообще все режимы. Плиз... (http://malefice.fatal.ru/files/GLModelTest.rar)
deLuther
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 16 сен 2008 15:23

Re: Оптимизация скорости работы в CATIA

Сообщение car2ner » 26 июн 2009 14:23

По сути всё ПО где без дисплей-листов,

А можно в двух словах сказать шо такое из себя представляют эти дисплей-листы?
Ищем в инете разлочку дров для Nvidia в квадру.

Вроде же чисто программными средствами не обойтись - чего-то там подпаивать надо.
c:Performance gauges
мне нравится)

Мне тоже :-) А еще знаете какие-нибудь малодокументированные команды?
Аватара пользователя
car2ner
Moderator
 
Сообщения: 254
Зарегистрирован: 22 сен 2007 15:20
Откуда: Челябинск

Re: Оптимизация скорости работы в CATIA

Сообщение deLuther » 26 июн 2009 14:53

Про дисплей-листы могу привести пример из своей проги.
Допустим, для общности мы рисуем через массивы командой glDrawElements (как катька поступает), естественно катька дисплей-листы для геометрии не использует.
Тогда на начальном этапе задание будет подобным образом:
glNewList(1,GL_COMPILE);
glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,mat6);
glVertexPointer(3,GL_FLOAT,0,mt1);
glNormalPointer(GL_FLOAT,0,nmt1);
glDrawElements(GL_QUADS,4*divisions*divisions,GL_UNSIGNED_INT,ind);
glEndList();
При отрисовке достаточно вызвать дисплей-лист командой glCallList(1);
Причём в дисплей-листе можно сразу задать цвет, материалы, текстуры и некоторые вспомогательные команды.
Итого - одна команда на кадр для одного объекта, есть возможность сразу вызвать группу дисплей-листов.
VBO
Задание и загрузка данных:
glGenBuffersARB(3,vb);
glBindBufferARB(GL_ARRAY_BUFFER_ARB,vb[0]);
bufferSizeRequest=dim2*sizeof(float);
glBufferDataARB(GL_ARRAY_BUFFER_ARB,bufferSizeRequest,mt1,GL_STREAM_DRAW_ARB);
glBindBufferARB(GL_ARRAY_BUFFER_ARB,vb[1]);
glBufferDataARB(GL_ARRAY_BUFFER_ARB,bufferSizeRequest,nmt1,GL_STREAM_DRAW_ARB);
glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB,vb[2]);
bufferSizeRequest=4*divisions*divisions*sizeof(int);
glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB,bufferSizeRequest,ind,GL_STREAM_DRAW_ARB);
Отрисовка (вызывается каждый кадр):
glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,mat8);
glBindBufferARB(GL_ARRAY_BUFFER_ARB,vb[0]);
glVertexPointer(3,GL_FLOAT,0,0);
glBindBufferARB(GL_ARRAY_BUFFER_ARB,vb[1]);
glNormalPointer(GL_FLOAT,0,0);
glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB,vb[2]);
glIndexPointer(GL_UNSIGNED_INT,0,0);
glDrawElements(GL_QUADS,4*divisions*divisions,GL_UNSIGNED_INT,BUFFER_OFFSET(0));
glBindBufferARB(GL_ARRAY_BUFFER_ARB,0);
glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB,0);

Оба варианта используют видеопамять. Только на обычных нвидия есть ограничение по количеству данных в дисплей-листе, например в моей проге по умолчанию 1 миллион квадов и дисплей-листы на обычных нвидиях уступают прилично VBO. Но если уменьшить количество квадов, то можно нащупать некоторую границу при переходе которой дисплей-листы вдруг снова быстро работают (что-то около 500 тыс. треугольников), переход получается довольно резким.

Причём дисплей-листы это стандартная возможность, а не расширение, для VBO надо ещё загрузить необходимые функции.
deLuther
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 16 сен 2008 15:23

Re: Оптимизация скорости работы в CATIA

Сообщение car2ner » 26 июн 2009 16:50

deLuther, спасибо!
А что скажете насчет этих переменных:
CAT_NVIDIAOPTIM=1
CAT_VERTEXARRAY=1
У меня их применение не вызывало никакого эффекта.
Аватара пользователя
car2ner
Moderator
 
Сообщения: 254
Зарегистрирован: 22 сен 2007 15:20
Откуда: Челябинск

Re: Оптимизация скорости работы в CATIA

Сообщение deLuther » 26 июн 2009 18:07

CAT_NVIDIAOPTIM=1
CAT_VERTEXARRAY=1
Надо будет посмотреть их влияние на работу катьки по логу GLIntercept.
По-идее вершинные массивы используются и без всяких переменных, но надо будет посмотреть перестраивает ли это пайплайн.
Первая может исправляет какие-то глюки/недоработки вендора графики, наподобие: http://www.procae.ru/articles/37-ansys- ... -post.html
А может и нет.

А ещё какие есть переменные подобного типа?
Проверять, так сразу :)
Последний раз редактировалось deLuther 26 июн 2009 18:19, всего редактировалось 1 раз.
deLuther
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 16 сен 2008 15:23

Re: Оптимизация скорости работы в CATIA

Сообщение car2ner » 26 июн 2009 18:12

deLuther писал(а):А ещё какие есть переменные подобного типа?
Проверять, так сразу :)

Других не знаю :-) Я и эти-то нашел буквально вчера
Аватара пользователя
car2ner
Moderator
 
Сообщения: 254
Зарегистрирован: 22 сен 2007 15:20
Откуда: Челябинск

Re: Оптимизация скорости работы в CATIA

Сообщение [PTM] » 26 июн 2009 19:43

Карточка у меня так себе поэтому надо было что-то придумать и вот родилось




отмечу что тест гонял раз 10 и брал послед значение, тк карточка зараза автоматом режет частоты...
вплоть с 1200 до 100-300Гц
Аватара пользователя
[PTM]
Moderator
 
Сообщения: 2139
Images: 40
Зарегистрирован: 13 сен 2007 13:03
Откуда: Rzn
Blog: View Blog (15)

Re: Оптимизация скорости работы в CATIA

Сообщение deLuther » 26 июн 2009 20:17

В смысле режет, из-за перегрева что ли?
Или просто нагрузки на неё нет и снижает до 2D-частот?
Кстати загрузка GPU действительно не 100%, даже половины не было (если вообще до 40% дотягивало).
Это говорит про разбазаривание мощностей :)
И вообще лучше количество повторов (repeat) ставить побольше, для выравнивания статистики, всё равно результат это время на кадр (в мс).
500... может меньше.
deLuther
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 16 сен 2008 15:23

Re: Оптимизация скорости работы в CATIA

Сообщение [PTM] » 26 июн 2009 22:01

ага именно 2d частоты...
вот лог загрузки GPU кому интересно)
GPU usage.rar
(930 байт) Скачиваний: 555
Аватара пользователя
[PTM]
Moderator
 
Сообщения: 2139
Images: 40
Зарегистрирован: 13 сен 2007 13:03
Откуда: Rzn
Blog: View Blog (15)

Пред.След.

Вернуться в Форум для новичков

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4