Task #2518

redesign task-assignment code for OpenCL

Added by Mark Abraham almost 3 years ago. Updated about 1 year ago.

Target version:


At it became clear that we will need to work on how OpenCL devices get chosen to have any (and which) compute task (e.g. NB, PME) run on them, and how that might affect parameters for e.g. NB search code, or kernel JIT.

OpenCL permits multiple platforms to be available and choosable at run time. It is quite possible to have a node with 5 platforms, e.g. NVIDIA GPU, AMD GPU, Intel GPU, somebody's CPU, and even an FPGA. Once there's a, it finds the configured ICD from the OS/filesystem which get installed alongside the drivers. If there's multiple devices visible, it's up to the application to decide what makes sense to do. Our Jenkins slaves literally have this issue to solve.

It's quite likely that current HPC nodes will only have one kind of GPU, but if they have the latest Intel OpenCL support installed, that will sometimes already be two platforms (Intel CPU and somebody's GPU). And with Intel positioning to make FPGAs available too...

I don't think it's a good long-term approach to require the user to configure for a single platform, and I don't think that helps us much with the run-time issue of which platform that was.

We can probably have the heuristic that we only use GPU platforms, but that assumes that we know how we can identify those (query something at run time?). We could let the user configure what the default GPU platform vendor is, so that e.g. the default for gmx mdrun -openclplatform is that value (but still potentially configurable)

More background information: introduced a CMake variable that can be used to set things up to run on an Intel iGPU, which is fine for getting some changes integrated and runnable, but we need to do a better job before we can consider exposing support for such devices to users.

Related issues

Related to GROMACS - Feature #2715: Avoid requesting the user to recompile gromacs for Intel OpenCL supportNew


#1 Updated by Erik Lindahl over 2 years ago

  • Target version changed from 2019 to 2020

#2 Updated by Mark Abraham over 2 years ago

  • Related to Feature #2715: Avoid requesting the user to recompile gromacs for Intel OpenCL support added

#3 Updated by Paul Bauer about 2 years ago

  • Parent task deleted (#2454)

Removed parent task, as this one has been bumped to 2020

#4 Updated by Paul Bauer about 1 year ago

  • Target version changed from 2020 to future

Also available in: Atom PDF