私は、特に方程式の線形方程式(Ax = b形式)を繰り返し解くための科学計算コミュニティ向けのコードを開発しています。Scientific Computing :: OpenMPまたはPthreads
私はBLASとLAPACKをプリミティブ行列サブルーチンに使用しましたが、私は現在、手動並列化のためのいくつかの範囲があることを認識しています。 OpenMPとPThreadsの2つの選択肢を私に残す共有メモリシステムに取り組んでいます。
時間が最大の要因ではないと仮定すると(これはコードの性能が向上している)、これは将来の証明であり、多分ポータブルな(CUDAへの)並列化の方法でしょうか?パフォーマンス向上に値するPthreadの使用に費やされた時間は?
私のアプリケーション(基本的に多くのことを一度にオフにしてから、それらのすべてから「最高」の値を操作することを基本的に扱います)は明示的なスレッド制御の恩恵を受けると思いますが、あまりにも多くの時間を取って、最終的にパフォーマンスが上がることはありません。
私はすでに類似の質問をほとんど見ていませんが、それらはすべて一般的なアプリケーションに関連しています。
This Linuxでの一般的なマルチスレッドアプリケーションに関するものです。
Thisも一般的な質問です。
私はSciComp.SEを認識していますが、ここでの話題はもっと多いと感じました。
"基本的には、すぐに多くのことを開始してから、すべての"最良の "値を操作します。"私は[CPlex](http://www-01.ibm.com/software/integration/最適化/ cplex-optimizer /)は、あなたと同様のアルゴリズムを備えています。私は彼らが基本となる並列化ツールを選んだのかどうか分からないかもしれませんが、おそらくあなたはそれを知ることができます(必ずしもあなたの選択があなたのために最善であるとは限りませんが、 – Francesco
ブーストスレッドは、あなたがC++を使っているならば、pthreads(あるいは何でも)に対するとても良いインターフェイスを提供します。それはまったく価値がある。しかし、私は最終的にプログラミングのしやすさのためにopenmpを選択しました。また、intel IPP/TBBも検討してください。 – Anycorn
BLASまたはLAPACKを使用している場合は、代わりにEigenを使用してください。これは、SIMD(SSE)とOpenMPのサポートを内蔵しています。 –