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) Gradients 🔁
Everything about our Gradients API
(v) Operating Modes 🧮
Everything about modes Ivy can operate in, along with their purposes
How are we building our docs