NASA Summer Internship Opportunities, deadline March 5
Nasa is offering two summer internship opportunities for students to consider. Please continue reading below to find more details about each position.
Testing Earth System Model Software – Virtual
Description: Although the accuracy of Earth system models (e.g., weather and climate models) is of extreme importance to society, our ability to test the software implementations of these complex codes is generally quite limited. To date, most testing is almost exclusively at the full system level in which model output is compared against output of previous versions. Identical results provide a strong indication that no new defects have been introduced. (Comparison of model output against observational data is known as "validation" and is a vital, but separate process of model development.) While system level testing is very robust in that it can detect many types of defects almost anywhere in the code base, it is very limited in that it typically cannot indicate where those defects are. Further, this approach is expensive in terms of time and computing resources, reducing the frequency at which such testing is employed. A useful next step would be to create the ability to test the individual software components that implement specific physical processes (precipitation, radiation, dynamics, etc.). Such tests would bracket the location of defects and will generally run faster and on fewer computing resources than the full model. The challenge is that these components generally lack standalone drivers as well as suitable sets of input/output data. This project is to develop the tools that would simplify the creation of standalone drivers for model components that are use the Earth System Modeling Framework (ESMF). The abstract interfaces provided by ESMF allow the development of a generic ESMF wrapper layer that can instrument a running model to capture all inputs and outputs of a targeted component. A single driver can then likewise be written that drives a targeted component through the generic wrapper using the captured input data and flagging differences in the output. This work will be performed using the Goddard Earth Observing System (GEOS) model.
Computer Skills: While this project involves significant use of advanced Fortran, experience with any advanced programming language is sufficient. Familiarity with ESMF and/or NetCDF would be useful.
Ref Number: 19992
Testing Parallel Software Using Mocks - VIRTUAL
Description: Many large and important scientific models (e.g., weather and climate models) rely on using the Message Passing Interface (MPI) to enable parallelism. However, MPI introduces a complex external dependency that greatly complicates the testing of model components which use MPI. Existing approaches tend to use large amounts of computing resources which inhibit the use of testing. One intriguing approach to testing software with complex external dependencies is to use software "mocks". A software mock is a configurable layer that replaces a complex dependency and thereby make a software component much easier to test. This project will explore the possibility of creating Fortran mocks for MPI to further our ability to test parallel scientific software with pFUnit.
Computer Skills: The project will largely involve developing a Python layer that ingests a description of MPI interfaces (in YAML) and produces a skeleton Fortran procedure with the same interface. Experience with Python is essential, but the necessary aspects of MPI and Fortran can be learned during the course of the project. Experience with software testing frameworks and/or YAML/JSON will be useful.
Ref Number: 19991