Hacker News new | ask | show | jobs
by Lichtso 2039 days ago
So far there have been two ways to to heavy compute tasks on GPUs: CUDA (Nvidia only) and OpenCL (all vendors). Nvidia invested a lot in software and toolchains to make CUDA the go to option for many projects (especially in the machine learning community). Meanwhile OpenCL is falling apart and sees less and less support and updates.

However, the Vulkan API which is also supported by most vendors (except Apple where you have to use a compatibility layer called MoltenVK) is gaining traction in the compute sector. If you trust the benchmarks, then this library here is showing that you can get a similar performance out of Vulkan compute than what you would expect from CUDA. It is just that this library only provides a very small fraction of the features of what the CUDA ecosystem does, so the Vulkan compute ecosystem still has a lot catching up to do.

Edit: In case it is not obvious from the title, the library is used to calculate the https://en.wikipedia.org/wiki/Fast_Fourier_transform

2 comments

> Meanwhile OpenCL is falling apart and sees less and less support and updates.

I think this view is too pessimistic. In fact, support either gets better (Intel oneAPI, Microsoft CLonD3D12, AMD ROCm, Mesa NIR-clover, …) or is unchanged but still maintained (NVIDIA). Moreover, Khronos noticed that OpenCL 2.x was a dead end and was to start over from a point that all vendors could agree on.

> Moreover, Khronos noticed that OpenCL 2.x was a dead end and was to start over from a point that all vendors could agree on.

I don't know much about OpenCL and this statement confused me. Are you saying that OpenCL 2.x is dead, which seems to contradict what you just said? Unless there's a newer version that isn't dead - is there an OpenCL 3.x? Or is Kronos a code name for OpenCL 3?

There is an OpenCL 3.0. The changes were basically "make everything in OpenCL 2.0 that was not widely implemented optional."

> Looking to reset the ecosystem, as the group likes to call it, today Khronos is revealing OpenCL 3.0, the latest version of their compute API. Taking some hard earned (and hard learned) lessons to heart, the group is turning back the clock on OpenCL, reverting the core API to a fork of OpenCL 1.2.

> As a result, everything developed as part of OpenCL 2.x has now become optional: vendors can (and generally will) continue to support those features, but those features are no longer required for compliance with the core specification.

https://www.anandtech.com/show/15746/opencl-30-announced-hit...

OK, I see. So they were referring to OpenCL 3.x, and Kronos is the organisation that created that standard.
The fact that oneAPI depends on OpenCL on some platforms is mostly an implementation detail, though, and isn't generally visible to applications, which are written in SYCL/DPC++. The current works to implement oneAPI for AMD and Nvidia hardware don't use OpenCL (hipSYCL and sycl-cuda). IMO, that some people think oneAPI is the future is an indication that OpenCL is "falling apart," not evidence that it is improving.

Vendors which have had decent OpenCL implementations for a long time (i.e. Intel) will implement oneAPI on top of OpenCL, others will not (if they implement oneAPI at all).

oneAPI is not being run on top of OpenCL; it's being run on top of Level Zero. Although I think the CPU runtime is still using the OpenCL driver for the moment.
That depends if you use the OpenCL SYCL backend or the Level Zero SYCL backend. The latter has only existed for a few months.

but yeah, I think the default backend switched to level zero recently, so strikethrough the last sentence of my comment - apparently nobody will focus on opencl as a oneAPI backend.

I'm fascinated, and at the same time slightly troubled, by your usage of the word "compute".
I'm sure he is referring to "Vulcan Compute" as analogous to OpenGL compute [shaders].
Why?

Parts of the industry focused on computing data as opposed to storing it, or retrieving it. Do you think there aren’t people who do this or do you use another word?

It's a weird word. Grammatically, it is a verb. But people use it as a noun (and sometimes even as an adjective). This usage seems relatively modern, the same concept was called differently just a few years ago.
It's an annoying but very common habit, especially but not exclusively in US English.

You might be more familiar with the habit of referring to "an invite" instead of "an invitation" or "a quote" instead of "a quotation", which fit the same pattern of "compute" instead of "computation". There's even "the big reveal" instead of "the big revelation" - using "revelation" would likely confuse many people, who would assume it was exclusively religious.

I'm more familiar with the practice of verbing nouns and adjectives, which is very common (a famous Calvin&Hobbes strip ends with the punchline "verbing weirds language"). The opposite practice of nouning verbs has a very different feeling; I'd say it's almost pedantic, or very dry; not as lively as verbing, for sure.
I think it’s just short for computation rather than being ‘nouning’.