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) Navigating the Code ๐งญ
A quick tour through the codebase
(b) Function Types ๐งฎ
Primary, compositional, mixed, and nestable functions
(c) Superset Behaviour โ
Ivy goes for the superset when unifying the backend functions
(d) Backend Setting โ
How the backend is set, and what this means for each function type๏ธ
(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) Function Wrapping ๐
How functions are dynamically wrapped at runtime
(k) Formatting ๐
How the code is automatically formatted
(l) Ivy Lint ๐งน
Ivyโs Custom Code Formatters
(m) Function Arguments ๐
How to add the correct function arguments
(n) Docstrings ๐
How to properly write docstrings
(o) Docstring Examples ๐ฏ
How to add useful examples to the docstrings
(p) Array API Tests ๐ค
How weโre borrowing the test suite from the Array API Standard
(q) Ivy Tests ๐งช
How to add new tests for each Ivy function
(r) Ivy Frontends โก
How to implement frontend functions
(s) Ivy Frontend Tests ๐งช
How to add new tests for each frontend function
(t) Exception Handling โ
How to handle exceptions and assertions in a function
(u) Continuous Integration ๐
Ivy Tests running on the Repository
(v) Gradients ๐
Everything about our Gradients API
(w) Operating Modes ๐งฎ
Everything about modes Ivy can operate in, along with their purposes
(x) Building the Docs Pipeline ๐
How are we building our docs