OverviewThe ideal Scientific Software Developer for MPAS Infrastructure will be local to the DC Metro area, and be able to work a hybrid schedule, working 2 days per week in office out of the College Park, MD location, and working from home the remaining 3 days of the week.
Responsibilities
Duties of the Scientific Developer for Model Optimization will include the following:
- Identify and resolve performance bottlenecks in the UFS Weather Model with the newly integrated MPAS atmospheric dynamic core and coupled components.
- Identify opportunities for model performance improvement, including through code optimization, build configuration, and heterogeneous and portable computing, especially with CPU and GPU.
- Implement code run-time profiling for large parallel applications, including profiling of CPU & GPU performance, memory usage, cache usage, and disk I/O.
- Develop configurable, reproducible frameworks/workflows for doing so.
- Enable the integration of optimized, GPU/accelerator-enabled and profiling-enabled components into the UFS build system, including configuration of compilers, packages, and profiling/instrumentation.
- Identify available computing hardware resources and port and test accelerated code on appropriate systems, ensuring robust portability and reproducibility within acceptable tolerance.
- Investigate bit-for-bit reproducibility in the context of CPU and GPU optimizations, and propose and implement appropriate reproducibility tests.
- Contribute to strategic, technical, and other documentation regarding profiling/instrumentation, optimization, and GPU/portable programming .
- Collaborate with other teams to support models, forecast workflows, and other functions through the delivery of optimized code and profiling/instrumentation frameworks. Provide technical guidance and mentoring to colleagues on profiling/instrumentation, optimization, and GPU/portable code development.
- Explore and validate the use of Generative AI (GenAI)/Large Language Models (LLMs) to improve the quality of code and the efficiency of code development process.
Qualifications
The Scientific Developer for Model Optimization selected should have the following:
- Bachelor's or Master's degree in meteorology, atmospheric science, physical sciences, mathematics, computer science, software engineering, scientific computing, or a closely related field with demonstrated numerical modeling or closely related scientific computing experience.
- Demonstrated experience in high-performance computing (HPC), software optimization, and building, running, debugging, and profiling large-scale parallel applications.
- Proficiency in C, C++, and/or Fortran, as well as MPI.
- Familiarity with GPU/heterogenous programming and/or portability frameworks (e.g., CUDA, OpenACC, OpenMP target offloading, Kokkos, RAJA, PyTorch, JAX).
- Familiarity with profiling concepts and/or tools (e.g., gprof, TAU, Scalasca)
- Experience with Linux/Unix shell scripting and automation.
- Demonstrated experience with build systems (e.g., CMake, Meson, autotools, make) is strongly preferred, however, strong proficiency in configurable scripting and automation is acceptable.
- Demonstrated proficiency with Git or similar tools for code collaboration and management.
- Demonstrated ability to apply the concepts of software engineering and best practices.
The Ideal Scientific Developer for Model Optimization will have the following:
- Ph.D. in a quantitative field with research computing experience.
- Direct experience with the Unified Forecast System (UFS), MPAS, or other atmospheric modeling systems. Familiarity with NWP forecast workflows is beneficial.
- Experience with workflow (ecFlow, Rocoto, Cylc) and package (Spack, pip) management tools in HPC environments.
- Familiarity with leveraging GenAI/LLM tools to optimize and assist software development workflows.
- Familiarity with continuous integration (CI) workflows and frameworks.