タグ付けされた質問 「libraries」

他のプログラムで使用および再利用できるように、一連の抽象データ型、数学関数、または他の高レベルの分析アルゴリズムを実装する関連プログラミング関数のコレクション。

17
標準の数値アルゴリズムにライブラリを使用しないのは一般的ですか?
GSLのような科学計算ライブラリでは、多くの数値アルゴリズム(積分、微分、補間、特殊関数など)を利用できます。しかし、これらの関数の「手巻き」実装を使用したコードをよく目にします。必ずしも一般に配布することを目的としない小さなプログラムの場合、計算科学者の間では、必要なときに数値アルゴリズム(Webサイト、数値レシピなどからコピーまたは転記すること)を自分で実装するのが一般的ですか?もしそうなら、GSLのようなものへのリンクを避ける特別な理由がありますか、それとも他のものよりも単なる「伝統」ですか? 私はコードの再利用が大好きなので、可能な場合は既存の実装を使用することをお勧めします。しかし、科学的な計算では一般的なプログラミングよりも原理の価値が低いという理由があるのではないかと思っています。 言及するのを忘れました:ライブラリの使用に明確な利点(実行速度)があるPythonのような言語とは対照的に、CとC ++について具体的に尋ねています。
54 libraries  c 

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

5
ATLASとMKLのパフォーマンスの違いは?
ATLASは無料のBLAS / LAPACKの代替品であり、コンパイル時にマシンに合わせて調整されます。MKLは、Intelが出荷する商用ライブラリです。パフォーマンスに関しては、これら2つのライブラリは同等ですか、それともMKLが一部のタスクで優位を占めていますか?もしそうなら、どれ?

2
スパース線形システムを解くためのライブラリ
スパース線形連立方程式を解くさまざまなライブラリがありますが、その違いを理解するのは難しいと感じています。 私が知る限り、3つの主要なパッケージがあります: Trilinos、PETSc、およびIntel MKLです。それらはすべてスパース行列を解くことができ、すべて高速です(私が知る限り、それらのいずれについても堅実なベンチマークを見つけることができませんでした)。それらはすべて並列化可能です。私が見つけることができないのは違いです。 それでは、そこにあるさまざまなスパース線形システムソルバーの違いは何ですか?

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

4
構造化グリッドアダプティブメッシュリファインメント用の汎用ライブラリはありますか?
この投稿を改善したいですか?引用や回答が正しい理由の説明など、この質問に対する詳細な回答を提供します。十分な詳細のない回答は、編集または削除できます。 アダプティブメッシュリファインメント(AMR)は、PDEの数値解法で大きく変化する空間スケールの問題に対処するための一般的な手法です。構造化グリッド上のAMRにはどのような汎用ライブラリが存在しますか?理想的には、ライブラリがアダプティブメッシュのみを処理し、物理学と離散化(有限差分/ボリューム/要素)を提供する、PETScの精神にあるものが欲しいです。 理想的なライブラリは モジュラー:コードの記述方法やデータ構造の量が多すぎる 一般:私が使用している離散化の種類は気にしません 効率的:オーバーヘッドがかかりすぎない 並列で拡張性の高い これらの基準のサブセットのみに適合するライブラリは、引き続き関心の対象となります。 補遺:Donna CalhounのAMRパッケージの広範なリストは知っていますが、上記の基準に適合するパッケージはどれか(もしあれば)わかりません。だから、私は主に、それらの用語でどのように評価するかについて、1つまたは(より良い)さらに多くのパッケージで実際の経験を持っている人々から聞くことに興味があります。

2
どのライブラリがマルチグリッドを高度にサポートしていますか?
マルチグリッドを使用していくつかの固有値とベクトルを計算することを計画していますが、PETScがマルチグリッドを高度にサポートしていることに気付きました。PETScのドキュメントには、PETScのこの部分はすぐに交換されるため、使用しないでくださいと書かれています。 マルチグリッドを高度にサポートしているライブラリはどれですか?また、PETScが新しいマルチグリッドサポートをリリースするのはおよそどのくらいですか?

1
オープンソースの逆ベースのマルチレベルILU実装はありますか?
マルチレベル逆ベースのILUプレコンディショナーのシリアルパフォーマンス、特に異種Helmholtzのシリアルパフォーマンスには非常に感銘を受けましたが、オープンソースの実装が見つからないことに驚きました。特に、ILUPACKはバイナリを学者が自由に利用できるようにしますが、ソースコードをリリースしているようには見えません。 誰も実装をオープンソース化していないというのは本当ですか?

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

1
C ++でのMathematicaのQuasiMonteCarlo統合の置き換え
QuasiMonteCarloメソッドを使用して3次元または4次元で積分を実行するMathematicaプログラムがあります。問題は、これらの計算の一部がHPCクラスターで利用可能な最大ジョブ時間で完了できない点まで、実行するのに非常に長い時間がかかることです。だから私はプログラムをC ++で書き直すことを考えています。 GSLのドキュメントを見て、準ランダムシーケンスと通常のMC統合に関するセクションはありますが、それらをまとめるものは見当たりません。また、1つか2つのGoogle検索では、広く信頼されている実装のように見えるものは何も見つかりませんでした。C ++でのQMC統合の十分にテストされた実装のオプションは何ですか? 一貫性を保つために、Mathematicaが実装するHalton-Hammersley-Wozniakowskiメソッドに近いものを使用することをお勧めします(オプションの場合)。

3
効率的な三重対角行列アルゴリズムの実装
暗黙的な数値スキームを使用して物理的な問題を解決しています。これは、三重対角行列を持つ線形方程式を解くことにつながります。私はウィキペディアからこのアルゴリズムをコーディングしました。このタイプの方程式を最適化された方法で解くことができる効率的なライブラリがあるのだろうか。重要な注意点は、システムパラメーターが変更されたときにのみマトリックス自体が変更されることです。そのため、素晴らしいパフォーマンスボーナスを得るために、いくつかのアルゴリズムステップを事前に計算する機会がありました。C ++を使用しています。

3
C ++の並列動的グラフライブラリを探しています。
こんにちは、scicompコミュニティ、 NetworkX(Python)、JUNG、YFiles(Java)などのフレームワークを使用して、グラフアルゴリズムの分野で働いてきました。現在、並列コンピューティングと高性能コンピューティングの分野に参入しています。新しいプロジェクトでは、次の機能を備えたC ++グラフライブラリを探しています。 アルゴリズム開発を可能にする直感的なインターフェースを備えています 動的な操作をサポートします。たとえば、任意のノード/エッジの挿入と削除 並列化をサポートします。たとえば、マルチスレッドで発生する問題からプログラマを保護します メモリオーバーヘッドが低く、高性能コンピューティングに適しています いくつかのライブラリを提案し、これらの基準と賛否両論について議論してください。

1
三角格子上のフーリエ変換ライブラリ
2D三角形または六角形格子での離散フーリエ変換(DFT)の合理的に高速な実装を探しています。 このような実装(特にPythonまたはMathematicaから簡単に使用できる実装)へのポインタと、この問題を多くのシステムに既に組み込まれている1D DFTに減らす方法の説明に感謝します。

4
C / C ++でルンゲクッタ8次を探しています
Windowsマシンを使用して、C ++で記述された天体力学/宇宙力学アプリケーションでルンゲクッタ8次法(89)を使用したいと思います。したがって、誰もが文書化されて自由に使用できる優れたライブラリ/実装を知っているのでしょうか?予想されるコンパイルの問題がない限り、Cで記述されていても問題ありません。 これまでのところ、このライブラリ(mymathlib)を見つけました。コードは問題ないようですが、ライセンスに関する情報は見つかりませんでした。 あなたが知っている可能性があり、私の問題に適した選択肢のいくつかを明らかにすることで私を助けてくれますか? 編集: 私が思ったほど多くのC / C ++ソースコードが利用できないことがわかります。したがって、Matlab / Octaveバージョンも問題ありません(まだ自由に使用できる必要があります)。

2
科学計算におけるタスクベースの共有メモリ並列ライブラリ
近年、何らかの形式の汎用データ駆動型共有メモリ並列処理を提供するいくつかのライブラリ/ソフトウェアプロジェクトが登場しています。 主なアイデアは、明示的にスレッド化されたコードを書く代わりに、プログラマーがアルゴリズムを相互依存タスクとして実装し、共有メモリーマシン上の汎用ミドルウェアによって動的にスケジュールされるというものです。 そのようなライブラリの例は次のとおりです。 QUARK:もともとはMAGMA並列線形代数ライブラリ用に設計されましたが、並列高速多重極法にも使用されているようです。 Cilk:もともとはMITベースのプロジェクトで、現在Intelでサポートされています。Cの言語/コンパイラー拡張として実装され、Cilkchessコンピューターチェスソフトウェアで使用され、FFTWで実験的に使用されました。 SMPスーパースカラー:バルセロナスーパーコンピューティングセンターで開発されました#pragma。拡張機能に基づいて、多くの点でCilkに似ています。 StarPU:GPUを含むいくつかの異なるアーキテクチャ用にコンパイルおよびスケジュールできる、同様のライブラリベースの「コードレット」。 OpenMPタスク:バージョン3.0以降、OpenMPは非同期にスケジュールできる「タスク」を導入しました(仕様のセクション2.7を参照)。 Intelのスレッディングビルディングブロック:C ++クラスを使用して非同期タスクを作成および起動します。チュートリアルのセクション11を参照してください。 OpenCL:マルチコアでのタスクベースの並列処理をサポートします。 これらのライブラリ/言語拡張の内部動作と特定の問題への適用について説明している文献はたくさんありますが、科学計算アプリケーションで実際に使用されている例はほとんどありません。 だからここに質問です:誰かが共有メモリ並列処理のためにこれらのライブラリ/言語拡張、または同様のものを使用する科学計算コードを知っていますか?

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