我在将数据从 Intel Xeon Phi 协处理器传输到主机 CPU 时遇到问题。我尝试使用卸载模型来实现计算。在我的计算开始时,我将所有数据传输到协处理器(一个数组)。计算后,我只想将此数组的一部分传输到主机处理器,但结果出现以下错误:
卸载错误:数据传输(base=0x75654640,size=7896016)不是现有分配的子集(base=0x75654640,size=4512008)
以下是部分源代码:
array_Dc = _mm_malloc(...);
...
#pragma offload target(mic : micZero) \
in(array_Dc : length(size) alloc_if(0) free_if(0)) \
out(array[micBegin : micEnd] : alloc_if(0) free_if(0)
{
//...
}
在这种情况下,这个数组的大小 = 564001,micBegin = 423001,micEnd = 564001。我需要传输数据,因为它们被 CPU 使用。什么是问题?如何解决?