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 ViennaCL-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/viennacl-devel