A quick note on all the different ways in which one can utilise multiple devices in OpenCL. This overlaps with my previous post on the same subject in the series but is a higher level overview than that previous post.
Here are the different ways one can load balance across multiple devices.
- Use CPU and GPU devices.
- Use multiple GPU devices.
For each of the above one can utilise them in the following ways.
- Single context – Use one context in total across all devices and one command queue per device.
- Multiple contexts single-host-thread – Use one context and one command queue per device.
- Multiple contexts multi-host-threaded – Same as multiple contexts above but use one host thread per device to enqueue to the command queue for that device. This can also be in the form of starting one host process instance per device which in essence is the same.
For an elaboration on the latter strategies see my previous post on the subject.