0

私はプロジェクトに取り組んでおり、アプリケーションを並列化しようとしています。並列化しようとしている関数がいくつかありますが、問題は、これらの関数が他の関数を頻繁に呼び出すことです。ループは計算専用であり、1 つの関数本体に多くのループがあります。私は OpenACC がそのディレクティブ内で関数呼び出し (インライン呼び出しのみ) をサポートしていないことを知っています。そのままにしておくだけです)(すべての関数本体でこれを行います)b)または、呼び出された関数本体を呼び出し元の関数内に配置すると、acc ディレクティブに入るときにスレッド作成のオーバーヘッドが複数回最小化されます( 1 つのブロックに多数のループを含む)。

そのようなシナリオを処理する方法がわかりません。

要約すると、OpenACC で関数呼び出しを並列化する効率的な方法を見つける必要があります。

4

1 に答える 1

0

Mark Ebersoleが言ったように、OpenACC 2.0 が解決策です。2.0ルーチンディレクティブを使用すると、関数をデバイス ターゲットとしてマークできます。

于 2016-07-16T17:32:24.147 に答える