[解決済み] Java行列演算ライブラリの性能?[クローズド]
質問
私たちは、実行時間が行列演算によって制限されるものを計算しています。 (興味があれば、以下にいくつかの詳細を示します。) この経験は次のような質問を促しました。
行列計算(乗算、逆行列など)のためのJavaライブラリの性能について、民間の経験はありますか? 例えば、以下のようなものです。
検索しても何も出てきません。
速度比較の詳細です。
Intel FORTRAN (ifort (IFORT) 10.1 20070913)を使用しています。 Apache commons math 1.2 matrix ops を使って Java (1.6) で再実装したところ、精度の桁数まですべて一致しました。 (私たちはJavaでそれをしたい理由があります。) (Java doubles, Fortran real*8)。 Fortranの場合。jvisualmのプロファイリングでは、RealMatrixImpl.{getEntry,isValidCoordinate}に多くの時間が費やされています(未発表のApache Commons math 2.0ではなくなっているようですが、2.0のほうが全然速いです)。 FortranはAtlas BLASルーチン(dpotrfなど)を使用しています。
もちろん、これは各言語のコードに依存する可能性がありますが、ほとんどの時間は等価な行列演算にあると信じています。
ライブラリを使わない他のいくつかの計算では、Javaはそれほど遅くなく、時にはずっと速いこともあります。
どのように解決するのか?
私の2セントを追加します。これらのライブラリをいくつか比較してみました。3000×3000の倍数の行列を自分自身と行列乗算しようとしました。結果は以下の通りです。
C/C++、Octave、Python、RでマルチスレッドのATLASを使用した場合、かかった時間は4秒程度でした。
JamaとJavaを使用した場合、所要時間は50秒でした。
ColtとParallel Colt with Javaを使用した場合、所要時間は150秒でした!
JBLASをJavaで使用した場合、JBLASはマルチスレッドのATLASを使用しているため、かかった時間は再び4秒程度となりました。
つまり、私にとっては、Javaのライブラリはあまり良いパフォーマンスを示さないことが明らかでした。しかし、もし誰かがJavaでコーディングしなければならないのであれば、JBLASが最適な選択肢となるでしょう。Jama、Colt、Parallel Coltは高速ではありません。
関連
-
エラーが報告されました。リソースの読み込みに失敗しました:サーバーは500(内部サーバーエラー)のステータスで応答しました。
-
Javaエラーメッセージがenclosingクラスでない
-
java.lang.NoClassDefFoundError: org.apache.jasper.el.ELContextImpl クラスを初期化できませんでした。
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
エラー java.util.NoSuchElementException
-
スレッド "main "での例外をEclipseで解決 java.lang.Error: 未解決のコンパイル問題、コンパイラとパッケージの不整合
-
この行に複数のマーカーがある - HttpServletResponseが型エラーに解決できない
-
eclipse で「アクセス制限: タイプ 'HttpServer' は API ではありません」というプロンプトが表示される。
-
アクセス制限です。タイプ 'Application' は API ではありません。
-
Enumとの組み合わせでswitchの使い方を一度覚えるために必要な定数式
-
JQuery DataTable 详解
-
javaでクラスを作成すると、enclosing classでないように見える
-
Eclipse起動エラー:javaは起動したが、終了コード=1を返した(ネット上の様々な落とし穴)
-
起動時にEclipseエラーが発生しました。起動中に内部エラーが発生しました。java.lang.NullPoin: "Javaツーリングの初期化 "中に内部エラーが発生しました。