GPU Software Programmer (EP-AIP-SDS-2019-93-LD)

  • Geneva, Switzerland
  • Contract

Company Description

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

Job Description


Would you like to take part in exciting computing developments at the cutting edge of modern hardware and software technology? Are you an expert in GPU programming who enjoys coordinating innovative projects? Do you have experience with the development of track reconstruction algorithms? Then join the ALICE Experiment and contribute to the success of the upgrade of the experiment’s online and offline computing to a new common system called O2.

ALICE (A Large Ion Collider Experiment) is a dedicated heavy ion experiment at the Large Hadron Collider (LHC). The ALICE Collaboration is studying the physics of strongly interacting matter at extreme energy densities and temperatures. In Run 3+4 (2021-2029) ALICE will operate at a peak Pb-Pb collision rate of 50 kHz. All events will be read out, reconstructed synchronously with data-taking, compressed and written to permanent storage without any selective trigger. This will allow ALICE to assess rare probes with large backgrounds, for which data reduction with online triggers is not possible.

Within the ALICE software development and support group (EP-AIP-SDS) you will take a leading role in the development of high-performance event reconstruction algorithms on modern CPU and GPU architectures. You will also participate in the commissioning and maintenance of the new online and offline computing system.


You will play important role in the architectural design, development and support activities associated with the ALICE Physics Data Processing (PDP) project for Run 3+4. Your functions will include:

  • System design and software development of the PDP data transport and processing layers, using message-based multiprocessing in heterogeneous clusters with CPU and GPGPU.
  • Coordinate the design and development of fast algorithms for data processing within the PDP, including clusterisation, tracking, primary and secondary vertex finding, compression, and calibration algorithms.
  • High-level consultancy and expert help to the software developers working on the performance optimization of the algorithms, and developing code for GPGPU.
  • Development of testing procedures and quality assurance of the data reconstruction.
  • Participate in testing, commissioning and maintenance of the ALICE online and offline computing system.
  • Participate in studies for future upgrades of the system.


Master's degree or PhD or equivalent relevant experience in the field of computing or physics, or a related field.


  • Extensive experience in C++ programming, including the latest C++ standards (C++11,14,17).
  • Extensive experience on adapting scientific computing methods to best exploit modern parallel environments (e.g. distributed clusters, multicore SMP, and GPGPU).
  • Extensive experience implementing and optimizing algorithms on GPU’s through CUDA and OpenCL.
  • Demonstrated experience in the development of HEP data processing frameworks and particle reconstruction (cluster, track and vertex finding).
  • Initial experience with deep learning framework (e.g. TensorFlow, Torch, etc.) is a plus.

Technical competencies:

  • Knowledge and application of particle tracking methods and techniques: cellular automata, Kalman filter, Hough transform.
  • Knowledge and application of physics reconstruction techniques: clusterisation, tracking, primary and secondary vertex finding, lossless and lossy compression.
  • Development of application software: object-oriented design and development, parallel programming, algorithm development and optimisation.
  • Knowledge of programming techniques and languages: modern C++ (C++11,14,17), CUDA, OpenCL.
  • Knowledge and application of software life-cycle tools and procedures: git/github/gitlab; JIRA.

Behavioural competencies:

  • Achieving results: delivering high quality work on time and fulfilling expectations; defining clear objectives, milestones and deliverables before initiating work/ project; objectively assessing and monitoring own work; regularly reporting on progress and advising of any changes in schedule or priorities.
  • Solving problems: identifying, defining and assessing problems, taking action to address them; finding the information needed to solve problems; making objective judgments based on all the facts available; being open to original ideas and creative options by which to address issues; continually driving change by seeking new ways to improve outcomes.
  • Learning and sharing knowledge: keeping up-to-date with developments in own field of expertise and readily absorbing new information; taking steps to expand knowledge in other areas of expertise beyond own field; sharing knowledge and expertise freely and willingly with others; coaching others to ensure knowledge transfer.
  • Working in teams: working well in groups and readily fitting into a team; participating fully and taking an active role in team activities; cooperating constructively with others in the pursuit of team goals; balancing personal goals with team goals; seeking to help other team members when own work is done; supporting others.
  • Demonstrating flexibility: demonstrating openness to new ideas and situations; adapting quickly and resourcefully to shifting priorities and requirements; actively participating in the implementation of new processes and technologies.

Language skills:

  • English: very good command in spoken and written
  • French: basic command or willingness to acquire the language


Additional Information

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.

This vacancy will be filled as soon as possible, and applications should normally reach us no later than 30.09.2019.

Employment Conditions

Contract type: Limited duration contract (5 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-AIP-SDS-2019-93-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

Privacy Policy