Достигаем ускорения за счёт многопоточной системы САПР

Достигаем ускорения за счёт многопоточной системы САПР

Браузерный CAD на основе ядра C3D, разработанный российским студентом Иваном Черкасовым

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

Достигаем ускорения за счёт многопоточной системы САПР

Коттедж спроектирован в Renga Architecture

Математическая модель

Сперва стоит упомянуть о математических моделях объектов трёхмерного мира. Чаще всего ядра CAD-систем работают с очень ограниченным представлением. Если говорить проще, то получается следующее: пространство разделяют на две части — одна считается заполненной чем-либо, а всё остальное не столь важно. Граница этих частей — некие куски, между которыми есть стыки, но без видимых щелей.

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

Стоит обратиться к системе координат Декарта и к её заданным функциям, обозначающимися известными всем буквами латинского алфавита x, y, z. А также к области параметров u и v. Причём во всех формулах эти параметры всегда с плавающей точкой!

Достигаем ускорения за счёт многопоточной системы САПР

Рабочее окно программы C3D Labs

Программные настройки аппаратного базиса

С момента, когда многоядерные процессоры стали более-менее доступны и появились практически везде, обрела актуальность задача создания программного кода, который позволял бы использовать эти мощности наиболее эффективно. К примеру, ускорение возможно за счёт выполнения в один момент всяческих расчётов на разных процессорах или его ядрах.

К слову, именно возможность поддерживать работоспособность системы в многопоточной среде при сохранении всех плюсов такой концепции стала главным ноу-хау приложения C3D Labs. Но, работая в этом сложном направлении, разработчики вынуждены дополнять архитектуру своего творения, которое должно соответствовать четырём основным условиям:

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

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

Среди других задач — обеспечение работы на разных платформах. А это уже новые ограничения по техническим параметрам. Использование технологии OpenMP для оптимизации кода ядра C3D дало возможность решить обе эти проблемы.

Благодарим за предоставленное программное обеспечение компанию ПСС «Грайтек».

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.