I'd say OpenCL is a pretty good API, it's just that because it's in C and it allows for quite fine-grain control, it takes a bit of orchestration to get anything off the ground. If you want more convenience, there are a few wrappers for it, in various languages.
It's true that its ecosystem is sadly lacking.