Это заключительная часть статьи об ускорении КОМПАС-3D v18 (Часть 1, Часть 2). Она посвящена доработкам в расчетах массо-центровочных характеристик и тому, что сделано для ускорения КОМПАСа на стороне нашего геометрического ядра C3D. И еще немного расскажем о том, какое железо позволит максимально ощутить ускорение.



О расчете МЦХ


Есть еще один параметр, который существенно влияет на производительность КОМПАС, — расчет массо-центровочных характеристик (МЦХ).

Расчет МЦХ является «базисным» для многих функций, и ускорять его просто необходимо.

Подробнее про МЦХ.
Массо-центровочные характеристики (МЦХ) — это физические данные изделия: масса, площадь, объем, координаты центра масс, плоскостные, осевые и центробежные моменты инерции

МЦХ могут получаться расчетным путем или задаваться вручную, они могут быть рассчитаны для 3D-модели и для чертежа.

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


Константин Гулевский, программист:

«Казалось бы, рассчитать объем и массу какого-либо тела — не такая сложная задача. Действительно, такие вычисления выполняются за микросекунды, более того, геометрическое ядро C3D успешно выполняет такие вычисления в разных потоках. Однако когда речь заходит о «больших сборках», расчет МЦХ может затянуться на минуты, а в некоторых случаях на десятки минут. Причиной этого в первую очередь являются сложные связи компонентов: изменение характеристик одного компонента влияет на характеристики множества других. Для ускорения расчета был разработан специальный граф, который определял зависимости между компонентами и телами. Расчет МЦХ стало возможно выполнять поэтапно:

  1. Рассчитываются МЦХ всех тел (тела не влияют друг на друга, т. е. изменение МЦХ одного тела не может привести к изменению МЦХ другого тела).
  2. Рассчитываются МЦХ независимых друг от друга компонентов, т. е. таких, для которых изменение МЦХ одного компонента не приведет к изменению другого.
    Шаг 2 выполняется рекурсивно, пока не будет выполнен расчет МЦХ всех вставок.
  3. Рассчитывается МЦХ головной сборки.
    Данный алгоритм существенно ускорил вычисление МЦХ прежде всего за счет устранения повторных расчетов для одних и тех же компонентов. Но также благодаря данному подходу стало возможным распараллелить расчет МЦХ на уровне компонентов. При выполнении шагов 1 и 2 расчет МЦХ тел и сборок выполняется в разных потоках. Такие оптимизации также дали прирост производительности.

Ниже примеры времени расчета МЦХ.

Разница в скорости расчета будет еще более заметна для измененных моделей (большое число тел и вставок требует расчета МЦХ) — они отмечены значком «*».

Здесь и далее по тексту замеры проведены на ПК со следующей конфигурацией:
CPU: Intel Core i7-6700K 4.00 GHz
RAM: 32 Gb
GPU: NVidia Quadro P2000
OS: Microsoft Windows 10 x64 Professional
Таблица 6. Время расчета МЦХ, секунды (меньше — лучше). Измененные модели отмечены значком «*».

Модель Команда «МЦХ модели», время расчета МЦХ, с
V16.1 v17.1 v18

Установка
вакуумно-технологическая
1,5 1,5 0,6
*Установка
вакуумно-технологическая
(после изменения)
17,9 10,8 2,2

Многоцелевой
унифицированный
кузов-фургон
37,4 60,3 1,8

Северная приливная
электростанция
316,0 104,4 4,6

Редуктор судовой
энергетической установки
359,6 8,9 1,0

Троллейбус
3,3 4,5 0,7
*Троллейбус
(после изменения)
21,2 22,6 2,5


Евгений Филимонов, тестировщик:
«Расчет МЦХ используется для множества функций КОМПАС-3D:

  • сохранение модели, особенно после внесения изменений,
  • вывод актуальной информации о массе модели, отдельных компонентов сборки,
  • создание отчетов,
  • вычисление данных в колонке «масса» для окна «Управление исполнениями»,
  • при создании ассоциативных чертежей для получения значения массы сборки.

Это основные, но далеко не все случаи, где нужен расчет МЦХ.


Ниже приведены полученные результаты ускорения функций, зависящих от расчета МЦХ:

Таблица 7. Выполнение команды «Информация об объекте» для корневого элемента дерева, секунды (меньше — лучше).

Модель Команда «Информация об объекте», с
V16.1 v17.1 v18

Северная приливная
электростанция
101,5 109,2 10,7

Редуктор судовой
энергетической установки
50,9 14,1 1,7

Многоцелевой
унифицированный
кузов-фургон
12,4 10,9 1,7

Троллейбус
2,9 6,4 0,3


Таблица 8. Время входа в процесс свойства модели, секунды (меньше — лучше).

Модель Вход в процесс свойства модели, с
V16.1 v17.1 v18

Северная приливная
электростанция
295,2 108,1 1,0

Редуктор судовой
энергетической установки
267,1 13,5 2,7

Многоцелевой
унифицированный
кузов-фургон
35,4 21,0 2,1

Троллейбус
3,1 10,0 0,7


Таблица 9. Создать отчет, секунды (меньше — лучше) (отчет по первому уровню сборки с параметрами по умолчанию).

Модель Команда «Создать отчет» по сборке, с
V16.1 v17.1 v18

Северная приливная
электростанция
305,8 105,5 12,1

Редуктор судовой
энергетической установки
122,4 7,4 6,8

Многоцелевой
унифицированный
кузов-фургон
32,2 10,3 2,1

Троллейбус
10,0 6,1 1,5


Таблица 10. Выполнить команду «Управление исполнениями», секунды (меньше — лучше).

Модель Команда «Управление исполнениями», с
V16.1 v17.1 v18

Северная приливная
электростанция
66,4 107,8 9,9

Редуктор судовой
энергетической установки
262,8 12,4 1,3

Многоцелевой
унифицированный
кузов-фургон
34,0 10,8 1,5

Троллейбус
2,8 5,5 0,1


Как геометрическое ядро ускорило КОМПАС-3D v18



Разработчики геометрического ядра C3D, которое лежит в основе КОМПАС-3D, тоже не остались в стороне и внесли необходимые для роста производительности доработки в компоненты ядра.

В C3D Modeler реализовано покомпонентное проецирование 3D-модели в чертеж. Раньше, после редактирования (изменения или перемещения) одного из компонентов, все проекции необходимо было пересчитывать заново. Задача ядра состояла в том, чтобы спроецировать заново только указанные измененные компоненты и те компоненты, которые могли быть затронуты при проецировании. Это ускорило построение проекций сборки при различных модификациях ее частей. Очевидно, что чем меньшее количество компонентов сборки затронуто изменениями, тем больше и заметнее эффект в скорости построения проекций.


Покомпонентное проецирование. 3D-модель установки вакуумно-технологической, разработчик «ЭСТО-Вакуум» (г. Москва)

Ускорены и другие операции C3D Modeler:

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


Параметрический 2D-решатель C3D Solver ускорился в среднем на 30-40 %, а в некоторых случаях – в несколько раз за счет оптимизации вычислительных алгоритмов. Например, ситуация, в которой при накладывании ограничений на один объект накладываются ограничения большого количества других объектов. Ярким примером служит симметрия большого количества разных объектов относительно прямой. Такие случаи ускорились в 50-70 раз. В модели, которая послужила первопричиной работ, расчет наложения симметрии выполнялся за 40 секунд. Сейчас операция рассчитывается не дольше чем за 300 миллисекунд.


Симметрия большого числа объектов относительно линейного объекта

Достигнуто пятикратное увеличение производительности C3D Solver при работе с интерполяционными сплайнами, которые проходят через набор заданных точек. Чем больше сплайн (количество задающих его точек), тем значительней ускорение. Для сплайна, проходящего через 100-200 точек, зафиксировано десятикратное ускорение.


Скорость выполнения операций до и после оптимизации геометрического ядра C3D

Не обошлось и без доработок по используемым параметрам для триангуляции. О том, что мы стали использовать угловое отклонение, мы уже упоминали в части, посвященной отрисовке. Был выполнен ряд оптимизаций по расчету триангуляции с использованием углового отклонения и по более оптимальной разбивке некоторых типов поверхностей.

Железо для v18


Функциональность новой версии позволяет на полную мощность использовать возможности мощных видеокарт. Более полно будут задействованы и ресурсы многоядерных процессоров.

Преимущество от многоядерных процессоров пользователь получит при следующих сценариях:

  • при создании проекционных видов (ассоциативные чертежи),
  • при расчете МЦХ и выполнении завязанных на нем процессов,
  • многоядерность позволит еще быстрее открывать файлы, поскольку будет работать многопоточный расчет уровней детализации,
  • при импорте,
  • в операциях, создающих большое количество геометрических объектов (тел).

Мы рекомендуем использовать многоядерные процессоры не просто так, а потому что обозначенные функции являются частотными.

Рекомендуемая конфигурация для комфортной работы с обычными сборками показана в таблице 11, а для работы с большими сборками — в таблице 12.

Таблица 11. Конфигурация для комфортной работы.

Процессор Многоядерный процессор (4 ядра) с тактовой частой 3GHz и выше
Видеокарта Современная, дискретная, предпочтительней производства NVIDIA:
с поддержкой OpenGL 4.5,
объемом видеопамяти 2 ГБ и более
Оперативная память 8 ГБ и более


Таблица 12. Конфигурация для работы с большими сборками.

Процессор Многоядерный процессор (4 ядра и более)
с тактовой частой 4GHz и выше
Видеокарта Современная, дискретная, производства NVIDIA:
с поддержкой OpenGL 4.5,
объемом видеопамяти 4 ГБ и более,
пропускная способность видеопамяти (Memory Bandwidth ) — 140 ГБ/с и более
*параметры видеокарт можно посмотреть на сайте производителя видеочипа
Оперативная память DDR4, 16 ГБ и более (лучше 32 ГБ)
На объем ОЗУ нужно обратить больше внимания.
При ее недостатке система может начать использовать
файл подкачки — этот файл размещается на диске,
и работа с ним значительно (!) медленнее, чем с оперативной памятью
Дисковая система SSD-диск в качестве места установки КОМПАС-3D
и хранилища КОМПАС-документов


Нужно стремиться собирать сбалансированные системы, особенно если вы работаете с большими сборками. Но всегда нужно ориентироваться на конкретную 3D-сборку. Нельзя определенно сказать «эта сборка большая», нельзя ориентироваться только на количество компонентов. Ведь есть же еще и сложность исполнения.

В рамках работ над версией v18 мы сотрудничали с разработчиками из NVIDIA.
Так как объем изменений на стороне отрисовки был большой, то потребовалось обновить специальный профиль, который используется для КОМПАС-3D в профессиональных картах Quadro. Обновленный профиль появился в драйверах, начиная с версии v391.89.

В новой версии драйвера также удалось устранить имевшиеся до этого задержки при зуммировании изображения на некоторых моделях.


Что в планах?


Уже сейчас есть некоторые резервы по ускорению отрисовки.

Александр Тулуп, программист:
«В перспективе можно постепенно переходить на VulkanAPI. В данном случае драйвер уже не пытается выполнить за разработчика его работу, как это было в случае с OpenGL. Необходимо самостоятельно следить за корректностью входных данных. Но при этом стоимость отрисовочного вызова значительно ниже, а если учесть изначальную поддержку многопоточности, то можно достичь большей производительности меньшими усилиями.


VulkanAPI

OpenGL разрабатывался во времена, когда многопоточность не была так широко распространена. Из него уже выжали все, что могли, и в последнем обновлении добавили возможности для более плавного перехода на VulkanAPI.
В планах ускорение рисования специфических типов объектов — это разнообразные аннотации, резьбы.

В «черновом» проецировании прорабатывается возможность повышения точности метода.

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

Будет развиваться и система контроля производительности, чтобы постоянно отслеживать скорость работы КОМПАС-3D. В планах расширение контролируемых сценариев и базы используемых в тестах моделей.

А еще мы уже выпустили КОМПАС-3D v18.1!


В сервис-паке доработали несколько направлений, касающихся скорости. Более тонкая оптимизация шейдеров, более эффективная реализация отсечения невидимых объектов. Улучшилась производительность при работе с динамическим сечением.

А также появилась реалистичная прозрачность с новым уровнем быстродействия:


Начавшись с ускорения отрисовки, работа над v18 зашла слишком далеко. Теперь мы иногда шутим, что, и дальше работая над ускорениями, мы дойдем так до отрицательных величин. Но в самом деле шутка ли это, можно будет понять только со временем. А пока предлагаем прочитать подробнее о быстродействии КОМПАС-3D. Здесь вы сможете узнать, как быстро работать со сборками любой сложности. И да пребудет с вами инструмент со3Dателя.

Комментарии (11)


  1. anton19286
    26.04.2019 08:09

    Сложные сборки это хорошо, но когда компас падает даже на относительно простых деталях, желание работать с ним быстро отпадает. Личный опыт: купил 17-ю домашнюю версию, стал рисовать лодку, построил пару поверхностей по точкам, от них сделал эквидистанты и построил линию пересечения. Компас упал. И продолжал падать каждые 20 минут с этой деталью. Выяснилось, что для домашней версии экспресс-обновления не выпускаются и даже если я отправлю разработчикам дамп, нет шанса что получу обновление в течение года. Плюнул и перешел на полностью бесплатный Фьюжн. Работает стабильно, интерфейс значительно удобнее, по крайней мере у меня производительность выросла раза в два.


    1. xztau
      26.04.2019 09:01
      +1

      полностью бесплатный Фьюжн

      Вообще то ?20к. в год. Бесплатно там с условиями.


      1. anton19286
        26.04.2019 09:07

        Только там условия менее строгие, чем для платного домашнего компаса…


    1. kompas_3d Автор
      26.04.2019 11:48

      Вы написали ошибку в техподдержку?


      1. anton19286
        26.04.2019 12:28

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


        1. kompas_3d Автор
          26.04.2019 14:12

          я не знаю, где компас сохраняет стектрейсы при крашах

          Зачем это нужно, если у вас есть модель, которая и так вылетает? Нужен только файл и порядок действий, приводящих к вылету.
          патчи для домашней не выпускаются вообще

          Выпускаются, но реже. Вот патч для 17:
          kompas.ru/kompas-3d-home/update17

          18-я домашняя не вышла до сих пор.

          Зато выйдет сразу с последним патчем)


          1. anton19286
            26.04.2019 14:27

            писать инструкцию вместо одного нажатия на кнопочку «отослать дамп»?
            судя по отзывам, падает компас совсем нередко. или может просто подвиснуть минут на 20.


            1. kompas_3d Автор
              26.04.2019 14:31

              Смысл программисту изучать дамп вместо того, чтобы повторить два действия и увидеть, где ошибка?


  1. xztau
    26.04.2019 08:09

    NVIDIA vendor lock-in?


    1. kompas_3d Автор
      26.04.2019 11:45

      У Nvidia самая хорошая техподдержка — они все ошибки исправляют сразу, на все запросы отвечают и т.п. От других производителей, к сожалению, годами ответы ждать приходится.


    1. kompas_3d Автор
      26.04.2019 15:08

      Немного дополню ответ:

      Оптимизация проводились в первую очередь для видеокарт NVidia. И при этом мы исходили из следующих соображений:
      1. Большая распространенность видеокарт Nvidia у наших пользователей (по статистике нашей техподдержки) и на рынке в целом.
      2. Долговременный опыт сотрудничества с Nvidia. У нас с ними партнерские отношения.

      Это вовсе не означает, что на видеокартах AMD ускорения не будет. Пользователи этих видеокарт также почувствуют заметный прирост быстродействия, но не такой как для видеокарт NVidia. На Nvidia выше производительность при включенном сглаживании. Во время работ над ускорением отрисовки смотрели результаты и корректность работы на разных видеокартах.

      В целом мы рекомендуем дискретные видеокарты. Поэтому встроенные решения Intel не являются оптимальным выбором если вы работаете даже над задачами средней сложности.