【发布时间】:2015-04-16 10:01:28
【问题描述】:
我已将一些全局变量声明为 _Cilk_shared。它们用于我要卸载的功能中它们也用于我不想卸载的某些功能中。
所以最初我只将需要卸载的那些函数声明为 _Cilk_shared 并使用 _Cilk_offload 调用这些函数。
它编译得很好。当我在主机上运行它时,它只会给出正确的结果。
然后我用 MIC 运行它。它给了我关于无法加载库 blablabla 未定义符号的运行时错误,后跟我没有声明为 _cilk_shared 的函数名称。这些函数也不需要 _cilk_shared。
所以我必须将这些函数更改为 _cilk_shared。再次运行它。这次 MIC 给出了正确的结果。
我检查了这些函数(我不想卸载并且最初没有声明为 _cilk_shared )是否被卸载,通过使用
#ifdef __MIC__
printf(" Running on MIC\n");
#else
printf("No MIC\n");
#endif
结果是它们没有被卸载....
所以我想知道为什么它要我将这些函数声明为 _Cilk_shared?
【问题讨论】:
标签: c++ parallel-processing xeon-phi cilk-plus offloading