Войти через соцсеть:
Войти через email:
Построение проектов на C++ задача непростая для системы сборки и далеко не каждая сможет с этим успешно справится. CMake, Meson или модный Bazel хорошо известны в мире C++, а что же Gradle? Ведь он совсем из другой вселенной Java и Android. Попробуем посмотреть на него в новом качестве и разобраться может ли он быть полезным для C++ сообщества.
* рассказать что такое GEMM(general matrix multiplication)
* области применения в ML(MLP, CV, Attention, ... ) и других областях например анализе графов(что бы показать широту возможного применения)
* рассказать в общих словах про подходы к реализации и оптимизации для GPU
* показать пример реализации с нуля(но тоже кратко, и остановиться только на самых интересных/важных местах) для CUDA или OpenCL
* показать сравнительные тесты производительности своей реализации c cuBLASS, cutalss, CLBlast и CPU реализациями например MKL и OpenBLASS
До начала 1990-х гг информационные технологии представляли собой раздел прикладной математики, а основным предметом информационных технологий были алгоритмы численных методов решения математических задач.
Разделение IT и прикладной математики (и в индустриальном, и в образовательном плане) произошло вместе с Интернет-революцией 1990-х гг. Разработка приложений отделилась от математического программирования. "Web-site или приложение часто можно создать и без математики", но при этом требуются современные, конкурентные технологии разработки ПО.
Однако существуют важные области индустрии, в которых такое разделение является контр-продуктивным. Широко известный пример — финансовая математика (Quantitative Analytics), где от специалистов требуются интегративные знания в области математического моделирования, инженерии ПО (как правило, на основе C++) и финансовой экономики.
В данном докладе рассматривается положение дел в области научных и инженерных вычислений для высокотехнологичных, наукоёмких отраслей индустрии, на примере аэрокосмической промышленности.
В данной области ситуация — обратная той, которая сложилась в сфере разработки коммерческих IT решений: несмотря на высокую наукоемкость и критические требования по надежности для аэрокосмических решений, в России в данной области до сих пор применяются информационные технологии 50-летней давности (Fortran для численных методов).
В этой области имеет место существенное отставание российских аэрокосмических информационных технологий от современного мирового уровня. В западных странах уже в течение последних 30 лет стали общепринятыми различные высоконадежные методы инженерии критического ПО, в том числе методы формальной верификации функциональной и временнОй корректности ПО.
Автор поставил следующую задачу: не переходя на уровень формальной верификации ПО (который не может сразу быть достигнут в российских аэрокосмических решениях), максимально использовать возможности для высоконадежной инженерии ПО, предоставляемые современными mainstream технологиями программирования на основе развитой системы типов, а именно C++ стандартов 11--23.
Для этой цели автором разработаны (и продолжают разрабатываться) две библиотеки с открытым исходным кодом: DimTypes (https://github.com/LMerkin/DimTypes) и на ее основе, SpaceBallistics (https://github.com/LMerkin/SpaceBallistics).
Библиотека DimTypes реализует систему размерных типов для корректного отображения физических (и иных) размерностей величин на типы С++, корректность которых проверяется исключительно на этапе компиляции.
В отличие от других существующих реализаций размерных типов в C++ (например, boost::units), DimTypes позволяет представлять размерности с дробными степенями, что важно для аэрокосмических приложений. Эффективная реализация работы с векторами дробных степеней в compile-time осуществляется путем кодирования этих степеней битовыми полями с использованием Z_p арифметики.
Библиотека SpaceBallistics предназначена для интегрирования дифференциальных уравнений движения ракет-носителей и космических аппаратов на активных и пассивных участках траекторий. В основе этой библиотеки лежит система типов (на основе C++ шаблонов) размерных векторов (на основе DimTypes) в различных систем координат: с различными началами координат, различной ориентацией осей, и т.п. Вектора, отнесенные к разным системам координат, имеют разные типы и не могут быть некорректно "перемешаны" в вычислительных алгоритмах.
Библиотека SpaceBallistics находится на этапе активной разработки. Помимо системы типов для систем координат и векторов, в нее встроено (также type-safe образом) вычисление координат и компонент скорости тел Солнечной системы на основе JPL эфемерид DE440. Библиотека может использоваться для дизайна и анализа траекторий РН и КА, в том числе межпланетных.
Автор выражает надежду, что данные библиотеки могут послужить основой для разработки и внедрения современных высоконадежных IT решений в российской аэпокосмической промышленности.