Skip to content
View pkarnakov's full-sized avatar

Block or report pkarnakov

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.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

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

Report abuse
pkarnakov/README.md

Hi everyone 👋

I'm a research scientist developing software and numerical algorithms for simulation, control, and design of complex physical systems. My interests range from classical numerical methods to data-driven techniques and machine learning, with a focus on software engineering and high-performance computing. List of publications.

You can see examples of my work at pkarnakov.com, reach me on social media LinkedIn, Twitter/X, and watch some of my simulation videos on YouTube.

Research Projects

ODIL (Optimizing a DIscrete Loss) is a method for solving inverse problems for partial differential equations, which is orders of magnitude faster than PINN (physics-informed neural networks).

Demos
Poisson Wave Heat

Distributed multiphysics solver for simulating multiphase flow with bubbles and electrochemical reactors. The solver performed the largest simulations of foaming by breakup and mixing of air in water.

Videos and demos
Foaming Electrolysis Drops Gallery

Other Projects

Automatic differentiation framework in C++ with GPU support through OpenCL.

Story and examples This project made me realize that some machine learning applications that would normally rely on TensorFlow/JAX/PyTorch can actually be implemented in pure C++ from scratch in a reasonable amount of time (several days). And for small problems on a CPU it also works 10x times faster than the corresponding Python+TensorFlow implementation. The ODIL demos above use this code to run in WebAssembly. Examples of constructed computational graphs:

Game with particles and portals. Written in C++ with OpenGL and SDL2. There is a web version.

Description and screenshots You can connect particles to create ropes, run them through portals, and manipulate with the mouse. The accel button couples the gravity vector with measurements from an accelerometer (if supported).
Native Web

Visual materials for a class on numerical methods that I lectured in 2022.

Removing day-night cycle from videos using PCA. Code | Slides

pcavideo_paris.mp4 pcavideo_paris_first3.mp4 pcavideo_paris_zero3.mp4
pcavideo_vietnam.mp4 pcavideo_vietnam_first3.mp4 pcavideo_vietnam_zero3.mp4
pcavideo_sunrise.mp4 pcavideo_sunrise_first3.mp4 pcavideo_sunrise_zero3.mp4

Sound of the wave equation. Code | Slide

The forcing signal excites certain frequencies of an oscillator. Videos with (loud) sound:

Forcing Response
wave_force.webm wave_signal.webm

Prototype operating system in x86 assembly.

Story and screencast I started this project back in 2008 for a school competition in Russia's space capital Korolyev. The plan was to push Windows out of the market, but it didn't work out.

tinyos.mp4

Pinned Loading

  1. cselab/aphros cselab/aphros Public

    Finite volume solver for incompressible multiphase flows with surface tension. Foaming flows in complex geometries.

    C++ 407 44

  2. cselab/odil cselab/odil Public

    ODIL (Optimizing a Discrete Loss) is a Python framework for solving inverse and data assimilation problems for partial differential equations.

    Python 93 11

  3. autodiff autodiff Public

    Automatic differentiation in C++ with GPU support and applications to PDEs solved by ODIL

    C++ 6

  4. ptoy ptoy Public

    Particle toy with bonds and portals

    C++ 2

  5. am205 am205 Public

    Course material for APMTH 205 (numerical methods) at Harvard SEAS lectured in Fall 2022

    Python 9

  6. tinyos tinyos Public

    Prototype operating system in x86 assembly

    Assembly