Deep Dive๏
For general users of the framework, who are mainly concerned with learning how to use Ivy, then the Design section is the best place to start ๐
This deep dive section is more targeted at people who would like to dive deeper into how Ivy actually works under the hood ๐ง
Going through the sections outlined below will get you right into the weeds of the framework ๐ฑ, and hopefully give you a better understanding of what is actually going on behind the scenes ๐ฌ
Itโs best to go through the sub-sections from start to finish, but you can also dive in at any stage! Weโre excited for you to get involved! ๐ฆพ
A quick tour through the codebase ๐
(b) Function Types
Primary, compositional, mixed and nestable functions ๐งฎ
(c) Backend Setting
How the backend is set, and what this means for each function type โ๏ธ
How functions are dynamically wrapped at runtime ๐
(e) Arrays
Different types of arrays, and how theyโre handled ๐ข
(f) Containers
What the
ivy.Container
does ๐๏ธ(g) Data Types
How functions infer the correct data type ๐พ
(h) Devices
How functions infer the correct device ๐ฝ
(i) Inplace Updates
How the
out
argument is used to specify the output target ๐ฏ(j) Formatting
How the code is automatically formatted ๐
How to add the correct function arguments ๐
When to create submodule-specific helper functions, and how to use them ๐ง
(m) Docstrings
How to properly write docstrings ๐
How to add useful examples to the docstrings ๐ฏ
(o) Array API Tests
How weโre borrowing the test suite from the Array API Standard ๐ค
(p) Ivy Tests
How to add new tests for each Ivy function โ
(q) Ivy Frontends
How to implement frontend functions โก๏ธ
How to add new tests for each frontend function โก๏ธโ