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); // For cublasGetMatrix, use 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;

修正方法の提案

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