From: Karl R. <ru...@iu...> - 2012-08-01 09:38:53
|
Hi Alex, I've spent some more thoughts on how to separate the linear algebra backends suitably. Currently, some OpenCL statements are mixed into the vector<> and matrix<> classes, while the operations are clearly separated via calls to externally defined functions (e.g. prod_impl()), cf. vector_operations.hpp and matrix_operations.hpp. To simplify your development efforts I could continue this separation and also move initialization routines to separate header files. In the best case, all that is necessary for a CPU-only fallback is to have e.g. in vector.hpp something like #ifdef VIENNACL_NO_OPENCL #include "viennacl/linalg/vector-operations-cpu.hpp" #else #include "viennacl/linalg/vector-operations-opencl.hpp" #endif Going one step further, we could even separate the convenience types from the BLAS backend and support something like #if defined VIENNACL_USE_SSE_BLAS #include "viennacl/linalg/vector-operations-sse.hpp" #elif defined VIENNACL_USE_OPENCL_BLAS #include "viennacl/linalg/vector-operations-opencl.hpp" #elif defined VIENNACL_USE_OPENMP_BLAS #include "viennacl/linalg/vector-operations-openmp.hpp" ... #else #include "viennacl/linalg/vector-operations-fallback.hpp" #endif We probably won't have the development resources for supporting a whole zoo of different backends, yet I like the idea of a clean separation. What do you think? Best regards, Karli PS: cc'ed to viennacl-devel On 07/29/2012 06:49 AM, Alex Christensen wrote: > I made tred2 not copy memory, and it works with ublas matrices. My goal > is to make a backend so that defining VIENNACL_NO_OPENCL makes existing > code work without a gpu (or even linking to an OpenCL library). I'll > let you know if I run into any problems. Hopefully the existing QR code > will work with that. > > Since the LU routines don't do partial pivoting, should I include my cpu > LU function with partial pivoting? Should I include my cholesky > function also, maybe as a separate header? The only cholesky function I > have found in ViennaCL is in spai. > > Alex > |