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 <[email protected]>
> *Sent:* Wednesday, September 14, 2016 9:49:32 PM
> *To:* Karl Rupp; [email protected]
> *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 <[email protected]>
> *Sent:* Wednesday, September 14, 2016 7:09:13 PM
> *To:* Andrew Palumbo; [email protected]
> *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
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/viennacl-devel
>>
>
------------------------------------------------------------------------------
_______________________________________________
ViennaCL-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/viennacl-devel