Check CUDA is available in solver.cc Add logic for checking for availability of CUDA as the dense linear algebra library before allowing the user to use it. Change-Id: I0ceafa1052632504b33685bc731366ef6933e518
diff --git a/internal/ceres/solver.cc b/internal/ceres/solver.cc index 7560883..150c555 100644 --- a/internal/ceres/solver.cc +++ b/internal/ceres/solver.cc
@@ -141,16 +141,20 @@ return false; } - if (options.dense_linear_algebra_library_type == LAPACK && - !IsDenseLinearAlgebraLibraryTypeAvailable(LAPACK) && + if (!IsDenseLinearAlgebraLibraryTypeAvailable( + options.dense_linear_algebra_library_type) && (options.linear_solver_type == DENSE_NORMAL_CHOLESKY || options.linear_solver_type == DENSE_QR || options.linear_solver_type == DENSE_SCHUR)) { *error = StringPrintf( "Can't use %s with " - "Solver::Options::dense_linear_algebra_library_type = LAPACK " - "because LAPACK was not enabled when Ceres was built.", - LinearSolverTypeToString(options.linear_solver_type)); + "Solver::Options::dense_linear_algebra_library_type = %s " + "because %s was not enabled when Ceres was built.", + LinearSolverTypeToString(options.linear_solver_type), + DenseLinearAlgebraLibraryTypeToString( + options.dense_linear_algebra_library_type), + DenseLinearAlgebraLibraryTypeToString( + options.dense_linear_algebra_library_type)); return false; }
diff --git a/internal/ceres/types.cc b/internal/ceres/types.cc index ebd454f..8cfbc77 100644 --- a/internal/ceres/types.cc +++ b/internal/ceres/types.cc
@@ -420,6 +420,7 @@ if (type == EIGEN) { return true; } + if (type == LAPACK) { #ifdef CERES_NO_LAPACK return false; @@ -428,6 +429,14 @@ #endif } + if (type == CUDA) { +#ifdef CERES_NO_CUDA + return false; +#else + return false; +#endif + } + LOG(WARNING) << "Unknown dense linear algebra library " << type; return false; }