offload_transfer や offload 節で in/out/inout する際の注意 | インテル Xeon Phi 開発者フォーラム | フォーラム

iSUS に投稿されている記事の内容や、IA プラットフォーム上でのソフトウェア開発に関するトピックを開発者同士でディスカッションできる場としてフォーラムを公開しています。

運営ルールはフォーラムの利用案内をご覧ください。
フォーラムの使い方はこちら

 
フォーラムに投稿するにはログインが必要ですログイン

offload_transfer や offload 節で in/out/inout する際の注意

メンバー投稿

9:03 AM
2013年8月20日


iSUS編集部 – 菅原

投稿数 206

1

投稿は 9:04 AM – 2013年8月20日 に iSUS編集部 – 菅原 さんにより更新されました


offload_transfer や offload 節でデータを in/out/inout する際、そのデータスコープでの割り当てと解放のデフォルトは以下になります。

alloc_if free_if
in true true
out true true
inout true true
nocopy false false

つまり offload_transfer でデータを転送して、後に別の offload 節でそのデータを利用する場合、alloc_if と free_if の属性を変える必要があります。

#pragma offload_transfer target(mic:0) in(data[:] : alloc_if(1) free_if(0))

#pragma offload target(mic:0) out(data[:] : alloc_if(0) free_if(1))
{
// オフロード処理
}

もしくは、

#pragma offload_transfer target(mic:0) in(data[:] : alloc_if(1) free_if(0))

#pragma offload target(mic:0) nocopy(data[:] : alloc_if(0) free_if(0))
{
// オフロード処理
}

#pragma offload_transfer target(mic:0) out(data[:] : alloc_if(0) free_if(1))

と記述できます。

6:35 AM
2013年8月21日


iSUS編集部 – 菅原

投稿数 206

2

関連するスライドを訳しましたので、ご興味のある方はご覧ください。

http://www.isus.jp/article/mic…../xeon-phi/

こちらのページの、最後から4つ目のトピックに、

「新しいMIC Offload 機能(C++, Fortran)」

を追加しました。

タグはありません