Giacomo Castiglioni

Who am I

My background is in computational fluid dynamics and, during my career, I transitioned from being a domain scientist to my current role as an HPC software engineer at ETHZ and as a freelancer.
I enjoy understanding the interaction among different layers of the software stack and the hardware and how it affects performance.
Lately I started to get interested in code generation and domain specific languages in the context of optimizing kernels programmatically for different hardware.

Bio

I obtained my M.Sc. and PhD degrees in aerospace engineering from the University of Southern California, USA, in 2011 and 2015 respectively, while my B.Sc. in mechanical engineering was obtained at the Polytechnic University of Milan, Italy, in 2009. My PhD thesis was related to high-fidelity turbulence modeling for separated and transitional flows, and the quantification of numerical errors.
After my doctoral appointment, I worked at Tesla Motors as a computational fluid dynamics analyst in both the thermal and external aerodynamics groups. While at Tesla I submitted a patent for a novel vent design.
In 2016, I was a postdoctoral scholar at the California Institute of Technology (USA) working on high-fidelity simulations of multi-species supercritical flows. When I moved to Imperial College (UK) in 2018, I worked on high-order unstructured methods for shock-wave boundary layer interactions. Here I started my transition from domain scientist to software developer working on the open-source spectral finite element solver Nektar++. Among other topics, I ported a few kernels that utilize the single instruction multiple data (SIMD) paradigm for which I wrote a simple, header-only SIMD library.

Experience

HPC Software Engineer

Eidgenössische Technische Hochschule Zürich, Zurich, Switzerland

HPC Software Engineer for QuICC, a software for dynamo (magnetohydrodynamics) simulations.
Refactoring for hybrid parallelization (mpi+GPU/threads).
Refactored building (CMake) and testing infrastructure (CI/CD).

October 2021 - Present

Freelance Software Engineer

Zurich, Switzerland

Freelance Software Engineer working on the C++ based, open-source, spectral finite element framework Nektar++.
Implementing a DSL using MLIR framework for generating performance critical kernels for different back-ends.
Implemented Arm SVE back-end for in-house SIMD library.

October 2021 - Present

HPC Software Performance Engineer

École Polytechnique Fédérale de Lausanne, Geneva, Switzerland

HPC Software Performance Engineer in the HPC team at the Blue Brain Project.
Developer for HBP (Human Brain Project) STEPS (STochastic Engine for Pathway Simulation).
Investigated explicit SIMD libraries as a possible alternative to auto-vectorization in CoreNEURON.

September 2020 - September 2021

Research Associate

Imperial College, London, UK

Senior developer of the C++ based, open-source, spectral finite elementframework Nektar++.
High fidelity simulations (LES/DNS) to predict shock wave unsteadiness in turbofan intake cowls at off-design conditions.
Implementation and validation of shock capturing schemes in an open-source high-order finite element CFD software.

July 2018 - August 2020

Postdoctoral Fellow

California Institute of Technology / Jet Propulsion Laboratory, Pasadena, USA

DNS simulations of multi-species, high-pressure flows relevant to fuel injection.
Implemented a thermodynamic model to predict phases of fuel-air mixtures.

November 2016 - June 2018

Senior Engineer external aerodynamics

Tesla Motors, Hawthorne, USA

Responsible for researching alternative CFD methodologies.

July 2016 - October 2016

Senior Engineer thermal/aero systems

Tesla Motors, Palo Alto, USA

Responsible for HVAC aerodynamics of Model 3.
US patent for novel air vent design (US010464397B2) .

July 2015 - July 2016

Research Assistant

University of Southern California, Los Angeles, USA

Prediction of laminar separation bubbles over wing/blade geometries.
Large Eddy Simulations.
Quantification of numerical dissipation.
Immersed Boundary, Finite Volume code.
Parallel computing.

Fall 2010 - Spring 2015

Computational Fluid Dynamics Analyst

Tesla Motors, Fremont, USA

Summer internship, simulations run on a cluster with STAR-CCM+ software.

May 2012 - August 2012

Teaching Assistant

University of Southern California, Los Angeles, USA

AME 499 Turbine Design and Analysis.
AME 408 Computer-Aided Design of Mechanical Systems (SolidWorks/CosmosWorks).
AME 301 Dynamics.
AME 150 Introduction to Computational Methods (MATLAB).

2010 - 2013

Education

PhD in Aerospace Engineering

University of Southern California, Los Angeles, USA
Thesis title: "Numerical modeling of separated flows at moderate Reynolds numbers appropriate for turbine blades and unmanned aero vehicles".
May 2015

MS in Aerospace and Mechanical Engineering

University of Southern California, Los Angeles, USA

Computational Fluid and Solid Mechanics track.

December 2011

MS coursework in Mechanical Engineering

Technische Universiteit Delft, Delft, The Netherlands

Exchange student, Erasmus program.

August 2008 - August 2009

BS in Mechanical Engineering

Politecnico di Milano, Milan, Italy
February 2009

Skills

Programming Languages
Tools

Workflow
  • Agile Development & Scrum
  • Test Driven Development
  • CI/CD

Languages

Patents