gitextract_ur1femal/ ├── .ci/ │ └── view_component_trigger/ │ ├── Jenkinsfile │ └── jobs.groovy ├── .clang-format ├── .clang-tidy ├── .github/ │ ├── CODEOWNERS │ └── workflows/ │ └── apply_linters.yml ├── .gitignore ├── .pre-commit-config.yaml ├── .pylintrc ├── .style.yapf ├── CMakeLists.txt ├── License.txt ├── MANIFEST.in ├── README.md ├── config.buildenv.py ├── docs/ │ ├── common/ │ │ ├── _static/ │ │ │ └── css/ │ │ │ └── custom_rtd.css │ │ ├── conf.py │ │ └── custom_dic │ ├── poptorch_geometric/ │ │ ├── common/ │ │ │ └── conf.py │ │ └── user_guide/ │ │ ├── index.rst │ │ ├── installation.rst │ │ ├── intro.rst │ │ ├── legal.rst │ │ ├── performance.rst │ │ ├── reference.rst │ │ ├── supported_operations.rst │ │ └── tutorials.rst │ └── user_guide/ │ ├── CMakeLists.txt │ ├── api.py │ ├── batching.rst │ ├── buffers.py │ ├── debugging.py │ ├── debugging.rst │ ├── device_iterations.py │ ├── error_handling.py │ ├── example.rst │ ├── experimental.rst │ ├── hostio_optimisation.rst │ ├── index.rst │ ├── inferenceModel.py │ ├── installation.rst │ ├── intro.rst │ ├── legal.rst │ ├── mnist.py │ ├── overview.rst │ ├── phased_execution.py │ ├── pipeline_simple.py │ ├── poptorch.conf │ ├── poptorch_training_simple.py │ ├── precompilation.py │ ├── pytorch_to_poptorch.rst │ ├── reference.rst │ ├── replica_grouped_weights.py │ ├── sumAnchorReturnType.py │ ├── supported_ops.rst │ └── trainingModel.py ├── examples/ │ ├── CMakeLists.txt │ ├── bert_ipu.py │ ├── lstm.py │ ├── mnist.py │ └── simple_adder.py ├── popart_compiler/ │ ├── CMakeLists.txt │ ├── include/ │ │ └── popart_compiler/ │ │ ├── CodeletsCompilation.hpp │ │ ├── Compiler.hpp │ │ ├── CompilerOperationMacros.inc.hpp │ │ ├── ManuallyAddedOperations.inc.hpp │ │ ├── SupportedOperations.inc.hpp │ │ └── Utils.hpp │ ├── source/ │ │ ├── CodeletsCompilation.cpp │ │ ├── Compiler.cpp │ │ ├── CompilerImpl.cpp │ │ ├── SessionOptions.cpp │ │ ├── Utils.cpp │ │ ├── custom_operations/ │ │ │ ├── Embedding.cpp │ │ │ ├── FastGatherLastDim.cpp │ │ │ ├── FastGatherLastDim.hpp │ │ │ ├── FastGatherLastDimBwdCodelets.inc.cpp │ │ │ ├── FastGatherLastDimFwdCodelets.inc.cpp │ │ │ ├── HostOp.cpp │ │ │ ├── TorchSoftplus.cpp │ │ │ ├── TorchSoftplus.hpp │ │ │ ├── UpsampleBilinear2d.cpp │ │ │ └── UpsampleBilinear2dCodelets.inc.cpp │ │ └── include/ │ │ └── popart_compiler/ │ │ ├── CompilerImpl.hpp │ │ ├── CompilerOptions.hpp │ │ ├── CustomOps.hpp │ │ ├── MultiConvBuilder.hpp │ │ └── SessionOptionsImpl.hpp │ └── types/ │ └── include/ │ └── popart_compiler/ │ ├── CompilerTypes.hpp │ └── PopartEnums.hpp ├── poptorch/ │ ├── CMakeLists.txt │ ├── include/ │ │ └── poptorch/ │ │ ├── DispatchTracer.hpp │ │ ├── InplaceOps.hpp │ │ ├── LowerToPopart.hpp │ │ ├── LowerToPopartFactories.hpp │ │ ├── PoplarExecutable.hpp │ │ ├── SessionOptionsParser.hpp │ │ └── Utils.hpp │ └── source/ │ ├── AddDetachOperations.cpp │ ├── AddSubgraphConnectionNodes.cpp │ ├── AliasProcessing.cpp │ ├── CPUOffloadingCleanUp.cpp │ ├── CompilerOps.cpp.inc │ ├── ErrorOnUnsupportedAten.cpp │ ├── FixupSetAvailableMemory.cpp │ ├── GNNOptimizations.cpp │ ├── GatherWithExpandedIndicesOptimization.cpp │ ├── ImplicitCasting.cpp │ ├── InplaceOps.cpp │ ├── LowerToPopart.cpp │ ├── LowerToPopartFactories.cpp │ ├── OpBuilder.cpp │ ├── OverlappedIO.cpp │ ├── PopartCanonicalization.cpp │ ├── PopartLateCanonicalization.cpp │ ├── PoplarExecutable.cpp │ ├── PoptorchStaticInit.hpp │ ├── PoptorchSymbols.cpp │ ├── PoptorchSymbols.hpp │ ├── RemoveSurplusIdentityLosses.cpp │ ├── RequiresGrad.cpp │ ├── SessionOptionsParser.cpp │ ├── Utils.cpp │ ├── dispatch_tracer/ │ │ ├── CMakeLists.txt │ │ ├── CommonHelperFunctions.cpp │ │ ├── CommonHelperFunctions.hpp │ │ ├── InplaceAliasMapper.cpp │ │ ├── InplaceAliasMapper.hpp │ │ ├── README.md │ │ ├── RegisterAtenOverloads.cpp │ │ ├── RegisterMetaOps.cpp.inc │ │ ├── RegisterOptionalAtenOps.cpp.inc │ │ ├── Tensor.cpp │ │ ├── Tensor.hpp │ │ ├── TypeInferenceHandler.cpp │ │ ├── TypeInferenceHandler.hpp │ │ ├── ValueMapper.cpp │ │ ├── ValueMapper.hpp │ │ └── dispatchers/ │ │ ├── IDispatch.cpp │ │ ├── IDispatch.hpp │ │ ├── JitDispatch.cpp │ │ └── JitDispatch.hpp │ ├── include/ │ │ └── poptorch/ │ │ ├── AliasProcessing.hpp │ │ ├── CompilerOps.inc.hpp │ │ ├── ImplicitCasting.hpp │ │ ├── InplaceOpsPyTorch.hpp_nolint │ │ ├── OpBuilder.hpp │ │ ├── OverlappedIO.hpp │ │ ├── PopartCanonicalization.hpp │ │ ├── RequiresGrad.hpp │ │ └── TypeAndConstantCanonicalization.hpp │ ├── popart_canonicalization/ │ │ ├── ActivationOps.cpp │ │ ├── ArithmeticOps.cpp │ │ ├── AtenHandlers.gen.cpp │ │ ├── BilinearOps.cpp │ │ ├── BitwiseOps.cpp │ │ ├── BlasOps.cpp │ │ ├── ConstantOps.cpp │ │ ├── ConvolutionOps.cpp │ │ ├── CustomOps.cpp │ │ ├── DistanceOps.cpp │ │ ├── DropoutOps.cpp │ │ ├── EinsumOp.cpp │ │ ├── EinsumOp.hpp │ │ ├── EmbeddingOps.cpp │ │ ├── IndexOps.cpp │ │ ├── LossOps.cpp │ │ ├── NormalizationOps.cpp │ │ ├── OtherOps.cpp │ │ ├── PoolingOps.cpp │ │ ├── PopartCanonicalizationUtils.cpp │ │ ├── PopartCanonicalizationUtils.hpp │ │ ├── PoptorchHandlers.gen.cpp │ │ ├── PyGTorchScatterOps.cpp │ │ ├── PyGTorchSplineConvOps.cpp │ │ ├── RNNOps.cpp │ │ ├── RandomSamplingOps.cpp │ │ ├── ReduceOps.cpp │ │ ├── ReshapeOps.cpp │ │ ├── ScatterReduction.cpp │ │ ├── ScatterReduction.hpp │ │ ├── SliceOps.cpp │ │ ├── SoftmaxOps.cpp │ │ ├── TensorOps.cpp │ │ └── pyg_torch_cluster/ │ │ ├── FpsOp.cpp │ │ ├── GridOp.cpp │ │ └── NearestOp.cpp │ └── type_and_constant_canonicalization/ │ ├── AddListNumElements.cpp │ ├── CanonicaliseConstants.cpp │ ├── CastUnsupportedInputs.cpp │ ├── CheckAndChangeOutputTypes.cpp │ ├── EvaluateConstexprs.cpp │ └── MakeConstantIntParams.cpp ├── poptorch_compiler/ │ └── pytorch_bridge/ │ ├── CMakeLists.txt │ ├── IpuSession.cpp │ └── include/ │ └── pytorch_bridge/ │ ├── CompilerOptions.hpp │ ├── CompilerTypes.hpp │ ├── DebugInfo.hpp │ └── IpuSession.hpp ├── poptorch_err/ │ ├── CMakeLists.txt │ ├── exception_info/ │ │ └── poptorch_err/ │ │ └── ExceptionInfo.hpp │ ├── include/ │ │ └── poptorch_err/ │ │ └── ExceptionHandling.hpp │ └── source/ │ └── ExceptionHandling.cpp ├── poptorch_geometric/ │ ├── CMakeLists.txt │ ├── License.txt │ ├── MANIFEST.in │ ├── README.md │ ├── config.buildenv.py │ ├── poptorch_geometric_third_party_licenses.txt │ ├── pyproject.toml │ ├── python/ │ │ ├── CMakeLists.txt │ │ ├── __init__.py │ │ ├── cluster_loader.py │ │ ├── collate.py │ │ ├── common.py │ │ ├── dataloader.py │ │ ├── fixed_size_options.py │ │ ├── masker.py │ │ ├── neighbor_loader.py │ │ ├── ops/ │ │ │ ├── __init__.py │ │ │ ├── aggregation_base.py │ │ │ ├── cluster_gcn_conv.py │ │ │ ├── hetero_linear.py │ │ │ ├── instance_norm.py │ │ │ ├── knn.py │ │ │ ├── knn_graph.py │ │ │ ├── knn_interpolate.py │ │ │ ├── mf_conv.py │ │ │ └── radius.py │ │ ├── override.py │ │ ├── py.typed │ │ ├── pyg_cluster_loader.py │ │ ├── pyg_collate.py │ │ ├── pyg_dataloader.py │ │ ├── stream_packing_sampler.py │ │ ├── types.py │ │ └── utils.py │ ├── requirements.txt │ ├── setup.cfg │ └── setup.py ├── poptorch_logging/ │ ├── CMakeLists.txt │ ├── include/ │ │ └── poptorch_logging/ │ │ ├── Error.hpp │ │ ├── Logging.hpp │ │ ├── LoggingLight.hpp │ │ └── Tracepoint.hpp │ └── source/ │ ├── Error.cpp │ ├── Logging.cpp │ └── Tracepoint.cpp ├── poptorch_third_party_licenses.txt ├── pyproject.toml ├── python/ │ ├── CMakeLists.txt │ ├── __init__.py │ ├── _args_parser.py │ ├── _dataloader.py │ ├── _impl.py │ ├── _logging.py │ ├── _optimizer_attributes.py │ ├── _options_config.py │ ├── _options_impl.py │ ├── _poplar_executor.py │ ├── _poptorch_data.py │ ├── _printing.py │ ├── _utils.py │ ├── enums.py │ ├── ops.py │ ├── optim.py │ ├── options.py │ ├── poptorch.cpp │ ├── profiling.py │ ├── py.typed │ └── testing.py ├── requirements.txt ├── scripts/ │ ├── PopAtenHandlers.py │ ├── PopParse.py │ ├── PopTorchHandlers.py │ ├── __init__.py │ ├── apply_linters.py │ ├── check_spelling.py │ ├── create_buildenv.py │ ├── docs_build.py │ ├── download_external_datasets.py │ ├── enable.sh.in │ ├── generate_poppyg_package.py │ ├── generate_python_package.py │ ├── popgen/ │ │ ├── __init__.py │ │ ├── api.py │ │ ├── generator.py │ │ ├── helpers.py │ │ ├── onnx.py │ │ ├── operatorfactory.py │ │ ├── poptorch.py │ │ ├── registry.py │ │ ├── transform.py │ │ └── values.py │ ├── set_version.py │ └── utils/ │ └── _utils.py ├── setup.cfg ├── setup.py ├── tests/ │ ├── .gitignore │ ├── CMakeLists.txt │ ├── activations_test.py │ ├── attach_detach_test.py │ ├── attach_detach_wait_for_ipu_test.py │ ├── batching_test.py │ ├── bert_small_and_medium_test.py │ ├── blas_test.py │ ├── bool_support_test.py │ ├── buffers_test.py │ ├── conftest.py │ ├── convs_test.py │ ├── cpp/ │ │ ├── CMakeLists.txt │ │ └── GNNOptimizationsTest.cpp │ ├── cpu_op_test.py │ ├── ctc_decoder_test.py │ ├── custom_loss_test.py │ ├── custom_ops/ │ │ ├── CMakeLists.txt │ │ ├── custom_add_scalar_op.cpp │ │ ├── custom_add_scalar_vec_op.cpp │ │ ├── custom_add_vec_scalar_mul_op.cpp │ │ ├── custom_cube_op.cpp │ │ ├── custom_leaky_relu_op.cpp │ │ ├── custom_many_attribute_op.cpp │ │ ├── custom_reduce_op.cpp │ │ └── custom_three_input_reduce_op.cpp │ ├── custom_ops_attributes_test.py │ ├── custom_ops_test.py │ ├── dataloader_test.py │ ├── debug_tensors_test.py │ ├── distance_ops_test.py │ ├── exception_test.py │ ├── fine_tuning_test.py │ ├── functional_test.py │ ├── generate_test_file.py │ ├── gnn/ │ │ ├── .gitignore │ │ ├── benchgnn/ │ │ │ ├── README.md │ │ │ ├── benchgnn.py │ │ │ ├── datasets.py │ │ │ ├── models.py │ │ │ ├── requirements.txt │ │ │ └── utils.py │ │ ├── benchgnn_ops/ │ │ │ ├── README.md │ │ │ ├── benchgnn_ops.py │ │ │ ├── builder.py │ │ │ ├── example_configs/ │ │ │ │ ├── common.yaml │ │ │ │ ├── scatter_testcase1.yaml │ │ │ │ └── scatter_testcase2.yaml │ │ │ ├── metrics.py │ │ │ ├── ops.py │ │ │ └── requirements.txt │ │ ├── conftest.py │ │ ├── nn/ │ │ │ ├── aggr/ │ │ │ │ ├── aggr_utils.py │ │ │ │ ├── conftest.py │ │ │ │ ├── test_attention.py │ │ │ │ ├── test_basic.py │ │ │ │ ├── test_deep_sets.py │ │ │ │ ├── test_equilibrium.py │ │ │ │ ├── test_fused.py │ │ │ │ ├── test_gmt.py │ │ │ │ ├── test_gru.py │ │ │ │ ├── test_lstm.py │ │ │ │ ├── test_mlp_aggr.py │ │ │ │ ├── test_multi.py │ │ │ │ ├── test_quantile.py │ │ │ │ ├── test_scaler.py │ │ │ │ ├── test_set2set.py │ │ │ │ ├── test_set_transformer.py │ │ │ │ └── test_sort.py │ │ │ ├── conftest.py │ │ │ ├── conv/ │ │ │ │ ├── conv_utils.py │ │ │ │ ├── test_agnn_conv.py │ │ │ │ ├── test_antisymmetric_conv.py │ │ │ │ ├── test_appnp.py │ │ │ │ ├── test_arma_conv.py │ │ │ │ ├── test_cg_conv.py │ │ │ │ ├── test_cheb_conv.py │ │ │ │ ├── test_cluster_gcn_conv.py │ │ │ │ ├── test_dna_conv.py │ │ │ │ ├── test_edge_conv.py │ │ │ │ ├── test_eg_conv.py │ │ │ │ ├── test_fa_conv.py │ │ │ │ ├── test_feast_conv.py │ │ │ │ ├── test_film_conv.py │ │ │ │ ├── test_gat_conv.py │ │ │ │ ├── test_gated_graph_conv.py │ │ │ │ ├── test_gatv2_conv.py │ │ │ │ ├── test_gcn2_conv.py │ │ │ │ ├── test_gcn_conv.py │ │ │ │ ├── test_gen_conv.py │ │ │ │ ├── test_general_conv.py │ │ │ │ ├── test_gin_conv.py │ │ │ │ ├── test_gmm_conv.py │ │ │ │ ├── test_gps_conv.py │ │ │ │ ├── test_graph_conv.py │ │ │ │ ├── test_gravnet_conv.py │ │ │ │ ├── test_han_conv.py │ │ │ │ ├── test_heat_conv.py │ │ │ │ ├── test_hetero_conv.py │ │ │ │ ├── test_hgt_conv.py │ │ │ │ ├── test_hypergraph_conv.py │ │ │ │ ├── test_le_conv.py │ │ │ │ ├── test_lg_conv.py │ │ │ │ ├── test_mf_conv.py │ │ │ │ ├── test_nn_conv.py │ │ │ │ ├── test_pan_conv.py │ │ │ │ ├── test_pdn_conv.py │ │ │ │ ├── test_pna_conv.py │ │ │ │ ├── test_point_conv.py │ │ │ │ ├── test_point_gnn_conv.py │ │ │ │ ├── test_point_transformer_conv.py │ │ │ │ ├── test_ppf_conv.py │ │ │ │ ├── test_res_gated_graph_conv.py │ │ │ │ ├── test_rgat_conv.py │ │ │ │ ├── test_rgcn_conv.py │ │ │ │ ├── test_sage_conv.py │ │ │ │ ├── test_sg_conv.py │ │ │ │ ├── test_signed_conv.py │ │ │ │ ├── test_simple_conv.py │ │ │ │ ├── test_spline_conv.py │ │ │ │ ├── test_ssg_conv.py │ │ │ │ ├── test_supergat_conv.py │ │ │ │ ├── test_tag_conv.py │ │ │ │ ├── test_transformer_conv.py │ │ │ │ ├── test_wl_conv.py │ │ │ │ ├── test_wl_conv_continuous.py │ │ │ │ └── test_x_conv.py │ │ │ ├── dense/ │ │ │ │ ├── dense_utils.py │ │ │ │ └── test_convs.py │ │ │ ├── functional/ │ │ │ │ ├── test_bro.py │ │ │ │ └── test_gini.py │ │ │ ├── kge/ │ │ │ │ ├── kge_utils.py │ │ │ │ ├── test_complex.py │ │ │ │ ├── test_distmult.py │ │ │ │ ├── test_rotate.py │ │ │ │ └── test_transe.py │ │ │ ├── nn_utils.py │ │ │ ├── norm/ │ │ │ │ ├── norm_utils.py │ │ │ │ ├── test_batch_norm.py │ │ │ │ ├── test_diff_group_norm.py │ │ │ │ ├── test_graph_norm.py │ │ │ │ ├── test_graph_size_norm.py │ │ │ │ ├── test_instance_norm.py │ │ │ │ ├── test_layer_norm.py │ │ │ │ ├── test_mean_subtraction_norm.py │ │ │ │ ├── test_msg_norm.py │ │ │ │ └── test_pair_norm.py │ │ │ ├── pool/ │ │ │ │ ├── pool_utils.py │ │ │ │ ├── test_asap.py │ │ │ │ ├── test_avg_pool.py │ │ │ │ ├── test_consecutive.py │ │ │ │ ├── test_decimation.py │ │ │ │ ├── test_edge_pool.py │ │ │ │ ├── test_fps.py │ │ │ │ ├── test_glob.py │ │ │ │ ├── test_graclus.py │ │ │ │ ├── test_max_pool.py │ │ │ │ ├── test_mem_pool.py │ │ │ │ ├── test_pan_pool.py │ │ │ │ ├── test_pool_knn.py │ │ │ │ ├── test_radius.py │ │ │ │ ├── test_sag_pool.py │ │ │ │ ├── test_select_topk.py │ │ │ │ ├── test_topk_pool.py │ │ │ │ └── test_voxel_grid.py │ │ │ ├── test_linear.py │ │ │ ├── test_loss.py │ │ │ ├── test_mish.py │ │ │ ├── test_sequential.py │ │ │ └── unpool/ │ │ │ └── test_interpolate.py │ │ ├── ops/ │ │ │ ├── test_knn.py │ │ │ ├── test_knn_graph.py │ │ │ ├── test_knn_interpolate.py │ │ │ ├── test_nearest.py │ │ │ ├── test_radius_op.py │ │ │ ├── test_spline_conv_ops.py │ │ │ └── test_to_dense_batch.py │ │ ├── test_basic_gnn.py │ │ ├── test_cluster_loader.py │ │ ├── test_collate.py │ │ ├── test_dataloader.py │ │ ├── test_encoding.py │ │ ├── test_fixed_size_options.py │ │ ├── test_masker.py │ │ ├── test_model_args.py │ │ ├── test_neighbor_loader.py │ │ ├── test_register_custom_args.py │ │ ├── test_stream_packing_sampler.py │ │ └── utils.py │ ├── grouping_scatters_gathers_test.py │ ├── gru_test.py │ ├── half_float_test.py │ ├── half_test.py │ ├── helpers.py │ ├── hooks_test.py │ ├── if_test.py │ ├── index_ops_test.py │ ├── inplace_test.py │ ├── inputs_test.py │ ├── io_performance_test.py │ ├── ipu_print_tensor_test.py │ ├── loop_test.py │ ├── losses_test.py │ ├── lstm_test.py │ ├── math_ops_test.py │ ├── misc_nn_layers_test.py │ ├── misc_test.py │ ├── multiconv_test.py │ ├── non_contiguous_tensors_test.py │ ├── norms_test.py │ ├── ops_test.py │ ├── optimizers_test.py │ ├── options_test.py │ ├── other_ops_test.py │ ├── outputs_test.py │ ├── overlapped_io_test.py │ ├── phased_execution_test.py │ ├── pipelining_test.py │ ├── pooling_and_padding_test.py │ ├── popdist_test.py │ ├── poplar_executor_test.py │ ├── precompilation_test.py │ ├── pyg_torch_scatter_test.py │ ├── random_sampling_test.py │ ├── reduce_ops_test.py │ ├── replicated_graph_test.py │ ├── requires_grad_test.py │ ├── rnn_test.py │ ├── sharding_test.py │ ├── slice_test.py │ ├── tensor_ops_test.py │ ├── test_doc_urls.py │ ├── test_perf_counters.py │ ├── timeout_handler.py │ ├── torch_nn_test.py │ ├── torchvision_inference_test.py │ ├── type_support_test.py │ └── weights_writing_test.py └── version.json