back

by raphlinus·4y ago·view on hn ↗
> (you can’t even transpile OpenCL C 1.2 to it fully, with quite heavily limited pointers…)

Is that still true as of Vulkan 1.3? We have buffer device address now, which I think counts as a real pointer.

> Metal has the best GPGPU story of the graphics APIs

I wish I could agree wholeheartedly with this. Yes, it's wonderful in many ways, but the lack of device-scope barriers means an entire class of advanced coordination patterns is unavailable.

Of course, you're talking about transpiling OpenCL C 1.2, which I consider incredibly primitive and limited compared to modern compute shaders: no subgroups, no device-scope barriers, no 16 bit float.

1 comments
> Is that still true as of Vulkan 1.3?

In practice every GPU vendor that mattered already implemented it to 1.2, not much of a change on that front.

The core problem, that pointers are an abstract type with no known compile-time size remains.

> but the lack of device-scope barriers means an entire class of advanced coordination patterns is unavailable.

(And OpenCL on Apple Silicon seems to have the opposite problem, stuff being promoted to device wide barriers when it should not be…)