Hi,

 > That's why I explicitly stated in my previous mail "Optional" :) I am
> one of those folks who likes the coziness of compile time decisions and
> (if possible) would like to make it available in VCL. However, I am not
> sure if doing this is possible via the current API structure of VCL. I
> will look into this as I first need to understand the intricacies of
> OpenCL.
>
> BTW, a previous question of mine was unanswered (or I may have
> overlooked). Are there any equivalent functions in VCL to do the following:
> a.) Two matrices, when transferred to the GPU should undergo
> element_wise multiplication ?
> b.) A unary operation on a matrix that has been transferred to the GPU?

a.) and b.) sound a lot like you are looking for element_*-functions
http://viennacl.sourceforge.net/doc/manual-operations.html#manual-operations-blas1,
 
which work for vectors and matrices alike.

Best regards,
Karli



> ------------------------------------------------------------------------
> *From:* Karl Rupp <r...@iue.tuwien.ac.at>
> *To:* Sumit Kumar <dost_4_e...@yahoo.com>
> *Cc:* "viennacl-devel@lists.sourceforge.net"
> <viennacl-devel@lists.sourceforge.net>
> *Sent:* Monday, July 27, 2015 9:13 PM
> *Subject:* Re: [ViennaCL-devel] ViennaCL reductions
>
> Hi Sumit,
>
>  > Agreed, 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?
>
> Exactly this is provided by running viennacl-info:
>    $> mkdir build && cd build
>    $> cmake ..
>    $> make viennacl-info
>    $> examples/tutorial/viennacl-info
>
>
>  > b.) Make VCL select the appropriate device so that these issues of
>  > context selection etc can be avoided?
>
> In most cases the first OpenCL device returned is the most appropriate
> device for running the computations. If you know of any better strategy
> for picking the default device, please let us know and we are happy to
> adopt it. :-)
>
>
>  > 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!
>
> How is that different from what is possible now? What is the value of
> making a runtime-decision (current ViennaCL code) a compile-time
> decision (CMake)?
>
> Imagine you are building a big application with GUI and other bells and
> whistles. In such a scenario you would like the user to select the
> compute device through a dialog at runtime rather than asking the user
> to recompile the whole application just to change the default device.
> Our current mindset is to incrementally move away from compile time
> decisions in cases where they are not needed.
>
> Best regards,
> Karli
>
>
>
>
>
>
>
>  > ------------------------------------------------------------------------
>  > *From:* Karl Rupp <r...@iue.tuwien.ac.at <mailto:r...@iue.tuwien.ac.at>>
>  > *To:* Sumit Kumar <dost_4_e...@yahoo.com <mailto:dost_4_e...@yahoo.com>>
>  > *Cc:* "viennacl-devel@lists.sourceforge.net
> <mailto:viennacl-devel@lists.sourceforge.net>"
>  > <viennacl-devel@lists.sourceforge.net
> <mailto:viennacl-devel@lists.sourceforge.net>>
>  > *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
ViennaCL-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/viennacl-devel

Reply via email to