タグ付けされた質問 「parallel-computing」

複数のプロセッサの同時使用を利用して計算問題を解決する研究。

2
GPGPU計算用の線形ソルバーの選択(OpenCL)
私はすでに、共役勾配法を使用してGPUおよびOpenCLを使用して熱伝達の問題を解決するための有限要素法の実用的なソリューションを開発しました。この方法の主な欠点は、メモリの需要が高いことです。さらに、グラフィックカードの場合、メモリは非常に限られていることがよくあります。2つのオプションが表示されます。 サブドメインを作成し、メッシュの一部をホストメモリと交換する 多正面法を使用する 特定のアーキテクチャを考慮する必要があります。スワッピングは非常に高価になる可能性があります。CGメソッドはGPGPUコンピューティングのコンテキストで人気がありますが、CGとマルチフロンタルメソッド(GPGPUの場合)の比較は見つかりません。マルチフロンタル法はCGよりも高速ですか?これは一般的な質問ですが、実際にはまだ実装に依存しています。

5
大規模なスパース対称(正定ではない)システムのソルバーの最良の選択
私は現在、いくつかの特定のアルゴリズムによって生成された非常に大規模な対称(ただし、正定値ではない)システムの解決に取り組んでいます。これらの行列には、並列解法に使用できる素晴らしいブロックスパース性があります。しかし、直接アプローチ(Multi-frontalなど)と反復アプローチ(前処理されたGMRESまたはMINRES)のどちらを使用するべきかを判断できません。私のすべての研究は、反復ソルバー(7つの内部反復のかなり高速な収束でさえ)が、MATLABの直接の '\'演算子に勝てないことを示しています。しかし、理論的には、直接法の方がコストがかかると考えられています。これはどうですか?そのような場合の最新の文書や紙はありますか?GMRESのような柔軟な反復ソルバーと同じくらい効率的な直接法を使用して、並列システムでブロックスパース性を使用できますか?

3
モンテカルロのための並列メルセンヌツイスター
最近、モンテカルロ法を行うほとんどすべての研究者が間違っていると主張するコメントに出くわしました。Mersenne TwisterなどのPRNGのインスタンスごとに異なるシードを選択するだけでは、悪い衝突が発生する可能性があるため、公平な結果を保証するには不十分であるとさらに説明しました。メルセンヌツイスター上のWikipediaの記事を裏付けるようです: 複数のパラメーター値のセットを選択する方法はありますが、シード値のみが異なる(他のパラメーターは異なる)複数のMersenne Twisterインスタンスは、独立した乱数ジェネレーターを必要とするモンテカルロシミュレーションには一般的に適していません。 私は認めなければならない、私は起訴されたように有罪です。しかし、これまでに見てきた他のすべての並列モンテカルロライブラリの実装、特にALPSも同様です。 ウィキペディアの記事では、救済策を提供する2つの論文も参照しています。 動的な作成(DC)制度(1998)は、対応する固有多項式が互いに素であれば、彼らは独立しているという仮説に基づいて、MTのためのパラメータセットを選びます。 控えのためにジャンプ -linearのRNGF2F2\mathbb F_2(2008)。LCGのリープフロッグ法に似ていると思います。 どちらの方法も、メルセンヌツイスターアルゴリズムの原作者である松本と西村によって共同開発されました。 私は、数論や代数についてあまり知識がなく、上記のスキームやメルセンヌツイスターの背後にある数学を完全には理解していません。私の質問は主に実用的な性質のものです: そのようなスキームを採用していない場合、実際に(少なくとも私のコミュニティでは)誰もそれを気にしない場合、シミュレーションにバイアスを導入することについて本当に心配する必要がありますか? これらの対策の1つを実装した場合、Jump-Aheadは確固たる理論に基づいており、より近代的な方法であるため、Jump-Aheadの方が適していると思いますか?


1
「計算科学」に良いメーリングリストはありますか?
計算と科学のための非常に優れたメーリングリストやgoogleグループがあるかどうか疑問に思っています。 実際、私はPDEの並列計算と数値解にもっと興味があります。しかし、私はこの分野の人々が何をどのようにしているかを知りません。私は彼らの論文を読んで、この地域のロードマップを把握することしかできません。 ガイド情報を教えてください。ありがとう。

2
大きな共分散行列の並列計算
サイズがから100000 × 100000の範囲の共分散行列を計算する必要があります。GPUとクラスターにアクセスできます。これらの計算を高速化するための最適な並列アプローチは何でしょうか。10000×1000010000×1000010000\times10000100000×100000100000×100000100000\times100000

4
大規模な3次元線形弾性問題のロバストで反復的なソルバーとは何ですか?
私は魅力的な有限要素解析の世界に飛び込んでおり、大きな熱機械的問題(熱機械のみ、フィードバックなし)を解決したいと考えています。→→\rightarrow 機械的な問題については、メッシュのサイズが原因で反復ソルバーを使用する必要があることを、Geoffの回答からすでに把握しました。Mattの返答をさらに読んで、正しい反復アルゴリズムの選択は困難な作業であると述べました。 最高のパフォーマンスの検索を絞り込むのに役立つ大きな3次元線形弾性問題の経験があるかどうかをここで尋ねていますか?私の場合、それは薄いパターン化されたフィルムと不規則に配置された材料(高CTEと低CTEの両方)の構造です。この熱機械分析では大きな変形はありません。大学のHPC [1.314ノード、2つのAMD Opteronプロセッサ(各2.2 GHz / 8コア)を使用]を使用できます。 私はPETSc興味深いもの、特にある種のドメイン分解(FETI、マルチグリッド)を行うアルゴリズムを含むことができると思いますが、オプションに少し圧倒され、経験がありません。「幾何学的な情報に基づいたプレコンディショナー」というフレーズも好きですが、これが役立つかどうかはわかりません。線形連続体力学に焦点を当てたものはまだ見つけていません。 強力なスケーリング(アムダール)は私のアプリケーションで非常に重要です。なぜなら、私の産業パートナーはシミュレーション結果を長時間待つことができないからです。私は間違いなく回答だけでなく、コメントでさらに読むための推奨事項にも感謝しています。

2
Intel Knights LandingのワークロードとNVIDIA GeForce
新しく発売されたIntel Xeon Phiが競合他社からHPC \ Super Computerの市場シェアを奪う方法について書かれた記事はたくさんあります。Intel Knightsには72コアと4ソケットが搭載されており、288コアシステムとなっています。一方、単一のGtx980には2048のCUDAコアがあります。これら2つはどのようにしてコンピューティング能力の点で競争できますか(GTXがはるかに進んでいるように見えます)?または、それらは完全に異なる作業負荷を対象としていますか?その場合、いくつかの例は何ですか? ありがとう。

3
線形代数演算に使用するGPUライブラリ
私が持っているコードを高速化するGPUライブラリを探しています。その主要な「高性能」領域には、特異値分解、QR分解、固有値、固有ベクトル計算があります。CuBLAS、MagmaなどのツールでNvidiaのWebサイトを確認しましたが、Cudaでコードを記述したくありません。 SVD、QRなどのメインCコードから「呼び出す」ことができるライブラリがあり、GPUで計算が行われるとすばらしいと思います。つまり、要約すると、集中的な線形代数演算が加速される通常のCコードがあります。これを行うことができるオープンソース(できれば)ライブラリを知っている人はいますか? ありがとう。

1
複数の非同期転送のMPIポリシー
MPIでの複数の非同期非同期転送のポリシーは何ですか? いくつかの開いている非同期irecv操作を持つプログラムがあります。発生する可能性のある転送(対応するものisendが呼び出された)が、まだ準備ができisendていない(対応するものがまだ呼び出されていない)他の転送を待機していることがわかりました。明らかに、この非効率性はネットワークの競合に起因するものではありません。ネットワークが不必要にアイドル状態になっています。 私のプログラムは次のようになります。 マシン1 call irecv(variable A from machine 2) call irecv(variable B from machine 2) call irecv(variable C from machine 2) call wait(variable C from machine 2) call do_important_work_with(variable C) .... マシン2 call isend(variable C to machine 1) call isend(variable B to machine 1) call do a bunch of …

1
SLEPcを使用した線形安定性解析から大規模な非エルミート一般化固有値問題を解く
一般化された行列問題があります。線形安定性解析問題のスペクトル法からのです。私の行列Bは対角で正の半定値です。Aは非エルミートで複雑です。Ax=λBxAx=λBxA x = \lambda B x 私の問題は、SLEPcの一般化された固有値ソルバーを使用すると、「LU分解のピボットがゼロ」というエラーが発生することです。以下の残りの部分は、問題の詳細とこれまでに試したものです。助けてくれてありがとう! 問題の詳細 行列は最大で約48000 x 48000になり、固有値を見つけたいと思います。私が興味を持っている固有値は、0 + 0iの近くに実数部が最も大きいものです。理想的には、それらが内部にある場合(つまり、スペクトル内の正の実部がより大きい他の固有値がある場合)でもそれらを見つけられるようにしたいです。ただし、すべての固有値が対象の固有値以外の実部<0である問題に対して機能させることができれば幸いです。 現時点では、scipy linalg.eigおよびsparse.eigs関数を使用しています。私の知る限り、これらはそれぞれLAPACKとARPACKを使用して重い作業を行います。私は、SLEPcライブラリを使用することで、より良いパフォーマンスを達成できるかどうかを確認することにしました。これが悪い決定であるならば、私に知らせてください! SLEPc固有値ソルバーでPETScを使用したいと思います。私は、チュートリアルの一部として提供されている例を使用してSLEPcを試しました。演習7(http://www.grycap.upv.es/slepc/handson/handson3.html)は、ファイルから行列AおよびBを読み取り、解を出力します。提供されたマトリックスを使用してこれを正常に動作させました。ただし、問題の小さいサイズのテストバージョン(6000x6000)に置き換えると、指定したコマンドライン引数に応じてさまざまなエラーが発生します。 私が抱えている主な問題は、「LU分解のピボットがゼロ」というエラーです。デフォルト設定を使用する場合。 これは、Bにゼロの行が含まれているという事実に関連していると思いますが、線形代数の私の理解はやや基本的です。これは本当ですか? petscのWebサイトで提案されているオプション、-pc_factor_shift_type NONZEROなどを設定しようとしましたが、これらのオプションが使用されなかったという追加の警告が表示されます これは前提条件の問題であると想定したので、-eps_targetを0.1に設定し、-st_type sinvertとshiftを指定した場合と指定しない場合の両方を試しました。それでも同じエラーが発生します。 次に、-st_pc_type jacobiとst_pc_type bjacobiを試しました。jacobiは実行されますが、固有値は生成されません。ブロックjacobiはLU分解を実行し、同じエラーを再度表示します。 デフォルトの方法はkrylov-schurなので、-eps_type gdおよび-eps_type jdオプションを使用して実験しました。残念ながら、これらはナンセンス固有値を生成するようですが、scipyでLAPACKを使用して解決すると、スペクトルにまったく表示されません。 私の行列の問題は特異ではないことを知っています。なぜなら、私はscipyを使用してそれを解くことができるからです。 これらすべての異なるソルバーの動作を理解するために、PETSCとSLEPCのマニュアル以外に読む必要がある本/ガイドを知っていますか? コマンドラインオプションがない場合の出力を以下に示します。 私の最初の投稿を読んでいただきありがとうございます。 よろしく、トビー SLEPcからのターミナル出力 tobymac:SLEPC toby $ mpiexec ./ex7 -f1 LHS-N7-M40-Re0.0-b0.1-Wi5.0-amp0.02.petsc -f2 RHS-N7-M40-Re0.0-b0.1- Wi5.0-amp0.02.petsc -eps_view ファイルに保存されている一般化された固有問題。 [0] PETSC ERROR:---------------------エラーメッセージ--------------------- --------------- …

1
最大で8つのコアで並列密行列反転に使用するアルゴリズムは何ですか?
このための既存のライブラリがないように見える、使用している言語の並列密行列反転を実装する必要があります(特に、メッセージパッシングにIDLブリッジを使用するIDL)。C ++でMPIを使用した経験から、並列プログラミング方法に精通していますが、主に並列FFTおよびNボディメソッドが対象です。線形代数の計算方法について、シリアルまたはパラレルの経験や知識はほとんどありません。 私が探しているのは、(現在はシリアル)IDLタスクを実行するマシンには8つのコアがあるため、少数のコアに適した、堅牢で安定した並列行列反転アルゴリズムの明確な疑似コード記述です。実際には、おそらく4つだけを使用して、他のタスクのためにコアを解放します。 このタスクによく知られたアルゴリズムの範囲がある場合は、最先端のパフォーマンスよりも単純さを優先します。

1
スーパーコンピューティングの歴史を要約した参考文献を知っている人はいますか?
誰もが、並列プログラミング言語、アプリケーション、スタートアップ企業(確立されたものの存続しなかったもの)、業界のニーズなどの開発について言及するなど、スーパーコンピューティングの背後にある歴史とアイデアを要約した参考文献を知っています。

3
高性能コンピューティングコードのプロファイリングに関するリファレンスリクエスト
FortranとCでさまざまな行列アルゴリズムのコードを記述しています。ただし、VTuneを使用してコードをプロファイリングすると、通常は完全に理解できない用語に出くわします。ゼロからかなり高度なレベルまでプロファイリングを学習するための良いリソースはありますか? 私は数値コードのプロファイリングを楽​​しみにしていますが、他のコードのプロファイリングが異なっているとは思いません(私は間違っているかもしれません)。プロファイリングのチュートリアルが欲しいので、オンライン(無料)のPDFを好みますが、本やハンドブックは気にしません。 私はVTuneのハンドブックを読んでみましたが、それは中国語の本を読んで中国語を勉強しようとするようなものです。 さらに、VTuneは最善の方法ですか?私は本当にGUIが好きで、インテルMKLを使用しているので、Valgrindよりも優れていると思いました。

4
最大周期の並列線形合同擬似乱数ジェネレータをシードするにはどうすればよいですか?
通常、Cで順次乱数ジェネレータをシードするときは、次の呼び出しを使用します srand(time(NULL)) 次に使用します rand() mod N 0とN-1の間のランダムな整数を取得します。ただし、これを並行して実行すると、time(NULL)の呼び出しが互いに非常に近いため、最終的にはまったく同じ数になります。 私は線形合同乱数ジェネレーターを使ってみました: xn+1:=axn+c(modm)xn+1:=axn+c(modm)x_{n+1} := a x_n + c\;\;\; (\bmod m) a,c,a,c,a,c,mmm 私が選択することを知っている、いくつかの大きな整数のためにモジュラス演算子が桁を切り捨てることによって計算することができるので、迅速な結果を生成します。しかし、周期の大きいランダムなシーケンスを並列に生成するシードを確立するのは難しいと思います。次の場合、期間の長さが最大であることを知っています m=2km=2km=2^kkkk cとmは互いに素である a-1はmのすべての素因数で割り切れる mが4の倍数の場合、a-1も4の倍数でなければなりません。 (ソース:ウィキペディア) しかし、どのようにすればすべての乱数ストリームにこの最大の特性があることを確認できますか?MPIに関して、rankおよびを組み込んでsize線形合同法を使用して最大周期を生成するにはどうすればよいですか?ラグのあるフィボナッチまたはメルセンヌツイスターを使用して、より長い並列ランダムストリームを生成する方が簡単でしょうか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.