タグ付けされた質問 「programming-paradigms」

14
科学研究コードの単体テストを書くことは価値がありますか?
自動化された一連の回帰テストを含む、完全なプログラムを検証するテスト(収束テストなど)を使用することの価値を強く確信しています。プログラミングの本を読んだ後、ユニットテスト(つまり、単一の関数の正確性を検証し、問題を解決するためにコード全体を実行するテストではない)を作成する必要があるというしつこい気持ちになりました。。ただし、単体テストは常に科学的コードに適合しているとは限らず、結果的に人為的または時間の無駄に感じます。 研究コードの単体テストを作成する必要がありますか?

9
関数型プログラミングと科学計算
これがあいまいな質問であればおIびしますが、ここに行きます: 過去数年間、関数型プログラミングはソフトウェアエンジニアリングコミュニティで多くの注目を集めています。多くがScalaやHaskellなどの言語の使用を開始し、他のプログラミング言語やパラダイムよりも成功していると主張しています。私の質問は、高性能コンピューティング/科学コンピューティングの専門家として、関数型プログラミングに興味を持つべきですか?このミニ革命に参加すべきでしょうか? SciComp作業領域における関数型プログラミングの長所と短所は何ですか?

7
コードを将来ペタスケールのマシンで実行したい場合、どのプログラミングパラダイムに投資すべきですか?
top500の調査から、業界がプロセッシングコアの指数関数的な増加に向かっていることは明らかです。最大のスーパーコンピューターはすべてノード間の通信にMPIを使用しますが、ノード上の並列処理の明確な傾向は見られませんが、単一のMPIプロセスを各コアに自動的にマッピングする最も単純な(ただし、必ずしも効率的ではない)コンパイラ、OpenMP、pthreads、CUDA、Cilk、およびOpenCLからの並列化。 私は、世界最大のスーパーコンピューターで使用される可能性のあるコードを維持および開発する科学者グループの1人です。開発者の時間が限られていると仮定して、世界で最も強力なマシンのパフォーマンスを活用できるように、自分自身を将来的に保証するにはどうすればよいですか プロセス相互接続アーキテクチャについて、どのような仮定を立てるべきですか?メニーコア時代に入ると、どのようなパラダイムが苦しむでしょうか?パーティション化されたグローバルアドレス空間の言語は、ペタスケールのマシンで「生産中」に利用できますか?

2
OpenCLの数学ライブラリ?
科学コードでOpenCLを使用しようとした人からの情報を探しています。誰もが(最近)ViennaCLを試しましたか?もしそうなら、それはどのようにカスプと比較されますか? 何についてOCLTools?約束どおりですか?もしそうなら、それはOpenCLで数学カーネルを書き始めるための実行可能な方法でしょうか?

6
OpenCLの将来?
OpenCLプログラミングパラダイムは、異種コンピューティング向けのロイヤリティフリーのオープン標準になることを約束します。OpenCLに基づいたソフトウェアの開発に時間を投資すべきですか?長所短所?

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

3
アルゴリズムパラメータを簡単に変更するために、どのようなプログラミング戦略を使用できますか?
科学的アルゴリズムの開発は非常に反復的なプロセスであり、多くの場合、実験デザインの一部として、またはアルゴリズムのパフォーマンスの調整の一環として変更する多くのパラメーターを変更する必要があります。これらのパラメーターを構造化して、反復間で簡単に変更したり、新しいパラメーターを簡単に追加したりするには、どのような戦略をとればよいですか?

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

5
CFDライブラリの開発用のC ++またはPython
Computational Continuum Mechanicsの一般的な(有限ボリューム、フェム、dg)ライブラリをコーディングする2つのアプローチの利点/欠点は何でしょうか?これは私が今物を見る方法ですので、あなた自身の経験を提供してください、そして、私のために私を炎上させないでください:): 1)C ++: ジェネリックプログラミング、仮想関数、オーバーロード、速度...:あらゆるものを構築するために利用できるすべてのジャンル+ OOPツール 低レベルのライブラリのほとんどが利用可能(Python向けのような広範な科学技術ライブラリ開発はありません) 2)Python +並列コンピューティング用ラッパー(pyOpenCLなど) さまざまな種類の膨大な量のサポートライブラリ あなたが思うことをコーディングしてください:実装は本当に速く行われます 遅い実行時間 さまざまな方法をサポートし、複雑なジオメトリと問題を処理するフレームワークをコーディングしたい場合、何を選択しますか?その理由は何ですか?

2
GMPの大規模アレイ
mpz_t A [100000]という大きな配列を使用したい場合、コンパイル中に「セグメンテーション違反(コアダンプ)」が発生しました。これを解決する簡単な方法はありますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.