Software DeveloperDate posted 12/20/2018
Job ID#: 21925BR
Company: General Atomics
Job Title: Software Developer
Job Category: Engineering, Information Technology, Scientists
City: San Diego
Full-Time/Part-Time: Full-Time Hourly
General Atomics (GA), and its affiliated companies, 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.
We recognize and appreciate the value and contributions of individuals with diverse backgrounds and experiences and welcome all qualified individuals to apply.
We currently have an exciting opportunity for an experienced Software Developer in our Computational Science and Theory departments within our Magnetic Fusion Energy Division, which operates the DIII-D tokamak. This position, under general supervision and with limited review, leads the design, development and verification of novel scientific software projects for unique high performance computational hardware including some of the world's most powerful supercomputers. This position optimizes existing software, creates new software tools, motifs, and mathematical simulations in a primarily development environment, in support of the larger goal to solve critical questions relating to plasma physics and fusion power generation.
DUTIES AND RESPONSIBILITIES:
- Writes and refactors quality HPC code for hardware specific runtime optimization, resource management and numerical stability.
- Designs algorithms for selected problems with specific attention to physics fidelity, numerical stability, and scalability to high performance multicore, GPU and other systems.
- Performs benchmarking of these various software solutions, and incorporates them into more complete simulations with end-user input and experimentally verifiable results when needed.
- Installs, configures and maintains appropriate library and third party supporting software on local development hardware.
- Implements good software development practices including encapsulation, code reuse, unit testing and version control.
- Communicates and collaborates with physicists and other software developers for the resolution of technical challenges and clarification of scientific requirements.
- Performs other duties as assigned or required.
- Typically requires a bachelors degree, masters degree or PhD in computer science, information systems or a related discipline and progressive software development experience as follows; four or more years of experience with a bachelors degree or two or more years of experience with a masters degree. May substitute equivalent experience in lieu of education.
- Experience designing high performance parallel algorithms and developing them in a Linux environment, including unique hardware configurations with explicit memory management.
- 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 independently or in a team environment.
- Good communication, presentation, and interpersonal skills.
- Desirable qualifications include:
- 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 with software lifecycle development including specification, design, implementation, testing, & maintenance.
- 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.
Travel Percentage Required : 0% - 25%
Clearance Required? No