| Operator | BPU | CPU |
|---|---|---|
| torch.abs torch.Tensor.abs | Y | Y |
| torch.acos torch.Tensor.acos | Y | Y |
| torch.acosh torch.Tensor.acosh | Y | Y |
| torch.add torch.Tensor.add | Y | Y |
| torch.all torch.Tensor.all | Y | Y |
| torch.any torch.Tensor.any | Y | Y |
| torch.argmax torch.Tensor.argmax | Y | Y |
| torch.argmin torch.Tensor.argmin | Y | Y |
| torch.asin torch.Tensor.asin | Y | Y |
| torch.asinh torch.Tensor.asinh | Y | Y |
| torch.atan torch.Tensor.atan | Y | Y |
| torch.atanh torch.Tensor.atanh | Y | Y |
| torch.bitwise_and | Y | Y |
| torch.bitwise_not | Y | Y |
| torch.bitwise_or | Y | Y |
| torch.bitwise_xor | Y | Y |
| torch.ceil torch.Tensor.ceil | Y | Y |
| torch.clamp torch.clip torch.Tensor.clamp torch.Tensor.clip | Y | Y |
| torch.cat torch.concat torch.concatenate | Y | Y |
| torch.cos torch.Tensor.cos | Y | Y |
| torch.cosh torch.Tensor.cosh | Y | Y |
| torch.cumsum torch.Tensor.cumsum | Y | Y |
| torch.div torch.Tensor.div | Y | Y |
| torch.eq torch.Tensor.eq | Y | Y |
| torch.gather torch.Tensor.gather | Y | Y |
| torch.gt torch.greater torch.Tensor.gt torch.Tensor.greater | Y | Y |
| torch.ge torch.greater_equal torch.Tensor.ge torch.Tensor.greater_equal | Y | Y |
| torch.lt torch.less torch.Tensor.lt torch.Tensor.less | Y | Y |
| torch.le torch.less_equal torch.Tensor.le torch.Tensor.less_equal | Y | Y |
| torch.erf torch.Tensor.erf | Y | Y |
| torch.exp torch.Tensor.exp | Y | Y |
| torch.Tensor.expand | Y | Y |
| torch.flatten torch.Tensor.flatten torch.nn.Flatten | Y | Y |
| torch.flip torch.Tensor.flip | Y | Y |
| torch.floor torch.Tensor.floor | Y | Y |
| torch.fmod torch.remainder | Y | Y |
| torch.index_select torch.Tensor.index_select torch.unbind torch.Tensor.unbind | Y | Y |
| torch.log torch.Tensor.log | Y | Y |
| torch.logical_and torch.Tensor.logical_and | Y | Y |
| torch.logical_not torch.Tensor.logical_not | Y | Y |
| torch.logical_or torch.Tensor.logical_or | Y | Y |
| torch.logical_xor torch.Tensor.logical_xor | Y | Y |
| torch.Tensor.masked_fill | Y | Y |
| torch.matmul torch.Tensor.matmul | Y | Y |
| torch.max torch.Tensor.max torch.min torch.Tensor.min | Y | Y |
| torch.maximum torch.Tensor.maximum | Y | Y |
| torch.mean torch.Tensor.mean | Y | Y |
| torch.minimum torch.Tensor.minimum | Y | Y |
| torch.mul torch.Tensor.mul | Y | Y |
| torch.neg torch.negative torch.Tensor.neg torch.Tensor.negative | Y | Y |
| torch.nonzero Tensor.nonzero | N | Y |
| torch.ne torch.not_equal torch.Tensor.ne torch.Tensor.not_equal | Y | Y |
| torch.permute torch.Tensor.permute | Y | Y |
| torch.pow torch.Tensor.pow | Y | Y |
| torch.reciprocal torch.Tensor.reciprocal | Y | Y |
| torch.Tensor.repeat | Y | Y |
| torch.repeat_interleave torch.Tensor.repeat_interleave | Y | Y |
| torch.reshape torch.Tensor.reshape torch.Tensor.view | Y | Y |
| torch.roll torch.Tensor.roll | Y | Y |
| torch.round torch.Tensor.round | Y | Y |
| torch.rsqrt torch.Tensor.rsqrt | Y | Y |
| torch.scatter torch.Tensor.scatter torch.scatter_add torch.Tensor.scatter_add torch.scatter_reduce torch.Tensor.scatter_reduce | Y | Y |
| torch.sign torch.Tensor.sign | Y | Y |
| torch.sin torch.Tensor.sin | Y | Y |
| torch.sinh torch.Tensor.sinh | Y | Y |
| torch.slice_scatter | Y | Y |
| torch.split torch.Tensor.split | Y | Y |
| torch.sqrt | Y | Y |
| torch.squeeze torch.Tensor.squeeze | Y | Y |
| torch.stack | Y | Y |
| torch.sub torch.Tensor.sub | Y | Y |
| torch.sum torch.Tensor.sum | Y | Y |
| torch.tan | Y | Y |
| torch.tile torch.Tensor.tile | Y | Y |
| torch.Tensor.to | Y | Y |
| torch.Tensor.float | Y | Y |
| torch.topk torch.Tensor.topk horizon.functional.stable_topk | Y | Y |
| torch.transpose torch.Tensor.transpose | Y | Y |
| torch.tril torch.triu | Y | Y |
| torch.unsqueeze torch.Tensor.unsqueeze | Y | Y |
| torch.where | Y | Y |
| torch.zeros_like torch.ones_like | Y | Y |
| torch.linalg.norm | Y | Y |
| torch.nn.functional.avg_pool1d torch.nn.AvgPool1d torch.nn.functional.avg_pool2d torch.nn.AvgPool2d torch.nn.functional.adaptive_avg_pool1d torch.nn.AdaptiveAvgPool1d torch.nn.functional.adaptive_avg_pool2d torch.nn.AdaptiveAvgPool2d | Y | Y |
| torch.nn.functional.affine_grid | Y | Y |
| torch.nn.functional.dropout torch.nn.Dropout torch.nn.functional.dropout1d torch.nn.Dropout1d torch.nn.functional.dropout2d torch.nn.Dropout2d torch.nn.functional.dropout3d torch.nn.Dropout3d | Y | Y |
| torch.nn.functional.elu torch.nn.ELU | Y | Y |
| torch.nn.functional.embedding torch.nn.Embedding | Y | Y |
| torch.nn.functional.gelu torch.nn.GELU | Y | Y |
| torch.nn.functional.glu torch.nn.GLU | Y | N |
| torch.nn.functional.grid_sample | Y | Y |
| torch.nn.functional.hardsigmoid torch.nn.HardSigmoid | Y | Y |
| torch.nn.functional.interpolate torch.nn.Upsample torch.nn.UpsamplingNearest2d torch.nn.UpsamplingBilinear2d | Y | Y |
| torch.nn.functional.leaky_relu torch.nn.LeakyReLU | Y | Y |
| torch.nn.functional.log_softmax torch.nn.LogSoftmax | Y | Y |
| torch.nn.functional.mish torch.nn.Mish | Y | Y |
| torch.nn.functional.normalize | Y | Y |
| torch.nn.functional.pad torch.nn.ConstantPad1d torch.nn.ConstantPad2d torch.nn.ConstantPad3d torch.nn.ReplicationPad1d torch.nn.ReplicationPad2d torch.nn.ReplicationPad3d torch.nn.ZeroPad2d | Y | Y |
| torch.nn.functional.pixel_shuffle torch.nn.PixelShuffle | Y | Y |
| torch.nn.functional.pixel_unshuffle torch.nn.PixelUnshuffle | Y | Y |
| torch.nn.PReLU | Y | Y |
| torch.nn.functional.relu torch.nn.ReLU | Y | Y |
| torch.nn.functional.relu6 torch.nn.ReLU6 | Y | Y |
| torch.nn.functional.silu torch.nn.SiLU | Y | Y |
| torch.nn.functional.softmax torch.nn.Softmax torch.softmax torch.Tensor.softmax | Y | Y |
| torch.nn.functional.softplus torch.nn.Softplus | Y | Y |
| torch.nn.BatchNorm1d torch.nn.BatchNorm2d torch.nn.BatchNorm3d | Y | Y |
| torch.nn.Conv1d torch.nn.Conv2d torch.nn.Conv3d | Y | Y |
| torch.nn.ConvTranspose1d torch.nn.ConvTranspose2d torch.nn.ConvTranspose3d | Y | Y |
| torch.nn.GRU | Y | Y |
| torch.nn.LSTM | Y | Y |
| torch.nn.Identity | Y | Y |
| torch.nn.LayerNorm torch.nn.GroupNorm torch.nn.InstanceNorm1d torch.nn.InstanceNorm2d torch.nn.InstanceNorm3d horizon.nn.LayerNorm | Y | Y |
| torch.nn.Linear | Y | Y |
| torch.Tensor.masked_scatter | Y | Y |
| torch.masked_select torch.Tensor.masked_select | N | Y |
| torch.nn.functional.max_pool1d torch.nn.MaxPool1d torch.nn.functional.max_pool2d torch.nn.MaxPool2d torch.nn.functional.adaptive_max_pool1d torch.nn.AdaptiveMaxPool1d torch.nn.functional.adaptive_max_pool2d torch.nn.AdaptiveMaxPool2d | Y | Y |
| torch.nn.MultiheadAttention | Y | Y |
| torch.nn.functional.selu torch.nn.SELU | Y | N |
| torch.nn.functional.sigmoid torch.sigmoid torch.Tensor.sigmoid torch.nn.Sigmoid | Y | Y |
| torch.sort torch.Tensor.sort | Y | Y |
| torch.tanh torch.Tensor.tanh torch.nn.Tanh | Y | Y |
| torch.nn.TransformerDecoderLayer | Y | Y |
| torch.nn.TransformerEncoderLayer | Y | Y |
| torch.quantization.DeQuantStub | Y | Y |
| torch.quantization.QuantStub | Y | Y |
| horizon.nn.AnchorGenerator | Y | Y |
| horizon.nn.BaseGridGenerator | Y | Y |
| horizon.nn.functional.bev_pool_v2 | N | Y |
| horizon.nn.functional.filter | Y | N |
| horizon.nn.GridSample | Y | Y |
| horizon.nn.functional.point_pillars_preprocess | N | Y |
| horizon.nn.functional.point_pillars_scatter horizon.nn.PointPillarsScatter | N | Y |
| horizon.nn.functional.scatter_reduce_nd | Y | Y |
| torchvision.ops.DeformConv2d | Y | Y |
| torch.Tensor.__getitem__(if indices is index Tensor) | Y | Y |
| torch.Tensor.__getitem__(if indices is bool Tensor) | N | Y |
| torch.Tensor.__getitem__(if indices is int scalar) | Y | Y |
| torch.Tensor.__getitem__(if indices is slice) | Y | Y |
| torch.Tensor.__setitem__ | Y | Y |
| torch.Tensor.clone torch.Tensor.contiguous torch.Tensor.detach | Y | Y |