Skip to content

parnumeric/aboutme

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 

Repository files navigation

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)