Skip to content

First version #1

@MarkKremer

Description

@MarkKremer

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 tensor Engine 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 that SetDefaultGetInstanceProcAddr is only implemented for Linux but the implementation tells a different story.
  • Test the cmd/testing application on Mac. The docs state that SetDefaultGetInstanceProcAddr 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.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions