DPCT1002
目次
DPCT1002#
メッセージ#
特別なケースのエラーを処理する if-stmt
が検出されました。このコードを書き直す必要があるかもしれません。
詳細な説明#
DPCT1000 を参照してください。
修正方法の提案#
例えば、以下のオリジナル CUDA* コードについて考えてみます。
1 void foo() {
2 float *f;
3 cudaError_t err = cudaMalloc(&f, 4);
4 if (err == cudaErrorMemoryAllocation) {
5 std::cerr << "cudaErrorMemoryAllocation" << std::endl;
6 }
7 }
このコードは、以下の SYCL* コードに移行されます。
1 void foo() {
2 float *f;
3 int err = (f = (float *)sycl::malloc_device(4, dpct::get_default_queue()), 0);
4 /*
5 DPCT1002:1: Special case error handling if-stmt was detected.You may need to
6 rewrite this code.
7 */
8 if (err == 2) {
9 std::cerr << "cudaErrorMemoryAllocation" << std::endl;
10 }
11 }
このコードは次のように書き換えられます。
1 void foo() {
2 float *f;
3 try {
4 f = (float *)sycl::malloc_device(4, dpct::get_default_queue())
5 } catch (sycl::exception const &e) {
6 std::cerr << e.what() << std::endl;
7 }
8 }