Open HadrienG2 opened 4 years ago
Hello @HadrienG2 , thanks for the hint. I am not really familiar with Vulkan and we don't use it in our projects afaik, so having such a detailed description definitely helps! We will be having alpaka dev meeting following the workshop to discuss the feedback, and will also discuss your points raised in several issues. Thanks for providing feedback!
I do not expect alpaka to support Vulkan as a backend anytime soon, at least not without going through an abstraction layer like codeplay's SyCL-over-Vulkan implementation, because Vulkan uses a split-source programming model and this is fundamentally incompatible with alpaka's current design.
However, I think Vulkan's API design could inform alpaka's future API design direction, because it is one of the most recently designed GPU APIs and probably the lowest level GPU API to achieve wide-scale popularity in recent times. This means that it exposes a wealth of interesting concepts which are not yet all present in current-generation GPU compute APIs, but may make their way into future APIs and extensions (and indeed, already are coming in some cases).
Therefore, Vulkan provides a good largest common denominator to answer alpaka design questions such as "Is there any GPU API which violates this property?" or "Is there some place in the alpaka which could benefit from future extension headroom?".
This is meant to be a general issue for discussing whether you think that the general idea of taking inspiration from Vulkan makes sense, and which of these Vulkan features you think are particularly important for alpaka to support. If it is agreeed that particular Vulkan features should be added to alpaka's abstraction vocabulary, it would be wise to create dedicated issues about these features instead of using this issue, as otherwise the discussion thread would get very messy.
Here are particular Vulkan concepts that I think could provide valuable design input for future alpaka API evolutions [1] :