Thanks Nick.
Yes I inferred as much but keeping to the small molecule tradition I deal with dense matrices, a realm in which OpenBLAS is the king.
More precisely, I build a dense Jacobian J from which I compute a dense normal matrix J^T J: the computation of J^T J totally dominate runtime and the fastest algorithm is LAPACK SFRK taking advantage of an optimised BLAS level 3. OpenBLAS provides both in an easy to build package, with runtime selection of the code depending on the detected processor. In the context of Olex 2, the latter is a key advantage: we can distribute one library which will optimally run on any Intel processor.
However I do deal with sparse matrices for restraints and constraints, using the hand-made sparse matrix framework in scitbx.sparse, which proved to be very inefficient in places. I fixed that (commits still to come) but seeing you were using Eigen, it is on my todo list to see whether I should move restraints and constraints to Eigen::SparseMatrix instead. I may come back to you with questions then.
Best wishes,
Luc
Luc,
Are you also aware that we've implemented sparse Cholesky decomposition by wrapping the Eigen C++ header library? We use it now within DIALS for true sparse-matrix decomposition. One modality is that we take a Jacobian expressed in terms of the sparse::matrix data structure that you defined within scitbx, but then we use Eigen to actually solve the normal matrix.
David Waterman & I can provide more details as needed.
Nick
_______________________________________________
cctbxbb mailing list
[email protected]http://phenix-online.org/mailman/listinfo/cctbxbb