962 points by nonmaskable 4 days ago | 402 comments | View on ycombinator
jacobgorm 3 days ago |
loup-vaillant 3 days ago |
What would be even cooler though would be for GPU vendors to start giving us the user manual. An I mean the real user manual, that explains how to use their piece of metal when all you have is that piece of metal. That means a precise description of the wire protocols, the data format of the buffers we send to & get from the GPU, the ISA of the cores we have access to, the relevant performance characteristics…
In other words, enough information to write a state-of-the-art driver for any OS. That would be cool.
dllu 3 days ago |
winwang 3 days ago |
lambdaone 3 days ago |
manyatoms 3 days ago |
revengerwizard 2 days ago |
Since I can write a simple compiler to target x64 machine code, it should be possible to write one to target my GPU.
Though, I'm certain that vendor lock is probably more profitable for them.
HexDecOctBin 3 days ago |
evaltoken 3 days ago |
jauntywundrkind 3 days ago |
michalsustr 3 days ago |
rvz 3 days ago |
Secondly, When an issue occurs with a kernel or you want to write your own custom kernel in Rust, now we need to diagnose if the problem came from either cuda-oxide (SIMT), Rust's side, CUDA or Tile (If you decide to choose the Tile track).
Another dependency into the list and course everything is open source except CUDA itself. So any issue that happens on the CUDA level, you are forced to wait for them to fix it.
adityazero 1 day ago |
lsofzz 3 days ago |
Thank you NVIDIA - for once (not twice though - you've given us nothing but despair for Linux+GPU).
Ericson2314 2 days ago |
With this system, how do we specify whether dependencies are needed to be compiled for the CPU, GPU, or both?
----
Technically I don't know really care whether it's multiple files or one, I just want to make sure we are not reinventing a shittier version of CFG. What they are providing looks to me like:
1. explicitly annotate some things as `cfg(GPU)` or ungated (both)
2. unlabeled means annotated `cfg(not(GPU))` by definitely
Put this way, this has nothing to do with GPUs, and just has to do with creating some crate-local CFG shorthanded. Great! Let's do that first, get a solid foundation, and then come back to whatever is remaining for CUDA Rust.
amelius 3 days ago |
nicebyte 3 days ago |
salsa_catsup 3 days ago |
the__alchemist 3 days ago |
Note: Cuda-oxide is similar to Cudarc's host component, but uses a rust-style kernel dialect. Advantage: Share structs between host and device. Disadvantage: Trading standard Cuda kernels for a new, WIP dialect.
I haven't tried the tile API yet; looking forward to it.
The last time I checked, Cuda Oxide was Linux only, and required Async; these are why I haven't tried it yet.
thetwentyone 2 days ago |
claiir 3 days ago |
Damn even Nvidia is putting out fully Claude-written articles.
Swiffy0 3 days ago |
LarsDu88 3 days ago |
jtfrench 3 days ago |
bt1a 3 days ago |
Danox 3 days ago |
Driftbench 3 days ago |
undefined 2 days ago |
singularity2001 3 days ago |
@fast def calc(x,y):pass
soleveloper 2 days ago |
If so, that's really big.
And to add the Next natural strp - custom codegen for simulating gpu compute and memory without Nvidia gpu.
m00dy 3 days ago |
shmerl 3 days ago |
This is more promising: https://github.com/Rust-GPU/rust-gpu/
calini 3 days ago |
kalikingkorea 3 days ago |
mococa 3 days ago |
jtrn 2 days ago |
nonmaskable 4 days ago |
aquavoplumbing 3 days ago |
westurner 3 days ago |
ReshamJoshi 4 days ago |
orangelimetea 2 days ago |
mococa 3 days ago |
dunlin 3 days ago |
nullbio 3 days ago |
The best way to program GPUs is face up to the reality that they are not the same machine as the CPU, write your kernels in separate files, and launch them manually, like in Metal, OpenCL, and D3D12, etc. These days we even have DSLs like Triton that make kernel writing much more ergonomic than anything you would hope to achieve in Rust.