2011-01-28 29 views
0

マルチコア プロセッサで実行するスレッドレベルの順次プログラムを自動的に並列化します。 私はlvmやopenIMPACTなどのコンパイラを使用していません。このトピックで私を助けてください。自動並列化

+1

自動的に自動的に来る並列化についてはほとんどありません...もっと詳しくお願いしますか? – Crisfole

+0

プログラムを複数のパーティションに分割し、各パーティションをスレッドに割り当て、パイプラインモデルでスレッドを実行します。もちろん、プログラムの指示間の依存性に関心があります。 – neda

+0

命令の依存関係については忘れてください。より根本的な問題はデータ依存です。スライスに簡単に分割し、それぞれのデータに応じてスレッドを使わずに別々に処理できる大量のデータがありますか?そうすれば、いくつかの自動並列化(OMP、VC++ parallel_Forなど)を実行できる可能性があります。これはどの言語ですか? –

答えて

0

データストリームを介して通信するタスクのパイプラインに順次プログラムを分割したいとします。たとえばCまたはC++プログラムを想定すると、アプリケーションを手作業で並列タスクのネットワークに書き換える必要があります。タスクとコミュニケーションの作成に役立つさまざまなAPIがあります。これにうまく収まる正式なモデルはKahn Process Networks(KPN)です。

明らかに、実際の課題は、すべての通信を明示的なデータストリームに公開するようにコードを書き直すことです。アプリケーションに応じて多くの作業を行うことができます。

実装のために、OpenMPはタスクの並列処理をサポートしています。効率的なストリーミングAPIのためにvfTasks library(C/C++)を見てください。あなたは、あなたが気にしているアーキテクチャに簡単に移植することができます。 (免責事項:私は著者の一人です)。