Job Opportunities

Software Engineer

The Innovative Computing Laboratory (ICL) is seeking a self-motivated and highly productive Software Engineer to participate in the development of next-generation computational tools for the US Department of Energy’s Exascale Computing Project (ECP). This position requires a candidate who designs, develops, tests, and documents complex software solutions that perform independently or as part of a larger information system. We expect a strong commitment to the development of high-quality software, a passion for learning new technical skills, and a keen interest in working with top-of-the-line hardware and bleeding-edge software technologies, some of which are still in active development.

Duration of Position

ECP is a 3-year program funded by soft money. There will be an opportunity to apply for a second phase. This position will continue based on the availability of funding.

Responsibilities
  • Develop and implement software using C++
  • Develop and coordinate test plans, use test suites, and perform tests on software solutions
  • Integrate software with other systems, test interfaces, and manage version control
  • Maintain and contribute to the development of user and developer documentation
  • Conduct regular sweeps across the system, checking for consistency across documents
  • Solve bug issues, engage in trouble shooting, and interact with the project community
Qualifications: Education

Required:

  • Bachelor’s degree in Computer Science or related field with demonstrable background in computer science
  • In-depth industry knowledge of software engineering practices
  • 3 years experience developing commercial software

Desired:

  • Master’s degree in Computer Science or related field with experience developing commercial software
Qualifications: Experience

Required:

  • Minimum of 2 years experience in object-oriented programming, data structures, algorithms, design patterns, Linux development environment, software engineering, application development, and scripting languages

Desired:

  • Working experience in technical computing, scientific engineering, and computational science and/or academic research environments
  • Experience in software design, development and implementation, developing test plans, and performing tests on software solutions and contributing to and maintaining documentation
Qualifications: Job Skills

Required:

  • Strong C/C++ programming skills and Mercurial/Git knowledge
  • Excellent verbal and written communication skills
  • Ability to perform assignments under the direction of a senior researcher, working independently and meeting
  • deadlines

Desired:

  • Python programming skills and a basic understanding of parallel computing concepts
  • Working knowledge of documentation tools, such as Doxygen and Sphinx
  • Skilled in using online research and training sites, such as “Stack Overflow”
  • An understanding of effective ways to automate processes
How to Apply

For consideration, send CV and contact information for three references to Jack Dongarra at dongarra[at]icl.utk[dot]edu.


Research Position in Numerical Linear Algebra

The primary duties of this full-time position are to assist in the design, development, and maintenance of numerical software libraries for solving linear algebra problems on large distributed memory machines with multicore processors and hardware accelerators; write research papers documenting research findings; present material at conferences; and direct students and a research team in their research endeavors as related to ongoing and future projects. This role will have opportunities for publication, travel, and high-profile professional networking in academia, labs, and industry.

Education

A PhD in computer science or a related field with a demonstrable background in applied mathematics and computer science, in particular distributed computing, multicore computing, and GPU computing; or an MS in computer science or a related field plus 3-5 years relevant research or work experience.

Experience

A background in applied mathematics; technical experience in parallel computing, distributed computing, and multithreading; familiarity with numerical software libraries; and experience with performance diagnostics and optimization techniques, tracing, and profiling. Experience with developing mathematical software desired. A track record of contributing to open-source projects is a plus. Experience with GPU computing is highly desired.

Job Skills

The following skills are required: a background in applied mathematics, familiarity with numerical software, extensive knowledge of programming techniques, high proficiency in C/C++, a basic understanding of Fortran language, proficiency in MPI and OpenMP, familiarity with CUDA or OpenCL, technical writing and presentation skills, excellent communication skills, and a strong publication record.

Compensation

Salary starts at at $60,000 a year, depending on experience and qualifications.

How to Apply

For consideration, send CV and contact information for three references to Jack Dongarra at dongarra[at]icl.utk[dot]edu.