.. _device-support: Device Support ============== Data Parallel C++ supports several types of devices: - Host device: Performs computations directly on the current CPU - CPU device: Performs computations on a CPU using OpenCLâ„¢ - GPU device: Performs computations on a GPU All Data Parallel C++ routines of |O-MKL| RNG support at least the Host and CPU devices. GPU devices are supported for the following engines: - ``oneapi::mkl::rng::mcg31m1`` - ``oneapi::mkl::rng::mcg59`` - ``oneapi::mkl::rng::mrg32k3a`` - ``oneapi::mkl::rng::mt19937`` - ``oneapi::mkl::rng::mt2203`` - ``oneapi::mkl::rng::philox4x32x10`` - ``oneapi::mkl::rng::sobol`` GPU devices are supported for all distributions. .. note:: Some of the distributions use double precision inside the implementations, so not all GPUs are supported for them. Refer to :ref:`Engines` and :ref:`distributions` for more detailed descriptions of each routine.