Visible to Intel only — GUID: GUID-A682C1B8-695E-4718-91FF-77DF811B7E8F
Visible to Intel only — GUID: GUID-A682C1B8-695E-4718-91FF-77DF811B7E8F
DPCT1047
Message
The meaning of <parameter name> in the <API name> is different from the <API name>. You may need to check the migrated code.
Detailed Help
In cuBLAS* and cuSolver* getrf API, the LU factorization is done as P*A=L*U; in Intel® oneAPI Math Kernel Library API, it is done as A=P*L*U. The result of the matrix P may be different.
Suggestions to Fix
If the matrix P is only used in library API, ignore this warning. If P is used other ways, you may need to adjust the value of P.
For example, this original CUDA* code:
void foo(cublasHandle_t handle, float **a_array, float **b_array, int *p_array, int *info_array) { cublasSgetrfBatched(handle, 2, a_array, 2, p_array, info_array, 1); cublasSgetrsBatched(handle, CUBLAS_OP_N, 2, 2, a_array, 2, p_array, b_array, 2, info_array, 1); }
results in the following migrated SYCL* code:
void foo(dpct::queue_ptr handle, float **a_array, float **b_array, int *p_array, int *info_array) { /* DPCT1047:0: The meaning of p_array in the dpct::getrf_batch_wrapper is different from the cublasSgetrfBatched. You may need to check the migrated code. */ dpct::getrf_batch_wrapper(*handle, 2, a_array, 2, p_array, info_array, 1); dpct::getrs_batch_wrapper(*handle, oneapi::mkl::transpose::nontrans, 2, 2, const_cast<float const **>(a_array), 2, p_array, b_array, 2, info_array, 1); }
which is rewritten to:
void foo(dpct::queue_ptr handle, float **a_array, float **b_array, int *p_array, int *info_array) { // cublas/cusolver API getrs need the output of cublas/cusolver getrf as input. // MKL/dpct helper API getrs need the output of MKL/dpct helper getrf as input. // In this case, matrix P is only used as a temporary data between library API // invocations, so the warning can be ignored. dpct::getrf_batch_wrapper(*handle, 2, a_array, 2, p_array, info_array, 1); dpct::getrs_batch_wrapper(*handle, oneapi::mkl::transpose::nontrans, 2, 2, const_cast<float const **>(a_array), 2, p_array, b_array, 2, info_array, 1); }