タグ付けされた質問 「c++」

強力なオブジェクト指向プログラミング言語。

12
HPC用のC ++とFortran
私の計算科学のPhDプログラムでは、ほぼすべてC ++とFortranで作業しています。一部の教授は他の教授よりも一方を好むようです。特定の状況において、どちらが「優れている」のか、一方が他方より優れているのか疑問に思っています。
56 hpc  fortran  c++  languages 


9
C ++でパラメータースタディを実行する良い方法は何ですか
問題 現在、有限要素ナビエストークスシミュレーションに取り組んでおり、さまざまなパラメータの影響を調査したいと思います。一部のパラメーターは、入力ファイルまたはコマンドラインオプションで指定されます。他のパラメーターはMakefileでフラグとして提供されるため、これらのオプションを変更するたびにコードを再コンパイルする必要があります。パラメータ空間を体系的に探索するための良い方法についてアドバイスをもらいたいと思います。 この種のことを支援できる便利なC ++ / Pythonライブラリ/フレームワークはありますか?たとえば、コマンドライン引数で入力ファイルオプションをオーバーロードすることができるため、boost.Program_optionsを発見することは大きな助けになりました。また、一部の人々が各ケースを非常に効果的に説明するジョブファイルを使用しているのを見たことがあり、同僚はコメントブロックとしてパラメーターをvtuファイルに書き込むこともできると提案しました。 おそらく、これに多くの時間を投資する価値はまったくありませんか?それは単なる気晴らしと時間の浪費であり、テストプロセスのブルートフォースとアドホックを筋肉だけで行うのが最善ですか? いくつかの考え 私は現在ほとんど手作業で仕事をしており、次の問題に直面しています。 テストケースの命名。アンダースコアで区切られた実行パラメーターなどの名前のフォルダーに結果を保存しようとしましたRe100_dt02_BDF1...。これらは、省略しすぎるとすぐに長くなり、読みにくくなります。また、実数のパラメータにはa .が含まれていますが、これは厄介です。 実行データのロギング。時々、端末に書き込まれ、テキストファイルに保存された結果を確認したいことがあります。たとえば、StackOverflowからのこの回答は多少役立ちますが、解決策は少し煩わしいようです。 パラメータに従ってデータをプロットします。さまざまなログファイルから関連するデータを1つのファイルに収集し、それをプロットするのにかなり時間がかかります。より良いシステムであれば、おそらくこれがより簡単になります。 データに関するコメントの記録。結果を調べた後、テキストファイルにコメントを書き込みますが、これを結果フォルダーと同期させることは難しい場合があります。

5
ユーザーがMPI C ++インターフェイスから必要とする機能は何ですか?
MPI標準の3.0バージョンは、C ++インターフェイスを正式に削除しました(以前は非推奨でした)。実装では引き続きサポートされますが、MPI-3の新しい機能には、MPI標準で定義されたC ++インターフェイスがありません。詳細については、http://blogs.cisco.com/performance/the-mpi-c-bindings-what-happened-and-why/を参照してください。 MPIからC ++インターフェースを削除する動機は、Cインターフェースよりも大きな価値がないことでした。「s / _ / :: / g」以外の違いはほとんどなく、C ++ユーザーが慣れている多くの機能は使用されませんでした(テンプレートによる自動型判別など)。 MPIフォーラムに参加し、MPI C関数への独自のC ++インターフェイスを実装している多くのC ++プロジェクトで作業している人として、MPIへのC ++インターフェイスの望ましい機能を知りたいと思います。私は何も約束しませんが、多くのユーザーのニーズを満たすスタンドアロンのMPI C ++インターフェイスの実装に興味があります。 はい、Boost :: MPI(http://www.boost.org/doc/libs/1_54_0/doc/html/mpi.html)に精通していますが、MPI-1機能のみをサポートしており、シリアル化モデルはRMAのサポートは非​​常に困難です。 私が気に入っているMPIへのC ++インターフェイスの1つは、Elemental(https://github.com/poulson/Elemental/blob/master/src/core/imports/mpi.cpp)のインターフェイスです。アプローチ。特に、MpiMapは本質的な問題を解決すると思います。
28 c++  mpi 

4
計算科学でC ++式テンプレートを使用する必要があるのはいつですか。また、使用しない*場合はありますか?
私がC ++で科学的なコードに取り組んでいるとします。同僚との最近の議論では、式テンプレートは本当に悪いことであり、gccの特定のバージョンでのみソフトウェアをコンパイルできる可能性があると主張されました。おそらく、この問題は、このDownfallのパロディの字幕で言及されているように、いくつかの科学的コードに影響を与えています。(これらは私が知っている唯一の例なので、リンクです。) ただし、SIAM Journal of Scientific Computingのこのペーパーのように、一時変数への中間結果の保存を回避することにより、パフォーマンスの向上をもたらすことができるため、式テンプレートが有用であると主張する人もいます。 C ++でのテンプレートメタプログラミングについてはあまり知りませんが、それが自動微分および区間演算で使用される1つのアプローチであることは知っています。それが式テンプレートについての議論になりました。パフォーマンスの潜在的な利点とメンテナンスの潜在的な欠点の両方(それが正しい言葉である場合)を考えると、計算科学でC ++式テンプレートをいつ使用し、いつ避けるべきですか?

5
コンピュータプログラミングの学部課程を教えるとき、どの言語を使用すればよいですか?
学部レベルの学生に「コンピュータープログラミング入門」というタイトルのコースを教えるつもりです。私は少し混乱しています。計算物理学では、科学者はC / C ++またはPythonまたはFortran、CUDAなどを使用します。何を使うべきですか?私はあなたがあなたの生活の中でいつでも新しいプログラミング言語を学ぶことができることを知っていますが、私はそれらをすべての基本的なプログラミング概念とOOP概念を後で詳しく説明するために賢明な選択です。

8
科学計算における最新のC ++ですか?
科学計算でのC ++の最新の機能(移動セマンティクス、STL、反復子、遅延評価など)の使用に特に対処する書籍、記事、またはブログ投稿、または一般に公開されている資料を探しています。何か提案できますか? これらの新機能により効率的なコードを記述しやすくなると思いますが、実際の例は見当たりません。私が読んだほとんどの参考文献は、C ++の一般的な使用に関するものであり、科学計算の例は含まれていません。そこで、C ++の最新機能を使用した科学計算コードの例(たとえば、数値レシピのレベルで、量産コードの例でなく、単に教育的な例である必要があります)を探しています。 これらの機能を使用するライブラリについては質問していないことに注意してください。科学計算でこれらの機能をどのように活用できるかを説明する記事/本/などについて尋ねています。

10
次元に依存しないコード用の高速で軽量なC ++テンソルライブラリ
ディメンションに依存しないコードをサポートするC ++テンソルライブラリを探しています。具体的には、加重合計の計算など、各ディメンション(最大3)に沿って操作を実行する必要があります。次元はテンプレートパラメータです(したがって、コンパイル時の定数です)。別の制約として、ライブラリは比較的軽量である必要があるため、Trilinos / PETScよりもEigen / Boostスタイルが必要です。 助言がありますか? 注:私はEigenを見ており、2Dテンソルに限定されていなければ、プロファイルにほぼぴったり合っていると思います。これに間違えられたら、私を修正してください。
20 c++  libraries  tensor 

6
C ++関数の数値エラーの分析
入力として複数の浮動小数点値(単一または二重)を受け取り、何らかの計算を行い、出力浮動小数点値(単一または二重)を生成する関数があるとします。私は主にMSVC 2008で作業していますが、MinGW / GCCでも作業する予定です。私はC ++でプログラミングしています。 結果に含まれるエラーの量をプログラムで測定する一般的な方法は何ですか?私は任意精度ライブラリを使用する必要があると仮定します:速度を気にしない場合、そのような最適なライブラリは何ですか?

5
並列科学計算ソフトウェア開発言語?
ゼロから並列科学計算ソフトウェアを開発したいです。どの言語から始めるべきかを考えてみたい。このプログラムは、txtファイルへのデータの読み取り/書き込みと、多くのLU分解およびスパース線形ソルバーの使用を伴う大量の計算を並行して実行します。私が考えていたソリューションの候補は、OpenMPまたはco-arrayを備えたFortran 2003/2008、openmp cilk +またはTBB、pythonを備えたC ++です。その他の文書化された提案は大歓迎です!私はC、Fortran、Javaを(この順序で)よく知っています。私はPythonでいくつかのスクリプトを作成しましたが、基本的なものです。 fortranは非常に高速ですが、保守や並列化が難しいことは知っています。私が好きなPythonなどの外部ライブラリを使用しない限り、C ++は遅いと言われていますが、フルスケールの産業レベルのソフトウェアを書くことは現実的ですか? ソフトウェアは、大量のデータを処理でき、科学計算で効果的である必要があります。パフォーマンスが重要です。 背景については、Fortranで書かれた動作するソフトウェアが既にあります。多くの人々が長年にわたって開発に関わっており、コードは本当に汚れています。コードの維持と並列化は悪夢であることが証明されており、代替案を考えています。 ペトロス

3
科学コード内の多くの定数、変数を扱うためのC ++ベストプラクティス
流れの中に存在する生物学的物質を使用して、流れをシミュレートするコードを開発しています。これには、いくつかの追加の生物学的モデルに結合された標準のナビエ・ストークス方程式が含まれます。多くのパラメーター/定数があります。 私は主要な計算を処理する関数を作成しましたが、私が抱えている問題は、これらの計算が依存する多数の定数/パラメーターです。関数に10〜20個の引数を渡すのは面倒です。 1つの代替方法は、すべての定数をグローバル変数にすることですが、これはC ++では嫌われていることは知っています。 関数への多くの入力を処理する標準的な方法は何ですか?構造体を作成し、代わりに渡す必要がありますか? ありがとうございました
17 c++ 

6
C ++テンプレートを使用した汎用およびメタプログラミングは、計算科学でどの程度有用ですか?
C ++言語は、テンプレートを介して汎用プログラミングとメタプログラミングを提供します。これらの手法は、多くの大規模な科学計算パッケージ(MPQC、LAMMPS、CGAL、Trilinosなど)に組み込まれています。しかし、全体的な開発時間と同等または適切な効率のための使いやすさの点で、CやFortranのような非汎用、非メタ言語を超える価値で、科学計算に実際に貢献したものは何ですか? 科学的な計算タスクを考えると、C ++テンプレートを介した汎用およびメタプログラミングは、よく知られているベンチマーク(コード行、人の努力など)によって測定される生産性、表現力、または使いやすさの向上を実証しましたか?それに対応して、ジェネリックおよびメタプログラミング用のC ++テンプレートの使用にはどのようなリスクが伴いますか?

2
Boost :: mpiまたは高性能科学アプリケーション向けのC MPI?
私がMPIで最も嫌いなのは、データ型(データマップ/マスク)を扱うことです。なぜなら、それらはオブジェクト指向のC ++にうまく適合しないからです。boost::mpiただし、WebサイトからはMPI 1.1のみをサポートしています。 boost :: mpiは、標準のメッセージパッシングインターフェイスに対するC ++フレンドリーなインターフェイスです。Boost.MPIは、Boost.Serializationライブラリを使用して、ユーザー定義型のMPIデータ型を構築できます。 boost::mpi本格的な科学コンピューティングの経験はありますか?お勧めしますか?問題(スケーリングの問題、コンパイラの問題、エラー、実装されていない機能、いくつかのmpi 2.2機能の必要性)がありましたか? boost::mpiC ++のMPI C実装を使用する代わりに使用についてコメントできますか?両方を組み合わせることができます(可能な場合はboost :: mpiを使用し、他の場所ではC-MPIを使用します)。 を使用して大きな科学的コードを知っていboost::mpiますか?
16 hpc  c++  mpi 

2
計算科学者が独自のバージョンのstd :: complexを実装する必要があるのはなぜですか?
ような計算科学における良好知らC ++ライブラリの多くの固有、Trilinos、及びdeal.IIは、標準C ++テンプレートヘッダライブラリオブジェクトを使用し、std::complex<>複雑な浮動小数点数を表現します。 ジャックPoulsonのでは答えデフォルトコンストラクタについての質問に、彼は彼が彼の独自の実装を持っていることを指摘std::complexしてエレメンタル「いくつかの理由のために」。それらの理由は何ですか?このアプローチの長所と短所は何ですか?

5
計算
関数の近くに有する特異点X = 0。以下のため:かかわらず、その特異性は、持ち上げることができる、X = 1、一つは持つべきであるF (X )= 1をので、 E 、X = Σ K = 0 のx Kf:x↦(ex−1)/xf:x↦(ex−1)/xf \colon x \mapsto (e^x-1)/xx=0x=0x = 0x=1x=1x = 1f(x)=1f(x)=1f(x) = 1 したがって (ex−1)/x=∑k=1x k − 1ex=∑k=0xkk!ex=∑k=0xkk! e^x = \sum_{k=0} \frac{x^k}{k!} ただし、形式(ex−1)/xはx=0で定義されていないだけでなく、その点の近くで数値的に不安定です。非常に小さいxのf(x)を評価するため(ex−1)/x=∑k=1xk−1k!(ex−1)/x=∑k=1xk−1k! (e^x - 1)/x = \sum_{k=1} \frac{x^{k-1}}{k!} (ex−1)/x(ex−1)/x(e^x-1)/xx=0x=0x = 0f(x)f(x)f(x)xxx数値的するには、Taylor展開、つまり前述のべき級数の切り捨てを使用できます。 Q:関数には名前がありますか?つまり、これは一般的な問題ですか?fff Q:この状況をうまく処理するC / C …
13 c++  c 

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