Sent from my Verizon Wireless 4G LTE smartphone


-------- Original message --------
From: Karl Rupp <r...@iue.tuwien.ac.at>
Date: 10/11/2016 10:10 AM (GMT-08:00)
To: Andrew Palumbo <ap....@outlook.com>, viennacl-devel@lists.sourceforge.net
Subject: Re: [ViennaCL-devel] Fw: Matrix * Vector CL_OUT_OF_RESOURCES error

Hi Andy,

> Wrt to (a) I'm using the 1.7.2 release from installed by apt-get on
> ununtu. So it's not the latest.

Huh? The latest release is 1.7.1...


Oops... long days and long nights.. been a while wince I looked at it....  so 
it's the latest release :)

Will run the code tonight..

Thx

> I will try running with the code you provided tonight.  The problem is
> that we use javacpp and so do not have access to stdlib as written
>  currently.

Your original version should be fine, too. Either way, the STL-vector is
of course not needed and just for testing :-)


> I will run the c++ code tonight and let you know.

Cheers!

Best regards,
Karli




>
> -------- Original message --------
> From: Karl Rupp <r...@iue.tuwien.ac.at>
> Date: 10/11/2016 7:31 AM (GMT-08:00)
> To: Andrew Palumbo <ap....@outlook.com>,
> viennacl-devel@lists.sourceforge.net
> Subject: Re: [ViennaCL-devel] Fw: Matrix * Vector CL_OUT_OF_RESOURCES error
>
> Hi Andy,
>
> thanks for the reminder and sorry for not getting back to you sooner.
>
> After replacing the dynamically-sized arrays with std::vector<double>, I
> compiled the code you provided and can execute it without problems. The
> code is also valgrind-clean, so I don't know what could possibly be the
> problem.
>
> Can you please verify two things:
>   a) you use the latest code from the master branch?
>   b) does the error show up with the attached code? It contains the
> fixes for std::vector<>. The reason for the change is that my compiler
> (GCC 4.6) did error out with the following:
>
> DenseVectorMmul.cpp: In function ‘int main()’:
> DenseVectorMmul.cpp:32:30: error: variable-sized object ‘A_values’ may
> not be initialized
> DenseVectorMmul.cpp:45:26: error: variable-sized object ‘B_values’ may
> not be initialized
>
>
> Best regards,
> Karli
>
>
> On 10/11/2016 07:15 AM, Andrew Palumbo wrote:
>> Hi Karl, I was wondering if you'd had a chance to take a look at this?
>>
>>
>> Any help would be much appreciated.  We're looking to do a mahout
>> release shortly and it would be great to have a ViennaCL vector
>> implementation included.
>>
>>
>> Thank you,
>>
>>
>> Andy
>>
>>
>> ------------------------------------------------------------------------
>> *From:* Andrew Palumbo <ap....@outlook.com>
>> *Sent:* Thursday, September 15, 2016 7:08:49 PM
>> *To:* Karl Rupp; viennacl-devel@lists.sourceforge.net
>> *Subject:* Re: [ViennaCL-devel] Fw: Matrix * Vector CL_OUT_OF_RESOURCES
>> error
>>
>>
>>
>> Thank you I apologize for the sloppiness.
>>
>>
>> with the correct compile line, I get:
>>
>> $ g++ DenseVectorMmul.cpp  -I/usr/include/viennacl/ -lOpenCL -o denseVecs
>>
>> $ ./denseVecs
>> terminate called after throwing an instance of 'viennacl::memory_exception'
>>   what():  ViennaCL: Internal memory error: not initialised!
>> Aborted (core dumped)
>>
>> Thanks,
>>
>> Andy
>>
>>
>> ------------------------------------------------------------------------
>> *From:* Karl Rupp <r...@iue.tuwien.ac.at>
>> *Sent:* Thursday, September 15, 2016 6:46:40 PM
>> *To:* Andrew Palumbo; viennacl-devel@lists.sourceforge.net
>> *Subject:* Re: [ViennaCL-devel] Fw: Matrix * Vector CL_OUT_OF_RESOURCES
>> error
>>
>> Hi,
>>
>> these are linker errors. Add -lOpenCL.
>> If the OpenCL library is not available system-wide, also pass the the
>> location with the -L flag.
>>
>> :-)
>>
>> Best regards,
>> Karli
>>
>>
>> On 09/16/2016 12:08 AM, Andrew Palumbo wrote:
>>>
>>> Apologies for accidentally not replying to the list last email....
>>>
>>>
>>>
>>>
>>> Thank you, Karl, I'd forgotten that because we have that Definition as
>>> part of the java cpp setup.
>>>
>>>
>>> With #define VIENNACL_WITH_OPENCL, though now I'm getting compile
>>> errors. Are there possibly missing includes?  I've checked this against
>>> the blas2.cpp example, and don't see any missing.  As well I cant seem
>>> to find the suggested imports that you recommended several weeks back.
>>>  I've attached theu pdated .cpp file with the correct #define as well as
>>> pasted it below the partial error dump.
>>>
>>>
>>> Thanks again for your time,
>>>
>>> Andy
>>>
>>>
>>>
>>> g++ DenseVectorMmul.cpp  -I/usr/include/viennacl/ -o denseVec
>>> /tmp/ccSoGpk2.o: In function
>>> `viennacl::ocl::handle_inc_dec_helper<_cl_mem*>::dec(_cl_mem*&)':
>>> DenseVectorMmul.cpp:(.text._ZN8viennacl3ocl21handle_inc_dec_helperIP7_cl_memE3decERS3_[_ZN8viennacl3ocl21handle_inc_dec_helperIP7_cl_memE3decERS3_]+0x17):
>>> undefined reference to `clReleaseMemObject'
>>> /tmp/ccSoGpk2.o: In function
>>> `viennacl::ocl::handle_inc_dec_helper<_cl_program*>::dec(_cl_program*&)':
>>> DenseVectorMmul.cpp:(.text._ZN8viennacl3ocl21handle_inc_dec_helperIP11_cl_programE3decERS3_[_ZN8viennacl3ocl21handle_inc_dec_helperIP11_cl_programE3decERS3_]+0x17):
>>> undefined reference to `clReleaseProgram'
>>> /tmp/ccSoGpk2.o: In function
>>> `viennacl::ocl::handle_inc_dec_helper<_cl_kernel*>::dec(_cl_kernel*&)':
>>> DenseVectorMmul.cpp:(.text._ZN8viennacl3ocl21handle_inc_dec_helperIP10_cl_kernelE3decERS3_[_ZN8viennacl3ocl21handle_inc_dec_helperIP10_cl_kernelE3decERS3_]+0x17):
>>> undefined reference to `clReleaseKernel'
>>> /tmp/ccSoGpk2.o: In function
>>> `viennacl::ocl::handle_inc_dec_helper<_cl_command_queue*>::inc(_cl_command_queue*&)':
>>> DenseVectorMmul.cpp:(.text._ZN8viennacl3ocl21handle_inc_dec_helperIP17_cl_command_queueE3incERS3_[_ZN8viennacl3ocl21handle_inc_dec_helperIP17_cl_command_queueE3incERS3_]+0x17):
>>> undefined reference to `clRetainCommandQueue'
>>> /tmp/ccSoGpk2.o: In function
>>> `viennacl::ocl::handle_inc_dec_helper<_cl_command_queue*>::dec(_cl_command_queue*&)':
>>> DenseVectorMmul.cpp:(.text._ZN8viennacl3ocl21handle_inc_dec_helperIP17_cl_command_queueE3decERS3_[_ZN8viennacl3ocl21handle_inc_dec_helperIP17_cl_command_queueE3decERS3_]+0x17):
>>> undefined reference to `clReleaseCommandQueue'
>>> /tmp/ccSoGpk2.o: In function
>>> `viennacl::ocl::handle_inc_dec_helper<_cl_context*>::inc(_cl_context*&)':
>>> DenseVectorMmul.cpp:(.text._ZN8viennacl3ocl21handle_inc_dec_helperIP11_cl_contextE3incERS3_[_ZN8viennacl3ocl21handle_inc_dec_helperIP11_cl_contextE3incERS3_]+0x17):
>>> undefined reference to `clRetainContext'
>>> /tmp/ccSoGpk2.o: In function
>>> `viennacl::ocl::handle_inc_dec_helper<_cl_context*>::dec(_cl_context*&)':
>>> {....snip.....}
>>>
>>>
>>>
>>> DenseVectorMmul.cpp:
>>>
>>>
>>>
>>> #define VIENNACL_WITH_OPENCL
>>> #include "viennacl/context.hpp"
>>> #include "viennacl/matrix.hpp"
>>> #include "viennacl/tools/random.hpp"
>>>
>>>
>>> // C_vec = A_dense_matrix %*% B_vec.
>>>
>>> // compile line w/o OpenMP: g++ DenseVectorMmul.cpp
>>> -I/usr/include/viennacl/ -o denseVec
>>>
>>>
>>>
>>> int main()
>>> {
>>>   // trying to recreate javacpp wrapper functionalliy as closely as possible
>>>   // so not using typedef, unsigned ints, etc, and defining templates as
>>> doubles
>>>   // creating buffers as int/double arrays and then setting pointers to
>>> them.
>>>   // (not 100% sure that this is how javacpp passes pointers but should
>>> be close.)
>>>
>>>
>>>   //typedef double       ScalarType;
>>>
>>>   // using unsigned ints here to suppress warnings/errors w/o using
>>> -fpermissive`
>>>   // in acuallity, we cast `int`s from jni/javacpp.
>>>   unsigned int m = 200;
>>>   unsigned int n = 100;
>>>
>>>   // create an OpenCL context which we will pass directly to the
>>> constructors
>>>   // of the Matrix and vector
>>>   viennacl::context oclCtx(viennacl::OPENCL_MEMORY);
>>>
>>>   double A_values[m * n] = {0};
>>>
>>>   viennacl::tools::uniform_random_numbers<double> randomNumber;
>>>   for (int i = 0; i < m * n; i++) {
>>>     A_values[i] = randomNumber();
>>>   }
>>>
>>>   double* A_values_ptr = A_values;
>>>
>>>   // this is currently the constructor that we're using through
>>> scala/javacpp.
>>>   const viennacl::matrix<double,viennacl::row_major>
>>>                        A_dense_matrix(A_values_ptr, oclCtx.memory_type()
>>> , m, n);
>>>
>>>   double B_values[n] = {0};
>>>
>>>   for (int i = 0; i < n; i++) {
>>>     B_values[i] = randomNumber();
>>>   }
>>>
>>>   double* B_values_ptr = B_values;
>>>
>>>   // this is currently the constructor that we're using through
>>> scala/javacpp.
>>>   viennacl::vector<double> B_vec(B_values_ptr, oclCtx.memory_type(), n,
>>> 0, 1);
>>>
>>>   // perform multiplication and pass result to a vector constructor
>>>   viennacl::vector<double> C_vec(viennacl::linalg::prod(A_dense_matrix ,
>>> B_vec));
>>>
>>>   // print out vec
>>>   std::cout << "ViennaCL: " << C_vec << std::endl;
>>>
>>>
>>>   // just exit with success for now if there are no runtime errors.
>>>
>>>   return EXIT_SUCCESS;
>>> }
>>>
>>> ------------------------------------------------------------------------
>>> *From:* Karl Rupp <r...@iue.tuwien.ac.at>
>>> *Sent:* Thursday, September 15, 2016 5:14:36 PM
>>> *To:* Andrew Palumbo; ViennaCL-devel@lists.sourceforge.net
>>> *Subject:* Re: [ViennaCL-devel] Matrix * Vector CL_OUT_OF_RESOURCES error
>>>
>>> Hi,
>>>
>>>> Attached and below is the the matrix and vector setup that I'm using
>>>> from scala.
>>>>
>>>> I've also attached it as DenseVectorMmul.cpp.
>>>>
>>>>
>>>> When i the snippet below, I get the following error:
>>>>
>>>> terminate called after throwing an instance of 'viennacl::memory_exception'
>>>>   what():  ViennaCL: Internal memory error: not initialised!
>>>> Aborted (core dumped)
>>>
>>> you need to either
>>>   #define VIENNACL_WITH_OPENCL
>>> at the very top or add
>>>   -DVIENNACL_WITH_OPENCL
>>> to your compiler call.
>>>
>>> Best regards,
>>> Karli
>>>
>>>
>>>
>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> #include "viennacl/matrix.hpp"
>>>> #include "viennacl/compressed_matrix.hpp"
>>>> #include "viennacl/vector.hpp"
>>>> #include "viennacl/tools/random.hpp"
>>>> #include "viennacl/context.hpp"
>>>>
>>>>
>>>> // C_vec = A_dense_matrix %*% B_vec.
>>>>
>>>> // compile line w/o OpenMP: g++ DenseVectorMmul.cpp
>>>> -I/usr/include/viennacl/ -o denseVec
>>>>
>>>>
>>>>
>>>> int main()
>>>> {
>>>>   // trying to recreate javacpp wrapper functionalliy as closely as 
>>>> possible
>>>>   // so not using typedef, unsigned ints, etc, and defining templates as
>>>> doubles
>>>>   // creating buffers as int/double arrays and then setting pointers to
>>>> them.
>>>>   // (not 100% sure that this is how javacpp passes pointers but should
>>>> be close.)
>>>>
>>>>
>>>>   //typedef double       ScalarType;
>>>>
>>>>   // using unsigned ints here to suppress warnings/errors w/o using
>>>> -fpermissive`
>>>>   // in acuallity, we cast `int`s from jni/javacpp.
>>>>   unsigned int m = 200;
>>>>   unsigned int n = 100;
>>>>
>>>>   // create an OpenCL context which we will pass directly to the
>>>> constructors
>>>>   // of the Matrix and vector
>>>>   viennacl::context oclCtx(viennacl::OPENCL_MEMORY);
>>>>
>>>>   double A_values[m * n] = {0};
>>>>
>>>>   viennacl::tools::uniform_random_numbers<double> randomNumber;
>>>>   for (int i = 0; i < m * n; i++) {
>>>>     A_values[i] = randomNumber();
>>>>   }
>>>>
>>>>   double* A_values_ptr = A_values;
>>>>
>>>>   // this is currently the constructor that we're using through
>>>> scala/javacpp.
>>>>   const viennacl::matrix<double,viennacl::row_major>
>>>>                        A_dense_matrix(A_values_ptr, oclCtx.memory_type()
>>>> , m, n);
>>>>
>>>>   double B_values[n] = {0};
>>>>
>>>>   for (int i = 0; i < n; i++) {
>>>>     B_values[i] = randomNumber();
>>>>   }
>>>>
>>>>   double* B_values_ptr = B_values;
>>>>
>>>>   // this is currently the constructor that we're using through
>>>> scala/javacpp.
>>>>   viennacl::vector<double> B_vec(B_values_ptr, oclCtx.memory_type(), n,
>>>> 0, 1);
>>>>
>>>>   // perform multiplication and pass result to a vector constructor
>>>>   viennacl::vector<double> C_vec(viennacl::linalg::prod(A_dense_matrix ,
>>>> B_vec));
>>>>
>>>>   // print out vec
>>>>   std::cout << "ViennaCL: " << C_vec << std::endl;
>>>>
>>>>
>>>>   // just exit with success for now if there are no runtime errors.
>>>>
>>>>   return EXIT_SUCCESS;
>>>> }
>>>>
>>>> ------------------------------------------------------------------------
>>>> *From:* Andrew Palumbo <ap....@outlook.com>
>>>> *Sent:* Wednesday, September 14, 2016 9:49:32 PM
>>>> *To:* Karl Rupp; ViennaCL-devel@lists.sourceforge.net
>>>> *Subject:* Re: [ViennaCL-devel] Matrix * Vector CL_OUT_OF_RESOURCES error
>>>>
>>>>
>>>> Hi Karl,
>>>>
>>>>
>>>> Thanks, Yeah I'll try to mock one up in C++ and see if i can reproduce
>>>> it.   (still working in java via javacpp so it can be tough to debug on
>>>> my end).  Will send you a C++ snippit soon.
>>>>
>>>>
>>>> Thanks,
>>>>
>>>>
>>>> Andy
>>>>
>>>> ------------------------------------------------------------------------
>>>> *From:* Karl Rupp <r...@iue.tuwien.ac.at>
>>>> *Sent:* Wednesday, September 14, 2016 7:09:13 PM
>>>> *To:* Andrew Palumbo; ViennaCL-devel@lists.sourceforge.net
>>>> *Subject:* Re: [ViennaCL-devel] Matrix * Vector CL_OUT_OF_RESOURCES error
>>>>
>>>> Hi Andrew,
>>>>
>>>>> I've been getting a CL_OUT_OF_RESOURCES error when I try to do (somthing
>>>>> like) the following with A OpenCL Contex in a unit testt:
>>>>>
>>>>>
>>>>> viennacl::matrix<double,viennacl::row_major> mxA
>>>>>
>>>>> viennacl::vector<double> vecB
>>>>>
>>>>>
>>>>> // add some data to both mxA and vecB
>>>>>
>>>>>
>>>>> viennacl::vector<double> vecB = viennacl::linalg::prod(mxA, vecB)
>>>>>
>>>>> This seems right and everything works when using an OpenMP Context, but
>>>>> when I try to read the data off of the GPU in (with in an openCL
>>>>> Context)  using backend::memory_read, I get the CL_OUT_OF_RESOURCES error.
>>>>
>>>> You get a CL_OUT_OF_RESOURCES error if one of the previous kernels or
>>>> data manipulations seg-faulted. Although unlikely, it may also be a
>>>> problem with the matrix-vector product kernel. Is there any chance you
>>>> can send a working code snippet to reproduce the problem?
>>>>
>>>> Best regards,
>>>> Karli
>>>>
>>>>
>>>>>
>>>>>
>>>>> If I dont make the backend::memory_read call, that test will pass,  but
>>>>> my next  unit test; A Matrix * Matrix test will fail.
>>>>>
>>>>>
>>>>> Does the Vector product or memory_read seem wrong to you?
>>>>>
>>>>>
>>>>> Thanks,
>>>>>
>>>>>
>>>>> Andy
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> ------------------------------------------------------------------------------
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> ViennaCL-devel mailing list
>>>>> ViennaCL-devel@lists.sourceforge.net
>>>>> https://lists.sourceforge.net/lists/listinfo/viennacl-devel
>>>>>
>>>>
>>>
>>>
>>>
>>> ------------------------------------------------------------------------------
>>>
>>>
>>>
>>> _______________________________________________
>>> ViennaCL-devel mailing list
>>> ViennaCL-devel@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/viennacl-devel
>>>
>>
>

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
ViennaCL-devel mailing list
ViennaCL-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/viennacl-devel

Reply via email to