KarlAgreed, the names can be returned in any order. As you are using CMake
would it be possible to:a.) Write a small helper script using CMake that lists
what devices the user has on his/her machine that are OpenCL compliant?b.) Make
VCL select the appropriate device so that these issues of context selection etc
can be avoided?c.) Of course, this would be purely optional and only available
if the user wants to pre-select the device before writing any VCL code! Thanks
and Regards
Sumit
From: Karl Rupp <[email protected]>
To: Sumit Kumar <[email protected]>
Cc: "[email protected]"
<[email protected]>
Sent: Monday, July 27, 2015 7:03 PM
Subject: Re: [ViennaCL-devel] ViennaCL reductions
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