Previous | Next --- Slide 6 of 81
Back to Lecture Thumbnails
derrick

Something I'm trying to wrap my head around is why this concept of a DSL is different from say a library or APIs? Like for example, PyTorch as a library can go ahead and abstract away from a lot of the tasks of writing network layers and also making sure computation on GPU is fast with CUDA. But then, is PyTorch a DSL? Even Halide makes it seem like these are just more advanced APIs that are tailored to the task but I'm curious what the distinctions are to be made for these.

AnonyMouse

I also find it hard to distinguish between languages and APIs since we refer to Halide as a language but I'm pretty sure Kayvon said that it's technically just a C++ API with operator overloading. My guess maybe we refer to it as a language if its syntax/way it works is sufficiently different from the language it was written in? I've never used PyTorch but after googling "PyTorch code" I see the syntax looks almost identical to Python so maybe that's why it's a "library" and not a "language". Of course in this slide we're only considering "programming system" which I'm assuming could include both APIs and languages so the distinction might not matter that much after all.

Please log in to leave a comment.