The selected candidate will join the activities of the RD section of the Scientific Computing Collaboration (SC) group.
Your main functions will include:
- Software development for the cross-community computing projects.
- Research and development of the effective use of computing accelerators.
- Development of concepts to improve the portability and sustainability of HEP code.
- Contribution to training and dissemination activities in these areas.
As a Software Engineer, you will work on several of the following topics:
- Contribute to cross-community development projects. In these projects the team collaborates with the core development teams of the large scientific software packages to improve their performance and adapt them to the changes in the computing infrastructure.
- Evaluate and apply libraries and frameworks for the abstraction of hardware accelerators. The basis of these studies will be the work with components of the HEP software stack such as GEANT or event generator code.
- Help the community in the process to make efficient use of modern HPC systems. The focus will be to develop strategies based on practical experience.
- HEP code has a very long lifetime and the code contains contributions of hundred scientists, with many of them being no longer part of the community. Based on your work with these codes you will suggest approaches and methodologies to improve portability and sustainability.
- Prepare training and information material related to your field of expertise and actively communicate the results of your work.
- Actively build collaborative relationships with the developer and user communities of HEP software at CERN, by participating in workshops, conferences and informal exchange of information.
Master's degree or equivalent relevant experience in the field of software engineering or a related field.
The candidate should have demonstrated practical experience in several of the following areas and technologies:
- In-depth experience with modern C++ in the Linux/UNIX environment:this includes build, debug and performance analysis tools, etc.
- Significant development of code that uses accelerators, either GPUs or FPGAs.
- Experience in refactoring/porting of a large code base ( > 100k sloc).
- Either a background in the support of scientific code on HPC systems, or some familiarity with components of the HEP software stack.
- Experience with accelerator abstraction frameworks like Alpaka, Kokos, oneApi, SYCL, OpenCL, OpenMP etc.
- Development of application software: is familiar with state of the art software development tools.
- Testing, diagnosing and optimization of software.
- Re-use, refactoring, integration and porting of existing software.
- Knowledge and application of software life-cycle tools and procedures.
- Architecture and design of ICT systems.
- User relationship management.
- Achieving results: delivering prompt and efficient service taking into account customer needs.
- Demonstrating flexibility: readily absorbing new techniques and working practices; proposing new or improved ways of working.
- Solving problems: identifying, defining and assessing problems, taking action to address them; adopting a pragmatic approach; understanding the value of adopting generic rather than 'gold -plated' technical solutions.
- Learning and sharing knowledge: sharing knowledge and expertise freely and willingly with others; coaching others to ensure knowledge transfer.
- Communicating effectively: utilising effective negotiation techniques to achieve long-term results acceptable to all parties involved.
- Good knowledge of English is required; ability to draw-up technical specifications and/or scientific reports and to make oral presentations.
- Basic knowledge of French or an undertaking to acquire it rapidly.