DPCT1016#
注
この診断メッセージは非推奨となり、インテル® DPC++ 互換性ツール 2023.0 以降では生成されなくなりました。
メッセージ#
<API name> は移行されませんでした。<parameter name a> や <parameter name b> を評価できなかったか、<parameter name a> が <parameter name b> と等しくありません。このコードを手動で書き換えてください。
説明#
cublasSetMatrix
は、lda
と ldb
が同じ定数値の場合のみ、インテル® DPC++ 互換性ツールで移行できます。移行されない場合は、手動でコードを書き直します。
lda
とldb
の値が同じ場合、次のコードを使用できます。dpct::dpct_memcpy((void*)(B), (void*)(A), lda*cols*elemSize, dpct::host_to_device); // cublasGetMatrix には dpct::device_to_host を使用します
そうでない場合は、行列の列やベクトルの要素を 1 つずつコピーできます。
cublasSetMatrix(rows, cols, elemSize, A, lda, B, ldb)
と同等な機能を以下に示します。1 auto A_backup = A; 2 auto B_backup = B; 3 A = A - lda; 4 B = B - ldb; 5 for (int c = 0; c < cols; ++c) { 6 A = A + lda; 7 B = B + ldb; 8 dpct::dpct_memcpy( 9 (void *)(B), (void *)(A), rows * elemSize, 10 dpct::host_to_device); // cublasGetMatrix には dpct::device_to_host を使用します 11 } 12 A = A_backup; 13 B = B_backup;
インテル® DPC++ 互換性ツールは、incx
と incy
が同じ定数値の場合のみ、cublasSetVector
を移行できます。移行されない場合は、手動でコードを書き直します。
incx
とincy
の値が同じ場合、次のコードを使用できます。dpct::dpct_memcpy((void*)(B), (void*)(A), n*incx*elemSize, dpct::host_to_device); // cublasGetVector には use dpct::device_to_host を使用します
そうでない場合は、ベクトルの要素を 1 つずつコピーできます。
cublasGetVector(n, elemSize, x, incx, y, incy)
を以下のコードに置き換えます。1 auto x_backup = x; 2 auto y_backup = y; 3 x = x - incx; 4 y = y - incy; 5 for (int c = 0; c < n; ++c) { 6 x = x + incx; 7 y = y + incy; 8 dpct::dpct_memcpy( 9 (void *)(y), (void *)(x), elemSize, 10 dpct::device_to_host); // cublasSetVector には use dpct::host_to_device を使用します 11 } 12 x = x_backup; 13 y = y_backup;
修正方法の提案#
ロジックを確認して、調整してください。