Summary
A low-level software engineering position focused on developing highly optimized scientific computing solutions. The role requires expertise in performance-critical programming, parallel processing, and complex data-intensive applications.
Highlights
Opportunity to work on advanced high-performance computing systems, scientific software, optimization challenges, and cutting-edge computational technologies.
Description
We are a technology company at the forefront of high-performance computing (HPC) with a strong foundation in applied physics.
Our innovative hardware and software solutions for the global technology and resource sectors enable our clients to leverage large and complex data sets.
We operate three world-class green supercomputer clusters, running a large suite of scientific applications.
The research and development team of mathematicians, geophysicists, and software engineers are responsible for creating and maintaining this suite of signal-processing and subsurface imaging tools.
We're looking for talented low-level software developers who are keen to apply their skills to a new scientific domain.
We operate a mixed C / C++ / Python / Java environment and make heavy use of CPUs (incl.
Intel Xeon Phi and its AVX-512 instruction set) and GPUs (via CUDA).
You'll leverage your experience to determine when it's worth it to operate in C, to decide when there's value in hand-vectorising, and when it's a waste of time.
When submitting your application, you'll show that you have an attention to detail by including ‘Shibboleth' in your cover letter.
List Of Responsibilities
High- and detailed-level design of scientific processing softwareImplementation, testing, optimisation and maintenance of software written in the most appropriate language to solve each problem (including Java, C/C++ and Python)Inspection and maintenance of software written by other members of the teamBecoming conversant in the problem domains of new and existing productsActing as 3rd-level technical support, for otherwise-unresolvable customer issuesProviding and receiving regular, constructive feedback to and from your peersCollaborating on priority and scheduling for rapid product iterationsActing as mentor for an exceptional intern or junior developer
Requirements
Demonstrable expert-level skills as a software developer in C or C++ (if you also have Java or Python expertise, so much the better)Demonstrable abilities in low-level performance optimisation (you should be comfortable having an in-depth conversation about concepts such as threading, concurrency, vectorisation, memory alignment, loop unrolling, etc.)A history of advanced work in some of our major focus areas, such as data management, large I/O, highly-parallel computing, or numerical processing (in another industry is fine; we're interested in the "how", not the "why")Excellent written and spoken business and technical English, suitable for working directly with clients
Compensation
An attractive salary will be negotiated based on skills and experience.
Disclaimer
The offer is subjected to pre-employment screenings that may include, but are not limited to:
Verification of your right to work in the respective locationProvision of applicable and relevant qualificationsNationally approved criminal history check