問題タブ [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.
visual-c++ - Visual C ++ 2008:omp.hが見つかりませんか?/openMPが設定されています
プロジェクト設定を使用してopenMPを有効にしましたが、#includeを実行すると、ファイルが存在しないというエラーが発生します。ExpressではなくVisualStudiostadnardエディションを使用しています...他に何が欠けていますか?私が見つけたすべてのページは、プロジェクト設定でそれをオンにするように単に言っており、それは機能します。
c++ - ワーカー スレッドはしばらくすると作業を停止します
OpenMP を使用して並列化したシリアル アプリケーションがあります。メインループに次を追加するだけです:
うまく機能しているようです: 最初は、すべてのワーカー スレッドがループの繰り返しを実行し、すべてが高速になり、CPU 負荷が 100% になります (クアッドコア マシン上)。ただし、しばらくすると、ワーカー スレッドの 1 つが停止し、(ファイルは)_vcomp::PersistentThreadFunc
から呼び出された関数にとどまり、次に別のスレッドなど... メイン スレッドだけが動作し続けるまで続きます。vcomp90.dll
vctools\openmprt\src\ttpool.cpp
なぜこれが起こるのか誰にも分かりますか?これは、反復の約半分が実行された後に発生し始めます。
openmp - Inteli7上のOpenMP
i7CPUのopenMPに問題があります。
'for'ループを並列化するためだけにopenMPを使用しました。アルゴリズムはいくつかの異なるPCで使用され、問題なく機能しました。最近、i7システムで実行しようとしましたが、問題が発生しました。ソフトウェアは通常しばらく実行され、数サイクル後に「メモリ不足」と報告され、メモリリークを見つけようとしましたが、代わりに、ソフトウェアの使用済みスタックサイズが大きすぎることがわかりました。1Mbスレッドが多くありませんでした。閉まっている。どういうわけか、openMPによって作成されたスレッドはすべてスタックにスタックし、メモリはそれらでいっぱいになりました。
誰かがそのような行動を経験したことがありますか?コードは非常に単純で、他のPCでも問題なく動作する、あるサイクルを伴う「プラグマomp並列」です。
組み込みのopenMPライブラリを備えたMicrosoftVisualC++9.0コンパイラを使用しています。
ありがとうセルゲイ
performance - Visual Studio 2008 SP1はランタイムのバグをもたらしましたか、それとも私は夢中ですか?
私は、最新の(ベータ版ではない)Visual Studio 2008 SP1で何が起こっているのかを理解しようと、頭を悩ませてきました。
OpenMPで構築された私のアプリは、デバッガーで非常に遅く実行され、CPU使用率が100%になります。それらがデバッガーの外部で実行される場合、それは単にゆっくり実行されます(リリースビルドの場合)。
Intel Thread Building Blocksライブラリを使用してビルドされたアプリ、または独自のスレッドチームの実装は、デバッガーの外部で実行する場合(リリースビルドの場合)よりもデバッガーでの実行が遅くなります。
SP1がインストールされていない他の開発マシンに行くと、状況が異なります。デバッガー内または外部で実行しても、プログラムのパフォーマンスには影響しません。OpenMPは、スレッドビルディングブロックまたは私自身のスレッドチームコード(この問題を理解するために憤慨して急いで書かれた)と同様に、私のアプリケーションを加速します。
これは、アプリにまったく変更を加えずに、デバッガーSP1と通常のVisualStudioの内部または外部で実行するだけです。
私はグーグルでこれについて何も見つけられなかったので、私は首を突き出して、誰かがこれが彼らに起こっていることを認識するかもしれないことを期待して何かを言っています。それか、私は物事を見ています。
c++ - OpenMP をオフにする
私の C++ プログラムでは、OpenMP を使用する場合と使用しない場合 (つまり、マルチスレッドまたはシングルスレッド) で実行可能ファイルを実行したいと考えています。コードで OpenMP を使用する方法として、次の 2 つのケースのいずれかを検討しています。
#include <omp.h>
(1) 私のコードにはOpenMP ディレクティブとのみがあると仮定します。
(2) (1) と同じで、私のコードはさらに のような OpenMP 関数を呼び出しますomp_get_thread_num()
。
実行ごとに異なるコードを持たないようにするために、自己定義のプリコンパイラ変数を使用して OpenMP がコード内のどこに現れるかを保護する唯一の方法ですか?
よろしくお願いします!
macos - OpenMPではなくGrandCentralDispatchを使用する必要があるのはなぜですか?
AppleはSnowLeopardにGrandCentralDispatch(スレッドプール)を導入しましたが、クロスプラットフォームでLeopardでも動作するOpenMPで使用する理由については説明していません。どちらも非常に使いやすく、機能も似ています。それで、何かアイデアはありますか?
pthreads - クラスター内でのスレッドの作成
ノードでプロセスを開始せずに、他のノードでスレッドを作成できる方法があることを知りたいです。例:- ノード 1 でアプリケーションを実行している 5 つのノードのクラスターがあるとします。これにより、5 つのスレッドが作成されます。同じシステムではなく、クラスター全体でスレッドを作成したいのですが、1 ノード 1 スレッド タイプとします。これを行う方法はありますか、それとも Load Scheduler に依存し、openMP はそのようなことを行いますか?
質問にあいまいさがある場合は、明確にしますのでお知らせください。
multithreading - omp parallel と omp parallel の比較
これら2つの違いは何ですか?
[あ]
[B]
parallel-processing - Fortran90 OpenMP の重要なプライベート データ
OpenMP で並列化する必要がある Fortran90 プログラムのセクションがあります。
私が確信していないのは、複雑なデータ構造を各スレッドにプライベートにできるかどうかです (そして、これを行う方法はfirstprivate
正しいですか?)。上記のコード例でtargets
は、 はやや複雑なユーザー定義型であり、同様に複雑なサブフィールドがあります。たとえば、targets(s)%ham%op(1)%pulse
は配列の要素へのポインタpulses
です。また、targets(s)%work
高速フーリエ変換で作業配列として使用される割り当てられたスペースが含まれています。
明らかに、すべてのスレッドはtargets
と の両方の独立したコピーをpulses
維持し、2 つの間のポインターを独立して維持する必要があります。これは、OpenMP の自動メモリ管理に少し要求しすぎているように思えます。これは正しいですか、それともそのままで動作するはずですか?
もちろん、別の方法として、各スレッド内で元のデータのコピーを作成し (配列に格納)、このコピーされたプライベート データを の呼び出しで使用することもできますprop
。
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」はコンパイラを混乱させるようですが、そうすべきではありません。何か案は?