DPCT1056#

メッセージ#

デバイスコードの <variable name> の使用を検出できませんでした。この変数がデバイスコードでも使用されている場合は、コードを書き換える必要があります。

詳細な説明#

__constant__ 変数がホストコードでのみ使用されている場合、“__constant__” 属性は削除されます。

修正方法の提案#

例えば、以下のオリジナル CUDA* コードについて考えてみます。

1  #include <stdio.h> 
2  #include <cuda_runtime.h> 
3 
4  static __constant__ const float const_a = 10.f; 
5 
6  void foo_host() { 
7    printf("%f\n", const_a); 
8  }

上記のソースは次のコマンドラインを使用して移行されます。

1dpct --out-root out test.h --extra-arg=-xc

結果は、次の SYCL* コードに移行されます。

1  /* 
2  DPCT1056:0: The use of const_a in device code was not detected.If this variable is 
3  also used in device code, you need to rewrite the code.
4  */ 
5  static const float const_a = 10.f; 
6 
7  void foo_host() { 
8    printf("%f\n", const_a); 
9  }

“const_a” 変数がホストコードでのみ使用されている場合は、DPCT1056 を無視します。例:

1  static const float const_a = 10.f; 
2 
3  void foo_host() { 
4    printf("%f\n", const_a); 
5  }

“const_a” 変数がホストとデバイスコードの両方で使用されている場合、移行後のコードを書き直します。次に例を示します。

1  static const float const_a_host_ct1 = 10.f; 
2  static dpct::constant_memory<const float, 0> const_a(10.f); 
3 
4  void foo_host() { 
5    printf("%f\n", const_a_host_ct1); 
6  }