2016-05-28 16 views
0

私は以下のコードを最適化して、openMPとメモリブロックを使用してatleastを16倍高速に実行することになっています。これまでのところ私は以下の簡単なステートメントでforループを崩壊させることしか考えられません。これにより、3倍の速さで実行できます。 16に近づけるためのアイデアは?OpenMPの最適化とC

+0

いくつのコアがありますか? (アルゴリズム最適化を除いて)少なくとも17コアが必要です –

+0

@MichalWalenciak私は10コアを持っています – user6382770

+0

〜9倍のスピードアップがあなたの最大になります。どのくらいの大きさの「MSIZE」ですか?小さな値の場合、スレッド管理はあまりにも多くを食べます。 –

答えて

0

外部スコープで内部ループインデックスを宣言するときは、各スレッドに独自のコピーを与えるためにprivate句を使用する必要があります。崩壊はシンプルなベクトル化を妨げる可能性があります。

+1

'collapse' makes内側のループと関連付けられたループ*なので、そのイテレータもプライベートでなければなりません –