-
Notifications
You must be signed in to change notification settings - Fork 392
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
Cube/doc/readme #1904
Cube/doc/readme #1904
Conversation
a05b723
to
d405ea6
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are a few fixes to do, the end is not complete, and we should have a section on element types
crates/burn-cube/README.md
Outdated
|
||
## TL;DR | ||
|
||
With CubeCL, you can use Rust to program your GPU, any GPU! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sentence is not syntatically correct
crates/burn-cube/README.md
Outdated
The goal of CubeCL is to ease the pain of writing highly optimized compute kernels that are portable across hardware. | ||
There is currently no adequate solution when you want optimal performance while still being multi-platform. | ||
You either have to write custom kernels for different hardware, often with different languages such as CUDA, Metal, or ROCm. | ||
To make it possible, we created a Just-in-Time compiler with three core features: **automatic vectorization**, **comptime**, and **autotune**! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To make it possible: not clear it concerns what at this point.
crates/burn-cube/README.md
Outdated
To make it possible, we created a Just-in-Time compiler with three core features: **automatic vectorization**, **comptime**, and **autotune**! | ||
|
||
These features are extremely useful for anyone writing high-performance kernels, even when portability is not a concern. | ||
They improve code composability, reusability, and maintainability, all while staying optimal. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe testability
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also insist more on "Write kernel code like software, with software engineering good practices"
crates/burn-cube/README.md
Outdated
|
||
## Design | ||
|
||
CubeCL is designed around - you guessed it - Cubes! More precisely, cuboids since not all axes are forced to be the same size. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
More specifically, it's based on cuboids, because not all axes are the same size.
Using because will help differentiating from next paragraph starting with since
crates/burn-cube/README.md
Outdated
_A cube is composed of units, so a 3x3x3 cube has 27 units that can be accessed by their positions along the x, y, and z axes. | ||
Similarly, an hyper-cube is composed of cubes, just as a cube is composed of units. | ||
Each cube in the hyper-cube can be accessed by its position relative to the hyper-cube along the x, y, and z axes. | ||
Hence, an hyper-cube of 3x3x3 will have 27 cubes. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
a hyper-cube
crates/burn-cube/README.md
Outdated
In this example, the total number of working units would be 27 x 27 = 729._ | ||
|
||
<details> | ||
<summary>Topology Equivalent 👇</summary> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Equivalence
crates/burn-cube/README.md
Outdated
There are some limitations right now, some that could be addressed later on, but some that will stick around by design. | ||
|
||
* Using functions with generic requires the generics to be specify at all time. | ||
Since we don't have access to symbols during the procedure macro, we don't have the type information and aren't able to properly do type inference |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Now we have an idea how to fix it
crates/burn-cube/README.md
Outdated
## Resources | ||
|
||
Check out our matmul example, which autotunes between a simple vectorized version, a tiled algorithm and one based cooperative matrix. | ||
Clone the project and run the example locally to see how autotune fares and your own device. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Still todo
crates/burn-cube/README.md
Outdated
Check out our matmul example, which autotunes between a simple vectorized version, a tiled algorithm and one based cooperative matrix. | ||
Clone the project and run the example locally to see how autotune fares and your own device. | ||
|
||
If you have any questions or want to contribute, don't hesitate to join the Discord. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Which discord lol
First draft of the cubecl readme.