Giter VIP home page Giter VIP logo

numo-lapack's People

Contributors

atul9 avatar himkt avatar kozo2 avatar masa16 avatar metanest avatar mrkn avatar naitoh avatar nicolasleger avatar sztheory avatar yoshoku avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

numo-lapack's Issues

size_tの使用に関して

intを使うことが多いと思われるような場所でsize_tを使っているのは意図的か?

LAPACKの関数名のプレフィックスのxyyのyyの部分が、実数型と複素数型で違う場合

プレフィックスのxyyのyyの部分が、GE(密配列一般)は実数型と複素数型で共通だが、
一部の関数では対応する関数の間でSYとHEのように共通でないものがあるが、どうするか?
(numpy/scipyでは複素数のほうに寄せている)

現状では、エントリとなるメソッド名など、共通な名前は複素数のほうに寄せ、実装のコード内で
テンプレートを使って分けられる部分については分けている。

na_ndloop3のインタフェース変更の可能性

NArrayの(内部?)APIであるna_ndloop3を使っているが、仕様がまだ固まっているとはいえない(とのこと、らしい)。
もし仮に変更があった場合にどう追従するか? 最後の手段としては現在のna_ndloop3のコピーを作ってそれを使う?

detでXgetrfに失敗する場合をフォローするか?

(今のところNumi::LAPACKでは、infoが非ゼロの場合のフォローを入れてない)
行列式(det)で、XgetrfによるLU分解に失敗している時のフォローを入れるか?
(numpyのdetではフォローがある)

作業領域はイテレーション間で共有させるのか?

linalgからの変更点として、eigenのworkなどの領域の確保と解放を、c_funcからc_iterの中のほうに移動してある。
イテレーションを並列化するような場合に、共有だと妨げになるのではないか、という考えからだが、これで良いのか?

スタイルの統一

変数の宣言順などをもう少しコードが溜まったら統一
(後から追加する時、どれを見ても参考になるように)

名前のLAPACK化

既存の matmul, solve, eigen について、名前をよりLAPACKの関数名に近い直接的なものに変更

テンプレート中とCコード中での型名のややこしさ

テンプレートとしては

ctype という名前は、C言語における型、という意味で

  • 単に ctype は dcomplex のようにテンプレートの展開対象の型になり
  • real_ctype は double のように、その型に対応する実数の型になる

Cコード中では

  • dtype テンプレートの展開対象の型(つまり、テンプレートでは ctype)
  • ctype テンプレートの展開対象に対応する複素数の型(テンプレートでは complex_type )
  • rtype テンプレートの展開対象に対応する実数の型(つまり、テンプレートでは real_ctype )

leading dimensionへの対応・APIなど

特に性能の点で重要なleading dimensionへの対応をどうするか?
LDAなどにはNArrayの実サイズを入れ、計算対象の部分行列のサイズをキーワード引数MとかNとかで渡す?
(NArrayのNA_LOOP_ITERの.stepはどういう値が入ってるのか?)

オプショナル引数のような、動作を切変える引数はどうやって渡したらよいか?

numpy.linalg では numpy.linalg.eigh(a, UPLO='L') のようにして、振舞にちょっとしたバリエーションが
あるためにオプショナルな引数がある関数がある。
似たようなものを Numo::Linalg で作ろうとすると、Numo::LAPACK の method_missing 中にある
ディスパッチ手続きの中で nary_mathcast を呼んで型チェックをしているため、そこでエラーになってしまう。

nary_mathcast の動作にも微妙に疑問があるかも?
( m(a, b, c) のように引数があった場合、a と b との結果を type に得るがそれを捨てて、a と c との結果を
返すのだが...?)

NRHSがある関数の仕様

gesvやgelsのような、引数にNRHSがある関数の仕様をどうするか
(現状、gesvでは入力のディメンションを見て特別扱い、gelsでは1固定、としている)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.