From: Charles D. <cde...@gm...> - 2016-08-15 18:56:13
|
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(), 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 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 <ru...@iu...> 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 <cde...@gm... >> <mailto:cde...@gm...>> 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 <ru...@iu... >> <mailto:ru...@iu...>> 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 >> <cde...@gm... <mailto:cde...@gm...> >> <mailto:cde...@gm... >> <mailto:cde...@gm...>>> 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>>). >> >> Regards, >> Charles >> >> On Wed, Aug 10, 2016 at 12:09 PM, <ru...@iu... >> <mailto:ru...@iu...> >> <mailto:ru...@iu... >> >> <mailto:ru...@iu...>>> 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 >> >> >> >> >> >> >> >> > |