[eigen] Cross-referencing Eigen and ViennaCL for iterative solvers? |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/eigen Archives
]
Hi Eigen developers,
I'm one of the developers of ViennaCL, a linear algebra library for GPUs
and multi-core CPUs built on top of OpenCL (see
http://viennacl.sourceforge.net/ ).
As far as I can tell from the online documentation, Eigen's focus is
mostly on dense matrix algebra, where you guys do a great job. However,
the sparse matrix section seems to be in its infancy still. On the other
hand, our library provides generic implementations for iterative solvers
(CG, BiCGStab, GMRES at present), which run well with both the built-in
ViennaCL types as well as the boost::numeric::ublas types. We think
about adding direct support for Eigen types, which should require only a
few lines of code. Moreover, we would also provide overloaded copy()
routines, that copy Eigen-types to their ViennaCL counterparts and vice
versa. This way programmers can enjoy the convenient interface of Eigen
and at the same time run time-critical operations like dense
matrix-matrix products with ViennaCL on e.g. GPUs.
Therefore I'd like to propose a cross-referencing of our projects:
Similar to the current direct solvers for sparse matrices, you could add
a section "Using iterative solvers" to the sparse matrix docs and refer
to ViennaCL. Similarly, we promote the Eigen-interface in our project.
Unlike the "unsupported" direct solver modules, you don't have to do any
coding at all, C++ takes care of all that. :-)
Thus, users could write something like
--- code begin --
Eigen::SparseMatrix<double> system_matrix(dim, dim);
Eigen::VectorXd rhs_vector(dim);
//fill system_matrix and rhs_vector here
//solve system using CG, tolerance 1e-10, max. 100 iterations:
viennacl::linalg::cg_tag solver_tag(1e-10, 100);
Eigen::VectorXd result = viennacl::linalg::solve(system_matrix,
rhs_vector,
solver_tag);
--- code end ---
In my view, both projects would benefit equally. What do you think about it?
Best regards,
Karli
PS: I've seen that you are about to launch a new beta version. Since
this is a rather intense phase, I hope my email won't get lost... ;-)