Hi Sumit, > I know that we can copy a dense eigen matrix to a dense VCL matrix and > the same thing for sparse matrices also. > Is it possible to copy a sparse eigen matrix to a dense eigen matrix? > and vice-versa ?
I don't know for Eigen, you have to ask the Eigen developers. It is not possible out-of-the-box in ViennaCL to assign a ViennaCL sparse matrix to a ViennaCL dense matrix (and vice versa). Best regards, Karli > ------------------------------------------------------------------------ > *From:* Karl Rupp <r...@iue.tuwien.ac.at> > *To:* Sumit Kumar <dost_4_e...@yahoo.com> > *Cc:* "viennacl-devel@lists.sourceforge.net" > <viennacl-devel@lists.sourceforge.net> > *Sent:* Tuesday, July 28, 2015 4:01 PM > *Subject:* Re: [ViennaCL-devel] ViennaCL reductions > > Hi, > > > That worked. So, the final question I have would be as follows: > > viennacl::copy(vcl_C, eigen_mat); > > is a valid statement > > However, if I want to copy vcl_C to some particular region of a host > > matrix, then, do I have to first create a temporary host matrix and then > > copy that host matrix into a larger matrix or is there anything direct? > > Something like this: > > viennacl::copy(vcl_C, prod.block(0, j, source.rows(), bTemp.cols())); > > > > Otherwise the only way I can think of is this: > > RMMatrix_Float temp(rows,cols); > > viennacl::copy(vcl_C, temp); > > RMMatrix_Float biggerMatrix.block(0,j,rows,cols) = temp > > you can either use temporaries, or create an Eigen::Map<> from your > Eigen matrix for wrapping your existing matrix accordingly: > http://eigen.tuxfamily.org/dox/classEigen_1_1Map.html > > Best regards, > Karli > > > > ------------------------------------------------------------------------ > > *From:* Karl Rupp <r...@iue.tuwien.ac.at <mailto:r...@iue.tuwien.ac.at>> > > *To:* Sumit Kumar <dost_4_e...@yahoo.com <mailto:dost_4_e...@yahoo.com>> > > *Cc:* "viennacl-devel@lists.sourceforge.net > <mailto:viennacl-devel@lists.sourceforge.net>" > > <viennacl-devel@lists.sourceforge.net > <mailto:viennacl-devel@lists.sourceforge.net>> > > *Sent:* Tuesday, July 28, 2015 2:06 AM > > *Subject:* Re: [ViennaCL-devel] ViennaCL reductions > > > > Hi, > > > > > That's why I explicitly stated in my previous mail "Optional" :) I am > > > one of those folks who likes the coziness of compile time > decisions and > > > (if possible) would like to make it available in VCL. However, I > am not > > > sure if doing this is possible via the current API structure of VCL. I > > > will look into this as I first need to understand the intricacies of > > > OpenCL. > > > > > > BTW, a previous question of mine was unanswered (or I may have > > > overlooked). Are there any equivalent functions in VCL to do the > > following: > > > a.) Two matrices, when transferred to the GPU should undergo > > > element_wise multiplication ? > > > b.) A unary operation on a matrix that has been transferred to the > GPU? > > > > a.) and b.) sound a lot like you are looking for element_*-functions > > > http://viennacl.sourceforge.net/doc/manual-operations.html#manual-operations-blas1, > > > <http://viennacl.sourceforge.net/doc/manual-operations.html#manual-operations-blas1,> > > which work for vectors and matrices alike. > > > > Best regards, > > Karli > > > > > > > > > > ------------------------------------------------------------------------ > > > *From:* Karl Rupp <r...@iue.tuwien.ac.at > <mailto:r...@iue.tuwien.ac.at> <mailto:r...@iue.tuwien.ac.at > <mailto:r...@iue.tuwien.ac.at>>> > > > *To:* Sumit Kumar <dost_4_e...@yahoo.com > <mailto:dost_4_e...@yahoo.com> <mailto:dost_4_e...@yahoo.com > <mailto:dost_4_e...@yahoo.com>>> > > > *Cc:* "viennacl-devel@lists.sourceforge.net > <mailto:viennacl-devel@lists.sourceforge.net> > > <mailto:viennacl-devel@lists.sourceforge.net > <mailto:viennacl-devel@lists.sourceforge.net>>" > > > <viennacl-devel@lists.sourceforge.net > <mailto:viennacl-devel@lists.sourceforge.net> > > <mailto:viennacl-devel@lists.sourceforge.net > <mailto:viennacl-devel@lists.sourceforge.net>>> > > > *Sent:* Monday, July 27, 2015 9:13 PM > > > *Subject:* Re: [ViennaCL-devel] ViennaCL reductions > > > > > > Hi Sumit, > > > > > > > Agreed, the names can be returned in any order. As you are > using CMake > > > > would it be possible to: > > > > a.) Write a small helper script using CMake that lists what > > devices the > > > > user has on his/her machine that are OpenCL compliant? > > > > > > Exactly this is provided by running viennacl-info: > > > $> mkdir build && cd build > > > $> cmake .. > > > $> make viennacl-info > > > $> examples/tutorial/viennacl-info > > > > > > > > > > b.) Make VCL select the appropriate device so that these issues of > > > > context selection etc can be avoided? > > > > > > In most cases the first OpenCL device returned is the most appropriate > > > device for running the computations. If you know of any better > strategy > > > for picking the default device, please let us know and we are happy to > > > adopt it. :-) > > > > > > > > > > c.) Of course, this would be purely optional and only available > if the > > > > user wants to pre-select the device before writing any VCL code! > > > > > > How is that different from what is possible now? What is the value of > > > making a runtime-decision (current ViennaCL code) a compile-time > > > decision (CMake)? > > > > > > Imagine you are building a big application with GUI and other > bells and > > > whistles. In such a scenario you would like the user to select the > > > compute device through a dialog at runtime rather than asking the user > > > to recompile the whole application just to change the default device. > > > Our current mindset is to incrementally move away from compile time > > > decisions in cases where they are not needed. > > > > > > Best regards, > > > Karli > > > > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------------ > > > > *From:* Karl Rupp <r...@iue.tuwien.ac.at > <mailto:r...@iue.tuwien.ac.at> > > <mailto:r...@iue.tuwien.ac.at <mailto:r...@iue.tuwien.ac.at>> > <mailto:r...@iue.tuwien.ac.at <mailto:r...@iue.tuwien.ac.at> > > <mailto:r...@iue.tuwien.ac.at <mailto:r...@iue.tuwien.ac.at>>>> > > > > *To:* Sumit Kumar <dost_4_e...@yahoo.com > <mailto:dost_4_e...@yahoo.com> > > <mailto:dost_4_e...@yahoo.com <mailto:dost_4_e...@yahoo.com>> > <mailto:dost_4_e...@yahoo.com <mailto:dost_4_e...@yahoo.com> > > <mailto:dost_4_e...@yahoo.com <mailto:dost_4_e...@yahoo.com>>>> > > > > *Cc:* "viennacl-devel@lists.sourceforge.net > <mailto:viennacl-devel@lists.sourceforge.net> > > <mailto:viennacl-devel@lists.sourceforge.net > <mailto:viennacl-devel@lists.sourceforge.net>> > > > <mailto:viennacl-devel@lists.sourceforge.net > <mailto:viennacl-devel@lists.sourceforge.net> > > <mailto:viennacl-devel@lists.sourceforge.net > <mailto:viennacl-devel@lists.sourceforge.net>>>" > > > > > > > <viennacl-devel@lists.sourceforge.net > <mailto:viennacl-devel@lists.sourceforge.net> > > <mailto:viennacl-devel@lists.sourceforge.net > <mailto:viennacl-devel@lists.sourceforge.net>> > > > <mailto:viennacl-devel@lists.sourceforge.net > <mailto:viennacl-devel@lists.sourceforge.net> > > <mailto:viennacl-devel@lists.sourceforge.net > <mailto:viennacl-devel@lists.sourceforge.net>>>> > > > > > > > > > > *Sent:* Monday, July 27, 2015 7:03 PM > > > > *Subject:* Re: [ViennaCL-devel] ViennaCL reductions > > > > > > > > Hi Sumit, > > > > > > > > > Thanks for the update. I will check it out. As for the > second one, > > > > > indeed thats what I ended up doing: > > > > > > > > > > // Get some context information for OpenCL compatible GPU > > devices > > > > > viennacl::ocl::platform pf; > > > > > std::vector<viennacl::ocl::device> devices = > > > > > pf.devices(CL_DEVICE_TYPE_GPU); > > > > > // If no GPU devices are found, we select the CPU device > > > > > if (devices.size() > 0) > > > > > { > > > > > // Now, often we may have an integrated GPU with the > CPU. We > > > would > > > > > // like to avoid using that GPU. Instead, we search for a > > > discrete > > > > > // GPU. > > > > > viennacl::ocl::setup_context(0, devices[1]); > > > > > } > > > > > else > > > > > { > > > > > devices = pf.devices(CL_DEVICE_TYPE_CPU); > > > > > viennacl::ocl::setup_context(0, devices[0]); > > > > > } > > > > > > > > Keep in mind that devices may be returned in arbitrary order. I've > > > > already seen cases where the discrete GPU is returned as the first > > > > device. (Unfortunately I don't know of a robust and general way of > > > > dealing with such cases). > > > > > > > > > > > > > Here is my kludge. Is there any "real" example of data > > > partitioning and > > > > > using multiple GPU's? > > > > > > > > No. PCI-Express latencies narrow down to sweet spot of real > > performance > > > > gains for most algorithms in ViennaCL a lot. Only algorithms > relying > > > > heavily on matrix-matrix multiplications are likely to show good > > benefit > > > > from multiple GPUs. As a consequence, we are currently keeping our > > focus > > > > on single GPUs. There is some multi-GPU support through > ViennaCL as a > > > > plugin for PETSc available, but that focuses on iterative > solvers and > > > > does not cover any eigenvalue routines yet. > > > > > > > > > > > > > > > > > > > > Best regards, > > > > Karli > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------------------ _______________________________________________ ViennaCL-devel mailing list ViennaCL-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/viennacl-devel