Aidge backend CUDA#

When imported automatically update availables implementations for aidge core objects.

66% (97/148)
Supported operators: ✔️ Yes (∇ = grad), ✅ Generic impl., ☑️ MetaOp impl., ❌ No#

Operator (⧖ = custom prod. conso.)

Support

Impl specs
(— = any ; ✱ = additional requirements)

✔️

1. float64 — → float64 —
2. float32 — → float32 —
3. float16 — → float16 —

✔️ ∇

1. float64 — → float64 —
2. float32 — → float32 —
3. float16 — → float16 —

❌

✔️

1. float64 — → int64 —
2. float32 — → int64 —
3. float16 — → int64 —

❌

❌

❌

AvgPooling1D

❌

AvgPooling2D

✔️ ∇

1. float64 — → float64 —
2. float64 — → float64 — | int64 —
3. float32 — → float32 —
4. float32 — → float32 — | int64 —
5. float16 — → float16 —
6. float16 — → float16 — | int64 —
AvgPooling3D

✅

BatchNorm2D

✔️ ∇

1. float64 — → float64 —
2. float32 — → float32 —
3. float16 — → float16 —
BitErrorRate

❌

BitShift

✔️

1. int32 — → int32 —
2. int64 — → int64 —
CastLike

✅

✅

❌

✔️ ∇

1. float64 — → float64 —
2. float32 — → float32 —
3. float16 — → float16 —
4. int32 — → int32 —
5. int64 — → int64 —
ComplexToInnerPair

✅

✅

ConnectedComponentLabeling

❌

ConstantOfShape

✅

✔️ ∇

1. float64 nchw → float64 nchw
2. float32 nchw → float32 nchw
3. float16 nchw → float16 nchw
4. int32 nchw → int32 nchw

✔️ ∇

1. float64 nchw → float64 nchw
2. float32 nchw → float32 nchw
3. float16 nchw → float16 nchw
4. int32 nchw → int32 nchw

❌

ConvDepthWise1D

✔️ ∇

1. float64 nchw → float64 nchw
2. float32 nchw → float32 nchw
3. float16 nchw → float16 nchw
4. int32 nchw → int32 nchw
ConvDepthWise2D

✔️ ∇

1. float64 nchw → float64 nchw
2. float32 nchw → float32 nchw
3. float16 nchw → float16 nchw
4. int32 nchw → int32 nchw
ConvTranspose1D

❌

ConvTranspose2D

❌

ConvTranspose3D

❌

❌

❌

CryptoHash

✅

☑️

DepthToSpace

✅

❌

✔️

1. float64 — → float64 —
2. float32 — → float32 —
3. float16 — → float16 —
DropBlock

✔️

1. float64 — → float64 — | boolean —
2. float32 — → float32 — | boolean —
3. float16 — → float16 — | boolean —
Dropout

✔️

1. float64 — | — — | boolean — → float64 — | boolean —
2. float32 — | — — | boolean — → float32 — | boolean —
3. float16 — | — — | boolean — → float16 — | boolean —

✔️

1. float64 — → boolean —
2. float32 — → boolean —
3. float16 — → boolean —
4. boolean — → boolean —
5. int32 — → boolean —
6. int64 — → boolean —

✔️

1. float64 — → float64 —
2. float32 — → float32 —
3. int8 — → int8 —
4. int32 — → int32 —

❌

✔️ ∇

1. float64 — → float64 —
2. float32 — → float32 —
3. float16 — → float16 —

✔️ ∇

1. float64 — → float64 —
2. float32 — → float32 —
3. float16 — → float16 —
FixedNBitFlip

❌

Flatten

✅

❌

❌

GatherElements

✅✔️ ∇

1. float64 — | int64 — → float64 —
2. float32 — | int64 — → float32 —
3. float16 — | int64 — → float16 —
4. int32 — | int64 — → int32 —
5. int64 — | int64 — → int64 —
6. uint32 — | int64 — → uint32 —
7. uint64 — | int64 — → uint64 —
GatherND

✅

✅

☑️

GlobalAveragePooling

✔️ ∇

1. float64 — → float64 —
2. float32 — → float32 —
3. float16 — → float16 —
Greater

❌

GreaterOrEqual

❌

GridSample

❌

☑️

HannWindow

☑️

Hardmax

❌

HardSigmoid

❌

HardSwish

☑️

Heaviside

✔️

1. float64 — → float64 —
2. float32 — → float32 —
3. float16 — → float16 —
Identity ⧖

✅

InnerPairToComplex

✅

InstanceNorm

❌

LayerNorm

☑️

LeakyReLU

✔️

1. float64 — → float64 —
2. float32 — → float32 —

❌

LessOrEqual

❌

✔️

1. float64 — → float64 —
2. float32 — → float32 —
3. float16 — → float16 —
LogSoftmax

✔️ ∇

1. float64 — → float64 —
2. float32 — → float32 —
3. float16 — → float16 —

✔️ ∇

1. float64 — → float64 —
2. float32 — → float32 —

☑️

✔️

1. float64 — → float64 —
2. float32 — → float32 —
3. float16 — → float16 —

✔️

1. float64 — → float64 —
2. float32 — → float32 —
3. float16 — → float16 —
MaxPooling1D

❌

MaxPooling2D

✔️ ∇

1. float64 — → float64 —
2. float64 — → float64 — | int64 —
3. float32 — → float32 —
4. float32 — → float32 — | int64 —
5. float16 — → float16 —
6. float16 — → float16 — | int64 —
MaxPooling3D

✅

Memorize ⧖

✅

✔️

1. float64 — → float64 —
2. float32 — → float32 —
3. float16 — → float16 —

❌

✔️ ∇

1. float64 — → float64 —
2. float32 — → float32 —
3. float16 — → float16 —
NBitFlip

❌

❌

NonMaxSuppression

❌

NonZero

❌

❌

✔️

1. float64 — → float64 —
2. float32 — → float32 —
3. float16 — → float16 —
4. int32 — → int32 —
5. int64 — → int64 —

❌

PaddedAvgPooling2D

☑️

PaddedConv1D

☑️

PaddedConv2D

☑️

PaddedConv3D

☑️

PaddedConvDepthWise1D

☑️

PaddedConvDepthWise2D

☑️

PaddedConvTranspose1D

☑️

PaddedConvTranspose2D

☑️

PaddedConvTranspose3D

☑️

PaddedMaxPooling2D

☑️

✔️ ∇

1. float64 — | int64 — | — — | — — → float64 —
2. float32 — | int64 — | — — | — — → float32 —
3. float16 — | int64 — | — — | — — → float16 —
4. int8 — | int64 — | — — | — — → int8 —
5. int32 — | int64 — | — — | — — → int32 —
Pop ⧖

✅

✔️

1. float64 — → float64 —
2. float32 — → float32 —
3. float16 — → float16 —
Producer

✅

RandomNormalLike

✔️

1. float64 — → float64 —
2. float32 — → float32 —
3. float16 — → float16 —

✅

Reciprocal

✔️ ∇

1. float64 — → float64 —
2. float32 — → float32 —
3. float16 — → float16 —
ReduceL1

☑️

ReduceL2

☑️

ReduceMax

✔️ ∇

1. float64 — → float64 —
2. float32 — → float32 —
3. float16 — → float16 —
ReduceMean

✔️ ∇

1. float64 — | int64 — → float64 —
2. float32 — | int64 — → float32 —
3. float16 — | int64 — → float16 —
ReduceMin

✔️ ∇

1. float64 — → float64 —
2. float32 — → float32 —
3. float16 — → float16 —
ReduceSum

✔️ ∇

1. float64 — → float64 —
2. float32 — → float32 —
3. float16 — → float16 —

✔️ ∇

1. float64 — → float64 —
2. float32 — → float32 —
3. float16 — → float16 —
Reshape

✅

✔️ ∇

1. float64 — | — — | — — | — — → float64 —
2. float32 — | — — | — — | — — → float32 —
3. float16 — | — — | — — | — — → float16 —

✔️

1. float64 — → float64 —
2. float32 — → float32 —
Scatter

❌

SDLayerNorm

❌

SDShiftGELU

❌

SDShiftmax

❌

SDShiftSiLU

❌

✅

✅

Sigmoid

✔️ ∇

1. float64 — → float64 —
2. float32 — → float32 —
3. float16 — → float16 —

✔️

1. float64 — → float64 —
2. float32 — → float32 —
3. float16 — → float16 —

❌

❌

✅

❌

☑️

Softmax

✔️ ∇

1. float64 — → float64 —
2. float32 — → float32 —
3. float16 — → float16 —

✅✔️

1. float64 — | — — → float64 —
2. float32 — | — — → float32 —
3. float16 — | — — → float16 —
4. int32 — | — — → int32 —
5. int64 — | — — → int64 —
6. uint32 — | — — → uint32 —
7. uint64 — | — — → uint64 —

✔️ ∇

1. float64 — → float64 —
2. float32 — → float32 —
Squeeze

✅

Stack ⧖

✅

❌

✔️ ∇

1. float64 — → float64 —
2. float32 — → float32 —
3. float16 — → float16 —

❌

SVMRegressor

❌

✔️ ∇

1. float64 — → float64 —
2. float32 — → float32 —
3. float16 — → float16 —

❌

✅

❌

Transpose

✔️ ∇

1. float64 — → float64 —
2. float32 — → float32 —
3. float16 — → float16 —
4. int32 — → int32 —
5. int64 — → int64 —
6. uint32 — → uint32 —
7. uint64 — → uint64 —

❌

Unfold2D

✅

❌

Unsqueeze

✅

❌

Additional implementation attributes for Conv2D

  • impl.cuda.no_auto_fwd_algo: Disable automatic selection of the best forward algorithm (CUDNN_CONVOLUTION_FWD_ALGO_IMPLICIT_GEMM is used in this case)

Additional implementation attributes for BatchNorm2D

  • impl.cuda.no_cache: Disable cache of intermediate results during forward (cache is used to speed-up backward)