Software Developer for High-Performance Codes (EP-SFT-2018-133-LD)
- Geneva, Switzerland
At CERN, the European Organization for Nuclear Research, physicists and engineers are probing the fundamental structure of the universe. Using the world's largest and most complex scientific instruments, they study the basic constituents of matter - fundamental particles that are made to collide together at close to the speed of light. The process gives physicists clues about how particles interact, and provides insights into the fundamental laws of nature. Find out more on http://home.cern.
You will join:
- The Experimental Physics Department (EP), which carries out basic research in the field of experimental physics. It aims to provide a stimulating scientific atmosphere and remains an important reference centre for the European physics community; and contributes to the education and training of young scientists.
- The Software Development for Experiments (SFT) group (http://ep-dep-sft.web.cern.ch) that develops and provides support for scientific software for the high-energy physics experiment collaborations at CERN and worldwide. In particular, we develop the Geant4 simulation toolkit (http://cern.ch/geant4); the ROOT analysis toolkit (https://root.cern); and the CernVM-FS software distribution system (http://cernvm.cern.ch), which are used by nearly all high-energy particle physics experiments world-wide as well as in many other domains, such as medical; financial; and space applications.
The group is currently involved in an innovative programme to improve the performance of the simulation (Geant4) and analysis toolkits (ROOT), by exploiting the parallelism offered by modern CPU architectures and other techniques. This involves working on a number of ongoing R&D activities and later a major re-engineering of existing software to be ready for the High-Luminosity LHC. In addition, we need to adapt the software developed by the group, as well as the distribution of this software using CernVM-FS, for use in large HPC centres hosting supercomputers.
Your job will be to develop high-performance libraries and frameworks to exploit new processor architectures and accelerators that can be integrated into Geant4 and ROOT. These libraries are typically written in C++ and other specialised languages and extensions for high performance computing. Emphasis will be put on developing portable and versatile libraries that abstract user codes from specific hardware capabilities, such as vector instructions (SIMD) and hardware accelerators.
- Investigate high-performance computing techniques and their applicability to analysis and simulation codes developed in the SFT group. In particular, investigate the use of hardware accelerators such as GPUs and FPGAs; and the use of task-based parallelism in the group's software.
- Develop vector libraries in the area of mathematics and data manipulation, as well as libraries to optimally offload computations to accelerators.
- Investigate ways to speed-up and consolidate software deployment and distribution on HPC resources (supercomputers).
- Contribute to the maintenance and development of the key software products of the group.
Master's degree or PhD or equivalent relevant experience in the field of computing engineering or a related field.
- Demonstrated experience in collaborative development of C++ code in a large software. projects, with a full stack mindset (development, deployment, interfaces and support).
- Demonstrated experience with task-based programming.
- Demonstrated experience in testing, performance profiling and debugging complex software systems.
- Experience in programming heterogeneous platforms with CPUs and accelerators using, e.g., C++, Cuda, or OpenCL would be an advantage.
- Knowledge of programming techniques and languages: proficiency in the C++ programming language; experience in programming high-performance computer architectures would be an advantage.
- Testing, diagnosing and optimization of software: proficiency with debugging and performance profiling tools for complex systems.
- Development of application software: knowledge of parallel data organization and programming for highly parallel I/O systems.
- Knowledge and application of software life-cycle tools and procedures.
- Re-use, refactoring, integration, and porting of existing software.
- Solving problems: addressing complex problems by breaking them down into manageable components; producing workable and timely solutions that meet requirements.
- Achieving results: delivering high quality work on time and fulfilling expectations.
- Learning and sharing knowledge: sharing knowledge and expertise freely and willingly with others; coaching others to ensure knowledge transfer.
- Demonstrating flexibility: adapting quickly and resourcefully to shifting priorities and requirements.
- Communicating effectively: expressing opinions, ideas and suggestions with conviction and in a logical/structured manner; keeping to the point.
Spoken and written English: the ability to draw-up technical specifications and scientific reports as well as make oral presentations.
Eligibility and closing date:
Diversity has been an integral part of CERN's mission since its foundation and is an established value of the Organization. Employing a diverse workforce is central to our success. We welcome applications from all Member States and Associate Member States. (https://home.cern/about/member-states).
This vacancy will be filled as soon as possible, and applications should normally reach us no later than 15.01.2019.
Contract type: Limited duration contract (3 years). Subject to certain conditions, holders of limited-duration contracts may apply for an indefinite position.
These functions require:
- Work during nights, Sundays and official holidays, when required by the needs of the Organization.
Job grade: 6-7
Job reference: EP-SFT-2018-133-LD
Benchmark Job Title: Computing Engineer
Please make sure you have all the documents needed to hand as you start your application, as once it is submitted, you will not be able to upload any documents or edit your application further