問題タブ [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.
openmp - Intel の Cluster OpenMP の類似物
Intel Cluster OpenMP の類似物はありますか? このライブラリは、共有メモリ マシン (SMP や NUMA など) をシミュレートしながら、分散メモリ マシン (イーサネット接続された PC のクラスターなど) で実行します。
このライブラリを使用すると、クラスタ上で直接 openmp プログラムを開始できます。
私は検索します
- 分散クラスターで実行されるマルチスレッド プログラムを可能にするライブラリ
- またはライブラリ (libgomp などの置き換え)。分散クラスターで OpenMP プログラムを実行できるようにします。
- Intel C++ 以外に、openmp プログラムからクラスター コードを生成できるコンパイラー
c++ - OpenMPでロックを使用する方法は?
2つの異なるコアで実行されている2つのC++コードがあります。どちらも同じファイルに書き込みます。
OpenMPを使用して、クラッシュがないことを確認するにはどうすればよいですか?
c - 並列コードを使用すると、コンピューターの速度が向上しないのはなぜですか?
したがって、この質問はばかげているように聞こえますが(はい、デュアルコアを使用しています)、2つの異なるライブラリ(Grand Central DispatchとOpenMP)を試しました。また、clock()を使用して、並行して、速度は同じです。(記録のために、彼らは両方とも独自の形式の並列を使用していました)。彼らは異なるスレッドで実行されていると報告していますが、おそらく同じコアで実行されていますか?確認する方法はありますか?(どちらのライブラリもC用ですが、下位層では不快です。)これは非常に奇妙です。何か案は?
visual-studio-2008 - OpenMP ライブラリを Visual C++ 2008 に個別にプラグインすることはできますか?
Visual Studio 2005で。OpenMP は Express Edition には付属していませんでしたが、コンパイラ自体が OMP 対応だったため、個別にダウンロードしてセットアップすることができました。
Visual Studio 2008でも同じですか? 私たちは皆、同様に OpenMP をサポートしていますが、libs/headers が付属していない Standard Edition を使用しています。一部のコードでは OMP を使用していますが、OMP のためだけにライセンスをアップグレードするための大きなコストは本当に望んでいません。それを行う方法はありますか?
multithreading - 1 秒間に何度も実行されるコードのチャンクを並列化する場合、openMP はどの程度適していますか?
1 秒間に約 30 回実行される典型的なゲームループがあるとします。1 つの特定の関数に約 50% の時間がかかり、並列化の最有力候補のように見えます。たとえば、大きなループであるか、4 つの別個の独立した作業ストランドが進行中であるとします。関数自体が2 ~ 4 コアに分離して適切に並列化できることを既に確認したと仮定します。
このような場合、OpenMP は高速化する可能性がありますか? 作業を分割するために各フレームで単純に 1 ~ 3 スレッドを作成するのは良くないと思いますが、スレッドの作成/破棄がもたらすオーバーヘッドが 10ms か 100 かはよくわかりません。 OMPがこの種のことで効率的であるか、またはコードの実行時間の長い部分にのみ実際に適している場合。
考え?
parallel-processing - 並列コードに適したclock()のようなものはありますか?
つまり、clock()はクロックサイクルを測定するため、時間を測定するのにはあまり適していません。また、壁時間を取得するためのomp_get_wtime()のような関数があることは知っていますが、壁時間が変化するのはイライラします。多くの場合、個別のクロックサイクルを測定する方法があるかどうか疑問に思っていました(複数のスレッドが実行された場合でも、1サイクルのみ)。それは比較的単純/ネイティブなものでなければなりません。ありがとう
c++ - openmpでのstdコンテナの反復
openmpを使用してstd::setを介したループをマルチスレッド化しようとしています。次のコードを書くと-
このエラーが発生します:
openmpを使用してstdコンテナーを反復処理する別の正しい方法はありますか?toとイテレータまたはループ本体で使用int i
および反復
できることはわかっていますが、これはあまりきれいに見えません。0
s.size()
operator[]
c - openMpを使用した行列乗算中のセグメンテーション違反?
私の行列乗算コードは
マトリックスオブジェクトのみが原因だと思いますが、パラメーターとして渡されているのになぜnullになるのでしょうか..
openmp - OpenMP + SSE はスピードアップしない
私の教授は、SSE と OpenMP を使用した 3D 線形分離可能なカーネル畳み込みのこの興味深い実験を発見し、私たちのシステムの統計をベンチマークするタスクを私に与えました。著者は、シリアル アプローチから 18 倍のスピードアップを達成したと主張しています。常にではないかもしれませんが、これをデュアル コア Intel で実行すると、少なくとも 2 ~ 4 倍のスピードアップが期待されていました。
残念ながら、スピードアップはまったく見つかりませんでした。OpenMP の有無にかかわらず、シリアル コードのパフォーマンスは常に向上します。
私は Linux を使用していますが、特定の傾向を観察しました...システムで他のプロセスが実行されていない場合、しばらくすると loadavg が増加し始め、%CPU 使用率が低下します。
私が誤って遭遇した別の誤検知の可能性...私はプログラムを開始し、すぐに一時停止しました。次に、bg を使用してバックグラウンドで実行したところ、2 倍以上のスピードアップが見られました。これは常に発生します。
どんなアドバイスも素晴らしいでしょう。
ありがとう、サヤン
c++ - MATLAB からのマルチプロセス アプリケーションの実行
VC++ で multitprocess アプリケーションを作成し、system
MATLAB のコマンドでコマンド ライン引数を指定して実行しようとしました。実行されますが、1 つのコアでのみ --- 何か提案はありますか?
更新:実際には、2 番目のコアも表示されません。私は OpenMP を使用し、and を使用omp_get_max_threads()
しomp_get_thread_num()
てチェックし、MATLAB からアプリケーションを実行したときのomp_get_max_threads()
ようですが、コマンド ウィンドウから実行した場合は (予想どおり) です。1
2
質問:私のタスク マネージャは、CPU 使用率が 100% に近いと報告しています --- これは、前述の API が誤動作していて、まだマルチプロセス アプリケーションとして実行されていることを意味しますか?
確認:
Process Explorerを使用して、スレッド数に違いがあるかどうかを確認しました。
コマンドウィンドウからアプリケーションを呼び出すと、1
スレッドがアプリケーションcmd.exe
に2
行き来します。
MATLAB から呼び出すと、26
スレッドは for MATLAB.exe
、1
for cmd.exe
、および1
for のアプリケーションです。
何か案は?