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 more information and to apply, see the UT Human Resources job listing.


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 Tracy Rafferty at rafferty[at]icl.utk[dot]edu.


Research Position in Performance Measurement and Modeling

This full-time position is in the area of performance measurement and modeling, including the PAPI (http://icl.cs.utk.edu/papi/) and CoDAASH (http://icl.cs.utk.edu/codaash/) projects.

We are looking for a Research Associate who can work on the design and development of high-quality software that builds on our current projects and extends them with performance monitoring capabilities for new and advanced hardware and software technologies. Experience with high-performance computing performance tools, large-scale systems, compiler technology, and large software systems are all desired skills. However, candidates with a good computer science foundation and excellent systems skills are encouraged to apply.

These projects are leading the technology in performance analysis of scientific applications running on state-of-the-art hardware and in the modernization of code. This role will offer opportunities for publication, for travel that will involve interacting with research partners and participating in the research community, and for special training in new and emerging technologies that are relevant to the work.

The person chosen for this position will have the distinction of working at the Innovative Computing Laboratory (http://icl.cs.utk.edu/), a world-class research lab at the University of Tennessee, Knoxville, which will include close and frequent collaboration with industry partners such as Intel and Nvidia. Another plus is the university’s proximity to the beautiful Great Smoky Mountains National Park, the most visited national park in the US.

Education

A PhD in computer science or a related field with a demonstrable background in computer science, particularly in computer architectures and parallel processing; or an MS in computer science or a related field plus 3-5 years relevant research or work experience.

Experience

Technical experience in system software, parallel computing, scientific applications, low-level libraries; prior experience and expertise with systems programming, benchmarking, performance analysis toolkits, C, C++, and Fortran. Significant experience developing large software systems is a significant plus.

Job Skills

The following skills are required: extensive knowledge of programming techniques, strong low-level system programming abilities, high proficiency in C/C++, a basic understanding of the Fortran language, technical writing and presentation skills, excellent communication skills, and a strong publication record.

How to Apply

For consideration, send CV and contact information for three references to Tracy Rafferty at rafferty[at]icl.utk[dot]edu.