You can subscribe to this list here.
2012 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(6) |
Aug
(30) |
Sep
(1) |
Oct
(10) |
Nov
(8) |
Dec
(1) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2013 |
Jan
|
Feb
(9) |
Mar
(3) |
Apr
(1) |
May
(2) |
Jun
(2) |
Jul
(73) |
Aug
(145) |
Sep
(32) |
Oct
(45) |
Nov
(4) |
Dec
(76) |
2014 |
Jan
(24) |
Feb
(92) |
Mar
(27) |
Apr
(15) |
May
(57) |
Jun
(49) |
Jul
(105) |
Aug
(125) |
Sep
(7) |
Oct
(19) |
Nov
(70) |
Dec
(4) |
2015 |
Jan
|
Feb
|
Mar
(3) |
Apr
|
May
(8) |
Jun
|
Jul
(40) |
Aug
(29) |
Sep
|
Oct
(8) |
Nov
(1) |
Dec
(7) |
2016 |
Jan
(12) |
Feb
(7) |
Mar
(8) |
Apr
(4) |
May
(20) |
Jun
(4) |
Jul
(38) |
Aug
(44) |
Sep
(11) |
Oct
(10) |
Nov
(13) |
Dec
(4) |
2017 |
Jan
|
Feb
(7) |
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
(2) |
Sep
|
Oct
|
Nov
|
Dec
|
2018 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
(4) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Karl R. <ru...@iu...> - 2016-11-27 21:09:10
|
Hi Ilya, thank you for providing the logs. I'll check and, if necessary, try to reproduce this with the specified environment. Best regards, Karli On 11/27/2016 09:38 PM, Ilya Gradina wrote: > build environment: > gcc-c++-6.2.1, cmake-3.7.0, pocl-0.14-0.2.git3fef5b5, > boost-devel-1.60.0, valgrind-3.12.0, strace-4.14, opencl-headers-2.1, > ocl-icd-devel-2.2.9, > when I start on the laptop, all tests pass. > when I run in a sandboxed environment, don't passed the tests > 37(bisect-opencl) and 61(sparse_prod-opencl) tests. > build log with valgrind and strace on 37 and 61 tests attached to the > letter. > > > ------------------------------------------------------------------------------ > > > > _______________________________________________ > ViennaCL-devel mailing list > Vie...@li... > https://lists.sourceforge.net/lists/listinfo/viennacl-devel > |
From: Ilya G. <ily...@gm...> - 2016-11-27 20:39:07
|
build environment: gcc-c++-6.2.1, cmake-3.7.0, pocl-0.14-0.2.git3fef5b5, boost-devel-1.60.0, valgrind-3.12.0, strace-4.14, opencl-headers-2.1, ocl-icd-devel-2.2.9, when I start on the laptop, all tests pass. when I run in a sandboxed environment, don't passed the tests 37(bisect-opencl) and 61(sparse_prod-opencl) tests. build log with valgrind and strace on 37 and 61 tests attached to the letter. |
From: Karl R. <ru...@iu...> - 2016-11-23 20:53:36
|
Hi Charles, > Right now, if I want to take the negative of every element in a matrix I > end up doing the following: > > // previously assigned > viennacl::matrix<T> vcl_A; > > // matrix of zeros to subtract from > viennacl::matrix<T> vcl_Z = > viennacl::zero_matrix<T>(vcl_A.size1(),vcl_A.size2()); > > // subtract in-place > vcl_Z -= vcl_A; > vcl_A = vcl_Z; > > Is there a more efficient way to approach this? Allocating an > additional entire matrix is proving quite wasteful in some of my benchmarks. What about just vcl_A = T(-1) * vcl_A; ? This is 'inplace' as requested :-) Best regards, Karli |
From: Charles D. <cde...@gm...> - 2016-11-23 18:00:42
|
Greetings, Right now, if I want to take the negative of every element in a matrix I end up doing the following: // previously assigned viennacl::matrix<T> vcl_A; // matrix of zeros to subtract from viennacl::matrix<T> vcl_Z = viennacl::zero_matrix<T>(vcl_A.size1(),vcl_A.size2()); // subtract in-place vcl_Z -= vcl_A; vcl_A = vcl_Z; Is there a more efficient way to approach this? Allocating an additional entire matrix is proving quite wasteful in some of my benchmarks. Thanks, Charles |
From: Andrew P. <ap...@ou...> - 2016-11-21 01:36:37
|
Hi Karl- sorry for the long response- recently moved and things have been up in the air. Yep that works on my machine. Thank you very much as always for the help.. I should have seen too- I think I've just been writing directly to the GPU memory in the Matrices, and completely forgot that we needed to swap if that is not the case. Thank you very much, Andy ________________________________ From: Karl Rupp <ru...@iu...> Sent: Friday, October 21, 2016 2:25:51 PM To: Andrew Palumbo; vie...@li... Subject: Re: [ViennaCL-devel] Fw: Matrix * Vector CL_OUT_OF_RESOURCES error Hi Andy, apparently I was completely bananas and couldn't see the more fundamental problem with the code. I could reproduce the issue on my laptop (I'm on travel) and after finding the cause, I wonder why it didn't fail on my other machine. The reason for the problem is the initialization of the matrix A and the vector B: If you pass in a pointer to host memory, you *must* specify the memory type as viennacl::MAIN_MEMORY. To convert the data to OpenCL, switch to the OpenCL context via the member function .switch_memory_context(). It is not possible to use host data directly with OpenCL in general, because host memory and device memory can be physically distinct. (ignoring some possible pointer sharing on certain OpenCL devices here) The corrected code is attached. Please have a look at how A and B are initialized and how their memory context is changed to OpenCL after creation. Use viennacl::copy() or viennacl::fast_copy() to bring the data back to one of your host buffers. Sorry for not spotting this earlier... Best regards, Karli On 10/12/2016 06:25 AM, Andrew Palumbo wrote: > Hi Karl, > > As I mentioned before, I'm using libviennacl-dev version 1.7.1 installed > from the ubunto repo. > > > > When I run your attached code, I get do get an error: > > > andrew@michael:~/Downloads$ g++ DenseVectorMmul.cpp > -I/usr/include/viennacl/ -lOpenCL -o denseVec > > andrew@michael:~/Downloads$ ./denseVec > terminate called after throwing an instance of 'viennacl::memory_exception' > what(): ViennaCL: Internal memory error: not initialised! > Aborted (core dumped) > > andrew@michael:~/Downloads$ g++ --version > g++ (Ubuntu 5.4.0-6ubuntu1~16.04.2) 5.4.0 20160609 > Copyright (C) 2015 Free Software Foundation, Inc. > This is free software; see the source for copying conditions. There is NO > warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. > > Thanks, > > > Andy > > > > > > ------------------------------------------------------------------------ > *From:* Karl Rupp <ru...@iu...> > *Sent:* Tuesday, October 11, 2016 10:31 AM > *To:* Andrew Palumbo; vie...@li... > *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 |
From: Karl R. <ru...@iu...> - 2016-11-10 18:38:31
|
Hi, > What exactly is the distinction between vector and vector_base classes? vector_base is the base class for dense vectors (viennacl::vector) as well as vector proxy objects (vector_range, vector_slice). Since some of the constructors of vector_base are tricky, the recommendation is to use viennacl::vector. Also, this allows for an API very similar to Boost.uBLAS. > I assume that users would mostly use 'vector' but it appears > 'vector_base' has useful features such as casting a matrix to be > interpreted as a vector while sharing the memory (this would be very > useful for 'vector' class). Is the same true of 'vector' where there > are features it has but not in 'vector_base'? You can create a vector from scalar_vector, unit_vector, or zero_vector, which is not possible for a vector_base object. Everything else is the same. Best regards, Karli PS: Similar statements hold true for matrix vs. matrix_base. > > ------------------------------------------------------------------------------ > Developer Access Program for Intel Xeon Phi Processors > Access to Intel Xeon Phi processor-based developer platforms. > With one year of Intel Parallel Studio XE. > Training and support from Colfax. > Order your platform today. http://sdm.link/xeonphi > > > > _______________________________________________ > ViennaCL-devel mailing list > Vie...@li... > https://lists.sourceforge.net/lists/listinfo/viennacl-devel > |
From: Charles D. <cde...@gm...> - 2016-11-10 17:53:17
|
Greetings, What exactly is the distinction between vector and vector_base classes? I assume that users would mostly use 'vector' but it appears 'vector_base' has useful features such as casting a matrix to be interpreted as a vector while sharing the memory (this would be very useful for 'vector' class). Is the same true of 'vector' where there are features it has but not in 'vector_base'? Regards, Charles |
From: Karl R. <ru...@iu...> - 2016-10-21 18:26:04
|
Hi Andy, apparently I was completely bananas and couldn't see the more fundamental problem with the code. I could reproduce the issue on my laptop (I'm on travel) and after finding the cause, I wonder why it didn't fail on my other machine. The reason for the problem is the initialization of the matrix A and the vector B: If you pass in a pointer to host memory, you *must* specify the memory type as viennacl::MAIN_MEMORY. To convert the data to OpenCL, switch to the OpenCL context via the member function .switch_memory_context(). It is not possible to use host data directly with OpenCL in general, because host memory and device memory can be physically distinct. (ignoring some possible pointer sharing on certain OpenCL devices here) The corrected code is attached. Please have a look at how A and B are initialized and how their memory context is changed to OpenCL after creation. Use viennacl::copy() or viennacl::fast_copy() to bring the data back to one of your host buffers. Sorry for not spotting this earlier... Best regards, Karli On 10/12/2016 06:25 AM, Andrew Palumbo wrote: > Hi Karl, > > As I mentioned before, I'm using libviennacl-dev version 1.7.1 installed > from the ubunto repo. > > > > When I run your attached code, I get do get an error: > > > andrew@michael:~/Downloads$ g++ DenseVectorMmul.cpp > -I/usr/include/viennacl/ -lOpenCL -o denseVec > > andrew@michael:~/Downloads$ ./denseVec > terminate called after throwing an instance of 'viennacl::memory_exception' > what(): ViennaCL: Internal memory error: not initialised! > Aborted (core dumped) > > andrew@michael:~/Downloads$ g++ --version > g++ (Ubuntu 5.4.0-6ubuntu1~16.04.2) 5.4.0 20160609 > Copyright (C) 2015 Free Software Foundation, Inc. > This is free software; see the source for copying conditions. There is NO > warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. > > Thanks, > > > Andy > > > > > > ------------------------------------------------------------------------ > *From:* Karl Rupp <ru...@iu...> > *Sent:* Tuesday, October 11, 2016 10:31 AM > *To:* Andrew Palumbo; vie...@li... > *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 |
From: Andrew P. <ap...@ou...> - 2016-10-17 02:46:20
|
Hi Karl, to correct myself, I am actually using ViennaCL 1.7.1. I'd read the version.hpp file in my install last time I brought it up, and it still shows 1.7.0 as the version. FYI this is still in the current master as 1.7.0: https://github.com/viennacl/viennacl-dev/blob/master/viennacl/version.hpp ________________________________ From: Andrew Palumbo <ap...@ou...> Sent: Wednesday, October 12, 2016 10:53:12 AM To: Karl Rupp; vie...@li... Subject: RE: [ViennaCL-devel] Fw: Matrix * Vector CL_OUT_OF_RESOURCES error Interesting... Sorry I was mistaken again . I am running with the 1.7.0 library (just checked the version.hpp file) Thank you. Sent from my Verizon Wireless 4G LTE smartphone -------- Original message -------- From: Karl Rupp <ru...@iu...> Date: 10/12/2016 1:55 AM (GMT-08:00) To: Andrew Palumbo <ap...@ou...>, vie...@li... Subject: Re: [ViennaCL-devel] Fw: Matrix * Vector CL_OUT_OF_RESOURCES error Hi Andy, > As I mentioned before, I'm using libviennacl-dev version 1.7.1 installed > from the ubunto repo. > > > > When I run your attached code, I get do get an error: > > > andrew@michael:~/Downloads$ g++ DenseVectorMmul.cpp > -I/usr/include/viennacl/ -lOpenCL -o denseVec > > andrew@michael:~/Downloads$ ./denseVec > terminate called after throwing an instance of 'viennacl::memory_exception' > what(): ViennaCL: Internal memory error: not initialised! > Aborted (core dumped) > > andrew@michael:~/Downloads$ g++ --version > g++ (Ubuntu 5.4.0-6ubuntu1~16.04.2) 5.4.0 20160609 > Copyright (C) 2015 Free Software Foundation, Inc. > This is free software; see the source for copying conditions. There is NO > warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Now things get weird: I can't reproduce the problem with neiter the current developer tip, the 1.7.1 release, and 1.7.0, GCC 4.6 and GCC 4.8. I'll replicate your environment (Ubuntu 16.04) and try it there. Best regards, Karli |
From: Andrew P. <ap...@ou...> - 2016-10-12 14:53:25
|
Interesting... Sorry I was mistaken again . I am running with the 1.7.0 library (just checked the version.hpp file) Thank you. Sent from my Verizon Wireless 4G LTE smartphone -------- Original message -------- From: Karl Rupp <ru...@iu...> Date: 10/12/2016 1:55 AM (GMT-08:00) To: Andrew Palumbo <ap...@ou...>, vie...@li... Subject: Re: [ViennaCL-devel] Fw: Matrix * Vector CL_OUT_OF_RESOURCES error Hi Andy, > As I mentioned before, I'm using libviennacl-dev version 1.7.1 installed > from the ubunto repo. > > > > When I run your attached code, I get do get an error: > > > andrew@michael:~/Downloads$ g++ DenseVectorMmul.cpp > -I/usr/include/viennacl/ -lOpenCL -o denseVec > > andrew@michael:~/Downloads$ ./denseVec > terminate called after throwing an instance of 'viennacl::memory_exception' > what(): ViennaCL: Internal memory error: not initialised! > Aborted (core dumped) > > andrew@michael:~/Downloads$ g++ --version > g++ (Ubuntu 5.4.0-6ubuntu1~16.04.2) 5.4.0 20160609 > Copyright (C) 2015 Free Software Foundation, Inc. > This is free software; see the source for copying conditions. There is NO > warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Now things get weird: I can't reproduce the problem with neiter the current developer tip, the 1.7.1 release, and 1.7.0, GCC 4.6 and GCC 4.8. I'll replicate your environment (Ubuntu 16.04) and try it there. Best regards, Karli |
From: Karl R. <ru...@iu...> - 2016-10-12 08:55:01
|
Hi Andy, > As I mentioned before, I'm using libviennacl-dev version 1.7.1 installed > from the ubunto repo. > > > > When I run your attached code, I get do get an error: > > > andrew@michael:~/Downloads$ g++ DenseVectorMmul.cpp > -I/usr/include/viennacl/ -lOpenCL -o denseVec > > andrew@michael:~/Downloads$ ./denseVec > terminate called after throwing an instance of 'viennacl::memory_exception' > what(): ViennaCL: Internal memory error: not initialised! > Aborted (core dumped) > > andrew@michael:~/Downloads$ g++ --version > g++ (Ubuntu 5.4.0-6ubuntu1~16.04.2) 5.4.0 20160609 > Copyright (C) 2015 Free Software Foundation, Inc. > This is free software; see the source for copying conditions. There is NO > warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Now things get weird: I can't reproduce the problem with neiter the current developer tip, the 1.7.1 release, and 1.7.0, GCC 4.6 and GCC 4.8. I'll replicate your environment (Ubuntu 16.04) and try it there. Best regards, Karli |
From: Andrew P. <ap...@ou...> - 2016-10-12 04:25:35
|
Hi Karl, As I mentioned before, I'm using libviennacl-dev version 1.7.1 installed from the ubunto repo. When I run your attached code, I get do get an error: andrew@michael:~/Downloads$ g++ DenseVectorMmul.cpp -I/usr/include/viennacl/ -lOpenCL -o denseVec andrew@michael:~/Downloads$ ./denseVec terminate called after throwing an instance of 'viennacl::memory_exception' what(): ViennaCL: Internal memory error: not initialised! Aborted (core dumped) andrew@michael:~/Downloads$ g++ --version g++ (Ubuntu 5.4.0-6ubuntu1~16.04.2) 5.4.0 20160609 Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Thanks, Andy ________________________________ From: Karl Rupp <ru...@iu...> Sent: Tuesday, October 11, 2016 10:31 AM To: Andrew Palumbo; vie...@li... 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...@ou...> > *Sent:* Thursday, September 15, 2016 7:08:49 PM > *To:* Karl Rupp; vie...@li... > *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 <ru...@iu...> > *Sent:* Thursday, September 15, 2016 6:46:40 PM > *To:* Andrew Palumbo; vie...@li... > *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 <ru...@iu...> >> *Sent:* Thursday, September 15, 2016 5:14:36 PM >> *To:* Andrew Palumbo; Vie...@li... >> *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...@ou...> >>> *Sent:* Wednesday, September 14, 2016 9:49:32 PM >>> *To:* Karl Rupp; Vie...@li... >>> *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 <ru...@iu...> >>> *Sent:* Wednesday, September 14, 2016 7:09:13 PM >>> *To:* Andrew Palumbo; Vie...@li... >>> *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 >>>> Vie...@li... >>>> https://lists.sourceforge.net/lists/listinfo/viennacl-devel >>>> >>> >> >> >> >> ------------------------------------------------------------------------------ >> >> >> >> _______________________________________________ >> ViennaCL-devel mailing list >> Vie...@li... >> https://lists.sourceforge.net/lists/listinfo/viennacl-devel >> > |
From: Andrew P. <ap...@ou...> - 2016-10-11 17:30:37
|
Sent from my Verizon Wireless 4G LTE smartphone -------- Original message -------- From: Karl Rupp <ru...@iu...> Date: 10/11/2016 10:10 AM (GMT-08:00) To: Andrew Palumbo <ap...@ou...>, vie...@li... 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 <ru...@iu...> > Date: 10/11/2016 7:31 AM (GMT-08:00) > To: Andrew Palumbo <ap...@ou...>, > vie...@li... > 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...@ou...> >> *Sent:* Thursday, September 15, 2016 7:08:49 PM >> *To:* Karl Rupp; vie...@li... >> *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 <ru...@iu...> >> *Sent:* Thursday, September 15, 2016 6:46:40 PM >> *To:* Andrew Palumbo; vie...@li... >> *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 <ru...@iu...> >>> *Sent:* Thursday, September 15, 2016 5:14:36 PM >>> *To:* Andrew Palumbo; Vie...@li... >>> *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...@ou...> >>>> *Sent:* Wednesday, September 14, 2016 9:49:32 PM >>>> *To:* Karl Rupp; Vie...@li... >>>> *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 <ru...@iu...> >>>> *Sent:* Wednesday, September 14, 2016 7:09:13 PM >>>> *To:* Andrew Palumbo; Vie...@li... >>>> *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 >>>>> Vie...@li... >>>>> https://lists.sourceforge.net/lists/listinfo/viennacl-devel >>>>> >>>> >>> >>> >>> >>> ------------------------------------------------------------------------------ >>> >>> >>> >>> _______________________________________________ >>> ViennaCL-devel mailing list >>> Vie...@li... >>> https://lists.sourceforge.net/lists/listinfo/viennacl-devel >>> >> > |
From: Karl R. <ru...@iu...> - 2016-10-11 17:10:07
|
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... > 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 <ru...@iu...> > Date: 10/11/2016 7:31 AM (GMT-08:00) > To: Andrew Palumbo <ap...@ou...>, > vie...@li... > 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...@ou...> >> *Sent:* Thursday, September 15, 2016 7:08:49 PM >> *To:* Karl Rupp; vie...@li... >> *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 <ru...@iu...> >> *Sent:* Thursday, September 15, 2016 6:46:40 PM >> *To:* Andrew Palumbo; vie...@li... >> *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 <ru...@iu...> >>> *Sent:* Thursday, September 15, 2016 5:14:36 PM >>> *To:* Andrew Palumbo; Vie...@li... >>> *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...@ou...> >>>> *Sent:* Wednesday, September 14, 2016 9:49:32 PM >>>> *To:* Karl Rupp; Vie...@li... >>>> *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 <ru...@iu...> >>>> *Sent:* Wednesday, September 14, 2016 7:09:13 PM >>>> *To:* Andrew Palumbo; Vie...@li... >>>> *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 >>>>> Vie...@li... >>>>> https://lists.sourceforge.net/lists/listinfo/viennacl-devel >>>>> >>>> >>> >>> >>> >>> ------------------------------------------------------------------------------ >>> >>> >>> >>> _______________________________________________ >>> ViennaCL-devel mailing list >>> Vie...@li... >>> https://lists.sourceforge.net/lists/listinfo/viennacl-devel >>> >> > |
From: Andrew P. <ap...@ou...> - 2016-10-11 16:54:10
|
Thank you, Karl. Wrt to (a) I'm using the 1.7.2 release from installed by apt-get on ununtu. So it's not the latest. 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. I will run the c++ code tonight and let you know. Thanks very much. Andy Sent from my Verizon Wireless 4G LTE smartphone -------- Original message -------- From: Karl Rupp <ru...@iu...> Date: 10/11/2016 7:31 AM (GMT-08:00) To: Andrew Palumbo <ap...@ou...>, vie...@li... 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...@ou...> > *Sent:* Thursday, September 15, 2016 7:08:49 PM > *To:* Karl Rupp; vie...@li... > *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 <ru...@iu...> > *Sent:* Thursday, September 15, 2016 6:46:40 PM > *To:* Andrew Palumbo; vie...@li... > *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 <ru...@iu...> >> *Sent:* Thursday, September 15, 2016 5:14:36 PM >> *To:* Andrew Palumbo; Vie...@li... >> *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...@ou...> >>> *Sent:* Wednesday, September 14, 2016 9:49:32 PM >>> *To:* Karl Rupp; Vie...@li... >>> *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 <ru...@iu...> >>> *Sent:* Wednesday, September 14, 2016 7:09:13 PM >>> *To:* Andrew Palumbo; Vie...@li... >>> *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 >>>> Vie...@li... >>>> https://lists.sourceforge.net/lists/listinfo/viennacl-devel >>>> >>> >> >> >> >> ------------------------------------------------------------------------------ >> >> >> >> _______________________________________________ >> ViennaCL-devel mailing list >> Vie...@li... >> https://lists.sourceforge.net/lists/listinfo/viennacl-devel >> > |
From: Karl R. <ru...@iu...> - 2016-10-11 14:31:41
|
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...@ou...> > *Sent:* Thursday, September 15, 2016 7:08:49 PM > *To:* Karl Rupp; vie...@li... > *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 <ru...@iu...> > *Sent:* Thursday, September 15, 2016 6:46:40 PM > *To:* Andrew Palumbo; vie...@li... > *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 <ru...@iu...> >> *Sent:* Thursday, September 15, 2016 5:14:36 PM >> *To:* Andrew Palumbo; Vie...@li... >> *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...@ou...> >>> *Sent:* Wednesday, September 14, 2016 9:49:32 PM >>> *To:* Karl Rupp; Vie...@li... >>> *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 <ru...@iu...> >>> *Sent:* Wednesday, September 14, 2016 7:09:13 PM >>> *To:* Andrew Palumbo; Vie...@li... >>> *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 >>>> Vie...@li... >>>> https://lists.sourceforge.net/lists/listinfo/viennacl-devel >>>> >>> >> >> >> >> ------------------------------------------------------------------------------ >> >> >> >> _______________________________________________ >> ViennaCL-devel mailing list >> Vie...@li... >> https://lists.sourceforge.net/lists/listinfo/viennacl-devel >> > |
From: Andrew P. <ap...@ou...> - 2016-10-11 05:15:18
|
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...@ou...> Sent: Thursday, September 15, 2016 7:08:49 PM To: Karl Rupp; vie...@li... 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 <ru...@iu...> Sent: Thursday, September 15, 2016 6:46:40 PM To: Andrew Palumbo; vie...@li... 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 <ru...@iu...> > *Sent:* Thursday, September 15, 2016 5:14:36 PM > *To:* Andrew Palumbo; Vie...@li... > *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...@ou...> >> *Sent:* Wednesday, September 14, 2016 9:49:32 PM >> *To:* Karl Rupp; Vie...@li... >> *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 <ru...@iu...> >> *Sent:* Wednesday, September 14, 2016 7:09:13 PM >> *To:* Andrew Palumbo; Vie...@li... >> *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 >>> Vie...@li... >>> https://lists.sourceforge.net/lists/listinfo/viennacl-devel >>> >> > > > > ------------------------------------------------------------------------------ > > > > _______________________________________________ > ViennaCL-devel mailing list > Vie...@li... > https://lists.sourceforge.net/lists/listinfo/viennacl-devel > |
From: Andrew P. <ap...@ou...> - 2016-09-15 23:09:09
|
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 <ru...@iu...> Sent: Thursday, September 15, 2016 6:46:40 PM To: Andrew Palumbo; vie...@li... 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 <ru...@iu...> > *Sent:* Thursday, September 15, 2016 5:14:36 PM > *To:* Andrew Palumbo; Vie...@li... > *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...@ou...> >> *Sent:* Wednesday, September 14, 2016 9:49:32 PM >> *To:* Karl Rupp; Vie...@li... >> *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 <ru...@iu...> >> *Sent:* Wednesday, September 14, 2016 7:09:13 PM >> *To:* Andrew Palumbo; Vie...@li... >> *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 >>> Vie...@li... >>> https://lists.sourceforge.net/lists/listinfo/viennacl-devel >>> >> > > > > ------------------------------------------------------------------------------ > > > > _______________________________________________ > ViennaCL-devel mailing list > Vie...@li... > https://lists.sourceforge.net/lists/listinfo/viennacl-devel > |
From: Karl R. <ru...@iu...> - 2016-09-15 22:46:50
|
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 <ru...@iu...> > *Sent:* Thursday, September 15, 2016 5:14:36 PM > *To:* Andrew Palumbo; Vie...@li... > *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...@ou...> >> *Sent:* Wednesday, September 14, 2016 9:49:32 PM >> *To:* Karl Rupp; Vie...@li... >> *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 <ru...@iu...> >> *Sent:* Wednesday, September 14, 2016 7:09:13 PM >> *To:* Andrew Palumbo; Vie...@li... >> *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 >>> Vie...@li... >>> https://lists.sourceforge.net/lists/listinfo/viennacl-devel >>> >> > > > > ------------------------------------------------------------------------------ > > > > _______________________________________________ > ViennaCL-devel mailing list > Vie...@li... > https://lists.sourceforge.net/lists/listinfo/viennacl-devel > |
From: Andrew P. <ap...@ou...> - 2016-09-15 22:08:45
|
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 <ru...@iu...> Sent: Thursday, September 15, 2016 5:14:36 PM To: Andrew Palumbo; Vie...@li... 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...@ou...> > *Sent:* Wednesday, September 14, 2016 9:49:32 PM > *To:* Karl Rupp; Vie...@li... > *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 <ru...@iu...> > *Sent:* Wednesday, September 14, 2016 7:09:13 PM > *To:* Andrew Palumbo; Vie...@li... > *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 >> Vie...@li... >> https://lists.sourceforge.net/lists/listinfo/viennacl-devel >> > |
From: Karl R. <ru...@iu...> - 2016-09-15 21:14:47
|
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...@ou...> > *Sent:* Wednesday, September 14, 2016 9:49:32 PM > *To:* Karl Rupp; Vie...@li... > *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 <ru...@iu...> > *Sent:* Wednesday, September 14, 2016 7:09:13 PM > *To:* Andrew Palumbo; Vie...@li... > *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 >> Vie...@li... >> https://lists.sourceforge.net/lists/listinfo/viennacl-devel >> > |
From: Andrew P. <ap...@ou...> - 2016-09-15 16:13:29
|
Hi Karl, 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) Thanks, Andy #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...@ou...> Sent: Wednesday, September 14, 2016 9:49:32 PM To: Karl Rupp; Vie...@li... 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 <ru...@iu...> Sent: Wednesday, September 14, 2016 7:09:13 PM To: Andrew Palumbo; Vie...@li... 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 > Vie...@li... > https://lists.sourceforge.net/lists/listinfo/viennacl-devel > |
From: Andrew P. <ap...@ou...> - 2016-09-15 01:49:44
|
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 <ru...@iu...> Sent: Wednesday, September 14, 2016 7:09:13 PM To: Andrew Palumbo; Vie...@li... 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 > Vie...@li... > https://lists.sourceforge.net/lists/listinfo/viennacl-devel > |
From: Karl R. <ru...@iu...> - 2016-09-14 23:09:24
|
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 > Vie...@li... > https://lists.sourceforge.net/lists/listinfo/viennacl-devel > |
From: Andrew P. <ap...@ou...> - 2016-09-14 21:03:47
|
Also ... a little more information, this happens with relatively small matrix/ vector pairs... 300 x 100 matrix and 100 element vec. I'm running with a consumer grade GPU, but it has dealt with matrices much larger than that. Thanks Sent from my Verizon Wireless 4G LTE smartphone -------- Original message -------- From: Andrew Palumbo <ap...@ou...> Date: 09/14/2016 16:30 (GMT-05:00) To: "Vie...@li..." <vie...@li...> Subject: [ViennaCL-devel] Matrix * Vector CL_OUT_OF_RESOURCES error Hello, 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. 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 |