Rate this Page

PyTorch operator support for the Ethos-U85 backend#

This page lists Ethos-U85-supported PyTorch APIs and the dtype and quantization modes covered by the Ethos-U85 backend test pipeline.

8x8 means 8-bit activations and 8-bit weights. 16x8 means 16-bit activations and 8-bit weights. 8x4 means 8-bit activations and 4-bit weights.

Total supported PyTorch APIs: 124.

PyTorch API

Support profile

DType

Quantization mode

torch.abs

INT

INT8

8x8

torch.acos

INT

INT8

8x8

torch.acosh

INT

INT8

8x8

torch.add / +

INT

INT8, INT16

8x8, 16x8

torch.addmm

INT

INT16

16x8

torch.alias_copy

INT

INT8

8x8

torch.amax

INT

INT8, INT16

8x8, 16x8

torch.amin

INT

INT8, INT16

8x8, 16x8

torch.any

INT

INT8

8x8

torch.arange

INT

INT8

8x8

torch.as_strided_copy

INT

INT8

8x8

torch.asin

INT

INT8

8x8

torch.asinh

INT

INT8

8x8

torch.atan

INT

INT8

8x8

torch.atanh

INT

INT8

8x8

torch.bitwise_and / &

INT

INT8

8x8

torch.bitwise_left_shift / <<

INT

INT8

8x8

torch.bitwise_not / ~

INT

INT8

8x8

torch.bitwise_or / |

INT

INT8

8x8

torch.bitwise_right_shift / >>

INT

INT8

8x8

torch.bitwise_xor / ^

INT

INT8

8x8

torch.bmm

INT

INT8, INT16

8x8, 16x8

torch.cat

INT

INT8, INT16

8x8, 16x8

torch.ceil

INT

INT8

8x8

torch.clamp

INT

INT8, INT16

8x8, 16x8

torch.clone / torch.Tensor.clone

INT

INT8

8x8

torch.cond

INT

INT8

8x8

torch.conv1d

INT

INT8, INT16

8x8, 16x8

torch.conv2d

INT

INT8, INT16, INT4

8x8, 8x4, 16x8

torch.conv3d

INT

INT8, INT4

8x8, 8x4

torch.conv_transpose2d

INT

INT8

8x8

torch.cos

INT

INT8

8x8

torch.cosh

INT

INT8

8x8

torch.cumsum

INT

INT8

8x8

torch.div

INT

INT8

8x8

torch.div / /

INT

INT8

8x8

torch.eq / ==

INT

INT8, INT16

8x8, 16x8

torch.erf

INT

INT8

8x8

torch.erfinv

INT

INT8

8x8

torch.exp

INT

INT8, INT16

8x8, 16x8

torch.expm1

INT

INT8

8x8

torch.eye

INT

INT8

8x8

torch.fill_

INT

INT8

8x8

torch.flip

INT

INT8

8x8

torch.floor

INT

INT8

8x8

torch.full

INT

INT8

8x8

torch.full_like

INT

INT8

8x8

torch.gather

INT

INT8

8x8

torch.ge / >=

INT

INT8, INT16

8x8, 16x8

torch.gt / >

INT

INT8, INT16

8x8, 16x8

torch.index_put_

INT

INT8

8x8

torch.index_select

INT

INT8

8x8

torch.le / <=

INT

INT8, INT16

8x8, 16x8

torch.linspace

INT

INT8

8x8

torch.log

INT

INT8

8x8

torch.log10

INT

INT8

8x8

torch.log1p

INT

INT8

8x8

torch.log_softmax

INT

INT8

8x8

torch.logical_and

INT

INT8

8x8

torch.logical_not

INT

INT8

8x8

torch.logical_or

INT

INT8

8x8

torch.logical_xor

INT

INT8

8x8

torch.lt / <

INT

INT8, INT16

8x8, 16x8

torch.masked_fill / torch.Tensor.masked_fill

INT

INT8

8x8

torch.max_pool2d

INT

INT8, INT16

8x8, 16x8

torch.maximum

INT

INT8, INT16

8x8, 16x8

torch.mean

INT

INT8

8x8

torch.minimum

INT

INT8, INT16

8x8, 16x8

torch.mm

INT

INT8

8x8

torch.mul / *

INT

INT8, INT16

8x8, 16x8

torch.neg / unary -

INT

INT8, INT16

8x8, 16x8

torch.nn.AvgPool2d / torch.nn.functional.avg_pool2d

INT

INT8, INT16

8x8, 16x8

torch.nn.Conv2d / torch.nn.functional.conv2d

INT

INT8, INT16, INT4

8x8, 8x4, 16x8

torch.nn.ELU / torch.nn.functional.elu

INT

INT8

8x8

torch.nn.functional.pad

INT

INT8

8x8

torch.nn.GELU / torch.nn.functional.gelu

INT

INT8, INT16

8x8, 16x8

torch.nn.Hardsigmoid / torch.nn.functional.hardsigmoid

INT

INT8

8x8

torch.nn.Hardswish / torch.nn.functional.hardswish

INT

INT8

8x8

torch.nn.Hardtanh / torch.nn.functional.hardtanh

INT

INT8

8x8

torch.nn.LeakyReLU / torch.nn.functional.leaky_relu

INT

INT8

8x8

torch.nn.Linear / torch.nn.functional.linear

INT

INT8, INT16

8x8, 16x8

torch.nn.SiLU / torch.nn.functional.silu

INT

INT8

8x8

torch.ones

INT

INT8

8x8

torch.permute / torch.Tensor.permute

INT

INT8, INT16

8x8, 16x8

torch.pixel_shuffle

INT

INT8

8x8

torch.pixel_unshuffle

INT

INT8

8x8

torch.pow / **

INT

INT8

8x8

torch.prelu

INT

INT8

8x8

torch.reciprocal

INT

INT8, INT16

8x8, 16x8

torch.relu / torch.nn.ReLU

INT

INT8

8x8

torch.remainder

INT

INT8

8x8

torch.repeat_interleave

INT

INT8, INT16

8x8, 16x8

torch.round

INT

INT8

8x8

torch.rsqrt

INT

INT8, INT16

8x8, 16x8

torch.scalar_tensor

INT

INT8

8x8

torch.select / torch.Tensor.select

INT

INT8

8x8

torch.sigmoid / torch.nn.Sigmoid

INT

INT8, INT16

8x8, 16x8

torch.sign

INT

INT8

8x8

torch.sin

INT

INT8

8x8

torch.sinh

INT

INT8

8x8

torch.softmax

INT

INT8

8x8

torch.split / torch.Tensor.split

INT

INT8, INT16

8x8, 16x8

torch.squeeze

INT

INT8

8x8

torch.squeeze / torch.Tensor.squeeze

INT

INT8

8x8

torch.stack

INT

INT8

8x8

torch.sub / -

INT

INT8, INT16

8x8, 16x8

torch.sum

INT

INT8

8x8

torch.t / torch.Tensor.t

INT

INT8

8x8

torch.tan

INT

INT8

8x8

torch.tanh / torch.nn.Tanh

INT

INT8, INT16

8x8, 16x8

torch.Tensor.__getitem__ / tensor indexing

INT

INT8

8x8

torch.Tensor.__getitem__ / tensor slicing

INT

INT8, INT16

8x8, 16x8

torch.Tensor.__setitem__ / tensor indexing assignment

INT

INT8

8x8

torch.Tensor.copy_

INT

INT8

8x8

torch.Tensor.expand

INT

INT8

8x8

torch.Tensor.repeat

INT

INT8, INT16

8x8, 16x8

torch.Tensor.unfold

INT

INT8

8x8

torch.Tensor.view

INT

INT8, INT16

8x8, 16x8

torch.transpose / torch.Tensor.transpose

INT

INT8

8x8

torch.unflatten

INT

INT8

8x8

torch.unsqueeze / torch.Tensor.unsqueeze

INT

INT8

8x8

torch.where

INT

INT8, INT16

8x8, 16x8

torch.while_loop

INT

INT8

8x8

torch.zeros

INT

INT8

8x8