| 217 | } |
| 218 | |
| 219 | void CheckResult(OpKernelContext* context, DoneCallback done, |
| 220 | const std::vector<DeviceLapackInfo>& dev_info, |
| 221 | std::unique_ptr<CudaSolver> solver) { |
| 222 | auto info_checker = [context, done]( |
| 223 | const Status& status, |
| 224 | const std::vector<HostLapackInfo>& /* unused */) { |
| 225 | Status full_status = status; |
| 226 | if (!full_status.ok()) { |
| 227 | full_status.Update(errors::InvalidArgument(kErrMsg)); |
| 228 | } |
| 229 | OP_REQUIRES_OK_ASYNC(context, full_status, done); |
| 230 | done(); |
| 231 | }; |
| 232 | |
| 233 | CudaSolver::CheckLapackInfoAndDeleteSolverAsync(std::move(solver), dev_info, |
| 234 | std::move(info_checker)); |
| 235 | } |
| 236 | |
| 237 | // The SVD if m >= n |
| 238 | // TODO: can the two cases (MgeqN and MlessN) be simplified, |
nothing calls this directly
no test coverage detected