Update CUDA chol() implementation to new cuSolver API, and other cleanups
A couple cleanups here:
- Adapt
cuda::chol()
andopencl::chol()
to not throw exceptions, but instead return astd::tuple<bool, std::string>
, likesvd()
, so that exceptions can be suppressed for some versions ofchol()
(like Armadillo). - Use
cuSolverDnXpotrf()
instead of deprecated type-specific versions. - Handle some memory leaks that could happen on failed cuSolver calls.
- Check info code to ensure decomposition was successful, and print reasonable error messages if not.
- Adapt tests to use
TEMPLATE_TEST_CASE()
.