22 cusolverDnHandle_t handle =
27 Blob dinfo(
sizeof(
int), device);
29 OPEN3D_CUSOLVER_CHECK(
30 getrf_cuda_buffersize<scalar_t>(handle, n, n, n, &len),
31 "getrf_buffersize failed in InverseCUDA");
32 Blob workspace(len *
sizeof(scalar_t), device);
34 OPEN3D_CUSOLVER_CHECK_WITH_DINFO(
36 handle, n, n,
static_cast<scalar_t*
>(A_data), n,
37 static_cast<scalar_t*
>(workspace.
GetDataPtr()),
38 static_cast<int*
>(ipiv_data),
40 "getrf failed in InverseCUDA",
41 static_cast<int*
>(dinfo.
GetDataPtr()), device);
43 OPEN3D_CUSOLVER_CHECK_WITH_DINFO(
44 getrs_cuda<scalar_t>(handle, CUBLAS_OP_N, n, n,
45 static_cast<scalar_t*
>(A_data), n,
46 static_cast<int*
>(ipiv_data),
47 static_cast<scalar_t*
>(output_data), n,
49 "getrs failed in InverseCUDA",
50 static_cast<int*
>(dinfo.
GetDataPtr()), device);
#define DISPATCH_LINALG_DTYPE_TO_TEMPLATE(DTYPE,...)
ccGuiPythonInstance * GetInstance() noexcept
void InverseCUDA(void *A_data, void *ipiv_data, void *output_data, int64_t n, Dtype dtype, const Device &device)
Generic file read and write utility for python interface.