Dmitry Nikolaenko
Reseach Software Engineer for HPC
Email / LinkedIn / GitHub / Twitter
Experience in HPC, numerical simulations and mathematical modelling
Research Software Engineer @ Advanced Research Computing at University of Durham (United Kingdom) (Dec 2021 - present)
- Supporting research… (to be continued)
Research Software Engineer @ University of Plymouth (United Kingdom) (Oct 2020 - Sep 2021)
EXALAT Project of ExCALIBUR programme.
- Porting of the Particle Physics simulation suite openQCD to GPU architecture
- Adapting data structures and their memory layout using CUDA Unified Memory to run the code on multiple GPU devices with CUDA-aware MPI communication of halo regions enabled thanks to NVIDIA GPUDirect
- Profiling MPI+CUDA code using performance analysis tool NVIDIA Nsight systems
- Debugging CUDA code using
cuda-gdb
- Technologies used: CUDA, MPI, C.
HiPEAC internship @ Shapelets (Málaga, Spain) (Nov. 2019 – Feb. 2020)
Research and development of parallel algorithms on GPU for time series analysis on a novel Big Data platform.
- Learning the open-source Python code
Tigramite
for discovery of causal relationships in high-dimensional time series datasets and the company’s flagship product Khiva
for large-scale data analytics on GPU, based on Matrix Profile.
- Finding bottlenecks using profilers for Python:
py-spy
, speedscope
, pyinstrument
- Parallelized Pearson correlation coefficient matrix using
ArrayFire
library
- Parallelized matrix-matrix, matrix-vector multiplication using
cuBLAS
library
- Added a new functionality in
Khiva
(in C++) and attempted to integrate it with Tigramite
by means of Python binding
- Best practices of software development: package and environment management (
pip
, conda
, conan
), benchmarking (Google Benchmark), testing and code integration on GitHub (Travis, AppVeyor)
- Writing Python/C++ codes in modern IDEs (Microsoft Visual Studio 2019 / Code, JetBrains PyCharm, Jupyter Notebook)
- Technologies used: C++, Python, CUDA, ArrayFire, cuBLAS, CMake.
Project Employee @ Chair of Thermal Processing Technology, Montanuniversität Leoben (Austria) (Oct. 2016 – Oct. 2018)
Industrial Doctoral Program “Numerical investigation of steel oxidation during hot-dip galvanization process in industrial furnaces” (unfinished).
- Setting up, carrying out numerical simulations and evaluating CFD models for steel strips in industrial furnaces
- Adaptations of a multi-region conjugate heat transfer solver, which couples fluid and solid regions, in two cases for simulations of hot-dip galvanization: 1) cooling of moving steel strip; 2) turbulent combustion in a radiant tube burner with consideration of structural mechanics. In the latter case, flamelet modelling of turbulent combustion in the fluid region was combined with solving elastic deformation of the steel material in the solid region.
- Visualizing simulation results using ParaView.
- Literature review of combustion and turbulence models.
- Technologies used: C++, OpenFoam, ANSYS Fluent and ICEM CFD, Paraview.
- Research output: Link
Project Employee @ Institute for Mathematics and Scientific Computing, University of Graz (Austria) (2007 – 2010, 2013 – 2016)
Doctoral School “DK Numerical Simulations in Technical Sciences” and Doctoral Program “Multicore and manycore simulations for coupled physical systems” (unfinished).
- Worked on multigrid and multilevel techniques for coupled systems of PDEs for heat transfer and gas dynamics during combustion and implemented spatial and temporal adaptive algorithms for 1D evaluation of methane combustion within the 3D flame front from DNS (C++) (2010)
- Studied optimisation strategies and graph partitioning with SCOTCH
- Identified bottlenecks and explored scalability for the code
MercuryDPM
for granular flows and particle interactions realising discrete particle method
- Parallelization of the most time-consuming part in
MercuryDPM
- contact detection algorithm, based on a multilevel hierarchical grid - using standard OpenMP
and a novel task-based OmpSs
programming models
- Tuning and performance analysis and writing about it in a collaborative report as part of the co-design process in “Mont-Blanc 3” project (2016)
- Technologies used: Fortran, C++, MPI, OpenMP, OmpSs, Intel TBB, Intel Advisor and VTune Amplifier, MAQAO, Paraver, Extrae, UML, Doxygen.
Education
Summer schools, courses, workshops, hackathons in high performance computing and HPC technologies
M.Sc. & B.Sc. in Applied Mathematics and Computer Science @ Nizhny Novgorod State Technical University (Russia) (2000 – 2006)
- Master Thesis: “Application of state-of-the-art computation technologies for a system of forest fire forecasting”
Accomplishments
DAAD Scholarship for junior scientists @ Saarland University (Saarbrücken, Germany) (2006 – 2007)