About me

I am a theoretical physicist with a strong inclination towards computational and mathematical work. My particular interest is the physics of strongly correlated electrons systems. Professionally I am currently leading a team of 19 engineers for Intel Corporation.

All about Intel Architecture

Developing high perfomance applications for Intel requires a substantial insight into the inner workings of the processors, such as the core pipelines, memory subsystems, I/O subsystem, energy management and processor configuration with model specific registers at boot time or during operation.

Apart from an in-depth understanding of the algorithm, successful optimization of applications requires the detailed analysis of the the application characteristics. Here, the performance monitoring unit comes in handy. It lets you analyze exactly, where which things happen at any given time on a processor and is an indespensible tool for an HPC adept.

Also, processor development largely depends on input from real-life applications. The requirements of such applications must be captured on current and simulated on future architectures in order to understand if a future archtecture meets the requirements of industry and science. Hence instruction tracing and simulation is a central part of my job.

Programming

If you want to achieve high performance, native programming is king. The prefered languages in the the industry and scientific community are C/C++ and Fortran and that is what I naturaly use to develop a solution. At times, however, those are not good enough to achieve what is required. At this point, more advanced methods are required, such as intrinsic programming or, as a last resort, IA assembly language, which lets you express what a native, yet high level language can’t, such as the AVX1, AVX2 and AVX512 instruction set extensions.

Of course, in practice many algorithms are drafted in or controlled by even higher level languages. A (non-representative) survey of my portfolio shows Matlab/Octave, Java, and Python as the main use cases. Julia has become somewhat more popular recently.

HPC, Clusters, supercomputers and parallelization

Programming highly parallel systems is at the heart of my job, hence I use MPI, OpenMP, PThreads and Co-Array Fortran on a daily basis. But there are other interesting alternatives as well! If only Google Go could develop into a distributed memory system, we would have a consistent native way of expressing parallel structures.

Scientific

Algorithms related to Quantum Mechanics are my thing: Lanczos, Density Functional Theory, Quantum Monte-Carlo (all flavors, e.g. Auxiliary Field, Green’s Function, Diffusion, Variational) and Hartree-Fock. Please have a look at my publications page. Of course, finite difference methods (particularly in seismic, EM and again QM) and finite elements are my daily business.

Management

Intel has an extensive management culture, focusing on meritocracy, the promotion of technical leadership and change management. The legal requirements of software development are also a central topic, such as export control and software license management.