-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Hi people,
In this issue I will track the progress for the first version of Vulkan support for Gorgonia as proposed by 0x0f0f0f. This is not an exhaustive list. There is a lot to be figured out and I will add items along the way.
My current plan is to see if I can get something of the ground. There will be a lot of work that needs to be done that I won't be able to get around to. If you want to contribute, let me know and we'll figure out what you can do. For casual contributors, I'll try to make some nice low-hanging-fruit tasks available soon-ish.
TODO
- Initialization
- Create instance
- Set-up validation layers and debug callback
- Hardware device selection
- Logical device creation
- Load queues
- Computing (not yet connected to Gorgonia)
- Load data using buffers and descriptors onto the GPU
- Retrieve buffers from the GPU (is this different from retrieving the result from a shader?)
- Create a compute pipeline (reference)
- Create a command buffer
- Run a command buffer / figure out fences etc.
- Retrieve the result of a shader
- ...
- Implement
tensorEngine
interface - Write shaders
- Test output by comparing it to cpu tensor output
- Make simple program that lists graphics cards and capabilities for debugging
- Write readme
- Write other docs
- Add licence file
Low hanging fruit / other free to take tasks
- Test the
cmd/testing
application on Windows. The docs state thatSetDefaultGetInstanceProcAddr
is only implemented for Linux but the implementation tells a different story. - Test the
cmd/testing
application on Mac. The docs state thatSetDefaultGetInstanceProcAddr
is only available for Linux. Looking at the implementation, this seems to be true for Mac. Check if there is an issue for this in the vulkan-go repo, create an issue for this or see if we can get this working some other way without needing a windowing library.
When you take on a low-hanging-fuit task, please comment below so other contributors know not to work on the same task.
Contributing
For Vulkan you need to install the Vulkan drivers for your specific graphics card. You'll also need to install the Vulkan SDK. Read this tutorial for extra instructions. You can ignore the GLFW/GLM parts.
If you're new to Vulkan, I recommend diving into this tutorial. It is focused a bit more on the graphics side than on the compute but you'll notice that a lot of it works in the same way.