桜を見る会のレポートを紹介していると、よほどの暇人かと思われてしまいそうだが、実際に行った人じゃないとわからない生々しい話を書いている人もいる。
タグ検索の該当結果が少ないため、タイトル検索結果を表示しています。
※ 2020-09-06: 「アライメントの問題(C++17以上かつEigenバージョン3.4以上)」を追加。 線形代数ライブラリ(行列演算や行列分解などを行うライブラリ)には、有名どころだとPythonではNumpyがあり、C++ではEigenがあります。Eigenは強力なライブラリですが、気をつけなければいけないところがいくつかあるのでまとめます。 Eigenの特徴 ヘッダーオンリーでテンプレートが多用されており、汎用性が高い Expression Template(式テンプレート)を用いた遅延評価で高速(不要な計算を自動で除外する) 自動でSIMDやループ展開が適用され高速 静的にサイズを指定した行列はヒープを一切使用しない 疎行列のサポートがある 密行列・疎行列それぞれ様々な行列分解アルゴリズムが実装されている 以上のように、非常に高速で強力なライブラリですが、高速性のトレードオフ
Eigen は高速な行列計算を行うための C++ ライブラリで、ヘッダのみで構成される純粋なテンプレートライブラリです。 現時点では Swift は C++ と直接連携できないので、Swift から Eigen を使うには C または Obj-C でブリッジする必要がありますが、 Linux でも使えるようにするには Obj-C は選択肢から外れます。 また Eigen はテンプレートライブラリなので、「Swift 側の Wrapper 型も係数に関して generic にしたい」(× EigenIntMatrix, EigenDoubleMatrix, … / ○ EigenMatrix<Int>, EigenMatrix<Double>, …)という欲求も生まれます。 この LT では、両立が難しそうな二つの課題: Eigen を Swift から C を経由して使うこと Wrappe
C++で固有値などの行列計算を行いたい場合の標準的なライブラリのにEigenというものがある。 Eigen main page documentation header onlyのライブラリでインクルードパスを指定するだけで使い始めることができる。ここではその初歩的な使い方を簡単に紹介する。 Installation 先ほどのメインページから最新のソースコードをダウンロードしてきて展開するだけ eigen-eigen5a0156e40feb というディレクトリができるが、これを適切なパスに配置する。 Macの場合 brew install eigen でインストールされる。"/usr/local/include/eigen3"以下にインストールされるので、ここをincludeパスに加える必要がある。 Getting Started #include <iostream> #include
EigenはC++で書かれた線形代数ライブラリである。特徴の一つとして、式の実装にtemplate機能を活用している点があり、これにより 遅延評価 (lazy evaluation) を実現している。遅延評価を適切に使うことで、計算コストを削減できることがある。 Eigen Eigenの遅延評価については公式ドキュメントの次のページが詳しいため、本記事では厳密性・網羅性よりも概要の理解しやすさを重視する。 Eigen: Lazy Evaluation and Aliasing なお、以下のコード例では using namespace Eigen; が暗黙的に実行されているとする。 Eigenにおける遅延評価 演算の返り値の型に注目する 行列を表す MatrixXd 型の変数 a があり、その転置を表現するために MatrixXd a = ...; ... = a.transpose();
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く