| 59 | |
| 60 | template<typename T> |
| 61 | Array<int> lu_inplace(Array<T> &in, const bool convert_pivot) { |
| 62 | if (OpenCLCPUOffload()) { return cpu::lu_inplace(in, convert_pivot); } |
| 63 | |
| 64 | dim4 iDims = in.dims(); |
| 65 | int M = iDims[0]; |
| 66 | int N = iDims[1]; |
| 67 | int MN = std::min(M, N); |
| 68 | std::vector<int> ipiv(MN); |
| 69 | |
| 70 | cl::Buffer *in_buf = in.get(); |
| 71 | int info = 0; |
| 72 | magma_getrf_gpu<T>(M, N, (*in_buf)(), in.getOffset(), in.strides()[1], |
| 73 | &ipiv[0], getQueue()(), &info); |
| 74 | |
| 75 | if (!convert_pivot) { return createHostDataArray<int>(dim4(MN), &ipiv[0]); } |
| 76 | |
| 77 | Array<int> pivot = convertPivot(&ipiv[0], MN, M); |
| 78 | return pivot; |
| 79 | } |
| 80 | |
| 81 | bool isLAPACKAvailable() { return true; } |
| 82 |
no test coverage detected