We currently have an exciting opportunity for an experienced Software Developer in our Theory and Computational Science department within our Magnetic Fusion Energy Division. This position, under general supervision with limited review, independently leads the design, development and verification of novel scientific software for high-fidelity physics simulations on unique high performance computational hardware including Exascale-class systems. The successful applicant will create new software libraries, algorithms, and applications in a primarily development environment, as part of a larger project to solve critical questions relating to plasma physics and fusion power generation.
General Atomics is one of the world’s leading resources for high-technology systems development ranging from the nuclear fuel cycle to remotely piloted aircraft, airborne sensors, and advanced electric, electronic, wireless and laser technologies.
DUTIES AND RESPONSIBILITIES:
- Designs algorithms for selected problems with specific attention to physics fidelity, numerical stability, and scalability to high performance multicore, GPU, and other systems including at Exascale.
- Communicates and collaborates with physicists and other software developers for the resolution of technical challenges and clarification of scientific requirements.
- Performs benchmarking of these various software solutions, and incorporates them into more complete simulations with end-user input and experimentally verifiable results when needed.
- Assists in project decisions regarding algorithm design, hardware configuration, and feasibility with recommendations from a computational software perspective.
- Refactors existing code where required, to ensure correctness on specific architectures and to perform optimization work identified in the code analysis phase.
- Installs, configures and maintains appropriate library and third party supporting software.
- Implements good software development practices including encapsulation, code reuse unit testing and version control.
- Performs other duties as assigned or required.
- Typically requires a bachelor’s degree, master’s degree or PhD in computer science, applied math, physics, or a related discipline and progressive software development experience as follows; four or more years of experience with a bachelor’s degree or two or more years of experience with a masters degree. May substitute equivalent experience in lieu of education.
- Demonstrable fluency in C/C++ and a parallel programming language such as CUDA, OpenCL, OpenACC, MPI or OpenMP.
- Experience designing high performance parallel algorithms and developing them in a Linux environment, including unique hardware configurations with explicit memory management.
- Experience in numerical methods for differential equations and linear algebra, and knowledge of floating-point arithmetic.
- Requires initiative and willingness to take on responsibility for development tasks, and proactively assist the scientific researchers with their requirements.
- Ability to organize, schedule, and coordinate work phases, determine the appropriate approach at the task level and to provide solutions to a range of highly complex technical problems.
- Must be highly self-motivated, results-focused, and able to work in a team environment.
- Good communication, presentation, and interpersonal skills.
- Some formal competence in electromagnetic theory, fluid mechanics and applied mathematics, providing the ability to translate abstract mathematical equations into stable and comprehensible calculations.
- Previous experience maintaining the hardware of a heterogeneous, high performance computing environment.
- Experience optimizing code for the Xeon Phi (Knights Landing) architecture, including using MCDRAM, the AVX512 instructions and proper multi-threading.
- Experience with Fortran and Python.
- Experience with presentation and publication of research results.
- Previous demonstrated capability to work and interact with scientists, engineers and managers from different institutions both domestic and international.
- Experience with software lifecycle development including specification, design, implementation, testing, & maintenance.
- Previous experience with research in the DOE/ASCR and SciDAC environments.
Looking for a new gig? Our Jobs Board helps companies of all sizes hire the best talent and offers the best opportunity for job seekers to get hired.