Hi,
On 08/15/2016 08:56 PM, Charles Determan wrote: > Karl, > > I have the OpenCL backend enabled and I have tried: > > cl_mem bufA = A.handle().opencl_handle().get() > cl_mem bufB = B.handle().opencl_handle().get() > cl_mem bufC = C.handle().opencl_handle().get() > > cl_command_queue queue = > viennacl::ocl::current_context().get_queue().handle().get(); > > err = clblasDgemm(clblasRowMajor, clblasNoTrans, clblasNoTrans, > A.internal_size2(), > B.internal_size1(), A.internal_size1(), Are you sure these sizes are correct? I'd expect that you use .size1() and .size2() here, and use the respective .internal_size1() and .internal_size2() for the leading dimensions (lda, ldb, ldc). Best regards, Karli > alpha, bufA, 0, lda, > bufB, 0, ldb, beta, > bufC, 0, ldc, > 1, > &queue, > 0, NULL, 0); > > > Although this compiles it results in the error - CL_INVALID_MEM_OBJECT Where (which line) do you get the error? Best regards, Karli > Not sure if you have any other thoughts or if I should try asking clBLAS > developers. > > Thanks again, > Charles > > On Mon, Aug 15, 2016 at 1:30 PM, Karl Rupp <r...@iue.tuwien.ac.at > <mailto:r...@iue.tuwien.ac.at>> wrote: > > Hi Charles, > > I am trying to verify my interface with clBLAS before going > completely > in to clMAGMA. However, I keep getting an OpenCL error -38 which > corresponds to invalid memory (CL_INVALID_MEM_OBJECT) when trying a > clblasDgemm call. This must be referring to the opencl memory > handles I > am passing in. The fields generally accepts memory buffers (cl_mem) > objects. I have tried passing both A.handle.opencl_handle() and > A.handle.opencl_handle().get() in those fields but get the same > error. > > > These should be A.handle.opencl_handle().get() > Mind the parantheses after 'handle'. > > Also, you will get the error if you don't enable the OpenCL > backends, or if you enabled the CUDA backend as well (as CUDA will > be the default then). > > Best regards, > Karli > > > I will continue to poke around (maybe I need to use internal_size > numbers) but thought I would ask you about this. > > Any insight? > > Thanks, > > Charles > > On Fri, Aug 12, 2016 at 3:21 PM, Charles Determan > <cdeterma...@gmail.com <mailto:cdeterma...@gmail.com> > <mailto:cdeterma...@gmail.com <mailto:cdeterma...@gmail.com>>> > wrote: > > Thanks Karl, > > One followup question, what distinguishes handle(), > handle1(), and > handle2()? Do they refer to different buffers? > > Regards, > Charles > > On Fri, Aug 12, 2016 at 3:13 PM, Karl Rupp > <r...@iue.tuwien.ac.at <mailto:r...@iue.tuwien.ac.at> > <mailto:r...@iue.tuwien.ac.at > <mailto:r...@iue.tuwien.ac.at>>> wrote: > > Hi Charles, > > call .handle()/.handle1()/.handle2() to get the abstract > memory > buffers, and call .opencl_handle() on them to get the cl_mem > handles: > > A.handle().opencl_handle() > > Similarly, the command queue is obtained with > viennacl::ocl::get_queue().handle().get() > > Unfortunately it's not explicitly written in the manual :-/ > > Best regards, > Karli > > > On 08/12/2016 09:39 PM, Charles Determan wrote: > > I also would need to access the command queue handle > (cl_command_queue) > object to pass to clBLAS and clMAGMA functions. Is > this easily > accessible as well? > > Thanks, > Charles > > On Fri, Aug 12, 2016 at 11:45 AM, Charles Determan > <cdeterma...@gmail.com > <mailto:cdeterma...@gmail.com> <mailto:cdeterma...@gmail.com > <mailto:cdeterma...@gmail.com>> > <mailto:cdeterma...@gmail.com > <mailto:cdeterma...@gmail.com> > <mailto:cdeterma...@gmail.com > <mailto:cdeterma...@gmail.com>>>> wrote: > > Thanks Karl, > > I have been looking through the docs and I can't > find an > example for > how to pull the OpenCL handles from a matrix. I > saw a > couple I > think from a context but not sure that is what I > need. > Is this in > the documentation somewhere? The closest I > could fine > is this page > > (http://viennacl.sourceforge.net/doc/manual-memory.html > <http://viennacl.sourceforge.net/doc/manual-memory.html> > > <http://viennacl.sourceforge.net/doc/manual-memory.html > <http://viennacl.sourceforge.net/doc/manual-memory.html>> > > <http://viennacl.sourceforge.net/doc/manual-memory.html > <http://viennacl.sourceforge.net/doc/manual-memory.html> > > <http://viennacl.sourceforge.net/doc/manual-memory.html > <http://viennacl.sourceforge.net/doc/manual-memory.html>>>). > > Regards, > Charles > > On Wed, Aug 10, 2016 at 12:09 PM, > <r...@iue.tuwien.ac.at <mailto:r...@iue.tuwien.ac.at> > <mailto:r...@iue.tuwien.ac.at > <mailto:r...@iue.tuwien.ac.at>> > <mailto:r...@iue.tuwien.ac.at > <mailto:r...@iue.tuwien.ac.at> > > <mailto:r...@iue.tuwien.ac.at > <mailto:r...@iue.tuwien.ac.at>>>> wrote: > > Hi Charles, > > > I have recently expressed some interest > in different > factorizations such as > QR and SVD. I am aware that these or > currently > experimental > within > ViennaCL. Until such a time that these > factorizations are > fully supported > (I hope to contribute but the algorithms are > quite complex) > would it be > feasible to interface with a library like > clMAGMA? I'm not > sure of any > other library offhand that does > implement these > methods. I > thought perhaps > VexCL but I couldn't find anything to that > effect in the > documentation. > > > Sure, you can always grab the OpenCL handles > from > the matrices > and plug that into clMAGMA. > I don't think there is any value in ViennaCL > wrapping the > clMAGMA interfaces, though. > > Best regards, > Karli > > > > > > > > > ------------------------------------------------------------------------------ _______________________________________________ ViennaCL-devel mailing list ViennaCL-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/viennacl-devel