Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[API Enhancement] Project Simplification for those who is new to Common Lisp #17

Open
1 of 5 tasks
hikettei opened this issue Jul 4, 2023 · 1 comment
Open
1 of 5 tasks
Labels
documentation Improvements or additions to documentation

Comments

@hikettei
Copy link
Owner

hikettei commented Jul 4, 2023

  • TODO
    • Step-by-step tutorial for those who aren't familiar with Deep Learning.
    • Tutorial written in Jupyter Notebook
    • Translate tutorial_jp.lisp into English
    • Visualized Explanation of cl-waffe2 (should i make a slide?)
    • I think deftrainer usage should be much more documented, because it is unique and complicated.
@hikettei hikettei added the documentation Improvements or additions to documentation label Jul 4, 2023
@hikettei hikettei changed the title Adding Examples/Documents Various discussions about cl-waffe2 Documentations and Tutorials Aug 20, 2023
@hikettei hikettei changed the title Various discussions about cl-waffe2 Documentations and Tutorials Discussions about cl-waffe2 Documentations and Tutorials Aug 20, 2023
@hikettei
Copy link
Owner Author

hikettei commented Oct 7, 2023

We need to simplify the list of instructions needed for backend extensions:

Cheat sheet for backend extension

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)

    • BLAS APIS (axpy, gemm etc...)
    • CFFI Interface like cl-bmas
  • JIT Backend Extension just following the instruction of solve-loop-order

    • Example: JITCPUTensor
    • almost 300 line JIT compiler works enough, just used to optimize the layout of memory. Example: JITCPUTensor
  • Device-specific (Neural Network) operations

    • e.g.: Im2Col, Col2Im ReLUNode(optional)

Our goal is: just 1000 line CUDA Extension

@hikettei hikettei changed the title Discussions about cl-waffe2 Documentations and Tutorials [API Enhancement] Project Simplification for everyone Oct 7, 2023
@hikettei hikettei changed the title [API Enhancement] Project Simplification for everyone [API Enhancement] Project Simplification for those who is new to Common Lisp Oct 7, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

No branches or pull requests

1 participant