Skip to main content

vulkpy: GPGPU array on Vulkan

GitHub Workflow Status PyPI PyPI - License

vulkpy is a Python package providing GPGPU computation based on Vulkan.

Requirements

  • C++20 compatible compiler
  • libvulkan
  • Vulkan SDK
    • Headers (vulkan/vulkan.hpp and so on)
    • Shaderc (glslc)

On Ubuntu 22.0,

wget -qO - http://packages.lunarg.com/lunarg-signing-key-pub.asc | apt-key add -
wget -qO /etc/apt/sources.list.d/lunarg-vulkan-focal.list http://packages.lunarg.com/vulkan/lunarg-vulkan-focal.list
apt update
apt install -y libvulkan1 libvulkan-dev vulkan-headers shaderc vulkan-validationlayers

Note
vulkan-sdk cannot be installed because it requires obsolete package qt5-default.

Example

import vulkpy as vk

gpu = vk.GPU()

a = vk.Array(gpu, data=[10, 10, 10])
b = vk.Array(gpu, data=[5, 5, 5])

c = a + b
c.wait()

print(c)
# [15, 15, 15]

Features

  • Element-wise Arithmetic Operators between 2 Arrays.
    • +, -, *, /, **, +=, -=, *=, /=, **=
  • Arithmetic Operators between Array and float.
    • +, -, *, /, **, +=, -=, *=, /=, **=
  • Arithmetic Operators between float and Array.
    • +, -, *, /, **
  • Matrix Multiplication Operator between 1d/2d Arrays.
    • @
  • Element-wise math functions as Array's member function
    • max(other, inplace=False), min(other, inplace=False)
    • abs(inplace=False), sign(inplace=False)
    • sin(inplace=False), cos(inplace=False), tan(inplace=False)
    • asin(inplace=False), acos(inplace=False), atan(inplace=False)
    • sinh(inplace=False), cosh(inplace=False), tanh(inplace=False)
    • asinh(inplace=False), acosh(inplace=False), atanh(inplace=False)
    • exp(inplace=False), log(inplace=False)
    • exp2(inplace=False), log2(inplace=False)
    • sqrt(inplace=False), invsqrt(inplace=False)
    • clamp(min, max, inplace=False)
  • Reduction as Array's member function
    • sum(axis=None), prod(axis=None)
    • maximum(axis=None), minimum(axis=None)
    • mean(axis=None)
    • argmax, argmin
    • ...
  • Other Array method
    • gather(idx: U32Array) -> Array
    • tensordot, shuffle
    • ...
  • Bloadcast
    • Explicit broadcast copy (memory inefficient, fallback option)
      • broadcast_to(shape) (used at clamp)
    • Special implementations for element-wise arithmetic operators
      • +, -, *, /, **, +=, -=, *=, /=, **=
    • Reduction with re-broadcast
      • sum, prod, maximum, minimum, mean
  • Pseudo Random Number Generator (PRNG)
    • xoshiro128++ (vulkpy.random.Xoshiro128pp(gpu, *, size=None, data=None))
      • [0, 1) uniform (.random(shape=None, buffer=None))
      • Gaussian with Box-Muller (.normal(shape=None, buffer=None, mean=0.0, stddev=1.0))
    • pcg32
  • Neural Network
    • Layers
      • Dense, ReLU, Sigmoid, Softmax
      • conv, batch norm, layer norm, ...
    • Optimizers
      • SGD, Adam, AdaGrad
      • rmsprop, ...
    • Losses
      • CrossEntropyLoss, SoftmaxCrossEntropyLoss, MSELoss, HuberLoss
      • ...
    • Initializers
      • Constant, HeNormal
      • ...
    • Models
      • Sequance
      • ...
    • Regularization
      • Lasso(coeff=1.0), Ridge(coeff=1.0), Elastic(L1=1.0, L2=1.0)
    • ONNX support
    • Custom user layer with automatic backward() definition.
    • Define by Run API

Release files for vulkpy 0.0.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for vulkpy 0.0.8
File Size Uploaded
vulkpy-0.0.8.tar.gz 58.3 kB Details

Release files / vulkpy-0.0.8.tar.gz

Download URL vulkpy-0.0.8.tar.gz
Size 58.3 kB
Tags Source
SHA-256 checksum
How to use checksums
ae448ec4281dfc7753b8606789d0e77ac0a63895e005e88cff68f7d89b033824
BLAKE2b-256 checksum
How to use checksums
72319316a67f1659469ece856ffcc06d50383fc7287c552695826aedbf459626
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.11.3

Release history Release notifications | RSS feed

This release

0.0.8 This release

1 release file

0.0.7

1 release file

0.0.6

1 release file

0.0.5

1 release file

0.0.4

1 release file

0.0.3

1 release file

0.0.2

1 release file

0.0.1

1 release file

0.0.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page