diff --git a/internal/ceres/cgnr_solver.cc b/internal/ceres/cgnr_solver.cc
index 64e018d..5374f51 100644
--- a/internal/ceres/cgnr_solver.cc
+++ b/internal/ceres/cgnr_solver.cc
@@ -253,7 +253,7 @@
         ". ";
     return nullptr;
   }
-  CHECK(options.context->IsCUDAInitialized())
+  CHECK(options.context->IsCudaInitialized())
       << "CudaCgnrSolver requires CUDA initialization.";
   auto solver = std::make_unique<CudaCgnrSolver>(options);
   return solver;
diff --git a/internal/ceres/context_impl.cc b/internal/ceres/context_impl.cc
index 9f6cc25..a46e760 100644
--- a/internal/ceres/context_impl.cc
+++ b/internal/ceres/context_impl.cc
@@ -33,6 +33,7 @@
 #include <string>
 
 #include "ceres/internal/config.h"
+#include "ceres/stringprintf.h"
 #include "ceres/wall_time.h"
 
 #ifndef CERES_NO_CUDA
@@ -66,32 +67,84 @@
   is_cuda_initialized_ = false;
 }
 
-bool ContextImpl::InitCUDA(std::string* message) {
+std::string ContextImpl::CudaConfigAsString() const {
+  return ceres::internal::StringPrintf(
+      "======================= CUDA Device Properties ======================\n"
+      "Cuda version         : %d.%d\n"
+      "Device ID            : %d\n"
+      "Device name          : %s\n"
+      "Total GPU memory     : %6.f MiB\n"
+      "GPU memory available : %6.f MiB\n"
+      "Compute capability   : %d.%d\n"
+      "Warp size            : %d\n"
+      "Max threads per block: %d\n"
+      "Max threads per dim  : %d %d %d\n"
+      "Max grid size        : %d %d %d\n"
+      "Multiprocessor count : %d\n"
+      "====================================================================",
+      cuda_version_major_,
+      cuda_version_minor_,
+      gpu_device_id_in_use_,
+      gpu_device_properties_.name,
+      gpu_device_properties_.totalGlobalMem / 1024.0 / 1024.0,
+      GpuMemoryAvailable() / 1024.0 / 1024.0,
+      gpu_device_properties_.major,
+      gpu_device_properties_.minor,
+      gpu_device_properties_.warpSize,
+      gpu_device_properties_.maxThreadsPerBlock,
+      gpu_device_properties_.maxThreadsDim[0],
+      gpu_device_properties_.maxThreadsDim[1],
+      gpu_device_properties_.maxThreadsDim[2],
+      gpu_device_properties_.maxGridSize[0],
+      gpu_device_properties_.maxGridSize[1],
+      gpu_device_properties_.maxGridSize[2],
+      gpu_device_properties_.multiProcessorCount);
+}
+
+size_t ContextImpl::GpuMemoryAvailable() const {
+  size_t free, total;
+  cudaMemGetInfo(&free, &total);
+  return free;
+}
+
+bool ContextImpl::InitCuda(std::string* message) {
   if (is_cuda_initialized_) {
     return true;
   }
+  CHECK_EQ(cudaGetDevice(&gpu_device_id_in_use_), cudaSuccess);
+  int cuda_version;
+  CHECK_EQ(cudaRuntimeGetVersion(&cuda_version), cudaSuccess);
+  cuda_version_major_ = cuda_version / 1000;
+  cuda_version_minor_ = (cuda_version % 1000) / 10;
+  CHECK_EQ(cudaGetDeviceProperties(&gpu_device_properties_,
+                                   gpu_device_id_in_use_), cudaSuccess);
+  VLOG(3) << "\n" << CudaConfigAsString();
   EventLogger event_logger("InitCuda");
   if (cublasCreate(&cublas_handle_) != CUBLAS_STATUS_SUCCESS) {
-    *message = "cuBLAS::cublasCreate failed.";
+    *message = "CUDA initialization failed because "
+        "cuBLAS::cublasCreate failed.";
     cublas_handle_ = nullptr;
     return false;
   }
   event_logger.AddEvent("cublasCreate");
   if (cusolverDnCreate(&cusolver_handle_) != CUSOLVER_STATUS_SUCCESS) {
-    *message = "cuSolverDN::cusolverDnCreate failed.";
+    *message = "CUDA initialization failed because "
+        "cuSolverDN::cusolverDnCreate failed.";
     TearDown();
     return false;
   }
   event_logger.AddEvent("cusolverDnCreate");
   if (cusparseCreate(&cusparse_handle_) != CUSPARSE_STATUS_SUCCESS) {
-    *message = "cuSPARSE::cusparseCreate failed.";
+    *message = "CUDA initialization failed because "
+        "cuSPARSE::cusparseCreate failed.";
     TearDown();
     return false;
   }
   event_logger.AddEvent("cusparseCreate");
   if (cudaStreamCreateWithFlags(&stream_, cudaStreamNonBlocking) !=
       cudaSuccess) {
-    *message = "CUDA::cudaStreamCreateWithFlags failed.";
+    *message = "CUDA initialization failed because "
+        "CUDA::cudaStreamCreateWithFlags failed.";
     TearDown();
     return false;
   }
@@ -100,7 +153,7 @@
           CUSOLVER_STATUS_SUCCESS ||
       cublasSetStream(cublas_handle_, stream_) != CUBLAS_STATUS_SUCCESS ||
       cusparseSetStream(cusparse_handle_, stream_) != CUSPARSE_STATUS_SUCCESS) {
-    *message = "CUDA [Solver|BLAS|Sparse] SetStream failed.";
+    *message = "CUDA initialization failed because SetStream failed.";
     TearDown();
     return false;
   }
diff --git a/internal/ceres/context_impl.h b/internal/ceres/context_impl.h
index 4bd18e1..9eb59eb 100644
--- a/internal/ceres/context_impl.h
+++ b/internal/ceres/context_impl.h
@@ -72,19 +72,39 @@
 #endif  // CERES_USE_CXX_THREADS
 
 #ifndef CERES_NO_CUDA
-  // Initializes the cuSolverDN context, creates an asynchronous stream, and
-  // associates the stream with cuSolverDN. Returns true iff initialization was
-  // successful, else it returns false and a human-readable error message is
-  // returned.
-  bool InitCUDA(std::string* message);
+  // Note on Ceres' use of CUDA Devices on multi-GPU systems:
+  // 1. On a multi-GPU system, if nothing special is done, the "default" CUDA
+  //    device will be used, which is device 0.
+  // 2. If the user masks out GPUs using the  CUDA_VISIBLE_DEVICES  environment
+  //    variable, Ceres will still use device 0 visible to the program, but
+  //    device 0 will be the first GPU indicated in the environment variable.
+  // 3. If the user explicitly selects a GPU in the host process before calling
+  //    Ceres, Ceres will use that GPU.
+
+  // Initializes cuBLAS, cuSOLVER, and cuSPARSE contexts, creates an
+  // asynchronous CUDA stream, and associates the stream with the contexts.
+  // Returns true iff initialization was successful, else it returns false and a
+  // human-readable error message is returned.
+  bool InitCuda(std::string* message);
   void TearDown();
-  inline bool IsCUDAInitialized() const { return is_cuda_initialized_; }
+  inline bool IsCudaInitialized() const { return is_cuda_initialized_; }
+  // Returns a human-readable string describing the capabilities of the current
+  // CUDA device. CudaConfigAsString can only be called after InitCuda has been
+  // called.
+  std::string CudaConfigAsString() const;
+  // Returns the number of bytes of available global memory on the current CUDA 
+  // device. If it is called before InitCuda, it returns 0.
+  size_t GpuMemoryAvailable() const;
 
   cusolverDnHandle_t cusolver_handle_ = nullptr;
   cublasHandle_t cublas_handle_ = nullptr;
   cudaStream_t stream_ = nullptr;
   cusparseHandle_t cusparse_handle_ = nullptr;
   bool is_cuda_initialized_ = false;
+  int gpu_device_id_in_use_ = -1;
+  cudaDeviceProp gpu_device_properties_;
+  int cuda_version_major_ = 0;
+  int cuda_version_minor_ = 0;
 #endif  // CERES_NO_CUDA
 };
 
diff --git a/internal/ceres/cuda_dense_cholesky_test.cc b/internal/ceres/cuda_dense_cholesky_test.cc
index 1483923..4c5742e 100644
--- a/internal/ceres/cuda_dense_cholesky_test.cc
+++ b/internal/ceres/cuda_dense_cholesky_test.cc
@@ -45,7 +45,7 @@
   ContextImpl context;
   options.context = &context;
   std::string error;
-  EXPECT_TRUE(context.InitCUDA(&error)) << error;
+  EXPECT_TRUE(context.InitCuda(&error)) << error;
   auto dense_cuda_solver = CUDADenseCholesky::Create(options);
   EXPECT_EQ(dense_cuda_solver, nullptr);
 }
@@ -65,7 +65,7 @@
   ContextImpl context;
   options.context = &context;
   std::string error;
-  EXPECT_TRUE(context.InitCUDA(&error)) << error;
+  EXPECT_TRUE(context.InitCuda(&error)) << error;
   options.dense_linear_algebra_library_type = CUDA;
   auto dense_cuda_solver = CUDADenseCholesky::Create(options);
   ASSERT_NE(dense_cuda_solver, nullptr);
@@ -94,7 +94,7 @@
   ContextImpl context;
   options.context = &context;
   std::string error;
-  EXPECT_TRUE(context.InitCUDA(&error)) << error;
+  EXPECT_TRUE(context.InitCuda(&error)) << error;
   options.dense_linear_algebra_library_type = CUDA;
   auto dense_cuda_solver = CUDADenseCholesky::Create(options);
   ASSERT_NE(dense_cuda_solver, nullptr);
@@ -116,7 +116,7 @@
   ContextImpl context;
   options.context = &context;
   std::string error;
-  EXPECT_TRUE(context.InitCUDA(&error)) << error;
+  EXPECT_TRUE(context.InitCuda(&error)) << error;
   options.dense_linear_algebra_library_type = CUDA;
   auto dense_cuda_solver = CUDADenseCholesky::Create(options);
   ASSERT_NE(dense_cuda_solver, nullptr);
@@ -131,7 +131,7 @@
   ContextImpl context;
   options.context = &context;
   std::string error;
-  EXPECT_TRUE(context.InitCUDA(&error)) << error;
+  EXPECT_TRUE(context.InitCuda(&error)) << error;
   options.dense_linear_algebra_library_type = CUDA;
   auto dense_cuda_solver = CUDADenseCholesky::Create(options);
   ASSERT_NE(dense_cuda_solver, nullptr);
@@ -150,7 +150,7 @@
   ContextImpl context;
   options.context = &context;
   std::string error;
-  EXPECT_TRUE(context.InitCUDA(&error)) << error;
+  EXPECT_TRUE(context.InitCuda(&error)) << error;
   options.dense_linear_algebra_library_type = ceres::CUDA;
   std::unique_ptr<DenseCholesky> dense_cholesky =
       CUDADenseCholesky::Create(options);
@@ -189,7 +189,7 @@
     ContextImpl context;
     options.context = &context;
     std::string error;
-    EXPECT_TRUE(context.InitCUDA(&error)) << error;
+    EXPECT_TRUE(context.InitCuda(&error)) << error;
     auto solver = CUDADenseCholeskyMixedPrecision::Create(options);
     ASSERT_EQ(solver, nullptr);
   }
@@ -199,7 +199,7 @@
     ContextImpl context;
     options.context = &context;
     std::string error;
-    EXPECT_TRUE(context.InitCUDA(&error)) << error;
+    EXPECT_TRUE(context.InitCuda(&error)) << error;
     options.dense_linear_algebra_library_type = ceres::CUDA;
     auto solver = CUDADenseCholeskyMixedPrecision::Create(options);
     ASSERT_EQ(solver, nullptr);
@@ -224,7 +224,7 @@
   ContextImpl context;
   options.context = &context;
   std::string error;
-  EXPECT_TRUE(context.InitCUDA(&error)) << error;
+  EXPECT_TRUE(context.InitCuda(&error)) << error;
   options.dense_linear_algebra_library_type = CUDA;
   options.use_mixed_precision_solves = true;
   auto solver = CUDADenseCholeskyMixedPrecision::Create(options);
@@ -261,7 +261,7 @@
   ContextImpl context;
   options.context = &context;
   std::string error;
-  EXPECT_TRUE(context.InitCUDA(&error)) << error;
+  EXPECT_TRUE(context.InitCuda(&error)) << error;
   options.dense_linear_algebra_library_type = CUDA;
   options.use_mixed_precision_solves = true;
   auto solver = CUDADenseCholeskyMixedPrecision::Create(options);
@@ -291,7 +291,7 @@
   ContextImpl context;
   options.context = &context;
   std::string error;
-  EXPECT_TRUE(context.InitCUDA(&error)) << error;
+  EXPECT_TRUE(context.InitCuda(&error)) << error;
   options.dense_linear_algebra_library_type = ceres::CUDA;
   options.use_mixed_precision_solves = true;
   options.max_num_refinement_iterations = 20;
diff --git a/internal/ceres/cuda_dense_qr_test.cc b/internal/ceres/cuda_dense_qr_test.cc
index cc0dbd6..798f12a 100644
--- a/internal/ceres/cuda_dense_qr_test.cc
+++ b/internal/ceres/cuda_dense_qr_test.cc
@@ -44,7 +44,7 @@
   ContextImpl context;
   options.context = &context;
   std::string error;
-  EXPECT_TRUE(context.InitCUDA(&error)) << error;
+  EXPECT_TRUE(context.InitCuda(&error)) << error;
   auto dense_cuda_solver = CUDADenseQR::Create(options);
   EXPECT_EQ(dense_cuda_solver, nullptr);
 }
@@ -63,7 +63,7 @@
   ContextImpl context;
   options.context = &context;
   std::string error;
-  EXPECT_TRUE(context.InitCUDA(&error)) << error;
+  EXPECT_TRUE(context.InitCuda(&error)) << error;
   options.dense_linear_algebra_library_type = CUDA;
   auto dense_cuda_solver = CUDADenseQR::Create(options);
   ASSERT_NE(dense_cuda_solver, nullptr);
@@ -97,7 +97,7 @@
   ContextImpl context;
   options.context = &context;
   std::string error;
-  EXPECT_TRUE(context.InitCUDA(&error)) << error;
+  EXPECT_TRUE(context.InitCuda(&error)) << error;
   options.dense_linear_algebra_library_type = CUDA;
   auto dense_cuda_solver = CUDADenseQR::Create(options);
   ASSERT_NE(dense_cuda_solver, nullptr);
@@ -121,7 +121,7 @@
   ContextImpl context;
   options.context = &context;
   std::string error;
-  EXPECT_TRUE(context.InitCUDA(&error)) << error;
+  EXPECT_TRUE(context.InitCuda(&error)) << error;
   options.dense_linear_algebra_library_type = CUDA;
   auto dense_cuda_solver = CUDADenseQR::Create(options);
   ASSERT_NE(dense_cuda_solver, nullptr);
@@ -141,7 +141,7 @@
   ContextImpl context;
   options.context = &context;
   std::string error;
-  EXPECT_TRUE(context.InitCUDA(&error)) << error;
+  EXPECT_TRUE(context.InitCuda(&error)) << error;
   options.dense_linear_algebra_library_type = ceres::CUDA;
   std::unique_ptr<DenseQR> dense_qr = CUDADenseQR::Create(options);
 
diff --git a/internal/ceres/cuda_sparse_matrix.cc b/internal/ceres/cuda_sparse_matrix.cc
index e366112..1d8d0b0 100644
--- a/internal/ceres/cuda_sparse_matrix.cc
+++ b/internal/ceres/cuda_sparse_matrix.cc
@@ -61,7 +61,7 @@
 CudaSparseMatrix::CudaSparseMatrix(
     ContextImpl* context, const CompressedRowSparseMatrix& crs_matrix) {
   DCHECK_NE(context, nullptr);
-  CHECK(context->IsCUDAInitialized());
+  CHECK(context->IsCudaInitialized());
   context_ = context;
   num_rows_ = crs_matrix.num_rows();
   num_cols_ = crs_matrix.num_cols();
diff --git a/internal/ceres/cuda_sparse_matrix_test.cc b/internal/ceres/cuda_sparse_matrix_test.cc
index ae76b8f..a12ad40 100644
--- a/internal/ceres/cuda_sparse_matrix_test.cc
+++ b/internal/ceres/cuda_sparse_matrix_test.cc
@@ -51,8 +51,8 @@
  protected:
   void SetUp() final {
     std::string message;
-    CHECK(context_.InitCUDA(&message))
-        << "InitCUDA() failed because: " << message;
+    CHECK(context_.InitCuda(&message))
+        << "InitCuda() failed because: " << message;
     std::unique_ptr<LinearLeastSquaresProblem> problem =
         CreateLinearLeastSquaresProblemFromId(2);
     CHECK(problem != nullptr);
@@ -121,7 +121,7 @@
 
   ContextImpl context;
   std::string message;
-  CHECK(context.InitCUDA(&message)) << "InitCUDA() failed because: " << message;
+  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
   auto A1_crs = CompressedRowSparseMatrix::FromTripletSparseMatrix(A1);
   CudaSparseMatrix A_gpu(&context, *A1_crs);
   CudaVector b_gpu(&context, A1.num_cols());
@@ -159,7 +159,7 @@
 
   ContextImpl context;
   std::string message;
-  CHECK(context.InitCUDA(&message)) << "InitCUDA() failed because: " << message;
+  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
   auto A_crs = CompressedRowSparseMatrix::FromTripletSparseMatrix(A);
   CudaSparseMatrix A_gpu(&context, *A_crs);
   CudaVector b_gpu(&context, A.num_cols());
@@ -189,7 +189,7 @@
 
   ContextImpl context;
   std::string message;
-  CHECK(context.InitCUDA(&message)) << "InitCUDA() failed because: " << message;
+  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
   auto A_crs = CompressedRowSparseMatrix::FromTripletSparseMatrix(A);
   CudaSparseMatrix A_gpu(&context, *A_crs);
   CudaVector b_gpu(&context, A.num_rows());
@@ -244,7 +244,7 @@
 
   ContextImpl context;
   std::string message;
-  CHECK(context.InitCUDA(&message)) << "InitCUDA() failed because: " << message;
+  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
   auto A_crs = CompressedRowSparseMatrix::FromTripletSparseMatrix(A);
   CudaSparseMatrix A_gpu(&context, *A_crs);
   CudaVector b_gpu(&context, N);
diff --git a/internal/ceres/cuda_vector.cc b/internal/ceres/cuda_vector.cc
index 7bac13a..46e6cb2 100644
--- a/internal/ceres/cuda_vector.cc
+++ b/internal/ceres/cuda_vector.cc
@@ -52,7 +52,7 @@
 
 CudaVector::CudaVector(ContextImpl* context, int size) {
   DCHECK_NE(context, nullptr);
-  CHECK(context->IsCUDAInitialized());
+  CHECK(context->IsCudaInitialized());
   context_ = context;
   Resize(size);
 }
diff --git a/internal/ceres/cuda_vector_test.cc b/internal/ceres/cuda_vector_test.cc
index 84193c0..db1fec5 100644
--- a/internal/ceres/cuda_vector_test.cc
+++ b/internal/ceres/cuda_vector_test.cc
@@ -45,7 +45,7 @@
 TEST(CudaVector, Creation) {
   ContextImpl context;
   std::string message;
-  CHECK(context.InitCUDA(&message)) << "InitCUDA() failed because: " << message;
+  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
   CudaVector x(&context, 1000);
   EXPECT_EQ(x.num_rows(), 1000);
   EXPECT_NE(x.data().data(), nullptr);
@@ -56,7 +56,7 @@
   x << 1, 2, 3;
   ContextImpl context;
   std::string message;
-  CHECK(context.InitCUDA(&message)) << "InitCUDA() failed because: " << message;
+  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
   CudaVector y(&context, 10);
   y.CopyFromCpu(x);
   EXPECT_EQ(y.num_rows(), 3);
@@ -72,7 +72,7 @@
   x << 1, 2, 3;
   ContextImpl context;
   std::string message;
-  CHECK(context.InitCUDA(&message)) << "InitCUDA() failed because: " << message;
+  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
   CudaVector x_gpu(&context, 3);
   x_gpu.CopyFromCpu(x);
 
@@ -94,7 +94,7 @@
   y << 100, 10, 1;
   ContextImpl context;
   std::string message;
-  CHECK(context.InitCUDA(&message)) << "InitCUDA() failed because: " << message;
+  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
   CudaVector x_gpu(&context, 10);
   CudaVector y_gpu(&context, 10);
   x_gpu.CopyFromCpu(x);
@@ -109,7 +109,7 @@
   x << 1, 2, 3;
   ContextImpl context;
   std::string message;
-  CHECK(context.InitCUDA(&message)) << "InitCUDA() failed because: " << message;
+  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
   CudaVector x_gpu(&context, 10);
   x_gpu.CopyFromCpu(x);
 
@@ -127,7 +127,7 @@
   x << 1, 1, 1, 1;
   ContextImpl context;
   std::string message;
-  CHECK(context.InitCUDA(&message)) << "InitCUDA() failed because: " << message;
+  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
   CudaVector x_gpu(&context, 10);
   x_gpu.CopyFromCpu(x);
 
@@ -145,7 +145,7 @@
 TEST(CudaVector, Resize) {
   ContextImpl context;
   std::string message;
-  CHECK(context.InitCUDA(&message)) << "InitCUDA() failed because: " << message;
+  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
   CudaVector x_gpu(&context, 10);
   EXPECT_EQ(x_gpu.num_rows(), 10);
   x_gpu.Resize(4);
@@ -159,7 +159,7 @@
   y << 100, 10, 1, 0;
   ContextImpl context;
   std::string message;
-  CHECK(context.InitCUDA(&message)) << "InitCUDA() failed because: " << message;
+  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
   CudaVector x_gpu(&context, 4);
   CudaVector y_gpu(&context, 4);
   x_gpu.CopyFromCpu(x);
@@ -180,7 +180,7 @@
   y << 100, 10, 1, 0;
   ContextImpl context;
   std::string message;
-  CHECK(context.InitCUDA(&message)) << "InitCUDA() failed because: " << message;
+  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
   CudaVector x_gpu(&context, 4);
   CudaVector y_gpu(&context, 4);
   x_gpu.CopyFromCpu(x);
@@ -201,7 +201,7 @@
   y << 100, 10, 1, 0;
   ContextImpl context;
   std::string message;
-  CHECK(context.InitCUDA(&message)) << "InitCUDA() failed because: " << message;
+  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
   CudaVector x_gpu(&context, 4);
   CudaVector y_gpu(&context, 4);
   x_gpu.CopyFromCpu(x);
@@ -222,7 +222,7 @@
   y << 100, 10, 1, 0;
   ContextImpl context;
   std::string message;
-  CHECK(context.InitCUDA(&message)) << "InitCUDA() failed because: " << message;
+  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
   CudaVector x_gpu(&context, 4);
   CudaVector y_gpu(&context, 4);
   x_gpu.CopyFromCpu(x);
@@ -241,7 +241,7 @@
   x << 100, 10, 1, 0;
   ContextImpl context;
   std::string message;
-  CHECK(context.InitCUDA(&message)) << "InitCUDA() failed because: " << message;
+  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
   CudaVector x_gpu(&context, 4);
   CudaVector y_gpu(&context, 4);
   x_gpu.CopyFromCpu(x);
@@ -262,7 +262,7 @@
   y << 100, 10, 1, 0;
   ContextImpl context;
   std::string message;
-  CHECK(context.InitCUDA(&message)) << "InitCUDA() failed because: " << message;
+  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
   CudaVector x_gpu(&context, 4);
   CudaVector y_gpu(&context, 4);
   CudaVector z_gpu(&context, 4);
@@ -284,7 +284,7 @@
   x << 100, 10, 1, 0;
   ContextImpl context;
   std::string message;
-  CHECK(context.InitCUDA(&message)) << "InitCUDA() failed because: " << message;
+  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
   CudaVector x_gpu(&context, 4);
   CudaVector z_gpu(&context, 4);
   x_gpu.CopyFromCpu(x);
@@ -305,7 +305,7 @@
   y << 100, 10, 1, 0;
   ContextImpl context;
   std::string message;
-  CHECK(context.InitCUDA(&message)) << "InitCUDA() failed because: " << message;
+  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
   CudaVector x_gpu(&context, 10);
   CudaVector y_gpu(&context, 10);
   x_gpu.CopyFromCpu(x);
@@ -326,7 +326,7 @@
   y << 100, 10, 1, 0;
   ContextImpl context;
   std::string message;
-  CHECK(context.InitCUDA(&message)) << "InitCUDA() failed because: " << message;
+  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
   CudaVector x_gpu(&context, 4);
   CudaVector y_gpu(&context, 4);
   x_gpu.CopyFromCpu(x);
@@ -345,7 +345,7 @@
   x << 100, 10, 1, 0;
   ContextImpl context;
   std::string message;
-  CHECK(context.InitCUDA(&message)) << "InitCUDA() failed because: " << message;
+  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
   CudaVector x_gpu(&context, 10);
   x_gpu.CopyFromCpu(x);
 
@@ -366,7 +366,7 @@
   D << 4, 3, 2, 1;
   ContextImpl context;
   std::string message;
-  CHECK(context.InitCUDA(&message)) << "InitCUDA() failed because: " << message;
+  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
   CudaVector x_gpu(&context, 4);
   CudaVector y_gpu(&context, 4);
   CudaVector D_gpu(&context, 4);
@@ -387,7 +387,7 @@
   x << 1, 2, 3, 4;
   ContextImpl context;
   std::string message;
-  CHECK(context.InitCUDA(&message)) << "InitCUDA() failed because: " << message;
+  CHECK(context.InitCuda(&message)) << "InitCuda() failed because: " << message;
   CudaVector x_gpu(&context, 4);
   x_gpu.CopyFromCpu(x);
 
diff --git a/internal/ceres/dense_cholesky.cc b/internal/ceres/dense_cholesky.cc
index a3e578f..6d328ab 100644
--- a/internal/ceres/dense_cholesky.cc
+++ b/internal/ceres/dense_cholesky.cc
@@ -348,7 +348,7 @@
 #ifndef CERES_NO_CUDA
 
 bool CUDADenseCholesky::Init(ContextImpl* context, std::string* message) {
-  CHECK(context->IsCUDAInitialized())
+  CHECK(context->IsCudaInitialized())
       << "CUDADenseCholesky requires CUDA initialization.";
   cusolver_handle_ = context->cusolver_handle_;
   stream_ = context->stream_;
@@ -490,7 +490,7 @@
 
 bool CUDADenseCholeskyMixedPrecision::Init(const LinearSolver::Options& options,
                                            std::string* message) {
-  CHECK(options.context->IsCUDAInitialized())
+  CHECK(options.context->IsCudaInitialized())
       << "CUDADenseCholeskyMixedPrecision requires CUDA initialization.";
   cusolver_handle_ = options.context->cusolver_handle_;
   cublas_handle_ = options.context->cublas_handle_;
diff --git a/internal/ceres/dense_cholesky_test.cc b/internal/ceres/dense_cholesky_test.cc
index 2c4ca10..bb8a467 100644
--- a/internal/ceres/dense_cholesky_test.cc
+++ b/internal/ceres/dense_cholesky_test.cc
@@ -78,7 +78,7 @@
 #ifndef CERES_NO_CUDA
   options.context = &context;
   std::string error;
-  CHECK(context.InitCUDA(&error)) << error;
+  CHECK(context.InitCuda(&error)) << error;
 #endif  // CERES_NO_CUDA
   options.dense_linear_algebra_library_type = ::testing::get<0>(GetParam());
   options.use_mixed_precision_solves = ::testing::get<1>(GetParam());
diff --git a/internal/ceres/dense_qr.cc b/internal/ceres/dense_qr.cc
index fb3c228..22727f8 100644
--- a/internal/ceres/dense_qr.cc
+++ b/internal/ceres/dense_qr.cc
@@ -312,7 +312,7 @@
 #ifndef CERES_NO_CUDA
 
 bool CUDADenseQR::Init(ContextImpl* context, std::string* message) {
-  if (!context->InitCUDA(message)) {
+  if (!context->InitCuda(message)) {
     return false;
   }
   cublas_handle_ = context->cublas_handle_;
diff --git a/internal/ceres/dense_qr_test.cc b/internal/ceres/dense_qr_test.cc
index c10dba5..8698c90 100644
--- a/internal/ceres/dense_qr_test.cc
+++ b/internal/ceres/dense_qr_test.cc
@@ -70,7 +70,7 @@
 #ifndef CERES_NO_CUDA
   options.context = &context;
   std::string error;
-  CHECK(context.InitCUDA(&error)) << error;
+  CHECK(context.InitCuda(&error)) << error;
 #endif  // CERES_NO_CUDA
   options.dense_linear_algebra_library_type = GetParam();
   const double kEpsilon = std::numeric_limits<double>::epsilon() * 1.5e4;
diff --git a/internal/ceres/solver.cc b/internal/ceres/solver.cc
index ea18913..0656d34 100644
--- a/internal/ceres/solver.cc
+++ b/internal/ceres/solver.cc
@@ -730,7 +730,7 @@
 
 #ifndef CERES_NO_CUDA
   if (IsCudaRequired(options)) {
-    if (!problem_impl->context()->InitCUDA(&summary->message)) {
+    if (!problem_impl->context()->InitCuda(&summary->message)) {
       LOG(ERROR) << "Terminating: " << summary->message;
       return;
     }
diff --git a/internal/ceres/sparse_linear_operator_benchmark.cc b/internal/ceres/sparse_linear_operator_benchmark.cc
index a08911e..4969c0c 100644
--- a/internal/ceres/sparse_linear_operator_benchmark.cc
+++ b/internal/ceres/sparse_linear_operator_benchmark.cc
@@ -170,7 +170,7 @@
                                 FLAGS_num_residuals_per_camera);
   ContextImpl context;
   std::string message;
-  context.InitCUDA(&message);
+  context.InitCuda(&message);
   CompressedRowSparseMatrix jacobian_crs(
       jacobian->num_rows(), jacobian->num_cols(), jacobian->num_nonzeros());
   jacobian->ToCompressedRowSparseMatrix(&jacobian_crs);
@@ -205,7 +205,7 @@
                                 FLAGS_num_residuals_per_camera);
   ContextImpl context;
   std::string message;
-  context.InitCUDA(&message);
+  context.InitCuda(&message);
   CompressedRowSparseMatrix jacobian_crs(
       jacobian->num_rows(), jacobian->num_cols(), jacobian->num_nonzeros());
   jacobian->ToCompressedRowSparseMatrix(&jacobian_crs);
