webdnn
webdnn copied to clipboard
memorylayoutによるconcatの省略
条件
- concatがinplace
- concatするaxisがメモリオーダーで一番外側
- memory layoutが隣接している
が揃えばconcatは省略できる そのためには
- frontend側でチャンネルオーダに関するattributeを追加する
- backendのAllocaterにも最適化ルールを拡張できる機構を作る
が必要
任意のレイアウトを許容するとbackendが大変そうなので、レイヤーごとに許容するレイアウトを表明できるようにした方が良い?
concat直前のconvと、それ以外のconvで最適な入出力の並びが違う可能性がある。 転置レイヤーのようなものが出力にくっつくことで対応可能になりそう
オーダー変更レイヤーは必要そうですが、今回の件についてはMemoryLayoutの最適化を施すかどうかはbackend依存なため、frontend側でオーダー変更レイヤーを追加する必要はないのではないでしょうか
ということは、あるレイヤーの入出力variableのオーダが違っていたら、それをbackend側で察知して挙動を変える感じですかね
それが良いと思います。 もしくは、 計算を行う上で必要不可欠なオーダー変更 はfrontend側で追加し、 メモリレイアウトの最適化などに伴う冗長なオーダー変更 はbackend側で追加、とかもありかもしれません。