Dr Emily Kahl
Areas of interest
- Scientific and numerical computing:
- Computational physics
- Computational chemistry
- Performance engineering and analysis of scientific software
- Developer productivity in scientific computing:
- DevOps for HPC
- Improving maintainability of legacy code, especially Fortran
- Policy for sustainable and open development of software in science
Development and employment experience
- Scientific programmer @AIBN (2020 - ongoing):
- Software development - both in-house molecular dynamics code and LAMMPS, one of the most widely used and well established open-source molecular dynamics codebases (maintained by Sandia National Lab and Temple University).
- Lead developer for the VISCOUS project as part of the Pawsey Centre for Extreme-Scale Readiness (PaCER) - a competitive grant program to develop high-performance codes for the upcoming Setonix supercomputer. Work done in collaboration with the Pawsey Centre and AMD.
- Added GPU acceleration for nonequilibrium molecular dynamics methods to LAMMPS using Kokkos for performance portability between NVIDIA and AMD GPUs.
- Lead and coordinated efforts to implement improved algorithms to simulate fluid flow at the molecular level in LAMMPS (not yet merged upstream).
- Teaching, mentoring and supervising undergraduate student projects.
- Managing group access to HPC resources and tuning commonly used software for optimal performance on different HPC clusters.
- Research software consultant @UQ physics (2021 - ongoing):
- Improving the usability, stability and performance of code to simulate QED corrections in atoms. Worked on two Fortran codebases: one modern codebase written in Fortran 2003 (developed in-house), and another legacy codebase written in FORTRAN 77 (developed by a collaborator, code is substantially older than I am).
- Introduced modern development practices: version control, automated testing, CI pipelines with GitHub (non-trivial for Fortran code).
- Overhauled the software’s (command-line) UI to use modern input parsing and TOML configuration files.
- Added multithreading parallelism with OpenMP for most computationally demanding subroutines.
- Currently working on documenting, refactoring, testing “spaghetti” legacy FORTRAN 77 code to interoperate with the in-house modern Fortran codebase.
- PhD: Atomic structure physics @UNSW physics (2016 - 2020)
- Developing the AMBiT software - a program for relativistic atomic structure calculations written in modern C++.
- Added OpenMP multithreading and did performance optimisations for existing MPI multiprocessing schemes, as well as general algorithms and data structures in the code. My work allowed AMBiT to efficiently scale up to thousands of CPU cores and allowed us to simulate (almost) arbitrarily complicated atomic structures which would be inaccessible without the use of large-scale HPC resources.
- Community management and evangelism, including handling bug-reports, feature requests and generally onboarding new users. AMBiT is now used by atomic physics research groups in Australia, Europe and China.
- Did atomic structure calculations with AMBiT to support precision searches for physics beyond the standard model, as well as novel applications of highly-charged ions such as photolithography.
- Research assistant @University of Groningen, The Netherlands (2018)
- Atomic structure calculations in superheavy elements using AMBiT
- Educating researchers in how to use AMBiT effectively as a complement to their existing computational workflow
- PhD (Physics) - The University of New South Wales, Sydney, Australia
- BSc. Hons. (Physics) - The University of Queensland, Brisbane, Australia
- BSc. (Physics+Computational Science) - The University of Queensland, Brisbane, Australia
A nonexhaustive list of skills
- Computational physics, computational chemistry, numerical analysis
- Languages: C++, C, Fortran, old FORTRAN, Python, x86_64 assembly (read-only)
- Legacy code maintenance
- Full HPC stack performance engineering and optimisation: high-level application profiling tools,
perftools for system performance analysis, low-level microbenchmarking and hardware performance analysis
- Parallel programming: MPI, OpenMP, GPU programming
- Linux shell scripting and operations within an HPC environment
- Developing pedagogical research applications in Qt and Jupyter notebooks
- DevOps practices in HPC: software containers with Docker and Singularity, continuous integration, continuous development
- Developer training and technical writing (documentation, tutorials, etc)
- Code on GitHub and CTCMS website
- Publications on Google Scholar or ORCiD.
- My PhD thesis is on the UNSW Library Website
In the media
A full list of media appearances and talks can be found at this page.
Referees and contact details available on request.