Sure, it's not very good for task parallelism (though some of the extensions that AMD is introducing for APUs are very interesting!) But if you've got an embarrassingly data-parallel problem, you can't beat its performance.
That performance is largely dependent on drivers + HW though, right?
Then again I'm used to mobile GPUs where any conditional statement used to cause the shader to be evaluated 2^n for each and the gathered at the end(aka forget about any branching).
For my 2c I'm a fan of Elixir + Rust, Rust has a nice C ABI that should make it easy to embed.
Maybe for highly SIMD stuff but it seems like pull in a bunch of baggage around GPUs, etc.
On the other hand it would force you to do your data partitioning right up-front(much like the SPUs on the PS3).