vulkpy is a Python package providing GPGPU computation based on Vulkan.
- C++20 compatible compiler
libvulkan- Vulkan SDK
- Headers (
vulkan/vulkan.hppand so on) - Shaderc (
glslc)
- Headers (
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-validationlayersNote
vulkan-sdkcannot be installed because it requires obsolete packageqt5-default.
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]- Element-wise Arithmetic Operators between 2
Arrays.-
+,-,*,/,**,+=,-=,*=,/=,**=
-
- Arithmetic Operators between
Arrayandfloat.-
+,-,*,/,**,+=,-=,*=,/=,**=
-
- Arithmetic Operators between
floatandArray.-
+,-,*,/,**
-
- 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
Arraymethod-
gather(idx: U32Array) -> Array - tensordot, shuffle
- ...
-
- Bloadcast
- Explicit broadcast copy (memory inefficient, fallback option)
broadcast_to(shape)(used atclamp)
- Special implementations for element-wise arithmetic operators
+,-,*,/,**,+=,-=,*=,/=,**=
- Reduction with re-broadcast
sum,prod,maximum,minimum,mean
- Explicit broadcast copy (memory inefficient, fallback option)
- 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
- xoshiro128++ (
- 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
- Layers