Docs / nablatensor-engine-vulkan / com.nablatensor.backend.vulkan

final class

VulkanBackend

Vulkan compute backend. Math runs in GLSL compute shaders compiled to SPIR-V at runtime with libshaderc and dispatched through the Vulkan loader via foreign; tensors stay resident in device memory (host-visible on an APU) between operations.

Elementwise (including generated fused chains) / reductions / matmul / transpose / broadcast / relu-backward / 2-D convolution are implemented. The shader library is VulkanShaders; this class is op dispatch only.

Methods

String name()
DeviceType deviceType()
boolean isAvailable()
int priority()
String deviceName()
DeviceBuffer upload(float[] data, Shape shape, DType dtype, Device device)
float[] download(DeviceBuffer buffer)
DeviceBuffer binary(Op op, DeviceBuffer a, DeviceBuffer b)
DeviceBuffer scalar(Op op, DeviceBuffer a, double value)
DeviceBuffer unary(Op op, DeviceBuffer a)
DeviceBuffer fused(Expr expr, DeviceBuffer[] inputs)

Runs a whole elementwise Expr chain as one generated GLSL compute shader (one dispatch, one intermediate buffer), instead of the SPI default of one dispatch and one buffer per node. The shader is emitted with the same SSA post-order walk as the CUDA backend, compiled to SPIR-V once by libshaderc, and cached (as a registered pipeline) by its source.

DeviceBuffer transpose(DeviceBuffer a)
DeviceBuffer matmul(DeviceBuffer a, DeviceBuffer b)
DeviceBuffer reduceSum(DeviceBuffer a)
DeviceBuffer reduceMax(DeviceBuffer a)
DeviceBuffer sumAxis0(DeviceBuffer a)
DeviceBuffer sumAxis(DeviceBuffer a, int axis, boolean keepDims)
DeviceBuffer maxAxis(DeviceBuffer a, int axis, boolean keepDims)
DeviceBuffer argMaxAxis(DeviceBuffer a, int axis)
DeviceBuffer maxAxisBackward(DeviceBuffer upstream, DeviceBuffer input, int axis)
DeviceBuffer reluBackward(DeviceBuffer upstream, DeviceBuffer input)
DeviceBuffer broadcastTo(DeviceBuffer a, Shape target)
DeviceBuffer conv2d(DeviceBuffer x, DeviceBuffer w, ConvSpec spec)
DeviceBuffer conv2dGradInput(DeviceBuffer upstream, DeviceBuffer w, ConvSpec spec)
DeviceBuffer conv2dGradWeight(DeviceBuffer x, DeviceBuffer upstream, ConvSpec spec)
void sync()
void release(DeviceBuffer buffer)