インテル Xeon Phi コプロセッサーからホスト CPU へのデータ転送に問題があります。オフロード モデルを使用して計算を実装しようとしています。計算の開始時に、すべてのデータをコプロセッサー (1 つの配列) に転送します。計算後、この配列の一部のみをホスト プロセッサに転送したいのですが、結果として次のエラーが発生します。
オフロード エラー: データ転送 (ベース = 0x75654640、サイズ = 7896016) は既存の割り当てのサブセットではありません (ベース = 0x75654640、サイズ = 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 によって使用されるため、データを転送する必要があります。問題とは何ですか?それを解決する方法は?