.. _supported_operations:

====================
Supported operations
====================

This chapter contains a list of the PyTorch Geometric operations supported by the Poplar SDK.

.. table:: Supported operations
    :widths: 15, 25, 17, 43

    +-------------------------------+---------------------------+---------------+---------------------------------------------------+
    | Layers kind                   | Layer name                | Status        | Notes                                             |
    +===============================+===========================+===============+===================================================+
    | Basic blocks                  | Linear                    | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | Sequential                | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | HeteroLinear              | Supported     |                                                   |
    +-------------------------------+---------------------------+---------------+---------------------------------------------------+
    | Convolution Layers            | SimpleConv                | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | ChebConv                  | Not supported |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | SAGEConv                  | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | CuGraphSAGEConv           | Not supported |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | GraphConv                 | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | GatedGraphConv            | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | ResGatedGraphConv         | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | CuGraphGATConv            | Not supported |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | FusedGATConv              | Not supported |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | TransformerConv           | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | TAGConv                   | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | GINConv                   | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | GINEConv                  | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | ARMAConv                  | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | APPNP                     | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | MFConv                    | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | RGCNConv                  | Not supported |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | CuGraphRGCNConv           | Not supported |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | SplineConv                | Supported     | Only inference is supported.                      |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | NNConv                    | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | CGConv                    | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | EdgeConv                  | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | DynamicEdgeConv           | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | XConv                     | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | HypergraphConv            | Supported     | ``num_edges`` is required.                        |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | LEConv                    | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | PNAConv                   | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | ClusterGCNConv            | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | PANConv                   | Not supported |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | WLConv                    | Not supported |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | WLConvContinuous          | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | SuperGATConv              | Not supported |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | GeneralConv               | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | HGTConv                   | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | HeteroConv                | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | LGConv                    | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | PointGNNConv              | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | GPSConv                   | Not supported |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | RGATConv                  | Supported     | The ``attention_mechanism`` option                |
    |                               |                           |               | ``within-relation`` is not supported.             |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | FiLMConv                  | Supported     | ``num_relations`` cannot be greater than 1.       |
    |                               |                           |               |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | GCNConv                   | Supported     | ``add_self_loops`` must be set to False.          |
    |                               +---------------------------+               |                                                   |
    |                               | GravNetConv               |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | GATConv                   |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | GATv2Conv                 |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | AGNNConv                  |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | SGConv                    |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | SSGConv                   |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | FastRGCNConv              |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | SignedConv                |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | DNAConv                   |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | PointNetConv              |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | GMMConv                   |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | PPFConv                   |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | FeaStConv                 |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | PointTransformerConv      |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | GENConv                   |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | GCN2Conv                  |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | FAConv                    |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | EGConv                    |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | PDNConv                   |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | HEATConv                  |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | HANConv                   |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | AntiSymmetricConv         |               |                                                   |
    +-------------------------------+---------------------------+---------------+---------------------------------------------------+
    | Aggregation Layers            | MultiAggregation          | Supported     | ``dim_size`` is required.                         |
    |                               +---------------------------+               |                                                   |
    |                               | SumAggregation            |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | MeanAggregation           |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | MaxAggregation            |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | MinAggregation            |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | MulAggregation            |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | VarAggregation            |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | StdAggregation            |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | SoftmaxAggregation        |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | PowerMeanAggregation      |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | DeepSetsAggregation       |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | AttentionalAggregation    |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | Set2Set                   |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | DegreeScalerAggregation   |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | MedianAggregation         |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | QuantileAggregation       |               |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | SortAggregation           | Supported     | * ``dim_size`` is required.                       |
    |                               +---------------------------+               | * ``max_num_elements`` is required.               |
    |                               | LSTMAggregation           |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | MLPAggregation            |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | GRUAggregation            |               |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | SetTransformerAggregation | Not supported |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | GraphMultisetTransformer  | Not supported |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | EquilibriumAggregation    | Not supported |                                                   |
    +-------------------------------+---------------------------+---------------+---------------------------------------------------+
    | Normalization layers          | BatchNorm                 | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | HeteroBatchNorm           | Not supported |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | HeteroLayerNorm           | Not supported |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | InstanceNorm              | Supported     | ``batch_size`` is required.                       |
    |                               +---------------------------+               |                                                   |
    |                               | GraphNorm                 |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | LayerNorm                 |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | GraphSizeNorm             |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | PairNorm                  |               |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | MeanSubtractionNorm       | Supported     | ``dim_size`` is required.                         |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | MessageNorm               | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | DiffGroupNorm             | Supported     |                                                   |
    +-------------------------------+---------------------------+---------------+---------------------------------------------------+
    | Pooling layers                | Pooling                   | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | global_add_pool           | Supported     | ``size`` is required.                             |
    |                               +---------------------------+               |                                                   |
    |                               | global_mean_pool          |               |                                                   |
    |                               +---------------------------+               |                                                   |
    |                               | global_max_pool           |               |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | TopKPooling               | Not supported |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | PANPooling                | Not supported |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | SAGPooling                | Not supported |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | EdgePooling               | Not supported |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | ASAPooling                | Not supported |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | MemPooling                | Supported     | * ``batch_size`` is required.                     |
    |                               |                           |               | * ``max_num_nodes`` is required.                  |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | max_pool                  | Not supported |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | avg_pool                  | Not supported |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | consecutive_cluster       | Not supported |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | max_pool_neighbor_x       | Not supported |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | avg_pool_neighbor_x       | Not supported |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | max_pool_x                | Supported     | * ``batch_size`` is required.                     |
    |                               +---------------------------+               | * ``size`` is required.                           |
    |                               | avg_pool_x                |               |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | graclus                   | Not supported |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | voxel_grid                | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | fps                       | Supported     | * ``ptr`` is required.                            |
    |                               |                           |               | * ``batch`` has to be ``None``.                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | knn                       | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | knn_graph                 | Supported     | ``loop`` must be set to True.                     |
    |                               |                           |               |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | radius                    | Supported     | ``batch_size`` is required.                       |
    |                               +---------------------------+               |                                                   |
    |                               | radius_graph              |               |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | nearest                   | Supported     | * ``torch_cluster.nearest`` has to be replaced    |
    |                               |                           |               |   with ``poptorch.nearest``.                      |
    |                               |                           |               | * ``poptorch.nearest`` supports  arguments        |
    |                               |                           |               |   ``batch_x`` and ``batch_y`` in the original     |
    |                               |                           |               |   form of ``torch.Tensor`` plus a regular list.   |
    |                               |                           |               | * Validation of batch indices is NOT performed if |
    |                               |                           |               |   ``batch_x`` and ``batch_y`` are passed as       |
    |                               |                           |               |   ``torch.Tensor``.                               |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | decimation_indices        | Not supported |                                                   |
    +-------------------------------+---------------------------+---------------+---------------------------------------------------+
    | Unspooling layers             | knn_interpolate           | Supported     |                                                   |
    +-------------------------------+---------------------------+---------------+---------------------------------------------------+
    | Functional                    | bro                       | Not supported |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | gini                      | Supported     |                                                   |
    +-------------------------------+---------------------------+---------------+---------------------------------------------------+
    | Dense convolutional layers    | DenseGCNConv              | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | DenseGINConv              | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | DenseGraphConv            | Supported     |                                                   |
    +                               +---------------------------+---------------+---------------------------------------------------+
    |                               | DenseSAGEConv             | Supported     |                                                   |
    +                               +---------------------------+---------------+---------------------------------------------------+
    |                               | DenseGATConv              | TBD           |                                                   |
    +-------------------------------+---------------------------+---------------+---------------------------------------------------+
    | Dense pooling layers          | dense_diff_pool           | Not supported |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | dense_mincut_pool         | Not supported |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | DMoNPooling               | Not supported |                                                   |
    +-------------------------------+---------------------------+---------------+---------------------------------------------------+
    | Encoding                      | PositionalEncoding        | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | TemporalEncoding          | Supported     |                                                   |
    +-------------------------------+---------------------------+---------------+---------------------------------------------------+
    | KGE Models                    | TransE                    | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | ComplEx                   | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | DistMult                  | Supported     |                                                   |
    |                               +---------------------------+---------------+---------------------------------------------------+
    |                               | RotatE                    | Supported     |                                                   |
    +-------------------------------+---------------------------+---------------+---------------------------------------------------+
