Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Show HN: A Minimal Code Example of Using Vulkan for Computations on the GPU (github.com/erkaman)
68 points by erkaman on June 25, 2017 | hide | past | favorite | 11 comments


I haven't used GPGPU in a while. Is Vulkan expected to take over from OpenCL?



OpenCL (the API) will merge into Vulkan, but OpenCL C/C++/DCompute/compute shaders (the kernel languages) will remain separate as they compile to SPIRV, which is compiled into the native binary format.


Can you explain this a bit more clearly? As I understood it, OpenCL's compute API will look like Vulkan's functions and nothing from Vulkan side will change (interpreting this from the fact that Vulkan group apparently won't be involved in this merge -- according to the interview)

How will everything possibly work? Is it just that OpenCL's API will change and the libraries for OpenCL will remain the same or will the library be merged into Vulkan too? I'm just confused since the programming models are so different.


>nothing from Vulkan side will change

AFAIU Vulkan will continue in the direction it is going.

I imagine that the OpenCL API will replace the directly comparable parts of the APIs (e.g. contexts queues images/buffers) so that OpenCL will use the Vulkan "definition". OpenCL kernels would go next to compute shaders in terms of the pipeline. There of course would be some additional things added to the combined API to support OpenCL specific things (like pipes).

But alas, I am no more privy to these things than you, and the above is pure speculation.


currently OpenCL supports more devices.


OP here. This is a small code example of how to use Vulkan for compute operations. Only ~400LOC. It's pretty short, and has plenty of comments, so it should be useful for people learning Vulkan, I hope.


Might wanna open a PR to add your sample to the list of Vulkan resources too, under samples and demos [0].

[0] https://github.com/KhronosGroup/Khronosdotorg/blob/master/ap...


Ah, thanks for the tip :-)


Has someone created a wrapper or higher-level API that takes care of some of the details for common use-cases?

For example, say I don't need to optimize my command submittal, or I just want the main device. Or maybe my common use case is a compute shader just like the program submitted in this Hacker News post. I would want a class that just exposed a simple API like runComputeShader() or something.


It would be great to contribute some of this to https://github.com/hughperkins/tf-coriander (which is a port of tensorflow to opencl). Mainline TF is not moving to opencl because of various issues - https://github.com/tensorflow/tensorflow/issues/22#issuecomm...

It would be great to see a tensorflow-vulkan




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: