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.
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).
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.
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.
Sound of the wave equation. Code | Slide
The forcing signal excites certain frequencies of an oscillator. Videos with (loud) sound:
Forcing | Response |
---|---|
Prototype operating system in x86 assembly.