Skip to main content

GPGPU array on Vulkan

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vulkpy-0.0.8.tar.gz (58.3 kB view details)

Uploaded Source

File details

Details for the file vulkpy-0.0.8.tar.gz.

File metadata

  • Download URL: vulkpy-0.0.8.tar.gz
  • Upload date:
  • Size: 58.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for vulkpy-0.0.8.tar.gz
Algorithm Hash digest
SHA256 ae448ec4281dfc7753b8606789d0e77ac0a63895e005e88cff68f7d89b033824
MD5 52e369779542fc42b2c9f3895d7fb645
BLAKE2b-256 72319316a67f1659469ece856ffcc06d50383fc7287c552695826aedbf459626

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page