27 cusolverDnHandle_t handle =
32 Blob dinfo(
sizeof(
int), device);
34 OPEN3D_CUSOLVER_CHECK(
35 getrf_cuda_buffersize<scalar_t>(handle, n, n, n, &len),
36 "getrf_buffersize failed in SolveCUDA");
37 Blob workspace(len *
sizeof(scalar_t), device);
39 OPEN3D_CUSOLVER_CHECK_WITH_DINFO(
41 handle, n, n,
static_cast<scalar_t*
>(A_data), n,
42 static_cast<scalar_t*
>(workspace.
GetDataPtr()),
43 static_cast<int*
>(ipiv_data),
45 "getrf failed in SolveCUDA",
46 static_cast<int*
>(dinfo.
GetDataPtr()), device);
48 OPEN3D_CUSOLVER_CHECK_WITH_DINFO(
49 getrs_cuda<scalar_t>(handle, CUBLAS_OP_N, n, k,
50 static_cast<scalar_t*
>(A_data), n,
51 static_cast<int*
>(ipiv_data),
52 static_cast<scalar_t*
>(B_data), n,
54 "getrs failed in SolveCUDA",
55 static_cast<int*
>(dinfo.
GetDataPtr()), device);
#define DISPATCH_LINALG_DTYPE_TO_TEMPLATE(DTYPE,...)
ccGuiPythonInstance * GetInstance() noexcept
void SolveCUDA(void *A_data, void *B_data, void *ipiv_data, int64_t n, int64_t k, Dtype dtype, const Device &device)
Generic file read and write utility for python interface.