Hi Sumit,
> Thanks for the update. I will check it out. As for the second one,
> indeed thats what I ended up doing:
>
> // Get some context information for OpenCL compatible GPU devices
> viennacl::ocl::platform pf;
> std::vector<viennacl::ocl::device> devices =
> pf.devices(CL_DEVICE_TYPE_GPU);
> // If no GPU devices are found, we select the CPU device
> if (devices.size() > 0)
> {
> // Now, often we may have an integrated GPU with the CPU. We would
> // like to avoid using that GPU. Instead, we search for a discrete
> // GPU.
> viennacl::ocl::setup_context(0, devices[1]);
> }
> else
> {
> devices = pf.devices(CL_DEVICE_TYPE_CPU);
> viennacl::ocl::setup_context(0, devices[0]);
> }
Keep in mind that devices may be returned in arbitrary order. I've
already seen cases where the discrete GPU is returned as the first
device. (Unfortunately I don't know of a robust and general way of
dealing with such cases).
> Here is my kludge. Is there any "real" example of data partitioning and
> using multiple GPU's?
No. PCI-Express latencies narrow down to sweet spot of real performance
gains for most algorithms in ViennaCL a lot. Only algorithms relying
heavily on matrix-matrix multiplications are likely to show good benefit
from multiple GPUs. As a consequence, we are currently keeping our focus
on single GPUs. There is some multi-GPU support through ViennaCL as a
plugin for PETSc available, but that focuses on iterative solvers and
does not cover any eigenvalue routines yet.
Best regards,
Karli
------------------------------------------------------------------------------
_______________________________________________
ViennaCL-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/viennacl-devel