Браузерный CAD на основе ядра C3D, разработанный российским студентом Иваном Черкасовым
Не так давно стало известно, что было серьёзно обновлено программное обеспечение C3D Labs, работающее под архитектурой Intel с многоядерным решением. И хотя для многих решение подобных моментов может показаться не особо сложным, мы постараемся осветить глубже все методы оптимизации в геометрическом ядре. А также ответить на вопросы сложности ускорения вычислений в подобных системах. Тем более что это задача не из простых.
Коттедж спроектирован в Renga Architecture
Математическая модель
Сперва стоит упомянуть о математических моделях объектов трёхмерного мира. Чаще всего ядра CAD-систем работают с очень ограниченным представлением. Если говорить проще, то получается следующее: пространство разделяют на две части — одна считается заполненной чем-либо, а всё остальное не столь важно. Граница этих частей — некие куски, между которыми есть стыки, но без видимых щелей.
За то, как производить этот стык и между чем именно, отвечает наука топология. Однако эта наука не лучший способ описать многопоточные системы. И здесь правильнее обратиться к поверхности, когда всё возможно осознать при помощи обычной математики.
Стоит обратиться к системе координат Декарта и к её заданным функциям, обозначающимися известными всем буквами латинского алфавита x, y, z. А также к области параметров u и v. Причём во всех формулах эти параметры всегда с плавающей точкой!
Рабочее окно программы C3D Labs
Программные настройки аппаратного базиса
С момента, когда многоядерные процессоры стали более-менее доступны и появились практически везде, обрела актуальность задача создания программного кода, который позволял бы использовать эти мощности наиболее эффективно. К примеру, ускорение возможно за счёт выполнения в один момент всяческих расчётов на разных процессорах или его ядрах.
К слову, именно возможность поддерживать работоспособность системы в многопоточной среде при сохранении всех плюсов такой концепции стала главным ноу-хау приложения C3D Labs. Но, работая в этом сложном направлении, разработчики вынуждены дополнять архитектуру своего творения, которое должно соответствовать четырём основным условиям:
- гарантировать наилучшую эффективность от использования многопоточности;
- обеспечивать эффективность при одном потоке;
- иметь совместимый код, работающий при любых условиях;
- вышеупомянутые условия должны быть актуальными для наибольшего числа операций.
Однако при решении этих задач разработчики сталкиваются с дилеммой и вынуждены выбирать между эффективностью и безопасностью. Ведь каждая новая проверка потребляет еще больше ресурсов процессора и требует дополнительного времени. И стоит отметить, что эта чрезвычайно сложная работа дает свои плоды.
Среди других задач — обеспечение работы на разных платформах. А это уже новые ограничения по техническим параметрам. Использование технологии OpenMP для оптимизации кода ядра C3D дало возможность решить обе эти проблемы.
Благодарим за предоставленное программное обеспечение компанию ПСС «Грайтек».