Aidge backend CPU#

When imported automatically update availables implementations for aidge core objects.

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. complex64 — → float32 —
4. complex128 — → float64 —
5. int8 — → int8 —
6. int16 — → int16 —
7. int32 — → int32 —
8. int64 — → int64 —
9. uint8 — → uint8 —
10. uint16 — → uint16 —
11. uint32 — → uint32 —
12. uint64 — → uint64 —

✔️ ∇

1. float64 — → float64 —
2. float32 — → float32 —
3. int8 — → int8 —
4. int8 — → int32 —
5. int8 — → int64 —
6. int16 — → int16 —
7. int32 — → int32 —
8. int64 — → int64 —
9. uint8 — | uint8 — → uint8 —
10. uint8 — | uint8 — → uint32 —

✔️

1. boolean — → boolean —

✔️

1. float64 — → int64 —
2. float32 — → int64 —
3. int8 — → int64 —
4. int16 — → int64 —
5. int32 — → int64 —
6. int64 — → int64 —
7. uint8 — → int64 —
8. uint16 — → int64 —
9. uint32 — → int64 —
10. uint64 — → int64 —

✔️

1. float64 — → int64 —
2. float32 — → int64 —
3. int8 — → int64 —
4. int16 — → int64 —
5. int32 — → int64 —
6. int64 — → int64 —
7. uint8 — → int64 —
8. uint16 — → int64 —
9. uint32 — → int64 —
10. uint64 — → int64 —

✔️ ∇

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

✔️ ∇

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

✔️

1. float64 ncw → float64 ncw
2. float32 ncw → float32 ncw
3. int32 ncw → int32 ncw
AvgPooling2D

✔️

1. float64 nchw → float64 nchw
2. float32 nchw → float32 nchw
3. int8 nchw → int8 nchw
4. int32 nchw → int32 nchw
AvgPooling3D

✅

BatchNorm2D

✔️

1. float32 nchw → float32 nchw
BitErrorRate

✔️

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

✔️

1. int16 — → int16 —
2. int32 — → int32 —
3. int64 — → int64 —
4. uint32 — → uint32 —
5. uint64 — → uint64 —
CastLike

✅

✅

✔️

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

✔️ ∇

1. float64 — | — — | — — → float64 —
2. float32 — → float32 —
3. float32 — | — — | — — → float32 —
4. int8 — | — — | — — → int8 —
5. int16 — | — — | — — → int16 —
6. int32 — | — — | — — → int32 —
7. int64 — | — — | — — → int64 —
ComplexToInnerPair

✅

✅

ConnectedComponentLabeling

✔️

1. boolean — → uint32 —
ConstantOfShape

✅

✔️ ∇

1. — ncw → float64 ncw
2. — ncw → float32 ncw
3. — ncw → float16 ncw
4. — ncw → int32 ncw

✔️ ∇

1. float64 nchw → float64 nchw
2. float32 nchw → float32 nchw
3. float16 nchw → float16 nchw
4. int4 nchw | int4 nchw | int16 — → int16 nchw
5. int8 nchw | int8 nchw | int32 nchw → int32 nchw
6. int16 nchw | int16 nchw | int32 nchw → int32 nchw
7. int32 nchw | int32 nchw | int32 nchw → int32 nchw

✔️ ∇

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

✔️

1. — nchw → float64 nchw
2. — nchw → float32 nchw
3. — nchw → int32 nchw
ConvDepthWise2D

✔️

1. — nchw → float64 nchw
2. — nchw → float32 nchw
3. — nchw → int32 nchw
ConvTranspose1D

✔️

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

✔️

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

✔️

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

✔️ ∇

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

✔️ ∇

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

✅

☑️

DepthToSpace

✅

✔️

1. float64 — | — — → complex128 —
2. float32 — | — — → complex64 —
3. complex64 — | — — → complex64 —
4. complex128 — | — — → complex128 —

✔️ ∇

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

✔️

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

✔️

1. float64 — | — — | boolean — → float64 — | boolean — ✱ 1
2. float64 — | — — | boolean — → float64 — | boolean — ✱ 1
3. float32 — | — — | boolean — → float32 — | boolean — ✱ 1
4. float32 — | — — | boolean — → float32 — | boolean — ✱ 1
5. float16 — | — — | boolean — → float16 — | boolean — ✱ 1
6. float16 — | — — | boolean — → float16 — | boolean — ✱ 1

✔️

1. float64 — | float64 — → boolean —
2. float32 — | float32 — → boolean —
3. complex64 — | complex64 — → boolean —
4. complex128 — | complex128 — → boolean —
5. boolean — | boolean — → boolean —
6. int8 — | int8 — → boolean —
7. int16 — | int16 — → boolean —
8. int32 — | int32 — → boolean —
9. int64 — | int64 — → boolean —
10. uint8 — | uint8 — → boolean —
11. uint16 — | uint16 — → boolean —
12. uint32 — | uint32 — → boolean —
13. uint64 — | uint64 — → boolean —

✔️

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

✔️

1. float64 — | int64 — → float64 —
2. float32 — | int64 — → float32 —
3. float16 — | int64 — → float16 —
4. boolean — | int64 — → boolean —
5. int8 — | int64 — → int8 —
6. int16 — | int64 — → int16 —
7. int32 — | int64 — → int32 —
8. int64 — | int64 — → int64 —
9. uint8 — | int64 — → uint8 —
10. uint16 — | int64 — → uint16 —
11. uint32 — | int64 — → uint32 —
12. uint64 — | int64 — → uint64 —

✔️ ∇

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

✔️ ∇

1. float64 — → float64 —
2. float32 — → float32 —
3. int4 — | int4 — | int16 — → int16 —
4. int8 — | int8 — | int32 — → int32 —
5. int32 — → int32 —
FixedNBitFlip

✔️

1. float64 — → float64 —
2. float32 — → float32 —
3. int32 — → int32 —
Flatten

✅

✔️

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

✔️

1. float64 — → float64 —
2. float32 — → float32 —
3. int32 — → int32 —
GatherElements

✅

GatherND

✅

✅

☑️

GlobalAveragePooling

✔️

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

✔️

1. float64 — | float64 — → boolean —
2. float32 — | float32 — → boolean —
3. int8 — | int8 — → boolean —
4. int16 — | int16 — → boolean —
5. int32 — | int32 — → boolean —
6. int64 — | int64 — → boolean —
7. uint8 — | uint8 — → boolean —
8. uint16 — | uint16 — → boolean —
9. uint32 — | uint32 — → boolean —
10. uint64 — | uint64 — → boolean —
GreaterOrEqual

✔️

1. float64 — | float64 — → boolean —
2. float32 — | float32 — → boolean —
3. int8 — | int8 — → boolean —
4. int16 — | int16 — → boolean —
5. int32 — | int32 — → boolean —
6. int64 — | int64 — → boolean —
7. uint8 — | uint8 — → boolean —
8. uint16 — | uint16 — → boolean —
9. uint32 — | uint32 — → boolean —
10. uint64 — | uint64 — → boolean —
GridSample

✔️

1. — — [*] | — — → float64 —
2. — — [*] | — — → float32 —
3. — — [*] | — — → float16 —
4. — — [*] | — — → int32 —
5. — — [*, *, *, *] | — — [*, *, *, *] → float64 — [*, *, *, *]
6. — — [*, *, *, *] | — — [*, *, *, *] → float32 — [*, *, *, *]
7. — — [*, *, *, *] | — — [*, *, *, *] → float16 — [*, *, *, *]
8. — — [*, *, *, *] | — — [*, *, *, *] → int32 — [*, *, *, *]

☑️

HannWindow

☑️

Hardmax

✔️

1. float64 — → float64 —
2. float32 — → float32 —
3. int32 — → int32 —
HardSigmoid

✔️ ∇

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

☑️

Heaviside

✔️ ∇

1. float32 — → float32 —
Identity ⧖

✅

InnerPairToComplex

✅

InstanceNorm

✔️ ∇

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

☑️

LeakyReLU

✔️ ∇

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

✔️

1. float64 — | float64 — → boolean —
2. float32 — | float32 — → boolean —
3. int8 — | int8 — → boolean —
4. int16 — | int16 — → boolean —
5. int32 — | int32 — → boolean —
6. int64 — | int64 — → boolean —
7. uint8 — | uint8 — → boolean —
8. uint16 — | uint16 — → boolean —
9. uint32 — | uint32 — → boolean —
10. uint64 — | uint64 — → boolean —
LessOrEqual

✔️

1. float64 — | float64 — → boolean —
2. float32 — | float32 — → boolean —
3. int8 — | int8 — → boolean —
4. int16 — | int16 — → boolean —
5. int32 — | int32 — → boolean —
6. int64 — | int64 — → boolean —
7. uint8 — | uint8 — → boolean —
8. uint16 — | uint16 — → boolean —
9. uint32 — | uint32 — → boolean —
10. uint64 — | uint64 — → boolean —

✔️ ∇

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

✔️ ∇

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

✔️

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

☑️

✔️

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

✔️ ∇

1. float64 — → float64 —
2. float32 — → float32 —
3. int8 — → int8 —
4. int16 — → int16 —
5. int32 — → int32 —
6. int64 — → int64 —
7. uint8 — → uint8 —
8. uint16 — → uint16 —
MaxPooling1D

✔️ ∇

1. float64 ncw → float64 ncw | int64 ncw
2. float32 ncw → float32 ncw | int64 ncw
3. int8 ncw → int8 ncw | int64 ncw
4. int32 ncw → int32 ncw | int64 ncw
MaxPooling2D

✔️ ∇

1. float64 nchw → float64 nchw | int64 nchw
2. float32 nchw → float32 nchw | int64 nchw
3. int4 nchw → int4 nchw | int64 nchw
4. int8 nchw → int8 nchw | int64 nchw
5. int32 nchw → int32 nchw | int64 nchw
MaxPooling3D

✅

Memorize ⧖

✅

✔️ ∇

1. float64 — → float64 —
2. float32 — → float32 —
3. int8 — → int8 —
4. int16 — → int16 —
5. int32 — → int32 —
6. int64 — → int64 —
7. uint8 — → uint8 —
8. uint16 — → uint16 —

✔️

1. float64 — | float64 — → float64 —
2. float32 — | float32 — → float32 —
3. float16 — | float16 — → float16 —
4. int8 — | int8 — → int8 —
5. int16 — | int16 — → int16 —
6. int32 — | int32 — → int32 —
7. int64 — | int64 — → int64 —
8. uint8 — | uint8 — → uint8 —
9. uint16 — | uint16 — → uint16 —
10. uint32 — | uint32 — → uint32 —
11. uint64 — | uint64 — → uint64 —

✔️ ∇

1. float64 — → float64 —
2. float32 — → float32 —
3. float32 — | float64 — → float32 —
4. int8 — | int8 — → int32 —
5. int32 — → int32 —
6. int32 — | int8 — → int32 —
7. int64 — → int64 —
8. uint8 — | uint8 — → uint8 —
9. uint8 — | uint8 — → uint32 —
NBitFlip

✔️

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

✔️ ∇

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

✔️

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

✔️ ∇

✔️

1. boolean — → boolean —

✔️

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

✔️

1. binary — → octo_binary —
2. int2 — → quad_int2 —
3. uint2 — → quad_uint2 —
4. int3 — → dual_int3 —
5. uint3 — → dual_uint3 —
6. int4 — → dual_int4 —
7. uint4 — → dual_uint4 —
PaddedAvgPooling2D

☑️

PaddedConv1D

☑️

PaddedConv2D

☑️

PaddedConv3D

☑️

PaddedConvDepthWise1D

☑️

PaddedConvDepthWise2D

☑️

PaddedConvTranspose1D

☑️

PaddedConvTranspose2D

☑️

PaddedConvTranspose3D

☑️

PaddedMaxPooling2D

☑️

✔️ ∇

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

✅

✔️ ∇

1. — — → float64 —
2. — — → float32 —
3. — — → int8 —
4. — — → int32 —
5. — — → int64 —
6. — — → uint8 —
Producer

✅

RandomNormalLike

✔️ ∇

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

✅

Reciprocal

✔️ ∇

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

☑️

ReduceL2

☑️

ReduceMax

✔️

1. float64 — | — — → float64 —
2. float32 — | — — → float32 —
3. boolean — | — — → boolean —
4. int32 — | — — → int32 —
ReduceMean

✔️

1. float64 — | — — → float64 —
2. float32 — | — — → float32 —
3. int32 — | — — → int32 —
ReduceMin

✔️

1. float64 — | — — → float64 —
2. float32 — | — — → float32 —
3. boolean — | — — → boolean —
4. int32 — | — — → int32 —
ReduceSum

✔️

1. float64 — | — — → float64 —
2. float32 — | — — → float32 —
3. int32 — | — — → int32 —
4. int64 — | — — → int64 —

✔️ ∇

1. float64 — → float64 —
2. float32 — → float32 —
3. int4 — → int4 —
4. int8 — → int8 —
5. int32 — → int32 —
Reshape

✅

✔️

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

✔️

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

✔️

1. float64 — | — — → float64 —
2. float32 — | — — → float32 —
3. int8 — | — — → int8 —
4. int32 — | — — → int32 —
5. int64 — | — — → int64 —
SDLayerNorm

✔️ ∇

1. float64 — → float64 —
2. float32 — → float32 —
3. int4 — → int4 —
4. int8 — → int8 —
5. int16 — → int16 —
6. int32 — → int32 —
SDShiftGELU

✔️ ∇

1. float64 — → float64 —
2. float32 — → float32 —
3. int4 — → int4 —
4. int8 — → int8 —
5. int16 — → int16 —
6. int32 — → int32 —
SDShiftmax

✔️ ∇

1. float64 — → float64 —
2. float32 — → float32 —
3. int4 — → int4 —
4. int8 — → int8 —
5. int16 — → int16 —
6. int32 — → int32 —
SDShiftSiLU

✔️ ∇

1. float64 — → float64 —
2. float32 — → float32 —
3. int4 — → int4 —
4. int8 — → int8 —
5. int16 — → int16 —
6. int32 — → int32 —

✅

✅

Sigmoid

✔️ ∇

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

✔️

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

✔️ ∇

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

✔️ ∇

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

✅

✔️

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

☑️

Softmax

✔️ ∇

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

✅

✔️ ∇

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

✅

Stack ⧖

✅

✔️

1. float64 — | — — → complex128 —
2. float32 — | — — → complex64 —
3. complex64 — | — — → complex64 —
4. complex128 — | — — → complex128 —

✔️ ∇

1. float64 — → float64 —
2. float32 — → float32 —
3. int8 — → int8 —
4. int8 — | int8 — → int32 —
5. int32 — → int32 —
6. int64 — → int64 —
7. uint8 — → uint8 —

✔️ ∇

1. — — → float64 —
2. — — → float32 —
3. — — → int32 —
4. — — → int64 —
SVMRegressor

✔️ ∇

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

✔️ ∇

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

✔️ ∇

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

✅

✔️

1. float64 — | — — → float64 — | int64 —
2. float32 — | — — → float32 — | int64 —
3. int8 — | — — → int8 — | int64 —
4. int32 — | — — → int32 — | int64 —
Transpose

✔️ ∇

1. float64 — → float64 —
2. float32 — → float32 —
3. float16 — → float16 —
4. boolean — → boolean —
5. binary — → binary —
6. int2 — → int2 —
7. uint2 — → uint2 —
8. int4 — → int4 —
9. uint4 — → uint4 —
10. int8 — → int8 —
11. int32 — → int32 —
12. int64 — → int64 —
13. uint8 — → uint8 —
14. uint32 — → uint32 —
15. uint64 — → uint64 —

✔️

1. float64 — | — — → float64 —
2. float32 — | — — → float32 —
3. int32 — | — — → int32 —
4. int64 — | — — → int64 —
Unfold2D

✅

✔️

1. octo_binary — → binary —
2. quad_int2 — → int2 —
3. quad_uint2 — → uint2 —
4. dual_int3 — → int3 —
5. dual_uint3 — → uint3 —
6. dual_int4 — → int4 —
7. dual_uint4 — → uint4 —
Unsqueeze

✅

✔️ ∇

1. boolean — | — — | — — → float64 —
2. boolean — | — — | — — → float32 —
3. boolean — | — — | — — → int32 —
4. boolean — | — — | — — → int64 —