DPCT1016

この診断メッセージは非推奨となり、インテル® DPC++ 互換性ツール 2023.0 以降では生成されなくなりました。

メッセージ

<API name> は移行されませんでした。 <parameter name a><parameter name b> を評価できなかったか、<parameter name a><parameter name b> と等しくありません。このコードを手動で書き換えてください。

説明

cublasSetMatrix は、ldaldb が同じ定数値の場合のみ、インテル® DPC++ 互換性ツールで移行できます。移行されない場合は、手動でコードを書き直します。

  • ldaldb の値が同じ場合、次のコードを使用できます。

    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++ 互換性ツールは、incxincy が同じ定数値の場合のみ、cublasSetVector を移行できます。移行されない場合は、手動でコードを書き直します。

  • incxincy の値が同じ場合、次のコードを使用できます。

    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;

修正方法の提案

ロジックを確認して、調整してください。