採択 LT(5分)

Using Eigen from Swift (via C) iOSDC Japan 2021

5
taketo1024 さのたけと taketo1024

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 を経由して使うこと
  • Wrapper の行列型を generic に実装すること

の解決法を紹介し、私が数学の研究のために行っているホモロジー群の計算を高速化した事例を紹介したいと思います。