Обязанности и достижения:
Общее описание:
разрабатывал и руководил разработкой высокопроизводительных систем и графических приложений на C++ для Linux (Debian) и Windows (ограниченно). Создавал масштабируемые системы и инструменты, оптимизировал их вычислительные ядра для ресурсоёмких задач, реализовывал сложные GPU-пайплайны под разные API (OpenGL, CUDA, OpenCL).
Применявшиеся ключевые навыки:
- языки и API: C++11/17, OpenGL 4.3–4.6 (GLSL (430–460)), OpenCL 2.x/3.x, CUDA C (12.x), Vulkan (основы), HLSL (базовые знания), OpenMP 4.5;
- библиотеки и инструменты: STL, Boost, Qt 5.15 (Core + Widgets), Assimp, CUDA Toolkit, NVIDIA Nsight;
- системы сборки и управления проектами: qMake, CMake, GitLab CI/CD, Docker;
- алгоритмирование: численная оптимизация и задачи нелинейного программирования, многомерная оптимизация, аналитическая и вычислительная геометрия, BVH, spatial partitioning, collision detection, задачи на графах;
- работа с ML: автоматическая генерация обучающих выборок.
В результате длительных научных изысканий, проводящихся параллельно, было разработано множество систем, направленных на автоматическое решение задач, требовавших ранее обязательного участия человека (в части внесения обязательных правок). Когда же эти системы доказали свою исключительную эффективность, время их работы было уменьшено на несколько порядков (с часов до десятков секунд) благодаря всесторонней оптимизации и внедрению техник, использующих GPU. Впоследствии был разработан удобный инструментальный пакет, обеспечивающий «из коробки» решение широкого круга задач (многомерной нелинейной оптимизации) без ручной доработки.
Все разработанные решения были приведены к виду "универсального ПО" с точки зрения запуска на различном аппаратном обеспечении; были учтены особенности, например, не только десктопных GPU от AMD, NVidia и Intel, но и их "коллег" из серверного сегмента - NVidia A100 и AMD Instinct MI 100.
Были разработаны автоматические тесты, оценивающие не только надёжность ПО, но и изменения в качестве и времени его работы с непрерывным журналированием и внесением получаемых сведений GitLab.