C++

Разработка


Александр Корнилов
Старший разработчик @ АО Лаборатория Касперского
Нижний Новгород
Gradle в мире C++
из Доклады

    Построение проектов на C++ задача непростая для системы сборки и далеко не каждая сможет с этим успешно справится. CMake, Meson или модный Bazel хорошо известны в мире C++, а что же Gradle? Ведь он совсем из другой вселенной Java и Android. Попробуем посмотреть на него в новом качестве и разобраться может ли он быть полезным для C++ сообщества.

  • Категории : Разработка
  • Секции: C++

  • Кирилл Колодяжный
    Ведущий разработчик ПО @ YADRO
    Санкт-Петербург

    * рассказать что такое GEMM(general matrix multiplication)

    * области применения в ML(MLP, CV, Attention, ... ) и других областях например анализе графов(что бы показать широту возможного применения)

    * рассказать в общих словах про подходы к реализации и оптимизации для GPU

    * показать пример реализации с нуля(но тоже кратко, и остановиться только на самых интересных/важных местах) для CUDA или OpenCL

    * показать сравнительные тесты производительности своей реализации c cuBLASS, cutalss, CLBlast и CPU реализациями например MKL и OpenBLASS

  • Категории : Разработка
  • Секции: C++

  • Леонид Меркин
    Профессор @ НИУ ВШЭ в Санкт-Петербурге, Департамент Информатик
    Москва

    До начала 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 решений в российской аэпокосмической промышленности.

  • Категории : Разработка
  • Секции: C++