Open hikettei opened 1 year ago
We need to simplify the list of instructions needed for backend extensions:
A backend which is completely separated from the standard implementation can be established by implementing all of the following instructions:
;; Arithmetic
AddNode SubNode MulNode DivNode
ScalarAdd ScalarSub ScalarMul ScalarDiv
InverseNode
;; [TODO] should be reduced to =>
AddNode SubNode MulNode DivNode
;; Matrix Transformation
MoveTensorNode
MoveTensorNode but JITxxxBackend dedicated to arithmetic ops for fast permute computation.
;; Mathematical Functions
SinNode CosNode TanNode ...
;; Logical Operations
;; Neural Network specialized instructions
Im2ColNode
Col2ImNode
To put it bluntly, instructions needs to be reimplemented are divided to three types:
CFFI Interface Binding (generated by call-with-view)
JIT Backend Extension just following the instruction of solve-loop-order
Device-specific (Neural Network) operations
Our goal is: just 1000 line CUDA Extension
tutorial_jp.lisp
into Englishdeftrainer
usage should be much more documented, because it is unique and complicated.