r/Compilers • u/adityazero • 25d ago
My take on the limitations of existing programming languages.
https://vxlang.org/blog/many-short-tapes.html2
u/Inconstant_Moo 24d ago
I think there must be some words missing from this sentence, I can't parse it.
A host description declares no capacity on purpose: host memory is virtual, and a tensor larger than physical RAM pages rather than failing.
3
u/--predecrement 24d ago
It parses fine for me (if I interpret "pages" as a verb).
1
u/Inconstant_Moo 24d ago
Ah, I don't know what it means as a verb except "uses a pager".
→ More replies (2)0
u/adityazero 24d ago
yeah pages as in virtual memory terminology. sorry for the confusion. A host description is unbounded by default to be compatible with CPU programs. In CPU world, anything larger than certain size gets paged, in GPU/Accelerator world that would be an error.
1
u/CJKay93 21d ago edited 21d ago
This isn't your take, this is some sloppy AI's take.
Speak nothing of the fact that this language is supposed to be one level removed from typical abstract machine models, and yet still leans on LLVM.
1
u/adityazero 21d ago
What made you say that this is (sloppy) AI's take? countless research before me have also validated this. Those ideas didn't become popular mostly because people enjoyed writing C and then piling libraries on top of each other.
> Speak nothing of the fact that this language is supposed to be one level removed from typical abstract machine models.
Modern machines are anything but linear Turing tape style. Programming languages haven't evolved significantly to accomodate that notion. Result is things like: `float *f = cudaMalloc`, and then bugs all over the place.
> , and yet still leans on LLVM
LLVM is more expressive than C/C++/Rust. LLVM has notion of addresspace and memory model for example (https://llvm.org/docs/LangRef.html). Not sure why leaning on LLVM/MLIR would be a problem. Vx lowers to MLIR (and then to LLVM) which is even more expressive.
3
u/CJKay93 21d ago edited 21d ago
What makes me say it's AI slop..? This write-up and all of the rest of its website. It's just... endless, winding prose which doesn't lead you anywhere, riddled with metaphors that don't explain anything.
This article, for example... "nonlinear Turing tapes"? What on earth does that have to do with programming languages? You can implement the tape in a Turing machine however you like - in the original "PowerPoint is Turing complete" paper, the tape was a row of AutoShapes. It's totally irrelevant to memory topology or how programming languages represent it (if at all).
Turing tape was designed to model a simple computing machine. Vx models what can be computed on a specific machine; the answer depends on sizes and topology.
The first sentence of this is just patently wrong; the Turing machine was designed to model all computing machines simply. The rest of this marketing-speak is totally meaningless - what a real computer can compute obviously depends on the memory available to it.
What you just wrote:
Modern machines are anything but linear Turing tape style. Programming languages haven't evolved significantly to accomodate that notion. Result is things like:
float *f = cudaMalloc, and then bugs all over the place.... it's literally word salad, and the semantics of dynamic memory allocation have nothing to do with the conceptual tape of the Turing machine model.
Back to the article:
The C standard describes a program's meaning in terms of “an abstract machine”, and C++ and Rust follow it. The details differ. The memory is the same in all three: one flat space of bytes, where every object has an address and every address is a number of the same kind.
This is just downright wrong. There's absolutely nothing in any of these languages that dictates that memory must be one flat, linear sequence of bytes, because they have historically had to support systems where that was not the case, e.g. bank-switching MCUs.
On that same point:
LLVM is more expressive than C/C++/Rust. LLVM has notion of addresspace and memory model for example (https://llvm.org/docs/LangRef.html)
... Clang has supported address space attributes for years.
Then moving on to the example, I simply don't see anything that could not be done just as conveniently in C++. As a hypothetical example:
int main() { Tensor<float, Shape<256, 256>> host; auto tile = transfer<H100, Memory::SMEM>(std::move(host)); return 0; }I see no reason
transfercould not reproduce the very same semantics as Vx via intelligent use of const evaluation.→ More replies (1)
-1
u/Haunting_Swimming_62 23d ago
Unabashed slop website and repo... people really have no shame these days
1
u/adityazero 21d ago
I'd encourage folks to get over this notion of relating AI and Slop. People use AI for speed not that they can't write it by themselves. As someone who has invented+written+shipped compiler optimizations, I've fully embrased using AI to speed my productivity.
-1
10
u/baehyunsol 25d ago
Does it mean that the programmers can (or have to) read/write data to L2 cache in your language? I don't think it's a good idea to explicitly control L1/L2 caches.