問題タブ [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 投票する
1 に答える
966 参照

parallel-processing - OpenMp でアプリケーションが途中で終了し、エラー コード: Fatal User Error 1002: Not all work-sharing constructs executable by all threads

シミュレータ アプリケーションの一部のシリアル コードに openMp コードを追加しました。このアプリケーションを使用するプログラムを実行すると、プログラムが「The thread 'Win32 Thread' (0x1828) has exited with code 1 (0x1)」という出力で予期せず終了します。これは、OpenMp コードを追加した並列領域で発生します。コード サンプルは次のとおりです。

スケジューリングは、動的にする前は静的でした。チャンク サイズ 1 で動的を追加した後、アプリケーションは終了する前に少し進みました。これは、並列領域内で何が起こっているかを示している可能性がありますか? ありがとう

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

c# - ビットマップのグレースケール変換を高速化します。OpenMP は C# のオプションですか?

openmpを使用してこのコードを並列にするのを手伝ってくださいこのコードはボタンのクリックで実行され、テキストボックスは128です

できるだけ早く私を助けてください、私はこのサイトとここにいるすべてのプログラマーを信じています...

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

c++ - openmp を使用した並列 for_each

std::sort() で完全に正常に動作するのに、このコードが std::for_each() を並列化しないのはなぜですか?

どうすれば修正できますか?

Linux 上の GCC 4.3。

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

c - 並列領域での omp_get_max_threads の動作

Snow Leopard と Linux でこのコードをコンパイルすると、異なる結果が得られます。Snow leopard では、omp_get_max_threads の最初の呼び出しはコア数である 2 を返し、2 回目は 1 を返します。Linux では、両方の呼び出しでコア数である 4 が返されます。Linux の動作は正しいと思いますが、そうですか? どちらも正しいのですが、私はこの機能を誤解しているだけですか?

Mac 出力:

Linux 出力:

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

openmp - Visual StudioでOpenMpを有効にすると、エラーメッセージが表示されます

特定のアプリケーションでOpenMpを有効にすると、Visual Studioで実行しようとすると、このエラーメッセージ「致命的なユーザーエラー1002:すべてのスレッドによって実行されるすべてのワーク共有構造ではありません」が返されるのはなぜですか?これは、並列構造を追加しなくても発生します。これは、このアプリケーションでのみ発生します。つまり、OpenMpを有効にして他のアプリケーションを実行しようとしても、これは発生しません。

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

global-variables - OpenMP を使用したグローバル変数

マルチスレッド コードの OpenMP に関する質問:

すべてのグローバル変数はスレッドによって共有されていますか? 特定のグローバル変数をマスタースレッドに対してプライベートにするにはどうすればよいですか?

ありがとう

PS: C コードです。

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

c - solaris-sparc プラットフォームで既存の C プロジェクトに openMp サポートを追加

「OpenMP」を使用して、solaris8-sparc プラットフォームで既存の C プロジェクト (巨大なプロジェクト) を再コンパイルするためのアドバイスとヘルプが必要です。ポイントは、コンパイルにも並列プログラミングの問題にも慣れていないということです。ちょっとした Google 検索で、sun-studio 11 と 12 にはすでに openMP インフラストラクチャがあることがわかりました。どうすればopenMPでcファイルのコンパイルを開始できますか。

一方で

これは、openMP をサポートする (バンドル内の) gcc コンパイラをダウンロードし、名前を変更して以前の cc の場所にリンクし、openmp ヘッダーをプロジェクト ファイルに含めることで実行できますか? だから私は何をすべきですか?それについてのロードマップを教えてください。

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

c++ - OpenMP コードが並列化されない理由を知りたい

OpenMPの使い方を学び始めたところです。次のコードが Visual Studio 2008 と並行して実行されない理由を理解しようとしています。コンパイルして正常に実行されます。ただし、クアッド コア マシンでは 1 つのコアしか使用しません。これは、 MATLAB mex 関数に移植しようとしているコードの一部です。どんなポインタでも大歓迎です。

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

c++ - 関数呼び出しを含むループの並列化

関数呼び出しを含むループの並列化に適していますか、それとも基本的な操作を内部で実行しているループの並列化の方がはるかに便利ですか。

たとえば、次のように並列化ディレクティブを配置するのは適切ですか?


Will Richard と Phkahler に感謝します。そのコメントは役に立ちました。rcrd が提案した本を詳しく調べてみます。しかし、一日の終わりまでに、可能であれば、既存の C コード (実際にはプログラムの先頭にとどまる大きなループ) を openMP で並列化することを望んでいます。

この時点で、少なくともループの一部を並列化するための助けが必要です。物事を簡単にするために、ループの内容全体を並列化する代わりに、その一部だけを並列化するにはどうすればよいですか

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

c - OpenMPからMPIへ

次のopenMPプログラムをMPIプログラムに変換する方法がわかりません。

クラスターで実行したい同様のプログラムがあり、プログラムはOpenMPを使用しています。

ありがとう!


アップデート:

次のおもちゃのコードでは、関数f()内の並列部分を制限したいと思います。

ただし、実行中の出力は期待されていません。並列部分の前後のprintf部分は、メインプロセスだけでなく、すべてのプロセスによって実行されています。

したがって、並列部分はMPI_Init()とMPI_Finalize()の間で制限されていないように見えます。