Skip to content
View wonfeel's full-sized avatar
🎯
Focusing
🎯
Focusing

Block or report wonfeel

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
wonfeel/README.md

C++ Developer: многопоточность, GPU-вычисления, графика

C++ CUDA OpenGL Python CMake

Пишу на C++. Специализируюсь на параллельных системах и высокопроизводительных вычислениях. Разбираюсь с многопоточностью, CUDA и рендерингом на практике, через собственные проекты, а не по статьям.

Сейчас развиваю движок симуляций: заменяемые CPU/CUDA-бэкенды, разделение симуляции и рендера по потокам, оптимизация вычислительного ядра под память GPU.

Ищу первую работу, junior C++ (системы, графика, вычисления). Открыт к Qt / CAD / embedded / gamedev.


Чем занимаюсь

  • Многопоточность: собственный тред-пул; симуляция и рендер разведены по потокам без гонок; синхронизация через фазовый барьер на атомиках (Idle → Computing → ReadyToCommit → Committing), вычисление и коммит гарантированно не пересекаются во времени.
  • GPU / CUDA: пишу вычислительные ядра, работаю с иерархией памяти (shared memory, тайлинг). Ускорил ядро до 10.6× против однопоточного CPU на поле 2048×2048, а ниже 512×512 выигрыша нет вовсе: запуск и обмен по PCI-E стоят дороже самой работы. Замер упирается в передачу, а не в вычисления, ядро использует около 1.3% пропускной способности карты. Разбор в docs/BENCHMARKS.md.
  • Графика: рендерер на OpenGL с нуля: шейдеры, VBO, текстуры, палитры, камера. Пробовал CUDA-GL interop.
  • Архитектура: разбиваю god-классы на компоненты с одной ответственностью, прячу бэкенды за интерфейсами (ISimulationBackend: CPU и CUDA взаимозаменяемы, остальной код не знает, что получил).

Проекты

Tessera: 2D движок симуляций на C++/CUDA/OpenGL Чанковый мир: симулируются только живые чанки, состояние само расползается в соседние. Симуляция и рендер в отдельных потоках, собственный тред-пул, CUDA-бэкенд с shared-memory тайлингом (до 10.6× к однопоточному CPU). Бэкенд симуляции за одним интерфейсом: один код работает и на CPU, и на GPU без переписывания. ImGui-интерфейс, CI на GitHub Actions (Windows + Linux, ThreadSanitizer).

На движке три самостоятельные демки, каждая в своём репозитории (подтягивают Tessera через CMake FetchContent):

HexLife: игра «Жизнь» Конвея: загрузка .rle-паттернов, интерактивное рисование, запись GIF.

Gosper gun    Random field spreading across chunks

WaveLight: свет как волновое поле на гекс-сетке: хроматическая дисперсия R/G/B, рисуемая призма, направленный луч.

Дальше в планах: отдельный физический бэкенд за тем же интерфейсом: волновое уравнение (FDTD) и векторные поля.

Wormy: симуляция тела и нервной системы C. elegans на движке Tessera Настоящий коннектом из 401 нейрона (Cook et al. 2019) через разреженный неспайковый интегратор сети управляет физическим телом: активность сети → кривизна мышц → сегментированное тело → resistive-force-theory физика на анизотропном субстрате → положение и ориентация. Никакой скриптованной локомоции: движение целиком следствие нейронной активности.

C. elegans worm swimming, driven by real connectome    Worm simulation screenshot


Навыки

Уверенно C++17 · многопоточность · OpenGL · CMake · Git
Базово CUDA · GLSL · Python · Linux
Инструменты Dear ImGui · GLFW · GLAD · GLM · Ninja · GitHub Actions · MSVC

Контакты

Pinned Loading

  1. Tessera Tessera Public

    2D cellular-automaton engine — chunked world, parallel simulation on a thread pool, CPU and CUDA backends, OpenGL renderer

    C++

  2. Wormy-c302 Wormy-c302 Public

    Симуляция C. elegans на реальном коннектоме, поверх движка Tessera

    C++