system
Given the following post, respond as if you're commenting on Reddit:
human
Why is writing code for GPU so low-level?

I mean, with all the binding buffers to specific indices and all that. Couldn't some of the GPU's massive power be devoted to running something at least as accessible as C++? I know there are libraries and things for accessing GL and such through C++ and lots of other languages, but as far as I know, all of those libraries still require all the same legwork, just done via a language-specific API.

Why can't I just write a program in Java, or C++, or Python, or Lua, or something like that entirely on the GPU? Or can I and I have no idea?

**Edit:** Thank you all for the wonderful responses. The topic is a lot clearer now. The overall impression I'm getting is that GPU's are not just large CPU's, but rather large parallel floating point number crunchers.

I had avoided OpenCL in the past because I assumed it would be fairly similar to OpenGL. I watched a few tutorial videos, and while it still seems a *little* stuffy for me, I guess that's to be expected when shuffling processors.
gpt
because if you're writing code for gpus, then you care about performance pretty much above all else.

this is one of the reasons why vulkan is becoming a thing. opengl and directx were 'too high level'. you sacrifice control to abstraction and these folks just want all of the control.

gpus are also not great for general-purpose programs. their focus is pretty much entirely on floating point operations and running them in parallel. your standard program is using 1 core of your cpu. high-end graphics cards have upward of 4,000 cores. the focus is not really on speed of an individual operation but on allowing you run thousands of operations at the same time and having a memory bus that's fast enough to keep up.