小编Gou*_*tel的帖子

如何在 SYCL parallel_for(内核)内部打印?

我正在开发与 oneAPI 基础套件一起提供的 vectorAdd 示例应用程序。当我尝试在内核中打印总和时,出现以下错误。

请查看附件中的源代码以及编译时的错误。

//Source code 

    cgh.parallel_for<class VectorAdd>(num_items, [=](id<1> wiID) {
        sum_accessor[wiID] = addend_1_accessor[wiID] + addend_2_accessor[wiID];

        std::cout<<"Sum : "<<sum_accessor[wiID]<<std::endl;  // I want to print this sum

        });
Run Code Online (Sandbox Code Playgroud)

在编译期间我收到以下错误。

 //Error generated while compiling

usr/lib/gcc/x86_64-linux-gnu/7.4.0/../../../../include/c++/7.4.0/bits/ostream.tcc:359:25: error: SYCL kernel cannot have a class with a virtual function table
  extern template class basic_ostream<char>;
                        ^
vector-add.cpp:159:6: note: used here
            std::cout<<"Sum : "<<sum_accessor[wiID]<<std::endl;
            ^
vector-add.cpp:159:11: error: SYCL kernel cannot use a global variable
            std::cout<<"Sum : "<<sum_accessor[wiID]<<std::endl;
Run Code Online (Sandbox Code Playgroud)

sycl intel-oneapi dpc++

3
推荐指数
1
解决办法
2419
查看次数

标签 统计

dpc++ ×1

intel-oneapi ×1

sycl ×1