問題タブ [openmp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
11520 参照

visual-c++ - Visual C ++ 2008:omp.hが見つかりませんか?/openMPが設定されています

プロジェクト設定を使用してopenMPを有効にしましたが、#includeを実行すると、ファイルが存在しないというエラーが発生します。ExpressではなくVisualStudiostadnardエディションを使用しています...他に何が欠けていますか?私が見つけたすべてのページは、プロジェクト設定でそれをオンにするように単に言っており、それは機能します。

0 投票する
2 に答える
673 参照

c++ - ワーカー スレッドはしばらくすると作業を停止します

OpenMP を使用して並列化したシリアル アプリケーションがあります。メインループに次を追加するだけです:

うまく機能しているようです: 最初は、すべてのワーカー スレッドがループの繰り返しを実行し、すべてが高速になり、CPU 負荷が 100% になります (クアッドコア マシン上)。ただし、しばらくすると、ワーカー スレッドの 1 つが停止し、(ファイルは)_vcomp::PersistentThreadFuncから呼び出された関数にとどまり、次に別のスレッドなど... メイン スレッドだけが動作し続けるまで続きます。vcomp90.dllvctools\openmprt\src\ttpool.cpp

なぜこれが起こるのか誰にも分かりますか?これは、反復の約半分が実行された後に発生し始めます。

0 投票する
4 に答える
2023 参照

openmp - Inteli7上のOpenMP

i7CPUのopenMPに問題があります。

'for'ループを並列化するためだけにopenMPを使用しました。アルゴリズムはいくつかの異なるPCで使用され、問題なく機能しました。最近、i7システムで実行しようとしましたが、問題が発生しました。ソフトウェアは通常しばらく実行され、数サイクル後に「メモリ不足」と報告され、メモリリークを見つけようとしましたが、代わりに、ソフトウェアの使用済みスタックサイズが大きすぎることがわかりました。1Mbスレッドが多くありませんでした。閉まっている。どういうわけか、openMPによって作成されたスレッドはすべてスタックにスタックし、メモリはそれらでいっぱいになりました。

誰かがそのような行動を経験したことがありますか?コードは非常に単純で、他のPCでも問題なく動作する、あるサイクルを伴う「プラグマomp並列」です。

組み込みのopenMPライブラリを備えたMicrosoftVisualC++9.0コンパイラを使用しています。

ありがとうセルゲイ

0 投票する
1 に答える
382 参照

performance - Visual Studio 2008 SP1はランタイムのバグをもたらしましたか、それとも私は夢中ですか?

私は、最新の(ベータ版ではない)Visual Studio 2008 SP1で何が起こっているのかを理解しようと、頭を悩ませてきました。

OpenMPで構築された私のアプリは、デバッガーで非常に遅く実行され、CPU使用率が100%になります。それらがデバッガーの外部で実行される場合、それは単にゆっくり実行されます(リリースビルドの場合)。

Intel Thread Building Blocksライブラリを使用してビルドされたアプリ、または独自のスレッドチームの実装は、デバッガーの外部で実行する場合(リリースビルドの場合)よりもデバッガーでの実行が遅くなります。

SP1がインストールされていない他の開発マシンに行くと、状況が異なります。デバッガー内または外部で実行しても、プログラムのパフォーマンスには影響しません。OpenMPは、スレッドビルディングブロックまたは私自身のスレッドチームコード(この問題を理解するために憤慨して急いで書かれた)と同様に、私のアプリケーションを加速します。

これは、アプリにまったく変更を加えずに、デバッガーSP1と通常のVisualStudioの内部または外部で実行するだけです。

私はグーグルでこれについて何も見つけられなかったので、私は首を突き出して、誰かがこれが彼らに起こっていることを認識するかもしれないことを期待して何かを言っています。それか、私は物事を見ています。

0 投票する
4 に答える
6158 参照

c++ - OpenMP をオフにする

私の C++ プログラムでは、OpenMP を使用する場合と使用しない場合 (つまり、マルチスレッドまたはシングルスレッド) で実行可能ファイルを実行したいと考えています。コードで OpenMP を使用する方法として、次の 2 つのケースのいずれかを検討しています。

#include <omp.h>(1) 私のコードにはOpenMP ディレクティブとのみがあると仮定します。

(2) (1) と同じで、私のコードはさらに のような OpenMP 関数を呼び出しますomp_get_thread_num()

実行ごとに異なるコードを持たないようにするために、自己定義のプリコンパイラ変数を使用して OpenMP がコード内のどこに現れるかを保護する唯一の方法ですか?

よろしくお願いします!

0 投票する
3 に答える
2333 参照

macos - OpenMPではなくGrandCentralDispatchを使用する必要があるのはなぜですか?

AppleはSnowLeopardにGrandCentralDispatch(スレッドプール)を導入しましたが、クロスプラットフォームでLeopardでも動作するOpenMPで使用する理由については説明していません。どちらも非常に使いやすく、機能も似ています。それで、何かアイデアはありますか?

0 投票する
2 に答える
342 参照

pthreads - クラスター内でのスレッドの作成

ノードでプロセスを開始せずに、他のノードでスレッドを作成できる方法があることを知りたいです。例:- ノード 1 でアプリケーションを実行している 5 つのノードのクラスターがあるとします。これにより、5 つのスレッドが作成されます。同じシステムではなく、クラスター全体でスレッドを作成したいのですが、1 ノード 1 スレッド タイプとします。これを行う方法はありますか、それとも Load Scheduler に依存し、openMP はそのようなことを行いますか?

質問にあいまいさがある場合は、明確にしますのでお知らせください。

0 投票する
7 に答える
205018 参照

multithreading - omp parallel と omp parallel の比較

これら2つの違いは何ですか?

[あ]

[B]

0 投票する
1 に答える
502 参照

parallel-processing - Fortran90 OpenMP の重要なプライベート データ

OpenMP で並列化する必要がある Fortran90 プログラムのセクションがあります。

私が確信していないのは、複雑なデータ構造を各スレッドにプライベートにできるかどうかです (そして、これを行う方法はfirstprivate正しいですか?)。上記のコード例でtargetsは、 はやや複雑なユーザー定義型であり、同様に複雑なサブフィールドがあります。たとえば、targets(s)%ham%op(1)%pulseは配列の要素へのポインタpulsesです。また、targets(s)%work高速フーリエ変換で作業配列として使用される割り当てられたスペースが含まれています。

明らかに、すべてのスレッドはtargetsと の両方の独立したコピーをpulses維持し、2 つの間のポインターを独立して維持する必要があります。これは、OpenMP の自動メモリ管理に少し要求しすぎているように思えます。これは正しいですか、それともそのままで動作するはずですか?

もちろん、別の方法として、各スレッド内で元のデータのコピーを作成し (配列に格納)、このコピーされたプライベート データを の呼び出しで使用することもできますprop

0 投票する
1 に答える
410 参照

visual-studio-2005 - Visual Studio 2005 の OpenMP

OpenMP を使用して、Visual Studio 2005 Professional で並列 for ループを作成しようとしています。omp.h をインクルードし、/openmp コンパイラ フラグを指定しました。ただし、最も単純な並列 for ループをコンパイルすることさえできません。

上記は #pragma 行でコンパイラ エラー C3005 を生成します。

Google はあまり役に立ちませんでした。同様の問題を抱えているユーザーがいるあいまいな日本語の Web サイトを 1 つだけ見つけました。解決策については言及されていません。

標準の並列ブロックは正常にコンパイルされます。

それは、for ループを追加しようとするまでです。

上記により、コンパイラ エラー C3001 が発生します。「for」はコンパイラを混乱させるようですが、そうすべきではありません。何か案は?