diff --git a/.gitattributes b/.gitattributes index 85e98cd02acf3ed8109002e809a77f9f5a27ad41..f042243c1a2ae6ba66a93506213827ed8a82a8e9 100644 --- a/.gitattributes +++ b/.gitattributes @@ -131,3 +131,5 @@ outputs/audit_venv/lib/python3.11/site-packages/torch/lib/libtorch_cpu.so filter outputs/audit_venv/lib/python3.11/site-packages/torch/lib/libtorch_cuda.so filter=lfs diff=lfs merge=lfs -text outputs/audit_venv/lib/python3.11/site-packages/torch/lib/libtorch_cuda_linalg.so filter=lfs diff=lfs merge=lfs -text outputs/audit_venv/lib/python3.11/site-packages/torch/lib/libtorch_python.so filter=lfs diff=lfs merge=lfs -text +outputs/audit_venv/lib/python3.11/site-packages/yaml/_yaml.cpython-311-x86_64-linux-gnu.so filter=lfs diff=lfs merge=lfs -text +outputs/external_vla_export_maniskill_full_no_images/train.jsonl filter=lfs diff=lfs merge=lfs -text diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch-2.12.1+computecanada.dist-info/INSTALLER b/outputs/audit_venv/lib/python3.11/site-packages/torch-2.12.1+computecanada.dist-info/INSTALLER new file mode 100644 index 0000000000000000000000000000000000000000..a1b589e38a32041e49332e5e81c2d363dc418d68 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch-2.12.1+computecanada.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch-2.12.1+computecanada.dist-info/METADATA b/outputs/audit_venv/lib/python3.11/site-packages/torch-2.12.1+computecanada.dist-info/METADATA new file mode 100644 index 0000000000000000000000000000000000000000..446cb82e5521ece54e8d24efc9bf14f5f4530276 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch-2.12.1+computecanada.dist-info/METADATA @@ -0,0 +1,48 @@ +Metadata-Version: 2.2 +Name: torch +Version: 2.12.1+computecanada +Summary: Tensors and Dynamic neural networks in Python with strong GPU acceleration +Description-Content-Type: text/markdown +Keywords: pytorch,machine learning +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: Intended Audience :: Education +Classifier: Intended Audience :: Science/Research +Classifier: Topic :: Scientific/Engineering +Classifier: Topic :: Scientific/Engineering :: Mathematics +Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence +Classifier: Topic :: Software Development +Classifier: Topic :: Software Development :: Libraries +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Programming Language :: C++ +Classifier: Programming Language :: Python :: 3 :: Only +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 +Classifier: Programming Language :: Python :: 3.14 +Author-email: PyTorch Team +Project-URL: Homepage, https://pytorch.org +Project-URL: Repository, https://github.com/pytorch/pytorch +Project-URL: Documentation, https://pytorch.org/docs +Project-URL: Issue Tracker, https://github.com/pytorch/pytorch/issues +Project-URL: Forum, https://discuss.pytorch.org +Requires-Python: >=3.10 +Requires-Dist: filelock +Requires-Dist: typing-extensions>=4.10.0 +Requires-Dist: setuptools<82 +Requires-Dist: sympy>=1.13.3 +Requires-Dist: networkx>=2.5.1 +Requires-Dist: jinja2 +Requires-Dist: fsspec>=0.8.5 +Requires-Dist: optree>=0.13.0; extra == "optree" +Requires-Dist: opt-einsum>=3.3; extra == "opt-einsum" +Requires-Dist: pyyaml; extra == "pyyaml" +Provides-Extra: optree +Provides-Extra: opt-einsum +Provides-Extra: pyyaml +License-File: LICENSE +License-File: NOTICE +Dynamic: license-file + +BSD-3-Clause \ No newline at end of file diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch-2.12.1+computecanada.dist-info/RECORD b/outputs/audit_venv/lib/python3.11/site-packages/torch-2.12.1+computecanada.dist-info/RECORD new file mode 100644 index 0000000000000000000000000000000000000000..7ae1ddfabca66638f8a7f41de29fb843923d1b28 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch-2.12.1+computecanada.dist-info/RECORD @@ -0,0 +1,14122 @@ +../../../bin/torchrun,sha256=xtDxWRTFNFAQ6Nyvi66oy9VkeAQx3X12VXDTB-EPyE0,271 +functorch/__init__.py,sha256=NAwGN21zq-tccaF-ROtv-VWFoPdb7y9iuAt6Hy6QCtc,1037 +functorch/__pycache__/__init__.cpython-311.pyc,, +functorch/_src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +functorch/_src/__pycache__/__init__.cpython-311.pyc,, +functorch/_src/aot_autograd/__init__.py,sha256=SGo7gh6XGYcOxTGf5g-R8Y9AF95ICcJbQwQD6rFyrpQ,291 +functorch/_src/aot_autograd/__pycache__/__init__.cpython-311.pyc,, +functorch/_src/eager_transforms/__init__.py,sha256=kX_52fDvSX9YX9OAwo5bjvJtrxyjEBUJ1PueW8xgsuw,291 +functorch/_src/eager_transforms/__pycache__/__init__.cpython-311.pyc,, +functorch/_src/make_functional/__init__.py,sha256=b3y8s3KhtCqFB8lM4Pi48AwuztUt7NBK-VISZNJYYjw,235 +functorch/_src/make_functional/__pycache__/__init__.cpython-311.pyc,, +functorch/_src/vmap/__init__.py,sha256=k8r2Esz6tB5D7U_UA0_BCDaWoOmn8JNVrRqK7nG7_fM,467 +functorch/_src/vmap/__pycache__/__init__.cpython-311.pyc,, +functorch/compile/__init__.py,sha256=fZnNG56VBLfKlXMqX5Rj3tORQYLyxbyoA0rEoEBt3KM,756 +functorch/compile/__pycache__/__init__.cpython-311.pyc,, +functorch/dim/__init__.py,sha256=uQEKMitItfVkGFolejbBM4RhfVUe1pbCiFbC5B9bdgY,53600 +functorch/dim/__pycache__/__init__.cpython-311.pyc,, +functorch/dim/__pycache__/_dim_entry.cpython-311.pyc,, +functorch/dim/__pycache__/_enable_all_layers.cpython-311.pyc,, +functorch/dim/__pycache__/_getsetitem.cpython-311.pyc,, +functorch/dim/__pycache__/_order.cpython-311.pyc,, +functorch/dim/__pycache__/_py_inst_decoder.cpython-311.pyc,, +functorch/dim/__pycache__/_tensor_info.cpython-311.pyc,, +functorch/dim/__pycache__/_wrap.cpython-311.pyc,, +functorch/dim/__pycache__/magic_trace.cpython-311.pyc,, +functorch/dim/__pycache__/op_properties.cpython-311.pyc,, +functorch/dim/__pycache__/wrap_type.cpython-311.pyc,, +functorch/dim/_dim_entry.py,sha256=cceDVoHZemWMtW72AoGJCpZBp_lyOSDCdABJ29RLbmQ,3884 +functorch/dim/_enable_all_layers.py,sha256=xKbVnuuh2MhC7GjZLDGpk_DD-wyMT-uDBBgVU-KSuCs,5220 +functorch/dim/_getsetitem.py,sha256=8dL1J7e2wvUx7xw9r-Ffunn075fjK82CX94RHGtxbgY,19039 +functorch/dim/_order.py,sha256=0n1ew1EHEQZnpxiwC0_k7vkno5-wLiOfRkhnKhYut04,7011 +functorch/dim/_py_inst_decoder.py,sha256=OUIOiKA0zZ2C3b8iCRgD9woShn1VkHNrJRVXneJa40E,2091 +functorch/dim/_tensor_info.py,sha256=eXHojr8bOn-1N5vkWVDIlmpp7o9iwCexXxAP4vXL4A4,2098 +functorch/dim/_wrap.py,sha256=NaV0AQZx0yDRw_37U4jfSS_B_ko9XHUqdocz7XHPu2Q,8385 +functorch/dim/magic_trace.py,sha256=spyJfvOiY6sUnfiDwLGE2Pejv5DyFSnZBmbio0nh1iA,1547 +functorch/dim/op_properties.py,sha256=GpW8Ylgq1YlMilQh6cgNQ66tAiN84WRyEjn_VkbJYFQ,6687 +functorch/dim/wrap_type.py,sha256=haCYf-nAHCw236O1jh8GHjFgmzDNKrltdNvtVG7y7pU,2090 +functorch/einops/__init__.py,sha256=qNdomhBnsKNuNNlGsbqqipT9wYQkcxMuEQJKq4zhry8,59 +functorch/einops/__pycache__/__init__.cpython-311.pyc,, +functorch/einops/__pycache__/_parsing.cpython-311.pyc,, +functorch/einops/__pycache__/rearrange.cpython-311.pyc,, +functorch/einops/_parsing.py,sha256=yjwK7zoSov-VRwJzYZsGDQ-rBFb5RCApZ6Dln9Y2NIE,12208 +functorch/einops/rearrange.py,sha256=_8jfWFNnN16v6C3qeDX8LItay8Iqp7UvfJs3DAjbjis,8123 +functorch/experimental/__init__.py,sha256=qgO0Y4xqrtxucMbH-Q__wtJGvzRk9ckQIqo7E94-ROA,274 +functorch/experimental/__pycache__/__init__.cpython-311.pyc,, +functorch/experimental/__pycache__/control_flow.cpython-311.pyc,, +functorch/experimental/__pycache__/ops.cpython-311.pyc,, +functorch/experimental/control_flow.py,sha256=CyLqEoRLJT5fSnwcTrmw_3LQk9SD54fJElQ4stSD_64,144 +functorch/experimental/ops.py,sha256=kDGcckdoYwOg9fS4JqvZnsIt8Ss9O6RGeasJSyi0OUY,57 +torch-2.12.1+computecanada.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +torch-2.12.1+computecanada.dist-info/METADATA,sha256=Tc7PPsbXv1ASN-PnwNPLetj0Z5Scn3R42VTq0cXoZ8s,1959 +torch-2.12.1+computecanada.dist-info/RECORD,, +torch-2.12.1+computecanada.dist-info/WHEEL,sha256=dCAA691vV7BW_aZWazBJJ5ldVUtr6Pzmdb_zOoyLvl4,99 +torch-2.12.1+computecanada.dist-info/entry_points.txt,sha256=omsXNYssMtT87QYPUINGtY0zX0MwdqjL08dLZcvRnHk,148 +torch-2.12.1+computecanada.dist-info/licenses/LICENSE,sha256=vQGP7viCXogYHITrfjqk6vuPCKINn9bvlIVpYQxKPkM,3464 +torch-2.12.1+computecanada.dist-info/licenses/NOTICE,sha256=wsx78MrsdlLCtGCopHC-oWd_JB5KuOQx3zTPF_Wp_sA,23632 +torch-2.12.1+computecanada.dist-info/top_level.txt,sha256=Hv8AT5yFnStBq__ugW6DV18rPKJVgZB4vVyHcFKQmVw,15 +torch/_C.cpython-311-x86_64-linux-gnu.so,sha256=OCW85N0gMyML7aXWizvi48zX371th6cvJigkasVaJb4,22104 +torch/_C/_VariableFunctions.pyi,sha256=_5kG2AX7ZlFlqQGjzj3xy7AQUTsYKVZ02E9MbymNTaA,1209737 +torch/_C/__init__.pyi,sha256=l4Mq3oHa0ssdoAsNfDTdMI3o6SoVJed2f7-eVeUXwzs,419415 +torch/_C/_acc/__init__.pyi,sha256=YrGID2b-0nfrv2Kqozt-brcNB3Prd_a1PPaa2TFWy5A,568 +torch/_C/_aoti.pyi,sha256=gP8rTuk9mN1ZLsy43cpaitglNYOPbjfGGSW3F1e0wQU,6015 +torch/_C/_autograd.pyi,sha256=fEMVOqEgDDRZ_T6kDrgIB9CkdPqUwVc6mBFw-jJuSLw,5699 +torch/_C/_cpu.pyi,sha256=zLjxjpuOW1VCoe99C3I-HOf7b6FzfARkPO-JktJOCcU,174 +torch/_C/_cudnn.pyi,sha256=m4nyLKmUJTRrcb-e94ghGbQ7D_Y1E7eqzueyH6QeANs,317 +torch/_C/_cusparselt.pyi,sha256=kD30gidilch4jKuIr7-ItTvDuEtt6L7vxL1l56sb_mw,32 +torch/_C/_distributed.pyi,sha256=qXyYUT8V9MPMXhx38eU0YD6CvaqS4CLvWMrEmuDqWj4,598 +torch/_C/_distributed_autograd.pyi,sha256=brb51Q-9UlMWCs4Aoy7ZLHH4hwhYq0acXm_hgfz_5HA,899 +torch/_C/_distributed_c10d.pyi,sha256=Kzxn7RKcqPlqOoRTbS2ReoLMLcET25APwLTIQQ8jYoM,27012 +torch/_C/_distributed_rpc.pyi,sha256=0mlTwOqrF608gU4oUnIPc25nQ4zeJ6LWycHcuyfB3e8,6080 +torch/_C/_distributed_rpc_testing.pyi,sha256=2cUz7bIO5y9fKUzfafx6Uh84QNO10gtP3uJXAXmE8Dk,1017 +torch/_C/_dynamo/__init__.pyi,sha256=Me61v9GA3oBVWBDhoEO8SenUDFzmX_Mdc992qH4Dros,1592 +torch/_C/_dynamo/compiled_autograd.pyi,sha256=zbX2AKKVEX1yzpOsa2xIcoDBFM7YBpKSNPJjEsCOTZU,522 +torch/_C/_dynamo/eval_frame.pyi,sha256=2BZrPmlZQMMb0uA6oJEj_V9Jos6wHmOwZRDYBwD_4RM,3371 +torch/_C/_dynamo/guards.pyi,sha256=doDOQZ9sPDGkJe8tHXzbtmkt5djZlSbo1zRfYU4wJG4,14782 +torch/_C/_export/__init__.pyi,sha256=CUcMBKNDN_31e66pbRuZ9O8ilVR4-RSKAeMFRfRIxS8,257 +torch/_C/_export/pt2_archive_constants.pyi,sha256=8oIuaAUlGzny2thjeDhwuFKAk3WXi1yxnRkIijnDgN8,788 +torch/_C/_functionalization.pyi,sha256=z-v6deG3dIJsP-wV8sIZ022eu18T-yefDV20qN2wAA0,566 +torch/_C/_functions.pyi,sha256=0aapmQmjpa_pFZT_BWhddVB8jZh0DVLDKzXlWqYfz0k,608 +torch/_C/_functorch.pyi,sha256=u6CKxd5xb4JbK71Z8vaRlJp2yD73S0tzApCTgWZWpg8,3835 +torch/_C/_instruction_counter.pyi,sha256=xjwkiHBgXbvN8Iw7UNVEvE2YDJKFUU1_EoeTS4prCV8,109 +torch/_C/_itt.pyi,sha256=6fhhHGYgreXbGka-VtqX9FjjPaSznfOmDHPVC171DII,169 +torch/_C/_jit_tree_views.pyi,sha256=StShF20JIzi3BtE05CREHBAXWXGbmmMo7pWKR2EHuRw,5498 +torch/_C/_lazy.pyi,sha256=h8_ZY1JSJTiGebWekqfMvfFGZdt_g8dqFq90TG0-7hI,1015 +torch/_C/_lazy_ts_backend.pyi,sha256=YfYcEssTgLqOHQqUDYg5ZgbdB_D52mG19VETBmh7yuc,326 +torch/_C/_monitor.pyi,sha256=ND1PrgzrSUMGCBd50Hyz8M-mz2uJRNyFU_RGxSgx3kc,1447 +torch/_C/_nn.pyi,sha256=86kZpQcxqoHBkhynAgBuPUk0ZKQc5xJ0sZtID1N_ah0,9741 +torch/_C/_nvtx.pyi,sha256=MzekiGde65H1P_cJ_zER9kjXVRDW12eNtXUeItZG3WA,380 +torch/_C/_onnx.pyi,sha256=7xxwokJOBBQxnbox3lGLgMo9RkVGVgtfPBtsKcaGaTE,710 +torch/_C/_profiler.pyi,sha256=vwO83UhNl0kEbtahhkqU9JnyRvkNvzMT_wi3gZ5bINg,6301 +torch/_C/_verbose.pyi,sha256=vMdQYMqABMqBFxYykp8_VD0QBaubolczBmCEv-UcA00,134 +torch/_C_flatbuffer/__init__.pyi,sha256=SdmD2nh01AdVYvwMJeo32D5BJW2Ar2pvjQTup0uBIko,544 +torch/_VF.py,sha256=XIfh8pIjzvG0ySWcOScz4E067DFoT-8TkcmAG5oYn94,664 +torch/_VF.pyi,sha256=_5kG2AX7ZlFlqQGjzj3xy7AQUTsYKVZ02E9MbymNTaA,1209737 +torch/__config__.py,sha256=VCuBweOjH807O10Xrumlb_BrtWNTQMYIGjb3aw6T2po,574 +torch/__future__.py,sha256=yk9l_KWsfVIzUBx9cGr-OdtWmb-pI8ZhcROAm3a_FQw,3185 +torch/__init__.py,sha256=2d__S3XUbkx1VyIAo0ZrcCMdBbAxjjisG9EheJFl-0k,109312 +torch/__pycache__/_VF.cpython-311.pyc,, +torch/__pycache__/__config__.cpython-311.pyc,, +torch/__pycache__/__future__.cpython-311.pyc,, +torch/__pycache__/__init__.cpython-311.pyc,, +torch/__pycache__/_appdirs.cpython-311.pyc,, +torch/__pycache__/_classes.cpython-311.pyc,, +torch/__pycache__/_compile.cpython-311.pyc,, +torch/__pycache__/_custom_ops.cpython-311.pyc,, +torch/__pycache__/_environment.cpython-311.pyc,, +torch/__pycache__/_guards.cpython-311.pyc,, +torch/__pycache__/_jit_internal.cpython-311.pyc,, +torch/__pycache__/_linalg_utils.cpython-311.pyc,, +torch/__pycache__/_lobpcg.cpython-311.pyc,, +torch/__pycache__/_lowrank.cpython-311.pyc,, +torch/__pycache__/_meta_registrations.cpython-311.pyc,, +torch/__pycache__/_namedtensor_internals.cpython-311.pyc,, +torch/__pycache__/_opaque_base.cpython-311.pyc,, +torch/__pycache__/_ops.cpython-311.pyc,, +torch/__pycache__/_python_dispatcher.cpython-311.pyc,, +torch/__pycache__/_size_docs.cpython-311.pyc,, +torch/__pycache__/_sources.cpython-311.pyc,, +torch/__pycache__/_storage_docs.cpython-311.pyc,, +torch/__pycache__/_streambase.cpython-311.pyc,, +torch/__pycache__/_tensor.cpython-311.pyc,, +torch/__pycache__/_tensor_docs.cpython-311.pyc,, +torch/__pycache__/_tensor_str.cpython-311.pyc,, +torch/__pycache__/_thread_safe_fork.cpython-311.pyc,, +torch/__pycache__/_torch_docs.cpython-311.pyc,, +torch/__pycache__/_utils.cpython-311.pyc,, +torch/__pycache__/_utils_internal.cpython-311.pyc,, +torch/__pycache__/_vmap_internals.cpython-311.pyc,, +torch/__pycache__/_weights_only_unpickler.cpython-311.pyc,, +torch/__pycache__/functional.cpython-311.pyc,, +torch/__pycache__/hub.cpython-311.pyc,, +torch/__pycache__/library.cpython-311.pyc,, +torch/__pycache__/overrides.cpython-311.pyc,, +torch/__pycache__/quasirandom.cpython-311.pyc,, +torch/__pycache__/random.cpython-311.pyc,, +torch/__pycache__/return_types.cpython-311.pyc,, +torch/__pycache__/serialization.cpython-311.pyc,, +torch/__pycache__/storage.cpython-311.pyc,, +torch/__pycache__/torch_version.cpython-311.pyc,, +torch/__pycache__/types.cpython-311.pyc,, +torch/__pycache__/version.cpython-311.pyc,, +torch/_appdirs.py,sha256=oTDrdoBwt0m-Vb27B8Bu3rfMYN6l7QBHeJepRqO_kL8,26198 +torch/_awaits/__init__.py,sha256=nAHROtkm0lmScDGnnEY5qGqK7W0ylL4NCutPDu3_lF4,1687 +torch/_awaits/__pycache__/__init__.cpython-311.pyc,, +torch/_classes.py,sha256=DbPcMC4o_QhQZeoog84z-kr0Brn9FDnypDHwU-mnZLk,1786 +torch/_compile.py,sha256=ssdSFpLJtFRF2DcQ3gPhYgV40s7ypu6T7Ao_rj3B0nc,1994 +torch/_custom_op/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/_custom_op/__pycache__/__init__.cpython-311.pyc,, +torch/_custom_op/__pycache__/autograd.cpython-311.pyc,, +torch/_custom_op/__pycache__/impl.cpython-311.pyc,, +torch/_custom_op/autograd.py,sha256=ZtdjgZGheZ05fEyoB2Ue1f7nG3bikm5OpuMqMMUU1t0,12453 +torch/_custom_op/impl.py,sha256=3KAT0KL9fu-jpi99oL4KzdW-aWwbw-hLf1Wj784F6Zg,27419 +torch/_custom_ops.py,sha256=DyTzqyo_fZ582qmMiyfoLdT9-cAnor776dgqb_GhPIo,12824 +torch/_decomp/__init__.py,sha256=3eDHJ6rhyvJj-drGvr9kR6YQ60xM-PeqkaG7nBrscKM,19768 +torch/_decomp/__pycache__/__init__.cpython-311.pyc,, +torch/_decomp/__pycache__/decompositions.cpython-311.pyc,, +torch/_decomp/__pycache__/decompositions_for_jvp.cpython-311.pyc,, +torch/_decomp/__pycache__/decompositions_for_rng.cpython-311.pyc,, +torch/_decomp/decompositions.py,sha256=wfnK8Lz2AslMdYJkPuYafOPwXWittnKK8ITS1e-Sr_o,195777 +torch/_decomp/decompositions_for_jvp.py,sha256=C1DRcZOhDs87-gqfk26RULAMKx1_XJXzSG3fafEtAFw,11975 +torch/_decomp/decompositions_for_rng.py,sha256=4XNVPJhy02PLLaycLTwCrl_xQ5WRnqEvuvPF-wkURrk,9547 +torch/_dispatch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/_dispatch/__pycache__/__init__.cpython-311.pyc,, +torch/_dispatch/__pycache__/python.cpython-311.pyc,, +torch/_dispatch/python.py,sha256=tlR8LSP57-9WLKmyhISGRJmL-WewqtYe-krGz6x5cl4,7505 +torch/_dynamo/__init__.py,sha256=KSlJ5foy3SHr5Ue62WOwqTr28WdGZvnCRWIFyzFwNhE,7603 +torch/_dynamo/__pycache__/__init__.cpython-311.pyc,, +torch/_dynamo/__pycache__/_trace_wrapped_higher_order_op.cpython-311.pyc,, +torch/_dynamo/__pycache__/aot_compile.cpython-311.pyc,, +torch/_dynamo/__pycache__/aot_compile_types.cpython-311.pyc,, +torch/_dynamo/__pycache__/bytecode_analysis.cpython-311.pyc,, +torch/_dynamo/__pycache__/bytecode_debugger.cpython-311.pyc,, +torch/_dynamo/__pycache__/bytecode_transformation.cpython-311.pyc,, +torch/_dynamo/__pycache__/cache_size.cpython-311.pyc,, +torch/_dynamo/__pycache__/callback.cpython-311.pyc,, +torch/_dynamo/__pycache__/code_context.cpython-311.pyc,, +torch/_dynamo/__pycache__/codegen.cpython-311.pyc,, +torch/_dynamo/__pycache__/compiled_autograd.cpython-311.pyc,, +torch/_dynamo/__pycache__/comprehension_graph_break.cpython-311.pyc,, +torch/_dynamo/__pycache__/comptime.cpython-311.pyc,, +torch/_dynamo/__pycache__/config.cpython-311.pyc,, +torch/_dynamo/__pycache__/convert_frame.cpython-311.pyc,, +torch/_dynamo/__pycache__/create_parameter_op.cpython-311.pyc,, +torch/_dynamo/__pycache__/current_scope_id.cpython-311.pyc,, +torch/_dynamo/__pycache__/dce_extra_outputs.cpython-311.pyc,, +torch/_dynamo/__pycache__/debug_utils.cpython-311.pyc,, +torch/_dynamo/__pycache__/decorators.cpython-311.pyc,, +torch/_dynamo/__pycache__/device_interface.cpython-311.pyc,, +torch/_dynamo/__pycache__/distributed.cpython-311.pyc,, +torch/_dynamo/__pycache__/dynamo_profiler.cpython-311.pyc,, +torch/_dynamo/__pycache__/eval_frame.cpython-311.pyc,, +torch/_dynamo/__pycache__/exc.cpython-311.pyc,, +torch/_dynamo/__pycache__/external_utils.cpython-311.pyc,, +torch/_dynamo/__pycache__/funcname_cache.cpython-311.pyc,, +torch/_dynamo/__pycache__/functional_export.cpython-311.pyc,, +torch/_dynamo/__pycache__/graph_break_hints.cpython-311.pyc,, +torch/_dynamo/__pycache__/graph_bytecode_inputs.cpython-311.pyc,, +torch/_dynamo/__pycache__/graph_deduplication.cpython-311.pyc,, +torch/_dynamo/__pycache__/graph_id_filter.cpython-311.pyc,, +torch/_dynamo/__pycache__/graph_region_tracker.cpython-311.pyc,, +torch/_dynamo/__pycache__/graph_utils.cpython-311.pyc,, +torch/_dynamo/__pycache__/guards.cpython-311.pyc,, +torch/_dynamo/__pycache__/hooks.cpython-311.pyc,, +torch/_dynamo/__pycache__/logging.cpython-311.pyc,, +torch/_dynamo/__pycache__/metrics_context.cpython-311.pyc,, +torch/_dynamo/__pycache__/mutation_guard.cpython-311.pyc,, +torch/_dynamo/__pycache__/output_graph.cpython-311.pyc,, +torch/_dynamo/__pycache__/package.cpython-311.pyc,, +torch/_dynamo/__pycache__/pgo.cpython-311.pyc,, +torch/_dynamo/__pycache__/precompile_context.cpython-311.pyc,, +torch/_dynamo/__pycache__/profiler.cpython-311.pyc,, +torch/_dynamo/__pycache__/replay_record.cpython-311.pyc,, +torch/_dynamo/__pycache__/resume_execution.cpython-311.pyc,, +torch/_dynamo/__pycache__/side_effects.cpython-311.pyc,, +torch/_dynamo/__pycache__/source.cpython-311.pyc,, +torch/_dynamo/__pycache__/symbolic_convert.cpython-311.pyc,, +torch/_dynamo/__pycache__/tensor_version_op.cpython-311.pyc,, +torch/_dynamo/__pycache__/test_case.cpython-311.pyc,, +torch/_dynamo/__pycache__/test_dont_skip_tracing_functions.cpython-311.pyc,, +torch/_dynamo/__pycache__/test_minifier_common.cpython-311.pyc,, +torch/_dynamo/__pycache__/testing.cpython-311.pyc,, +torch/_dynamo/__pycache__/trace_rules.cpython-311.pyc,, +torch/_dynamo/__pycache__/types.cpython-311.pyc,, +torch/_dynamo/__pycache__/utils.cpython-311.pyc,, +torch/_dynamo/_trace_wrapped_higher_order_op.py,sha256=05E245ft09YIqDnPjdeVIna1tIA2NGEJDcV7vuSeFnY,9806 +torch/_dynamo/aot_compile.py,sha256=J3qgsI4aeyEtEVr25gcW0I97hu0qIpj4Jg6vz91SKtU,19671 +torch/_dynamo/aot_compile_types.py,sha256=drBq7dXHLqT2X3buLJeLcXhwlUP-ZffL_4WivNZveGE,8184 +torch/_dynamo/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/_dynamo/backends/__pycache__/__init__.cpython-311.pyc,, +torch/_dynamo/backends/__pycache__/common.cpython-311.pyc,, +torch/_dynamo/backends/__pycache__/cudagraphs.cpython-311.pyc,, +torch/_dynamo/backends/__pycache__/debugging.cpython-311.pyc,, +torch/_dynamo/backends/__pycache__/distributed.cpython-311.pyc,, +torch/_dynamo/backends/__pycache__/inductor.cpython-311.pyc,, +torch/_dynamo/backends/__pycache__/onnxrt.cpython-311.pyc,, +torch/_dynamo/backends/__pycache__/registry.cpython-311.pyc,, +torch/_dynamo/backends/__pycache__/tensorrt.cpython-311.pyc,, +torch/_dynamo/backends/__pycache__/torchxla.cpython-311.pyc,, +torch/_dynamo/backends/__pycache__/tvm.cpython-311.pyc,, +torch/_dynamo/backends/common.py,sha256=Ok3aUAUqICLj7Wd6mx8N7h0SwtVVVLrbka2jMAeu3Dk,6439 +torch/_dynamo/backends/cudagraphs.py,sha256=0z5DwRcwxCS9WPUguV8y1oa8fLFneDpjz1H7k5CQxtQ,10194 +torch/_dynamo/backends/debugging.py,sha256=9ZSUQ0EaOVC_DN610x4weuPrYn4lRkL9kDzGpAFIMP8,25394 +torch/_dynamo/backends/distributed.py,sha256=F_I-dcA1MyVySQhT4IxyTLJFPMWzjcF43r7m04Gmq8g,28490 +torch/_dynamo/backends/inductor.py,sha256=fSjxEorULdmCAxVxMoNcBTvTtzEpGJv-WHUTHvTE7QU,1104 +torch/_dynamo/backends/onnxrt.py,sha256=KMF_RHHh_JSV8W5pNXvtM_EiLcMdBWpfNF5iruUwyIg,1623 +torch/_dynamo/backends/registry.py,sha256=HV_eE6UlsTSgWYskx8sC34PZmHCUhU5dLtw2QsCvp8U,6506 +torch/_dynamo/backends/tensorrt.py,sha256=dxRCaQgNbw8Ly0SgGSOK7At2OANtvCe5mSHpAjvEqYM,383 +torch/_dynamo/backends/torchxla.py,sha256=o75DfoFrS6htTH1SfFx50Nu8xLWhT0hGvzoBnXfHpcU,1551 +torch/_dynamo/backends/tvm.py,sha256=BW7XT2H0wq7StneIE40TtgdH_sqeFa4hAHsq2Yp278I,7203 +torch/_dynamo/bytecode_analysis.py,sha256=keVsj6_DkVRJDeR9Xg1dwOmOJXDbshHdoO-Eeezzst8,9189 +torch/_dynamo/bytecode_debugger.py,sha256=fyPVm7sY0mbS8MrEEJLotYUvyVTylXpjlntK4UzZ-Tg,46481 +torch/_dynamo/bytecode_transformation.py,sha256=0U2PjnsGYOq7o2J2_GaeSi9SlFhRHODh8cvRYe8lPkA,68253 +torch/_dynamo/cache_size.py,sha256=VieF2JDo0IuHQA5Vs9A3QXJ0sBk2tuK9YKFEqIIGUGU,7963 +torch/_dynamo/callback.py,sha256=h_CPUwJLNeMpqVNBnYzsX9aV5Kk9_3gBzhTNh687Kog,5622 +torch/_dynamo/code_context.py,sha256=MXMoP-r7lN4jFHKLUDopun0ZJE98RC1VA0St0geTbuc,1863 +torch/_dynamo/codegen.py,sha256=rNor5x9ZhX8HRpfnXrOxN1iNz1LAqJl2rNdBVPSqooc,29906 +torch/_dynamo/compiled_autograd.py,sha256=cxM7aABQXm-pLlYtOyJWDISU_e5-4Tk97x3e9ae2EBs,64937 +torch/_dynamo/comprehension_graph_break.py,sha256=aEnaK3bKNHSiDceSdsMU98IqahDHmaDx3ymxUXWlf-g,24748 +torch/_dynamo/comptime.py,sha256=qYJNutWbkahnp7w95TW9OcbnGoU-jpw1ry68V5uZbL4,15354 +torch/_dynamo/config.py,sha256=itTc-drddHoO4FUGaWA_PYKegTluuXxn9gksG18DvXQ,40386 +torch/_dynamo/convert_frame.py,sha256=asbSRoqEcbEh_fWpeT94aWBfR44zda9OIBVcfqtFvCg,94367 +torch/_dynamo/create_parameter_op.py,sha256=hHU3LYMbZvgOTK9tVKMFXsgzf4yxHT50_B18xjDW350,2591 +torch/_dynamo/current_scope_id.py,sha256=CD2PnuBjVr2ns7_oNaPg6djM5wa-qNIaJYLFA4uThUo,1433 +torch/_dynamo/dce_extra_outputs.py,sha256=M10Drw4FDORgzG6NgRz_cyVe-6hjHyX7XnsJcxneTdk,7974 +torch/_dynamo/debug_utils.py,sha256=dKy7Wr6eEDvJdMEmGe-UzOIPBQiHYnO1j8HxjNxYGKg,33878 +torch/_dynamo/decorators.py,sha256=53ChXoi6R0-vz_yDIg-x6sI32EaGTFXZsE0Ixh85rMQ,65479 +torch/_dynamo/device_interface.py,sha256=8j3zk_P9iD4TDofk5jnzG4PpRx-RdlASNHwrDTV-9hM,23249 +torch/_dynamo/distributed.py,sha256=kCIL8k3R4XreKtF3LxKSeAQyC8rhoRKSul54Ztqvy-Y,1629 +torch/_dynamo/dynamo_profiler.py,sha256=1KH6CZ3fYA5IHUc3gNUnFGDtiIfn-N5ojP7fBzaO7JU,15231 +torch/_dynamo/eval_frame.py,sha256=5r-20_Ivh5Y1sddwLltKSPBR8kiV_30bxOzDiLO-EQA,105018 +torch/_dynamo/exc.py,sha256=RDDN-0HT7Bzfh9_uMXxQ8l-v-4pSy4qTWagU1AlQMc4,29791 +torch/_dynamo/external_utils.py,sha256=gfcDoEoscYCqysTTh6qYFxbOESGSKiGzmHVrWM2x5VA,9560 +torch/_dynamo/funcname_cache.py,sha256=N_JK8IaQU12eNjMJcuZxdAoOUDp-UYHtnoqnKM-kFkM,2517 +torch/_dynamo/functional_export.py,sha256=8hQ9FPpIOvdE_QUjRPfnXncbAH1uval_C5Bh7Q9Gkmg,39507 +torch/_dynamo/graph_break_hints.py,sha256=iqxvoIxyIrQEVZBAgTy4wwIt7cmn1wGFhTPxTKJjtjw,1657 +torch/_dynamo/graph_break_registry.json,sha256=W6qFGfVDWeOVbYW3QmAM3b78d6whZG5zielpa4l5us4,215929 +torch/_dynamo/graph_bytecode_inputs.py,sha256=nLYNmROoe9yjpJdOYL1qNgBUU9hSh55TYDeFIbmUFh0,3857 +torch/_dynamo/graph_deduplication.py,sha256=VhMHaHkeGAZr6h-22Wj_rUsf2ucn0mEFHIWyV12clEI,23476 +torch/_dynamo/graph_id_filter.py,sha256=Vj9-tVjVxCftBvh5UftAtyO1SZFBwoGYPEgGqQvEbYM,16016 +torch/_dynamo/graph_region_tracker.py,sha256=Zs0HlmBYHECjBV_O2QJlhmtuTK5tYyW6TM22ZPD2LZU,18567 +torch/_dynamo/graph_utils.py,sha256=GtBsKm5KiFeMfNwEhi7eDWEQcAZhHL0revRzgW-1pRw,3687 +torch/_dynamo/guards.py,sha256=gjRvIUFigFL4d6wovL74I0uw7OuDhuupRyKlgxMJKns,215410 +torch/_dynamo/hooks.py,sha256=prkixNTkyo9iZjlpdftr3ang4UR0t9bgdJ3jYoN1Q7k,891 +torch/_dynamo/logging.py,sha256=ltvH1A9WYtIDZkqFODBbBVglBybJpRFDj79gyYjyclM,2215 +torch/_dynamo/metrics_context.py,sha256=6SJ4moK3KY23u_i9Z1ke-DLKra-G9HIzELj1z25_kcY,8888 +torch/_dynamo/mutation_guard.py,sha256=qF01zB224O4SHvAGYEAPIkoOiUVJCzNcgTX3pkOfinU,5111 +torch/_dynamo/output_graph.py,sha256=W3TYFT825KEFsc1gWA6VZ_zdXcU9ZM74pmBg1haCDLQ,195336 +torch/_dynamo/package.py,sha256=kKs-5Ll0poUJfsWpXnhjwn1frJ9SH070v6LccIrI-tw,44020 +torch/_dynamo/pgo.py,sha256=Wjo1IuslvQ2h0t1iOtROJ5gBe4zqNPe12VjfPnnsnG4,38486 +torch/_dynamo/polyfills/__init__.py,sha256=HP74YiSD7K0RifXR-zxAbl-Y-PyWeuFSAqFMFq2JMBI,22235 +torch/_dynamo/polyfills/__pycache__/__init__.cpython-311.pyc,, +torch/_dynamo/polyfills/__pycache__/_collections.cpython-311.pyc,, +torch/_dynamo/polyfills/__pycache__/builtins.cpython-311.pyc,, +torch/_dynamo/polyfills/__pycache__/copy.cpython-311.pyc,, +torch/_dynamo/polyfills/__pycache__/functools.cpython-311.pyc,, +torch/_dynamo/polyfills/__pycache__/fx.cpython-311.pyc,, +torch/_dynamo/polyfills/__pycache__/heapq.cpython-311.pyc,, +torch/_dynamo/polyfills/__pycache__/itertools.cpython-311.pyc,, +torch/_dynamo/polyfills/__pycache__/loader.cpython-311.pyc,, +torch/_dynamo/polyfills/__pycache__/operator.cpython-311.pyc,, +torch/_dynamo/polyfills/__pycache__/os.cpython-311.pyc,, +torch/_dynamo/polyfills/__pycache__/pytree.cpython-311.pyc,, +torch/_dynamo/polyfills/__pycache__/struct.cpython-311.pyc,, +torch/_dynamo/polyfills/__pycache__/sys.cpython-311.pyc,, +torch/_dynamo/polyfills/__pycache__/tensor.cpython-311.pyc,, +torch/_dynamo/polyfills/__pycache__/torch_c_nn.cpython-311.pyc,, +torch/_dynamo/polyfills/__pycache__/traceback.cpython-311.pyc,, +torch/_dynamo/polyfills/_collections.py,sha256=RHkqS80la8AfbmHThq2HnoYN0BQ_HAtELrKDqWs2Bfg,662 +torch/_dynamo/polyfills/builtins.py,sha256=rfm3SBtDmXnQrRAvGYQljOtNKlLD5NE3Xem1lwgdVgg,3824 +torch/_dynamo/polyfills/copy.py,sha256=7q1StrjPFgz0fNtBMEg2gZyYWb7eGFEhgHPqufBlCSc,884 +torch/_dynamo/polyfills/functools.py,sha256=FQxB7yVCzn-IMzkjNDOVKDVYU_7BYvFIEEAt2a15h2s,961 +torch/_dynamo/polyfills/fx.py,sha256=nyQ9cjgpBs8c8KvPwfSXTs6ItDGE1swv2k3-rXhROrU,1350 +torch/_dynamo/polyfills/heapq.py,sha256=xwQLTlK-joqIDFRK7qEToXKn1NB04NmRD9gLWqkVS_E,3291 +torch/_dynamo/polyfills/itertools.py,sha256=EPOtEak1SK-pPXBylS_M3m4t06mgILv8OB_UhNSui50,9809 +torch/_dynamo/polyfills/loader.py,sha256=ZQJl16LmQXmRDjRawjWHslOtGCXBPAYDOY_frrtjsgk,1430 +torch/_dynamo/polyfills/operator.py,sha256=R9SU3Vz9riZBeCWzBjNAGJ5bkEEyl9LTNLqL858VFeA,3455 +torch/_dynamo/polyfills/os.py,sha256=XaGG7-4htiZnKr8cgpMClZRHqP1PFIqtjPGNaAbEJo0,1016 +torch/_dynamo/polyfills/pytree.py,sha256=fP8FrxZYZiMZuMuk9LD_lHZJnZUhMOD1kku0leor8m8,24429 +torch/_dynamo/polyfills/struct.py,sha256=JortoCie90NJhYDWVfmWOHQbyCPPlhEQMCMoAntrrMg,618 +torch/_dynamo/polyfills/sys.py,sha256=haOwDvxbbAK3V48lPa6Gy-T93E5TeNZsTca6IwgVkA0,947 +torch/_dynamo/polyfills/tensor.py,sha256=u5La8g1ucxhI_dzLNZsLCjGeyfesGr-117D-dNzfrME,1404 +torch/_dynamo/polyfills/torch_c_nn.py,sha256=8flz-dvgV45P7mYfEcQ4X5yg_38M8pM6Lpnk4kuDrjM,4097 +torch/_dynamo/polyfills/traceback.py,sha256=Q24-9F_v8VX7ho-xcQZeNGYggkxN3dB0g6dI_BXa-Mc,1127 +torch/_dynamo/precompile_context.py,sha256=wHzjTD4BMmN3IosSebFnKZFNRRv_ANM3Rl5qHy9M10M,7744 +torch/_dynamo/profiler.py,sha256=fgeOGbE0NI_eUOpIlyVmRffhSfFJ5icbZsXp9fRBc0A,5841 +torch/_dynamo/replay_record.py,sha256=YEpUmH6bsgSNTGE2ToVmft5ZA5DKqEuPCyfpeMR1bvQ,4370 +torch/_dynamo/repro/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/_dynamo/repro/__pycache__/__init__.cpython-311.pyc,, +torch/_dynamo/repro/__pycache__/after_aot.cpython-311.pyc,, +torch/_dynamo/repro/__pycache__/after_dynamo.cpython-311.pyc,, +torch/_dynamo/repro/__pycache__/aoti.cpython-311.pyc,, +torch/_dynamo/repro/after_aot.py,sha256=E1bFTupD6C13gwVqW9hgLcruYWWbqm8aA6F8G7A22Ks,53714 +torch/_dynamo/repro/after_dynamo.py,sha256=SOGlLKKDY9W_NOHP-HtoPSWpRJiBQNbJ0WOVP7-bCok,22174 +torch/_dynamo/repro/aoti.py,sha256=RgxRkdsx8CuvmtI4Y9JdcGxLnqzVWjfTll22FtInd4k,22388 +torch/_dynamo/resume_execution.py,sha256=gBp6Qp6u0D3WsafHxdGR4Ph3ODYpjy1odm_s5WB6PpU,31059 +torch/_dynamo/side_effects.py,sha256=eK22SRKiS5BAII4UOZ4kCK8jaOBv-TJViEwAn5TxatQ,66218 +torch/_dynamo/source.py,sha256=02Owxkrj147apSkI5iA37SWWxw5xCUg37h-he9psExE,43285 +torch/_dynamo/symbolic_convert.py,sha256=aKVcyjjA4drmXNaKizyEkTLt_D6Uw1gjMP7ep_gQnzw,237477 +torch/_dynamo/tensor_version_op.py,sha256=-Jrhyh-ymNeWkx1AHblVtM81Gga5hyZ7rVQ9WjvnH8Y,2735 +torch/_dynamo/test_case.py,sha256=-pnlqO0CMUE_hUF6MgtWVt4ZZqmYtM0GFPFdHYvoIWs,8368 +torch/_dynamo/test_dont_skip_tracing_functions.py,sha256=v8sCtPbLM_cEgEXvKUvtwoVnclOjJkaDcVDYgBWL5Ww,817 +torch/_dynamo/test_minifier_common.py,sha256=-VjhygJ06RvGqXSICyZdNhR23mHH2kYhCVEEAO9IO44,12640 +torch/_dynamo/testing.py,sha256=urUKAA2_PQnDnYXftpb8W1fpRSKNP7yjMjIx1doxM0w,19302 +torch/_dynamo/trace_rules.py,sha256=bjx8emCNakAnuk3kLCitlh1_nsVOkTOHZU8K_2K5oD0,162486 +torch/_dynamo/types.py,sha256=d98_zxvBonjVMrNmB0FWb7Tujdkz9a-8Gjn7e27UOZA,4142 +torch/_dynamo/utils.py,sha256=5wPYv5thvYW1MNzw80zUEujgmUcsvmMXgt4uI-FhR20,188223 +torch/_dynamo/variables/__init__.py,sha256=fxqFL7d7cJGer_QrZ4pl9905z0FaAd1FhWdflUPjrqw,7630 +torch/_dynamo/variables/__pycache__/__init__.cpython-311.pyc,, +torch/_dynamo/variables/__pycache__/base.cpython-311.pyc,, +torch/_dynamo/variables/__pycache__/builder.cpython-311.pyc,, +torch/_dynamo/variables/__pycache__/builtin.cpython-311.pyc,, +torch/_dynamo/variables/__pycache__/constant.cpython-311.pyc,, +torch/_dynamo/variables/__pycache__/ctx_manager.cpython-311.pyc,, +torch/_dynamo/variables/__pycache__/dicts.cpython-311.pyc,, +torch/_dynamo/variables/__pycache__/distributed.cpython-311.pyc,, +torch/_dynamo/variables/__pycache__/functions.cpython-311.pyc,, +torch/_dynamo/variables/__pycache__/hashable.cpython-311.pyc,, +torch/_dynamo/variables/__pycache__/higher_order_ops.cpython-311.pyc,, +torch/_dynamo/variables/__pycache__/invoke_subgraph.cpython-311.pyc,, +torch/_dynamo/variables/__pycache__/iter.cpython-311.pyc,, +torch/_dynamo/variables/__pycache__/lazy.cpython-311.pyc,, +torch/_dynamo/variables/__pycache__/lists.cpython-311.pyc,, +torch/_dynamo/variables/__pycache__/misc.cpython-311.pyc,, +torch/_dynamo/variables/__pycache__/nn_module.cpython-311.pyc,, +torch/_dynamo/variables/__pycache__/object_protocol.cpython-311.pyc,, +torch/_dynamo/variables/__pycache__/optimizer.cpython-311.pyc,, +torch/_dynamo/variables/__pycache__/script_object.cpython-311.pyc,, +torch/_dynamo/variables/__pycache__/sdpa.cpython-311.pyc,, +torch/_dynamo/variables/__pycache__/sets.cpython-311.pyc,, +torch/_dynamo/variables/__pycache__/streams.cpython-311.pyc,, +torch/_dynamo/variables/__pycache__/tensor.cpython-311.pyc,, +torch/_dynamo/variables/__pycache__/torch.cpython-311.pyc,, +torch/_dynamo/variables/__pycache__/torch_function.cpython-311.pyc,, +torch/_dynamo/variables/__pycache__/user_defined.cpython-311.pyc,, +torch/_dynamo/variables/base.py,sha256=zUC6YX446F0RIcd60-G1jN48Jyqw0sneDSgGu8gVp2o,46061 +torch/_dynamo/variables/builder.py,sha256=QHjp3Zto4TZvuyXBdssFRyjKD5bV-G6_jM7MlrSIqco,191678 +torch/_dynamo/variables/builtin.py,sha256=rwh8ATU-T9w2I9ejeS7RuBJVkkiYPZR3bip74Ep8ooo,134882 +torch/_dynamo/variables/constant.py,sha256=YIkxRe5S4IdA7pHgwwlMr1dwFBg8HF3ZH4osjhrTiZ0,18857 +torch/_dynamo/variables/ctx_manager.py,sha256=hQmYk5Ayhu99Kj9j0l_D8DQLN7qdMwvFDNwKUteErHg,60377 +torch/_dynamo/variables/dicts.py,sha256=4_YHyRrHj_vITsO-pVDgtc0ra-q6LTJFG1CC4sSZ1To,57901 +torch/_dynamo/variables/distributed.py,sha256=GsueUEmJyf6rXabi7AogMKnDr1DafXjHnlTxRK0x5u8,8957 +torch/_dynamo/variables/functions.py,sha256=41O7VtgrwAKVEV76uL5aXG7Qyj7j_RNG2Wih7sBFAgQ,140002 +torch/_dynamo/variables/hashable.py,sha256=nn93HnM8yPS9UDu68SSVc4XeqqASXQ7gC49EJpkPpow,5476 +torch/_dynamo/variables/higher_order_ops.py,sha256=QeBxRQ054dAo68uvI3fD1ilPapPOvWHmR5PX0hIvFxQ,222601 +torch/_dynamo/variables/invoke_subgraph.py,sha256=c3iIOCUwrYndPwizg1vIfutzbHuIIEVIsSaStv_eKms,54018 +torch/_dynamo/variables/iter.py,sha256=m_RHXmoZOfwID42J7SyttZ_LqkxVN_519IfBwdTzKV8,23666 +torch/_dynamo/variables/lazy.py,sha256=VSdSv4TxtWvh8RDt3Jl44NGScCTCjvQMEwM3SKRNgsI,10600 +torch/_dynamo/variables/lists.py,sha256=UaKpmBjTpAywhtABZR37rZ8UW-aFwXqIVdq1ZXsc9Pc,65791 +torch/_dynamo/variables/misc.py,sha256=J8DRqVVo6NHGdJd0lCwdF_CZR7V5bxYZeUz69oshYTY,97222 +torch/_dynamo/variables/nn_module.py,sha256=vDwXNztsq7tfFQcBj4LgiaEdbGyTLamTsH5k_pai9gY,60199 +torch/_dynamo/variables/object_protocol.py,sha256=2lugmmULuAmg61o2h-tnAvDZOClgqaVhhjaIrMv7IlA,11384 +torch/_dynamo/variables/optimizer.py,sha256=FHWz85gE2dL9QXJaostyrh1-mYz_pbOXNifqojApbEU,17876 +torch/_dynamo/variables/script_object.py,sha256=-xyQn7oYvUGe9efLwdOJ0FZA8Tckfdob4JorMVJrtMw,21327 +torch/_dynamo/variables/sdpa.py,sha256=TCcZ_4qj7alBMoZiM5yVGIv28oon93PfnwyezWp0_l4,3049 +torch/_dynamo/variables/sets.py,sha256=mWeCsgk8poL7ziGJv6pvPb8RTQgv9PcHkV8SrgbLNps,29347 +torch/_dynamo/variables/streams.py,sha256=riWBzrd3nZy-dN437VWIDzhGunYyIFqS5_4GdnRmG3Y,23796 +torch/_dynamo/variables/tensor.py,sha256=5zU3VA9eUqjkaj-bDMjW5uc0qzhk2xbxjj7_b5Jjdmc,106637 +torch/_dynamo/variables/torch.py,sha256=3HyY3qwiOLCZMx3GjZQNskhceXx0xndalzKVDgrvLzg,149387 +torch/_dynamo/variables/torch_function.py,sha256=Da3eF8D34Z_7S_G9kZleVJ7bpCuxQPSxcoSY4R_ZAys,28632 +torch/_dynamo/variables/user_defined.py,sha256=f5QjX5oimTxyqcpdpsEavy8EEYX6g_r7UHqtWgYLu7g,144845 +torch/_environment.py,sha256=pDUFrq8tC8SqJTir9Q3Vr01UbYCYH-2KEJbleFrV0FQ,133 +torch/_export/__init__.py,sha256=jHjsuXiPAKHY3YZqRsc-ir5VA109_FngyZYnE3yiQJk,6753 +torch/_export/__pycache__/__init__.cpython-311.pyc,, +torch/_export/__pycache__/config.cpython-311.pyc,, +torch/_export/__pycache__/converter.cpython-311.pyc,, +torch/_export/__pycache__/error.cpython-311.pyc,, +torch/_export/__pycache__/non_strict_utils.cpython-311.pyc,, +torch/_export/__pycache__/pass_base.cpython-311.pyc,, +torch/_export/__pycache__/tools.cpython-311.pyc,, +torch/_export/__pycache__/utils.cpython-311.pyc,, +torch/_export/__pycache__/verifier.cpython-311.pyc,, +torch/_export/__pycache__/wrappers.cpython-311.pyc,, +torch/_export/config.py,sha256=eqicgOdgNXZ_txD6gBpZ4bDgJ0SMlGhV2eWpv6CNvdA,1410 +torch/_export/converter.py,sha256=dtBqLdYJX5I4Wppn5UTe2rfPuiAHjW-5-ipUClf07-g,65079 +torch/_export/db/__init__.py,sha256=a3XxW1RcNAPwEVaI2g11hpnJvSHxGUFsGmDAWfDnLP8,206 +torch/_export/db/__pycache__/__init__.cpython-311.pyc,, +torch/_export/db/__pycache__/case.cpython-311.pyc,, +torch/_export/db/__pycache__/gen_example.cpython-311.pyc,, +torch/_export/db/__pycache__/logging.cpython-311.pyc,, +torch/_export/db/case.py,sha256=nHiUtUtBGliPIKjHI07ZBUq6NE6Re4qwIZEsF66ZPpg,5199 +torch/_export/db/examples/__init__.py,sha256=PlziokXeStI1gWELwC7zX-T7ZViONPRitQ1uFWNAxL4,1648 +torch/_export/db/examples/__pycache__/__init__.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/assume_constant_result.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/autograd_function.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/class_method.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/cond_branch_class_method.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/cond_branch_nested_function.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/cond_branch_nonlocal_variables.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/cond_closed_over_variable.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/cond_operands.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/cond_predicate.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/constrain_as_size_example.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/constrain_as_value_example.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/decorator.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/dictionary.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/dynamic_shape_assert.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/dynamic_shape_constructor.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/dynamic_shape_if_guard.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/dynamic_shape_map.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/dynamic_shape_round.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/dynamic_shape_slicing.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/dynamic_shape_view.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/fn_with_kwargs.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/list_contains.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/list_unpack.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/model_attr_mutation.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/nested_function.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/null_context_manager.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/optional_input.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/pytree_flatten.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/scalar_output.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/specialized_attribute.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/static_for_loop.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/static_if.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/tensor_setattr.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/type_reflection_method.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/unsupported_operator.cpython-311.pyc,, +torch/_export/db/examples/__pycache__/user_input_mutation.cpython-311.pyc,, +torch/_export/db/examples/assume_constant_result.py,sha256=MPGQemV_ymD07kXuOVQkizSxTaTlu4vr2bAP3xxE3M8,510 +torch/_export/db/examples/autograd_function.py,sha256=byZs2M2TE3nU9a_UM3LMZw4gf-iFCsAok-wnqxAGah4,652 +torch/_export/db/examples/class_method.py,sha256=KM6pkWdEc1SMybUR-O2hCN1tD9Vl0B22gPI2LgDiZZ4,499 +torch/_export/db/examples/cond_branch_class_method.py,sha256=PpspYrzN3LBl0CIuGjjZon6rGQeQ32YtaIqbpRDbFyc,1327 +torch/_export/db/examples/cond_branch_nested_function.py,sha256=HgN_wnbfzoATNkD7ksQSwdo6PVhiIP5RqneZvGSTxeQ,1302 +torch/_export/db/examples/cond_branch_nonlocal_variables.py,sha256=B_ROqnPdNhhy7zbP9cyqLUl1LgDgAYYGSr8EyNRiy-M,1841 +torch/_export/db/examples/cond_closed_over_variable.py,sha256=iSWSxhJhumU6CsRSzXUeW7YVxbgjf-C05EDc0Foi-a4,547 +torch/_export/db/examples/cond_operands.py,sha256=mBIzaZy_VYUzNWS8aqrTCPwUM1qbUPlJWXX4oWYgJGE,799 +torch/_export/db/examples/cond_predicate.py,sha256=PKpI-GKAdVMDh11EDIpQ3JXvRMXNGuJTKXbGb_uyQjY,663 +torch/_export/db/examples/constrain_as_size_example.py,sha256=13bb0R9cuRWRNYgEFfSe8AkQdgf39zvf5EDvhIVXJhw,515 +torch/_export/db/examples/constrain_as_value_example.py,sha256=XtZLDWMmL1hOZPqtNbOIUYQ6FNX24_jMvu7Uzq9sXDw,571 +torch/_export/db/examples/decorator.py,sha256=U5YTo_25VfE_Hy9uoD4eYN8wKSJGpOG0dAJ1TZjL1i4,480 +torch/_export/db/examples/dictionary.py,sha256=gSkKkS68Vw_cropGQ57i61jqTleFsLECIXP6pZMqLBE,404 +torch/_export/db/examples/dynamic_shape_assert.py,sha256=5ORg04FDKJb0rEmBVlsliyeNDerTuCDANWJbHz6_nr4,478 +torch/_export/db/examples/dynamic_shape_constructor.py,sha256=68CRA-j59c0dPBc5hOBsEBmWpWz0opzovyqGIaTfKuw,396 +torch/_export/db/examples/dynamic_shape_if_guard.py,sha256=VG6YmeK31p2jwLPG_Ci3VWmWUMQnJIp_IuijY_UY-dU,560 +torch/_export/db/examples/dynamic_shape_map.py,sha256=XN8_Et1EVYaxmdnACPkiDAVJZ3jkYRaj9U6mU44ZntM,454 +torch/_export/db/examples/dynamic_shape_round.py,sha256=sMyW43DVXFtZa6jFO08XxVjyw06LcJ9oyuJH5jAsG4Q,525 +torch/_export/db/examples/dynamic_shape_slicing.py,sha256=Rowy_RfPf1kW1l_oCp71YVflt2ivhpP1u_HzTEupxQA,388 +torch/_export/db/examples/dynamic_shape_view.py,sha256=fEuSTQRghtJY8VcBi7qwiZTQXwd9ux8d1PRBYw6Qd6E,444 +torch/_export/db/examples/fn_with_kwargs.py,sha256=fEndpGN__D456vh3NAamoK1KdmtEyvmAsW0gZB0TExo,731 +torch/_export/db/examples/list_contains.py,sha256=lzzkGcg6YoDeFDRh7GlY6BlmQoeA8aVfSFu-1FoiMhk,519 +torch/_export/db/examples/list_unpack.py,sha256=u7tczh6wbR1PoYQxuRPpsSfxgMiGhu4VocA50ZrwKFw,568 +torch/_export/db/examples/model_attr_mutation.py,sha256=wIrxdizyoC1EGByE4THkYXbDPw6Vh86lphvh_OR9kug,628 +torch/_export/db/examples/nested_function.py,sha256=S-MXIlaFn4RGeA4GEFIEHG-pcM9WBznXN3E2k-sDlZo,491 +torch/_export/db/examples/null_context_manager.py,sha256=LM5a8DO8x0A0yaA0ZAhOVybcRIcpHy2fxCH0YoqH_2M,478 +torch/_export/db/examples/optional_input.py,sha256=JHVO8AbT5ihdUrr_ee5kZMuJOnyJZS2EdL9FYdS9Yns,447 +torch/_export/db/examples/pytree_flatten.py,sha256=MFIw36BZAXANZ-iajZi--lbPzf1EyDrcmWxPeQ_VCyA,376 +torch/_export/db/examples/scalar_output.py,sha256=_CMPbP3nbTMGzfiUy3ACOdxxoL8_F1lIEya_JH4HTZ4,543 +torch/_export/db/examples/specialized_attribute.py,sha256=GiKqGiSSPwPIL-QPinKinHNEiQvRsptBx319j7FpRfA,520 +torch/_export/db/examples/static_for_loop.py,sha256=wYtwzouoqqVC-Zsw_kHYe_Fzz-0mPxZ9zGwWrjdv8OQ,385 +torch/_export/db/examples/static_if.py,sha256=uzqQHEytorjGRbxJQQxam6nJZLHcPIPw1uzMfj7KU8w,397 +torch/_export/db/examples/tensor_setattr.py,sha256=LXED12gZiYOvhZXBzThejfW2meNYI8U-8_aIVwfdaqI,337 +torch/_export/db/examples/type_reflection_method.py,sha256=CoXAARKtqSNciuA5V7Tkx0MVhq-h6c4khPRSnxFDjcM,461 +torch/_export/db/examples/unsupported_operator.py,sha256=Y8tqzwbbN14AznoBlavyPBLPYPqQtnp9lx47rvJMQJU,399 +torch/_export/db/examples/user_input_mutation.py,sha256=KJY_YR4w_nEZ66YVMmPsBKv6PfQ7GnQwkV12NJcUCxs,302 +torch/_export/db/gen_example.py,sha256=cyFTffHUtwkSPfhk-5rKaKFA5l56JErtcR-VBPb7t_o,604 +torch/_export/db/logging.py,sha256=96gvkbZUoxwdFkzsSP2ofX9It_S2TiK_fTnfc4Wn8GI,1671 +torch/_export/error.py,sha256=OjvFCTGZVLlBtbTvaL4xDbBAizynfhwO_2fONObaISk,1770 +torch/_export/non_strict_utils.py,sha256=orBE2uwIo_NyZd0T6m8gfD3ITkvv8fu4Fs4bfUys08s,44149 +torch/_export/pass_base.py,sha256=DD-Dl5NagBSyQLZ69VZu6CIX60RTZFtRiDYqsTt8Rnc,19037 +torch/_export/pass_infra/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/_export/pass_infra/__pycache__/__init__.cpython-311.pyc,, +torch/_export/pass_infra/__pycache__/node_metadata.cpython-311.pyc,, +torch/_export/pass_infra/__pycache__/proxy_value.cpython-311.pyc,, +torch/_export/pass_infra/node_metadata.py,sha256=fF9lD71OeQ5HlSfR--IzjNMe7s67_N9T5Z1QvhGsa5s,771 +torch/_export/pass_infra/proxy_value.py,sha256=tIkdsWMBGdKHWtEW3vVS_6RqZTAZf7CimcY0OIEF31Y,1456 +torch/_export/passes/__init__.py,sha256=78MzFjtaVabk1z2X12WMIlmtkjYaFmgNJlDCTCepNt8,88 +torch/_export/passes/__pycache__/__init__.cpython-311.pyc,, +torch/_export/passes/__pycache__/_node_metadata_hook.cpython-311.pyc,, +torch/_export/passes/__pycache__/add_runtime_assertions_for_constraints_pass.cpython-311.pyc,, +torch/_export/passes/__pycache__/collect_tracepoints_pass.cpython-311.pyc,, +torch/_export/passes/__pycache__/constant_folding.cpython-311.pyc,, +torch/_export/passes/__pycache__/functionalize_side_effectful_ops_pass.cpython-311.pyc,, +torch/_export/passes/__pycache__/insert_custom_op_guards.cpython-311.pyc,, +torch/_export/passes/__pycache__/lift_constants_pass.cpython-311.pyc,, +torch/_export/passes/__pycache__/remove_runtime_assertions.cpython-311.pyc,, +torch/_export/passes/__pycache__/replace_autocast_with_hop_pass.cpython-311.pyc,, +torch/_export/passes/__pycache__/replace_quantized_ops_with_standard_ops_pass.cpython-311.pyc,, +torch/_export/passes/__pycache__/replace_set_grad_with_hop_pass.cpython-311.pyc,, +torch/_export/passes/__pycache__/replace_view_ops_with_view_copy_ops_pass.cpython-311.pyc,, +torch/_export/passes/__pycache__/replace_with_hop_pass_util.cpython-311.pyc,, +torch/_export/passes/_node_metadata_hook.py,sha256=L9i3p7Vzz53vG8wpirkYMi61F-Uxcn7-mnjMS09n7VU,3435 +torch/_export/passes/add_runtime_assertions_for_constraints_pass.py,sha256=Lrh2xrn5yh7UivXloc0rK4ETIQRS9ssUQyJSxPfeJjk,10300 +torch/_export/passes/collect_tracepoints_pass.py,sha256=3vWcN1V-hl588dQ9estymdTNxivxiex8YLA-7ZKmShs,7215 +torch/_export/passes/constant_folding.py,sha256=qBI327xEx9Eq1iM4RqmEntRfyxnIstvhsIpcm8bdbwc,11290 +torch/_export/passes/functionalize_side_effectful_ops_pass.py,sha256=1fjMfdGrG138Lm7n5KLVkbsbAM9bGxu66BdjAwov42o,3370 +torch/_export/passes/insert_custom_op_guards.py,sha256=89yaS7aO2E-BzxllQWa3HJRmFBKwFbSg1861bAem4CI,3096 +torch/_export/passes/lift_constants_pass.py,sha256=2GYnum31seGBk39TsaqDT9ydKgq8uOjXWFas1v7PK6U,18927 +torch/_export/passes/remove_runtime_assertions.py,sha256=uyvuiO5Qy9AYVfbaOvyOYeBaZ_yUzgoPSsfJ1lDb0-g,1588 +torch/_export/passes/replace_autocast_with_hop_pass.py,sha256=D0uBUEdo2ogaitXuCm8P84kO3e8vMw0wD1cSpkiCzGs,8358 +torch/_export/passes/replace_quantized_ops_with_standard_ops_pass.py,sha256=c4jBJptGwEdfsojm9qQgFcmUUd3IcBUpfbws1WlC0ZQ,27651 +torch/_export/passes/replace_set_grad_with_hop_pass.py,sha256=gY_EdMXcjPmzDrxlxG-eW7JCuCYzYXbqJ9z2lAcaYis,4911 +torch/_export/passes/replace_view_ops_with_view_copy_ops_pass.py,sha256=-8zA-otMVordLl2mWpPcutMJiTF1pZCLKS-xh2_1cjY,2380 +torch/_export/passes/replace_with_hop_pass_util.py,sha256=iVnsVwmMSBBrnz9oU79yfApJgWvFiI9l3K7hj54iulU,8243 +torch/_export/serde/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/_export/serde/__pycache__/__init__.cpython-311.pyc,, +torch/_export/serde/__pycache__/dynamic_shapes.cpython-311.pyc,, +torch/_export/serde/__pycache__/schema.cpython-311.pyc,, +torch/_export/serde/__pycache__/schema_check.cpython-311.pyc,, +torch/_export/serde/__pycache__/serialize.cpython-311.pyc,, +torch/_export/serde/__pycache__/union.cpython-311.pyc,, +torch/_export/serde/dynamic_shapes.py,sha256=EgxY4ZeT5UOeSKVo0qCbCBm9BdIbjnQZvjhI0ko0EmQ,11752 +torch/_export/serde/export_schema.thrift,sha256=XXqURSIjrmItA6xEl_Oy98le65Ss4NQsFKtoQ-7n64k,7493 +torch/_export/serde/schema.py,sha256=Jmr2URIz5FGGWArVxraeDQ8-Bo2lOGvZnRlsaI8KvuU,16742 +torch/_export/serde/schema.yaml,sha256=oz48yb7FH8txlwWsE9DehcHcYBNz4JYTtkfq7klp6Ys,10147 +torch/_export/serde/schema_check.py,sha256=3KRNhxvwuKzI2B4b24Ks18_zbSVBWGfSk_dKZzQsUOs,30520 +torch/_export/serde/serialize.py,sha256=cW0hCU42Ub6TO0stN_qflIY2zRkoWg20hj1u69HwMO4,180536 +torch/_export/serde/union.py,sha256=rDgvWbB3546NWLbFc6UZRkHyvDqKF-2F3k-MRw5xWHo,3336 +torch/_export/tools.py,sha256=vLys4J5NoTU1EY6L1Ear24gOZX6mXGG6CraTpxiHyiU,4577 +torch/_export/utils.py,sha256=u5-fAILCbbUPfqSrn2Vpcw1YZLpyGBXHtPmoVpaINvo,60446 +torch/_export/verifier.py,sha256=8SdVOxLVnGKmTa9QQlpKCpfZFwdnNk-tefcl6ETsAQo,22795 +torch/_export/wrappers.py,sha256=UzgIPm59W_k8-oWjmpUsJa7118KRHOPpuIvro-ang0k,13386 +torch/_functorch/__init__.py,sha256=a3XxW1RcNAPwEVaI2g11hpnJvSHxGUFsGmDAWfDnLP8,206 +torch/_functorch/__pycache__/__init__.cpython-311.pyc,, +torch/_functorch/__pycache__/aot_autograd.cpython-311.pyc,, +torch/_functorch/__pycache__/apis.cpython-311.pyc,, +torch/_functorch/__pycache__/autograd_function.cpython-311.pyc,, +torch/_functorch/__pycache__/batch_norm_replacement.cpython-311.pyc,, +torch/_functorch/__pycache__/benchmark_utils.cpython-311.pyc,, +torch/_functorch/__pycache__/compile_utils.cpython-311.pyc,, +torch/_functorch/__pycache__/compilers.cpython-311.pyc,, +torch/_functorch/__pycache__/config.cpython-311.pyc,, +torch/_functorch/__pycache__/deprecated.cpython-311.pyc,, +torch/_functorch/__pycache__/eager_transforms.cpython-311.pyc,, +torch/_functorch/__pycache__/functional_call.cpython-311.pyc,, +torch/_functorch/__pycache__/fx_minifier.cpython-311.pyc,, +torch/_functorch/__pycache__/make_functional.cpython-311.pyc,, +torch/_functorch/__pycache__/partitioners.cpython-311.pyc,, +torch/_functorch/__pycache__/predispatch.cpython-311.pyc,, +torch/_functorch/__pycache__/pyfunctorch.cpython-311.pyc,, +torch/_functorch/__pycache__/python_key.cpython-311.pyc,, +torch/_functorch/__pycache__/pytree_hacks.cpython-311.pyc,, +torch/_functorch/__pycache__/top_operators_github_usage.cpython-311.pyc,, +torch/_functorch/__pycache__/utils.cpython-311.pyc,, +torch/_functorch/__pycache__/vmap.cpython-311.pyc,, +torch/_functorch/_activation_checkpointing/__init__.py,sha256=a3XxW1RcNAPwEVaI2g11hpnJvSHxGUFsGmDAWfDnLP8,206 +torch/_functorch/_activation_checkpointing/__pycache__/__init__.cpython-311.pyc,, +torch/_functorch/_activation_checkpointing/__pycache__/ac_logging_utils.cpython-311.pyc,, +torch/_functorch/_activation_checkpointing/__pycache__/graph_info_provider.cpython-311.pyc,, +torch/_functorch/_activation_checkpointing/__pycache__/knapsack.cpython-311.pyc,, +torch/_functorch/_activation_checkpointing/__pycache__/knapsack_evaluator.cpython-311.pyc,, +torch/_functorch/_activation_checkpointing/__pycache__/remat_using_tags_for_fwd_loss_bwd_graph_pass.cpython-311.pyc,, +torch/_functorch/_activation_checkpointing/ac_logging_utils.py,sha256=3IDGpnkWMtZMp25VDVQC2bo_UaFfqWinVYdK-NIxm4s,7984 +torch/_functorch/_activation_checkpointing/graph_info_provider.py,sha256=agG5nlht2-xRTRCjIXsJOn0S1XmMhXZpXPiHyx-mTDg,12701 +torch/_functorch/_activation_checkpointing/knapsack.py,sha256=eULO3neRqPtg84WsKf57jn4thXQjxZ_oQEUdQ_6_erQ,9260 +torch/_functorch/_activation_checkpointing/knapsack_evaluator.py,sha256=o1E0Rg96tyfcmCumZ7UA1oYE100EXexi5xW2A-ebvcE,12279 +torch/_functorch/_activation_checkpointing/remat_using_tags_for_fwd_loss_bwd_graph_pass.py,sha256=3piETBHgWHOilu0XzNx3TDy-mlGdMNcowThCNxdryz8,7653 +torch/_functorch/_activation_offloading/__init__.py,sha256=a3XxW1RcNAPwEVaI2g11hpnJvSHxGUFsGmDAWfDnLP8,206 +torch/_functorch/_activation_offloading/__pycache__/__init__.cpython-311.pyc,, +torch/_functorch/_activation_offloading/__pycache__/activation_offloading.cpython-311.pyc,, +torch/_functorch/_activation_offloading/__pycache__/offload_ops.cpython-311.pyc,, +torch/_functorch/_activation_offloading/activation_offloading.py,sha256=TVq4akXwZP83WGSx7VyjMrORdKH8A_PLNopQ0SM7hAY,30867 +torch/_functorch/_activation_offloading/offload_ops.py,sha256=VN1tAVU93r0ydKRghS0mPvFi_g-xbP3WTsSZx_hpRj8,6449 +torch/_functorch/_aot_autograd/__init__.py,sha256=a3XxW1RcNAPwEVaI2g11hpnJvSHxGUFsGmDAWfDnLP8,206 +torch/_functorch/_aot_autograd/__pycache__/__init__.cpython-311.pyc,, +torch/_functorch/_aot_autograd/__pycache__/aot_autograd_result.cpython-311.pyc,, +torch/_functorch/_aot_autograd/__pycache__/autograd_cache.cpython-311.pyc,, +torch/_functorch/_aot_autograd/__pycache__/collect_metadata_analysis.cpython-311.pyc,, +torch/_functorch/_aot_autograd/__pycache__/descriptors.cpython-311.pyc,, +torch/_functorch/_aot_autograd/__pycache__/frontend_utils.cpython-311.pyc,, +torch/_functorch/_aot_autograd/__pycache__/functional_utils.cpython-311.pyc,, +torch/_functorch/_aot_autograd/__pycache__/fx_utils.cpython-311.pyc,, +torch/_functorch/_aot_autograd/__pycache__/graph_capture.cpython-311.pyc,, +torch/_functorch/_aot_autograd/__pycache__/graph_capture_wrappers.cpython-311.pyc,, +torch/_functorch/_aot_autograd/__pycache__/graph_compile.cpython-311.pyc,, +torch/_functorch/_aot_autograd/__pycache__/indexed_dict.cpython-311.pyc,, +torch/_functorch/_aot_autograd/__pycache__/input_output_analysis.cpython-311.pyc,, +torch/_functorch/_aot_autograd/__pycache__/logging_utils.cpython-311.pyc,, +torch/_functorch/_aot_autograd/__pycache__/runtime_wrappers.cpython-311.pyc,, +torch/_functorch/_aot_autograd/__pycache__/schemas.cpython-311.pyc,, +torch/_functorch/_aot_autograd/__pycache__/streams.cpython-311.pyc,, +torch/_functorch/_aot_autograd/__pycache__/subclass_codegen.cpython-311.pyc,, +torch/_functorch/_aot_autograd/__pycache__/subclass_parametrization.cpython-311.pyc,, +torch/_functorch/_aot_autograd/__pycache__/subclass_utils.cpython-311.pyc,, +torch/_functorch/_aot_autograd/__pycache__/utils.cpython-311.pyc,, +torch/_functorch/_aot_autograd/aot_autograd_result.py,sha256=pl2-fA5_1V5_8k2wl9c7mrsz2xh8pTPtWxjT73McS_s,27457 +torch/_functorch/_aot_autograd/autograd_cache.py,sha256=ouUX-FEjoEGNrYxDvVRi26_bxAY7frycdTKUaKemAVo,58933 +torch/_functorch/_aot_autograd/collect_metadata_analysis.py,sha256=bXzDMVFNpfu_oBymxwoElISZY3gw-E-ke9wU9niYnvI,45986 +torch/_functorch/_aot_autograd/descriptors.py,sha256=ETe2aGDaX-uMGHOe6RlAauQWTz0ioUyy3wcvq1YG6no,28153 +torch/_functorch/_aot_autograd/frontend_utils.py,sha256=AnR3PUyTvba2r77mgUpcW8G3ui7OrwjAWeHmIUrXjio,17632 +torch/_functorch/_aot_autograd/functional_utils.py,sha256=8H0OTZgxTEid61fzfHsIVhDtDuFhiWW4ymybcyLsY3U,28692 +torch/_functorch/_aot_autograd/fx_utils.py,sha256=Kj_tJK0kOBxI-eQqB3EiT-q6RYtDZ1M_Pn-pQXMKgWc,12645 +torch/_functorch/_aot_autograd/graph_capture.py,sha256=D8Km-3G6Rnxq7c1Hvn5j35_HN5Nkir70uQJsQiuW2f4,21894 +torch/_functorch/_aot_autograd/graph_capture_wrappers.py,sha256=Dtj1i389JM6Ty2zLBEB1L9W09i4mMOzWaU0WFLbZDrA,70310 +torch/_functorch/_aot_autograd/graph_compile.py,sha256=dBymkjcJb2R4FoYuBvOOZrbQQcSmjkiXQQs04Ju6-7c,103634 +torch/_functorch/_aot_autograd/indexed_dict.py,sha256=tXYzmFA39UlhLc9x_4suTdDXgMMLXsJYhPiocutWjfw,1743 +torch/_functorch/_aot_autograd/input_output_analysis.py,sha256=f8seNBKQCX1EvX-Jldft3krD4e_8zJfnSvvm-lLUGDI,20338 +torch/_functorch/_aot_autograd/logging_utils.py,sha256=u9H_0eLOYgRbyeAVjL6BBq0xJs1s9vbxjqvb0-hgkeA,5515 +torch/_functorch/_aot_autograd/runtime_wrappers.py,sha256=tkpE_lr8a17QclZvYXvSZzqR31ESt2gskp24fDGY794,135866 +torch/_functorch/_aot_autograd/schemas.py,sha256=1qeMUipmmSBGO3ckfzQCPVAUYYgWAMUID_GCbNcAcQ4,63942 +torch/_functorch/_aot_autograd/streams.py,sha256=7TkqSr5jEHW0iAlfu3724WcH3fap_I8ef2wwOvwzvXU,23628 +torch/_functorch/_aot_autograd/subclass_codegen.py,sha256=fq5tWAX6Ep0ltmI21GqvGbu8xn38cIK7k94MzB3oUqk,14474 +torch/_functorch/_aot_autograd/subclass_parametrization.py,sha256=Ti1mD_B-pXVGl9yrp7Fc__IyZfrjNnGX8o9iPEJ4KRo,5728 +torch/_functorch/_aot_autograd/subclass_utils.py,sha256=SHBJXeRbcU8vQToKLN-GD0oINjkXNC_BJnHEwgc67A8,26439 +torch/_functorch/_aot_autograd/utils.py,sha256=M5L2Jqu3C82jkJA6wq4cBEAnj5ZjBvYxiHaTl5A_dHY,32604 +torch/_functorch/aot_autograd.py,sha256=ee1xQ2wFH7VDDsu599EBb5PgG-MVoXxp06rESjSSrvg,78981 +torch/_functorch/apis.py,sha256=UvFNcxTjoBTKknskA1d4KYtIw-HxfLqt4Dd-AJpXapE,19970 +torch/_functorch/autograd_function.py,sha256=7cHMLB3BxmcgMX-_HACqIivS7b3Q5sfs_g3DV3Uel-I,34257 +torch/_functorch/batch_norm_replacement.py,sha256=liTJLEOFiap3ed2fBoxdRUM-9iuw-6985kJSXZnUlNs,857 +torch/_functorch/benchmark_utils.py,sha256=6umZ5dDJO6bRKqa6U7OXhTFXjC9a_OviLMe5emlWIrs,7153 +torch/_functorch/compile_utils.py,sha256=oq_gBsPFNXBvrNmswlPu6C8ywBVeO_bC0oDAT2_qbuU,8463 +torch/_functorch/compilers.py,sha256=bhsaDddxFMHOuK7OFDksaYii48v2d0MDMcrX9xneV-U,16626 +torch/_functorch/config.py,sha256=EmkkJpo3GcQpR7OhP09o8_exVVdHitaaMpiypugCbbk,19233 +torch/_functorch/deprecated.py,sha256=SHvlwZPnuj_0sGtuj2O1WTs0Sb9-ZWvhVOJSxnJQqtU,5731 +torch/_functorch/eager_transforms.py,sha256=XhtVv0UlZeewJ8SLjj4Bgbo0KFKHwro1B0Qewt5BJLc,77114 +torch/_functorch/functional_call.py,sha256=3O5PMf1mu3ZB_BqZ3W62zPH6Hn5_PfmjQ_JKNtnbJAc,10577 +torch/_functorch/fx_minifier.py,sha256=5svylRsJBBNBSZvt5JXgaN2dEpjWmm4qtS3fgtvbhCk,20132 +torch/_functorch/make_functional.py,sha256=PVBP0fo9nphZXaGu-3wMfEdiDjPd05pWbpiqjPcHUno,24492 +torch/_functorch/partitioners.py,sha256=_-FYhRKGW1yUcprOS1odT7q2TsGzFjZ2hG3XEMkb93k,149424 +torch/_functorch/predispatch.py,sha256=F6FAxaAv9ijDXsOudvQyOx51hP9GhrMOrDI4Pn1e6dg,5707 +torch/_functorch/pyfunctorch.py,sha256=orEdNWO3nruuRt9zFhM8lr3aLLG_ANPZNBlTiUGf_Pg,12546 +torch/_functorch/python_key.py,sha256=ZeINkQZ4B4PAdoz-zLMNU72w6cVHzE1nObMikLI0oL4,442 +torch/_functorch/pytree_hacks.py,sha256=dWzTSKcqGhK4zHgmgJbyis2kzB69OH71GP_YCDBDbp0,698 +torch/_functorch/top_operators_github_usage.py,sha256=pn1_T5Grb-I5GjY-8vAMoVuKAPyhOvCVpKDQpLcI_Kk,21568 +torch/_functorch/utils.py,sha256=wAjJNpP0VfMJXCNSZkOpl7vmPb_Fo25aJna8JXyzBk8,1039 +torch/_functorch/vmap.py,sha256=ckC0H8Hbi487GJ5XPt1OjWqdsbPtL5wIVwLaYGIwEo0,19405 +torch/_guards.py,sha256=rRq8DRibXuMQ1s81d4sTLk_uLmuruJaIOAboqE7-Adw,56770 +torch/_higher_order_ops/__init__.py,sha256=ug4B40etVAvaRuHXIIFSwlihNkrDF5folzyXL8qgaig,2795 +torch/_higher_order_ops/__pycache__/__init__.cpython-311.pyc,, +torch/_higher_order_ops/__pycache__/_invoke_quant.cpython-311.pyc,, +torch/_higher_order_ops/__pycache__/aoti_call_delegate.cpython-311.pyc,, +torch/_higher_order_ops/__pycache__/associative_scan.cpython-311.pyc,, +torch/_higher_order_ops/__pycache__/auto_functionalize.cpython-311.pyc,, +torch/_higher_order_ops/__pycache__/base_hop.cpython-311.pyc,, +torch/_higher_order_ops/__pycache__/cond.cpython-311.pyc,, +torch/_higher_order_ops/__pycache__/cudagraph_conditional_nodes.cpython-311.pyc,, +torch/_higher_order_ops/__pycache__/effects.cpython-311.pyc,, +torch/_higher_order_ops/__pycache__/executorch_call_delegate.cpython-311.pyc,, +torch/_higher_order_ops/__pycache__/flat_apply.cpython-311.pyc,, +torch/_higher_order_ops/__pycache__/flex_attention.cpython-311.pyc,, +torch/_higher_order_ops/__pycache__/foreach_map.cpython-311.pyc,, +torch/_higher_order_ops/__pycache__/hints_wrap.cpython-311.pyc,, +torch/_higher_order_ops/__pycache__/inline_asm_elementwise.cpython-311.pyc,, +torch/_higher_order_ops/__pycache__/invoke_leaf_function.cpython-311.pyc,, +torch/_higher_order_ops/__pycache__/invoke_subgraph.cpython-311.pyc,, +torch/_higher_order_ops/__pycache__/local_map.cpython-311.pyc,, +torch/_higher_order_ops/__pycache__/map.cpython-311.pyc,, +torch/_higher_order_ops/__pycache__/out_dtype.cpython-311.pyc,, +torch/_higher_order_ops/__pycache__/partitioner.cpython-311.pyc,, +torch/_higher_order_ops/__pycache__/print.cpython-311.pyc,, +torch/_higher_order_ops/__pycache__/run_const_graph.cpython-311.pyc,, +torch/_higher_order_ops/__pycache__/scan.cpython-311.pyc,, +torch/_higher_order_ops/__pycache__/schema.cpython-311.pyc,, +torch/_higher_order_ops/__pycache__/strict_mode.cpython-311.pyc,, +torch/_higher_order_ops/__pycache__/torchbind.cpython-311.pyc,, +torch/_higher_order_ops/__pycache__/triton_kernel_wrap.cpython-311.pyc,, +torch/_higher_order_ops/__pycache__/utils.cpython-311.pyc,, +torch/_higher_order_ops/__pycache__/while_loop.cpython-311.pyc,, +torch/_higher_order_ops/__pycache__/wrap.cpython-311.pyc,, +torch/_higher_order_ops/_invoke_quant.py,sha256=igRdMRGVeX-YVwt5-kHJLUGQhtQ11s7LnP0Hq4ypxqU,1739 +torch/_higher_order_ops/aoti_call_delegate.py,sha256=yqIpNSyyk5gV_6BAYysQISovkdxN9inzPX-KOCCDG3M,6172 +torch/_higher_order_ops/associative_scan.py,sha256=rN_jqb6KgbJGyvLoRLgtyC6r0hv-svnmI9Yk0yxEeIk,37196 +torch/_higher_order_ops/auto_functionalize.py,sha256=ph0-sijqv56Z2NPxRYO3eTmJbwNPQtpj_YholnE48AU,40179 +torch/_higher_order_ops/base_hop.py,sha256=bY20-p-EWR1hS9zojIBRDqdoSl8Am6lH7iLnv4DBn-0,10914 +torch/_higher_order_ops/cond.py,sha256=lK4Gv7LBa7__Po_WtHb7_c0U5lvvJkwQOR8GRa_o1eo,30294 +torch/_higher_order_ops/cudagraph_conditional_nodes.py,sha256=ILIw-3hjAYAqUzzIpHF-AvYFbwlIu-M4YQuWOVAd-Es,4277 +torch/_higher_order_ops/effects.py,sha256=0MWVhXGHhp3AgHO5WppouiaB6IiqBBR8U13yCaR7dCA,11827 +torch/_higher_order_ops/executorch_call_delegate.py,sha256=SRnG6PRrZ6MzPvV43Jo_dkn-mFNba7liwfkEQxnwiRY,6148 +torch/_higher_order_ops/flat_apply.py,sha256=IZO-uONbPfB_L1_SMR_wXEQr702tdn1-lcuyrOpCHA8,6323 +torch/_higher_order_ops/flex_attention.py,sha256=u91_ECgC7BTy1gcK69hSUlUvBgrQnrG4mnhCx9PcrCI,51104 +torch/_higher_order_ops/foreach_map.py,sha256=xEvWbG-fWPZaVF1AjLrPnG2bJ1Duwr6Uf0YmVvndJx8,690 +torch/_higher_order_ops/hints_wrap.py,sha256=QL9hly43ZnvGkYFuDX0-pF3G0fGy6Ag1bwRuzbv8EyA,4821 +torch/_higher_order_ops/inline_asm_elementwise.py,sha256=Jc1jAX_b5XzlNt98x8cqvavhalhQlFnYUXB8LYHzAB8,9405 +torch/_higher_order_ops/invoke_leaf_function.py,sha256=cYiTmiBDGPSxUjdjpP1E5FjiqrRd-8GySMV8yng_7Bk,33403 +torch/_higher_order_ops/invoke_subgraph.py,sha256=HjYRcF20mpyC0JFQINGILrCq5tiLRu54RhdIm23Ocgs,43209 +torch/_higher_order_ops/local_map.py,sha256=sEDnYjVHDH-AbtkMEGwXHbdu1KJF6FnpQPX7IaMInuY,24803 +torch/_higher_order_ops/map.py,sha256=3xrpy6HF6uEwM1G3dsOgjASAEAwWtYhZhWo34ou8cXI,11940 +torch/_higher_order_ops/out_dtype.py,sha256=c35Sik50tRAq_v5iP5Ft9RKXhi7gXlJxT3_0ML9vkCg,5612 +torch/_higher_order_ops/partitioner.py,sha256=IF7oOJsjP_PgANEvEvN-Z9xhW4BdxX4Mauezaz8oY30,14279 +torch/_higher_order_ops/passes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/_higher_order_ops/passes/__pycache__/__init__.cpython-311.pyc,, +torch/_higher_order_ops/passes/__pycache__/inline_invoke_subgraph.cpython-311.pyc,, +torch/_higher_order_ops/passes/inline_invoke_subgraph.py,sha256=RPkYAKqqabWySa1L1lszw77NKCn-8p_RbhpjUsERI34,2397 +torch/_higher_order_ops/print.py,sha256=Yq1cTAJk-eWLOK2LW2FBgIQ0OqqdRXiH1Jceeiqy3Do,5706 +torch/_higher_order_ops/run_const_graph.py,sha256=qWXm3rsyRsaOiX0P0KzJ1iFUX89hzOb12bBpNKE20IU,2942 +torch/_higher_order_ops/scan.py,sha256=W1nt59x2tORuVz0QcCJlEbBSrk7M1DVzz6FsrvRw7Qs,37547 +torch/_higher_order_ops/schema.py,sha256=7X9iaFjzbYVw4pJAHSN0nwDc4p0m5t85ji3BIZoJJB8,12005 +torch/_higher_order_ops/strict_mode.py,sha256=RAXUZoKR6uXCxIg6AE_wgWFl5UZeNMcVW99tL50cJfU,2920 +torch/_higher_order_ops/torchbind.py,sha256=B2h718_dJujJvJwhdoKrQ8WXjCiXydI-cYdFRqTvkwg,6490 +torch/_higher_order_ops/triton_kernel_wrap.py,sha256=WgC0MnVwAJ3_fmjJS9edXOe7rN9YBa2JOgP2HZDhyW0,98662 +torch/_higher_order_ops/utils.py,sha256=uI_6dzVIyiQXcNg14KtyoOMiBJjzsm-b0pXN99L7A0o,52758 +torch/_higher_order_ops/while_loop.py,sha256=Lap2NB_j3Ywf-W0uV6MqigYeLI78vqL0PTlH112FLrk,37671 +torch/_higher_order_ops/wrap.py,sha256=Ta1NtOOtA6Uuc-B6y1uxEfuWobL4M_ebLhy7h6Fa7VU,20167 +torch/_inductor/__autotune_main__.py,sha256=teBVDb5194YrCJgy05KRE1yAkfDrAfFIA2cIwYFnyRw,913 +torch/_inductor/__init__.py,sha256=Uh5kkTHhfWeZHtCZ8z5TfG3TM7tCOwT9JPHnHLMOURQ,15232 +torch/_inductor/__pycache__/__autotune_main__.cpython-311.pyc,, +torch/_inductor/__pycache__/__init__.cpython-311.pyc,, +torch/_inductor/__pycache__/analyze_preserves_zero_mask.cpython-311.pyc,, +torch/_inductor/__pycache__/aoti_eager.cpython-311.pyc,, +torch/_inductor/__pycache__/async_compile.cpython-311.pyc,, +torch/_inductor/__pycache__/augmented_graph_helper.cpython-311.pyc,, +torch/_inductor/__pycache__/autotune_process.cpython-311.pyc,, +torch/_inductor/__pycache__/await_utils.cpython-311.pyc,, +torch/_inductor/__pycache__/bounds.cpython-311.pyc,, +torch/_inductor/__pycache__/cache.cpython-311.pyc,, +torch/_inductor/__pycache__/choices.cpython-311.pyc,, +torch/_inductor/__pycache__/codecache.cpython-311.pyc,, +torch/_inductor/__pycache__/comm_analysis.cpython-311.pyc,, +torch/_inductor/__pycache__/comm_lowering.cpython-311.pyc,, +torch/_inductor/__pycache__/comms.cpython-311.pyc,, +torch/_inductor/__pycache__/comms_debug.cpython-311.pyc,, +torch/_inductor/__pycache__/compile_fx.cpython-311.pyc,, +torch/_inductor/__pycache__/compile_fx_async.cpython-311.pyc,, +torch/_inductor/__pycache__/compile_fx_ext.cpython-311.pyc,, +torch/_inductor/__pycache__/compile_fx_subproc.cpython-311.pyc,, +torch/_inductor/__pycache__/compiler_bisector.cpython-311.pyc,, +torch/_inductor/__pycache__/config.cpython-311.pyc,, +torch/_inductor/__pycache__/config_comms.cpython-311.pyc,, +torch/_inductor/__pycache__/constant_folding.cpython-311.pyc,, +torch/_inductor/__pycache__/cpp_builder.cpython-311.pyc,, +torch/_inductor/__pycache__/cpu_vec_isa.cpython-311.pyc,, +torch/_inductor/__pycache__/cudagraph_trees.cpython-311.pyc,, +torch/_inductor/__pycache__/cudagraph_utils.cpython-311.pyc,, +torch/_inductor/__pycache__/custom_graph_pass.cpython-311.pyc,, +torch/_inductor/__pycache__/debug.cpython-311.pyc,, +torch/_inductor/__pycache__/decomposition.cpython-311.pyc,, +torch/_inductor/__pycache__/dependencies.cpython-311.pyc,, +torch/_inductor/__pycache__/distributed_autotune.cpython-311.pyc,, +torch/_inductor/__pycache__/dtype_propagation.cpython-311.pyc,, +torch/_inductor/__pycache__/exc.cpython-311.pyc,, +torch/_inductor/__pycache__/extern_node_serializer.cpython-311.pyc,, +torch/_inductor/__pycache__/freezing.cpython-311.pyc,, +torch/_inductor/__pycache__/freezing_utils.cpython-311.pyc,, +torch/_inductor/__pycache__/fuzzer.cpython-311.pyc,, +torch/_inductor/__pycache__/fx_utils.cpython-311.pyc,, +torch/_inductor/__pycache__/graph.cpython-311.pyc,, +torch/_inductor/__pycache__/hooks.cpython-311.pyc,, +torch/_inductor/__pycache__/index_propagation.cpython-311.pyc,, +torch/_inductor/__pycache__/inductor_prims.cpython-311.pyc,, +torch/_inductor/__pycache__/invert_expr_analysis.cpython-311.pyc,, +torch/_inductor/__pycache__/ir.cpython-311.pyc,, +torch/_inductor/__pycache__/jagged_lowerings.cpython-311.pyc,, +torch/_inductor/__pycache__/kernel_inputs.cpython-311.pyc,, +torch/_inductor/__pycache__/kernel_template_choice.cpython-311.pyc,, +torch/_inductor/__pycache__/loop_body.cpython-311.pyc,, +torch/_inductor/__pycache__/lowering.cpython-311.pyc,, +torch/_inductor/__pycache__/memory.cpython-311.pyc,, +torch/_inductor/__pycache__/metrics.cpython-311.pyc,, +torch/_inductor/__pycache__/mkldnn_ir.cpython-311.pyc,, +torch/_inductor/__pycache__/mkldnn_lowerings.cpython-311.pyc,, +torch/_inductor/__pycache__/mock_cache.cpython-311.pyc,, +torch/_inductor/__pycache__/ops_handler.cpython-311.pyc,, +torch/_inductor/__pycache__/optimize_indexing.cpython-311.pyc,, +torch/_inductor/__pycache__/output_code.cpython-311.pyc,, +torch/_inductor/__pycache__/pattern_matcher.cpython-311.pyc,, +torch/_inductor/__pycache__/quantized_lowerings.cpython-311.pyc,, +torch/_inductor/__pycache__/remote_cache.cpython-311.pyc,, +torch/_inductor/__pycache__/remote_gemm_autotune_cache.cpython-311.pyc,, +torch/_inductor/__pycache__/rocm_multiarch_utils.cpython-311.pyc,, +torch/_inductor/__pycache__/scheduler.cpython-311.pyc,, +torch/_inductor/__pycache__/select_algorithm.cpython-311.pyc,, +torch/_inductor/__pycache__/shape_propagation.cpython-311.pyc,, +torch/_inductor/__pycache__/sizevars.cpython-311.pyc,, +torch/_inductor/__pycache__/standalone_compile.cpython-311.pyc,, +torch/_inductor/__pycache__/stream_constants.cpython-311.pyc,, +torch/_inductor/__pycache__/stream_utils.cpython-311.pyc,, +torch/_inductor/__pycache__/subgraph_lowering.cpython-311.pyc,, +torch/_inductor/__pycache__/test_case.cpython-311.pyc,, +torch/_inductor/__pycache__/test_operators.cpython-311.pyc,, +torch/_inductor/__pycache__/tiling_utils.cpython-311.pyc,, +torch/_inductor/__pycache__/triton_bundler.cpython-311.pyc,, +torch/_inductor/__pycache__/utils.cpython-311.pyc,, +torch/_inductor/__pycache__/virtualized.cpython-311.pyc,, +torch/_inductor/__pycache__/wrapper_benchmark.cpython-311.pyc,, +torch/_inductor/analysis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/_inductor/analysis/__pycache__/__init__.cpython-311.pyc,, +torch/_inductor/analysis/__pycache__/device_info.cpython-311.pyc,, +torch/_inductor/analysis/__pycache__/profile_analysis.cpython-311.pyc,, +torch/_inductor/analysis/device_info.py,sha256=Jz63QjLCokPSAwksR6sMXoPBloZCDzja3POejAk_4w4,7419 +torch/_inductor/analysis/profile_analysis.py,sha256=eHojV4fdT7cOrgyCVqEW04jYqgyOCohs1i9p5MOIZkQ,27536 +torch/_inductor/analyze_preserves_zero_mask.py,sha256=cU6tCfAX4N0LbZV-KQVnsskwwdy16b2PBVjGnkowx8I,5477 +torch/_inductor/aoti_eager.py,sha256=hI2qXFWl07WbGKoRlV5yLO01sOWXz70e917KB9O7ZJo,12302 +torch/_inductor/async_compile.py,sha256=yybMjYUC05kKYRK4iIuuXoTKjozNpIbQcXL7V7f0GPU,29609 +torch/_inductor/augmented_graph_helper.py,sha256=LWEjisyBfWekwbQGUlPvB1UWQhR0HFbkdtRbX8RT1b8,11130 +torch/_inductor/autoheuristic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/_inductor/autoheuristic/__pycache__/__init__.cpython-311.pyc,, +torch/_inductor/autoheuristic/__pycache__/autoheuristic.cpython-311.pyc,, +torch/_inductor/autoheuristic/__pycache__/autoheuristic_utils.cpython-311.pyc,, +torch/_inductor/autoheuristic/__pycache__/learned_heuristic_controller.cpython-311.pyc,, +torch/_inductor/autoheuristic/__pycache__/learnedheuristic_interface.cpython-311.pyc,, +torch/_inductor/autoheuristic/artifacts/_MMRankingA100.py,sha256=wGZv4bFCwDlPlavBWdX4J9aKw9wRZaPTnRsqgyZnQog,28038 +torch/_inductor/autoheuristic/artifacts/_MMRankingH100.py,sha256=OQN-QYXZ2yYIZQUvGlEy-AC6fTzUVqgf9i_uxAp3ZdA,30662 +torch/_inductor/autoheuristic/artifacts/_MixedMMA100.py,sha256=odGa8EdsobbeiKoKDrzkoYmDYgICi62YDFtwHE5fzEM,7914 +torch/_inductor/autoheuristic/artifacts/_MixedMMH100.py,sha256=-ASwKTfLGuKkdoPYpszoAJOFhRZzQ5UxA_V9y-f1SXc,7863 +torch/_inductor/autoheuristic/artifacts/_PadMMA100.py,sha256=VJxvqunz6QFV25E4FrmM4O_2N2tB1svXYVgK-MIHIys,13991 +torch/_inductor/autoheuristic/artifacts/_PadMMH200.py,sha256=kwnmibiVDQ1Oh_Dl7nBd9hugqvqoJT1XrVfoFI6WpkY,8501 +torch/_inductor/autoheuristic/artifacts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/_inductor/autoheuristic/artifacts/__pycache__/_MMRankingA100.cpython-311.pyc,, +torch/_inductor/autoheuristic/artifacts/__pycache__/_MMRankingH100.cpython-311.pyc,, +torch/_inductor/autoheuristic/artifacts/__pycache__/_MixedMMA100.cpython-311.pyc,, +torch/_inductor/autoheuristic/artifacts/__pycache__/_MixedMMH100.cpython-311.pyc,, +torch/_inductor/autoheuristic/artifacts/__pycache__/_PadMMA100.cpython-311.pyc,, +torch/_inductor/autoheuristic/artifacts/__pycache__/_PadMMH200.cpython-311.pyc,, +torch/_inductor/autoheuristic/artifacts/__pycache__/__init__.cpython-311.pyc,, +torch/_inductor/autoheuristic/autoheuristic.py,sha256=j1PbPzxk2c_wClAibii75zloeSGFJRzB7X1pQ82DPVU,12043 +torch/_inductor/autoheuristic/autoheuristic_utils.py,sha256=gRMDihFQA_YWc0gzNgxg8zSvgns2IK6oAiAQQ8grJes,11322 +torch/_inductor/autoheuristic/learned_heuristic_controller.py,sha256=cLy1FwX_1ByT1VPbv6UtNjFLF3g6NLR15YAZ0QljL48,4301 +torch/_inductor/autoheuristic/learnedheuristic_interface.py,sha256=_oEC4sIE5l50zhgPutB9O7ccRomvzOaaVmf-GBeC6DI,2641 +torch/_inductor/autotune_process.py,sha256=KDkwz8mSsBDzqjqeqAE42GepnS7Y1gz7BK3zl-RQxhI,49844 +torch/_inductor/await_utils.py,sha256=dSA8QYMzzVtu6YNiKL9FeZHewAL3GNywqxULkTn7jvY,5819 +torch/_inductor/bounds.py,sha256=f9-jBmF0NNgbf1YacT1nAKaYA9n-M1_PfRDOSXksKWU,9802 +torch/_inductor/cache.py,sha256=WCVejf3ofSc2lvXuFrE9BbQrTo1RSMeomWri1yVSizM,14823 +torch/_inductor/choices.py,sha256=_KB--mHn7fDrr_zJxf-8b7ys7_sqcWmTj2aiNCWVy0k,28350 +torch/_inductor/codecache.py,sha256=LHkyDox6yuItjyy-Mfs5BYoFgtk-tPZY4OrV2UXPnn4,184551 +torch/_inductor/codegen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/_inductor/codegen/__pycache__/__init__.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/aoti_hipify_utils.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/block_analysis.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/common.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/cpp.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/cpp_bmm_template.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/cpp_flex_attention_template.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/cpp_gemm_template.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/cpp_grouped_gemm_template.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/cpp_micro_gemm.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/cpp_template.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/cpp_template_kernel.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/cpp_utils.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/cpp_wrapper_cpu.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/cpp_wrapper_cpu_array_ref.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/cpp_wrapper_gpu.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/cpp_wrapper_mps.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/cpu_device_op_overrides.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/cuda_combined_scheduling.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/custom_extern_kernel_codegen.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/debug_utils.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/halide.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/memory_planning.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/mps.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/mps_device_op_overrides.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/multi_kernel.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/pallas.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/python_wrapper_mtia.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/segmented_tree.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/simd.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/simd_kernel_features.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/subgraph.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/triton.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/triton_combo_kernel.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/triton_split_scan.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/triton_utils.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/wrapper.cpython-311.pyc,, +torch/_inductor/codegen/__pycache__/wrapper_fxir.cpython-311.pyc,, +torch/_inductor/codegen/aoti_hipify_utils.py,sha256=ntqiznqR7z1Oa_GnR_IQcYOOYiM2F08jD-MaDZJ43TM,1440 +torch/_inductor/codegen/aoti_runtime/interface.cpp,sha256=VZl13TORNVPFYO5D-vYyESdD1_40k1pmjjAnjXVsYTo,17914 +torch/_inductor/codegen/block_analysis.py,sha256=L_LpGyiPFMYq1YQRBstzcRhTVIoEyOM5ChkZd-09kM8,8162 +torch/_inductor/codegen/common.py,sha256=-j-X0yzToqMLTIZuDtdEyPKDme_rcg8g5_75q74NLkk,107440 +torch/_inductor/codegen/cpp.py,sha256=5Fj5UKspoMVD3Xr31M7DCsU3TX22rYNCzoLx1j5uxiI,240135 +torch/_inductor/codegen/cpp_bmm_template.py,sha256=8ZiFbL7mci4iIuGk4klK4I1Y0LLIN7Y0OXiqLPs8b_k,9576 +torch/_inductor/codegen/cpp_flex_attention_template.py,sha256=Zn54ncdirUKnnkJDXR4znCNyWEY5oYJKqGb40oXpttc,41366 +torch/_inductor/codegen/cpp_gemm_template.py,sha256=jSil5_Vcm6AQtClK4xvUKxJe8XxC9gYJ7h4mQ8XmV1Y,78393 +torch/_inductor/codegen/cpp_grouped_gemm_template.py,sha256=mKVGfbTGjWa9fW-rVdlbxSIRw8SZfyuEH9M6UwnZH68,21146 +torch/_inductor/codegen/cpp_micro_gemm.py,sha256=JAYc6znHuoLPsdPfU1nOLkei4cNYX1kdU3X5WM-L294,77552 +torch/_inductor/codegen/cpp_template.py,sha256=c_R8X6s5kaNI86UrKe7FlBBqEKSRVpVfkFomNYnoExo,5028 +torch/_inductor/codegen/cpp_template_kernel.py,sha256=dobRQOlUs6bM5jPC8iTrjbcNVSLvQRBaxN3LFDSsIOU,26015 +torch/_inductor/codegen/cpp_utils.py,sha256=PsG7Z84Aain5rFCQ1W2FUWGHKGaz3X_URxINnRM_J-4,28409 +torch/_inductor/codegen/cpp_wrapper_cpu.py,sha256=9c-pWp9Hj3Hg-Q2yRkv9gmQETi2E0MA9VcnVN2HvPA4,134792 +torch/_inductor/codegen/cpp_wrapper_cpu_array_ref.py,sha256=QEK0AH9tl7NwBL_PdTCOsgSQVFP3ofl9q04ib9zYt9c,39018 +torch/_inductor/codegen/cpp_wrapper_gpu.py,sha256=ozjVFGow4o0GLji7LN9TGlgFsROBqgNjXPOOc9YM5uY,55244 +torch/_inductor/codegen/cpp_wrapper_mps.py,sha256=QGEG0Q0z_Va2q45MDRqsIYuvIYciMN1ePQZiRP-ZAdk,12405 +torch/_inductor/codegen/cpu_device_op_overrides.py,sha256=LhucRsCxEnVVckP2YLQy41J7lk-vXZnDNWAVUZKyvaQ,694 +torch/_inductor/codegen/cuda/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/_inductor/codegen/cuda/__pycache__/__init__.cpython-311.pyc,, +torch/_inductor/codegen/cuda/__pycache__/compile_utils.cpython-311.pyc,, +torch/_inductor/codegen/cuda/__pycache__/cuda_env.cpython-311.pyc,, +torch/_inductor/codegen/cuda/__pycache__/device_op_overrides.cpython-311.pyc,, +torch/_inductor/codegen/cuda/compile_utils.py,sha256=J5ujGCmRrpzDj-ZV6Jz0cdu4pUpwwxiKlhO-Myvz5QI,9048 +torch/_inductor/codegen/cuda/cuda_env.py,sha256=BB3H-VM9lTs82v4l2YwQbCb2wAhqdhC91V_R4FBQgI8,1354 +torch/_inductor/codegen/cuda/device_op_overrides.py,sha256=bhCRrxuyhmW6A4mJZW42g_JdWkOUK3LwmxMHw55fZkQ,14804 +torch/_inductor/codegen/cuda_combined_scheduling.py,sha256=c6-a0pzgYOodkoSOXUfSugN_NOJdql8mHWQmTbBu0h8,7519 +torch/_inductor/codegen/custom_extern_kernel_codegen.py,sha256=IAdanV4i1K76cG6jPes_-dusUGMfeAm6YNntXO_p3WE,3066 +torch/_inductor/codegen/cutedsl/__init__.py,sha256=LCdU39rzLOP3q27650YlpGE3wo5SRH2IPdvEoybU6rg,164 +torch/_inductor/codegen/cutedsl/__pycache__/__init__.cpython-311.pyc,, +torch/_inductor/codegen/cutedsl/__pycache__/_cutedsl_utils.cpython-311.pyc,, +torch/_inductor/codegen/cutedsl/__pycache__/cutedsl_kernel.cpython-311.pyc,, +torch/_inductor/codegen/cutedsl/__pycache__/cutedsl_op_overrides.cpython-311.pyc,, +torch/_inductor/codegen/cutedsl/__pycache__/cutedsl_scheduling.cpython-311.pyc,, +torch/_inductor/codegen/cutedsl/__pycache__/cutedsl_template.cpython-311.pyc,, +torch/_inductor/codegen/cutedsl/_cutedsl_utils.py,sha256=1ecTHpFzE9tWjciDwBHMmpWqp3r_fKkpZAQmFkHkWIM,942 +torch/_inductor/codegen/cutedsl/cutedsl_kernel.py,sha256=uecEdr_e0jxgOuY8Dn4L_AvZn10iAq2B8XsOcRclE20,23678 +torch/_inductor/codegen/cutedsl/cutedsl_op_overrides.py,sha256=mJmziCx2Ncamjtrc_xHJ--feRFbOlUml1f8acoWGLcU,19850 +torch/_inductor/codegen/cutedsl/cutedsl_scheduling.py,sha256=jNKkpmy_Bc3u7Mw4d6D3otc1cPLyqWT3j33Mgym0r0Y,5310 +torch/_inductor/codegen/cutedsl/cutedsl_template.py,sha256=yT5mhVuZQXKF4gVNy9_4z2tlYJbIYv1yHnNz4vZGpCM,7611 +torch/_inductor/codegen/cutlass/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/_inductor/codegen/cutlass/__pycache__/__init__.cpython-311.pyc,, +torch/_inductor/codegen/cutlass/__pycache__/cache.cpython-311.pyc,, +torch/_inductor/codegen/cutlass/__pycache__/gemm_template.cpython-311.pyc,, +torch/_inductor/codegen/cutlass/__pycache__/kernel.cpython-311.pyc,, +torch/_inductor/codegen/cutlass/__pycache__/python_evt.cpython-311.pyc,, +torch/_inductor/codegen/cutlass/__pycache__/scheduling.cpython-311.pyc,, +torch/_inductor/codegen/cutlass/__pycache__/serialization.cpython-311.pyc,, +torch/_inductor/codegen/cutlass/__pycache__/template.cpython-311.pyc,, +torch/_inductor/codegen/cutlass/__pycache__/utils.cpython-311.pyc,, +torch/_inductor/codegen/cutlass/cache.py,sha256=HMkOGgI-sIjKves4cf0GMHjJJy0zhiVBuTdSoNc0xbI,3676 +torch/_inductor/codegen/cutlass/gemm_template.py,sha256=68xeUwBKJK5sSU4rbyCeIkNdpa9oSeJ5hxEl8rP2GVA,81309 +torch/_inductor/codegen/cutlass/kernel.py,sha256=3TV0GrfHnd3x_x12l2jGk3A-t1vV-SWEHmtpk22x6oM,24931 +torch/_inductor/codegen/cutlass/lib_extensions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/_inductor/codegen/cutlass/lib_extensions/__pycache__/__init__.cpython-311.pyc,, +torch/_inductor/codegen/cutlass/lib_extensions/__pycache__/evt_extensions.cpython-311.pyc,, +torch/_inductor/codegen/cutlass/lib_extensions/__pycache__/gemm_operation_extensions.cpython-311.pyc,, +torch/_inductor/codegen/cutlass/lib_extensions/cutlass_mock_imports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/_inductor/codegen/cutlass/lib_extensions/cutlass_mock_imports/__pycache__/__init__.cpython-311.pyc,, +torch/_inductor/codegen/cutlass/lib_extensions/cutlass_mock_imports/cuda/__init__.py,sha256=zIVQSgcv5C12tIsovmz3xGgBqoATUltX2c4-VG2e3tU,83 +torch/_inductor/codegen/cutlass/lib_extensions/cutlass_mock_imports/cuda/__pycache__/__init__.cpython-311.pyc,, +torch/_inductor/codegen/cutlass/lib_extensions/cutlass_mock_imports/cuda/__pycache__/cuda.cpython-311.pyc,, +torch/_inductor/codegen/cutlass/lib_extensions/cutlass_mock_imports/cuda/__pycache__/cudart.cpython-311.pyc,, +torch/_inductor/codegen/cutlass/lib_extensions/cutlass_mock_imports/cuda/cuda.py,sha256=MAbpo0K0ESplc0TsHAeuOE0ty5K1SUrROdDZ8sqVvWs,314 +torch/_inductor/codegen/cutlass/lib_extensions/cutlass_mock_imports/cuda/cudart.py,sha256=pkNjquWqOMt8KAnOBkHbIxpgBmdWRZqXZbpQXS7ElK0,305 +torch/_inductor/codegen/cutlass/lib_extensions/cutlass_mock_imports/pydot/__init__.py,sha256=AkdGQWifQLxFzB5RR5EcXNCg_AQX446DLfp-64Q7D4I,54 +torch/_inductor/codegen/cutlass/lib_extensions/cutlass_mock_imports/pydot/__pycache__/__init__.cpython-311.pyc,, +torch/_inductor/codegen/cutlass/lib_extensions/cutlass_mock_imports/scipy/__init__.py,sha256=SiRBwZsGLISQfmWy5-pkpAzRopAkCy9kzx8JOjV4YX8,55 +torch/_inductor/codegen/cutlass/lib_extensions/cutlass_mock_imports/scipy/__pycache__/__init__.cpython-311.pyc,, +torch/_inductor/codegen/cutlass/lib_extensions/cutlass_mock_imports/scipy/__pycache__/special.cpython-311.pyc,, +torch/_inductor/codegen/cutlass/lib_extensions/cutlass_mock_imports/scipy/special.py,sha256=NcOk2HGGaIsTnV0LPyRYnBXcR3WumPqGw2rKDT4dedk,54 +torch/_inductor/codegen/cutlass/lib_extensions/evt_extensions.py,sha256=28TqEkJrQwhYU7atnvC7xMgSnBpShMmFk9MCYJ06MAY,11442 +torch/_inductor/codegen/cutlass/lib_extensions/gemm_operation_extensions.py,sha256=cr-e7HhnwBELKUm90yBzpWpVSYpuwGcOnuzg2fRpufs,18972 +torch/_inductor/codegen/cutlass/python_evt.py,sha256=146u5IqKnktm17MZ_T52wc3e2jaGxajzPS4hcYo-mxQ,11833 +torch/_inductor/codegen/cutlass/scheduling.py,sha256=fNp8zanHeGAtRdqRi42AVLxGoTzaNiB6Mt5fwB_jKrQ,12037 +torch/_inductor/codegen/cutlass/serialization.py,sha256=tHx1fRCqahw5KpJ3Hyr9q0uh0TCi35e3CQsADzvwuQk,17761 +torch/_inductor/codegen/cutlass/template.py,sha256=Nwz3uShe3eG3PgFVNSIndR2FRFnMp10vdxdpeHcBLi0,13867 +torch/_inductor/codegen/cutlass/utils.py,sha256=DCOme7xnM4l-hJCwV7b7YDDzB0pTZF8KkznBzwnp_Y4,17813 +torch/_inductor/codegen/debug_utils.py,sha256=zIKAzL3oT5LmwDkVNRG5Eyg67NGMgqInb_S6Q6nq3Yc,11365 +torch/_inductor/codegen/halide.py,sha256=yi89Gxcb1NlqgEpYkg1Rx0di_jxcslO6FoLXCk0hkJk,66463 +torch/_inductor/codegen/memory_planning.py,sha256=5KzpVP2BHuiucaz_32Bdq77ZfjdTYotUkHmecY7tmuQ,26578 +torch/_inductor/codegen/mps.py,sha256=2Dq4Ahosdi34NLn9rxvVj6gLj-syfx36azA_io80fhM,47962 +torch/_inductor/codegen/mps_device_op_overrides.py,sha256=AY7QsOH2mELU0HsZz6B6ygxdSGwVnvS7v4ypb8KRXlo,671 +torch/_inductor/codegen/mtia/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/_inductor/codegen/mtia/__pycache__/__init__.cpython-311.pyc,, +torch/_inductor/codegen/mtia/__pycache__/device_op_overrides.cpython-311.pyc,, +torch/_inductor/codegen/mtia/device_op_overrides.py,sha256=3pP0peusaHi8fkuf9ZHnwFE88KYjH-0YJcAT07ZCFuA,637 +torch/_inductor/codegen/multi_kernel.py,sha256=G_9V9Ev8IzUDk0HPR2AWunc9_rrs8zzpA6bU9YSrZmc,23355 +torch/_inductor/codegen/nv_universal_gemm/__init__.py,sha256=9D2vBtuP0_NBGKGcFXxB8dK68mquVbiSHe3JqrHbYG0,416 +torch/_inductor/codegen/nv_universal_gemm/__pycache__/__init__.cpython-311.pyc,, +torch/_inductor/codegen/nv_universal_gemm/__pycache__/kernel_cache.cpython-311.pyc,, +torch/_inductor/codegen/nv_universal_gemm/__pycache__/nv_universal_gemm.cpython-311.pyc,, +torch/_inductor/codegen/nv_universal_gemm/__pycache__/nv_universal_gemm_kernel.cpython-311.pyc,, +torch/_inductor/codegen/nv_universal_gemm/__pycache__/nv_universal_gemm_scheduling.cpython-311.pyc,, +torch/_inductor/codegen/nv_universal_gemm/__pycache__/nv_universal_gemm_utils.cpython-311.pyc,, +torch/_inductor/codegen/nv_universal_gemm/kernel_cache.py,sha256=iuTLqH6jwZHAm5jY7Mf9IOtslHvDhitDjfyKvovxC5M,2717 +torch/_inductor/codegen/nv_universal_gemm/nv_universal_gemm.py,sha256=d6JVTr0hMhUphCo4DjNzx5QIOgZhtZaMaEgyqttqGvk,18668 +torch/_inductor/codegen/nv_universal_gemm/nv_universal_gemm_kernel.py,sha256=hs1HUW-x3euWWhAvMCMYPh3KHdrKn7K1covYwb8Qqro,11240 +torch/_inductor/codegen/nv_universal_gemm/nv_universal_gemm_scheduling.py,sha256=qhlQFG2z5-4WFisypVELfWXMkoNBpcDEJOe75Bnctys,5185 +torch/_inductor/codegen/nv_universal_gemm/nv_universal_gemm_utils.py,sha256=mNkSqUjrkIXWw0tK6c5kM-dvCz6G6ZSizpoi4hq0c9I,1417 +torch/_inductor/codegen/pallas.py,sha256=K5XIlR-7tbjfR5MKuGIng1j5CrcsKvnBV9FxDPxM1IM,200891 +torch/_inductor/codegen/python_wrapper_mtia.py,sha256=XEIoUYldr_tZ-E1301BGTvgSsari-L2ygLOmouNNCww,988 +torch/_inductor/codegen/rocm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/_inductor/codegen/rocm/__pycache__/__init__.cpython-311.pyc,, +torch/_inductor/codegen/rocm/__pycache__/ck_conv_template.cpython-311.pyc,, +torch/_inductor/codegen/rocm/__pycache__/ck_template.cpython-311.pyc,, +torch/_inductor/codegen/rocm/__pycache__/ck_tile_template.cpython-311.pyc,, +torch/_inductor/codegen/rocm/__pycache__/ck_tile_universal_gemm_template.cpython-311.pyc,, +torch/_inductor/codegen/rocm/__pycache__/ck_universal_gemm_template.cpython-311.pyc,, +torch/_inductor/codegen/rocm/__pycache__/compile_command.cpython-311.pyc,, +torch/_inductor/codegen/rocm/__pycache__/rocm_benchmark_request.cpython-311.pyc,, +torch/_inductor/codegen/rocm/__pycache__/rocm_cpp_scheduling.cpython-311.pyc,, +torch/_inductor/codegen/rocm/__pycache__/rocm_kernel.cpython-311.pyc,, +torch/_inductor/codegen/rocm/__pycache__/rocm_template.cpython-311.pyc,, +torch/_inductor/codegen/rocm/__pycache__/rocm_template_buffer.cpython-311.pyc,, +torch/_inductor/codegen/rocm/__pycache__/rocm_utils.cpython-311.pyc,, +torch/_inductor/codegen/rocm/ck_conv_template.py,sha256=j6EuqXegHn8_EKas2uQOZVlg3bJq_YVY-_dNciVuivQ,24936 +torch/_inductor/codegen/rocm/ck_template.py,sha256=eNUthfvZo-H9Ayvg-1yJUfVZFhF3eBJHxESY5oWZyts,3695 +torch/_inductor/codegen/rocm/ck_tile_template.py,sha256=Qm1oW_WPVexswfI8HwL9lgfYUxEwhd4ehmDKz3AOHik,1591 +torch/_inductor/codegen/rocm/ck_tile_universal_gemm_template.py,sha256=xj3bXtb-mEIAVQmp7TkLEGqA1yyL5oMV55y8L2_O2HI,37033 +torch/_inductor/codegen/rocm/ck_universal_gemm_template.py,sha256=xXyV6cUoddgTdEEzhDWSY4N0OCL8R0Z6FDamgcCxyUg,39641 +torch/_inductor/codegen/rocm/compile_command.py,sha256=mK5kZTig4Ld8Sj1PMDdIZJhobmGnQwFJJ-dD_1X7okU,4628 +torch/_inductor/codegen/rocm/rocm_benchmark_request.py,sha256=9Dxy73lx5UId2zNSTf5T9oyeNqzd8rrXFzW9yn6bf-0,5029 +torch/_inductor/codegen/rocm/rocm_cpp_scheduling.py,sha256=MMO-IotoXV99j_kr81raYYs74tazaJLX34nzMTg4N-0,3850 +torch/_inductor/codegen/rocm/rocm_kernel.py,sha256=ngiOD-ERJ3WViyJCV8NVwYM7lkgvSy-Aco-5Eaq38mE,10450 +torch/_inductor/codegen/rocm/rocm_template.py,sha256=N6axOREeEk38YCNkbaJzXXpu2FS9a_Q3L4m7gnEFqSg,6634 +torch/_inductor/codegen/rocm/rocm_template_buffer.py,sha256=UMhXlEMC2acFTLJqJwKx1btyB7uuxOe_Ftr364CzNLw,827 +torch/_inductor/codegen/rocm/rocm_utils.py,sha256=_tYJSiuN0xtpJvqM9xycWNsRRC0UzuhGxIMwp0gIHxw,336 +torch/_inductor/codegen/segmented_tree.py,sha256=BOqdDKVQtRK2h0hc6T6zkj6occ6y79Rzvdaf-xmh60k,8177 +torch/_inductor/codegen/simd.py,sha256=JdS3hRKR4rEKUjcDazg77ndnyQLlS4h7PdXz4H4J0s8,127018 +torch/_inductor/codegen/simd_kernel_features.py,sha256=HwZCDCNRbBqUM1UMxYE7HFxh6JimzdcnSge2XdouA3I,24586 +torch/_inductor/codegen/subgraph.py,sha256=KgixXbwcccviLPq6cBBi68ZN8L3jiilxtgMSjb7pAr8,24203 +torch/_inductor/codegen/triton.py,sha256=gWok7P7xa3Rg90Tp5fZ6IxPJyZMFSkKHRwueuD8czQ0,278256 +torch/_inductor/codegen/triton_combo_kernel.py,sha256=l3JVStWdXtKxlVjjkN1HTCPS_PrC9edNiRcyzaBoPDo,51598 +torch/_inductor/codegen/triton_split_scan.py,sha256=1RZWmgEVdqyf77LkdTi0bP-m3qk3F6it29Sg9NR10P0,7670 +torch/_inductor/codegen/triton_utils.py,sha256=jP-WkQRoWqdfAt9lGrNLmBQ_7O0jfAk9O83aFx5ahis,10894 +torch/_inductor/codegen/wrapper.py,sha256=_oolt_aaZfWXTxF2YiYDzUrv4eu1Nlt9xrzu51l2s3k,174350 +torch/_inductor/codegen/wrapper_fxir.py,sha256=H6Yh5uG9eqWru5Pc8nQfUiEKcRRtq2iX_aTYemMh4F4,46320 +torch/_inductor/codegen/xpu/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/_inductor/codegen/xpu/__pycache__/__init__.cpython-311.pyc,, +torch/_inductor/codegen/xpu/__pycache__/compile_utils.cpython-311.pyc,, +torch/_inductor/codegen/xpu/__pycache__/device_op_overrides.cpython-311.pyc,, +torch/_inductor/codegen/xpu/__pycache__/xpu_combined_scheduling.cpython-311.pyc,, +torch/_inductor/codegen/xpu/__pycache__/xpu_env.cpython-311.pyc,, +torch/_inductor/codegen/xpu/compile_utils.py,sha256=op2hFf0rNcv5o5mlUQZIDHc_DCqBB-aXl8LS0syzqx0,4088 +torch/_inductor/codegen/xpu/device_op_overrides.py,sha256=MMpBqzsxeQgdd9tImLEUqxxVeUWl23wVdDyuUJyFeYk,1849 +torch/_inductor/codegen/xpu/xpu_combined_scheduling.py,sha256=dQ28ZcNMbYLAZyQ6gAeGSotEBwa71XsRhlNXlbAEwxg,4735 +torch/_inductor/codegen/xpu/xpu_env.py,sha256=_PsKVlhLOP229ZgfJkKrz43NGkRglYetn_czpbG1dvw,902 +torch/_inductor/comm_analysis.py,sha256=ZubYn4iYadACiBGuA4fYYMyIdDuqC-2Ui2b-TrR3uNU,18147 +torch/_inductor/comm_lowering.py,sha256=8DxGSHT1KqVMyFTxJhPyzevLnDZT_EG92BsdDlxH_Lc,29000 +torch/_inductor/comms.py,sha256=VCtOAz84LcUP_5RvdBWFDItJCGjNRy0PGBX4yJxXRpo,104964 +torch/_inductor/comms_debug.py,sha256=Y_qM_qrvN4mQhSiAddBPwQCa-KX8EyB1Ho0rDP2mRwk,4214 +torch/_inductor/compile_fx.py,sha256=4r9tayXLmDI8Y0ayHGB1qnI_w-oYzDK-Zp1bRuV1odg,128771 +torch/_inductor/compile_fx_async.py,sha256=s-g98pt2_qiYHGz5RnqargZi1XyglTL9LAUTriAi0Jo,14887 +torch/_inductor/compile_fx_ext.py,sha256=VM1jDkWoLXNkTOMvTzzgqoFu7Qm6GPoUP2f3wP1iWac,24672 +torch/_inductor/compile_fx_subproc.py,sha256=QpkT9JjsaZPk2wwF1hVumjUcn6kD1FK5sGwXVF3B2SQ,3158 +torch/_inductor/compile_worker/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/_inductor/compile_worker/__main__.py,sha256=Yj1LnCvSJWe_Y8LWarFQLceqCmadcX7RhqP9uBS-zYA,2245 +torch/_inductor/compile_worker/__pycache__/__init__.cpython-311.pyc,, +torch/_inductor/compile_worker/__pycache__/__main__.cpython-311.pyc,, +torch/_inductor/compile_worker/__pycache__/subproc_pool.cpython-311.pyc,, +torch/_inductor/compile_worker/__pycache__/timer.cpython-311.pyc,, +torch/_inductor/compile_worker/__pycache__/tracked_process_pool.cpython-311.pyc,, +torch/_inductor/compile_worker/__pycache__/utils.cpython-311.pyc,, +torch/_inductor/compile_worker/subproc_pool.py,sha256=7PpSDYrRnVaD48msK9i86lOuq68gXxshzPei0L8EOV0,17443 +torch/_inductor/compile_worker/timer.py,sha256=8VuP5_NwEN-zt_7vnXNSAiX3RUFUhaUMuxfLg0x16NA,1818 +torch/_inductor/compile_worker/tracked_process_pool.py,sha256=kw1Ur8UzCdTf91lbKnbNe_O4Ua5jQb58UKOINNRdku0,3674 +torch/_inductor/compile_worker/utils.py,sha256=y5eRcA1k1h1PxpEDhpndNKVZngLleEHcOpoYcnDyuKE,1595 +torch/_inductor/compiler_bisector.py,sha256=63lBK4W7iH9dXgkHgV_5GfDicIBVszTazjsZ4jfAqUA,27642 +torch/_inductor/config.py,sha256=EzTT_3mnk7k9pAX56mOp7qoU7q_bhFW9Lj9jwcTl3Bw,109332 +torch/_inductor/config_comms.py,sha256=KwIjE-bJGkaqi3fxiSbNNRYnBsilaUltR022M3ShPQU,3052 +torch/_inductor/constant_folding.py,sha256=1tpPJcLGz35B96SXWm8uoqYidQ3ch2kpoCp8JfmuEug,15639 +torch/_inductor/cpp_builder.py,sha256=r81b6O8tLxgEHA86v5bSDfP5mMzaacecujzjAILmWvk,99972 +torch/_inductor/cpu_vec_isa.py,sha256=sQwNDLO-xsxeXZfK9JvjOyWixd0QZrAF0b53XQtm7vo,18103 +torch/_inductor/cudagraph_trees.py,sha256=KFuhwa2ywVSUd-LCIkSiTp2NWSbf6scrcnnsajYbf08,110992 +torch/_inductor/cudagraph_utils.py,sha256=8a3TmP3Brs1A8ZKbsJ_SzrB9z8OCS5zlm9Z8sPdGyPI,18356 +torch/_inductor/custom_graph_pass.py,sha256=l2UH4rvqnwPr44GgZGuQ0tylMasfJq_mdwpD9T1yfNs,10598 +torch/_inductor/debug.py,sha256=yj0FJJZRo1K6GqDxM6pWwsHw--ciVpedcHR3uQOdnuQ,47127 +torch/_inductor/decomposition.py,sha256=ewkuxCPjgxNjA-uHHix2QSb48k_PUxCRDpvpNhwf8Yo,43711 +torch/_inductor/dependencies.py,sha256=1QNzjFNlcMA7X5-46pdGmqHByN34Tb_YwZIyCgtTR4M,32302 +torch/_inductor/distributed_autotune.py,sha256=eVOhuBuKL-r6SCVUOQ3HN967W-1vvwMP8laiQydzWdM,12303 +torch/_inductor/dtype_propagation.py,sha256=8aW2oMdw4jZ3U3_VH-th0SFJkYr7SahKkWczdLZrGRw,14315 +torch/_inductor/exc.py,sha256=fEd61Ca3fO4Tpd-Rz6f60JuEaKwB0_5y-SOlZ5tHSq0,5002 +torch/_inductor/extern_node_serializer.py,sha256=tvVk5NzYVvqTI0v-k2hQikc8h6EsXazK1NQ2soHZ2yc,830 +torch/_inductor/freezing.py,sha256=Gw98XWkl3-S3LKhbRP3LT7p40YhUG3WEOFjvwKS7IYg,11077 +torch/_inductor/freezing_utils.py,sha256=0kQfN4H2yEI_eNXINqa0ws5Q-mm9EVT6ARcAKrz3P80,1268 +torch/_inductor/fuzzer.py,sha256=xCI5ldbNxKjLXFBmMd2zBfNyC5cgKYHaX8tZ0H_g2tM,37785 +torch/_inductor/fx_passes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/_inductor/fx_passes/__pycache__/__init__.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/apply_gumbel_max_trick.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/b2b_gemm.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/binary_folding.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/bucketing.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/control_dependencies.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/ddp_fusion.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/decompose_mem_bound_mm.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/dedupe_symint_uses.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/efficient_conv_bn_eval.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/freezing_patterns.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/fsdp.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/fuse_attention.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/fusion_regions.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/graph_view.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/group_batch_fusion.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/joint_graph.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/memory_estimator.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/micro_pipeline_tp.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/misc_patterns.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/mkldnn_fusion.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/node_runtime_estimation.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/numeric_utils.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/overlap_manual_scheduling.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/overlap_preserving_bucketer.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/overlap_scheduling.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/pad_mm.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/post_grad.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/pre_grad.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/quantization.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/reduced_atomic_contention.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/reinplace.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/replace_random.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/split_cat.cpython-311.pyc,, +torch/_inductor/fx_passes/__pycache__/spmd_check.cpython-311.pyc,, +torch/_inductor/fx_passes/apply_gumbel_max_trick.py,sha256=DsbKM0ZVUOcTyk1T740CUYSBFtNVCkZMhbLPlY1hzSw,1847 +torch/_inductor/fx_passes/auto_chunker/__init__.py,sha256=pqRDYIVNxTGFK5R54Iw0beoE31PoYA2A8fP4937t87w,2708 +torch/_inductor/fx_passes/auto_chunker/__pycache__/__init__.cpython-311.pyc,, +torch/_inductor/fx_passes/auto_chunker/__pycache__/applier.cpython-311.pyc,, +torch/_inductor/fx_passes/auto_chunker/__pycache__/common.cpython-311.pyc,, +torch/_inductor/fx_passes/auto_chunker/__pycache__/core.cpython-311.pyc,, +torch/_inductor/fx_passes/auto_chunker/__pycache__/propagate_scale_by.cpython-311.pyc,, +torch/_inductor/fx_passes/auto_chunker/__pycache__/propagator.cpython-311.pyc,, +torch/_inductor/fx_passes/auto_chunker/__pycache__/utils.cpython-311.pyc,, +torch/_inductor/fx_passes/auto_chunker/applier.py,sha256=4pEY1ilC7QOPgoc5Jx0VH0nTKgqMz1rvAm2UbFRBYpU,17378 +torch/_inductor/fx_passes/auto_chunker/common.py,sha256=jPYW-i1jXvxzJJlPsgbGVb7Ho-m1asA-ebz2-LjgL_o,2240 +torch/_inductor/fx_passes/auto_chunker/core.py,sha256=17BZwtJQ4jTSnC1PFV-mV5HZbLkPnaL6yqj4KVezMDo,6395 +torch/_inductor/fx_passes/auto_chunker/propagate_scale_by.py,sha256=ZaFcUmzBd7Q6XkwfJbjdliE5gQ2WQpWqRTfKJc-8Axs,7667 +torch/_inductor/fx_passes/auto_chunker/propagator.py,sha256=VYmiz8bS1z7f2CpJTwA8I7DvIY1InZdPxGuWTAKD874,30663 +torch/_inductor/fx_passes/auto_chunker/utils.py,sha256=Hc3QnLIMewNdpjBdChw-4jiNCecQSxTJCb66yNu5aw8,5173 +torch/_inductor/fx_passes/b2b_gemm.py,sha256=z6qwi1UQD4r3qv7tbLEcRuw2y0MNsHi5VrW88aL8hxI,25633 +torch/_inductor/fx_passes/binary_folding.py,sha256=GftJvNpuD8uJh7vNYnV4QXLXL4sq5S680D6Y0IYndmE,19830 +torch/_inductor/fx_passes/bucketing.py,sha256=NWfwn16jcSeACjmke-n9rIaxSEUgOA-infuQbj0wBE8,46392 +torch/_inductor/fx_passes/control_dependencies.py,sha256=q1BNaiEkzkIdScUdTuziOvGcG8f36CkpPRNLDKCfOnY,10342 +torch/_inductor/fx_passes/ddp_fusion.py,sha256=trXcn6RdhE3VXpzw6Ti1ik1bA_5CJI3SgrbQhjAeQY8,21116 +torch/_inductor/fx_passes/decompose_mem_bound_mm.py,sha256=0THzgsrRPfs3JAmDFeHGeIQ5zKZL8diQ1RBPc-ent7E,11217 +torch/_inductor/fx_passes/dedupe_symint_uses.py,sha256=Bfuj7IhzY3DuixClyuziJM_jJ_w_zdfxsi7ULJcIxjk,2505 +torch/_inductor/fx_passes/efficient_conv_bn_eval.py,sha256=GtDFXHZ8S9Oo7Ys1iG5sXABxOc6Ey33GnZsAVW9a6LQ,14114 +torch/_inductor/fx_passes/freezing_patterns.py,sha256=OsRRUNr2XbXUet2EazlsjEVTVBgNheMDYCs22dJUXos,9850 +torch/_inductor/fx_passes/fsdp.py,sha256=-pFBpGNSFKAPd2haNXlUFMK-sqbHSeGNonpre4b4Ots,3551 +torch/_inductor/fx_passes/fuse_attention.py,sha256=2i7VsKbHrLVU3Hr6IQXDe7JbYpmGRwOLHWHMTFebvms,44010 +torch/_inductor/fx_passes/fusion_regions.py,sha256=VQZAZP5_DFH3V_JY7kxFBEFlcN5ZXt7Sptb2cqm9Ld8,11590 +torch/_inductor/fx_passes/graph_view.py,sha256=48ragODf9N7apGrt7rbLFq5A4vq4BfzHq6aeosxEtMQ,8992 +torch/_inductor/fx_passes/group_batch_fusion.py,sha256=WTvPM2GNOYzD3fqy1frSIgFxpULW4ynRHD344vDic1Q,59375 +torch/_inductor/fx_passes/joint_graph.py,sha256=zNeA6WvieRo4YRGXCMVPH85AaptzD_Winajb3_0TDnc,40362 +torch/_inductor/fx_passes/memory_estimator.py,sha256=cpPgFUlFoKyeIsqdYauLE9FFdyDxcDuc7K6eS_5BadQ,17146 +torch/_inductor/fx_passes/micro_pipeline_tp.py,sha256=uRr1yn9SLAazplpvicEHB6p2iDeZIk-XLwd2dfFlVLQ,40346 +torch/_inductor/fx_passes/misc_patterns.py,sha256=PoZU_iIc1zW4-33Tpb3wMUxS6Oske1SR4oY3E8ck_to,8362 +torch/_inductor/fx_passes/mkldnn_fusion.py,sha256=ui6VKbaPRnCJ9lEpAdgDPw66PWIXQeq9OY7lPBf7hng,62579 +torch/_inductor/fx_passes/node_runtime_estimation.py,sha256=7DEiOI6-u-wgTjga9V3s9-nNpiMFai6XhPSSOcIVNus,13274 +torch/_inductor/fx_passes/numeric_utils.py,sha256=D-tB9vsKK1V1lR-7UCXBJailxQuHPkkKmuddOYrfnPk,7285 +torch/_inductor/fx_passes/overlap_manual_scheduling.py,sha256=S9hNQS6xlOzwdjCg7jcS25VehqvcHUDK1uJa6aRTp9U,15520 +torch/_inductor/fx_passes/overlap_preserving_bucketer.py,sha256=wPdTYRIY_9VkqJgikuXw24DNBKfFNr1aVmFUfH-bs90,44036 +torch/_inductor/fx_passes/overlap_scheduling.py,sha256=XB8J9dMCAlxBhnilpPNJ8dpcZsTemxugFXQ3dbAoeYc,74361 +torch/_inductor/fx_passes/pad_mm.py,sha256=ZJB62GwOokW_bQSHSL0G0L_Pt95cqbsJgk93EARVqrY,32700 +torch/_inductor/fx_passes/post_grad.py,sha256=tw5MHdH5iSFeLsmNYboLxb_7UbPXrRS5I4lRZj0qBto,73610 +torch/_inductor/fx_passes/pre_grad.py,sha256=2BbuLY9KacQLc8scR3grSmZT1XM7FsSe-FCoHH5Q2Dg,31751 +torch/_inductor/fx_passes/quantization.py,sha256=ozkuab3CNd0zqeknxTl9X_zkpRvtIzjGU6GmcBQGGY4,144005 +torch/_inductor/fx_passes/reduced_atomic_contention.py,sha256=DT0iXVy7Ntb3ul7oYnfftLOP2dikW8VJLF6BV5qgPrw,13477 +torch/_inductor/fx_passes/reinplace.py,sha256=kTd5jdqpp_TVB1KWRu7opxTYwE_6CBkxvS2sWuzNcXo,38142 +torch/_inductor/fx_passes/replace_random.py,sha256=3mRK1hTs7GSs7CXDvponVrQr49pv17bqpBRMCKcgrpw,8352 +torch/_inductor/fx_passes/serialized_patterns/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/_inductor/fx_passes/serialized_patterns/__pycache__/__init__.cpython-311.pyc,, +torch/_inductor/fx_passes/serialized_patterns/__pycache__/_sfdp_pattern_1.cpython-311.pyc,, +torch/_inductor/fx_passes/serialized_patterns/__pycache__/_sfdp_pattern_10.cpython-311.pyc,, +torch/_inductor/fx_passes/serialized_patterns/__pycache__/_sfdp_pattern_11.cpython-311.pyc,, +torch/_inductor/fx_passes/serialized_patterns/__pycache__/_sfdp_pattern_12.cpython-311.pyc,, +torch/_inductor/fx_passes/serialized_patterns/__pycache__/_sfdp_pattern_13.cpython-311.pyc,, +torch/_inductor/fx_passes/serialized_patterns/__pycache__/_sfdp_pattern_14.cpython-311.pyc,, +torch/_inductor/fx_passes/serialized_patterns/__pycache__/_sfdp_pattern_15.cpython-311.pyc,, +torch/_inductor/fx_passes/serialized_patterns/__pycache__/_sfdp_pattern_16.cpython-311.pyc,, +torch/_inductor/fx_passes/serialized_patterns/__pycache__/_sfdp_pattern_17.cpython-311.pyc,, +torch/_inductor/fx_passes/serialized_patterns/__pycache__/_sfdp_pattern_18.cpython-311.pyc,, +torch/_inductor/fx_passes/serialized_patterns/__pycache__/_sfdp_pattern_19.cpython-311.pyc,, +torch/_inductor/fx_passes/serialized_patterns/__pycache__/_sfdp_pattern_2.cpython-311.pyc,, +torch/_inductor/fx_passes/serialized_patterns/__pycache__/_sfdp_pattern_20.cpython-311.pyc,, +torch/_inductor/fx_passes/serialized_patterns/__pycache__/_sfdp_pattern_21.cpython-311.pyc,, +torch/_inductor/fx_passes/serialized_patterns/__pycache__/_sfdp_pattern_22.cpython-311.pyc,, +torch/_inductor/fx_passes/serialized_patterns/__pycache__/_sfdp_pattern_23.cpython-311.pyc,, +torch/_inductor/fx_passes/serialized_patterns/__pycache__/_sfdp_pattern_24.cpython-311.pyc,, +torch/_inductor/fx_passes/serialized_patterns/__pycache__/_sfdp_pattern_25.cpython-311.pyc,, +torch/_inductor/fx_passes/serialized_patterns/__pycache__/_sfdp_pattern_26.cpython-311.pyc,, +torch/_inductor/fx_passes/serialized_patterns/__pycache__/_sfdp_pattern_27.cpython-311.pyc,, +torch/_inductor/fx_passes/serialized_patterns/__pycache__/_sfdp_pattern_28.cpython-311.pyc,, +torch/_inductor/fx_passes/serialized_patterns/__pycache__/_sfdp_pattern_3.cpython-311.pyc,, +torch/_inductor/fx_passes/serialized_patterns/__pycache__/_sfdp_pattern_4.cpython-311.pyc,, +torch/_inductor/fx_passes/serialized_patterns/__pycache__/_sfdp_pattern_5.cpython-311.pyc,, +torch/_inductor/fx_passes/serialized_patterns/__pycache__/_sfdp_pattern_6.cpython-311.pyc,, +torch/_inductor/fx_passes/serialized_patterns/__pycache__/_sfdp_pattern_7.cpython-311.pyc,, +torch/_inductor/fx_passes/serialized_patterns/__pycache__/_sfdp_pattern_8.cpython-311.pyc,, +torch/_inductor/fx_passes/serialized_patterns/__pycache__/_sfdp_pattern_9.cpython-311.pyc,, +torch/_inductor/fx_passes/serialized_patterns/__pycache__/addmm_pattern.cpython-311.pyc,, +torch/_inductor/fx_passes/serialized_patterns/__pycache__/bmm_pattern.cpython-311.pyc,, +torch/_inductor/fx_passes/serialized_patterns/__pycache__/mm_pattern.cpython-311.pyc,, +torch/_inductor/fx_passes/serialized_patterns/_sfdp_pattern_1.py,sha256=jLk3u9vyyPhzzmJCf82H-lEa_ycI9FGR2F1e14BF7JA,11177 +torch/_inductor/fx_passes/serialized_patterns/_sfdp_pattern_10.py,sha256=bQt8DWmSMYkw1UmqS1kb6OHenKl549UFKueC14Cstwc,14566 +torch/_inductor/fx_passes/serialized_patterns/_sfdp_pattern_11.py,sha256=YzKAdp1wKREpwh-ma-MPjMKRAImnfIFpWrqbpBtJBPc,13987 +torch/_inductor/fx_passes/serialized_patterns/_sfdp_pattern_12.py,sha256=6o07OMAP3P4yuOSrmsW_AsSq9gYeTVD2SkxJh8xQoZc,15257 +torch/_inductor/fx_passes/serialized_patterns/_sfdp_pattern_13.py,sha256=yQOZ4yfymHPP_gNISoxq4pOt3xPic8eJY0InMr9hsPg,7862 +torch/_inductor/fx_passes/serialized_patterns/_sfdp_pattern_14.py,sha256=p729osgik7UB0ySzKMcthIj9Pk3rqh6OdP6wKZFNqvA,14323 +torch/_inductor/fx_passes/serialized_patterns/_sfdp_pattern_15.py,sha256=MdfVHtUJn0ZzgPsDoLIsj7Sla3HnflFCIELfS1uAYy0,16213 +torch/_inductor/fx_passes/serialized_patterns/_sfdp_pattern_16.py,sha256=-1tQU2MyC9heRGD6sOibLRER_Mlzx9civVLrREdQSMo,43596 +torch/_inductor/fx_passes/serialized_patterns/_sfdp_pattern_17.py,sha256=6MsCMyU-wCAUxWOmGt6fTqmbmTmm1BPeb3QhI8SDQuc,17441 +torch/_inductor/fx_passes/serialized_patterns/_sfdp_pattern_18.py,sha256=s_OuvfnHfCbwfWtG9QqMwuRx0uYAbvbPs6swWL58MUc,32880 +torch/_inductor/fx_passes/serialized_patterns/_sfdp_pattern_19.py,sha256=80S_fYu8eFi9FhufWN__ZeG3EseD_XMarFB7TFpryhk,14118 +torch/_inductor/fx_passes/serialized_patterns/_sfdp_pattern_2.py,sha256=-QeXpOThLf9w6HsKJT5nJdCfyXRK4sgxE6Jy4v87tdw,11187 +torch/_inductor/fx_passes/serialized_patterns/_sfdp_pattern_20.py,sha256=AMXQ7encxsqVvXc9a7ehsHSV9_WBEFvsKtABpbpcjeQ,17441 +torch/_inductor/fx_passes/serialized_patterns/_sfdp_pattern_21.py,sha256=JuyA3MEoqmEdHBKS8R4snC91h-1wJA4ryoCuuPToMdU,26370 +torch/_inductor/fx_passes/serialized_patterns/_sfdp_pattern_22.py,sha256=5uQr9YnaGegg59Hu8JHys5TZ55WQfU0qHYOre7KROOc,27046 +torch/_inductor/fx_passes/serialized_patterns/_sfdp_pattern_23.py,sha256=_k2LHqN7_IMqlAtoXicKTu_c5t1orr_VRVRbl2BueaE,26890 +torch/_inductor/fx_passes/serialized_patterns/_sfdp_pattern_24.py,sha256=02rc69wQcftSytBxCl5qbEG-MPQEpEi-es3NBNKxKpA,9115 +torch/_inductor/fx_passes/serialized_patterns/_sfdp_pattern_25.py,sha256=QoJdK9Pi-atiGTQMFH6lhGnnPA2pQFmz6nLtPFVmkT0,27818 +torch/_inductor/fx_passes/serialized_patterns/_sfdp_pattern_26.py,sha256=tFxqio8yOpYhDROKzBZnJ-Z8ID2kOtTUfiU6jVrQplM,28494 +torch/_inductor/fx_passes/serialized_patterns/_sfdp_pattern_27.py,sha256=r5fZLxsUTPkVPU4B0SLGX48twqPaOeqIusB3R7Ht2VQ,27838 +torch/_inductor/fx_passes/serialized_patterns/_sfdp_pattern_28.py,sha256=V3AZYXt4_0Z2KjVKNsltCtubC_ilZj_qPpqMU9WPnqg,13683 +torch/_inductor/fx_passes/serialized_patterns/_sfdp_pattern_3.py,sha256=GAyzPOGSMzkdAxXkk3qpf-8y8GrWY-Wetzpy1aJU4oI,12447 +torch/_inductor/fx_passes/serialized_patterns/_sfdp_pattern_4.py,sha256=x3mGjvSYS7hImiBFUpXbySYVw8ZNVjCyqjjTrNIiHsg,12411 +torch/_inductor/fx_passes/serialized_patterns/_sfdp_pattern_5.py,sha256=bmujzU6QCO7aYxqtE8J8esBq9lsXr6OJZi8rXpPwsFU,11513 +torch/_inductor/fx_passes/serialized_patterns/_sfdp_pattern_6.py,sha256=OitLrZvDQcqBzKGxOEmnvXuIUpf-K946j1WeA4fr7m4,12741 +torch/_inductor/fx_passes/serialized_patterns/_sfdp_pattern_7.py,sha256=4E2j9W9BLOzYNw4VdYilr2ItK8ZVvgUoA6lXlfgVdrM,15786 +torch/_inductor/fx_passes/serialized_patterns/_sfdp_pattern_8.py,sha256=FQhPAUET_ADKZDAcbT2onqhSoum9Ac1M9TkuvPw4Ni4,14554 +torch/_inductor/fx_passes/serialized_patterns/_sfdp_pattern_9.py,sha256=Ai-262aREFemsZQpk_tA5GWMrMW7xW_m7PbPa_9jcL0,15794 +torch/_inductor/fx_passes/serialized_patterns/addmm_pattern.py,sha256=9cl9L8L2CDu--cjIWRF63Ngl7YX9F38gGXCeEz3r0bY,1858 +torch/_inductor/fx_passes/serialized_patterns/bmm_pattern.py,sha256=6PYPyMz8dOVNYEKIIR67MvfdWL6TlF0xC8VnzsbHBLo,1272 +torch/_inductor/fx_passes/serialized_patterns/mm_pattern.py,sha256=MIExrwuf-ZmoMuOiUU3SENtMW8AjnW2yL9Q-kKsiqs0,1260 +torch/_inductor/fx_passes/split_cat.py,sha256=wX4o70ARFScNJxs3aCoj8SszkJR4T64bDJlVoU0lyUo,121569 +torch/_inductor/fx_passes/spmd_check.py,sha256=Z5nBoH8K6lohP4k9L8RUOdhAWCTHnxQ-e9HVY4EKyfc,7507 +torch/_inductor/fx_utils.py,sha256=70JdxsffpIrbMC11JYTQdgYN91OOA9qN-FzqWTmz7-U,13269 +torch/_inductor/graph.py,sha256=Bm8EnAu6S19qjzPbjb9wLvk0Cp3liFMvQpWstjEBdno,117489 +torch/_inductor/hooks.py,sha256=kUoOn0_wibHB8Cn9iSU427vUlTypKYh2J9DhwkKosEQ,666 +torch/_inductor/index_propagation.py,sha256=_L8UdV4Wl3OB3Oo2vSlF6gD4efpVpmBtS4NkARR1u-s,13280 +torch/_inductor/inductor_prims.py,sha256=EnafmiuPFR3t6fRS9C6JGDb00WOSw09JYJBjhok4HmQ,12482 +torch/_inductor/invert_expr_analysis.py,sha256=Fuwi_Avy3UjQ7kod4t2K-GSv8s8yXIWbtIDpMgYfBNE,6905 +torch/_inductor/ir.py,sha256=sZn9xqWv8dLVcO1xpQMAliEJXetksa7oBUC_ifT8Zew,392581 +torch/_inductor/jagged_lowerings.py,sha256=JtD7PHWQ_7IK25mRiH4NAr6TshXUUmPaesddnGHoMhI,9014 +torch/_inductor/kernel/__init__.py,sha256=4dfIYq5T99Rq8ncmT682RzjtYYLOYEwUVRzIbeyGysA,46 +torch/_inductor/kernel/__pycache__/__init__.cpython-311.pyc,, +torch/_inductor/kernel/__pycache__/bmm.cpython-311.pyc,, +torch/_inductor/kernel/__pycache__/conv.cpython-311.pyc,, +torch/_inductor/kernel/__pycache__/custom_op.cpython-311.pyc,, +torch/_inductor/kernel/__pycache__/mm.cpython-311.pyc,, +torch/_inductor/kernel/__pycache__/mm_common.cpython-311.pyc,, +torch/_inductor/kernel/__pycache__/mm_grouped.cpython-311.pyc,, +torch/_inductor/kernel/__pycache__/mm_plus_mm.cpython-311.pyc,, +torch/_inductor/kernel/bmm.py,sha256=5FgL7LcVqGpMpepXW3x-351QUneHz5mfUMakBA-jrdc,10153 +torch/_inductor/kernel/conv.py,sha256=UTDn29ps3latwZf1XquK2wxUM8TAaAzO05hZ8fMhJKs,23386 +torch/_inductor/kernel/custom_op.py,sha256=q3Kfea_XE-HaqwEKIjYdAatrVAl3POZlOIUlT28GIQ8,49422 +torch/_inductor/kernel/flex/__init__.py,sha256=_ca2fmTtYz5clo4uzQy2tbaLmypoau8LwEBJe8o5Kd0,153 +torch/_inductor/kernel/flex/__pycache__/__init__.cpython-311.pyc,, +torch/_inductor/kernel/flex/__pycache__/common.cpython-311.pyc,, +torch/_inductor/kernel/flex/__pycache__/flex_attention.cpython-311.pyc,, +torch/_inductor/kernel/flex/__pycache__/flex_cpu.cpython-311.pyc,, +torch/_inductor/kernel/flex/__pycache__/flex_decoding.cpython-311.pyc,, +torch/_inductor/kernel/flex/__pycache__/flex_flash_attention.cpython-311.pyc,, +torch/_inductor/kernel/flex/common.py,sha256=IQsO28smftUPZnYn34Swv0AqhDZ_X2KEYSEpZX2Dftk,11625 +torch/_inductor/kernel/flex/flex_attention.py,sha256=mH4iJnRqWpBCjfQgl9eQuwqh3-i0g73r2s6ekUKKXXU,38596 +torch/_inductor/kernel/flex/flex_cpu.py,sha256=nElaF3mWzOSU7WKQ7XfHmRfFErxgCqk2CaUqqjNMJOI,12226 +torch/_inductor/kernel/flex/flex_decoding.py,sha256=QjvfoTyVsAbTOzoKcgCHa4Cznl828zwErEM9v4ieW3E,15810 +torch/_inductor/kernel/flex/flex_flash_attention.py,sha256=jj8XBWwhJgFUCFId1SjBm_ZukVGf5Zq6_ZmOOpmrvc8,23361 +torch/_inductor/kernel/flex/templates/common.py.jinja,sha256=hXfMKwQFqcHBQFDv_T4kluovQYlwiy42SkYRgKtM_To,7074 +torch/_inductor/kernel/flex/templates/flash_attention.py.jinja,sha256=2DrEMG5o9QoCViz1lyAsTB8-2UbNkfO8xPMSXbi-sRg,2891 +torch/_inductor/kernel/flex/templates/flash_attention_backward.py.jinja,sha256=MoaLIllHNSwCoF3_sCmr35ngyZUv8EFU0OjRhbqUeqc,3648 +torch/_inductor/kernel/flex/templates/flex_attention.py.jinja,sha256=7IhvBAr6HYuaEigdRDhROCiZ-U61Yk2qLmV4IbYkm-0,9307 +torch/_inductor/kernel/flex/templates/flex_backwards.py.jinja,sha256=pfSQGO0LcN3-rCeT5484JwbmoxxwtxDrvgG9FKeNwIU,30142 +torch/_inductor/kernel/flex/templates/flex_decode.py.jinja,sha256=tEjiRfpbTx9z8YPHoBxWEiscNEpkwwEcnBwHkxaQQ6g,11070 +torch/_inductor/kernel/flex/templates/utilities.py.jinja,sha256=0Siotkd0DpHO797fORLKuikl4zg68KG1ZzL-7Y-mm_0,2258 +torch/_inductor/kernel/mm.py,sha256=ztwIfvpQxa7r5olggzxyEm-GbCCfYJ_IzDGsmVxKulg,38873 +torch/_inductor/kernel/mm_common.py,sha256=1cANcf8roYMsUX1QhxEpjXTNMuYE7OZckijfsb_7EXU,8246 +torch/_inductor/kernel/mm_grouped.py,sha256=Ppb6nHSG7YuxxFuPweUoWyF-GXPxsQJpmgt4mXLcqwE,15102 +torch/_inductor/kernel/mm_plus_mm.py,sha256=k48JgNuo-d5ZMp_kEkSGS_GMNhq36lBJpK8X9Drne4M,5903 +torch/_inductor/kernel/templates/cutedsl_mm_grouped.py.jinja,sha256=zq-mpTCpEi-noT_MbWOSqRAcp37vNtRez3HpyJFZKK4,11499 +torch/_inductor/kernel/templates/triton_blackwell_ws_persistent_device_tma_mm.py.jinja,sha256=hIMljiFj5avpzdnm1bW0jzduikleKXrvqLNCsk7ohhw,5135 +torch/_inductor/kernel/templates/triton_bmm.py.jinja,sha256=tm4Cejifgn2mNIDKz5_sGlE9txzwnferYJ3_Y52TX4k,2935 +torch/_inductor/kernel/templates/triton_depthwise_conv.py.jinja,sha256=vniupjpzjkQIr4xuJ8z9IX3Zy_696GYnJ7UHFF1eqM8,2118 +torch/_inductor/kernel/templates/triton_epilogue_scaled_mm.py.jinja,sha256=Ia6sY7G98qTPTLvst1-vlq8X61FotuHjs9MwK3AolaU,6370 +torch/_inductor/kernel/templates/triton_main_loop_scaled_mm.py.jinja,sha256=gK43gOVrS7TS4GmyUfmggvCs6Ypn_GGi1aHLsPq3euA,6035 +torch/_inductor/kernel/templates/triton_mm.py.jinja,sha256=2ZhC5GaAPi0dzRm4-qmSrNJtyctnG466dGjBh_O5AH8,2878 +torch/_inductor/kernel/templates/triton_mm_grouped.py.jinja,sha256=Y4maui6ZW2ZTq_LdpCyCx6ve-_E68fXi-fTlG2HDqXw,12552 +torch/_inductor/kernel/templates/triton_mm_rocm.py.jinja,sha256=jZCVMvz_VGV_RjGyqDnzBRDaSDOlO7VAfQf7y5jVlzc,2815 +torch/_inductor/kernel/templates/triton_persistent_mm.py.jinja,sha256=wpK3T5UTwo7L1bC9u-1_UNDeIjmz8tU9fKB6BHgO02I,3123 +torch/_inductor/kernel/templates/triton_persistent_tma_mm.py.jinja,sha256=DdrQ3xVsQQBoHaZhVjc4bR6MJAPnDqRmL3R97-wJP_g,4645 +torch/_inductor/kernel/vendored_templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/_inductor/kernel/vendored_templates/__pycache__/__init__.cpython-311.pyc,, +torch/_inductor/kernel/vendored_templates/cutedsl/__init__.py,sha256=JL0fKO0h8FafXYiX9rhcnEAHoxhUZhqBR30T7q6GOCI,62 +torch/_inductor/kernel/vendored_templates/cutedsl/__pycache__/__init__.cpython-311.pyc,, +torch/_inductor/kernel/vendored_templates/cutedsl/__pycache__/dense_blockscaled_gemm_persistent.cpython-311.pyc,, +torch/_inductor/kernel/vendored_templates/cutedsl/dense_blockscaled_gemm_persistent.py,sha256=n_fzjFvcfSAjDRncv1JJE7_NzY5YBjxYWPK43tWdaFg,85972 +torch/_inductor/kernel/vendored_templates/cutedsl/kernels/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/_inductor/kernel/vendored_templates/cutedsl/kernels/__pycache__/__init__.cpython-311.pyc,, +torch/_inductor/kernel/vendored_templates/cutedsl/kernels/__pycache__/cutedsl_grouped_gemm.cpython-311.pyc,, +torch/_inductor/kernel/vendored_templates/cutedsl/kernels/cutedsl_grouped_gemm.py,sha256=ShDnjUzXbQRBlcPTHqn4hCXbUoZiX9l5PAe8DxuRAXA,94438 +torch/_inductor/kernel/vendored_templates/cutedsl/wrappers/__init__.py,sha256=yMEmzIjn2of5wzG-nlWe_d3Jmg0u8kCFrIhrumDxowg,116 +torch/_inductor/kernel/vendored_templates/cutedsl/wrappers/__pycache__/__init__.cpython-311.pyc,, +torch/_inductor/kernel/vendored_templates/cutedsl/wrappers/__pycache__/dense_blockscaled_gemm_kernel.cpython-311.pyc,, +torch/_inductor/kernel/vendored_templates/cutedsl/wrappers/dense_blockscaled_gemm_kernel.py,sha256=tQ-OBAPvadBIifl_BXB7AKl9H1OCmpmqKgmixAntWvs,15600 +torch/_inductor/kernel_inputs.py,sha256=e9TP6EotC3ba6Kh2dQdsM72g3d7I7dcBYb_DwjQ34HQ,11051 +torch/_inductor/kernel_template_choice.py,sha256=4RM1Cn_azFhkXVfoZ0SUnpT4hxgRI82sAXOa1urLuz0,3331 +torch/_inductor/lookup_table/__init__.py,sha256=grqROhCd6DpGiI-5pQ0zDqm9wDL0-7uwQJGQXzqYoKI,877 +torch/_inductor/lookup_table/__pycache__/__init__.cpython-311.pyc,, +torch/_inductor/lookup_table/__pycache__/choices.cpython-311.pyc,, +torch/_inductor/lookup_table/choices.py,sha256=hU4qtxuFCkUfsQZIc7uk_x_4lYVGL6SDjTc-K7Ebvn8,16194 +torch/_inductor/loop_body.py,sha256=uuaZCyw_8eWY567IYK5wjwEHiZ5TgeTqu84rx79LwhQ,27149 +torch/_inductor/lowering.py,sha256=DQLf7x0_WwI9rMPx05yXkEP2znat3uSZNhbZJ5RbIy8,287123 +torch/_inductor/memory.py,sha256=x6JWY4lzJj3b9g92VihDqlqQVINi2BHfMTQDuG3wiCE,40727 +torch/_inductor/metrics.py,sha256=zlIvB25KJNaAFxPqb3M85AV1xy2Wvn7UsQPw5H4EDmc,14626 +torch/_inductor/mkldnn_ir.py,sha256=af1RJ3ra6f__Xk4J8oxN7ZLHht7k0DV8x4qt0MwxPng,43442 +torch/_inductor/mkldnn_lowerings.py,sha256=B4y5Gentflfi8b5gflzvJBumzDvU7W3oB8W_Hvp0MBc,56692 +torch/_inductor/mock_cache.py,sha256=k9g2wAteqKUJBY2RfTJoKsVbg9B1KRn94iuW4mqR89M,8565 +torch/_inductor/ops_handler.py,sha256=H1IZs9UOyPys4gqiPKNCEFWvKQcTTVrbx7DJK0HBGf8,37230 +torch/_inductor/optimize_indexing.py,sha256=KdIFrlHwny2NlrQoiMp5G1fm0e-EwZEzzQ0tNXA4nXM,4135 +torch/_inductor/output_code.py,sha256=jf--lvI_k76NjSsZsMZmpw6urEW9ADryq6LsH_76TZI,47950 +torch/_inductor/package/__init__.py,sha256=s1BQDRTTu4baQTZPdR07q8CBO_b5kUpXEp5VawAeQQI,67 +torch/_inductor/package/__pycache__/__init__.cpython-311.pyc,, +torch/_inductor/package/__pycache__/build_package.cpython-311.pyc,, +torch/_inductor/package/__pycache__/package.cpython-311.pyc,, +torch/_inductor/package/build_package.py,sha256=ZS3248m9MtGnCGG0YWrne2y7FDTIoF2ZWmKdxvIRzMg,329 +torch/_inductor/package/package.py,sha256=Wy03oSuOkzWpMX6mC8AJv116hh_l4-T6_FJSAiNJvHk,4427 +torch/_inductor/pattern_matcher.py,sha256=obYbJ64KyV8kil1MbkQNjDkyDsCW5OJsWg0IaF67Dn0,89439 +torch/_inductor/quantized_lowerings.py,sha256=X9NMCae-OB7cbBsez7NtEY_DP5ppqh2mKxaa1aSLdI0,5774 +torch/_inductor/remote_cache.py,sha256=03pgIJlBKAgeSTKBW9ipFOdoHT08vHx7dT0lua_tdEY,13301 +torch/_inductor/remote_gemm_autotune_cache.py,sha256=1ixVIU_KN1XNTBGZuJolUfaJWClQJUURc9nghIp-kAk,551 +torch/_inductor/rocm_multiarch_utils.py,sha256=9JvvvTARB7jdMTDngKGyuc8edzKgpEHfo5sumt5dCc4,9049 +torch/_inductor/runtime/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/_inductor/runtime/__pycache__/__init__.cpython-311.pyc,, +torch/_inductor/runtime/__pycache__/autotune_cache.cpython-311.pyc,, +torch/_inductor/runtime/__pycache__/benchmarking.cpython-311.pyc,, +torch/_inductor/runtime/__pycache__/cache_dir_utils.cpython-311.pyc,, +torch/_inductor/runtime/__pycache__/compile_tasks.cpython-311.pyc,, +torch/_inductor/runtime/__pycache__/coordinate_descent_tuner.cpython-311.pyc,, +torch/_inductor/runtime/__pycache__/debug_utils.cpython-311.pyc,, +torch/_inductor/runtime/__pycache__/halide_helpers.cpython-311.pyc,, +torch/_inductor/runtime/__pycache__/hints.cpython-311.pyc,, +torch/_inductor/runtime/__pycache__/proton_utils.cpython-311.pyc,, +torch/_inductor/runtime/__pycache__/runtime_utils.cpython-311.pyc,, +torch/_inductor/runtime/__pycache__/static_triton_launcher.cpython-311.pyc,, +torch/_inductor/runtime/__pycache__/triton_compat.cpython-311.pyc,, +torch/_inductor/runtime/__pycache__/triton_helpers.cpython-311.pyc,, +torch/_inductor/runtime/__pycache__/triton_heuristics.cpython-311.pyc,, +torch/_inductor/runtime/__pycache__/triton_lazy_compile.cpython-311.pyc,, +torch/_inductor/runtime/autotune_cache.py,sha256=EVBGL_5uyi3eq2J_-s4NYA2WTPHKWoeCP6EMpP9ItqA,24059 +torch/_inductor/runtime/benchmarking.py,sha256=zdIo0PtNm9dwCYVyTbynKK0FtX-by-pyxG01DlcgdUY,21296 +torch/_inductor/runtime/cache_dir_utils.py,sha256=VMMt-78VVHpAE90lDR7cNBLc9pxE3mE5pFuhGnyh1V0,1444 +torch/_inductor/runtime/caching/__init__.py,sha256=fRIP7WF5M9w6agp6eDMrPyjRWL8p_w_3V0liSPKtpKA,730 +torch/_inductor/runtime/caching/__pycache__/__init__.cpython-311.pyc,, +torch/_inductor/runtime/caching/__pycache__/config.cpython-311.pyc,, +torch/_inductor/runtime/caching/__pycache__/context.cpython-311.pyc,, +torch/_inductor/runtime/caching/__pycache__/encoders.cpython-311.pyc,, +torch/_inductor/runtime/caching/__pycache__/exceptions.cpython-311.pyc,, +torch/_inductor/runtime/caching/__pycache__/implementations.cpython-311.pyc,, +torch/_inductor/runtime/caching/__pycache__/interfaces.cpython-311.pyc,, +torch/_inductor/runtime/caching/__pycache__/locks.cpython-311.pyc,, +torch/_inductor/runtime/caching/__pycache__/memoizers.cpython-311.pyc,, +torch/_inductor/runtime/caching/__pycache__/utils.cpython-311.pyc,, +torch/_inductor/runtime/caching/config.py,sha256=1bBNlOGURk_hDv_D8zfaFrHBU9wEx2b4zkZm9y23G4s,5902 +torch/_inductor/runtime/caching/context.py,sha256=Wp5yQx2etfH4YK3YsfGkKldmkD1agnW-sYyKYMnrsb4,10485 +torch/_inductor/runtime/caching/encoders.py,sha256=c3PE8XFfkPTlxhjkf4RukF52JxIU88Q0JTolhf8dX58,2137 +torch/_inductor/runtime/caching/exceptions.py,sha256=lTWLVXJkhktVagqgYwNDHOoRoiwmouNexQi9KSQ7elE,3463 +torch/_inductor/runtime/caching/implementations.py,sha256=s524jk8GNBLXun6FYJsvLY9p7enugEZCK70pjTP4D-c,13753 +torch/_inductor/runtime/caching/interfaces.py,sha256=u2CAsqte2SjcxWaiTdaH-R_-uvLz742pIAw_A9evrFI,51853 +torch/_inductor/runtime/caching/locks.py,sha256=MyqtTTQ4d-0-wopXK0weXYlPzDxmT1dbypUS-tT4mhQ,7506 +torch/_inductor/runtime/caching/memoizers.py,sha256=pmnwTMuUK8QHG8GUiikvM1PUN5m-Tggjndy_KdgncGg,177 +torch/_inductor/runtime/caching/utils.py,sha256=PZiNE9MVezRbxW2rpmKV8-W6z2dYbftjub0NY7jxPp4,1661 +torch/_inductor/runtime/compile_tasks.py,sha256=bgJRCQtveWT_wvSMYW7YQ_wNw2SK5onhs7Wd3TES6po,5065 +torch/_inductor/runtime/coordinate_descent_tuner.py,sha256=rFSqCsUNe5dQ_JZREUNZwjmHzZILkSkBiRra2TEKc0c,14237 +torch/_inductor/runtime/debug_utils.py,sha256=bzIPymkfFZyxIsso-rWAj7vtzOKGhX1Kjmq-3UwH6B4,4275 +torch/_inductor/runtime/halide_helpers.py,sha256=E-XakaJ4btm8Dsh3A9q5XK9BJO0YG_kAYRA0de95nfs,4817 +torch/_inductor/runtime/hints.py,sha256=IjQcXvbZ3A6_lOwOfK2_PPvEq-npXFMxlVHlbWL8vOA,7730 +torch/_inductor/runtime/proton_utils.py,sha256=NfcjNIq3mHwe1ov_-rLMgquiNnrFENL7WuZrv5JFE9k,11097 +torch/_inductor/runtime/runtime_utils.py,sha256=xl5-yfGMquZRKXvonoXSKRVwKgG7hPrrTN2YlfveR5U,31005 +torch/_inductor/runtime/static_triton_launcher.py,sha256=WzCrVeOtfra3ARrDoaeUDxq9yuKbdJ8SAXdXE016iOM,14144 +torch/_inductor/runtime/triton_compat.py,sha256=rcc77nXeylZGanMHQGOoGi8BgHZHQAoC7Ek020vzWNc,4600 +torch/_inductor/runtime/triton_helpers.py,sha256=QmKMfkjzvrU0XLvagjddgEtB70qWWpnqIt18ZENzlso,27019 +torch/_inductor/runtime/triton_heuristics.py,sha256=2tBbvoHD7UJx0wH3PLnhOce_QvyEqKr0QF7bZezyzLk,174716 +torch/_inductor/runtime/triton_lazy_compile.py,sha256=XyKu25Sc3qOarPTQsFPAPtNbmTMz8Tn58FZpbAXWJ34,8592 +torch/_inductor/scheduler.py,sha256=mMdgxuvRB3Vrq-u_uEEowIQBQSnv-Fr2ULs8Oo8InF0,319839 +torch/_inductor/script.ld,sha256=pYkdES4_8MJi9MkEF79gr1KFT4iPUvbMT7NlDWP7aec,430 +torch/_inductor/select_algorithm.py,sha256=Zo0SF5MOT1F0RhnXQd5SG1cGxNKqSGZ3KjjKFXQN7Yc,226073 +torch/_inductor/shape_propagation.py,sha256=dbVdk-EL7VzHdLxxTw_CRvGFTPGroslChmXWuw2lmyQ,4376 +torch/_inductor/sizevars.py,sha256=oPj4gtBtcPRoHU9kBxWN35MpNh5sMe9PLuN5BJfh7-k,46466 +torch/_inductor/standalone_compile.py,sha256=7WHokYJUmhJb9T-o4O-bdaUISymtvcZeQAUmjgMuUws,18616 +torch/_inductor/stream_constants.py,sha256=Z19olpHrM08Q64HqJ9g10BtiDoseojEjlHZq5191GDc,179 +torch/_inductor/stream_utils.py,sha256=S231iAfe4YnddpJhnbHYwBgRU2jaFc6WZT6zARVWudY,924 +torch/_inductor/subgraph_lowering.py,sha256=TReHghy7pIPVGlwNvsxI4bCu2gpQea419eSQUhq2pPc,7287 +torch/_inductor/template_heuristics/__init__.py,sha256=XhuhQFWFqOhU3UK6tG0UGJOfxneWi6jeN3RuO36daj0,380 +torch/_inductor/template_heuristics/__pycache__/__init__.cpython-311.pyc,, +torch/_inductor/template_heuristics/__pycache__/aten.cpython-311.pyc,, +torch/_inductor/template_heuristics/__pycache__/base.cpython-311.pyc,, +torch/_inductor/template_heuristics/__pycache__/contiguous_mm.cpython-311.pyc,, +torch/_inductor/template_heuristics/__pycache__/cutedsl.cpython-311.pyc,, +torch/_inductor/template_heuristics/__pycache__/decompose_k.cpython-311.pyc,, +torch/_inductor/template_heuristics/__pycache__/gemm.cpython-311.pyc,, +torch/_inductor/template_heuristics/__pycache__/nv_universal_gemm.cpython-311.pyc,, +torch/_inductor/template_heuristics/__pycache__/params.cpython-311.pyc,, +torch/_inductor/template_heuristics/__pycache__/registry.cpython-311.pyc,, +torch/_inductor/template_heuristics/__pycache__/tlx.cpython-311.pyc,, +torch/_inductor/template_heuristics/__pycache__/triton.cpython-311.pyc,, +torch/_inductor/template_heuristics/__pycache__/triton_addmm.cpython-311.pyc,, +torch/_inductor/template_heuristics/aten.py,sha256=SFbdj1U9xLQtALGuq8pRMKarNU1Ln8xjbLYIybwcydc,3124 +torch/_inductor/template_heuristics/base.py,sha256=mTxhZaLAmWKVeGjIMeUfNBPOO7liEKJYw8-JRgEio-w,2497 +torch/_inductor/template_heuristics/contiguous_mm.py,sha256=jQg313JcP2DeekcygTozWG9Lkpf69qCoHPVCCTIL77I,2232 +torch/_inductor/template_heuristics/cutedsl.py,sha256=2s0YcvzfF0TMtDGjVPNma0x-tmD-ZCsB127qHVfkdmU,4455 +torch/_inductor/template_heuristics/decompose_k.py,sha256=XDUM5DyYk8ER7WqZ3KK_nkdhi_9lAD88kc-yeRW-a5Q,2380 +torch/_inductor/template_heuristics/gemm.py,sha256=MULIGFXVMRAncb638ftAP57myYNIoPkHXBEyW983N2A,540 +torch/_inductor/template_heuristics/nv_universal_gemm.py,sha256=y_LaJjj31NE8FgQo8DXJ9927H8p_ZzsMud6b6hPVNYY,13603 +torch/_inductor/template_heuristics/params.py,sha256=shqTLFkq9Od8WGcRyXI-PSM7hwSmbKEgeArhsQWOSNk,1257 +torch/_inductor/template_heuristics/registry.py,sha256=57TmEBFeTAKi4cda83zQ8Vnk8OFwfPOUosCX0QRULfo,6835 +torch/_inductor/template_heuristics/tlx.py,sha256=Ecx3Hu78YpAl7p-nQvYL9yAmJYyFd3WY7VfC138ZEHw,160 +torch/_inductor/template_heuristics/triton.py,sha256=sDTrxPv_fJxgtl1evpxweGhQm4fizKvBticGcUhHE1A,115426 +torch/_inductor/template_heuristics/triton_addmm.py,sha256=tqFmxlatf62RUGUxJvARqYANedz9KyoxUtG5cPQh1Uo,1085 +torch/_inductor/test_case.py,sha256=AWBtSqYplhcONz2Ozc2lAbmX_EeNyom9Qr2RcA7z8pY,1444 +torch/_inductor/test_operators.py,sha256=0qiHRxRoouHirpj13eTQJyWqYgzEmvjj2aWasALEV3k,861 +torch/_inductor/tiling_utils.py,sha256=ueG81O13KBOrLSexAZVv6w7h5eTe8ie8qJKbn58Ai6g,28409 +torch/_inductor/triton_bundler.py,sha256=ULG1GhCEddDAMPDhSO3OscniEug_0PhhWLPkvfcpJ_I,17034 +torch/_inductor/utils.py,sha256=0Joi5EJmVASY3oSYPQFabOmLAE2Gv3afmlFhY0YBLng,154410 +torch/_inductor/virtualized.py,sha256=S6sHEQfPjNaf2UoVjOtspKRx-0Wy2dqP8s_RYVEeO8g,16285 +torch/_inductor/wrapper_benchmark.py,sha256=v6HUlj_t0fEwXv4aaDBI8NXIlomq_s40flUzmQiSpkM,16409 +torch/_jit_internal.py,sha256=YvxWyC4KvwAvR3HzCLWgocjFp_PYlyBLHKCBNcFoHCQ,55130 +torch/_lazy/__init__.py,sha256=F0lAsONCnXzChhzI8m2QTyNg7WFrXHak0C38ZsPW2SI,1793 +torch/_lazy/__pycache__/__init__.cpython-311.pyc,, +torch/_lazy/__pycache__/closure.cpython-311.pyc,, +torch/_lazy/__pycache__/computation.cpython-311.pyc,, +torch/_lazy/__pycache__/config.cpython-311.pyc,, +torch/_lazy/__pycache__/debug.cpython-311.pyc,, +torch/_lazy/__pycache__/device_context.cpython-311.pyc,, +torch/_lazy/__pycache__/extract_compiled_graph.cpython-311.pyc,, +torch/_lazy/__pycache__/ir_cache.cpython-311.pyc,, +torch/_lazy/__pycache__/metrics.cpython-311.pyc,, +torch/_lazy/__pycache__/tensor_factory_functions.cpython-311.pyc,, +torch/_lazy/__pycache__/ts_backend.cpython-311.pyc,, +torch/_lazy/closure.py,sha256=QYdZ2qT1zA9x-_2EEvZ76mAvIOSAHpkMCIwfoFjwNms,5724 +torch/_lazy/computation.py,sha256=qGyb2-6Mk9HtK1ekYjC-RaRAFG8sUEAazCoO4BuCM1U,919 +torch/_lazy/config.py,sha256=-3YMuc6MvZef7TCPIX4J-MtrHwXVsrHPKZDvdCQ6iYM,448 +torch/_lazy/debug.py,sha256=LOZyiVd9aFg1xYiUwq-FKA1jMxuGDyU0KcTpor81r1s,738 +torch/_lazy/device_context.py,sha256=RNChVQuKOwclZN0xYy8SRFdYG89NZzNBbVmYTLP07Hc,668 +torch/_lazy/extract_compiled_graph.py,sha256=LiYQHFvb2rnYNxUlvy-uYoCW5cZMpH9SZycMXBKhuH0,8912 +torch/_lazy/ir_cache.py,sha256=HcW7N_L3ff-7_dDnpTsuh0ZQHWU-CSkawOriqQQCoL4,348 +torch/_lazy/metrics.py,sha256=emYDBgpRK4nYV8b5miNCvEB0ses4DQkq4cBTVhGjQ5E,545 +torch/_lazy/tensor_factory_functions.py,sha256=_vbfXc_XMUD6dXa3dP-BHlwmc1nWhnZ5R1SkY9sIZ98,1368 +torch/_lazy/ts_backend.py,sha256=BfAAT0WhImXNRhQp3Pfbp1tLuKuy7UBt4OziWTEYi9o,163 +torch/_library/__init__.py,sha256=nrHN83rXP5crQ0OeQiDyqXNcyoctiW-5dOFVAPArtzs,269 +torch/_library/__pycache__/__init__.cpython-311.pyc,, +torch/_library/__pycache__/_out_variant.cpython-311.pyc,, +torch/_library/__pycache__/autograd.cpython-311.pyc,, +torch/_library/__pycache__/custom_ops.cpython-311.pyc,, +torch/_library/__pycache__/effects.cpython-311.pyc,, +torch/_library/__pycache__/fake_class_registry.cpython-311.pyc,, +torch/_library/__pycache__/fake_impl.cpython-311.pyc,, +torch/_library/__pycache__/fake_profile.cpython-311.pyc,, +torch/_library/__pycache__/infer_schema.cpython-311.pyc,, +torch/_library/__pycache__/opaque_object.cpython-311.pyc,, +torch/_library/__pycache__/simple_registry.cpython-311.pyc,, +torch/_library/__pycache__/triton.cpython-311.pyc,, +torch/_library/__pycache__/utils.cpython-311.pyc,, +torch/_library/_out_variant.py,sha256=YmG-_JK0yKwm6DxcyITJcLSpupSy-YcmK58qIsjp-XQ,6386 +torch/_library/autograd.py,sha256=qurBYsR8RhPautAQLcJJcHb7GOb3kvpJa-VS_4SDFu8,9035 +torch/_library/custom_ops.py,sha256=HKx5Wvo7JhgjUFQTGAaxuySH_m8EeME5C2H5bh8l5p4,39967 +torch/_library/effects.py,sha256=iazijTW8NbQeCY6ME3DCwWZuqpMnnUUK_wsZESKaZvs,2781 +torch/_library/fake_class_registry.py,sha256=Tfk671usmR5dEz-6n_lwbpnKdadWmr853oA7jmMr2G0,20163 +torch/_library/fake_impl.py,sha256=4P-ohlUnBIZGgP8EcvVChi00li70gdTHeQIklrNU21U,8908 +torch/_library/fake_profile.py,sha256=gf2bzo9i-0VlFn6v9aww20CsveVPC-LjQTyRoWXNuuc,11571 +torch/_library/infer_schema.py,sha256=jHFJsfW2U0U55xNA17At_Zr9bZil5Fmpn301x4pxGFs,14328 +torch/_library/opaque_object.py,sha256=OrnUD_aXD1K1LGbv-s_MSjhLWaBB8Ih930tt_aaH2Us,14813 +torch/_library/simple_registry.py,sha256=Tkad72zL0M0DYw3zdtiXJw86mJXVYAz0AyPKNOsPSXk,2933 +torch/_library/triton.py,sha256=tnRnrXxAqPdk4xdVgYw0lD03K1N-0dMjsjr8x8tJSIM,23746 +torch/_library/utils.py,sha256=CfjIRvd4fflagvW6jiEy95h_eWv0t7-HOg9JE9-DLK4,23040 +torch/_linalg_utils.py,sha256=Q2UhuVexGLubUoqrPJZTOn5lZerPgnwkVwjSXBrMqQ0,5199 +torch/_lobpcg.py,sha256=KpttDXkgt-wxgyAkZobHRdf3zyt0e3hjgRBltaukkLw,44233 +torch/_logging/__init__.py,sha256=wTE40MPYVeohdWbp_5z_a3QBDWUYOLV_CSd0MuwP9pc,818 +torch/_logging/__pycache__/__init__.cpython-311.pyc,, +torch/_logging/__pycache__/_internal.cpython-311.pyc,, +torch/_logging/__pycache__/_registrations.cpython-311.pyc,, +torch/_logging/__pycache__/scribe.cpython-311.pyc,, +torch/_logging/__pycache__/structured.cpython-311.pyc,, +torch/_logging/_internal.py,sha256=ACRcyJiLrvgUPkbYsW8R3jtfxO_mowthaqQPkrbsqGk,56369 +torch/_logging/_registrations.py,sha256=-yIpdNUSDTe948alwUhqPogT17mNUpEheZHVjKhvhzk,8913 +torch/_logging/scribe.py,sha256=IUrj5iFNr6FVKHyyC4Uf7cu32YRoN3Zr6E3H-erOGdA,2553 +torch/_logging/structured.py,sha256=LgZTqykz-WIzLI6OI0D354bBqttp8Kcyj8_TuSMBQxw,2909 +torch/_lowrank.py,sha256=eBhxRMhfi9L1h_LVjrzulAJEBHwTKzBQe_AprNFtvUg,10497 +torch/_meta_registrations.py,sha256=eNrbgZoLS2N2jyiptxdJZA2VKDlGetMJ6x1C9XhOxmk,292468 +torch/_namedtensor_internals.py,sha256=CMgdQl-RJDFXZz_TOsuGIrMoxdszASwnIfpYjDkB8as,5276 +torch/_native/__init__.py,sha256=-Gw8ZtGmJbMoqHyjvsGb-_3F86XjzahgjBsdAU19mR8,1650 +torch/_native/__pycache__/__init__.cpython-311.pyc,, +torch/_native/__pycache__/common_utils.cpython-311.pyc,, +torch/_native/__pycache__/cutedsl_utils.cpython-311.pyc,, +torch/_native/__pycache__/dsl_registry.cpython-311.pyc,, +torch/_native/__pycache__/registry.cpython-311.pyc,, +torch/_native/__pycache__/triton_utils.cpython-311.pyc,, +torch/_native/common_utils.py,sha256=zzGHS4LSAg3sNcajkb7joyGc7heGbVEVjglHzBVLKWA,1831 +torch/_native/cutedsl_utils.py,sha256=KTm0UU4w5OoA_yTUBcUQjuhXx5Zoowyc4K9m7X35QpU,3432 +torch/_native/dsl_registry.py,sha256=Ulm54qoIo_HrrNzH_m9IRz9NrgH0eSpE4poxYLB93TM,5166 +torch/_native/ops/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/_native/ops/__pycache__/__init__.cpython-311.pyc,, +torch/_native/registry.py,sha256=UCNAQSGyzsHXZJ3WKkCbj1spKflkGAX67H_oRaIirUU,24763 +torch/_native/triton_utils.py,sha256=8S8ER3Qpx4IBgOMnDb6-hUQUhEHoKMZHeh1I46F5ajs,3335 +torch/_numpy/__init__.py,sha256=_Jxx8XlO6rLDkI0bP7kYY_JLbYI8kVA3eFfjesMk-qg,590 +torch/_numpy/__pycache__/__init__.cpython-311.pyc,, +torch/_numpy/__pycache__/_binary_ufuncs_impl.cpython-311.pyc,, +torch/_numpy/__pycache__/_casting_dicts.cpython-311.pyc,, +torch/_numpy/__pycache__/_dtypes.cpython-311.pyc,, +torch/_numpy/__pycache__/_dtypes_impl.cpython-311.pyc,, +torch/_numpy/__pycache__/_funcs.cpython-311.pyc,, +torch/_numpy/__pycache__/_funcs_impl.cpython-311.pyc,, +torch/_numpy/__pycache__/_getlimits.cpython-311.pyc,, +torch/_numpy/__pycache__/_ndarray.cpython-311.pyc,, +torch/_numpy/__pycache__/_normalizations.cpython-311.pyc,, +torch/_numpy/__pycache__/_reductions_impl.cpython-311.pyc,, +torch/_numpy/__pycache__/_ufuncs.cpython-311.pyc,, +torch/_numpy/__pycache__/_unary_ufuncs_impl.cpython-311.pyc,, +torch/_numpy/__pycache__/_util.cpython-311.pyc,, +torch/_numpy/__pycache__/fft.cpython-311.pyc,, +torch/_numpy/__pycache__/linalg.cpython-311.pyc,, +torch/_numpy/__pycache__/random.cpython-311.pyc,, +torch/_numpy/_binary_ufuncs_impl.py,sha256=h_xCtCyRAdTEB2T_r0AZ25G7u9IM3PRPr1mVv8Cr0qY,1871 +torch/_numpy/_casting_dicts.py,sha256=EmT0GYUz7Ii1iT1prWZgsahqtZZ069I1O0T2pzhSlOE,42478 +torch/_numpy/_dtypes.py,sha256=m3UM7nb7RFXlHSbtbv1GAu0c8AD4I4Uc1Rn40s1iLQ0,10279 +torch/_numpy/_dtypes_impl.py,sha256=878WyQ_5NSSp8T22sBZrWi16ParwHA80OGkgCxcA_FA,6475 +torch/_numpy/_funcs.py,sha256=vT_F_qnfL3CJoZr_R1NEHvETRCnIoEOrNGXVP5o-5aM,2097 +torch/_numpy/_funcs_impl.py,sha256=Q8on4aGY4oO_lOJbLxqXZaPzR4lxiAtanaU4XDOsQ1c,59362 +torch/_numpy/_getlimits.py,sha256=QRUbPnrehERJA9Wk01SdUaF1F2FhksfgpewYN6SmtgE,269 +torch/_numpy/_ndarray.py,sha256=Rf4zVsiY4BluCqquLMD9HJe9st-M7kyvI0sXGKNqIwk,21895 +torch/_numpy/_normalizations.py,sha256=UwbHxScNwVLgYI8UaGI9r6DjoDckG0SoLut5shFhsS0,8980 +torch/_numpy/_reductions_impl.py,sha256=moT-A4XxdcPnlvSfG0hCMS2SWV6VJVO96rZ8TFqz5qI,11843 +torch/_numpy/_ufuncs.py,sha256=HbjZbhF5ZMhSTMa0tGA_8oEdUBd5rj63sfhKpVmM3Us,8283 +torch/_numpy/_unary_ufuncs_impl.py,sha256=IO2kPjYhNoKCyu_9NcMFQF57le1U9VjFmqQFbsWA3Jc,1161 +torch/_numpy/_util.py,sha256=AITuUazGv6PxHIX1xTj6Ujv6HGOOWeQbMjIQLJ1uvGg,7836 +torch/_numpy/fft.py,sha256=lqeN-889bRRT8VjzgAaXoK9aAz8wdQdoiUSVN-oIhRQ,2805 +torch/_numpy/linalg.py,sha256=0YwsdXjndqqifpznxyxzU9ki7aQi5q3vZRrMK41Nsgw,5648 +torch/_numpy/random.py,sha256=i8D7VLbdUosxWruXrUGXG00TcHpGcaio0jCw1r7HTj4,4620 +torch/_numpy/testing/__init__.py,sha256=t5Re9c4lijwKoegYKS74CFviLCfSDSWZMvw78ohKYss,375 +torch/_numpy/testing/__pycache__/__init__.cpython-311.pyc,, +torch/_numpy/testing/__pycache__/utils.cpython-311.pyc,, +torch/_numpy/testing/utils.py,sha256=FDje7mVmZvrLmbrmq3C7xlu5K8PGyRcz_SmwmRrjnM0,77459 +torch/_opaque_base.py,sha256=31QtGBgy-IBMA7ZZmN8D2aAlvW1v7w6cO4mJhYbQqJw,462 +torch/_ops.py,sha256=w9Vh0Tqk3t5FJaXfi0fjilQTVlPRkHEBIRyEPfRnpRk,63940 +torch/_prims/__init__.py,sha256=nann-bsQeMfkqLWdpHNYLXepV4BRAoFyp7sy5GHUgRM,86254 +torch/_prims/__pycache__/__init__.cpython-311.pyc,, +torch/_prims/__pycache__/context.cpython-311.pyc,, +torch/_prims/__pycache__/debug_prims.cpython-311.pyc,, +torch/_prims/__pycache__/executor.cpython-311.pyc,, +torch/_prims/__pycache__/rng_prims.cpython-311.pyc,, +torch/_prims/context.py,sha256=wMn_9XZQqJw7JOoV6d5bCSYXSQQyEvsItLi-HOpfXTY,6248 +torch/_prims/debug_prims.py,sha256=sfqX5M4dBhvQRgMrt6-o8WHTzXjvIUBehRxcwFjjHxY,2250 +torch/_prims/executor.py,sha256=6qVwYXMvV0rAsvRa4hpW3bZ7X4Pem4mzGNRWpjgtij8,1923 +torch/_prims/rng_prims.py,sha256=SqRCxzXJ8Hrur4N5cAjXC9q3sd2byxeaadRgKfzT6N0,18934 +torch/_prims_common/__init__.py,sha256=Ni5pPfWQpiIjABvhgyvnV6NQzpVTQfFFqmAAqknq5d8,73964 +torch/_prims_common/__pycache__/__init__.cpython-311.pyc,, +torch/_prims_common/__pycache__/wrappers.cpython-311.pyc,, +torch/_prims_common/wrappers.py,sha256=Xeso-cgOZ4UShVH13GIPaBc8UxwvkBLmYhSKAM9qJZY,19611 +torch/_python_dispatcher.py,sha256=tuIlb49DqVSQW8fC4wYUrMYfpou5q_-AR_O47jTElgM,7137 +torch/_refs/__init__.py,sha256=oa54b9lFxzFyQInlsN32UJi2zRokhC75066RNOu4XxU,228757 +torch/_refs/__pycache__/__init__.cpython-311.pyc,, +torch/_refs/__pycache__/_conversions.cpython-311.pyc,, +torch/_refs/__pycache__/fft.cpython-311.pyc,, +torch/_refs/_conversions.py,sha256=BkNyamBLOQLlKy6mB4BSdPRjAKP1ghZ5xcyQDkUs-_s,3533 +torch/_refs/fft.py,sha256=zrpE4e0HsVewb43wiumlAO7dZYRvDC34p8S1y76LhpA,17971 +torch/_refs/linalg/__init__.py,sha256=o9_Ajxfaw0lyGeMN3YJrx4l0C7TSaxzffsGZovO7SSg,14497 +torch/_refs/linalg/__pycache__/__init__.cpython-311.pyc,, +torch/_refs/nn/__init__.py,sha256=juqd9PbXs4yg45zMJ7BHAOPQjb7sgEbWE9InBtGZhfo,24 +torch/_refs/nn/__pycache__/__init__.cpython-311.pyc,, +torch/_refs/nn/functional/__init__.py,sha256=5SE96Uca9OTrK6er5okycoxXoAOjdrzd5TPZZzIvvTY,42550 +torch/_refs/nn/functional/__pycache__/__init__.cpython-311.pyc,, +torch/_refs/special/__init__.py,sha256=Njxv8FI1zSzZANrqwvhVe9oD3hZsY2rgsWkHF6vwAuc,7035 +torch/_refs/special/__pycache__/__init__.cpython-311.pyc,, +torch/_size_docs.py,sha256=z2Ckk4Ufq-Ek6Av1-rs1Wcrg6OoJxTCRPYjEjhzG1Xo,900 +torch/_sources.py,sha256=qnTfAX_mWhAQ5cMVJYYWDOK1o1LoepbMllA1FIxIFRY,4404 +torch/_storage_docs.py,sha256=KyxMZ6j9UPSolidRjR7WDu7gJWkYot8TFggfPA1fygI,1335 +torch/_streambase.py,sha256=NAKZfV-BhZ22Jyt_3VQDH1m4QQdIVc4G8VvUBkZ9wJ8,435 +torch/_strobelight/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/_strobelight/__pycache__/__init__.cpython-311.pyc,, +torch/_strobelight/__pycache__/cli_function_profiler.cpython-311.pyc,, +torch/_strobelight/__pycache__/compile_time_profiler.cpython-311.pyc,, +torch/_strobelight/cli_function_profiler.py,sha256=srLhCyX1lK-devswH5sih_7_MWTHaiZPFekSXkbcV-M,11776 +torch/_strobelight/compile_time_profiler.py,sha256=LmKB8TtCO1MijfGm94g0NxCN0jE4kBpm1c4dCWJXO8w,7503 +torch/_subclasses/__init__.py,sha256=7NDSoV4xw-GxCRtHasX_MFFLe_S1-1BHRFvoDcgE4J0,375 +torch/_subclasses/__pycache__/__init__.cpython-311.pyc,, +torch/_subclasses/__pycache__/_fake_tensor_utils.cpython-311.pyc,, +torch/_subclasses/__pycache__/fake_impls.cpython-311.pyc,, +torch/_subclasses/__pycache__/fake_tensor.cpython-311.pyc,, +torch/_subclasses/__pycache__/fake_utils.cpython-311.pyc,, +torch/_subclasses/__pycache__/functional_tensor.cpython-311.pyc,, +torch/_subclasses/__pycache__/meta_utils.cpython-311.pyc,, +torch/_subclasses/__pycache__/schema_check_mode.cpython-311.pyc,, +torch/_subclasses/_fake_tensor_utils.py,sha256=EK3B6s3cbyvXpsYLjjmFuJl__wBs6bgnSbOUAVZuIhY,9251 +torch/_subclasses/complex_tensor/__init__.py,sha256=XR7PLtAI6NSJlcrlloNyijyfO-ExZaMyiF0-m-x-0mI,277 +torch/_subclasses/complex_tensor/__pycache__/__init__.cpython-311.pyc,, +torch/_subclasses/complex_tensor/__pycache__/_core.cpython-311.pyc,, +torch/_subclasses/complex_tensor/_core.py,sha256=dGlspjGJHwJ154gc_b_ZsYhbN3xkKtdLdRIJ90HNWgM,5325 +torch/_subclasses/complex_tensor/_ops/__init__.py,sha256=DtdL96mlaWM6COV7bXMMNvXdQC3brGUtZXgni8oVhRo,155 +torch/_subclasses/complex_tensor/_ops/__pycache__/__init__.cpython-311.pyc,, +torch/_subclasses/complex_tensor/_ops/__pycache__/aten.cpython-311.pyc,, +torch/_subclasses/complex_tensor/_ops/__pycache__/common.cpython-311.pyc,, +torch/_subclasses/complex_tensor/_ops/__pycache__/prims.cpython-311.pyc,, +torch/_subclasses/complex_tensor/_ops/aten.py,sha256=tBXyjKcJHymyM5s_NoG1W0us2KHz0ZzZeeWdl_3dHJo,29736 +torch/_subclasses/complex_tensor/_ops/common.py,sha256=GD-DKVo9zOZydAc-xIpsOQWHBrXTlru7UKCVIsbE7LE,10414 +torch/_subclasses/complex_tensor/_ops/prims.py,sha256=qEqDoFU20-woc8B-DE9f-iKvA7-TPBxgQtUTB1QD0h0,864 +torch/_subclasses/fake_impls.py,sha256=Orerc-uBpEyuhWBEcUd0mGYNob53ujg_R9JFTPdx3CU,58723 +torch/_subclasses/fake_tensor.py,sha256=DkE5sPY-4KQVxx_cQBi0I4aU-bhmevK0jGvH-SERGd0,142542 +torch/_subclasses/fake_utils.py,sha256=bqZzCDUCjoCxHb-rgDNFd04XcKFzc79Pkiyr4nupXls,10988 +torch/_subclasses/functional_tensor.py,sha256=pTayA64-jQXHKxCHnrXaNLqGii08ppVzqKzVl7NSCPg,38904 +torch/_subclasses/meta_utils.py,sha256=XlCPeCrbMpfLnCCLQU_x0yUYs9xI66o3iiUi-2h3THc,102715 +torch/_subclasses/schema_check_mode.py,sha256=iI1Lw8IJRUxnkjIr4kBCVcfkq8Jgy_oE8P5Ivo8tPpc,9705 +torch/_tensor.py,sha256=I2zi_uiU1v_YD5JdiaSBXyTpKJcfIMy_rovFsdheyXM,76227 +torch/_tensor_docs.py,sha256=X-nIkVReAgXEGLXcwAiMQSUoWE6zK-xz3SqYIEOcE2A,145539 +torch/_tensor_str.py,sha256=1o0Fm0kBFiYmcyFgupJflsuhzjApCubFU5O2klNZ560,28537 +torch/_thread_safe_fork.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/_torch_docs.py,sha256=pYCy4c-HP412NxEguKgcj_QPhIrA6ZHQsAf9BigBzlI,436335 +torch/_utils.py,sha256=NS4m-z0YAnT8wKjfhESV918G_p2McBHPGvzVeoBEPG8,50649 +torch/_utils_internal.py,sha256=Uztc8B3tqEZgCIqq8_6Z3c537JAndINEE2R-Co1wIp8,11704 +torch/_vendor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/_vendor/__pycache__/__init__.cpython-311.pyc,, +torch/_vendor/packaging/__init__.py,sha256=EhCMuCSz60IgQJ93b_4wJyAoHpU9J-uddG4QaMT0Pu4,496 +torch/_vendor/packaging/__pycache__/__init__.cpython-311.pyc,, +torch/_vendor/packaging/__pycache__/_structures.cpython-311.pyc,, +torch/_vendor/packaging/__pycache__/version.cpython-311.pyc,, +torch/_vendor/packaging/_structures.py,sha256=q3eVNmbWJGG_S0Dit_S3Ao8qQqz_5PYTXFAKBZe5yr4,1431 +torch/_vendor/packaging/version.py,sha256=XjRBLNK17UMDgLeP8UHnqwiY3TdSi03xFQURtec211A,16236 +torch/_vmap_internals.py,sha256=snAmSMoKFr4LrkcZqTNTwkt01RRF-06_38WE8792d4s,9425 +torch/_weights_only_unpickler.py,sha256=2f3LFPJV1g1EDhWOAGUBRHQX25VIDN1z9m-xiAuEV4s,22994 +torch/accelerator/__init__.py,sha256=y_AcEMF3K6TyHEjzy9qJXGdonfydCtsJnBhumxFZ2q8,11089 +torch/accelerator/__pycache__/__init__.cpython-311.pyc,, +torch/accelerator/__pycache__/_utils.cpython-311.pyc,, +torch/accelerator/__pycache__/graphs.cpython-311.pyc,, +torch/accelerator/__pycache__/memory.cpython-311.pyc,, +torch/accelerator/_utils.py,sha256=Qw0FIL4j__H_UNaMcaQ5LJAKd4VSF09LWqBrMHxhfTk,936 +torch/accelerator/graphs.py,sha256=8lEdABUDNYwIj-V15ARMIYBDF41Uvf7HjvjlzcgOP5Q,6543 +torch/accelerator/memory.py,sha256=TvT4C1rxIZzdn387wGnjijcTtP499Xa9A7GFdvKLzrI,10947 +torch/amp/__init__.py,sha256=OuEdgK_zzuRWo5_vfM_VhTooVAm1BXTBkUWxLkY6zlU,181 +torch/amp/__pycache__/__init__.cpython-311.pyc,, +torch/amp/__pycache__/autocast_mode.cpython-311.pyc,, +torch/amp/__pycache__/grad_scaler.cpython-311.pyc,, +torch/amp/autocast_mode.py,sha256=fLHaIKbcLOi-NufdjprnWADByudZNE5qzgbuBfL2MOw,22651 +torch/amp/grad_scaler.py,sha256=SaO1OVtjDeVQY5LOjjLW4nFd6oxz5Kd9QaMz_AKWF_Y,31629 +torch/ao/__init__.py,sha256=t-7QOhmWP9oe0Mh2RHAH119yFNo-jVdfOB6VIZyYS5M,678 +torch/ao/__pycache__/__init__.cpython-311.pyc,, +torch/ao/nn/__init__.py,sha256=4j-eekD5zpSPgRw4Z-6hVhWmeeYaDcD9bar24mvxbVo,834 +torch/ao/nn/__pycache__/__init__.cpython-311.pyc,, +torch/ao/nn/intrinsic/__init__.py,sha256=yaXY9qRdzLDsAk2wwLcm5x2PKvvwEi9DLbuDUcPYZeA,961 +torch/ao/nn/intrinsic/__pycache__/__init__.cpython-311.pyc,, +torch/ao/nn/intrinsic/modules/__init__.py,sha256=FlHZWKH0Xumwd5xBvZgyeGkbYehn1oDCUnAqZ_c4WN4,655 +torch/ao/nn/intrinsic/modules/__pycache__/__init__.cpython-311.pyc,, +torch/ao/nn/intrinsic/modules/__pycache__/fused.cpython-311.pyc,, +torch/ao/nn/intrinsic/modules/fused.py,sha256=SLik04JP3MXGwRND9lW1EjtqHSiFujwzAMmyi0-nxvo,11847 +torch/ao/nn/intrinsic/qat/__init__.py,sha256=M0iylhjuqtPcbO2pAVdDg9n9e1ET359nQ9txOEErmMo,37 +torch/ao/nn/intrinsic/qat/__pycache__/__init__.cpython-311.pyc,, +torch/ao/nn/intrinsic/qat/modules/__init__.py,sha256=OIDHW4Q4Mjd_Y_eR1UWDLuPOVEIJOJJj5MbbaQRdI1A,547 +torch/ao/nn/intrinsic/qat/modules/__pycache__/__init__.cpython-311.pyc,, +torch/ao/nn/intrinsic/qat/modules/__pycache__/conv_fused.cpython-311.pyc,, +torch/ao/nn/intrinsic/qat/modules/__pycache__/linear_fused.cpython-311.pyc,, +torch/ao/nn/intrinsic/qat/modules/__pycache__/linear_relu.cpython-311.pyc,, +torch/ao/nn/intrinsic/qat/modules/conv_fused.py,sha256=FHbEconqBIJUp7ymPaaMFN2H70ffSZk-ckNApY2kNzw,31861 +torch/ao/nn/intrinsic/qat/modules/linear_fused.py,sha256=iyJQ5Xir6QVzVpxImwYaValWbGEk3r09VKxDReWFiT4,6905 +torch/ao/nn/intrinsic/qat/modules/linear_relu.py,sha256=bZKak53c9vQNd_7Xnh10xeXyVZ8ymO6vVhch1TOPeeM,2184 +torch/ao/nn/intrinsic/quantized/__init__.py,sha256=AyOx7RavGaehtAWX6dEUBQcrl23h2_S3Q9ZAWYimCLQ,236 +torch/ao/nn/intrinsic/quantized/__pycache__/__init__.cpython-311.pyc,, +torch/ao/nn/intrinsic/quantized/dynamic/__init__.py,sha256=M0iylhjuqtPcbO2pAVdDg9n9e1ET359nQ9txOEErmMo,37 +torch/ao/nn/intrinsic/quantized/dynamic/__pycache__/__init__.cpython-311.pyc,, +torch/ao/nn/intrinsic/quantized/dynamic/modules/__init__.py,sha256=kbhh2dL33XSuVEAZNtSHMmt1papX7az6WlVALevMgZA,70 +torch/ao/nn/intrinsic/quantized/dynamic/modules/__pycache__/__init__.cpython-311.pyc,, +torch/ao/nn/intrinsic/quantized/dynamic/modules/__pycache__/linear_relu.cpython-311.pyc,, +torch/ao/nn/intrinsic/quantized/dynamic/modules/linear_relu.py,sha256=JGHgYcHBFkcj_65pA9iuF9QrORrbKC7LdlT4sJxwGKc,2223 +torch/ao/nn/intrinsic/quantized/modules/__init__.py,sha256=8aofpYeXIA8WQaao5pvOjWtLnf4rmL9xlJO9hZ8aras,409 +torch/ao/nn/intrinsic/quantized/modules/__pycache__/__init__.cpython-311.pyc,, +torch/ao/nn/intrinsic/quantized/modules/__pycache__/bn_relu.cpython-311.pyc,, +torch/ao/nn/intrinsic/quantized/modules/__pycache__/conv_add.cpython-311.pyc,, +torch/ao/nn/intrinsic/quantized/modules/__pycache__/conv_relu.cpython-311.pyc,, +torch/ao/nn/intrinsic/quantized/modules/__pycache__/linear_relu.cpython-311.pyc,, +torch/ao/nn/intrinsic/quantized/modules/bn_relu.py,sha256=5z1wesnwC49jVjLIWagOdmRW1s-Zhm41tS9tgL19tl8,3647 +torch/ao/nn/intrinsic/quantized/modules/conv_add.py,sha256=EX4p7WEeFsAkZ_4lqAi5rHaqJpBcz0Gj7i8A8j1Kaug,4821 +torch/ao/nn/intrinsic/quantized/modules/conv_relu.py,sha256=_aqBbU6SW8ddej_MH5u36vibx-QBWjS84VTbsckycBw,9575 +torch/ao/nn/intrinsic/quantized/modules/linear_relu.py,sha256=XpXdOcXMDYHN0cxE_bB02rTIZTv6EPjXagWnFxVOi8M,7144 +torch/ao/nn/qat/__init__.py,sha256=M0iylhjuqtPcbO2pAVdDg9n9e1ET359nQ9txOEErmMo,37 +torch/ao/nn/qat/__pycache__/__init__.cpython-311.pyc,, +torch/ao/nn/qat/dynamic/__init__.py,sha256=M0iylhjuqtPcbO2pAVdDg9n9e1ET359nQ9txOEErmMo,37 +torch/ao/nn/qat/dynamic/__pycache__/__init__.cpython-311.pyc,, +torch/ao/nn/qat/dynamic/modules/__init__.py,sha256=_5hfV0E5b71TgYVQPrPF9QZNrnw5XPuZppEwj0QItaM,50 +torch/ao/nn/qat/dynamic/modules/__pycache__/__init__.cpython-311.pyc,, +torch/ao/nn/qat/dynamic/modules/__pycache__/linear.cpython-311.pyc,, +torch/ao/nn/qat/dynamic/modules/linear.py,sha256=XJJdSaclI87qBmSywWkcxmfqxqnav5M3nBtzN1ntgm0,1215 +torch/ao/nn/qat/modules/__init__.py,sha256=RmKZ7d0ds96EIRSqAGGTrDwuXVWerE_S_NCWuEuX_20,228 +torch/ao/nn/qat/modules/__pycache__/__init__.cpython-311.pyc,, +torch/ao/nn/qat/modules/__pycache__/conv.cpython-311.pyc,, +torch/ao/nn/qat/modules/__pycache__/embedding_ops.cpython-311.pyc,, +torch/ao/nn/qat/modules/__pycache__/linear.cpython-311.pyc,, +torch/ao/nn/qat/modules/conv.py,sha256=p4Q_jIVoUv6Zwx6M7H1c7uCecwXjPeBEj_YFX2Pb-74,10082 +torch/ao/nn/qat/modules/embedding_ops.py,sha256=N29BQOpG7ZPrlB1H94lXEcIyXijb_N45iPMuKJNwqto,8345 +torch/ao/nn/qat/modules/linear.py,sha256=h_s7-_2lQfjymOVDJrgVVWwHicyWmcPqLCYsoYlRldY,3216 +torch/ao/nn/quantizable/__init__.py,sha256=M0iylhjuqtPcbO2pAVdDg9n9e1ET359nQ9txOEErmMo,37 +torch/ao/nn/quantizable/__pycache__/__init__.cpython-311.pyc,, +torch/ao/nn/quantizable/modules/__init__.py,sha256=N6niR-YsfqqP_5a8ksCJ8BL-Ol1Mch_412g-I4Z8VeQ,145 +torch/ao/nn/quantizable/modules/__pycache__/__init__.cpython-311.pyc,, +torch/ao/nn/quantizable/modules/__pycache__/activation.cpython-311.pyc,, +torch/ao/nn/quantizable/modules/__pycache__/rnn.cpython-311.pyc,, +torch/ao/nn/quantizable/modules/activation.py,sha256=XSZxfdqIWp3f2I_gl3TMDBpMl8e3LWPJ55CspHM3wLg,26225 +torch/ao/nn/quantizable/modules/rnn.py,sha256=k03thvONMgb7YVMko8CaPaAM76BYnb-GhpMTGGvvSVQ,22482 +torch/ao/nn/quantized/__init__.py,sha256=NtHecsYVtg9e1IhTCdvoXSV-oQEXRQnt54dZlScPo6I,686 +torch/ao/nn/quantized/__pycache__/__init__.cpython-311.pyc,, +torch/ao/nn/quantized/__pycache__/functional.cpython-311.pyc,, +torch/ao/nn/quantized/dynamic/__init__.py,sha256=M0iylhjuqtPcbO2pAVdDg9n9e1ET359nQ9txOEErmMo,37 +torch/ao/nn/quantized/dynamic/__pycache__/__init__.cpython-311.pyc,, +torch/ao/nn/quantized/dynamic/modules/__init__.py,sha256=VzgogVUFAj-yE8a5Vmjiq5TV3SP51t0wXslabLVPITw,413 +torch/ao/nn/quantized/dynamic/modules/__pycache__/__init__.cpython-311.pyc,, +torch/ao/nn/quantized/dynamic/modules/__pycache__/conv.cpython-311.pyc,, +torch/ao/nn/quantized/dynamic/modules/__pycache__/linear.cpython-311.pyc,, +torch/ao/nn/quantized/dynamic/modules/__pycache__/rnn.cpython-311.pyc,, +torch/ao/nn/quantized/dynamic/modules/conv.py,sha256=osw4iXPTe1aVSk1t5oG8ak7enJNCi25Y20mo4vh-JI8,18413 +torch/ao/nn/quantized/dynamic/modules/linear.py,sha256=2mI1DjB2kVWl57shRpRli0wYMkB7ygqO1G45U4FBM3I,6495 +torch/ao/nn/quantized/dynamic/modules/rnn.py,sha256=oyCtf8urGTQVlfx5DGxIb89SSsOMHb7wXgvnC7yCv1E,51849 +torch/ao/nn/quantized/functional.py,sha256=fbcf0vbzbYB3cwJYIQab2MtXtfdTClU6HcxWtUJIc0U,29641 +torch/ao/nn/quantized/modules/__init__.py,sha256=Y56ItuRywBPBUWIROd3zxkrmrSr438EK-N71MT5i0Go,4661 +torch/ao/nn/quantized/modules/__pycache__/__init__.cpython-311.pyc,, +torch/ao/nn/quantized/modules/__pycache__/activation.cpython-311.pyc,, +torch/ao/nn/quantized/modules/__pycache__/batchnorm.cpython-311.pyc,, +torch/ao/nn/quantized/modules/__pycache__/conv.cpython-311.pyc,, +torch/ao/nn/quantized/modules/__pycache__/dropout.cpython-311.pyc,, +torch/ao/nn/quantized/modules/__pycache__/embedding_ops.cpython-311.pyc,, +torch/ao/nn/quantized/modules/__pycache__/functional_modules.cpython-311.pyc,, +torch/ao/nn/quantized/modules/__pycache__/linear.cpython-311.pyc,, +torch/ao/nn/quantized/modules/__pycache__/normalization.cpython-311.pyc,, +torch/ao/nn/quantized/modules/__pycache__/rnn.cpython-311.pyc,, +torch/ao/nn/quantized/modules/__pycache__/utils.cpython-311.pyc,, +torch/ao/nn/quantized/modules/activation.py,sha256=C0GSs6WWHXAM4YKlZmxiYrarAonJIyjsNXqAVtkxht4,11670 +torch/ao/nn/quantized/modules/batchnorm.py,sha256=waZCeOapEFHC2pdFSFn1GYXcsEiW_uJ9nMX6xox0_fQ,4427 +torch/ao/nn/quantized/modules/conv.py,sha256=oADn2oxCFNbHlyS2k0hfpXsxfqmqpYFqSr4X-kdPdng,43809 +torch/ao/nn/quantized/modules/dropout.py,sha256=5nPYMBmjOyEzOZj0lz_CtUmJASXrrEr63YJnVytPTQs,806 +torch/ao/nn/quantized/modules/embedding_ops.py,sha256=_eOkKTzu3Fa-b0nfK7TBPs2rcLlk4N3dLfzdmdzSHqg,15238 +torch/ao/nn/quantized/modules/functional_modules.py,sha256=DCA34ufixknSkyGVPySPmTcSRTb_MVLjQishnAA-Zjo,9309 +torch/ao/nn/quantized/modules/linear.py,sha256=adIyE-xeyBz14S75Yqizy7nUM4v8jJplEsdAGQ3CUVI,13689 +torch/ao/nn/quantized/modules/normalization.py,sha256=zFTgY6ABpezWNjWEoHnl09qgLGlNJVrxxznhRecYP5g,9539 +torch/ao/nn/quantized/modules/rnn.py,sha256=gH1nq8M2l5Ie2nPBaY8ap91OmPlDAYSwjc_RU98vbdM,2026 +torch/ao/nn/quantized/modules/utils.py,sha256=qD-dHMUNgtgb-6WdnSA5jvR7q--wej0CCq1KLgxpVPo,4693 +torch/ao/nn/quantized/reference/__init__.py,sha256=hu3hyozMJtkc86Bu1v8tmyayuxAdeDSv0sUiOeNAr_s,284 +torch/ao/nn/quantized/reference/__pycache__/__init__.cpython-311.pyc,, +torch/ao/nn/quantized/reference/modules/__init__.py,sha256=YS8MYKlqBPoA2UEBcS-MgbOzZ8_HDp-7ET4BC7KtCBk,494 +torch/ao/nn/quantized/reference/modules/__pycache__/__init__.cpython-311.pyc,, +torch/ao/nn/quantized/reference/modules/__pycache__/conv.cpython-311.pyc,, +torch/ao/nn/quantized/reference/modules/__pycache__/linear.cpython-311.pyc,, +torch/ao/nn/quantized/reference/modules/__pycache__/rnn.cpython-311.pyc,, +torch/ao/nn/quantized/reference/modules/__pycache__/sparse.cpython-311.pyc,, +torch/ao/nn/quantized/reference/modules/__pycache__/utils.cpython-311.pyc,, +torch/ao/nn/quantized/reference/modules/conv.py,sha256=XxZfpM20-QJOjj6n9w6bIeSD_0LGmyl-py1uTTZIOww,16049 +torch/ao/nn/quantized/reference/modules/linear.py,sha256=oxH2CSsE_asNpObp2CUQjDsqsgSWDHeMHK9p2EF4834,2254 +torch/ao/nn/quantized/reference/modules/rnn.py,sha256=9mo3UKI7w-n1iW-ruqWQRycEgQwTH4HjoUMwuTybUio,29981 +torch/ao/nn/quantized/reference/modules/sparse.py,sha256=glgaM9jAtZt9FIqrCBJel32K0KDtk8p9k1K02F4Jcos,4683 +torch/ao/nn/quantized/reference/modules/utils.py,sha256=aOqOOq75IqlUgcioarrOqDGyx0i06KYi_jt6a1wD9Mc,15604 +torch/ao/nn/sparse/__init__.py,sha256=PfB-tgPOelyV_0eb_ipJK4LzPHwB5Z-wfJXeE_O3AK4,24 +torch/ao/nn/sparse/__pycache__/__init__.cpython-311.pyc,, +torch/ao/nn/sparse/quantized/__init__.py,sha256=xO8RdXEcj7ggZh7-f2bReVBRO-F6PNBZjb5DBPwV52w,168 +torch/ao/nn/sparse/quantized/__pycache__/__init__.cpython-311.pyc,, +torch/ao/nn/sparse/quantized/__pycache__/linear.cpython-311.pyc,, +torch/ao/nn/sparse/quantized/__pycache__/utils.cpython-311.pyc,, +torch/ao/nn/sparse/quantized/dynamic/__init__.py,sha256=lYDGtZ8rNR56jJLk6s5WOJ65E7qqQ_LFICpuD76NWYI,57 +torch/ao/nn/sparse/quantized/dynamic/__pycache__/__init__.cpython-311.pyc,, +torch/ao/nn/sparse/quantized/dynamic/__pycache__/linear.cpython-311.pyc,, +torch/ao/nn/sparse/quantized/dynamic/linear.py,sha256=ZV7BlimowKVu6jDBsDQecdlOI4JcBMwLT4X4WE650uE,6956 +torch/ao/nn/sparse/quantized/linear.py,sha256=-kpbqePTgr4lfjNKfAOYQm_7-3S9iEBRLEBD2emE_hs,10150 +torch/ao/nn/sparse/quantized/utils.py,sha256=fU0jKT2k7i8On6fgx1QEFxyzY2_3XuqjcH9Qw-PD3As,2234 +torch/ao/ns/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/ao/ns/__pycache__/__init__.cpython-311.pyc,, +torch/ao/ns/__pycache__/_numeric_suite.cpython-311.pyc,, +torch/ao/ns/__pycache__/_numeric_suite_fx.cpython-311.pyc,, +torch/ao/ns/_numeric_suite.py,sha256=fPy3eN33wImLp8FFODnH3byzxukzA-GJXQjP0hRnASc,20065 +torch/ao/ns/_numeric_suite_fx.py,sha256=FB23FPdq3xeOoV-K27ow2equHsQ3WZ-cCk3QH59h2wg,41390 +torch/ao/ns/fx/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/ao/ns/fx/__pycache__/__init__.cpython-311.pyc,, +torch/ao/ns/fx/__pycache__/graph_matcher.cpython-311.pyc,, +torch/ao/ns/fx/__pycache__/graph_passes.cpython-311.pyc,, +torch/ao/ns/fx/__pycache__/mappings.cpython-311.pyc,, +torch/ao/ns/fx/__pycache__/n_shadows_utils.cpython-311.pyc,, +torch/ao/ns/fx/__pycache__/ns_types.cpython-311.pyc,, +torch/ao/ns/fx/__pycache__/pattern_utils.cpython-311.pyc,, +torch/ao/ns/fx/__pycache__/qconfig_multi_mapping.cpython-311.pyc,, +torch/ao/ns/fx/__pycache__/utils.cpython-311.pyc,, +torch/ao/ns/fx/__pycache__/weight_utils.cpython-311.pyc,, +torch/ao/ns/fx/graph_matcher.py,sha256=_1DKursxX_YdJTq3fPwmeSN7ZxHp7UGJYlLTBSZbv9U,20047 +torch/ao/ns/fx/graph_passes.py,sha256=HoAnevrFbZIjr5YLKK_i8wdt1_seAOzEDZTyQd-gTkM,45739 +torch/ao/ns/fx/mappings.py,sha256=I3ZnL73L2BTNVhhI9cR7GL-mgjjLx18f5n76XoFBt2o,18446 +torch/ao/ns/fx/n_shadows_utils.py,sha256=XXDjcij7No1I11JMxjbOJ6LQVFDHh_Qs5eGpHYoNhD8,53187 +torch/ao/ns/fx/ns_types.py,sha256=8BL1eChSs_jwmCENUoe8xGmdQp5wS8qQEm3GHKa_T2U,2341 +torch/ao/ns/fx/pattern_utils.py,sha256=Uw4gFW1G6zAfUfCQvqj_U0yfJDbd2RnBKk2v6zm2dss,8653 +torch/ao/ns/fx/qconfig_multi_mapping.py,sha256=q4SF9lmy89wQ-YFxHJgurdwfiKBn0hRPVk1ZWCvE0nA,10197 +torch/ao/ns/fx/utils.py,sha256=tjviJVCEB9vIJP8p9eujNoJtXrR60uWpINLzTJNy8do,22761 +torch/ao/ns/fx/weight_utils.py,sha256=mkhs5U5qrV_MIKelp_OAOaljhb1_kabt1NF_0gdVGik,12786 +torch/ao/pruning/__init__.py,sha256=dp2CA7CO_FRHTE7E0Ft495uR5IlUi8HsnG8ujLsz6OA,640 +torch/ao/pruning/__pycache__/__init__.cpython-311.pyc,, +torch/ao/pruning/__pycache__/_mappings.cpython-311.pyc,, +torch/ao/pruning/_experimental/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/ao/pruning/_experimental/__pycache__/__init__.cpython-311.pyc,, +torch/ao/pruning/_experimental/activation_sparsifier/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/ao/pruning/_experimental/activation_sparsifier/__pycache__/__init__.cpython-311.pyc,, +torch/ao/pruning/_experimental/activation_sparsifier/__pycache__/activation_sparsifier.cpython-311.pyc,, +torch/ao/pruning/_experimental/activation_sparsifier/activation_sparsifier.py,sha256=Vb54teEd0at8qH0G0j-cBlsc1DwzlhJt4lSmD_BCXhs,19309 +torch/ao/pruning/_experimental/data_scheduler/__init__.py,sha256=q_95mAMpHldGWwLAgYS-F07ReGKDLIAZLsP7BtlmgTE,92 +torch/ao/pruning/_experimental/data_scheduler/__pycache__/__init__.cpython-311.pyc,, +torch/ao/pruning/_experimental/data_scheduler/__pycache__/base_data_scheduler.cpython-311.pyc,, +torch/ao/pruning/_experimental/data_scheduler/base_data_scheduler.py,sha256=sNQEoYKRbglXHjHbQh6Q2msIDK_fYB1py8IrExc_cbo,7733 +torch/ao/pruning/_experimental/data_sparsifier/__init__.py,sha256=9ktAif-dttGBmiw745tN2WtUTOTZch0E_HA4cE1bfTo,174 +torch/ao/pruning/_experimental/data_sparsifier/__pycache__/__init__.cpython-311.pyc,, +torch/ao/pruning/_experimental/data_sparsifier/__pycache__/base_data_sparsifier.cpython-311.pyc,, +torch/ao/pruning/_experimental/data_sparsifier/__pycache__/data_norm_sparsifier.cpython-311.pyc,, +torch/ao/pruning/_experimental/data_sparsifier/__pycache__/quantization_utils.cpython-311.pyc,, +torch/ao/pruning/_experimental/data_sparsifier/base_data_sparsifier.py,sha256=GIe1rn6fEjtcQ7XMptkDVPSqTx0LnNbc8wnAbejCeIE,13552 +torch/ao/pruning/_experimental/data_sparsifier/data_norm_sparsifier.py,sha256=e4It7UrOu1FyQif3ijmDYGU_D5HscmW9Wdu8qbbT1PE,7778 +torch/ao/pruning/_experimental/data_sparsifier/lightning/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/ao/pruning/_experimental/data_sparsifier/lightning/__pycache__/__init__.cpython-311.pyc,, +torch/ao/pruning/_experimental/data_sparsifier/lightning/callbacks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/ao/pruning/_experimental/data_sparsifier/lightning/callbacks/__pycache__/__init__.cpython-311.pyc,, +torch/ao/pruning/_experimental/data_sparsifier/lightning/callbacks/__pycache__/_data_sparstity_utils.cpython-311.pyc,, +torch/ao/pruning/_experimental/data_sparsifier/lightning/callbacks/__pycache__/data_sparsity.cpython-311.pyc,, +torch/ao/pruning/_experimental/data_sparsifier/lightning/callbacks/_data_sparstity_utils.py,sha256=Vtb__BJ_qrCy7TBisG4BM8qNXzDYrl-xNDVLbHCsYIY,1636 +torch/ao/pruning/_experimental/data_sparsifier/lightning/callbacks/data_sparsity.py,sha256=-AMNv2c1CakFrnm4F6Vs-PyvnN21CdCBi7rICTrn_e4,6595 +torch/ao/pruning/_experimental/data_sparsifier/quantization_utils.py,sha256=9fkvGYqQbyzAPFf_CJjC2ChOuvDevlGOFvlqeR4_z9E,6207 +torch/ao/pruning/_experimental/pruner/FPGM_pruner.py,sha256=m75j6P43OX2ICxugVq1Zdqlsz8q5GAaOR8zSN7MEzTk,3425 +torch/ao/pruning/_experimental/pruner/__init__.py,sha256=abfUoG48Kc6ddQZmFAkYjQH5J8Hae8xJiqxz89MTgDE,260 +torch/ao/pruning/_experimental/pruner/__pycache__/FPGM_pruner.cpython-311.pyc,, +torch/ao/pruning/_experimental/pruner/__pycache__/__init__.cpython-311.pyc,, +torch/ao/pruning/_experimental/pruner/__pycache__/base_structured_sparsifier.cpython-311.pyc,, +torch/ao/pruning/_experimental/pruner/__pycache__/lstm_saliency_pruner.cpython-311.pyc,, +torch/ao/pruning/_experimental/pruner/__pycache__/match_utils.cpython-311.pyc,, +torch/ao/pruning/_experimental/pruner/__pycache__/parametrization.cpython-311.pyc,, +torch/ao/pruning/_experimental/pruner/__pycache__/prune_functions.cpython-311.pyc,, +torch/ao/pruning/_experimental/pruner/__pycache__/saliency_pruner.cpython-311.pyc,, +torch/ao/pruning/_experimental/pruner/base_structured_sparsifier.py,sha256=8ThuyadcbX6SNuzO0gEMK7okMCR2IWxziue0xzuTY-Q,11029 +torch/ao/pruning/_experimental/pruner/lstm_saliency_pruner.py,sha256=nBliDOjjzo42r3g6yj5q9qq4tbSLg2e_bwc1KiHA9L4,2197 +torch/ao/pruning/_experimental/pruner/match_utils.py,sha256=PLY0zuh1dWLCtLwmhAgXv0h5WDzCjXJZMM7UNRFNuO4,1949 +torch/ao/pruning/_experimental/pruner/parametrization.py,sha256=79BNtvk1z3aQL2WauM0h-PCjhJtxJCZD0UiyoJm9gh4,2047 +torch/ao/pruning/_experimental/pruner/prune_functions.py,sha256=O5lbpjsVE2rgilgB2-mVRlHmU1M5OhSJFtbp6KtJwyI,19285 +torch/ao/pruning/_experimental/pruner/saliency_pruner.py,sha256=9_q30_e_oArjSWcZ16UEx0HRcBfxCqcJTrFGrpMatrg,1536 +torch/ao/pruning/_mappings.py,sha256=O9aJePj2X0nV76KTcSU93V7GA8dxEzfr5G9QvjyWOqQ,597 +torch/ao/pruning/scheduler/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/ao/pruning/scheduler/__pycache__/__init__.cpython-311.pyc,, +torch/ao/pruning/scheduler/__pycache__/base_scheduler.cpython-311.pyc,, +torch/ao/pruning/scheduler/__pycache__/cubic_scheduler.cpython-311.pyc,, +torch/ao/pruning/scheduler/__pycache__/lambda_scheduler.cpython-311.pyc,, +torch/ao/pruning/scheduler/base_scheduler.py,sha256=IipBI2JjzC5ah4ocvY5mfNjWfJMLAyzWgjyIR6BmxNM,6625 +torch/ao/pruning/scheduler/cubic_scheduler.py,sha256=9j4ifJT9lavz1pCgulfgpHgHaasvx_KkqNwqCE1_NC8,3875 +torch/ao/pruning/scheduler/lambda_scheduler.py,sha256=ztFUy3RecZ5JhkDfOUg1JNVd9qnm59LqdUxoKumVrvQ,2416 +torch/ao/pruning/sparsifier/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/ao/pruning/sparsifier/__pycache__/__init__.cpython-311.pyc,, +torch/ao/pruning/sparsifier/__pycache__/base_sparsifier.cpython-311.pyc,, +torch/ao/pruning/sparsifier/__pycache__/nearly_diagonal_sparsifier.cpython-311.pyc,, +torch/ao/pruning/sparsifier/__pycache__/utils.cpython-311.pyc,, +torch/ao/pruning/sparsifier/__pycache__/weight_norm_sparsifier.cpython-311.pyc,, +torch/ao/pruning/sparsifier/base_sparsifier.py,sha256=iQuwcy8Vqbsp70TC01C0thf3TT1Z3yXnx11VH6tItwQ,13962 +torch/ao/pruning/sparsifier/nearly_diagonal_sparsifier.py,sha256=vKZbWhsxPzMDfk6ZntgIBncW81Vh19DisumzDWDhLUE,2263 +torch/ao/pruning/sparsifier/utils.py,sha256=fxTRyQBCjxVI6D-YEUDytd7hTDyVJb5MHvKM1M9J3w0,4997 +torch/ao/pruning/sparsifier/weight_norm_sparsifier.py,sha256=gIivd_Kyop1c_g5T9hWsYoI6CWC_Mcq1qTZO1P4EKzc,9351 +torch/ao/quantization/__init__.py,sha256=ZDEZfDok59UAWYObnbOqXylLbxU9aBYk7UMFhhH4UHw,6532 +torch/ao/quantization/__pycache__/__init__.cpython-311.pyc,, +torch/ao/quantization/__pycache__/_correct_bias.cpython-311.pyc,, +torch/ao/quantization/__pycache__/_equalize.cpython-311.pyc,, +torch/ao/quantization/__pycache__/_learnable_fake_quantize.cpython-311.pyc,, +torch/ao/quantization/__pycache__/fake_quantize.cpython-311.pyc,, +torch/ao/quantization/__pycache__/fuse_modules.cpython-311.pyc,, +torch/ao/quantization/__pycache__/fuser_method_mappings.cpython-311.pyc,, +torch/ao/quantization/__pycache__/observer.cpython-311.pyc,, +torch/ao/quantization/__pycache__/qconfig.cpython-311.pyc,, +torch/ao/quantization/__pycache__/qconfig_mapping.cpython-311.pyc,, +torch/ao/quantization/__pycache__/quant_type.cpython-311.pyc,, +torch/ao/quantization/__pycache__/quantization_mappings.cpython-311.pyc,, +torch/ao/quantization/__pycache__/quantize.cpython-311.pyc,, +torch/ao/quantization/__pycache__/quantize_fx.cpython-311.pyc,, +torch/ao/quantization/__pycache__/quantize_jit.cpython-311.pyc,, +torch/ao/quantization/__pycache__/stubs.cpython-311.pyc,, +torch/ao/quantization/__pycache__/utils.cpython-311.pyc,, +torch/ao/quantization/_correct_bias.py,sha256=tTf6RanT0gwmTkNfJrPGDCfcf8yHcpyGJ5HUm7UiB-Y,5415 +torch/ao/quantization/_equalize.py,sha256=b3HzjqrX-40SC3NXv_CevxRePFd5SQhLHyYmQ6UthwI,9493 +torch/ao/quantization/_learnable_fake_quantize.py,sha256=o0VkrbUsv7uMr0jDMfga2pr-xU5XLcszvtEQDiv6h9I,7959 +torch/ao/quantization/backend_config/__init__.py,sha256=lnyxe_DTaYkdoSLhxNlUcMPlck2SAngmI8GNcYDHI4M,915 +torch/ao/quantization/backend_config/__pycache__/__init__.cpython-311.pyc,, +torch/ao/quantization/backend_config/__pycache__/_common_operator_config_utils.cpython-311.pyc,, +torch/ao/quantization/backend_config/__pycache__/_qnnpack_pt2e.cpython-311.pyc,, +torch/ao/quantization/backend_config/__pycache__/backend_config.cpython-311.pyc,, +torch/ao/quantization/backend_config/__pycache__/executorch.cpython-311.pyc,, +torch/ao/quantization/backend_config/__pycache__/fbgemm.cpython-311.pyc,, +torch/ao/quantization/backend_config/__pycache__/native.cpython-311.pyc,, +torch/ao/quantization/backend_config/__pycache__/onednn.cpython-311.pyc,, +torch/ao/quantization/backend_config/__pycache__/qnnpack.cpython-311.pyc,, +torch/ao/quantization/backend_config/__pycache__/tensorrt.cpython-311.pyc,, +torch/ao/quantization/backend_config/__pycache__/utils.cpython-311.pyc,, +torch/ao/quantization/backend_config/__pycache__/x86.cpython-311.pyc,, +torch/ao/quantization/backend_config/_common_operator_config_utils.py,sha256=EE_d7xO_Gsh4Y__yPOaxnguZItAUSE8WNvcaCJL98J4,27501 +torch/ao/quantization/backend_config/_qnnpack_pt2e.py,sha256=Z0CgzNQw0gA1n96DRblor08FXUtWpEoVf7vYb9IEx5c,6431 +torch/ao/quantization/backend_config/backend_config.py,sha256=I65caYp3oiracD9g0HKRU9b39OxD2iTryccrjy5VeMY,31509 +torch/ao/quantization/backend_config/executorch.py,sha256=t72escVnr3ztTYDpiyHIJlOWTwHgE1m4wn6fziIxyP4,16924 +torch/ao/quantization/backend_config/fbgemm.py,sha256=dCsGDn-PbASye1CPf_9poNM6eOMN10_NUFTQat95-0Q,4208 +torch/ao/quantization/backend_config/native.py,sha256=xKBjjC-uZ8qZsbHluftqC6Tn9vo_6ivcsVYFWLFFQtQ,8242 +torch/ao/quantization/backend_config/onednn.py,sha256=fHj_5RoNjs52M3tN2BFi6H5omY9D8HEBAAZYnp0yZOk,19108 +torch/ao/quantization/backend_config/qnnpack.py,sha256=PkPTzCS-Q3p8MiUq6mytJlFt-Zox7AO2kxbTg5Qx-AU,5400 +torch/ao/quantization/backend_config/tensorrt.py,sha256=Drb7vD3gWVGnSa41C6rYVR7po0qA420Nu3hoOH483-A,3021 +torch/ao/quantization/backend_config/utils.py,sha256=sUEWKDDUsW4R0AbqOpnAn4CK7HnWe2BwtBdlZtRx40A,12582 +torch/ao/quantization/backend_config/x86.py,sha256=4geWLr6mkFhSEYiXFXpkB8NegS05EXhv2fYHTpajNyg,3869 +torch/ao/quantization/fake_quantize.py,sha256=Tkn1yPz8PimU64XyONud5_-nXHDWAgE2j8bqQ-4ptXk,23465 +torch/ao/quantization/fuse_modules.py,sha256=fBhqELU4N8hFcKa2SxS31xPx3rkssxjS2Yr60C_4vAM,6794 +torch/ao/quantization/fuser_method_mappings.py,sha256=vO3IWudszvfv7pHcbAG70X0FMb8XSX27PTfM6Q3PK7k,10951 +torch/ao/quantization/fx/__init__.py,sha256=65h6iR_5XARcYpGS8A2qRza_2y7cvqCowqkwwziYz8M,81 +torch/ao/quantization/fx/__pycache__/__init__.cpython-311.pyc,, +torch/ao/quantization/fx/__pycache__/_decomposed.cpython-311.pyc,, +torch/ao/quantization/fx/__pycache__/_equalize.cpython-311.pyc,, +torch/ao/quantization/fx/__pycache__/_lower_to_native_backend.cpython-311.pyc,, +torch/ao/quantization/fx/__pycache__/convert.cpython-311.pyc,, +torch/ao/quantization/fx/__pycache__/custom_config.cpython-311.pyc,, +torch/ao/quantization/fx/__pycache__/fuse.cpython-311.pyc,, +torch/ao/quantization/fx/__pycache__/fuse_handler.cpython-311.pyc,, +torch/ao/quantization/fx/__pycache__/graph_module.cpython-311.pyc,, +torch/ao/quantization/fx/__pycache__/lower_to_fbgemm.cpython-311.pyc,, +torch/ao/quantization/fx/__pycache__/lower_to_qnnpack.cpython-311.pyc,, +torch/ao/quantization/fx/__pycache__/lstm_utils.cpython-311.pyc,, +torch/ao/quantization/fx/__pycache__/match_utils.cpython-311.pyc,, +torch/ao/quantization/fx/__pycache__/pattern_utils.cpython-311.pyc,, +torch/ao/quantization/fx/__pycache__/prepare.cpython-311.pyc,, +torch/ao/quantization/fx/__pycache__/qconfig_mapping_utils.cpython-311.pyc,, +torch/ao/quantization/fx/__pycache__/quantize_handler.cpython-311.pyc,, +torch/ao/quantization/fx/__pycache__/tracer.cpython-311.pyc,, +torch/ao/quantization/fx/__pycache__/utils.cpython-311.pyc,, +torch/ao/quantization/fx/_decomposed.py,sha256=OCdbeG8OiFwo0cU2KEc-xJKGiSi8dWBPI3Yudmuax3A,44280 +torch/ao/quantization/fx/_equalize.py,sha256=3LCxKha2HfEAPRoeOrkjgqBkmZ9hivdmr8aefSQFKuI,40829 +torch/ao/quantization/fx/_lower_to_native_backend.py,sha256=odKq3dU3Mz0Jy6G8GpyWIqzdMELM-I8mDFUVNkXbNCs,57173 +torch/ao/quantization/fx/_model_report/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/ao/quantization/fx/_model_report/__pycache__/__init__.cpython-311.pyc,, +torch/ao/quantization/fx/_model_report/__pycache__/detector.cpython-311.pyc,, +torch/ao/quantization/fx/_model_report/__pycache__/model_report.cpython-311.pyc,, +torch/ao/quantization/fx/_model_report/__pycache__/model_report_observer.cpython-311.pyc,, +torch/ao/quantization/fx/_model_report/__pycache__/model_report_visualizer.cpython-311.pyc,, +torch/ao/quantization/fx/_model_report/detector.py,sha256=1rVf-mlV-AD1QBke-Obabkvm4xLpD6YZnOmhwRZYuWE,76891 +torch/ao/quantization/fx/_model_report/model_report.py,sha256=LjyEonNh1kyqu_sdaqp0aP8xorb7wNQjweEyVxUp2ao,29740 +torch/ao/quantization/fx/_model_report/model_report_observer.py,sha256=BWuxgjbh5Egg1xxq9eIQt3v8gDbxM28AQmhG0N1jUG0,12084 +torch/ao/quantization/fx/_model_report/model_report_visualizer.py,sha256=qnUOY2kvQEsAlyGAQqRtGftdeUR451b2pwuMQEyMuaA,32667 +torch/ao/quantization/fx/convert.py,sha256=Nki8juH7qIKH6STrOoaqUYlPiFz6rfPQeL4AIXRvT-I,60154 +torch/ao/quantization/fx/custom_config.py,sha256=XXczvULZT7A6u8av5PMmgy94viHeOslT73lceU_8N1s,21815 +torch/ao/quantization/fx/fuse.py,sha256=pMxYdgQBYHgNrk5AUOiaaUXyJryX0NeoFJjRrJNtAbs,7396 +torch/ao/quantization/fx/fuse_handler.py,sha256=KlI4Gk2e5bc_8Whfkib45iWLffWnPSU2qvU0QA3-umw,4704 +torch/ao/quantization/fx/graph_module.py,sha256=QG9sVe1kfWGg5o9cyOiUaPrvplbwbWubGYTyGxCwG24,6607 +torch/ao/quantization/fx/lower_to_fbgemm.py,sha256=ERyoustxB5yjBVinb4V2_YTZF-76c7NaPxaVP2l_Pbs,602 +torch/ao/quantization/fx/lower_to_qnnpack.py,sha256=pSLRhkHuxXdbu7a1yEzQPbomFrepOvfiKWpg4HNqEYw,527 +torch/ao/quantization/fx/lstm_utils.py,sha256=dFESL358seHZX4XU46mGv57PouGbmJEh67Iid-cldBA,10544 +torch/ao/quantization/fx/match_utils.py,sha256=fKW4f3YavhquBHtPWdpp6aIp6AtZx17ubkRyeN29Bus,8963 +torch/ao/quantization/fx/pattern_utils.py,sha256=aMM87O63tKrgnLtuAIPEPNXApbzTxL4SIOvyWZTofJI,3668 +torch/ao/quantization/fx/prepare.py,sha256=YUNZAz-YPOL7JPs2GfOCQal-5oZ2oh7zlcwY-0fXndM,87716 +torch/ao/quantization/fx/qconfig_mapping_utils.py,sha256=yGl3Bpb6nGqM9WswYDKlCK2kaxpJ6znTXmcxC3T5scU,15425 +torch/ao/quantization/fx/quantize_handler.py,sha256=jFTXAjdLTYb1MGic0nZDngYmEfHSh_sTbjDCJGorGUU,7325 +torch/ao/quantization/fx/tracer.py,sha256=2haqkImWeOrUUr7V_b_bgYwuIhU6GFHKEY4edqmUJ4M,1737 +torch/ao/quantization/fx/utils.py,sha256=2WqHkDdbJowbL2MHguYHWdHJaAChsA0WQ2wE5ybPFUU,38827 +torch/ao/quantization/observer.py,sha256=NpxUO3XP6rRKcMLTOzL5R8_yCML8fyTB47x6wdj5zzM,80452 +torch/ao/quantization/qconfig.py,sha256=mA_SDFrqWN4MMzOXkdblA-VLOxZeG4igXClVALeG06w,24632 +torch/ao/quantization/qconfig_mapping.py,sha256=dYrgvV5RU3ub3qqCqEI2zEpU4nxbXA6dVsX8Awuxz6o,14845 +torch/ao/quantization/quant_type.py,sha256=fY7JDEr_PzBFymxy9fQmnRIFKiQoL2QoKJtxZKSJsoc,760 +torch/ao/quantization/quantization_mappings.py,sha256=IMePDAbFLx-0MDc2kF7_hAa1SSiPG7bOBzRimlD4yPA,13865 +torch/ao/quantization/quantize.py,sha256=uEm9aKJ1fku7Up2W7-DH2ThUL3LF1WFdbMaucCHlHto,31396 +torch/ao/quantization/quantize_fx.py,sha256=nZk4g-86EdrlvaR2uWYl9_Z-7wANLSHKJsbFDjYfy0A,32464 +torch/ao/quantization/quantize_jit.py,sha256=nW1j383ayR-XgMZO98WuITK9CPe7B18mfuOQD6YWc6U,14699 +torch/ao/quantization/stubs.py,sha256=V-AJl3upvDL1qiTDdTBT7kJfdQ4rwFJT_UG1-A0oEP8,2282 +torch/ao/quantization/utils.py,sha256=7gX90uUbXlMD9Fl7luRQIywjMYVMrz864x5pjeBEcmE,29599 +torch/autograd/__init__.py,sha256=f5TkaU4-MR59bb72No-FA_G-IeXfR8oLqzce0qa42uI,26863 +torch/autograd/__pycache__/__init__.cpython-311.pyc,, +torch/autograd/__pycache__/anomaly_mode.cpython-311.pyc,, +torch/autograd/__pycache__/forward_ad.cpython-311.pyc,, +torch/autograd/__pycache__/function.cpython-311.pyc,, +torch/autograd/__pycache__/functional.cpython-311.pyc,, +torch/autograd/__pycache__/grad_mode.cpython-311.pyc,, +torch/autograd/__pycache__/gradcheck.cpython-311.pyc,, +torch/autograd/__pycache__/graph.cpython-311.pyc,, +torch/autograd/__pycache__/profiler.cpython-311.pyc,, +torch/autograd/__pycache__/profiler_legacy.cpython-311.pyc,, +torch/autograd/__pycache__/profiler_util.cpython-311.pyc,, +torch/autograd/__pycache__/variable.cpython-311.pyc,, +torch/autograd/_functions/__init__.py,sha256=sdKJj6Dia1vNRSolyufzRKdn5qHkgCBCUI3OBm-PGW0,36 +torch/autograd/_functions/__pycache__/__init__.cpython-311.pyc,, +torch/autograd/_functions/__pycache__/tensor.cpython-311.pyc,, +torch/autograd/_functions/__pycache__/utils.cpython-311.pyc,, +torch/autograd/_functions/tensor.py,sha256=8SJkduO10ftxiPMbTlr_l8Vb9rluVnuZWQNaVBpxW0E,2496 +torch/autograd/_functions/utils.py,sha256=XSfqpnmJKm2LuoVc2FVFms4wV3hJxMhFrfbCAytX2JY,753 +torch/autograd/anomaly_mode.py,sha256=HNYmekIC9V3GRtrFVCvXm9c432KFmUlIb6fpi48EY4M,4964 +torch/autograd/forward_ad.py,sha256=eS1kUD2wnLKUVLDroJwfRhOg6xiTr3jbtRfjHUmARUE,7626 +torch/autograd/function.py,sha256=AHa7EaZ3MyQYdTxBuMznxVkqJ5njj6sgMqMo3BbeMmU,34018 +torch/autograd/functional.py,sha256=mOyYtay1nlQ6ojqb8yNpS-l3V7oTgob4csV4NRMoGZ8,53417 +torch/autograd/grad_mode.py,sha256=Ri-3CW75uslJ1USqCK5cUFcdRieahdQWVpaUHNgN4kQ,14650 +torch/autograd/gradcheck.py,sha256=frfC51Wn5FbIIp8nYHKir6r0ap0kekH696zKMJ0FtSQ,92837 +torch/autograd/graph.py,sha256=puEliVe387-hgryq4ZwVu7ht7RpemOuZzymlnoajKqA,32486 +torch/autograd/profiler.py,sha256=hXnhvMRePluGmocRreG7Yxi0gkU90zOwAfb5QuQkVhc,53280 +torch/autograd/profiler_legacy.py,sha256=7MLdb4wNGuoalcvk-Ohj1dGVGUauo5OweEYLGmyTgeQ,12210 +torch/autograd/profiler_util.py,sha256=u918Y--E_DiDW63IC7nAXn05KBWVWvlZh07zI6xnPIo,61153 +torch/autograd/variable.py,sha256=N0cAiO8ZPZ6rtRtU-hJYH_6NVt-zun16CmO_KrZV7-0,391 +torch/backends/__init__.py,sha256=wNSGGZPEL2dEb6YLC25-l0WumRcFK31vCuvdoYk237c,3622 +torch/backends/__pycache__/__init__.cpython-311.pyc,, +torch/backends/_coreml/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/backends/_coreml/__pycache__/__init__.cpython-311.pyc,, +torch/backends/_coreml/__pycache__/preprocess.cpython-311.pyc,, +torch/backends/_coreml/preprocess.py,sha256=Nzzwas90UYSckQQuyjMWDFuzlva73YNGQd4JUCS3VKc,4508 +torch/backends/_nnapi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/backends/_nnapi/__pycache__/__init__.cpython-311.pyc,, +torch/backends/_nnapi/__pycache__/prepare.cpython-311.pyc,, +torch/backends/_nnapi/__pycache__/serializer.cpython-311.pyc,, +torch/backends/_nnapi/prepare.py,sha256=2t_-EEWffVa7PatU-5BZ_ZiqPemCBjwBBmhbBidE-Oc,6975 +torch/backends/_nnapi/serializer.py,sha256=81wuXWGDt4JyHCvPc9ZSRHN_GXCVh8rmz1cO7B3Aa1o,102138 +torch/backends/cpu/__init__.py,sha256=V3lRML9bHlNvfE5iOHJP9kN-P4WvEN23SeGQLLDYEnM,314 +torch/backends/cpu/__pycache__/__init__.cpython-311.pyc,, +torch/backends/cuda/__init__.py,sha256=guZqAdZ0VpLaT6KnImBAWnPu8cZ4KjXirGE4K1-THyU,21862 +torch/backends/cuda/__pycache__/__init__.cpython-311.pyc,, +torch/backends/cudnn/__init__.py,sha256=wjtpVoOfEK5ikTwZnkzWsKytZIGWZeaEmQN1TRhcGkg,8221 +torch/backends/cudnn/__pycache__/__init__.cpython-311.pyc,, +torch/backends/cudnn/__pycache__/rnn.cpython-311.pyc,, +torch/backends/cudnn/rnn.py,sha256=vduXdLChmzWOdSAsLkDkYqqVY0S9roOegVbvB1n-bJs,4138 +torch/backends/cusparselt/__init__.py,sha256=LCf7CAhlOka2FofcBZP5gh05-3bzf4VtxmwPA9IFdek,1273 +torch/backends/cusparselt/__pycache__/__init__.cpython-311.pyc,, +torch/backends/kleidiai/__init__.py,sha256=V5pt-IFG6zqGlgzrLQVDOakig9WD1QhZbl1AsfkDgTU,162 +torch/backends/kleidiai/__pycache__/__init__.cpython-311.pyc,, +torch/backends/mha/__init__.py,sha256=tUmUrm0Z3I5dnDnhSbuDgZifGDemdgPrdQdsokvVssA,718 +torch/backends/mha/__pycache__/__init__.cpython-311.pyc,, +torch/backends/miopen/__init__.py,sha256=T9aQ5QNnKy9jBHXRZZQD3E3sQ_lbPFYkYx5gX7VRGTU,1208 +torch/backends/miopen/__pycache__/__init__.cpython-311.pyc,, +torch/backends/mkl/__init__.py,sha256=knXrTfpLjP_371pp4V3Qzinf3nBw8MWrRqaLvp5taEA,1823 +torch/backends/mkl/__pycache__/__init__.cpython-311.pyc,, +torch/backends/mkldnn/__init__.py,sha256=V0rvGEXMkw59IzPQitu99ayW9nVbGaTBVx6nLZ0JyDo,4388 +torch/backends/mkldnn/__pycache__/__init__.cpython-311.pyc,, +torch/backends/mps/__init__.py,sha256=863xI79hPErZAR9o6Z0YH0BmTpfMW7T7gVmERd3RJa4,2128 +torch/backends/mps/__pycache__/__init__.cpython-311.pyc,, +torch/backends/nnpack/__init__.py,sha256=6cApdM4SVAbns4TuVAuFI9sXskhu7piYVsmP4rqpdOA,837 +torch/backends/nnpack/__pycache__/__init__.cpython-311.pyc,, +torch/backends/openmp/__init__.py,sha256=h6ebEMpGQavTuGZ3eJVK4JMUMMUgTYcrmvHxh_Fcgy8,157 +torch/backends/openmp/__pycache__/__init__.cpython-311.pyc,, +torch/backends/opt_einsum/__init__.py,sha256=xdL9w-v1UteyrJPFvVheYlxNqeTB7Z2HLpanp5mgMkw,3836 +torch/backends/opt_einsum/__pycache__/__init__.cpython-311.pyc,, +torch/backends/python_native/__init__.py,sha256=dQ5u4VKiujx-t5WG9ld6IC6lkQzdm7rrz82eYM0jI8Y,12662 +torch/backends/python_native/__pycache__/__init__.cpython-311.pyc,, +torch/backends/quantized/__init__.py,sha256=vD2Ds81mKtQGrMrAYy1FAo_OPfyzvhDObF276kT_t-U,1861 +torch/backends/quantized/__pycache__/__init__.cpython-311.pyc,, +torch/backends/xeon/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/backends/xeon/__pycache__/__init__.cpython-311.pyc,, +torch/backends/xeon/__pycache__/run_cpu.cpython-311.pyc,, +torch/backends/xeon/run_cpu.py,sha256=c6UHx3K7-mxVbztS2uSsJvKf9c_OfMtojfvMZKveb-k,38299 +torch/backends/xnnpack/__init__.py,sha256=BNL7CNyTlaTNxu4JVDE8VZgiu16mRO6JpZeQ0Ns3Nr8,702 +torch/backends/xnnpack/__pycache__/__init__.cpython-311.pyc,, +torch/bin/torch_shm_manager,sha256=P5af_RQ-1u7rf6KM0eQ2fpk5xrIrDNSEbjyTWqusv7A,37944 +torch/compiler/__init__.py,sha256=3ISB6Z3B8gKs1k9ULYgyFTLj0DDVx5wtCGZuasJTpx8,29395 +torch/compiler/__pycache__/__init__.cpython-311.pyc,, +torch/compiler/__pycache__/_cache.cpython-311.pyc,, +torch/compiler/__pycache__/config.cpython-311.pyc,, +torch/compiler/_cache.py,sha256=djksgtegrgGz2uFcUprLGh2SD7Blz1D8kMD10eRH58g,11090 +torch/compiler/config.py,sha256=G9dJL-rJ_4EoIizuPgb--_poTDafU_lThKv4NznA204,10724 +torch/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/contrib/__pycache__/__init__.cpython-311.pyc,, +torch/contrib/__pycache__/_tensorboard_vis.cpython-311.pyc,, +torch/contrib/_tensorboard_vis.py,sha256=NHCnPKg_OGbn9EMjqkTVzALEsShQh2N2-sFsBIDGwEo,5875 +torch/cpu/__init__.py,sha256=LR_4YHxgTCLu9emPFRevb6xaAn4s8wn_ha8i6UDVaJ4,6865 +torch/cpu/__pycache__/__init__.cpython-311.pyc,, +torch/cpu/amp/__init__.py,sha256=Q_Rmzfz39fTI2sYsf0hrKJysAR3d2HHMb6KjZlKQurs,103 +torch/cpu/amp/__pycache__/__init__.cpython-311.pyc,, +torch/cpu/amp/__pycache__/autocast_mode.cpython-311.pyc,, +torch/cpu/amp/__pycache__/grad_scaler.cpython-311.pyc,, +torch/cpu/amp/autocast_mode.py,sha256=XC8Kac0XKSERFrp8Oc3W1G77_cOqrRuG_zOWKjua85I,2180 +torch/cpu/amp/grad_scaler.py,sha256=hT5iBOSV285sW4X7s00Mfg7Pi_eJ-sKCS5BT1qSrz-U,958 +torch/csrc/inductor/aoti_runtime/model.h,sha256=bY1OyO-gjO0hChRQiyIP_7lhLEBX4y30zjzC6zD8G7g,2257 +torch/cuda/__init__.py,sha256=7WyRvll7L8G57JvgWhLH2zj2j51Aw1J8GRLnuMXBSXk,70493 +torch/cuda/__pycache__/__init__.cpython-311.pyc,, +torch/cuda/__pycache__/_annotate_cuda_graph_trace.cpython-311.pyc,, +torch/cuda/__pycache__/_device_limits.cpython-311.pyc,, +torch/cuda/__pycache__/_gpu_trace.cpython-311.pyc,, +torch/cuda/__pycache__/_graph_annotations.cpython-311.pyc,, +torch/cuda/__pycache__/_memory_viz.cpython-311.pyc,, +torch/cuda/__pycache__/_pin_memory_utils.cpython-311.pyc,, +torch/cuda/__pycache__/_sanitizer.cpython-311.pyc,, +torch/cuda/__pycache__/_utils.cpython-311.pyc,, +torch/cuda/__pycache__/comm.cpython-311.pyc,, +torch/cuda/__pycache__/gds.cpython-311.pyc,, +torch/cuda/__pycache__/graphs.cpython-311.pyc,, +torch/cuda/__pycache__/green_contexts.cpython-311.pyc,, +torch/cuda/__pycache__/jiterator.cpython-311.pyc,, +torch/cuda/__pycache__/memory.cpython-311.pyc,, +torch/cuda/__pycache__/nccl.cpython-311.pyc,, +torch/cuda/__pycache__/nvtx.cpython-311.pyc,, +torch/cuda/__pycache__/profiler.cpython-311.pyc,, +torch/cuda/__pycache__/random.cpython-311.pyc,, +torch/cuda/__pycache__/sparse.cpython-311.pyc,, +torch/cuda/__pycache__/streams.cpython-311.pyc,, +torch/cuda/__pycache__/tunable.cpython-311.pyc,, +torch/cuda/_annotate_cuda_graph_trace.py,sha256=7Exb4ZKPl9-56L9-zSWv0KsduGbGDcUC7mb4KVbRZ0k,12767 +torch/cuda/_device_limits.py,sha256=fYfWl5kv31rsLXJs8ASkz3AYrpnC1O2phMQy8zIB-aw,5496 +torch/cuda/_gpu_trace.py,sha256=OMYsQlXjF7PvEOGCaMWw__K_iwQYbilVdRV6xoJZvDI,2386 +torch/cuda/_graph_annotations.py,sha256=VVPAFZmqQIR86xa4ilI7d4SX0GVURWH3xp25cyv6pfM,15045 +torch/cuda/_memory_viz.py,sha256=LU_40JI2LWLf_T8m-lWEgyMM2QBGVqllQbbax413k74,28686 +torch/cuda/_pin_memory_utils.py,sha256=uk6Tnea02s5jWmKIdD2JX7p4W4H-74xpKNf7ZryTFqs,773 +torch/cuda/_sanitizer.py,sha256=fJc3BYVYlk2B4frXL_KpBEA7LjD77pS2IddKqw5aZbQ,24514 +torch/cuda/_utils.py,sha256=TBFaEOY_5IOvDlHsRNnizYvPDVWcs3K4KI98sEVepQk,21018 +torch/cuda/amp/__init__.py,sha256=cyLIhZXcuKMKb54GjtdhC0GvA1r018SNByosz5S0gFg,298 +torch/cuda/amp/__pycache__/__init__.cpython-311.pyc,, +torch/cuda/amp/__pycache__/autocast_mode.cpython-311.pyc,, +torch/cuda/amp/__pycache__/common.cpython-311.pyc,, +torch/cuda/amp/__pycache__/grad_scaler.cpython-311.pyc,, +torch/cuda/amp/autocast_mode.py,sha256=sVhM2WjWcFXHOp-_6l5ycFZHOUfSsqS5ee0SsBISgYc,3477 +torch/cuda/amp/common.py,sha256=rPnt6OLsROsahVbMyX5w5Fl3R4G6VUiSl5uioKuDEFg,230 +torch/cuda/amp/grad_scaler.py,sha256=WTG3BGVvo4ifizDYTNTq18lRp_CkqVbYS7Kv5N9n6ag,1073 +torch/cuda/comm.py,sha256=DjabyiIf7WmKgD84HmP4_XYd3Cau_7X_E7dcW1UAUjg,344 +torch/cuda/gds.py,sha256=qFygo1HhUPuysVg4Rqhvklqyhn2brl1U0t27GbMVe1A,6361 +torch/cuda/graphs.py,sha256=8IlmR41W0fF51hpEtDF_ag5NAXmk5EHwNPo0qAHKdQw,29872 +torch/cuda/green_contexts.py,sha256=gEIpCN5dkNtTC5UbFE6sTMIoqeuGFh7y65-fCoLfQbU,3622 +torch/cuda/jiterator.py,sha256=UNAoi692RWMgNPmXBaNhEHyKgoWyGZl3_c1CHvgnSaY,6991 +torch/cuda/memory.py,sha256=5tondwGljSt8alD_5WgKu0o1-bj2EMYKBKJw8nWHRuQ,52420 +torch/cuda/nccl.py,sha256=SrAgsI9xG6pd5hxMEtFZkeEK7fgY0RCgk-NdHovmuvo,4535 +torch/cuda/nvtx.py,sha256=iAOj9LvGDv47y6bctZPrfyp6OeAyg4mqP17TtvXIrvg,3705 +torch/cuda/profiler.py,sha256=aYzsY7dpmV-vGvwKl3uUPWhCC0VDiP02FmNMNkGbkAU,1230 +torch/cuda/random.py,sha256=a7N7kfaMoKKFSulZ0AQObsImnLOJK2G6-mMNLLjHhRo,5400 +torch/cuda/sparse.py,sha256=H912FRisikGM9SSVDQQq-YX5TNIilBYBZs1AwmIv3GQ,67 +torch/cuda/streams.py,sha256=OzTtCLZ88uxBHhpIOzGDW7_4ZSyRWgjyoOTBQONC3Zw,10672 +torch/cuda/tunable.py,sha256=tzo2wbwbTe7J5fTVa95lC9P5BWK4ujsSM9K1FlaCLDc,32063 +torch/distributed/__init__.py,sha256=3edNghejxOMdliGU_olHuPV3lGvAA48uv6UuGtPaJjs,5685 +torch/distributed/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/__pycache__/_checkpointable.cpython-311.pyc,, +torch/distributed/__pycache__/_composable_state.cpython-311.pyc,, +torch/distributed/__pycache__/_dist2.cpython-311.pyc,, +torch/distributed/__pycache__/_functional_collectives.cpython-311.pyc,, +torch/distributed/__pycache__/_functional_collectives_impl.cpython-311.pyc,, +torch/distributed/__pycache__/_mesh_layout.cpython-311.pyc,, +torch/distributed/__pycache__/_meta_registrations.cpython-311.pyc,, +torch/distributed/__pycache__/_serialization.cpython-311.pyc,, +torch/distributed/__pycache__/_state_dict_utils.cpython-311.pyc,, +torch/distributed/__pycache__/argparse_util.cpython-311.pyc,, +torch/distributed/__pycache__/c10d_logger.cpython-311.pyc,, +torch/distributed/__pycache__/collective_utils.cpython-311.pyc,, +torch/distributed/__pycache__/config.cpython-311.pyc,, +torch/distributed/__pycache__/constants.cpython-311.pyc,, +torch/distributed/__pycache__/device_mesh.cpython-311.pyc,, +torch/distributed/__pycache__/distributed_c10d.cpython-311.pyc,, +torch/distributed/__pycache__/launch.cpython-311.pyc,, +torch/distributed/__pycache__/logging_handlers.cpython-311.pyc,, +torch/distributed/__pycache__/remote_device.cpython-311.pyc,, +torch/distributed/__pycache__/rendezvous.cpython-311.pyc,, +torch/distributed/__pycache__/run.cpython-311.pyc,, +torch/distributed/__pycache__/utils.cpython-311.pyc,, +torch/distributed/_checkpointable.py,sha256=VqtUDzJDcTeMUFOguRIo_AvLRXg4n4U73-frKynBqo8,1305 +torch/distributed/_composable/__init__.py,sha256=SUm5fu8Tg24Upb5iHCV849oZSrrtSacaG-7T7A5L2qA,125 +torch/distributed/_composable/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/_composable/__pycache__/checkpoint_activation.cpython-311.pyc,, +torch/distributed/_composable/__pycache__/contract.cpython-311.pyc,, +torch/distributed/_composable/__pycache__/replicate.cpython-311.pyc,, +torch/distributed/_composable/__pycache__/replicate_with_fsdp.cpython-311.pyc,, +torch/distributed/_composable/checkpoint_activation.py,sha256=ooriyRjD7aeGu_EKO0zHwpYCIJQxT10D5WjnhwHvWac,4819 +torch/distributed/_composable/contract.py,sha256=qfezUWwTqhPcTeyjjEXn_XjYhyRXaQaLxIhcrj6xwDQ,10447 +torch/distributed/_composable/fsdp/__init__.py,sha256=PAE0ViGvjHO65XbIe-CM5BgRx9KNsVL4xU7QRUyqL9M,169 +torch/distributed/_composable/fsdp/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/_composable/fsdp/__pycache__/fully_shard.cpython-311.pyc,, +torch/distributed/_composable/fsdp/fully_shard.py,sha256=LggyTExDS-LXmmZeCoSp-GvlMKOmRulWv6k4aPyYsWM,240 +torch/distributed/_composable/replicate.py,sha256=sWxlvMYTkK2DkEPFgiAzrioJH0-tk6r2WTyw7FmeTcY,9350 +torch/distributed/_composable/replicate_with_fsdp.py,sha256=nMYPrR5CrWJsFH6maoEeWQMwZUIh4Y065ZqodwtNfV0,6485 +torch/distributed/_composable_state.py,sha256=rOKLQZE5s1TbgdfB4M9kd94AaTAmnnw-AmyqL5fxpjQ,1403 +torch/distributed/_dist2.py,sha256=us0LVkzxrelZO7rlZhV4vYf5HTNgHKenJGcAJefh_40,4835 +torch/distributed/_functional_collectives.py,sha256=rTGuWOycrrhHVP_deZl4ctrIPLT-rcczEgsJHJNmyVo,68214 +torch/distributed/_functional_collectives_impl.py,sha256=gwLRcqtq9NGUBkXDhYElw6PpDVtDmKkWew5Bt9ZJZsc,3790 +torch/distributed/_local_tensor/__init__.py,sha256=97TbeCcz5IlYgUho4WYiEPLFNdnE5Mi10XfC95flumw,81709 +torch/distributed/_local_tensor/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/_local_tensor/__pycache__/_c10d.cpython-311.pyc,, +torch/distributed/_local_tensor/_c10d.py,sha256=WlDeRmyk63tOPPAfT1tcgp4gHP23T632e7IUwzIVhO0,41562 +torch/distributed/_mesh_layout.py,sha256=mxfQss0pyrV2P_9zBQO9C99TtK_f4Rz_m2wwxaCAfzY,13132 +torch/distributed/_meta_registrations.py,sha256=dfpshci3NHj3PTMJYtytDuPvE61BFUnzAWfeyfF3r1g,2395 +torch/distributed/_ops/__init__.py,sha256=jLQo34kgGOSuumAbVsa8rQRJtt8LZKnXvqpTvpsNSjo,52 +torch/distributed/_ops/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/_ops/__pycache__/device_mesh.cpython-311.pyc,, +torch/distributed/_ops/device_mesh.py,sha256=82Fy4vP7lggJbCideZaQhdUZKfWYFhCAN_bpKuVsko0,3942 +torch/distributed/_pycute/__init__.py,sha256=7Rjy64t4ztEB5BNIFIjFPaYxv1afzff1HcKLBtnPYx8,2456 +torch/distributed/_pycute/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/_pycute/__pycache__/int_tuple.cpython-311.pyc,, +torch/distributed/_pycute/__pycache__/layout.cpython-311.pyc,, +torch/distributed/_pycute/__pycache__/typing.cpython-311.pyc,, +torch/distributed/_pycute/int_tuple.py,sha256=HZegxSKHMl86jE7BRIMVPV83qdq5FQrvxp-xu3apPlU,10304 +torch/distributed/_pycute/layout.py,sha256=Zdp-gGy6U2C5H4LZHUCFXz3J_pllw--7xhPyu_bozYk,18452 +torch/distributed/_pycute/typing.py,sha256=0kzCgBGBRRt1hfAACBnwFdC9g11Ujh8dozJ5GAd9tDw,2062 +torch/distributed/_serialization.py,sha256=nXtpB29C_HiU3WCeWcEISJCAdN0FbOFNAyx3YxjUwaw,4584 +torch/distributed/_shard/__init__.py,sha256=9mrjpti4iifWb8jnGoZypHH0ovdZg3A2KQnxg6BACKI,87 +torch/distributed/_shard/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/_shard/__pycache__/_utils.cpython-311.pyc,, +torch/distributed/_shard/__pycache__/api.cpython-311.pyc,, +torch/distributed/_shard/__pycache__/common_op_utils.cpython-311.pyc,, +torch/distributed/_shard/__pycache__/metadata.cpython-311.pyc,, +torch/distributed/_shard/__pycache__/op_registry_utils.cpython-311.pyc,, +torch/distributed/_shard/__pycache__/sharder.cpython-311.pyc,, +torch/distributed/_shard/_utils.py,sha256=ra_iuevX3gIRVWOz9tql3hLtLRm0JXzeREiL9vwVm14,1070 +torch/distributed/_shard/api.py,sha256=hsDn-zXLsKOR-_exVqTGkILCa-B3lSzU8u_FYaHQd2M,12365 +torch/distributed/_shard/checkpoint/__init__.py,sha256=kILV09-2Glss17itgmv1SbBq7hp2Y7HLUugCZRGYCFE,584 +torch/distributed/_shard/checkpoint/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/_shard/common_op_utils.py,sha256=kj53BqGnob9GRuoRgzn1MXOAmtFRvy_7nzXdJA_1Qrg,2148 +torch/distributed/_shard/metadata.py,sha256=krJyeG9SY2KiJtVxUq4th4qDFUR4WbW5j01VA9RO8bA,2168 +torch/distributed/_shard/op_registry_utils.py,sha256=aK7aBTzgR298AvchxXB1VNdeIT6UCO5emnOoOadjM-I,1031 +torch/distributed/_shard/sharded_optim/__init__.py,sha256=23n5rJ4CKIZb1TwXlI7cX6DgOURqKO5eiM7PJbyi9aY,1863 +torch/distributed/_shard/sharded_optim/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/_shard/sharded_optim/__pycache__/api.cpython-311.pyc,, +torch/distributed/_shard/sharded_optim/api.py,sha256=azG0U2MZOpi5qY2TyEy0qyFgNemadga_bSOu1ooL438,4264 +torch/distributed/_shard/sharded_tensor/__init__.py,sha256=uatjwQJIrccr9STR1IqUkrY_hcLNJAf3RPvvbOmY8P8,19247 +torch/distributed/_shard/sharded_tensor/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/_shard/sharded_tensor/__pycache__/api.cpython-311.pyc,, +torch/distributed/_shard/sharded_tensor/__pycache__/logger.cpython-311.pyc,, +torch/distributed/_shard/sharded_tensor/__pycache__/logging_handlers.cpython-311.pyc,, +torch/distributed/_shard/sharded_tensor/__pycache__/metadata.cpython-311.pyc,, +torch/distributed/_shard/sharded_tensor/__pycache__/reshard.cpython-311.pyc,, +torch/distributed/_shard/sharded_tensor/__pycache__/shard.cpython-311.pyc,, +torch/distributed/_shard/sharded_tensor/__pycache__/utils.cpython-311.pyc,, +torch/distributed/_shard/sharded_tensor/_ops/__init__.py,sha256=NW4TXyw5RGFCbWfikCuxxCOrWuVIUovX06jI8PgcqNM,498 +torch/distributed/_shard/sharded_tensor/_ops/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/_shard/sharded_tensor/_ops/__pycache__/_common.cpython-311.pyc,, +torch/distributed/_shard/sharded_tensor/_ops/__pycache__/binary_cmp.cpython-311.pyc,, +torch/distributed/_shard/sharded_tensor/_ops/__pycache__/init.cpython-311.pyc,, +torch/distributed/_shard/sharded_tensor/_ops/__pycache__/misc_ops.cpython-311.pyc,, +torch/distributed/_shard/sharded_tensor/_ops/__pycache__/tensor_ops.cpython-311.pyc,, +torch/distributed/_shard/sharded_tensor/_ops/_common.py,sha256=KuLeI0PylCkKm5_pnK61Qo3YQhuiFte_VwYpMxjdVG4,4276 +torch/distributed/_shard/sharded_tensor/_ops/binary_cmp.py,sha256=IQ9RiKLLcj4MsJQLb-PCxVCbDfDmAh06FIqLjoV4kS8,2736 +torch/distributed/_shard/sharded_tensor/_ops/init.py,sha256=TdtFNapDXAcB_qL2G7MqbSKfOewocl_MwNtxbsDY5HU,6070 +torch/distributed/_shard/sharded_tensor/_ops/misc_ops.py,sha256=lp_SXuhFUagN_5bxfmZVeqY0SCMhgnGeLGxLq38qvsg,497 +torch/distributed/_shard/sharded_tensor/_ops/tensor_ops.py,sha256=76Uf_goUHNZPpyfVk6nnNmFnmhm9brOR08O11DMaIZ4,7813 +torch/distributed/_shard/sharded_tensor/api.py,sha256=Jdn4hua557q-qdMt21XdHORpQ1Qxe8a8r1nCntm5WWA,55182 +torch/distributed/_shard/sharded_tensor/logger.py,sha256=yny64ZlZ-RzlS5DcX-SAipWqk4xcR2AQO4yl4Vf8B50,1084 +torch/distributed/_shard/sharded_tensor/logging_handlers.py,sha256=nXuxHnOEhAHqqDPhTk_-aLYIVHoZpQEYW_X4N1Qg0_Q,359 +torch/distributed/_shard/sharded_tensor/metadata.py,sha256=92isIH0O2TqPy3Li1CG00R0Ca1BZ40gGM2GHKkJraUA,2998 +torch/distributed/_shard/sharded_tensor/reshard.py,sha256=p_h7m8AxDJ1S2Ei86zcD31DQ89PhpzGOoWEcFU8_TeU,10726 +torch/distributed/_shard/sharded_tensor/shard.py,sha256=zNfIL2FIGBNwPUFcrfusf0E1R-YO04ZoOdcvY6DpXbA,2361 +torch/distributed/_shard/sharded_tensor/utils.py,sha256=hsWa2xhcZ2PAOzfu66VtZvXR0eW_6zVI2BDTpDpdC5c,11781 +torch/distributed/_shard/sharder.py,sha256=nErlvDuMU29IUB6oWB295FaXYj8H42FuDQJXdepvQ1E,901 +torch/distributed/_shard/sharding_plan/__init__.py,sha256=9w-j8bY8VJ0dGT_ueJR2yTfzuech180Xkq0XELn1tKs,47 +torch/distributed/_shard/sharding_plan/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/_shard/sharding_plan/__pycache__/api.cpython-311.pyc,, +torch/distributed/_shard/sharding_plan/api.py,sha256=k3rOiiRTSOf7SVjoScGmP6-AtSOoYpRBLaOjOAdywE4,3602 +torch/distributed/_shard/sharding_spec/__init__.py,sha256=hih75sKTSXPxdyUOS24Vl6K3Q3ht-74l33uAjM4I2Kw,291 +torch/distributed/_shard/sharding_spec/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/_shard/sharding_spec/__pycache__/_internals.cpython-311.pyc,, +torch/distributed/_shard/sharding_spec/__pycache__/api.cpython-311.pyc,, +torch/distributed/_shard/sharding_spec/__pycache__/chunk_sharding_spec.cpython-311.pyc,, +torch/distributed/_shard/sharding_spec/_internals.py,sha256=VZz-fES-f5tcJhWJ1IK4A_NAmOf06wFl8NwA6GBnk-0,8517 +torch/distributed/_shard/sharding_spec/api.py,sha256=fdg-lx3naoZ1m4d8NuMYRcpXHPeFiDn-QEAUdjxFV4U,9848 +torch/distributed/_shard/sharding_spec/chunk_sharding_spec.py,sha256=ImU70gOX7JHSuNN59DSj_t_bXARlJzZ144MQW7cvIig,9368 +torch/distributed/_shard/sharding_spec/chunk_sharding_spec_ops/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/distributed/_shard/sharding_spec/chunk_sharding_spec_ops/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/_shard/sharding_spec/chunk_sharding_spec_ops/__pycache__/_common.cpython-311.pyc,, +torch/distributed/_shard/sharding_spec/chunk_sharding_spec_ops/__pycache__/embedding.cpython-311.pyc,, +torch/distributed/_shard/sharding_spec/chunk_sharding_spec_ops/__pycache__/embedding_bag.cpython-311.pyc,, +torch/distributed/_shard/sharding_spec/chunk_sharding_spec_ops/_common.py,sha256=pU0FdT98noqNnNMxs9H4hBrNi_wom1SZgm4UjDGPUXg,13121 +torch/distributed/_shard/sharding_spec/chunk_sharding_spec_ops/embedding.py,sha256=vCSV8WXu8DSO9BQon8hNE8mf4xiqbTAvNv6o_3jpj-U,11209 +torch/distributed/_shard/sharding_spec/chunk_sharding_spec_ops/embedding_bag.py,sha256=jFU9qfivU0p5awLa6YjSVYiaBy8nsmvdZ4RCxVRDBHk,18319 +torch/distributed/_sharded_tensor/__init__.py,sha256=sL4DKv-CLF-9k_iqL2U689tEIJCSKgeWLsKNtjoqjdg,617 +torch/distributed/_sharded_tensor/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/_sharding_spec/__init__.py,sha256=PR7htIt_o1lIdWq_dvH3aXMHA22fj59dOpLT15vx3zE,646 +torch/distributed/_sharding_spec/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/_state_dict_utils.py,sha256=U1OJN7xo04iZeDI-oFDa9clARD9TN9r2unHkTy3ynZM,29743 +torch/distributed/_symmetric_memory/__init__.py,sha256=zaqOHbZivBJ1k1DWX1X9BX6fNLcxxS0kAzqvj1elGSo,82245 +torch/distributed/_symmetric_memory/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/_symmetric_memory/__pycache__/_nvshmem_triton.cpython-311.pyc,, +torch/distributed/_symmetric_memory/_nvshmem_triton.py,sha256=Wc-y6gAAGAdFTM0Ff5lY4FKCLJZmVCe9fDN5N1XSvaA,46962 +torch/distributed/_tensor/__init__.py,sha256=6PYDt4AcQDMnCvbcTdOSNy1z-3kiftGBIGxXnJWT0PM,969 +torch/distributed/_tensor/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/_tensor/__pycache__/api.cpython-311.pyc,, +torch/distributed/_tensor/__pycache__/placement_types.cpython-311.pyc,, +torch/distributed/_tensor/api.py,sha256=ErftfbUVGCDavz7FfrQ0rEVlfYC0XmcTiWyjb4IZ1BY,300 +torch/distributed/_tensor/placement_types.py,sha256=pvi_dHBNCsZl1C-tAM9sdfYOiKb0Jwr3SqyAWMKgfo8,384 +torch/distributed/_tools/__init__.py,sha256=DYVOrVO_6vBZuEuW8EaKdxsR8bFVoE16R2DiGfKo6JM,327 +torch/distributed/_tools/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/_tools/__pycache__/common_utils.cpython-311.pyc,, +torch/distributed/_tools/__pycache__/fake_collectives.cpython-311.pyc,, +torch/distributed/_tools/__pycache__/fsdp2_mem_tracker.cpython-311.pyc,, +torch/distributed/_tools/__pycache__/ilp_utils.cpython-311.pyc,, +torch/distributed/_tools/__pycache__/mem_tracker.cpython-311.pyc,, +torch/distributed/_tools/__pycache__/memory_tracker.cpython-311.pyc,, +torch/distributed/_tools/__pycache__/mod_tracker.cpython-311.pyc,, +torch/distributed/_tools/__pycache__/runtime_estimator.cpython-311.pyc,, +torch/distributed/_tools/__pycache__/sac_estimator.cpython-311.pyc,, +torch/distributed/_tools/__pycache__/sac_ilp.cpython-311.pyc,, +torch/distributed/_tools/common_utils.py,sha256=4l1wP19s0oZrNIIliVqH37sZ5Y9qtNKDYuvlia3vvSw,1556 +torch/distributed/_tools/fake_collectives.py,sha256=7FVey50Xy6sZ0NIYJkXKyGDbxgx7b9ZqcQ50KpAIyb4,10051 +torch/distributed/_tools/fsdp2_mem_tracker.py,sha256=HZM0gICkmUBagWsi7wBpZ4_NcjNUis2vSICDhrIVre0,25233 +torch/distributed/_tools/ilp_utils.py,sha256=xmsBK7RtUTyKVgKMbMJ2_pVxS7kLmFT3QX8tc-CL6rY,10114 +torch/distributed/_tools/mem_tracker.py,sha256=k-g2IocvPxs1oQHFZ5tMs2ePQOfj4bUHaHKHcUZ_zJw,42476 +torch/distributed/_tools/memory_tracker.py,sha256=Et-MJb93th5_MVTmNwtqcY3FN21ZJ1-YIAeqmA8FPpU,11718 +torch/distributed/_tools/mod_tracker.py,sha256=GGqQCn4sX5J9s8ReLPMC4CTpBVgrYB7yXOEamu3LxKw,10267 +torch/distributed/_tools/runtime_estimator.py,sha256=NQHFZRDIwYIMPLg-NtD2gAlPpq1nE7TOBauEmIq6CtI,16849 +torch/distributed/_tools/sac_estimator.py,sha256=tk9rLjEURHgSChuARvgJA5CdumxI5wrz6N34XVRPT1Q,42504 +torch/distributed/_tools/sac_ilp.py,sha256=gXQAz3ul17XO-ZtY6ZSs0OJpGSNqZyVDP_ikpRyRB8U,11287 +torch/distributed/algorithms/__init__.py,sha256=e5HJMsdSDkPOxNWYUh9YvO26GDODG5PBedTP2-Y16Nw,43 +torch/distributed/algorithms/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/algorithms/__pycache__/join.cpython-311.pyc,, +torch/distributed/algorithms/_checkpoint/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/distributed/algorithms/_checkpoint/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/algorithms/_checkpoint/__pycache__/checkpoint_wrapper.cpython-311.pyc,, +torch/distributed/algorithms/_checkpoint/checkpoint_wrapper.py,sha256=0CETclY_Mg34hjDdVTq6l_7PPoco9Cxq_E20G2Rn8dE,12001 +torch/distributed/algorithms/_comm_hooks/__init__.py,sha256=LkI4VBMJ6_1KGG3Nz0bPxGFOO-ZjfBj-38FNROlJt8Q,131 +torch/distributed/algorithms/_comm_hooks/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/algorithms/_comm_hooks/__pycache__/default_hooks.cpython-311.pyc,, +torch/distributed/algorithms/_comm_hooks/default_hooks.py,sha256=lAqlZiFeVsIH_mPUtOEHp-KXRxILRhuqsqNs2R6P0SQ,7616 +torch/distributed/algorithms/_optimizer_overlap/__init__.py,sha256=zuKlfE0DcQCZm0av9HrJZfXH6R5AzV2K3xrEAAgoVsk,52 +torch/distributed/algorithms/_optimizer_overlap/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/algorithms/_optimizer_overlap/__pycache__/optimizer_overlap.cpython-311.pyc,, +torch/distributed/algorithms/_optimizer_overlap/optimizer_overlap.py,sha256=zkw6dsk0wrK9Nj4-IYQU0q2yH2hzIL2tag5W9ccz9Oc,3753 +torch/distributed/algorithms/_quantization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/distributed/algorithms/_quantization/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/algorithms/_quantization/__pycache__/quantization.cpython-311.pyc,, +torch/distributed/algorithms/_quantization/quantization.py,sha256=jbL_YAS9g8PVEjCk1hgi0b3A992tKevudfyndlGYWiA,5646 +torch/distributed/algorithms/ddp_comm_hooks/__init__.py,sha256=hd0jCD96_JI6-8hHm2K5Sr8In4nD8a3P95i5CgsdPUs,4210 +torch/distributed/algorithms/ddp_comm_hooks/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/algorithms/ddp_comm_hooks/__pycache__/ddp_zero_hook.cpython-311.pyc,, +torch/distributed/algorithms/ddp_comm_hooks/__pycache__/debugging_hooks.cpython-311.pyc,, +torch/distributed/algorithms/ddp_comm_hooks/__pycache__/default_hooks.cpython-311.pyc,, +torch/distributed/algorithms/ddp_comm_hooks/__pycache__/mixed_precision_hooks.cpython-311.pyc,, +torch/distributed/algorithms/ddp_comm_hooks/__pycache__/optimizer_overlap_hooks.cpython-311.pyc,, +torch/distributed/algorithms/ddp_comm_hooks/__pycache__/post_localSGD_hook.cpython-311.pyc,, +torch/distributed/algorithms/ddp_comm_hooks/__pycache__/powerSGD_hook.cpython-311.pyc,, +torch/distributed/algorithms/ddp_comm_hooks/__pycache__/quantization_hooks.cpython-311.pyc,, +torch/distributed/algorithms/ddp_comm_hooks/ddp_zero_hook.py,sha256=JJyb96z4iT3Z8e04ljj8BzCK58Remp_roKXxwGP1u6o,19840 +torch/distributed/algorithms/ddp_comm_hooks/debugging_hooks.py,sha256=X49n0X3TnX650I-DeU-XtL_ssKjdYsn0RYyhB2Ndcms,1115 +torch/distributed/algorithms/ddp_comm_hooks/default_hooks.py,sha256=_v7QSzzDWZmzI3SrRu40IPdClkVGfTQrCsISFVy0Kus,7962 +torch/distributed/algorithms/ddp_comm_hooks/mixed_precision_hooks.py,sha256=sc2NnDmQKmSNYyZ6A83-s9DgYBV-YTfmMdrzurNouag,3254 +torch/distributed/algorithms/ddp_comm_hooks/optimizer_overlap_hooks.py,sha256=LXDz72NQAeDRBRvTAIbnb1pdoyG3jUxTHAr5tfWPZn8,6152 +torch/distributed/algorithms/ddp_comm_hooks/post_localSGD_hook.py,sha256=MPpCW3JHvFIqfC3frNnzuATOtlLiML6hXEgM6C8ZeGk,5150 +torch/distributed/algorithms/ddp_comm_hooks/powerSGD_hook.py,sha256=iAt6WrcK3SLvNpSa63rW2BkqBcn88qFRP_Kvk1dTn0w,40590 +torch/distributed/algorithms/ddp_comm_hooks/quantization_hooks.py,sha256=jDQwXM6McOwPUH5S6Sj9H-hV2rqT-NG0c-InuuyBLsM,8318 +torch/distributed/algorithms/join.py,sha256=r29MXh8j7EhEYR7CDPdk5eiqLYh03d3HGU5p_ldscMA,13520 +torch/distributed/algorithms/model_averaging/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/distributed/algorithms/model_averaging/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/algorithms/model_averaging/__pycache__/averagers.cpython-311.pyc,, +torch/distributed/algorithms/model_averaging/__pycache__/hierarchical_model_averager.cpython-311.pyc,, +torch/distributed/algorithms/model_averaging/__pycache__/utils.cpython-311.pyc,, +torch/distributed/algorithms/model_averaging/averagers.py,sha256=sNQvYipPY_JNWeF_zqPUCFXcYR8WLHt4ohqbKQdjkdQ,5417 +torch/distributed/algorithms/model_averaging/hierarchical_model_averager.py,sha256=ILK-Ra0ExrJMV1yhygp2dJsBxnBrOykdbJPf044Xx3o,9772 +torch/distributed/algorithms/model_averaging/utils.py,sha256=_H_E5K-EQv2p5RbFiVa8LH7zjds4IlKiwl6pYMv2DAA,3087 +torch/distributed/argparse_util.py,sha256=NFxjw2asYt06aFffcu6rhJpC3FFthwKLu9wvWEm_qQU,3903 +torch/distributed/autograd/__init__.py,sha256=o1YwfjRin8NfYkCjzcdABFT0bGRGAiuYmSLEwmbmeJ4,1931 +torch/distributed/autograd/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/c10d_logger.py,sha256=t7WGbk08OEfiTz_kiPGHy9kKyUlVokqY3BDw2WyZtkk,3185 +torch/distributed/checkpoint/__init__.py,sha256=OCW4GkIntMFO-DI2AK2jx4IH41jZsA338tqZ2NRBo30,826 +torch/distributed/checkpoint/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/_async_executor.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/_async_process_executor.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/_async_thread_executor.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/_checkpointer.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/_consolidate_hf_safetensors.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/_dedup_save_plans.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/_dedup_tensors.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/_extension.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/_fsspec_filesystem.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/_hf_utils.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/_nested_dict.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/_pg_transport.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/_sharded_tensor_utils.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/_state_dict_stager.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/_storage_utils.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/_traverse.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/_version.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/api.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/default_planner.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/filesystem.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/format_utils.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/hf_storage.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/logger.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/logging_handlers.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/metadata.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/optimizer.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/planner.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/planner_helpers.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/quantized_hf_storage.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/resharding.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/staging.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/state_dict.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/state_dict_loader.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/state_dict_saver.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/stateful.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/storage.cpython-311.pyc,, +torch/distributed/checkpoint/__pycache__/utils.cpython-311.pyc,, +torch/distributed/checkpoint/_async_executor.py,sha256=tTpnGTOG1U8BiROCkS9JB_UPv7E6ZvLWFkOboqisMTw,1154 +torch/distributed/checkpoint/_async_process_executor.py,sha256=mtdiwRF7b4u3R3h0W5ju7XG4KsSfD00wDwXAkUu5yLs,18045 +torch/distributed/checkpoint/_async_thread_executor.py,sha256=ojp5WJc383zu1R5B1GqgXdK9acA-ctCph12HAJsRMkA,2401 +torch/distributed/checkpoint/_checkpointer.py,sha256=bK2cKf324BRJmhz9DtCa3AmRWIs4B-aCOGErMUF-UCo,3783 +torch/distributed/checkpoint/_consolidate_hf_safetensors.py,sha256=BI-up1pLOlr4rVUzhic6mbyF6kBhHZJ62WdPcFmn0WU,28448 +torch/distributed/checkpoint/_dedup_save_plans.py,sha256=QP__wSP0I0jglKEyPZ_JGXrgHIKSrU6c6Gow8vQTZkk,2754 +torch/distributed/checkpoint/_dedup_tensors.py,sha256=MU2RaM-qHxvn2I-LmNTgvw1cvGwoqItiCHxhb5vNrRM,1991 +torch/distributed/checkpoint/_experimental/__init__.py,sha256=ukQ1Zu9_BedHvl_JQrJhsWKwcJ8nxEYh4_AzvevbT9k,1761 +torch/distributed/checkpoint/_experimental/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/checkpoint/_experimental/__pycache__/barriers.cpython-311.pyc,, +torch/distributed/checkpoint/_experimental/__pycache__/builder.cpython-311.pyc,, +torch/distributed/checkpoint/_experimental/__pycache__/checkpoint_process.cpython-311.pyc,, +torch/distributed/checkpoint/_experimental/__pycache__/checkpoint_reader.cpython-311.pyc,, +torch/distributed/checkpoint/_experimental/__pycache__/checkpoint_writer.cpython-311.pyc,, +torch/distributed/checkpoint/_experimental/__pycache__/checkpointer.cpython-311.pyc,, +torch/distributed/checkpoint/_experimental/__pycache__/config.cpython-311.pyc,, +torch/distributed/checkpoint/_experimental/__pycache__/staging.cpython-311.pyc,, +torch/distributed/checkpoint/_experimental/__pycache__/types.cpython-311.pyc,, +torch/distributed/checkpoint/_experimental/__pycache__/utils.cpython-311.pyc,, +torch/distributed/checkpoint/_experimental/barriers.py,sha256=57Tgfop5ZTxmx6fBaNNwOjBiFAICmNT0KWnHoFm0paQ,9134 +torch/distributed/checkpoint/_experimental/builder.py,sha256=tn8g361poE45V-G5bLhD-0-bBx8iGWx97z7sSqyi41k,6101 +torch/distributed/checkpoint/_experimental/checkpoint_process.py,sha256=sOjG5jg-50aiJfEd6yHj6CtnmGod6FsDTHhkrejttPY,13049 +torch/distributed/checkpoint/_experimental/checkpoint_reader.py,sha256=Dw2xF4Fk5aO9gNNw1fHVNO6Jj9JT3F30KzS0jJUAl_I,8679 +torch/distributed/checkpoint/_experimental/checkpoint_writer.py,sha256=ntVXEIcTqiH74yjE3c_v7_j_DlwMr5dpdVZ3wnRZ4ls,5251 +torch/distributed/checkpoint/_experimental/checkpointer.py,sha256=EIDf-R3iJCqs6X1BxMJZfWjEuSg8GKdqWqBPqGjKRcI,11917 +torch/distributed/checkpoint/_experimental/config.py,sha256=81BcsUGoE59ibhFW0OQ05Hi4zmqJ2-v9tITPJqMQDTM,1528 +torch/distributed/checkpoint/_experimental/staging.py,sha256=xn8oX3VNmh16icfCCDqmvPV1n8t4dCBjQEkoXIe8-Jg,8120 +torch/distributed/checkpoint/_experimental/types.py,sha256=8BI2ouC6nlgXa3nKOjcDPVDZaLwDb__S_f1G79hR9Eg,759 +torch/distributed/checkpoint/_experimental/utils.py,sha256=rIaJLYRF03P1FPH57lo17JUD-b8Kd0NhHer1JdpEZa0,1305 +torch/distributed/checkpoint/_extension.py,sha256=m0DPQCZV1yn9ssXcW4xonhyM1AHSCImJJykLk1CLF_Y,7737 +torch/distributed/checkpoint/_fsspec_filesystem.py,sha256=dLJqJtESqkjrA7_hnI5XUDWu1fyRsMfnk7LeNyoUBIM,5473 +torch/distributed/checkpoint/_hf_utils.py,sha256=RoH7XHPrRd23_XcnlvobWlhPgKUrtcv7y1ifd9B7_Vw,2819 +torch/distributed/checkpoint/_nested_dict.py,sha256=IPtO0mCEYB9xT0Il5g4GW978lubbCFCj51Qo9mTDJWo,2273 +torch/distributed/checkpoint/_pg_transport.py,sha256=Dor7iQYkLmCk9PAveO3Jk_5TbKEzdP4GnmAoy9LCyLI,13268 +torch/distributed/checkpoint/_sharded_tensor_utils.py,sha256=HZOdtN7SH2D79rgdm2g7BDEacEwTxkAJWZhNtSVv6O0,4144 +torch/distributed/checkpoint/_state_dict_stager.py,sha256=oSmI5zXC2Aava3bHtmKu-C_P1l-j6HWgtUuqSQmuAM4,18893 +torch/distributed/checkpoint/_storage_utils.py,sha256=adK0EQsZ7U9w-zh2qskmXkn27pmsP1uV5phseLurw68,1362 +torch/distributed/checkpoint/_traverse.py,sha256=f77M9DnlLh8m_FsUa7av5H8DwJgrxSIJBcehD9PTvQ4,7197 +torch/distributed/checkpoint/_version.py,sha256=wjFuEFA3gH625gFQMVRpt55yBAUObGUHe_1iuM8xMVw,90 +torch/distributed/checkpoint/api.py,sha256=iBZAi6ydUSefDNOLzBDZs0GK7Ji5BFHaNfS5lSqbepE,1799 +torch/distributed/checkpoint/default_planner.py,sha256=Nl7FWqD9_iLdXK6NyJKfWri2TR8niT9-IqbTfgRkkXg,28386 +torch/distributed/checkpoint/filesystem.py,sha256=AJtRXQXb5jSEmwdLGNBBuBywY-9p13qo7MWFefOUVYw,36737 +torch/distributed/checkpoint/format_utils.py,sha256=Cp4LvqDD9mUgsjmfsXIpQuyZbaJrwFEBMphPn1yq0ZI,10733 +torch/distributed/checkpoint/hf_storage.py,sha256=vxbIuOfjLjFxJzjhtHKiSr_D9TuMDzB_sii4X9WKmGc,15383 +torch/distributed/checkpoint/logger.py,sha256=N0xKPxzuyAH2g0TyPI_ij48U7z1HvgTXgfWJxcZOO5s,3635 +torch/distributed/checkpoint/logging_handlers.py,sha256=Ky7OdEi5JzxTwc2u34Mq-tX5S-Y0MynrHAc1xe2nCEk,220 +torch/distributed/checkpoint/metadata.py,sha256=YjGicfDEgIBi1EmC9zC9-b6DQ5-tYnYtChpK0hXeHdk,5573 +torch/distributed/checkpoint/optimizer.py,sha256=8f9p3ML6870yxRsLgRHmGACxgjxvcT_PqSFzwVp3SN4,13342 +torch/distributed/checkpoint/planner.py,sha256=cnJzCR83A2U5Tnrrr8dzHgEX35_N_wmOMqmp8vhon3E,16225 +torch/distributed/checkpoint/planner_helpers.py,sha256=Sqa7m_QdJNXM0y2h3ne0ciH9qgBxVgFc1sooo-COHKU,18775 +torch/distributed/checkpoint/quantized_hf_storage.py,sha256=7B0_-qjPnSU0Qt5TdZVPJFX_KL4sbEyHmNJX-00b38o,20168 +torch/distributed/checkpoint/resharding.py,sha256=1vF4sTAE5WaZaundzKVOOom7CgKohwF52TUQUoWpVxw,2275 +torch/distributed/checkpoint/staging.py,sha256=vd9Ajd0Lf4s4_vyYxzWp1ke7MPJtcSlCtdkmesNuaOo,19331 +torch/distributed/checkpoint/state_dict.py,sha256=IqbiOVbFdhTi8Z6SIsRFCAl59MZWsju_COR6axA7HgA,62502 +torch/distributed/checkpoint/state_dict_loader.py,sha256=rkVzKxEJGP3H99X9FT4H7QGjjx2pE802NEDCDwNQh1Q,14898 +torch/distributed/checkpoint/state_dict_saver.py,sha256=-wmQr3ZH5Gkc00dYTxu8ih5Btg4VY21DBjFoGTazqq8,18475 +torch/distributed/checkpoint/stateful.py,sha256=1cJTGrO_TPFeSguyQhPYCw87ph_QjJRafyAVgx9u7bI,1061 +torch/distributed/checkpoint/storage.py,sha256=xMa-GpSd3X43Yo0yab9hR7Uucato_m1XHWh-JRe-cCs,9792 +torch/distributed/checkpoint/utils.py,sha256=7q28dr36EjaT9VHwxQu4Htm5Jieq0EoAEM1GkEsA_1w,16557 +torch/distributed/collective_utils.py,sha256=r-4K4WK0asp9jg9mWEOrSnPfh5vu_dXeTjyxyZ8uxkg,11835 +torch/distributed/config.py,sha256=XRvD6RN7R38niYpzcSYMSqPagn05QzCuCVLzFRX7TrA,999 +torch/distributed/constants.py,sha256=V6gthYXMG3nf08ObvYceJaNu43yLAVCZ6LXhCGAaKMo,1198 +torch/distributed/debug/__init__.py,sha256=SOf7zuLqqiEGzlMGZoLUxWYfD51-A6DhPXOY5Ubzap0,5243 +torch/distributed/debug/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/debug/__pycache__/_debug_handlers.cpython-311.pyc,, +torch/distributed/debug/__pycache__/_frontend.cpython-311.pyc,, +torch/distributed/debug/__pycache__/_handlers.cpython-311.pyc,, +torch/distributed/debug/__pycache__/_store.cpython-311.pyc,, +torch/distributed/debug/_debug_handlers.py,sha256=rTSedQqONf_XufeD6TubE_miCCODzKsFfYPG4nmEa6M,20159 +torch/distributed/debug/_frontend.py,sha256=9IkNq2lu69IHSSD6mCRtI7uNVja2fO68kGOq_xnP9U8,14592 +torch/distributed/debug/_handlers.py,sha256=k9NoN59EZUgvdL41w2qfXRvSgn_WHk_tp8HNEgSq1qQ,776 +torch/distributed/debug/_store.py,sha256=mjjNaR1pizABV2Q8w9Ap9COIewtpt76VyIiwJMXj7gM,532 +torch/distributed/device_mesh.py,sha256=y1sGO23JXql6PXA1sW_B_K5GBrHfSwQViPxX4BzF1HQ,80466 +torch/distributed/distributed_c10d.py,sha256=wDSIozDWbZsg-5SA9sOxu_umDprq3xiz7KHFypP4hyg,258283 +torch/distributed/elastic/__init__.py,sha256=QMPilFK2QkDj895i4fqrtE5bzyO55GJkV4t4EM_1Qzw,3654 +torch/distributed/elastic/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/elastic/__pycache__/control_plane.cpython-311.pyc,, +torch/distributed/elastic/agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/distributed/elastic/agent/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/elastic/agent/server/__init__.py,sha256=p6OmZ3UC2RN276H3JLUZm0ygZ1GBWRcOOq4OQwozTo4,1401 +torch/distributed/elastic/agent/server/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/elastic/agent/server/__pycache__/api.cpython-311.pyc,, +torch/distributed/elastic/agent/server/__pycache__/health_check_server.cpython-311.pyc,, +torch/distributed/elastic/agent/server/__pycache__/local_elastic_agent.cpython-311.pyc,, +torch/distributed/elastic/agent/server/api.py,sha256=gYSvoCKJfGIt6f8bdlBOIhBVD6dyzLwvukQnnJE7wf4,39518 +torch/distributed/elastic/agent/server/health_check_server.py,sha256=-HrqCGGbZMklUL6Y0lWt6iwZEVNx7GXknKnB8KLCTtg,1688 +torch/distributed/elastic/agent/server/local_elastic_agent.py,sha256=35TKpJveVtxI_xKsRbjtXFq6rN05TOHJIExUXomq64Q,21840 +torch/distributed/elastic/control_plane.py,sha256=EeYAL-0jl46KYrj16DDO8JVUybqqu7Jgwx7bm28VWmI,1181 +torch/distributed/elastic/events/__init__.py,sha256=-JZ75BaqO7Lz3cHReIQwq8o1xTd4cXRHWVGmsZubTv4,5367 +torch/distributed/elastic/events/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/elastic/events/__pycache__/api.cpython-311.pyc,, +torch/distributed/elastic/events/__pycache__/handlers.cpython-311.pyc,, +torch/distributed/elastic/events/api.py,sha256=7o8OinQr8d4hXR6tp_kVNn2EPeVTXfj3dm478Fwtyfw,3310 +torch/distributed/elastic/events/handlers.py,sha256=GVwoHQQFcpFeDW6eobtpDADBX8eIxYCN0tsiFO2pcDQ,556 +torch/distributed/elastic/metrics/__init__.py,sha256=HPZvYUDGNnxv9xqVW0xib9OBj1aBCYejIM4PembVACQ,4899 +torch/distributed/elastic/metrics/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/elastic/metrics/__pycache__/api.cpython-311.pyc,, +torch/distributed/elastic/metrics/api.py,sha256=KGdw_W79IGlKYN7GM_qYTZ_0dGjO5CthWLxhgBY1d4E,5751 +torch/distributed/elastic/multiprocessing/__init__.py,sha256=5vx85lNgWFLillVNsaUwj8a6vISu48sVhRKlIiBlEBw,8698 +torch/distributed/elastic/multiprocessing/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/elastic/multiprocessing/__pycache__/api.cpython-311.pyc,, +torch/distributed/elastic/multiprocessing/__pycache__/redirects.cpython-311.pyc,, +torch/distributed/elastic/multiprocessing/__pycache__/tail_log.cpython-311.pyc,, +torch/distributed/elastic/multiprocessing/api.py,sha256=38kfqq8u9exdysFJXIQn3-FQfX5-0SpGGO396Mclu5M,38701 +torch/distributed/elastic/multiprocessing/errors/__init__.py,sha256=MFL2mlCVFrJoaGOCjSImqJgJspQnTcxt7zohwIRRhQU,14942 +torch/distributed/elastic/multiprocessing/errors/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/elastic/multiprocessing/errors/__pycache__/error_handler.cpython-311.pyc,, +torch/distributed/elastic/multiprocessing/errors/__pycache__/handlers.cpython-311.pyc,, +torch/distributed/elastic/multiprocessing/errors/error_handler.py,sha256=HhOFjIQlCdKYwyt1CGXczy98P6Pg7sR0KN1HSarAtSs,6675 +torch/distributed/elastic/multiprocessing/errors/handlers.py,sha256=ea-3iQUTQRDp_YAUhk-3hZ2HQyCPqz_2iiL5_xfD9Q8,464 +torch/distributed/elastic/multiprocessing/redirects.py,sha256=cRBfC8-pbXXRtjp98R5hQ3S2EukqjfhYBNJziQoxAb0,7644 +torch/distributed/elastic/multiprocessing/subprocess_handler/__init__.py,sha256=pz2OzruD8OBIFFxiI1_TLy0Bd8LDBKNLowzW1_jZUSs,523 +torch/distributed/elastic/multiprocessing/subprocess_handler/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/elastic/multiprocessing/subprocess_handler/__pycache__/handlers.cpython-311.pyc,, +torch/distributed/elastic/multiprocessing/subprocess_handler/__pycache__/subprocess_handler.cpython-311.pyc,, +torch/distributed/elastic/multiprocessing/subprocess_handler/handlers.py,sha256=iqetloWZn4hjEoGUlefmHE1RCAP2DF1ht2MZ3Pu96aA,849 +torch/distributed/elastic/multiprocessing/subprocess_handler/subprocess_handler.py,sha256=Y7d7nzs9j4XoiwcMFU2Sl1oFRJvBeteiVCXzy41yLW4,2731 +torch/distributed/elastic/multiprocessing/tail_log.py,sha256=MxlX53zbt3db9NDq5Vt4vnAIiyIEZqieSEl8cOXBLHU,5273 +torch/distributed/elastic/rendezvous/__init__.py,sha256=tcH-Q6v-bdJTWunq4JT-crJ7TxTh9jxEmdzt3vtRBbI,6269 +torch/distributed/elastic/rendezvous/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/elastic/rendezvous/__pycache__/_etcd_stub.cpython-311.pyc,, +torch/distributed/elastic/rendezvous/__pycache__/api.cpython-311.pyc,, +torch/distributed/elastic/rendezvous/__pycache__/c10d_rendezvous_backend.cpython-311.pyc,, +torch/distributed/elastic/rendezvous/__pycache__/dynamic_rendezvous.cpython-311.pyc,, +torch/distributed/elastic/rendezvous/__pycache__/etcd_rendezvous.cpython-311.pyc,, +torch/distributed/elastic/rendezvous/__pycache__/etcd_rendezvous_backend.cpython-311.pyc,, +torch/distributed/elastic/rendezvous/__pycache__/etcd_server.cpython-311.pyc,, +torch/distributed/elastic/rendezvous/__pycache__/etcd_store.cpython-311.pyc,, +torch/distributed/elastic/rendezvous/__pycache__/registry.cpython-311.pyc,, +torch/distributed/elastic/rendezvous/__pycache__/static_tcp_rendezvous.cpython-311.pyc,, +torch/distributed/elastic/rendezvous/__pycache__/utils.cpython-311.pyc,, +torch/distributed/elastic/rendezvous/_etcd_stub.py,sha256=r_XAqXKOwrTjmltbMyiKUPVsHtMe7sylfnzdVYvaVek,1998 +torch/distributed/elastic/rendezvous/api.py,sha256=VJD9NR3yEtrLM5AOj5avFe6kXDZVCoRS4nUqB9DH4eg,13084 +torch/distributed/elastic/rendezvous/c10d_rendezvous_backend.py,sha256=3ltlhI2UYHFH0bHBqm__GTLU9OcXEhpAMvaZKRU0VzA,10738 +torch/distributed/elastic/rendezvous/dynamic_rendezvous.py,sha256=JgAWH0yvDYEDsipAB3SHiApjHkH1N3ZcaoShuuvXokc,49432 +torch/distributed/elastic/rendezvous/etcd_rendezvous.py,sha256=BiGR5wMY92EJxxdhRpYCZEZL6CoC9LwhXzKyGxD7vwU,43586 +torch/distributed/elastic/rendezvous/etcd_rendezvous_backend.py,sha256=4AruXChEmCCkVjonf27LHI9pb5o2mO7anC9xy_k1GPU,7348 +torch/distributed/elastic/rendezvous/etcd_server.py,sha256=XegMH-Yixe654S_GMn1quvJzsdz8-pKmgJvkshcLGuM,8410 +torch/distributed/elastic/rendezvous/etcd_store.py,sha256=CjxMeTxKCGTXZ7QwNiH8kLmZLU2LzGv1AbPWsUJpj6Y,7258 +torch/distributed/elastic/rendezvous/registry.py,sha256=uhizddahfTJgSBCIFnfbYR8-f_dl72ORAp2kl52WMHk,2964 +torch/distributed/elastic/rendezvous/static_tcp_rendezvous.py,sha256=Vni_9RgotHveIpmEOwUGcGbScwsx-mh9VwtHFr-XNPs,3652 +torch/distributed/elastic/rendezvous/utils.py,sha256=TP-dMF-YoQHP0FETNj_QEpUzo_EhyMSacZYvBqlmDts,8373 +torch/distributed/elastic/timer/__init__.py,sha256=IQ79GKrQX_UKab_Lbp0uqMuLgb2QzDQgd9EX7NJO5aU,1750 +torch/distributed/elastic/timer/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/elastic/timer/__pycache__/api.cpython-311.pyc,, +torch/distributed/elastic/timer/__pycache__/debug_info_logging.cpython-311.pyc,, +torch/distributed/elastic/timer/__pycache__/file_based_local_timer.cpython-311.pyc,, +torch/distributed/elastic/timer/__pycache__/local_timer.cpython-311.pyc,, +torch/distributed/elastic/timer/api.py,sha256=Cx5-79KRjjTub8YiPsIUxqTRoRyecOguChKSADUAz58,9558 +torch/distributed/elastic/timer/debug_info_logging.py,sha256=6mix9Su3bo9BVTM_QXNz75c-WAbDLL8jNbojKbjdEsE,610 +torch/distributed/elastic/timer/file_based_local_timer.py,sha256=OXtzd_N19NA27YJ986lupwk4b9dRB5O5Lklzfr5VepM,16389 +torch/distributed/elastic/timer/local_timer.py,sha256=yaOwmn9FXPTMJ57ubJ0K7TYkWkAeCqY4WF9pMpjrXMg,4282 +torch/distributed/elastic/utils/__init__.py,sha256=ztvtzgzf5pR1ixbbYfY0lGx85VhyhJuHH8er7-XNVpE,318 +torch/distributed/elastic/utils/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/elastic/utils/__pycache__/api.cpython-311.pyc,, +torch/distributed/elastic/utils/__pycache__/distributed.cpython-311.pyc,, +torch/distributed/elastic/utils/__pycache__/log_level.cpython-311.pyc,, +torch/distributed/elastic/utils/__pycache__/logging.cpython-311.pyc,, +torch/distributed/elastic/utils/__pycache__/store.cpython-311.pyc,, +torch/distributed/elastic/utils/api.py,sha256=QMd6BGMe0lVXYnOSMLinlB3Hh_EJn2s6R3Cre2K2l0s,1705 +torch/distributed/elastic/utils/data/__init__.py,sha256=tF96JUuxZmWRkvGOzP7tbZT6s8CKNz29F6O_OYTcL3o,372 +torch/distributed/elastic/utils/data/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/elastic/utils/data/__pycache__/cycling_iterator.cpython-311.pyc,, +torch/distributed/elastic/utils/data/__pycache__/elastic_distributed_sampler.cpython-311.pyc,, +torch/distributed/elastic/utils/data/cycling_iterator.py,sha256=T74d2dY-bCXqIYc0kHK0EMCFYAO54c-5otSzMHusDtQ,1643 +torch/distributed/elastic/utils/data/elastic_distributed_sampler.py,sha256=-rTvCe6GL1Ys15687nvWEgUXsF-vaIFhTV_al5o9Rzk,3074 +torch/distributed/elastic/utils/distributed.py,sha256=AOinZvHARbf5sGXBN7Ic9mI7cPmiNJ4Y4UgmZrTOJaE,5892 +torch/distributed/elastic/utils/log_level.py,sha256=1pOw0YanV5aPrMGwqkATk8OTXm6iLF2iuUYKbUf1b6Q,339 +torch/distributed/elastic/utils/logging.py,sha256=UoUWU9dJZBAlYRI833CcdGPSXtTeXt7cQ7pvIJtcFxM,2291 +torch/distributed/elastic/utils/store.py,sha256=3lCBVsuMXBMCmL3HbqAEGCj3IKcR37vVBA2CfcbtsKA,7275 +torch/distributed/flight_recorder/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/distributed/flight_recorder/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/flight_recorder/__pycache__/fr_trace.cpython-311.pyc,, +torch/distributed/flight_recorder/components/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/distributed/flight_recorder/components/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/flight_recorder/components/__pycache__/builder.cpython-311.pyc,, +torch/distributed/flight_recorder/components/__pycache__/config_manager.cpython-311.pyc,, +torch/distributed/flight_recorder/components/__pycache__/fr_logger.cpython-311.pyc,, +torch/distributed/flight_recorder/components/__pycache__/loader.cpython-311.pyc,, +torch/distributed/flight_recorder/components/__pycache__/types.cpython-311.pyc,, +torch/distributed/flight_recorder/components/__pycache__/utils.cpython-311.pyc,, +torch/distributed/flight_recorder/components/builder.py,sha256=lOfiJg7ygRoZNoBOmC61FLIlOpUWFxmvgckMtRWJlzA,18442 +torch/distributed/flight_recorder/components/config_manager.py,sha256=PmiQ3g-8Av1cSEM5OTktUEoJOPI5sUVUnU_q5E2LXrw,3994 +torch/distributed/flight_recorder/components/fr_logger.py,sha256=DLnrDoW3Pgy0oBUjGpKWo_LCmiWQuJ59MyWlsv9Zknw,1528 +torch/distributed/flight_recorder/components/loader.py,sha256=Awm2L6-Dzz4dyejonfCaKNsuup_PrJ5uuAfSgj-mCwc,2959 +torch/distributed/flight_recorder/components/types.py,sha256=fstyxFlMe4yZaPbrxTDaGhW4TJVJWLg41QmUNOvUaSI,23358 +torch/distributed/flight_recorder/components/utils.py,sha256=FkbiGI2FYcbqGMpE9GfCkxr1j5bZmwNnJ31TLznDh6Q,29500 +torch/distributed/flight_recorder/fr_trace.py,sha256=xxVNSrInrHPW7FUw4OkQ8zm2L_9AOosx4jfOtCGGChw,3066 +torch/distributed/fsdp/__init__.py,sha256=O_Vc-R5chY3IH5f9-TEA6JsGeqQovCJhFIwv-abthkM,1948 +torch/distributed/fsdp/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/fsdp/__pycache__/_common_utils.cpython-311.pyc,, +torch/distributed/fsdp/__pycache__/_debug_utils.cpython-311.pyc,, +torch/distributed/fsdp/__pycache__/_dynamo_utils.cpython-311.pyc,, +torch/distributed/fsdp/__pycache__/_exec_order_utils.cpython-311.pyc,, +torch/distributed/fsdp/__pycache__/_flat_param.cpython-311.pyc,, +torch/distributed/fsdp/__pycache__/_fsdp_extensions.cpython-311.pyc,, +torch/distributed/fsdp/__pycache__/_init_utils.cpython-311.pyc,, +torch/distributed/fsdp/__pycache__/_limiter_utils.cpython-311.pyc,, +torch/distributed/fsdp/__pycache__/_optim_utils.cpython-311.pyc,, +torch/distributed/fsdp/__pycache__/_runtime_utils.cpython-311.pyc,, +torch/distributed/fsdp/__pycache__/_shard_utils.cpython-311.pyc,, +torch/distributed/fsdp/__pycache__/_state_dict_utils.cpython-311.pyc,, +torch/distributed/fsdp/__pycache__/_trace_utils.cpython-311.pyc,, +torch/distributed/fsdp/__pycache__/_traversal_utils.cpython-311.pyc,, +torch/distributed/fsdp/__pycache__/_unshard_param_utils.cpython-311.pyc,, +torch/distributed/fsdp/__pycache__/_wrap_utils.cpython-311.pyc,, +torch/distributed/fsdp/__pycache__/api.cpython-311.pyc,, +torch/distributed/fsdp/__pycache__/fully_sharded_data_parallel.cpython-311.pyc,, +torch/distributed/fsdp/__pycache__/sharded_grad_scaler.cpython-311.pyc,, +torch/distributed/fsdp/__pycache__/wrap.cpython-311.pyc,, +torch/distributed/fsdp/_common_utils.py,sha256=spEi9t3f5IgXikFTJxqay2DN_MAImXALXXRm_N60mPA,29281 +torch/distributed/fsdp/_debug_utils.py,sha256=1SmIdIGZ42D8y-OWBbbTXCTvh7hf82h0jn2SbRquSc4,5818 +torch/distributed/fsdp/_dynamo_utils.py,sha256=_YtXy6KD9FUp--G1z7xpA4rrcSWFnF0bMkRtcDptpeg,2631 +torch/distributed/fsdp/_exec_order_utils.py,sha256=BrCXrx1FXh3s6cxKE2QBi26Q-jTGdYDobiXLIOwvq1U,16089 +torch/distributed/fsdp/_flat_param.py,sha256=rT6fKOQ8opBEZ90HvfKAt_MjppDl7UK8Ar4aMLLNA6g,125974 +torch/distributed/fsdp/_fsdp_extensions.py,sha256=iGFirKzsyf3OEeKV8v2fB9dkkmBP8GlSS-vg6N92AOI,4987 +torch/distributed/fsdp/_fully_shard/__init__.py,sha256=uXSibxJe0zL41WR-oTOtpzPSk6Wxq6UTSc6ge0kYO38,489 +torch/distributed/fsdp/_fully_shard/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/fsdp/_fully_shard/__pycache__/_fsdp_api.cpython-311.pyc,, +torch/distributed/fsdp/_fully_shard/__pycache__/_fsdp_collectives.cpython-311.pyc,, +torch/distributed/fsdp/_fully_shard/__pycache__/_fsdp_common.cpython-311.pyc,, +torch/distributed/fsdp/_fully_shard/__pycache__/_fsdp_init.cpython-311.pyc,, +torch/distributed/fsdp/_fully_shard/__pycache__/_fsdp_param.cpython-311.pyc,, +torch/distributed/fsdp/_fully_shard/__pycache__/_fsdp_param_group.cpython-311.pyc,, +torch/distributed/fsdp/_fully_shard/__pycache__/_fsdp_state.cpython-311.pyc,, +torch/distributed/fsdp/_fully_shard/__pycache__/_fully_shard.cpython-311.pyc,, +torch/distributed/fsdp/_fully_shard/_fsdp_api.py,sha256=FA9J_OEpKK7gfiB6ttEveEQfZrIRcx9H0k-lOkM2ss4,6918 +torch/distributed/fsdp/_fully_shard/_fsdp_collectives.py,sha256=R9g7vHpdOtAQsVo_ntsV8G2kMlO9_HIcJoPOZJ_s1rk,32670 +torch/distributed/fsdp/_fully_shard/_fsdp_common.py,sha256=MWPf1XC6fDceISiz70JMHupdKrH33YmiXcQuqrDZDBQ,6886 +torch/distributed/fsdp/_fully_shard/_fsdp_init.py,sha256=oRlEG-VjJxPzCDaI15xyUDUC0eQEUrPEehu7Pzg-k4g,20751 +torch/distributed/fsdp/_fully_shard/_fsdp_param.py,sha256=UcYEsZfrc2uAzibyFloi1s1UBzI4u_sb136pHT09qsM,45313 +torch/distributed/fsdp/_fully_shard/_fsdp_param_group.py,sha256=5kYsoLFVcGsB1xp_nMq8h9lNPFLKZht579gKLdt6tnc,41088 +torch/distributed/fsdp/_fully_shard/_fsdp_state.py,sha256=xu-mq7Ajeq46DMfH3EXyaQKcrhV2ocxkaX2xmoLjMys,21730 +torch/distributed/fsdp/_fully_shard/_fully_shard.py,sha256=o2hQ8g8Fe1R8afVtX3adRz9-UquyLgVJ8vpYXAwkCkk,36703 +torch/distributed/fsdp/_init_utils.py,sha256=ay9gaBk2AMx49wSVO1jAhqLyPSononalYNep_Ou2-k0,48488 +torch/distributed/fsdp/_limiter_utils.py,sha256=Uer7diNEpPlQG9ijdEwkh8K0d9iJl2texk_ArIz7euk,1052 +torch/distributed/fsdp/_optim_utils.py,sha256=YKrL2dQhs4H_XBhjtAqUSmG8_p_gl6VOaSPfGYhJs_M,89828 +torch/distributed/fsdp/_runtime_utils.py,sha256=6axOB-QKPjEsfBdsUzggHSAvjw5f75znFnWPJEtoa-o,66905 +torch/distributed/fsdp/_shard_utils.py,sha256=MMZ5-X4Yg8KWMoqlPebVMyXo0lzoiUUayi2iKevoYak,4828 +torch/distributed/fsdp/_state_dict_utils.py,sha256=xOnTccogJteGH79Rjz50DhiQoVI-teeawVe13OchtCw,34737 +torch/distributed/fsdp/_trace_utils.py,sha256=JLa_T89INq4QDKVN1w9qQcaXtTW2-8HXqkEcxtpEUBI,10798 +torch/distributed/fsdp/_traversal_utils.py,sha256=haGRJUg9EyPuRJjUyUWfBDaRmEdJ7VOaOPi722DQ2Xg,4610 +torch/distributed/fsdp/_unshard_param_utils.py,sha256=hG8RJ0F-04VVqzmcOAf7c4upY6iapif3lOsimcjXSpQ,11663 +torch/distributed/fsdp/_wrap_utils.py,sha256=uhD6UktLckRjpzXOWlpI-mLsiB0qSuyHh6cU_75EShQ,10946 +torch/distributed/fsdp/api.py,sha256=QzyR5LX5OC6GdiPvZFq_SJbF8-UD4i07X-l_0-WSJBQ,18938 +torch/distributed/fsdp/fully_sharded_data_parallel.py,sha256=FTPIj3VJztHNVGFfe_Ke1d0De002iYt-bP5ZT4IKcs8,100777 +torch/distributed/fsdp/sharded_grad_scaler.py,sha256=5Whb-weywbMd7Fbpj8oAv5JY_cubShTiZribl12TNA0,17057 +torch/distributed/fsdp/wrap.py,sha256=bFgUTmDiPzwF3sWm_5QpqowOVJ0uRK-PXvtBEuhtSqo,23110 +torch/distributed/launch.py,sha256=e7R-D1Wy1X98YSTVQESxOkDBA3UwCkrzpEzraXovYYc,7595 +torch/distributed/launcher/__init__.py,sha256=V0J5Y0SVG1ybhGeHnjarMc4dcOgyhRsHpnP7lBMyB48,349 +torch/distributed/launcher/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/launcher/__pycache__/api.cpython-311.pyc,, +torch/distributed/launcher/api.py,sha256=HGMP2TvEZSjc1OSv88e-5eWihbceqkuXF7dhjsSpMtU,16162 +torch/distributed/logging_handlers.py,sha256=nXuxHnOEhAHqqDPhTk_-aLYIVHoZpQEYW_X4N1Qg0_Q,359 +torch/distributed/nn/__init__.py,sha256=Ta4l0Jr2gOK7eQR-e32stWaDKPOlV_Kii0SExydXk_Q,145 +torch/distributed/nn/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/nn/__pycache__/functional.cpython-311.pyc,, +torch/distributed/nn/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/distributed/nn/api/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/nn/api/__pycache__/remote_module.cpython-311.pyc,, +torch/distributed/nn/api/remote_module.py,sha256=HgXhfAA32lLaByw1PLfy-jF5LPOE5HnODDnvgD6VFFg,31378 +torch/distributed/nn/functional.py,sha256=OikdkDC7Qg-fBwJn8KuBz-WN327Gj0ThtnuQrW_uytI,18370 +torch/distributed/nn/jit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/distributed/nn/jit/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/nn/jit/__pycache__/instantiator.cpython-311.pyc,, +torch/distributed/nn/jit/instantiator.py,sha256=IhEEPfRwITTS2oQipmVr_w1So9sAgOSsPgi0ff-XrCg,6198 +torch/distributed/nn/jit/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/distributed/nn/jit/templates/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/nn/jit/templates/__pycache__/remote_module_template.cpython-311.pyc,, +torch/distributed/nn/jit/templates/remote_module_template.py,sha256=D_GFa70DG1KY1GwGwFAqvCC9gE9CwZSe1BJ-jHc2YMw,3463 +torch/distributed/optim/__init__.py,sha256=HxJ6GIWc3b6uAZWNh45oePXlQLAdX9Kmu3PByAOvlh4,1440 +torch/distributed/optim/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/optim/__pycache__/_deprecation_warning.cpython-311.pyc,, +torch/distributed/optim/__pycache__/apply_optimizer_in_backward.cpython-311.pyc,, +torch/distributed/optim/__pycache__/functional_adadelta.cpython-311.pyc,, +torch/distributed/optim/__pycache__/functional_adagrad.cpython-311.pyc,, +torch/distributed/optim/__pycache__/functional_adam.cpython-311.pyc,, +torch/distributed/optim/__pycache__/functional_adamax.cpython-311.pyc,, +torch/distributed/optim/__pycache__/functional_adamw.cpython-311.pyc,, +torch/distributed/optim/__pycache__/functional_rmsprop.cpython-311.pyc,, +torch/distributed/optim/__pycache__/functional_rprop.cpython-311.pyc,, +torch/distributed/optim/__pycache__/functional_sgd.cpython-311.pyc,, +torch/distributed/optim/__pycache__/named_optimizer.cpython-311.pyc,, +torch/distributed/optim/__pycache__/optimizer.cpython-311.pyc,, +torch/distributed/optim/__pycache__/post_localSGD_optimizer.cpython-311.pyc,, +torch/distributed/optim/__pycache__/utils.cpython-311.pyc,, +torch/distributed/optim/__pycache__/zero_redundancy_optimizer.cpython-311.pyc,, +torch/distributed/optim/_deprecation_warning.py,sha256=4lon9fWNrTNS4ARfi5Dag5tvohwNyPMflHBl9VFd_0E,547 +torch/distributed/optim/apply_optimizer_in_backward.py,sha256=uTNZylxBaBVQK1teYyPJ7R45-t8aqG6joeGT3qyi0AQ,5214 +torch/distributed/optim/functional_adadelta.py,sha256=rnI34B6w5-ISY_21uC2CgfoZVWVbovWOUsOAwFpQBqc,3923 +torch/distributed/optim/functional_adagrad.py,sha256=5qM9YJdGHQmYK9dhGYFCFZ50r-6PoqXI2pe9b9xbgTM,4273 +torch/distributed/optim/functional_adam.py,sha256=o0feTLaXh_Lx_DneB5Vy8vX4R0iO3lw1-Dk-dBeRWro,7391 +torch/distributed/optim/functional_adamax.py,sha256=OAc-Snni8vYQq5sJWcC8aV-dnrOA26i8zOS6nCsGGCg,4620 +torch/distributed/optim/functional_adamw.py,sha256=BJMztbCxW3lGdaBP-9AifkX2cHNnyskmMGbazMfKuFE,7511 +torch/distributed/optim/functional_rmsprop.py,sha256=2FLOhJNuA4wh2vnlb1mPGrll4dJ9zSjdAtImk-3dqno,4653 +torch/distributed/optim/functional_rprop.py,sha256=avQYdiVv0UaTcRGsPTFoeGrvSM1OMpsColMd06zJPdE,3807 +torch/distributed/optim/functional_sgd.py,sha256=dpVzD0a-GSIMG_iqwMvqDUyKOnsvi4sT9vjii0KHlxs,5898 +torch/distributed/optim/named_optimizer.py,sha256=n1T-Chv8j87UIP7-iVVVZJ1DTbsja7DmjA4EhjRCtrM,14184 +torch/distributed/optim/optimizer.py,sha256=PGqrPW0HJZmQPm6dT1b6V1_xmyVIk1yFB7DVfRb6w4Y,9756 +torch/distributed/optim/post_localSGD_optimizer.py,sha256=MT7Kno6EvcmnjAiQGJdsgOnKXpHXqm9Sm9QnHzV-EP4,4498 +torch/distributed/optim/utils.py,sha256=JhzIndnTdt0CMJiEblAbg-tOdVDhFv6tMk00_WjBPMI,2238 +torch/distributed/optim/zero_redundancy_optimizer.py,sha256=85DkD6UeM2VJtzN72HZ4HxBrqv3YetdjYnD9l43WUA8,73748 +torch/distributed/optim/zero_redundancy_optimizer.pyi,sha256=I-G_ysSHrYjja75Vn5DPbuSCtyE4g_Pg_Mp28EBA0Js,2852 +torch/distributed/pipelining/_IR.py,sha256=yTBOTevhHqv4BKtPVPE079fcFZmOgKhQR0Mggf7EGZ8,50442 +torch/distributed/pipelining/__init__.py,sha256=ywlBKSDSFkgi5wBXXS02nJ_srC1l2ACoCkI1PtDjcDY,689 +torch/distributed/pipelining/__pycache__/_IR.cpython-311.pyc,, +torch/distributed/pipelining/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/pipelining/__pycache__/_backward.cpython-311.pyc,, +torch/distributed/pipelining/__pycache__/_debug.cpython-311.pyc,, +torch/distributed/pipelining/__pycache__/_schedule_visualizer.cpython-311.pyc,, +torch/distributed/pipelining/__pycache__/_unflatten.cpython-311.pyc,, +torch/distributed/pipelining/__pycache__/_utils.cpython-311.pyc,, +torch/distributed/pipelining/__pycache__/microbatch.cpython-311.pyc,, +torch/distributed/pipelining/__pycache__/schedules.cpython-311.pyc,, +torch/distributed/pipelining/__pycache__/stage.cpython-311.pyc,, +torch/distributed/pipelining/_backward.py,sha256=EwG65PCIyUijL-dFK28uJ4NErsSsQuU5-pl5HCecvok,18250 +torch/distributed/pipelining/_debug.py,sha256=dDUjgp_-XnUEsM4I-zj5-yQGxcapHbBb3JcRSdRuCqc,608 +torch/distributed/pipelining/_schedule_visualizer.py,sha256=0RxVafpG3HMO-4zGSSeieDE27BfYW4P9dn7uF3Kynp8,17193 +torch/distributed/pipelining/_unflatten.py,sha256=GUpLGbhqxbAMjcY9aDxandxUd3Rva1aXs4BRApx9Gj8,952 +torch/distributed/pipelining/_utils.py,sha256=FabRwgUdvT6e_Xci7YXxzZBBF699xoyFZwrTJfirr6U,32412 +torch/distributed/pipelining/microbatch.py,sha256=Q3PykJO2THHN9vhD0Bo1tANe5wmD7eHelA8hioJ4tqg,21760 +torch/distributed/pipelining/schedules.py,sha256=mLDI9kFOome137q19nznODMZXWnTTXsxnhe8vutxEWY,147424 +torch/distributed/pipelining/stage.py,sha256=pXOosshTfhGBEtxzdAM-tqqC9DNt_V2p0kyDEKNGeh8,93744 +torch/distributed/remote_device.py,sha256=FaHtxJp4aLyH63gBkigD-p3lJ67NZCgWkYEUNPKYvok,4545 +torch/distributed/rendezvous.py,sha256=jI1J6mN7mns8k7o-DNoGXxCsx4zYJukdEozRlV2zXFg,10273 +torch/distributed/rpc/__init__.py,sha256=2aiCTn524Vsvkdr0QsKBTCpT_tyQCpWCGxqRcBScPcg,9993 +torch/distributed/rpc/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/rpc/__pycache__/_utils.cpython-311.pyc,, +torch/distributed/rpc/__pycache__/api.cpython-311.pyc,, +torch/distributed/rpc/__pycache__/backend_registry.cpython-311.pyc,, +torch/distributed/rpc/__pycache__/constants.cpython-311.pyc,, +torch/distributed/rpc/__pycache__/functions.cpython-311.pyc,, +torch/distributed/rpc/__pycache__/internal.cpython-311.pyc,, +torch/distributed/rpc/__pycache__/options.cpython-311.pyc,, +torch/distributed/rpc/__pycache__/rref_proxy.cpython-311.pyc,, +torch/distributed/rpc/__pycache__/server_process_global_profiler.cpython-311.pyc,, +torch/distributed/rpc/_testing/__init__.py,sha256=xSU_1OK5D0vaFTGSxPlzX6Ad4CEvsZv7DIJYY1d2Unk,479 +torch/distributed/rpc/_testing/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/rpc/_testing/__pycache__/faulty_agent_backend_registry.cpython-311.pyc,, +torch/distributed/rpc/_testing/faulty_agent_backend_registry.py,sha256=KmeZ2KHDwSWJB3mdfA06hdaabt25vKkkUU1h8SFVk1o,1639 +torch/distributed/rpc/_utils.py,sha256=tcq0ADOGMmd7OkKYFY7apu6c44VbgFLxCLOCh-aiyvU,1649 +torch/distributed/rpc/api.py,sha256=c6v_xV1cHtHJ8TLaA-oD9tqal_Vm38TwgiHfTcloltk,37293 +torch/distributed/rpc/backend_registry.py,sha256=QUc-0QIFAETaBhCtY0Bl_COcyrTnXl8O9p7jbrHQNek,16256 +torch/distributed/rpc/constants.py,sha256=AFzuxIi9gIVxb9nyZNZ6h70Is-DUMsCHZ-WEO3MOMP8,804 +torch/distributed/rpc/functions.py,sha256=9sE_wYiqlfUmb6AFBFPmOq6PApwYKxosNOnteoy_0Oc,7272 +torch/distributed/rpc/internal.py,sha256=gEsK3c38SKriXoE0Uy3BMtar6_smcS_xc3_st5PYeLc,11149 +torch/distributed/rpc/options.py,sha256=uSupCGgnrJNCf3E0eIaH4hySXM7vT-1gslMx6k3ceXw,7218 +torch/distributed/rpc/rref_proxy.py,sha256=QRFHO3EvUay19HkZgUkf1uNLDQgp1Gmop8z4Ics5Aq4,2705 +torch/distributed/rpc/server_process_global_profiler.py,sha256=NpQiYNSv10xOWQbtvbYrg3Q2nXdE6BuHTz82BkUyCak,8477 +torch/distributed/run.py,sha256=mQpVMEGD10f-heG6hFdy8ANbWTkSfigfDbXS7fj8aS0,36223 +torch/distributed/tensor/__init__.py,sha256=PpV4NhDxXs8qAYkPWAjSTYf0qMtb7vg3o_JaoTxP2tc,2439 +torch/distributed/tensor/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/tensor/__pycache__/_api.cpython-311.pyc,, +torch/distributed/tensor/__pycache__/_collective_utils.cpython-311.pyc,, +torch/distributed/tensor/__pycache__/_decompositions.cpython-311.pyc,, +torch/distributed/tensor/__pycache__/_dispatch.cpython-311.pyc,, +torch/distributed/tensor/__pycache__/_dtensor_spec.cpython-311.pyc,, +torch/distributed/tensor/__pycache__/_nonlinear_redux.cpython-311.pyc,, +torch/distributed/tensor/__pycache__/_op_schema.cpython-311.pyc,, +torch/distributed/tensor/__pycache__/_random.cpython-311.pyc,, +torch/distributed/tensor/__pycache__/_redistribute.cpython-311.pyc,, +torch/distributed/tensor/__pycache__/_sharding_prop.cpython-311.pyc,, +torch/distributed/tensor/__pycache__/_shards_wrapper.cpython-311.pyc,, +torch/distributed/tensor/__pycache__/_tp_conv.cpython-311.pyc,, +torch/distributed/tensor/__pycache__/_utils.cpython-311.pyc,, +torch/distributed/tensor/__pycache__/device_mesh.cpython-311.pyc,, +torch/distributed/tensor/__pycache__/placement_types.cpython-311.pyc,, +torch/distributed/tensor/_api.py,sha256=Xi5OxhFlIKgB6UbDoLZZxYnGFG3PhahgM_rjLDEJg2E,66489 +torch/distributed/tensor/_collective_utils.py,sha256=ejKzKJqabPzUpRvCZTX9LEIeO-L5BQlNXuw2p0pKVPM,21783 +torch/distributed/tensor/_decompositions.py,sha256=ZC5J-15bnsFLYs4o0wjV3CDAyc7rX2y77slpdu1m_60,13116 +torch/distributed/tensor/_dispatch.py,sha256=VyEHpnzKeIi_eXSRcW_88iG1uKAWE5uaEZFUvOGm5f4,35212 +torch/distributed/tensor/_dtensor_spec.py,sha256=UHXDnendOhTVnL4AutIq2sF4nNYvDdTvKiZmg0DVBn4,33717 +torch/distributed/tensor/_nonlinear_redux.py,sha256=KJtZlRx_YPPnborI1-bR7oJdsZfFk9Nqsg1LqrUb-eQ,10519 +torch/distributed/tensor/_op_schema.py,sha256=8ims9jnbaGY8xYjzdul1A6-TC7Mo_SO6c_cckijVjR4,27782 +torch/distributed/tensor/_ops/__init__.py,sha256=bQDReWqPLgNAfjBJC18_Q8Yg9wTj_ZlIut6CnQ_KBiY,380 +torch/distributed/tensor/_ops/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/tensor/_ops/__pycache__/_common_rules.cpython-311.pyc,, +torch/distributed/tensor/_ops/__pycache__/_conv_ops.cpython-311.pyc,, +torch/distributed/tensor/_ops/__pycache__/_einsum_strategy.cpython-311.pyc,, +torch/distributed/tensor/_ops/__pycache__/_embedding_ops.cpython-311.pyc,, +torch/distributed/tensor/_ops/__pycache__/_mask_buffer.cpython-311.pyc,, +torch/distributed/tensor/_ops/__pycache__/_math_ops.cpython-311.pyc,, +torch/distributed/tensor/_ops/__pycache__/_matrix_ops.cpython-311.pyc,, +torch/distributed/tensor/_ops/__pycache__/_pointwise_ops.cpython-311.pyc,, +torch/distributed/tensor/_ops/__pycache__/_random_ops.cpython-311.pyc,, +torch/distributed/tensor/_ops/__pycache__/_tensor_ops.cpython-311.pyc,, +torch/distributed/tensor/_ops/__pycache__/_view_ops.cpython-311.pyc,, +torch/distributed/tensor/_ops/__pycache__/single_dim_strategy.cpython-311.pyc,, +torch/distributed/tensor/_ops/__pycache__/strategy_validation.cpython-311.pyc,, +torch/distributed/tensor/_ops/__pycache__/utils.cpython-311.pyc,, +torch/distributed/tensor/_ops/_common_rules.py,sha256=2ChHkqXUJXulPsPHZWv1gGgvWXdSwXxTGRLLPhHN2CY,11998 +torch/distributed/tensor/_ops/_conv_ops.py,sha256=I9JZp9xOoErMSak1BjUzuiMmVeWuMzJvLNF7siToxhI,6642 +torch/distributed/tensor/_ops/_einsum_strategy.py,sha256=gGM6LUYNEqXHN_slfFCXu1zt6tXkTQHJpQcIdVYLANc,7691 +torch/distributed/tensor/_ops/_embedding_ops.py,sha256=4tXUEBYgKNdEPRfcbnH_HjriDJHWupiTXQSkXchBbOc,4370 +torch/distributed/tensor/_ops/_mask_buffer.py,sha256=c5sml3lk7LOlKaNNcH9VIU0uVC2qAT9GPcyBY-OhYEU,1562 +torch/distributed/tensor/_ops/_math_ops.py,sha256=BpvI570pwfgF80-VXFiBA96-RIAbeocbeSoL9lRrMWc,64387 +torch/distributed/tensor/_ops/_matrix_ops.py,sha256=8vy6KNafkJ3kGKiwnaa5218z7Dc6guJMDxVYtdmHpIc,50084 +torch/distributed/tensor/_ops/_pointwise_ops.py,sha256=slREdDyMcHzzCqo-J6my2FCln2MJ7ZPspKRmJEs6c9s,19983 +torch/distributed/tensor/_ops/_random_ops.py,sha256=fAR1vpt9qxPn1bnB5EGEYpXXi8qZBTpGhxPypoh7H6A,1286 +torch/distributed/tensor/_ops/_tensor_ops.py,sha256=jAbxxw3fifykz49dznuBxbWhpR9wnF0DAQwVQiIGFT4,62545 +torch/distributed/tensor/_ops/_view_ops.py,sha256=2pKw7UXqMjSO0Te5K-2-6ea0p86OxlXJryKZeQxTfGg,56485 +torch/distributed/tensor/_ops/single_dim_strategy.py,sha256=sY_rZlyXZDvwD34aEycMsrlbGjNqCpMIQVtox8ZTU58,45004 +torch/distributed/tensor/_ops/strategy_validation.py,sha256=fMJvuqLTCRUCab3yLnRv8XKq0E5PTugjIVFDcQjlnMA,84711 +torch/distributed/tensor/_ops/utils.py,sha256=I2Hd8FfOmCwqWeCecu0jmOeYDBcbeJQe8DiZYZzogYk,29063 +torch/distributed/tensor/_random.py,sha256=GSsjvutUjYZVMcCDjcS1JgWEnEkQLt13Zfew5SdQVxs,20376 +torch/distributed/tensor/_redistribute.py,sha256=PWmARKFvN78GLXOkzRahHquIjEh8zxqr8TAH8Uq_jiw,84177 +torch/distributed/tensor/_sharding_prop.py,sha256=f3Hn31EPZmGRX72jhN5zq2ycWyeChjNgKDA_5re4qVw,47938 +torch/distributed/tensor/_shards_wrapper.py,sha256=EjVQNKFDmDbD1N-aFENgLjqmoaTfOLmLbyvtvEW7ccE,13592 +torch/distributed/tensor/_tp_conv.py,sha256=VJz75AZypeKHdSOPM8c65VF4XVfF_PaJmcg095vBbio,11370 +torch/distributed/tensor/_utils.py,sha256=BvU5G1pFBMdSbL4ittorB9f8dIW06JBaF07kCKfBbAI,20937 +torch/distributed/tensor/debug/__init__.py,sha256=1fkt2_pt90BuM0T1H6DWeWO12P_ivEOik7x4SIvrJFY,2446 +torch/distributed/tensor/debug/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/tensor/debug/__pycache__/_comm_mode.cpython-311.pyc,, +torch/distributed/tensor/debug/__pycache__/_op_coverage.cpython-311.pyc,, +torch/distributed/tensor/debug/__pycache__/_visualize_sharding.cpython-311.pyc,, +torch/distributed/tensor/debug/_comm_mode.py,sha256=zQytrcRSpo_OWwlowu0OQGxz3BzDRilCkm-WEdqMggc,29316 +torch/distributed/tensor/debug/_op_coverage.py,sha256=JVC581pNJZyM6fMwyhzXNLMxC4mXJWQ6y2Qpjxd2JRg,3168 +torch/distributed/tensor/debug/_visualize_sharding.py,sha256=P2rXbtLlKqci4CcKe_yIlWZCN2sGwR0vg624dLylSEk,7562 +torch/distributed/tensor/device_mesh.py,sha256=MONPC_i1XphcY2E0AAte1MW668BTlUGugMSQzfJqzik,190 +torch/distributed/tensor/experimental/__init__.py,sha256=9I70AFPtyjGyKxAuaBsRfDxvHyCeM5a7o7q3X1yUe5g,1424 +torch/distributed/tensor/experimental/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/tensor/experimental/__pycache__/_attention.cpython-311.pyc,, +torch/distributed/tensor/experimental/__pycache__/_func_map.cpython-311.pyc,, +torch/distributed/tensor/experimental/__pycache__/_register_sharding.cpython-311.pyc,, +torch/distributed/tensor/experimental/__pycache__/_tp_transform.cpython-311.pyc,, +torch/distributed/tensor/experimental/_attention.py,sha256=Hz6IsHinuWEYMWAMGzQMuVEYAHiJF3VqLQjIbysMBtw,1229 +torch/distributed/tensor/experimental/_context_parallel/__init__.py,sha256=6yKCIGx9a4EB26ST6wrFUihdq8SPHvOj8wPgehrHeb0,1130 +torch/distributed/tensor/experimental/_context_parallel/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/tensor/experimental/_context_parallel/__pycache__/_attention.cpython-311.pyc,, +torch/distributed/tensor/experimental/_context_parallel/__pycache__/_cp_custom_ops.cpython-311.pyc,, +torch/distributed/tensor/experimental/_context_parallel/__pycache__/_load_balancer.cpython-311.pyc,, +torch/distributed/tensor/experimental/_context_parallel/__pycache__/_sharding_rules.cpython-311.pyc,, +torch/distributed/tensor/experimental/_context_parallel/_attention.py,sha256=GE9GL8sw3e1SnVVH66xtIbCER2NqUxo5JMgIodYtbBY,62230 +torch/distributed/tensor/experimental/_context_parallel/_cp_custom_ops.py,sha256=xNWTO29HqyGhpcnheOMuujOh4q7zlCeAbVlFPNjQB_8,2969 +torch/distributed/tensor/experimental/_context_parallel/_load_balancer.py,sha256=-N0YgLLtKtZSJh8pwnHdLxG61rIqzNZSzZ0El1zLxzU,22511 +torch/distributed/tensor/experimental/_context_parallel/_sharding_rules.py,sha256=MmvXLhj1PmPqmfmBQfQ6KEDJmvrl18IwgryzI4a-W_A,13740 +torch/distributed/tensor/experimental/_func_map.py,sha256=fDjc4ZTho7dUyfZh6KLls_TsnJRb-8EdxQiCnAQO6ZQ,12422 +torch/distributed/tensor/experimental/_register_sharding.py,sha256=9R8PjVMEesw-JpIuGcFruwR3gh5T9BxQHkOKjVvWo3U,5636 +torch/distributed/tensor/experimental/_tp_transform.py,sha256=rtodmb-7vFY1XuNr4WRjVYiRLWsoWyTWoYbvd-qxEeE,21142 +torch/distributed/tensor/parallel/__init__.py,sha256=_rDiCQ0mhllWr5HSDkOV47G4Z-WAZ3L1PCyzLhjgXeU,643 +torch/distributed/tensor/parallel/__pycache__/__init__.cpython-311.pyc,, +torch/distributed/tensor/parallel/__pycache__/_data_parallel_utils.cpython-311.pyc,, +torch/distributed/tensor/parallel/__pycache__/api.cpython-311.pyc,, +torch/distributed/tensor/parallel/__pycache__/ddp.cpython-311.pyc,, +torch/distributed/tensor/parallel/__pycache__/fsdp.cpython-311.pyc,, +torch/distributed/tensor/parallel/__pycache__/input_reshard.cpython-311.pyc,, +torch/distributed/tensor/parallel/__pycache__/loss.cpython-311.pyc,, +torch/distributed/tensor/parallel/__pycache__/style.cpython-311.pyc,, +torch/distributed/tensor/parallel/_data_parallel_utils.py,sha256=toFgFzlwhtjqPA6hOJjRFW4ZYjV77KZpmu2TssdBaPw,1498 +torch/distributed/tensor/parallel/api.py,sha256=h8TIf56coMFuKfOfgDAKxTfMOzmBZ3izgfEMwvCsoFE,6476 +torch/distributed/tensor/parallel/ddp.py,sha256=ES69uXY8nKFKp7je9RQ7n8tP40GwcUekLGY00qAmL3c,3756 +torch/distributed/tensor/parallel/fsdp.py,sha256=STxhc5IdKZAYZWVghX_YLwVxfmToNfh-3gSOi372wa8,14044 +torch/distributed/tensor/parallel/input_reshard.py,sha256=ZJTv6n0S0qNspaHvEGFbF_9HKuEIBL-xY0XwLNcL2dw,3813 +torch/distributed/tensor/parallel/loss.py,sha256=e2qsNa3QJGJ2kPyKk0AQqP6kzVkRfVVcgMgcpNB7MUw,18741 +torch/distributed/tensor/parallel/style.py,sha256=hhcKLwaetx7HaTlcZGe8X0bAj0l4jAP_gQ6xsxixIzQ,37639 +torch/distributed/tensor/placement_types.py,sha256=WAdyzNSCmqvc203nAH0v0WTtoB1ZtzezuPxhmt_8grY,61780 +torch/distributed/utils.py,sha256=bcr0u2E70WLteT4C-z56bTdPsv1cPr-0I68wz4Hp_Rc,13729 +torch/distributions/__init__.py,sha256=FdWgzsV7zpnl3LMsEv73LOOxNCSkciXh9JGuxpiCyDU,6111 +torch/distributions/__pycache__/__init__.cpython-311.pyc,, +torch/distributions/__pycache__/bernoulli.cpython-311.pyc,, +torch/distributions/__pycache__/beta.cpython-311.pyc,, +torch/distributions/__pycache__/binomial.cpython-311.pyc,, +torch/distributions/__pycache__/categorical.cpython-311.pyc,, +torch/distributions/__pycache__/cauchy.cpython-311.pyc,, +torch/distributions/__pycache__/chi2.cpython-311.pyc,, +torch/distributions/__pycache__/constraint_registry.cpython-311.pyc,, +torch/distributions/__pycache__/constraints.cpython-311.pyc,, +torch/distributions/__pycache__/continuous_bernoulli.cpython-311.pyc,, +torch/distributions/__pycache__/dirichlet.cpython-311.pyc,, +torch/distributions/__pycache__/distribution.cpython-311.pyc,, +torch/distributions/__pycache__/exp_family.cpython-311.pyc,, +torch/distributions/__pycache__/exponential.cpython-311.pyc,, +torch/distributions/__pycache__/fishersnedecor.cpython-311.pyc,, +torch/distributions/__pycache__/gamma.cpython-311.pyc,, +torch/distributions/__pycache__/generalized_pareto.cpython-311.pyc,, +torch/distributions/__pycache__/geometric.cpython-311.pyc,, +torch/distributions/__pycache__/gumbel.cpython-311.pyc,, +torch/distributions/__pycache__/half_cauchy.cpython-311.pyc,, +torch/distributions/__pycache__/half_normal.cpython-311.pyc,, +torch/distributions/__pycache__/independent.cpython-311.pyc,, +torch/distributions/__pycache__/inverse_gamma.cpython-311.pyc,, +torch/distributions/__pycache__/kl.cpython-311.pyc,, +torch/distributions/__pycache__/kumaraswamy.cpython-311.pyc,, +torch/distributions/__pycache__/laplace.cpython-311.pyc,, +torch/distributions/__pycache__/lkj_cholesky.cpython-311.pyc,, +torch/distributions/__pycache__/log_normal.cpython-311.pyc,, +torch/distributions/__pycache__/logistic_normal.cpython-311.pyc,, +torch/distributions/__pycache__/lowrank_multivariate_normal.cpython-311.pyc,, +torch/distributions/__pycache__/mixture_same_family.cpython-311.pyc,, +torch/distributions/__pycache__/multinomial.cpython-311.pyc,, +torch/distributions/__pycache__/multivariate_normal.cpython-311.pyc,, +torch/distributions/__pycache__/negative_binomial.cpython-311.pyc,, +torch/distributions/__pycache__/normal.cpython-311.pyc,, +torch/distributions/__pycache__/one_hot_categorical.cpython-311.pyc,, +torch/distributions/__pycache__/pareto.cpython-311.pyc,, +torch/distributions/__pycache__/poisson.cpython-311.pyc,, +torch/distributions/__pycache__/relaxed_bernoulli.cpython-311.pyc,, +torch/distributions/__pycache__/relaxed_categorical.cpython-311.pyc,, +torch/distributions/__pycache__/studentT.cpython-311.pyc,, +torch/distributions/__pycache__/transformed_distribution.cpython-311.pyc,, +torch/distributions/__pycache__/transforms.cpython-311.pyc,, +torch/distributions/__pycache__/uniform.cpython-311.pyc,, +torch/distributions/__pycache__/utils.cpython-311.pyc,, +torch/distributions/__pycache__/von_mises.cpython-311.pyc,, +torch/distributions/__pycache__/weibull.cpython-311.pyc,, +torch/distributions/__pycache__/wishart.cpython-311.pyc,, +torch/distributions/bernoulli.py,sha256=yU1Sf9xML4FNaN1YnNYhjKPFXQyM-2bT0w6ni1C-bEc,4762 +torch/distributions/beta.py,sha256=X7bUYY6OSy-SxJNWCXRA3A1mWs0Hn3gfGuxkhC-PhXU,4000 +torch/distributions/binomial.py,sha256=cXO378OmHHclqL_YKnBfpjH9dzCO279RFk7iiXJJ6SQ,6481 +torch/distributions/categorical.py,sha256=eU-zgx7Yp3cyWp00lNMzfr9V5Y_cFKQXLXKM3BCwvbQ,6277 +torch/distributions/cauchy.py,sha256=ZubvZlaBqfin-Yg2Qlq_R4VA4jcyEg9gLLzMm3Lsox8,3159 +torch/distributions/chi2.py,sha256=BP_QvY2zY7xvDx-M_hMmmB_Ral0eUyYd-Ak8B9W7AqI,1109 +torch/distributions/constraint_registry.py,sha256=Z49QrxE5eJqi7_84YM73khNXMNVGhM1jqb-ovWBKT-A,10306 +torch/distributions/constraints.py,sha256=RvzbDaVIrAehxkxk61Z4BmOfPi77CxBGpW66pTxccNs,22767 +torch/distributions/continuous_bernoulli.py,sha256=m-gMA7LVbPhqFaZNpt91opQh-VwpBX2BbdE7a5g1Ffg,9298 +torch/distributions/dirichlet.py,sha256=swXYGrzZlnmYktGw0W6Q3Tx3AATbvU5La0HOzXFHO7k,4576 +torch/distributions/distribution.py,sha256=qnxc2TqPpoVQOp5dxClje01wK3TNVi7M0-3iBsEtge8,12695 +torch/distributions/exp_family.py,sha256=qr4IKnvdwg0_6NWulD8TrtaCIRBD5lr6x4KJOuhEmXE,2454 +torch/distributions/exponential.py,sha256=Gggg_b0qOTBaYL1sFMrJ8PeQeNxGZI7NMTlEmKefAMQ,2725 +torch/distributions/fishersnedecor.py,sha256=Rv_OyjkelKUrjdtAuVk8eMRG_cy8qiKGjXNgEENarA0,3665 +torch/distributions/gamma.py,sha256=67kn1C2YRwybKAyRt6ayIcQqYrGRavmJQqZCINlAoiE,3932 +torch/distributions/generalized_pareto.py,sha256=wUgZyItbYV9m3HKBNdPzH7QVf9_0cJgr528XWZLKNrY,5831 +torch/distributions/geometric.py,sha256=RBngoQtIAckbYTSn73Id7edOLTGhdANttBsrt7YkKTI,5221 +torch/distributions/gumbel.py,sha256=62tPcwq8-w9HzSsTcCh127OGDsaPWi7NHKBBXtas_ko,3002 +torch/distributions/half_cauchy.py,sha256=Rk0IdrzwWDdh2nBVZbbxQNN4rhdiXtXSOl9qCCv6q1w,2638 +torch/distributions/half_normal.py,sha256=e9xjQP1zD7oynxyJNLVa0zk1AGrtbgQgxAAWgbrKOuM,2403 +torch/distributions/independent.py,sha256=UWRk4sveW6xR64vbrNUINOiMnCWI2oSmrcSGomExnz4,5052 +torch/distributions/inverse_gamma.py,sha256=2pRcikm37uzzG8VGm0yPbDZSdWYsEPUnpLSMWwZ84-A,2771 +torch/distributions/kl.py,sha256=_mJjMlKkxwlz-snAr9UKpDQgmuMa8JcjJdNPwLJxPn4,31818 +torch/distributions/kumaraswamy.py,sha256=AhGhMxIrpq0-RyIc09A9k0YQIPwL7A9eLMYcYTxFFms,3685 +torch/distributions/laplace.py,sha256=WqwZxvW8Ur5exRGF7iu2fj_CYIgO_Ct4Vra8UH5vP7w,3490 +torch/distributions/lkj_cholesky.py,sha256=ghOGpnV_zOYgqKMAIzJSL7OJEu_2n3jrXITUDPTj6M4,6550 +torch/distributions/log_normal.py,sha256=q2OmSbopn3A8xDlSjLBignD_QFDv7eTW5Ov0mQU9r28,2224 +torch/distributions/logistic_normal.py,sha256=m7cwrUWy-EYlXB1MhpAVEQlS2IZmp4m_k-yObEsU83Q,2240 +torch/distributions/lowrank_multivariate_normal.py,sha256=qnWA_8pcNxBTVl1nocJ2h9y82mc7APDtmtSsKwKpPIU,10178 +torch/distributions/mixture_same_family.py,sha256=bCd9ELluDLQ5jKMX53CJWVb6BQN9LDrg9Lvdda5xu_A,8733 +torch/distributions/multinomial.py,sha256=hK7Kpynlr5Uk3hP2cbsoDZSBmcTE2fnpY9JCTUjcxZ4,5723 +torch/distributions/multivariate_normal.py,sha256=Ediy83Dtof22tsbhEVcSVLkbLWZVMwigfRXEb9k7QR0,11319 +torch/distributions/negative_binomial.py,sha256=KFFBDY-EXa8ylxEX2FQFV6yP-4MbjW4zMNtJG5_-6NU,5171 +torch/distributions/normal.py,sha256=iP5y20oT_yDAPcDAPiITu4lnYf2TNtkKEwPO4oWAEoI,3890 +torch/distributions/one_hot_categorical.py,sha256=-PcTluwbf9UKI6m2C7OlEI4jVEIS9_uV96yjUvU6lf4,5037 +torch/distributions/pareto.py,sha256=7XmKjKbqJEOJ60IB3VoJJnvD5bOlCkwUx0yhZyc1Fqk,2522 +torch/distributions/poisson.py,sha256=ZYOXnjAC_4mQZdd3u61NDpeEf6aAS7egRa6Sc8A1vU8,2477 +torch/distributions/relaxed_bernoulli.py,sha256=Hf6XfCvXqLP3qOLnSwXOItiahS754sEvj7hjwTCMsVE,6121 +torch/distributions/relaxed_categorical.py,sha256=XhE9kz80C5X4Rjny64uPqfSS7ubWTLJm-4G_uA8M8yA,5752 +torch/distributions/studentT.py,sha256=4GT8RrqckofZWFp80AMnzmZvBLKLslH1n0XdSJN1fMM,4131 +torch/distributions/transformed_distribution.py,sha256=X3TnplWYfr3-xJN1gdz91wFGZQpGvzsTjGFCEoTvSgc,9021 +torch/distributions/transforms.py,sha256=6t7TtmRfeisxCZ819dUCmvL3hLwZgnCsKD6a1FS_-nI,46084 +torch/distributions/uniform.py,sha256=Fb75o9UR1cfSb8UP04ah6OXHppJnsLOahVkJDIem2Yw,3348 +torch/distributions/utils.py,sha256=9EeEGgl3z6xnu4D1_D-EgvaAMUt9yPeJ0SEjy6JD260,7986 +torch/distributions/von_mises.py,sha256=jgwiV2-J3BzHNmgscm6XODymFuPX4A4QfpHCh8mQucQ,6507 +torch/distributions/weibull.py,sha256=3IMQkEvqGZ1cq3Z4pqixK6_7QKnDO51UQOsTXlLNA9o,3417 +torch/distributions/wishart.py,sha256=mvcYtuDosgkyCR2CqCWdiIR2HdIs3LscED3-x_Egvg8,14004 +torch/export/__init__.py,sha256=WmOCeZ_lXsOoZcc6cGNI3M9uu4HhG8A6SFQg_tZXxqo,19089 +torch/export/__pycache__/__init__.cpython-311.pyc,, +torch/export/__pycache__/_draft_export.cpython-311.pyc,, +torch/export/__pycache__/_leakage_detection_utils.cpython-311.pyc,, +torch/export/__pycache__/_patches.cpython-311.pyc,, +torch/export/__pycache__/_remove_auto_functionalized_pass.cpython-311.pyc,, +torch/export/__pycache__/_remove_effect_tokens_pass.cpython-311.pyc,, +torch/export/__pycache__/_safeguard.cpython-311.pyc,, +torch/export/__pycache__/_state_dict_utils.cpython-311.pyc,, +torch/export/__pycache__/_swap.cpython-311.pyc,, +torch/export/__pycache__/_trace.cpython-311.pyc,, +torch/export/__pycache__/_tree_utils.cpython-311.pyc,, +torch/export/__pycache__/_unlift.cpython-311.pyc,, +torch/export/__pycache__/_wrapper_utils.cpython-311.pyc,, +torch/export/__pycache__/custom_obj.cpython-311.pyc,, +torch/export/__pycache__/custom_ops.cpython-311.pyc,, +torch/export/__pycache__/decomp_utils.cpython-311.pyc,, +torch/export/__pycache__/dynamic_shapes.cpython-311.pyc,, +torch/export/__pycache__/exported_program.cpython-311.pyc,, +torch/export/__pycache__/graph_signature.cpython-311.pyc,, +torch/export/__pycache__/unflatten.cpython-311.pyc,, +torch/export/_draft_export.py,sha256=e0kipj3WGxPkoxmDfc8aVyUqT2oN8E7dA7nOOoyxHF8,20706 +torch/export/_leakage_detection_utils.py,sha256=cFO_EtruWPRAksV5lS_Je9_FSREizRK6opqkHtEjYfc,3564 +torch/export/_patches.py,sha256=_NKRIISeKTjHCEhL5uD-B5ekQJqb3Mhtb6_bD0fPQfs,10774 +torch/export/_remove_auto_functionalized_pass.py,sha256=tqaXBjtGuXcsmaq3quv444K-79sIejf_cYecxqqp410,2111 +torch/export/_remove_effect_tokens_pass.py,sha256=qtodS8DssfsXbSt8F3SBoWLXmdtpWjAf8tKYiPWl1sY,9195 +torch/export/_safeguard.py,sha256=48fjMGTWwJ26j0B6q4jZG6mOcsIO1SXDbOrgflDESuk,2098 +torch/export/_state_dict_utils.py,sha256=iYYPNWxP2lR13pFWelSIJiNt2PSB3B5CTvvnfOBgkYw,7601 +torch/export/_swap.py,sha256=1s-_RkvEwtUfh99b2H0Tai0NTQxYMrjsHT4x8DNEPm0,19099 +torch/export/_trace.py,sha256=fuln6wFjs9jcw2kgyZlCk03ZEj0IXp6033pySmqAqrE,103513 +torch/export/_tree_utils.py,sha256=PFHm-v6FAcxMb5neZeiPlKH_hjW1OW39Q8S_QwmbuHc,2563 +torch/export/_unlift.py,sha256=slBUeYRcopHwkh4sOqBYq6uFwkzp6EA2MUpEztejtAo,33800 +torch/export/_wrapper_utils.py,sha256=pAHvH2i0I5mn42Cpl4oyTBQzJz0rZjBi2siRQr2khOo,271 +torch/export/custom_obj.py,sha256=H6j0qawn-qiMlmafZDdjAuOOQY7YvQ7pbhiFW71hOMY,296 +torch/export/custom_ops.py,sha256=oaS0ITKDAS05pOsGXJ5o7BefsqWSL0gDYN6MNY-vbMc,2077 +torch/export/decomp_utils.py,sha256=3WGV86fP5QSFIe31u9jyG63N-mhnsLxS5V2mtqRBK5c,5753 +torch/export/dynamic_shapes.py,sha256=mKIt4ibaWzehIhyKTvxf-RyyIiy83OgB8nrnmm29etA,55882 +torch/export/experimental/__init__.py,sha256=XkiG6Gp0dH90QMdwgHGxE_bI7X7PQYiiKQCGS92be4A,17890 +torch/export/experimental/__pycache__/__init__.cpython-311.pyc,, +torch/export/experimental/__pycache__/_utils.cpython-311.pyc,, +torch/export/experimental/_utils.py,sha256=A17QWFUiisPCAWnuD7VGS2b8CSkcvbxwUa0oRPt0lOo,8880 +torch/export/exported_program.py,sha256=8_OaRBkgVMX8WaQQL4nFvL-wRJuwpgRCMC8epiJUTF8,70176 +torch/export/graph_signature.py,sha256=4b4l6Alm0VusSBuaBtxmCVLediCwveFKvip88zV50IQ,27547 +torch/export/passes/__init__.py,sha256=6vyfrZbM2pi3XGyRYPu-J9p9tknELWJV4JfkJs1dqP8,3337 +torch/export/passes/__pycache__/__init__.cpython-311.pyc,, +torch/export/pt2_archive/__init__.py,sha256=vYIe2lq0nWwY77PVEsuIo_0fEWuAeX5E95FhGtXmwZ8,144 +torch/export/pt2_archive/__pycache__/__init__.cpython-311.pyc,, +torch/export/pt2_archive/__pycache__/_package.cpython-311.pyc,, +torch/export/pt2_archive/__pycache__/_package_weights.cpython-311.pyc,, +torch/export/pt2_archive/__pycache__/constants.cpython-311.pyc,, +torch/export/pt2_archive/_package.py,sha256=swalZPPTflPrXjECZxTRuVu1MmYZ3PGldtLRvaNusps,43416 +torch/export/pt2_archive/_package_weights.py,sha256=UdaUHBaCJKLOuWkDuZc5wgVy1-OORZ-tHtkCa8knZFE,8135 +torch/export/pt2_archive/constants.py,sha256=I03jOUF2310XCUciV5QRi-QW3XbcvgUFWBuMWo99cMI,1765 +torch/export/unflatten.py,sha256=LI6zJM6ypsgup677ZNg4pfzeaehJUggrBA6gde4iAW0,75875 +torch/fft/__init__.py,sha256=WqJ1Z1KMnbxX-6KdwopMcr7m-j6R9E0wd-cFlgf9VQ8,55337 +torch/fft/__pycache__/__init__.cpython-311.pyc,, +torch/func/__init__.py,sha256=sUjka9l7rIWURFlItERpQgoeiNfWjMi083ISlouT1cg,656 +torch/func/__pycache__/__init__.cpython-311.pyc,, +torch/func/__pycache__/_random.cpython-311.pyc,, +torch/func/_random.py,sha256=yflUP74RHLvaMdJEgfMFgwwNAWV100nSlstTxYPboiU,9979 +torch/functional.py,sha256=wCYHjWOR2aRcww83f6x9N14G_xS2FZZohHcEe69BLB8,88759 +torch/futures/__init__.py,sha256=FRibgVxq5rx2VBAycXQhBrV7eNdjHQkbDdnF2zkYfiM,14480 +torch/futures/__pycache__/__init__.cpython-311.pyc,, +torch/fx/__init__.py,sha256=u-GEqNYTjXXKCezS9wIYxqfRYBM8EWUbdYpaTqUu6eI,4162 +torch/fx/__pycache__/__init__.cpython-311.pyc,, +torch/fx/__pycache__/_compatibility.cpython-311.pyc,, +torch/fx/__pycache__/_graph_pickler.cpython-311.pyc,, +torch/fx/__pycache__/_lazy_graph_module.cpython-311.pyc,, +torch/fx/__pycache__/_pytree.cpython-311.pyc,, +torch/fx/__pycache__/_symbolic_trace.cpython-311.pyc,, +torch/fx/__pycache__/_utils.cpython-311.pyc,, +torch/fx/__pycache__/annotate.cpython-311.pyc,, +torch/fx/__pycache__/config.cpython-311.pyc,, +torch/fx/__pycache__/graph.cpython-311.pyc,, +torch/fx/__pycache__/graph_module.cpython-311.pyc,, +torch/fx/__pycache__/immutable_collections.cpython-311.pyc,, +torch/fx/__pycache__/interpreter.cpython-311.pyc,, +torch/fx/__pycache__/node.cpython-311.pyc,, +torch/fx/__pycache__/operator_schemas.cpython-311.pyc,, +torch/fx/__pycache__/proxy.cpython-311.pyc,, +torch/fx/__pycache__/subgraph_rewriter.cpython-311.pyc,, +torch/fx/__pycache__/tensor_type.cpython-311.pyc,, +torch/fx/__pycache__/traceback.cpython-311.pyc,, +torch/fx/_compatibility.py,sha256=R37yvvOmOJ5KVkKkJm4RsVzGbhAKyoMDFba2KRpcQ-o,1110 +torch/fx/_graph_pickler.py,sha256=OV5nnm0o90x6ZPC23fCo0ozLEucRKKsQ5PHJaMlZRX8,34801 +torch/fx/_lazy_graph_module.py,sha256=F2zYNnT1w-l5gaVq9qLRuWpYRmTToR-zNR4ai_TzpzE,7358 +torch/fx/_pytree.py,sha256=yJdeitYr930buUWLRIZuTCitjhaDRskJlzV05YDcx50,3762 +torch/fx/_symbolic_trace.py,sha256=6huoFQrGAtZOK-G7yw4zvRMky_9CDJdOJ1imCSovhoo,54990 +torch/fx/_utils.py,sha256=Ep7Ebir2dP7NhowZva1ci5sE1fdAxh5tPLbteJeZNvY,1883 +torch/fx/annotate.py,sha256=Uek_AOziex8JDoBdvg2UMZcmwBglDRx6Xg8cEAwhX9I,1296 +torch/fx/config.py,sha256=L7Vy7NuLuhWYjWj8BVjra-uHIKdVCgOuTwyh3n6_fdI,609 +torch/fx/experimental/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/fx/experimental/__pycache__/__init__.cpython-311.pyc,, +torch/fx/experimental/__pycache__/_backward_state.cpython-311.pyc,, +torch/fx/experimental/__pycache__/_config.cpython-311.pyc,, +torch/fx/experimental/__pycache__/_constant_symnode.cpython-311.pyc,, +torch/fx/experimental/__pycache__/_dynamism.cpython-311.pyc,, +torch/fx/experimental/__pycache__/_size_hinting.cpython-311.pyc,, +torch/fx/experimental/__pycache__/accelerator_partitioner.cpython-311.pyc,, +torch/fx/experimental/__pycache__/const_fold.cpython-311.pyc,, +torch/fx/experimental/__pycache__/debug.cpython-311.pyc,, +torch/fx/experimental/__pycache__/graph_gradual_typechecker.cpython-311.pyc,, +torch/fx/experimental/__pycache__/merge_matmul.cpython-311.pyc,, +torch/fx/experimental/__pycache__/meta_tracer.cpython-311.pyc,, +torch/fx/experimental/__pycache__/normalize.cpython-311.pyc,, +torch/fx/experimental/__pycache__/optimization.cpython-311.pyc,, +torch/fx/experimental/__pycache__/partitioner_utils.cpython-311.pyc,, +torch/fx/experimental/__pycache__/proxy_tensor.cpython-311.pyc,, +torch/fx/experimental/__pycache__/recording.cpython-311.pyc,, +torch/fx/experimental/__pycache__/refinement_types.cpython-311.pyc,, +torch/fx/experimental/__pycache__/rewriter.cpython-311.pyc,, +torch/fx/experimental/__pycache__/schema_type_annotation.cpython-311.pyc,, +torch/fx/experimental/__pycache__/sym_node.cpython-311.pyc,, +torch/fx/experimental/__pycache__/symbolic_shapes.cpython-311.pyc,, +torch/fx/experimental/__pycache__/unify_refinements.cpython-311.pyc,, +torch/fx/experimental/__pycache__/validator.cpython-311.pyc,, +torch/fx/experimental/_backward_state.py,sha256=TzC9Uin0ccyk7oG5z7HQPhRP6I0_6-HC28DOXpzUZzE,967 +torch/fx/experimental/_config.py,sha256=s0KFJ2slOpigJzfvohivabnJmZFLIrRSao3Ge2vbgQw,6040 +torch/fx/experimental/_constant_symnode.py,sha256=yQhfLfIcIY0HKznOrhlwb7SN5HqVSqA_gTGkY5JW1UM,1751 +torch/fx/experimental/_dynamism.py,sha256=Yw_M7sAkQbHk35l95i2Rsdhg-NuVDcHCvmktxMtXIHk,4515 +torch/fx/experimental/_size_hinting.py,sha256=rDPx0faznyp4qyuidtjdhb7NIEgpILZJ0eJvH8wSvus,16337 +torch/fx/experimental/accelerator_partitioner.py,sha256=N3JKTaZh8c-pK1h1yTPBjQsPAzgXSKaE3ETFsxKq2DE,47953 +torch/fx/experimental/const_fold.py,sha256=e1xIHGwfk2d622kpYr4hEpXLEFobN6-vV2zphXoLthM,16035 +torch/fx/experimental/debug.py,sha256=i3xyFB3WsaE3k09YInW_WUMTPi9mpNNbfTbB-7jFmvs,811 +torch/fx/experimental/graph_gradual_typechecker.py,sha256=fn6Omc0KCpdHvQKH81Tpb0sJCOWO_nv2Dq3yQJiZSfk,35772 +torch/fx/experimental/merge_matmul.py,sha256=j9LGpyTAhxEfJciK2U_wcOhjYowzoueGsAzMA-iikGw,6096 +torch/fx/experimental/meta_tracer.py,sha256=UdQ3nIArYBNjvT4kOCHA7aUwSrUC10uxFsW5UdiaFKA,11138 +torch/fx/experimental/migrate_gradual_types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/fx/experimental/migrate_gradual_types/__pycache__/__init__.cpython-311.pyc,, +torch/fx/experimental/migrate_gradual_types/__pycache__/constraint.cpython-311.pyc,, +torch/fx/experimental/migrate_gradual_types/__pycache__/constraint_generator.cpython-311.pyc,, +torch/fx/experimental/migrate_gradual_types/__pycache__/constraint_transformation.cpython-311.pyc,, +torch/fx/experimental/migrate_gradual_types/__pycache__/operation.cpython-311.pyc,, +torch/fx/experimental/migrate_gradual_types/__pycache__/transform_to_z3.cpython-311.pyc,, +torch/fx/experimental/migrate_gradual_types/__pycache__/util.cpython-311.pyc,, +torch/fx/experimental/migrate_gradual_types/__pycache__/z3_types.cpython-311.pyc,, +torch/fx/experimental/migrate_gradual_types/constraint.py,sha256=Ayq_LWRTnFtjiiWS1TG63G0UTJ8D-s5R3P3QvR5wxZ4,20836 +torch/fx/experimental/migrate_gradual_types/constraint_generator.py,sha256=uOPBc9B27M479s32uV3Kmb32l-lrqkTI8heaDYoK7mc,62331 +torch/fx/experimental/migrate_gradual_types/constraint_transformation.py,sha256=WjUlxkoyqHgpWQDHBJZVhvoDI3tyULmv_OnHJ6DJ8R0,46141 +torch/fx/experimental/migrate_gradual_types/operation.py,sha256=v7haImk8KCWq9XBmzu2MWoApiGGQsQY4xF-VChtRBVI,287 +torch/fx/experimental/migrate_gradual_types/transform_to_z3.py,sha256=gv0a_tG2THM3H3H0tPSI1KTs2gljAyXvLXCw8ut8HUg,20113 +torch/fx/experimental/migrate_gradual_types/util.py,sha256=7FpQPVuVeocjt7ZC8UYSiCES-Qe-D2HQzYWSTvaR5lY,1485 +torch/fx/experimental/migrate_gradual_types/z3_types.py,sha256=9CzjT7bWhU2CUNwZrQcdI7PDY8haxTrzGBRw_V7X7dk,807 +torch/fx/experimental/normalize.py,sha256=JMVnUQiiyvmyXpQdItb-7sTtVkqKkAKfX1TMolUXRpY,5795 +torch/fx/experimental/optimization.py,sha256=IJ5z0GKvS8YsDdQrUFO_8p6C7FiBWpkwc69ODFm4ByY,18443 +torch/fx/experimental/partitioner_utils.py,sha256=OlitD91AGdurF5-P7hITygyWArX5vL9iL95iZlwkGXA,12295 +torch/fx/experimental/proxy_tensor.py,sha256=taSn4i_wm8oSx4ZIKWBU9dBcbUF73vCCfG38rqmvSiY,118570 +torch/fx/experimental/recording.py,sha256=dkWCY4HVyc2TsC1sVX7VoxSU4SaUwWS2TMgEBJFa4-o,21219 +torch/fx/experimental/refinement_types.py,sha256=888K8p43hadBWu9MPg4lrPeDIF8g9XYRnmI5nnwFYpw,451 +torch/fx/experimental/rewriter.py,sha256=1VezunMnlBoRWT5qRiILS-J4RXgLQCPBU2jX2luTAJQ,5687 +torch/fx/experimental/schema_type_annotation.py,sha256=rs5bSlVu4sNMDcNFXpVU2fyk5VS39GgGOuZLvxrIEx4,5802 +torch/fx/experimental/sym_node.py,sha256=JVsAEGOLvp2lij_rPCVFDfociNpRtgK0ihxDPArnV1s,71202 +torch/fx/experimental/symbolic_shapes.py,sha256=Kn-TNCaGGxk6NDPiDYjHSJi5_QT-LpyGEo9_gPIvbho,365640 +torch/fx/experimental/unification/__init__.py,sha256=zJTtn828T13Feto4TKixj88dtdoRz5_TjoseKssyzeo,196 +torch/fx/experimental/unification/__pycache__/__init__.cpython-311.pyc,, +torch/fx/experimental/unification/__pycache__/core.cpython-311.pyc,, +torch/fx/experimental/unification/__pycache__/dispatch.cpython-311.pyc,, +torch/fx/experimental/unification/__pycache__/match.cpython-311.pyc,, +torch/fx/experimental/unification/__pycache__/more.cpython-311.pyc,, +torch/fx/experimental/unification/__pycache__/unification_tools.cpython-311.pyc,, +torch/fx/experimental/unification/__pycache__/utils.cpython-311.pyc,, +torch/fx/experimental/unification/__pycache__/variable.cpython-311.pyc,, +torch/fx/experimental/unification/core.py,sha256=TsI4QAfsoffC1cjq1moVtbVobw-P8rJlDUQ0hiMAAfM,2780 +torch/fx/experimental/unification/dispatch.py,sha256=9oSoC5tHuRoDMwgjgI7NvGVo-aW9qRrgz6SBNEnx6Lc,207 +torch/fx/experimental/unification/match.py,sha256=nIPkwl-CJykPeZ9s97iMksw4l3OV2eOIBxVaIYBLD5s,3414 +torch/fx/experimental/unification/more.py,sha256=5JZ2WU4mbfG-a9WkuFzNNap28R5-aXVfCM5PxqbdPAc,3158 +torch/fx/experimental/unification/multipledispatch/__init__.py,sha256=xjEjlwV6TTwkgteOREoXUJwMTiNnpJN3YfBALC9eslU,139 +torch/fx/experimental/unification/multipledispatch/__pycache__/__init__.cpython-311.pyc,, +torch/fx/experimental/unification/multipledispatch/__pycache__/conflict.cpython-311.pyc,, +torch/fx/experimental/unification/multipledispatch/__pycache__/core.cpython-311.pyc,, +torch/fx/experimental/unification/multipledispatch/__pycache__/dispatcher.cpython-311.pyc,, +torch/fx/experimental/unification/multipledispatch/__pycache__/utils.cpython-311.pyc,, +torch/fx/experimental/unification/multipledispatch/__pycache__/variadic.cpython-311.pyc,, +torch/fx/experimental/unification/multipledispatch/conflict.py,sha256=mvp3SkUZ0fKpCuCATDiFZmB_1euN3RsfoLvya3jfrBg,4556 +torch/fx/experimental/unification/multipledispatch/core.py,sha256=FS6cUF9-0llkG63x7hUCeUDdXVcjDnN_kTA3ngfniT4,2859 +torch/fx/experimental/unification/multipledispatch/dispatcher.py,sha256=11tXE2QB0pJLEvv4o5K0mpPDpstMoyTc1YdwB0ZWsAw,14012 +torch/fx/experimental/unification/multipledispatch/utils.py,sha256=BHnpSEp0idrQU2H1V3SKorvS_yf5WoWlZzD1C2laz7U,3958 +torch/fx/experimental/unification/multipledispatch/variadic.py,sha256=irgdEYhgS2XLxgdZZLPrApQPiB7c2wh9jZt4J_yu4Xs,2962 +torch/fx/experimental/unification/unification_tools.py,sha256=uz1BytKNE5rzW327q9PWOZUhAeybmBOFPDGwRy-OOeo,10567 +torch/fx/experimental/unification/utils.py,sha256=WiCStj6-1r0Wpnh7wsEeg2163W47nBJwXa6qDPuk-ow,3129 +torch/fx/experimental/unification/variable.py,sha256=mwytnm5NDShbcqIc6Jw3ARu5qCVPErP0WmV1HYw_exw,2057 +torch/fx/experimental/unify_refinements.py,sha256=60MsjQaDJfFvjcb4z4pchIllfuHcS5Mt3BPpes5oP6Y,3130 +torch/fx/experimental/validator.py,sha256=Knxbn2W2bzflJwWa20drEl641hUCIzxm-_Ps0wcUjTg,35328 +torch/fx/graph.py,sha256=jaHeKmUg7LUlyOFOIPM4yfFXB8LIvE9MQlddZJx0Lzk,93020 +torch/fx/graph_module.py,sha256=9JrwY-boft8D1w6CbEbApO2sCZWp8kxhNn8YRcXfh6w,47314 +torch/fx/immutable_collections.py,sha256=9OeeV5ZPLcswvuNEo7xEepwdUJsW0JYdIwaNNYCOKG4,3269 +torch/fx/interpreter.py,sha256=KJWVqlLkFFpRkZtJAiyegE1WJlVZ6LTuW2siNecQ_iU,26485 +torch/fx/node.py,sha256=kDMiTQirpFSyPpCFgQugAwfEj3z9fiOQFE45w2ByPLE,35645 +torch/fx/operator_schemas.py,sha256=VSfSKUmgAdINLiy5aXWqg-gsDeJeqDte9VY-B7ELP0c,24005 +torch/fx/passes/__init__.py,sha256=qXzO3_W60MDLQ1l4Rymt3ZwAxtbmkQ7Plsx9kQjWIm8,263 +torch/fx/passes/__pycache__/__init__.cpython-311.pyc,, +torch/fx/passes/__pycache__/_tensorify_python_scalars.cpython-311.pyc,, +torch/fx/passes/__pycache__/annotate_getitem_nodes.cpython-311.pyc,, +torch/fx/passes/__pycache__/fake_tensor_prop.cpython-311.pyc,, +torch/fx/passes/__pycache__/graph_drawer.cpython-311.pyc,, +torch/fx/passes/__pycache__/graph_manipulation.cpython-311.pyc,, +torch/fx/passes/__pycache__/graph_transform_observer.cpython-311.pyc,, +torch/fx/passes/__pycache__/net_min_base.cpython-311.pyc,, +torch/fx/passes/__pycache__/operator_support.cpython-311.pyc,, +torch/fx/passes/__pycache__/param_fetch.cpython-311.pyc,, +torch/fx/passes/__pycache__/pass_manager.cpython-311.pyc,, +torch/fx/passes/__pycache__/regional_inductor.cpython-311.pyc,, +torch/fx/passes/__pycache__/regional_inductor_invoke_subgraph.cpython-311.pyc,, +torch/fx/passes/__pycache__/reinplace.cpython-311.pyc,, +torch/fx/passes/__pycache__/runtime_assert.cpython-311.pyc,, +torch/fx/passes/__pycache__/shape_prop.cpython-311.pyc,, +torch/fx/passes/__pycache__/split_module.cpython-311.pyc,, +torch/fx/passes/__pycache__/split_utils.cpython-311.pyc,, +torch/fx/passes/__pycache__/splitter_base.cpython-311.pyc,, +torch/fx/passes/__pycache__/tools_common.cpython-311.pyc,, +torch/fx/passes/_tensorify_python_scalars.py,sha256=XVt3XHW-z_uBSsWcq5jJjoD88A2qMfLk_EKGvE-OTac,17902 +torch/fx/passes/annotate_getitem_nodes.py,sha256=8uE8EHJnlxC_BJmSTOl_r-ixz-8GGtJKc_xipmVQYt8,3561 +torch/fx/passes/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/fx/passes/backends/__pycache__/__init__.cpython-311.pyc,, +torch/fx/passes/backends/__pycache__/cudagraphs.cpython-311.pyc,, +torch/fx/passes/backends/cudagraphs.py,sha256=iRy6rWuLOPITB_-gkgJmK8eGYluYIz7ZGjYaO4x41fc,2079 +torch/fx/passes/dialect/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/fx/passes/dialect/__pycache__/__init__.cpython-311.pyc,, +torch/fx/passes/dialect/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/fx/passes/dialect/common/__pycache__/__init__.cpython-311.pyc,, +torch/fx/passes/dialect/common/__pycache__/cse_pass.cpython-311.pyc,, +torch/fx/passes/dialect/common/cse_pass.py,sha256=CBRTo0Hw3MOIzh65C-f-l-eJ3nWt4IBgUHPg_klizyA,5248 +torch/fx/passes/fake_tensor_prop.py,sha256=U2hOUtbxk513ixyAdhqRVSPi4-nWiWcDXL_q2Erhj9Q,4463 +torch/fx/passes/graph_drawer.py,sha256=39Ldfv-6jqoOZi4A2cbxg1S8OWWGy6BR78fHWSu6owI,19463 +torch/fx/passes/graph_manipulation.py,sha256=GvMbuMQS1VbGOAW5evE9Ykv39nnxMwb1uwKlsPMCSxk,4114 +torch/fx/passes/graph_transform_observer.py,sha256=HpFPWK8G_AtuF052epvJ8MpyI1OCzDtwmlnciAE8fmA,8536 +torch/fx/passes/infra/__init__.py,sha256=UuBORluunUu4B8DKb0OlqkNIm71XUW_ZD_utIvqnBLs,27 +torch/fx/passes/infra/__pycache__/__init__.cpython-311.pyc,, +torch/fx/passes/infra/__pycache__/partitioner.cpython-311.pyc,, +torch/fx/passes/infra/__pycache__/pass_base.cpython-311.pyc,, +torch/fx/passes/infra/__pycache__/pass_manager.cpython-311.pyc,, +torch/fx/passes/infra/partitioner.py,sha256=wIS3UHWHTUX1kfOqi0NAupe2VVTOMv4RAu0D4rcQ23U,18066 +torch/fx/passes/infra/pass_base.py,sha256=m4Ml6B2wFnMn3WXHE0ayJ3W-Bn9me1x0wvSUWbaqyRA,2507 +torch/fx/passes/infra/pass_manager.py,sha256=kav0ykYHWq71GiTAg3r_HngsboEr-29K8tl3DTNlru8,10393 +torch/fx/passes/net_min_base.py,sha256=rDCEFxDCXSNcU5NrdCw9bfxN8aVzHbspCGRZ5obCOzM,36975 +torch/fx/passes/operator_support.py,sha256=zczkPh0eYCUwov4Sn1EkB6ABQwBK703Gjj_WbKf__tE,7702 +torch/fx/passes/param_fetch.py,sha256=6gOQFJ-MRJF6g5sp8Typ9j6pBR9ibsVlJ50xjM2af4g,3741 +torch/fx/passes/pass_manager.py,sha256=NCA5OAY-5mW-lQWBjqfPQkB54pfet3WyRD17YGRSBVo,7112 +torch/fx/passes/regional_inductor.py,sha256=LIbuiUknLmbWUXfSvoZ6F9JmeKEOARp2UiTAjoZZz88,10605 +torch/fx/passes/regional_inductor_invoke_subgraph.py,sha256=v4gT1ax4NVAp195BrhBsW0x9Tn1Z2tFW5unJakxeFmw,6222 +torch/fx/passes/reinplace.py,sha256=irI-uQVXN6FJKSu3lImDtvUkigM88qtB3wIsksNpMwM,35628 +torch/fx/passes/runtime_assert.py,sha256=_A-AFI5qnhj5HA6S7gpF_UwHZIjbmK2mLvCo95wHOxU,31447 +torch/fx/passes/shape_prop.py,sha256=XS1gpmCthWNGYGnrr3p73qB7l56X3MXaFllNWp3IAZ4,8313 +torch/fx/passes/split_module.py,sha256=RwhUqX4LKhvsxMZmD94drZLd_D-mE8WlpPsTN8BTVQg,29029 +torch/fx/passes/split_utils.py,sha256=OJZEK0OZK0yJEKFQglyduiyylJNB7F7Ts0S-S_kEL9o,20210 +torch/fx/passes/splitter_base.py,sha256=hYyT-LBQD9LJsN_D-5wTZOgw5hCT6otBvPkEjAqB8tE,44592 +torch/fx/passes/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/fx/passes/tests/__pycache__/__init__.cpython-311.pyc,, +torch/fx/passes/tests/__pycache__/_test_split_utils.cpython-311.pyc,, +torch/fx/passes/tests/__pycache__/test_pass_manager.cpython-311.pyc,, +torch/fx/passes/tests/_test_split_utils.py,sha256=WybDpQFnUmPDHIjIIdZSMtuivIhyskR1nOpW4_fgozw,22497 +torch/fx/passes/tests/test_pass_manager.py,sha256=_KIwhlzOTY0XQb2WeaYYOFuBUKDtLFRqYeSxHVrS76E,1873 +torch/fx/passes/tools_common.py,sha256=DQ2__ux4f6AC5KzmDAIo2kysaFW2dgQ5e5PGPurCHtQ,14152 +torch/fx/passes/utils/__init__.py,sha256=6xOYtGu1w_nVvuaxvBoQkSRtxkiIkPh-MzuXjmNC1hI,74 +torch/fx/passes/utils/__pycache__/__init__.cpython-311.pyc,, +torch/fx/passes/utils/__pycache__/common.cpython-311.pyc,, +torch/fx/passes/utils/__pycache__/fuser_utils.cpython-311.pyc,, +torch/fx/passes/utils/__pycache__/matcher_utils.cpython-311.pyc,, +torch/fx/passes/utils/__pycache__/matcher_with_name_node_map_utils.cpython-311.pyc,, +torch/fx/passes/utils/__pycache__/source_matcher_utils.cpython-311.pyc,, +torch/fx/passes/utils/common.py,sha256=z7nJRQbMOvXqQ4_ndwHwLM4l70Q8EfHLeYSefE5sdvU,3185 +torch/fx/passes/utils/fuser_utils.py,sha256=yvh8SAFtU-Yv0fXZjT96d1ZqrQuD8urYewJi__XIi3c,11199 +torch/fx/passes/utils/matcher_utils.py,sha256=0vlo5_Ot3id2o0xfMxx7dCFWfPpBtd6TygG3w2AnfwU,17681 +torch/fx/passes/utils/matcher_with_name_node_map_utils.py,sha256=wtKkIKjnW3fduXdkIRNiIA4zZ1GZVTpSpEPcGGN3NIk,4358 +torch/fx/passes/utils/source_matcher_utils.py,sha256=uTDD1LsizcSe3FnyaYOlPaLAztc4u1K4RXEDa8tJR74,7312 +torch/fx/proxy.py,sha256=nvXNw2bSVDz938XTUvoQe1NSEA7HIV6HNDqMEtIQnCE,36137 +torch/fx/subgraph_rewriter.py,sha256=JJY756A_75NKdZMvShpcFW2zFJqtjxplDzBl1Oi76HY,16808 +torch/fx/tensor_type.py,sha256=vb3E5_qLGIm2sFQfu3EtsxpIRl3SSQ3Z7lQC7HBppZk,3458 +torch/fx/traceback.py,sha256=m_wZNmKb_jv4AMyjlKDLG8I530KwquBpJUyZFLsITYw,20486 +torch/hub.py,sha256=rsemIf1w8RKV0YMH0kYpPmPnpXjIB60elCUe75ZIXvo,33647 +torch/include/ATen/ATen.h,sha256=BHC8UJw-Kkgse6RoCnFPsJL1ZTodth1VYbFstbIiByc,1361 +torch/include/ATen/AccumulateType.h,sha256=kzgekl85-Pf2id9qB_Uo2y5QyXxMGNcamXG-yvueh0Y,6365 +torch/include/ATen/ArrayRef.h,sha256=ofa5-yWJikSN5a0VsjvX-G2qByUSKsCE7z2Hdd1zZjE,298 +torch/include/ATen/Backend.h,sha256=rAIfvXr2KgiCtq5uAiBapYC1r3SLtupFjrmbpeXPhC4,297 +torch/include/ATen/Backtrace.h,sha256=yKbvQ16ihAHBkGQGKh-6pjm6jK-6cp6tjKAhs-3pQHI,300 +torch/include/ATen/BlasBackend.h,sha256=dM74cin5ObOdOP67BUREoUocYhMV043FeI0vom10vu4,1371 +torch/include/ATen/CPUApplyUtils.h,sha256=HImZBT4CCuqV47EmefXlaFdeuoVFOBt8Ey0UQoeNu1g,10872 +torch/include/ATen/CPUFixedAllocator.h,sha256=-z7Tz9exkjw8w2Lq-yjCgOK23L5YbPW4usEjJ2QEPEg,1136 +torch/include/ATen/CPUFunctions.h,sha256=UbQ7FfyyuDj2oE7kHAhxaGD9LFUdleSeWwUHpH795fo,2208 +torch/include/ATen/CPUFunctions_inl.h,sha256=wNOp4CYqsHfnmMFuTWah3yHX6qnpu0-jTH5dvhQpTBE,27816 +torch/include/ATen/CPUGeneratorImpl.h,sha256=qogO5E0lj9VQz6QVdoaNKSoFFrGagDBJbXVpEnO80Rg,1781 +torch/include/ATen/CUDAFunctions.h,sha256=nwdEjF4wGGMImssj3hmzSOQ_kz4ZKSeT4WQ8UdiBj98,2209 +torch/include/ATen/CUDAFunctions_inl.h,sha256=TLfsai3knyVk4loKvnZypKYDvgrePA2Qj57qxKsUWjk,33868 +torch/include/ATen/CachedTensorUtils.h,sha256=Rfo1BCyQrhFdY2tO7o2beQD8LxU-7pyZWrdjtTGIacw,1261 +torch/include/ATen/CollapseDims.h,sha256=dWXH85U4p4jsam0cS6pw0m9xunZ34HDLbF-0NR9eCQk,2814 +torch/include/ATen/CompositeExplicitAutogradFunctions.h,sha256=n7GTKOgLj3NDa9ELmt5PBi2AsqMZP26HUPD-YpGEqHQ,2230 +torch/include/ATen/CompositeExplicitAutogradFunctions_inl.h,sha256=l_yanwyYWK0VlpUAXZGPF0CyYMVCPCdeZKFu0ZQMeDc,41518 +torch/include/ATen/CompositeExplicitAutogradNonFunctionalFunctions.h,sha256=5fa_cZ7Y3np6u7c94LzhMe5g1F_aPAcJVDvNxL1NZcY,2243 +torch/include/ATen/CompositeExplicitAutogradNonFunctionalFunctions_inl.h,sha256=YdYab88X8blUNj8L7fuOPqdk7pWinI4wMoA_xCpwmuc,26775 +torch/include/ATen/CompositeImplicitAutogradFunctions.h,sha256=wNw8oZ66wh3uuYpxU9X-e3Xd9umlWxbhOWKqja8oE2U,2230 +torch/include/ATen/CompositeImplicitAutogradFunctions_inl.h,sha256=zC7mIJFgGqz-5-t4nJJQq5J-ugNmJDYMZoJfBqhIk2Q,35601 +torch/include/ATen/CompositeImplicitAutogradNestedTensorFunctions.h,sha256=LtEbQKDO2Ez1IEVsjvy4GT2ZzDPOaWhFmIeHimLtIPs,2242 +torch/include/ATen/CompositeImplicitAutogradNestedTensorFunctions_inl.h,sha256=ViwELt6UAz5OKrc24yLg7-VTwdrqRge4iq7K6JseUfU,1380 +torch/include/ATen/Config.h,sha256=7gV7Z3O9A5pb1NOou6cG0GnfDIXyO5CUvuMvTqEaVqw,1055 +torch/include/ATen/Context.h,sha256=NcxvO7ZnY-PwnJo65A92E2axXOGJUZF0wz4CZWQkw7E,25579 +torch/include/ATen/DLConvertor.h,sha256=-LqU122QRzQjYP2f5PVJ86w55oxIKNpz9SGnnbPH51c,3168 +torch/include/ATen/DTensorState.h,sha256=5Tf_4vlPJcvhauK-lyQU9FI9nicxD_7DLDbA1nukmsE,1270 +torch/include/ATen/Device.h,sha256=vefXE-ivuf98uv1Px06EGn9MycHCV350yNT9g3JCxXY,296 +torch/include/ATen/DeviceAccelerator.h,sha256=5Z6wZLmAOnQybiXzifqxxkdn5DV32H349h2JT4ELXRM,4983 +torch/include/ATen/DeviceGuard.h,sha256=JMlpTXKWyXFaIIj_ZehQgfM5bP2EKdg4VnPbHAxy0JI,1419 +torch/include/ATen/DimVector.h,sha256=6Xv8E-rdaF4g-zRjm8aVO2AF41P61MpNjUbH-7OhL00,300 +torch/include/ATen/Dimname.h,sha256=KGwDTru2t_tk24ewGxmJexXVeYAOdQOkv23W1yXBE64,285 +torch/include/ATen/Dispatch.h,sha256=0cQd6O-2y6OwcdhzcnIBE_HYY_HVn7-ns21NuzkcUgY,39011 +torch/include/ATen/Dispatch_v2.h,sha256=spV91MM7IE6FwA1gQ8KsHRBs13SK8opA1Zj28BvaBk4,58876 +torch/include/ATen/DynamicLibrary.h,sha256=578X2i8u8535Av4VGp0XYwSPY-_rbvt7B0q0QaxTYeY,933 +torch/include/ATen/EmptyTensor.h,sha256=ZL1Pz5KThapI0aPLX5VW37HLtGP5ifznxv3seu736Wc,4946 +torch/include/ATen/ExpandBase.h,sha256=51GgMs8O36068o3xhE-2NjvOTV0KwVzyDbWOglc8GCI,1168 +torch/include/ATen/ExpandUtils.h,sha256=7eWtQgp1V6m7yauLzdXwY0LxBrbXxHvap8KYmFk8jAg,16935 +torch/include/ATen/Formatting.h,sha256=a7uH36sKyuNzq8kFdXO-214shUmRw8KmcnMt8VOTMJw,288 +torch/include/ATen/FuncTorchTLS.h,sha256=Fl4PmCDf7Sf6JM2ApHD5jbSEZBuG_ZCG_Buk_y2h8F0,2070 +torch/include/ATen/FunctionalStorageImpl.h,sha256=GD9QhDinZ0CRwSvD0U2bO-6UMOuXDPpOJfJmiF8cFdk,9905 +torch/include/ATen/FunctionalTensorWrapper.h,sha256=1sFB2PgE5pk9rqmKhmRuA-G_RcFeJ0strxwekBYq8Nc,18661 +torch/include/ATen/FunctionalizeFallbackKernel.h,sha256=LWHVmU55UcNZEyK4w1paUBkA1hqTkUSbGny0hoi_GMo,2082 +torch/include/ATen/Functions.h,sha256=Bwble7JPY07bs0qUboY0xUCEQ8UiCeX_kQXLGWq9kYQ,56234 +torch/include/ATen/Generator.h,sha256=HOTLCyhKpa4uAF4taTguJPTKvRhBXooFbVKKEomg6OM,300 +torch/include/ATen/InferSize.h,sha256=RTa90ICq20CJZ-pUshTdcGLtgWMeYEi1-HRnc7WQugo,4182 +torch/include/ATen/InitialTensorOptions.h,sha256=AjYaGyhq4NcQ3eyNnj6ctamEghynIVm1guG3VFczdOQ,693 +torch/include/ATen/Layout.h,sha256=tRw-433FrW3h68PD2DQO95UHaUt8yLMdMHiydQrCv20,296 +torch/include/ATen/LegacyBatchedFallback.h,sha256=wegTT0gYFlyoX8I7IuXa7H7o8nGHxZTjI7UadTUSd64,1228 +torch/include/ATen/LegacyBatchedTensorImpl.h,sha256=fS03y5jlojJCq3738MG4YhK2ocIfH6yTdv2Q92rxax8,5817 +torch/include/ATen/LegacyVmapMode.h,sha256=lnhuI05JjTfS7uL4feKP-iLZ5C0eLja6i3WysAYOO6U,1181 +torch/include/ATen/LegacyVmapTransforms.h,sha256=b2ZRmNr3IfHKM-mTVpjYF5ti5yyUKrLZNUh5dg-7G1E,8068 +torch/include/ATen/LinalgBackend.h,sha256=eBFKPJs-zcaW1GEVbojXthxShQ404cfTV6f5VqjEWmA,973 +torch/include/ATen/MapAllocator.h,sha256=0dB-x0W0HKVhxBcTy_O6qEkIfl-YWuF4M67yKH7rLlg,3942 +torch/include/ATen/MatrixRef.h,sha256=CSsbtMITAlDwQQ7nG9REtvsZsb1Ft4xcd3s08NXiQos,3260 +torch/include/ATen/MemoryOverlap.h,sha256=E06jBGvemBeQzG5f83ZyGbyUKUiwypNqLkhkBB3M_eQ,1541 +torch/include/ATen/MetaFunctions.h,sha256=F4QJuE1qvgTMD_pxybgCc3UQH3c7GqdjNB3BdRFvMsE,2209 +torch/include/ATen/MetaFunctions_inl.h,sha256=FN3AJWSeQ8td2LcXCEB-k1clqCSMfEo__c77-3gcxjo,16440 +torch/include/ATen/MethodOperators.h,sha256=o-x3zs_o4h1VQ5k8PFJzwHrj0lIBCjVKw-4qL55riHQ,16000 +torch/include/ATen/NamedTensor.h,sha256=pWHd3I9W1OQTcP7xqgD7y8M_xLuT8escT3VngDS3TGY,289 +torch/include/ATen/NamedTensorUtils.h,sha256=9Pa61OV7pxXtSasv9kKpzvjN-F0KSrhoH98s9EopgqE,7009 +torch/include/ATen/NativeFunctions.h,sha256=LWIAXQPecYfBcBsjLcSxaDVisA2gEq1Vg9fz4jmRkhQ,62162 +torch/include/ATen/NativeMetaFunctions.h,sha256=41q3_2hFOlBi9fxI4oVzhqtsBo0V_KVZe7nrpHeVbvE,58623 +torch/include/ATen/NestedTensorImpl.h,sha256=Ut705YrlQpqGLCseQFvHVIF2zK2p1-0x504sT4NM4YU,10514 +torch/include/ATen/NumericUtils.h,sha256=DFP-P8EXkAhpX3xIzZljpzG8BdNxYZYc17KMTlMcY9o,5391 +torch/include/ATen/OpMathType.h,sha256=DZeNTy6bHsuldLJLLlnqHd_5atCSYt3BXBw1m_ba1cw,1835 +torch/include/ATen/OpaqueTensorImpl.h,sha256=-DEfs1JdJ9WEs6rpfXGJLs6atOM24dUKf7JOGWl7gbU,7069 +torch/include/ATen/Operators.h,sha256=KfabKVPG5XPDljzFvQs_ZQhwyRB05nHrfZyGaA7jJM4,60181 +torch/include/ATen/PTThreadPool.h,sha256=B2QRG9BWowrxxpNvjj39vsVk3pFP54MkJJ4BAJR3mvQ,645 +torch/include/ATen/PadNd.h,sha256=UkJhEHwFKN-TZcN2i6XJEDprHoSSqUJo46diM8SttB4,380 +torch/include/ATen/Parallel-inl.h,sha256=vFqIxc3KSSdtx6Z_dkECPkgMy0AbMMhTvAd75nFvnZE,2547 +torch/include/ATen/Parallel.h,sha256=7tfhOczECJB8NB9Lc2kL5p1KVbQQKyMGksueVtBxvOk,5039 +torch/include/ATen/ParallelFuture.h,sha256=4vx_WX3OIIbFlQ4jkn44Kf3waTXNnEyd48iquBO5qVw,553 +torch/include/ATen/ParallelNative.h,sha256=p3C7kunTT9v2KvAOt6aWd1lh9p9VFPmHDBiPGxlhQvg,546 +torch/include/ATen/ParallelOpenMP.h,sha256=W6LXF3k0MoE21pu3Q7MlyI3D03-2dxHyU4c0HslE5ns,1537 +torch/include/ATen/PythonTorchFunctionTLS.h,sha256=wGyBA6K8qfWh_owJBAbdlcZSArbf0Ff9aVOlD6f25TY,1502 +torch/include/ATen/ROCmFABackend.h,sha256=1mY6byW5IpdUXVGZugzREWnh6QqX75B6OZfIeFReEDU,977 +torch/include/ATen/RedispatchFunctions.h,sha256=j55-OR8L9JVlihXi_IgR4kV-c03SvC7UKvB4FayID8w,2271610 +torch/include/ATen/RegistrationDeclarations.h,sha256=wgir-jUS9jh_nG7KopQZbTlF3q_5GdpN1FtaG_HKR2E,936287 +torch/include/ATen/SDPBackend.h,sha256=cmXomX1RjUAY9uCh2-bSn9FzRpMjFMvUF6bWJBIUczE,507 +torch/include/ATen/SavedTensorHooks.h,sha256=c3B9NplJ5PeOU3u3por0HtEbClY_tijozi0EwK1eyx8,2740 +torch/include/ATen/Scalar.h,sha256=LSNWNrn_jf_qZSVOFXeONdYs5wdSE0uRzKfNX78c_V8,298 +torch/include/ATen/ScalarOps.h,sha256=71v1_d2-kJqm1LD1IzlsFgAY4mufIgiryxmBo3-qaBQ,1849 +torch/include/ATen/ScalarType.h,sha256=SfIfa3E8pBOkFD19qgu43TLOGKptlPIOZrTa4NmD5Pc,383 +torch/include/ATen/SequenceNumber.h,sha256=3lZRqokrZ29LTAwEAFVUso6WrxBO_ZE3rTvvN2DKqy8,587 +torch/include/ATen/SmallVector.h,sha256=gNWDIANGgC7StyDTrqVTMbA2jQSV1AWiwVx397q8n8o,301 +torch/include/ATen/SparseCsrTensorImpl.h,sha256=utiY7n547k3fbK0jeN4kiQdzBCX2dhVUzS2pPEZp_NI,7421 +torch/include/ATen/SparseCsrTensorUtils.h,sha256=p7oJc8xJwel9HIi-t1TsydwyoYwKGoxTby8gkGGoxmM,18043 +torch/include/ATen/SparseTensorImpl.h,sha256=hwtP016bri4KpgnUyu5pueXUDh3DlOAYGUckKim9MC4,15673 +torch/include/ATen/Storage.h,sha256=X1c-p8qXYDFlMsVH5Kw_dgncGyQrrKuzyA0PaY9lY-o,297 +torch/include/ATen/StorageUtils.h,sha256=_VKiR9j8cAdZAHUyT5FA0C9E7HfTDzQxOCv41tMRDNk,1562 +torch/include/ATen/Tensor.h,sha256=C6FD9cacNwOuxJD4_JqjHg34qxaDUZMXWq2GZvm2Yqg,298 +torch/include/ATen/TensorAccessor.h,sha256=zASg1wYR2DpIcYfZnGqgEd9QG8RNWhzJT0mcE7D-WWA,305 +torch/include/ATen/TensorGeometry.h,sha256=cOYlRlEK5XQy5DryIrAAdrJ7uFg0nKnUMROreNDeWc4,4810 +torch/include/ATen/TensorIndexing.h,sha256=x0pJf2Z_cC3wxn00F3QjPGT8fXo7xCm2vCnlA3yPtKo,25356 +torch/include/ATen/TensorIterator.h,sha256=BqdFbEK1OOLkBCn_sZTprRt4ZzUJKBSp4kL9jUCHdxI,39240 +torch/include/ATen/TensorIteratorInternal.h,sha256=N-f8g2bYnUwKBFz_M4gaPKC-7u7SOGjz8Waa7QT3P8U,2176 +torch/include/ATen/TensorMeta.h,sha256=FvY4aUQbKUy3jLV8uOL5whccUfE337DbpxewhG3CEHU,5288 +torch/include/ATen/TensorNames.h,sha256=JXurFfj4LhYDhrpqS9qlPPci4bA-jaleQgAl8fx286A,2825 +torch/include/ATen/TensorOperators.h,sha256=rFW5uIPy2FvyDhV_Cv-SX4HluU7mkR-4sbt2kGF313g,2745 +torch/include/ATen/TensorOptions.h,sha256=58KP7XEfy87cJVZ8fXD1QPvhTMLTYtcV0DUiJSo5jgs,303 +torch/include/ATen/TensorSubclassLikeUtils.h,sha256=vYN0jOsm3jMh_yNKtB3GZzbnImJa-LAthHJbhRKlkVg,3484 +torch/include/ATen/TensorUtils.h,sha256=_-KPHNuzJz-5-HdisWWhK2zbk7CoPgSEQJpymCM0kms,6212 +torch/include/ATen/ThreadLocalPythonObjects.h,sha256=ucUPlRvWSUvfbXwa8qAyrkr1nwAfgqy9veUFsKvxVhg,861 +torch/include/ATen/ThreadLocalState.h,sha256=BapXkyAgHfntv0Dya1DIvjfwPHRO3DLYIHlWzTi8oM4,4608 +torch/include/ATen/TracerMode.h,sha256=zrQHJTz242lMURs7jQp5cIEMYIi-r0w0GL4LjJiqV7E,5763 +torch/include/ATen/TypeDefault.h,sha256=gItr5F3ooMk0KcBhYl07hHAelS1_Hn69maVJ871RNF8,697 +torch/include/ATen/Utils.h,sha256=bLoH6TfXKju5mLSMXCWSTGEPAppiheEEdly9jiVMgzw,3826 +torch/include/ATen/Version.h,sha256=gwJrgxcrcmw3WBLQ7zRzxhNoKmlF6_6nVDbaV2dYZV0,638 +torch/include/ATen/VmapGeneratedPlumbing.h,sha256=kqrn-vxR65jrXv843gLyzZ-lwknxNAv_EL6PLnm9upI,1784532 +torch/include/ATen/WrapDimUtils.h,sha256=ICeanLwAPsgdXpzErqbh3Fh8lE7str_veIpRSERuGwg,5109 +torch/include/ATen/WrapDimUtilsMulti.h,sha256=ktOVH3vp7JM5jKUy_bWisOamR-aomgs06AlRuxAg2IM,1329 +torch/include/ATen/accelerator/Graph.h,sha256=Vb1H2gPcEBbLcMVWdMbhGfIP4pqaynqwWxJICniosd0,2035 +torch/include/ATen/autocast_mode.h,sha256=ThHbFEK1oRrnocsfJ9-H-pshIciZeXHOnGmb-b5vK8M,41495 +torch/include/ATen/ceil_div.h,sha256=ijWlLD2OVoG2d0qgrxvh9wlxYiLthVaZfLssulHBvhM,751 +torch/include/ATen/code_template.h,sha256=Dx-x6o01aL6MmdiezcVb_Uc-qFcb2b2WOBZgcJwrC8c,7205 +torch/include/ATen/core/ATenGeneral.h,sha256=_O9V6rXClA-PYtHzn1XvolQJnfw-eIOk-HprG_O-On4,299 +torch/include/ATen/core/ATenOpList.h,sha256=bbA9vLBtbI6ExK7ZNoVXC_jIuNlASPvIZWBFEE-xU6k,500 +torch/include/ATen/core/ATen_fwd.h,sha256=yPzzTcmZAkRJGr9raXER0AURpGXjBMy8znRvjlYu3VQ,1278 +torch/include/ATen/core/ATen_pch.h,sha256=TuhCmPdxNxZkN97r2MbONRpWfezpI2y59auOAIjzfl4,5304 +torch/include/ATen/core/Array.h,sha256=kVpLnzc2-eUkkMLK4KglsvpF7a7dwDFi9VFh6YKMEWU,1388 +torch/include/ATen/core/Backtrace.h,sha256=y1M82xbaY2gwML--qDHL1JbuyseD6P5UX1w3kqkcf8Q,313 +torch/include/ATen/core/CachingHostAllocator.h,sha256=iB9oBTohWPOgAmCWm0U88jSwuAZZVQDY-MRk33rK66E,41530 +torch/include/ATen/core/CheckMemoryFormat.h,sha256=V9IvV2yN0x7ogLqw33ygmriPS-u7V91cGN9AhjqIVI8,1044 +torch/include/ATen/core/DeprecatedTypeProperties.h,sha256=dhzNJbU70lKzF-bktvSMcGVBI0JjNXhQmP6RfcVQkTw,4133 +torch/include/ATen/core/DeprecatedTypePropertiesRegistry.h,sha256=CAh7FOjK___7yRlcthPcfZJ-3PvF4LsmXsRv-YVXskw,1098 +torch/include/ATen/core/Dict.h,sha256=ep-GA0dVgLgqBeyc6bMKZpUiBV-t6gLiTdAdK5SZ6NE,13530 +torch/include/ATen/core/Dict_inl.h,sha256=FzQ-5rlxuxfEjID0s3trK3NAi2217-yUnBCHYnLRfrE,7716 +torch/include/ATen/core/DimVector.h,sha256=LVBWqI_2nHqX39SBwtuFY9hTYs1l1FZNq2UV0VMHx5k,532 +torch/include/ATen/core/Dimname.h,sha256=T_w3U9xt8ZwhDg2zhus7svNQdKzSthsJF82uVQdFmhU,1421 +torch/include/ATen/core/DistributionsHelper.h,sha256=UeSZW5eA-Cj0f7jRg0b3PBCt5-In_AbHMP9DseleR7o,9172 +torch/include/ATen/core/Formatting.h,sha256=yBqgBa7fjx1aLMk8vyKnDZd3F7fLFy2BUN3bwX6xh1I,947 +torch/include/ATen/core/Generator.h,sha256=wD7l-ASTdD4PZvvGcS7-31zpj3bAyO_C_Lj98s13kUg,6618 +torch/include/ATen/core/GeneratorForPrivateuseone.h,sha256=xRETR5JniORd3NzvcUNJnQygihErGRFB0417-wcOplw,1335 +torch/include/ATen/core/GraphImplInterface.h,sha256=-azhinQlE8Dk-13kzviLHQh5J7fZDNB2NCw-mJP_o5Y,4365 +torch/include/ATen/core/IListRef.h,sha256=bzt0QXkaVtN3tdLbfWF7-Cb0dAyl4XdlckN7U_AeXkQ,21284 +torch/include/ATen/core/IListRef_inl.h,sha256=yKTQ1K-WqJ6sXJ346fLeWY3KFyNtH2pUzvDW3mULyaQ,6460 +torch/include/ATen/core/LegacyTypeDispatch.h,sha256=KI_IJGWgHAAbcBcRQl9jvTleBMbkXSgPWaY9EReKEJI,5111 +torch/include/ATen/core/List.h,sha256=mdmo9faTv3jym9eSvvx95U-VGml4idh2VAXeVXaiA9w,16332 +torch/include/ATen/core/List_inl.h,sha256=O9HZbTr7CKntmYoMMxU77lkilYzg6hxl5h6zyxYeK7g,11006 +torch/include/ATen/core/MT19937RNGEngine.h,sha256=jfMpQi0pyWXxNWtRHKom8PcvdNuXsZh1Cee6-pT1dGc,6764 +torch/include/ATen/core/NamedTensor.h,sha256=drMtfa-rZFsy8xZ4rGJgQi3ivpVvclPyyV3xadVO324,5530 +torch/include/ATen/core/NestedIntSymNodeImpl.h,sha256=GE_nsax-X8ELeyu2ZYBA5gCOVEotOuRK9Z6RtPB3UPk,6214 +torch/include/ATen/core/PhiloxRNGEngine.h,sha256=YBxZwCRgyY1ci3yinbmwoFoQDFT88UmfSXYkomus-7I,7984 +torch/include/ATen/core/PythonFallbackKernel.h,sha256=H3uBekJXfQC--9X4ydMjPggK2DuWUEhpBErCOjewedw,1348 +torch/include/ATen/core/PythonOpRegistrationTrampoline.h,sha256=M4T2s3fROpzCOXJnft8tHdRGkp6g16-kC53DqNLopJw,860 +torch/include/ATen/core/QuantizerBase.h,sha256=wQAV8ECaiwW9UdEkOAKv-z_XpZGI5fpS1JdW686c_IA,2941 +torch/include/ATen/core/Range.h,sha256=zzBaUyO3CcuLvUga7QKP4H_gWeJ8wE7Ew2c1B3OedJw,672 +torch/include/ATen/core/Reduction.h,sha256=QAvMKcHeef39irdGfa4jxAmljpQe05HOxRSh3Lt4JSk,653 +torch/include/ATen/core/Scalar.h,sha256=NcGp-BNXkybOBVLuWjEFHe8G3UnAY4y2JV5BeAUaCzQ,283 +torch/include/ATen/core/ScalarType.h,sha256=MSQSYWx0IuOIFuzEBBKyPeVjYlR0xMDm72dGgs7VFqI,287 +torch/include/ATen/core/Tensor.h,sha256=YVN7gz5Ty4KrToW4GOivewFC_ISHApmYayNXwD-x_fA,2657 +torch/include/ATen/core/TensorAccessor.h,sha256=1YyEt1lMIJy4ttt48lBm3RhHOSRL27C9CSKZGA5fSwQ,2816 +torch/include/ATen/core/TensorBase.h,sha256=DrJ9IErVB5svyM1pBq3l-hV18dXAWkMkYFH9dKJWrfI,39959 +torch/include/ATen/core/TensorBody.h,sha256=eIvImuBOZuyCT2e7W3OdEMp4HhTR4dPQXrPGh0koVic,296703 +torch/include/ATen/core/TorchDispatchUtils.h,sha256=iQ3i4dTXgFFX7uEXkFnhJlN_Kmx2xvOkfEzZKZdZxMk,738 +torch/include/ATen/core/TransformationHelper.h,sha256=jv-KmUraeyjA8O2MZWTSMhYN54shG6SeSRRbxYYlkmA,7085 +torch/include/ATen/core/UndefinedTensorImpl.h,sha256=SRf1XtiwBIMCQhRqppRAfKU3prcLBdFyUrqnJnNKkFc,296 +torch/include/ATen/core/UnsafeFromTH.h,sha256=XnaiDLsTu8NRwGHbONwvtqcDupaTxr62L5F_2NqclUU,962 +torch/include/ATen/core/VariableHooksInterface.h,sha256=7B7OleaLaYjYDQblChSk02xpr8sc6E7j61_PsQ1atjg,3973 +torch/include/ATen/core/Variadic.h,sha256=SrRuKG67BcShAjwck5fso_vUVSrSoQJQaxBpNniHIEE,2635 +torch/include/ATen/core/alias_info.h,sha256=L1ASjM52he4SEZWb-cHB1Of-wnnF2PDb1SiR40iL2g4,4836 +torch/include/ATen/core/aten_interned_strings.h,sha256=iaviCL88CXrttikyDUT6zcTkwy0x2KbwanZt5TdOhT8,57670 +torch/include/ATen/core/blob.h,sha256=HzPJuyyhpAzgjQZNYNS_pYVZqes10TmvWp6sBe68z5c,5498 +torch/include/ATen/core/boxing/BoxedKernel.h,sha256=bXjLkqAiI_J4U61C5Vqq1hnhW1TcO7gaEzwdD0MJpCs,8555 +torch/include/ATen/core/boxing/BoxedKernel_impl.h,sha256=vtenHg6JkQ2_6WEjDM9K3fOly6MWdbiRbV9aKdx04ZA,3530 +torch/include/ATen/core/boxing/KernelFunction.h,sha256=YljsN0rP9AM0cRWkgciZ4B-MChv1VCfCPriKTFv3rC4,10544 +torch/include/ATen/core/boxing/KernelFunction_impl.h,sha256=qdnInxyKkHiF5M0Mz-eeVvqLS_GErsMlf8cXLw7Ei8A,14059 +torch/include/ATen/core/boxing/OperatorKernel.h,sha256=QHTWNctJNO9c1k45cElj6L_vWzgwR-_UeK62y1Emip0,945 +torch/include/ATen/core/boxing/impl/WrapFunctionIntoFunctor.h,sha256=qwWa2ySrY88KlQoDVMu9TBcHcz-hbbEZzqd_oqR70hk,1582 +torch/include/ATen/core/boxing/impl/WrapFunctionIntoRuntimeFunctor.h,sha256=jlmCXnBvefaVbKn_VVpku6ICZMeP0mW6O2CXbJmcxiE,1686 +torch/include/ATen/core/boxing/impl/boxing.h,sha256=pzo7YY_riut-_W1DyzJ6xcF_M4ECGajhsbVEjhfcfIQ,13841 +torch/include/ATen/core/boxing/impl/make_boxed_from_unboxed_functor.h,sha256=jBrh52cB0YWdRoIRxc6iqC-LPYRU0MLkYMAIxkpaYt0,32519 +torch/include/ATen/core/boxing/impl/test_helpers.h,sha256=nz9XM9HqNklaxmKZqqvhdhKlteXJ0suYExAhwA8zyfk,4655 +torch/include/ATen/core/builtin_function.h,sha256=hcvw2w83YPTxT7bfKkVdfdOKfpLVb6CEoFNdJgFjxWI,2331 +torch/include/ATen/core/class_type.h,sha256=WX2rG5KT-B-UHuw-YiJsOWitQQZSHs9-q4odcIqb8XY,14351 +torch/include/ATen/core/custom_class.h,sha256=g593lYHGtGMEi7wUutuC2qAom6hX0TmbyXJm05PxLsc,998 +torch/include/ATen/core/dispatch/CppSignature.h,sha256=GHUTygJ3aRssV9XcRTt28XyBKq_zaZ5aXLLsOWkKJ2g,2636 +torch/include/ATen/core/dispatch/DispatchKeyExtractor.h,sha256=ZJiK1NFO03FQZVWhT7cE_4-LHGCqSuXb8Mc-FY2lkL4,11211 +torch/include/ATen/core/dispatch/Dispatcher.h,sha256=pO4kCX8NIyHzWiVKuwbwEiPq7LqXSC7y8maG6P_v-mc,35046 +torch/include/ATen/core/dispatch/ObservedOperators.h,sha256=eKNoomteAbCsaQ7Qofff0buj44X4yGyrAOlAd794UFU,583 +torch/include/ATen/core/dispatch/OperatorEntry.h,sha256=B6FWoiRbFz6KE5g4Ky4mPdZvVgL2j4FKEJVx_YQy-pU,13434 +torch/include/ATen/core/dispatch/OperatorOptions.h,sha256=Ibh7cTueyJ3FNcDS86MMprRq3uNlZO19f2yURfIu-gc,1140 +torch/include/ATen/core/dispatch/RegistrationHandleRAII.h,sha256=5sWLlO1mx9tV__IwcZcUqftnxvjJ2_CA8pmG-r6WTkk,1131 +torch/include/ATen/core/dynamic_type.h,sha256=6a7Tkj4OVKepnB8ixw5e1Pl-MZ6BZZGPPlRaFtHhZ0o,11155 +torch/include/ATen/core/enum_tag.h,sha256=DJDKXIXYyPTMVxuwHaAz_asYcI4bMuOtzKOr0O43zUw,362 +torch/include/ATen/core/enum_type.h,sha256=2si4vrOCltW7rJjlxYiuODIBy5CYgXBved82o05vhLk,3183 +torch/include/ATen/core/function.h,sha256=MF6WVKSjPmoBUVLtZbQWYfHAyxNTxo_j6iboqbzcqQE,3764 +torch/include/ATen/core/function_schema.h,sha256=6dJ9IyguRRV9NN0-TTflGizmvnKu8eby90c7V9v8UQU,24368 +torch/include/ATen/core/function_schema_inl.h,sha256=pgUnnBp9VgVUFWUtZKlFg3eLFV1mz34d5E1WyKibNIQ,2325 +torch/include/ATen/core/functional.h,sha256=2YeMi9lGkXDPJTQtr9AtxErPP72ioMMLf0v5jj0TqRQ,1718 +torch/include/ATen/core/grad_mode.h,sha256=v4cKv2y2EFgAqEH2yI_D1PdoPs5_neoLiddCCwrvqrM,464 +torch/include/ATen/core/interned_strings.h,sha256=ad0z7aOSN3HBijiIywa4g9fopPMaXg-mtcbUHnv914A,13623 +torch/include/ATen/core/interned_strings_class.h,sha256=rxTLcElTBOppL-iUUQitRcC-RebaQp3Ch0--85iS9Z8,976 +torch/include/ATen/core/ivalue.h,sha256=suZdJ9UILnO2BkWjWxADsufZmoQTbCHiR1l9IW9WhW8,53213 +torch/include/ATen/core/ivalue_inl.h,sha256=8ZbpZrHlbi2sDamV_Ij5YKkK5qVUtU_TLQfSiElXvQ0,88368 +torch/include/ATen/core/ivalue_to.h,sha256=OPCshnu8WClCKdXRzuNPhnwi9dtcH7HVB7NZQf2_cLo,1010 +torch/include/ATen/core/jit_type.h,sha256=a9zWqtZfMgK845jeedkqrUqDie5rkzjTZyzBnUcySSg,72426 +torch/include/ATen/core/jit_type_base.h,sha256=_ZbemJj0czwJ2Rzmo8aDnL9oceAmsp5q0QHMfYw4hiQ,19409 +torch/include/ATen/core/op_registration/adaption.h,sha256=kRQiFmEFwArdI_l_F7MpAg7AzdWGanMvunJZe4hcfqQ,3470 +torch/include/ATen/core/op_registration/infer_schema.h,sha256=5IaNPUJuTtzbv-Gl591VPWrDZuaRw_IkRcsltPIY3Aw,6992 +torch/include/ATen/core/op_registration/op_allowlist.h,sha256=BKCMs9ZStEtcOJ6dlRxJWnzM6DKyknZ0l-9rgjOdh-o,6559 +torch/include/ATen/core/op_registration/op_registration.h,sha256=-4NqKDvpmQiGuNZdFFRh60u9FhvVurjVacHvH-27Z6Y,28800 +torch/include/ATen/core/operator_name.h,sha256=9R8G2y2OpcQwf0ndN7VPWfe9E34pxB1l0XChElvkWCM,3315 +torch/include/ATen/core/qualified_name.h,sha256=wMsJ1QY3tiLOSe04oAx-vfELuZXraI5Lpy6UQUEnXJQ,4627 +torch/include/ATen/core/rref_interface.h,sha256=mhAcftY4AYad0H3q2vuRqqZBOKu_m0yqzC-z33yl3cQ,1462 +torch/include/ATen/core/stack.h,sha256=WVUVRJwhYl8mPcNwXVxd410k53ZA-mzlOy-hNQbLBuc,6436 +torch/include/ATen/core/symbol.h,sha256=6skSgLomwIw_70vw7ikZdNWQDBvQk9zmcdz-_RBxHVo,6145 +torch/include/ATen/core/type_factory.h,sha256=R9o5Y2pdvrg3gOP-2sv82vEqqDPiMMyp1B7smfLir3Q,3501 +torch/include/ATen/core/type_ptr.h,sha256=Mby1oP4rzL07obzNnL0DD5reEEnPfBsJJI3hto8NlzQ,1483 +torch/include/ATen/core/typeid.h,sha256=eMggcfZfdVXFBl32XD_y3SL-xntu8-3vsW2gaorUV0Q,283 +torch/include/ATen/cpp_custom_type_hack.h,sha256=uRYZgQGKQRkEh6F9SnGGWDNyBU-oxzlP2vo5wQEU4io,5684 +torch/include/ATen/cpu/FlushDenormal.h,sha256=9gYBrIZWnFSzBKy4SpTo7QPFzSHi5WSkGNrBbzLjMjM,791 +torch/include/ATen/cpu/Utils.h,sha256=9fzOipawtA_FNN5Ejy9sqTzawnJM29NCKo-qBL1_Fhg,922 +torch/include/ATen/cpu/vec/functional.h,sha256=AWcimK14Ju73ML7A0rEXLtY4C9kH2qDeN0jLCdVpklg,356 +torch/include/ATen/cpu/vec/functional_base.h,sha256=6k0KTdb6veYbBaGMjEqXa9l65Xev3uEnQCyQl_VpzqY,15739 +torch/include/ATen/cpu/vec/functional_bfloat16.h,sha256=bUDJvUshdQsBQL3q-TzY9FXE8EZrRQHJHmIYtCB0fvk,25665 +torch/include/ATen/cpu/vec/intrinsics.h,sha256=etCWzMEatbbky2AF29OWWN1owMc00LGkw50bh3CEBOQ,303 +torch/include/ATen/cpu/vec/sve/sve_helper.h,sha256=93OjzvSBUpLvypKeiO9ZBadwEpkA1512aLJRLODntf0,3429 +torch/include/ATen/cpu/vec/sve/vec_bfloat16.h,sha256=SIehL_6yLmOsnoq5CcTEBp-3Ir-cKCFRhwS6fFuu4Y4,20827 +torch/include/ATen/cpu/vec/sve/vec_common_sve.h,sha256=lNA_x6FVIXPKkEXj2uiJ4z5l-By6SOupeT1XFNMISzc,8687 +torch/include/ATen/cpu/vec/sve/vec_double.h,sha256=EuC1-cuLGBjnhB8n8Ig_x5rAggD1_eKDoWzokXUrC2g,19956 +torch/include/ATen/cpu/vec/sve/vec_float.h,sha256=ysHvUnlHhaS_pwp7c4g5opGRsqdl-hmErEaki7Uedbs,27621 +torch/include/ATen/cpu/vec/sve/vec_int.h,sha256=5P8ODDVF5qMQrs1fwwo7kwoZONDznb9qSPwHpC2haV8,28230 +torch/include/ATen/cpu/vec/sve/vec_qint.h,sha256=xYLhGKQMz2TZl-9NJYcKlRYE6nkRMQ_LWdd23y8MXco,20303 +torch/include/ATen/cpu/vec/vec.h,sha256=GagNXvVOqjRWeA6kvDUFj8C7U4mEpGvD0GTsPGzaGeo,1603 +torch/include/ATen/cpu/vec/vec128/vec128.h,sha256=nXYcpEQuQW3pwtUxYIS6RUGeXFZSuG0pJI2L_TRy5Ns,779 +torch/include/ATen/cpu/vec/vec128/vec128_bfloat16_neon.h,sha256=N--NSD9XRqRBt_cI81hqxznxLIhe-kdx90kBQR6WzSs,25989 +torch/include/ATen/cpu/vec/vec128/vec128_convert.h,sha256=jOLFwVl4yw_QNBFMkhMc5aSceBw7jYnXmRgQ-QWe_Ew,12870 +torch/include/ATen/cpu/vec/vec128/vec128_double_neon.h,sha256=yKkClDbtj0BtocR6Jd68h2Qa8_53APHIKaq7nA4lNJI,18325 +torch/include/ATen/cpu/vec/vec128/vec128_float_neon.h,sha256=oVmFBTIKFVuSVy8JKystyCuRu46UGnXj0Uek2wC0Uhg,23228 +torch/include/ATen/cpu/vec/vec128/vec128_half_neon.h,sha256=hRsr4yxvVIPRjYS6FdJFXagrBS8dw6mCBBwGzEF-UQ4,20633 +torch/include/ATen/cpu/vec/vec128/vec128_int_aarch64.h,sha256=TDUVGA-OI12ERVDI7n5lCYTt8mChYbPLTqANk32Wmnw,32389 +torch/include/ATen/cpu/vec/vec128/vec128_reduced_precision_common_neon.h,sha256=VTyCdjQtf17cd5yUhOZSd44oTL32EtajY8mq3zBZIx8,10176 +torch/include/ATen/cpu/vec/vec128/vec128_uint_aarch64.h,sha256=51VwJSzDxBGbsMnEy9mRvADkMYEweNK7dwEoalfndhs,21095 +torch/include/ATen/cpu/vec/vec256/vec256.h,sha256=2LpUHPcDBYMV-cjB8qd7y0mkVTzsJAVsv-h1EljZgZ0,12974 +torch/include/ATen/cpu/vec/vec256/vec256_16bit_float.h,sha256=qi_RnATEaWQGHOqDldKSYTgn53Vyxuj5XRBdXNK8PmM,28702 +torch/include/ATen/cpu/vec/vec256/vec256_bfloat16.h,sha256=ozcJO1Jp3RNJ8Vo97IxhE_GvnhFxSmabYnMTmmf3IkI,9061 +torch/include/ATen/cpu/vec/vec256/vec256_complex_double.h,sha256=lceQ0Eo7PHIHq5VP4Pi6XHr6Uv5oxJ2iegF54Pez7sE,19830 +torch/include/ATen/cpu/vec/vec256/vec256_complex_float.h,sha256=J8nG_j0sWMUEX_xsXooWVobFfoVVVvvsLUOtwkEilNM,21867 +torch/include/ATen/cpu/vec/vec256/vec256_convert.h,sha256=sKvyirrkm4QhenxzQZYEatuzIOp1RIomJ4h8VSwo0ho,11287 +torch/include/ATen/cpu/vec/vec256/vec256_double.h,sha256=ocwFIIOxGpuPej65VNSY4fCfc0XYu-66VmPCWU5f5Zw,15832 +torch/include/ATen/cpu/vec/vec256/vec256_float.h,sha256=Ys1pFXJnAbe2LeoAwWQG6xeSwUDBl64aEuTTW5xtgd0,27555 +torch/include/ATen/cpu/vec/vec256/vec256_half.h,sha256=MKSjE6wiMvHRxr_Ci_prSCJ2eeonRFPS5IK8WNUs7Jg,8643 +torch/include/ATen/cpu/vec/vec256/vec256_int.h,sha256=fUGI0xrSGpC59pUgZh_0OMyiztXGYemk0yFDb4ao8uI,65745 +torch/include/ATen/cpu/vec/vec256/vec256_mask.h,sha256=W4mmnWT4Eh7nI6t1JziXE3-3SP9XKEpAg5CbBlUN3B8,9026 +torch/include/ATen/cpu/vec/vec256/vec256_qint.h,sha256=iB2J4szv4AKpkq5ANwVI9jB1UCCBSiruJ_i4Fw4cfaM,51098 +torch/include/ATen/cpu/vec/vec256/vsx/vec256_bfloat16_vsx.h,sha256=PvlK-Gb3-0MFQylPhaG-6ho72E0wN_-1gzOwbT6Xu1s,2391 +torch/include/ATen/cpu/vec/vec256/vsx/vec256_common_vsx.h,sha256=H-2vPZiGmNo-0PJmRrqOpMU4_oCzthYuwAgCGwxJThk,8395 +torch/include/ATen/cpu/vec/vec256/vsx/vec256_complex_double_vsx.h,sha256=4-QuTuE6f7edBTD16E_GWAQaLaVHwq5J7Jqf8oH7I-E,21936 +torch/include/ATen/cpu/vec/vec256/vsx/vec256_complex_float_vsx.h,sha256=a7NIslKk8zsXM8MFr5D8CdqjtWFSXdCec03-HjNTKf0,24625 +torch/include/ATen/cpu/vec/vec256/vsx/vec256_double_vsx.h,sha256=zoZrV8is_U-4pghjBqfAsa07gtjZvG7Z_EETZrXFAvg,16539 +torch/include/ATen/cpu/vec/vec256/vsx/vec256_float_vsx.h,sha256=M9xzffcMLDeGTFEWBLJikAXIjzZPO72gZtuh0T3TdEA,17089 +torch/include/ATen/cpu/vec/vec256/vsx/vec256_int16_vsx.h,sha256=1jy4dhqJwivpN21EvwOCnVdUnz_X_eCXB-dwj20PS1Y,13874 +torch/include/ATen/cpu/vec/vec256/vsx/vec256_int32_vsx.h,sha256=k3kEBDt6jcCRFPR9yBmSJuSaikUJj6_QMiFI0EllZo0,11689 +torch/include/ATen/cpu/vec/vec256/vsx/vec256_int64_vsx.h,sha256=YDixVuNdXttFOUxJGqG2RbRar_BlKhcr0MKx30DH7Fg,9958 +torch/include/ATen/cpu/vec/vec256/vsx/vec256_mask_vsx.h,sha256=CQJIsE6joHaFwbtDr3ePX85j4NSj8U_SIGOmEFHZ4X0,1980 +torch/include/ATen/cpu/vec/vec256/vsx/vec256_qint32_vsx.h,sha256=WDOkNhlzeahJ-jOpPgILGUeyo1h8K-wCflugVGJiV8w,10319 +torch/include/ATen/cpu/vec/vec256/vsx/vec256_qint8_vsx.h,sha256=8aqlZqkHgBMOjTgaheDZfsd9VZL-sjXYn0GsFmMqD-c,17672 +torch/include/ATen/cpu/vec/vec256/vsx/vec256_quint8_vsx.h,sha256=-13l08O0IoVfrjUeL_pyDScyCWiM6a_TiyaaHFLBglI,18369 +torch/include/ATen/cpu/vec/vec256/vsx/vsx_helpers.h,sha256=uoMPqd68K1_R4jlS6vPKq245iVj-Kw_BkfQBlqdeVDs,22756 +torch/include/ATen/cpu/vec/vec256/zarch/vec256_zarch.h,sha256=41RaDQLMscyGLfoVEdNLjvk2hXcaGEP556QpStSieU8,102279 +torch/include/ATen/cpu/vec/vec512/vec512.h,sha256=6aEoKS1gqdUSyrHAdIm6VqRuUJgtvfpfHnFAxkI9N6M,11390 +torch/include/ATen/cpu/vec/vec512/vec512_bfloat16.h,sha256=RsSO9F7SP913aHUJunUvLkmDBFtF8MBlCF0bK_p9S9k,66745 +torch/include/ATen/cpu/vec/vec512/vec512_complex_double.h,sha256=DJW_DgozjXVDRkUWLV56NAn6CFIvWwtyU1HnYnfC2x4,24307 +torch/include/ATen/cpu/vec/vec512/vec512_complex_float.h,sha256=MzE3jbTqotDvaIQLAcTa2FqfO39BzhglEPZn7uaz6Pg,44800 +torch/include/ATen/cpu/vec/vec512/vec512_convert.h,sha256=r2BxXhwG0dzxGl7NXklUh9wU8pK2-ORQdJSAkUqzMaM,12177 +torch/include/ATen/cpu/vec/vec512/vec512_double.h,sha256=Lyka1WQbrdC94P6zivLmDnpdnKRAPeSwK0e-MLccnPk,17362 +torch/include/ATen/cpu/vec/vec512/vec512_float.h,sha256=AVDn7rsHpSNfGc5cdZNorDw7-T9l_0WWMqMLz5nViWw,30372 +torch/include/ATen/cpu/vec/vec512/vec512_float8.h,sha256=V_vCGQpIL8_83i3yZYjau6d-oEzs2ooaqqPgjQAeq1c,24814 +torch/include/ATen/cpu/vec/vec512/vec512_int.h,sha256=yDzLgRxx9Ej3m-Ovt_R8tU4bELhVPEFNFIfl5XEehn8,59208 +torch/include/ATen/cpu/vec/vec512/vec512_mask.h,sha256=KC5eBIuuC14cSChSVe41Z6FtFqqRn8OVCeG0nMY-9y0,12552 +torch/include/ATen/cpu/vec/vec512/vec512_qint.h,sha256=_TCyuFUzKfY56MvLwe2sf_MgJBWbEyJ2AlnpmGK2vcg,52929 +torch/include/ATen/cpu/vec/vec_base.h,sha256=pBudEEQ6Ez4PVIEKRSXWU9sRemHhUVOVAElRt2tv6B4,49547 +torch/include/ATen/cpu/vec/vec_convert.h,sha256=SBBa53Pjg7qbNnDKdI5D_qpxPhuzUL7x9BWGZxJR7MY,4704 +torch/include/ATen/cpu/vec/vec_half.h,sha256=PW1nLS9MdKp_smD5_xNW7hcy0gTc9nHIwG9TrtWGT88,3748 +torch/include/ATen/cpu/vec/vec_mask.h,sha256=Tyn3J6n-w2V7KTZd9R18j_2dEl8b9f3HaHcjqAdvLBs,10584 +torch/include/ATen/cpu/vec/vec_n.h,sha256=65PbUFbRex448sk8dXUH2MvQ6SZDIZClzjLEH_FPJ0k,13810 +torch/include/ATen/cpu/vec/vec_quant.h,sha256=b4rBHPDN4KwkTkoM0LtoiiLDhtdF8dvY9B19YwXu6uk,8891 +torch/include/ATen/cpu/vml.h,sha256=_biUSzcgtpOx-atj0MS8QOCFlQxHZDU2hrg7GQWgT0w,6327 +torch/include/ATen/cuda/ATenCUDAGeneral.h,sha256=Y3g0kFj0PlB9p2jUAA4XS22IQ3_R6tSGs6FEiTUBbRk,444 +torch/include/ATen/cuda/ApplyGridUtils.cuh,sha256=Y-V0zrTY1oL4SOLJzAHxz7wDiZ1hT_6H3mdi53c21Ss,1563 +torch/include/ATen/cuda/AsmUtils.cuh,sha256=hmNSZxEXEFJmvOHvSwJ9sekEhb73IB2gLhIAZjqxq20,3648 +torch/include/ATen/cuda/Atomic.cuh,sha256=gxnFD8uCEokJbD88OgqGa3NGSB7VQIx3H17BRbRzajo,27057 +torch/include/ATen/cuda/CUDAApplyUtils.cuh,sha256=2FO8fHZKLVe3V-IXmHU1pudlu8VpcExKOcAtzC5QSbo,20597 +torch/include/ATen/cuda/CUDABlas.h,sha256=T-hxIvXGWAYg7Jx5d47Xbhc66MNqsUEpxD8MXrqMWrU,15513 +torch/include/ATen/cuda/CUDAConfig.h,sha256=UsHlR5o8JmAWZX7OCdDYXPjcQhYzgvMOHk8Ykk4nKV0,1076 +torch/include/ATen/cuda/CUDAContext.h,sha256=FVxhveWjVQ87qecv__fmXrFj1HVowBTGI_uBUUhEQ9A,492 +torch/include/ATen/cuda/CUDAContextLight.h,sha256=p4peSa7dOenwaBAGoGT0cDzGi-ByXlAiuKVuffBMhG4,3504 +torch/include/ATen/cuda/CUDADataType.h,sha256=9LRtoarR6hBpMhKhYnd2oCgMX33oTgVG2Cno6gPAvag,3089 +torch/include/ATen/cuda/CUDADevice.h,sha256=ibOUWACsMvCwJkj8Vs-JaSAacLjfePU25ikYXuE0h6s,786 +torch/include/ATen/cuda/CUDAEvent.h,sha256=1n0unf9uzX68TriMIOlSv3rtmMDaCr0khuMi3pInToA,440 +torch/include/ATen/cuda/CUDAGeneratorImpl.h,sha256=wStSUGQriB7R8gZH2dgLDv6CLfr4UdQkVhXVx4mZyw8,7183 +torch/include/ATen/cuda/CUDAGraph.h,sha256=gc4vhbNyA4_K2rls55VYkaLwfwriI1I7dBuJ_Wd-jZ0,6636 +torch/include/ATen/cuda/CUDAGraphsUtils.cuh,sha256=Wahj6otCRgDBglGPuVQrqwy5iirfotsxHRcmSZaj1zo,2310 +torch/include/ATen/cuda/CUDAGreenContext.h,sha256=GGkSSC4Z8LSIXslmnwO46rV0TGYa2t9N7JMVSudgchI,1977 +torch/include/ATen/cuda/CUDASparse.h,sha256=sRn70ExXg9HNm9pSH9f-Xm2u6jxbBZFGWyyyEdHJMTQ,1035 +torch/include/ATen/cuda/CUDASparseBlas.h,sha256=NW9_yX3WvUtCA5A-d5OZrK3Z_d5hlCRXNYncjhG7TkE,12945 +torch/include/ATen/cuda/CUDASparseDescriptors.h,sha256=6GqtUUckWOZojdaAkoqon3QLkifGy1cfZQmz9iOdBzE,8034 +torch/include/ATen/cuda/CUDATensorMethods.cuh,sha256=0XUAaYRzKUbJnw8-QsCk9huRWC_eBNqPI5rgw8m2Ecw,524 +torch/include/ATen/cuda/CUDAUtils.h,sha256=aqOrT9ciEgvqxTs6AIJ1g8AUYpuEkYDGbRDFrJHk3CY,670 +torch/include/ATen/cuda/CachingHostAllocator.h,sha256=Cubx1tn7320HVu04x0uI7uJP-UkxVma6N9Q8--xnqSM,3284 +torch/include/ATen/cuda/DeviceUtils.cuh,sha256=ckhE-i-e55aZrBmh6A0KMa0KJf_d4yan1AZ-YZCwlF8,3510 +torch/include/ATen/cuda/EmptyTensor.h,sha256=ic1E7hVwYA_iNMXuG8cFUN0j213xDHgv1wN9gsaXUFA,1460 +torch/include/ATen/cuda/Exceptions.h,sha256=gFwW4-ehCXlB0lLW6Xtv9XVTdEHG__alKBmWmJSdiIY,12842 +torch/include/ATen/cuda/MemPool.h,sha256=wGz7JyS4bl1bObFNXCwhLL7rFhNCSKXQ7p7AZaJNZtc,1539 +torch/include/ATen/cuda/NumericLimits.cuh,sha256=UED-0HPXq3bA_mqroXCxFCrUBW7n4aLTiZ2xjrsJ15w,1597 +torch/include/ATen/cuda/PeerToPeerAccess.h,sha256=3-oEtfUZnYnanTvgS1xcb96lMZzWdxgB9cLvRRehZQc,1515 +torch/include/ATen/cuda/PhiloxCudaState.h,sha256=x1KYpK2i45uMEWt3uidetR8Vyp-0vsGkcpMQdqEE_2k,339 +torch/include/ATen/cuda/PhiloxUtils.cuh,sha256=42vYVkx5qDsakAMXakmFM3zEXgzxAooYG9j59NT_dJ8,349 +torch/include/ATen/cuda/PinnedMemoryAllocator.h,sha256=ZYJfIg5C4V3bISgVLBvk5Go_xeEcOuiu84XyZLyY2lI,477 +torch/include/ATen/cuda/ScanUtils.cuh,sha256=2z2Hqz5wfzxSwSpbzDfeuT9F4Zji2Ju3RtyCwNiggO8,2281 +torch/include/ATen/cuda/Sleep.h,sha256=GFH-xrg91qwm84BnIyb8V4-rwzBLAiTjbwaLsU3N5ws,573 +torch/include/ATen/cuda/StatelessPhilox4x32.cuh,sha256=y4xOVqat8H5jjWfUva1JpWh40i4QUnLL5Lz9yp86Y8Q,2359 +torch/include/ATen/cuda/ThrustAllocator.h,sha256=vuoo-4-S71Xy4C5lfrVttB6UChIlYxlr3Wi6inoYuMo,759 +torch/include/ATen/cuda/cub-RadixSortPairs.cuh,sha256=7ZRAJC-Wvk63eaa7XLVl5qsiOMWWrdi909yoyvWWMdY,2459 +torch/include/ATen/cuda/cub.cuh,sha256=q7KqvMMSDDJbYqsyeNMY0BidRKL6hM7uf9G7-FWT95w,21494 +torch/include/ATen/cuda/cub.h,sha256=D0lN7cr8YsLXyx83xbz7CYBCwmo1J0tcKV1dSTo_JyA,4016 +torch/include/ATen/cuda/cub_definitions.cuh,sha256=2Rg0L2a6O8__ZQc50KeC4F_5ww411XIRGusCtbRdMDE,1073 +torch/include/ATen/cuda/detail/BLASConstants.h,sha256=goHy09UIQi7XLieR3E3tfjcpzgpwxSkIhpjtDhMlUHc,460 +torch/include/ATen/cuda/detail/CUDAHooks.h,sha256=mdCiITTzHnJ8-mxedSglmjUXDj6rQ215g6GwXEYefmA,3343 +torch/include/ATen/cuda/detail/DeviceThreadHandles.h,sha256=yW1GbtigusLf7FP5EP8wUlm_dSmlyr6I3N0-m9tL7uc,9066 +torch/include/ATen/cuda/detail/IndexUtils.cuh,sha256=S-kBfp6T_yGnnfsFv-H78_iK5pHPBLi7ZLyv8XiFOII,1983 +torch/include/ATen/cuda/detail/IntegerDivider.cuh,sha256=qORRBvLTJxI54_r7S1_Yn7HftysizNWtKKSRysEHzVs,4273 +torch/include/ATen/cuda/detail/KernelUtils.h,sha256=I7_ldw6KRcc2hGcAv3Jqz1vARlHZbTMVfOdJMJla88w,1789 +torch/include/ATen/cuda/detail/LazyNVRTC.h,sha256=YvqkMO6N5dTfYQaSB2B5iv7kZaCV-dfeD4uPTu63NVg,474 +torch/include/ATen/cuda/detail/OffsetCalculator.cuh,sha256=Q8O-0N9eBPTnSDrmMQ7xvFdMvyKeB_Ig7vrigO3dux4,5112 +torch/include/ATen/cuda/detail/PhiloxCudaStateRaw.cuh,sha256=1bwPiGKT62D7Vs4llEQl4WTT75aWa3NfgNY7HBRyNvU,1612 +torch/include/ATen/cuda/detail/TensorInfo.cuh,sha256=KJwJRq_CHfJHX7RzpQQZshnm27T86F1k9Ry-QEOUz20,3494 +torch/include/ATen/cuda/detail/UnpackRaw.cuh,sha256=j5i7r21kCrg6SKQf_BBP_uDrii4xIup4IX4Z2pKLXno,1993 +torch/include/ATen/cuda/jiterator.h,sha256=gO2gKosxQYi4aLSupXH99e-TkBKSqifzCQNLdI1ltA8,1214 +torch/include/ATen/cuda/jiterator_impl.h,sha256=O9kiGZeeCGzohlucr92WunWpjzUZavj81oYc47IzOaY,7355 +torch/include/ATen/cuda/llvm_jit_strings.h,sha256=kJpasSteT1vKc5ujFRyDGa7whcIKnLwaOxyxtRKtkRw,682 +torch/include/ATen/cuda/tunable/GemmCommon.h,sha256=wqYi5EIY7r6D4b_dgV-9dvmYodImZk4ATJ9A1VLMoNk,23633 +torch/include/ATen/cuda/tunable/GemmHipblaslt.h,sha256=QpViCtbMOtqHpThPXLJDxq2teljj56Vv9nHR2eJc_Nw,21988 +torch/include/ATen/cuda/tunable/GemmRocblas.h,sha256=_oyMmgdqH6HSfoLisS13F30uh5GAE-HIziKemA0irh4,10804 +torch/include/ATen/cuda/tunable/StreamTimer.h,sha256=g5V6mzx3oFvoFkYiRatDxEFGjrdSGoo2B0yJakz9IxM,1299 +torch/include/ATen/cuda/tunable/Tunable.h,sha256=W9NutBaBfl36r1ShX9bxffOU52RK464cxAsNnfQrv7Y,8587 +torch/include/ATen/cuda/tunable/TunableGemm.h,sha256=7PhUhYJzrVTkVHfeNSQ9p-6qSGPDmD2yIuKtFSVRlcs,9886 +torch/include/ATen/cuda/tunable/TunableOp.h,sha256=hg5dLMfsD1wPpbcRLXAo_iwL7v11VXcdLM3ClVJv80c,14988 +torch/include/ATen/cudnn/Descriptors.h,sha256=DmWD2pCzqLqxsfPCGmc4rDK6sCgmFkZPKaBcQDYEaVw,15335 +torch/include/ATen/cudnn/Handle.h,sha256=pGkiq0ZzcZLgbiGQ8ybHUvnVZmoPyLhjgsha4JNSkYY,447 +torch/include/ATen/cudnn/Handles.h,sha256=jmhakLkgV8AdF07lLAQbwsmcEeRRDi8fNcYhtYSI77g,298 +torch/include/ATen/cudnn/Types.h,sha256=HfZhdzuBc-DZ8L0ketUnMViu39Ct7jTkhhglPgzGQ2M,564 +torch/include/ATen/cudnn/Utils.h,sha256=y3Hdkk0UfdPIl8rj9NRpz-5jq11m8NJy8wK16GeHFn0,849 +torch/include/ATen/cudnn/cudnn-wrapper.h,sha256=QTBGaaa7_h2SB3HmG4U8LjN4AOx7393HWo70zI-TfGY,794 +torch/include/ATen/detail/AcceleratorHooksInterface.h,sha256=9bytpnF9OcNzUfqXbIjV66b9BQ_S25C0ByyOE6Eychc,3248 +torch/include/ATen/detail/CUDAHooksInterface.h,sha256=IBHZitHjaYSD4WYJCAo0lKtztz06K_kxBOlxkorR7qw,8976 +torch/include/ATen/detail/FunctionTraits.h,sha256=s_ett-iw2Qflvg9_x-aJL8VRXZS5ck2t5o-U7FZPg88,3316 +torch/include/ATen/detail/HIPHooksInterface.h,sha256=r_g_MvwN_IUeRWn4LjHMJ_xjFEfH-088fmkSNYHSyoM,2258 +torch/include/ATen/detail/HPUHooksInterface.h,sha256=B5GS9btNsCRr17mytiHpK5sANHxZ61T9lFIUurboGps,1708 +torch/include/ATen/detail/IPUHooksInterface.h,sha256=7Z6JZQ202rhDoCQebYV8J6kdFj_81N8eCn_XpCdN_I8,1498 +torch/include/ATen/detail/MAIAHooksInterface.h,sha256=WRf1-O8_Qkw-yKRbwzXRx473kCTjxofmWMQALzH_RtI,1529 +torch/include/ATen/detail/MPSHooksInterface.h,sha256=jXs5PiR5OxrRMHGd2r_8KQjNvU-b4TfasAH_4zhv4xs,3994 +torch/include/ATen/detail/MTIAHooksInterface.h,sha256=X3n25nhMJCINp694ET0KdaYmVphIvNmgW1XwSF8u_z8,5970 +torch/include/ATen/detail/PrivateUse1HooksInterface.h,sha256=OSy0j1RhVNngvxjGtO86N6lnMnQxQt4YnQwjdr5EOGU,2743 +torch/include/ATen/detail/XLAHooksInterface.h,sha256=4QzNbPhXB0BpjgCCgZw5zBsLrf8MPMv9CPZ1lTu9lwA,2677 +torch/include/ATen/detail/XPUHooksInterface.h,sha256=7viqhQ830QSZwoltxKoW1eJ8NxwbzGiAHWpxKSoQyEA,2924 +torch/include/ATen/div_rtn.h,sha256=4nvTpsu7JOVXbz2gkH7EqdYfREUw8zg3yjJLEo08IDc,465 +torch/include/ATen/dlpack.h,sha256=YtCs_UQXAPm5cO8taUvehijM1KNrC10xFZJ2g1D2jXM,23516 +torch/include/ATen/functorch/ADInterpreters.h,sha256=SimV299hZtyUMJekW7ytVKpvPW686YhuLctUjvG5Zro,1814 +torch/include/ATen/functorch/BatchRulesHelper.h,sha256=l553Ne5NOm--LGw3lBRvqTwF-cEIFsnkH16dsFcYOQw,19053 +torch/include/ATen/functorch/BatchedFallback.h,sha256=0ECOodFmirkxr_ztE34K_EToFxZ75h3pltUjnXawP1Q,3693 +torch/include/ATen/functorch/BatchedTensorImpl.h,sha256=G2e-GWothDMfdvbafrTKzTNoKE33oqxyioqi6va4G-0,6783 +torch/include/ATen/functorch/BatchingMetaprogramming.h,sha256=R8l4RZdmjefQfMPNMG1jvo3pB7RK0UVTw6AXR53ln00,5244 +torch/include/ATen/functorch/DynamicLayer.h,sha256=NMxlke8eCf9T2KSNdWT_fbifb884srNDKk6-bPdHupQ,5938 +torch/include/ATen/functorch/FunctionalizeInterpreter.h,sha256=3jU-mTn8FDBqjyd1gUfW0dAE8ACSPFDx2dAbbgArX0c,1161 +torch/include/ATen/functorch/Interpreter.h,sha256=8o8SL3qrcxjdu7zwoTfowAj-iseudhvTufnjNkj-3dg,14967 +torch/include/ATen/functorch/LegacyVmapTransforms.h,sha256=nHwpaVy-psnxBrDnAbcxedCc2iWjQ75QjUWVosg-ZWw,8505 +torch/include/ATen/functorch/Macros.h,sha256=hqjfrYvy4mqhY3MXdsNKQUXzb2y8LrkdWgColdke2bE,304 +torch/include/ATen/functorch/PlumbingHelper.h,sha256=qRDYK1BuwfrE1vr3QWGKEhSPeosHrq0lZqKOlirt_TQ,3108 +torch/include/ATen/functorch/TensorWrapper.h,sha256=kghomRRLftFFipY5vp6zZpCYAA6k1SyJOpHoXAYPYzY,4279 +torch/include/ATen/functorch/VmapInterpreter.h,sha256=egzDZVrqImPBju3_cVquUj4xKR6OSeNjKd5Gnt7dP6A,1211 +torch/include/ATen/hip/impl/HIPAllocatorMasqueradingAsCUDA.h,sha256=P71dPrMT71EerhduHcHb83JY3FYWlyyZ8Q6AYNAFDFU,7616 +torch/include/ATen/hip/impl/HIPCachingAllocatorMasqueradingAsCUDA.h,sha256=uTzJYZqczGk1L9rW-WgWYjaaIXWrXi5RdRwaRQpg8jY,2809 +torch/include/ATen/hip/impl/HIPGuardImplMasqueradingAsCUDA.h,sha256=CvUM0wbuQFlB43HQOmsYL0DmOxH75-1Hz8j8ksIjrRo,4072 +torch/include/ATen/hip/impl/HIPStreamMasqueradingAsCUDA.h,sha256=fFzzF1C-DC5hyT8e5T0kQITqNfiEfPhPxxj-0flXP2M,1577 +torch/include/ATen/jit_macros.h,sha256=M6xEVYL7q98hfLdEBiTuCjtgR-pkGmclxU8L09Qntik,484 +torch/include/ATen/jiterator_macros.h,sha256=g-vRy4Cy6UmhGVXErSsGIM_vcAtxu40vmcLA_6xPF2I,1760 +torch/include/ATen/metal/Context.h,sha256=3Sf57yULLhzLS_JYMrGeIaC99E4_0V9-G4VzeV6YjH8,936 +torch/include/ATen/miopen/Descriptors.h,sha256=Rm4ItrthpyKpBEhdu1Tzx533qgZanIF2zBw4ffYYZYI,8238 +torch/include/ATen/miopen/Exceptions.h,sha256=Yicb0z4mTJD6FSfGhKUXELkeTYOXByxGC8fJX7NPCN8,1350 +torch/include/ATen/miopen/Handle.h,sha256=N79o8e6G7CH_Lno1cT_hWY6K_P6DhZwH3h0E-jF8-uw,443 +torch/include/ATen/miopen/Types.h,sha256=sP-Ig7kjm3eN6W_My-JSBEE1yRYpaOHwctYa7m-PMbQ,524 +torch/include/ATen/miopen/Utils.h,sha256=U17pahwfbSBWMSUnA2d--b1SeHbtRjrGTSGHHLuPUvU,655 +torch/include/ATen/miopen/miopen-wrapper.h,sha256=Y1cYYpIt-bcyZLNVSgjo2Ye1OsIKfzJHs4xFP6TPX3s,1050 +torch/include/ATen/mps/EmptyTensor.h,sha256=_fvSflyj38etC3e3sL1pWP2OsuDAEsY3AwaHlY1vd98,1009 +torch/include/ATen/mps/IndexKernels.h,sha256=34eAxG3mfF6MwY1sdF-4ZeNUZV6ap1SxVGEmoosEv8I,9730 +torch/include/ATen/mps/MPSAllocator.h,sha256=91Kkt2Jv5bJEA3e20zK0Th3KpqGtYqYYhCnlJ6u9LSI,18772 +torch/include/ATen/mps/MPSAllocatorInterface.h,sha256=o9q4Zw8_Z2LLILArBvmh-pi1S4Tv-2PKN8j3slwPBoM,2944 +torch/include/ATen/mps/MPSDevice.h,sha256=EE8D7xXZ97ePt9RfALBi5ter7NMIm7rL_mX5X709t54,2145 +torch/include/ATen/mps/MPSEvent.h,sha256=dtNUJogYAMLEbWIm0Ek-pKHfA-N1xbzBwjbS3L7HRUo,3822 +torch/include/ATen/mps/MPSGeneratorImpl.h,sha256=Moeo7-MXtLeO1d3JsIOKcittj89_V1Xnk7q7Re5FHTo,1816 +torch/include/ATen/mps/MPSGuardImpl.h,sha256=CLj6s6jdwRDAF5jzsGYRK-vzWzQ8DN-NE2_YpP2eBFs,6248 +torch/include/ATen/mps/MPSHooks.h,sha256=Ouma6-LIm1nYmd7vjtJFM-acP7Oh6P2OkWy5mrCad1A,2556 +torch/include/ATen/mps/MPSProfiler.h,sha256=FEz5ZCb97uL3Eer8IQtXSa-qXV4kItq71_ZAnr9JyxU,16844 +torch/include/ATen/mps/MPSStream.h,sha256=4M_oNkmq4B_JOXiFhTdmGAV0nqk6AqrAzRZ-uvMnAJU,4980 +torch/include/ATen/native/Activation.h,sha256=5jUBzS9MrhXbg9i0cc0yWS_mG0CTYOd8FyELEqpSj9E,3769 +torch/include/ATen/native/AdaptivePooling.h,sha256=gbGBydyKyO833hfzVuf6O09uJrEPEAuNVLALm1GHfvg,2682 +torch/include/ATen/native/AmpKernels.h,sha256=NF0ckllzP6u0cuybr-a7mHBEF7iRAmdq8OtuMoomSiE,871 +torch/include/ATen/native/BatchLinearAlgebra.h,sha256=vc3DbmSXZkrkr9QfLaYUnNiENr_wLyJwzovyqaga8c0,10509 +torch/include/ATen/native/BinaryOps.h,sha256=jbHv8lK91cmQDQsQNNgw8eNTPdbed1SjvFqZsCNFxKM,6312 +torch/include/ATen/native/BucketizationUtils.h,sha256=DNCdyntNrq3f8qbdWbcjYJEERDuBIKUeWpIlKNryyjg,8036 +torch/include/ATen/native/CPUBlas.h,sha256=JzMm7HtekP9q4HPAnv3A22UJ_0COj2O1MD97o4rxAWQ,9747 +torch/include/ATen/native/CPUFallback.h,sha256=db7ZH0Xvlxq2yFGBkdYqp-6uKZ2cKfT45H-7KklaGs0,2667 +torch/include/ATen/native/CanUse32BitIndexMath.h,sha256=8u7Fm_XJ5AqSN_h2G2jxyAlYtpxGDNR-Hdufhwu5p54,496 +torch/include/ATen/native/ComplexHelper.h,sha256=PCu5VSO3tP_NiKQ2r3WAWVnfPDxlI8JRVp2EdcijzzM,4577 +torch/include/ATen/native/CompositeRandomAccessor.h,sha256=-jQf0lb1feMo8S_HqBbpp2jY3y8ORmKNjNnT2syptUo,1130 +torch/include/ATen/native/CompositeRandomAccessorCommon.h,sha256=7edXzVXw7rpfekC5_PRaCIzexfRYEJxUm8WXUZBsmlE,6987 +torch/include/ATen/native/ConvUtils.h,sha256=gE1fYnnI9sVIiB_5g1iZyXqo-46N5Zu0QRJcFh6EQNU,21498 +torch/include/ATen/native/ConvolutionMM3d.h,sha256=G0D6p90oXpyeb2mhp_fovuRaIBWX37n6jN6q0Nxc8Ao,594 +torch/include/ATen/native/Copy.h,sha256=9mJ--HBtsJ4-gjBbG2uMgjHNN8_cOL3fEFkL-kSCQtQ,626 +torch/include/ATen/native/Cross.h,sha256=7yIZE8n6_-zcjM494HQmI2n7v7ncpJIbqx_-yzpc-gs,513 +torch/include/ATen/native/DilatedConvolutionUtils.h,sha256=GidEeuor8wOenGeOxSXQN4Tn6_DNOHjfCEmsHwoIzRY,6656 +torch/include/ATen/native/DispatchStub.h,sha256=w24Fr4JUcA5X9zspynbvrEZLNTgMqwNCks99a_hc4oU,16205 +torch/include/ATen/native/Distance.h,sha256=z1vYpapV_W6PyHABYumrYd57ggsR1gK7vBPlf89PzTk,974 +torch/include/ATen/native/DistributionTemplates.h,sha256=eDSxPmwC-NrVQuM-A54b6xTzMh3wLCt5kECtllrO_6M,18746 +torch/include/ATen/native/Distributions.h,sha256=ct735m3wdATGBJSQQ9UdlzmJJTLLZvN1gLq3a_T_huQ,21551 +torch/include/ATen/native/EmbeddingBag.h,sha256=dlik8mXJIeXv57OzTxGs2DpWYg3CzfPs_xMRDFCp26Y,5482 +torch/include/ATen/native/Fill.h,sha256=4RBR3xh3iiYpk0SU93MXSVuh03u0PRpQNraXcU4T7UI,650 +torch/include/ATen/native/ForeachUtils.h,sha256=hQT2Yo_3BVhtcxBc9dx9gMTZK0IFzhItDTf-Ri6eAIc,15316 +torch/include/ATen/native/FractionalMaxPooling.h,sha256=NIrym6OL5oKgXOuG-jWS5Hd-37hKOypZUbXOloWqz3Y,2415 +torch/include/ATen/native/FunctionOfAMatrixUtils.h,sha256=TBbECD73rwVVPvMePLeIxZhTyQJYTvLs7p2om2EkmMQ,642 +torch/include/ATen/native/FusedAdagrad.h,sha256=xYmXlb-ICVMYCI8EVdfZ6CgoD9AbVJSn_Zaz4Gg8V2k,749 +torch/include/ATen/native/FusedAdam.h,sha256=9f7Q9Gv9DbsLRwsnhxK5Evy8_DoFMmU_MuPEQAK9OVQ,937 +torch/include/ATen/native/FusedSGD.h,sha256=m_wkHWws_x4aplWRxIS-8nWyflrUGrGpJVMSqHMFLDA,770 +torch/include/ATen/native/Gelu.h,sha256=_xxqp_o3ocmwVdwYiyJ_Zr_Ak8fTqfRQmGr80GkUlAs,1097 +torch/include/ATen/native/GridSampler.h,sha256=RAbPa6nbPgTD-8qO-e3Dol64-8WiiNYFyqOYxvQB_s0,10661 +torch/include/ATen/native/GridSamplerUtils.h,sha256=9uAjJvZ3lzV6hfBlcCgpocCjIyaYC0LRyHt7l--bMO4,3959 +torch/include/ATen/native/GroupedMMUtils.h,sha256=F5B8kFCOYg7P5ycPQETfAo6Ir1MDXMBYWAsFaIgnSOM,7611 +torch/include/ATen/native/Histogram.h,sha256=81LzK2uszgc5Hk35lUpf7Ocuibm6nmO7hSDZdOQZ-yk,999 +torch/include/ATen/native/IndexKernel.h,sha256=z0pBirBIRp3tNWAqtvFsYlTj0tuVQt-LQqLB3yBm09U,1957 +torch/include/ATen/native/IndexingUtils.h,sha256=OjtrR29cRwi9-4fH0BjD2RFVfcpSScQWt7pABGjl3S4,6594 +torch/include/ATen/native/Lerp.h,sha256=dM_FRmp1GtU8hHyJzcsPhYAxi9SldMaWMQnPzvNyaB0,1715 +torch/include/ATen/native/LinearAlgebra.h,sha256=UzXQ5Os6eK8E_TU2EAJpUOHjVEVpmEw6hPP4lCY5BuM,553 +torch/include/ATen/native/LinearAlgebraUtils.h,sha256=k5um8omLdExad2wIuFvE4tVraBNS8plbaeWaFqeU8_M,26719 +torch/include/ATen/native/LossMulti.h,sha256=bE__nG_H1ux0ygwp8OfxzM6DWydfHPxSscPHZxYiahM,2526 +torch/include/ATen/native/Math.h,sha256=TagZWGU2KFGoEEaKv3pvgnWnmvedgTK5_AV5hbAWM04,142344 +torch/include/ATen/native/MathBitFallThroughLists.h,sha256=LV6aBXlLS3r6JeU0EGHrzFQ5STahu2NUlS_vREsH0EE,4390 +torch/include/ATen/native/MathBitsFallback.h,sha256=qNxqOQoXjCyZ7FXrgAxb5HwhEigG_Gm13QQB7wLLSIo,7572 +torch/include/ATen/native/MaxPooling.h,sha256=9ArUuAHT2x-sECepMiaFZ2VvcQoTENfr6aGPCERXbpg,3522 +torch/include/ATen/native/NonEmptyUtils.h,sha256=OaBD1Vyz4PTpn3Us5BQ3MZ9A7xrFiRuxWs9e_kVBQGg,853 +torch/include/ATen/native/NonSymbolicBC.h,sha256=biHlvGKtt6Ui93Ju32MmURhSEc2npmkjX-7JGsxW6oI,3130 +torch/include/ATen/native/Normalization.h,sha256=AQ5IVOcofut6ZE2l9SedS-XVD9kxQK1qOzLud2HjNi0,807 +torch/include/ATen/native/Padding.h,sha256=KGtXh2yuMsGoD_cTGRnRkz-rRdcIwwxGJGSyLGDdKf4,2315 +torch/include/ATen/native/PixelShuffle.h,sha256=LtPpsV4uTDfmEDnDNL6vxDqV8gzFa8XtCQ5pYIf4g5o,2211 +torch/include/ATen/native/PointwiseOps.h,sha256=QcuNw-z_rvR3fz5fLw9U-w9Am-akjoCIefj5doVF9bA,1035 +torch/include/ATen/native/Pool.h,sha256=gTWkL_odUrvxSDhyoX7dblHMu4DYsDlTXS_84RiVL3Y,13508 +torch/include/ATen/native/Pow.h,sha256=HAOQzKdHYhaHKFgigE4SjB6svSZSNdldUkv1Z-5WGqk,1903 +torch/include/ATen/native/RNN.h,sha256=9DZwrm7U_KLV0y8nrdXQAs7PIlEtH763L8iG6wKlmuE,2758 +torch/include/ATen/native/RangeFactories.h,sha256=GT82Hg0DPHlPWboZA-e2myfK4wyGHaBXcPWU4Wu3HLY,608 +torch/include/ATen/native/RangeUtils.h,sha256=U5qvswfBKI4rYQUoD_sUPLAWN9FT1wWHoXDs1495iKI,2356 +torch/include/ATen/native/ReduceAllOps.h,sha256=StNDQgM49wEdfdroZvpTcll7h0hrIkqb76U0lnya_kA,651 +torch/include/ATen/native/ReduceOps.h,sha256=H0Ifl1k2tQ1d2z2tEHloAmfyKO2GJgqqjse9qy8bEzs,2108 +torch/include/ATen/native/ReduceOpsUtils.h,sha256=6BVLtVZ56urcbQbmSR9dkVuHImpbsxwYUYJ6PeTJq4E,16691 +torch/include/ATen/native/ReductionType.h,sha256=-84o3NlrAKdzIHf2vu5wgDikNy9-UvowgkMs9XnZINY,1393 +torch/include/ATen/native/Repeat.h,sha256=e-6_LlR3AydXMSaL57bvclfYNfMhE6BELxJQggDrtmY,1731 +torch/include/ATen/native/Resize.h,sha256=T_EyA73ldgodOYTz6mct1xidMJSUhNwcGufn1TQmsfA,9819 +torch/include/ATen/native/ResizeCommon.h,sha256=DWUOSk4e5RUodW3aJ1_a9bqsg47N2QB3BC_TN4PHd4M,2745 +torch/include/ATen/native/ScaledBlasUtils.h,sha256=TOdBbX8NrHvkEuRce6dQiNj1WevqvxpKU3-2VqvUflA,3630 +torch/include/ATen/native/ScatterGatherChecks.h,sha256=jh1aGzDCQQvyGmo1BqMbi2PDujCYWLkgqqSWE7emjQE,3990 +torch/include/ATen/native/SegmentReduce.h,sha256=KHETESlR7O3jxUcHvj5CD4MjAwzM8VMNM-Wv8RHfqDM,1519 +torch/include/ATen/native/SharedReduceOps.h,sha256=daa62aPH9HVyq4Jk_WZIdpfip3u5-6Gw1VXZZ6rBi14,16470 +torch/include/ATen/native/SobolEngineOpsUtils.h,sha256=pNNPAQN0x0Br2jQHikIWd2xht9D0yGU8DUg_n7pQ6IA,2089 +torch/include/ATen/native/Sorting.h,sha256=YthtMuMvduf7oy_qqfjL3hbxZH9nNbbg4c91v2BF4aU,870 +torch/include/ATen/native/SortingUtils.h,sha256=bV3C_qbVQTfKY84nXQGcCDL3xUrzprsaviBKx3vf8r4,2926 +torch/include/ATen/native/SparseTensorUtils.h,sha256=HQVciWWBvDldwO7g-RSKPldE3uOujADedTbqVuK45aI,6754 +torch/include/ATen/native/SpectralOpsUtils.h,sha256=i78AR7qegJD9FC_CerTuu3dXYOMK65No7cUxDqfMBSU,3536 +torch/include/ATen/native/StridedRandomAccessor.h,sha256=PZKVO993ozr5g9IsTE5FZlDwn4yjA3kXX5VAIAFU7zU,7089 +torch/include/ATen/native/TensorAdvancedIndexing.h,sha256=wUXDM_I6v7TYYKPzg-USJF6o4mA9WzILx1M7cFjLlG8,3151 +torch/include/ATen/native/TensorAdvancedIndexingUtils.h,sha256=b1l9x8rZl9tFS877RrQUWwwN_Y77Fo0j0NHzT2tfuB4,3378 +torch/include/ATen/native/TensorCompare.h,sha256=xYZgiLO_WTB8nrPNBsDMsTsjR9akehbFLGZe8YTNGNw,1772 +torch/include/ATen/native/TensorConversions.h,sha256=0MeFKSwGxMwjeE7kPyHTMmVog1un0SCl5hv7akwlTJM,1092 +torch/include/ATen/native/TensorDimApply.h,sha256=xCVtk1TTObjwmO4cBByaHLS16i-phVragc01PCx5WwQ,2081 +torch/include/ATen/native/TensorFactories.h,sha256=iMrkaCXDAL_3PlPg3hd9tzJjpMQUtKVCL9IH_c9TQPg,5652 +torch/include/ATen/native/TensorIterator.h,sha256=EGjHBhlzhM9qtyOLFTPl9Cion2Tk55izMcG7hZMIaJk,300 +torch/include/ATen/native/TensorIteratorDynamicCasting.h,sha256=gfkNvB2B9s6IFHANJR0hLWUzORb24pCEVIJmbVoJhZY,2064 +torch/include/ATen/native/TensorProperties.h,sha256=BQlo_WTYnIIFSy6PQtwSmBOcdp4BTwhzvhRkAPn6JpA,452 +torch/include/ATen/native/TensorShape.h,sha256=94C3OMr9UObeXNtrNnn3OCqcI3AHdblYgPQcpSn3Kjw,4851 +torch/include/ATen/native/TensorTransformations.h,sha256=cOkKfad87XienVW5PnqiQNCkdyQq-bSoIxo4t9BY35Q,1181 +torch/include/ATen/native/TopKImpl.h,sha256=H_JLqHjMs4FlEbo0YJ1yRyJTQsaqYXQLUZF8jKeUB6s,3713 +torch/include/ATen/native/TransposeType.h,sha256=fdgHe1LZjUL7SyFS5UojXJVJaPXJ1Ffo-rmm6y-CsKc,935 +torch/include/ATen/native/TriangularOpsUtils.h,sha256=sGk-__VAdO7bFuSwPEnIEYnVPEzOiR8ynfOqljMF3Ws,2256 +torch/include/ATen/native/TypeProperties.h,sha256=MJATK6vHjuCCgS8N2wde2QxDYsG0YQM_VqN8nXeMVO4,912 +torch/include/ATen/native/UnaryOps.h,sha256=8Pu91eWMl8D5PSJRA7zVp8r2XbER_LMRpAKlJ68VbM4,5669 +torch/include/ATen/native/Unfold2d.h,sha256=r5hQGu1j7sNzIaZzrn0WybL9HOtXfnXM2lXTWXas81k,1233 +torch/include/ATen/native/Unfold3d.h,sha256=9H3NktUNEnXLlSDxJQ1MsFSp9E_Ea1Xq5QiJa-jqouU,1127 +torch/include/ATen/native/UnfoldBackward.h,sha256=53PYK7KVjOHfnnDd5s5idG9soaE5y4ql5qWYilyYjC8,3347 +torch/include/ATen/native/UpSample.h,sha256=U6SwWAXuyRcGQrIh5U5cgx-WN6nybpcIU5NYcJMhr3c,19748 +torch/include/ATen/native/ao_sparse/quantized/cpu/fbgemm_utils.h,sha256=bn3kx0zdKPRUTi1ATGIOnylaPwbH33_pFPyd3qShkHU,3234 +torch/include/ATen/native/ao_sparse/quantized/cpu/packed_params.h,sha256=wUv3YyCo_WkTQfM6o5r8VidmyAUisf_WixBEfELkvJQ,2995 +torch/include/ATen/native/ao_sparse/quantized/cpu/qnnpack_utils.h,sha256=1rAzuMEU4AdDuEvherVtCc4hK8bMoNysZNH_4-71b94,3496 +torch/include/ATen/native/batch_norm.h,sha256=DMbmfhic-MpRaWOjcvtgds0yUN9MnY6jr6hhZn3BTIE,1679 +torch/include/ATen/native/cpu/AtomicAddFloat.h,sha256=u2eTBDVfo1ZegYDR-3eZF-6wrTDy_5qTonS6M-alqao,1096 +torch/include/ATen/native/cpu/CatKernel.h,sha256=xgya3MDFZuSx6GvrxfEYCwzjlqhjPgwzkK9wdPvf51U,560 +torch/include/ATen/native/cpu/ChannelShuffleKernel.h,sha256=_HVvj3sFQKRmPnsn2KYuwYIrzWqOZkHU06wnXVWsd90,540 +torch/include/ATen/native/cpu/CopyKernel.h,sha256=5RtfJ5tLE8jp2azBmsxJV0xCsexHxAzmne3Uc9Ly2zw,566 +torch/include/ATen/native/cpu/DepthwiseConvKernel.h,sha256=ogyYOVvDHyWg6ACz0jTZesJs07A5pyUXdWW08UrCZ5c,724 +torch/include/ATen/native/cpu/DistributionTemplates.h,sha256=3OdfgDag2-7YI_eygiRWc7dHguevGCdV_Wur7ncIMxs,18024 +torch/include/ATen/native/cpu/Elu.h,sha256=7hsZrAQh4SmgD_4eEv8E1Mkv5PkW1IkyCEXflgByRzM,3120 +torch/include/ATen/native/cpu/Gelu.h,sha256=gLK-AVzZIUwC_hPb5mXyomsuxNkbLljS_gMf8mmbkok,3358 +torch/include/ATen/native/cpu/GridSamplerKernel.h,sha256=NcAOuHU33S2mQT1pxM-o9MZJcvMacy43GQieH4YDfCI,1077 +torch/include/ATen/native/cpu/IndexKernelUtils.h,sha256=XUCtKIuJ4g75rN_GZekuUlgyFRfqZBr5yzAFlS1Kfx0,3181 +torch/include/ATen/native/cpu/Intrinsics.h,sha256=Is00ayXygoN_okRnxej4mDi0UCHphme37N7fVKmicvs,1466 +torch/include/ATen/native/cpu/IsContiguous.h,sha256=g8a8_i1hFP8Gu34DA9IC1TuSNYL54KsNeEiB1BctEAI,2623 +torch/include/ATen/native/cpu/LogAddExp.h,sha256=z2avx_FN6ANXdonid9GMF6JpwdevZ6SzCRQlynkANl4,2700 +torch/include/ATen/native/cpu/LogSoftmaxKernelImpl.h,sha256=6yR5jf2tWdYR03lf3-B0E7qr4mm5AlX10rBKORGK_tY,13404 +torch/include/ATen/native/cpu/Loops.h,sha256=JbAFu0_vDIzVA2irFOum9g6AHiPm83F2_W_OVfMvBDM,15402 +torch/include/ATen/native/cpu/MaxUnpoolKernel.h,sha256=gRdiFBOyWHNBjsDJclEudywwpCPhLOfMBYqKUaK6DK8,560 +torch/include/ATen/native/cpu/PixelShuffleKernel.h,sha256=gYm4HRFVMcBhRCObqeGH8mZWRfj0Yeha5YKZlyy5eoI,574 +torch/include/ATen/native/cpu/Reduce.h,sha256=9yhsH6l-lll7hyiWip9jnR0X8ZE8ZJJvjkhe1XDfhU8,12324 +torch/include/ATen/native/cpu/ReduceUtils.h,sha256=bT7DEvWx_0YHMvXhqVRN01YaQ8Lm9h4D7A8kKGdIjGI,8963 +torch/include/ATen/native/cpu/ReducedPrecisionFloatGemvFastPathKernel.h,sha256=vuSKm5PeIz56Ko3ctjEvg7Gm1Aqr0euypN-cqk_VYLc,1374 +torch/include/ATen/native/cpu/SampledAddmmKernel.h,sha256=hG9d1W8jvG-36slz4ApkeDEJrPu9n7o_5_9H9ba-X5s,576 +torch/include/ATen/native/cpu/SerialStackImpl.h,sha256=Sq8zzXe7u9c3o6sLY0VBHCNK92YORvU_GvbNt-NVKQA,5710 +torch/include/ATen/native/cpu/SoftmaxKernel.h,sha256=Ll2YpX52fims5NsYPrbT8ygfZp5wk7CwC9-7lGEYpTY,1189 +torch/include/ATen/native/cpu/SpmmReduceKernel.h,sha256=85iB6aCW_bH7v5iLwb_ofq6idbS-rkdktLx0lW5PNmg,1606 +torch/include/ATen/native/cpu/StackKernel.h,sha256=IaY88AYCdMcb0c3TWdpZVaGsTTqDOc4gDj3HDNFWr3E,562 +torch/include/ATen/native/cpu/UpSampleKernelAVXAntialias.h,sha256=LMvbkoyLh6gyLxT6J9IZvAMYuDRI67o1zc2HBbi-0sI,58404 +torch/include/ATen/native/cpu/UpSampleKernelNEONAntialias.h,sha256=9vZLT_LXwi2l1JTvo6Cds6f4ntEkeQHqxxub04KcahY,16293 +torch/include/ATen/native/cpu/WeightNormKernel.h,sha256=GzLqqFhn6W_bf0MRcBPOP8kl6qGCejNbdtWMytinYEc,804 +torch/include/ATen/native/cpu/avx_mathfun.h,sha256=5xPW_GSg4DSxPyz0s7nUgfy0qw6iqSUVTuEob-Um0Ho,17702 +torch/include/ATen/native/cpu/int_mm_kernel.h,sha256=VGOuXJXQ8zVU1GSBXkH-bFVrK-8TwjPuiBLxv9cocHA,1359 +torch/include/ATen/native/cpu/mixed_data_type.h,sha256=WAxkpUy7WJoR8cwYBENYWN_o5NicWAe6UaYq518p0AA,1662 +torch/include/ATen/native/cpu/moments_utils.h,sha256=AiVFmQj3IOdLTWgU5LYXNAQrPX2yL8jJ2YqIntESbf8,7162 +torch/include/ATen/native/cpu/utils.h,sha256=A0dq7dHUPvH9NwdZnFO5buqJbzpCMkVuG40rm8n8ZKM,7770 +torch/include/ATen/native/cpu/zmath.h,sha256=pXuvamS1M8HhO81LfeVy9zLi9-X4VniQadUpAHYCoMg,6876 +torch/include/ATen/native/cuda/Activation.h,sha256=os9YOpv6tVDWxq8FsjvMEf_ip-aj-g-6XZXK7XSWb7c,790 +torch/include/ATen/native/cuda/BinaryInternal.h,sha256=3c2TDjMEUA7aOoj_LHQM17CHB49TN7ajr13BPlLU6yU,1441 +torch/include/ATen/native/cuda/CUDAJitLoops.cuh,sha256=UHtIF3HcMsFINgAfPY1HwhhMNDaxgxGUmHzRShDVz2k,12131 +torch/include/ATen/native/cuda/CUDALoops.cuh,sha256=Emx5WIkKBDfnnGkM6r0R5GdVJxJI9uxUXvbfhjuN8ic,40879 +torch/include/ATen/native/cuda/CompositeRandomAccessor.h,sha256=ufMChPnW_wYVMaUT6MmtLvu_oX96wCMdXDyeGNGY0ms,1201 +torch/include/ATen/native/cuda/Copy.h,sha256=mcsIfjzE4YvB0opzHQzwysrCdlasG9f5PeZ4OVCIp4M,408 +torch/include/ATen/native/cuda/CuFFTPlanCache.h,sha256=uKMnLjAkwtkpkvrhIqye3PEGy4-4-DlILsjioYFP8gM,18182 +torch/include/ATen/native/cuda/CuFFTUtils.h,sha256=Fay9wPMjepT8wcVEFxa0BcsyD7eGrF8LeCxCL7VqjKk,2185 +torch/include/ATen/native/cuda/DeviceAddCmulCdiv.cuh,sha256=y_1B3yB1E43ZzHIWZiMK_d46CAavOcOoK_HBAs8Mscg,1282 +torch/include/ATen/native/cuda/DeviceSqrt.cuh,sha256=LXvb7RnB_WDeLmmRDAlc5y-I6bWJg_YBv5wxn1e6Qv4,839 +torch/include/ATen/native/cuda/DistributionTemplates.h,sha256=1VQCK26LYYgMoCx7Vy2G7yZqZJygRMZhOEuJvFm8nHg,29502 +torch/include/ATen/native/cuda/Distributions.h,sha256=sWc_6Qaj8BXxIjWCfmi7rsdLwvAq5jx1vicAqE6KXeA,895 +torch/include/ATen/native/cuda/EmbeddingBackwardKernel.cuh,sha256=TUm8dx58lh7P86KCI_wfliCtu8DKm4ybcAu9540NcpA,809 +torch/include/ATen/native/cuda/ForeachFunctors.cuh,sha256=4FHSnFIbdbBXjOQYwSquUhibdIQXhpms6YMW7z206f8,30310 +torch/include/ATen/native/cuda/ForeachMinMaxFunctors.cuh,sha256=-qBpnBW-iMbqxIWPIsXk2bEUwH91DV3vtUTVui8fzKw,680 +torch/include/ATen/native/cuda/GridSampler.cuh,sha256=wiPXUzbFGiQXF60jGAlqigEYMwrNEreGvVrlqC88a68,11229 +torch/include/ATen/native/cuda/GridSampler.h,sha256=P0YJuHG5fCMvbqJvHEYP4K8bn4i_vOvJ1NEDHwUNjxQ,1399 +torch/include/ATen/native/cuda/GroupMM.h,sha256=-L4d4RsZiACoeXzFuHkQFmvaxi8PuNx3OlILtXY-Sfo,581 +torch/include/ATen/native/cuda/GroupMMCommon.cuh,sha256=_mQeCqW2nyRjPOlompxxJKxN5wyh8WJWUhfJFRTO530,6706 +torch/include/ATen/native/cuda/IndexKernel.h,sha256=aotVt_oAfWzDL5AjtcEfCVp2lHop4KzwtQSR3SoXXvE,592 +torch/include/ATen/native/cuda/IndexKernelUtils.h,sha256=VtIHfQrdq92aKX-ET9NvR33XN4jO0r2M3M_MwHC6AZI,2160 +torch/include/ATen/native/cuda/JitLoops.cuh,sha256=PT5ek97JOjp45YfLpfHxZz0fGwzRPb6JUqirw-a5kXQ,7161 +torch/include/ATen/native/cuda/KernelUtils.cuh,sha256=DZKhQH_ABVE__BpthKqqC-zOlWIoHrooxfkHomVmEAU,15356 +torch/include/ATen/native/cuda/LaunchUtils.h,sha256=Pbewby1CzWNCP8etqYoWS9pNYmeRrIPILujKxTywS3Y,536 +torch/include/ATen/native/cuda/Loops.cuh,sha256=FZR4RYhNe20cHnC0OQCIujb4-J2iqOhp0tNbCU5DUEU,12338 +torch/include/ATen/native/cuda/Math.cuh,sha256=BiYbgQ8jK41prA-xRUv4xotrVlQ4a6eFovJhMgxbtVY,123364 +torch/include/ATen/native/cuda/MemoryAccess.cuh,sha256=YVJgkgH8dDmE4dHNx8Z5StQtCp-9jYhwrIs0AudAn2Q,22533 +torch/include/ATen/native/cuda/MiscUtils.h,sha256=L73h_i3i-iP9aoPPfLP1PUSmpBsTQ6ED4GiBboqkVI0,1188 +torch/include/ATen/native/cuda/MultiTensorApply.cuh,sha256=uN3LY8MTefHKLDDBR_Fp7cTqGAgsZfyJqjcgfJsd1Uk,15257 +torch/include/ATen/native/cuda/Normalization.cuh,sha256=gkq0oihV01mGKLQ0IWd8gsMyS6FemN3o-c4eDjJou_U,76332 +torch/include/ATen/native/cuda/PersistentSoftmax.cuh,sha256=dD0LAFWcskRkd3VYEQyGlglkaW-DcbCfW_9fcPAWv8Y,20485 +torch/include/ATen/native/cuda/Pow.cuh,sha256=OQysVDoNrRMJqiCd-d457gjAyrDY3xjgNdAQh_Vo0RI,2408 +torch/include/ATen/native/cuda/Randperm.cuh,sha256=rMZPMF3X_t5foRCbZIjUNg7qKDxmEDtN1BBPyc8mQ-I,2362 +torch/include/ATen/native/cuda/Reduce.cuh,sha256=Ev8iOMnUHamRay_9-3YXEclSDCGOZdeyOImIiWoV9kE,50301 +torch/include/ATen/native/cuda/ReduceOps.h,sha256=1S_nThLRx9CAF-TatBDunTqEal1ciIepo525hWzBDcU,803 +torch/include/ATen/native/cuda/Resize.h,sha256=OrAewKGX34CeDGNxaF_6ja4Z4Ld7UdqTWXwlxM8Mic4,1798 +torch/include/ATen/native/cuda/RowwiseScaledMM.h,sha256=w1t47IiYnTc9w2lGdhWRA4Kg-TIaCKBaE0Y0rjmMl1w,623 +torch/include/ATen/native/cuda/ScaledGroupMM.h,sha256=Ig4NQervFHI5rwjR6e8VZeYhz7lIr5WrEWx0uKwSNWg,668 +torch/include/ATen/native/cuda/ScanKernels.h,sha256=vFFvo1hDdUGcZ6pBJSMPuMq3d3HSvyESdQep7KOmWxU,1033 +torch/include/ATen/native/cuda/ScanUtils.cuh,sha256=0yPz3LXhdf7thAKU5n6CMA_dbava1RYHL1SXurED0gY,21650 +torch/include/ATen/native/cuda/Sort.h,sha256=Ak6nIQWuEAAmsUVIIvp7XEa8-pDKNOPBe8lY9g8J-c0,655 +torch/include/ATen/native/cuda/SortStable.h,sha256=0bVzhFzFllv-yHxlYiIrJiUMB1vkAGkuchYwUOOfI1c,693 +torch/include/ATen/native/cuda/SortUtils.cuh,sha256=_VR_2RT0Wvt46x_rHEFf61CTPDhi1xai9s1RSwXITGQ,13466 +torch/include/ATen/native/cuda/Sorting.h,sha256=CWfKEDadWdjAy-osIW9yRNCPtpm0ifR9V0Mfy2kTrf4,650 +torch/include/ATen/native/cuda/SortingCommon.cuh,sha256=7mvhis3CPtIu6_tyCiyi_In6u-ozg-AwKWmq6Aj86HM,5710 +torch/include/ATen/native/cuda/SortingRadixSelect.cuh,sha256=1AmvW02mVhUSeOyhhoTaVaCDIpJyDqBCaohelsNTK9Q,42341 +torch/include/ATen/native/cuda/TensorModeKernel.cuh,sha256=TLm-0Mxr3GZ2ktHf8kK8JapE0nmU0JrlLfXUeLYlpQc,14683 +torch/include/ATen/native/cuda/TensorModeKernel.h,sha256=xxQTk4ZtcEQG4EA6jVkigxUAFeL5rAgBVFgjm6vBW9g,673 +torch/include/ATen/native/cuda/TensorTopK.h,sha256=Yz2XLDh4W77eya4wUV70dJ3IqTm-r2PbN_oTOK4O67c,508 +torch/include/ATen/native/cuda/UniqueCub.cuh,sha256=5UcInlJD8-4H0pDNDw7XBTR2Lgcsf24rKZ-4p2R8VAQ,556 +torch/include/ATen/native/cuda/UpSample.cuh,sha256=ilf5bsh3nfgd421zzMPS77zv8yrCYkb3A5G_S317VXw,11892 +torch/include/ATen/native/cuda/block_reduce.cuh,sha256=rcTxhFDkP28XZafyxQfGWqHIgRecsCtHQZFA_ss4ye0,4733 +torch/include/ATen/native/cuda/cuBlasCommonArgs.h,sha256=eTaQRfMTPe7bdAnJ7ddHKXwkFbqMRtBc2He29qd2CXM,7119 +torch/include/ATen/native/cuda/cutlass_common.cuh,sha256=hVn6wIrFmMVY_DwRvPdNKpLe82ss50Do8p99w_DVXbA,1531 +torch/include/ATen/native/cuda/fused_adagrad_impl.cuh,sha256=LbnP4NqPrpXCPup_huZIMvHz-_fZt_Mgktil69vpySg,1099 +torch/include/ATen/native/cuda/fused_adagrad_utils.cuh,sha256=_GIkuYrr76j0vaT90n3b5UANfPWKtVVxjtAOO9Tbwjk,4476 +torch/include/ATen/native/cuda/fused_adam_amsgrad_impl.cuh,sha256=wnDK1DTBn9kwV3Kzybo0t9b_WEFhxg806saEN3T3wLE,1283 +torch/include/ATen/native/cuda/fused_adam_impl.cuh,sha256=33CbBaJsUWSO9nO5mvJN9XhD0sngVwemzdueL_2AQ9g,1195 +torch/include/ATen/native/cuda/fused_adam_utils.cuh,sha256=uYaphOgnWTSHuIFKdWqVSPGgwv_LvsJlswpdkFHiJeQ,19839 +torch/include/ATen/native/cuda/fused_adamw_amsgrad_impl.cuh,sha256=y00SBNCAsVlsZ1yNMvoxQVfIJyDRr0j_oK_QeKrwBK4,1285 +torch/include/ATen/native/cuda/fused_adamw_impl.cuh,sha256=NEimgkgX2RGXMO_KGfGCQ37GPrHi7NXdGeSbp-4dtLU,1197 +torch/include/ATen/native/cuda/im2col.cuh,sha256=GK-g822eCAPDyguDVMb6RIxm2jzAmbTi0d7Loj5Z_h8,9954 +torch/include/ATen/native/cuda/jit_utils.h,sha256=03BRLVBw9yC2PPzbaUB0MqAO5IYCnvCwbi1YFQKfc-w,7365 +torch/include/ATen/native/cuda/reduction_template.cuh,sha256=_q76j_Z_lW_B3k2hXwJHGnGnj8HBefSlNitUWNh661I,22057 +torch/include/ATen/native/cuda/thread_constants.h,sha256=YeD3M6Aacp-WA2zYS3hkVzHRJlNPPsyXKj6R08N0FtI,914 +torch/include/ATen/native/cuda/vol2col.cuh,sha256=Pm5y-TyCSSlUZCkom13iE85Efr9V141hhYcshxE3JBo,8347 +torch/include/ATen/native/group_norm.h,sha256=3u_A32TeaFVatZXYQChtc-98oSaaBZBC_m253cOhEYI,1159 +torch/include/ATen/native/hip/bgemm_kernels/bgemm_kernel_collection.h,sha256=3QNiGsAXKaS5wl9jlOUdp43uqc7ejrc2Fa4B0imnqfg,3708 +torch/include/ATen/native/hip/bgemm_kernels/bgemm_kernel_template.h,sha256=QTcgcIQ40ciKvIZjhBBXhyV_79qOTwuIYa0YRJR4rxs,6209 +torch/include/ATen/native/hip/ck_bgemm.h,sha256=2YM3vQrL0cznzCtrLD8jdyj1YfvbkZzWL4rKOIQm0sg,699 +torch/include/ATen/native/hip/ck_gemm.h,sha256=j5WmuO-ZeBqgGgdwMbXwZ7lgDhuPsw5zRGgQWzlHMSg,933 +torch/include/ATen/native/hip/ck_gemm_template.h,sha256=ia8G2fb8ZeWQrQfBRXELE80h-9ZM6i4qychghyB4GKg,15834 +torch/include/ATen/native/hip/ck_group_gemm.h,sha256=zdAmCdcA5YFBDElcsRJuh5RtKnW8vfOxFOcwzH_4vYM,643 +torch/include/ATen/native/hip/ck_types.h,sha256=afMlwkSm6I1DhOS6v5jDSwOal7C1g0Zl73nNmeiajew,1849 +torch/include/ATen/native/im2col.h,sha256=fMatUfeOB6WmPopF-fxFy_dATyP8C43su7DJaqveaXs,5491 +torch/include/ATen/native/im2col_shape_check.h,sha256=3HJPR3_e-amDwi0sZr2ylKbFxdoIRGNP9vPT8bW6Vg4,7589 +torch/include/ATen/native/kleidiai/kai_kernels.h,sha256=_bbIJKjF-_rBeWJPMTBXV4TylwpVPt1MwEEynm3V_gg,1346 +torch/include/ATen/native/kleidiai/kai_pack.h,sha256=x8qdEciDczhNbVYxzI0hAqIt3bxj3peMxDM5X7AnVRw,3009 +torch/include/ATen/native/kleidiai/kai_ukernel_interface.h,sha256=Pnj6ZOTnfrEbIvx2Q2epTrWwqimzaUbVqgYZR35Ib5A,8379 +torch/include/ATen/native/layer_norm.h,sha256=nkD5VO_N5SxQ-8CyTcIi0OZ7UZytMrmrQkToqUOkXz0,4874 +torch/include/ATen/native/mps/Copy.h,sha256=cWZYhk8NCIlRVberjIBYriUyhpU7to3gVc5qp4hJLW8,549 +torch/include/ATen/native/mps/MPSGraphSequoiaOps.h,sha256=WH7-8aQhNo5GK5bK-dY9xSSMg50s5GzJPp7Rhyfzq0o,2124 +torch/include/ATen/native/mps/MetalShaderLibrary.h,sha256=Xj0Vn8-kQ26LxPFXzPt95jnlmRhm_NUrARJ0oowg0ms,6882 +torch/include/ATen/native/mps/OperationUtils.h,sha256=CYPVzVxfaycR8tlWJI0r9r78_AB4yr22O_98QWkm3Jg,29961 +torch/include/ATen/native/mps/TensorFactory.h,sha256=8h9YbcxYmei_ZpCZo2km9xCxUsI8c-07wSqyerPFXmk,1258 +torch/include/ATen/native/mps/kernels/Activation.h,sha256=leCfxgI79PkwRDayn8hE4PkfBPRxajfRZ1KrAU-OKDE,461 +torch/include/ATen/native/mps/kernels/EmbeddingBag.h,sha256=iqVw27waBNcFgZq8_q5Wo0JSc0sq6kzF0D1MqAf40UM,1622 +torch/include/ATen/native/mps/kernels/GridSampler.h,sha256=FhbSBk-7k3Q6kWFHQSs8Cp3KoOw-aVXkY_2_jUPGhYk,737 +torch/include/ATen/native/mps/kernels/Indexing.h,sha256=AeqM1zzjdJ7sfsnqLm3k735x4hOnovtMRCaQl7YpHk4,632 +torch/include/ATen/native/mps/kernels/LinearAlgebra.h,sha256=0XZfcQL4T5iB-Tn1bNDKJJ4_ZvYcIg3OeUdUTjNMXSo,801 +torch/include/ATen/native/mps/kernels/Pooling.h,sha256=AqZYSkn5btqhWq_CnsS9yGB9_S17BI7RRPKxxEJMKw4,2586 +torch/include/ATen/native/mps/kernels/ReduceOps.h,sha256=CZZ2lxLfjdATI7BocG0zsvhdgz3yUXC6wCLcKo7_l4k,679 +torch/include/ATen/native/mps/kernels/SamplingHelpers.h,sha256=3ne2EzzkM7GbJBWvfxTl6eZsG1UyXXV8h7DpykdtG34,1519 +torch/include/ATen/native/mps/kernels/Shape.h,sha256=a7AyZzapWbkD_liMf400jvYyJLDr8UKP57DRUv0whsA,811 +torch/include/ATen/native/mps/kernels/TensorCompare.h,sha256=aSdaemSF2GiRF_7CALJZ4yktIgof63-Tah6zLnI_lV4,338 +torch/include/ATen/native/mps/kernels/UpSample.h,sha256=XUU1fisZof9f7SZVxCuKMy3CEjFITiiqkqMEjKnGja4,615 +torch/include/ATen/native/mps/operations/BinaryKernel.h,sha256=Ek5fMGOxQ3_wtcTk5xOBsJO4GCJJanbdHMcGzF0mkpM,514 +torch/include/ATen/native/mps/operations/FusedAdamAmsgradKernelImpl.h,sha256=G1xwWT0LLYyUs8aHXn7Up8sxahjir4DgGsyHqaRIXLo,1235 +torch/include/ATen/native/mps/operations/FusedAdamKernelImpl.h,sha256=OkmiF5mPsfFZToRmusrwik-P_lyvo49HskPCRq28hYM,1142 +torch/include/ATen/native/mps/operations/FusedAdamWAmsgradKernelImpl.h,sha256=Ho9opeG56HSH8yC8Hb7-wWYH9kW402dQI4NR5CeEPcI,1224 +torch/include/ATen/native/mps/operations/FusedAdamWKernelImpl.h,sha256=xXf1MVaDz2m_RUB6EsuEEYWwfWaV6Eev_cgKOdc_iCs,1145 +torch/include/ATen/native/mps/operations/MultiTensorApply.h,sha256=rZt4ixFlCLtxNMGESV0QqlkTWtQPjOM68ZXX8fjPRt4,16278 +torch/include/ATen/native/mps/operations/ScanKernel.h,sha256=5yN_lLVWwor6jk1Cx8ey-zQUkIFvdExF_pn3EIunWfg,456 +torch/include/ATen/native/nested/NestedTensorBinaryOps.h,sha256=NMoLtp9nf45FWGIvt451kQdx1lHmfiNRh0AtEdxEa6E,667 +torch/include/ATen/native/nested/NestedTensorMath.h,sha256=bQj336uDnNYyflProhEgl8eh2FVEPAZFBUIQG9k4uo4,2972 +torch/include/ATen/native/nested/NestedTensorTransformerFunctions.h,sha256=lZY9I9b3J06iT2alJeCCEqGR_hfbvVho2l0Pr5Nk3E8,3086 +torch/include/ATen/native/nested/NestedTensorTransformerUtils.h,sha256=a4vfhIgp242JzWWPVW4U4ctPGPwgSdO27Rgu8pGveYE,1652 +torch/include/ATen/native/nested/NestedTensorUtils.h,sha256=6-cVbZmOmDqVaPHD7eN0Oqb9UZzPQt0yZIzpN0hhgoc,16084 +torch/include/ATen/native/quantized/AffineQuantizer.h,sha256=4HhLJpNCAXkWvnW09Alk4_QCBa1igqV4X66QyNk54Us,3969 +torch/include/ATen/native/quantized/AffineQuantizerBase.h,sha256=UDX0a_eLF_a2JDVrSf-Y-VGgEk8-Ne25Z2KqmPBUl3o,1747 +torch/include/ATen/native/quantized/ConvUtils.h,sha256=8F1-pAtLWECGODsMOQGp8WcmeEns8ZxwuIO9Ilfvuss,2494 +torch/include/ATen/native/quantized/Copy.h,sha256=P3SjvRGc1TR2-lQ1TmGd0l1BzlB1NVEzm6C8LrtMXWA,410 +torch/include/ATen/native/quantized/FakeQuantAffine.h,sha256=mneUnXSFk6uTqtr8vDp8u0ARXM_qCoM2Cq0PLqe2iiI,2041 +torch/include/ATen/native/quantized/IndexKernel.h,sha256=7n0KvKky8K1dARuMLS0LrxMVfmXepTQ6qzT1VEvcdnE,834 +torch/include/ATen/native/quantized/PackedParams.h,sha256=TjRb8G6SvN_lDqEh3Gjf-lAbtJ1hmNYWJ_tWWC02g9A,4855 +torch/include/ATen/native/quantized/cpu/ACLUtils.h,sha256=gP4f8Vojx_EBJBcJ2-yjmZXegLGxJ9wYtwKpPEHxmpY,8141 +torch/include/ATen/native/quantized/cpu/BinaryOps.h,sha256=OvT3b3V7CcNXnB6iZp-GK8tT7eR9VKBiGsZ4wQSjTEI,422 +torch/include/ATen/native/quantized/cpu/EmbeddingPackedParams.h,sha256=9StMsjybpzchN6Uo0DqF4Tq7TTuQhGUDSrvmN4IR_nc,1175 +torch/include/ATen/native/quantized/cpu/OnednnUtils.h,sha256=eIce-wlwIWkk2OoGEsTqUFlgrRTVRsvWvBxnwlpVU6s,15513 +torch/include/ATen/native/quantized/cpu/QnnpackUtils.h,sha256=sCMzRkF9QMaDiMU_0IbfdWNbfd_XNe7gHV3oB33oMVY,17663 +torch/include/ATen/native/quantized/cpu/QuantUtils.h,sha256=FGCsFT_VNSDEd6C_UcokTYSuMtw1FvgSd6efw_wHfww,8501 +torch/include/ATen/native/quantized/cpu/QuantizedOps.h,sha256=UFaInkdktyPSpCbbcxkmfhca2B1jxF0baSx9XZtDxQY,8864 +torch/include/ATen/native/quantized/cpu/RuyUtils.h,sha256=F7tDQoOD_kZeAHhjbQA1BuluvmbT2brbp5J7XAKYuOE,592 +torch/include/ATen/native/quantized/cpu/XnnpackUtils.h,sha256=KijeLMwXrpDfgJlZgyEUYdvnBl5RvLzQLg0HSr-qhMQ,14359 +torch/include/ATen/native/quantized/cpu/conv_serialization.h,sha256=u33Rn54djfJ0l1E7Hi8PFsxpiRGNwoXSGr9Bz26Rszk,13142 +torch/include/ATen/native/quantized/cpu/fbgemm_utils.h,sha256=NqmpZpLfewpnwH7avgftbcP8nzmF9fLgUuEsKywqm4A,12278 +torch/include/ATen/native/quantized/cpu/init_qnnpack.h,sha256=-_t7Ge0F62TBT3YIrsEWds7bYYFjdtb-GCO0p1Xkb30,375 +torch/include/ATen/native/quantized/cpu/qconv.h,sha256=-nk0VPofdj0D8WiJFD88F_ZQvXSbRnldUx_SNvZETao,3809 +torch/include/ATen/native/quantized/cpu/qembeddingbag.h,sha256=IHc-UVtGXTW1ZOsCIAnCwUecwqtFYLzaafki8a7D5o0,1269 +torch/include/ATen/native/quantized/cpu/qembeddingbag_prepack.h,sha256=R7xEP6Xcg3gVU4ZqOMG3XWxr0kS5UE3i5lk6B4woLs0,626 +torch/include/ATen/native/quantized/cpu/qlinear.h,sha256=lzjM6vKSEiXGSRhe9V9Q3qIhp1dPBm1hsC4VNl2Pq84,1932 +torch/include/ATen/native/quantized/cudnn/utils.h,sha256=qrdJrTM4Dq5k1j6gbRYS8yfUaghFasD6VOdu0JMLHho,10732 +torch/include/ATen/native/quantized/library.h,sha256=68goeCvNPxaYgPVXKxldAUpXQVdtObbGtl50lJwqDZ8,443 +torch/include/ATen/native/transformers/attention.h,sha256=M9kUVQO91aN83n5pJWaHRc0JgxK7eseS6vV58nwiOFI,2520 +torch/include/ATen/native/transformers/cuda/flash_attn/flash_api.h,sha256=FHSqediqbOOZhNvDwKrZ26KDq4GfA0Nw5c-3CYBSTuc,5608 +torch/include/ATen/native/transformers/cuda/flash_attn/static_switch.h,sha256=oh3hsokaOuamc3t3wnjbWVaw-3jMwU7FdizCHDw2hFQ,4021 +torch/include/ATen/native/transformers/cuda/mem_eff_attention/debug_utils.h,sha256=hxFI0_GO_WCTXvNcbXDw6JLd1ZdRV7SczH8B4x7mt_8,10508 +torch/include/ATen/native/transformers/cuda/mem_eff_attention/epilogue/epilogue_pipelined.h,sha256=oBygv63GlhEVVSGPJX_SA6ClKGdnjg9tKPLD0wRlirw,22541 +torch/include/ATen/native/transformers/cuda/mem_eff_attention/epilogue/epilogue_rescale_output.h,sha256=aaF13g1a-GpjSSnkWlGSmbdyi6I3OCVoiREPLEEn_Vc,8036 +torch/include/ATen/native/transformers/cuda/mem_eff_attention/epilogue/epilogue_thread_apply_logsumexp.h,sha256=EiwYb10Y3xRNcSyJYe7B5F8e5fq9JJKkBfMAiNesjrY,6233 +torch/include/ATen/native/transformers/cuda/mem_eff_attention/gemm/custom_mma.h,sha256=ODUdD2YzVUUDgp0bUyIW6a7IfKJ5xBrX8VGgiTzD-t8,2745 +torch/include/ATen/native/transformers/cuda/mem_eff_attention/gemm/custom_mma_base.h,sha256=CZnj6_RVJOuf0L2qqjhBg3610A4ZOsqpTnsu6TlVEHo,6495 +torch/include/ATen/native/transformers/cuda/mem_eff_attention/gemm/custom_mma_multistage.h,sha256=_kvJ_lQvprby69IWo9YgYtlqIM02u95wg-FACAZWqjY,27535 +torch/include/ATen/native/transformers/cuda/mem_eff_attention/gemm/custom_mma_pipelined.h,sha256=j0leQxb_tkfXkUy6nmpGo4Un_j2W9iIvXe9a2BHmgcI,14399 +torch/include/ATen/native/transformers/cuda/mem_eff_attention/gemm/find_default_mma.h,sha256=u2YDMC6WhwawOznVd-hUHEz87Tbn_vxTdcYztSPmnvk,5430 +torch/include/ATen/native/transformers/cuda/mem_eff_attention/gemm/mma_accum_lambda_iterator.h,sha256=Yl5F-XCv26rf4XfSVXcEwAiqBbGMXGYHlvMkb-3AuvE,12604 +torch/include/ATen/native/transformers/cuda/mem_eff_attention/gemm/mma_from_smem.h,sha256=MQKS3DmL_g3dyCKrwyx-N_vHb9c5vRau2pR9YGF-ew8,69054 +torch/include/ATen/native/transformers/cuda/mem_eff_attention/gemm_kernel_utils.h,sha256=c8HRDeKpXFmf_pYPv1hcPWXETI7G1k5oZrmAS9J74kw,8862 +torch/include/ATen/native/transformers/cuda/mem_eff_attention/iterators/default_warp_iterator_from_smem.h,sha256=_QDBg3mpYTLvkm6QmMPvCnlXKH-6q5UBgxjFnjDbeDs,6081 +torch/include/ATen/native/transformers/cuda/mem_eff_attention/iterators/epilogue_predicated_tile_iterator.h,sha256=ji1fnnW6YcwUF0-PZ46XcVX-PiOmhc6V8GLk_TM383Q,24110 +torch/include/ATen/native/transformers/cuda/mem_eff_attention/iterators/make_residual_last.h,sha256=5TwEgMXnapiI8dXgSD2qKaZaTHdTmu4k5OEiIl8Iaok,1904 +torch/include/ATen/native/transformers/cuda/mem_eff_attention/iterators/predicated_tile_access_iterator_residual_last.h,sha256=t1ZDqOd92TNY7poZz8aWKgxcEYxo5UQZ6Lr_trMdpKU,64720 +torch/include/ATen/native/transformers/cuda/mem_eff_attention/iterators/predicated_tile_iterator_residual_last.h,sha256=gp7am6w0DCJEhboAUVzw5hXDASCxHIh-6bIOWxERn_A,64753 +torch/include/ATen/native/transformers/cuda/mem_eff_attention/iterators/transpose_warp_iterator.h,sha256=a4X84U9_G20Fc_XFD3fCkfjvzo2a7ako4AS44pj8ngE,1215 +torch/include/ATen/native/transformers/cuda/mem_eff_attention/iterators/warp_iterator_from_smem.h,sha256=xh58eUP15rAToajIZdPtEldFhQaezl8YbF3vKyHW4rw,10309 +torch/include/ATen/native/transformers/cuda/mem_eff_attention/kernel_backward.h,sha256=fF5Gh_8XIbqv4jRg3q2IXS7PXK7dy1yf11J-039MUEM,100289 +torch/include/ATen/native/transformers/cuda/mem_eff_attention/kernel_forward.h,sha256=GwwC8VHauUblm43-BHo7Cm-u5UgdnjeyYQrhHCoXTK8,54368 +torch/include/ATen/native/transformers/cuda/mem_eff_attention/kernels/cutlassB.h,sha256=fE6YB0JhXGXoaybYqbJG_kyv1wtGkarMIcCQhUrV800,95653 +torch/include/ATen/native/transformers/cuda/mem_eff_attention/kernels/cutlassF.h,sha256=xCBo8Ic7gnlqjXZhcFMIK2d40oZMRhpXY_h4zS-fDNs,26210 +torch/include/ATen/native/transformers/cuda/mem_eff_attention/pytorch_utils.h,sha256=elA-QEGbaRvCdvmzJBgImCcDhyGyOb4f1shhYMiQ-as,1214 +torch/include/ATen/native/transformers/cuda/mem_eff_attention/transform/tile_smem_loader.h,sha256=tf0MqYkM9JIaMj88yQfIWgzaBMfaIPKMAojAtJgze_E,2406 +torch/include/ATen/native/transformers/cuda/sdp_utils.h,sha256=HbGU4wsXmqHb5zdoQqYLTQ8FxmzjDBn-3FVA0u2Dc1g,881 +torch/include/ATen/native/transformers/hip/aotriton_adapter.h,sha256=GQ5kXAMLeiUYPBla9QHPiGCTCWEuR2B7hlju1lyp1no,6112 +torch/include/ATen/native/transformers/hip/aotriton_versions.h,sha256=-cM4CU3Of2lVciNyxfkGy6mCVq7Jo3qB6SLfAhnNvuU,697 +torch/include/ATen/native/transformers/hip/flash_attn/ck/me_ck_api.h,sha256=2Au0JqJZmYLlAovY6rD_-qFrnp06USJIMe58wDfDRak,2021 +torch/include/ATen/native/transformers/hip/flash_attn/flash_api.h,sha256=U4mNQNV-HAUAEd1Cirn5VB8qMkbdOcylZ6LiWXOGpz0,21108 +torch/include/ATen/native/transformers/hip/gemm_kernel_utils.h,sha256=2r4RXOKhLO517Ex4Vrt1Asa2xU54DqV6mi2t7uChnoY,1729 +torch/include/ATen/native/transformers/sdp_utils.h,sha256=g0V9b6B0GnpezL8TMQpO6a49pwUeKx8onydtOM08Nk0,3471 +torch/include/ATen/native/transformers/sdp_utils_cpp.h,sha256=0hSyQX8zGHEJeDh_OoGx-_hvLaBE6FK_p5uFNf1BmjE,18169 +torch/include/ATen/native/transformers/xpu/sdp_utils.h,sha256=TJP33v_Umxffcwa04qphK2N93jnnpWKMDp9hujoTO4c,754 +torch/include/ATen/native/utils/Factory.h,sha256=hulmOFEIX_WWiqQwSH-RwO_eeOS0yN5GiKK6mCeBPlo,741 +torch/include/ATen/native/utils/ParamUtils.h,sha256=ih8hZmb-uy6FgF43gZJJkP280JiXnh56tEzH1QYm2kM,1452 +torch/include/ATen/native/utils/ParamsHash.h,sha256=vQO1aftMAZP6KS9_10QogPZ3W9vljb3FFUz0wW3lkOo,2794 +torch/include/ATen/native/verbose_wrapper.h,sha256=tSL4joW3TAZdsqba7Y7Cauyq0Jp3G9C4116lGmdTs6c,447 +torch/include/ATen/native/vol2col.h,sha256=zAA7LrKdvrCGsuitLlcWXHMD7V75Gh0C21r6-wW17oM,3809 +torch/include/ATen/ops/_adaptive_avg_pool2d.h,sha256=VKv9hXeA4KAtFD4NCgbXz8wfdejTzHII8vcP5_D4oJA,4395 +torch/include/ATen/ops/_adaptive_avg_pool2d_backward.h,sha256=8Ubr9PuqM_27gN2Yyk03vq3RrO8Hwovqoy2VVBrxIuc,1706 +torch/include/ATen/ops/_adaptive_avg_pool2d_backward_compositeexplicitautograd_dispatch.h,sha256=mLkVi1HCGh9nSBkKESDUAqtfRaZ0Z-00rW8-UgIq554,1231 +torch/include/ATen/ops/_adaptive_avg_pool2d_backward_cpu_dispatch.h,sha256=OsC_c6UUjet4H_zYi7IIZw0sKrzC0V9ztHGk9pjFhnQ,1029 +torch/include/ATen/ops/_adaptive_avg_pool2d_backward_cuda_dispatch.h,sha256=6QcvbVmZky7Q0hbelPJyv3I10D1R0b0aaVfPp7bNaww,1031 +torch/include/ATen/ops/_adaptive_avg_pool2d_backward_native.h,sha256=r7HHxy8BF7Ou5o3Z3lS0FGx3j-7zaNeMUlVzix4fHHw,1034 +torch/include/ATen/ops/_adaptive_avg_pool2d_backward_ops.h,sha256=BhB-sEfb_DaxKIKckF_68PuVI-wCY_fOjgGMYehQG-s,2147 +torch/include/ATen/ops/_adaptive_avg_pool2d_compositeexplicitautograd_dispatch.h,sha256=k7uR9x4eqtcgWoutyVO4IR9WdCp45_k52Zjb0rLgbLQ,1472 +torch/include/ATen/ops/_adaptive_avg_pool2d_cpu_dispatch.h,sha256=lp8Ne9a25VTEcrtpsYruG9qlsSKA9PlJ320oGoEubdY,1125 +torch/include/ATen/ops/_adaptive_avg_pool2d_cuda_dispatch.h,sha256=NuLYus9z6EKbte63g72zIR_z5zHzz0VaSggJ45L_54o,1127 +torch/include/ATen/ops/_adaptive_avg_pool2d_native.h,sha256=yQB5NsFghSasLHbkDz-XawSCqyHzjQVxamL0UhK5ehI,1230 +torch/include/ATen/ops/_adaptive_avg_pool2d_ops.h,sha256=99HZh1i09c0SA5KV64nk-VTPK4vaeIEOzjW5jY6-BBg,2105 +torch/include/ATen/ops/_adaptive_avg_pool3d.h,sha256=v2a_8P7iuJ06UvQKIWKYI5_HxhaIOSnfo_RlAO_gUu8,4395 +torch/include/ATen/ops/_adaptive_avg_pool3d_backward.h,sha256=3cVh_GUjUbgLPJLRTW2e3Ta97b6bggisWhNN2k79_FM,1706 +torch/include/ATen/ops/_adaptive_avg_pool3d_backward_compositeexplicitautograd_dispatch.h,sha256=43DpFO1vxssk3yj7QYLBfdY6-jrjwVZmjrmBgPmc9GI,1231 +torch/include/ATen/ops/_adaptive_avg_pool3d_backward_cpu_dispatch.h,sha256=UM0xvlbTYxwnsDKzEOqaosV9s3cNUIWYt29gwQqOnbs,1029 +torch/include/ATen/ops/_adaptive_avg_pool3d_backward_cuda_dispatch.h,sha256=_350PXjjuL0GNI753yx8iKuZwKQ2Uh9c6zLWjih2uXw,1031 +torch/include/ATen/ops/_adaptive_avg_pool3d_backward_native.h,sha256=KCwuX9lPBO2jfosSnOiPqNJ9o8uXg8GSPXKtEDUXnGY,1034 +torch/include/ATen/ops/_adaptive_avg_pool3d_backward_ops.h,sha256=4K6JCalwtIBYas68HT8fgERDxVShrbLhhZbTP791-co,2147 +torch/include/ATen/ops/_adaptive_avg_pool3d_compositeexplicitautograd_dispatch.h,sha256=t-Iy_nYO5oxgcoAEZtM8bUZymZwR8aeBdVWHimIff38,1472 +torch/include/ATen/ops/_adaptive_avg_pool3d_cpu_dispatch.h,sha256=uJjRa0Koz3qaFx-e9SlGZ3io2is7smRWro2zH5KSxK8,1125 +torch/include/ATen/ops/_adaptive_avg_pool3d_cuda_dispatch.h,sha256=3iRhAMZ1qyofZpU8uIIKN5adBjekHe6upXAwr55SgTY,1127 +torch/include/ATen/ops/_adaptive_avg_pool3d_native.h,sha256=XtGD7YLyX-gz9KqSHVRAhk2D8PlBytuEg332Xg0APTM,1119 +torch/include/ATen/ops/_adaptive_avg_pool3d_ops.h,sha256=EXAipK5kpqItDp0H81q9hS8TnA7goCYh-iwBeZErOyM,2105 +torch/include/ATen/ops/_add_batch_dim.h,sha256=VIz0gGHwr_Sye4buLvGsa2nTXtotVQNl1qne_Bub-1E,1001 +torch/include/ATen/ops/_add_batch_dim_compositeimplicitautograd_dispatch.h,sha256=ZfoHh_My_mxOKUlNz8nNDG1aFL_oWJiLtMwwV_Xay-A,1060 +torch/include/ATen/ops/_add_batch_dim_native.h,sha256=h2Kk9wSX8FFzZCjJh76H6TyJg9gXcP_bQIcpkn8T2zs,772 +torch/include/ATen/ops/_add_batch_dim_ops.h,sha256=0y0o7r6MA1vnR77n2LsW5ukEaHIqxx-uzeE-ZMD8DFs,1347 +torch/include/ATen/ops/_add_relu.h,sha256=vnceR2sZ-FMjyE00C_I_vwd_SKNHuKrtT3XjEuFloaY,3035 +torch/include/ATen/ops/_add_relu_compositeexplicitautograd_dispatch.h,sha256=hUNyJx_nMiZwYeb5i75UP5uLcN9UFLIjxsx1jVHl0Oc,1233 +torch/include/ATen/ops/_add_relu_cpu_dispatch.h,sha256=REC2x8KKagTEtAwbtfHN4RtIjXIONz5eelHVd86rG-I,1627 +torch/include/ATen/ops/_add_relu_meta_dispatch.h,sha256=JLWkg0N4MNaLrhV7J0PNevRi3P2XVcA56XSNDZRLKfc,1138 +torch/include/ATen/ops/_add_relu_native.h,sha256=ptS5iBg9uD4tzaRHGaOtFCIEC4eYGx8mwqoAyn_5PBA,1382 +torch/include/ATen/ops/_add_relu_ops.h,sha256=0iMn3D4ZwCoKsi_9CDvGIpkfZOiLnApPTDQ8hDFnJt8,5094 +torch/include/ATen/ops/_addmm_activation.h,sha256=NFXY6zE8pZJ53l0hwyQTFPJPbbD9fVS4iNZNQUwCywQ,2101 +torch/include/ATen/ops/_addmm_activation_compositeexplicitautogradnonfunctional_dispatch.h,sha256=zc4M5jyoTUOOvCUdQ7DFlFzvsy8hd-u8sHt0ahifELo,1181 +torch/include/ATen/ops/_addmm_activation_cpu_dispatch.h,sha256=QFoZ5pSn68aAgyxyCXBq6CGRCEhBVIESOCloETpWfg4,1532 +torch/include/ATen/ops/_addmm_activation_cuda_dispatch.h,sha256=x-ArIRqgPH9MaWVhIWPt2PPgTuYJucA2NjkQwLa5Bnk,1534 +torch/include/ATen/ops/_addmm_activation_meta.h,sha256=zQs0DP6jEuXc131wioxiuLSx7f57u2GB6xYySqzErbQ,948 +torch/include/ATen/ops/_addmm_activation_meta_dispatch.h,sha256=LJ-qSa6F7dtiale1qdWtblQDpyNQ0qCohC7DI0bcUZw,1534 +torch/include/ATen/ops/_addmm_activation_native.h,sha256=9KrUGdrLmXNecFwyiGaXDeU9XMBlAA0ostjW9jnQmHo,1285 +torch/include/ATen/ops/_addmm_activation_ops.h,sha256=cDCyYLEx9WwDg1ymxPYEUvB_FdmXqphuzTD9Af138-U,2662 +torch/include/ATen/ops/_aminmax.h,sha256=_JKA35j3Hw6HhCJqbcqHKACzDK-dEaerEL_nvQnLbAU,2504 +torch/include/ATen/ops/_aminmax_compositeexplicitautograd_dispatch.h,sha256=-UB2ENjtdZhPT8vTj4fd-XWhNI444dgmGccSVJtNxEk,1534 +torch/include/ATen/ops/_aminmax_cpu_dispatch.h,sha256=JfDl8NSKZ_KuT8advdH0RUiGvkQroIbrypcYO0zoBhM,1115 +torch/include/ATen/ops/_aminmax_cuda_dispatch.h,sha256=cbjKuLphT7N66jabChNFqo2oWbbFKAyg8t5LIiePLf0,1117 +torch/include/ATen/ops/_aminmax_native.h,sha256=M48NN_OtbMGf9bYDJEXlsHyBDWfrMm4edOtFaMR5YpI,1160 +torch/include/ATen/ops/_aminmax_ops.h,sha256=xW39vDxpi23hwdnGEszwL5oRNUY8CNFnJxh2ijS83_M,3638 +torch/include/ATen/ops/_amp_foreach_non_finite_check_and_unscale.h,sha256=e8CuktcHI7bn87uBRzuJtg5WQSO76KpjBrWzHOlA_Tg,2377 +torch/include/ATen/ops/_amp_foreach_non_finite_check_and_unscale_compositeexplicitautograd_dispatch.h,sha256=VXLsaOjSRF2B2xQph85eMtcePFfWzGhVZukvnTjG2II,1464 +torch/include/ATen/ops/_amp_foreach_non_finite_check_and_unscale_cpu_dispatch.h,sha256=TfYb0wqSIp7wJvieB9xHFAGsFhlKi8nGgRTk2JVCSAE,1054 +torch/include/ATen/ops/_amp_foreach_non_finite_check_and_unscale_cuda_dispatch.h,sha256=mGRzwu0aolPlbO2Nho0ibcuLp86DH54hsB38PyH92w0,1056 +torch/include/ATen/ops/_amp_foreach_non_finite_check_and_unscale_native.h,sha256=X5k13v-pQX-wkr3HSkBRbrPuplybZ5W8OjVlEwkaVsU,1295 +torch/include/ATen/ops/_amp_foreach_non_finite_check_and_unscale_ops.h,sha256=PH3IpIBYawlq9GeRIIMUxOGm4_q2yQE32TxLvHrY0vM,3262 +torch/include/ATen/ops/_amp_update_scale.h,sha256=m5NSz43QaTDRqAyEvKOya71WqTwK5mdUloeH0puemx8,3018 +torch/include/ATen/ops/_amp_update_scale_compositeexplicitautograd_dispatch.h,sha256=q-KqXU0UiXyiHAvsA91rq8ZUYka3gtrHxWi6mKve1iI,1662 +torch/include/ATen/ops/_amp_update_scale_cpu_dispatch.h,sha256=7N15m6iQbPylF_iCg-KTrs-v0WvXI2LydzfinzIM90o,1123 +torch/include/ATen/ops/_amp_update_scale_cuda_dispatch.h,sha256=yNcvckOdIf88VDGvYUV0ZfBbJ6sTEq5Wzwl4RgAGPGc,1125 +torch/include/ATen/ops/_amp_update_scale_meta_dispatch.h,sha256=8VDbSMIA53C_Wex35_MHAGxgyHoTnzk7MY2Udclp54s,1125 +torch/include/ATen/ops/_amp_update_scale_native.h,sha256=-3IT4l-Se22BUw52HnDiT7knBPUR9Fkiu3rGcidtXv4,1558 +torch/include/ATen/ops/_amp_update_scale_ops.h,sha256=7pt7ckvF4x80pmTtcZI0sF_l0llEWq6D16HCnxkf_4Y,3903 +torch/include/ATen/ops/_assert_async.h,sha256=NU64JdJs9kO2GaC3hDE8oJJAqkzPU3rjWDeLGaq-I4c,1120 +torch/include/ATen/ops/_assert_async_cpu_dispatch.h,sha256=8TWiV4wTxBGib2X21PnqM6xcyyBKpTATUiCspwkXo9I,1059 +torch/include/ATen/ops/_assert_async_cuda_dispatch.h,sha256=hb89YSZIwi1MDNAWXDaIaNCKKopZnmOlF_Q4mWu8GPo,1061 +torch/include/ATen/ops/_assert_async_native.h,sha256=Suv-5Ls1siFxFXjhIIHMjl10UXTM5Wxx143C2mQ3FcQ,980 +torch/include/ATen/ops/_assert_async_ops.h,sha256=qlkmiPuJ7jmlQPWenFdY2WGtWYGki3WjPkeWI8OtFsw,1812 +torch/include/ATen/ops/_assert_scalar.h,sha256=cuff-IVFPf2VkAJ-hpG9D8MRCmrc8Dq3vQjr4oISYIg,970 +torch/include/ATen/ops/_assert_scalar_compositeexplicitautograd_dispatch.h,sha256=TtEYQMZ69qKusuxsf-aeOjJUP31rCsguWCOkI5AV4pI,1049 +torch/include/ATen/ops/_assert_scalar_native.h,sha256=XTx6IF8VVQ-cq9oZCDlLwmPbg4BNjtSGiaRPrnCVS1I,761 +torch/include/ATen/ops/_assert_scalar_ops.h,sha256=jU1JJNn4_3UGgtEJnUqtzM-nQquVmUM-MMmTXlnoSno,1305 +torch/include/ATen/ops/_assert_tensor_metadata.h,sha256=cXDhhq656r4YDYdFinLYOn9eu3Z13H_kloP5GEg0XvQ,3272 +torch/include/ATen/ops/_assert_tensor_metadata_compositeexplicitautograd_dispatch.h,sha256=qQkLHdbYoBWq3jM7pYTD9Zu_nDffN68TEL23cDp0Pm8,1597 +torch/include/ATen/ops/_assert_tensor_metadata_meta_dispatch.h,sha256=pA9v-ov8VAO5wUQ-grfgzxy7x638CTqDyIN11LuBexw,1555 +torch/include/ATen/ops/_assert_tensor_metadata_native.h,sha256=7h-X_m5RsMAC3QPX7fyrEVio1fFmIA_6X4cRPluwHoE,1314 +torch/include/ATen/ops/_assert_tensor_metadata_ops.h,sha256=t4gkCXNhLgte-i0jz5ATfwzzZinlnVBq0YPS0Xt4XsY,1849 +torch/include/ATen/ops/_autocast_to_full_precision.h,sha256=3F4Q2TewdBXsSFSg6MTL4AVbvLlq4-mqQZ6qElUvQh8,778 +torch/include/ATen/ops/_autocast_to_full_precision_compositeimplicitautograd_dispatch.h,sha256=ZV6rFidwsaHXWOWQNPPkpkYZbGny9fPDeoEvsbo1lhY,1076 +torch/include/ATen/ops/_autocast_to_full_precision_native.h,sha256=5G8Jeejaliid0n7xxs8i3zeyQN-NonRM44IfjD8pJSc,788 +torch/include/ATen/ops/_autocast_to_full_precision_ops.h,sha256=_wouMqdvfFJL4-TrK7eLXcyTCri_u33NpQmUmT2a_es,1403 +torch/include/ATen/ops/_autocast_to_reduced_precision.h,sha256=cgqPSA-IAKKYs_xsrri3-UburVPSvZJWxhfeO8POkWE,781 +torch/include/ATen/ops/_autocast_to_reduced_precision_compositeimplicitautograd_dispatch.h,sha256=i13BWqXPk8hFtzXQNZg7YsSmj9gMzwc-34_l8O5GvdU,1132 +torch/include/ATen/ops/_autocast_to_reduced_precision_native.h,sha256=MFscclOIoT5hAlHdZ2ewIyd0gCzFbz8icgT5pzqO7qY,844 +torch/include/ATen/ops/_autocast_to_reduced_precision_ops.h,sha256=G-f_alHvPgQjuPz5O3EAWBzITSTrcPilnaPzMxyOMvo,1595 +torch/include/ATen/ops/_backward.h,sha256=BW07CJoOliQbp9F42ephO8cNvgorce3PNcOs3rPNA48,760 +torch/include/ATen/ops/_backward_compositeimplicitautograd_dispatch.h,sha256=jA9epTU1M9w1Evm03JmVCoJaQuF7rnacxhpvOWKXGHM,1163 +torch/include/ATen/ops/_backward_native.h,sha256=-AbG5eqnAl3djIXSiRej_apsXFGRYUb1nEyP45S3GkE,875 +torch/include/ATen/ops/_backward_ops.h,sha256=xm_Nte-p1bAnRZZgtubHW9C2jNRb7Z7iY20P-4VS4tw,1618 +torch/include/ATen/ops/_batch_norm_impl_index.h,sha256=f-cwCC2OOt3JCgQglZmh0PQMzRl7XlKMGViMMs5Od78,1509 +torch/include/ATen/ops/_batch_norm_impl_index_backward.h,sha256=7Bp5xP1DZIC75Gs_rXx5mCQMYr2Cmwcgldagep6c4FQ,1777 +torch/include/ATen/ops/_batch_norm_impl_index_backward_compositeimplicitautograd_dispatch.h,sha256=2BJgAze5zGVOeP4HQqulXhKipOJ0pKA13qPze50RmoM,1470 +torch/include/ATen/ops/_batch_norm_impl_index_backward_native.h,sha256=xUnZjUpfRL6POftgbtMH2t9VI03OUtkMN0ssS-vdtsI,1182 +torch/include/ATen/ops/_batch_norm_impl_index_backward_ops.h,sha256=2r5mtBrLVtKMpAjvylJWAIIhT438oBVYVcvV6F7hO3M,2673 +torch/include/ATen/ops/_batch_norm_impl_index_compositeimplicitautograd_dispatch.h,sha256=Ewr-XGnFSikwRYpyGOZk7frC9eYHd4dNAsgXqX5ZCPc,1339 +torch/include/ATen/ops/_batch_norm_impl_index_native.h,sha256=tAoprCXpkL45Y-SL5mOVMYXH6dRuodGSvpdwP-0TZzY,1051 +torch/include/ATen/ops/_batch_norm_impl_index_ops.h,sha256=PBqZ6dNJtPu5W8llYfCmbzPpCBmY12o2ULUWiO2TWVs,2267 +torch/include/ATen/ops/_batch_norm_no_update.h,sha256=0q26fQ4TkGIFBOQ-1rXmiqQhbQKFK1qD0XF-tunPhWs,3063 +torch/include/ATen/ops/_batch_norm_no_update_compositeexplicitautograd_dispatch.h,sha256=HAxsh33mQ4H9sQSN7DQqyKXJvjvEC02aGTyOQb9JxQo,2134 +torch/include/ATen/ops/_batch_norm_no_update_native.h,sha256=rAUyAzEl9xsqjUaEHtQ3raTYnUNaBlBziQWwW-MC8fM,1426 +torch/include/ATen/ops/_batch_norm_no_update_ops.h,sha256=TILf3FK6lm-ASfHLmEy1XnWDAcrz05Y0JDzBKQX48_E,3855 +torch/include/ATen/ops/_batch_norm_with_update.h,sha256=N5fMIXovPnpBDuIGeCqG_4o0mjgtiqr4bGe_8VV9lqQ,3747 +torch/include/ATen/ops/_batch_norm_with_update_compositeexplicitautograd_dispatch.h,sha256=aEJAQBBW8f33iIXBeiuGCLxYYxrhCnVmSaOlwETCWTU,1296 +torch/include/ATen/ops/_batch_norm_with_update_cpu_dispatch.h,sha256=wuN1YbE3ujiNhjHf5YYDGJztIOEiklZpOSWGthNdPQ0,1986 +torch/include/ATen/ops/_batch_norm_with_update_cuda_dispatch.h,sha256=Rp_AgdR8ymgAexMLxz4rq35snL7UXDSmsz7WIX60QBA,1988 +torch/include/ATen/ops/_batch_norm_with_update_native.h,sha256=5mzx_xP-eoAOx77l3X399JlsntboLI2ZD9DdsDikwB8,2672 +torch/include/ATen/ops/_batch_norm_with_update_ops.h,sha256=IVRgqFcs55zMdv8aTuF35iEkMOQhKnaLih7S75i3Q_U,5102 +torch/include/ATen/ops/_cast_Byte.h,sha256=iUEt6J2gNyETwvNPufNb3QXf1B0Lk82uI9IbBYJre0c,971 +torch/include/ATen/ops/_cast_Byte_compositeimplicitautograd_dispatch.h,sha256=GAMd54TpuYLJqla4jkgSncD36gAk9jrZC5oF4gAmJ9U,1047 +torch/include/ATen/ops/_cast_Byte_native.h,sha256=r3Cz2B1FnuwiG3OYBrNMwqrI21-O0E8P1Tt9NuMC8-4,759 +torch/include/ATen/ops/_cast_Byte_ops.h,sha256=uw1XDJr8AEx3Y9cKkB2TRJxVpV3dCegCuVaYUL_7_Fw,1292 +torch/include/ATen/ops/_cast_Char.h,sha256=W8CCak9jEOtwzrrxHEHjmRA4ZRF0pXJSEIMCuKhUddg,971 +torch/include/ATen/ops/_cast_Char_compositeimplicitautograd_dispatch.h,sha256=QCN2swYd6xNMS2rFKyre_D4tdZ8Ys-e5dych1VyHHL4,1047 +torch/include/ATen/ops/_cast_Char_native.h,sha256=tmhgYowjNN_Z4h8JL9DeVce9zq5xtWwSu8Qt6KD_cEc,759 +torch/include/ATen/ops/_cast_Char_ops.h,sha256=IJJww6lMEhtzi7AaE9KJ8oXfwqjJlx8SSKSP2u2vDwk,1292 +torch/include/ATen/ops/_cast_Double.h,sha256=qfyoNBLnGsT6T-w7U_5d8o_v3so49U-E7yn4du8mnFg,979 +torch/include/ATen/ops/_cast_Double_compositeimplicitautograd_dispatch.h,sha256=MSiiUBlIJjbi-9Vi1i9mbrco6KKsh1zXG8hHemVUQlU,1049 +torch/include/ATen/ops/_cast_Double_native.h,sha256=5UQdbXBOdrut4ZBXlcICD5zplBm1YQoT8HHHLrM1nTU,761 +torch/include/ATen/ops/_cast_Double_ops.h,sha256=ZsbiOn9mzLE8db7ubpoVpWvtCFoKqc1aFNUfAz2_n6o,1298 +torch/include/ATen/ops/_cast_Float.h,sha256=tATJSdY3Alki6EbaIOZROvlWrOICxXbSiSM-BqJh5f4,975 +torch/include/ATen/ops/_cast_Float_compositeimplicitautograd_dispatch.h,sha256=OWeqPDgm426C6d3TjMJpuU6XYqk46qV9mu9TCcwHGQI,1048 +torch/include/ATen/ops/_cast_Float_native.h,sha256=pdAGU-5aIjQv8NzKIeXlTU1Y6o3A8aMIW2zOAlNGQs4,760 +torch/include/ATen/ops/_cast_Float_ops.h,sha256=p5kNK97whfzBZuCso0s-l_sYOy9eXR4TZ_Kfqmk5cOg,1295 +torch/include/ATen/ops/_cast_Half.h,sha256=TaqI_D3YLGhwLX6zkNz8Ioo7E988i_L0aBNx8KhbFbw,971 +torch/include/ATen/ops/_cast_Half_compositeimplicitautograd_dispatch.h,sha256=Daf1_C6LfpVL7nr16k_oatRAk_iupE4LU84-HNBVKu0,1047 +torch/include/ATen/ops/_cast_Half_native.h,sha256=koynLsIimWLnvFTbh_OUtbb-j4Sk_YN2W7_p1erjdP4,759 +torch/include/ATen/ops/_cast_Half_ops.h,sha256=Cnp7hvpq5cCmyGEbYXY_V7i10SIirxxF3nAeLIKUWKo,1292 +torch/include/ATen/ops/_cast_Int.h,sha256=_i0h3Hcwxovwfnb80Y7_SxsU-fMCV-d9uZM3QdabIDs,967 +torch/include/ATen/ops/_cast_Int_compositeimplicitautograd_dispatch.h,sha256=qyJwe6vAd06IDjhj3IFdRj_csh4jLT6vnzllcbvuCt4,1046 +torch/include/ATen/ops/_cast_Int_native.h,sha256=fU7d7ep-emIz4Wj8auNcBgjgRCgm68UDvguodGoYCVE,758 +torch/include/ATen/ops/_cast_Int_ops.h,sha256=Gnq8WunEMadHatpIRAb972UB3aw1f891pBHKujTTOnU,1289 +torch/include/ATen/ops/_cast_Long.h,sha256=VZweppx4HFvooEZpt3K-8-PsRyEPSV5PP98OugsNjtY,971 +torch/include/ATen/ops/_cast_Long_compositeimplicitautograd_dispatch.h,sha256=JDWTNIDQ_BB4MFnSOuudgxHb4dF1Uq2DepBI4KCUk_U,1047 +torch/include/ATen/ops/_cast_Long_native.h,sha256=8YBfwMAvxCeQXyXDgdP3-Ix8XZHzZokD135VxjOijMc,759 +torch/include/ATen/ops/_cast_Long_ops.h,sha256=QszCLEyc2Ez62bHrt0JlEUfxibnaUZMs-2TCLkfHPQY,1292 +torch/include/ATen/ops/_cast_Short.h,sha256=GgjfVe2S0RgVpZgHo6Kau1qbwNiE9DfWFkA0l0pavfc,975 +torch/include/ATen/ops/_cast_Short_compositeimplicitautograd_dispatch.h,sha256=VLVdL13yRlMSxSJZyG-1Xr4Ytct4rqObuz-G3_xUXsE,1048 +torch/include/ATen/ops/_cast_Short_native.h,sha256=It3CgornyGV7rnn9TZzwh00Jy6m7ToEubFrsyNbLf-Y,760 +torch/include/ATen/ops/_cast_Short_ops.h,sha256=79_EaptGAYz4X7YfPzd-QC1hzm9RG8gT2t2dh8RW08E,1295 +torch/include/ATen/ops/_cdist_backward.h,sha256=U-V3i5Lizw0Gc5xDZxygsa7p3uwjgB7syKcgFuLwdRQ,1806 +torch/include/ATen/ops/_cdist_backward_compositeexplicitautograd_dispatch.h,sha256=TVX87qwBiRVjqROxup6FZTlkJq9GiUlhqNyemwqice8,1303 +torch/include/ATen/ops/_cdist_backward_cpu_dispatch.h,sha256=AYYZyPELdw-24gl9NrNETvN4OslT2ebXduzBDOVfsnw,1065 +torch/include/ATen/ops/_cdist_backward_cuda_dispatch.h,sha256=7FulepCGFLuBBIKMSIPlT7SrYdjuN9TaBhT1xhLE3VM,1067 +torch/include/ATen/ops/_cdist_backward_native.h,sha256=XvmWKGrIkXSx1vZ8je_a7eGkhoPIAnDjOEGrdxe-NyM,990 +torch/include/ATen/ops/_cdist_backward_ops.h,sha256=WaGGYd8GQdyFA9A_R4nmOo4ERAHK08yKA2el3sfd-_Y,2409 +torch/include/ATen/ops/_cdist_forward.h,sha256=KZ6DmmHw3jPvtB4VfYYGT0nMshTKcveu0LbPa4N4GQY,1739 +torch/include/ATen/ops/_cdist_forward_compositeexplicitautograd_dispatch.h,sha256=UgQS0ZUGuf1ats_zIuSZdP3_-LyY31AeS6zWPhn3SIo,1277 +torch/include/ATen/ops/_cdist_forward_cpu_dispatch.h,sha256=8FlF-PXLzmcNcycd3w3fYKgjg-vri4Rx_KHkqp2-F3A,1052 +torch/include/ATen/ops/_cdist_forward_cuda_dispatch.h,sha256=Kf6jo1ZPTPWiAQLmrzV5gOeuPMDhBOTAIVKvK0YCMNo,1054 +torch/include/ATen/ops/_cdist_forward_native.h,sha256=-MG8DF1QwsiAjRyiqCDwul9HJlMYbwxgkJVsLashk44,964 +torch/include/ATen/ops/_cdist_forward_ops.h,sha256=hzMkV3q3BzgWMwPV5mqS4S4ylU2M5-IpmHVxhFx_uCk,2311 +torch/include/ATen/ops/_cholesky_solve_helper.h,sha256=WSC4_9F4Bbap4noFpACrORmdYLxiG-CJJOpoACP1uD8,1639 +torch/include/ATen/ops/_cholesky_solve_helper_compositeexplicitautograd_dispatch.h,sha256=BO5o1jS9T-kkw9ZdcO_9rer3ha3YLXSBz2ag7CUWRJ8,1221 +torch/include/ATen/ops/_cholesky_solve_helper_cpu_dispatch.h,sha256=ObB-pLnODn4w45B_mfDplqdqj01b62iItFJ8z3Y4Y1E,1024 +torch/include/ATen/ops/_cholesky_solve_helper_cuda_dispatch.h,sha256=zOBtWBt10BPpa_6jylzVjFCReQDaGfK-CcSTx6wSTmE,1026 +torch/include/ATen/ops/_cholesky_solve_helper_native.h,sha256=yeiQt30yfDz94JoDHqzSy9eDJgLhKzOVg2ILDAIhVcQ,1021 +torch/include/ATen/ops/_cholesky_solve_helper_ops.h,sha256=xJqu_YSMiUtyBKhaDL5w0uF0v6HjtRKbWwi_ft9c7uo,2129 +torch/include/ATen/ops/_choose_qparams_per_tensor.h,sha256=B8FYNi4YNh5HVA6orsR7bBHngPmiHsrofnaFvjXWP0A,1059 +torch/include/ATen/ops/_choose_qparams_per_tensor_compositeimplicitautograd_dispatch.h,sha256=RJKzWLBY7okEhWlnEb1F_nx4kuHt8dlzufG-niQ_3gg,1081 +torch/include/ATen/ops/_choose_qparams_per_tensor_native.h,sha256=vAQvomoawvPD0d7jpIjwNbbhVrGXSwToK_e5ZZ2Ygv8,793 +torch/include/ATen/ops/_choose_qparams_per_tensor_ops.h,sha256=y57Z7uuQUQF2cG_UBZPLi7hmTNHorPvE2gBnYEXrAm4,1400 +torch/include/ATen/ops/_chunk_cat.h,sha256=T9pTGfyJy52r7bgPJlpOsRVmbBKWO9Su_1OV8l8zYYE,1567 +torch/include/ATen/ops/_chunk_cat_compositeexplicitautograd_dispatch.h,sha256=epexgL_T4kVC7Hi8cFbmsmtE08AaK4NQn4NtdUxIw2s,1283 +torch/include/ATen/ops/_chunk_cat_cuda_dispatch.h,sha256=VTrX11jLlT5B9zTPYTD49ZLwQ9LC3N-fHc_tcDTBb8k,1241 +torch/include/ATen/ops/_chunk_cat_native.h,sha256=e7J_6_g0BvWrt93V3-yid2-3RQe_kgVHu-pyxaSG7Ic,1094 +torch/include/ATen/ops/_chunk_cat_ops.h,sha256=CWggP0xIMY8ssvXBfyIo7DACCgC6CSpq7Nblp-4s0-k,2041 +torch/include/ATen/ops/_coalesce.h,sha256=N0BSrvTZjla5WLys7UM5t0KkaOIMEXZju3kVyWhdpDI,1311 +torch/include/ATen/ops/_coalesce_compositeexplicitautograd_dispatch.h,sha256=Hwc44Lu6xmDsoNlFToxCyooWSqO4qkEXeBIBO7Npqu4,1127 +torch/include/ATen/ops/_coalesce_native.h,sha256=IZzOMWVpLqWR3S1R_pxXZaeiOsgvqQ-WmWg6UcQW0Ng,894 +torch/include/ATen/ops/_coalesce_ops.h,sha256=182XiGHaPEqjvqZVVpVh-7041I6k-_04PJCIOAg3cw0,1819 +torch/include/ATen/ops/_coalesced.h,sha256=6upz2I_Cz6AAj-noGFu9fytzrasEoHmcEFfSG68eisQ,1450 +torch/include/ATen/ops/_coalesced_compositeexplicitautograd_dispatch.h,sha256=bQAOq--qjPQXpU458gmtCIjRv--1tm4XQUigqo6vqbI,1235 +torch/include/ATen/ops/_coalesced_meta_dispatch.h,sha256=uoZYnRD-za2B4bk6wcPbPORdR8_OGloko6sYx-a18Zk,993 +torch/include/ATen/ops/_coalesced_native.h,sha256=dbrXtbdzfRU3cu3oNWd6CYKSzkDdsIDMgg7i-UTKlHo,926 +torch/include/ATen/ops/_coalesced_ops.h,sha256=hgewfg3wKaUot6UiGPjWg78VhXXwOO8MhmJikYCrg-8,2498 +torch/include/ATen/ops/_compute_linear_combination.h,sha256=8wGZlGnNfIWISMCvVzlL7ROCjl47pdwCqTQemYqLTEc,1704 +torch/include/ATen/ops/_compute_linear_combination_cpu_dispatch.h,sha256=Ajtd3CjthKwJ7V3qtszHnv0FuF_hlxYnDNSu-Iqs7jo,1296 +torch/include/ATen/ops/_compute_linear_combination_cuda_dispatch.h,sha256=n3HM0-oJNiu5YSsbZ6YG8I8VgTIH4JjhZ8jE1yyBvcQ,1298 +torch/include/ATen/ops/_compute_linear_combination_native.h,sha256=za2Y3ia5OKIs36aqoDm1ag4Dbsjb3C8kt3s_Z30Gnno,918 +torch/include/ATen/ops/_compute_linear_combination_ops.h,sha256=5jNsiFzBxgyO9_odc7t1rhyTzuud2mtonfsG9oThVXg,2147 +torch/include/ATen/ops/_conj.h,sha256=Vqqr4_E1xNeHHWsjX6zD5djPF0Xax7K-aDugkARvXVw,893 +torch/include/ATen/ops/_conj_compositeexplicitautograd_dispatch.h,sha256=4OMPve0UexbWAY6l-772oFDMRBkiSbsdRzvioc4IXBk,1017 +torch/include/ATen/ops/_conj_copy.h,sha256=YhalmUTfwScRx01_Ywimk54DfAryQyWWdrFWJN9XKms,1321 +torch/include/ATen/ops/_conj_copy_compositeexplicitautograd_dispatch.h,sha256=EJc9ItHLNPpT3LSrqgX7PVEfvD6qT3zYODWbmMar30Y,1129 +torch/include/ATen/ops/_conj_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=CsDc8Mfo_u67sRUvY9K4tWqghj8hhltsiyODNkkw_Pg,1048 +torch/include/ATen/ops/_conj_copy_native.h,sha256=9f_Okj59riaDKjCf-0kYFu0o4xb_IsFG7A48r6Iq_b0,816 +torch/include/ATen/ops/_conj_copy_ops.h,sha256=D3FDjoHVKA4ftBmATHt-ZX4q3dfiHcUWgiM2sn0OHRE,1825 +torch/include/ATen/ops/_conj_native.h,sha256=cSdPVDZuBSqhVVlgYyL7uBIhg1d95B-J8PhC-wEPbbI,729 +torch/include/ATen/ops/_conj_ops.h,sha256=5FxQr6pCdhZw0fHu-A0LEMvh4q6CVTY0A9zi7dKJWj4,1214 +torch/include/ATen/ops/_conj_physical.h,sha256=UAzAku0g6WDKOs19vYlnNCOWjiRO6phZsMpVC7Xp9Jo,1361 +torch/include/ATen/ops/_conj_physical_compositeexplicitautograd_dispatch.h,sha256=M8f53piexBsVfRHMrzQE3sIzHbVfBXYAlfg-fcDcUiU,1199 +torch/include/ATen/ops/_conj_physical_native.h,sha256=hGW_VDV9utF3Y4DB4SP4FVqEstX82rQJVOfvgrKsQoQ,896 +torch/include/ATen/ops/_conj_physical_ops.h,sha256=121AJUJBjTeTuw4qPQfhhXC5lH8SWW9tRPhKtblECNs,1849 +torch/include/ATen/ops/_conv_depthwise2d.h,sha256=C0OEfvrPKN24-7iz1PVVb-nbajfwmtko7py41yx4Q04,7578 +torch/include/ATen/ops/_conv_depthwise2d_cuda_dispatch.h,sha256=9Uulq3grbRQKSzhRLMAyfJ6r32iAn7E9rg_F2ECCP_M,2517 +torch/include/ATen/ops/_conv_depthwise2d_native.h,sha256=TL4CMRMhGgk8vvIoeeKpkvZ9sJiN9ifBMBwdQwbVumQ,1184 +torch/include/ATen/ops/_conv_depthwise2d_ops.h,sha256=yYdFvBUWT4TWShQLvbDHSMmqCcj0ajzYv6aMTUt-XnA,3123 +torch/include/ATen/ops/_convert_indices_from_coo_to_csr.h,sha256=y6F5QIzN4lmg88sOsLH-AkL7Orbx-j-EhYl2MRTojfw,1793 +torch/include/ATen/ops/_convert_indices_from_coo_to_csr_compositeexplicitautogradnonfunctional_dispatch.h,sha256=VmRCUDmcdWiwHnyO89Q0-0KFFSKTTxjXHa1jED7qj3k,1106 +torch/include/ATen/ops/_convert_indices_from_coo_to_csr_cpu_dispatch.h,sha256=5ZLNV4BXw96cIfwPGyO9CguDVHrq521NOnFEn_zjgiI,1311 +torch/include/ATen/ops/_convert_indices_from_coo_to_csr_cuda_dispatch.h,sha256=uiCx_mveYp1ax36n22hj-r4_tc7CQWCJq9NnG_mNpfo,1313 +torch/include/ATen/ops/_convert_indices_from_coo_to_csr_meta.h,sha256=rvq_cGMN7RQoAGSrq9n6DoukTAlHCW6sTY2CNpDxcmY,877 +torch/include/ATen/ops/_convert_indices_from_coo_to_csr_meta_dispatch.h,sha256=B0k5XWC6aDpEwJ77xLG2u7jnHFyPZRALFHIJKTqjWls,1313 +torch/include/ATen/ops/_convert_indices_from_coo_to_csr_native.h,sha256=QWU5T6PNeQBX1BthUMVammhscFQaN9cyzlAAZBqtqcg,1204 +torch/include/ATen/ops/_convert_indices_from_coo_to_csr_ops.h,sha256=Sm5n8A2hp3wijgyR5nWiJ3eSbVPVRz4VijSRvWU0Ldw,2174 +torch/include/ATen/ops/_convert_indices_from_csr_to_coo.h,sha256=OD3B0dwhrRbq1itJQCDaJgWFXs-9pMgW-DdYKGdMK8c,2129 +torch/include/ATen/ops/_convert_indices_from_csr_to_coo_compositeexplicitautogradnonfunctional_dispatch.h,sha256=OFI4r1IM6gYL2h4JCpPY6IRP9lQeJXqbLbQYdicR6Io,1154 +torch/include/ATen/ops/_convert_indices_from_csr_to_coo_cpu_dispatch.h,sha256=PtqQQ5ubZTicTR3kKiaq4JaZXmsJF4hDfLaYh0HQDAg,1449 +torch/include/ATen/ops/_convert_indices_from_csr_to_coo_cuda_dispatch.h,sha256=G8ScbUetSbvFVF8KdWrbfxHITiJRT6RTbmLGRbKOZFY,1451 +torch/include/ATen/ops/_convert_indices_from_csr_to_coo_meta.h,sha256=pxEZUmYTv3XycK7htukyU_bdTD60FgF07sqFbZsmfV0,919 +torch/include/ATen/ops/_convert_indices_from_csr_to_coo_meta_dispatch.h,sha256=Vm331Z7hvxirfJqdEL6u-yqpsFexuH-rFxiljX3tykE,1451 +torch/include/ATen/ops/_convert_indices_from_csr_to_coo_native.h,sha256=-LZJCtnRrdBLa_fh8xvNfTBLf7zt5h_d-yKlWMN-rWk,1288 +torch/include/ATen/ops/_convert_indices_from_csr_to_coo_ops.h,sha256=q43U78gVKNtouUgPVdjU2Nc_0N8ltIc4HVbTowJEI3k,2456 +torch/include/ATen/ops/_convert_weight_to_int4pack.h,sha256=clAs63Ym8Z6fS3RV8yWCkVEK8mDwiMObipkHT7vMPkI,1026 +torch/include/ATen/ops/_convert_weight_to_int4pack_cuda_dispatch.h,sha256=gJmUQtj4btzKA71uQALoSxcB5SwejJG2Q3xO52a-ckI,1018 +torch/include/ATen/ops/_convert_weight_to_int4pack_for_cpu.h,sha256=PJ2yIS77nZIuJqeA3BcjL34HWF4ysq_Y6tGAPuF9rQ0,1058 +torch/include/ATen/ops/_convert_weight_to_int4pack_for_cpu_cpu_dispatch.h,sha256=crWsYSxqmoCOgj5VOWoUkp0BrW78R2p415tGkKKqbNw,1024 +torch/include/ATen/ops/_convert_weight_to_int4pack_for_cpu_native.h,sha256=fofPdIl8fBJmdddCQzyaWX5VdRTwHnmRwubMte4H8Iw,776 +torch/include/ATen/ops/_convert_weight_to_int4pack_for_cpu_ops.h,sha256=Gxq8mfMMczVVXCyf6VqX4ZQRSXQkW7gHRRc66fxleME,1366 +torch/include/ATen/ops/_convert_weight_to_int4pack_native.h,sha256=sHaYxqPr2SWJb74zbpqL2ECuKgYS8DM0duAQvoOZoQ4,777 +torch/include/ATen/ops/_convert_weight_to_int4pack_ops.h,sha256=Y2bhIULr9GBS96v9m3HKWvZ2pVT1--siycwbmwVLJsc,1342 +torch/include/ATen/ops/_convolution.h,sha256=3auCvvpmqx0E3g1ByQB-sVS1IW-ZD0PL6iNAv0ZMjQw,13232 +torch/include/ATen/ops/_convolution_compositeexplicitautograd_dispatch.h,sha256=RvzdIzZAg8olya3lONwzCC9NhoYy-tIOMqUOV4UZ2nY,3201 +torch/include/ATen/ops/_convolution_compositeimplicitautograd_dispatch.h,sha256=n4Gk9OcpOYERvsmJ7rj3OEujPyFnkf7ROxCQM60UPKA,1639 +torch/include/ATen/ops/_convolution_double_backward.h,sha256=_d8lQqr7QeWHcW49ZgkF2UUO0ZAnt21semHW6hj0Hac,4289 +torch/include/ATen/ops/_convolution_double_backward_compositeimplicitautograd_dispatch.h,sha256=3MP4QuWcx5N9tIwlsCMWFPizxWU_9tOB6EqZPke0rcY,1909 +torch/include/ATen/ops/_convolution_double_backward_native.h,sha256=CL3sWzZYuj-thybC1EDA25szJppDWRK1kiT44Dad_TU,1135 +torch/include/ATen/ops/_convolution_double_backward_ops.h,sha256=Yf4rrQMZlDleevdEdS2ANOAslAl1CXyrKw23BTbNpsM,2610 +torch/include/ATen/ops/_convolution_mode.h,sha256=6nDUoGLHi7vHwEA6IdaZNOvGZo4oM-hoL4u0NB5_To8,2710 +torch/include/ATen/ops/_convolution_mode_compositeimplicitautograd_dispatch.h,sha256=I-SFmVpM5P64X59qw_lyf9ORMJxhijOyg_2fwCp8xhU,1437 +torch/include/ATen/ops/_convolution_mode_native.h,sha256=mrxLJmT8HQZMGokfQ2KF3eI2tOhfyOgUS7bvYKEhDo0,922 +torch/include/ATen/ops/_convolution_mode_ops.h,sha256=jXbkXUt0XhqpcV1ICWfbrbyIjjkGxIEHuqiJDuPr3nA,1816 +torch/include/ATen/ops/_convolution_native.h,sha256=6mrBYsun3KF8GVe1iQQ5SAIzeWW7_fRe3rAxle4Rv0E,1739 +torch/include/ATen/ops/_convolution_ops.h,sha256=Bd3M7Ww3z4Kxa8QKSsmLE4ZRjxkwccGlGCEX8kL2Vxk,5327 +torch/include/ATen/ops/_copy_from.h,sha256=pDJW1q2oJddNVYBbH6Khi-D7WoSraBu1TGAVyUSd30g,1630 +torch/include/ATen/ops/_copy_from_and_resize.h,sha256=8udbMt8r-DoM-Y6YFXn86kUXPUDM7CWC5ScKD4Hu-i0,1554 +torch/include/ATen/ops/_copy_from_and_resize_compositeexplicitautograd_dispatch.h,sha256=szedXNusDjSX5t-Cfxz24hTN54tB7dZjQM_33L22_bU,1199 +torch/include/ATen/ops/_copy_from_and_resize_native.h,sha256=PaLHyphbbxbd2eQ2tttTnUOiHrbrk69slap1McuzECk,793 +torch/include/ATen/ops/_copy_from_and_resize_ops.h,sha256=Q02ezptAzTTRSotMbaOPosW5f4tywYkVh8AaNce9hyw,2051 +torch/include/ATen/ops/_copy_from_compositeexplicitautograd_dispatch.h,sha256=i7_6r8WmqkVWCVKVT3UEKUZgZsfOVs2xZq2lYzVih-M,1221 +torch/include/ATen/ops/_copy_from_native.h,sha256=pt_tBlRzrTiWX2DFeXj5EOUMYVpmAE7HQ-tJTaiCfbE,801 +torch/include/ATen/ops/_copy_from_ops.h,sha256=Tsegewq3PeolieA3ynHK8vmbye625Pqivg9xkEifdeo,2123 +torch/include/ATen/ops/_cslt_compress.h,sha256=qTrF7uvH9q7PXTCMyHWuk1qL6qTgeTmZR3cJMLaJOX0,926 +torch/include/ATen/ops/_cslt_compress_cuda_dispatch.h,sha256=-4ZSi06rU-L55Wu-8LxXTGr1u2MRItxo1eTvYFqIUUw,985 +torch/include/ATen/ops/_cslt_compress_native.h,sha256=BVEnYUmbQpcKk4i1_zxkR6YUlJT4vigw2U2qIOs5UFI,739 +torch/include/ATen/ops/_cslt_compress_ops.h,sha256=D7Nqx2ZSGn8r36tFVtnLFiSwPIqSZY-blp9NN_1IqKs,1238 +torch/include/ATen/ops/_cslt_sparse_mm.h,sha256=rA6OUpZpjv6ARg30nrq9Lh4nQkmvro_qW7-n-EqXWnU,1463 +torch/include/ATen/ops/_cslt_sparse_mm_cuda_dispatch.h,sha256=V8DiN2dfGhFs20FPkM3fUg1M3RVeMvwku0E0O9cMX_w,1261 +torch/include/ATen/ops/_cslt_sparse_mm_native.h,sha256=AeTRHqCUFWaIyYf_fjTt465KRij9hzYkBiFCgG1HCis,1015 +torch/include/ATen/ops/_cslt_sparse_mm_ops.h,sha256=shSaNCBa5K1zQL-Lpy77l9BLIO_-TLnhOU-Pwr3TFIo,2052 +torch/include/ATen/ops/_cslt_sparse_mm_search.h,sha256=6GtENsF_a2eXdkQdYHcgrM3j8JwI5SGFofE3qwZYTNI,1342 +torch/include/ATen/ops/_cslt_sparse_mm_search_cuda_dispatch.h,sha256=dJGjzjCsXvBaKotlwl4dh59LIpwvvMatDzMAMeYj_uE,1203 +torch/include/ATen/ops/_cslt_sparse_mm_search_native.h,sha256=lEuNQVGKAsgM_Ciii5MKDfEmUbZQMOwPRrNCQ1QoxBo,957 +torch/include/ATen/ops/_cslt_sparse_mm_search_ops.h,sha256=zDzWYINV3cnFXCAdvJ0uuS4u1niPwzkAtbhp01aN4XM,1874 +torch/include/ATen/ops/_ctc_loss.h,sha256=hxqHNrx2XCzsh66yks_dGkvo4bEA4FcAcGzq118kASg,4181 +torch/include/ATen/ops/_ctc_loss_backward.h,sha256=u1xL7bKDbN5I5eTm8rUzI6zyuUbN_me-rLhhfQ2SydU,3564 +torch/include/ATen/ops/_ctc_loss_backward_compositeexplicitautograd_dispatch.h,sha256=2uAknJCSIhVo3l3yqkkkZVwdg1DNGrJum5d75uG5iPA,1601 +torch/include/ATen/ops/_ctc_loss_backward_cpu_dispatch.h,sha256=tQvxXUJqOC1khhpyuUIGPUWnQ6SWxecCYjIwQOVtZc8,1520 +torch/include/ATen/ops/_ctc_loss_backward_cuda_dispatch.h,sha256=1hqPL0Pc8KUXJqwBpqzgAV7dRyMuNTflUjKV8j4PC40,1522 +torch/include/ATen/ops/_ctc_loss_backward_native.h,sha256=juUH-nqtsgW7cIcVMVXgXkCAnAhofVIWRQBn5Kkko-I,1900 +torch/include/ATen/ops/_ctc_loss_backward_ops.h,sha256=YccJeFoP1gQ4g4FYGH2SgrzWNndJGCUWtJSklpt_ZZc,4663 +torch/include/ATen/ops/_ctc_loss_compositeexplicitautograd_dispatch.h,sha256=J_4ShbyWtk3RubHjuPFhcXKC9VWBxiyFCAVF7kTSnC8,2030 +torch/include/ATen/ops/_ctc_loss_cpu_dispatch.h,sha256=KRPTeCeJ9nWdgK-FIsvmqvtJLCmb2JQEzJF4ccKHRTw,1368 +torch/include/ATen/ops/_ctc_loss_cuda_dispatch.h,sha256=E_GQ51VdoSHuIIKCyK7LxSCgzWZJRzoQY9-jnVB6DPk,1370 +torch/include/ATen/ops/_ctc_loss_meta_dispatch.h,sha256=W73IJbx1BT4OC9yeF9BaqQcoBMVRPh5mOs3xHts0BsU,1143 +torch/include/ATen/ops/_ctc_loss_native.h,sha256=fNlM1OaZdffvlgiTUrFeLjTKVGOjCrBij_u3E6PTKCE,2113 +torch/include/ATen/ops/_ctc_loss_ops.h,sha256=0Xd4cwR12xsf0ltk6FvnLMLqv3Sbk0WCrG3w-M-55jw,5248 +torch/include/ATen/ops/_cudnn_attention_backward.h,sha256=OzaadgOnD2VVZiUKo3Lyt_iqSDQic3fJLhYMGZD31Dg,4508 +torch/include/ATen/ops/_cudnn_attention_backward_cuda_dispatch.h,sha256=q6zIR38mHzaY9eH71ozTOv8-WLEtkgvGBzKwi1qG1LA,1955 +torch/include/ATen/ops/_cudnn_attention_backward_native.h,sha256=Pft_AcyOQgxgw521KMUZCuWryx9HfL91NwHt5YH9LSw,1185 +torch/include/ATen/ops/_cudnn_attention_backward_ops.h,sha256=lVenysf5Um5_aGWv2dOruaDNlyRa9qupWbQdQvW2w2w,2698 +torch/include/ATen/ops/_cudnn_attention_forward.h,sha256=5_S-T8gLDVuW-caVmoMd9-GZC3_FvCILyPiCOVujBfY,4813 +torch/include/ATen/ops/_cudnn_attention_forward_cuda_dispatch.h,sha256=Hjy-36-6VPpw3tkNwDfyZQ5yOcmme4XglCA85gaCTwg,2023 +torch/include/ATen/ops/_cudnn_attention_forward_native.h,sha256=VihKiFlWz6FNxMtdCANtMMemSWBI1jrUpbNteZL1Vdc,1219 +torch/include/ATen/ops/_cudnn_attention_forward_ops.h,sha256=s9FVwOIk1ivS3zb_N3JIR1mWZyQSJJz9OHl03avptGM,2882 +torch/include/ATen/ops/_cudnn_ctc_loss.h,sha256=nAgADceZjhVsA8XgoLe_q4TXhMHovuw3J8dwKdKNc3E,3189 +torch/include/ATen/ops/_cudnn_ctc_loss_compositeexplicitautograd_dispatch.h,sha256=QUF-5of97XiGsDqL_h7KL5v2ctGfv33TFhJDb5du2ig,1535 +torch/include/ATen/ops/_cudnn_ctc_loss_cuda_dispatch.h,sha256=43FN93b7zLxCw3N6jX4fuJWnBH9mTsKpSGRBS69isVg,1406 +torch/include/ATen/ops/_cudnn_ctc_loss_native.h,sha256=t8ayfKbh2QizjHxt0cC6XVyqJel7eCDlYs7GUfHowhg,1452 +torch/include/ATen/ops/_cudnn_ctc_loss_ops.h,sha256=KCpHIHOnTUt7cdvEnBctpoosuhCRLo94PbFqkgpDXsw,4235 +torch/include/ATen/ops/_cudnn_init_dropout_state.h,sha256=hJyo-naI6KsTKGSZa7rnxrdCfReBPfUrqLydQB7XyaI,2503 +torch/include/ATen/ops/_cudnn_init_dropout_state_compositeexplicitautograd_dispatch.h,sha256=yJLLK4yefNBK9RGsZHCpqOQhl2sO2FvSrrC6JWPvwQ0,1209 +torch/include/ATen/ops/_cudnn_init_dropout_state_cuda_dispatch.h,sha256=L4EaPrI__6ShcU5YaHpCAmg258C3ztxYCJu8crGAx7o,1290 +torch/include/ATen/ops/_cudnn_init_dropout_state_native.h,sha256=R9LqorAehoTFWS2kVkzOlacz9BLhdw-5S6oTnlIcjgw,1053 +torch/include/ATen/ops/_cudnn_init_dropout_state_ops.h,sha256=h7vcoHuTjB8Oqx25E9AVZgFtQ42SeoQOF_weLiUgtmk,2582 +torch/include/ATen/ops/_cudnn_rnn.h,sha256=_9h24m4R8CcUzV-oHQLwwFYs4Q95c8n7hMLN2QhSqJA,13597 +torch/include/ATen/ops/_cudnn_rnn_backward.h,sha256=6MPc7MQ7WB-Ypc3lQMlyPhK_vXZmMJKXBqwOON6jFnA,16712 +torch/include/ATen/ops/_cudnn_rnn_backward_compositeexplicitautograd_dispatch.h,sha256=CFMxzWsbRdZ9YCESUaleDp_ayJ9MTKN9lzbkbJh4fNI,3936 +torch/include/ATen/ops/_cudnn_rnn_backward_cuda_dispatch.h,sha256=N7ysay-6ViX1RxiO16TF4se-Xd6fQwPFN9tCh2srPMM,2379 +torch/include/ATen/ops/_cudnn_rnn_backward_native.h,sha256=ArkPkbugVJfW10oONGQ4fye0_h8ZBNfdAREow9YnJpw,2147 +torch/include/ATen/ops/_cudnn_rnn_backward_ops.h,sha256=dGt8jwIWS-bugalOABRzrWhHWJsPjI0t76u0XD-ow68,6215 +torch/include/ATen/ops/_cudnn_rnn_compositeexplicitautograd_dispatch.h,sha256=QaQv-hyg1U9y1OD0MHC3KIE7CfeSWm5tWQItG93kXyU,3420 +torch/include/ATen/ops/_cudnn_rnn_cuda_dispatch.h,sha256=oOwpaV-RHiGDcH1m4bxFuzCb5FNP7ZOF75eG11f9LdU,1931 +torch/include/ATen/ops/_cudnn_rnn_flatten_weight.h,sha256=og2KovZnaRrnbEBQCeLPCrS6k3QrX8BqdyzGofik1vw,7838 +torch/include/ATen/ops/_cudnn_rnn_flatten_weight_compositeexplicitautograd_dispatch.h,sha256=rn5EvbHxUswehYnNUjm4pYYU6zHyKsSZ-fgv_zuRgvg,2024 +torch/include/ATen/ops/_cudnn_rnn_flatten_weight_cuda_dispatch.h,sha256=w3407R86rGJiE-XL5WyNj_LtIp9fm06qw9Mc5Ml8ofc,1403 +torch/include/ATen/ops/_cudnn_rnn_flatten_weight_native.h,sha256=9284SeZWDMCOh2OfqWpZ-CpBv5St7tRtN7ls-Hp94Os,1181 +torch/include/ATen/ops/_cudnn_rnn_flatten_weight_ops.h,sha256=4cFcdJbq7Kuz_C6gweag5kOBVaANNuw4T-NkvzVC7GY,3041 +torch/include/ATen/ops/_cudnn_rnn_native.h,sha256=jL4LxWlkeT7ys_3vy-kp2fOXnqYSzjLCgnlhPn3RGXo,1794 +torch/include/ATen/ops/_cudnn_rnn_ops.h,sha256=OsVPj2AqRBfeDWxugUUFiHMQsu-yhkqm6zjLDgNMSVU,5128 +torch/include/ATen/ops/_cufft_clear_plan_cache.h,sha256=ZZC4WBBuxAITnBhD3UGB2VPGk4ia-1DFGbpZLo35VKg,975 +torch/include/ATen/ops/_cufft_clear_plan_cache_compositeimplicitautograd_dispatch.h,sha256=wOA17ABLp4_Lu5R6ILOdAtI5OmsloBxhosD3WlKWcrc,1034 +torch/include/ATen/ops/_cufft_clear_plan_cache_native.h,sha256=U4chjMHkmSw1chMIPO4BhjQIEkHCHjST8CG39bYnQB4,746 +torch/include/ATen/ops/_cufft_clear_plan_cache_ops.h,sha256=gGAH1J-EfcXJ48t_8DdFIycDDb2AGMSDnBsSsLgQI2Y,1260 +torch/include/ATen/ops/_cufft_get_plan_cache_max_size.h,sha256=ymozapyrEoZqfcAXp5J7jTrIw_LLlaTlfhncSVwIP4g,1007 +torch/include/ATen/ops/_cufft_get_plan_cache_max_size_compositeimplicitautograd_dispatch.h,sha256=q4bkX5P29uU9IzWHj-cuI6568WwK9euGiKAzf1kOOtE,1044 +torch/include/ATen/ops/_cufft_get_plan_cache_max_size_native.h,sha256=TjXJSwsOzS6vRXxtyjVIqgla6PzeCkQ5SF_IH6GmepU,756 +torch/include/ATen/ops/_cufft_get_plan_cache_max_size_ops.h,sha256=verPE2PINzX8oiC3hknhMJr2RZZPeVkF3izyGwu97QI,1291 +torch/include/ATen/ops/_cufft_get_plan_cache_size.h,sha256=-EZ0PTwuwqcKBzjmPNwhs9QTxm5DDcCXqX9UJhnjfEo,991 +torch/include/ATen/ops/_cufft_get_plan_cache_size_compositeimplicitautograd_dispatch.h,sha256=W_Wt4a9r0eAvQL0OC2ffXdx452RU3VzAdgiAIdcNhB0,1040 +torch/include/ATen/ops/_cufft_get_plan_cache_size_native.h,sha256=dSzhi1Y4jkQDuh-6EkfJrrx_qyq7-IhhErI5eqa9KKs,752 +torch/include/ATen/ops/_cufft_get_plan_cache_size_ops.h,sha256=ZC1gL0T01MAIPte9nPZaXdyxpJf-XiVNowkwwI6DPqA,1279 +torch/include/ATen/ops/_cufft_set_plan_cache_max_size.h,sha256=ys2B7AIeGCnoyZYwz-YzO3vrJrm4R7yUW9RRDT1XIq4,1045 +torch/include/ATen/ops/_cufft_set_plan_cache_max_size_compositeimplicitautograd_dispatch.h,sha256=OVP6gALGbiO_BxkxjJc4sxI7E76r93VeNTw4cDe1WyY,1059 +torch/include/ATen/ops/_cufft_set_plan_cache_max_size_native.h,sha256=FL4dZmSLhg_7xhR_G5oPKtnMytQg2ABKzeI6-F9SDBo,771 +torch/include/ATen/ops/_cufft_set_plan_cache_max_size_ops.h,sha256=qBoYdkhCWS5ENVpJkHdkRygcmWd9Mphs0Xb5CQFyshg,1340 +torch/include/ATen/ops/_cummax_helper.h,sha256=It9F836ziJSYsDsAu3h5vhtS96tV00nKbAXmVNudlZk,1039 +torch/include/ATen/ops/_cummax_helper_cpu_dispatch.h,sha256=IVGL2jYSDP2txe08RD30GyVr-Joo4ufuyLS8rAGqgco,1032 +torch/include/ATen/ops/_cummax_helper_cuda_dispatch.h,sha256=UO02t4HF8bfgXL1HiyN4RZfmFOFLhjDzC8aUVGSAbC0,1034 +torch/include/ATen/ops/_cummax_helper_native.h,sha256=_VR9YcSzmE9UpdqgSPKylv6EPl26ktrXnd-wF3ncR30,907 +torch/include/ATen/ops/_cummax_helper_ops.h,sha256=oLOa9MUc5Q6huIoOqhNlIhwBotGQESnN_wanw74ZOho,1410 +torch/include/ATen/ops/_cummin_helper.h,sha256=yCIFnbdBIL9rlO4WMGLvLGky01t-W6bdl6CR9MVUgyo,1039 +torch/include/ATen/ops/_cummin_helper_cpu_dispatch.h,sha256=pnqYF6bxThbn_3IHjfnKIN74MR_RtOKO9oEmaKar9ms,1032 +torch/include/ATen/ops/_cummin_helper_cuda_dispatch.h,sha256=nefInjgToYo5_bj36-LOtSx9T37hpZMeQ2SI8rKjmLE,1034 +torch/include/ATen/ops/_cummin_helper_native.h,sha256=k8EbJNzgjSXf6StEOvgBtLEiXnpfpYbaPZHT_wlEpD4,907 +torch/include/ATen/ops/_cummin_helper_ops.h,sha256=jKAW2klA7MjFUFLwEHVRx513RWunsmuks3YaTxNUmhU,1410 +torch/include/ATen/ops/_debug_has_internal_overlap.h,sha256=odlifVaXZdMqmkcQJM9kDLSfKG2ZBFhOJm8vJeQvIpE,969 +torch/include/ATen/ops/_debug_has_internal_overlap_compositeimplicitautograd_dispatch.h,sha256=zo2r-ziwiqKyQ7JB07Ow84GWmPfAg1Qvll8Ks_d2mEc,1036 +torch/include/ATen/ops/_debug_has_internal_overlap_native.h,sha256=uGLy0kkJHzgaU-PulXTxQFvXvU9cwpPqqYFpXFFtwBQ,748 +torch/include/ATen/ops/_debug_has_internal_overlap_ops.h,sha256=s7zczZwzKw_Gm3OtriKUFNXbjwytoVgLTC3CYJ6Pww8,1262 +torch/include/ATen/ops/_dimI.h,sha256=Cx62L7zqnJ3TIcWzT69IrOdxL_-hkuSRqRjgnSLDbeY,756 +torch/include/ATen/ops/_dimI_native.h,sha256=F-t3aPIhLO10H32AqEO27rLoWvHcJ512pSK09Lwqf0Q,738 +torch/include/ATen/ops/_dimI_ops.h,sha256=4vxt9zoyzka_YA9uy_anw9wmijp3z26o8PuIHPurx14,1196 +torch/include/ATen/ops/_dimV.h,sha256=IF5xJLSAwkwPmFgMeiU6WJSbbfKRYDx97L4VipjK3oE,756 +torch/include/ATen/ops/_dimV_native.h,sha256=U0yalBhDzUVuQ-E1QnVSH2smn3nJnlRO9BQKsIhxh2g,737 +torch/include/ATen/ops/_dimV_ops.h,sha256=LNnX6fTC8jG_IaO9S9h9gvy9Dh_6Z0jVzdPcPdW7VEw,1196 +torch/include/ATen/ops/_dim_arange.h,sha256=50Va0IxTAjs9UPuOA2qHugOTRDEws_xgbPkmmtagkXo,938 +torch/include/ATen/ops/_dim_arange_compositeimplicitautograd_dispatch.h,sha256=ojMc5z0W0_9nRgI4KCcTUl4Qp_tqlvG5W3lZhiBQoIk,1036 +torch/include/ATen/ops/_dim_arange_native.h,sha256=-3e4A0sXzfZB-y8gvGbG1S2hR2cCd2Jkk2IfPX5LmZw,748 +torch/include/ATen/ops/_dim_arange_ops.h,sha256=CEremvxrEYml_NqzZWqzxEEfxKgxzf4Zdfsh6rt-XZw,1270 +torch/include/ATen/ops/_dirichlet_grad.h,sha256=qVuIXEe_nijryVN3K2HAk-1VC_OuNvXOL5IVka31vuU,1626 +torch/include/ATen/ops/_dirichlet_grad_compositeexplicitautograd_dispatch.h,sha256=H65Fllj3pol3go4cBOxdqHp83gWtZcuQg5sVoIO-_XU,1237 +torch/include/ATen/ops/_dirichlet_grad_cpu_dispatch.h,sha256=eav3KrAAS2FUim-nebCTnIUlOTi6NDujp_H4d6Lyrtg,1032 +torch/include/ATen/ops/_dirichlet_grad_cuda_dispatch.h,sha256=UzHzrCRJz4w4X1V9ZA31goGMmICizge_g3a-bqLSmmk,1034 +torch/include/ATen/ops/_dirichlet_grad_native.h,sha256=aTVnxksJA3NbWO4yqmcYulnZtBHcS5XaOdvnheFCJN0,1045 +torch/include/ATen/ops/_dirichlet_grad_ops.h,sha256=mb88CbtgAAbY3N4Z4CsjQosY1eFQA6xtnmT4_izMyds,2181 +torch/include/ATen/ops/_dyn_quant_matmul_4bit.h,sha256=CuW3ucyBZkGAhBw5J0hkKjYpPNeiwcWlgJjwCaLBuJ8,1179 +torch/include/ATen/ops/_dyn_quant_matmul_4bit_cpu_dispatch.h,sha256=Jjg6SbeD7EUpzv8XCiOPghwl4Z_sABrMi1DhE6bN1qw,1087 +torch/include/ATen/ops/_dyn_quant_matmul_4bit_native.h,sha256=_FtksKJhpqqFkrluXxrkEo4WcTD5I6-oOm95b_lcSgE,847 +torch/include/ATen/ops/_dyn_quant_matmul_4bit_ops.h,sha256=G0eRfu340uhLQkecwQKJukV7-awcYgov1QWmvh3BHmA,1573 +torch/include/ATen/ops/_dyn_quant_pack_4bit_weight.h,sha256=OWObLMDe7Ux7PbzSrIWLOpNxLgQ7CIdUS9KiUwKy7Vs,1267 +torch/include/ATen/ops/_dyn_quant_pack_4bit_weight_cpu_dispatch.h,sha256=ayVeu3na6MVdsyTDNMipiAX2i6sSh0sb95M6tL9otNs,1136 +torch/include/ATen/ops/_dyn_quant_pack_4bit_weight_native.h,sha256=iKQkYVRsHNGiZcNE4VxWBhw041_sMsPnITh-tPiJrCs,896 +torch/include/ATen/ops/_dyn_quant_pack_4bit_weight_ops.h,sha256=M7LD3PzL9U0gzWKlCzjkaPjTdMF9Uyn01j1rrDZh7LY,1729 +torch/include/ATen/ops/_efficient_attention_backward.h,sha256=MVnKPjlpEf1wKxVC9sxhBJEE-mJEO0uVARpmiWSZE0U,6238 +torch/include/ATen/ops/_efficient_attention_backward_cuda_dispatch.h,sha256=XUMj2TNH42Yvw8D9qbMWrfsO2BtLCPNYCTbaUpwAxKA,2475 +torch/include/ATen/ops/_efficient_attention_backward_native.h,sha256=z-V_tH8B6yhH9-V3kG3ICw_SVEHq9ELxt1I3Py5q_54,1445 +torch/include/ATen/ops/_efficient_attention_backward_ops.h,sha256=bFYFkY5NCtNsdoGpWbuiF7_IMoywCFzvku0fRp4pJrk,3420 +torch/include/ATen/ops/_efficient_attention_forward.h,sha256=cHYPjuU2GxQWwCC__rLYYf3B6l7TySf6lL--kSlQ5fs,5659 +torch/include/ATen/ops/_efficient_attention_forward_cuda_dispatch.h,sha256=9tQLaJ59jwwgUFhcu94KMcLh1gccpfUL6jRqcsSVEbQ,2219 +torch/include/ATen/ops/_efficient_attention_forward_native.h,sha256=BZIphbOtsVo6Q6Au_hR3uw9-B8bAdNVRr3XhXmaPWGY,1317 +torch/include/ATen/ops/_efficient_attention_forward_ops.h,sha256=TFeiO38vvhRifGl0mHDKdrwgeSLnsBaUSUXXCcax1RQ,3128 +torch/include/ATen/ops/_efficientzerotensor.h,sha256=9Q3R0P_EnmdX27hy_SMN5Rmb6c7BI7RbmF90YUy1Ve8,6294 +torch/include/ATen/ops/_efficientzerotensor_compositeexplicitautograd_dispatch.h,sha256=62zWmeMSVAC7xEYI0lbcK_OcGfjpwdV2JoUGjJLAeJA,1344 +torch/include/ATen/ops/_efficientzerotensor_cpu_dispatch.h,sha256=eFrsnXh8Ehz0nrZV-_u6lemsOo6FKIyv0tGjh4KIrTM,1552 +torch/include/ATen/ops/_efficientzerotensor_cuda_dispatch.h,sha256=E0jAaKF067A7ehNcSxkc_u5AXoDKs4JtEtCH1z-P4Tk,1554 +torch/include/ATen/ops/_efficientzerotensor_meta_dispatch.h,sha256=vdpSqeBXNIufJ0E2f8-rv8TuvBJWVN9dXT3tRC09HFk,1554 +torch/include/ATen/ops/_efficientzerotensor_native.h,sha256=5AnXWOnBkqQTlT8ELj0pIkiilGQpymcEveELZK9ojZI,1463 +torch/include/ATen/ops/_efficientzerotensor_ops.h,sha256=x01MQTGXpxy5CDpFEVs7x8AWz334sWa5kO2BFvEysmU,2391 +torch/include/ATen/ops/_embedding_bag.h,sha256=-GZ6pdJ7VgIklM6PjzNeDYFvkzqJYWGf-eTzh4h6I-s,3432 +torch/include/ATen/ops/_embedding_bag_backward.h,sha256=NJ5Sw_KxRhU2G5PQ9K6vzVdOF50ckh515nyxreWBdpI,3804 +torch/include/ATen/ops/_embedding_bag_backward_cpu_dispatch.h,sha256=xrvnd9GImT7-v44gRFBCb6n6xZq6obYA53ChV4_hOsM,1683 +torch/include/ATen/ops/_embedding_bag_backward_cuda_dispatch.h,sha256=r6CUqnPsatki51BarUvtr6xAWm8WcNFQbUC8PaCSxw8,1685 +torch/include/ATen/ops/_embedding_bag_backward_native.h,sha256=Rw7xGFq0385Y4ggVKNRLcG0lj-biH2ROXCNLdYHUuVY,1063 +torch/include/ATen/ops/_embedding_bag_backward_ops.h,sha256=blLpnpU2cq60urzf8zbibegGVMcb6Qt0RKCzzdpT6IM,2262 +torch/include/ATen/ops/_embedding_bag_compositeexplicitautograd_dispatch.h,sha256=FNXwLTAmUkwgJGN9YQF5fB1hLRRc7vWY-QIGCo_GjvQ,1811 +torch/include/ATen/ops/_embedding_bag_cpu_dispatch.h,sha256=ZhCQc6e_4m0iLXZ6i_5YK7qfInVIBFYxbvX7fYmfUbc,1268 +torch/include/ATen/ops/_embedding_bag_cuda_dispatch.h,sha256=Sl9BH3udbP7b-wuLZEMULarvWIlfGJbsMbnnvQvWJak,1270 +torch/include/ATen/ops/_embedding_bag_dense_backward.h,sha256=MJSUI3hNDGkQ4jOCT-wmy4KkvYuvOVxripcHn6CcrlI,9546 +torch/include/ATen/ops/_embedding_bag_dense_backward_compositeexplicitautograd_dispatch.h,sha256=GhgIbw42JGRTvNuZGxpzbVKzEw9VD0vPclbgKcM0l38,2442 +torch/include/ATen/ops/_embedding_bag_dense_backward_cpu_dispatch.h,sha256=TCeNyY4_qFGMftZ_qLcmDm1f1O1IP1G3HcovYrIqXNo,1613 +torch/include/ATen/ops/_embedding_bag_dense_backward_cuda_dispatch.h,sha256=_PbwxBjfEh-qskR82LUAzeIQZ5wLYj_N04g5ldWG7MM,1615 +torch/include/ATen/ops/_embedding_bag_dense_backward_native.h,sha256=Hd7SnZ--9ooRW_85oifDn6OxZjUh4V2v4k_8fXTRW0U,1740 +torch/include/ATen/ops/_embedding_bag_dense_backward_ops.h,sha256=FZ4L2Od9jrAEolD3GpLTayvlq6ZdodFC6ztaHaJOn4s,3665 +torch/include/ATen/ops/_embedding_bag_forward_only.h,sha256=GPYXLnAS0l-eWm6kC1GDRuP88GOSR0N85gvs9SlfPkI,3562 +torch/include/ATen/ops/_embedding_bag_forward_only_compositeexplicitautograd_dispatch.h,sha256=_gJsOl0wDQhQvNaINsHtYxiFiD8POIelOzsR9jp8WpQ,1837 +torch/include/ATen/ops/_embedding_bag_forward_only_cpu_dispatch.h,sha256=C-RFxQqYC3qxaAw_L3nI-5Meq7XEkog7f1aFZVWB3MI,1281 +torch/include/ATen/ops/_embedding_bag_forward_only_cuda_dispatch.h,sha256=0JYuvVYoH0XmTPHYi8uZBvtyGd_6nrEsh0F61cF8MDA,1283 +torch/include/ATen/ops/_embedding_bag_forward_only_native.h,sha256=mhpf3kXa4tEPOH-RFd3Ghd9WNCdDx4kcCDBBx8YGEWQ,1830 +torch/include/ATen/ops/_embedding_bag_forward_only_ops.h,sha256=xSvOM0TI-v7qDhQGdncW_XafU7OE1luBjcSqf4-YbX0,3941 +torch/include/ATen/ops/_embedding_bag_native.h,sha256=pzuBiDXZZG54qIbFmylElJwE-B1ipJqh9IcNTUURBVY,1791 +torch/include/ATen/ops/_embedding_bag_ops.h,sha256=3fSeu07m5HCNrXE_N-qWmgsumeUElpDwArGBXU8754g,3863 +torch/include/ATen/ops/_embedding_bag_per_sample_weights_backward.h,sha256=tdZxxvkkSwc2Jb7S9YvFKILki_tiMQ9wpJCGQvR7TC4,2553 +torch/include/ATen/ops/_embedding_bag_per_sample_weights_backward_compositeexplicitautograd_dispatch.h,sha256=ZLQt0xFlv_ahOMYd_m8hy_G417OIYgaPnPTKe6DsxY8,1494 +torch/include/ATen/ops/_embedding_bag_per_sample_weights_backward_cpu_dispatch.h,sha256=EL34PhlVUOCs10Mg9rVA04VaiUPeCXcjvV_ghLw-lMs,1162 +torch/include/ATen/ops/_embedding_bag_per_sample_weights_backward_cuda_dispatch.h,sha256=XDlOD1I-ZDH096Opw9HobMj-Groz_QlL9cde2gLoXRA,1164 +torch/include/ATen/ops/_embedding_bag_per_sample_weights_backward_native.h,sha256=c-uiha-2DiY0L0xGUm-6rT93mbeSbmhpqdyRV4Eezrs,1432 +torch/include/ATen/ops/_embedding_bag_per_sample_weights_backward_ops.h,sha256=s7sXZWM8OnhCiEAT2yZQynwZe8eYjV4OyHOLzEF9uGo,3001 +torch/include/ATen/ops/_embedding_bag_sparse_backward.h,sha256=NTiAVTGLW4GPfjzQK9AfaNx3f5GVREv4PXvhbsxgQx0,3511 +torch/include/ATen/ops/_embedding_bag_sparse_backward_compositeimplicitautograd_dispatch.h,sha256=IFx_v4S7J_8ckaT1Arct3PXxxCcsKcaJcP1B5x8VDJQ,1643 +torch/include/ATen/ops/_embedding_bag_sparse_backward_native.h,sha256=sTHY4G8VfeBT3T4umm7iMH9BqZvUdMd2RFjDSrhzZsk,1021 +torch/include/ATen/ops/_embedding_bag_sparse_backward_ops.h,sha256=oEmN4eprf_CxlAA5mkyEE2mNe3Oiq1ymUMBUY7Vujq0,2122 +torch/include/ATen/ops/_empty_affine_quantized.h,sha256=4LyPSMoy-FwF-uZCo7IQJABNhyhdV7qsP5CVtQ6T7lg,9473 +torch/include/ATen/ops/_empty_affine_quantized_compositeexplicitautograd_dispatch.h,sha256=q3f5beVH5kQqLp_jxFejar6YtvYHWZV10Jh3nsVCv84,1756 +torch/include/ATen/ops/_empty_affine_quantized_cpu_dispatch.h,sha256=GBzcPHvSRpDo25VOic0dD7fy8Gpe_ERxdYLzOslP5Zc,1964 +torch/include/ATen/ops/_empty_affine_quantized_native.h,sha256=NYKnX5S6yRHvhIgfNe2grdf14YXnw8iPOqUJrrq2QT0,1564 +torch/include/ATen/ops/_empty_affine_quantized_ops.h,sha256=DtaVTfee2CL_sHPG0k0J_UxU_iaclVymshoveaKdSzc,3005 +torch/include/ATen/ops/_empty_per_channel_affine_quantized.h,sha256=tCRs5RrCO7pd_KqtE87N1Im4nXUrUKg3u414CtRTVV0,10781 +torch/include/ATen/ops/_empty_per_channel_affine_quantized_compositeexplicitautograd_dispatch.h,sha256=eYsRCX0CCUEpUWIi7AYslCxR7D9lqgMyRvWmsUZ88XI,1952 +torch/include/ATen/ops/_empty_per_channel_affine_quantized_cpu_dispatch.h,sha256=PgAWsJGHWAp4Rk-WU6PbQgQ029gWZVJDfEOzo3ol3So,2160 +torch/include/ATen/ops/_empty_per_channel_affine_quantized_native.h,sha256=ReCG3ckv-uPpPWsZiqxRukdL-Rhslgof9X6OYAGz_x4,1709 +torch/include/ATen/ops/_empty_per_channel_affine_quantized_ops.h,sha256=c5QBjpab_cKDm7VxIb_s4fh9K5ht0xvu5i1hwSw2OlM,3321 +torch/include/ATen/ops/_euclidean_dist.h,sha256=XPELByV84weaRT5wb2NnFU19LlGbWMhDhNyVjltiY74,1467 +torch/include/ATen/ops/_euclidean_dist_compositeexplicitautograd_dispatch.h,sha256=st9pYJzsV0ja8IEEuPtQGB3nnpkYDPgxd6eaPdsn1Iw,1265 +torch/include/ATen/ops/_euclidean_dist_native.h,sha256=OPNt5RmKW-2qrLTNOLrY57bcgPiifNmmXJ-3RuDGYuQ,868 +torch/include/ATen/ops/_euclidean_dist_ops.h,sha256=J9XjRcmvZEkoR_slwFGZgXPIWlyyLWxmiWSLbyA3sa0,1997 +torch/include/ATen/ops/_fake_quantize_learnable_per_channel_affine.h,sha256=ZJGPuaSavLVzgpOG7gxbdNchhiQNE9_ybk001tPctyw,2514 +torch/include/ATen/ops/_fake_quantize_learnable_per_channel_affine_backward.h,sha256=hHw5MALf5AB_O3X5YoobKltAnfJmqdUI9SL_IEYiRac,1462 +torch/include/ATen/ops/_fake_quantize_learnable_per_channel_affine_backward_cpu_dispatch.h,sha256=YxYavfm4XyFlyePswco2f5Jv_3waaIFguDToWDam0o8,1214 +torch/include/ATen/ops/_fake_quantize_learnable_per_channel_affine_backward_cuda_dispatch.h,sha256=QpFbTiLiFR_VHOiUive07zO323W5fSD0sOk8D7Uh2rM,1216 +torch/include/ATen/ops/_fake_quantize_learnable_per_channel_affine_backward_native.h,sha256=9D9FXJ8vykwyoQScen8J6R1KSYBeLOiwtFswsbZWAB4,970 +torch/include/ATen/ops/_fake_quantize_learnable_per_channel_affine_backward_ops.h,sha256=MpHWhN5M0HzQ188h0NERVGPgwaLVsl2Y3k7OAb-i9A0,1987 +torch/include/ATen/ops/_fake_quantize_learnable_per_channel_affine_compositeexplicitautograd_dispatch.h,sha256=VhI2U3Ezz9nTRmCcqGHAAtyby-7qwZ0ZWiU070ZD9vA,1457 +torch/include/ATen/ops/_fake_quantize_learnable_per_channel_affine_cpu_dispatch.h,sha256=v4N9BDpFenkmLT-gMiEWhRdtI7pWlg_EsNK8is4-vHo,1144 +torch/include/ATen/ops/_fake_quantize_learnable_per_channel_affine_cuda_dispatch.h,sha256=-vrAKuz3HHpzjyZLT-OsPNlwaZDUBGUkPqJMYKbo8IA,1146 +torch/include/ATen/ops/_fake_quantize_learnable_per_channel_affine_native.h,sha256=57dwJvkMruko0G3Aw767Faz3fbFktVo4Cobvc-jd_ls,1144 +torch/include/ATen/ops/_fake_quantize_learnable_per_channel_affine_ops.h,sha256=Mivsy0rLR2NDv5xVkRTfbNSP1f5Tia7_D7a1y2FAe84,2881 +torch/include/ATen/ops/_fake_quantize_learnable_per_tensor_affine.h,sha256=as4jcG_npOdTWLIlwIIsydqi5TyG6zMn1DEipQKYEJE,2414 +torch/include/ATen/ops/_fake_quantize_learnable_per_tensor_affine_backward.h,sha256=HB5GrByPw-ayrBxSsorhb8BRCI7jgG_pj63Qsfp4EGo,1428 +torch/include/ATen/ops/_fake_quantize_learnable_per_tensor_affine_backward_cpu_dispatch.h,sha256=LW4QWW9iiHe84LkOBxYDrlcIwi1G41TP6M-ING6yQS8,1199 +torch/include/ATen/ops/_fake_quantize_learnable_per_tensor_affine_backward_cuda_dispatch.h,sha256=Ezc77DMKXV9E0XAAIIIC_3xtOcaYbze52pWt1jrl2Vk,1201 +torch/include/ATen/ops/_fake_quantize_learnable_per_tensor_affine_backward_native.h,sha256=Cxv-XMyYZoTVIX7eDCMfEH_JVu16X9VgEW2MrJx7tCY,955 +torch/include/ATen/ops/_fake_quantize_learnable_per_tensor_affine_backward_ops.h,sha256=x0fQggJ-WcY4Jx_5fH1Im1if3UqZq8wKtgMr3jedp90,1937 +torch/include/ATen/ops/_fake_quantize_learnable_per_tensor_affine_compositeexplicitautograd_dispatch.h,sha256=RyY2XkPaq556mq6vm51XmtVByEuGrMYH0aTo7n3EDlY,1427 +torch/include/ATen/ops/_fake_quantize_learnable_per_tensor_affine_cpu_dispatch.h,sha256=pEZLfN2mtqQ2xzHQFMOeT5mDWrUE_yijT0_a1YRsmdk,1129 +torch/include/ATen/ops/_fake_quantize_learnable_per_tensor_affine_cuda_dispatch.h,sha256=yn9e9wBdeYLLD3JBld7-RypHxXW4LejZeSouq_F_6Ws,1131 +torch/include/ATen/ops/_fake_quantize_learnable_per_tensor_affine_native.h,sha256=GWdKLVqgzmKl_QzULxxobEDuqMGvX47ICYgdDK5cunM,1114 +torch/include/ATen/ops/_fake_quantize_learnable_per_tensor_affine_ops.h,sha256=vfCXW13QszoJtoHlLSdMTBQlLnIitFw1DdrlNWJ4SGc,2781 +torch/include/ATen/ops/_fake_quantize_per_tensor_affine_cachemask_tensor_qparams.h,sha256=dDW6dGNEMXPhWkzcxVcZgacp_GbraVSgZE3gwhhaCtA,2865 +torch/include/ATen/ops/_fake_quantize_per_tensor_affine_cachemask_tensor_qparams_compositeexplicitautograd_dispatch.h,sha256=TKvt0C08H8uhvYzRdYaPMINTx0hz7LChgCKwE3uD0uM,1585 +torch/include/ATen/ops/_fake_quantize_per_tensor_affine_cachemask_tensor_qparams_cpu_dispatch.h,sha256=mSrS2uFM9DlRW6OrhUjPyHyHtx519hIo12zfSvbdMEY,1184 +torch/include/ATen/ops/_fake_quantize_per_tensor_affine_cachemask_tensor_qparams_cuda_dispatch.h,sha256=AOR5lDHkbWNWGgxR2G5fCjCGhbEdyMeNtayR3JR-h14,1186 +torch/include/ATen/ops/_fake_quantize_per_tensor_affine_cachemask_tensor_qparams_native.h,sha256=JypsTHDOmK1eDCYhHLQT0vBQ5mHi5j0USc-ZpGMK8jA,1250 +torch/include/ATen/ops/_fake_quantize_per_tensor_affine_cachemask_tensor_qparams_ops.h,sha256=pG5BsRaOxwDB1YdahNx8-w_rwak209X6ooimtK_HExQ,3243 +torch/include/ATen/ops/_fft_c2c.h,sha256=t9eZZrQJSWQPbKAasRDof6LD9jiahSboAyG4LxUeaIA,4707 +torch/include/ATen/ops/_fft_c2c_cpu_dispatch.h,sha256=9MK-rivL7BM3Zpvk35ztxOkjuiJb3MrjspFB5VAqvFI,1735 +torch/include/ATen/ops/_fft_c2c_cuda_dispatch.h,sha256=YfG7ep5cn9YFVJZdCWF95AFcwujFaOH9iKG2M5eiaYA,1737 +torch/include/ATen/ops/_fft_c2c_native.h,sha256=mWU7grU5WQgaUbbhpJ0gRLQpOB7TN17wTleZVROJUP0,1200 +torch/include/ATen/ops/_fft_c2c_ops.h,sha256=hgnrV6Gl4N7Yq-EjG8lhd79E1hMHRQqtlVkxAzEqPE8,2227 +torch/include/ATen/ops/_fft_c2r.h,sha256=sMbYev1IASIs-bpqknrFwXOjZgTIHYRoYfCPz9i9TkQ,4761 +torch/include/ATen/ops/_fft_c2r_cpu_dispatch.h,sha256=JrQQ6k3VhhGqj8a7SHnuLEclmmOOomueaWeuUxnaT4E,1789 +torch/include/ATen/ops/_fft_c2r_cuda_dispatch.h,sha256=LaxvuxAHWJxvtcee1REoNsi9g-pP7T7pDVaEo6Vx3lg,1791 +torch/include/ATen/ops/_fft_c2r_native.h,sha256=OXdFhtOZ7mKVQ8E_jXWrwK8ukH31bAnIsrXj1-Mz3Wo,1236 +torch/include/ATen/ops/_fft_c2r_ops.h,sha256=si7oZH1F5gfVyhf6vQ4vX66xo7MaltbkLLfvRvMzp48,2279 +torch/include/ATen/ops/_fft_r2c.h,sha256=sPc9kbqy7k2AlQ9wieVzTIT1jtaKHP8H2JbbRNOcmFU,1703 +torch/include/ATen/ops/_fft_r2c_cpu_dispatch.h,sha256=IcILr3PMvEioM6-NY3phWeUnG9MmZvHqub5LN1N9J08,1314 +torch/include/ATen/ops/_fft_r2c_cuda_dispatch.h,sha256=3eIssSqvb3L5rMO18fMIGBo_wtvnC4TU-8_6iWUh8Qg,1316 +torch/include/ATen/ops/_fft_r2c_native.h,sha256=vyvmL3RnX-5GrSdifgKasIg_kllEKzSzbxGMwMKaOes,1204 +torch/include/ATen/ops/_fft_r2c_ops.h,sha256=QnjqS5dgWxprVfU0bsmhYCFG4t_8Mr0aT43IWEKh0VM,2203 +torch/include/ATen/ops/_fill_mem_eff_dropout_mask.h,sha256=ui78K-IOF5CCQQcP_NBPdlp9R3-TXYpFeQ3jMZFKhDo,1090 +torch/include/ATen/ops/_fill_mem_eff_dropout_mask_cuda_dispatch.h,sha256=z6FZ0tvGQ_0PhcfB-nF0Ycwte1CclFSfxc11OCVdClE,1041 +torch/include/ATen/ops/_fill_mem_eff_dropout_mask_meta_dispatch.h,sha256=yq7ecW0HOo7zoVhL8QsdA9FFirnhITPag-Urtw18XxI,1041 +torch/include/ATen/ops/_fill_mem_eff_dropout_mask_native.h,sha256=-ku1Qi-aNyOn4mejeWQZ7czydboWWf7Wljv0HX8U1Sw,795 +torch/include/ATen/ops/_fill_mem_eff_dropout_mask_ops.h,sha256=lzJy6QpsfC-nUQDq5LWIVBgzQ7_hHJZUCcJ6t1owJuQ,1431 +torch/include/ATen/ops/_flash_attention_backward.h,sha256=mL4YZFPTHDLs-RIe7uo6LSYDaKZ3Cl9cgrFencVqBhs,5314 +torch/include/ATen/ops/_flash_attention_backward_cuda_dispatch.h,sha256=RAv8Vk5LcMUknovqNroXI5JnN-M_p6zceEtotMD8iIU,2119 +torch/include/ATen/ops/_flash_attention_backward_native.h,sha256=0m3B_3vJ45JneH-4XbFxQgYuyIt-PW8bhq0v-vHzDwY,1263 +torch/include/ATen/ops/_flash_attention_backward_ops.h,sha256=Rjg6IlgQFkpVa2pfe-bxIHVD7AZ9iGLDzIIKCKTx9aw,2886 +torch/include/ATen/ops/_flash_attention_forward.h,sha256=ODLgqoQLjEfgUkLd13Ln87l0pSe7E-D9oY6Ras2wXFI,11934 +torch/include/ATen/ops/_flash_attention_forward_cuda_dispatch.h,sha256=rh-TZV1QZIayHqg8R1cBUDRUDvFnzzlW9jwbeGHQ7WM,3974 +torch/include/ATen/ops/_flash_attention_forward_native.h,sha256=aU8DmvthZn8j6DmkKUO_PzqpRBYUEg7W3-ilShO4518,2189 +torch/include/ATen/ops/_flash_attention_forward_no_dropout_inplace.h,sha256=pJApA3sEKn8V70Lfcj6x4tCfn6mfSQyeMF9abW5ch50,6178 +torch/include/ATen/ops/_flash_attention_forward_no_dropout_inplace_cuda_dispatch.h,sha256=n110ANswz4Qy7o1sfzPBYPFS7nTsibcQsLHAt5ow0mE,2369 +torch/include/ATen/ops/_flash_attention_forward_no_dropout_inplace_native.h,sha256=gfo3SPKcH10DbKTLenWuFllqYpoZtjXrww20osOutb8,1388 +torch/include/ATen/ops/_flash_attention_forward_no_dropout_inplace_ops.h,sha256=LB0pSUQ-uyGy2rHM1qtStEqOYzvaC2HwVN8ks_6o2S8,3222 +torch/include/ATen/ops/_flash_attention_forward_ops.h,sha256=b7YHts8y7DsJ1ezIiQcz5_aTtFA1JqV2BZL7MoLNTRc,6179 +torch/include/ATen/ops/_foobar.h,sha256=OHMlqMu7z_V4xehj__H86Qlz94UKxH6zwuwNszYpieQ,1621 +torch/include/ATen/ops/_foobar_compositeexplicitautograd_dispatch.h,sha256=EX9OMnCcQbR3_-Elc5NgubLUL6nCDlYTgqDDjQiu6-8,1204 +torch/include/ATen/ops/_foobar_cpu_dispatch.h,sha256=reCzEZ9MnpHtxpygrwLN2iqudL9AA20ne7mKiWGIMUg,1023 +torch/include/ATen/ops/_foobar_native.h,sha256=0GVP3RRBvPBHFUlZrABKnqKztv3wL4DCRR6Xwaem_tA,890 +torch/include/ATen/ops/_foobar_ops.h,sha256=YrlYfACiQX7WOTqaaHNWCVODX8GJbPZte52UtzMtisE,2074 +torch/include/ATen/ops/_foreach_abs.h,sha256=H863vI7g-07E_lUN5pDSIGAeZmL6RGz6pp6rPORYeoE,1476 +torch/include/ATen/ops/_foreach_abs_compositeexplicitautograd_dispatch.h,sha256=sqUV-WF32oTQGLusgnH26uIVUK409aiJ22pzGkMXG3k,1235 +torch/include/ATen/ops/_foreach_abs_cuda_dispatch.h,sha256=cnAXMVAXFd8FgOkgZt3xAb8mJIRQ6v6jJ8OcL9okebE,1044 +torch/include/ATen/ops/_foreach_abs_native.h,sha256=cHEe4iXe0JX6QUwPlWOxjK7CFkB_EraPu3dn0zjbXUw,1038 +torch/include/ATen/ops/_foreach_abs_ops.h,sha256=_pTuqBnMrUVhGDTD0pInq3870ObN1TSdpJbtJF6DFT8,2333 +torch/include/ATen/ops/_foreach_acos.h,sha256=mm2QP92RDiVeMpNegL19Ghu0dPkGRQ-0BEPO7RL3o9U,1489 +torch/include/ATen/ops/_foreach_acos_compositeexplicitautograd_dispatch.h,sha256=uSrz49WDHwSExLYI3Pl6BZrivhIstkeKPtaTwZdgzlg,1239 +torch/include/ATen/ops/_foreach_acos_cuda_dispatch.h,sha256=AEVicWLKkERE-cwbkK138wLCqgEO76tMNXnl9L0lt50,1046 +torch/include/ATen/ops/_foreach_acos_native.h,sha256=85Orh43GvNVmePYlaG2q6Jppw6gnCsZzOvkZketB7LI,1043 +torch/include/ATen/ops/_foreach_acos_ops.h,sha256=XeKTKWYH07s8SElwwn_7f29XlYONtQS0wIzfhaBMce8,2342 +torch/include/ATen/ops/_foreach_add.h,sha256=r7_hg7RPm74YE095Fqgx3A0-dvhZLlTcu_4khQPzkYQ,5086 +torch/include/ATen/ops/_foreach_add_compositeexplicitautograd_dispatch.h,sha256=KDGfuajqUsUqiEyltzNlke8Q-765o7X3wh7j_mRFSiw,2704 +torch/include/ATen/ops/_foreach_add_cuda_dispatch.h,sha256=Lmycadk-Ljhl3Jp_UEH7JgHwQpxg_Hxnlj8dAYTB5Hk,1740 +torch/include/ATen/ops/_foreach_add_native.h,sha256=uDNupOwbM9fNIKA_9x74-9faOJLadBAeFEMW777wFTE,3207 +torch/include/ATen/ops/_foreach_add_ops.h,sha256=PVe2D0-WNu9HUmPKoLqXGhLjjlqQixOm5HJz4ocIODo,9090 +torch/include/ATen/ops/_foreach_addcdiv.h,sha256=QdqMWlv6rWisZoQS9CvaqclJUE57ALaX3VPlFtXcbnI,5134 +torch/include/ATen/ops/_foreach_addcdiv_compositeexplicitautograd_dispatch.h,sha256=L_iSOvJkfX6mGoYADBsptgFWVPtT4n4lWQjYEkY3RQw,2759 +torch/include/ATen/ops/_foreach_addcdiv_cuda_dispatch.h,sha256=Zoe0yN5WPdWYMUhrl-v8AQWNGfdMQpVFSje1mT6cjwc,1780 +torch/include/ATen/ops/_foreach_addcdiv_native.h,sha256=gtnxGvk5WWVgewh9zNN7XafmUo873UtiKr-SZE6s7zk,3115 +torch/include/ATen/ops/_foreach_addcdiv_ops.h,sha256=DPPJbw81OAROJtSFLUtoEf3qoW3pgAyXHPM8ObMk8l8,8256 +torch/include/ATen/ops/_foreach_addcmul.h,sha256=NRegWHyCzqk_CywgC5NYaVIdHtc7pAHu4qeu4Zc-7ao,5134 +torch/include/ATen/ops/_foreach_addcmul_compositeexplicitautograd_dispatch.h,sha256=vZduFS7dP9mR-KEiNl9U_p1W73mswv081Y_a6uedi1U,2759 +torch/include/ATen/ops/_foreach_addcmul_cuda_dispatch.h,sha256=sFZfz5V_mKVm3te-V9JIDEmg8BGSVtqgYoY_GACuj74,1780 +torch/include/ATen/ops/_foreach_addcmul_native.h,sha256=TMluaUjl6WJSdGnfc7_AfCVzAqY3b7jKJni5MLuxbSk,3115 +torch/include/ATen/ops/_foreach_addcmul_ops.h,sha256=qIfClJLemXQcb25qQmoFHcAiN-kR-0EgFrT3X-tgjAc,8256 +torch/include/ATen/ops/_foreach_asin.h,sha256=AZ1lCR5Ly7qkoJdkFvDCUYlLmumyUc1cZXOtSlsDbAg,1489 +torch/include/ATen/ops/_foreach_asin_compositeexplicitautograd_dispatch.h,sha256=MXVA17N5xbhb_Fv1yBOfk_3pq-TbvKlHCct5XqbtgtM,1239 +torch/include/ATen/ops/_foreach_asin_cuda_dispatch.h,sha256=ycthJAtsYQ78QvhDddarb9P8pBYnXYSffz4xFEprFxs,1046 +torch/include/ATen/ops/_foreach_asin_native.h,sha256=xQnFUvkaVhBrqmajLDp2jeXmsz8slaSfrz1mw40phXc,1043 +torch/include/ATen/ops/_foreach_asin_ops.h,sha256=zia9gGDBjxTixjApN7K5XpcYQ-x3vLMOICtMBZYal1E,2342 +torch/include/ATen/ops/_foreach_atan.h,sha256=ly38qb46pBtJezAfJwZFTzQ4qHWlAIubPFMu1inaBAA,1489 +torch/include/ATen/ops/_foreach_atan_compositeexplicitautograd_dispatch.h,sha256=RsAVr5mF-RBdMFzWfmApC5HPq5J3trFPFIM-4OrHbMA,1239 +torch/include/ATen/ops/_foreach_atan_cuda_dispatch.h,sha256=3FRgTZh7vbGRUHOuKDV92XTj4uyCsN0ujg7mj6rrxhk,1046 +torch/include/ATen/ops/_foreach_atan_native.h,sha256=A70eF0bj1fPT9WZCVaDjB-PKleXIOd-rVLXVQuP2uoM,1043 +torch/include/ATen/ops/_foreach_atan_ops.h,sha256=vj9Jw3ulFiad6XNtXs6Bi4vZ4OeOriH2kEj1-uogXaE,2342 +torch/include/ATen/ops/_foreach_ceil.h,sha256=ylomgp_WfsCcSnGg5_uY0FxlMiKm-dwO5OXqwH9ISOw,1489 +torch/include/ATen/ops/_foreach_ceil_compositeexplicitautograd_dispatch.h,sha256=Sgfo4Qje1tT-mCeKExLibph112avchPLsYOO6-CBp1M,1239 +torch/include/ATen/ops/_foreach_ceil_cuda_dispatch.h,sha256=U28q_9kLOCWLewRuyozP3rveOjIml1PyAaJ-AagJZEk,1046 +torch/include/ATen/ops/_foreach_ceil_native.h,sha256=2ttSNiQU5mEDR4Pr20fADYyAK99ftB6A2oPfWS-gBhY,1043 +torch/include/ATen/ops/_foreach_ceil_ops.h,sha256=nTB0u2b404gCrZooJtHkk9WFFLuqZw3EDu9ovr9YkIg,2342 +torch/include/ATen/ops/_foreach_clamp_max.h,sha256=a_BW0FS6OZsX_Yibdamiuhz2xChrHZ7DnOBq7W4_-bM,3934 +torch/include/ATen/ops/_foreach_clamp_max_compositeexplicitautograd_dispatch.h,sha256=QHEHN5oNSJO-E0R7sYNh5V_D6Pqg9XfgI5Jfq5z_1-g,2181 +torch/include/ATen/ops/_foreach_clamp_max_cuda_dispatch.h,sha256=e2y109ojK3XojCHM2fVsqBOzXMlLfs4ihR3XdMMY5VA,1490 +torch/include/ATen/ops/_foreach_clamp_max_native.h,sha256=AAwI5fVIlYOOXIqcs9l8fVnNPjYr-Sz93w4VYvwtg4k,2466 +torch/include/ATen/ops/_foreach_clamp_max_ops.h,sha256=kaJdwnosGzpEEBLEGNLx4mrpOdLmDe7HfnFr0XcXS_A,6771 +torch/include/ATen/ops/_foreach_clamp_min.h,sha256=25dLVXkKbBf11Bvq9-GT2e1Bsfo-XPgDHlnHZr5CMl0,3934 +torch/include/ATen/ops/_foreach_clamp_min_compositeexplicitautograd_dispatch.h,sha256=94KOoii2md9z6kpDv5S2-xlymZFn2SYbEXXNb-klVRk,2181 +torch/include/ATen/ops/_foreach_clamp_min_cuda_dispatch.h,sha256=ENO8mCycIXkuVtCfAhqz8M6leW9HXX3PDjxARxzuwso,1490 +torch/include/ATen/ops/_foreach_clamp_min_native.h,sha256=MPxdF1l-17q5a5_I6wGSL_mM_jxo8hGop2Ae-pf1drs,2466 +torch/include/ATen/ops/_foreach_clamp_min_ops.h,sha256=1qloDHuRonStj0x3gSbCwihO88zzSztUJvonsMRY3q4,6771 +torch/include/ATen/ops/_foreach_clone.h,sha256=HLc2MEtcovJQjY34w_1tyd0QVrUo0KUTRDGZDTUrU5g,1675 +torch/include/ATen/ops/_foreach_clone_compositeexplicitautograd_dispatch.h,sha256=JytNs_w0-4iO8hVrEfwpWvaj5QDiQQoTUORVFLkbFuw,1367 +torch/include/ATen/ops/_foreach_clone_cuda_dispatch.h,sha256=Fz2a3wqdZEB7a-psnIEhwtVQYqkuh4JoMrGVkNWMoEc,1059 +torch/include/ATen/ops/_foreach_clone_native.h,sha256=JOOmm5xJIS5icSANI-KyvY5J2_ZlS4Km_5EHsGE0uOs,1097 +torch/include/ATen/ops/_foreach_clone_ops.h,sha256=SgNgQqAP1Rl9v8jD9EznDaKrMwUvBVtS3p4Fwq6wtFc,2189 +torch/include/ATen/ops/_foreach_copy.h,sha256=Pk8drkCVEwKYrKsIFHTTnZ__UM-0m3kCenUguFpRz8I,1904 +torch/include/ATen/ops/_foreach_copy_compositeexplicitautograd_dispatch.h,sha256=XyUYvtKdm_QVO04rJFQ1T5oePEkv3Nhus0ii8TN5eqQ,1413 +torch/include/ATen/ops/_foreach_copy_cuda_dispatch.h,sha256=0P4FLaXGMQR7RxKYIcQ2gdEDQiZK2-uEu-CdMHGDNUs,1019 +torch/include/ATen/ops/_foreach_copy_native.h,sha256=iEqLLaHxqf2n7WPXIcO81FoXDlA86j8SKrAaET8kKcE,1147 +torch/include/ATen/ops/_foreach_copy_ops.h,sha256=IidO_pI1qQMx3fOAEzFGOR3Aby52ZhFXmYpQovS3zHc,2768 +torch/include/ATen/ops/_foreach_cos.h,sha256=mm-lR8hp6b5T36aK_DY_UxXpDCRs_3t6M6UkPc1Hp7A,1476 +torch/include/ATen/ops/_foreach_cos_compositeexplicitautograd_dispatch.h,sha256=NZ8xb3dOpyrV2Lr66YJG_8nD8x5urxwj-Pxje7HDH9k,1235 +torch/include/ATen/ops/_foreach_cos_cuda_dispatch.h,sha256=ljip2w81ew2OU03AQQUJ_OACs5PviAwic5qZSFsZuic,1044 +torch/include/ATen/ops/_foreach_cos_native.h,sha256=BXp97JJxUDwVJJQRKhFZ3juoOmiGCS_llHzWtGw8U6I,1038 +torch/include/ATen/ops/_foreach_cos_ops.h,sha256=RTVTtHJzHIsJcOLGdLbELjZOFsk0YSb23vVz6mPqxCw,2333 +torch/include/ATen/ops/_foreach_cosh.h,sha256=iV57AAPWDrqjDevEuddigjyr-XGisCr9ZzQPtfNzFas,1489 +torch/include/ATen/ops/_foreach_cosh_compositeexplicitautograd_dispatch.h,sha256=EdOnWqAsggtDIyNned5ApVuvSZ0TfsgN1wxjOAdQ_3Y,1239 +torch/include/ATen/ops/_foreach_cosh_cuda_dispatch.h,sha256=HOYIU5vfN7me-70xM7oygwC-eDrYPQTs_7mpL7W_Cy4,1046 +torch/include/ATen/ops/_foreach_cosh_native.h,sha256=elnAgkI38rrJiUK3epdWCdd3GaWOQreIClYT9NKyaXs,1043 +torch/include/ATen/ops/_foreach_cosh_ops.h,sha256=5l8mNInBPwZIzBMKAv-HOqrl2e5pDz0fHj55U5g83oA,2342 +torch/include/ATen/ops/_foreach_div.h,sha256=7tL_jzBZYVATEXYxAg0uhzf0REpuwZ-nr_seV4Tu8wo,4670 +torch/include/ATen/ops/_foreach_div_compositeexplicitautograd_dispatch.h,sha256=o23HPAV0dtqoJPBkR9UU7RQkVlsPUS9JFf0XIzcvCOY,2484 +torch/include/ATen/ops/_foreach_div_cuda_dispatch.h,sha256=2WEVSD6Ed2X3J6Kc6S3kqA4iWGBMmxr1Ywp2g0yxaEw,1628 +torch/include/ATen/ops/_foreach_div_native.h,sha256=r9iNzytjGfIHJGu-bllTYwU_9vzv_WD_9zyHAtGR9fc,2931 +torch/include/ATen/ops/_foreach_div_ops.h,sha256=2ePX4pNpCpgj_wDF7rvJsG0b3q4VoO59NI1WLMBGwSk,8550 +torch/include/ATen/ops/_foreach_erf.h,sha256=38gYf2ysFed8ObLjQVPr0SSRAUP908l6dEInrooYr2c,1476 +torch/include/ATen/ops/_foreach_erf_compositeexplicitautograd_dispatch.h,sha256=h4bCyke1qDQ-mJKocKU-YPZR4WkllMqNg4Fc13wvRuo,1235 +torch/include/ATen/ops/_foreach_erf_cuda_dispatch.h,sha256=lKyNusBh-1YZaCxM0u1Nhkbr4DBtoQCGjiRvNO9HCJk,1044 +torch/include/ATen/ops/_foreach_erf_native.h,sha256=2ayNv2c2WZrPYtkQgxOlX0SAbf6SfVUvd4CqHe5yQYI,1038 +torch/include/ATen/ops/_foreach_erf_ops.h,sha256=QTae0NNBZIoBVPKrPFAxCqStOmRQdU9dCOjmUVts-qw,2333 +torch/include/ATen/ops/_foreach_erfc.h,sha256=Od5r6R7pJQk9hg3uE29In2eCBcKWMD9yvcGY4CvbA_k,1489 +torch/include/ATen/ops/_foreach_erfc_compositeexplicitautograd_dispatch.h,sha256=14iV6dmI5YIyq4p03Nb-cXUEyM7CPvNylnJJy94BrdA,1239 +torch/include/ATen/ops/_foreach_erfc_cuda_dispatch.h,sha256=z_R1wxaVb0MPM3mx-543rITbyIxRM4vgDSsWNPn89to,1046 +torch/include/ATen/ops/_foreach_erfc_native.h,sha256=ddQnOPmpzhDhClzOjANPs6umcQbafJH1fhZH5prBuws,1043 +torch/include/ATen/ops/_foreach_erfc_ops.h,sha256=OdnSirkkA0W-cIbte2iEnHx3FVdSdGNgcLJQDqfA424,2342 +torch/include/ATen/ops/_foreach_exp.h,sha256=Vd0LWgNOjrenImwVhuJpuITyNr55VN_HSNtwB4lWS80,1476 +torch/include/ATen/ops/_foreach_exp_compositeexplicitautograd_dispatch.h,sha256=bPe0PDDhV6uJEl7WjZzRRxcBaA1MU7nA2eDOqJLqjq8,1235 +torch/include/ATen/ops/_foreach_exp_cuda_dispatch.h,sha256=Qt8Ll-En7IogavZKZeiuILHbZODYP7dS62gRPBAUlDo,1044 +torch/include/ATen/ops/_foreach_exp_native.h,sha256=177rueOWuMS_umUOb_BVByeqzQ0Q6mMTmjyiEGZ3HFg,1038 +torch/include/ATen/ops/_foreach_exp_ops.h,sha256=VaQaevTmB8qKgwTwT8rjVuiPuBikpneCrtYMVUC2pSg,2333 +torch/include/ATen/ops/_foreach_expm1.h,sha256=zuvcpuiReWSzhGlTElAVX3-JJK6FDnrgwnl8x7o4k4Q,1502 +torch/include/ATen/ops/_foreach_expm1_compositeexplicitautograd_dispatch.h,sha256=1Q0qBTfhFLEwMTOyfpK5P9zO3jizX5ZUc3u-hEmHLWM,1243 +torch/include/ATen/ops/_foreach_expm1_cuda_dispatch.h,sha256=l-4ROJhUnVdM8zMF4A83BuqbJYdSrzyzySzZM91GQQk,1048 +torch/include/ATen/ops/_foreach_expm1_native.h,sha256=WRbWVaF5d2ZITLWpck7hpTSIN7jlRUHjgZqgRMXoiI4,1048 +torch/include/ATen/ops/_foreach_expm1_ops.h,sha256=iX071mcf9zuE_kZMmhHgPsJBpt-MztQ03yhqmktuiiQ,2351 +torch/include/ATen/ops/_foreach_floor.h,sha256=Hm7ephKM9iyKPGm6pjjM0Gre6AowCt2yXOfe577wNOQ,1502 +torch/include/ATen/ops/_foreach_floor_compositeexplicitautograd_dispatch.h,sha256=A9B6UJ-4FXFEMvSw3LBE4whsScVNTEVEIVB1SpWPmDE,1243 +torch/include/ATen/ops/_foreach_floor_cuda_dispatch.h,sha256=jnloWHKWy4z3qtHnFx8EfUbEuOI08wRSeTgQXxHdDsQ,1048 +torch/include/ATen/ops/_foreach_floor_native.h,sha256=pDEWkpjrZSFDo6YHvJdOUCxHDxMfIUCM50AtfmVS_yM,1048 +torch/include/ATen/ops/_foreach_floor_ops.h,sha256=qVdoWm1oEkVltP6jddpF2_Wl4zrb_msDd2OFNLJndbk,2351 +torch/include/ATen/ops/_foreach_frac.h,sha256=rOl9T4TYEZsLsB-oKszqGWWjS8t8XTnYLskhbaC1iJ0,1489 +torch/include/ATen/ops/_foreach_frac_compositeexplicitautograd_dispatch.h,sha256=FPwx5X7NPsDzKtqHe4oSlHPaw17hXZTeshkKsqjP1fk,1239 +torch/include/ATen/ops/_foreach_frac_cuda_dispatch.h,sha256=TwHTX5rcTITTdaaTZoImvSnsbIcSK1A9K3W6NR2Dn-I,1046 +torch/include/ATen/ops/_foreach_frac_native.h,sha256=6MxCgTD3_51OdyNmJTjfZf_x0CvAT4i2LhEiKj6J4NQ,1043 +torch/include/ATen/ops/_foreach_frac_ops.h,sha256=42VbxkwtYQy_qSpJfZ7KXqGWJrn2DmpRBZMkR3PRQKc,2342 +torch/include/ATen/ops/_foreach_lerp.h,sha256=AZtgGbGwOQetDEeTmc7k_lQCSQspkg09CThinZKkWu4,4409 +torch/include/ATen/ops/_foreach_lerp_compositeexplicitautograd_dispatch.h,sha256=Lvhy_KhTgnQ9Ue7ovMj8W6J7EffJ95bmmyYv6uvRnCw,2425 +torch/include/ATen/ops/_foreach_lerp_cuda_dispatch.h,sha256=5cy7EWDwxXs8KZyAEg6P-mDnbrCZ6bS0iPpr09cTx5g,1612 +torch/include/ATen/ops/_foreach_lerp_native.h,sha256=aZOu9iAB40q1Dg_1JqmF2SwNOGphBK8FXMJx0Xp4OBI,2719 +torch/include/ATen/ops/_foreach_lerp_ops.h,sha256=vM8Wfx03t87nRzmynTp_zLCESE_3wDNMiVdaVk3I6Xs,7410 +torch/include/ATen/ops/_foreach_lgamma.h,sha256=4iHn8HKc7QwX9c_8uxRWUNUVHQ4gyGwHKCbtKQ5Ev1s,1515 +torch/include/ATen/ops/_foreach_lgamma_compositeexplicitautograd_dispatch.h,sha256=OReicr7ulgPTvspPJ1Di2piOD0BaxesLoa0h6_yueLs,1247 +torch/include/ATen/ops/_foreach_lgamma_cuda_dispatch.h,sha256=PHVTDRpFsU_g2xDZMkSr3tfqMd7VAD06GN2TiuNHnUI,1050 +torch/include/ATen/ops/_foreach_lgamma_native.h,sha256=JX4E9KlG5tyw0OqsL4VROsSq3VorJIK4pwUrnbgpMgU,1053 +torch/include/ATen/ops/_foreach_lgamma_ops.h,sha256=2LZwYWbvbiGPUOFsWrkgcFCUtw16N1SSnN0C5vGnvMM,2360 +torch/include/ATen/ops/_foreach_log.h,sha256=STsM_GXWdN-7Mk2N0WfbCsqkD_JTwU3AcPt7wA0Y9A4,1476 +torch/include/ATen/ops/_foreach_log10.h,sha256=qm2nxgsfzw82xgRX1dCUL_7Efa8M-B8vCikcV-kyNxA,1502 +torch/include/ATen/ops/_foreach_log10_compositeexplicitautograd_dispatch.h,sha256=PrPQgoqCgTqNQTvZDhn8TL_OMhD9Ir51zJiNTiMO2Nk,1243 +torch/include/ATen/ops/_foreach_log10_cuda_dispatch.h,sha256=hFhB8DaVRBMpGl6-LYzcW6MYH2PE0lldhXoRcPMkzGU,1048 +torch/include/ATen/ops/_foreach_log10_native.h,sha256=3fb7wnkKIwolFx-Ccjl8vLXhxK687_HYofdRq7e4Iu4,1048 +torch/include/ATen/ops/_foreach_log10_ops.h,sha256=yinh1BipcB_2KqB_nK8sIfIJLN6WSYyfrsMjQSNaYC8,2351 +torch/include/ATen/ops/_foreach_log1p.h,sha256=C9-W3fYHFRh7dSmMH0Pyvngc1GbsJI4inm1wYEr3Jh8,1502 +torch/include/ATen/ops/_foreach_log1p_compositeexplicitautograd_dispatch.h,sha256=hMvNDcEimHAbuipN1B6pIqYBkTZHttmCR47aVBHR03k,1243 +torch/include/ATen/ops/_foreach_log1p_cuda_dispatch.h,sha256=WnaJJRWgOz1AE73IttiO5PFL6X32zSTYrvEhAaQSBao,1048 +torch/include/ATen/ops/_foreach_log1p_native.h,sha256=WlxuK1Es7YX3X6gB33AapX6ENjnSywifTn7CKOP4IUo,1048 +torch/include/ATen/ops/_foreach_log1p_ops.h,sha256=c7qCg3AEFkLjVBqFuwaRNVznXrwAkXMEV-ER8cPqF1s,2351 +torch/include/ATen/ops/_foreach_log2.h,sha256=V1jZHttgoka1gKa9L92tB0eeh52xWYHG0djnuH_eGHg,1489 +torch/include/ATen/ops/_foreach_log2_compositeexplicitautograd_dispatch.h,sha256=OdGW9UwPYRwEtA9t6bHAAImzW_TOJT693SIFXXc-bEE,1239 +torch/include/ATen/ops/_foreach_log2_cuda_dispatch.h,sha256=HiuoNRGvHtxoa_KSujZQdVvAl7KyetiEEoFVpwDdzqU,1046 +torch/include/ATen/ops/_foreach_log2_native.h,sha256=IKBnVWLN5mQKdAyWEplc4qSlnXuzcAhsBaBaoeu8Xq8,1043 +torch/include/ATen/ops/_foreach_log2_ops.h,sha256=oSwZVFS6K9mT9XlaLlyyORrdZwVqo_Jk3xIGaiMRMqU,2342 +torch/include/ATen/ops/_foreach_log_compositeexplicitautograd_dispatch.h,sha256=uV7YAY7SYPr19EfPIxwiQdK4TaDo_WFgHeEbXnCHC-g,1235 +torch/include/ATen/ops/_foreach_log_cuda_dispatch.h,sha256=LloA_WZ00FnhlE-Kv2eSbYzHKZw7wuvD868_MMMxSpY,1044 +torch/include/ATen/ops/_foreach_log_native.h,sha256=nSaNq7XU5aoS6NmM9Rm10fxV819GGhqsAXcMAomGjxs,1038 +torch/include/ATen/ops/_foreach_log_ops.h,sha256=5Z1RG81knsJ4gCECyv7LqIiaBsqdy8718HRv-0EOns8,2333 +torch/include/ATen/ops/_foreach_max.h,sha256=a0wbuTvV2pvD9TNq-V4OgtBBWjLdX77JiEFKU18DxtU,1328 +torch/include/ATen/ops/_foreach_max_compositeexplicitautograd_dispatch.h,sha256=a8VHMeSCtgmpP5AP9rPGP3lzdzThPOixu4XBxbxArHA,1184 +torch/include/ATen/ops/_foreach_max_cuda_dispatch.h,sha256=QeiCSqUg8WbtaQEYR2B9OY9mb4ENmOyCEXvKYXAgxpM,993 +torch/include/ATen/ops/_foreach_max_native.h,sha256=4S_VvDyRgMW7xhpIXonJecOYZIpzINDYlqFHAfRBRbo,914 +torch/include/ATen/ops/_foreach_max_ops.h,sha256=0EWp4GXeELrHig2xuH8iF_aCIEPLaMTcVlmcfmvhP7c,1840 +torch/include/ATen/ops/_foreach_maximum.h,sha256=Mp5ZcMzfg_gl0_7teXFg_ojdSbn1IRqGwBSS5EBkuGg,3860 +torch/include/ATen/ops/_foreach_maximum_compositeexplicitautograd_dispatch.h,sha256=W-Gf1WH1rstCKwKHtvwWXkbilUnHmKszC3CX06jajFY,2157 +torch/include/ATen/ops/_foreach_maximum_cuda_dispatch.h,sha256=uo3AoRyJzybbQGmZ_fHk0xC8X6nmZWEtMGIMbjq9TsQ,1478 +torch/include/ATen/ops/_foreach_maximum_native.h,sha256=k_7sTfeOZm4ReqeWuX2Lcju13fPOZv099Oxig3bhoNw,2460 +torch/include/ATen/ops/_foreach_maximum_ops.h,sha256=EItwNAP5KlKCl66TQvgUVnhtlbNTbULvImqMUeOvZAg,6717 +torch/include/ATen/ops/_foreach_minimum.h,sha256=RffEwCJCcpuaT_dJU3AA46FJEHe7XtibFx11xGlI_jM,3860 +torch/include/ATen/ops/_foreach_minimum_compositeexplicitautograd_dispatch.h,sha256=qAP5EzKdl3nrptdjNsluWgy5SLMctgxN--8GQUaKsVU,2157 +torch/include/ATen/ops/_foreach_minimum_cuda_dispatch.h,sha256=t_XFkxwi2sGv4KFL5fr_-DgOQQOWlfAIyGZ_qUd58ZE,1478 +torch/include/ATen/ops/_foreach_minimum_native.h,sha256=k3kHt0HHhA7xfYZtELtOWpb7rAOVTmdbRjumVffQ9qQ,2460 +torch/include/ATen/ops/_foreach_minimum_ops.h,sha256=zFiblbn0l07Wt8Rj9rVPYbSycPOyx2qQOZqpTWcGzoQ,6717 +torch/include/ATen/ops/_foreach_mul.h,sha256=9ajVCQvTXsBcfeSSZhjtyGegYyCkIE5WR2A1RzqRLnA,4670 +torch/include/ATen/ops/_foreach_mul_compositeexplicitautograd_dispatch.h,sha256=TNAKI_Km56tWjXvYtXWPTwEazRcCxYmB1hUVxsqcNGY,2484 +torch/include/ATen/ops/_foreach_mul_cuda_dispatch.h,sha256=kRUdpZ0dLpF5-CCZOFZ6ep7jGsshIdXQRGdhvvYcw7E,1628 +torch/include/ATen/ops/_foreach_mul_native.h,sha256=Drr3pJ_BqXrFLdsDlM59M2Hl0zj4SWBNT7DG-IPRD5o,2931 +torch/include/ATen/ops/_foreach_mul_ops.h,sha256=p2YHSMBZgghntRmjcqc5LXy7mkB-YYdk5WZRp-DY2Qw,8550 +torch/include/ATen/ops/_foreach_neg.h,sha256=f2x-pvcxiYFg4vG4NwlktlEmTWk3YVv4Cl-6qJ8yva0,1476 +torch/include/ATen/ops/_foreach_neg_compositeexplicitautograd_dispatch.h,sha256=XywtYFHU-u8yArCKnE4vfjnVSIVun_5O1wOEGP_MVDQ,1235 +torch/include/ATen/ops/_foreach_neg_cuda_dispatch.h,sha256=LPVYNaE-gBkG-rPj6SfEA6GMq2HyV9aSqUG715zh27Q,1044 +torch/include/ATen/ops/_foreach_neg_native.h,sha256=uLsNgz0OpcMZs9a8xdvLQQqNZyOS1nZB0uSed5uAxFo,1038 +torch/include/ATen/ops/_foreach_neg_ops.h,sha256=xpcJUIDkpQDJ1MO6-_Je5_iU4qXUmNib_fUwU_ft_eI,2333 +torch/include/ATen/ops/_foreach_norm.h,sha256=W-1qQrogPdbIAnCBm1dV4LZzsJ1ga055wnIZWlyWGkA,1753 +torch/include/ATen/ops/_foreach_norm_compositeexplicitautograd_dispatch.h,sha256=4mJ1ag9PjJRAyVvh8Xnk1W6_KAKIWAPW4UaM8-Oq4OE,1410 +torch/include/ATen/ops/_foreach_norm_cuda_dispatch.h,sha256=VdTC_m4xcvd4LWKbu6RMXE2cPpRna40LstMqA7Gbz0w,1074 +torch/include/ATen/ops/_foreach_norm_native.h,sha256=-L3O42cEqG5eD0131Z3pgRxThv1SmUtpfkhGTJQgu6o,1147 +torch/include/ATen/ops/_foreach_norm_ops.h,sha256=N-jKDjNpmoRnGm4jDOgtRQJPz9o78QXnYu-3M2DYoq4,2321 +torch/include/ATen/ops/_foreach_pow.h,sha256=-lKiqGD6SqjLc2BOE9j5vRtzupA04WUdi3CEYneRudk,4040 +torch/include/ATen/ops/_foreach_pow_compositeexplicitautograd_dispatch.h,sha256=GTRYb9tsFgcu3Q3PvwAvPVn5askjon87TOCDCv3xx6o,2233 +torch/include/ATen/ops/_foreach_pow_cuda_dispatch.h,sha256=22HIk8rUtUf9jMnsTFb6MMl3hoCA9V265ezAxQMU5tI,1566 +torch/include/ATen/ops/_foreach_pow_native.h,sha256=_RhdTs4jarBm9fcDJjJdQohp8YAGs_1_oll_W6nLBJY,2652 +torch/include/ATen/ops/_foreach_pow_ops.h,sha256=iphu4rfr_pz7fukCdZgLII1Kk-bofPyl5g5M_cFd_qE,7360 +torch/include/ATen/ops/_foreach_powsum.h,sha256=F9SaXsEZwRKP0A0oaJoU7AIHlPnN0I2NaYWqPinAi5M,1773 +torch/include/ATen/ops/_foreach_powsum_compositeexplicitautograd_dispatch.h,sha256=0-C3mgbUrxDgztpICH1IA4jnPEorpefubFsmfk9Ktsc,1416 +torch/include/ATen/ops/_foreach_powsum_cuda_dispatch.h,sha256=CrGd_oUTmn2j6Wd8H9uqiUPOSkrQX4AbLmlhMu2JK18,1076 +torch/include/ATen/ops/_foreach_powsum_native.h,sha256=agrvpx5O4etWwH7PbLl4zYFjLZl8rhNCZd5NMLiHCZM,1153 +torch/include/ATen/ops/_foreach_powsum_ops.h,sha256=VKKf-rmtlwEQdXqDkMW--IfACrMP-eK6cHIxxKJO1YE,2333 +torch/include/ATen/ops/_foreach_reciprocal.h,sha256=zrp2-TrifV9HJLgA3bRNtgZ2tLJu22OHGXxz-bzZYQI,1567 +torch/include/ATen/ops/_foreach_reciprocal_compositeexplicitautograd_dispatch.h,sha256=YuUJdFd9vvITYxj4yG-26R7_fU-_elBZpyJxcUaF7G4,1263 +torch/include/ATen/ops/_foreach_reciprocal_cuda_dispatch.h,sha256=g1ZQKR08zNfyoaHTmZf6sp49AYmN94urcTpAEzUhya0,1058 +torch/include/ATen/ops/_foreach_reciprocal_native.h,sha256=_FZB-q2w_tZADF5FQlupTiQXt6Echx6E0luOzUIgZ7o,1073 +torch/include/ATen/ops/_foreach_reciprocal_ops.h,sha256=dgcEk2YLh4OeeQLXrHwu67bYWbCWlw7cPJLxrTnyKR0,2396 +torch/include/ATen/ops/_foreach_round.h,sha256=HO8iLDuX1cW-uLKq4kTmLzP--J_I_XgBgy7ItM19fk0,1502 +torch/include/ATen/ops/_foreach_round_compositeexplicitautograd_dispatch.h,sha256=r5ovquR7UP-MNtEm9SQZQ9Hd-5W_pKTS8jEYSMLPlyo,1243 +torch/include/ATen/ops/_foreach_round_cuda_dispatch.h,sha256=H1_XxtOTnBIQEg0pWjipGH3sMwJT6a4MO7pjwuneqRo,1048 +torch/include/ATen/ops/_foreach_round_native.h,sha256=358Bq56dXVg-R8BIGK-mW2Sklg3OfEr9Idr0V0mpfQE,1048 +torch/include/ATen/ops/_foreach_round_ops.h,sha256=2rogSekI7iktty6J_FT1v5hfGpXz829rtQZOXUGQD-M,2351 +torch/include/ATen/ops/_foreach_rsqrt.h,sha256=JV8xRQv5qWIa_yFkKdtmAWB4vRTjJvCWo9BpLA7lcNg,1502 +torch/include/ATen/ops/_foreach_rsqrt_compositeexplicitautograd_dispatch.h,sha256=LVMtWef5OtXMniZwpf9yfaOl9JprNMqpWv4iWT0_TkU,1243 +torch/include/ATen/ops/_foreach_rsqrt_cuda_dispatch.h,sha256=IbgBwe_VNVo-_muQ32MCrcQfpQQuzvA7L_FkTqmoTDg,1048 +torch/include/ATen/ops/_foreach_rsqrt_native.h,sha256=jOdnUZW0xZ8relwXMg9wk3FXHG0dQzPf3LrZz_0N6jI,1048 +torch/include/ATen/ops/_foreach_rsqrt_ops.h,sha256=sjeT527-oIAxOCjr_7Kui-MA48HvYttPFuMztn2cSPI,2351 +torch/include/ATen/ops/_foreach_sigmoid.h,sha256=Di4wPgfzzXTJUIiaGYAJX4basJJfqvELEA4KOIgrfVk,1528 +torch/include/ATen/ops/_foreach_sigmoid_compositeexplicitautograd_dispatch.h,sha256=6WbOVDA-iu9pUFKR1N5Qlbh7BUChar5ztZo_cXcGWMs,1251 +torch/include/ATen/ops/_foreach_sigmoid_cuda_dispatch.h,sha256=myuRlVqZK9iKugcTgT0Fio_ueR9hirPVTxjuDX26fnI,1052 +torch/include/ATen/ops/_foreach_sigmoid_native.h,sha256=UnmVWKMao1vjORYmmdC1IiPQId_gevnufam_Gsy407o,1058 +torch/include/ATen/ops/_foreach_sigmoid_ops.h,sha256=CYhginFUzrmqTgcQhfOTmxCwoZrRCFr1xBDCzKPlpZg,2369 +torch/include/ATen/ops/_foreach_sign.h,sha256=4-ZaVDCZx7gONguObU9Q68EwkPpWTA3iVtHuR_DC530,1489 +torch/include/ATen/ops/_foreach_sign_compositeexplicitautograd_dispatch.h,sha256=cedUDCe5TEh-T1JzUlgf6Gc_aMoOFrhXTVBJ2qSbjbw,1239 +torch/include/ATen/ops/_foreach_sign_cuda_dispatch.h,sha256=aRNfBqg3kvHyQC-n8sQIVs1kBkbsNkALxdZ-vKLwPOc,1046 +torch/include/ATen/ops/_foreach_sign_native.h,sha256=n8Tzx2_rSx9QL-ktFIz0dHkLp96paPcUEp8RcdKE4YI,1043 +torch/include/ATen/ops/_foreach_sign_ops.h,sha256=y64JnpNYl_T7swUVMmHc3XcmxGHtWEvdULoSXAazSwg,2342 +torch/include/ATen/ops/_foreach_sin.h,sha256=lF-jF7TQJqcPLDw9VUf4ljOJ890UkaZBpSL094q7gUg,1476 +torch/include/ATen/ops/_foreach_sin_compositeexplicitautograd_dispatch.h,sha256=1uCQUdqUZLZxhAzQwg1sRlI5aisMdSoeem7m3rUWkeM,1235 +torch/include/ATen/ops/_foreach_sin_cuda_dispatch.h,sha256=LA3hhqnAjtlNtIYuCfDz56qaQWoe6k4QXmSqJt8QE6U,1044 +torch/include/ATen/ops/_foreach_sin_native.h,sha256=3YAAZVODEwgTFPY3EntwnmgBrUD6xN69iguJ1lnhOQQ,1038 +torch/include/ATen/ops/_foreach_sin_ops.h,sha256=x8yLT729lln4-6XjWg2hN3pF1wkDIl6fxD0TlvtQ5-I,2333 +torch/include/ATen/ops/_foreach_sinh.h,sha256=EZtu8CFHTc92qEo89KsENz9gWM1Gvwt38lpbVrqzm08,1489 +torch/include/ATen/ops/_foreach_sinh_compositeexplicitautograd_dispatch.h,sha256=DqYfQBn55qXnoUBwiaiW0T8dptpB_NeTRAaXICp8PtM,1239 +torch/include/ATen/ops/_foreach_sinh_cuda_dispatch.h,sha256=ZR9siY3t5T0yGh8baMRDyDfem1QXOv41MfYjsWW5GB4,1046 +torch/include/ATen/ops/_foreach_sinh_native.h,sha256=PcA16H8nhg9eLcQlAKH0AT037Gl4n1VDUfWOtwPAFv4,1043 +torch/include/ATen/ops/_foreach_sinh_ops.h,sha256=AyD3tG1OHOVosobFXw7cj5e55z1J-HL2FTOV2hEe3xg,2342 +torch/include/ATen/ops/_foreach_sqrt.h,sha256=QGJyYtGx5_pK38TJ4kAaTW00i3cOD5ALRluZijG42yg,1489 +torch/include/ATen/ops/_foreach_sqrt_compositeexplicitautograd_dispatch.h,sha256=KCDYeq0eRSsJrdNBsKg-xgjw4TWs0Z4w59G7NcIFxZk,1239 +torch/include/ATen/ops/_foreach_sqrt_cuda_dispatch.h,sha256=qn6bQS82-PJid6yksU19GEupBm4JhB6z8YFsHEYVdCE,1046 +torch/include/ATen/ops/_foreach_sqrt_native.h,sha256=Hu0L_QWZk0rO30Ox9ASrVHWAtWgkYLGcR3UrPIl44-s,1043 +torch/include/ATen/ops/_foreach_sqrt_ops.h,sha256=dM_VJreHXO5U6z9b55UnyguccJ4Hf7OHTIFtuYnkTG0,2342 +torch/include/ATen/ops/_foreach_sub.h,sha256=_EbUgHyvVYfGyVoRClzEcRmVITxetnpP56YrMyJKbsI,3920 +torch/include/ATen/ops/_foreach_sub_compositeexplicitautograd_dispatch.h,sha256=hOKkh-18w6BOFIEA4SEoODYkGC5O4cAduN_w_jyOZ3o,2219 +torch/include/ATen/ops/_foreach_sub_cuda_dispatch.h,sha256=F5NRnKE-5ErGvpGjkhKb_XVEZAlgb231zS-phJDyM-g,1510 +torch/include/ATen/ops/_foreach_sub_native.h,sha256=lvR_Nmh6qAlRXLLEwGWxEEM64fmL0dhryFGdYx9Lm6I,2514 +torch/include/ATen/ops/_foreach_sub_ops.h,sha256=_cKVdFUp75SwFKHF1JWlxwvkhbwnMzH_WUkq4okQO2g,6879 +torch/include/ATen/ops/_foreach_tan.h,sha256=_7I0j7mDxBRR3kSaq75qmFwr8vPmoN-JUbTHvVJMTVM,1476 +torch/include/ATen/ops/_foreach_tan_compositeexplicitautograd_dispatch.h,sha256=lLY4NItXa8VBF5uabl7kZuknRSiqHNkGUXbLMGIXuDY,1235 +torch/include/ATen/ops/_foreach_tan_cuda_dispatch.h,sha256=ONrhGzHeYoee8g8XYyPAffn4sTaKIwEcZhrlWM9TunU,1044 +torch/include/ATen/ops/_foreach_tan_native.h,sha256=N5Ohc8bIxv-RvId_TFlq7bd0WbthQE8iv-oI7OxRt5M,1038 +torch/include/ATen/ops/_foreach_tan_ops.h,sha256=9SjxsWf2S-D3MPwnY-m7QSUbAxWXRq08JbvMSzmmRns,2333 +torch/include/ATen/ops/_foreach_tanh.h,sha256=-JOTdt54l6vCKVREf_O9QaPnFYjT_Si3Eagb6Wq35wI,1489 +torch/include/ATen/ops/_foreach_tanh_compositeexplicitautograd_dispatch.h,sha256=yStqmJpT4WVLZVMl1j_TFBWalCd___Owouoc2BNNoXo,1239 +torch/include/ATen/ops/_foreach_tanh_cuda_dispatch.h,sha256=q5k2GcVxPZBFxVDrcgnY46_B08v6nGnGSdv9pEG2Uhs,1046 +torch/include/ATen/ops/_foreach_tanh_native.h,sha256=O9X9kSNDxjuwt1m-lJaeXuEdnvrPa5_PhsPqnYLNAbk,1043 +torch/include/ATen/ops/_foreach_tanh_ops.h,sha256=Y0m_yTJt3l4XBpSABsPgvxb8dHHtrM3W6KvP5h1_cFQ,2342 +torch/include/ATen/ops/_foreach_trunc.h,sha256=H-_8HPF6s-GcQyWa1UIsYGpGwujl4frkPNgXeUfydGY,1502 +torch/include/ATen/ops/_foreach_trunc_compositeexplicitautograd_dispatch.h,sha256=CggimwSCuqV-garTGnMa-8J6cCV88wRb9BF45RbIovg,1243 +torch/include/ATen/ops/_foreach_trunc_cuda_dispatch.h,sha256=sJSlCjErUBZnEN7xlegy38O1v2x45nDmBOp6xUjb1CM,1048 +torch/include/ATen/ops/_foreach_trunc_native.h,sha256=u9-q21wCzFGTxS7pA-hMXqJI1Z5pjl4dnM_csv3lAJo,1048 +torch/include/ATen/ops/_foreach_trunc_ops.h,sha256=7Ic71FFdspzGbqwphxfdp8XhjQQ3d1Awlob1qsl_ab4,2351 +torch/include/ATen/ops/_foreach_zero.h,sha256=7aYbFms3Uq2a_hGDBss2HnSASvdYSbPvB7BGYf9trBs,1498 +torch/include/ATen/ops/_foreach_zero_compositeexplicitautograd_dispatch.h,sha256=_Go_fWuNKmEnWtwKqJaJ0bzx3zSjrZy2INDJgOhUkRI,1239 +torch/include/ATen/ops/_foreach_zero_cuda_dispatch.h,sha256=qV4RIuX7YDd2QnaWNeFI3V2__GzzfBMzOGI-3dI4F7s,974 +torch/include/ATen/ops/_foreach_zero_native.h,sha256=v_AuTLkkmt3Rf3XGSsmBbnZ2OfhsSCoYBwZGneO5zVM,949 +torch/include/ATen/ops/_foreach_zero_ops.h,sha256=mW19R0-S7SvWKnCNi2iKOuiSblnRYjLq9F6-UxtFHS8,2351 +torch/include/ATen/ops/_functional_assert_async.h,sha256=W6HDTE5JmdmJijszzDMKXVcoTwNzH620DjIEck0cpZ8,1087 +torch/include/ATen/ops/_functional_assert_async_cpu_dispatch.h,sha256=nhBcOZ4gZZckPfaUCYVo-tS5oCb_rapoJbI-L63C2yI,1051 +torch/include/ATen/ops/_functional_assert_async_native.h,sha256=BEZoN2QPpAhRxhHvq5ed_foEIeKnRCLi0t3bv9okUTA,815 +torch/include/ATen/ops/_functional_assert_async_ops.h,sha256=Lt0WTqU8kGmMGdaMUxycYAj6EY5D10SMsWKBtUaVPGo,1466 +torch/include/ATen/ops/_functional_assert_scalar.h,sha256=wXUJEP5VjMC-O_0mRidnwFg-H7dfQSJLLi9n3KqNecw,1083 +torch/include/ATen/ops/_functional_assert_scalar_compositeexplicitautograd_dispatch.h,sha256=kB5oy61fM8HprD-QAuiwnabEolmjhAPtdAbBblfCDys,1096 +torch/include/ATen/ops/_functional_assert_scalar_native.h,sha256=y_MoX99UnZvdpCzWghOAI3tzKZJfPKmMay0ZYK40tEY,808 +torch/include/ATen/ops/_functional_assert_scalar_ops.h,sha256=UUrhCEyPGBa2po3N5Zamd4DHZ5b9wMi7coca3KrqpQU,1458 +torch/include/ATen/ops/_functional_sym_constrain_range.h,sha256=GUUOhmT0c_ukEp6TAHVcoLwJYeAHrpR7PQydxspTL3E,1140 +torch/include/ATen/ops/_functional_sym_constrain_range_compositeexplicitautograd_dispatch.h,sha256=_Sj45uWlcBgpSP6ZL5HduisY0SJFfQH8rp7ObaBJssY,1133 +torch/include/ATen/ops/_functional_sym_constrain_range_for_size.h,sha256=Je4Y86981gJGLUhJXcsLXL4Vf8opJliaWtkf9e2t3GQ,1176 +torch/include/ATen/ops/_functional_sym_constrain_range_for_size_compositeexplicitautograd_dispatch.h,sha256=OuZ9Bj3usdVqxugoYrje7i32ICHq8oQvkWfstcW6vHU,1142 +torch/include/ATen/ops/_functional_sym_constrain_range_for_size_native.h,sha256=dVKydlWzUtCkLlIigDI1-x0H0lQgz4q7W0nFtkR3-Nk,854 +torch/include/ATen/ops/_functional_sym_constrain_range_for_size_ops.h,sha256=EGIIdkAl_8JeO_I47n18PvjWqzJ01ocid82_fHMrPoY,1603 +torch/include/ATen/ops/_functional_sym_constrain_range_native.h,sha256=bx_QtLkDAJ3hgEDXJh9LcyjfaW8H5mepoI4115yxLMI,845 +torch/include/ATen/ops/_functional_sym_constrain_range_ops.h,sha256=r-3S0vkU-qb3qt2D93aWomcy3p6c1dg5X63BYVWQSSk,1576 +torch/include/ATen/ops/_fused_adagrad.h,sha256=m_RygKv8bERhR8fC1smEKkvcfVDcm0SGWxDjIdL1bAE,6984 +torch/include/ATen/ops/_fused_adagrad_compositeexplicitautograd_dispatch.h,sha256=GKMJr9vxK7Jx3_h48dovgRo_r-kqYAMu3mYfrDGn5oY,3122 +torch/include/ATen/ops/_fused_adagrad_cpu_dispatch.h,sha256=K-5jeNGchNTjQar7CyrpkIH7wolF2XzQISR5JYFYcNI,1546 +torch/include/ATen/ops/_fused_adagrad_cuda_dispatch.h,sha256=Ssu2ujMcrLLilFm_KTZFRbshE9kN1BSPhG1VhVMak6M,1548 +torch/include/ATen/ops/_fused_adagrad_native.h,sha256=Rd2-cIuFk4iAZh8c5SwtSq1U7fZ1EiZVtnnn_YZl1pk,3468 +torch/include/ATen/ops/_fused_adagrad_ops.h,sha256=uqpMtJzCSfY3RU9KPVzTzLpq2pDXXJ-HCw9JVo9MB98,9870 +torch/include/ATen/ops/_fused_adam.h,sha256=4gu7b8llgCs-MKBqdfhT2Gi4eK2uZXeiV-3x6vxZk-I,8657 +torch/include/ATen/ops/_fused_adam_compositeexplicitautograd_dispatch.h,sha256=MkeYXsYf3P7p1ql2q88jJe44WuQbs8fh_0Wa74Syh38,3680 +torch/include/ATen/ops/_fused_adam_cpu_dispatch.h,sha256=gAqHh0CTO7D0BDpnkIwMonn9Zgc1At8562mfd0YCctg,1706 +torch/include/ATen/ops/_fused_adam_cuda_dispatch.h,sha256=AnSRyMEDkoCayIRY_1QTbU9HPS35WtoFRTSeka8sqUE,1708 +torch/include/ATen/ops/_fused_adam_native.h,sha256=KMRl1U7-wuGu1Oa8MxYhhA8VKtUMRoFkCf1MqDJJWOg,4186 +torch/include/ATen/ops/_fused_adam_ops.h,sha256=0er_m6NFg3gGlz4AfvbmNgzq7CWrNdlafTL1mN6XAlc,11848 +torch/include/ATen/ops/_fused_adamw.h,sha256=gjcLKnseiuOg1DjEldDdxeumsWBJdmcmt3KW4iS1_2M,8682 +torch/include/ATen/ops/_fused_adamw_compositeexplicitautograd_dispatch.h,sha256=pRd-OIed7QKpcRGw_26CtP7sAx5Hq4nHkemonbGbJew,3686 +torch/include/ATen/ops/_fused_adamw_cpu_dispatch.h,sha256=T3-O1luEVQZE-7Oi8CyvV0lUrmPgep_UduNsyTMzyNg,1708 +torch/include/ATen/ops/_fused_adamw_cuda_dispatch.h,sha256=uf92VyZ13criF2iWdLabMYGg_uTrmCxQb8-r0ovRLQ4,1710 +torch/include/ATen/ops/_fused_adamw_native.h,sha256=kestFLIiQQnc-1OBlgZsqVlA_roPQInMAwKk_Co1gIw,4194 +torch/include/ATen/ops/_fused_adamw_ops.h,sha256=SFRU5tI9ZXYpEThmlfQzOXUkQ0AOAGfKr7gbwrYXWQ4,11866 +torch/include/ATen/ops/_fused_dropout.h,sha256=NZmoa_Pzhz_doB-Mw6O_9PFAacxLXXIsMFRjEgCcFIM,1904 +torch/include/ATen/ops/_fused_dropout_compositeexplicitautograd_dispatch.h,sha256=_2L2YkqjQNGbJsAGg1K5f11MvRoKqpEATL6jTTdrA0A,1350 +torch/include/ATen/ops/_fused_dropout_cuda_dispatch.h,sha256=Meiu-cfclgDAa-Kw0Sh9Wefnld2FYAlMQok0uaArnzk,1076 +torch/include/ATen/ops/_fused_dropout_native.h,sha256=BOHrkLwgDv_FAdEVQnPXk4SkzEhYEH3h-ubGm3TLKWQ,1019 +torch/include/ATen/ops/_fused_dropout_ops.h,sha256=7djoXYEL90MSOB0PEs89tonh7QZO4hYuEwDIkHDnc4k,2461 +torch/include/ATen/ops/_fused_moving_avg_obs_fq_helper.h,sha256=NVf_adVLWAUqxqNu7AnxvjEDM_DGAZhsI32GlNDiIiQ,5029 +torch/include/ATen/ops/_fused_moving_avg_obs_fq_helper_compositeexplicitautograd_dispatch.h,sha256=TA3YjyVb7hYBuZ0c3G_7AW11HfJfSDOifddUMdK7xDs,2339 +torch/include/ATen/ops/_fused_moving_avg_obs_fq_helper_cpu_dispatch.h,sha256=1R_GDqoo9w3O_9Iozqo2WsSdAAq0M8RN_59lW3LJCe8,1325 +torch/include/ATen/ops/_fused_moving_avg_obs_fq_helper_cuda_dispatch.h,sha256=7QOJ3Oe2OmUakqOaPCbVsZs7IzHh8yDM_Jwqs20Z5DI,1327 +torch/include/ATen/ops/_fused_moving_avg_obs_fq_helper_native.h,sha256=yO2HLpfvuro99T8ygD8_BJ6PBz1javZPxP4q5uc7fQ8,2418 +torch/include/ATen/ops/_fused_moving_avg_obs_fq_helper_ops.h,sha256=V6ywNUALozA4Q_D5puIT3P_r8hgwmJOmmYLJUwPvdaI,6128 +torch/include/ATen/ops/_fused_rms_norm.h,sha256=GOt2xf3p0Nd53N83eXAowzyXj2dI-1mEP4MQ2n07wfQ,1155 +torch/include/ATen/ops/_fused_rms_norm_backward.h,sha256=Nuf4HhveJzXXyqs3IV65tt8ivgpsL1O5SgAWYcnUg3Y,1313 +torch/include/ATen/ops/_fused_rms_norm_backward_cuda_dispatch.h,sha256=57IUFwQsfPEfaKU4sPn9Fz4tUvIzUnHrNEsFgfH7l8M,1186 +torch/include/ATen/ops/_fused_rms_norm_backward_native.h,sha256=ZZNH4XLvDUU7L--pgo4qascNVAnTBCkw6ZptrVBmWhQ,945 +torch/include/ATen/ops/_fused_rms_norm_backward_ops.h,sha256=n_I3yJ0jlX65-DYDGjjVqnPESnxmc0QEdVr8bLr5e6E,1892 +torch/include/ATen/ops/_fused_rms_norm_compositeimplicitautograd_dispatch.h,sha256=mt-FKhSXc4s3WrDg-YIV4RVjsc7in3tT4Q2Ju7At7fE,1160 +torch/include/ATen/ops/_fused_rms_norm_cuda_dispatch.h,sha256=aq7kf92EtEoo5v_AZn8lO1hU1-erwRw6Nj_1lvt1OI4,1118 +torch/include/ATen/ops/_fused_rms_norm_native.h,sha256=_I8UfSoAXZtYXYTnlzwpD64VIcIWBZmm6I59DHSpk1w,1076 +torch/include/ATen/ops/_fused_rms_norm_ops.h,sha256=2XT_ijz0-BLZpO2E_NHDk-cH-DYf7g3Ih7yutXDP_gk,1671 +torch/include/ATen/ops/_fused_sdp_choice.h,sha256=_HEFRv_VRlLRIAoAyRVHjVSUT1FgYIpbNQCCHhz7hV4,1347 +torch/include/ATen/ops/_fused_sdp_choice_cpu_dispatch.h,sha256=aORjujP3gbUp4GtzJ8i7Nks5x4_BZFBqyaGT-C3sW1M,1196 +torch/include/ATen/ops/_fused_sdp_choice_cuda_dispatch.h,sha256=Cu9tZ73xM32Rd5xXD89LUophfZ-EhWZyQVDoUqG3eoA,1198 +torch/include/ATen/ops/_fused_sdp_choice_meta_dispatch.h,sha256=liX_lECLD9EhJbEdSxZXwUEqoc8SVq5yE0AsT6H-WVE,1198 +torch/include/ATen/ops/_fused_sdp_choice_native.h,sha256=VB43OsQZq_zFD2XcsIWclu77TLeUqnpfyppCP-gePaw,1518 +torch/include/ATen/ops/_fused_sdp_choice_ops.h,sha256=3IThPWmUDTbjFeFgtiiErqcdIPv_L4WGtXRFnBYygS0,1853 +torch/include/ATen/ops/_fused_sgd.h,sha256=92RH6gah9UQ13vQk6Ivw1OWA7YfhxWI4-APYavBwEBA,7480 +torch/include/ATen/ops/_fused_sgd_compositeexplicitautograd_dispatch.h,sha256=s3wzfP7iGYLfWyUbicFriGOC2_DK81VJz2NPunVB71g,3210 +torch/include/ATen/ops/_fused_sgd_cpu_dispatch.h,sha256=rPLpZowdauA6q7UbgoKb2FzHK5AMN9kqUxZmLsclxCU,1584 +torch/include/ATen/ops/_fused_sgd_cuda_dispatch.h,sha256=kJv-9IWn3Vx-CT_y8SYTDcg7xvpfKYhGwl9I7AV2Snk,1586 +torch/include/ATen/ops/_fused_sgd_native.h,sha256=sJgU4NMnCQAozx9UTDqJ74befOYo00Sjyw9-vJP7JF0,3594 +torch/include/ATen/ops/_fused_sgd_ops.h,sha256=RU2ZpSyTrED0K7FO5oFc2ailR951pwMA3E1_PcaIRxM,10132 +torch/include/ATen/ops/_fw_primal.h,sha256=eqnSVoaz_S1dGjcflCN7C3SDn4wMk84GlECSG7h7X7Q,761 +torch/include/ATen/ops/_fw_primal_compositeexplicitautograd_dispatch.h,sha256=byVDwgcrFjUY_7-vwtuO5cM3HGhNKnyxF3Cdpq-LvIk,1037 +torch/include/ATen/ops/_fw_primal_copy.h,sha256=EPEcdpjDqsfuOYmrSXlzF59IWbxdrdTUkcPxQV9pc2g,1470 +torch/include/ATen/ops/_fw_primal_copy_compositeexplicitautograd_dispatch.h,sha256=xljGBzOGRheaqvv8CsMovYmard6RU1bfuEElvX0fx7I,1169 +torch/include/ATen/ops/_fw_primal_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=eWCHGSGN23_AouEUgK55Bx8bmY7S2StCo3BAvcy3tpU,1068 +torch/include/ATen/ops/_fw_primal_copy_native.h,sha256=3COu1iUg5bUftO7xZFq7IjBnHo-MIPfKPoxsPkhjK8s,856 +torch/include/ATen/ops/_fw_primal_copy_ops.h,sha256=BqPn0y-ejD9W_kihe-AMQUNNtMnZRiFkHttyO-iUurc,1955 +torch/include/ATen/ops/_fw_primal_native.h,sha256=1hgOMQ8BKAJvouhw1jmoQBjPirudECnFhFovpKzGKtg,749 +torch/include/ATen/ops/_fw_primal_ops.h,sha256=xlvOAkCdGyh5vDHfiWgt4HkytX3h4P-3ICdZf13iVQw,1279 +torch/include/ATen/ops/_gather_sparse_backward.h,sha256=OsMhYE-vtK8MmzizCLwyv_I1wcUrCPPyLrRQd-TvO7o,1077 +torch/include/ATen/ops/_gather_sparse_backward_compositeimplicitautograd_dispatch.h,sha256=WlxYG619OdDjb6h7qXMC84sINUC11CFXhwintaKzxS8,1099 +torch/include/ATen/ops/_gather_sparse_backward_native.h,sha256=Q5mHqsWbalZR7Qz4lMR85b1f8NBzQoqpo8rXEPFQqy0,811 +torch/include/ATen/ops/_gather_sparse_backward_ops.h,sha256=4P-fVu4UPm9K6xXA4ujhTfuAyCDy7rl04P2CsNq-0hw,1475 +torch/include/ATen/ops/_grid_sampler_2d_cpu_fallback.h,sha256=3AGo7iv7NQ-mVBF_e04qljzyNgJ0Gp6aiY4R0AtLDZY,2195 +torch/include/ATen/ops/_grid_sampler_2d_cpu_fallback_backward.h,sha256=JjkgzSbPqWNM6510ku26ajgU6il0TtHpP7ZzvIdW3Z0,1347 +torch/include/ATen/ops/_grid_sampler_2d_cpu_fallback_backward_compositeexplicitautograd_dispatch.h,sha256=BF5HPp-pY2tsVUqI19Q60iQR9JkwrS02gcNYA3TBjQc,1203 +torch/include/ATen/ops/_grid_sampler_2d_cpu_fallback_backward_native.h,sha256=dinXnigeucoYbz-iQ29Rvx-DuTWHhy4KJQEj8keo3XA,915 +torch/include/ATen/ops/_grid_sampler_2d_cpu_fallback_backward_ops.h,sha256=0Fn7oGVShuglrhzNjfscLsc83xiJiondgoJMCE3Td0o,1808 +torch/include/ATen/ops/_grid_sampler_2d_cpu_fallback_compositeexplicitautograd_dispatch.h,sha256=4xPbK_VCXWXbku8LGhy_EQ8rHjF-qXGVxQWm5iBeuEA,1532 +torch/include/ATen/ops/_grid_sampler_2d_cpu_fallback_native.h,sha256=F2bv-kkWS8LtG985EK7-rFfv7dzPnQkKoVsY43xWOBM,1046 +torch/include/ATen/ops/_grid_sampler_2d_cpu_fallback_ops.h,sha256=b5BtmpGqmN7zGhZCp4H_Tlm92EzWt4Nwf3BfHYTfm20,2563 +torch/include/ATen/ops/_grouped_mm.h,sha256=Oknxhi_RW3urjNu3gLQSruaE2B6MhgYU1l7UgEJXDYU,1192 +torch/include/ATen/ops/_grouped_mm_compositeexplicitautograd_dispatch.h,sha256=-GLNHx9IRx864cXNkMEl-tE5VyOnHiEWYdoS7njmAtQ,1196 +torch/include/ATen/ops/_grouped_mm_cuda_dispatch.h,sha256=vrJzHv9jE17zK1iXs7LvmZj6b39NVtmv6qRRKUEST5U,1154 +torch/include/ATen/ops/_grouped_mm_native.h,sha256=KihZtmkZ6QCB0XANpp5Ek3Kqyo8vwGzLdPWonsUKAe4,1145 +torch/include/ATen/ops/_grouped_mm_ops.h,sha256=WHjBMKMfSyAJuDK-we8TZVcti6doLlEiGVvIcJkAAdA,1736 +torch/include/ATen/ops/_has_compatible_shallow_copy_type.h,sha256=JvzVYninQkma7cCLj7A9Ovm-6gB0INlSFDtXPMGAv18,1035 +torch/include/ATen/ops/_has_compatible_shallow_copy_type_compositeimplicitautograd_dispatch.h,sha256=A1ugji9dhSaxQBwA62uN1QkZakN4DBbZyPC99cEmhYE,1064 +torch/include/ATen/ops/_has_compatible_shallow_copy_type_native.h,sha256=lPEEEyzCgCD6u7MJyB4hxR96aOWkYv1jW5h1H7eFQm0,776 +torch/include/ATen/ops/_has_compatible_shallow_copy_type_ops.h,sha256=y1SQrcX2Hhz77UqvYsir5XBF8hvj2jDTG20N_qN7oA8,1355 +torch/include/ATen/ops/_has_same_storage_numel.h,sha256=JsIte5GuSkCizr-dzT3Y-qpPEnTnpmKt1czMJTT8wMU,998 +torch/include/ATen/ops/_has_same_storage_numel_compositeexplicitautograd_dispatch.h,sha256=yk48siOtnOPaKdXKj8frEKZ671d0YARYf3HvYu_vjiw,1055 +torch/include/ATen/ops/_has_same_storage_numel_native.h,sha256=XBykH_i69Vo2mSYsdX5vqR5K97Jrj39_FQTs1amdzjM,767 +torch/include/ATen/ops/_has_same_storage_numel_ops.h,sha256=gDmTLhUD91aM48v_e6_xkqbHbq8LRFNjAMvqidR9Z4A,1328 +torch/include/ATen/ops/_histogramdd_bin_edges.h,sha256=zGcwlj0CPYmN-MjKFr1NvKIRaurObaVTlzv_AW8Grkc,2172 +torch/include/ATen/ops/_histogramdd_bin_edges_compositeexplicitautograd_dispatch.h,sha256=xC4THPV4Q5X53wg7diS--cg7g35rkBDjhVJXBel6hto,1415 +torch/include/ATen/ops/_histogramdd_bin_edges_cpu_dispatch.h,sha256=iBRVd-tGILfHi0Ya6o7Y3Bo_SHVArwotMbFiYwQnsIs,1154 +torch/include/ATen/ops/_histogramdd_bin_edges_native.h,sha256=zUCxrJaZfkmMbXncGENEN2ob2wger14G4MMgZbyHy0k,1122 +torch/include/ATen/ops/_histogramdd_bin_edges_ops.h,sha256=drxSaAGdAH93INVP456MKlYT8EpE1_sxKZ0_GO85Q9E,2769 +torch/include/ATen/ops/_histogramdd_from_bin_cts.h,sha256=In6rhp37etcyN2SGp370g7BIeER6eXnamicm9NP9RpI,2209 +torch/include/ATen/ops/_histogramdd_from_bin_cts_compositeexplicitautograd_dispatch.h,sha256=DRf3RHIugrMTu2KEQ26ub3wiX9X5v91yeZIMOrFObZ8,1433 +torch/include/ATen/ops/_histogramdd_from_bin_cts_cpu_dispatch.h,sha256=hyTkeFAqjh8eAYDp1tytyedRukkstmq6EemWf6Rq0e4,1142 +torch/include/ATen/ops/_histogramdd_from_bin_cts_native.h,sha256=D4Jr4I1_Jw1YUx5El3AKhrRoD6LZQ_fo1Vuz2-bt4Po,1107 +torch/include/ATen/ops/_histogramdd_from_bin_cts_ops.h,sha256=t-ryxmvxK6SgkDNCfat7NNECgqdOpfzcaY53d23BtYQ,2764 +torch/include/ATen/ops/_histogramdd_from_bin_tensors.h,sha256=XXi3LjXFtO86-EVHXkjK1vedEgDRcs_dtfoOX_7wa2o,2006 +torch/include/ATen/ops/_histogramdd_from_bin_tensors_compositeexplicitautograd_dispatch.h,sha256=qC6e9ppTsrpaTPH5_w38avOMRc8nOcl-Wni-nPLihPg,1334 +torch/include/ATen/ops/_histogramdd_from_bin_tensors_cpu_dispatch.h,sha256=5U3Eq_9aVTfxpTcFux73HC2PSSSM8XgRcVQkfw2I2I4,1085 +torch/include/ATen/ops/_histogramdd_from_bin_tensors_native.h,sha256=CWTma5YlLtHjOW6UNldw6SADVVI9lwVVFZQftca_Peg,1004 +torch/include/ATen/ops/_histogramdd_from_bin_tensors_ops.h,sha256=CSj5COc2SiQNRP28-Ijn_rB0FVylF_0mEh7BKf_8EaQ,2488 +torch/include/ATen/ops/_index_put_impl.h,sha256=yLwFi2tr1vKi3ldSW9AAPMy-pI7HaGMtrPOjZ0FdSgU,2480 +torch/include/ATen/ops/_index_put_impl_compositeexplicitautograd_dispatch.h,sha256=ZdxPYVQN11B2vzRQnVuKHZGjfZX4S6frTHbs-oHjCHM,1565 +torch/include/ATen/ops/_index_put_impl_cpu_dispatch.h,sha256=Eckm0NE-gWbQ0Zn44L4d8Y2Dz3qT3u8X19hh-cDUaC0,1105 +torch/include/ATen/ops/_index_put_impl_cuda_dispatch.h,sha256=51gizcWyfrNX9rKTxHlpJPG0b9kwWzllj7WQtu2pR40,1107 +torch/include/ATen/ops/_index_put_impl_meta_dispatch.h,sha256=uL4nByEuc-KdpaN84KzyUQeO1oMu7NDNdTIAaX5m4Ag,1107 +torch/include/ATen/ops/_index_put_impl_native.h,sha256=HAe0daZdssepvdISf4C51B4-MEfH2Qv_BMtmE46FTMM,1648 +torch/include/ATen/ops/_index_put_impl_ops.h,sha256=-EiIDOjLsULTswoDTDw0D3YuDhis1dA9iLnCFuvUKUw,3527 +torch/include/ATen/ops/_indices.h,sha256=B9bgDB6Hd_qIyHiyX0M52n0QoxAxMcbyZZ17MwT1ahE,759 +torch/include/ATen/ops/_indices_copy.h,sha256=jTYE9cJGJHvQK6ykNMDVU9vdNg1L4HEgzZiYEShcmJk,1351 +torch/include/ATen/ops/_indices_copy_compositeexplicitautograd_dispatch.h,sha256=QgR3pNQjcVbUAgB1S4D1qmC8Pk681CP90LAnVBY7UJc,1135 +torch/include/ATen/ops/_indices_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=2nZ49beNBblP71sAv06BwTiGddig-K0EKRsHlye4Fqc,1051 +torch/include/ATen/ops/_indices_copy_native.h,sha256=lvpN2CAOPXdpfRVS7VW2EzhaCtDL-tLCnSGtE2R4xuM,822 +torch/include/ATen/ops/_indices_copy_ops.h,sha256=5ABJhQinJjUS0SGVDeLJ7Mq72a_BRn1CFjtAObVCYlw,1843 +torch/include/ATen/ops/_indices_native.h,sha256=Bviu9rgkpNQsO54VIvqXwxB03TNrnL1rl-cPc6weVQA,739 +torch/include/ATen/ops/_indices_ops.h,sha256=XEzlLxcR26JtHM4DNJl1AdOL6v5sKTxqOrThUaXwkS4,1223 +torch/include/ATen/ops/_int_mm.h,sha256=vP6kGVBO0FozEkwDY2wr5MoZND_axEJ1PmSpihIJakw,1423 +torch/include/ATen/ops/_int_mm_cpu_dispatch.h,sha256=O-kSdVrNEN3K2hAUmU1M3FJTQ1oEvYVDdL9JOSciC-8,1209 +torch/include/ATen/ops/_int_mm_cuda_dispatch.h,sha256=Upp3HbSSNqd9Dfo1XsegSfge29olCIZiOMyz0Zti9i4,1211 +torch/include/ATen/ops/_int_mm_native.h,sha256=qvUnlJjpTFYJNQzC-JpEo8l-GD2wBdjG0L0r9ZgIzgA,1062 +torch/include/ATen/ops/_int_mm_ops.h,sha256=uzON3HOkVfn-VaHs7Uit0oBm5ZK_vJzNAQaVZiy9-lU,1973 +torch/include/ATen/ops/_is_all_true.h,sha256=7HwG7ClGkY-kMz_dV5rFMnI_mnvuB2Ut2uGGjdV4v2k,915 +torch/include/ATen/ops/_is_all_true_compositeexplicitautograd_dispatch.h,sha256=8dGqPyH1aZXRypFevFfh5i_ku2N7L7Ty0M6QlxCXGsk,1024 +torch/include/ATen/ops/_is_all_true_native.h,sha256=WxZLnnRxQKJCuCvlHPhdGVROUJdc3s8n4ZfGMXRW8B0,736 +torch/include/ATen/ops/_is_all_true_ops.h,sha256=oMy7qgZVxPPzYslsvladgqsUWZG29yn9URUI7ODGLgM,1229 +torch/include/ATen/ops/_is_any_true.h,sha256=KZni9CoGBeA812_m_Sy1sLh79a0gHtt_1tb1G6bfMV8,915 +torch/include/ATen/ops/_is_any_true_compositeexplicitautograd_dispatch.h,sha256=GDp3leGCp9Pk18PoJPnehQHpgo4wEulydPMBKr13DSc,1024 +torch/include/ATen/ops/_is_any_true_native.h,sha256=Qfw9XCWtC3ds_cSjW3HEyHJ7GNjAymuospkoEPs9FhE,736 +torch/include/ATen/ops/_is_any_true_ops.h,sha256=mccte8AhGJ8imAiIRogXRVg_Ae8Ov9g_DQ_8ehDAQaQ,1229 +torch/include/ATen/ops/_is_zerotensor.h,sha256=z1izUiqfNhXX6O-8TUfS5F2dWcfz1uqmbvN97yqN4FI,926 +torch/include/ATen/ops/_is_zerotensor_compositeimplicitautograd_dispatch.h,sha256=RQ2qriVDEWDI96lqyzc_dw4Zlk-dKRjGnNwjEQ7uF08,1020 +torch/include/ATen/ops/_is_zerotensor_native.h,sha256=8M3z83uvLl285t7mhTmotaobg5jq1ePFP8saUIIzlUs,732 +torch/include/ATen/ops/_is_zerotensor_ops.h,sha256=aK9Vwvof9XrPNNaPCy7G1Lk6RWe6TiSfDNOwLjTe1xE,1215 +torch/include/ATen/ops/_jagged_to_padded_dense_forward.h,sha256=y14xK8qzPSQHFtF0waSlBczdikPWmpYMgzlqhtl7Wu8,2374 +torch/include/ATen/ops/_jagged_to_padded_dense_forward_cpu_dispatch.h,sha256=62WMJ-oBtP_AI_9A3tGiF8Hqr1fYQNrceLxb-HOwPV4,1251 +torch/include/ATen/ops/_jagged_to_padded_dense_forward_cuda_dispatch.h,sha256=tGGkmrpliFrP_qc8kimo2rDV6sRw17SnYSKPTpJpGw4,1253 +torch/include/ATen/ops/_jagged_to_padded_dense_forward_native.h,sha256=QdOdnQGTpkkL8uJTOPbcT0eMkkD-eWsRET8LPshguo0,1007 +torch/include/ATen/ops/_jagged_to_padded_dense_forward_ops.h,sha256=_EqMYg0vBmrseAg--3FthFdEx4FOamOi8oxbkCk3RLU,1560 +torch/include/ATen/ops/_lazy_clone.h,sha256=y_BJD4U-ki-BqnrvgqTca4LYQi1dCiRmpwKs5s3WtB8,911 +torch/include/ATen/ops/_lazy_clone_compositeexplicitautograd_dispatch.h,sha256=3Uc8hTM0lw3nM9r3SN1rbsFpr7-szP3ZuIcYjXipa1w,1023 +torch/include/ATen/ops/_lazy_clone_native.h,sha256=-KVgQ1ouT7TjUWaTcFBeJbk0GqhM1vLT-quBbIVfbHM,735 +torch/include/ATen/ops/_lazy_clone_ops.h,sha256=Opv7LelkqSvBnwXj8cAYFSQP9pjaLJCppzpIKe4y_k8,1226 +torch/include/ATen/ops/_linalg_check_errors.h,sha256=nN8ew-8Jee5DaXtUGNb6tZtD7v5FK1pvPjlUq2FlojU,1034 +torch/include/ATen/ops/_linalg_check_errors_compositeexplicitautograd_dispatch.h,sha256=Jn6cmdryebetzoNUxd2GbA6Clx_uEDFYhLBVaHjj-fQ,1069 +torch/include/ATen/ops/_linalg_check_errors_native.h,sha256=apqCF9Nk8pWEzLbsNaEoPhhaUgselsBBp1gH34S1f04,781 +torch/include/ATen/ops/_linalg_check_errors_ops.h,sha256=AU7t6aeSziKIFe4qyTGpRMk4bowjBWHuzFdlbOOyzR0,1374 +torch/include/ATen/ops/_linalg_det.h,sha256=7OAdq-cnH1tOx2qHxRBm4FxoUNJpbU5keNnrYBjTDc4,1739 +torch/include/ATen/ops/_linalg_det_compositeexplicitautogradnonfunctional_dispatch.h,sha256=bKs74yufkRN8TSAEprisvYxHfAdNEb0ZT4oCoeKEWeI,1082 +torch/include/ATen/ops/_linalg_det_cpu_dispatch.h,sha256=orTSclzAkSEuVAIKfJZSMP5F7BVvLx_Lh7ESxOHiN5A,1335 +torch/include/ATen/ops/_linalg_det_cuda_dispatch.h,sha256=tv0iyI66MeotWwWbUi0kMVDhSAXpiPdczKG5cFGGtTQ,1337 +torch/include/ATen/ops/_linalg_det_meta.h,sha256=f1gRAY-pVAFngq2-9844Utz8ck9F_clnXeYbVSVXPXU,823 +torch/include/ATen/ops/_linalg_det_meta_dispatch.h,sha256=VkszfbK7XhaY8_omQxtXhr4S_-OdCCoTbhHb9cajuEY,1337 +torch/include/ATen/ops/_linalg_det_native.h,sha256=dJtiMdRi6W9cxhYUccW6XUJ5ZhWZqlXFFtd5N1tT67c,915 +torch/include/ATen/ops/_linalg_det_ops.h,sha256=UexIu5Ngk5t5hCtvGPzunB_0TFO9ALM_46HiDS7pGDc,2275 +torch/include/ATen/ops/_linalg_eigh.h,sha256=pRgxxSyESWhwCzqE3vy7Eincef9iAhU0pYUOhBiT4KU,2009 +torch/include/ATen/ops/_linalg_eigh_compositeexplicitautogradnonfunctional_dispatch.h,sha256=beXmcF-FRIQUi4G_ATVYBpUHlG8iHdKKXIpvoABg4FM,1120 +torch/include/ATen/ops/_linalg_eigh_cpu_dispatch.h,sha256=oXCjYSY9MDYZvrQg9r_LYGw6yO_u9uU8bu7Ut6-sQJ4,1424 +torch/include/ATen/ops/_linalg_eigh_cuda_dispatch.h,sha256=3ECkpLJwdCXaklrZu6m3_xeQa0TOJceBphGOvvIPpdc,1426 +torch/include/ATen/ops/_linalg_eigh_meta.h,sha256=IVjTv1swP6esVMlYBJYmkjSTFD4lJnJVkOMchtHdfMg,863 +torch/include/ATen/ops/_linalg_eigh_meta_dispatch.h,sha256=6BXt1HovirmqvMYO5-hjX9aVyZv8jPKKx6PTH3UZ_Gw,1426 +torch/include/ATen/ops/_linalg_eigh_native.h,sha256=TYq7E-8EwVBrZHz_sKPIV38qg8yUxZ7Sb2N3y466QxY,945 +torch/include/ATen/ops/_linalg_eigh_ops.h,sha256=leg8vw1gKVwoen9nI0HKAYYGtYIfKiCbTQg8A-FjB6E,2468 +torch/include/ATen/ops/_linalg_eigvals.h,sha256=T9GN8LIoVrqq071U2NlrNf81IZ7ucgp8yvtb9Zea5VI,927 +torch/include/ATen/ops/_linalg_eigvals_cpu_dispatch.h,sha256=G8NZm4VDaffheSe3GIrnOCa8yzthMvhZJnmmBc39H28,983 +torch/include/ATen/ops/_linalg_eigvals_cuda_dispatch.h,sha256=lTah4XbL8EqrVXrhmHMMrXMSw3pKObt38mgstUQrzPM,985 +torch/include/ATen/ops/_linalg_eigvals_native.h,sha256=uWniTMiY4vVBx3049rzStty0vBDSi48eCFV-_rUh6VY,739 +torch/include/ATen/ops/_linalg_eigvals_ops.h,sha256=m45gYnwjVooaMSq_u-m814LxQ_GNVHERlDC6fy1WVZ4,1238 +torch/include/ATen/ops/_linalg_slogdet.h,sha256=3sAUHeQZBLIvdEfexYshSjyQxSdKQuApc5A34pAyunc,1966 +torch/include/ATen/ops/_linalg_slogdet_compositeexplicitautogradnonfunctional_dispatch.h,sha256=U-YcUlJxCBR6QfUG7p1cAURY7P_giSJdfUsFh77rYIU,1097 +torch/include/ATen/ops/_linalg_slogdet_cpu_dispatch.h,sha256=IusECkYHKucwoYHVxUzncB5YNROOjVJl--glLSadwPE,1428 +torch/include/ATen/ops/_linalg_slogdet_cuda_dispatch.h,sha256=rx0PrV1M5h-NS9e13oMgjq5EjI43VwOJG475LTFP0OM,1430 +torch/include/ATen/ops/_linalg_slogdet_meta.h,sha256=uyrjqpym_MBMCBulrbwZmwt4KCylcEdLI2Iz_XyqTbY,827 +torch/include/ATen/ops/_linalg_slogdet_meta_dispatch.h,sha256=Wk7bilFLzFAQURTXnLsHlHs2dQZAR0ErPIxmIjNKxeM,1430 +torch/include/ATen/ops/_linalg_slogdet_native.h,sha256=UeJc2hENJ6S862TDnP6SnQm_8lGEorqharLmWPSVVIg,955 +torch/include/ATen/ops/_linalg_slogdet_ops.h,sha256=sALoNjfl9hSjX5NWMzJkdBv560NgMP_ZR9STrWlEBdQ,2479 +torch/include/ATen/ops/_linalg_solve_ex.h,sha256=dFYgvtzzgEDJQJy1w_isoXUR900CGivuSdjlkTgUALs,2360 +torch/include/ATen/ops/_linalg_solve_ex_compositeexplicitautogradnonfunctional_dispatch.h,sha256=xRoO0ptz9eb3VL6KLzuMokk9mKwuN2qc39mgWYX4gaQ,1161 +torch/include/ATen/ops/_linalg_solve_ex_cpu_dispatch.h,sha256=oajvVMzPYPDSWaZNCaPEKH7TjQolwRnG2c62BfXVMXs,1603 +torch/include/ATen/ops/_linalg_solve_ex_cuda_dispatch.h,sha256=XZzsQrJYUa5NpXGFjAFAwV_oTB3pfhRMV93CXjvrMs8,1605 +torch/include/ATen/ops/_linalg_solve_ex_meta.h,sha256=zjTWANQOPPa5oUklsIQv4DLWCWb0s3X9mUcLWq2C_gE,880 +torch/include/ATen/ops/_linalg_solve_ex_meta_dispatch.h,sha256=xyp25fmuR2ZxonzHqqRMLpaNXdDnewcf4F4FsWdCCEM,1605 +torch/include/ATen/ops/_linalg_solve_ex_native.h,sha256=7Bo6VLU6GULd681DXVVz8vHDQLofuCD2nruWDHYcVUY,1007 +torch/include/ATen/ops/_linalg_solve_ex_ops.h,sha256=dW2Z_nCry3rR65vH3ZuN5BqYTyrhHna5wQVMIFbHw2Q,2853 +torch/include/ATen/ops/_linalg_svd.h,sha256=rNbYo18rgipCI1IRuGBhrnJ3zEZ0kX8amTfIyGuEUVE,2224 +torch/include/ATen/ops/_linalg_svd_compositeexplicitautogradnonfunctional_dispatch.h,sha256=nzl8wivTY3HCfFtAqobddkPz2H7UJhpkXnfrOJwO7HY,1187 +torch/include/ATen/ops/_linalg_svd_cpu_dispatch.h,sha256=OW1qhWXr2EKS4p6R3SnE831kldRJSHMfJUudywrO79c,1604 +torch/include/ATen/ops/_linalg_svd_cuda_dispatch.h,sha256=grQTlXIQU9rWvdsiBc5y3JieZzwdS-NLJMwaWgRhMLw,1606 +torch/include/ATen/ops/_linalg_svd_meta.h,sha256=PAJddROtT27cyo1bPzNE3E15nrqliYQRCE44Pd2wXKg,902 +torch/include/ATen/ops/_linalg_svd_meta_dispatch.h,sha256=OqF4rnwzKOJUq1Uo8ZQwe6prqyhwo8EWwVs-0e9vK-s,1606 +torch/include/ATen/ops/_linalg_svd_native.h,sha256=BWyvEaKXH5ehBTbEYQiulTqrXNzKaTTYB7Pojg6tlAs,984 +torch/include/ATen/ops/_linalg_svd_ops.h,sha256=AT7NxPanqKGUyycJ0dGS8t8yo63SmMwRb9KEqiLcmcs,2755 +torch/include/ATen/ops/_local_scalar_dense.h,sha256=YdQi4kyJSjnkOxmDgn58MVsByVP34zT6kbhxdOhUxqo,943 +torch/include/ATen/ops/_local_scalar_dense_cpu_dispatch.h,sha256=B4RkqORNP85-ldpilHuVkSnglFod9vSkXvlXBcyAS1k,987 +torch/include/ATen/ops/_local_scalar_dense_cuda_dispatch.h,sha256=SJLgmAc1nEEO8_JOc0LNeCjakVubV2gxI0cGkcX8Gz0,989 +torch/include/ATen/ops/_local_scalar_dense_native.h,sha256=IGmKiqohSHMVzGSGZI48oyDqilpmkGxWKTQbV7Vzwu4,819 +torch/include/ATen/ops/_local_scalar_dense_ops.h,sha256=JocN89AMOnwG7MlkC8N_P5zJjXqMjAial5wlvp4IfRw,1250 +torch/include/ATen/ops/_log_softmax.h,sha256=Vc17KWDatvvzl_jFAiDtSib5rKPaNJOScIWSRAEJboM,1587 +torch/include/ATen/ops/_log_softmax_backward_data.h,sha256=cENGT2LAJCsZuaV3qTr2DgI8kxQixrl9BRo1nH9VTzg,1970 +torch/include/ATen/ops/_log_softmax_backward_data_compositeexplicitautogradnonfunctional_dispatch.h,sha256=31ElJCAOKNJOT9j6ScR1aADbeWtcGR_rZX8-wWLI-Ho,1139 +torch/include/ATen/ops/_log_softmax_backward_data_cpu_dispatch.h,sha256=Da92Ve5wa9zL1poYggLwMNMafOjZOwxsNnVhOqlwj2A,1416 +torch/include/ATen/ops/_log_softmax_backward_data_cuda_dispatch.h,sha256=kq12AV2s0b0g51RsYhVE_59tGSfi_axRN_GK_InDxxc,1418 +torch/include/ATen/ops/_log_softmax_backward_data_meta.h,sha256=RevOxSYwpFwekZx6a4t38aH-7nTFT_eb8SZ_AAVCD5w,916 +torch/include/ATen/ops/_log_softmax_backward_data_meta_dispatch.h,sha256=GxbPLRJwDak0NB8zPNjxu1gjf0X3xrUrqOSoWv9PssM,1418 +torch/include/ATen/ops/_log_softmax_backward_data_native.h,sha256=54HTvaEO-PloYuHc4NsYNc5G67oJuHbV9k2M1pKfqT0,1238 +torch/include/ATen/ops/_log_softmax_backward_data_ops.h,sha256=7AR2cy_pkPWl0H5q1t3uv-rLLlZZSvD9QfITzxrhgb0,2421 +torch/include/ATen/ops/_log_softmax_compositeexplicitautogradnonfunctional_dispatch.h,sha256=bfKJtzt_jZ_HHW_KjGEeoMFMM-cMAjz6-rbCTtufgzI,1083 +torch/include/ATen/ops/_log_softmax_cpu_dispatch.h,sha256=iGpInGk53v4qMD1ti-0Lsptov0pjY8tWmPVq6q3M83w,1248 +torch/include/ATen/ops/_log_softmax_cuda_dispatch.h,sha256=VC_ulzLlh443M41Ba5uOVDD4LK3Hf2lG1S2ULps3jdc,1250 +torch/include/ATen/ops/_log_softmax_meta.h,sha256=cQDb6O1X-OksB9qIQMj3iMrFkyRevOVCCsP_W0No4gM,860 +torch/include/ATen/ops/_log_softmax_meta_dispatch.h,sha256=xl3kcn8NY_8mPCD3z2bfxS_BEEKBIYD71LyUORkKS1A,1250 +torch/include/ATen/ops/_log_softmax_native.h,sha256=laZ31Pmq6KA045SMNjHp2Xi2wl5TBs-oqDQ9TPv_0g8,1094 +torch/include/ATen/ops/_log_softmax_ops.h,sha256=dcDZPT41LhVi8xoPJwsx6vIMrG2zYUyq5c5o-ars9n0,2057 +torch/include/ATen/ops/_logcumsumexp.h,sha256=k1kTuCmZWazs-DrmDS-NWlpflZKZ2r_O-CCGxk6LMg8,1432 +torch/include/ATen/ops/_logcumsumexp_cpu_dispatch.h,sha256=xOQdURtU8lDYB9qoa5IWk5c2dFWyIAvQb8z0EHIHLr8,1191 +torch/include/ATen/ops/_logcumsumexp_cuda_dispatch.h,sha256=TfCloLY4vg-Xun6dMYv31tNQdfuLsw66VpWmga77WUE,1193 +torch/include/ATen/ops/_logcumsumexp_native.h,sha256=Rm-xxbppAG4ZkMUZbcR5wj7W4clKvmggfLHFr9ljDjs,1038 +torch/include/ATen/ops/_logcumsumexp_ops.h,sha256=eyCNGjqtjok3vbXjJcw436KisudTv8C6jEZeDXu0-p0,1931 +torch/include/ATen/ops/_lstm_mps.h,sha256=Q8q4tEYEna7gGmLQZWkymWXC6Y1Fk6xVI9RanVHS1F0,3198 +torch/include/ATen/ops/_lstm_mps_compositeexplicitautograd_dispatch.h,sha256=veskHXK-6LMES7KxDpiCVjpQG_xA4VhcGS-3XCX8VAs,1769 +torch/include/ATen/ops/_lstm_mps_native.h,sha256=-si0UsLrZdgtcgTosZhKkcRVjfKoHQ5TJgcegPdp2Pw,1078 +torch/include/ATen/ops/_lstm_mps_ops.h,sha256=OAP9-bU8ddOeLRuDHIavhyyeK8pMXYCJY7d-eArn8HU,3703 +torch/include/ATen/ops/_lu_with_info.h,sha256=bAzbZk274x74UBS70O7zYWFpM0tZLjcidN1hkvQBsWI,1091 +torch/include/ATen/ops/_lu_with_info_compositeimplicitautograd_dispatch.h,sha256=pprMtCFldmT7wZ5VLhzDukxs74S7ZP9ton1aaZ8vioY,1102 +torch/include/ATen/ops/_lu_with_info_native.h,sha256=4UmSNjUC3z80AMPEsBspYd4gDQd3bokM3mlUvaf9u14,814 +torch/include/ATen/ops/_lu_with_info_ops.h,sha256=EPoJ9siquxaVIpnE8CpuXCg6yDjSJziMK-9sneuQ_M0,1488 +torch/include/ATen/ops/_make_dep_token.h,sha256=L4RMR-RO4zC7Aq0VldcN5WoMQZZ9YdCfo4XR7rW4Zvk,1797 +torch/include/ATen/ops/_make_dep_token_cpu_dispatch.h,sha256=aSM4FB2peO1e0nita16J7I9ON3qOWJd62N4OJCsufXw,1284 +torch/include/ATen/ops/_make_dep_token_native.h,sha256=f-1ezQBz8VLD9t3hDX3gv2zX0CVA8bGvCqyr0txeNTI,939 +torch/include/ATen/ops/_make_dep_token_ops.h,sha256=CjR3gH5mAK7DvPeMaYcaD9U9m-du5F4YfcuA5NyLxhQ,1818 +torch/include/ATen/ops/_make_dual.h,sha256=kShiyoMAx4XfV722yNcvJRqVkrL9dSZG9eDj0O-JIOk,1005 +torch/include/ATen/ops/_make_dual_compositeexplicitautograd_dispatch.h,sha256=_5LzYcN2OtDkOnxlHaGTUs8pQU1vYMPSiklhLw_QZrQ,1067 +torch/include/ATen/ops/_make_dual_copy.h,sha256=gvng4RVbzjFRg2cbfFIxoe5bDZfDYEpfsGZYSToTzQY,1647 +torch/include/ATen/ops/_make_dual_copy_compositeexplicitautograd_dispatch.h,sha256=iL8tCYcu0SelFb5FIs6kQZpsWiMZvvAimWeqBojnb8I,1229 +torch/include/ATen/ops/_make_dual_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=QciZdYPYQHzO5ITk-3_BNgLFiVlAPpcCga1uV0fc3KI,1098 +torch/include/ATen/ops/_make_dual_copy_native.h,sha256=46emE78H2drJ1kU2hAr0a7niFnkSyCcrSGHljHSGXtk,916 +torch/include/ATen/ops/_make_dual_copy_ops.h,sha256=F21kvgkZxmJkJINPnF1duFWK4YJo56QxGqZNc57-TUY,2151 +torch/include/ATen/ops/_make_dual_native.h,sha256=PmcU0bylU7qk6ArXzWZsAa0wEeDDCgjrKe1BjKtzRlM,779 +torch/include/ATen/ops/_make_dual_ops.h,sha256=_-9UOxoXCUdh_Pu7PgNIUH05cCqz4-wVt26rUANLl0M,1377 +torch/include/ATen/ops/_make_per_channel_quantized_tensor.h,sha256=Nlm-3RbfYmYBuzosO9Doo7whGxir74q4q6lZf5j2LI8,1978 +torch/include/ATen/ops/_make_per_channel_quantized_tensor_compositeexplicitautograd_dispatch.h,sha256=ub6HPt7XX-MKCXTfAL70BWI7Scs9k8hXoSGKj2Yxjf0,1319 +torch/include/ATen/ops/_make_per_channel_quantized_tensor_cpu_dispatch.h,sha256=SCf4HJ2Im114u_Bq1wzvvyl29lBfoKkllpOhsJb9zSg,1073 +torch/include/ATen/ops/_make_per_channel_quantized_tensor_cuda_dispatch.h,sha256=6mLl-TQM8YIUriwhJoGVhe7rKe1uq7L6NtjRY3lEL2A,1075 +torch/include/ATen/ops/_make_per_channel_quantized_tensor_native.h,sha256=ZfAJxbGdz1eD4iiaZ8Casp1yI5Tu39cYiM_OypYMOzM,1166 +torch/include/ATen/ops/_make_per_channel_quantized_tensor_ops.h,sha256=HsnKiZ4jnftpDi4LYEiOKELDKsZTqgbpnSYBqyoB8CE,2437 +torch/include/ATen/ops/_make_per_tensor_quantized_tensor.h,sha256=eW6yd2Yu7gndltfIQVWPar92bhA1lXi-C7rFcdnygKQ,1797 +torch/include/ATen/ops/_make_per_tensor_quantized_tensor_compositeexplicitautograd_dispatch.h,sha256=mancFkP3TRUbu4vM2Eeems9-OoZD-RPbSOGhHy-SVJY,1243 +torch/include/ATen/ops/_make_per_tensor_quantized_tensor_cpu_dispatch.h,sha256=MZXM5SWZCJVWO8jjfZp1_isKyp83bzP3CovSLx0UZug,1035 +torch/include/ATen/ops/_make_per_tensor_quantized_tensor_cuda_dispatch.h,sha256=Sacy14ZrAHsZTeWpscCnTS34ZHfUZ8jwSOdm3BtxI1Q,1037 +torch/include/ATen/ops/_make_per_tensor_quantized_tensor_native.h,sha256=odWNKoJcIz6RAw76S-YuHKb_GR3zy7EVLGxspffxwNg,1052 +torch/include/ATen/ops/_make_per_tensor_quantized_tensor_ops.h,sha256=lbdp-9kHyX5-N53dtXG8bRDj-expygmvKS8JENwNN74,2191 +torch/include/ATen/ops/_masked_scale.h,sha256=2l0PqbGWQO_CpqhyEpXltfmyAa99oBH4qXiTHG2iS8Y,1585 +torch/include/ATen/ops/_masked_scale_compositeexplicitautograd_dispatch.h,sha256=CbCAXOjrQSx4NE904hBOGVejXfLxIj4j1Xt2OWXoyts,1213 +torch/include/ATen/ops/_masked_scale_cuda_dispatch.h,sha256=09MMY41P8TkQESTMppFHDy99lCGM_H0LsyI_-UdWH14,1022 +torch/include/ATen/ops/_masked_scale_native.h,sha256=glMoa-DUeZjO4l-zd7wbpNbP6VzzHtOkGJaH-H2kT4Q,904 +torch/include/ATen/ops/_masked_scale_ops.h,sha256=KJnnCB5izfAv0SEdBb09XryasK1bkqo38fQFiApS9n0,2107 +torch/include/ATen/ops/_masked_softmax.h,sha256=hif_h_cXz_HLZrm5MBR0-8CJsYw3UR0ocuMm0ElIbmQ,1917 +torch/include/ATen/ops/_masked_softmax_backward.h,sha256=dNeFW72xVQiuOaOHhVRGpcV6PeGYSo2fC6yrmqd9cI0,1986 +torch/include/ATen/ops/_masked_softmax_backward_compositeexplicitautograd_dispatch.h,sha256=QYfH6D1cLPzb1TWcxCI1Qq7y_qlDKcb8jpsXeVyMuec,1350 +torch/include/ATen/ops/_masked_softmax_backward_cpu_dispatch.h,sha256=O-F-uzYX3b3Y-5ArdAcAAU6R2CAbOwdNhkMiHNw0b9k,1096 +torch/include/ATen/ops/_masked_softmax_backward_cuda_dispatch.h,sha256=hN3CgsvM4rxDBeMzkpIp00PS_EZK8YIygocw5UqE98s,1098 +torch/include/ATen/ops/_masked_softmax_backward_native.h,sha256=-scXyc1NA9QFNW1mUqDpCpFYkORstxazi29e4q5BQUs,1220 +torch/include/ATen/ops/_masked_softmax_backward_ops.h,sha256=7F_9wVT4_BfGX_TAHF-tCiWO91qBhWU1_p9JbWeiD9c,2497 +torch/include/ATen/ops/_masked_softmax_compositeexplicitautograd_dispatch.h,sha256=-zRxlmj8qQPkIAxQJk4B6gLxRDXej_d6M0ofM9HLV6Q,1351 +torch/include/ATen/ops/_masked_softmax_cpu_dispatch.h,sha256=8J5e6cVoL56S5v5ZHxY1oSSPsS877OCydHQhc8jA8-o,1104 +torch/include/ATen/ops/_masked_softmax_cuda_dispatch.h,sha256=fwISicEL5mnjA3w1UmCrGocbDbHA5b0UdWcWN_Emvuo,1106 +torch/include/ATen/ops/_masked_softmax_native.h,sha256=7CvF2U2YXTC0anqzpI14R8TEFoeEF8_82RVOBwJU2jc,1229 +torch/include/ATen/ops/_masked_softmax_ops.h,sha256=aoI36gcmhfoHhy-uRUtH7PucjBf-bE2oy5K70ZEpoh8,2461 +torch/include/ATen/ops/_mixed_dtypes_linear.h,sha256=7qVLBSmVjZQbsqjAyHfn26Kw0kIx8p9qoYajUjqnz0I,1215 +torch/include/ATen/ops/_mixed_dtypes_linear_cuda_dispatch.h,sha256=DnWTWYlSCjRjcxY7DjwmCHYW_U2j_nDZvRfqN-bsHwM,1150 +torch/include/ATen/ops/_mixed_dtypes_linear_native.h,sha256=ZM_2YNgYIAQDjIlwDJx1ZHJSk6_Lb6h9tZlVJBCiw08,904 +torch/include/ATen/ops/_mixed_dtypes_linear_ops.h,sha256=sZd6bOLHXTUUyVqG0NSCyvI5uJeVY7oVbMxcC19MjTA,1723 +torch/include/ATen/ops/_mkldnn_reshape.h,sha256=X6ifDS83CzjgdFdaQgb-YB4cyW-NKV4yfXmI-gMWiTs,1500 +torch/include/ATen/ops/_mkldnn_reshape_compositeexplicitautograd_dispatch.h,sha256=9fdIyoMF2So9lhmv0XYnz-pFXiSiBNL0V80YjrO3Wmw,1185 +torch/include/ATen/ops/_mkldnn_reshape_native.h,sha256=dYQO5_IxIAOTPpNozsd4pCi4_EWjXuNbl_76qb_Cjj4,871 +torch/include/ATen/ops/_mkldnn_reshape_ops.h,sha256=a2FMs-xL1Ff3Yuz95cpOfkBGB6kghL3daVbxwBHbXLs,2007 +torch/include/ATen/ops/_mkldnn_transpose.h,sha256=DLH5rxwrtcKSUvD1rop6x4vjybnbMC8YWHCyIISGuNs,1806 +torch/include/ATen/ops/_mkldnn_transpose_compositeexplicitautograd_dispatch.h,sha256=fdvNDAUeLrJW7BYvsAhCiSr0l53PhnLaWmYm-YZmq1I,1199 +torch/include/ATen/ops/_mkldnn_transpose_meta_dispatch.h,sha256=aAWHv7QMsJGJRadz1hoLQ-nOhjn4RD8udT5PbthVMrI,1012 +torch/include/ATen/ops/_mkldnn_transpose_native.h,sha256=S-2LxbWOFrjLANO3X1vxNF1A_lHli4snraD3PKlMMV0,974 +torch/include/ATen/ops/_mkldnn_transpose_ops.h,sha256=OyJQOpMbEOla-IvUjltnFnHT-56teDq9HkYvaxclG5Y,2681 +torch/include/ATen/ops/_mps_convolution.h,sha256=WOXceZcaOz2AurYWbUn3DPCkUWDpzMx8q0aOjmf3GCc,7109 +torch/include/ATen/ops/_mps_convolution_compositeexplicitautograd_dispatch.h,sha256=Hpf6-vaCasZA5SuiH_xCYnxVPgvgvJkRugS-fhfe-z0,2004 +torch/include/ATen/ops/_mps_convolution_native.h,sha256=N7hCaItIiY-LZeJJMNfu9yUnVeNBKshnUzeC70tdD70,947 +torch/include/ATen/ops/_mps_convolution_ops.h,sha256=SxGn8w9cM6HVfUDKBMER99ecpTcUBD4eTgRmeGo4J_o,3027 +torch/include/ATen/ops/_mps_convolution_transpose.h,sha256=7rDbr402p4OQrfzU7K-vpbwFtVzMQ1NRR5aj50f1T8M,7665 +torch/include/ATen/ops/_mps_convolution_transpose_compositeexplicitautograd_dispatch.h,sha256=yev_85hfQeZSFMql1Lm_Y-nV_LKXPsCwUYsRoaa6NPQ,2012 +torch/include/ATen/ops/_mps_convolution_transpose_native.h,sha256=sCoee66jIuAgDSTmqebXxxrkB4CmpFrlEcSNB2sAiPY,951 +torch/include/ATen/ops/_mps_convolution_transpose_ops.h,sha256=8XIIfGfZR_x1tamDqpVJ0oFR0pEmjQpqtYsJa_cEZys,3053 +torch/include/ATen/ops/_native_batch_norm_legit.h,sha256=Piv9Qzj77TBu3ZZYn4C-x4Lfp2C1RCTjZa2-c-XqZKw,5629 +torch/include/ATen/ops/_native_batch_norm_legit_compositeexplicitautograd_dispatch.h,sha256=LZoJ3rEVP7f0kzlpCsLBN-ETh__BgILrCDGKovFWYOY,1301 +torch/include/ATen/ops/_native_batch_norm_legit_cpu_dispatch.h,sha256=9bBXrY0yYBwv9vSjsOvxWRIxLKIbT585xYC9JPEUU7k,2827 +torch/include/ATen/ops/_native_batch_norm_legit_cuda_dispatch.h,sha256=uP7iwdONIPLFU9MA5Kev2JD5LzvDaTv--HDZz5dFVKI,2829 +torch/include/ATen/ops/_native_batch_norm_legit_native.h,sha256=dLHhP24L4Pb8wKx269ju3URq5dlwm43yAdp6GLrREbA,4005 +torch/include/ATen/ops/_native_batch_norm_legit_no_training.h,sha256=40_UY_kSvZd8eWfDtghDl9CAZHcZHFWgPAoDjKuz-2I,2952 +torch/include/ATen/ops/_native_batch_norm_legit_no_training_compositeexplicitautograd_dispatch.h,sha256=4mexEc_nSHC7KN5aSO6m8Utqf2AcIJi0RpjIxRaAoo8,2002 +torch/include/ATen/ops/_native_batch_norm_legit_no_training_native.h,sha256=ZeA9PDWZcIbwgBO2Y34Z1e48yqJnqrpN9GouLwlc1tk,1338 +torch/include/ATen/ops/_native_batch_norm_legit_no_training_ops.h,sha256=iWJJLKTjtfey9lbDR97TTqVMhURqazBwJi9CRMvkcHU,3576 +torch/include/ATen/ops/_native_batch_norm_legit_ops.h,sha256=Ig2LpSR-assOsIkywsYFSuHSxliMa0YEvLXnZnluREA,7612 +torch/include/ATen/ops/_native_multi_head_attention.h,sha256=7ChUggNS4MauHuDhmoA6AXG-7RRGDrE5eYWdGetW55M,3843 +torch/include/ATen/ops/_native_multi_head_attention_compositeexplicitautograd_dispatch.h,sha256=2DPz1ZIw_wXaqqXHLIcauzHkRrXoDrIAFICgBYA4egI,1955 +torch/include/ATen/ops/_native_multi_head_attention_cpu_dispatch.h,sha256=xn53Go1cIV3oZOGa521HlsXAwiNFzh7opb8Zl3ptv5A,1383 +torch/include/ATen/ops/_native_multi_head_attention_cuda_dispatch.h,sha256=iaiZ3v6VXOPpS9v8fE_WbkYsucI3Z_CO8mJmCVSqeCs,1385 +torch/include/ATen/ops/_native_multi_head_attention_native.h,sha256=0y0nK_orB9mfl36OyifNQbFZuY70LZdJkcA4MZPycCA,2090 +torch/include/ATen/ops/_native_multi_head_attention_ops.h,sha256=Z5sIbRr50PEYV5B19-mwB2D9A2Y_FS6dtkyc2US6nrY,4399 +torch/include/ATen/ops/_neg_view.h,sha256=p7o-UzQA_Dn32bEOK__65k0ibZ13Iqa6hLOStPG33H4,909 +torch/include/ATen/ops/_neg_view_compositeexplicitautograd_dispatch.h,sha256=Ex6ZBQqWqarYoFbdcZpsrXs9PQRJg-xWwEuEISKpwL4,1021 +torch/include/ATen/ops/_neg_view_copy.h,sha256=sWVQ2X9Zy0CBuDCybbd6xYyCOvPX67t_CXC9XTK-m7c,1361 +torch/include/ATen/ops/_neg_view_copy_compositeexplicitautograd_dispatch.h,sha256=pDPtjQhbYYa-yTf1PMUz-u61Kqq4HtkMZ2LHlBXhejc,1137 +torch/include/ATen/ops/_neg_view_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=078FA_mJpLZmv5GTNNTO6unMJ9y85yQv-JAA-MrcmhY,1052 +torch/include/ATen/ops/_neg_view_copy_native.h,sha256=fvwXd21CjdtNsUMNaURx3po0Fvp48gW7zdRV5ekONGs,824 +torch/include/ATen/ops/_neg_view_copy_ops.h,sha256=eMEN_ebhUr1DTYPmJr6zd3K74mBHdEXIT5T7evPdEx0,1849 +torch/include/ATen/ops/_neg_view_native.h,sha256=BD2ddBGe-P4PZ5ZMQ5LjKxRP335jrmYBxOnd5ouQBw8,733 +torch/include/ATen/ops/_neg_view_ops.h,sha256=bljzYKV-uoFUsGm3B9tief60GpoGlKjwRfqV1Ul3E_U,1226 +torch/include/ATen/ops/_nested_compute_contiguous_strides_offsets.h,sha256=eJz39LIIOscRhVZYQtZibgoDz9o6kBguyX4UBL2h52g,1091 +torch/include/ATen/ops/_nested_compute_contiguous_strides_offsets_cpu_dispatch.h,sha256=E0AQGIcTB7jxSksViD8VaeGGXwemIWzkE6Y8gE_pHfE,1042 +torch/include/ATen/ops/_nested_compute_contiguous_strides_offsets_cuda_dispatch.h,sha256=p2rDWVcVbQpc8-pm6k9o2ElJFmgIXgDG_lPkD5yjc2k,1044 +torch/include/ATen/ops/_nested_compute_contiguous_strides_offsets_native.h,sha256=S8gaFsTR150w-fNgrTBcibUh6Px8wsllYhKbhO4b4eI,798 +torch/include/ATen/ops/_nested_compute_contiguous_strides_offsets_ops.h,sha256=zUlSz4sUYEkhQW3mH1HZUFN8S4wmIZPCBhVkjWfhT3I,1425 +torch/include/ATen/ops/_nested_from_padded.h,sha256=qbPDTatCYiUIFUGOOgWIQdxL3n-2402UY2uEI8blr20,1990 +torch/include/ATen/ops/_nested_from_padded_and_nested_example.h,sha256=MwsHQ-RjZyiOPzdWVv0NaFX3Jan7ghsaS9a2iPyheS4,1805 +torch/include/ATen/ops/_nested_from_padded_and_nested_example_compositeexplicitautograd_dispatch.h,sha256=EEfOuSpqFC1OI_b_rc6PnWXYVnOV_5ZYYZmQ8ztvkJo,1251 +torch/include/ATen/ops/_nested_from_padded_and_nested_example_native.h,sha256=GClSqEA2CKgxbj5tbWc-M3dKrzyvvnwH76RAM8qoUNM,943 +torch/include/ATen/ops/_nested_from_padded_and_nested_example_ops.h,sha256=OW0dR3yqWtc6kohw6esBAA_1ZRfFikNsl3meXbhynRI,2207 +torch/include/ATen/ops/_nested_from_padded_compositeexplicitautograd_dispatch.h,sha256=fhCMm5O1pPZAuNxiflhVEcUpBh-yrnww-dyXu2KJpsc,1299 +torch/include/ATen/ops/_nested_from_padded_cpu_dispatch.h,sha256=y259uoH0wavd5fhAeGUHPvwNfAnTqAPUWfqNIMWxi5g,1066 +torch/include/ATen/ops/_nested_from_padded_cuda_dispatch.h,sha256=mKaHoc_6LuuywBKrMAwFllxj8b_KS7Tm69Z1T-aruFI,1068 +torch/include/ATen/ops/_nested_from_padded_native.h,sha256=GB5KLo-ARcVxt3GNUk8KaA0IbuLt95QTkOUihO4p-C8,1143 +torch/include/ATen/ops/_nested_from_padded_ops.h,sha256=w1O1u_hnp4q4i28qdp6gX9QCBXa_Peo__phlB-rbVoc,2357 +torch/include/ATen/ops/_nested_from_padded_tensor.h,sha256=vL_QabkoP93d0va5WPoo9uKY8CL7kv2IiPXOWg6pJDI,3191 +torch/include/ATen/ops/_nested_from_padded_tensor_native.h,sha256=0SAoE4aPf5nZIVqujS9jFASmof4GFAJst2Lcyq_eobA,676 +torch/include/ATen/ops/_nested_from_padded_tensor_ops.h,sha256=UG33LDfo_u6hJbCqaVR6Vtz___z-ocwZ-z2ulXiFLsc,1960 +torch/include/ATen/ops/_nested_get_jagged_dummy.h,sha256=u0t9Dp8KGzMZt6c2BrnuuflNqBzdGtX0pJ3DYrh77XY,960 +torch/include/ATen/ops/_nested_get_jagged_dummy_native.h,sha256=0SAoE4aPf5nZIVqujS9jFASmof4GFAJst2Lcyq_eobA,676 +torch/include/ATen/ops/_nested_get_jagged_dummy_ops.h,sha256=txHoQqMUEOrTWo620X4dXvh9tgSeFmJ51xshJJZ_bsQ,1262 +torch/include/ATen/ops/_nested_get_lengths.h,sha256=0TiBIJyyCdg5tExL3WnB18xRet0P1gaji7c1fFejr3c,943 +torch/include/ATen/ops/_nested_get_lengths_native.h,sha256=0SAoE4aPf5nZIVqujS9jFASmof4GFAJst2Lcyq_eobA,676 +torch/include/ATen/ops/_nested_get_lengths_ops.h,sha256=D43NKE_z8wB0-j8jozy_HyeiLyzoxbsgz2RcNTihqag,1250 +torch/include/ATen/ops/_nested_get_max_seqlen.h,sha256=nzZbB18DiKvmKWAw79alg6_ikm0QXkqpy-chSj87FWU,955 +torch/include/ATen/ops/_nested_get_max_seqlen_native.h,sha256=0SAoE4aPf5nZIVqujS9jFASmof4GFAJst2Lcyq_eobA,676 +torch/include/ATen/ops/_nested_get_max_seqlen_ops.h,sha256=Z73wu4YKRc05gORZcuuj_pV_8_o0BMmOgw28lkBGsgE,1259 +torch/include/ATen/ops/_nested_get_min_seqlen.h,sha256=syxLMrzaRafldlb72DYVtRNuX9hj61-BNZMA0mhJVWw,955 +torch/include/ATen/ops/_nested_get_min_seqlen_native.h,sha256=0SAoE4aPf5nZIVqujS9jFASmof4GFAJst2Lcyq_eobA,676 +torch/include/ATen/ops/_nested_get_min_seqlen_ops.h,sha256=22dLbSFfiEMotNaEDqq_vr_HYWLDBxzVVYenVLx_DVY,1259 +torch/include/ATen/ops/_nested_get_offsets.h,sha256=Zq67eFwT3BN5qC-tFC8lNg53m_bmUOdf3xt1lkSXUmo,943 +torch/include/ATen/ops/_nested_get_offsets_native.h,sha256=0SAoE4aPf5nZIVqujS9jFASmof4GFAJst2Lcyq_eobA,676 +torch/include/ATen/ops/_nested_get_offsets_ops.h,sha256=Lixu-4IOsN0o9Ng_rEVezkVkd8pIn1weKPfqZ8s-mTI,1250 +torch/include/ATen/ops/_nested_get_ragged_idx.h,sha256=4m0HMSdv6asF1mFwBx3otAqvv8T8rnomhgCFZykdEXk,949 +torch/include/ATen/ops/_nested_get_ragged_idx_native.h,sha256=0SAoE4aPf5nZIVqujS9jFASmof4GFAJst2Lcyq_eobA,676 +torch/include/ATen/ops/_nested_get_ragged_idx_ops.h,sha256=nrxTrL-h-PqazlXSFu5kHzUEXzA0v93QBoahEAk5q7k,1247 +torch/include/ATen/ops/_nested_get_values.h,sha256=r_ni-_UlF_M3fXAc0E5A3qPQ1bQzNHpi1KDFm9j_WwE,945 +torch/include/ATen/ops/_nested_get_values_copy.h,sha256=IGi1nzacRvkXiAbKdOth_axdtF6mMgcRdo-NGmabOqQ,1451 +torch/include/ATen/ops/_nested_get_values_copy_compositeexplicitautograd_dispatch.h,sha256=wHk_loD_qpswu7pBICrJs5G8ZE74eU3iAUhufPGzSXY,1155 +torch/include/ATen/ops/_nested_get_values_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=1l3lpyfq0q9IwynINogr7fsDGU3XWb5XZcNmJ_XyZU4,1061 +torch/include/ATen/ops/_nested_get_values_copy_native.h,sha256=g6noUV2MhXFSbDsHqL5gcjIFLyYCs5xhtJqIzMXAxnM,842 +torch/include/ATen/ops/_nested_get_values_copy_ops.h,sha256=sYjF9AxHizL4ZLmsCpUC5FaeFWvqz0DPV6jMLoxoJLY,1903 +torch/include/ATen/ops/_nested_get_values_native.h,sha256=0SAoE4aPf5nZIVqujS9jFASmof4GFAJst2Lcyq_eobA,676 +torch/include/ATen/ops/_nested_get_values_ops.h,sha256=qKjIL9j2liwOY93UXYDjiYu7ctUuQa_f-WYWC1ZPhkE,1253 +torch/include/ATen/ops/_nested_select_backward.h,sha256=tcQkdS4RMMmOHU92vqMTT1WSxSMvVGXsX7AzZonwKt0,2046 +torch/include/ATen/ops/_nested_select_backward_native.h,sha256=SF90xp5J-pGQ53Eet8pI1h4mwryadrqCQf59b4jXlyI,818 +torch/include/ATen/ops/_nested_select_backward_ops.h,sha256=Lcb-XM1bIG4DVKkG_3EqdJII19NEtibzhU0bx7BtODE,1475 +torch/include/ATen/ops/_nested_sum_backward.h,sha256=6uiixQaF-kPYwuP9QRfPzP0vgTy1FetkCzLLspewfcE,1087 +torch/include/ATen/ops/_nested_sum_backward_native.h,sha256=ZWqtD1k7li6LxgVdjoh-iMwXG5dbcHLtjwKxV2EJs7U,822 +torch/include/ATen/ops/_nested_sum_backward_ops.h,sha256=RIx-yj5qGlPyOz35NA-Ibv0qzh8emnw8PK4yJqP8rYI,1486 +torch/include/ATen/ops/_nested_tensor_from_mask.h,sha256=6uMwnpvqUOrTkupzZwhGz1W_D2sbf2Hj_BgoD6umLm0,1729 +torch/include/ATen/ops/_nested_tensor_from_mask_compositeexplicitautograd_dispatch.h,sha256=cJP7mz1eINDE5jdsVk0JssHY6F05QBlJ-6ovE5e1XzI,1240 +torch/include/ATen/ops/_nested_tensor_from_mask_cpu_dispatch.h,sha256=d7FQymcdFUYborzyVmSU34CIj-aoAR15ngVMLx2ISzg,1036 +torch/include/ATen/ops/_nested_tensor_from_mask_cuda_dispatch.h,sha256=tr2JMVq7Wuu0Fktij3qAoxu0GIXW26qkyX0J3HcJH_k,1038 +torch/include/ATen/ops/_nested_tensor_from_mask_left_aligned.h,sha256=m-8mI_HgKjNJPbU9cw4aT_kTxez4ELY5TrjlyQcfUKM,1042 +torch/include/ATen/ops/_nested_tensor_from_mask_left_aligned_cpu_dispatch.h,sha256=B8SdezwPYv43KzjKyLIJrfp7yNPhwKggJeC9PbDN9Zk,1021 +torch/include/ATen/ops/_nested_tensor_from_mask_left_aligned_cuda_dispatch.h,sha256=tEgesJtiiPNZ0jsWuGT7HpGiSxETG7ka-SvNHjGhCw4,1023 +torch/include/ATen/ops/_nested_tensor_from_mask_left_aligned_native.h,sha256=mcULN7xoyoZ2TRsZtF7D1Mwh61SfuceE-kY3KedFK04,789 +torch/include/ATen/ops/_nested_tensor_from_mask_left_aligned_ops.h,sha256=qymThN3IylZFHM4tIz0yg5vBDMIOevQ1MzTSMnYyvDg,1358 +torch/include/ATen/ops/_nested_tensor_from_mask_native.h,sha256=CsMBroXHC5BVXFNxPZG43qgR0ZY3T86-fSRErRK6JuA,939 +torch/include/ATen/ops/_nested_tensor_from_mask_ops.h,sha256=ocK5ESPILoqEWMpW79BrN7YJs_4X1-25VcHIlBE5RLY,2181 +torch/include/ATen/ops/_nested_tensor_from_tensor_list.h,sha256=iXinPceFxSheZpC773jdPI2VAeRFkfeUBgjySEGCsqU,2452 +torch/include/ATen/ops/_nested_tensor_from_tensor_list_compositeexplicitautograd_dispatch.h,sha256=S9NnU5P1toJ9CCt3w3fkPo7un8mtgwZLqj5lzAzPGtw,1793 +torch/include/ATen/ops/_nested_tensor_from_tensor_list_native.h,sha256=4beD9th12gVvJSNrIFCT4A-xRSpIHXLCHwzUy_0weAg,1200 +torch/include/ATen/ops/_nested_tensor_from_tensor_list_ops.h,sha256=p-m3FksJlwvyvMW2UpmgcFyXEvB2sM4ZBO25uKibD8I,2917 +torch/include/ATen/ops/_nested_tensor_size.h,sha256=TOcJ4zjcHmWDlL96sl-E1Ic7Hvuv1lbXr6GZUqAspO0,1237 +torch/include/ATen/ops/_nested_tensor_size_compositeexplicitautograd_dispatch.h,sha256=Ys0d2nB5aY_diK5HbZgPLSjz-jfcLxA8ejl4oeEd2_A,1147 +torch/include/ATen/ops/_nested_tensor_size_native.h,sha256=Dve5Q3AsGvOC-FEzImBACLfgCczuqQ0La-edLOMGPpk,834 +torch/include/ATen/ops/_nested_tensor_size_ops.h,sha256=ZZYqACzwLvOARnQagYpWJ31uuAwIYja7Y0dhLsH1g1U,1879 +torch/include/ATen/ops/_nested_tensor_softmax_with_shape.h,sha256=RXMJtTEl-8ngq4LRo-Gpq7oJ2VrDGtFx9sbxLoZp4Wo,1046 +torch/include/ATen/ops/_nested_tensor_softmax_with_shape_native.h,sha256=NnTWSLC0aXIy2R0rq6vYqoDHS0ncz1nJiMbcVQlELAA,885 +torch/include/ATen/ops/_nested_tensor_softmax_with_shape_ops.h,sha256=m4Js9TZNsoCMa5g6DIzUoN2iPy-s9DQVtBMxDhQ_bl4,1378 +torch/include/ATen/ops/_nested_tensor_storage_offsets.h,sha256=gYtJHftdPs9l-t0VVoV22usLk1vDWvQaJmzgDyEjXuQ,1314 +torch/include/ATen/ops/_nested_tensor_storage_offsets_compositeexplicitautograd_dispatch.h,sha256=DDs78gyojwTRBzMgZqoCUna68UU17j3dLyKbpK08doQ,1169 +torch/include/ATen/ops/_nested_tensor_storage_offsets_native.h,sha256=9wWVxOIb5VwFQbWZa1BfPMh73UME_IwCF4XTLj5bVmY,856 +torch/include/ATen/ops/_nested_tensor_storage_offsets_ops.h,sha256=4JYMSYdsHWrJq3WobN89kGdr94iymE3tHhWs6P_GBdw,1945 +torch/include/ATen/ops/_nested_tensor_strides.h,sha256=T7UZLFrXgE8wWkfmK6snp7cD7iANCSbUasVvwrTJHAw,1258 +torch/include/ATen/ops/_nested_tensor_strides_compositeexplicitautograd_dispatch.h,sha256=HYJ_89DTAS-K2hnivmLYl7bf1pzqqSfwHZVH7bXsYIo,1153 +torch/include/ATen/ops/_nested_tensor_strides_native.h,sha256=M1JxPb1uml6NQmMfBmuKWmezNo8Q-xCf_7sHegs2NzU,840 +torch/include/ATen/ops/_nested_tensor_strides_ops.h,sha256=yyO8U40gG65-21vidpDZ0a6idrSwP92gtQmhoQbpFcQ,1897 +torch/include/ATen/ops/_nested_view_from_buffer.h,sha256=2F05MotFQrLut8-9WXxn-f6YD2ae6x1GAIq3D-C6f1s,1161 +torch/include/ATen/ops/_nested_view_from_buffer_copy.h,sha256=-cezMkB4XzvtENbv8YAfAJhkpEqE4V5lZlr-JKzwgmM,2087 +torch/include/ATen/ops/_nested_view_from_buffer_copy_compositeexplicitautograd_dispatch.h,sha256=dUk1mGiyIxE3pSNl1uDtfVvRzmhTHqlHGs7jSF_ivfE,1357 +torch/include/ATen/ops/_nested_view_from_buffer_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=NSg5ojU4IYoRSRHjGwrnteUVoRIsxKuWY8upXAoGkuY,1162 +torch/include/ATen/ops/_nested_view_from_buffer_copy_native.h,sha256=4h7sHjtAMEWcZJW5tOntNhhu5p4rPXJivsqmI1-yr40,1044 +torch/include/ATen/ops/_nested_view_from_buffer_copy_ops.h,sha256=mp3RQDugyeEmnfoDvDQeftoQr7H6iPaFgj1aSnqLXkY,2557 +torch/include/ATen/ops/_nested_view_from_buffer_cpu_dispatch.h,sha256=noEMqKx5oBcIg4JfjD4A-R6LgS4nxaj9yGINfrV66Ds,1087 +torch/include/ATen/ops/_nested_view_from_buffer_cuda_dispatch.h,sha256=0SOfAqLY0jjyhrxvHlRzTmJhsB9201XQqeXQw5YDH-U,1089 +torch/include/ATen/ops/_nested_view_from_buffer_native.h,sha256=yK0-7yVCHR0z2C6BwDTfC6LKsX8YicPMcrHa-iGtBsE,843 +torch/include/ATen/ops/_nested_view_from_buffer_ops.h,sha256=cC0HgQLdMlsJ2Erv1xEJc-zyA8hOmzmGwHH9tcpKLjQ,1580 +torch/include/ATen/ops/_nested_view_from_jagged.h,sha256=HBSJCZQSB2m22oJFdIcd0WHOWWX7vf9A1P7LdFp89ho,1376 +torch/include/ATen/ops/_nested_view_from_jagged_copy.h,sha256=EIfzBk1_wizg39QzGP_gTfenokRA7FSO3tnA8nLblvE,2721 +torch/include/ATen/ops/_nested_view_from_jagged_copy_compositeexplicitautograd_dispatch.h,sha256=oneV_O0u2la4ZjSa7f8oXiLAtcnkZSMtnbc1gmkuCD8,1608 +torch/include/ATen/ops/_nested_view_from_jagged_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=n1oP1N01iBEYfOVatzEKEI19OXpr7KoQmnD8I45CDB4,1293 +torch/include/ATen/ops/_nested_view_from_jagged_copy_native.h,sha256=NA8Z06s0On7_YpOLNaY3pYc-m3oJPR53L-5Exsp6dgk,1295 +torch/include/ATen/ops/_nested_view_from_jagged_copy_ops.h,sha256=ds2eLXsd6Lm2bIBUGKQtS4yK_GmKCud3gLEji3GmI7c,3359 +torch/include/ATen/ops/_nested_view_from_jagged_native.h,sha256=0SAoE4aPf5nZIVqujS9jFASmof4GFAJst2Lcyq_eobA,676 +torch/include/ATen/ops/_nested_view_from_jagged_ops.h,sha256=2J2NFfl9yby6482uSund9MMbmUjwvhRa4Q4dHYTUpf0,1981 +torch/include/ATen/ops/_new_zeros_with_same_feature_meta.h,sha256=dIlT3WxZdEP3gsDxcoY2TIHhPClg_TsnFXqAxQS6vnM,1930 +torch/include/ATen/ops/_new_zeros_with_same_feature_meta_compositeexplicitautograd_dispatch.h,sha256=qNdZue4vTN725RTTbSBVeCYes1i_8XRBhgTZa295VAg,1425 +torch/include/ATen/ops/_new_zeros_with_same_feature_meta_native.h,sha256=21dyGksOg9JVquqobYotzQQKTPQ8hDKdxmMJiB_dDx8,974 +torch/include/ATen/ops/_new_zeros_with_same_feature_meta_ops.h,sha256=FiTwAT05czcmKiUQqT_J33iwX39vzd0ex15KAVmIhOM,2326 +torch/include/ATen/ops/_nnpack_available.h,sha256=oV6goa4QfSK2ZnP0YkUj-htxuPMbpkTqCZ6ev0aal2U,889 +torch/include/ATen/ops/_nnpack_available_compositeimplicitautograd_dispatch.h,sha256=nwl_jrYLOQJNF_Nf4Bsde1Y9YjwmLe_z32DdmxZa4jc,1000 +torch/include/ATen/ops/_nnpack_available_native.h,sha256=OJdl_W9li1i9IT0aq4sSRqlRqTVeTZqp3-5dwOd-zsw,712 +torch/include/ATen/ops/_nnpack_available_ops.h,sha256=cPDJhQBUZgS5-bmdylCEzFvkuLOqJ4fwXHqpiqUhhho,1147 +torch/include/ATen/ops/_nnpack_spatial_convolution.h,sha256=2xPWYvPZyNLoJUjU4ILOwD17DDSyJAo8RAmpl0OcIS0,6444 +torch/include/ATen/ops/_nnpack_spatial_convolution_compositeexplicitautograd_dispatch.h,sha256=qhSqoJQDRGtq7APTeOT8T0-GVJ3oinWkJaccLj6S3v4,2305 +torch/include/ATen/ops/_nnpack_spatial_convolution_native.h,sha256=EJBcEcar35qUtvANNl2NHnNJNh9fHkAo_6ea94bCbHY,1105 +torch/include/ATen/ops/_nnpack_spatial_convolution_ops.h,sha256=mBA7eDU5ysJdVpDZVUKoH9-84A_ioFb-dfrRo8dywrM,2771 +torch/include/ATen/ops/_nnz.h,sha256=1lhtBgMlJLNkXzhrmiBSMKlTdO_ElbjumibHEQWwPFM,755 +torch/include/ATen/ops/_nnz_native.h,sha256=MghWvuHpTXpKNlv5O9WMKJPd8eF2EKjHDRR6jGsz2aY,792 +torch/include/ATen/ops/_nnz_ops.h,sha256=tO21m1z6ovn14GY2KpuCjYsidQY9oROtax81ef13zys,1193 +torch/include/ATen/ops/_pack_padded_sequence.h,sha256=VAzBB43qgvNRqR_MWqqA_f1bhhAnobizbcVWmTwoZWc,1953 +torch/include/ATen/ops/_pack_padded_sequence_backward.h,sha256=aHHcQJlth0ZXzfhTvezDUoOJ1CXMnlDjtxQVQg9rZ5A,2331 +torch/include/ATen/ops/_pack_padded_sequence_backward_compositeimplicitautograd_dispatch.h,sha256=D3Edg-_Dm_2YabwbbCPUEOruFbb5DYMAHsHwVIfpEaQ,1287 +torch/include/ATen/ops/_pack_padded_sequence_backward_native.h,sha256=OyFkYMzbnQcIzlLBfSUASwTjAEKjsRWByc3ZY7BW-MU,843 +torch/include/ATen/ops/_pack_padded_sequence_backward_ops.h,sha256=XneV5fcPXUjXcs3x_Ls03vu3Fl3EJX_sxgmbBSX8VDk,1553 +torch/include/ATen/ops/_pack_padded_sequence_compositeexplicitautograd_dispatch.h,sha256=hOG9jRikNJXBqYLi71HXSvdohCRAEIlT54JGVbEIgvg,1480 +torch/include/ATen/ops/_pack_padded_sequence_native.h,sha256=PI7qNyx_QLPnYEnHrgy7WRp1tjFxrmQiaPwI12S2L8k,1004 +torch/include/ATen/ops/_pack_padded_sequence_ops.h,sha256=JabqY2LKAhiaeudwRjm0VSXAtS0N1jHBr9H5dISK_zU,2453 +torch/include/ATen/ops/_pad_circular.h,sha256=o5ucFDdsd1JISu64r-rPDXKIjxgQlbY-Ciuqs7vuUYI,1694 +torch/include/ATen/ops/_pad_circular_compositeimplicitautograd_dispatch.h,sha256=AgoYwD5vcDecPJI4HGsTU1KRZet5m-zlyIDwA5IKdxk,1139 +torch/include/ATen/ops/_pad_circular_native.h,sha256=vnkhNRGw30N893xxiI_dAqNu1Inov2PE9MqGL2DQU0o,769 +torch/include/ATen/ops/_pad_circular_ops.h,sha256=cN5RmjIHW6BPUNvE3DmXRIzUb_u7wn4mt_EpS62cb8A,1317 +torch/include/ATen/ops/_pad_enum.h,sha256=cheoBM9BGnVmhgPYVw0nqgtpmF795qOqqthOmAWheI4,2000 +torch/include/ATen/ops/_pad_enum_compositeimplicitautograd_dispatch.h,sha256=_85vUmAnX-QvMUCH9z0K49jPHJm7bJfg8uuH9ydPU34,1251 +torch/include/ATen/ops/_pad_enum_native.h,sha256=NnBsHt8oH95te3tKnLz1hbJi1EJY4IqEKI42Hzl5_6Q,825 +torch/include/ATen/ops/_pad_enum_ops.h,sha256=cImMByfi56IM9G0cpBewab1Z-9kh5M29PJ-7fqyMUyM,1458 +torch/include/ATen/ops/_pad_packed_sequence.h,sha256=_wyjVZx-ohpIF2dD9iTbPnrszIFcIhAFhzTgmnOBmLk,1221 +torch/include/ATen/ops/_pad_packed_sequence_compositeimplicitautograd_dispatch.h,sha256=knDvQ9I0JD2ZNbwn0nmSYqzGd4nPHxUviC3OLaCxCq4,1163 +torch/include/ATen/ops/_pad_packed_sequence_native.h,sha256=cKQKcsCkqSX3BEQ96PdJUus9m3WADoiw6bnKCacpiEs,875 +torch/include/ATen/ops/_pad_packed_sequence_ops.h,sha256=13sTUuiUZaS4U1LFjCx9Ymskk00jqCe3CvNEs31KHiA,1683 +torch/include/ATen/ops/_padded_dense_to_jagged_forward.h,sha256=lYAKhkELvNpDruD83Ylvzf57qJPjFCyzuVHDkSpaP00,2312 +torch/include/ATen/ops/_padded_dense_to_jagged_forward_cpu_dispatch.h,sha256=rF9of2-Su4dYaVHQg80s5oEq5Y3psbsVepw623FUOuc,1237 +torch/include/ATen/ops/_padded_dense_to_jagged_forward_cuda_dispatch.h,sha256=yT4E2vcxrIlp4tBy1ixfMDksUgGz9ERgVSCr7EqfBSE,1239 +torch/include/ATen/ops/_padded_dense_to_jagged_forward_native.h,sha256=VNMKk3iUGeb9gzTbloNRnDs4ExnvkjFUBaBBXpgXYto,997 +torch/include/ATen/ops/_padded_dense_to_jagged_forward_ops.h,sha256=PfoDrDSwS2kDzs-xqQVtbDLXM-IO42fXupICwitz_Vw,1499 +torch/include/ATen/ops/_pdist_backward.h,sha256=k6WF9BWQWVzCgrc8Dw-TI6U3YYONJoRjgnemtM8T0gY,1710 +torch/include/ATen/ops/_pdist_backward_compositeexplicitautograd_dispatch.h,sha256=eOJkEYOZ6zCO1o0174UKCoWq7lhmgtlVODrCkBUHeO4,1261 +torch/include/ATen/ops/_pdist_backward_cpu_dispatch.h,sha256=9N1r5E0pWVef9Z9hhQA3P_qXEcqlFfe1HbunCR6gahE,1044 +torch/include/ATen/ops/_pdist_backward_cuda_dispatch.h,sha256=9y5Jx36VQPDqbnFCX5CAdr0vv_R7wTaWREZjTep2qNw,1046 +torch/include/ATen/ops/_pdist_backward_native.h,sha256=BanagFCshbXiAIhQG29lQT2abDt0p2qwsHrwWn4EgBU,948 +torch/include/ATen/ops/_pdist_backward_ops.h,sha256=oskEoGnOyyQBYbGdKsqR_r2CnRcUF2h2z5DU1UaVMw0,2267 +torch/include/ATen/ops/_pdist_forward.h,sha256=SAhfuJiC_sSJ4CBTJjbYNuGiKtAd3FMUqCG4JFMyq3w,1437 +torch/include/ATen/ops/_pdist_forward_compositeexplicitautograd_dispatch.h,sha256=oZkc-g21inrOivY3kypbp_-5LOQ08eX_iz4YLl-8gD0,1159 +torch/include/ATen/ops/_pdist_forward_cpu_dispatch.h,sha256=w_y6YucqwE2ESCC3CVXXkpAUbNCFZT1i-RF4bUMRZCs,994 +torch/include/ATen/ops/_pdist_forward_cuda_dispatch.h,sha256=BbKWrdPU5JUJWpMKX0Hx-O9MgzFoIuwsxdoh64XXecY,996 +torch/include/ATen/ops/_pdist_forward_native.h,sha256=DJV2ETpnGpK2KTwEBSkI5QKrelauXuUvVJ73Zm0jdhQ,846 +torch/include/ATen/ops/_pdist_forward_ops.h,sha256=gZA3SmdXe3Z1WQ0ezUuK2ns26vBcCP_JhZuJFYysidA,1927 +torch/include/ATen/ops/_philox_key_fold_in.h,sha256=dAVEw1Uqa-sNY9ci14yh8ik6w5czXoYMXRJQUpVokh0,970 +torch/include/ATen/ops/_philox_key_fold_in_cuda_dispatch.h,sha256=rQSoZ31FTWJ-NPlMGJf9WpwrD-GOmAzl2kkONNtMkRc,1002 +torch/include/ATen/ops/_philox_key_fold_in_native.h,sha256=FvMEiLmE4GXp9kToDHole35fxjo1kHdY_fxfO_xqlFA,761 +torch/include/ATen/ops/_philox_key_fold_in_ops.h,sha256=Z4wOGMPfH0F4E8H5ym9ZXGKJLug_fweZRVVdAnWW7zQ,1294 +torch/include/ATen/ops/_philox_key_split.h,sha256=NyOXbkQ_Oz5qC_OZUVBzARiw80aFd2NPYtiG4BKloP4,980 +torch/include/ATen/ops/_philox_key_split_cuda_dispatch.h,sha256=hJlklv_LxpbMyPgJGgCMI0SyoBPUsLTbisz7tvP_bW4,1006 +torch/include/ATen/ops/_philox_key_split_native.h,sha256=O_AQR6yvr-wrbLUJ5yBzfqkhUivhnnMHoaH6V4tGMp8,765 +torch/include/ATen/ops/_philox_key_split_ops.h,sha256=szHQlgJ6LZMlzi-UvIybgPhVbSnhYqKmxGOVwyCerxU,1306 +torch/include/ATen/ops/_philox_normal.h,sha256=-WtAEdtt1l5hOgT1wwXA24rZ6wchCmG-wcS7mjKO-aE,1955 +torch/include/ATen/ops/_philox_normal_compositeexplicitautograd_dispatch.h,sha256=u8EsO8EftjTQyh8ClN1jGKaoRfKcyaZn4L404wb0nT8,1354 +torch/include/ATen/ops/_philox_normal_cuda_dispatch.h,sha256=4nIRL22APCCfXqyBvY_eOLISnPpcVyHCVUqy1cILgxU,1034 +torch/include/ATen/ops/_philox_normal_meta_dispatch.h,sha256=hP2HbUnUblle_WQXWPVb6VEy9K_XcVMd018t_QqoDT0,1034 +torch/include/ATen/ops/_philox_normal_native.h,sha256=1yxcfFnHTeVa9Y676u4fDVxcVEfcTfxllQs0SNk6980,1043 +torch/include/ATen/ops/_philox_normal_ops.h,sha256=C0CU-zUx8hOPSyjWCLV1flIhxssTY5faeUia7lJB7SY,2891 +torch/include/ATen/ops/_philox_uniform.h,sha256=PjZdF0-IymC79edE4V-meHEs1yIpl5yw3ZAAuF02YVo,1968 +torch/include/ATen/ops/_philox_uniform_compositeexplicitautograd_dispatch.h,sha256=dKc7YLdYx-GAUu92hPZQCDjujFglN9mq31TcRWPREn8,1357 +torch/include/ATen/ops/_philox_uniform_cuda_dispatch.h,sha256=V0BFcdl1BKxSNG80SjWf24xK0x5UBvvWHyhPXjaN-sk,1035 +torch/include/ATen/ops/_philox_uniform_meta_dispatch.h,sha256=FOiOLxx2ZY3LxUITZITYESVHtXzS_cY6vvP9NNHPB98,1035 +torch/include/ATen/ops/_philox_uniform_native.h,sha256=fX8SFaPSaIlbImunXX6sKigyEEJkeJGnwxkPn1RxTE4,1046 +torch/include/ATen/ops/_philox_uniform_ops.h,sha256=DhO5HlCHjPagpCc1KWhZsdGoH4uqILICeMTuHCCAxPw,2900 +torch/include/ATen/ops/_pin_memory.h,sha256=f48BJC7C9RGchaYMBreKLAAnOWt7lUZ8tO528RCEJGY,1556 +torch/include/ATen/ops/_pin_memory_compositeexplicitautograd_dispatch.h,sha256=2pR4TFh4mLg8JIbNPjmZlnouvrlVFNx79nqrOtGINnI,1328 +torch/include/ATen/ops/_pin_memory_native.h,sha256=GVWmoFeYHgQsUV2vKkkBY_0PB_-J6o8eOCfizizp3VM,1271 +torch/include/ATen/ops/_pin_memory_ops.h,sha256=DRrtsUcd52KFy3fBCF0bRCLTbRw2o7xClb5sl6z6JsY,2075 +torch/include/ATen/ops/_prelu_kernel.h,sha256=t9cVX2B3sJE5L8U6qDuF226d9qHbcgw4Cb6c1nhwyLk,969 +torch/include/ATen/ops/_prelu_kernel_backward.h,sha256=houKbWxWPT83Ni-v4qOVAdvvXhO48VFyPJZRT0lzHxQ,1105 +torch/include/ATen/ops/_prelu_kernel_backward_cpu_dispatch.h,sha256=8Pov0cexygKx5Hjc9FwHN-I_qyOl1sZA8ZkEOuCVtHI,1074 +torch/include/ATen/ops/_prelu_kernel_backward_cuda_dispatch.h,sha256=3OnRK62T-H-oEtFdfGcAAJXZ1wKn1qetfaSzz-5bns0,1076 +torch/include/ATen/ops/_prelu_kernel_backward_native.h,sha256=GESj8stQzse6y6RE_CecxT1-CUfie7y1QStXmDp5G3s,983 +torch/include/ATen/ops/_prelu_kernel_backward_ops.h,sha256=qN2pj58EOAhRhqdDMpwzQ5pHJVSN7acrlzt_Dl2LfjQ,1537 +torch/include/ATen/ops/_prelu_kernel_cpu_dispatch.h,sha256=804eCC9spcycAV9wPsigRLg2YuANH_hxF4i4PaTMsgg,1008 +torch/include/ATen/ops/_prelu_kernel_cuda_dispatch.h,sha256=SmM1Ll432iY1i285LPsdEfb0ciCa2bj6Haug1fSzy0Y,1010 +torch/include/ATen/ops/_prelu_kernel_native.h,sha256=6iZiOIuIG_fdMZjmYbAw2SCGEjABiYosFpKO19kpFj8,953 +torch/include/ATen/ops/_prelu_kernel_ops.h,sha256=3EI2ZjI9LjgB4eSXrv-og899JycdyKr04_mlVnlPRuc,1321 +torch/include/ATen/ops/_print.h,sha256=5OFA77nJYf8LkC-rSZ2KGkTQZiXBpmbUdR-3MJOto_o,867 +torch/include/ATen/ops/_print_compositeexplicitautograd_dispatch.h,sha256=zl_WKOQf4zPyxUUhBPK68ujxSzFQIQzG8_CC8Hs42Yk,1007 +torch/include/ATen/ops/_print_native.h,sha256=eCprfTdpT5-nMOcNXP-_tWir1um52cHjaGAawJSO3rs,719 +torch/include/ATen/ops/_print_ops.h,sha256=zkvwZygubiiO8XzYUrStY762cfrUzRsOITK0HYviVZ8,1171 +torch/include/ATen/ops/_propagate_xla_data.h,sha256=6Jo_dbF13X7oQr7NmtU7rjd3IYrgAsOdIJmUWX5SxVs,986 +torch/include/ATen/ops/_propagate_xla_data_compositeimplicitautograd_dispatch.h,sha256=ps64PnUTXuRhjL1hILg9AehyosHnrB_EAhN3-3l4OYg,1053 +torch/include/ATen/ops/_propagate_xla_data_native.h,sha256=gZ88nHqN9B6w97UnbbrRRWhy6II8UDb4s_7hPSVkgm8,765 +torch/include/ATen/ops/_propagate_xla_data_ops.h,sha256=3xnHo-pSDPbfE1QYDMoeEMilDEttUmapQl6B7VluJwk,1320 +torch/include/ATen/ops/_remove_batch_dim.h,sha256=eOpL9u5q-Qz_kB6lgOYu1BOK3eWqYSgyX5a2TdQyVZ0,1960 +torch/include/ATen/ops/_remove_batch_dim_compositeimplicitautograd_dispatch.h,sha256=Xwe8xXM4f8DLcRc9q6sthSqyWmMQGDDgDtwYBVUKczY,1209 +torch/include/ATen/ops/_remove_batch_dim_native.h,sha256=ZNniP5PB9mIjrWMf4h3ZEeP--tmkM8_8tnsPI4Vi9NE,793 +torch/include/ATen/ops/_remove_batch_dim_ops.h,sha256=6znZrY45-YMP4FoV5AdOvTD0qEyk1ByZXAUCMzxNj_U,1430 +torch/include/ATen/ops/_reshape_alias.h,sha256=ReViPo3V-LiTtuD5qSw0i-6xitFPNs64mawUXIXKj88,1949 +torch/include/ATen/ops/_reshape_alias_copy.h,sha256=7hrQF2mFmBilYx_spJuzzLi6quOqmDoArsCSgeSY2do,4814 +torch/include/ATen/ops/_reshape_alias_copy_compositeexplicitautograd_dispatch.h,sha256=0-YZVkeLhJYOD5Ba-ZNI9ppRMfp-rz2VDJDB4WIOpAw,1544 +torch/include/ATen/ops/_reshape_alias_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=N8GKbgxyKQt2sYVRnmQQ3TYOjUNDVyNMLvNZzlLmJYY,1231 +torch/include/ATen/ops/_reshape_alias_copy_native.h,sha256=tph-eWL2VYNjTkbDx0lVyK5ZQ1llXI81LbR5vxEzanI,956 +torch/include/ATen/ops/_reshape_alias_copy_ops.h,sha256=JWjYFRQPyuI0TRDTVVUDJrYGKcbxzvtLEXwtNFeGPuI,2243 +torch/include/ATen/ops/_reshape_alias_cpu_dispatch.h,sha256=V9z_QhGXRKUN7O8IL5w4hJWLiXmcZRh8d-MAqZlN0MA,1151 +torch/include/ATen/ops/_reshape_alias_cuda_dispatch.h,sha256=-t-_vz8cqBndjmsF7hFa1bC3V-pLEeUmyL5DcUI9IHg,1153 +torch/include/ATen/ops/_reshape_alias_meta_dispatch.h,sha256=XaGj8uswEiurDazL7HzNwj3QSnBpF43xCU9y9ipWzaY,1153 +torch/include/ATen/ops/_reshape_alias_native.h,sha256=GR4Y6u8DRhmQl6EzXx8xgaxSIrQNWyrVc8Aj8izm19E,784 +torch/include/ATen/ops/_reshape_alias_ops.h,sha256=jZGqQc2izhQrLdWoE__8IBkEmFXgHr5x0P7M5o3SbTg,1423 +torch/include/ATen/ops/_reshape_copy.h,sha256=CetYqNpV4vOlT0tGu-beT1uO0mvK-IqpV9vNA-pxZIw,1704 +torch/include/ATen/ops/_reshape_copy_compositeexplicitautograd_dispatch.h,sha256=YovmUvVX4I97WjWOe9dWtHJRH3GAWkxYjEz6blhZ53w,1141 +torch/include/ATen/ops/_reshape_copy_native.h,sha256=vGML376As41Qx1hxEY6YyqqjVxB94S7SErJmh8gd89E,770 +torch/include/ATen/ops/_reshape_copy_ops.h,sha256=NAV-P_6a_8neA5jIY8btg4xNywiDtMigJMDd3kdJWoM,1320 +torch/include/ATen/ops/_reshape_from_tensor.h,sha256=MAiAplBHMN_UkymV0Qjp-MN-HagklaV9h1xyf_HdKqA,994 +torch/include/ATen/ops/_reshape_from_tensor_compositeimplicitautograd_dispatch.h,sha256=JaOPbYWXJFOPlQc1zUwbZcFkz63X2QFd3kqiva_CfGE,1058 +torch/include/ATen/ops/_reshape_from_tensor_native.h,sha256=v4_cg7r-qz16qgmhShPYtQNEP2QZfVWR0W1CSpZPmzo,770 +torch/include/ATen/ops/_reshape_from_tensor_ops.h,sha256=qISJkKrMyBVq9dKuKV2oloyN1k7ozg2GcARSZwdE9Vs,1339 +torch/include/ATen/ops/_resize_output.h,sha256=0Y0DX1HE1azWUJQaPFJRV4tO4iCxPd00KTCd3w47BYs,5650 +torch/include/ATen/ops/_resize_output_compositeexplicitautograd_dispatch.h,sha256=hznXLriUm5o0ojq_EvKhDkxqQeJIYFabGrlhTHOXGOE,1761 +torch/include/ATen/ops/_resize_output_meta_dispatch.h,sha256=BgJf9sp67uXVRJ0ZQ7Rum0JPveFLiOUEPyT434D7gW0,1157 +torch/include/ATen/ops/_resize_output_native.h,sha256=Dkl0hwr8J_vUe6jDsly4GPIj8HNoIUwgWjjAjGOXdzs,1052 +torch/include/ATen/ops/_resize_output_ops.h,sha256=lFyaKqF0X2wzcxtrcvnX-skHuE2MZA-LzNXQxapE4p4,2903 +torch/include/ATen/ops/_rowwise_prune.h,sha256=gOJxK_UJhxkXINCe9w3xTXvV7A32g3tNgxe1RlF10SY,1112 +torch/include/ATen/ops/_rowwise_prune_compositeimplicitautograd_dispatch.h,sha256=Kbn76FF543PcePQ23cmOZhI2BwonNQjRxD3gH2eJv6I,1119 +torch/include/ATen/ops/_rowwise_prune_native.h,sha256=bgvfHcLPZv9OZ9MFYb9YjBHuASKfMxExJp-n4eT5zRk,831 +torch/include/ATen/ops/_rowwise_prune_ops.h,sha256=SLCR51rc_G-VTbvmP9OH6gP6a7f8oliwhUVIwG1KmKY,1544 +torch/include/ATen/ops/_safe_softmax.h,sha256=fXBpzi7mkNyn0oeq9-Q65ltkcWZ_njA-WZRYklnWfhQ,1031 +torch/include/ATen/ops/_safe_softmax_compositeexplicitautograd_dispatch.h,sha256=Ig2Qvf97RxcSTFzsDJwmYMDpqCPWatXHIbgDN_6L52g,1092 +torch/include/ATen/ops/_safe_softmax_native.h,sha256=IUiXfibyQdI4ukkw2yWcyKLDZrctDq-1RBQfEHJF-ck,804 +torch/include/ATen/ops/_safe_softmax_ops.h,sha256=jKYKZgg7IBEQ4J0BO6JaUeyHwicu5aUlKI79sB9d9_Y,1411 +torch/include/ATen/ops/_sample_dirichlet.h,sha256=uCfuSXMIHuxUw6cyz9bqnf4KnWxE9WfOGks7fJ7Y8Uw,1661 +torch/include/ATen/ops/_sample_dirichlet_compositeexplicitautograd_dispatch.h,sha256=3jq_U_Qz7HZtPmhQDbWf6Zf0ykxJv2zWXWM8RtsPFEQ,1242 +torch/include/ATen/ops/_sample_dirichlet_cpu_dispatch.h,sha256=ASQ3z19-oFmygGnHZ5vzHGHD7rLtIjOfyOWVGxUKMFY,1042 +torch/include/ATen/ops/_sample_dirichlet_cuda_dispatch.h,sha256=olV0fpUQUcXm2xT_R7LVj87KbP-oeqESo9V7HaM6QyY,1044 +torch/include/ATen/ops/_sample_dirichlet_native.h,sha256=cFMCLxvkjS_PSAEKWiRGad_6rd8xEfVd143wXI5Id8w,1050 +torch/include/ATen/ops/_sample_dirichlet_ops.h,sha256=X6HJ3f1MPN9r22ZQ3zp3nlHmaZ7ELG4lDNhR4Uk4_8k,2153 +torch/include/ATen/ops/_saturate_weight_to_fp16.h,sha256=RNha5FkTQxxR0UXIlNCuSS4z2XANaMJG11LFvBFrecM,969 +torch/include/ATen/ops/_saturate_weight_to_fp16_compositeimplicitautograd_dispatch.h,sha256=yS0SNFXQz2jxuwe7Zt87JFq9UqXKA16TPX34rhwXJxE,1038 +torch/include/ATen/ops/_saturate_weight_to_fp16_native.h,sha256=AdxN_fk1juTYK7zMrCiNNvL8lLnXycQSf7zN60ZWap0,750 +torch/include/ATen/ops/_saturate_weight_to_fp16_ops.h,sha256=5T9Rc8BlPbtjuUSzLc6ysXENetHb8C1wB7xrc-WZ1L4,1271 +torch/include/ATen/ops/_scaled_dot_product_attention_math.h,sha256=_TYa8ktH1PHzHcwtRwN6qBpxbZmjQ-ajgPMjKqBuijY,1550 +torch/include/ATen/ops/_scaled_dot_product_attention_math_compositeimplicitautograd_dispatch.h,sha256=_eEt8qvdNJ35HTyWqYqYbFPHr9plP-zWGlaq5zooseQ,1338 +torch/include/ATen/ops/_scaled_dot_product_attention_math_for_mps.h,sha256=g7hR0QgcE_sOreA6O-kj-3j0_5jNvp8IAXfDviJB5Aw,1582 +torch/include/ATen/ops/_scaled_dot_product_attention_math_for_mps_native.h,sha256=0SAoE4aPf5nZIVqujS9jFASmof4GFAJst2Lcyq_eobA,676 +torch/include/ATen/ops/_scaled_dot_product_attention_math_for_mps_ops.h,sha256=JeGfvW6cgTJhIweu16yLwFYmA-HH5lirnEggUYpkI9o,2189 +torch/include/ATen/ops/_scaled_dot_product_attention_math_native.h,sha256=lrUtfvmGJ2lI1ZTPQ7PzjPtuhqdQk0Ep24jcgXN4OCg,1050 +torch/include/ATen/ops/_scaled_dot_product_attention_math_ops.h,sha256=Hxchl300QXavAAQyZLgpZNZWyF63rOTqILjce5u3Ypc,2165 +torch/include/ATen/ops/_scaled_dot_product_cudnn_attention.h,sha256=Y_5_NeGXfvohk235UKUVZgRFs7HZnK_3b0T9tHfLEKg,1769 +torch/include/ATen/ops/_scaled_dot_product_cudnn_attention_backward.h,sha256=guWO3YXvUDY_PY3ZgF4zA6SaBelbZjioKtmCwjUdAes,4717 +torch/include/ATen/ops/_scaled_dot_product_cudnn_attention_backward_cuda_dispatch.h,sha256=oZA8H0WIJDscfG5VIjMP9dcWSeaYYeSIFWrOZ4tewbk,1993 +torch/include/ATen/ops/_scaled_dot_product_cudnn_attention_backward_native.h,sha256=Tk4j3AvE4DqNIIsGZQV16lk9adYcXpkWVQSBSZzMOdA,1755 +torch/include/ATen/ops/_scaled_dot_product_cudnn_attention_backward_ops.h,sha256=DzEJ_0MEY6U3ltKq8oKS4od907SuAFpJrlmkh0WI5_M,2755 +torch/include/ATen/ops/_scaled_dot_product_cudnn_attention_cuda_dispatch.h,sha256=ja7ieHhj_P7B5Tyf4RlWQyiV3aMKL9WZHYcWIZcD-OY,1352 +torch/include/ATen/ops/_scaled_dot_product_cudnn_attention_native.h,sha256=JTe1uzm1cKP2SMKTEJvSD1VXRR7Vxbpkb1DjALSo9j0,1559 +torch/include/ATen/ops/_scaled_dot_product_cudnn_attention_ops.h,sha256=ztRblSKZWgG-JzkKd59jzGOzt_wF_6uaNPKJT9Az4H8,2485 +torch/include/ATen/ops/_scaled_dot_product_efficient_attention.h,sha256=oIzzTb7AxKgxUT6h8fhUsrKV8tTHYWIQ9VXy9bY53xA,1562 +torch/include/ATen/ops/_scaled_dot_product_efficient_attention_backward.h,sha256=8iG2kcH3RzKLKUvgyMJhTU0khR8p-kq4Kd-F-MrABys,1833 +torch/include/ATen/ops/_scaled_dot_product_efficient_attention_backward_cuda_dispatch.h,sha256=xt_dgIQETh8Xd00wCk7flwo0HiZ8-ycdmXKNdSorp3Q,1420 +torch/include/ATen/ops/_scaled_dot_product_efficient_attention_backward_native.h,sha256=UiE9SlKp51xMit_8HeDuMIzo5AiUVLGVJyS0DOGKoXU,1179 +torch/include/ATen/ops/_scaled_dot_product_efficient_attention_backward_ops.h,sha256=jdMQ0XZWQ490YpHrer26ZyP6XEFvtAiE0ED_cuFQ5WQ,2614 +torch/include/ATen/ops/_scaled_dot_product_efficient_attention_cuda_dispatch.h,sha256=XR3vVssxe6h1rAzus4mu8tg6pmU-dtQmtD0Vc8m1tK8,1269 +torch/include/ATen/ops/_scaled_dot_product_efficient_attention_native.h,sha256=zjbVX1j4eayG1cpQ7U96v4TVa45laC1126gvCyEiDAA,1393 +torch/include/ATen/ops/_scaled_dot_product_efficient_attention_ops.h,sha256=Qp5BxaHjlxCeU0pIMoqyupIiyMUfTC37zp1CogwKEnY,2155 +torch/include/ATen/ops/_scaled_dot_product_flash_attention.h,sha256=cngjBw61Uvy4WM0h8MZV-9e7Pwz7Z4U2juloMZh9wk8,2692 +torch/include/ATen/ops/_scaled_dot_product_flash_attention_backward.h,sha256=bfTRMLwYVILUmWXMqgGry3eoSmHqU0C5HOwsysS8IPA,4579 +torch/include/ATen/ops/_scaled_dot_product_flash_attention_backward_cuda_dispatch.h,sha256=xpG07K1M8QZugD2zuSibkHp5Rvtg2Cg4VeP1e3xiDaM,1933 +torch/include/ATen/ops/_scaled_dot_product_flash_attention_backward_native.h,sha256=VMOnC4uilfT2ycz5d26S5qAm1e8nbpY6bi1AXNdepCw,1684 +torch/include/ATen/ops/_scaled_dot_product_flash_attention_backward_ops.h,sha256=XUVZ39QSXd3DGzoEPKCu9YYk8-gW7YwNSfV_fT7CHgc,2688 +torch/include/ATen/ops/_scaled_dot_product_flash_attention_cuda_dispatch.h,sha256=xS9MO3W0qgRmGBZnRZwFaIUbLwYHiC-zBgdbnzTusus,1779 +torch/include/ATen/ops/_scaled_dot_product_flash_attention_for_cpu.h,sha256=XvYvOuB4Lc9LBRUKStYjSZNnjS9BhBYbfRx9Zps05iY,1451 +torch/include/ATen/ops/_scaled_dot_product_flash_attention_for_cpu_backward.h,sha256=T44fSiswgcEhzGmnnblItTTHKUx1knaOGm1HB09xIG0,1656 +torch/include/ATen/ops/_scaled_dot_product_flash_attention_for_cpu_backward_cpu_dispatch.h,sha256=xRJSuu7OdMOh3p61Iy5K8yMHZdYfXZKPX4KDRedGSxs,1320 +torch/include/ATen/ops/_scaled_dot_product_flash_attention_for_cpu_backward_native.h,sha256=Ok5e_LibHBAyw4MWT0Fw4jbfVz2LUQN8_4RP63Mvxz0,1072 +torch/include/ATen/ops/_scaled_dot_product_flash_attention_for_cpu_backward_ops.h,sha256=BsXy05iGQr3gywL-66xw4zu6ECoziyfFLxadvy1UDVA,2327 +torch/include/ATen/ops/_scaled_dot_product_flash_attention_for_cpu_cpu_dispatch.h,sha256=ubvOoqbhAHoxXMRC-8zy3W2DkBLlPdOgBpDbHPR4tK8,1227 +torch/include/ATen/ops/_scaled_dot_product_flash_attention_for_cpu_native.h,sha256=t4iu9-OSrOW62l-RGutiOUGASk6zAV_ir75QSK5UnJs,979 +torch/include/ATen/ops/_scaled_dot_product_flash_attention_for_cpu_ops.h,sha256=mtmXBmdPYb0uqfXjdvh1Zd9_UZSKEsMC36W9CYonL8g,1982 +torch/include/ATen/ops/_scaled_dot_product_flash_attention_native.h,sha256=MEFq7loFsToVtuVMtof3GauDBEJ-0NOSByUL_7aSqJM,1929 +torch/include/ATen/ops/_scaled_dot_product_flash_attention_ops.h,sha256=FLqMF0IZ07A8kT6dKfaz3E8vhFtqh_IibFi5IKBZ5QA,4258 +torch/include/ATen/ops/_scaled_dot_product_fused_attention_overrideable.h,sha256=OX16nWo0XgylrrHdN43oHx9A5_i8GU_6zkxyfbrcRkw,1759 +torch/include/ATen/ops/_scaled_dot_product_fused_attention_overrideable_backward.h,sha256=dTHaB2E3ejSBjRUmMOmrrz2gMbTMrR2zSGeC2QNpF08,5282 +torch/include/ATen/ops/_scaled_dot_product_fused_attention_overrideable_backward_compositeexplicitautograd_dispatch.h,sha256=x4_rX0eySBtka0fHxPb5wpxCnvLRS8nBQ1zSdvU3rm8,2159 +torch/include/ATen/ops/_scaled_dot_product_fused_attention_overrideable_backward_native.h,sha256=R8HD1CtZxVrA876Ss3FGgFNyNfx7Euo8bPg-09tY-u0,1266 +torch/include/ATen/ops/_scaled_dot_product_fused_attention_overrideable_backward_ops.h,sha256=n7dvP0-SJPSva12sveflpCDsZEEZDjYfS8B3kEK8wsA,3004 +torch/include/ATen/ops/_scaled_dot_product_fused_attention_overrideable_compositeexplicitautograd_dispatch.h,sha256=gNB-hIMsciN7KHcvN8mLle7y_jBWKbj4s2l5gFRqLRU,1385 +torch/include/ATen/ops/_scaled_dot_product_fused_attention_overrideable_native.h,sha256=7rUEqX__mv3Gigo808FQLL926uKdLbnFc3l4MsOhl98,1097 +torch/include/ATen/ops/_scaled_dot_product_fused_attention_overrideable_ops.h,sha256=aL877R44j4ObBaTMB1coDQ-wmTybIuE1EQbSSlojI2A,2448 +torch/include/ATen/ops/_scaled_grouped_mm.h,sha256=5fH8ry71RiDFW-8OfBXBPvo6iTisN0VgfdFtKWx2t2Q,1490 +torch/include/ATen/ops/_scaled_grouped_mm_cuda_dispatch.h,sha256=pOmC0lABNzTDimislWqwtXfApjj7iHlZb2HysadRKgE,1297 +torch/include/ATen/ops/_scaled_grouped_mm_native.h,sha256=JyBtRzlUDxKfBRSalre6Qo4g53irZ8FaTdg-He2-iRA,1056 +torch/include/ATen/ops/_scaled_grouped_mm_ops.h,sha256=jQZgnj4Pp8iSdGG1Qlh-egj7vLZL_cdr1qMvJRLc7Fo,2180 +torch/include/ATen/ops/_scaled_grouped_mm_v2.h,sha256=trd4A9GAer1lzzPXfdudscoBUSvqlxyRpAE5CPta21g,1697 +torch/include/ATen/ops/_scaled_grouped_mm_v2_cuda_dispatch.h,sha256=LuQcyCfWlwKAgJZtuWwJKpKGUq-XJP-DFc7qhTc4--0,1381 +torch/include/ATen/ops/_scaled_grouped_mm_v2_native.h,sha256=aPa3n-jxYTLKlgTe6fyls8oPCSgW-4tP6s4jbwkWpoQ,1140 +torch/include/ATen/ops/_scaled_grouped_mm_v2_ops.h,sha256=Qg7xYjRsP1NzsGl_ZTyCJG8jMSMNhZim0uMzvzFo2T8,2460 +torch/include/ATen/ops/_scaled_mm.h,sha256=SxYr8M0K-PvNWV0rq1SXxqk6r4B4RfwlaiTL0R1LELU,2737 +torch/include/ATen/ops/_scaled_mm_cpu_dispatch.h,sha256=uXKAuos4jLgSi2NYYH4Ql1aVrDHC0o3qOcgSw56ahtY,1908 +torch/include/ATen/ops/_scaled_mm_cuda_dispatch.h,sha256=TmK3LinNsD1INvIPaVWtVvRweI6PmDHptC2f5n0aeqg,1910 +torch/include/ATen/ops/_scaled_mm_native.h,sha256=G2dQN2ulY42Ts9dRuI89IfcuErWjSt1NsdtLjqp3Teg,1976 +torch/include/ATen/ops/_scaled_mm_ops.h,sha256=QGCS_zvD2Dk2P0lCYPBuRDhAc8W5dTnckSnwMkgiVCQ,3411 +torch/include/ATen/ops/_scaled_mm_v2.h,sha256=uDzVdSWYu1m8grLHpY-aIUueeqM9C5dbsM2zPbQjN9A,3286 +torch/include/ATen/ops/_scaled_mm_v2_cpu_dispatch.h,sha256=h0bNzzmbkViof6KexaXiu4jEW50ktCRpNd3K_LV3TuE,2124 +torch/include/ATen/ops/_scaled_mm_v2_cuda_dispatch.h,sha256=MzYexNGWBwhumd6ja18Fb7Ow5yBuUbK-fMzNjVAK27M,2126 +torch/include/ATen/ops/_scaled_mm_v2_native.h,sha256=GpyI3mFA3jx0V-7pRJHkxHLJvsFUHGyVzgmCOiRuFNg,2276 +torch/include/ATen/ops/_scaled_mm_v2_ops.h,sha256=JtTwMckuG0DEn2qZkmGHkAajEhcS2v1807LThlCpOWQ,3951 +torch/include/ATen/ops/_segment_reduce_backward.h,sha256=vWDpFfJnjyTOSmc2nHlmlO5A8UfRQ2kadsMQKuQdpes,2707 +torch/include/ATen/ops/_segment_reduce_backward_compositeexplicitautograd_dispatch.h,sha256=QmJhzSRJYKQhDspir9ZHg88cb5TbVhkhm44orgLHXmE,1632 +torch/include/ATen/ops/_segment_reduce_backward_cpu_dispatch.h,sha256=fBCvjzY1-eqrongBoCAnyaTux29OtpQWttWOV4tHzx0,1241 +torch/include/ATen/ops/_segment_reduce_backward_cuda_dispatch.h,sha256=Eg8VaPpl5O1S5zDpAQCTsKuGvi6gIu_K7pogSCJo1jY,1243 +torch/include/ATen/ops/_segment_reduce_backward_native.h,sha256=eY7cybZJSDck8JxrPYdsgQYD2UxiJ_ang_06pW95i4s,1326 +torch/include/ATen/ops/_segment_reduce_backward_ops.h,sha256=XCDcxrC0_5e4K7IkF6a-O-0DNkABncuRD-X0B1kRPQE,3408 +torch/include/ATen/ops/_shape_as_tensor.h,sha256=5cBcV9Y3mIgrz9FYwsv6P9AFPV0NYa_32s3PXwJAqUk,931 +torch/include/ATen/ops/_shape_as_tensor_compositeimplicitautograd_dispatch.h,sha256=LkHLx596h8aTto0QYiS5Bp1ZRgkUzAd2ivtQx_ba1Yw,1028 +torch/include/ATen/ops/_shape_as_tensor_native.h,sha256=6_jJzgkp8kEN5q18QSiV9y98CXgCm0DDsrhNRwRjOiI,740 +torch/include/ATen/ops/_shape_as_tensor_ops.h,sha256=Q_WY76hISVwIcpo9qukzHnyNpmSCViT2j5LXCuJgo9I,1241 +torch/include/ATen/ops/_slow_conv2d_backward.h,sha256=q5cCUlgUROJMkEVsWUt4B61fstGH8vA5h_LdG7IIrlc,14784 +torch/include/ATen/ops/_slow_conv2d_backward_compositeexplicitautograd_dispatch.h,sha256=1eq9KUm7R8OMCQAgJj0AaBCVyrG27_WrgUD1Ii_VEbQ,2376 +torch/include/ATen/ops/_slow_conv2d_backward_cpu_dispatch.h,sha256=9ZG5qi3HQfBISIRCoba20QYy_7MeZJlt1LdlWY39Ogg,2839 +torch/include/ATen/ops/_slow_conv2d_backward_cuda_dispatch.h,sha256=qE01tDtOcLqdmU3Md2B1t90Edp1Oa5Qh8WCAUkhTeEA,2841 +torch/include/ATen/ops/_slow_conv2d_backward_native.h,sha256=v3MfyZWyD2h8AYRIT7gQfHrx3K7B3RD4UFxLEj9uM50,2270 +torch/include/ATen/ops/_slow_conv2d_backward_ops.h,sha256=xJk_txYe9lmIZIrP-NKKij__-fsPnPNvzdn_cDnqyAU,5115 +torch/include/ATen/ops/_slow_conv2d_forward.h,sha256=qxkRvjqxn357DQSz78KkkT6w69lrrg23pAxZpazZxRk,7035 +torch/include/ATen/ops/_slow_conv2d_forward_cpu_dispatch.h,sha256=KRL0Jud3OYaSu610QTiFpgyGZ42a4FS_hiaEyVJV39s,2377 +torch/include/ATen/ops/_slow_conv2d_forward_cuda_dispatch.h,sha256=fgfhOSXJp5OZSrJDT6LSIIWHKq0esaOSX3YB6dFd1Wc,2379 +torch/include/ATen/ops/_slow_conv2d_forward_native.h,sha256=5HTfK0oOpvJJ6I_WUDtyIbUCc9RNmsI20pzu7wzhhvQ,1604 +torch/include/ATen/ops/_slow_conv2d_forward_ops.h,sha256=IyiW8shg7orMvtokL5slUchXv9rbR62TD9Hadn39jVM,2957 +torch/include/ATen/ops/_sobol_engine_draw.h,sha256=lvsUWXNIgr9r56OOVJFq9CRz7vpxsdHJFPBPQ2zMzyI,1227 +torch/include/ATen/ops/_sobol_engine_draw_compositeimplicitautograd_dispatch.h,sha256=65Ym5KrYaQNz4TdyxF0GgBpxPb2Xy3BMJDGiaFwMnH8,1179 +torch/include/ATen/ops/_sobol_engine_draw_native.h,sha256=vNo9jtij6VeNmN9dXuzmknkeph_0BRsgmvxT5p5_oiU,891 +torch/include/ATen/ops/_sobol_engine_draw_ops.h,sha256=1aXyvdNp-nUZgxAz8qNLs4N-YvacCKfNeQiPyKwhfbU,1740 +torch/include/ATen/ops/_sobol_engine_ff.h,sha256=ZH5vRLbXj81-ahRDCQq6c16lg489WdzUyage0k1zV8U,1123 +torch/include/ATen/ops/_sobol_engine_ff_compositeimplicitautograd_dispatch.h,sha256=iF1A81S53AIupGsoa7Kru6LC-lpWRYnHU6WEVccLUyM,1109 +torch/include/ATen/ops/_sobol_engine_ff_native.h,sha256=cNK56cUosSNE6BK1JZEbWK8YpzdBPwnVD_dY7u9wV70,821 +torch/include/ATen/ops/_sobol_engine_ff_ops.h,sha256=3GLaQlauLSyTMAXDjAK0jx8RuALpvL7MntnEMbee_b4,1515 +torch/include/ATen/ops/_sobol_engine_initialize_state.h,sha256=_PdWJ2ZbqLToQuWJUF8zC23aFA4daA5SKUW7EQz0k0o,1039 +torch/include/ATen/ops/_sobol_engine_initialize_state_compositeimplicitautograd_dispatch.h,sha256=u148FflLZtFN_nfTPzAhpxQkSNPV32vU6bCKtRQHMMU,1058 +torch/include/ATen/ops/_sobol_engine_initialize_state_native.h,sha256=vJA4CfAXV9boGHvHdbcKcSf1QjrUWMOB94rQiQ8H-fU,770 +torch/include/ATen/ops/_sobol_engine_initialize_state_ops.h,sha256=vexYzpW2yMRfwXqHVqriXgb4IXlb1x7CrO31Nh-LNws,1344 +torch/include/ATen/ops/_sobol_engine_scramble.h,sha256=DQOI4cEmgNk-4engAmYN-O6crpFPGhltET9GDqpWdtQ,1048 +torch/include/ATen/ops/_sobol_engine_scramble_compositeimplicitautograd_dispatch.h,sha256=e7NWRZCxyhN7YsebZOzdId9XIYNT9BL1Ft5bhKT1EfM,1074 +torch/include/ATen/ops/_sobol_engine_scramble_native.h,sha256=wD6RyT-6CfRE626PmzOxucBmDbkK0OGJ2v7nmpTa8OM,786 +torch/include/ATen/ops/_sobol_engine_scramble_ops.h,sha256=lq8Abkv4aJJL2qA8y8lmXlMtwb9YBMg4tA6pnbkKIRE,1400 +torch/include/ATen/ops/_softmax.h,sha256=8lOsfawl-QWdBIWspiWtWMOWalcHFMQIasvUolQ7y8g,1547 +torch/include/ATen/ops/_softmax_backward_data.h,sha256=dFj_eQOb2zHjd9U9iQMFqHgDSXLF76Gmf2PBLVjuhV8,1972 +torch/include/ATen/ops/_softmax_backward_data_compositeexplicitautogradnonfunctional_dispatch.h,sha256=dpoxWsAEphwDD8laI2JQkrOOCFBTFwL8n49Nk2M4Z18,1135 +torch/include/ATen/ops/_softmax_backward_data_cpu_dispatch.h,sha256=Z47zOaFUgXtAtlvonugAgVKfrSV5mPH6B-nNhb9EzSM,1418 +torch/include/ATen/ops/_softmax_backward_data_cuda_dispatch.h,sha256=wGhaqWx7Z8wi1lmnBac_dwzXI0SvYcQwlu6RWs8aKYo,1420 +torch/include/ATen/ops/_softmax_backward_data_meta.h,sha256=cxDyRkbKF_4azg6yjdUoYvK0AxQ7fYlq1DqkB8tdPsg,912 +torch/include/ATen/ops/_softmax_backward_data_meta_dispatch.h,sha256=HdM-irR7kbKN9l4yENrmJzCDeWAc1tC5WqscbeNzIrA,1420 +torch/include/ATen/ops/_softmax_backward_data_native.h,sha256=o3mB1NEY5NboLqp1H7rGSH9MWQT4UPgsYPgSNgk_a5s,1378 +torch/include/ATen/ops/_softmax_backward_data_ops.h,sha256=0cxJZhGOtOUpTUkxJoq6-up6hwmeB-6l9XBUqP9MPU8,2418 +torch/include/ATen/ops/_softmax_compositeexplicitautogradnonfunctional_dispatch.h,sha256=pyg2QGOmd5bf_CcTCmF3bLiNiXwtdVp0ZiWtFhXiOYU,1079 +torch/include/ATen/ops/_softmax_cpu_dispatch.h,sha256=nWnn5RAdOuSOdxRWKovDc78M4dQv-G4ekxnf3-QS_3I,1236 +torch/include/ATen/ops/_softmax_cuda_dispatch.h,sha256=eyU0svBZ3lzVw-usu6SlQJtiFJcM6IjTHstX-YIzHCQ,1238 +torch/include/ATen/ops/_softmax_meta.h,sha256=aRU51tHchS-GOToBhfgBbLDa-1RKq2GdDdhmf0543Q4,856 +torch/include/ATen/ops/_softmax_meta_dispatch.h,sha256=obxSUmWx_vMfnR_vZOy7cVKmQk4gZKmcPcnawXJg5WM,1238 +torch/include/ATen/ops/_softmax_native.h,sha256=9hrvUOrNewBAEBVymKc2hfp1qT7_7YdvBF1VUMgQm5Q,1264 +torch/include/ATen/ops/_softmax_ops.h,sha256=e0_lj7QnXdXxtVHvqMbHaF3JDuC6cV4uB3tXuZS4c4Q,2033 +torch/include/ATen/ops/_sparse_addmm.h,sha256=JEdDAUeHzFcYB1FpwpQQW7o49AtinJCvrRhW0p31F1U,1911 +torch/include/ATen/ops/_sparse_addmm_compositeexplicitautograd_dispatch.h,sha256=51DXy9yeutts-LVrlp4J2IDDQHPCFi9iaNKFgzgZ65A,1507 +torch/include/ATen/ops/_sparse_addmm_native.h,sha256=drjrZr7Caqn2xmXATLFVBFFPbTVgfuPmsLe4MdZTckM,1028 +torch/include/ATen/ops/_sparse_addmm_ops.h,sha256=mhHRDikq1oFt8Ru8xFa1sf94bcPCSdS5ZL2rwcwLFqw,2524 +torch/include/ATen/ops/_sparse_broadcast_to.h,sha256=yUS1PDFUk1Jb0PDUX3g0ot-M5bMp4nIVbP7qrASbWLM,993 +torch/include/ATen/ops/_sparse_broadcast_to_copy.h,sha256=nrKzCAJzPSeZKvTnDO5eavcSGyIL8BJczKJ9T6_Z5Ro,1591 +torch/include/ATen/ops/_sparse_broadcast_to_copy_compositeexplicitautograd_dispatch.h,sha256=zrtDHs6SaISFfJSasbJJV4ziG-sX5WA2SC_m9JtgurQ,1203 +torch/include/ATen/ops/_sparse_broadcast_to_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=TK2VUzQzMHc8E4KsaTaHvSxp1RNvHI4t0SmfdLpoIMY,1085 +torch/include/ATen/ops/_sparse_broadcast_to_copy_native.h,sha256=2iik3L_kA3bawcG0SVqdXovWDGR03FV6OhJjwaVhF-M,890 +torch/include/ATen/ops/_sparse_broadcast_to_copy_ops.h,sha256=em22CsWUQz8V9_ZJAQC0JLka6szWPGsFAQQKLfRdogs,2061 +torch/include/ATen/ops/_sparse_broadcast_to_native.h,sha256=eZPbTAYymLlhoPzk_1pkDGu062cygSzL95GLXRwy2Hg,765 +torch/include/ATen/ops/_sparse_broadcast_to_ops.h,sha256=Kz8GL2O53DLp9cBtOiqUacRnuzchb_jVxa0zlC2N_8Q,1332 +torch/include/ATen/ops/_sparse_bsc_tensor_unsafe.h,sha256=A2gN1HzWjMa_tMcO-72B6tadPtBAbuKeQYuSxbFYKKs,2034 +torch/include/ATen/ops/_sparse_bsc_tensor_unsafe_compositeimplicitautograd_dispatch.h,sha256=uYmltbo0r8Y1eE94IBKOTcwmUXZF47oCl8MZLB7JvFE,1463 +torch/include/ATen/ops/_sparse_bsc_tensor_unsafe_native.h,sha256=sKWgsCui-VOs1KC5YqP8hgH_FLcQtJv_BYAbkPJgtdI,995 +torch/include/ATen/ops/_sparse_bsc_tensor_unsafe_ops.h,sha256=mfpeNSPJRWupTJUgnasOtDtzGrAi-qUIOYlmp37vAQQ,2054 +torch/include/ATen/ops/_sparse_bsr_tensor_unsafe.h,sha256=Q9xkWvd4fFu_2-FIejybvXsjrJXAD55JebRKdeEhp9M,2034 +torch/include/ATen/ops/_sparse_bsr_tensor_unsafe_compositeimplicitautograd_dispatch.h,sha256=1a0LwgVW-jOhsbCIDot7Yguay54rGphf8YMvuYbESIM,1463 +torch/include/ATen/ops/_sparse_bsr_tensor_unsafe_native.h,sha256=7SGI_yU64V1K-U7CLYx51A1zl8cO5VqpEi2f1uwxdsI,995 +torch/include/ATen/ops/_sparse_bsr_tensor_unsafe_ops.h,sha256=GPvZEdldYhgn0Z5DOYhk6gdJY_lsyRH2AXv4QKcRfik,2054 +torch/include/ATen/ops/_sparse_compressed_tensor_unsafe.h,sha256=zeEkVnGhQg2wxwNl3vZrpR5DEgZ0yAO44k0m48QSGVM,5848 +torch/include/ATen/ops/_sparse_compressed_tensor_unsafe_compositeimplicitautograd_dispatch.h,sha256=yapsu8aA6yNbvHAAa2AtfwEfHEd2u8mvvjpDA8C9vs0,2044 +torch/include/ATen/ops/_sparse_compressed_tensor_unsafe_native.h,sha256=4QGn8qwVFR8jgs2yGbRbaW6HFocgS-fR2-1oBwFcRew,1021 +torch/include/ATen/ops/_sparse_compressed_tensor_unsafe_ops.h,sha256=ya8ZkcT2VTETU0zGDLZu5qbABidrTNbthlALCRGt3tw,2114 +torch/include/ATen/ops/_sparse_compressed_tensor_with_dims.h,sha256=Txw7x1xRKi8Hg-gomGnwVHwQWqvIGyYxKEI0WdiMi_E,2121 +torch/include/ATen/ops/_sparse_compressed_tensor_with_dims_compositeexplicitautograd_dispatch.h,sha256=gU9X8no1v8UPgW0K9rsQUPmt3edA9z72-OPAtS2hvXM,1470 +torch/include/ATen/ops/_sparse_compressed_tensor_with_dims_native.h,sha256=wSjtN6NMkx-wabA6DmMJAVWjAbfzmjtS_gxXddpNIVw,999 +torch/include/ATen/ops/_sparse_compressed_tensor_with_dims_ops.h,sha256=Qxbr_UV6rG8_rtVPEts_kgMANSmr4tmGQDL3mn-Nrr0,2075 +torch/include/ATen/ops/_sparse_coo_tensor_unsafe.h,sha256=MRqgWKE7p1XjAbXSi385DNQQ5fgc9Rsg0YChCfu9HYI,5561 +torch/include/ATen/ops/_sparse_coo_tensor_unsafe_compositeimplicitautograd_dispatch.h,sha256=I4COQMvvNAqKCnBG4sviRtpuGGJrdqa9b0vQCoYTqOY,2010 +torch/include/ATen/ops/_sparse_coo_tensor_unsafe_native.h,sha256=PNN84LpBpZgp6l-QwsweQ554iugLVaASvufw5Cw-lwg,1020 +torch/include/ATen/ops/_sparse_coo_tensor_unsafe_ops.h,sha256=ZCYYGDivCKCjXlFhxeORHFG6B7RkR_oB4xJBSL_usYU,2070 +torch/include/ATen/ops/_sparse_coo_tensor_with_dims.h,sha256=hP2mu_mF1NZKJ-UuGoGfyn2Lr258zx-tz8tS816-1uQ,2574 +torch/include/ATen/ops/_sparse_coo_tensor_with_dims_and_tensors.h,sha256=_ud5eZHzzm3A3miiomMbVNKn8K5a4Qnp7DDV25tuhJ4,10866 +torch/include/ATen/ops/_sparse_coo_tensor_with_dims_and_tensors_compositeexplicitautograd_dispatch.h,sha256=7fhZ8UmuXz4UqCy5TzyLaH2zZf0k7ygbrg_8p3NAZwI,1974 +torch/include/ATen/ops/_sparse_coo_tensor_with_dims_and_tensors_meta_dispatch.h,sha256=BfX_2JnsWN4_zjB_7kWtdr_79ODjb0GZc1AZWbGrP9Q,2178 +torch/include/ATen/ops/_sparse_coo_tensor_with_dims_and_tensors_native.h,sha256=kuOmLICVh3tXoIgtMFgnItiLHO4bnRZNj8wP1UithMU,1315 +torch/include/ATen/ops/_sparse_coo_tensor_with_dims_and_tensors_ops.h,sha256=jeL9qWLxP-JsVCLIM_-cnXAeS6QGTju45_9x7i_QAmE,3368 +torch/include/ATen/ops/_sparse_coo_tensor_with_dims_compositeexplicitautograd_dispatch.h,sha256=unUeTIogxeXNsACfFRqOLY8FqwezsiXsltiVw5ZF7Qs,1237 +torch/include/ATen/ops/_sparse_coo_tensor_with_dims_meta_dispatch.h,sha256=8vuvVso7W4x_SsjvxQTS9cfdjPojVurwcPfJq0Z_v7A,1318 +torch/include/ATen/ops/_sparse_coo_tensor_with_dims_native.h,sha256=8UBpjmPNTLwa0Lq3DUpKNUVAlYcWb1LE419r4EeXxFE,1073 +torch/include/ATen/ops/_sparse_coo_tensor_with_dims_ops.h,sha256=6dA9JReQiQRoNhZKx2VA_Vdr6cIxnyM14U599u4mi-c,2664 +torch/include/ATen/ops/_sparse_csc_tensor_unsafe.h,sha256=Kd6aJgw73c6W2TiVTKZdlPmcjgk9WW2JKmWuQ_8dQ8g,2034 +torch/include/ATen/ops/_sparse_csc_tensor_unsafe_compositeimplicitautograd_dispatch.h,sha256=0ACSp5RERfN0O-p7GjUKcx88IXgqkSruQZWamVqoeGM,1463 +torch/include/ATen/ops/_sparse_csc_tensor_unsafe_native.h,sha256=rkp4pNmus9mptxFaMQaGivfx2zQpUgtWqL0w_zeLuhQ,995 +torch/include/ATen/ops/_sparse_csc_tensor_unsafe_ops.h,sha256=tPrEXo5lJ7nL9RBUeXphUvkFsVGM5U89HrauLz-44Kc,2054 +torch/include/ATen/ops/_sparse_csr_prod.h,sha256=pU8xfUzU3ciWeMOAUupWigKMM1GYmbokfEKV9CM5lPI,1939 +torch/include/ATen/ops/_sparse_csr_prod_compositeexplicitautograd_dispatch.h,sha256=eCYI3JZAipAMwj2RsFQC8EqUQNLQPwya8t2zqMYQyp0,1310 +torch/include/ATen/ops/_sparse_csr_prod_native.h,sha256=KbO2KlLvXp0HxNJAHYg7ovb1zYTW3THJapmYtDbOaCw,1175 +torch/include/ATen/ops/_sparse_csr_prod_ops.h,sha256=tTq7zKGz20lG_I0EI-Oj6arlHoxdlz-YKMWcweOzHTw,2443 +torch/include/ATen/ops/_sparse_csr_sum.h,sha256=W70LlX-1oMqF84EaH5ApjGZIz6gOlYRjI5AXq5KRXIk,1929 +torch/include/ATen/ops/_sparse_csr_sum_compositeexplicitautograd_dispatch.h,sha256=RusXksQYxdWOExp_15c-T3C6WlwaARbR07ofnInjrXc,1308 +torch/include/ATen/ops/_sparse_csr_sum_native.h,sha256=_2Dl4mymkm4810qo8Om1rrZu6XUk290OZR6t4PWtvR0,1172 +torch/include/ATen/ops/_sparse_csr_sum_ops.h,sha256=zjfamLMz6ydl-Qf7DY7bPel2HsBsFkSSXzURZ11vLZM,2437 +torch/include/ATen/ops/_sparse_csr_tensor_unsafe.h,sha256=IPaUHDUl_KojGaczSaxcQd73zbvta1yoYfGAR9q5Sto,2034 +torch/include/ATen/ops/_sparse_csr_tensor_unsafe_compositeimplicitautograd_dispatch.h,sha256=IEcOH_XXfEZ6lolx2HD9_1j-3zs-eOQ3X24x4y6Hnvo,1463 +torch/include/ATen/ops/_sparse_csr_tensor_unsafe_native.h,sha256=d9V63axTfdAKYN3bCqeIqp2eynwOuF2xreUxD8tQrQI,995 +torch/include/ATen/ops/_sparse_csr_tensor_unsafe_ops.h,sha256=77KzwoW5hNfLc7yh0e-YLVSDCwWqdSCBaMuUSuh62Hs,2054 +torch/include/ATen/ops/_sparse_log_softmax.h,sha256=Cidw4F-GJcjHpioYr4ZVIipdtKqc2o0Jlh2irqyq0G8,2264 +torch/include/ATen/ops/_sparse_log_softmax_backward_data.h,sha256=7Y6uM2Ddf2V6uRfrioAA7BkzOfVWDooc_64GAUlIk9U,1977 +torch/include/ATen/ops/_sparse_log_softmax_backward_data_compositeexplicitautograd_dispatch.h,sha256=eWodcdmSG8PSk2uLYpjqbLaPreyMekhzk2dmqgLlsJ8,1319 +torch/include/ATen/ops/_sparse_log_softmax_backward_data_native.h,sha256=Hub86o313x5WOi7dafisMLg0-IgP_Ultz5valJx8NG0,1156 +torch/include/ATen/ops/_sparse_log_softmax_backward_data_ops.h,sha256=HSRDJqXo8zG7wTkli4MAtqgIT8Ny3hHty7Hnw4QcuyM,2437 +torch/include/ATen/ops/_sparse_log_softmax_compositeexplicitautograd_dispatch.h,sha256=QgIjZskOPK4xGBj8mff7SMwovE27mRT_-gE5RKOojwc,1213 +torch/include/ATen/ops/_sparse_log_softmax_compositeimplicitautograd_dispatch.h,sha256=LpomyYXIbISeqSuBSi--f4Fn2iHaaN_F-9d3YHgYCf0,1236 +torch/include/ATen/ops/_sparse_log_softmax_native.h,sha256=1oNEdQyExba9-5OALr21g3AewyGirzDwNoroGPrn5MA,1279 +torch/include/ATen/ops/_sparse_log_softmax_ops.h,sha256=nA27sg0wvjV1MPCqcq3mbclATKVjyVlu7V12eIbM70Y,3588 +torch/include/ATen/ops/_sparse_mask_projection.h,sha256=FoaHGbwWWMLd02YR_RsQ3yqEJohr6f9PNP3b3EaO_Pw,1511 +torch/include/ATen/ops/_sparse_mask_projection_compositeexplicitautograd_dispatch.h,sha256=U3o3tSyDMITR31LY46IPXQgAdVkS98_lZiIAY7Pklws,1261 +torch/include/ATen/ops/_sparse_mask_projection_native.h,sha256=cVjQfwmWBehkIZc6Q-Rgozct7cailHO8MpP51hXocyQ,947 +torch/include/ATen/ops/_sparse_mask_projection_ops.h,sha256=KI3xUidyM47D9He9FWuDdg2JbLgm39yj1iausnnuIaE,2243 +torch/include/ATen/ops/_sparse_mm.h,sha256=HfkW16IjYIL4egSq8DCoIJj4R8dHfae3TdzD0FmS6_U,1219 +torch/include/ATen/ops/_sparse_mm_compositeimplicitautograd_dispatch.h,sha256=pU1WH4vYdcJZDi3bIQkyqWOpyrCHHM-wTGRRmYdkJ2M,1161 +torch/include/ATen/ops/_sparse_mm_native.h,sha256=A2A3t-d4mUSGtoJ6lIQexV9irH3ZOia7zrGpCRYwT68,873 +torch/include/ATen/ops/_sparse_mm_ops.h,sha256=v7rKiTxWlJ5RKTwD4BbF9ZZkhziRHn7hQ6IPJcamWO8,2019 +torch/include/ATen/ops/_sparse_mm_reduce_impl.h,sha256=uEifMo5AFiy9XuMYA6BuptEKcAYEa5jC4JQ9gn0q7qU,1082 +torch/include/ATen/ops/_sparse_mm_reduce_impl_backward.h,sha256=BB279Lss-5J8I29XESfPgsIWmQ_MI9yKnDCrArRbvIY,1298 +torch/include/ATen/ops/_sparse_mm_reduce_impl_backward_native.h,sha256=e7awKjdhzjSh9-0J61H9Ecm5W90We5N0J1C_aB3e3Us,938 +torch/include/ATen/ops/_sparse_mm_reduce_impl_backward_ops.h,sha256=YWitpUyea5R-OzrypovoEThEmzVOgB4PKBWrLzyEq5Q,1838 +torch/include/ATen/ops/_sparse_mm_reduce_impl_native.h,sha256=7yWu1afm8uZ8lv31dISjHoNka8KQHAWnrxkH5-mCXmo,837 +torch/include/ATen/ops/_sparse_mm_reduce_impl_ops.h,sha256=VAJrRP31GkwuurZs5i-L9mjyZmROsfnaoaooJgBA7bQ,1510 +torch/include/ATen/ops/_sparse_semi_structured_addmm.h,sha256=mCAqiZsnMFaULuBWihG1UxK1vCrkLIT-hOxvkVIIYqg,1332 +torch/include/ATen/ops/_sparse_semi_structured_addmm_cuda_dispatch.h,sha256=IOywnxpQBMJoCa2urDcUPWimsB3hPYZGbiyrxIcnsnc,1193 +torch/include/ATen/ops/_sparse_semi_structured_addmm_native.h,sha256=TslEn0gAcV2rOaKPVcTLsQ6DDg7vt-kNyKOgyhG1QR0,947 +torch/include/ATen/ops/_sparse_semi_structured_addmm_ops.h,sha256=O1v-3RFtr9XdIQHik-2OtIcXqPofytf6_Di_5d4g9es,1870 +torch/include/ATen/ops/_sparse_semi_structured_apply.h,sha256=SuyU6NZUWh8rv9AYoxOQlPejy83FzqZBn5F8eujIejs,1089 +torch/include/ATen/ops/_sparse_semi_structured_apply_cuda_dispatch.h,sha256=b8k4KvRC697kVzTOOUV7XvezeYk14uQh4uhBo8kCOgE,1058 +torch/include/ATen/ops/_sparse_semi_structured_apply_dense.h,sha256=4urKlxLsz-b8WtuTI5utUMO_AwHY1AcSTuIxjhPgkm4,1078 +torch/include/ATen/ops/_sparse_semi_structured_apply_dense_cuda_dispatch.h,sha256=U0PZwukT3WhYuwyiM8MOunIMER_MziaNW-yWuVZ7lUg,1039 +torch/include/ATen/ops/_sparse_semi_structured_apply_dense_native.h,sha256=M80uZ_e0ykiJGUQyQBDMieoE8R5YJuJJ7tGScCuQaAQ,793 +torch/include/ATen/ops/_sparse_semi_structured_apply_dense_ops.h,sha256=ryjbK6f1ah6Uk5yjRzQY8bmbq9UEJfxPTjx5of3hlp4,1408 +torch/include/ATen/ops/_sparse_semi_structured_apply_native.h,sha256=Ra5TuyofUEyBj1a1s4jeOKVFzx-CI5hwq9p2EzY7KfI,812 +torch/include/ATen/ops/_sparse_semi_structured_apply_ops.h,sha256=J_4tvx4orqWUwopZC5GuV6F6UWcJAWjMf5l4eEPEhKQ,1475 +torch/include/ATen/ops/_sparse_semi_structured_linear.h,sha256=RitS-VqQD6z9Kr8nO42HG3l_v0c4Uz5WqwKyI2W8ehw,1349 +torch/include/ATen/ops/_sparse_semi_structured_linear_cuda_dispatch.h,sha256=bizinDywN1rMa_SP9kAMRC_SljifVzdrrTCthcdmY5c,1217 +torch/include/ATen/ops/_sparse_semi_structured_linear_native.h,sha256=AwJ9JnoSQz__M2c9Q6YL5XFrzBVCG4r8r7-7e7FhKb4,971 +torch/include/ATen/ops/_sparse_semi_structured_linear_ops.h,sha256=14GM-GjwN7Zqtww5JKnbL8H3TEqi59ZbWOggHiP1JVM,1897 +torch/include/ATen/ops/_sparse_semi_structured_mm.h,sha256=zl3wgkIqzZ4dQDqPtn9v1iUfFhRyE2QmgCTSXIGrsvE,1174 +torch/include/ATen/ops/_sparse_semi_structured_mm_cuda_dispatch.h,sha256=3VmapmQJgJWeQGHCwvLI-xCJOW6nMrjvahmQHIIb3vg,1109 +torch/include/ATen/ops/_sparse_semi_structured_mm_native.h,sha256=nneNw3v6IAgBaxt8raRGoo82MTgB2mWItRFKXCmJIog,863 +torch/include/ATen/ops/_sparse_semi_structured_mm_ops.h,sha256=-8B9GHe_4N3pP42VzJjZufl4HusSwT78YXnEZ9zCp1A,1602 +torch/include/ATen/ops/_sparse_semi_structured_tile.h,sha256=WAfC5WFpJGW59fNNubWF5iUg7cTpyGgYS9z7n7u1_gY,1193 +torch/include/ATen/ops/_sparse_semi_structured_tile_cuda_dispatch.h,sha256=4OJKQ5l2KGlX-o7Kdn_Tc6nSbXy4DRCDJRErH4GYcSI,1111 +torch/include/ATen/ops/_sparse_semi_structured_tile_native.h,sha256=olsupM3GOEAIkrO3_Zni3BtkuvcjPL0OJjsVdyKQZw8,865 +torch/include/ATen/ops/_sparse_semi_structured_tile_ops.h,sha256=u-IukdlhaQ894uXGIL0ZV2IISghVkYIsP_zUjuYbVYg,1647 +torch/include/ATen/ops/_sparse_softmax.h,sha256=x4p-0H_87O6IeohGjZHqjEc-s3SEC0co_ctjgkRqu44,2200 +torch/include/ATen/ops/_sparse_softmax_backward_data.h,sha256=iVMeIXD1SJsTHRE9zOKH35Q9WrellOb9KnwdXivDuQ8,1937 +torch/include/ATen/ops/_sparse_softmax_backward_data_compositeexplicitautograd_dispatch.h,sha256=Un5JWG1L6j8YqUGaaCe-YfaWjoxqXAYnq0GJeN00Bao,1311 +torch/include/ATen/ops/_sparse_softmax_backward_data_native.h,sha256=p6hXfyhQKvSFxLoQYX48jVol2csu6VNXBJqersAwlkQ,1144 +torch/include/ATen/ops/_sparse_softmax_backward_data_ops.h,sha256=w43m6xczEcQjkDpYzsaVNaB5vjplF86eKiqGfpbxR7M,2413 +torch/include/ATen/ops/_sparse_softmax_compositeexplicitautograd_dispatch.h,sha256=ciQS89KIPR6-GRA0Y5ugtxaDFy4o6LEUND6oE5FCEHE,1205 +torch/include/ATen/ops/_sparse_softmax_compositeimplicitautograd_dispatch.h,sha256=9TbKUv06GXMvLgD9acuC3iHraUw9A2fcKG93yMyBZWg,1228 +torch/include/ATen/ops/_sparse_softmax_native.h,sha256=dtNHO5qh-9fYQYgH8eMpUY9zgM8M0tt-RRY6Nh0y1j4,1259 +torch/include/ATen/ops/_sparse_softmax_ops.h,sha256=NarX-lC5H05UcniMJ83zB7H9vJ6_Ola3DFIPyM-iQfM,3540 +torch/include/ATen/ops/_sparse_sparse_matmul.h,sha256=e2UucJi5VgQvBpl6Z9H7PmWSY3GTZbwaMPsfCNj_G4M,1572 +torch/include/ATen/ops/_sparse_sparse_matmul_compositeexplicitautograd_dispatch.h,sha256=72-49i__SIo0HQpV63v1MvsppLp73vgcuyNm8Yxqf8M,1203 +torch/include/ATen/ops/_sparse_sparse_matmul_native.h,sha256=Yq-3LjgMSuExeMng8lLDVnI7yn4kx675rylGc1iQsm0,992 +torch/include/ATen/ops/_sparse_sparse_matmul_ops.h,sha256=zwknDCvBhb8lDmRBGEC3PuS6OP3qq5vleDMLJDY3gPc,2063 +torch/include/ATen/ops/_sparse_sum.h,sha256=QZjgSW1nbi3r0TLn_YRsqL833ogLtQU7AblcckvTOG0,2089 +torch/include/ATen/ops/_sparse_sum_backward.h,sha256=SdhxYiZir_ccdH-hpWfXkozbdBUeRAJ2rpwB4fCOd-w,1664 +torch/include/ATen/ops/_sparse_sum_backward_compositeexplicitautograd_dispatch.h,sha256=qkaIlTWUwrK7Rd44f-6MJDB0TkjK-olpfE7QklU3eUg,1241 +torch/include/ATen/ops/_sparse_sum_backward_native.h,sha256=Jv_VV7b-3QGFFShAxJmumHWplEl8FVFcVtymA4dlJz4,1051 +torch/include/ATen/ops/_sparse_sum_backward_ops.h,sha256=G9D7nr5P3o52X5PcGFIcgKbAlHK-cQu2vMr5ewi_NUg,2191 +torch/include/ATen/ops/_sparse_sum_compositeexplicitautograd_dispatch.h,sha256=0VSZOM5OGo3iijux1aAU5DxbWaW38Svf690IYp3Uwhg,1253 +torch/include/ATen/ops/_sparse_sum_compositeimplicitautograd_dispatch.h,sha256=S5_wOPtSALWkZEeJoGEi38eg50coYP5xFEHTGlvR3zQ,1206 +torch/include/ATen/ops/_sparse_sum_native.h,sha256=wK1grkBCuzNTQ_nm5RbcYeqwsF0zscc7hMNG0LCCykg,1106 +torch/include/ATen/ops/_sparse_sum_ops.h,sha256=T146SrkDcTzZVRAivQ2dl92JG9rr0jCvaKXEyXy4tpk,3820 +torch/include/ATen/ops/_spdiags.h,sha256=hmokoL_XkEDpK5gqTYIR7F-njd0WGNR3F4j7PZh730A,1859 +torch/include/ATen/ops/_spdiags_compositeexplicitautograd_dispatch.h,sha256=UbRPm531USYxmiw8A6rBnVSBhOwqB-UUo7o-XYTIgOA,1324 +torch/include/ATen/ops/_spdiags_cpu_dispatch.h,sha256=JdlH1ntLN6NxWtH1HwEoovXXnVi9kC3yBN4zXfnEie4,1083 +torch/include/ATen/ops/_spdiags_native.h,sha256=Zm3V1MJSf5vev3dLBMg-Lb8baiBBmCz9HA5-Ozr4kTc,1010 +torch/include/ATen/ops/_spdiags_ops.h,sha256=_0X9qyNcNn6HPfX3HWViH7rNP7N0XtNGTzar-OHd7Y0,2423 +torch/include/ATen/ops/_spsolve.h,sha256=P_jbKsoRCLSqlchfnfoMPhZI8tzBRKO1AjK-WnCiHW0,966 +torch/include/ATen/ops/_spsolve_native.h,sha256=KWTsfcG47pJvToZ2kSRpmAV_qSrQ8QXTAhWzTl-J9RM,783 +torch/include/ATen/ops/_spsolve_ops.h,sha256=jk6LRaRv16UHadUJAm4RDl8yowK5BpXW5V4eyN_MWvM,1329 +torch/include/ATen/ops/_stack.h,sha256=6ZidL51Sq5pJIuRpTyp0zMl0OZ30SC7McXC4e9gHUlI,1393 +torch/include/ATen/ops/_stack_compositeexplicitautograd_dispatch.h,sha256=d6FPj-EEKnwaE00xkZ36li_dF8yLkRtErLtUbsPnZLI,1215 +torch/include/ATen/ops/_stack_cpu_dispatch.h,sha256=tyj0nLjDPr6P3UOw47BKKuiGA1CgDqXe5u2m3Fz9Vvw,1171 +torch/include/ATen/ops/_stack_native.h,sha256=Cy_GV1hYym7KG5_6MCD1UgTnGhd3wu6jhk-sFpAcRlc,1000 +torch/include/ATen/ops/_stack_ops.h,sha256=h3pO7_QHRrZRQatSHEpisnT1iAl6PP6gN5FMyIgXWJ0,1891 +torch/include/ATen/ops/_standard_gamma.h,sha256=-KzniOFGogDHzok-kuEPStCYKJo6cfI0WwQmI8KfD2Q,1641 +torch/include/ATen/ops/_standard_gamma_compositeexplicitautograd_dispatch.h,sha256=-n5jp-Qoj30yUEdqFu-ieCVNgEr7Mn8TU_Ai6cfmIhU,1238 +torch/include/ATen/ops/_standard_gamma_cpu_dispatch.h,sha256=oDGhf689aXLHSqhFx3s6tlQ7RSu3WmoneVjupHT4vac,1040 +torch/include/ATen/ops/_standard_gamma_cuda_dispatch.h,sha256=mWGYhroqAyXC8pwiBnlfyNjnfHDewfQAa651IHEFH7w,1042 +torch/include/ATen/ops/_standard_gamma_grad.h,sha256=C2PxB5rU9p3ckbRX5euZ-fzhiA0pdW0cBG34R8LJ7e4,1571 +torch/include/ATen/ops/_standard_gamma_grad_compositeexplicitautograd_dispatch.h,sha256=8uydEf72uD9UdImqI0-JBxraOE8gFdCnCKITFMvf_zE,1203 +torch/include/ATen/ops/_standard_gamma_grad_cpu_dispatch.h,sha256=vqE9ir-H-pAeVk8lHrP2rU73W8_jQEgqRBVBpDa9gnc,1015 +torch/include/ATen/ops/_standard_gamma_grad_cuda_dispatch.h,sha256=qz_2wfki-yfGQ8jWCb4WdF3OyF1OvwI3fRMpsAOzipg,1017 +torch/include/ATen/ops/_standard_gamma_grad_native.h,sha256=M19WbHdhSB5G4Z2-gzhszcjAhkYDfWhkn7H9QizKeQI,994 +torch/include/ATen/ops/_standard_gamma_grad_ops.h,sha256=Du9ZuWG4BpLoSmlxroDtEJXQFu2VjEuiZUPI3ezqVLY,2063 +torch/include/ATen/ops/_standard_gamma_native.h,sha256=Y6hwkP3RjNYUh3YDqloQwRBmBMIACBoTos9US49wBDI,1040 +torch/include/ATen/ops/_standard_gamma_ops.h,sha256=HtyoxMF8Pu6N6XmQpuCEGERWu827L_ifOpUdAzYbmJY,2141 +torch/include/ATen/ops/_test_ambiguous_defaults.h,sha256=iiPtWn9ulkBfqYYjQoFRq5nYGChMY1kPRWlTX7UFO3w,1273 +torch/include/ATen/ops/_test_ambiguous_defaults_compositeimplicitautograd_dispatch.h,sha256=L75HozizZ7Iya6kQXRP4oe2tOXhBBEzVGtxWpG_2S-A,1167 +torch/include/ATen/ops/_test_ambiguous_defaults_native.h,sha256=jr9B7bYvx6C3fy6hCVfrusEHGaiJY8ypy-8YmlJbeiE,885 +torch/include/ATen/ops/_test_ambiguous_defaults_ops.h,sha256=cMVW6fX2gumn6g7HKde7zAQ8ItLL2pyf5IadLjPVe80,2026 +torch/include/ATen/ops/_test_autograd_multiple_dispatch.h,sha256=3yh8AVcE3X3A4NJkZWo_vdwBWcfchWejgoywny1Bn4k,1865 +torch/include/ATen/ops/_test_autograd_multiple_dispatch_compositeexplicitautograd_dispatch.h,sha256=gq5orbrQFiF69pNB4VkDTrlQSPLJ6CDzIN1GiqwnVh8,1253 +torch/include/ATen/ops/_test_autograd_multiple_dispatch_compositeimplicitautograd_dispatch.h,sha256=MX2T8vzFVdHkrW-a-WMNrJsQsx_r1qA5Hw3qusRZVKo,1052 +torch/include/ATen/ops/_test_autograd_multiple_dispatch_native.h,sha256=eOQfDPVueJiTNQfR8Qcn9sdD1n4hqCuhE7Ki2ZDathw,981 +torch/include/ATen/ops/_test_autograd_multiple_dispatch_ops.h,sha256=jne9YO_AT_O75rbKU2y3XcHntXssxtD4a_iX5wXAcR8,2662 +torch/include/ATen/ops/_test_autograd_multiple_dispatch_view.h,sha256=Lqdwo5wPaxS7u9bTKJfuj8FynwHH4xTKCc8LAlC1ZWM,1021 +torch/include/ATen/ops/_test_autograd_multiple_dispatch_view_compositeexplicitautograd_dispatch.h,sha256=cVsywZBhxk1JNeSKXmGNulTde20iGUnybrUH0s9wuvY,1049 +torch/include/ATen/ops/_test_autograd_multiple_dispatch_view_copy.h,sha256=qOD7aMjHdtabPyI-x0zWhILvpN57IJhRklFjpHKLRMA,1641 +torch/include/ATen/ops/_test_autograd_multiple_dispatch_view_copy_compositeexplicitautograd_dispatch.h,sha256=7xqOvc8zJt2JCc9eQIHglbttOHjtWTX3ywMnZzjICnE,1193 +torch/include/ATen/ops/_test_autograd_multiple_dispatch_view_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=44Lo7Aj3C5QTkXrrhQFYiy0WsnHdHeHAa-saQqbFU9o,1080 +torch/include/ATen/ops/_test_autograd_multiple_dispatch_view_copy_native.h,sha256=2UH3GOMfrNRo-ITvG_1_NA3nrebhI6clR1AHL2shGBM,880 +torch/include/ATen/ops/_test_autograd_multiple_dispatch_view_copy_ops.h,sha256=wfc2QKwk1HSg-gpLUfOSUAJcsMkpkbhugH8OCJcGFfM,2017 +torch/include/ATen/ops/_test_autograd_multiple_dispatch_view_native.h,sha256=zv9UT9OBO1RQyrthAffhkskiGIeXEtKGyoL4eQMfbS4,761 +torch/include/ATen/ops/_test_autograd_multiple_dispatch_view_ops.h,sha256=T2mbQs-DO5fEn904Ds_5y4Gqu-nhreSAJ9rG6tXyh_g,1310 +torch/include/ATen/ops/_test_check_tensor.h,sha256=RkhX2TkiDgaLZ23G8D5UtXnsmA7I-M6xn6H4_c0WEpU,939 +torch/include/ATen/ops/_test_check_tensor_compositeimplicitautograd_dispatch.h,sha256=yetb_9AbjPBYcafcVg7_KLX_-Oe4OK6RsQktBD_vYKI,1030 +torch/include/ATen/ops/_test_check_tensor_native.h,sha256=Yr56mwGyLjxYV-FYiLhe92eT--XPV4bRw-ymI-SIIdk,742 +torch/include/ATen/ops/_test_check_tensor_ops.h,sha256=zzSMYPS5AMfj57zE9RYHwAb31uGsb6M7VsXWNNk3nhw,1247 +torch/include/ATen/ops/_test_functorch_fallback.h,sha256=hZlXO84x0tHo1VDpvbnrwGzOJdjlxdkSk1yB2adNKo8,1602 +torch/include/ATen/ops/_test_functorch_fallback_compositeexplicitautograd_dispatch.h,sha256=35xKz2Q8FEMcI2OsqYXl6hdotm65t7y8jrjxfM4DXMQ,1209 +torch/include/ATen/ops/_test_functorch_fallback_cpu_dispatch.h,sha256=k5A4RAW4tCQsaDua4yjdqqkMFy3XdLz7G5DXaFF1bMk,1018 +torch/include/ATen/ops/_test_functorch_fallback_native.h,sha256=6JYXhXAJCjITbx1w1IcukfQ6vBVaMDusHr5otHGJ1HA,896 +torch/include/ATen/ops/_test_functorch_fallback_ops.h,sha256=Y_gPiQRrV787GGrwuWrNV8y5Z6-nu-HdNBvFwYx66O0,2081 +torch/include/ATen/ops/_test_optional_filled_intlist.h,sha256=lYrO4oOhnypBvMYCqJnWPdsZ_MfvjFdr7w_r1f5dAtw,1706 +torch/include/ATen/ops/_test_optional_filled_intlist_compositeexplicitautograd_dispatch.h,sha256=MUUnG2zgq8yUXrpEoTNQkso2xEZ-9B7b_5Q8CrTXt0Y,1237 +torch/include/ATen/ops/_test_optional_filled_intlist_cpu_dispatch.h,sha256=lcLe8-9tfyzFmtV_ZacLxjhQ2UXojJwXHN5zWYJbhH4,1032 +torch/include/ATen/ops/_test_optional_filled_intlist_native.h,sha256=VUQVnTJz7lR_WBl4RnYL7Fv9XcVd4KY8bhYDFRImlCY,917 +torch/include/ATen/ops/_test_optional_filled_intlist_ops.h,sha256=wXPxlWCQJcbVWrCYD6qXK12l5oYsl48ZnjscjclBSoE,2167 +torch/include/ATen/ops/_test_optional_floatlist.h,sha256=NXjBKt0Ih4z9s0wNF2V3kGgKHc1BixIeO1Byx7r_sEs,1701 +torch/include/ATen/ops/_test_optional_floatlist_compositeexplicitautograd_dispatch.h,sha256=Mk7xzLP7Zau1TS-9MadiV1KLCK2RO2XunxtXmsJtjxw,1255 +torch/include/ATen/ops/_test_optional_floatlist_cpu_dispatch.h,sha256=2p4O-2D29o6ZuHMiAuXmb2A93uSmJXR3MQHCbPoAwyY,1041 +torch/include/ATen/ops/_test_optional_floatlist_native.h,sha256=lU9leB1FcvJ1v-j10qhOj-2_OpHXO23DOrV3fxmvEY0,942 +torch/include/ATen/ops/_test_optional_floatlist_ops.h,sha256=CTwGUUkBgbbIJ3ovoE3-B-zBBzDkcWG0NJ4bVCR4AUw,2223 +torch/include/ATen/ops/_test_optional_intlist.h,sha256=gsoYLS-wG97IkuYqVsUt5fWPLFrzQtTXt6y1S_BLJig,1633 +torch/include/ATen/ops/_test_optional_intlist_compositeexplicitautograd_dispatch.h,sha256=c_I6ss6CQH0sL-I7ASwqDCvVSFjACOqD0fHh4eQ2kYA,1223 +torch/include/ATen/ops/_test_optional_intlist_cpu_dispatch.h,sha256=O1mM_o7BAe9mwbORP304rlJ2UJB_ssm4VBlJcz4NiuA,1025 +torch/include/ATen/ops/_test_optional_intlist_native.h,sha256=Csx-clXQ8K1etHdDBh2jDn9zTrAlWtQKqDa44cS5Xks,910 +torch/include/ATen/ops/_test_optional_intlist_ops.h,sha256=Zp7jqQikbc1qUyBHBib5TreRymYF8YYkDid_LiPJ9es,2123 +torch/include/ATen/ops/_test_parallel_materialize.h,sha256=8iVOsGVdf7hlUmfgJzVieIiCvonMVl2B6asSror2RLY,1083 +torch/include/ATen/ops/_test_parallel_materialize_compositeexplicitautograd_dispatch.h,sha256=gG0Lzh7Gtz32PWB771DD2VEe-8YgKc8tlm-GiWCiQZ8,1083 +torch/include/ATen/ops/_test_parallel_materialize_native.h,sha256=RlO4B6CrscoSEQhpCho5wtrpQpwMHzcVw8T7B7zeH_U,795 +torch/include/ATen/ops/_test_parallel_materialize_ops.h,sha256=Wwc16ZTWV4Ltk7Ps3PD7f0gjuwCorXFhexScEqkB2Yg,1405 +torch/include/ATen/ops/_test_serialization_subcmul.h,sha256=c94gI8FK_cSpWBUlJNAcPS3_SCm06L1ac3rD43Ja4MY,1073 +torch/include/ATen/ops/_test_serialization_subcmul_compositeimplicitautograd_dispatch.h,sha256=9F9Zx2vOVVizB6CWR37s1FBsriyxLc0xkham2u5N-_M,1093 +torch/include/ATen/ops/_test_serialization_subcmul_native.h,sha256=Fph5WdDjpuPj6Gr8ag6unMEXoNln49Xb9P02LYbA_y8,805 +torch/include/ATen/ops/_test_serialization_subcmul_ops.h,sha256=JcV9JJwbX32tMC-NdQcDEZno-0Wwww_qqxCAtF-uowo,1448 +torch/include/ATen/ops/_test_string_default.h,sha256=MkDq9X7C6LNIqbaAdigNAoYCpGNUrJC3VEozLxfjZEU,1042 +torch/include/ATen/ops/_test_string_default_compositeimplicitautograd_dispatch.h,sha256=95twlmJzcdPqZNp3dBO9zwCJNrX1A3Vany6gkB9LAI4,1089 +torch/include/ATen/ops/_test_string_default_native.h,sha256=YuUCUnOdzdV9Xg0BpzcI_TwuHE0PemIROwDwqltWonA,801 +torch/include/ATen/ops/_test_string_default_ops.h,sha256=xzUdQK1Q5WpI8N2RabosI5krcQOnu_c6Zsut3x13eTc,1412 +torch/include/ATen/ops/_test_warn_in_autograd.h,sha256=Gi-ntGUk4XePMOqdAfNVYU5czjLksh7dIt-4G0pyBwI,1441 +torch/include/ATen/ops/_test_warn_in_autograd_compositeexplicitautograd_dispatch.h,sha256=_Q3jsnVyp3c4sa7YFe8rPaJCis0AUfFuvMKey9In47o,1223 +torch/include/ATen/ops/_test_warn_in_autograd_native.h,sha256=fRS5fd_8Bze8ZmdQoU8IEJW5KaixpzBNDoU2qzfcJ34,840 +torch/include/ATen/ops/_test_warn_in_autograd_ops.h,sha256=BVaQph_lXY3xiDNy94G4Nkme-xVp5SG8NDyEE6v_fVA,1897 +torch/include/ATen/ops/_thnn_differentiable_gru_cell_backward.h,sha256=3rYNygXOxdIInxRTzgx8lxcbvglR5ps9fz43xyew62Y,1454 +torch/include/ATen/ops/_thnn_differentiable_gru_cell_backward_compositeimplicitautograd_dispatch.h,sha256=ayMB6RaUjgaYGXhbNROL_k75g78xr2IgH7JSBFFiMOU,1296 +torch/include/ATen/ops/_thnn_differentiable_gru_cell_backward_native.h,sha256=9bQRwlW-KZPiezKunCyHLaHWGOIYqZWf_VNm--Rlxc8,1008 +torch/include/ATen/ops/_thnn_differentiable_gru_cell_backward_ops.h,sha256=LkUlqgdeziGo26TdMXNhpVg9cbiMtn8LRGV5upwJ3jo,2121 +torch/include/ATen/ops/_thnn_differentiable_lstm_cell_backward.h,sha256=7ORzQuyn76mxppmfJ4z3yJJnb6wcRYq46XlHcTGcVBA,1585 +torch/include/ATen/ops/_thnn_differentiable_lstm_cell_backward_compositeimplicitautograd_dispatch.h,sha256=ZAhJe97_XioS_mr3Hr_GwSe_-QWA7ZJZOq5MuD2fyo4,1382 +torch/include/ATen/ops/_thnn_differentiable_lstm_cell_backward_native.h,sha256=eTaSLHJcoGl-GTkoog70UD51p_Svj9jfWFre0jnEvBs,1094 +torch/include/ATen/ops/_thnn_differentiable_lstm_cell_backward_ops.h,sha256=ulRHgb1PdTcg54seN0gP8t4DGMIjn0ysJKFxLBmDkgQ,2397 +torch/include/ATen/ops/_thnn_fused_gru_cell.h,sha256=TZD6mm3HwOcvsxUdScXu_Y0tLmodM1OMx4jKtRnIjIQ,2540 +torch/include/ATen/ops/_thnn_fused_gru_cell_backward.h,sha256=blgtOG-qOt3OOghh7pwb2RSlz_sMOI_eXh5RwoYYb7s,2501 +torch/include/ATen/ops/_thnn_fused_gru_cell_backward_compositeexplicitautograd_dispatch.h,sha256=CVLGfjVwdhBsSElbfsDe1IGXwJxJRTgT8K5Y8ImQpgI,1549 +torch/include/ATen/ops/_thnn_fused_gru_cell_backward_cuda_dispatch.h,sha256=m3ry3x_6zrZZcbN2QSjXo0skv_ZW-LRkHsC60ObZm14,1105 +torch/include/ATen/ops/_thnn_fused_gru_cell_backward_native.h,sha256=tUbVl5QyCKVvr9srb8mClH9AspZuFZW2NAOoxVvEq_E,1156 +torch/include/ATen/ops/_thnn_fused_gru_cell_backward_ops.h,sha256=VvluDNLP-aMG7nGBsV-Auf9tgwlnm_32aSvftzOjX7c,2990 +torch/include/ATen/ops/_thnn_fused_gru_cell_compositeexplicitautograd_dispatch.h,sha256=QaTe26tIyQkScWIvOQWpRW0gfPEwuZksM9m0A-ht2BE,1569 +torch/include/ATen/ops/_thnn_fused_gru_cell_cuda_dispatch.h,sha256=9PFDuacMncKGt5iniW7ji3MsJM68lcwatlRC7C-Tbj8,1181 +torch/include/ATen/ops/_thnn_fused_gru_cell_native.h,sha256=k_zNAKP-upd44yiioQz5Epf8z9_fLbqImJszy0dp0-w,1239 +torch/include/ATen/ops/_thnn_fused_gru_cell_ops.h,sha256=ZwXU1Hq2yTYjS1dm2txZ7YS8y1_LRw4m4e_ReuciEUo,3185 +torch/include/ATen/ops/_thnn_fused_lstm_cell.h,sha256=LxpRssFRX03DOkSdHv0SZOGI4nopHg5EYlKM97DhgRE,2703 +torch/include/ATen/ops/_thnn_fused_lstm_cell_backward.h,sha256=eRZxbhFrEx0Ct27bS0u-KIzIzeu2kwqvqwiwQQSxlw4,1352 +torch/include/ATen/ops/_thnn_fused_lstm_cell_backward_compositeimplicitautograd_dispatch.h,sha256=2Qm_7BsP8P17VYxji3AmEIamfK5m5N958eOyrQUm9mU,1256 +torch/include/ATen/ops/_thnn_fused_lstm_cell_backward_impl.h,sha256=YZJrnHzKvchwNtxFV9fi9m5V4pZkyKYXEyIRXnQoa2s,2750 +torch/include/ATen/ops/_thnn_fused_lstm_cell_backward_impl_compositeexplicitautograd_dispatch.h,sha256=xS_8bA-RVA0KGTO9Lpu1vjW1U_6lzvoo4GzIlHBl7kc,1649 +torch/include/ATen/ops/_thnn_fused_lstm_cell_backward_impl_cuda_dispatch.h,sha256=eWBlJPHyzh_5_onvqDhMiNj1Bz-c1dABLgIk-2QTxvg,1197 +torch/include/ATen/ops/_thnn_fused_lstm_cell_backward_impl_native.h,sha256=tBAOyw72oi8MjdYIRj3gqx87Iy6XvIgY4FGbzs9VrSw,1298 +torch/include/ATen/ops/_thnn_fused_lstm_cell_backward_impl_ops.h,sha256=lhESqcBvYOsV79aRx-L4OKfcpU48E733VEZ-jz5wQ1A,3404 +torch/include/ATen/ops/_thnn_fused_lstm_cell_backward_native.h,sha256=2S0LBDdGQbJtyEnmkfdMei9yoYZjZtP1eVUJePMTOPY,968 +torch/include/ATen/ops/_thnn_fused_lstm_cell_backward_ops.h,sha256=Oa1K65JHI53azCXF8H5-ftwtoeHDrVtMALEKshT25-U,1999 +torch/include/ATen/ops/_thnn_fused_lstm_cell_compositeexplicitautograd_dispatch.h,sha256=HLDN--t8Pycpt6BoojAvbwYsZvtaoJ3J-ulT_vLh6q0,1635 +torch/include/ATen/ops/_thnn_fused_lstm_cell_cuda_dispatch.h,sha256=Qm_T4EXAMKlq1wwn9B5DFutmMs-i4L0NzqlntnXPGCk,1193 +torch/include/ATen/ops/_thnn_fused_lstm_cell_native.h,sha256=quhv1CVF6ROjcYItTKfh13Iu6YPWthVR4Pylo4S4udw,1284 +torch/include/ATen/ops/_thnn_fused_lstm_cell_ops.h,sha256=W4mz7BrNZlFyxnFI4LdNr7OaB-jKjz1qtR8ahMD7t_I,3352 +torch/include/ATen/ops/_to_copy.h,sha256=tpoNP066ht4v1ErhbFf_qGK0lK5Ad1ipxZr0Q3QGVbw,2693 +torch/include/ATen/ops/_to_copy_compositeexplicitautograd_dispatch.h,sha256=0VzVL9Z4dtt2GLIhhkXobAL60ZpyKD-1-GN_qRV2oGA,1726 +torch/include/ATen/ops/_to_copy_native.h,sha256=x4RJ5pROivBwy4eRFl0c5RQ3PGBuV1RVteadk3oUmas,1435 +torch/include/ATen/ops/_to_copy_ops.h,sha256=G907Zm67PpZzv82bOD9-MLdE-tw-yGjHx2Fa0OB6SKY,2781 +torch/include/ATen/ops/_to_cpu.h,sha256=0Swg1FZ0RY7Kf6ayBwx_cQqjsQJAAGvFR6YY4thXuGE,919 +torch/include/ATen/ops/_to_cpu_compositeimplicitautograd_dispatch.h,sha256=_bCRoXU70kTb2yrOdMj_5WQrq1K_WHf8LztBbzsCtfA,1033 +torch/include/ATen/ops/_to_cpu_native.h,sha256=h1lwJcSbsMEP0MtTWF5AGf2WJUTdjW8JO2V8wu5FUDg,745 +torch/include/ATen/ops/_to_cpu_ops.h,sha256=ozgmX-jT6ggk0lujxiAEe-AzVUg1f4VMgS8y7_Sku7g,1260 +torch/include/ATen/ops/_to_dense.h,sha256=uaEPGLX0IyPdRx7aYFq83qKGWaj64MvdZsr_jpRdnsc,1481 +torch/include/ATen/ops/_to_dense_compositeexplicitautograd_dispatch.h,sha256=_JJBbaQa-a5ercbt_y9DMLvQM-K8FkH6W_4jFluHeHg,1305 +torch/include/ATen/ops/_to_dense_native.h,sha256=srizXVjFy42LtfMK8m2vqOyXZYtOu-rlNAhghTHG5QA,1343 +torch/include/ATen/ops/_to_dense_ops.h,sha256=khbFC-w5ssmlPkXCvsmD6tSZNJenPHTsSgu1UPes5TQ,2323 +torch/include/ATen/ops/_to_sparse.h,sha256=1IAf1F-luOLE5uSH7YaUy1jPIOyd9OSfBEcYj6TNOyU,2179 +torch/include/ATen/ops/_to_sparse_bsc.h,sha256=J6FTBASFvRx4mdOtYH0FF3vuJ80NsAtd-ZkLrCEIARk,1465 +torch/include/ATen/ops/_to_sparse_bsc_compositeexplicitautograd_dispatch.h,sha256=AQNyoGIMeKiRZGkQzmQ7LVPXUFk6X0-3GAb47jcLhao,1278 +torch/include/ATen/ops/_to_sparse_bsc_cpu_dispatch.h,sha256=nROADU_Frn7O_8u1Iu48fmotZeYZVNLm-WXVbY8jYyc,1060 +torch/include/ATen/ops/_to_sparse_bsc_cuda_dispatch.h,sha256=Qn2ZNHW8anH9YgGgWNawz-B7hQrERv5hh6gs8HZVj-8,1062 +torch/include/ATen/ops/_to_sparse_bsc_native.h,sha256=TY4fGH2XwXC0UjBffwntD27_mApnvaYsVihn6XTKKBw,1270 +torch/include/ATen/ops/_to_sparse_bsc_ops.h,sha256=cG5kZny2-Kh9PZWM8zaFIDRODha722Dgy3dR0yM3Ydo,2265 +torch/include/ATen/ops/_to_sparse_bsr.h,sha256=8iYLbWbqd12yNYgr9u-jVO-WXm_6X0yLAwDHNdm8qBo,1465 +torch/include/ATen/ops/_to_sparse_bsr_compositeexplicitautograd_dispatch.h,sha256=90sqsU_SxEzydbt5QaC_V-8hQSSR0KPa-IdyLvVhKjg,1278 +torch/include/ATen/ops/_to_sparse_bsr_cpu_dispatch.h,sha256=6dzkt81WGdIFGyyqj64S7fj4-IcpDk0uoxgkztMdOVw,1060 +torch/include/ATen/ops/_to_sparse_bsr_cuda_dispatch.h,sha256=aKKHNV294ySAQY9Bna5d6udKdAkjnmq9B9I9dy6es2A,1062 +torch/include/ATen/ops/_to_sparse_bsr_native.h,sha256=hQy8QH0uZJqVFr6VJCaKAIeAvLPR2n9P7_yUBQ3FoBs,1270 +torch/include/ATen/ops/_to_sparse_bsr_ops.h,sha256=WuONWRG747jmI6BMOY6-ufe9l04m5L17RaELH1n1tzY,2265 +torch/include/ATen/ops/_to_sparse_compositeexplicitautograd_dispatch.h,sha256=sfJ_wKTZAgsF_lVjYiooHFJUdvHG3q0nlBJGjB_n-wQ,1593 +torch/include/ATen/ops/_to_sparse_cpu_dispatch.h,sha256=cLcYe7nMrOqL_mTXloboizJ9RNs6levVCwhgd5IUWpg,1208 +torch/include/ATen/ops/_to_sparse_csc.h,sha256=Cuopo1zMED5QszPJ-9OZ9uxmVU4EvvNLVpkDKOdk3xU,1353 +torch/include/ATen/ops/_to_sparse_csc_compositeexplicitautograd_dispatch.h,sha256=5dU_F4SqaULfV7jl_AdgMdv1rOTEl6gPkwdsF9BwZdc,1224 +torch/include/ATen/ops/_to_sparse_csc_cpu_dispatch.h,sha256=2PzIQy0Q9EH7dYJe6keoapENxX2D1mEMQi3KWv4fDXM,1033 +torch/include/ATen/ops/_to_sparse_csc_cuda_dispatch.h,sha256=e2uVuonpP3_8CRxlDRijgd1xX3KofGSBBJbUaZpcOXA,1035 +torch/include/ATen/ops/_to_sparse_csc_native.h,sha256=T_2e5QnDuSD2ZOtWQkLo7AjMsjGsplZlfb2j89H7SuI,1162 +torch/include/ATen/ops/_to_sparse_csc_ops.h,sha256=1X4xl2FBIwbOrhk15871vJlqa09_llcfnyOyDdG1eYQ,2087 +torch/include/ATen/ops/_to_sparse_csr.h,sha256=BihHWEBdsjLwa6jCfArqraQF6d0Slu9IqAufcpU9O84,1353 +torch/include/ATen/ops/_to_sparse_csr_compositeexplicitautograd_dispatch.h,sha256=f3QFjUvMYGxxEpc2Z37rA-NsCwJbws2TlhfZ_UMRCdk,1224 +torch/include/ATen/ops/_to_sparse_csr_cpu_dispatch.h,sha256=8QZRGZwGCHjgcvukd2Zi2GlVWDSeMhEde1URTj_lo1I,1033 +torch/include/ATen/ops/_to_sparse_csr_cuda_dispatch.h,sha256=1i8E88LM7yiwPBAi4bxRE-hRm1fyv7XqAeyk-kOwKI0,1035 +torch/include/ATen/ops/_to_sparse_csr_native.h,sha256=od03sYzRJRdZF22Vh9R9s6HTSLdtA_hSeQ-LLR55dbA,1162 +torch/include/ATen/ops/_to_sparse_csr_ops.h,sha256=qHO0iyPyco3ICqifeOe6hakLF_Ek3MqjYN7zTgCiFhg,2087 +torch/include/ATen/ops/_to_sparse_cuda_dispatch.h,sha256=cxiAoklxa_3LEnihP4IG2-1LG2EB35Pq9sKau072sXo,1210 +torch/include/ATen/ops/_to_sparse_native.h,sha256=9nTzl9JW3h_nhq56dwM3ETMIcDsQLRyWeVWHw-2_Ais,1906 +torch/include/ATen/ops/_to_sparse_ops.h,sha256=zRMEiSFRTxDJgF1Fhn9hqBhUv1rCE4tCapCrTQdJfVw,3857 +torch/include/ATen/ops/_to_sparse_semi_structured.h,sha256=wgJmbxJ4oQKHSmT7pvY1j4QUebK8SAKXOHW1nPnqFmo,1009 +torch/include/ATen/ops/_to_sparse_semi_structured_cuda_dispatch.h,sha256=EZrmc-Tq5Oec1TnAyXkxhY2FNqrzLbU9tBsc7e9GImE,1022 +torch/include/ATen/ops/_to_sparse_semi_structured_native.h,sha256=oZItHPByU6fk34Z9nwdiAVSjrb5gYG_KRGK7beK7kMI,776 +torch/include/ATen/ops/_to_sparse_semi_structured_ops.h,sha256=Uxoqo5uvFQqCPts6cMS69VOv-WTIS5wGIb0aAr_uwR4,1359 +torch/include/ATen/ops/_transform_bias_rescale_qkv.h,sha256=6gku0rcEDkC1811k_xCUS3DzOwastelNpTNw5HezcZk,2145 +torch/include/ATen/ops/_transform_bias_rescale_qkv_compositeexplicitautograd_dispatch.h,sha256=hLKILXQ4udHttEAMQgGC3RUqpkuDVbLz14RjqOBa6o0,1415 +torch/include/ATen/ops/_transform_bias_rescale_qkv_cpu_dispatch.h,sha256=ud1g1jadambd9o168X2eksnRRLz8TKYSKjukRrg93cw,1078 +torch/include/ATen/ops/_transform_bias_rescale_qkv_cuda_dispatch.h,sha256=4dCJGHvqgqZi023TzGXtCe8rqmu8pQWyb3ydPbMMj_k,1080 +torch/include/ATen/ops/_transform_bias_rescale_qkv_native.h,sha256=IpsnK4ozG2dIG3cDnOUFKbx7c8biTRAUP29srJ7LiRw,1224 +torch/include/ATen/ops/_transform_bias_rescale_qkv_ops.h,sha256=OYTQsL9dq4ZJVzjDlB7LWHam5oFOR5gqDEIhCklvZtU,2648 +torch/include/ATen/ops/_transformer_encoder_layer_fwd.h,sha256=4kflBQOqZjWzW7qkn7tBHdzEDOubiCmu7DKS37oWXhg,4887 +torch/include/ATen/ops/_transformer_encoder_layer_fwd_compositeexplicitautograd_dispatch.h,sha256=Jp3KMyhoPvItq_BKT7XJ7uzSGIFXXn0YKc89L1kXFyA,2269 +torch/include/ATen/ops/_transformer_encoder_layer_fwd_cpu_dispatch.h,sha256=SK2XOuopetC6pxsn44jftP8esI1uKOPvyfvo7L6ZJfY,1557 +torch/include/ATen/ops/_transformer_encoder_layer_fwd_cuda_dispatch.h,sha256=hKTWBHC2a1SQRPs6abcc1Nj08VQC5yr5GQf2lpK8xRc,1559 +torch/include/ATen/ops/_transformer_encoder_layer_fwd_native.h,sha256=s-q8chcwY-4Dbvr5HDvW-YbXOz5efV01awE3YCi1sdU,1959 +torch/include/ATen/ops/_transformer_encoder_layer_fwd_ops.h,sha256=id1Zw8x670qVh-l-xhdm__VaHiSt6fmpfQBudSLEo64,5491 +torch/include/ATen/ops/_trilinear.h,sha256=srDh0Ggs6TYyhcqmWUirhlIALcokJia28GXtV0CDbdM,2264 +torch/include/ATen/ops/_trilinear_compositeexplicitautograd_dispatch.h,sha256=-fWp8km2cB31JautRCWfBk4ziUZzk33Jyyn9x4wq5a8,1457 +torch/include/ATen/ops/_trilinear_compositeexplicitautogradnonfunctional_dispatch.h,sha256=-eVbZWsDJBrLonyTNiuTLPJyd-cYG2BQ2kh81VbK1RE,1213 +torch/include/ATen/ops/_trilinear_native.h,sha256=hExdKVtIQFbxyhh8WgrWe6knk10FaTPavRW3uJ68Dcs,1144 +torch/include/ATen/ops/_trilinear_ops.h,sha256=wkuix8odQE0_HHk53OGXfa_Orpzc1tFXv3OLLRH1jgQ,2905 +torch/include/ATen/ops/_triton_multi_head_attention.h,sha256=kXIu7XGcUz9MpoW82eZ3IX1Y_RP2o4gXqGu0XehFeJM,2968 +torch/include/ATen/ops/_triton_multi_head_attention_compositeexplicitautograd_dispatch.h,sha256=5WCY6MZVIEno9HAF_UPvHpXCvUb9x3q9oA53LuEYak4,1672 +torch/include/ATen/ops/_triton_multi_head_attention_cuda_dispatch.h,sha256=abR5-NvbQ0DYHmyFShW-O9ur1-g4m7fo3TrF09TNJs8,1253 +torch/include/ATen/ops/_triton_multi_head_attention_native.h,sha256=6bJpLjY1CJ92P22NMwFvWOoRBoT6iDtj-QToKX2steY,1358 +torch/include/ATen/ops/_triton_multi_head_attention_ops.h,sha256=LH_nwn_cYh-nwvRM4l6xS8l_zgS01vwwpGtbaq_x3cU,3589 +torch/include/ATen/ops/_triton_scaled_dot_attention.h,sha256=fWD5zErvCpc4k1wijK8hSwEALPOYZk94jlUJlbFkHoc,1842 +torch/include/ATen/ops/_triton_scaled_dot_attention_compositeexplicitautograd_dispatch.h,sha256=cA-65pJuUIAV5i9ugLzDyYp4dryi2ByMlY4cRQ7VGXg,1287 +torch/include/ATen/ops/_triton_scaled_dot_attention_cuda_dispatch.h,sha256=VIVFOLyBgTKQ_1S1edrFncvLSExGTa9-9QK4jkKelUY,1061 +torch/include/ATen/ops/_triton_scaled_dot_attention_native.h,sha256=CtseK7CfJ3vGzP8rodW6CKcW_1YKrFMGwwNtJKnVoAk,973 +torch/include/ATen/ops/_triton_scaled_dot_attention_ops.h,sha256=LENUJ9C2kXqyQPysqeaAP7LqT_O7fDbCBr4v_R9Sftk,2341 +torch/include/ATen/ops/_unique.h,sha256=rsqLx0mhRbgCX2eYi5x2u4ogvYKmnK0_h0nnFHX0PhA,1829 +torch/include/ATen/ops/_unique2.h,sha256=QwDxpD1oOcskM_fTg3tbuGlkkrZIPvLgo-6UP6XowI0,2187 +torch/include/ATen/ops/_unique2_compositeexplicitautograd_dispatch.h,sha256=ySHQRbtkGisvdRleUXa3F_MI9hX7MhCJgbHuXXJgI_0,1408 +torch/include/ATen/ops/_unique2_cpu_dispatch.h,sha256=hZ-roODay6Lq9rAsKZTs11H4ai7X7OGctTcx06k_r_Q,1083 +torch/include/ATen/ops/_unique2_cuda_dispatch.h,sha256=YivjIGnQa8Nj2Ld1nNYfAVr00yrJCjfPV4yVhxLzmIY,1085 +torch/include/ATen/ops/_unique2_native.h,sha256=WYltVX55P4VrjpPBBXRv9bqnW-AYANdlVM5KxybtjN8,1224 +torch/include/ATen/ops/_unique2_ops.h,sha256=Sb4UohpniqR5WQoyUYSCj3FtMJtmzD7h-FjIipYTDtA,2620 +torch/include/ATen/ops/_unique_compositeexplicitautograd_dispatch.h,sha256=vxE9L9FkrbDtegjsLEdF7CDfNyTNa_8ZBWxggW90US0,1296 +torch/include/ATen/ops/_unique_cpu_dispatch.h,sha256=8YaUqvCqyUP5xGnlUe6Wmao1DIbiXq5SV4LmQBd7y00,1045 +torch/include/ATen/ops/_unique_cuda_dispatch.h,sha256=FP1taNR0AfrBLjgkl-j8NoKGmO4QPlDKpyi21QT9wm8,1047 +torch/include/ATen/ops/_unique_native.h,sha256=79Q54mE5ALgnBI_P6cyfW9hYrLWRKgRk8TDNWeS-1NE,1095 +torch/include/ATen/ops/_unique_ops.h,sha256=GX19M2iokyDKfBigxLPy3mHIwrF4X7sUtH_AOhqQ4uE,2309 +torch/include/ATen/ops/_unpack_dual.h,sha256=brWF2l6JfeVlIMeiYBdEMpu4Dj2f9oMm1zLrklsGVDw,1004 +torch/include/ATen/ops/_unpack_dual_compositeimplicitautograd_dispatch.h,sha256=4kc9r9ThBnwM-H1-_mVIB326iYiQxV6g_4YzjhVQsF4,1064 +torch/include/ATen/ops/_unpack_dual_native.h,sha256=ed7Z3N_dwDUgyufmf69qtur7Ow-_mBUUqBMUqFO9aFc,776 +torch/include/ATen/ops/_unpack_dual_ops.h,sha256=5LTmk3aKWbUGeRPImUbQ6_ZxIfePGU3kZ14kmesYPSY,1385 +torch/include/ATen/ops/_unsafe_index.h,sha256=hmqradtOd00tUFx_L8MQzr4eZLLGTCeblnAECPeiX6U,1017 +torch/include/ATen/ops/_unsafe_index_compositeexplicitautograd_dispatch.h,sha256=8pacFQIDwJ02Td3ocszbl3Zy4D01GjTpEM_gMkZ6SLM,1081 +torch/include/ATen/ops/_unsafe_index_native.h,sha256=Z5b21NnM8Yg6C-QULzb2tE-dEKuBMHZ11BMwF0tCmt4,793 +torch/include/ATen/ops/_unsafe_index_ops.h,sha256=_TBdjzHJw73BVk474H2JhvohhhkpZLxWl65Qtc77Vuc,1431 +torch/include/ATen/ops/_unsafe_index_put.h,sha256=TRH3v7-MlIboiSh-WvlrttMdbFR6TVyZtgwl4kfFGio,1127 +torch/include/ATen/ops/_unsafe_index_put_compositeexplicitautograd_dispatch.h,sha256=PTSv-olEDp985V0lzpffHLUSkCVmBWro9uS8D7IJg8U,1135 +torch/include/ATen/ops/_unsafe_index_put_native.h,sha256=2fECDmIRQAO--I-8QzIqjNy-yvea7vgE_HEDVFpqZOk,847 +torch/include/ATen/ops/_unsafe_index_put_ops.h,sha256=6S5CIlpNtu4DcRIgnw0hNJVZbJ2E3-Tfvke42bMokXY,1575 +torch/include/ATen/ops/_unsafe_masked_index.h,sha256=N8gUW1UuTzmxWboI8wZYHlkbeIACGO-7i-W5aZhH76w,1119 +torch/include/ATen/ops/_unsafe_masked_index_compositeexplicitautograd_dispatch.h,sha256=jMuot6odiiXSaeB20ZHxQeS34Odw3XQZ0VV9lsZ7nlU,1138 +torch/include/ATen/ops/_unsafe_masked_index_native.h,sha256=iWj1FFAc62GwnTFgUdUc-dUndV6UhB3vocdAoSpEEBA,850 +torch/include/ATen/ops/_unsafe_masked_index_ops.h,sha256=zZhROJWH0z5m9fi8DdPrjOj1qB1ZhMFGifP2BDVo7J8,1598 +torch/include/ATen/ops/_unsafe_masked_index_put_accumulate.h,sha256=6-c5FqqWIJarYlkKSdjhoBgxGWDjRVQYOLyh1LidYBU,1185 +torch/include/ATen/ops/_unsafe_masked_index_put_accumulate_compositeexplicitautograd_dispatch.h,sha256=tixFFt6nN3TLQQ-ACd8ac7hseUSCbuBK27X5kZ1WjZ0,1155 +torch/include/ATen/ops/_unsafe_masked_index_put_accumulate_native.h,sha256=4zwlnCAYJ8H97YQoi1FfPr9mbGzdMdkYqp49DIBLKJ4,867 +torch/include/ATen/ops/_unsafe_masked_index_put_accumulate_ops.h,sha256=MjWX6KKvWZGUCIF6k9iznV36TvqOp3n-bfGR6I6--24,1649 +torch/include/ATen/ops/_unsafe_view.h,sha256=iWocRbucWFBOCvCcDyVRFzdpt780gnL0ZE8OMLVToUM,3931 +torch/include/ATen/ops/_unsafe_view_compositeexplicitautograd_dispatch.h,sha256=lvA9HWSfa-DVbSxecuti6sloK6r-_tY8ZUk6LxLr67Y,1587 +torch/include/ATen/ops/_unsafe_view_native.h,sha256=krtBJoLo-CkfQxBi_z_0XcEPtcgPXZ4zUD6xOwGRNnk,875 +torch/include/ATen/ops/_unsafe_view_ops.h,sha256=YIoUMtZGrQVXEgtjbmwUjgl032oEsPCogr3-zyBaSt4,2013 +torch/include/ATen/ops/_upsample_bicubic2d_aa.h,sha256=a505MLcsXUXioGqzgMy7l3APw7YNO_3sHPSo5YKuoxc,8356 +torch/include/ATen/ops/_upsample_bicubic2d_aa_backward.h,sha256=i4pmLCRcgFdIs9ye1EvL_M4yBuOSk4Wyjy9NtzLBV2s,8062 +torch/include/ATen/ops/_upsample_bicubic2d_aa_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=W_9xAAMDhMnpUwjqGAX9kTGebwert8vbZEE9sVCAMfE,1527 +torch/include/ATen/ops/_upsample_bicubic2d_aa_backward_cpu_dispatch.h,sha256=TtDQHCGRM__yxkFoNJh1jBq3JaCQYPi_xNWWbLV5fxk,2597 +torch/include/ATen/ops/_upsample_bicubic2d_aa_backward_cuda_dispatch.h,sha256=UCFFR7P6iSvpMhugfqZJi_NRIqcRPFjPnekrKvP2WDo,2599 +torch/include/ATen/ops/_upsample_bicubic2d_aa_backward_meta.h,sha256=LwU2FU6gP1lN86wNuhWadqMpmT7z3uWVEZHU_3HWeKs,1010 +torch/include/ATen/ops/_upsample_bicubic2d_aa_backward_meta_dispatch.h,sha256=pqUCYptw_A2NGFTe9Vgl0G2XtNqnb5WmkllW1reN7TU,2599 +torch/include/ATen/ops/_upsample_bicubic2d_aa_backward_native.h,sha256=nJg7zl7NRrZfZrMt1hzK1kAX75DRGc3QI-Ojm6FCmyc,1467 +torch/include/ATen/ops/_upsample_bicubic2d_aa_backward_ops.h,sha256=LY0YbBxzz_WUzrRGVEzaruV1RZBmxApBz2uVp83z6pY,3061 +torch/include/ATen/ops/_upsample_bicubic2d_aa_compositeexplicitautogradnonfunctional_dispatch.h,sha256=3S6UhJjgiPhYABBzXEl62OQ3HHeba_mEEsSX2uOcrZM,1435 +torch/include/ATen/ops/_upsample_bicubic2d_aa_compositeimplicitautograd_dispatch.h,sha256=Xup1yTCrYPBYmJxMAeE91mtVJt4e1SeABmrAdrKJ0Z0,1336 +torch/include/ATen/ops/_upsample_bicubic2d_aa_cpu_dispatch.h,sha256=jylbU4Hm4HjVVRwMlZH_qELnUgbrjns52k6l6tmvrgY,2293 +torch/include/ATen/ops/_upsample_bicubic2d_aa_cuda_dispatch.h,sha256=2YO3KWkm4JQ2V0B84HW_7PNAIsP2wWp-XMxZsn4sTOc,2295 +torch/include/ATen/ops/_upsample_bicubic2d_aa_meta.h,sha256=dzJ5dBmumhp4WsR_ofKMaWU3-KGRdB1SoJQvTtfAONY,960 +torch/include/ATen/ops/_upsample_bicubic2d_aa_meta_dispatch.h,sha256=v56I6MFZ0Q_ndz7_kGi-xHEdxKxbdwGY0Mwa6sdd_OQ,2295 +torch/include/ATen/ops/_upsample_bicubic2d_aa_native.h,sha256=cwYKmsxsYHhN_tA5zwi8oyUZLzTajfmWOfke0lABlS4,1507 +torch/include/ATen/ops/_upsample_bicubic2d_aa_ops.h,sha256=yMbSWB2p_4jdtxnSvdnCiP01z5nxhkwJm232VzW8Lag,3637 +torch/include/ATen/ops/_upsample_bilinear2d_aa.h,sha256=YvzGar8UtH6sIUpcloHX_lQb4HsVE2_zFBm_Ko_xbCo,8397 +torch/include/ATen/ops/_upsample_bilinear2d_aa_backward.h,sha256=cZWyZZfbkDSn5PWQ7FbaHWBJ_PJKZIFX7MohHAI844s,8093 +torch/include/ATen/ops/_upsample_bilinear2d_aa_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=rIXZ4EhlE-XK2JHk6OG2z_sLKk71_iKan_I07THrftQ,1529 +torch/include/ATen/ops/_upsample_bilinear2d_aa_backward_cpu_dispatch.h,sha256=Kl2BoO9w2E8WCYbT3UeIZtQDwSK3pOeMI8IuyN0MOCA,2603 +torch/include/ATen/ops/_upsample_bilinear2d_aa_backward_cuda_dispatch.h,sha256=VKS6OSPTdcwuWJy6VkiPFUj38RKUCGfXZ6YScMaoC7M,2605 +torch/include/ATen/ops/_upsample_bilinear2d_aa_backward_meta.h,sha256=Fnw_6m4lpSvYZvGJgvwCCD4IDcR_SDW8uM63n83pjbA,1011 +torch/include/ATen/ops/_upsample_bilinear2d_aa_backward_meta_dispatch.h,sha256=rhk4ZnZncfcz6FSKlbtXAW9CQX0bepl5Cu15xPVnnzc,2605 +torch/include/ATen/ops/_upsample_bilinear2d_aa_backward_native.h,sha256=MXh0vjrR6uzhoA33v4awCddfT-j7N_U3MCJ1iYjGLBY,1472 +torch/include/ATen/ops/_upsample_bilinear2d_aa_backward_ops.h,sha256=qyb7xOIH1D6H_rR_BIbxKPuFyYSkW049vH4JfAfO--A,3067 +torch/include/ATen/ops/_upsample_bilinear2d_aa_compositeexplicitautogradnonfunctional_dispatch.h,sha256=K0Z7mqEwvw-q9bhOIR_pzbtIRy-QNwHhxIPRZElWlvs,1437 +torch/include/ATen/ops/_upsample_bilinear2d_aa_compositeimplicitautograd_dispatch.h,sha256=bKKUnvrWzy8IkleB5q0HzrRLgLaND0Du0ganG-Ew4Qg,1338 +torch/include/ATen/ops/_upsample_bilinear2d_aa_cpu_dispatch.h,sha256=q5nBGrSbHYNHErUc1LpPvC24LVUXpB_yDDh1WWWgjls,2299 +torch/include/ATen/ops/_upsample_bilinear2d_aa_cuda_dispatch.h,sha256=6AkwSQliMB4kXSdDgyevsVU2wENF-M7n37y5vn1W45c,2301 +torch/include/ATen/ops/_upsample_bilinear2d_aa_meta.h,sha256=qWLGU_eX5jO6ohH75JVgF2vLiZ1YoBz3AGuGnTUHI-E,961 +torch/include/ATen/ops/_upsample_bilinear2d_aa_meta_dispatch.h,sha256=bzfgxinFjQy3f8HFlGaFdWQvpNkJe5Jtis2a3folihQ,2301 +torch/include/ATen/ops/_upsample_bilinear2d_aa_native.h,sha256=n9Z_xgi8LzuWD4ssW1ImaOjWN0XTrjs7kXfdSEtC4ns,1513 +torch/include/ATen/ops/_upsample_bilinear2d_aa_ops.h,sha256=0Olc6R8uKhj1PQPfeGTr1mPaEqY73oddDf9r3q0OK2A,3646 +torch/include/ATen/ops/_upsample_lanczos2d_aa.h,sha256=EtdVT90xRaFZP1jhUyVlFT7vusQpg-1Cs-Y8r-e68EE,8356 +torch/include/ATen/ops/_upsample_lanczos2d_aa_backward.h,sha256=vwzVw6R4aCo4OROzlHroocM6PNso6TtsjK96boDgVKA,8062 +torch/include/ATen/ops/_upsample_lanczos2d_aa_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=Blwhobd3QxlLyZzspmNWVUi9IOn6bi6ipw0yWsTED64,1527 +torch/include/ATen/ops/_upsample_lanczos2d_aa_backward_cpu_dispatch.h,sha256=yuyU1PdjzryOh3gbQdZAHGe8na0F8CfytE9vXK3FdkE,2597 +torch/include/ATen/ops/_upsample_lanczos2d_aa_backward_meta.h,sha256=fSDUXMUXoBvE3OWByfeo-wbiPBPmBYVu5kmOu7NIHzc,1010 +torch/include/ATen/ops/_upsample_lanczos2d_aa_backward_meta_dispatch.h,sha256=Ri1W55ihmwmKCQXgGN-m45-UdLnVFeaphcH235zh7Oo,2599 +torch/include/ATen/ops/_upsample_lanczos2d_aa_backward_native.h,sha256=ZKra-SpzkJ8FoDBeuAHirywk5suoESb8ijlDSMYaNc4,1100 +torch/include/ATen/ops/_upsample_lanczos2d_aa_backward_ops.h,sha256=kcltuThUhEodDY6BdPRKSf3gBEprI5wNDMb0b9Jxky0,3061 +torch/include/ATen/ops/_upsample_lanczos2d_aa_compositeexplicitautogradnonfunctional_dispatch.h,sha256=azfrP5YrON77tfmAA5uQkwz1nRDmKqdJyynXRdJeVfg,1435 +torch/include/ATen/ops/_upsample_lanczos2d_aa_compositeimplicitautograd_dispatch.h,sha256=dnv70_Y4TJW0V_f191LxcxN3t13l_EkLGWplmxmfRYQ,1336 +torch/include/ATen/ops/_upsample_lanczos2d_aa_cpu_dispatch.h,sha256=tHbYWrfOukkAdLZzNdsA0U0rtq5-191l9eWdD1AlC_I,2293 +torch/include/ATen/ops/_upsample_lanczos2d_aa_meta.h,sha256=4xssoiPxfJN_r4MHgnq_SEnptKu8kZgPX5e7xbgot5c,960 +torch/include/ATen/ops/_upsample_lanczos2d_aa_meta_dispatch.h,sha256=mjWNq0MYalKLXvJDha_MvQUDtB54U496VpK2zUkk5oU,2295 +torch/include/ATen/ops/_upsample_lanczos2d_aa_native.h,sha256=2xZmc5fNq4WgjdyhoXpgErSsdXfqLI5N2bJSc2UnU1M,1206 +torch/include/ATen/ops/_upsample_lanczos2d_aa_ops.h,sha256=Wj7o5WgPorlNNQcZVTdYiQGrtNFao8laD6MQJqQFsq8,3637 +torch/include/ATen/ops/_upsample_nearest_exact1d.h,sha256=-VzqLi1f5OqNPNXBfRCuAf9XITS7vhPEfdeZ7aLd98E,6919 +torch/include/ATen/ops/_upsample_nearest_exact1d_backward.h,sha256=Zq8vPZFESYz-2YhSXApOYSfaHwdp6DpBGbWLxHMN-BQ,6775 +torch/include/ATen/ops/_upsample_nearest_exact1d_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=JtPQnN0MBhW7jVGVRgfe5z-b1t6UBqf19FFPvGCWkMY,1391 +torch/include/ATen/ops/_upsample_nearest_exact1d_backward_cpu_dispatch.h,sha256=Buxozcm713Vzuo_DLXTmGXnG5OjutSNfQvN6k0-USLI,2219 +torch/include/ATen/ops/_upsample_nearest_exact1d_backward_cuda_dispatch.h,sha256=qR0U3H7WZp4fnRXpPimht7hB_f-OfVvCLLwf7QNXDnU,2221 +torch/include/ATen/ops/_upsample_nearest_exact1d_backward_meta.h,sha256=nHyhPyOPQrpHAT3AAMXyxPI3GCmStmCzyt0-9flq1y0,957 +torch/include/ATen/ops/_upsample_nearest_exact1d_backward_meta_dispatch.h,sha256=sARQXSfllsDLVuTw46DzReAbeAmlobxVZVX0X9LmY30,2221 +torch/include/ATen/ops/_upsample_nearest_exact1d_backward_native.h,sha256=KUxRIl74AANLQcB7b1pdLmsJYMF1apieVw5RMcWadfs,1370 +torch/include/ATen/ops/_upsample_nearest_exact1d_backward_ops.h,sha256=2SpIfpezDzwgkFl1R3B98PIrAxOv2NrIxlEj4Ph3Zmc,2705 +torch/include/ATen/ops/_upsample_nearest_exact1d_compositeexplicitautogradnonfunctional_dispatch.h,sha256=KtdVloCczJfolOClZkGjukZ5YuQkEqJ3LD3NPx757zQ,1299 +torch/include/ATen/ops/_upsample_nearest_exact1d_compositeimplicitautograd_dispatch.h,sha256=hPRQy2ofENs0SetSTeaZl42mhucTQj1KkSVN4MT8_Jo,1302 +torch/include/ATen/ops/_upsample_nearest_exact1d_cpu_dispatch.h,sha256=TtTBUGPwY7AV0cEe7uVJs9QHf0NTEDpbjo8nZ13HKvU,1915 +torch/include/ATen/ops/_upsample_nearest_exact1d_cuda_dispatch.h,sha256=qi43BUOSbTNMhxMbq8F_DrfvdtI8ZH4XLyWNI8k8A8U,1917 +torch/include/ATen/ops/_upsample_nearest_exact1d_meta.h,sha256=7HSjwa0I-NQB936fGElGvp-RIWmus3QHSZP3WoktRIE,907 +torch/include/ATen/ops/_upsample_nearest_exact1d_meta_dispatch.h,sha256=layj9A_7u3EDqLaMhJJ-1cP2VhppbzJc0ckjUSGG-18,1917 +torch/include/ATen/ops/_upsample_nearest_exact1d_native.h,sha256=lazql9Sdgxqv21aKEv-2IHrNEubItERKEIDuTfVzjcQ,1393 +torch/include/ATen/ops/_upsample_nearest_exact1d_ops.h,sha256=GKrlFdXOLwJkKJ9U9-wtV5ZCkkwJYy0pLhzy28IXB9Q,3224 +torch/include/ATen/ops/_upsample_nearest_exact2d.h,sha256=er7MXi7yI46xSpkIflPtVPGrKczXdwgn9oM_ImftD6E,7759 +torch/include/ATen/ops/_upsample_nearest_exact2d_backward.h,sha256=jxZdHt20lbOtnX28tVHGaSs1lGK8tEa5snhilG7tNIo,7615 +torch/include/ATen/ops/_upsample_nearest_exact2d_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=wfxLzb2DI9s3lNrP29rUltdVjqliI4NRxBDJgj-a7Lc,1493 +torch/include/ATen/ops/_upsample_nearest_exact2d_backward_cpu_dispatch.h,sha256=JvQgfoNa1J9_bK7AWSOFWDYKf5l4Hx1Y0uuAN8pGlIM,2495 +torch/include/ATen/ops/_upsample_nearest_exact2d_backward_cuda_dispatch.h,sha256=VPvkSeiBjHlQk3437ZQnVPUX-kjAm9HDYAHVXyrleR4,2497 +torch/include/ATen/ops/_upsample_nearest_exact2d_backward_meta.h,sha256=zDN18dX0bcQ1-NV0zSCao4VWoDwd4PXWFktT-OO9390,993 +torch/include/ATen/ops/_upsample_nearest_exact2d_backward_meta_dispatch.h,sha256=STtiQQ6Zg8fbszcGtR9AnLtQsEri0qsDSwtBG7Uww_Y,2497 +torch/include/ATen/ops/_upsample_nearest_exact2d_backward_native.h,sha256=NAWvamyBca1bbaz6iQSZ2C_Ho5_hxaLI1d7xL8nwdGA,1442 +torch/include/ATen/ops/_upsample_nearest_exact2d_backward_ops.h,sha256=Fj1buERxJHULu7Ljz3qJ56rRHmTiEuNAS2ttF3YftJo,2947 +torch/include/ATen/ops/_upsample_nearest_exact2d_compositeexplicitautogradnonfunctional_dispatch.h,sha256=55uGnP6Vas5Z94bMqZocP4Wddx2nKALWJz8SeB7_Ffg,1401 +torch/include/ATen/ops/_upsample_nearest_exact2d_compositeimplicitautograd_dispatch.h,sha256=_8ZULi7SYU1W3OIgdwoDaZi_qMUegD3Tbmp2XzoB928,1302 +torch/include/ATen/ops/_upsample_nearest_exact2d_cpu_dispatch.h,sha256=NJMT6BPIlENl8qnpiACaEhRyfPy0M8tELzG0U0rlU7M,2191 +torch/include/ATen/ops/_upsample_nearest_exact2d_cuda_dispatch.h,sha256=RZ38hgBJK0z7wOYxBNarekhjhOtw8jejV-BHsNY-BRw,2193 +torch/include/ATen/ops/_upsample_nearest_exact2d_meta.h,sha256=wOy0A87SiFip_E-IU5svRcy1-jJRAiJSNOm0ClCnPX4,943 +torch/include/ATen/ops/_upsample_nearest_exact2d_meta_dispatch.h,sha256=a82hPBXPZkFGzC2AO_lg8pyX63aw7_NtgNYOha90ElY,2193 +torch/include/ATen/ops/_upsample_nearest_exact2d_native.h,sha256=ztbEqaJR1Un3378p5ZrAC6RdrqD80DnBX4mm489hnZw,1679 +torch/include/ATen/ops/_upsample_nearest_exact2d_ops.h,sha256=9_ETL_S3FxEx2z0f_j6YASRF11_S-8RVXrRovn3fr7g,3466 +torch/include/ATen/ops/_upsample_nearest_exact3d.h,sha256=m66uZfhFrU3Q68rrx9i0IruJxF8MTD6XLsGbTNVqaN0,8539 +torch/include/ATen/ops/_upsample_nearest_exact3d_backward.h,sha256=gGAEvwTsKbDJJbfZN1L0N_hRKjRyInUMOtd917ewm0w,8395 +torch/include/ATen/ops/_upsample_nearest_exact3d_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=Dj45oW2SKqkOxcJifeL6KGdICQcfrKEVHyHlrmAvMp8,1591 +torch/include/ATen/ops/_upsample_nearest_exact3d_backward_cpu_dispatch.h,sha256=FeOrO-KUXod0-XZTDYL-FgLvIWcETT_fD6eB5oL0ygc,2759 +torch/include/ATen/ops/_upsample_nearest_exact3d_backward_cuda_dispatch.h,sha256=BxgfmFKa-sW4-NGVGyFWk6OzIkRrvo8pulnJlv_nBDk,2761 +torch/include/ATen/ops/_upsample_nearest_exact3d_backward_meta.h,sha256=tOsyGMLkR7kQ-txLR6A8uLGNv79_FXPTsmgD-uRC0iM,1027 +torch/include/ATen/ops/_upsample_nearest_exact3d_backward_meta_dispatch.h,sha256=WfTcn_mx8KFRPJHqlGvZRRse3Q7rL1-v7D_P36ePOgE,2761 +torch/include/ATen/ops/_upsample_nearest_exact3d_backward_native.h,sha256=7WPaxijaJ-pw_aeSoTvTtUeY1NF8p0edcCjAeOW_CFo,1510 +torch/include/ATen/ops/_upsample_nearest_exact3d_backward_ops.h,sha256=V7irNu74WJGlj0iSCwZXaiQJW6ts0UrAkAn-SBjjIM0,3177 +torch/include/ATen/ops/_upsample_nearest_exact3d_compositeexplicitautogradnonfunctional_dispatch.h,sha256=ukjik3qvwnmcUQuR8P7ppo3b_m9BQVENFbcQmsWE6lY,1499 +torch/include/ATen/ops/_upsample_nearest_exact3d_compositeimplicitautograd_dispatch.h,sha256=Wd79kYkAQsrl4jAvkPAq2itfTImnu2KllGfhCqXVwkU,1302 +torch/include/ATen/ops/_upsample_nearest_exact3d_cpu_dispatch.h,sha256=9d89SQwDQqPlRrDT9qN90GoN2T8o0_j6CSDYt_OxfFs,2455 +torch/include/ATen/ops/_upsample_nearest_exact3d_cuda_dispatch.h,sha256=Mnkl-UneGBFuU3AdDmq4AcP6mz12zKO7eTlPGtyLFoI,2457 +torch/include/ATen/ops/_upsample_nearest_exact3d_meta.h,sha256=qfVa4ROO2O5uOalXdUaT7JzJCQ2_DtykNhTH08761SQ,977 +torch/include/ATen/ops/_upsample_nearest_exact3d_meta_dispatch.h,sha256=H4x4ehY2jkrfO4jy__o7ykqrLVqLFaD0Az3dh9KGtHg,2457 +torch/include/ATen/ops/_upsample_nearest_exact3d_native.h,sha256=M34L2Ck0Hd_otuL9gGPwHUbmde57WSn2dYUWYH80R88,1796 +torch/include/ATen/ops/_upsample_nearest_exact3d_ops.h,sha256=ymyECr6drkzmluGFbjcpR0z5ncBwAkkJBr9rYq1UdWQ,3696 +torch/include/ATen/ops/_use_cudnn_ctc_loss.h,sha256=Q6dtRzf423FRHCbPF8Ys8oHqMOAqFA-sam0N-F3sfbA,1599 +torch/include/ATen/ops/_use_cudnn_ctc_loss_cuda_dispatch.h,sha256=DTkZf4JozwSePZGvbikJ4a8Mv3iv-aQMJW4A5h0DAAk,1272 +torch/include/ATen/ops/_use_cudnn_ctc_loss_native.h,sha256=a_UfLMuo9166t4hvHmvqkejgWnEmui2gK_ysLKpC5FQ,1033 +torch/include/ATen/ops/_use_cudnn_ctc_loss_ops.h,sha256=xAg02IGRYu-Y1u7keUOjEcNWi3gfhJMwvBY1LSqAZos,2509 +torch/include/ATen/ops/_use_cudnn_rnn_flatten_weight.h,sha256=KMjHrpDN8_LM_RniE2Gab1A-vBRa0Pp83X_KH_SKzrU,937 +torch/include/ATen/ops/_use_cudnn_rnn_flatten_weight_compositeimplicitautograd_dispatch.h,sha256=hlgWIOKVPFJ-wFRJ1gDJovQu8nIKlresHJ0jgHMxXhQ,1012 +torch/include/ATen/ops/_use_cudnn_rnn_flatten_weight_native.h,sha256=wxTQ21j3wTM5xQBgfydOXm8C0MLwH5uIALNtKH8W2E4,724 +torch/include/ATen/ops/_use_cudnn_rnn_flatten_weight_ops.h,sha256=xw7TKU8qsfBLCqOXIvNRwtZ-6twudxr48W1dTkO8X4s,1183 +torch/include/ATen/ops/_use_miopen_ctc_loss.h,sha256=ch2oyRNMzvsKwkRvsh93F2uc1sqycsribmR6dnK7d5U,1606 +torch/include/ATen/ops/_use_miopen_ctc_loss_cuda_dispatch.h,sha256=vLFjbLKRx_FfSr6xUQ6y1MRAU2ygHiQbnYxdlO1gFmU,1274 +torch/include/ATen/ops/_use_miopen_ctc_loss_native.h,sha256=12GjqucV_vjKINQ-woJcj_Hvu0tCsVb5XjwQhMnMayI,1035 +torch/include/ATen/ops/_use_miopen_ctc_loss_ops.h,sha256=avNAoNEX9JoZRC-1iIddUv3xnyBacpVTGgn4F9eR08A,2515 +torch/include/ATen/ops/_validate_compressed_sparse_indices.h,sha256=TwKTJlw2cRBvVIIroFatmHZDMfHUMUp9mSAbea6XjbM,1207 +torch/include/ATen/ops/_validate_compressed_sparse_indices_cpu_dispatch.h,sha256=p1WvNhq856wg39g-58tQwA8HHYbAblibVLYAbrLSZp0,1091 +torch/include/ATen/ops/_validate_compressed_sparse_indices_cuda_dispatch.h,sha256=BSNli22tTDuxG3itkZcpGXQsc41kBP1GvoDSyDyAdUg,1093 +torch/include/ATen/ops/_validate_compressed_sparse_indices_native.h,sha256=glqBe3VCHW3vTd2bUCH3MkkQ3sWnFG62F2tsWpZtZmk,1027 +torch/include/ATen/ops/_validate_compressed_sparse_indices_ops.h,sha256=Zf_fMspJD9BqD8LMV_AEuOwJ2-eAQoUR_jhSf2AxH_Q,1587 +torch/include/ATen/ops/_validate_sparse_bsc_tensor_args.h,sha256=ixNPc5dm8_i606gp5fbUIo5W29jBmXSaCwYVTPl6crw,1257 +torch/include/ATen/ops/_validate_sparse_bsc_tensor_args_compositeimplicitautograd_dispatch.h,sha256=lcsWlj5pzZdSoVh9dkh8MH_NIA986axGqPhLq-vpvWw,1179 +torch/include/ATen/ops/_validate_sparse_bsc_tensor_args_native.h,sha256=zWxbahDHV3c5zRGuM7FVHn5gSYmi2uxiwkd0hL0vt7Y,891 +torch/include/ATen/ops/_validate_sparse_bsc_tensor_args_ops.h,sha256=kgwjjPBD9jTiudWr0GONJbkV32YC2_SiiCBPsotmm0I,1680 +torch/include/ATen/ops/_validate_sparse_bsr_tensor_args.h,sha256=rXkSNbt5k2zbytjH_lRPx7TNspy-8IjedrY3ep-HVJM,1257 +torch/include/ATen/ops/_validate_sparse_bsr_tensor_args_compositeimplicitautograd_dispatch.h,sha256=xD8GBwPs5j4_Cs-rVtEjIeWdrehYRMSJlNNLe1nOGbc,1179 +torch/include/ATen/ops/_validate_sparse_bsr_tensor_args_native.h,sha256=_88gen0XPNtZEEWEJcNuUWyLVJLPa4Y1tNbz01p5njo,891 +torch/include/ATen/ops/_validate_sparse_bsr_tensor_args_ops.h,sha256=YVuveutg3GJ6mZZLQ6xMQwD95SIOPAAHMPcCc3I8FnY,1680 +torch/include/ATen/ops/_validate_sparse_compressed_tensor_args.h,sha256=7YGke7COaJqCpj8Qk8S8mK7ka1BaLxe5IQgNIb7HCN0,1351 +torch/include/ATen/ops/_validate_sparse_compressed_tensor_args_compositeimplicitautograd_dispatch.h,sha256=EVH8XCKguYPWBXgX_gaOp5ocDYRs57nAZwJL8bVAsS8,1213 +torch/include/ATen/ops/_validate_sparse_compressed_tensor_args_native.h,sha256=B4pvQ7iPzNOZsEH_N2sP0eygQtFbYcLOcGHrnPnnEaQ,925 +torch/include/ATen/ops/_validate_sparse_compressed_tensor_args_ops.h,sha256=fWlNj3YlEEBZXM3LVJ72Bi2_LAlgqeAO8Flp7tiM5mc,1790 +torch/include/ATen/ops/_validate_sparse_coo_tensor_args.h,sha256=WBRIzoKsgrWjaQTDW6NyTQrAnytE9d45A4jRHZ7iXQI,1267 +torch/include/ATen/ops/_validate_sparse_coo_tensor_args_compositeimplicitautograd_dispatch.h,sha256=3NEmCQCZ683DROT3XMRaI_8sRWgUDHFQEll02M6U7y0,1193 +torch/include/ATen/ops/_validate_sparse_coo_tensor_args_native.h,sha256=q_hWs9fNeUoMFyz4OaTWbjiA5iIOfXdaf4L6BJUwT64,905 +torch/include/ATen/ops/_validate_sparse_coo_tensor_args_ops.h,sha256=oA_FWScGvbW334yN9b83bWmXkRk1ZbtzFwBVNyxf9Bc,1681 +torch/include/ATen/ops/_validate_sparse_csc_tensor_args.h,sha256=WgPHJOtv2MP7vY1fvHRBLXkcvnDLNzw-wMIc1FPr5bs,1257 +torch/include/ATen/ops/_validate_sparse_csc_tensor_args_compositeimplicitautograd_dispatch.h,sha256=VBjHhDxZM4B6DYRiCRIoeMVLWGD1-Eh4pUp1v4jOsE4,1179 +torch/include/ATen/ops/_validate_sparse_csc_tensor_args_native.h,sha256=Srfpvfb_RG1a93X9VAwcHIXW3ooV16eIU1kkwrmjgFU,891 +torch/include/ATen/ops/_validate_sparse_csc_tensor_args_ops.h,sha256=3zxD2w3kY9usfrrNeNbEsRiIV8Ady8I9gkULhYZmzTM,1680 +torch/include/ATen/ops/_validate_sparse_csr_tensor_args.h,sha256=VnlhJ_bOBPeUMxkyT-mVmQSmVAkVJ97EJCmdg3vslTI,1257 +torch/include/ATen/ops/_validate_sparse_csr_tensor_args_compositeimplicitautograd_dispatch.h,sha256=6RoNg5U44a6AYbBq7QTfNC927ES9AII-SN5nwYv_TVk,1179 +torch/include/ATen/ops/_validate_sparse_csr_tensor_args_native.h,sha256=6kRnFWMOs3eJ0yJDIk5nlV_deUIKo9F-0lkQwjZWlyU,891 +torch/include/ATen/ops/_validate_sparse_csr_tensor_args_ops.h,sha256=-whUikyf2-mb0uyqAiEEkNSj1cmmVqGhjUpjzdCXDjQ,1680 +torch/include/ATen/ops/_values.h,sha256=Dg_QWAMq-LLw-BhgaT0IJp42KzKqfOD81eeqesFgXus,758 +torch/include/ATen/ops/_values_copy.h,sha256=wbSEhync8x7_GE35tOco5AgT9W9FCgdjIiPZyZNDBuw,1341 +torch/include/ATen/ops/_values_copy_compositeexplicitautograd_dispatch.h,sha256=XN9fghPHAE3SITptDJ7XTbo676rHuPAO7my_yvFjs2A,1133 +torch/include/ATen/ops/_values_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=_xVpqjkTVrMuk1MbbVj1mPbtO2B5If_1Ez6OFje2ZG0,1050 +torch/include/ATen/ops/_values_copy_native.h,sha256=_8AdpssN8ZEmmVoSg3yrVehBMp39YNT539UPryAXlOg,820 +torch/include/ATen/ops/_values_copy_ops.h,sha256=C4A9ULsTUU2kTyMCF42pIvHszsVU0_Wwt2QdV_JBSjA,1837 +torch/include/ATen/ops/_values_native.h,sha256=dKcw-lt74N_w3u5aLwIgacV_LBzklGQY-GZpHJCQmX4,738 +torch/include/ATen/ops/_values_ops.h,sha256=NMvnlMuOvESmPZgDq_csK17NdxQzvlaIns4BJr9NsY4,1220 +torch/include/ATen/ops/_version.h,sha256=LNcq-X-EzC_6_HcNV7LvEz0t8Egc7os0P1J6ZUkwsGA,759 +torch/include/ATen/ops/_version_compositeimplicitautograd_dispatch.h,sha256=3YwoJcapKyeRV4v4Z7QFIig-jjWT6OsPREw2Zi5pQCc,1017 +torch/include/ATen/ops/_version_native.h,sha256=AX6eWzsaxd6erMgw9UbE6SrzjuvUGXMmxYu8A8dbRzU,729 +torch/include/ATen/ops/_version_ops.h,sha256=tQVkbnf_X2Z3_CxZcTOEw1b-tk-avcZDSYt5FyCDfw4,1205 +torch/include/ATen/ops/_weight_int4pack_mm.h,sha256=d_A5j_NLmHnTjOdrms94oL8u0ZmL7jCu_YnsOjC-TA8,1109 +torch/include/ATen/ops/_weight_int4pack_mm_cuda_dispatch.h,sha256=rq1R-KrOuyzeYOgNK785Up7aocrOoD2XN3bJtzgki2c,1069 +torch/include/ATen/ops/_weight_int4pack_mm_for_cpu.h,sha256=mpPE3zMiTIFstbHvw5CSTf3LcEQrycU4CiyoDeDqhrM,1141 +torch/include/ATen/ops/_weight_int4pack_mm_for_cpu_cpu_dispatch.h,sha256=bPXPjUFsE-0wQjKNlVj7bCDbV6rCSqM2QhKo3H5BVvA,1075 +torch/include/ATen/ops/_weight_int4pack_mm_for_cpu_native.h,sha256=DspzQu0zLyAFgMSlI25j86NPkvHlbw6pnQkZ5u8FdiU,827 +torch/include/ATen/ops/_weight_int4pack_mm_for_cpu_ops.h,sha256=zk_5TdC4rAjBtS6w8pAJBcX8Py_6gppYg1dbVtHZjIc,1535 +torch/include/ATen/ops/_weight_int4pack_mm_native.h,sha256=zzeyLnTm-SVLwjo76XijeXR6p0Kos6tLtudEKLt2ZrA,828 +torch/include/ATen/ops/_weight_int4pack_mm_ops.h,sha256=9gMEf6DWByJoj2Ig2k8bYDgeXeX9MabhviaTykwwGHY,1511 +torch/include/ATen/ops/_weight_int4pack_mm_with_scales_and_zeros.h,sha256=J6Zbv4lrP2njY1W7JrVFAkw9Lc8ihp720tjgkUc7wC8,1223 +torch/include/ATen/ops/_weight_int4pack_mm_with_scales_and_zeros_native.h,sha256=0SAoE4aPf5nZIVqujS9jFASmof4GFAJst2Lcyq_eobA,676 +torch/include/ATen/ops/_weight_int4pack_mm_with_scales_and_zeros_ops.h,sha256=ZM2T5f15r7-ZOq090mOZBErf2FvBmym0qEv9w0h-Y_U,1642 +torch/include/ATen/ops/_weight_int8pack_mm.h,sha256=ANwF-STyZXSbLgt0vmXCBGkjb7aIUHtryjP7JK7Adjg,1037 +torch/include/ATen/ops/_weight_int8pack_mm_cpu_dispatch.h,sha256=faxXveYKBUFxP8qpcOPRaIneL_gWFgDa1z9rae5FAyk,1039 +torch/include/ATen/ops/_weight_int8pack_mm_cuda_dispatch.h,sha256=LeE0AoQYkbCt1JNp5Xf3FupaDETMQ7l8Ka_9LArA-BI,1041 +torch/include/ATen/ops/_weight_int8pack_mm_native.h,sha256=Mb0vQ-eedFjP67QVoXtXHhTm3ZFj0bSlqOfgNxNLuG8,923 +torch/include/ATen/ops/_weight_int8pack_mm_ops.h,sha256=txoGYIYKRfBf2DNsW2hdJqx6JqcMlzNjh35kat3hf2o,1422 +torch/include/ATen/ops/_weight_norm.h,sha256=53Igt22qD3j3vJeRsVrCpxiIZlFbperaR7czMYPssMs,972 +torch/include/ATen/ops/_weight_norm_compositeimplicitautograd_dispatch.h,sha256=EVdypz618yzvtYHohBCqJE2OlxVPuGSRyrJ-nsTrS6g,1058 +torch/include/ATen/ops/_weight_norm_differentiable_backward.h,sha256=a9yqCBnDttIWMYdaIBPWnwpywN3s6mUbWvGOT2NEryk,1250 +torch/include/ATen/ops/_weight_norm_differentiable_backward_compositeimplicitautograd_dispatch.h,sha256=BiIwoIpFNwoeHMOJPEzkLR1ri5MCg9eNI7jAq1jfzX4,1176 +torch/include/ATen/ops/_weight_norm_differentiable_backward_native.h,sha256=mueSgaJg2vLKmTHMv9FSZFIwH34pOh5YgyGxEQFmEQo,888 +torch/include/ATen/ops/_weight_norm_differentiable_backward_ops.h,sha256=qqGc2wqeuT1u3ftQBdze5Ko07UmJt9JKqULbYF9Hs5o,1724 +torch/include/ATen/ops/_weight_norm_interface.h,sha256=Q-7cHN7MqPwEtti8gWDpYBpHu9g-HiWqUyBmnhHtFhk,1817 +torch/include/ATen/ops/_weight_norm_interface_backward.h,sha256=3w5avTEfb0RWLOa2qstBuIMvi3X3P1zEb501hKaEJr8,2350 +torch/include/ATen/ops/_weight_norm_interface_backward_compositeexplicitautograd_dispatch.h,sha256=d5D5t0o1-dt4GhMzM-jx0gxnck6nbNJjWRpeSSs3Uzg,1471 +torch/include/ATen/ops/_weight_norm_interface_backward_cpu_dispatch.h,sha256=-l5pfXMZyBR-Yi-ipEv5cXkoeMclTRj-x3WGdy2KQuM,1127 +torch/include/ATen/ops/_weight_norm_interface_backward_cuda_dispatch.h,sha256=C3pxxD-DNIeMfMhLAYpG7J4xnSutPHkvM6ec-vUx924,1129 +torch/include/ATen/ops/_weight_norm_interface_backward_native.h,sha256=jaHptF8p7gC9RuuIfOYVoEro6iX-5iJnQYYP8YpWdWo,1330 +torch/include/ATen/ops/_weight_norm_interface_backward_ops.h,sha256=YXsymQ-zpFhpT9xk1hpM2xjumvYoe--TtT7PkmRKbok,2879 +torch/include/ATen/ops/_weight_norm_interface_compositeexplicitautograd_dispatch.h,sha256=x-gifq-hW3-GI-MZUJswEn19VEKcgzVaaK2rOLSUTzg,1313 +torch/include/ATen/ops/_weight_norm_interface_cpu_dispatch.h,sha256=_4qkNcvXOOjgV8kPfndwpkQZsDa_B9UsJpmy8cDB1o4,1049 +torch/include/ATen/ops/_weight_norm_interface_cuda_dispatch.h,sha256=hGm-oFnLcqherEvgsxkp-pjs_PAy-UTri8M07oVALeo,1051 +torch/include/ATen/ops/_weight_norm_interface_native.h,sha256=jWUabmzr8wmyFCdwYst9umGl6KtmQ0oOK_Z3jEagzTo,1094 +torch/include/ATen/ops/_weight_norm_interface_ops.h,sha256=alXGbBsVF2vnMqwIJrPX8D6xrojG3ALVrpdW4haOjuo,2371 +torch/include/ATen/ops/_weight_norm_native.h,sha256=6BGgUKA-xq2m-mMd6ExG4STPlCTk7TpSwOSEWwAxT18,770 +torch/include/ATen/ops/_weight_norm_ops.h,sha256=db1Y0FTDHTNULHav8b3IWpUhQoyYQTJtB4UaDqwIKhg,1340 +torch/include/ATen/ops/_wrapped_linear_prepack.h,sha256=JjNAgMROK2W7Qkr_IGUZQWmaBP-KLXBzaiONj7_ycxs,1160 +torch/include/ATen/ops/_wrapped_linear_prepack_compositeimplicitautograd_dispatch.h,sha256=rpHde5mnq6ksUC6ZRTEyT5uDPDDBpMSjT7_lv2dC_Us,1133 +torch/include/ATen/ops/_wrapped_linear_prepack_native.h,sha256=Ch7JDo7iqRnV0pX-Bzmq1pyLwXUKJ6lmQ1F5mp7h56o,845 +torch/include/ATen/ops/_wrapped_linear_prepack_ops.h,sha256=eBuyNNMhjQwZbFRtYmHmCkGpRDWh2sYe1LWp-UCPFzo,1580 +torch/include/ATen/ops/_wrapped_quantized_linear_prepacked.h,sha256=53a_dA5maOraTx47ZtLHBs-St7Ur3bZokrUSSTLrh3Q,1428 +torch/include/ATen/ops/_wrapped_quantized_linear_prepacked_compositeimplicitautograd_dispatch.h,sha256=gCB1ZGWw48KsWTdoBhjz6DSQKbsyQejH5p4aHuYsuu8,1243 +torch/include/ATen/ops/_wrapped_quantized_linear_prepacked_native.h,sha256=inuj7a2dL8DF3pmNozXomSTy3UQE97mXAFMWidu-se4,955 +torch/include/ATen/ops/_wrapped_quantized_linear_prepacked_ops.h,sha256=NEwrsYRTuJ_41uiIf4u1eor20BKTEp_c1_OZs9I4q6U,1931 +torch/include/ATen/ops/abs.h,sha256=VXFWROeF1b0aR89jjuqNJyWSNyzJnUb5JZAlsqS8oxU,1384 +torch/include/ATen/ops/abs_compositeexplicitautograd_dispatch.h,sha256=u6L9CwtSRZRzdS0_c790fSGbDXtENGMgGsE_rlYnQb4,1063 +torch/include/ATen/ops/abs_cpu_dispatch.h,sha256=RmBoDt2pf_ZcrjtiDibUtue7LckDTWp98829UkSK3ns,1071 +torch/include/ATen/ops/abs_cuda_dispatch.h,sha256=slcECZpytQQvdRamusQOZzoBvjZ56olHX8gqorrQON4,1073 +torch/include/ATen/ops/abs_native.h,sha256=S94QPOwCbKpx8-4VSnKs8OOfitkXbV6mulYerIYthOk,1377 +torch/include/ATen/ops/abs_ops.h,sha256=dpwWlKCtkJjwVFLldthcEVScXEOeZHLyIQtjqpZtJkY,2273 +torch/include/ATen/ops/absolute.h,sha256=q2xeb2HznUk2cnzOUXLXMhALhiEJ8CrDZR3er0pLvxs,1301 +torch/include/ATen/ops/absolute_compositeimplicitautograd_dispatch.h,sha256=gavmbjy7CJUy6Tv0EoL0734v59nz6zQTP76qTc2LudQ,1234 +torch/include/ATen/ops/absolute_native.h,sha256=4BnamnLyV9FNQnkwMfKYCmScXFpaPb4PKBx7zUGVAkE,865 +torch/include/ATen/ops/absolute_ops.h,sha256=tr6kE0CsXtkedRNoX_aGbeFrRSVSNZQjLZIu3pEiGqY,2318 +torch/include/ATen/ops/acos.h,sha256=SKpJhnPpujmVHi1iJ8KgEI5f9SoHiogDcq06Dn_NQYo,1397 +torch/include/ATen/ops/acos_compositeexplicitautogradnonfunctional_dispatch.h,sha256=M-Fc06_5nf9VQr_jpO3OXp-xwLypFGBrSoCLogCDrTs,1091 +torch/include/ATen/ops/acos_cpu_dispatch.h,sha256=JCidOgttCzsb0OsfTZyxeRpPy4wsUZ4crLs8ya4hQ84,1174 +torch/include/ATen/ops/acos_cuda_dispatch.h,sha256=Z7NDPlrOc_7fN0G2W0k0pmsWoHz5hDhqMiSZWS5DsLc,1176 +torch/include/ATen/ops/acos_meta.h,sha256=Fxbx8TWXXStWsWioRtg8As5GSOuLHtrc7WBAka3NPB8,819 +torch/include/ATen/ops/acos_meta_dispatch.h,sha256=A9w0xY-3Fx7VKf4ZoOkiaaUQuQ72f1W7S9v0jRftezI,1176 +torch/include/ATen/ops/acos_native.h,sha256=7VpMi1YjhJ_Terwk7Ozi6rGD15Bpp1kR2R7OUPik8I8,844 +torch/include/ATen/ops/acos_ops.h,sha256=P64P2WrWDRjw_e3qz1PyU7g3B_PUBAjn0kQdADkLf-o,2282 +torch/include/ATen/ops/acosh.h,sha256=EX0TixTnxegkFnOGVG4Mjr5FJBkVpDHeGBuJai9KIXw,1410 +torch/include/ATen/ops/acosh_compositeexplicitautogradnonfunctional_dispatch.h,sha256=zRKBMgPIxXPdf9oeMtxk05VxLI-QohO6Z67VRqk-UMY,1093 +torch/include/ATen/ops/acosh_cpu_dispatch.h,sha256=BSsz3pCVkbC6NQ3PgGYFoYX_2umRiNqAI4M9n1yYStQ,1178 +torch/include/ATen/ops/acosh_cuda_dispatch.h,sha256=HhiwzW9WovfcXxFCFD9wrTiP-0dXlxCigU4I2RJVPlo,1180 +torch/include/ATen/ops/acosh_meta.h,sha256=MnBmRufU_rF0A3deLJM88POAlsF4z_JhKMuDBiYVnek,820 +torch/include/ATen/ops/acosh_meta_dispatch.h,sha256=y1V6AsJD6J6BedlPJWSlkiL2Oin6szguVi95nfrLZAw,1180 +torch/include/ATen/ops/acosh_native.h,sha256=hEINhUyNBvZhIviefJ6HMI2TcxEsd4sRQmu2vLeRLKY,847 +torch/include/ATen/ops/acosh_ops.h,sha256=KcQtwP5odYPQ4jrNejm01e9EiYXmR5UN7upRvqB0zK4,2291 +torch/include/ATen/ops/adaptive_avg_pool1d.h,sha256=cvsqAqTtZ40owD4ztXLtC6ABdzkHkDTNvb53QTSUJNs,1597 +torch/include/ATen/ops/adaptive_avg_pool1d_compositeexplicitautograd_dispatch.h,sha256=wdimpWVjiyPUmC_x7svgZwIJGpCJurjbBOZn5dTyXIM,1205 +torch/include/ATen/ops/adaptive_avg_pool1d_compositeimplicitautograd_dispatch.h,sha256=TMUh3JrcxOCWurevgh_SOltOCLlDATQznB0i3qee6E8,1060 +torch/include/ATen/ops/adaptive_avg_pool1d_native.h,sha256=bVW8pIThIaO_ztDhjqKlt1KWiwljT5g9rp-JxKlzO0M,892 +torch/include/ATen/ops/adaptive_avg_pool1d_ops.h,sha256=TabCm5eD_1CLwISDZW6ZfS2uCvqrQmw1UcmV04Sxqj4,2069 +torch/include/ATen/ops/adaptive_avg_pool2d.h,sha256=vYkvJHL1O-psigyoX4Ir6lJcPGnmsZN6Pr-vmz2OUKs,4364 +torch/include/ATen/ops/adaptive_avg_pool2d_compositeimplicitautograd_dispatch.h,sha256=_iB9nsHDQLelULrwxKstVF3Ymt4ODy2BbnxGdG8VE9A,1167 +torch/include/ATen/ops/adaptive_avg_pool2d_cpu_dispatch.h,sha256=riHjvmY7FcYlICc2G8qKU-sDQxvDk1eZemC9uu0C-Qw,1424 +torch/include/ATen/ops/adaptive_avg_pool2d_cuda_dispatch.h,sha256=FySDy4KR6dR0LWAYqVxj2irJCXdcp-zQiXYl1nNo_ZU,1426 +torch/include/ATen/ops/adaptive_avg_pool2d_native.h,sha256=dmjqNiS0zu2YJZ8R_td-SNgxsezNOL-7ctKmvuCmO_I,1164 +torch/include/ATen/ops/adaptive_avg_pool2d_ops.h,sha256=hONaDBIPqUT0goP3QsLrcJJGydx-xDGuc22NNUQ6SCE,2099 +torch/include/ATen/ops/adaptive_avg_pool3d.h,sha256=vQGmOt4e0xO65j1tdX2KGcOnNh10fg1QgKCqu3LOcR0,4364 +torch/include/ATen/ops/adaptive_avg_pool3d_backward.h,sha256=kGBO5I4IU6XB-W4vxWIRKwlavAZaPH6Nrag7BmdAvqY,1500 +torch/include/ATen/ops/adaptive_avg_pool3d_backward_cpu_dispatch.h,sha256=crqhUCUQ0tf9lsX27HkFtxNMBsKaqCvq_EpzXmqGv-k,1199 +torch/include/ATen/ops/adaptive_avg_pool3d_backward_cuda_dispatch.h,sha256=2NRZ9pY3aRj0-c7PizQweWOJ1eLvR0RH4o23XpEZBGQ,1201 +torch/include/ATen/ops/adaptive_avg_pool3d_backward_native.h,sha256=lPeOAGo5WFgDzkcfTEcuWqUEGviiJdQFKVeE1NEo9hs,963 +torch/include/ATen/ops/adaptive_avg_pool3d_backward_ops.h,sha256=7o-jdsz-2aZOk6k4G-tYJ_BRALs3B71SkLpdiacSvTs,1513 +torch/include/ATen/ops/adaptive_avg_pool3d_compositeimplicitautograd_dispatch.h,sha256=29Uyj16XTh4IwPFrPq2NSBRg8IG9cszYK9yeV67ocjU,1167 +torch/include/ATen/ops/adaptive_avg_pool3d_cpu_dispatch.h,sha256=tECjefOtr6qP2_4V8HlafzZVB4lS6V34BOjp4V9u9N0,1424 +torch/include/ATen/ops/adaptive_avg_pool3d_cuda_dispatch.h,sha256=uaEyHDUA4sYOflg37tVYk9AcJ9KvWLd3chP_oBJfO1A,1426 +torch/include/ATen/ops/adaptive_avg_pool3d_native.h,sha256=4-iFS6x1dsVC9lUN6z7es7Vo0GbBlYSHRAMpbvMN2R4,1166 +torch/include/ATen/ops/adaptive_avg_pool3d_ops.h,sha256=XdGoF4Ed5SCSzDhol6XP1uwdl8KUZZUx4jA6ggXDcqA,2099 +torch/include/ATen/ops/adaptive_max_pool1d.h,sha256=-0nUlAjaMhmDW-8jJpDB6cf9p6vyrhjx58xawtfU43U,1040 +torch/include/ATen/ops/adaptive_max_pool1d_compositeimplicitautograd_dispatch.h,sha256=PIEUSJlaiP2HPbXk1qSqzv8j577spTaGT8Pz7WbWG0Q,1085 +torch/include/ATen/ops/adaptive_max_pool1d_native.h,sha256=v_03nADvw8uSvoQCSX-gw4ltLXjtJZA1uk0yMGyR9mE,797 +torch/include/ATen/ops/adaptive_max_pool1d_ops.h,sha256=FIsp8cU6UcWzRINYPbIFJvfWejjb-9oaPRFrlvW7M0c,1430 +torch/include/ATen/ops/adaptive_max_pool2d.h,sha256=DiqjLsIJP2Sm1WmHm5OGkLz0IecNxWJSMHCTQiIh0y8,1816 +torch/include/ATen/ops/adaptive_max_pool2d_backward.h,sha256=PiQpByD_7uKpDggvX--9GtypF0eHpNOmEC-BEcnnV5o,1925 +torch/include/ATen/ops/adaptive_max_pool2d_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=02oRBkplBUc9eEdS5j-h0juQzUNdS_J01mddjEs818g,1126 +torch/include/ATen/ops/adaptive_max_pool2d_backward_cpu_dispatch.h,sha256=tqLtKqYZlr-6p6WjqW46Dt_arVQl_U6zPGwE1zSvZ0g,1391 +torch/include/ATen/ops/adaptive_max_pool2d_backward_cuda_dispatch.h,sha256=3moJIuUczYODEL_Qcps0EB28xisuG0nwPAI5miNEQc4,1393 +torch/include/ATen/ops/adaptive_max_pool2d_backward_meta.h,sha256=3DADcZ9jFtPW7FQ_gcHg1baAi8wdMy7ZwqAwZ3mzEkw,903 +torch/include/ATen/ops/adaptive_max_pool2d_backward_meta_dispatch.h,sha256=tEVGBbPrA0EAWhvd3ffFfsngrmNkCHMBBRwrHzDRrdM,1393 +torch/include/ATen/ops/adaptive_max_pool2d_backward_native.h,sha256=LUJYEPD6xlYduE-N7s0qBWsy1KR00S5dpTKcwPpYcu0,1244 +torch/include/ATen/ops/adaptive_max_pool2d_backward_ops.h,sha256=mSmZWYiPjdV_GdOkfpzMTezz2pLHzPizO3DlxIHCVdI,2367 +torch/include/ATen/ops/adaptive_max_pool2d_compositeexplicitautogradnonfunctional_dispatch.h,sha256=k-1oMt7cse1IXiRnJ9KLPJBlRPigDdjplHljnU4kYqU,1111 +torch/include/ATen/ops/adaptive_max_pool2d_cpu_dispatch.h,sha256=DXINe5KXCxRT-x7fDSshhcNxdrkgjzr4il3-L9Mwdyg,1380 +torch/include/ATen/ops/adaptive_max_pool2d_cuda_dispatch.h,sha256=yBpiXu_emEYAnhpdn9yNO-3Hdme2iJIOIfwtfT8VZdQ,1382 +torch/include/ATen/ops/adaptive_max_pool2d_meta.h,sha256=9JRYrYuvXxUtNN4tFkBDE8zsKV7Nl6KTqdZDEj7K6SM,863 +torch/include/ATen/ops/adaptive_max_pool2d_meta_dispatch.h,sha256=yhk7E9WvMoedpFCOZ4xM0oUDLDsUIHIQn3wv4yucfdo,1382 +torch/include/ATen/ops/adaptive_max_pool2d_native.h,sha256=k5cP57Q1tt01OqRHiAxFt0EaC_JKImrSDeLHo-mtCdQ,1179 +torch/include/ATen/ops/adaptive_max_pool2d_ops.h,sha256=LbM5aT7NC94rDKKsMuRi7NXGs_7aDT2okScHfZfXY6o,2327 +torch/include/ATen/ops/adaptive_max_pool3d.h,sha256=Hoeb545SJ6Uc8yaV11NvBaNUBX377iyuJwlfhFv_7TY,1816 +torch/include/ATen/ops/adaptive_max_pool3d_backward.h,sha256=3h2u6Az-qQ26JJ-2OINMhyWx0vglIIK-pjtJxGx850E,1925 +torch/include/ATen/ops/adaptive_max_pool3d_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=kk3oXJyrZ7JmF3G8Y5BxJ7bffPijQNzyMFfsCjeBelY,1126 +torch/include/ATen/ops/adaptive_max_pool3d_backward_cpu_dispatch.h,sha256=UFXGqbwSgFOxRQVX2vFQLNx6ea_DvBEgbYqQ9T1nSus,1391 +torch/include/ATen/ops/adaptive_max_pool3d_backward_cuda_dispatch.h,sha256=ulInN7kRNb-B-HPP2ksr8_cro7zMj_fa-r0tzC3kaxk,1393 +torch/include/ATen/ops/adaptive_max_pool3d_backward_meta.h,sha256=7gBriWeTokAlpa21zWII6FMSD9dHOQIA9TY2B5XI180,903 +torch/include/ATen/ops/adaptive_max_pool3d_backward_meta_dispatch.h,sha256=cTBBNkqu42TwIcacV2Y0BlDg1cVgxSUX-UCCsgt7mK0,1393 +torch/include/ATen/ops/adaptive_max_pool3d_backward_native.h,sha256=irD9zifg2Fdlte7xCUDj-BmhHsejs4EljVeHdaafxWU,1244 +torch/include/ATen/ops/adaptive_max_pool3d_backward_ops.h,sha256=euHKvHjqqo0rLIznV7Em3VyzpBQyKkuSZJh7VYR1MmA,2367 +torch/include/ATen/ops/adaptive_max_pool3d_compositeexplicitautogradnonfunctional_dispatch.h,sha256=k8Qg5NkGA1UWpJOjTcUznOLF8BocpL6OIC1kJEXQqEw,1111 +torch/include/ATen/ops/adaptive_max_pool3d_cpu_dispatch.h,sha256=u71JjIEhqWKqMuMJcS3FLtqL9vrIaAs75BLRbJ2TGd4,1380 +torch/include/ATen/ops/adaptive_max_pool3d_cuda_dispatch.h,sha256=_5eSr9wwtG341WSKVqGf6l4PkTmXUXe8v9ZAYg-T9FE,1382 +torch/include/ATen/ops/adaptive_max_pool3d_meta.h,sha256=q46EVVKttpu6Qyof7xlg3Py6vn7Tp5QOh11oZozy-0A,863 +torch/include/ATen/ops/adaptive_max_pool3d_meta_dispatch.h,sha256=MGRsJ_ions_nZXwhfjkcd6xeMqwVPMa41eLko-rfwYs,1382 +torch/include/ATen/ops/adaptive_max_pool3d_native.h,sha256=ML41yts1pIlfeq7LjmrDj4YIQtZzD6Uv_srUMiuZ3bI,1179 +torch/include/ATen/ops/adaptive_max_pool3d_ops.h,sha256=tGRlbBitSgWSrWl4J--_O3yb-Hv1BFCY6IaGCCsKf2o,2327 +torch/include/ATen/ops/add.h,sha256=m6lrA7B-rSG51Io7oG5_ewnfC1aBLFkCgFU1_4dFE3w,2392 +torch/include/ATen/ops/add_compositeexplicitautograd_dispatch.h,sha256=D03vfZ9tGlCEE4nkGdALemm9hU9Au0nppYI0OAhbIbs,1428 +torch/include/ATen/ops/add_compositeexplicitautogradnonfunctional_dispatch.h,sha256=-75RV2Oijnk1s42Hlx-A3JXJCvw2MW3F294vw9cqo2g,1197 +torch/include/ATen/ops/add_cpu_dispatch.h,sha256=Q9exi82uR6zlensj46mqIWfbZCslgKKm3u52lwys0p8,1384 +torch/include/ATen/ops/add_cuda_dispatch.h,sha256=CghG0_M5za1UyzcdMz0xzQCxfS-eNs2R5i8GRNZnnok,1386 +torch/include/ATen/ops/add_meta.h,sha256=6ezeJtIKFAdP-GOBpTAzxHUGGMbSZyDziwlfUtlkWd0,877 +torch/include/ATen/ops/add_meta_dispatch.h,sha256=XsCV2u0nuzkf-emhWiMxI-FgQf-oenCWcYG4U9sm8GM,1386 +torch/include/ATen/ops/add_native.h,sha256=-3Gfdb9dKvIeQSJhiuoJqZE-Otuxgj6UODoim2rXU0Y,3192 +torch/include/ATen/ops/add_ops.h,sha256=uhVYiPvpY3UOEiy7L5RcWXDTg6iDIdaQ7VDj5p098Ow,4986 +torch/include/ATen/ops/addbmm.h,sha256=YpB0pzkc5Kf1QsFE3WgTzxs0Dw1jwrhAjpFEQC_q1Vo,1877 +torch/include/ATen/ops/addbmm_cpu_dispatch.h,sha256=ii329H4Wgj75g1Mls-ibCF2RYJoK026mPulo4PQsRZo,1614 +torch/include/ATen/ops/addbmm_cuda_dispatch.h,sha256=B3jfKpPKNkEp0Sqy6v82AFcRmM7ZJ70Ko1WC1ClzGPM,1616 +torch/include/ATen/ops/addbmm_meta_dispatch.h,sha256=pgTGN84OfzusKgeTOEPUWUNn1GNd_cie5aYwTZ1U0RU,1082 +torch/include/ATen/ops/addbmm_native.h,sha256=vf3QakRHDJ-bLAi_aTQi8vLear21WvoOMuir5mdRp30,1182 +torch/include/ATen/ops/addbmm_ops.h,sha256=GoyU1hlrfdLEPZNWZ_zuBek8g_OpzGcFEL9aRg9mPTs,3359 +torch/include/ATen/ops/addcdiv.h,sha256=t1U1iGjBm28GpDL8V9A24UtbXEEjl_BGFDNsb8Py4yA,1763 +torch/include/ATen/ops/addcdiv_compositeexplicitautogradnonfunctional_dispatch.h,sha256=0kYJpDH1sM06As6VjjhAJnMHX9SNfDV7ktYkNuIoEPY,1265 +torch/include/ATen/ops/addcdiv_cpu_dispatch.h,sha256=ckKtNft32z9OhHOwC8CbMgcQXz2JVyS7V3cvEaVqgLM,1520 +torch/include/ATen/ops/addcdiv_cuda_dispatch.h,sha256=U_BZgItyHrVbYYqaVaeepNMfRYGadNQ5bsTnuEttLeo,1522 +torch/include/ATen/ops/addcdiv_meta.h,sha256=M1U0yXPKvh6GmvmVZdR66gr3JlZudAnAUPJy3i7v-aQ,904 +torch/include/ATen/ops/addcdiv_meta_dispatch.h,sha256=xob8iHLMv6Byfcd-1QiECDW_QVXf-H4JWX_c4-VRgsQ,1522 +torch/include/ATen/ops/addcdiv_native.h,sha256=ciBlAlh3nJgu9kk-hJCu8tUjO5pu1ttKXtitnBo62Uk,935 +torch/include/ATen/ops/addcdiv_ops.h,sha256=3lU7IxvAddBY5j4U07glO6C1eisnnrHFkR7m3_p0BFU,3131 +torch/include/ATen/ops/addcmul.h,sha256=d6yA0MFFrCTnUQAE2cNdgLiI-tVKSm2uWfT0jssBzk4,1763 +torch/include/ATen/ops/addcmul_compositeexplicitautogradnonfunctional_dispatch.h,sha256=nPohaadyYLB8gTbpFwHWOsldaKht-G4NDuksGQW0qOc,1265 +torch/include/ATen/ops/addcmul_cpu_dispatch.h,sha256=9lbRsf9NnypuUx2ANm4AOdlhWYutQZczs_JckYPK2x4,1520 +torch/include/ATen/ops/addcmul_cuda_dispatch.h,sha256=yoHtIwKQ2X_W0NR5vIkzDDIyJQBiAUgtRoW1_z11_h0,1522 +torch/include/ATen/ops/addcmul_meta.h,sha256=4dkSP08fKvzhfnbDkfHUiD_ALxoeWCkIhDb6SDMKM18,904 +torch/include/ATen/ops/addcmul_meta_dispatch.h,sha256=DxXVOvhZtAvjnSOckDnltKHW-6li068UyqlvsXDgA4E,1522 +torch/include/ATen/ops/addcmul_native.h,sha256=B0l0RAVuKH25aZCMwMs4U5lgdwKvGsNeUbl8-ictIR0,935 +torch/include/ATen/ops/addcmul_ops.h,sha256=_SHuJnwpd2P8EBoYAVGUw1O1H8_WKQiclKOUp_osUFA,3131 +torch/include/ATen/ops/addmm.h,sha256=-o4XEvaGbcMOUVC3fYmNtzRbpuenK_BozOSu3PxuW1U,3120 +torch/include/ATen/ops/addmm_compositeexplicitautogradnonfunctional_dispatch.h,sha256=pTq70OPuEuU2y-2EKy9itDkiamtnIcJXpldE-cSq7Cg,1303 +torch/include/ATen/ops/addmm_cpu_dispatch.h,sha256=XcQ2YnhQ30RBEWx1aBAh41Lb_3SV9j9uhiyayjpXZsk,1594 +torch/include/ATen/ops/addmm_cuda_dispatch.h,sha256=Hwi-qjy0MF__LENK4XIzryX-LY4vmJAWoNtG3A1dX6U,2193 +torch/include/ATen/ops/addmm_meta.h,sha256=yROoxshtWW22uqJlz3fvkp6jg3BBMl8J0OJs68DyrV8,921 +torch/include/ATen/ops/addmm_meta_dispatch.h,sha256=-ZMxQ-JE76mSB7gDQYhIu5Du3m0H0fqAy0jolBsLTj4,1596 +torch/include/ATen/ops/addmm_native.h,sha256=vs-YcOXmXcStBbkisyf_efeJpB1M2xlcsRjA-re5z-0,3283 +torch/include/ATen/ops/addmm_ops.h,sha256=qdE3qyCMnWHrwvO8NzKjjO8pw5erGAvLL26ekb-oZjU,5294 +torch/include/ATen/ops/addmv.h,sha256=3nzVDqeH7GXa-NnDQkx_vHNOs2b4WuYsdjBqmVJQ7Eg,2136 +torch/include/ATen/ops/addmv_compositeexplicitautogradnonfunctional_dispatch.h,sha256=T3ypXKUu0OQprtEXQcG35Bw-iAzOeR29MX3m6g4Yeis,1299 +torch/include/ATen/ops/addmv_cpu_dispatch.h,sha256=VZ35EDvsSpxLG1k6Y8mFtPYc7ISEVPKriZQ7vUwBIC8,1586 +torch/include/ATen/ops/addmv_cuda_dispatch.h,sha256=pqfco4hy60f_7EfoHTJUfPeRG6iVjCkXFc4Evpklxlc,1588 +torch/include/ATen/ops/addmv_meta.h,sha256=cYVBtR_dkXbUJi3dZHqEO8VVBv2j27bOpujSmhcR8bc,919 +torch/include/ATen/ops/addmv_meta_dispatch.h,sha256=uZMhLPU3Vy8NPsDA0n6hwQxKIkp4npvjjA1h9D_pxgk,1588 +torch/include/ATen/ops/addmv_native.h,sha256=okfZBptq9X2rQEZKhgoXF3mcoWUq0qwQ3ERStbCa3Ag,1586 +torch/include/ATen/ops/addmv_ops.h,sha256=an0RD3s7ZFVaeySL_Ec0l-ihYH2yYYe6XtjH1rz3pSc,3296 +torch/include/ATen/ops/addr.h,sha256=dEn7LHRNJGIVldThT92l4K2TAxKn6vVBkS1_3qN6KL8,1821 +torch/include/ATen/ops/addr_compositeexplicitautograd_dispatch.h,sha256=P0K5QJPwOkuCZAUsKQXCUXEWStMRUu0AoDQYVKjalUg,1634 +torch/include/ATen/ops/addr_cpu_dispatch.h,sha256=7HaSSdqfzjDzt_T3xHvNPTSbnBRjl6GKl-_YBrOV3Io,1436 +torch/include/ATen/ops/addr_cuda_dispatch.h,sha256=PFOzyufX3Vavp9-R49R1d_Z99qP_0lBQOm4z8cd2Yek,1438 +torch/include/ATen/ops/addr_native.h,sha256=YqPn6BzOANF1u-djnS2VITqI_oAtUUhMqbN3idzP31I,1508 +torch/include/ATen/ops/addr_ops.h,sha256=QjiEGQos_q_JBj9ZnX70RfcwqqFen_BaCnKPUDL0gaM,3305 +torch/include/ATen/ops/adjoint.h,sha256=F4s5cN51xoXVAZySno7UItx-OTulfrZJIghCx_mZ97Y,901 +torch/include/ATen/ops/adjoint_compositeimplicitautograd_dispatch.h,sha256=vOv3srLAcfcrhWeXgTJ6fXg-kxIPqf7ZgbWejFdS034,1019 +torch/include/ATen/ops/adjoint_native.h,sha256=iTV4PJEUIZ8tECa8n9uownsHvZv_ncuFC8Kbp4j-smc,731 +torch/include/ATen/ops/adjoint_ops.h,sha256=iECvks7drZWCFkU7gMQUkXgZYeimSaCn_rST02Hkh9o,1220 +torch/include/ATen/ops/affine_grid_generator.h,sha256=8rQXkwWs772jDr86bPgLP5KFHabnJ17K10PEsomFOMA,4780 +torch/include/ATen/ops/affine_grid_generator_backward.h,sha256=MQV2eisa_JgMsrrEiwjB-L30h1ae0hYFUajcScZsnDw,2071 +torch/include/ATen/ops/affine_grid_generator_backward_compositeimplicitautograd_dispatch.h,sha256=4aS922-zBlehaRkf2-6AWrXOUz-0Vp9RHOgoF8bMfCE,1215 +torch/include/ATen/ops/affine_grid_generator_backward_native.h,sha256=C1VkRkqkdbms7sTqtq-7P-e1YhxPJZdHDgNITz6nzZg,796 +torch/include/ATen/ops/affine_grid_generator_backward_ops.h,sha256=3yvW_Zy50JcrWZggc7FuuVZUvTPU5Kekv0DRj5Qbk7c,1437 +torch/include/ATen/ops/affine_grid_generator_compositeexplicitautograd_dispatch.h,sha256=TpVik6hkMQWZKeLI5K8gvFXdBUfI9b4rZNUmKB95iUg,1767 +torch/include/ATen/ops/affine_grid_generator_native.h,sha256=gE5EaMMPudhWonJpB3E56HWW9tGqsWixqfwqs98G0aw,935 +torch/include/ATen/ops/affine_grid_generator_ops.h,sha256=WoGEgeJqPsnjgBfU6maVP-JF0ZfECVVkbPVGtphQ8kY,2205 +torch/include/ATen/ops/alias.h,sha256=C3LMBrHP_HTyd1AOfdjTV-1scg7ofP821Id2Kg3Jeyw,893 +torch/include/ATen/ops/alias_compositeexplicitautograd_dispatch.h,sha256=nGzzFW756BOmAxwNfYDAyVWU8x5o-E10KRFVQeqscGc,1017 +torch/include/ATen/ops/alias_copy.h,sha256=5vy0sl19ExUPPGiUBOEPK00khwpGrWFpVZdAh3O1AS0,1321 +torch/include/ATen/ops/alias_copy_compositeexplicitautograd_dispatch.h,sha256=cri_CZ9jyxStuFPaEOx0uRvIfg941j_QZrwWG_UNrA8,1129 +torch/include/ATen/ops/alias_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=9psWzdjcAxS9J7YS7Ovo3XwRqG9_r1QDIm4ZHwHMcbM,1048 +torch/include/ATen/ops/alias_copy_native.h,sha256=OdmggpAqopsw1afrHW4T1duNA3yrlKS0k8WVGmTJZFc,816 +torch/include/ATen/ops/alias_copy_ops.h,sha256=njs9obBY3RTj2MBiVLuEp_lVGCVaryS0Y-P7LpuY2aI,1825 +torch/include/ATen/ops/alias_native.h,sha256=e1VY3X5nTr-DwVXWC5FBOB0bDBWXPb5EEycaN37n9MA,789 +torch/include/ATen/ops/alias_ops.h,sha256=NYc_8dfK1oLYtC7uzl1HTSoFsJFIdd1EjXDFmhAjjEY,1214 +torch/include/ATen/ops/align_as.h,sha256=ujMiBDHo7VkIPyI8BTsxJQv-mF6WSHE8vzdUPvE6MRA,759 +torch/include/ATen/ops/align_as_compositeimplicitautograd_dispatch.h,sha256=b0Rrzlo1h8_RmUFCWArMX6OY0aOa7LdKRn2UjCJB-Vs,1046 +torch/include/ATen/ops/align_as_native.h,sha256=CdxT_2m488GjcGE7Pw3OxNGKVnuLmF_aH2E2HtTlmFs,758 +torch/include/ATen/ops/align_as_ops.h,sha256=YGBFsxFJxH6RQVtEmgwW4mu4roRl5HZXVdGlSz5gwaY,1303 +torch/include/ATen/ops/align_tensors.h,sha256=88_U4CVD5klXL14gov16_gufkvKZ5jwK-yvuL_j3Iv0,943 +torch/include/ATen/ops/align_tensors_compositeimplicitautograd_dispatch.h,sha256=6Sh7qf2gZsgjUmhwtye50w8M36tuClWiBC3gHNANBHg,1039 +torch/include/ATen/ops/align_tensors_native.h,sha256=BGzfMifCGiaNaBhtnu24C7PKxoBR_F-ZewIW_7InUaE,751 +torch/include/ATen/ops/align_tensors_ops.h,sha256=YJt6RE5TsyUh4OtYr1J5nCdAv_wZcHvWr26s_hVgGh8,1278 +torch/include/ATen/ops/align_to.h,sha256=kQ_ykm1cX048R4vl3hE12USWqvOyPG6LYM3KuAvVuSc,759 +torch/include/ATen/ops/align_to_compositeimplicitautograd_dispatch.h,sha256=ZK99o-bZ4zXlrxhYyXS0Y5FV2dhkugdCLzyJgeAYev0,1144 +torch/include/ATen/ops/align_to_native.h,sha256=NDLpM31kErwhRhXS_vL3FRgDVedpKGVDI-_Ql3f7bPM,856 +torch/include/ATen/ops/align_to_ops.h,sha256=Fxzd4I0jK5Cc89C8rJOUa-hzA2E_VtLkoI_rZqrXZgY,2004 +torch/include/ATen/ops/all.h,sha256=m-OA6Lk9lJxyq4NuVhBf_hY_hUq7jKoWGJJj-_KjhOc,3609 +torch/include/ATen/ops/all_compositeexplicitautograd_dispatch.h,sha256=mmbBiM2Zn5e1VPEby000TDr3kAHlXskmwYoIGij1P6I,1307 +torch/include/ATen/ops/all_compositeexplicitautogradnonfunctional_dispatch.h,sha256=5nlH9Qbc_MKWl2lGEcNmR6tP2b95ePZ31QKWDc7-8e8,1225 +torch/include/ATen/ops/all_compositeimplicitautograd_dispatch.h,sha256=hal_NnwWNXoVR2_s58r_-0c2OST6-Do9GluNodd-13I,1271 +torch/include/ATen/ops/all_cpu_dispatch.h,sha256=K2NbhOus9oXaAOUqXuvuiqp6jcHm3HR0h9iAnfLsMyA,1760 +torch/include/ATen/ops/all_cuda_dispatch.h,sha256=_XYF8bg24XGb1XozeaZ98VitehNLIK4oMQ436Ww5Xbo,1762 +torch/include/ATen/ops/all_meta.h,sha256=tfRrW8h6Too1ySoip6viegLP981E_miX23dHTx0ve28,1111 +torch/include/ATen/ops/all_meta_dispatch.h,sha256=JNgmdwnAbTf4tFuJjJfrZKm3jszdsrw1lCVSFS0yZec,1762 +torch/include/ATen/ops/all_native.h,sha256=d-_Gde2BxCqp-F6v-MRnQc8pxYAcEkJMLymO-fJ0png,1749 +torch/include/ATen/ops/all_ops.h,sha256=jAkvm6soh5cS-3jMXXm9xum6nZ9wi6WeQybxNgo8G2A,5830 +torch/include/ATen/ops/allclose.h,sha256=HnudG9IsIjn4-Rr0MO_hA4JfKw34snPxpvCy8Dlwt2o,1079 +torch/include/ATen/ops/allclose_compositeexplicitautograd_dispatch.h,sha256=9A3NW8DQFDHQRRwxI3Kg0IyQ1zhOY_iZRfC8JXr7Pgg,1100 +torch/include/ATen/ops/allclose_native.h,sha256=0TQiTzJCl0Di97b54c73YhPcwfT-TfQRid9JkNys3XQ,812 +torch/include/ATen/ops/allclose_ops.h,sha256=n68rqZCqEUG8tA7P36BpP1F0lgbzQsCrYwL6puKJjCg,1447 +torch/include/ATen/ops/alpha_dropout.h,sha256=N4BN3lvZSnWZOmMbGF7_PyQmPqCDxvvbh8vSs-Nz1ew,1191 +torch/include/ATen/ops/alpha_dropout_compositeimplicitautograd_dispatch.h,sha256=5xAG7bhcYGrOWWpNDCxflqmKO3sryvhiQ6Jp_n1T7sc,1128 +torch/include/ATen/ops/alpha_dropout_native.h,sha256=PosbfR95kB-Bn1ikwRDnjRlJjpQjLW6tkPGe9ki-l6M,840 +torch/include/ATen/ops/alpha_dropout_ops.h,sha256=9gk_Nx2RTfTLjXqUYxCabKLdILs16hSkWi2Yp_a9WYs,1913 +torch/include/ATen/ops/amax.h,sha256=WqDBBZstAAC-a32OWFFx_6YrOhs40w6VpK6BIq0CxQU,1531 +torch/include/ATen/ops/amax_compositeexplicitautogradnonfunctional_dispatch.h,sha256=epYea8UhHq6-xL290YLgWWk_pyUgz87Aym0c5HFPhz4,1086 +torch/include/ATen/ops/amax_cpu_dispatch.h,sha256=BTQMNI7KiMPfEpISmuPHGy3qG3XxGiuXhQRECRWWPsA,1248 +torch/include/ATen/ops/amax_cuda_dispatch.h,sha256=D7_kizvYrmC1qyyEU6fv0vRXhnmoyy_5bLH1lfDyLvQ,1250 +torch/include/ATen/ops/amax_meta.h,sha256=-kS1mONJ60VjoruggHXlOmvRGT--FOtrVgfVBi0nlqo,854 +torch/include/ATen/ops/amax_meta_dispatch.h,sha256=ahiWzmV4oILNaQJPgZMQ-E7mB1DS46l--naNxGGszHE,1250 +torch/include/ATen/ops/amax_native.h,sha256=pfyy_S3FTHq1pR5jhsf15c6Gk_jJlShnrUI-XwjTNgI,879 +torch/include/ATen/ops/amax_ops.h,sha256=WbUAGnxlfXCl-NZf9DVwy43WTPRBTkvPriOcKUTnSVQ,2045 +torch/include/ATen/ops/amin.h,sha256=ci0xVbQeMyy0giupqRD1R5MyIjTBUl4IZ8g5SCQqhF0,1531 +torch/include/ATen/ops/amin_compositeexplicitautogradnonfunctional_dispatch.h,sha256=WqXwuPaYDZMkJCM9W96AspBK8PpOrbj895feSVO0XvI,1086 +torch/include/ATen/ops/amin_cpu_dispatch.h,sha256=rVHPbkrq9bFHRHkFjZ0zQDQCHTnzAwuzYdTpFk3ukQ8,1248 +torch/include/ATen/ops/amin_cuda_dispatch.h,sha256=baxW91d_C_P56g7YqexLeyJHapim4YvyVz1qFhb-7oQ,1250 +torch/include/ATen/ops/amin_meta.h,sha256=ZHKQgvQLDtk1CkfpQWYp13MfWTyJtTFfuslxboLJej4,854 +torch/include/ATen/ops/amin_meta_dispatch.h,sha256=5Rd9iLZN05jRS1YT8lwAMZ_cj1foGHkfkwe30AAo0vE,1250 +torch/include/ATen/ops/amin_native.h,sha256=pwtGuBWvIgDPKHZUVMZPAMQZrAFmHS0nTKwr0P-xdG4,879 +torch/include/ATen/ops/amin_ops.h,sha256=rMxfVThw5U8NONM7hfX93GsBJBfyqN84QrB9OE_gPeQ,2045 +torch/include/ATen/ops/aminmax.h,sha256=bQGvNkG0savYjSdImC9eitYWHeLzMMD4OjbrqmRIh-g,1834 +torch/include/ATen/ops/aminmax_compositeexplicitautogradnonfunctional_dispatch.h,sha256=KAR7lCRKROBN5L9yD2T7b-o2OYr_zuunTQrf6MLBJ70,1135 +torch/include/ATen/ops/aminmax_cpu_dispatch.h,sha256=SpKfPBzl44ZC0BAC6RoR8NnHZJ7JR8cfjVjKRZRfZhA,1423 +torch/include/ATen/ops/aminmax_cuda_dispatch.h,sha256=oVDKenyb6eoDfj2-8_b7a-qowJqbcmYFIRjDaYZC6SY,1425 +torch/include/ATen/ops/aminmax_meta.h,sha256=G6d7rD8shu4SYoLNhwV4DG_5i2nNTsHyy4Kbt2UwEeU,866 +torch/include/ATen/ops/aminmax_meta_dispatch.h,sha256=BgMJAQt7Yi686_dG5Zs3KkbXr0UdnEZzIKOiKNc9zy0,1425 +torch/include/ATen/ops/aminmax_native.h,sha256=7IJhFuuP_DjdQyoJ2wHeJ2XG-eIBclTK4O3YjnBj1dg,921 +torch/include/ATen/ops/aminmax_ops.h,sha256=QISYeuZishhhlckBsmrtmYOLszmsrzd5KOXEVtO6o_o,2382 +torch/include/ATen/ops/and.h,sha256=AfdCY8DiDqbF-enw8ZCxtrQC4IVPH8R_Gv3JXBLz8_Y,1151 +torch/include/ATen/ops/and_compositeimplicitautograd_dispatch.h,sha256=5g_sYbFMv32u9xp5FWoc3sT7_-m0L1Z-s6UUL7HnroQ,1282 +torch/include/ATen/ops/and_native.h,sha256=-sX5_rHtYxeNREVIGa7Fl1wXYOKsYyW-CA0LOwnXMmE,994 +torch/include/ATen/ops/and_ops.h,sha256=J3Cr8oBu3R_BNrpnGPESqx55LJOJhOzYdXaXJ8ghzsU,3145 +torch/include/ATen/ops/angle.h,sha256=90wdYFa_q_k42MD_g8ctgyOf6BcfgLC5wyJjxDLYxtI,1271 +torch/include/ATen/ops/angle_cpu_dispatch.h,sha256=bnibbXmwA48hSTJfpselkDimsEj5UlRjL5YrvfBIyJw,1128 +torch/include/ATen/ops/angle_cuda_dispatch.h,sha256=KIM5oQrYRaEzbQ8PHwlQ23xDs2ZDbeliL69SchyjStw,1130 +torch/include/ATen/ops/angle_native.h,sha256=Xuzdky7qeAuYU1TS-aB1L8hvShvV0xw5zL-CBIRQgQg,958 +torch/include/ATen/ops/angle_ops.h,sha256=g80gxwCtt2_jc2y3R9PSMto3QHQVzHEX_0RIxm8XcVU,1795 +torch/include/ATen/ops/any.h,sha256=O2OM8fdyEedhvg4FwUt5bvwi5QsHznX-mU3EAgtb5-s,3609 +torch/include/ATen/ops/any_compositeexplicitautograd_dispatch.h,sha256=SJslF-IN092tN2SYcxQep8zmJWChwoexIAXRRkHEyng,1307 +torch/include/ATen/ops/any_compositeexplicitautogradnonfunctional_dispatch.h,sha256=XcZKZhHKk1oE_QmoqC5gvnQGNCXmKGzD7eXYN_pWAmE,1225 +torch/include/ATen/ops/any_compositeimplicitautograd_dispatch.h,sha256=9lbOK5LwRhI7dn-hJ-kloXNgW5XW5wdkST0sE2ujQWc,1271 +torch/include/ATen/ops/any_cpu_dispatch.h,sha256=sWT1UNvum9ZQW_QyhyNYxvSCT9JwGZDcR_velMkv8PQ,1760 +torch/include/ATen/ops/any_cuda_dispatch.h,sha256=RWeH9RF17J_I79QNlH9Pi50w-Rdz0Zhij_c8H4ZtOQQ,1762 +torch/include/ATen/ops/any_meta.h,sha256=wlYXdI-imjoS6AUmQ--hgq1uA9ZcKdzH5zKgkddHMuM,1111 +torch/include/ATen/ops/any_meta_dispatch.h,sha256=jQSiHAePU_687iSWqz9WotdfwUzwmVBfMhbm6NazRng,1762 +torch/include/ATen/ops/any_native.h,sha256=uR5vqKxAz6fp6AVVZEmWN0QExeUoTwWfwCDfhqSfGoA,1710 +torch/include/ATen/ops/any_ops.h,sha256=0EiCLcqDPkeGyRKb7WReZrvAMdtRMPTXYvBbeA4UV90,5830 +torch/include/ATen/ops/arange.h,sha256=ZC56YE4iOmBl6n-ac5x6eGYfeDWHAi9jTlEJ8N1QcqM,4425 +torch/include/ATen/ops/arange_compositeexplicitautograd_dispatch.h,sha256=BXxVE0ecp-tENMd-6TJ2liaRx90s-INb8clb_Pkmk7o,2116 +torch/include/ATen/ops/arange_cpu_dispatch.h,sha256=yftx4XApoiS2TGAtjlfhmlrpomD3pLK1hDD9_9bjTD8,1177 +torch/include/ATen/ops/arange_cuda_dispatch.h,sha256=O2d8hakjkuO08SEZrMmkiw_vHXSLjvbOIvP9G7X9J4s,1179 +torch/include/ATen/ops/arange_meta_dispatch.h,sha256=_WYLjKaJDqjXrA4MIWZ1VFIWRm791JGWY-X011MXXis,1179 +torch/include/ATen/ops/arange_native.h,sha256=AQB_g8uGZ36kn1cPsL3qyf-g7LzO_dlUhOLaJvCr5QY,1723 +torch/include/ATen/ops/arange_ops.h,sha256=mOYjd_YPPA904rmA3RyJjgPriDhogeFFezEo5lwjuqw,5359 +torch/include/ATen/ops/arccos.h,sha256=5Uk3Ps5cTYJOoI1uRfF4vGlfQf-7bexPSi4N-wanxos,1423 +torch/include/ATen/ops/arccos_compositeimplicitautograd_dispatch.h,sha256=20FTmdmQdnBpiD61wcZCla33mPnWhRHtsPBPX1XgoyM,1226 +torch/include/ATen/ops/arccos_native.h,sha256=yErsbOBMKzEgOZKqmt1u_XVGeYpUzYV6JI3xS8zDI6k,859 +torch/include/ATen/ops/arccos_ops.h,sha256=MtwZnA2kMzcF0qVWDGWqTw-xgF7JthGbchWCGR8PgGk,2300 +torch/include/ATen/ops/arccosh.h,sha256=p9En4OL2rdTbXa0tsA5KOuYvKbNBNhoWLC4pDv8Okc4,1436 +torch/include/ATen/ops/arccosh_compositeimplicitautograd_dispatch.h,sha256=ogslVweuObutgL4Pq66k-oWOZzC-oSLmoHaRmpScV5s,1230 +torch/include/ATen/ops/arccosh_native.h,sha256=vfT1T5VA205RoNphHt6a90IhfZ_dYC63Es25p9FeIE4,862 +torch/include/ATen/ops/arccosh_ops.h,sha256=qBgF84vdlKjvlWtKOHbtwJJeqL9WJuv39lLFYGkHbzk,2309 +torch/include/ATen/ops/arcsin.h,sha256=x2yuqImoVOx-osPoQKeprHFPaaVFgff5hO4SdAv6Y3U,1423 +torch/include/ATen/ops/arcsin_compositeimplicitautograd_dispatch.h,sha256=qqSFPhFEf5tpr9-8oFGdNyJohZRbvBf70g9OlDwavoU,1226 +torch/include/ATen/ops/arcsin_native.h,sha256=uMPZE0fDu53Nb6BneOe6tZY1Iue_Andh1TqafqK43RA,859 +torch/include/ATen/ops/arcsin_ops.h,sha256=WPA8_X5cnnxl8dJUkoB4bZtc7c6vroLjMj9L9CA0RtU,2300 +torch/include/ATen/ops/arcsinh.h,sha256=MDyYdl7ux4Z0_2sjMCWaSSj3jX8HhYmGdp_lZT3IpoA,1436 +torch/include/ATen/ops/arcsinh_compositeimplicitautograd_dispatch.h,sha256=vZu0a0jk-yLlFlmKWD9LrHvk1EDh5EDJ1HfSSsa_hho,1230 +torch/include/ATen/ops/arcsinh_native.h,sha256=JhmmU6Kl1vaghGW3C7f37BPIdo-GbvPM-2GQG8XR9qU,862 +torch/include/ATen/ops/arcsinh_ops.h,sha256=2e2tGcaiwr8f1LXAbdvNZtGeP4GFkMyA3xIqdFNiTGE,2309 +torch/include/ATen/ops/arctan.h,sha256=zb-WgJZLEAvPJLFeIdSNjSY90nJac5mr1GiHkNC6z7Q,1423 +torch/include/ATen/ops/arctan2.h,sha256=FYrvrRpCoh2pCPi9CsnlpaL8OdhUzdDRyXvgjvNa5W4,1432 +torch/include/ATen/ops/arctan2_compositeimplicitautograd_dispatch.h,sha256=fypc2XKT61xM0GQ8-dzVUjqfEXrPV_Y6KNfoHJctfVM,1334 +torch/include/ATen/ops/arctan2_native.h,sha256=Kwvcy1iWGYA3VuIx92CLaxyvhvdcVJnc4oHOA7OzdGs,940 +torch/include/ATen/ops/arctan2_ops.h,sha256=LwpOsawft6yiyzY5brvOu1tcervVBFkq5LW3Pmvy5c4,2567 +torch/include/ATen/ops/arctan_compositeimplicitautograd_dispatch.h,sha256=1MALW4LAvSK6hc3RgXlDDWWZF6CN_zAGeabYbAh-W2Y,1226 +torch/include/ATen/ops/arctan_native.h,sha256=IU-c4I1YdT6Iyofe4Jq4TJzSCtMCFHud4Wlgy5301T0,859 +torch/include/ATen/ops/arctan_ops.h,sha256=6La376X5EkAzig226WdvdaOD46s13NdsDdXQgh259u8,2300 +torch/include/ATen/ops/arctanh.h,sha256=nnaFGSuGPTVOMcdIJ5wiFaS_wa8sx5_K353TAvn8D48,1436 +torch/include/ATen/ops/arctanh_compositeimplicitautograd_dispatch.h,sha256=UuImT6ryokuenV8F2mvr1vsm52UKviVbEv6es7wX35w,1230 +torch/include/ATen/ops/arctanh_native.h,sha256=iDY4ajSbtFqagCIGfHWZOpGiLQZjNyOsd9aJsVxF1Jc,862 +torch/include/ATen/ops/arctanh_ops.h,sha256=3C5UrKxlNwi-FnM4P_bUJUC_EVxLp8LzcwuJld-tzEo,2309 +torch/include/ATen/ops/argmax.h,sha256=BOaWkUGCQ52vEFFOgGnphdWc7haL2syExSmeW6xwk0I,1602 +torch/include/ATen/ops/argmax_compositeexplicitautogradnonfunctional_dispatch.h,sha256=_Gy_M1Wd_sCmkTpPo06kWPX0JzcE3Oi1kLE8QMGO3vQ,1109 +torch/include/ATen/ops/argmax_cpu_dispatch.h,sha256=5VQgtrUwgkvLY5nJrTJmHsI6PZVor7PbJ-xmrgJI3TQ,1305 +torch/include/ATen/ops/argmax_cuda_dispatch.h,sha256=BiENtvgFCJ19UW_6hBSjJbaQ9iixl9fgAqHZAttY1Ao,1307 +torch/include/ATen/ops/argmax_meta.h,sha256=ylVsv-yozGfX0-4dvaqNLl6NLeesW78A4oVJVbdZaNY,865 +torch/include/ATen/ops/argmax_meta_dispatch.h,sha256=9LS6-qecZPjCzF0ZR-MLKbrOXSwxvc9LRaYUZo6ZAEg,1307 +torch/include/ATen/ops/argmax_native.h,sha256=i98fmx-73yBjZuats3G2x7tF9NEVlLvtq27HthxjRPg,894 +torch/include/ATen/ops/argmax_ops.h,sha256=WwP7S_xzRIzayYstRW49xEbULtm3at6ZJosHkP-rKDA,2111 +torch/include/ATen/ops/argmin.h,sha256=hWI6tUKRkEXSxpn_gUxSFTsMK7dRlPqdu5eh-KJHKH4,1602 +torch/include/ATen/ops/argmin_compositeexplicitautogradnonfunctional_dispatch.h,sha256=OErO2xFMI74nlrcYGv6TypvHuSrqmklo6Aq9ugaQK_A,1109 +torch/include/ATen/ops/argmin_cpu_dispatch.h,sha256=yIM31vEpJ-sPDyBMFN_6XAHTG2nM2EBJrAbwVHz4uIU,1305 +torch/include/ATen/ops/argmin_cuda_dispatch.h,sha256=9mKzbp3MenIDMgiXWxYd0ntzta0h_J6AIENiwT9Y1Wc,1307 +torch/include/ATen/ops/argmin_meta.h,sha256=0hZA7tEq_TxBwj30Hy01j6-tswYRnpJNTJFyaMY1xCw,865 +torch/include/ATen/ops/argmin_meta_dispatch.h,sha256=9TZOAvEJz7ZFyvS_28u89EIaAsaTvL5WCMcJv1cfTCk,1307 +torch/include/ATen/ops/argmin_native.h,sha256=F9KZtYuNzEypuWlaIM2naQtYfeGV4oDKBiyqWwyTI1w,894 +torch/include/ATen/ops/argmin_ops.h,sha256=3osfrvcAKFrAXmGVNf_tG2Pwoz8nEMnf6ld_giRjQIs,2111 +torch/include/ATen/ops/argsort.h,sha256=6GwFmV2vXCr4HiJuKO8MFz4QR08iqvO99X3E4opoe10,2178 +torch/include/ATen/ops/argsort_compositeimplicitautograd_dispatch.h,sha256=C8IzcVGUjSwf-We7uwDkbaFU_XgGd1k65Oms5R6uL8A,1514 +torch/include/ATen/ops/argsort_native.h,sha256=n4WWFfxBzNNrRmbneNWmokbqfksdOzZrYGOGlwtZc-A,1094 +torch/include/ATen/ops/argsort_ops.h,sha256=7btlypVACdG56oGqkvOUEMRjGG8Sz5DObjPIbdH6Hlw,3423 +torch/include/ATen/ops/argwhere.h,sha256=Nq_Zqfh23SZ6-Ti-hxFCc0-j-CXcmyPQ6HM2GPPqTs4,899 +torch/include/ATen/ops/argwhere_compositeimplicitautograd_dispatch.h,sha256=AB3PDtUWP1Xn6X5WFaZknKUi7lLm_XvWGl4bGEzfID8,1020 +torch/include/ATen/ops/argwhere_native.h,sha256=gmts4IxllA2N6bVI24zT6IMq-7oFetY-rbGzpNq0POg,732 +torch/include/ATen/ops/argwhere_ops.h,sha256=nA-QJ7XKGbtt8YD3wXA2CnQhS5DxN9UzNmC5SRarPSA,1217 +torch/include/ATen/ops/as_strided.h,sha256=wUrhKUFhKNPg8zaIGq3CGfXUaUUGG8PtGPk54_KZr_Q,4132 +torch/include/ATen/ops/as_strided_compositeexplicitautogradnonfunctional_dispatch.h,sha256=AhnQg49Y4YLSokWXqOfLP8iP1nZ_SiSfPtkOhV3DaO8,1347 +torch/include/ATen/ops/as_strided_copy.h,sha256=CtKlIupFJhHj213e82Fp6ONHTrkV0tnDS6KU3x99HXo,6184 +torch/include/ATen/ops/as_strided_copy_compositeexplicitautograd_dispatch.h,sha256=5kBkiuBTg8sYOXYztjk-V8_R2gUejpgrA6D1CDnxOsQ,1730 +torch/include/ATen/ops/as_strided_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=0cUJbTv-Qw0U5zDFtvSpABbEgkT1-hHIFJW88-fYs7A,1339 +torch/include/ATen/ops/as_strided_copy_native.h,sha256=c2Pp2Wb6cKoamLB9oE9gT2dMAhLzBgo4DXGG76dOS54,1053 +torch/include/ATen/ops/as_strided_copy_ops.h,sha256=LgZ-m1QHzwbzFzMtMKntMrOLNuYfZ5zBLNGRw9W_0cI,2517 +torch/include/ATen/ops/as_strided_cpu_dispatch.h,sha256=U4-kH_sTgIBunN5YXokn_WprFxJXYZylhC1Q2ZWVZmM,1259 +torch/include/ATen/ops/as_strided_cuda_dispatch.h,sha256=eDfgl_rwHq8ugvWhJA3QrSZMflMmgXVmSMtzHZ5k7MI,1261 +torch/include/ATen/ops/as_strided_meta_dispatch.h,sha256=rLGfb9kI-PMVeQNuP4TVl-6XghaAFDxurm6olzH8Ae0,1261 +torch/include/ATen/ops/as_strided_native.h,sha256=fC7uGifTcEzKKbwRdNoHsjYHSkolg24wzsrAHXPtpN8,1402 +torch/include/ATen/ops/as_strided_ops.h,sha256=GoIWysvt1VPdLBm6ogoVxJw3nXMjxSK3nK9a5FFw_hc,2438 +torch/include/ATen/ops/as_strided_scatter.h,sha256=YLigoF9Kw-XMdVICCakVhFmRwLCJ7qE923tCwt2IDPE,6697 +torch/include/ATen/ops/as_strided_scatter_compositeexplicitautograd_dispatch.h,sha256=1upHXfTvZhSrMP8rWZ21dF1Hd6Qepqa7aB6w6YCWD2o,1838 +torch/include/ATen/ops/as_strided_scatter_compositeexplicitautogradnonfunctional_dispatch.h,sha256=J8uzr66aZPTstDIErZHKVCFF7Qzjku6P7Bb4xwIF9gU,1393 +torch/include/ATen/ops/as_strided_scatter_native.h,sha256=aulN12IHKBwp0In-BvNX1E5idPdIsCfzWkjdV3fPBdU,1107 +torch/include/ATen/ops/as_strided_scatter_ops.h,sha256=C0VF4z8kW6pJtdVK35FlPeXB3t0io1XigWBSvkNAudo,2695 +torch/include/ATen/ops/asin.h,sha256=6dZJKY4qGci-jldWDnOKRWrA-a4swl5A04YnEX59IpE,1397 +torch/include/ATen/ops/asin_compositeexplicitautogradnonfunctional_dispatch.h,sha256=pS1KONtDptODIyWb24gDwd6zYWxqq3UU8ce95217Z-I,1091 +torch/include/ATen/ops/asin_cpu_dispatch.h,sha256=TU_cp8cqXXLd0TnQcWdAdyIop5VfjeywdzIvHB6MNLM,1174 +torch/include/ATen/ops/asin_cuda_dispatch.h,sha256=sYh8Y4VSCZDrIeXoD9Ugb1TRiPyImmdL1GvB7KkU83E,1176 +torch/include/ATen/ops/asin_meta.h,sha256=O5kgNxFEMt2e7Y1xEIYhIGO2B3kKa9gbGwGBEVdS05k,819 +torch/include/ATen/ops/asin_meta_dispatch.h,sha256=gGj8XqdzL4KOQ_M1KGbS8hyHLJ52fVo9zliBkBgvKZU,1176 +torch/include/ATen/ops/asin_native.h,sha256=eyknEruGD7pH_F_RW-r7nhqQm-rYZRosKAchUKsA48Q,1252 +torch/include/ATen/ops/asin_ops.h,sha256=RGX5MrYJ1ypFCCveF2MMiISTd_1bGdYfR4Cty0VpU-w,2282 +torch/include/ATen/ops/asinh.h,sha256=B5iPezw69GwhGn9zthCnlgb-PR4wCqx-KM4etx_tpoQ,1410 +torch/include/ATen/ops/asinh_compositeexplicitautogradnonfunctional_dispatch.h,sha256=tA0Ci9Wp9pTHmyQu5KdZht4A8wwVm6GAoR9vFh5kph8,1093 +torch/include/ATen/ops/asinh_cpu_dispatch.h,sha256=gL3KygVUN0VpdOvH3QmVGjCpbnS0LetxoK5MZnpcqSY,1178 +torch/include/ATen/ops/asinh_cuda_dispatch.h,sha256=fcgoxE_B54nYsLDiVp0sWBnwF5E7-KjctvdapzFUynw,1180 +torch/include/ATen/ops/asinh_meta.h,sha256=uu_oPJwLAO80zNWX-YNSHXAuLgGkozoqqfsVMdLkR44,820 +torch/include/ATen/ops/asinh_meta_dispatch.h,sha256=7VJ0tjC6w2_Fa9lMuzpIHSa05LKKMpJlXSUJQq5VcJ0,1180 +torch/include/ATen/ops/asinh_native.h,sha256=3z81vK6b55PFPiN-UB4fxmBLi6dpvh4wVs96P3oAVT4,1261 +torch/include/ATen/ops/asinh_ops.h,sha256=7EfRswjdCqmUf5Tr3ZiGP4IsoiRKuX07HnQOXYRbYNY,2291 +torch/include/ATen/ops/atan.h,sha256=-SJqz5oGrT9HvRgKsmS8SqS7IXD5ol32w8215ZW6WJE,1397 +torch/include/ATen/ops/atan2.h,sha256=1zEyo-XJ40uIovW8ywDpT2DMvDTwYgkwNjn0kNOva7U,1412 +torch/include/ATen/ops/atan2_compositeexplicitautogradnonfunctional_dispatch.h,sha256=692Lrb7ojzHqKgGwo_Stt68QD-C4BEomPM7d-PAHjSM,1145 +torch/include/ATen/ops/atan2_cpu_dispatch.h,sha256=cj6dDror4xzOtToQm5Vw-gCM7K3R9vp4YYaUSjoWknY,1282 +torch/include/ATen/ops/atan2_cuda_dispatch.h,sha256=Ni9e9SPjoVHutlIv8hL0Bc9UKNw4a1j5fxmjbsNEh3o,1284 +torch/include/ATen/ops/atan2_meta.h,sha256=P--U8dOOFN8U_j-FDkO5Ph8h0iS8BomIupQnzvPrr28,846 +torch/include/ATen/ops/atan2_meta_dispatch.h,sha256=Wgbo19_on-VDMBS3UE9ucOdZ9Q0svlvqboVI7awKWDQ,1284 +torch/include/ATen/ops/atan2_native.h,sha256=vMivDfcTyRxV2AuT3HVuqrA70wfPqxN5PAi25nxhQ7A,873 +torch/include/ATen/ops/atan2_ops.h,sha256=Z4Y95GL1FWpzjsDe7khNOhJ7_4_a_2_kNJBOvinm42c,2549 +torch/include/ATen/ops/atan_compositeexplicitautogradnonfunctional_dispatch.h,sha256=F53co3TTVHf_6VdjI5ot-pBoph23Am70UpCTe3r9BxM,1091 +torch/include/ATen/ops/atan_cpu_dispatch.h,sha256=pZl0lgc8um-cj36fSxWUhfXZwf2aiISgexPVxa1TYlo,1174 +torch/include/ATen/ops/atan_cuda_dispatch.h,sha256=BUOsp0_a4krYjeNuuawq-LdYGuPKFhj4sOQJtacMozI,1176 +torch/include/ATen/ops/atan_meta.h,sha256=mLf6Rm97Uuj2PRlSXevn70Bf3Sc4rA6HY0IenQiOTzk,819 +torch/include/ATen/ops/atan_meta_dispatch.h,sha256=23awb09Suck2tJK7_13e8AXn8qOvO05hhW_gw0XX2YI,1176 +torch/include/ATen/ops/atan_native.h,sha256=F48TyFjJBGas9TBbyqFrD_V8Veiz44nDAAL8CJ3Nuu4,1252 +torch/include/ATen/ops/atan_ops.h,sha256=oERuhew2uNIkvGwFI_NxIiJIYdCNMG00D6HJZhTVF0I,2282 +torch/include/ATen/ops/atanh.h,sha256=VZJaifaBgMMw0WKMvYy2zMUlRlBxHGzDtwjTZLD9GWk,1410 +torch/include/ATen/ops/atanh_compositeexplicitautogradnonfunctional_dispatch.h,sha256=aoVfbRzWJ8yo7LkQjQAgodxiZHNSR75YyZnNECFw_08,1093 +torch/include/ATen/ops/atanh_cpu_dispatch.h,sha256=lGWIjCsDc6wnyHc0GHeKb6nKJcdYZQzMG8rvMpyK2tk,1178 +torch/include/ATen/ops/atanh_cuda_dispatch.h,sha256=Ynl5-b8IA0bOpT7DJXhM6PApF2MiaT8TJw6KgckJcGU,1180 +torch/include/ATen/ops/atanh_meta.h,sha256=jOwwN_UxjCWHJ_WuQ7NuGP-RcXrr5i-ezrM9147aIlo,820 +torch/include/ATen/ops/atanh_meta_dispatch.h,sha256=HoqJGAxHmTwxED5N7KpFlWLH4_0T4UVJWzf5o77PB9A,1180 +torch/include/ATen/ops/atanh_native.h,sha256=wKNo6q05YLH7nEO0AV_PpcffS4Yv5oa9BBAZMYjUUy8,1261 +torch/include/ATen/ops/atanh_ops.h,sha256=qXSEXc2cRG8bRy-Ks48xbqQcH1bxxrpeJl0yJa8428E,2291 +torch/include/ATen/ops/atleast_1d.h,sha256=Y2h7FBWO4_ZdnxwkH2n7CFeDPKQFttDw1JT1qK63XVM,1096 +torch/include/ATen/ops/atleast_1d_compositeimplicitautograd_dispatch.h,sha256=cSV_5QNtgEvLGPl67GDLC0vs23zqrIOo2JHxTilNUAM,1094 +torch/include/ATen/ops/atleast_1d_native.h,sha256=qGWk-JixUS2GW_mSwuEnsqIzEdAsIwFAeUu28fNzbWE,806 +torch/include/ATen/ops/atleast_1d_ops.h,sha256=yzKSzeCx6HkC2RHkTc1B6Yp42UC7S8ljja8wdvs8Ziw,1807 +torch/include/ATen/ops/atleast_2d.h,sha256=mzq2LFo5UJjh140DDHNcKEPzV3hX0MSzZWzvNyaMQ2E,1096 +torch/include/ATen/ops/atleast_2d_compositeimplicitautograd_dispatch.h,sha256=9HA8LiiHCm4baPn3MBQhTYLnJXpQUZec_uTB9whnfy8,1094 +torch/include/ATen/ops/atleast_2d_native.h,sha256=ID2YC10s5sZaHUjsDbj2apIB8COPweEREHXMzxsHMuU,806 +torch/include/ATen/ops/atleast_2d_ops.h,sha256=nYVgyh6lO1GPgRVQEeWyfL7TzmhHkD_lat8xpYhrPQc,1807 +torch/include/ATen/ops/atleast_3d.h,sha256=fTcDHZ3EI-auZ_BSG1FUBFheWNq8N4uHnHpRlYf6-sQ,1096 +torch/include/ATen/ops/atleast_3d_compositeimplicitautograd_dispatch.h,sha256=ymjqBMIDFWQaeQy9tBa8J5MjUZnHuKAg3EmO9Bl7D1w,1094 +torch/include/ATen/ops/atleast_3d_native.h,sha256=2DY9kGlI_Zwzo47BV_q4Gjgz-SXcrqTme-wVCEXUdxM,806 +torch/include/ATen/ops/atleast_3d_ops.h,sha256=Rx66_U0cioX8NSPQ4s1xSGGxrCXwENLe0v_ItxEiZY8,1807 +torch/include/ATen/ops/avg_pool1d.h,sha256=GAS9xY3dzNIJ2GPehFWg_oU42MV_XoBeR71nLMDwIfY,2208 +torch/include/ATen/ops/avg_pool1d_compositeexplicitautograd_dispatch.h,sha256=3-Ah5DXwbjPddbzmx0AnsjNLXaN_XsiIfUmtZHT5sw0,1381 +torch/include/ATen/ops/avg_pool1d_compositeimplicitautograd_dispatch.h,sha256=po0kt9Zee6y434D9BmV8e7s_V6QxThEtmDcTdL1jYjo,1156 +torch/include/ATen/ops/avg_pool1d_native.h,sha256=OhtFUdUNC5uIqQUVeJYovj8LTIt12vTSdHQDSJrHHCA,1068 +torch/include/ATen/ops/avg_pool1d_ops.h,sha256=fF3y7aNqFX9a7QNPGYA1CFrNiKRZJRbKqk2Js_56g7E,2637 +torch/include/ATen/ops/avg_pool2d.h,sha256=zzctGWwcWrZFEL6KIf59HWwuyMvCGhv3W883Y6ES3cM,2505 +torch/include/ATen/ops/avg_pool2d_backward.h,sha256=Jsxj5sW6zD3gIhziA-EKNByq9Xm2ibUQ8HaKGic1XuU,2735 +torch/include/ATen/ops/avg_pool2d_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=G-nAYYYS6LghwifGh3ZuLISuI02wvCK4qDo7pSNZ9Nk,1250 +torch/include/ATen/ops/avg_pool2d_backward_cpu_dispatch.h,sha256=66mB_AehRWKNj4-vSKo6lHbV2E1fkaTarGmrKhE5QY0,1763 +torch/include/ATen/ops/avg_pool2d_backward_cuda_dispatch.h,sha256=6dPIVB2jOmbjMsIg-IdmC_6dlCLdxLkAHwgDTnxkaNQ,1765 +torch/include/ATen/ops/avg_pool2d_backward_meta.h,sha256=T_nfx1dVnS9aBFrp4msWpjudKDDkKxJ-EI4UNPcxMcg,1027 +torch/include/ATen/ops/avg_pool2d_backward_meta_dispatch.h,sha256=2CfFr-CY9XsEBtx9hDHRTZgm3nz3GM3K7ujJa9VU7qY,1765 +torch/include/ATen/ops/avg_pool2d_backward_native.h,sha256=Pd1ltV_pBxAXjKaixWNRWmcBg9UGcS4JEfBX_Ou3DfE,2030 +torch/include/ATen/ops/avg_pool2d_backward_ops.h,sha256=TP5KSfqcZcJoZk-f7ystcV2VEACZsLzFtGun10ihoZA,3179 +torch/include/ATen/ops/avg_pool2d_compositeexplicitautogradnonfunctional_dispatch.h,sha256=SjBe7jvi6SroirbD0Jgbfoxe_FCw1LAgYuMOu1p9G2E,1240 +torch/include/ATen/ops/avg_pool2d_cpu_dispatch.h,sha256=Fr0c3sjjXUVGXK6k1RylsLoGM1oO6kZurn_tJgK1NdU,1688 +torch/include/ATen/ops/avg_pool2d_cuda_dispatch.h,sha256=htK8eLQ1_aj6bbomIN9NoxRas8Iwbw1AF9yXPqiB_1I,1690 +torch/include/ATen/ops/avg_pool2d_meta.h,sha256=jhOe0UDiJonIpDovNKbSfNX-A-eR9QWStrF0_caOPic,3696 +torch/include/ATen/ops/avg_pool2d_meta_dispatch.h,sha256=RLSQM1VAuzAM1SZ19RVU05Hhi3FQEo88jA-wN9B4Uds,1690 +torch/include/ATen/ops/avg_pool2d_native.h,sha256=CRBYguBG8G4n6y_AnB8YlVjVIEHW1eS5HLFxMdf_3FY,2109 +torch/include/ATen/ops/avg_pool2d_ops.h,sha256=z3mHD10BR9MEjIUDfzofY7MZmkK-WTiuLnDw7dShu9I,2917 +torch/include/ATen/ops/avg_pool3d.h,sha256=pOHOCZfdU02EbBNYScxKtIAaqvVu3Rx8t1HYD29Hk1g,2505 +torch/include/ATen/ops/avg_pool3d_backward.h,sha256=J-JoplellOM4YMYJGH6XxYOtaYjn2TjtPDs_q4TbJiM,2735 +torch/include/ATen/ops/avg_pool3d_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=fHCPVhseY42rw4HNB1wfPzrsUVRhnN4c0sQlReSBVp8,1250 +torch/include/ATen/ops/avg_pool3d_backward_cpu_dispatch.h,sha256=QXjzdsDhsrTJsY47iuBJOlS_xxlpic---PuvW_5Cmzk,1763 +torch/include/ATen/ops/avg_pool3d_backward_cuda_dispatch.h,sha256=O3HTIehTjwReRGRDq9eYQCJvnx_danLT_YIj064XMIQ,1765 +torch/include/ATen/ops/avg_pool3d_backward_meta.h,sha256=t-guFOuk1OKRykPPza4QV1ErOITzDteuXCd0JT2lKuo,1027 +torch/include/ATen/ops/avg_pool3d_backward_meta_dispatch.h,sha256=L4y34jkq0CHscSAi-D_lJ3aWEmivEx__lFLPDFxFTa0,1765 +torch/include/ATen/ops/avg_pool3d_backward_native.h,sha256=_FEs7qPPaDLXjIe4cscLmZfE-qXNCahKr-wS_VLbL44,2030 +torch/include/ATen/ops/avg_pool3d_backward_ops.h,sha256=lJ6-lxJ4XpdVKiuvP_n01E3TLrUYdA_gyu5u9dKZ_7A,3179 +torch/include/ATen/ops/avg_pool3d_compositeexplicitautogradnonfunctional_dispatch.h,sha256=vr0DzAinimkzlf6qWuYVlIWFdyuZoVLj71SQd7w1CNM,1240 +torch/include/ATen/ops/avg_pool3d_cpu_dispatch.h,sha256=0omjaNll7JkYCMVZZIvIYThYRp-7n6Uyo3m8lbkugjQ,1688 +torch/include/ATen/ops/avg_pool3d_cuda_dispatch.h,sha256=p4qMEwwGfom8p-C5OGZ55Wk1gDx2vh3RbeM7RNzSSYw,1690 +torch/include/ATen/ops/avg_pool3d_meta.h,sha256=oS2j0t1wsZ-Ggs9qPdGdoiyrevuKP0hN_NhDaL1X5do,986 +torch/include/ATen/ops/avg_pool3d_meta_dispatch.h,sha256=ajLQpnjRtIxPSMz9YjyEOIQCs9yOx7_yx-x8zi6OfIM,1690 +torch/include/ATen/ops/avg_pool3d_native.h,sha256=tciz5tF8OwHbrcSHh3VXlrlbt_4cC9_F1khH0tVuZ54,2113 +torch/include/ATen/ops/avg_pool3d_ops.h,sha256=2UuwBhneqHoU32UPwBQnFfsa-in1XOTjHJxN-7GspCs,2917 +torch/include/ATen/ops/baddbmm.h,sha256=rnbZi1R9Lny3CABJZt_U6fCTTAwcJeo7YAKwvnz8J6U,3230 +torch/include/ATen/ops/baddbmm_compositeexplicitautogradnonfunctional_dispatch.h,sha256=wKXOhmtTSl_bkkls4IUVy6ph3VeMvyRGsvphh4TKilk,1315 +torch/include/ATen/ops/baddbmm_cpu_dispatch.h,sha256=SdfMUkrYPByfx6zkDeIYS-CprSjrKNFbKaTc53Yg1BU,1618 +torch/include/ATen/ops/baddbmm_cuda_dispatch.h,sha256=TXpPDMF5qXu5nw7dVAEenyx_mZ7rvz6aj5CNednlUSw,2235 +torch/include/ATen/ops/baddbmm_meta.h,sha256=jgBmEsntIO-92RLc42kBP987RlQo2ELCjkLCOUiTdnU,927 +torch/include/ATen/ops/baddbmm_meta_dispatch.h,sha256=7t1cJ8xpyTSsnRapiMq1TDjO1Zp8XdPatDTQPw_0Q08,1620 +torch/include/ATen/ops/baddbmm_native.h,sha256=t8PaKQDsNURwvL74Oq6ZhU7kXsiadqFBcK-47GvtAQM,1839 +torch/include/ATen/ops/baddbmm_ops.h,sha256=Q8cSb3m4DefUVeY7wVu2Ea-eOaOcGYgtpwnWMRlo1iI,5384 +torch/include/ATen/ops/bartlett_window.h,sha256=EcWHAx2pNqicPUPWA39vER6JEhKbKMtmfT6uWXD8oQw,3671 +torch/include/ATen/ops/bartlett_window_compositeexplicitautograd_dispatch.h,sha256=iVkQn8joRZw1k6pYXNCfjVvATo-qwQl236TUCHkr3Mw,1960 +torch/include/ATen/ops/bartlett_window_native.h,sha256=ithhbQXMutpR9w3u1R10znm3L-_cL4yPzdGAQUjhl-4,1321 +torch/include/ATen/ops/bartlett_window_ops.h,sha256=KeRzUE3yz-ab79mrzWAW159X6WhUncZeGfwUwHkNweo,4110 +torch/include/ATen/ops/batch_norm.h,sha256=LFi4DCZm_lZ-UEAPcQh1C3Z1vAInCV-3EClwTTFChPs,1375 +torch/include/ATen/ops/batch_norm_backward.h,sha256=Ix3krX6gPn_6ka1GoNXze4hniInBaI4y9jnTnI2hzQM,1609 +torch/include/ATen/ops/batch_norm_backward_cpu_dispatch.h,sha256=Thw7yMxSfgAW4rRmDZmVICF6ttmojf3mGzCE-ZQP-zI,1359 +torch/include/ATen/ops/batch_norm_backward_cuda_dispatch.h,sha256=A92xSMyMeqTSTaUaSe10oxFNvpkhIRzr5FzG_SEjiE8,1361 +torch/include/ATen/ops/batch_norm_backward_elemt.h,sha256=vc2wMSx4kgE0EEVcOkwCkCnNkiHQPMs21SWn6qR9zrI,2611 +torch/include/ATen/ops/batch_norm_backward_elemt_compositeexplicitautograd_dispatch.h,sha256=3otyyE6qzQGikvHxuA-dhTPaVNezovDCqT2U0SCWzfQ,1579 +torch/include/ATen/ops/batch_norm_backward_elemt_cuda_dispatch.h,sha256=155d-60cp5mMW4t9StIIrkrVoIVvFX3OnB_DFHpKnz8,1205 +torch/include/ATen/ops/batch_norm_backward_elemt_native.h,sha256=wsILFVrlVTfv48hHnBQ7tzx8JnYGyYe3fKzwuF64Jtg,1271 +torch/include/ATen/ops/batch_norm_backward_elemt_ops.h,sha256=iREb6jye293XQtvBJYCObr9KeNdHeNEUyaSMDvQZBWc,3289 +torch/include/ATen/ops/batch_norm_backward_native.h,sha256=58zP0Y852N-k4-KpC-7WH5S5CuDJKCGe6oOsbo3iEYc,2024 +torch/include/ATen/ops/batch_norm_backward_ops.h,sha256=15IQ8uCSE4hesE4WJxKnAX6-aNQXPQhq6wioZEjryGA,2466 +torch/include/ATen/ops/batch_norm_backward_reduce.h,sha256=5i2EX80H-ybANCg6RP9_bvZ1Bp8g_Y2E2qp9HUFNnGQ,2990 +torch/include/ATen/ops/batch_norm_backward_reduce_compositeexplicitautograd_dispatch.h,sha256=9aI10F1lQ7fQopytP3-WPmMLRLzqd1R5CWTjlL5ZcQ0,1719 +torch/include/ATen/ops/batch_norm_backward_reduce_cuda_dispatch.h,sha256=QOIQ-1ZFgwUHyZVg3CV07IEd1foVlGquKuRkXFDqy2I,1211 +torch/include/ATen/ops/batch_norm_backward_reduce_native.h,sha256=163855V2OnH39p6_u0coTSPxTTYwLRxbjTxtJLVvdes,1347 +torch/include/ATen/ops/batch_norm_backward_reduce_ops.h,sha256=5GG1OEWLAh-nRB_e6XJynAAGKyZi3eT4dgaurfFqeq4,3605 +torch/include/ATen/ops/batch_norm_compositeimplicitautograd_dispatch.h,sha256=U97fC9tk8J6mw9qaq0nR2WpZKMFR9CX7qQ3Ehyue0_8,1272 +torch/include/ATen/ops/batch_norm_elemt.h,sha256=CqYc72LHO7iq5yi9FCm9mxKanWXtWAjZV1e8LV3pEdg,2146 +torch/include/ATen/ops/batch_norm_elemt_cuda_dispatch.h,sha256=-gOrrAWEUE1LDZBh7opbmsiNbb50BzoxyO32DtF8zvU,1616 +torch/include/ATen/ops/batch_norm_elemt_native.h,sha256=JHtJh340ZK_GgvwJxJk8jb2fEQyBMWlUpmzgRDn3Q1Q,1140 +torch/include/ATen/ops/batch_norm_elemt_ops.h,sha256=KOgVoKZe-NddNNcvxiQBgFknh8cHmB9b6TZhUw0aGK8,2849 +torch/include/ATen/ops/batch_norm_gather_stats.h,sha256=J90Pi9BhzMyv1q21l1ObqIHVGOro2_AQeKN8EYdTL7s,2768 +torch/include/ATen/ops/batch_norm_gather_stats_compositeexplicitautograd_dispatch.h,sha256=CU-WZCQ4eCkXfpnE8dko9fneQRz3ta--7zpkjjhNp_I,1641 +torch/include/ATen/ops/batch_norm_gather_stats_cuda_dispatch.h,sha256=erMlizQQFYtz4lXSWwjrBq7U8luJgR3Wpjv9axE2G8U,1214 +torch/include/ATen/ops/batch_norm_gather_stats_native.h,sha256=-QiU22S_AOUFrCVclH9gFJ6_Q4DoUdi5Cs9s_VT6kUw,1311 +torch/include/ATen/ops/batch_norm_gather_stats_ops.h,sha256=B_F2AJG5mlBP8nNk5Ld9qwlwy-keUwUj4QGpz0ch5Cs,3437 +torch/include/ATen/ops/batch_norm_gather_stats_with_counts.h,sha256=0SZm219jWI0J3QmMrfKxOvBoD12d3tCx17Fc2mu3cvI,2939 +torch/include/ATen/ops/batch_norm_gather_stats_with_counts_compositeexplicitautograd_dispatch.h,sha256=rl9fglm_nFsxlkOCWgUPsqhcWY1mZTWHsGMcn1AnPD4,1689 +torch/include/ATen/ops/batch_norm_gather_stats_with_counts_cuda_dispatch.h,sha256=gHAx_WiKr6R69eNX2uKMeRzD4d3_kjBkC8oqnJU35vE,1238 +torch/include/ATen/ops/batch_norm_gather_stats_with_counts_native.h,sha256=O2znHltp1VMqbAwnZp8MbYThS5KFS6KCXUK1O1hHTmM,1359 +torch/include/ATen/ops/batch_norm_gather_stats_with_counts_ops.h,sha256=kWTLHmVV5JlB1DNZDiicaEyh7mijEVNaHT-kDIN6vtk,3587 +torch/include/ATen/ops/batch_norm_native.h,sha256=DhlN-5nJdZ8t6jRw-9QLGov-SoFCZRfR4yFzfJx1Tbs,984 +torch/include/ATen/ops/batch_norm_ops.h,sha256=S5H5cMyVDvNoG-FAsv3s8cN2QrLsQAwLMn4VaD3WzSc,2035 +torch/include/ATen/ops/batch_norm_stats.h,sha256=a1O45Ft0a3M5C3-7JyG3bRxSLBiXfSDb131rZ326YdY,1681 +torch/include/ATen/ops/batch_norm_stats_compositeexplicitautograd_dispatch.h,sha256=oWcMS63gF6_rWFEzCU32hhgeHZajls6rzDZVALJPUms,1261 +torch/include/ATen/ops/batch_norm_stats_cuda_dispatch.h,sha256=tUArcNzKAK512laBnEdIAoCTR7bWF3BT7e1OXcOv3f4,1024 +torch/include/ATen/ops/batch_norm_stats_native.h,sha256=-rmoHPcCKDPEEZJ4OkOSTl5SACBflyTLo8-gJFALTYY,931 +torch/include/ATen/ops/batch_norm_stats_ops.h,sha256=pD6tFonqozI0Ge_tkD3E6CaPQ8AyhJbB3h_vb0Pg-OY,2205 +torch/include/ATen/ops/batch_norm_update_stats.h,sha256=Z3iMOEL_uxncsA0aqmeDn6MY05UHrwEByzSdMj_ypaY,2303 +torch/include/ATen/ops/batch_norm_update_stats_compositeexplicitautograd_dispatch.h,sha256=gzVw2m52ywuj0Hi16OVNGRo6NPLow6R4nWt4aoydZO0,1483 +torch/include/ATen/ops/batch_norm_update_stats_cpu_dispatch.h,sha256=G110gtSbrjf54bO-HUaUwGkCh3tUJdlvgEp8GYJAyYM,1133 +torch/include/ATen/ops/batch_norm_update_stats_cuda_dispatch.h,sha256=UFmJ6x_bWNh63cVfSgkeTLILdf90Yu4XMyoStq8qWts,1135 +torch/include/ATen/ops/batch_norm_update_stats_native.h,sha256=1rjoRTg3jwuVNsODK9Vl6GN1WgPfCZueOMtLhZTBHic,1370 +torch/include/ATen/ops/batch_norm_update_stats_ops.h,sha256=qN7CflwLSXAjnQAQqKReZxoBvpUdOrqHVcBAzp1DACc,2907 +torch/include/ATen/ops/bernoulli.h,sha256=B0xXToy5r6yPYDIEaCyTZ8pNlOBTiS0Ohr-Vp-BD-I8,3487 +torch/include/ATen/ops/bernoulli_compositeexplicitautograd_dispatch.h,sha256=qxWLxWJOqrGTmc_lFudOAPrinIS7QTRr11Bn9vz4plk,1806 +torch/include/ATen/ops/bernoulli_compositeexplicitautogradnonfunctional_dispatch.h,sha256=PQU6gOYC_HNaDLhlJCLCdKlCidKHTTfqVFTBTXyvNH4,1114 +torch/include/ATen/ops/bernoulli_cpu_dispatch.h,sha256=yibi4VzrAVN1Kp1uzxIpVFMTx4dX1KehEcoQO3JByKc,1440 +torch/include/ATen/ops/bernoulli_cuda_dispatch.h,sha256=ucwS4BbWGFLnAhZ5aBEFyPkDLorVC7k3INu3EkAIXwk,1442 +torch/include/ATen/ops/bernoulli_meta_dispatch.h,sha256=pOz3yuIbZZnP0_w5R1dMoBQQgMrTgw4rqawhVJkS91w,1180 +torch/include/ATen/ops/bernoulli_native.h,sha256=X2BYZoCeV6AG8qbHA1aSxwQou7woAT9ydOJXWAbv9C8,1722 +torch/include/ATen/ops/bernoulli_ops.h,sha256=S8DmmYaRvo1xRC6KeB6npo-kji0tts5qwXY-_Ew19co,6652 +torch/include/ATen/ops/bilinear.h,sha256=FYNT3GohTwwoKL5ODZP0HG7ZJ-TdclUxSf9Yx-o9Uqo,1075 +torch/include/ATen/ops/bilinear_compositeimplicitautograd_dispatch.h,sha256=e3YXu_hWDmorApn1kuLBqWX1KDMCsWDo6_KEkhKgXvs,1121 +torch/include/ATen/ops/bilinear_native.h,sha256=PBrU7BXA-8tvkWY1LKRfRfuFKEie3lifBOafIMQHroc,833 +torch/include/ATen/ops/bilinear_ops.h,sha256=qjaEWwoCBghOTo9Gw0kMcOgLPF8Eak-qtCFjHkIcAaM,1541 +torch/include/ATen/ops/binary_cross_entropy.h,sha256=DCF7LF1HHd19oSDts25qagv9asrXXQElT37AUCqq2ag,1986 +torch/include/ATen/ops/binary_cross_entropy_backward.h,sha256=7RCy4uoQy9PZI2gYJj539lEHPTMv6V1qZ8nm22JejbM,2341 +torch/include/ATen/ops/binary_cross_entropy_backward_cpu_dispatch.h,sha256=JSyYOMegYHYYFqkmCnBzqgT3gLI17XpeHBhWwX6K6Mk,1626 +torch/include/ATen/ops/binary_cross_entropy_backward_cuda_dispatch.h,sha256=wIr-nVSozbeGZwfBpeW34WPF6ZqNcCGR6S91OfV1Xdk,1628 +torch/include/ATen/ops/binary_cross_entropy_backward_native.h,sha256=x4spYwPmveyMQjtEcNWGVrhJYDnKj1B_PCd3ZHtyPsk,1598 +torch/include/ATen/ops/binary_cross_entropy_backward_ops.h,sha256=0xjgIB9_TGuvGTG0jb3qzZffgcpbWuZdcEhqbi53Dsw,2793 +torch/include/ATen/ops/binary_cross_entropy_cpu_dispatch.h,sha256=xxQMdCXt2GZ6D-SgSBiIsu8QIu8tCxH_re28py0ivIc,1489 +torch/include/ATen/ops/binary_cross_entropy_cuda_dispatch.h,sha256=P-ZweLmp1dWSj_VmTv0J4h9KiTwLzA40vVj66cWwXZc,1491 +torch/include/ATen/ops/binary_cross_entropy_native.h,sha256=KgYba0LJtDl7gmw7xJa2MAn1aK2o8u9CVbPVPJp-pFI,1420 +torch/include/ATen/ops/binary_cross_entropy_ops.h,sha256=yVypxWGMmZcwVs81oKaX8Za_tcr68Doq6jC0uVQTXhk,2489 +torch/include/ATen/ops/binary_cross_entropy_with_logits.h,sha256=NpkbQVY1TE5K24xXPY5Lq9TUFS_M8lhue9ufwF-2nx0,2367 +torch/include/ATen/ops/binary_cross_entropy_with_logits_compositeexplicitautograd_dispatch.h,sha256=UQQwtNrIusKed8oifuTq0C8JFJ1lshe8ASKWuPbyFCY,1719 +torch/include/ATen/ops/binary_cross_entropy_with_logits_native.h,sha256=WUGJDzPdDGnCRMD5d8M7nAEIN40etar8foL7UHgFLLE,1162 +torch/include/ATen/ops/binary_cross_entropy_with_logits_ops.h,sha256=2CZZIU74najADjMReDtGY9XurD0FBK74cfQzwNfPN8o,2877 +torch/include/ATen/ops/bincount.h,sha256=zpEwE5AOGA4kzDzu1dc8A7bKgyN45hQjPM6f53wCOSk,4525 +torch/include/ATen/ops/bincount_compositeexplicitautograd_dispatch.h,sha256=qVY8LA1oNcZrro7ZbNTyNLmaMKjibaJ2J85p0R_v8Ms,1574 +torch/include/ATen/ops/bincount_cpu_dispatch.h,sha256=PLY2VvXZPzpup8wyL-JLOQwd9ncivzLQlVqnNs1IabI,1181 +torch/include/ATen/ops/bincount_cuda_dispatch.h,sha256=rQlaxDtxTnMup732yi_5SLFsN0Rz6GB9sRi62UfCyw0,1183 +torch/include/ATen/ops/bincount_native.h,sha256=iqtTp__75jB88uAV04Acup-SkcUFitUXM9K8pS0usuU,1092 +torch/include/ATen/ops/bincount_ops.h,sha256=4X8DRBzXZK6zO65z3PtS75En1VoUfACGNcCK6h33tXQ,2269 +torch/include/ATen/ops/binomial.h,sha256=qGDK6P_X0RzjHwQoO6Cen9B3iqqERlGx7DpXC4Qv2eo,1712 +torch/include/ATen/ops/binomial_compositeexplicitautograd_dispatch.h,sha256=F6-55607MVn2ZoHz8BpOVlDgI1NZkVL1vS4DTfe6A3k,1276 +torch/include/ATen/ops/binomial_cpu_dispatch.h,sha256=ML9WXhZWcO58zDFJOXbuGJk8aLpFMyvv55rdFJRpSDs,1059 +torch/include/ATen/ops/binomial_cuda_dispatch.h,sha256=Rzlyj5xMrm1-2msFyDbdLK0wqonWUhfHGMB4e9_PfMM,1061 +torch/include/ATen/ops/binomial_native.h,sha256=1EMlINS04wgfd1TivQTJsdae4cPhSa0ZASOMrXamUwQ,1117 +torch/include/ATen/ops/binomial_ops.h,sha256=IqYFvyiwEWMPvt1X0_hpc6RMxHoF2RLSyitA3UHKnnY,2271 +torch/include/ATen/ops/bitwise_and.h,sha256=CLnDto9LHTOSQO_mfNQ4rLCw-jdiyCdIb7ujwWaTR0c,3062 +torch/include/ATen/ops/bitwise_and_compositeexplicitautograd_dispatch.h,sha256=5oAHtdrUIRMRgxbKxPsMU_QdpQXnkR8jOrpTn7PfWYM,1654 +torch/include/ATen/ops/bitwise_and_compositeexplicitautogradnonfunctional_dispatch.h,sha256=RRqH3_LwHfq38YDnF4m-8Pwgvv4W_kY3ZC5vkLX-MwY,1157 +torch/include/ATen/ops/bitwise_and_cpu_dispatch.h,sha256=CubvluiIpMCfUj3HlJVgWHipVb5xNjX6PnsLD7Ul0eY,1306 +torch/include/ATen/ops/bitwise_and_cuda_dispatch.h,sha256=30pdrrJIB6LlajhqfCamdSn9AYIHPr2PSPzowCpkX54,1308 +torch/include/ATen/ops/bitwise_and_meta.h,sha256=U8K8WmOvuYdT9S39Gzy9YDYf5fzueWCR789gHqAxvSA,859 +torch/include/ATen/ops/bitwise_and_meta_dispatch.h,sha256=JIzvnJoxHWeY0n6GQ_EWqhkJWcCcvxN5Skz5H2Pjgm4,1308 +torch/include/ATen/ops/bitwise_and_native.h,sha256=U96dGy4rnd3ND4UKMty-61sG3SvfaGF6HLa74-pXVCE,1382 +torch/include/ATen/ops/bitwise_and_ops.h,sha256=4W_wWJAAPAmPg0YyjzMJSi-4SxAAjfl0nBxmq1BKEFg,5992 +torch/include/ATen/ops/bitwise_left_shift.h,sha256=oMcxJpA2P9yuXrRjTCooE_C6LoFlH_0MbNGBj7MStdQ,3300 +torch/include/ATen/ops/bitwise_left_shift_compositeexplicitautograd_dispatch.h,sha256=AKp5xmpr7fAKQZ8__vhqh9s1Wehd684iPPzVcRDjDSg,1703 +torch/include/ATen/ops/bitwise_left_shift_compositeexplicitautogradnonfunctional_dispatch.h,sha256=1t3_VdKZMfYTFuVndXxcJ7EHhxSdlfNsnavpyvzv8Zs,1171 +torch/include/ATen/ops/bitwise_left_shift_cpu_dispatch.h,sha256=UWDDYZT-kPNxL55iUgllZtfTMKc_0LtAGs3bU3fZHSA,1334 +torch/include/ATen/ops/bitwise_left_shift_cuda_dispatch.h,sha256=79OydsP3XTYGf5AFmSpE0hhq-4uUDKdl-fLo71Squ44,1336 +torch/include/ATen/ops/bitwise_left_shift_meta.h,sha256=MULPWugoHVhjYNdFq7jsFmgdaqkIP3HradZ6FTWADUU,866 +torch/include/ATen/ops/bitwise_left_shift_meta_dispatch.h,sha256=B3Qahb2LvZP-FIkMshMfJrH-q_rO-2G2GER8Fnibnoc,1336 +torch/include/ATen/ops/bitwise_left_shift_native.h,sha256=AmYhQHzJb6JBwkh8EBTWxEDQJrKbAIlFGMLIPcnzWfM,1438 +torch/include/ATen/ops/bitwise_left_shift_ops.h,sha256=DIOuexY7sm3VkHrdPorurBKRDCNeUeE9wMWKl0pveDA,6223 +torch/include/ATen/ops/bitwise_not.h,sha256=3cQohMDKPaXDYE0JkJp8RkAlqbc9_khCNaPLrk2hqVQ,1331 +torch/include/ATen/ops/bitwise_not_compositeexplicitautogradnonfunctional_dispatch.h,sha256=U_0i_TRsnmBcy-c8o6sjQrsMG3ayYfCbUOMLx4m0Yt8,1105 +torch/include/ATen/ops/bitwise_not_cpu_dispatch.h,sha256=P86aJOqHlqGt4BcgvxMJfbIEdlfIteDMDOKIZNaUuNU,1202 +torch/include/ATen/ops/bitwise_not_cuda_dispatch.h,sha256=wenskXlaBh2-u9nvfLAbB-InMrvQUitGMJPZcM5LzrY,1204 +torch/include/ATen/ops/bitwise_not_meta.h,sha256=-kKMzUjLBcqaRZe9yZcsxz_ylVHP1hjiPmtQI8_4pws,826 +torch/include/ATen/ops/bitwise_not_meta_dispatch.h,sha256=NlWbzqh8U4bKHuiGjfKy0rLktQnCIbi9PgZka3TX5lo,1204 +torch/include/ATen/ops/bitwise_not_native.h,sha256=rX-_LvhGQ8sW_yUBNOQvAdDdfFkVn-zNFVbu6BGveiQ,865 +torch/include/ATen/ops/bitwise_not_ops.h,sha256=t9kYlpM7xHdcHcudtWbjUn714J0tgUwJQD_PLYUdOoo,2345 +torch/include/ATen/ops/bitwise_or.h,sha256=t5hFHyg1yXrz3hx3HMUka6gk3mxkOaUJDFaocZcqFiM,3034 +torch/include/ATen/ops/bitwise_or_compositeexplicitautograd_dispatch.h,sha256=dvye_yu_Ssr7ka2cU031i9MqerD0RIYxtM7rb6Eos0U,1647 +torch/include/ATen/ops/bitwise_or_compositeexplicitautogradnonfunctional_dispatch.h,sha256=6m83NqXR_FlMI9EYhP2hsQLSDe8AFHC3k6sFf1Ro1EQ,1155 +torch/include/ATen/ops/bitwise_or_cpu_dispatch.h,sha256=xroX9NVDO-bNGw74l-UeHWWQwIjzQ2cb4VZILCtK48I,1302 +torch/include/ATen/ops/bitwise_or_cuda_dispatch.h,sha256=XwYo5OPNzZMi0A-6PTLlqg6aU-f_zuFz4OimrrVChX4,1304 +torch/include/ATen/ops/bitwise_or_meta.h,sha256=t7r4cEqy1i1T8TyxVLOVmsYSGk13RK2xr9SJh-oPdWo,858 +torch/include/ATen/ops/bitwise_or_meta_dispatch.h,sha256=ViNKm8QcwlpYwSF0g2Y2GmF3RAEv0WZ-YjBf6frxAh8,1304 +torch/include/ATen/ops/bitwise_or_native.h,sha256=X1-J9UPXTLgPQYSgGxSxkijM-3jl1-6aQNNyvVotTdo,1374 +torch/include/ATen/ops/bitwise_or_ops.h,sha256=Ec9AlsHaY_UzJDwnu102BDYWTHDaatla1QyYVacz2Ks,5968 +torch/include/ATen/ops/bitwise_right_shift.h,sha256=ZSRJoCZoRYRgpghFYRdc2ynvw8S8FgVu6MNUynu7Oqs,3328 +torch/include/ATen/ops/bitwise_right_shift_compositeexplicitautograd_dispatch.h,sha256=65j4-CNKmDKmTKpvpsaP663aegfkYud7fIMTR21gjXU,1710 +torch/include/ATen/ops/bitwise_right_shift_compositeexplicitautogradnonfunctional_dispatch.h,sha256=6cKQhbj-sKPCs6dsGJKWjHel-hA6jF01IEU2KXt-n2A,1173 +torch/include/ATen/ops/bitwise_right_shift_cpu_dispatch.h,sha256=i5g1QTRgkgxhL2SknTA5MOKDpCCJnkzp6LuJuAl5vao,1338 +torch/include/ATen/ops/bitwise_right_shift_cuda_dispatch.h,sha256=fEmaX4tcc5fb_zfE_G_ApB5FgDmfr7mCh8kznfxGQxs,1340 +torch/include/ATen/ops/bitwise_right_shift_meta.h,sha256=VZv8tNQCJepr_JI6ErlaXPUOtQyqyuHTx8kLAU94as0,867 +torch/include/ATen/ops/bitwise_right_shift_meta_dispatch.h,sha256=RP3QitT4gOr9VZ82o2R0kx285mWCyNR6Ymp42-sSmYs,1340 +torch/include/ATen/ops/bitwise_right_shift_native.h,sha256=j6qgg5CKTZ8M_vFc64mae_DoVm_hcJfri-w9GUvGsMc,1446 +torch/include/ATen/ops/bitwise_right_shift_ops.h,sha256=QYuDcJsQQPGKQ66FB2cQWf2TGAH-hvKnikXaF1Q_nFg,6247 +torch/include/ATen/ops/bitwise_xor.h,sha256=AqyGL6wXyy2ugK8oDDR-OVRlAlrg9FiO54i8RCcayjY,3062 +torch/include/ATen/ops/bitwise_xor_compositeexplicitautograd_dispatch.h,sha256=N6ShDRUxa5WrdUCAoqKYSWkbflXXFGFnAZwl6B2GsrE,1654 +torch/include/ATen/ops/bitwise_xor_compositeexplicitautogradnonfunctional_dispatch.h,sha256=38eTFTo0RP6Sj7Em-5-cxzOykWaYfmWOgnxF8uOkqvY,1157 +torch/include/ATen/ops/bitwise_xor_cpu_dispatch.h,sha256=kPj6XBUAhHpK01y98m4fB7hODoyFGgR4gSPoZsHRVh4,1306 +torch/include/ATen/ops/bitwise_xor_cuda_dispatch.h,sha256=2jJSLVWY0UgT7nYG3hXZcaE49KXBeQ43HyIZiqAOb8s,1308 +torch/include/ATen/ops/bitwise_xor_meta.h,sha256=4JR5wmov_3T8yyuoelc_Y927wRZVq4c7dego6s5P9rI,859 +torch/include/ATen/ops/bitwise_xor_meta_dispatch.h,sha256=o4doeAJae5xyHDJaCJxmM2LGW4TsAgCuAihFAwdYzEw,1308 +torch/include/ATen/ops/bitwise_xor_native.h,sha256=JTZ548ZF52GpEkAiIoJmjB3H4DoeaBT73M5OBfmaU7M,1382 +torch/include/ATen/ops/bitwise_xor_ops.h,sha256=MnweymakQHl3y9b0RU7X1aO8LGl7JTJFqINA43pcu9A,5992 +torch/include/ATen/ops/blackman_window.h,sha256=PJ4BiS7fkTgWl0apKCorR4iwPBkShSCs0QEFt5kexFs,3671 +torch/include/ATen/ops/blackman_window_compositeexplicitautograd_dispatch.h,sha256=aPYzSx0LmDokm3rPloJblKuSdXW-sGOpFDR5HrKd2LA,1960 +torch/include/ATen/ops/blackman_window_native.h,sha256=FNQyxSNQSBVpAh5irIOeAa-izJXkWs3PgKkKBo6YU1g,1321 +torch/include/ATen/ops/blackman_window_ops.h,sha256=-iUzN9oqi0AfgJo6L-vi0glRSaN4IH_n4ZfWcRe0Jb8,4110 +torch/include/ATen/ops/block_diag.h,sha256=Cep1xA7-_a9eLh5NrLfoSlgXpaNHsJDcHIL-6kd12nE,1342 +torch/include/ATen/ops/block_diag_compositeexplicitautograd_dispatch.h,sha256=ZYMRhzAt-9RVShw9E_oW5sfjANvNj0-7HQqrrOBZ-ng,1184 +torch/include/ATen/ops/block_diag_native.h,sha256=rit_2uwtA7HJ_ZAyp1aRuNPVZnN5VIvIXUvLBwaV_Ks,814 +torch/include/ATen/ops/block_diag_ops.h,sha256=JMzfvH6Nbr51898ww9jFzdlxng6FJTcE34ajAI3KZyQ,1823 +torch/include/ATen/ops/bmm.h,sha256=YE5pesQ8-LICeGtu5rwUCKfZwJrQe0KLVYULDNltfrM,2226 +torch/include/ATen/ops/bmm_compositeexplicitautogradnonfunctional_dispatch.h,sha256=ewnx2XAt0IcPK_wkWKKtmepuyJ2aYwIqVbdMneXRpYc,1066 +torch/include/ATen/ops/bmm_cpu_dispatch.h,sha256=H_7IrlmbZpy0GEbX5D2ROi7gSRuqB5AUMDN3O_yZH0o,1197 +torch/include/ATen/ops/bmm_cuda_dispatch.h,sha256=qpStrLwVgPekY8YmvyzPVFm6gGQbH7u4-TdxZ96Uhhg,1554 +torch/include/ATen/ops/bmm_meta.h,sha256=7vvi-eZOa_KSehwvGe2JoCtBORXG2OumHWSTDMDbwoc,843 +torch/include/ATen/ops/bmm_meta_dispatch.h,sha256=bA6Lf-9SSmaQA8NmTSZqHB6bNhYhSV37MpZsE8yJHI0,1199 +torch/include/ATen/ops/bmm_native.h,sha256=3jbVY0aFvauu3JwXCapJCqtc28pf6rm7Y7CUEeHNAXc,1972 +torch/include/ATen/ops/bmm_ops.h,sha256=y0VtT8Uvpj2vsyQ0C2qU0095ePztLntxtK5yZU3x0nA,3402 +torch/include/ATen/ops/broadcast_tensors.h,sha256=JoP7HiuHIYoyXqbDxyjAmJ8Q857aaRJIVR5lEGq2Pyw,959 +torch/include/ATen/ops/broadcast_tensors_compositeimplicitautograd_dispatch.h,sha256=OXMeBBMcXQHsk-Ft353kmJQnuYteb3FxJ0zexnHBp44,1043 +torch/include/ATen/ops/broadcast_tensors_native.h,sha256=q0T5QQa0bFlY6CHaNlkQ22Br6E0vvykNQ-kErS7XY8k,755 +torch/include/ATen/ops/broadcast_tensors_ops.h,sha256=dm2WeOnCxxmONgbID734Lk8PK4qz67MVNAiBsY93qLA,1290 +torch/include/ATen/ops/broadcast_to.h,sha256=xUAhNiHus5FE66lcTbtap3rtky1qIwBtDZ1z4H_iPs8,1705 +torch/include/ATen/ops/broadcast_to_compositeimplicitautograd_dispatch.h,sha256=jMK3yT5Q-9W3CXEKHBSW_oTUraOWY849XK44BqMrD3E,1139 +torch/include/ATen/ops/broadcast_to_native.h,sha256=KDSLk201EBwRnexlAVYjm0XrpsofzAS1-rsg2jmbaGU,769 +torch/include/ATen/ops/broadcast_to_ops.h,sha256=H8AQD-XoKRg2aFd7rAnaXzRWSjSgr5tQjQcV0R4g0Qw,1323 +torch/include/ATen/ops/bucketize.h,sha256=CrAisMsWIsQPwD999GLAFf-r2yR5AX-gGx1kCj1LSXA,2889 +torch/include/ATen/ops/bucketize_compositeexplicitautograd_dispatch.h,sha256=8AlSkC7dBTgN1hyAKqwHvsjYII_msXh0auzx2ba_R4E,1257 +torch/include/ATen/ops/bucketize_cpu_dispatch.h,sha256=bU8i1pR8phE1FOITliaAwa_PmLVq4zqAMxMSqTAOYF4,1469 +torch/include/ATen/ops/bucketize_cuda_dispatch.h,sha256=wZHCh8wert8awZey9TbYhR5KPxwQRD_qGJSzmlxAzJo,1471 +torch/include/ATen/ops/bucketize_native.h,sha256=OCaJ_Xq6Y6kszqdO4-TT9ipjaOq7QxD-7PVVU4dLPmk,1642 +torch/include/ATen/ops/bucketize_ops.h,sha256=5CVTumNf05JifGSCsVRUdHTG5abJVg7pVnXEf7Y4sPo,3851 +torch/include/ATen/ops/can_cast.h,sha256=71vNOsb8uJtHpnn8w4U2gWVHXsOmW3TzP70vMjqiHw8,932 +torch/include/ATen/ops/can_cast_compositeimplicitautograd_dispatch.h,sha256=xwwIEuliU09wyo5A-m2BKy7rWrZ8xiXX-B1__ccpa7E,1030 +torch/include/ATen/ops/can_cast_native.h,sha256=AgwnlPvwSosVqt49JSHq2G0mmxKBinXrV9-IftPYESY,742 +torch/include/ATen/ops/can_cast_ops.h,sha256=xIXV1rmHMZXczKGXp_fXbXhVyB1QBda5u-GTStDu_Y4,1261 +torch/include/ATen/ops/cartesian_prod.h,sha256=M5-Q2uCjPP-0X7ag8A8Ps2qX2uWH2I4hv5y7A_o80hE,930 +torch/include/ATen/ops/cartesian_prod_compositeimplicitautograd_dispatch.h,sha256=vd3MNkCWCabbAC4Cdj1--ThVG8Uz6Zn8Rt0VWXmCYe8,1025 +torch/include/ATen/ops/cartesian_prod_native.h,sha256=mmBRBCffrZfT7yuk1DyKe3FH0UFaozFDG5JAS4Ga7Wc,737 +torch/include/ATen/ops/cartesian_prod_ops.h,sha256=j90wDadDEV--q9-S1sp7zyafjew60LESBHBfmK3Y95Y,1234 +torch/include/ATen/ops/cat.h,sha256=nRl_af61gCbEfIyWfX6Y-klna6QU4RHRKUsnJ9c4uIc,2059 +torch/include/ATen/ops/cat_compositeexplicitautogradnonfunctional_dispatch.h,sha256=alQw12v-X-6Hi696dM_nBlgJT1uj6eJnIwG_vY-rqDM,1067 +torch/include/ATen/ops/cat_compositeimplicitautograd_dispatch.h,sha256=pZFMdtlLNJOERvwAFai56LM2KeEJIxUT4ChLUd1W20Q,1214 +torch/include/ATen/ops/cat_cpu_dispatch.h,sha256=t3bHA5XTrHVOZ9zkq-oLJPHcp5I9diRfHQT6Zs_kZ6o,1198 +torch/include/ATen/ops/cat_cuda_dispatch.h,sha256=4SEMu4cZhcLSm3BSz8jTQ1HvEc8ogEPhKzkIvBM2q7E,1200 +torch/include/ATen/ops/cat_meta.h,sha256=VlMv2ne_DNklqcrQGoRQTDQWKtn1AEDQKXuhF-FeggQ,5060 +torch/include/ATen/ops/cat_meta_dispatch.h,sha256=KPwkwoPyp7FKJvBT4cK12Cly9zvleXTJQJ3EKb31svg,1200 +torch/include/ATen/ops/cat_native.h,sha256=NwRR27UW8qv2dTRhpz5z_Msl_LAKUPKHzcCOJQR6oWs,1805 +torch/include/ATen/ops/cat_ops.h,sha256=BoUzPbrjxNw3HhYU4yy-mZuWuOQND9W8NEPN_i55VDE,3170 +torch/include/ATen/ops/cauchy.h,sha256=BdUIyMufrVKZdcdtycSa5c9yxR7pOq8TjyLP1Q3i0Cc,1787 +torch/include/ATen/ops/cauchy_compositeexplicitautograd_dispatch.h,sha256=MqWVRW9raVK2Px8H7X2QoPtllCZwieulT5zG8OOF8Fw,1426 +torch/include/ATen/ops/cauchy_cpu_dispatch.h,sha256=Lq83Czdk3o1OptTQIevDfVfUF12ILII85d--DAeozQw,1061 +torch/include/ATen/ops/cauchy_cuda_dispatch.h,sha256=p27VKHIPdJ4bO3aaPj55O_-ARbPny9DWmiS46I-xkT0,1063 +torch/include/ATen/ops/cauchy_meta_dispatch.h,sha256=4nxXRVBGeTk_9C4WebFxgl6ukrnojYBjYbXB0f--tbY,1063 +torch/include/ATen/ops/cauchy_native.h,sha256=tWtRqn3-8LBgzbjZfkN9MGdTidUqXy6bGR9FnOyA1Ho,1110 +torch/include/ATen/ops/cauchy_ops.h,sha256=3x6VNCI7BVbuYnPxl4zqzhI_z_VXlR273MVzE7JEpC0,3050 +torch/include/ATen/ops/ccol_indices.h,sha256=MrORAXn8d13FtSy6pNyJrlwrOeybly0_xSA1sGH1OpY,763 +torch/include/ATen/ops/ccol_indices_compositeexplicitautograd_dispatch.h,sha256=cDDpnCkXfXjVfC_ozwJkFNDgpZcOs19C5OWe82xUPno,1024 +torch/include/ATen/ops/ccol_indices_copy.h,sha256=17AXM43zKwwmSuw0oAbMTGDKbDgq73kMXZgnFDrkFF4,1391 +torch/include/ATen/ops/ccol_indices_copy_compositeexplicitautograd_dispatch.h,sha256=iZ8H30ey1RQ9XyY0zbF-Y3CdVZP8oHSQwabAZjAeHZQ,1143 +torch/include/ATen/ops/ccol_indices_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=WX3Aj0RNJpz1tPdGsplgKmiqpO1N6V_okzh2LpW68_M,1055 +torch/include/ATen/ops/ccol_indices_copy_native.h,sha256=jWiE8EgNtDtJkLewzxo53wHTG9oGkudcAuM5FtGUUKU,830 +torch/include/ATen/ops/ccol_indices_copy_ops.h,sha256=ne8hlbcD2XuXFCA5D21a5KW6KjF3xxaBEYewX1sIOek,1867 +torch/include/ATen/ops/ccol_indices_native.h,sha256=JF974sn-ATcW-hgdihkDhoSgCSjK_P5MX3K5W6Ks2Dc,815 +torch/include/ATen/ops/ccol_indices_ops.h,sha256=at44EkIDqFfngxWzvbo7_3EzRD-tg4qRcdNOXEHaVt4,1235 +torch/include/ATen/ops/cdist.h,sha256=iL5d45RRMRSkOQTRE4ZDwBT6BRNfUsWlpN8VQmaa9W4,1037 +torch/include/ATen/ops/cdist_compositeimplicitautograd_dispatch.h,sha256=pBXsj8yog3cQ9cfkrKLFFqg6HiQ8nj1I5JKrsJ2E5Rg,1104 +torch/include/ATen/ops/cdist_native.h,sha256=flat0EyF91YkuiDS38M5UZZPK8qcwN4TInyrxrVkZ5U,816 +torch/include/ATen/ops/cdist_ops.h,sha256=m4G5nSXG6nGcyTMb5JXQ-ykT5LdHG6Ke0Bo3RH4B1_8,1446 +torch/include/ATen/ops/ceil.h,sha256=MZlrN_eZCy8l01wqQWMtGh-6oTCXJF-JH57tFdSgzIs,1397 +torch/include/ATen/ops/ceil_compositeexplicitautogradnonfunctional_dispatch.h,sha256=ESqG0tWQwMmnZ3VPWGke2DPIYIW8TFHIQlP8CrOzoBI,1091 +torch/include/ATen/ops/ceil_cpu_dispatch.h,sha256=XcPCA7xm67Jgp7aKc8RSuSKvLdXPJdnY81ZfYoBDK6U,1174 +torch/include/ATen/ops/ceil_cuda_dispatch.h,sha256=8sLQ4KG3gKTn2SMs6fR2oKSiryfD4mGiEl97Y6Yr1HM,1176 +torch/include/ATen/ops/ceil_meta.h,sha256=iUeIRF6NOMnJU8tC7mBfd1ptLryj0Ge0YF90mLXaV9c,819 +torch/include/ATen/ops/ceil_meta_dispatch.h,sha256=LS39p9XGcg8ZEtX_HwFbqH8MmXgVeurZJNrfkGNENyk,1176 +torch/include/ATen/ops/ceil_native.h,sha256=8V3OfSrNH2aPRls_WtJn4E8G18pzj6l_KdT_SQ3sptg,1252 +torch/include/ATen/ops/ceil_ops.h,sha256=rH-B9IMGmb8ZTyd-T-Ezxem7XUCacUOY4zukuApKVa8,2282 +torch/include/ATen/ops/celu.h,sha256=YI9cBTvXttj5BnX1b3eRKOS4z0J0QMBWKa4yozJNG3o,1613 +torch/include/ATen/ops/celu_compositeexplicitautograd_dispatch.h,sha256=e6fi2FW8mfJSISx9q9IYcnFXR7xyjNShRgczwIl85lU,1334 +torch/include/ATen/ops/celu_native.h,sha256=4DIKLYcIq-5U7kBZH5FdvS1lToV53FCKiE8IFljyg78,939 +torch/include/ATen/ops/celu_ops.h,sha256=E-MukROShG-br6H3QkH8pqDitFUVRmgaIwbPcksPJ2k,2552 +torch/include/ATen/ops/chain_matmul.h,sha256=zyyGGVzI2eN_iHIAPrpU3cFYApy4PP6r4kVXR1YJFSA,1371 +torch/include/ATen/ops/chain_matmul_compositeimplicitautograd_dispatch.h,sha256=LZDPowO23rjc0c1-zkARFLHnq8TZnmK5YzKp_SPESmY,1193 +torch/include/ATen/ops/chain_matmul_native.h,sha256=rMlxporPAKKMdkMI7ohRLq-MZlvqrJNGDNmdfJRnHLc,820 +torch/include/ATen/ops/chain_matmul_ops.h,sha256=HoBLWIluXSfDr7c508vxt0pbzLxdwcAcPe9rITZ-uzM,1841 +torch/include/ATen/ops/chalf.h,sha256=73gO9KgAAnuO-m_4QZfBXC7EpTagK4ezsyObERuXS4o,756 +torch/include/ATen/ops/chalf_compositeimplicitautograd_dispatch.h,sha256=ffBzHy3md47Touge699tOB8jB1odq_fwGQR7TTOm3CU,1081 +torch/include/ATen/ops/chalf_native.h,sha256=YOYoP1QPha3ctTVzyByWHpYvcMca7HYuA7QsWPJisbo,793 +torch/include/ATen/ops/chalf_ops.h,sha256=QnERIcjkeMe80gWW3UAaIJLJFvGTxyNlaiXZm0qPNYk,1378 +torch/include/ATen/ops/channel_shuffle.h,sha256=nxFwNSgOS_oGczkr7i5tPzbWSMTQWhJsQugHvMw7v-E,3820 +torch/include/ATen/ops/channel_shuffle_compositeexplicitautograd_dispatch.h,sha256=_zPnnmChxjcyqxS_D4pQIQ2G7mjn2ZlPAEPc5-DwjTM,1400 +torch/include/ATen/ops/channel_shuffle_cpu_dispatch.h,sha256=7DXG7HBcAQgWgPV7O0ock0eQEsuXdPhtiwSSGg2GSbU,1089 +torch/include/ATen/ops/channel_shuffle_cuda_dispatch.h,sha256=IazzCupurAWVn-TO-RJsPzer3J2FohryAIf3gh4YhOI,1091 +torch/include/ATen/ops/channel_shuffle_native.h,sha256=T6ybPlxvYtuK6GU_lPCskPxhVVHgTF4jU6izLumjuIU,962 +torch/include/ATen/ops/channel_shuffle_ops.h,sha256=2RZPliQ-ZeEOcizh8KEaDDRfQhfNcydx_3tQzb5ks4Q,1991 +torch/include/ATen/ops/cholesky.h,sha256=Uaij77awWE2Ot4geSe-QcHgyH05pkp9pP3er_EBbHm0,1424 +torch/include/ATen/ops/cholesky_cpu_dispatch.h,sha256=4sqoTMBPLYatr7pJyhRnoA6bCukT0GifU1SyfE0dHSQ,1185 +torch/include/ATen/ops/cholesky_cuda_dispatch.h,sha256=ybDa9JiGC8o1lNcHsRWvA2RIIxrniNSlgCKdmPW6krY,1187 +torch/include/ATen/ops/cholesky_inverse.h,sha256=vQctG1lXwosH6Zue4rG_axx8Dnus5A6tsyuqPRzES8g,1504 +torch/include/ATen/ops/cholesky_inverse_cpu_dispatch.h,sha256=K6-_o3HxbnZ-xZd7qmKhpr_-PKaK-dxONirdojaj38U,1209 +torch/include/ATen/ops/cholesky_inverse_cuda_dispatch.h,sha256=t1QWaKsQLaECeDi9b9XC4dRhAjQ1V4ut6JA-oVDSAm4,1211 +torch/include/ATen/ops/cholesky_inverse_native.h,sha256=vg-HrtoYqPxfNYZ1YKRWMx9mbcwThGQ5PwTZ7DydjbA,858 +torch/include/ATen/ops/cholesky_inverse_ops.h,sha256=_B8IvLKeTQKb3L5hixxtPFCBRj1eoa7nnGaEz5H4yy8,1957 +torch/include/ATen/ops/cholesky_native.h,sha256=cRO2WioemDedhUwnyY1tpwgUqzgZUJ-LvbC_QD_qH0M,842 +torch/include/ATen/ops/cholesky_ops.h,sha256=kHUGK6p30wpjYid1E-arHZMeep63hvJMTXdZ6HLveNc,1909 +torch/include/ATen/ops/cholesky_solve.h,sha256=NxFAUNS0fwuBwiK0l96D5uAFJc6EO-unoGvZL9Rd3jo,1634 +torch/include/ATen/ops/cholesky_solve_compositeexplicitautograd_dispatch.h,sha256=bWQ2HdHF6fm8dU0BeOxtZdTmwuDsWJShRpXkD8zv21g,1328 +torch/include/ATen/ops/cholesky_solve_native.h,sha256=sF3hXLhlwzX1DcCIn4ci52JFuHayrINlQRJKUChGLAM,908 +torch/include/ATen/ops/cholesky_solve_ops.h,sha256=FOc6SIqOTkge-qjztG8h_NowBx3XMhlIBQhI1uoUz04,2123 +torch/include/ATen/ops/choose_qparams_optimized.h,sha256=9gYjgTdh05Ja3Z47oBpaZSsAROZAfoABhRiShk4Zep4,1149 +torch/include/ATen/ops/choose_qparams_optimized_compositeimplicitautograd_dispatch.h,sha256=jzMyOWmFIVMzBYvpHS0UBsVpssmK9IzQdOy5v6OXv88,1126 +torch/include/ATen/ops/choose_qparams_optimized_native.h,sha256=oyMpO6bW5uEQI-YGpGHcqaDFWeZy4-JqyEeFfrmcPh4,838 +torch/include/ATen/ops/choose_qparams_optimized_ops.h,sha256=L_s7Etg6S2ajIJcsnrZHkMf_ZLeKmhipiA_2qk6cZFY,1567 +torch/include/ATen/ops/chunk.h,sha256=di92a3s7psLitFXkeDnjxIeeUUQxbjqpCfho9HHbP44,982 +torch/include/ATen/ops/chunk_compositeimplicitautograd_dispatch.h,sha256=kBhiQa73y2mOFJgygD2kNvVFcO2xQx-TzXRfUW1vRAA,1063 +torch/include/ATen/ops/chunk_native.h,sha256=w1NwgHvt4j-bVWJBQnPz2NDP7a_SPyIQaKJNpNan67E,888 +torch/include/ATen/ops/chunk_ops.h,sha256=I0tHF_LYU3PRK4QQ_XwofsxhrZ7mLUDMQbGuRKG0xpA,1365 +torch/include/ATen/ops/clamp.h,sha256=UjXuzQ0rQ5D9rX0eOACfToNSlFfzc0XIMs23eua1DkM,3208 +torch/include/ATen/ops/clamp_compositeexplicitautogradnonfunctional_dispatch.h,sha256=n6YpO8bwivt-zEz-fIB8mUlqPQe0Y2nO7eJfYO03xLk,1566 +torch/include/ATen/ops/clamp_cpu_dispatch.h,sha256=PfM0xYbc1KvJ_02tJV5di2Z90d468QWCwInaoWNSGAE,2155 +torch/include/ATen/ops/clamp_cuda_dispatch.h,sha256=PQJ_ue1XnHv_apNUTV6haBEirNZbM6HxkgyUejRXnOQ,2157 +torch/include/ATen/ops/clamp_max.h,sha256=o3wVpB2NXwKWEQK2t6eeQ_-3JVdtyzZs8OjF77kNCNA,2549 +torch/include/ATen/ops/clamp_max_compositeexplicitautogradnonfunctional_dispatch.h,sha256=ie0z3Tye2m4vSMwWGngxVCd3y1HYipBORB0Oc75o5b4,1308 +torch/include/ATen/ops/clamp_max_cpu_dispatch.h,sha256=At_nCxGYaphAWyp_w-Tmsk8bJjeXUGcAv3REtTidFyI,1660 +torch/include/ATen/ops/clamp_max_cuda_dispatch.h,sha256=DVRXnKqGD3zERN8HnZPwmMLgy_7MciGlTMpHTM00jQc,1662 +torch/include/ATen/ops/clamp_max_meta.h,sha256=9hHVBEOfmV_ij_ebRX8xIOhMZ7vrBXJFbpJC5fiRJUE,992 +torch/include/ATen/ops/clamp_max_meta_dispatch.h,sha256=EDbmTNOE2EGTzQBXWxnwzhkxnmfUyGfn44FCt6Hay9M,1662 +torch/include/ATen/ops/clamp_max_native.h,sha256=dtVsGAXFhlmUj6Ygzim_D2wFjgcNr7j27e8zSvjN6Ik,1068 +torch/include/ATen/ops/clamp_max_ops.h,sha256=aoyJor9rPU_AAubt8zg1xITFEZ1PQr_2VU5uDlIDlbo,4484 +torch/include/ATen/ops/clamp_meta.h,sha256=Ds3LVlaysfz2ifWHtz9CeVlbtJjKIUTw7V8YxLFCeMk,1044 +torch/include/ATen/ops/clamp_meta_dispatch.h,sha256=0SejF_mlB6RvOOF5fw4FAIE6VVURJ-UqPwyAfdIPOu8,2157 +torch/include/ATen/ops/clamp_min.h,sha256=BnxkOAUPJ22OCQxJXd7JiqIj69_oPRVR100zX_cD7S4,2549 +torch/include/ATen/ops/clamp_min_compositeexplicitautogradnonfunctional_dispatch.h,sha256=YTVWNqV2kSnRehIgJgudxzq0bCXdExG4ygEy5oHphBQ,1308 +torch/include/ATen/ops/clamp_min_cpu_dispatch.h,sha256=TuWQLiy1LK56pDowJMELZGTlKfrrSFncswIM5sEHnd0,1660 +torch/include/ATen/ops/clamp_min_cuda_dispatch.h,sha256=3vXAxTpXxhzYhEBWOlQq60Mhz3DtRBiY5qx22SWHKg0,1662 +torch/include/ATen/ops/clamp_min_meta.h,sha256=U2F4AF2a9goEe0GdBUX98HAJLra1YUcM8qNZd-BdVDg,992 +torch/include/ATen/ops/clamp_min_meta_dispatch.h,sha256=AXd_XLt2rSTQymwAUXpUzQPOdcl9v9qsMovL0TCDIJE,1662 +torch/include/ATen/ops/clamp_min_native.h,sha256=GOGe1C_U2EPdS5vVcbQGXg77kTpYcFP53_tdRXC7vzc,1068 +torch/include/ATen/ops/clamp_min_ops.h,sha256=FL5-taE7AEWGR-yxjBROrNhxE_5pCVFyRXHp1Ftclc0,4484 +torch/include/ATen/ops/clamp_native.h,sha256=mEKETr2TkqT2rEaLlc7uLaVEvELBoI7Dr_P1coUxwU4,1287 +torch/include/ATen/ops/clamp_ops.h,sha256=H3sSF5XmbjkphNtc3my4rYbCGKbySr4YG_5RiFSw0R8,5576 +torch/include/ATen/ops/clip.h,sha256=3V16PBHRjwbL9wzdqltDmelX5wGauKlWQh3O6VUwckw,3183 +torch/include/ATen/ops/clip_compositeimplicitautograd_dispatch.h,sha256=oxTmHj_LAts0BA-AeXK-I5eaVjKHKR7_YVAPifoxRg4,2191 +torch/include/ATen/ops/clip_native.h,sha256=g02MmUoCVfZm9yT_tgU4fFFuhURIkYGc56sl1xanMwE,1594 +torch/include/ATen/ops/clip_ops.h,sha256=BMe1Eug03Rd_tT5LNVHWLUhsYJnGelGggU8BVmpjZtk,5558 +torch/include/ATen/ops/clone.h,sha256=Je3kkQsjxF8s81wb04JH5JdTuHyEyNiEm5WVIF83lwY,1598 +torch/include/ATen/ops/clone_compositeexplicitautograd_dispatch.h,sha256=rsm9snOz_SL9yq2hyPNB5_yAZfy9uubUmtpaQYjo-l0,1349 +torch/include/ATen/ops/clone_native.h,sha256=E4-AIzJAnFDZpb3BjJM_OarNr98sONJCB8zEz9uuG30,1553 +torch/include/ATen/ops/clone_ops.h,sha256=ACo6tfe7mU5hFS10nsTEH-ncIFl72a3yoMfDy7f_BWQ,2132 +torch/include/ATen/ops/coalesce.h,sha256=HUkBjCZQkbHlMqAEYxB10EAA23R78zYeuV1PNzXMmo4,759 +torch/include/ATen/ops/coalesce_compositeimplicitautograd_dispatch.h,sha256=6Fj3vK8f-ZEBSu5coJDVDp_WBAGncjA3MLz8zhwnzI4,1020 +torch/include/ATen/ops/coalesce_native.h,sha256=yNALkZe7lLS0KsWXyhWjZ5QH3cQequU5QqccUw-pkKc,732 +torch/include/ATen/ops/coalesce_ops.h,sha256=Auzn3fDPZT_VNhDZXrCO2RyfKUF9N2PcSAKFdqh3GY0,1223 +torch/include/ATen/ops/col2im.h,sha256=XUy5OcXDjvF4ksnYcAxHnm2j0cyo9-PgE_f92tJAiPY,6097 +torch/include/ATen/ops/col2im_cpu_dispatch.h,sha256=ACKydLEcP4Bs1gr0xyGkYJku9YYXKZh-j8uXG-EUohY,2173 +torch/include/ATen/ops/col2im_cuda_dispatch.h,sha256=8RPo9Y6xqy1jF7b5o179NQfTpjt-eaGUh4DWhz--6Jg,2175 +torch/include/ATen/ops/col2im_native.h,sha256=D2HQeIPCJdCp2sKqGEeXVRfdzre7V_Dq9biCP2JG45w,1490 +torch/include/ATen/ops/col2im_ops.h,sha256=Fg8Tn2LvYSSg3v-p1acri_GpILMVkwPqFWcDCMdcP8Q,2709 +torch/include/ATen/ops/col_indices.h,sha256=UhTewJI5Tpahhah9dPtO7BU67xBGt7LIkK59l4AaPZI,762 +torch/include/ATen/ops/col_indices_compositeexplicitautograd_dispatch.h,sha256=LS3kwnTww5m3Efh1zoVKFlQXwdmEZDfKR7I27Uac150,1023 +torch/include/ATen/ops/col_indices_copy.h,sha256=qbGGfEICE83iwHB8puIyOP42da9aJLGz9LRH_qmd2MI,1381 +torch/include/ATen/ops/col_indices_copy_compositeexplicitautograd_dispatch.h,sha256=KpAD3-aDYpp0EbXjcajvLqRFOFrbiDHLtbp173yN04Q,1141 +torch/include/ATen/ops/col_indices_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=kyvz9dAp3ANmLT_wZ7U8HFop_HMNhWEwTTTOlK0NmJU,1054 +torch/include/ATen/ops/col_indices_copy_native.h,sha256=jG5QInHHTj01b5Czda3_Hmy--j0lcq9EawEm5Mc0GZw,828 +torch/include/ATen/ops/col_indices_copy_ops.h,sha256=uITUMZ_j1lJ0_ae2EU9yhcC6DagGLwH5dMm0PwcWrH4,1861 +torch/include/ATen/ops/col_indices_native.h,sha256=tfghsI3m7QDgmCfVBJW8qLXwmWnaMZduzq_tYDtpKAU,813 +torch/include/ATen/ops/col_indices_ops.h,sha256=j0PeK4q8gFkUj4u-0l1QSlR5Fj1wsXtedcIhUNo04BM,1232 +torch/include/ATen/ops/column_stack.h,sha256=KDwlnOJFAZu7H1oMOPBr0ODH8fSKCmtfwJi6Xqu_EJg,1362 +torch/include/ATen/ops/column_stack_compositeimplicitautograd_dispatch.h,sha256=Vyun0VsVMi824UCKMMajcF6N2T2y8xEl8iYDcWDXQ5E,1190 +torch/include/ATen/ops/column_stack_native.h,sha256=BaW-d9f7JNXtnMfpYwhMdpyTqlrr-tC2dGGevCFHqiY,818 +torch/include/ATen/ops/column_stack_ops.h,sha256=eiVJjA_LdFlQYYxVRpp5SAGb0oZEFOPnjNTCBcAXsaQ,1835 +torch/include/ATen/ops/combinations.h,sha256=ro260zW4yd2SzHmHruOTgoay7DpW9u9K7-fD5GvMVs4,1016 +torch/include/ATen/ops/combinations_compositeimplicitautograd_dispatch.h,sha256=Rw5CyWsTL-m7flEDcRaS8BRQ0JklxENDIwU5V-ZpAbQ,1066 +torch/include/ATen/ops/combinations_native.h,sha256=R9nmXYkuCtUn9glitGGX5MSkU2Ot91vIwov39_aIkLg,778 +torch/include/ATen/ops/combinations_ops.h,sha256=p6GZTECy97kWxlSuyCk6mTecSovhW2AKmWQRJ1ncz5g,1350 +torch/include/ATen/ops/complex.h,sha256=DXkvUGeeVO_Z_Js2XQbFOt_w8LKwWHEF5z789oj_SIQ,1423 +torch/include/ATen/ops/complex_compositeexplicitautograd_dispatch.h,sha256=1dLCA_gDslLar-c3caO9G5ZEsvptzhwAFSpCxdiIq8M,1044 +torch/include/ATen/ops/complex_cpu_dispatch.h,sha256=6B04wdf3hbB0r2ojUWNR9sN5uIibNcYrpJj4Y2LEjkg,1129 +torch/include/ATen/ops/complex_cuda_dispatch.h,sha256=QCWuckNTjNDS0gttroxxLeXtFMLwAXevmTNHJewh_ns,1131 +torch/include/ATen/ops/complex_native.h,sha256=g4fyHkZ3AL7DgNSNl5twLCJevcr7FHYrIg1XG0XJXiQ,860 +torch/include/ATen/ops/complex_ops.h,sha256=XCIxK4uKqqPWgk9A-nhb8lu8zgo1xrjT3ippEfS0_-8,1973 +torch/include/ATen/ops/concat.h,sha256=4v_e0sFmmk7uIoe9W2N-wotSLRUkf0RZaqhLArDe-g4,2080 +torch/include/ATen/ops/concat_compositeimplicitautograd_dispatch.h,sha256=CJlt-qaz3Oz0z8agLvnDfpk7jMb015-DFwF_OnPEsLk,1474 +torch/include/ATen/ops/concat_native.h,sha256=XUHM-P5zogIM1J03CAmsphRkk9WDeVkSasBZaKvD7fc,998 +torch/include/ATen/ops/concat_ops.h,sha256=KUrbZ3dmCW3omeERK2wdHGX1eSpPl6QpTKW9pcjNd4Y,3134 +torch/include/ATen/ops/concatenate.h,sha256=sLzqg5d2Jn1H-tI0GpOw6jYH8es-DBdpmCPCqlh1xck,2175 +torch/include/ATen/ops/concatenate_compositeimplicitautograd_dispatch.h,sha256=MwaIQqoOt7WrfcHLrUU5s54t9M7v86DgrUCEM2upRLM,1504 +torch/include/ATen/ops/concatenate_native.h,sha256=I6OCO3zr5e4sZPkP8xD3Pxoy6fE7xJTsGSn3ixWm-eg,1018 +torch/include/ATen/ops/concatenate_ops.h,sha256=B64nL8t96vzEc9BIQpk30QZDdMjJQKxkTDKmDzAGHkY,3194 +torch/include/ATen/ops/conj.h,sha256=z5HYNIiMQFMMuPuSqQT3hNTA35iCEdiObeJkl8isvQ0,900 +torch/include/ATen/ops/conj_compositeimplicitautograd_dispatch.h,sha256=xaucZb3n9arlmBnnY8PS0G3m-DjQ_jM9QTk-ICKiICQ,1016 +torch/include/ATen/ops/conj_native.h,sha256=lKC1hFYihoj38yKKuTuvZAH1Smr7RK5v_wzRRI7rz2w,728 +torch/include/ATen/ops/conj_ops.h,sha256=dPIJq3gmsnkhqRFOotc2nRHDGMUdRG7MsDv7OznDAps,1211 +torch/include/ATen/ops/conj_physical.h,sha256=UB4Rsu_3y73FI7AFwvtADdzEu1H0pXZ6aX1vVeJAGfU,1514 +torch/include/ATen/ops/conj_physical_compositeexplicitautograd_dispatch.h,sha256=wBzpRJexVfkRRQK6PJ-dAqK3FJsCcXq1BB-WLgy7w98,1022 +torch/include/ATen/ops/conj_physical_compositeimplicitautograd_dispatch.h,sha256=ZFAdnLbq8GILHntlz1E44zUvFS11mk5u8DaeGmp2oyc,1025 +torch/include/ATen/ops/conj_physical_cpu_dispatch.h,sha256=xeWO_OvjgFG6uXC1wAYCCwtfSDooRiI_v96_zX_o3rY,1091 +torch/include/ATen/ops/conj_physical_cuda_dispatch.h,sha256=GOXaMFwmxZoPe-MCpSozemHfBp5ZNVCVhJh0VyOQt3M,1093 +torch/include/ATen/ops/conj_physical_native.h,sha256=GJDM-LZM6olX1S3WgwBcaqbIGxOL9etcgUtedQavEmM,1137 +torch/include/ATen/ops/conj_physical_ops.h,sha256=Kfej-QviSIPW9R16f7dozlD66lCIIphtQxEBTk2HjyA,2363 +torch/include/ATen/ops/constant_pad_nd.h,sha256=tky6JL56A-gbgo0p08GyhUSF_P-aktrLK3wlu88FEmQ,4502 +torch/include/ATen/ops/constant_pad_nd_compositeexplicitautograd_dispatch.h,sha256=9dBNnQvGLW-1W8iIqfjNHf1tv0L8G5Dn1AHkAPQFI-0,1763 +torch/include/ATen/ops/constant_pad_nd_native.h,sha256=IgjF-9RxQY95X5DMQ4d2yXEQYV8av2zFqfrYMpZtQBI,933 +torch/include/ATen/ops/constant_pad_nd_ops.h,sha256=iJqA0wExUBh8R-eRVniRzwZH_F9kYOkg3gM0GM0EHqU,2201 +torch/include/ATen/ops/contiguous.h,sha256=sEXG0CvdIqvTB4SJcgg_LVUyRL_hy4PmR7tyYPDQlao,761 +torch/include/ATen/ops/contiguous_compositeimplicitautograd_dispatch.h,sha256=Um986pl2vq-sZXPZNft5CIPVOk0uZiYKyXQzxExmkPA,1084 +torch/include/ATen/ops/contiguous_native.h,sha256=BC66UB4__Kuarfp-TDKdf49OET07QmJPxj9NlUuUrs4,796 +torch/include/ATen/ops/contiguous_ops.h,sha256=SU_Ieb_PAYowdvOn6gr3jrf36A_c_dJa9jcz-0sXVV8,1360 +torch/include/ATen/ops/conv1d.h,sha256=FpB3TnHXPpjvGvz6mKCcDnzuQXDZHtWwzQmLrPNzzJY,4774 +torch/include/ATen/ops/conv1d_compositeimplicitautograd_dispatch.h,sha256=E1kVxz-w09ZpFgZRC7gDQk8fYOXt1idJpnH8x8wakQ8,1950 +torch/include/ATen/ops/conv1d_native.h,sha256=pVJgyZkymCYvP_cvZhow6Ot5IXrQk8bXMdGTObdI-7c,1250 +torch/include/ATen/ops/conv1d_ops.h,sha256=umiymGU3Y8XrvBdzLpu5E_07LxclbKbhZknidJEjd5E,2931 +torch/include/ATen/ops/conv2d.h,sha256=CKXkJEMnUUPuiqVO4CwHGJbN-1-L1eCoMAefZDz_UP4,4774 +torch/include/ATen/ops/conv2d_compositeimplicitautograd_dispatch.h,sha256=HqsZ03dpQHCBFob6YuHiHWiW5irldJAXo3S4RspeqXE,1950 +torch/include/ATen/ops/conv2d_native.h,sha256=DDiIEflW4T-JigaF-dVM6mNtHu-YQNGmPWMH1-WKAF8,1250 +torch/include/ATen/ops/conv2d_ops.h,sha256=vrRBzu0Iy0kg3zkWxf1APHpZEn5xAk7Nntp-sYfUjQU,2931 +torch/include/ATen/ops/conv3d.h,sha256=e-2yGUt_74wueDE8ypyZ3er--3dxfxyZJ-60478MU-o,4774 +torch/include/ATen/ops/conv3d_compositeimplicitautograd_dispatch.h,sha256=rzC71YCme2QyW4gBsClhLYLSy5fRN7EA3lbSikpRQXs,1950 +torch/include/ATen/ops/conv3d_native.h,sha256=yXo626lnS_W5cPKADvePTtw87q4-Ejg3P6kVJGJ25g4,1250 +torch/include/ATen/ops/conv3d_ops.h,sha256=QBbDlg0mIWC68zezA2tchNdVjkWQIhqS0xpr-9OYd1s,2931 +torch/include/ATen/ops/conv_depthwise3d.h,sha256=xBLhCJAeR4u9tFpFhcPLj6-FnONlqYAt1Tkbl_FOh3w,7547 +torch/include/ATen/ops/conv_depthwise3d_compositeexplicitautograd_dispatch.h,sha256=PFn8ZwTtl5-p1t0srlrT0adDmMAlC87osa393cUTHAA,2056 +torch/include/ATen/ops/conv_depthwise3d_cuda_dispatch.h,sha256=oIvIzaDEozbkqL5gN-2XPYW9I5rL0DUHKXqpbXxsz2M,1419 +torch/include/ATen/ops/conv_depthwise3d_native.h,sha256=nqfOk9kjlW_n2WZNrNM8XsbxKHPHbtqIntfEykq-1k4,1202 +torch/include/ATen/ops/conv_depthwise3d_ops.h,sha256=1uSsEuesUy3mi7aRrvjv7M-DgFKd-1W9SA8VoN1rAQ8,3117 +torch/include/ATen/ops/conv_tbc.h,sha256=6YlWDXf20HAJFZ71ZTgAuWHFX3AOsrd7DhbcL8sRhlU,1674 +torch/include/ATen/ops/conv_tbc_backward.h,sha256=anLSiBIum1LcjCJw2y_w2jX0FoGGkwd_PrHWQ4JWcwI,1157 +torch/include/ATen/ops/conv_tbc_backward_compositeimplicitautograd_dispatch.h,sha256=J-VS2dIXFgdAzkkBI-TYIKE6qz-BI6YtH9w73bJCwpQ,1156 +torch/include/ATen/ops/conv_tbc_backward_native.h,sha256=lC4eZS70oacOuU4ruvttcQat0qFIQosT8bm99PETjpU,868 +torch/include/ATen/ops/conv_tbc_backward_ops.h,sha256=w3uk8PGyiWD7nsGBfhLONWrXR21pcS8VEU6dnCgFZAg,1672 +torch/include/ATen/ops/conv_tbc_compositeexplicitautograd_dispatch.h,sha256=_Ojd5y8COZimt6BdZ3zkOS_nNA-i_8b1H48avSE_r0g,1380 +torch/include/ATen/ops/conv_tbc_native.h,sha256=6SG095g4Gs4K1xEY-SBin3Ep-LLLNhrwfuERYWVE-5c,944 +torch/include/ATen/ops/conv_tbc_ops.h,sha256=XiCJlEdMJaHkU1vccCVQJsn_JBy9uNJOq_fbkffABUE,2249 +torch/include/ATen/ops/conv_transpose1d.h,sha256=JAhJir3ep1UJhFG3LZ5QAOQcUKCtquxGnkALkFBaHPo,3261 +torch/include/ATen/ops/conv_transpose1d_compositeimplicitautograd_dispatch.h,sha256=VBdDHmztns6YRTS7rRUtiSCzokMS2-aXHlzAPPwFG-E,1583 +torch/include/ATen/ops/conv_transpose1d_native.h,sha256=u07kTTj_qQjn36zgYJLoZGoPlxJUVd82HwWkKzjj8aI,1025 +torch/include/ATen/ops/conv_transpose1d_ops.h,sha256=IktNQ2WYCMxL4LNlBZDSBzh0UJcY0y2jGs1sYYHxQaE,1964 +torch/include/ATen/ops/conv_transpose2d.h,sha256=uvcepvf_-rKEnkFNHsp0fMAEn8OaHOLuwEt_q2vd_0s,3297 +torch/include/ATen/ops/conv_transpose2d_compositeimplicitautograd_dispatch.h,sha256=40UtjH50BGmUiNtwXPug-CrrJwIklUNrl9UHig74oos,1583 +torch/include/ATen/ops/conv_transpose2d_native.h,sha256=BdemX3ANVwnMwKqpZRyoKUxFHbv8bNuvWxHCzNxmKas,1025 +torch/include/ATen/ops/conv_transpose2d_ops.h,sha256=OXLGzbUYWL6yMHzrdTQ5bfEpA4dxAq3fL743GdnckWE,1981 +torch/include/ATen/ops/conv_transpose3d.h,sha256=vyMBb7wZLXd1rVyHijWNrcttWiZ178_vscrKmI69q_A,3297 +torch/include/ATen/ops/conv_transpose3d_compositeimplicitautograd_dispatch.h,sha256=JTWuU6fcvfl6wFZ_m6PFWihHTgvs3hIcvxIv6XjH8A4,1583 +torch/include/ATen/ops/conv_transpose3d_native.h,sha256=6Y4J-kElFHC9b-LhJyTOZDEJZNUu8uyVuiINAACXHIw,1025 +torch/include/ATen/ops/conv_transpose3d_ops.h,sha256=XwwUK4P9gUFVU3qKqk3dMHjy07xtScGfoYPQMCZ7fXo,1981 +torch/include/ATen/ops/convolution.h,sha256=T_AT68SB3_vUgd3p9xaF-YLIWzqZ5nqy1OLG-s5xfJE,8340 +torch/include/ATen/ops/convolution_backward.h,sha256=B2ni9MyJiW9OTZtKzR7tdAXDtnUUhMYTkC0G1MUzu7U,11741 +torch/include/ATen/ops/convolution_backward_compositeexplicitautograd_dispatch.h,sha256=nlvEzclraYLJFFH6D6OYFeXqrJdPV2oa68MVOVC15hQ,3568 +torch/include/ATen/ops/convolution_backward_cuda_dispatch.h,sha256=UydXMamLCUDCfix1fivLE82ANm3ofVAa0MlrdJbktIU,1700 +torch/include/ATen/ops/convolution_backward_native.h,sha256=qte5LkqG4oSH7g-idIJwa9QkN55YpnugwJQYCYlRfAg,1521 +torch/include/ATen/ops/convolution_backward_ops.h,sha256=dDOBUtbPTcFSE-BY1C0_IWYPZCMS_OwXk-84qaAS8Mo,4236 +torch/include/ATen/ops/convolution_backward_overrideable.h,sha256=gQJ26cofeCQ5dbAH7_o8oVZZzpsr7VYfsdsPebqwNwA,10938 +torch/include/ATen/ops/convolution_backward_overrideable_compositeexplicitautograd_dispatch.h,sha256=c5J7o6Eu1ftfXXjQ-FcuBIJjsBE6BpJhoydpt_vT3gA,3421 +torch/include/ATen/ops/convolution_backward_overrideable_native.h,sha256=WjMIlhmaN1hdVb6igqyq7s5x5Y5oKkH_74dFInSPP9I,1472 +torch/include/ATen/ops/convolution_backward_overrideable_ops.h,sha256=6KzPByXqTqDZSvawFy6Od8gX0s4Wl3n1NwxyqeEXVUg,4091 +torch/include/ATen/ops/convolution_compositeexplicitautograd_dispatch.h,sha256=4wxazokwjYrBemMdVsseg6JsIoc58kcGpA6cqBegfjc,2757 +torch/include/ATen/ops/convolution_native.h,sha256=4HREAKXNdZe2v_Ht1dB60YKm_snHDWDR6SUyBqzqXZ0,1265 +torch/include/ATen/ops/convolution_ops.h,sha256=GGT5WoKn2TZczrNuUVr9L-n6jHRAx-S0xddAFRfAzvw,3353 +torch/include/ATen/ops/convolution_overrideable.h,sha256=Z_DiL3m_Bp3eBcFPqmDNLymMxtHywMvaUw32RjzpHfQ,8743 +torch/include/ATen/ops/convolution_overrideable_compositeexplicitautograd_dispatch.h,sha256=3woHMh0AGzgT7FiKb6M7cjP-vs9sIJthLFmcMemd_d4,2835 +torch/include/ATen/ops/convolution_overrideable_native.h,sha256=dQosXkrBwVzKIXmgITJNWwNEE6F3S3NSC6rFY_lxNhM,1291 +torch/include/ATen/ops/convolution_overrideable_ops.h,sha256=WrPe-SRsIwV5Dn5IzXFy2ijPQEoYf80A4MTOEaYEDCo,3431 +torch/include/ATen/ops/copy.h,sha256=9IFZrggWuRygYxK_DSlxTHdwkdqiGtPLJNkrw0j5lVA,1570 +torch/include/ATen/ops/copy_compositeexplicitautograd_dispatch.h,sha256=yd4c9qsm49ZfduuiiKCOuag6evx12urQWhjes38lePU,1307 +torch/include/ATen/ops/copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=PiE9IE-N7gy_T3bBlnj2iam2gKwBY68AdtfwReCceV4,1091 +torch/include/ATen/ops/copy_meta_dispatch.h,sha256=9CXIF_9FkwBHGzTEqSC19DSviTx4QpMMTukhNF5O3T8,1023 +torch/include/ATen/ops/copy_native.h,sha256=pAw4pEXEnyPyLWCnkddlH1FWsxn3h-IOy2ozLvR0oZw,1539 +torch/include/ATen/ops/copy_ops.h,sha256=SqoiiThKFhs1-Cuu5IPyBd0BnBpjY2Nknti1PWXith4,2729 +torch/include/ATen/ops/copy_sparse_to_sparse.h,sha256=EsPfiSSI2z0HPiaS0EkuvsYSyiLzLDCjNEmB0Dw3Ns4,2032 +torch/include/ATen/ops/copy_sparse_to_sparse_compositeexplicitautograd_dispatch.h,sha256=oSGqNJnxA3jU4cTLLEzKkieWoi6-2eEF19PPYFKaZC0,1361 +torch/include/ATen/ops/copy_sparse_to_sparse_meta_dispatch.h,sha256=5Y3Vl2EFwH6MlqATX2rKhHVctCoaOkfURmjivNgSfg4,1037 +torch/include/ATen/ops/copy_sparse_to_sparse_native.h,sha256=Yb0mw17GEVjAVTFhkXlzfoPW57ACBqfYjkbkFDDoP78,1035 +torch/include/ATen/ops/copy_sparse_to_sparse_ops.h,sha256=UrJKUc6ySxZLQ4WQPexNwRCR4vJ1smxTBSQbJwgD1wE,2882 +torch/include/ATen/ops/copysign.h,sha256=me1H4Am8APHMzqf5ICqVJKms-ffXw4nNf0kIbfzvpiY,2182 +torch/include/ATen/ops/copysign_compositeexplicitautograd_dispatch.h,sha256=sFzlfsS4RrTYgSn9LBJ2eAUPEFbANmM5lcZp1YSzfrs,1338 +torch/include/ATen/ops/copysign_compositeexplicitautogradnonfunctional_dispatch.h,sha256=8-BnzmjOy6TU_KbXL5zju4t4Sdqzxf88GJX6uJhrEcU,1151 +torch/include/ATen/ops/copysign_cpu_dispatch.h,sha256=wOvjvuKqOj6_6FaRXEpnbr_3rI-1NrxhTLNhwl2yRkc,1294 +torch/include/ATen/ops/copysign_cuda_dispatch.h,sha256=o_FPMuq37qTS1TlZA-I0fF5NDE8vMQhZVULMsopyCJE,1296 +torch/include/ATen/ops/copysign_meta.h,sha256=7EMbc8F9wZ1FCQqbI7xMzb8MlueVGJXkt7afAKQ01Y0,856 +torch/include/ATen/ops/copysign_meta_dispatch.h,sha256=-7RHCxwfC0Rr32etOAx6tjdoSCiPU9unf06IUZbvLI0,1296 +torch/include/ATen/ops/copysign_native.h,sha256=GRfSWimfGAZmxrxMhEezdcR0FartkSZ9v_7CbRN01OE,1156 +torch/include/ATen/ops/copysign_ops.h,sha256=zdWMGeETcznuIDgz8OtzfU-IyHoENPt0z08XFmAi1rw,4542 +torch/include/ATen/ops/corrcoef.h,sha256=0qjbqFk4uQ5FgzxfNnpTr2_YfzaVsIeTI8NeMgXMjc8,899 +torch/include/ATen/ops/corrcoef_compositeimplicitautograd_dispatch.h,sha256=0i-bG2qHZBXnRcmf_R7-BQohGRMost700wsgjzTNuVk,1020 +torch/include/ATen/ops/corrcoef_native.h,sha256=MdueadJ39JBThzKhfUMeCE7gCGM5XTqFI_Fu4p64TdE,732 +torch/include/ATen/ops/corrcoef_ops.h,sha256=zy8DAi7nkPpTtb2f5sEeFn6iFYTkxRCo-AlXBQUf28s,1217 +torch/include/ATen/ops/cos.h,sha256=BHXeo3u6ALuH8dzM7zRDZlGJsGUsHc6OshSHth871Cg,1384 +torch/include/ATen/ops/cos_compositeexplicitautogradnonfunctional_dispatch.h,sha256=Ll50kBkGvgqgl24hIZ5xTHPALioiuXnc8q-lgWyIjWg,1089 +torch/include/ATen/ops/cos_cpu_dispatch.h,sha256=68QbnS7-UCBSOPAMNcVZofvZ1x3qSYnwaHvNxQwVqtY,1170 +torch/include/ATen/ops/cos_cuda_dispatch.h,sha256=wAbf4O9Gl9TUxFndRA-IK1cv3PPocMVZJiIYnj3pzoo,1172 +torch/include/ATen/ops/cos_meta.h,sha256=lazB6zUAyI2CFce3snNR6UUypB6lYrx9P3-m4EaDH2M,818 +torch/include/ATen/ops/cos_meta_dispatch.h,sha256=4jpRTWRwv6SmK0F6exDBc0oLYPX-im5Zq51mo2W-Sgo,1172 +torch/include/ATen/ops/cos_native.h,sha256=aj0-ZwAgwKGtPsN-gP5HetE349YF-PwvW82y2pGXAbM,905 +torch/include/ATen/ops/cos_ops.h,sha256=f5fFhL-FgY5qa0W6PYH7eHqsYawB_s4lV457J9SsLvQ,2273 +torch/include/ATen/ops/cosh.h,sha256=qZu69Tj_PTz4iPbqA2oa-uxM8WB_mXNUk_DbO9gIsEY,1397 +torch/include/ATen/ops/cosh_compositeexplicitautogradnonfunctional_dispatch.h,sha256=SLP7Oa7IR71jJ2JwqaAI3zSMivmUiODLFPUI3nPelEI,1091 +torch/include/ATen/ops/cosh_cpu_dispatch.h,sha256=0Uay4rVvvdOSKXmawx5qGTAHqJ9FLVV1ntCqW_34Aj0,1174 +torch/include/ATen/ops/cosh_cuda_dispatch.h,sha256=F0X6Ly-_2Q24o_KC13Vebq_kHTMeGmIdFd_LMLK3iUA,1176 +torch/include/ATen/ops/cosh_meta.h,sha256=UGgAuh2ebNPHQWZGHGidT_IxgWGB3BIoXP8AUndFkLE,819 +torch/include/ATen/ops/cosh_meta_dispatch.h,sha256=Dk3RySp1Qs4DgArnkBgrJcMFE4uNVwP60JXJhuKlBGo,1176 +torch/include/ATen/ops/cosh_native.h,sha256=dw0IVylLDazt4dU1falh6sUiAw-v9XKxjHk0Iiug1hM,844 +torch/include/ATen/ops/cosh_ops.h,sha256=YKb6TtpeD-WdYmI6CtI1FlSahTzblrKtdudzNm-vW-M,2282 +torch/include/ATen/ops/cosine_embedding_loss.h,sha256=WsHFO6_Xp_raI8dSSpIWFXv73K86qqIjsbtorcWYPPU,1172 +torch/include/ATen/ops/cosine_embedding_loss_compositeimplicitautograd_dispatch.h,sha256=mSH80gavA9CmFwPvsCFwXgxxxW-b6WuWtopR736e0pY,1147 +torch/include/ATen/ops/cosine_embedding_loss_native.h,sha256=bA5uanPyztttUAZuu_kQHr6-O-m7-luR40_uzyeCI98,859 +torch/include/ATen/ops/cosine_embedding_loss_ops.h,sha256=BQCnGAH1BETytucpsr6nchDR6nrRSPm1QsWqpB8gKqc,1563 +torch/include/ATen/ops/cosine_similarity.h,sha256=37E2HMqSTVJCgxsA7_-RnFbYIoA8qheETENxKf5Ry3Y,1038 +torch/include/ATen/ops/cosine_similarity_compositeimplicitautograd_dispatch.h,sha256=5KP-xURniNVMjkIq0tsuZv-VkUgouZRwE4WBGI0OIOo,1083 +torch/include/ATen/ops/cosine_similarity_native.h,sha256=U4EMGswPevu4XGODLx2W1Qfgqbs0GyY6yu1aLxU0b3g,795 +torch/include/ATen/ops/cosine_similarity_ops.h,sha256=Pz5lbF22TgynzdWhrht5IgYct6y65eDsr9GLXQkZiNQ,1410 +torch/include/ATen/ops/count_nonzero.h,sha256=d0w7bunieMNtbp0lzkaDOBEGwPcJcd_v8myRR8VRkGg,2302 +torch/include/ATen/ops/count_nonzero_compositeexplicitautograd_dispatch.h,sha256=7Rlu6hmK_-0ETXzt0wQBe0RXt37eypt4o68JURX6Ia0,1529 +torch/include/ATen/ops/count_nonzero_cpu_dispatch.h,sha256=SsWKGRDePzawMDoAHdKefvCxAsDUC2fvKt2zm-4sKhk,1002 +torch/include/ATen/ops/count_nonzero_cuda_dispatch.h,sha256=Aot9cdQZU_lr-VCsOvbdr3GmqHeXuixRvO4UUKmHiMM,1004 +torch/include/ATen/ops/count_nonzero_native.h,sha256=V0vbET8kcow8J4Z4XsbtvjuuCmbYIBPw6yk6BVwki6c,1188 +torch/include/ATen/ops/count_nonzero_ops.h,sha256=6APJKICqqKebl97mLbq9pz02pw2G3q3Sy1nW9A8IKhc,3388 +torch/include/ATen/ops/cov.h,sha256=vPAA-2SYmIN3QdQXagu4yNKVJzVPLnt343LOkS0DKf0,1098 +torch/include/ATen/ops/cov_compositeimplicitautograd_dispatch.h,sha256=L0TfAbwQ8q46g5PQqOhKRx3MxJm-vS0oRTJAJco4PiI,1135 +torch/include/ATen/ops/cov_native.h,sha256=uvTMkhEtAx5aw3VWZPA8zFGmMylhIpRqcV2dqughjQ8,847 +torch/include/ATen/ops/cov_ops.h,sha256=wKqKIKd01yoh6bIAUXjkyuv3Rn9SXZqWMPex22wIWPg,1576 +torch/include/ATen/ops/cross.h,sha256=BHADy1TIXHnGLOD66PtDynfbo1ObOb_ILEcakBt4OMo,1592 +torch/include/ATen/ops/cross_compositeimplicitautograd_dispatch.h,sha256=-cBQ1nVjOc0ZPfYlhqwL3n2kup-T34TAHEQ6z_dn4Qs,1370 +torch/include/ATen/ops/cross_entropy_loss.h,sha256=ddynqf3sj80UXPUgN7-bXATfpqHBsSRJ15FPltg46Fo,2687 +torch/include/ATen/ops/cross_entropy_loss_compositeimplicitautograd_dispatch.h,sha256=Hnb8T__Ojjjt6Igs4KSo8Kj6Q4ufebe70mmJ52obmss,1443 +torch/include/ATen/ops/cross_entropy_loss_native.h,sha256=eEcoLJeUZmwKNVPu-8gOczEcqWoere8z5L7T8jNMMMI,921 +torch/include/ATen/ops/cross_entropy_loss_ops.h,sha256=CKzht_utb3Zt1CQBk42RQi6l9oz9KOKjo3HidAt7ncI,1723 +torch/include/ATen/ops/cross_native.h,sha256=ope4SGodbjJuFmIZjwzmr3q8XboI-cA9d-0EtIiunys,933 +torch/include/ATen/ops/cross_ops.h,sha256=VayqhwkW5gQMHFLVYymi-6S6b4OjmZM5q7MiMaynyB4,2169 +torch/include/ATen/ops/crow_indices.h,sha256=RZuzgJu8NV_D4320naG0VvM_jJEA73hu2KNvonoEpXg,763 +torch/include/ATen/ops/crow_indices_compositeexplicitautograd_dispatch.h,sha256=PWht7xnhUGSw3mzQ-K2_hRCv89j9TVpthsXkYEWqY2w,1024 +torch/include/ATen/ops/crow_indices_copy.h,sha256=jd5mUmoep5sh5-GWLwSQjDKFuDPkug6i3eYV5XObpww,1391 +torch/include/ATen/ops/crow_indices_copy_compositeexplicitautograd_dispatch.h,sha256=DiOgETwSXBAShC_ID8rvhMwICs88Gdf7ozmjcP0uLIs,1143 +torch/include/ATen/ops/crow_indices_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=xz-nFw_N1MLsjf3PT3SKP7B_AmUCjhI421Ty0uUCjCI,1055 +torch/include/ATen/ops/crow_indices_copy_native.h,sha256=HhbESces5CbHQqYVNKrE9lG-KI3JnBbvyh86E9Iesjk,830 +torch/include/ATen/ops/crow_indices_copy_ops.h,sha256=I8yrMGgpxGOQwEuSf98XJY7wMg033Dm-HwB75wtlGmA,1867 +torch/include/ATen/ops/crow_indices_native.h,sha256=EP6wm-BBTVITZGoensi-Uq0kzCF5aIFsdaO_P9AHx5U,815 +torch/include/ATen/ops/crow_indices_ops.h,sha256=4L8f2oAOgIdZv3GlOsK7YaBwZEyipj8Yhbod6CMjPyE,1235 +torch/include/ATen/ops/ctc_loss.h,sha256=B_h1qP3Cy7TJ-PCwTsT2dMju0mB7do5v9TM1woOCmug,1836 +torch/include/ATen/ops/ctc_loss_compositeimplicitautograd_dispatch.h,sha256=wgQuO0jY9Aj03r8w7CoS2OKrfclyHBWWUadBtc3RMKA,1438 +torch/include/ATen/ops/ctc_loss_native.h,sha256=Ah7xAT4JZDyXuEvFN3Z8i-YrgnhgTkAkSYoy0i9GK1M,1150 +torch/include/ATen/ops/ctc_loss_ops.h,sha256=K09pvc3nrEiAP5xedKaIkpcy1_Eh9jKL3h-jGi-ZT48,2788 +torch/include/ATen/ops/cudnn_affine_grid_generator.h,sha256=qxS-5E1sDi-9xQ6DFCNG4-roAIt0CHsWGZWTDx66CZw,1757 +torch/include/ATen/ops/cudnn_affine_grid_generator_backward.h,sha256=IIwidjfjH-3k0fBHxTUJeX6IRaQZ2QIhByImcL0HnU4,1844 +torch/include/ATen/ops/cudnn_affine_grid_generator_backward_compositeexplicitautograd_dispatch.h,sha256=vkKeJj1-IyQcqUz2E9DSH5gO9jOZWUqPLn1t9ZwGaz8,1269 +torch/include/ATen/ops/cudnn_affine_grid_generator_backward_cuda_dispatch.h,sha256=hk-ssJZpfqR4cyGxPLf1MqRx38sAbmYYdHbIghBb0RQ,1050 +torch/include/ATen/ops/cudnn_affine_grid_generator_backward_native.h,sha256=H8C9TxsJeROesJJ7ZEhKuioDZ_Qcp8E8q4oBcYUswYY,956 +torch/include/ATen/ops/cudnn_affine_grid_generator_backward_ops.h,sha256=7yXOrlMRZjkGrAz2I63ZZUgUTY9e0QNe_0K3hncpEzM,2296 +torch/include/ATen/ops/cudnn_affine_grid_generator_compositeexplicitautograd_dispatch.h,sha256=1HLOOgxvkoaJEGYh8mbi-9GY8pZYgkNsd5e5gpbDKyQ,1253 +torch/include/ATen/ops/cudnn_affine_grid_generator_cuda_dispatch.h,sha256=eFpG6tgTaDq5Esr_KvKZEl0YWqIeOxvebgnlzSt-LOE,1042 +torch/include/ATen/ops/cudnn_affine_grid_generator_native.h,sha256=kWvXFSZE5cRYz9bKVetxtWMZJ0JbZ0XqFAPORde4G1Y,948 +torch/include/ATen/ops/cudnn_affine_grid_generator_ops.h,sha256=UKpG7zlY03h5Esrv1Hu_Q1ETJcwTyZDSlOFemhOEmUs,2242 +torch/include/ATen/ops/cudnn_batch_norm.h,sha256=c4nml8LM5eZnNPaROEAGZfyK39D_mJHjwxgPNDVZKDQ,3277 +torch/include/ATen/ops/cudnn_batch_norm_backward.h,sha256=B7MlxYbauHW5DZVRDfESsNlZ8esRt8SDDcOODubrmJo,3469 +torch/include/ATen/ops/cudnn_batch_norm_backward_compositeexplicitautograd_dispatch.h,sha256=yzySpEs_VsDkbRFX6tPFO6utLsVJ7JEC-yIMszdADYA,1919 +torch/include/ATen/ops/cudnn_batch_norm_backward_cuda_dispatch.h,sha256=viw1pA-IaiW3akgmWzYKC4ckqbY1e6f4i83-PK6Idg4,1332 +torch/include/ATen/ops/cudnn_batch_norm_backward_native.h,sha256=ih9R5zG1pNfA_yjr8tSC4AYmGB_lvAhFNYXGioIvzwQ,1563 +torch/include/ATen/ops/cudnn_batch_norm_backward_ops.h,sha256=RHozn6S92sE4hOw6u0nqC7Z6pEQannh7LBDm8ox7k9Y,4268 +torch/include/ATen/ops/cudnn_batch_norm_cuda_dispatch.h,sha256=1eONKh-tnpRZ45CfOBR84l8qwqElzE95zmh3_nMxKlw,2137 +torch/include/ATen/ops/cudnn_batch_norm_native.h,sha256=NKoxNq9YjXgOQI77f1GglH1yRD_JTtX4YEycpzr3XJY,1456 +torch/include/ATen/ops/cudnn_batch_norm_ops.h,sha256=SEVagF9WREs3GhSeNbHCKJ1eXrOQzl7YUbM40OUgmzw,3955 +torch/include/ATen/ops/cudnn_convolution.h,sha256=OM0kl2IlUCdQp1UTBGrMuCeJHQGRF1k9xdknFDH-JsE,7890 +torch/include/ATen/ops/cudnn_convolution_add_relu.h,sha256=Vzsd9CatvFsFIntpxIRs4ovWOlggrWNc0Y3ZL3AELSE,8469 +torch/include/ATen/ops/cudnn_convolution_add_relu_compositeexplicitautograd_dispatch.h,sha256=lR4_Itws4_cAovSsVXj3Hle9aZ4rkCb9PW7XYkpd-Y8,2304 +torch/include/ATen/ops/cudnn_convolution_add_relu_cuda_dispatch.h,sha256=DKESKHV8F_wgcsQbeWq8p6lmVUGB6r6ZJfQjzL9TtIw,1543 +torch/include/ATen/ops/cudnn_convolution_add_relu_native.h,sha256=9WL0i3Y8HOO-htpEZmjPgiCA34yWaNQ2KONeI2tsVd8,1321 +torch/include/ATen/ops/cudnn_convolution_add_relu_ops.h,sha256=iJyCBEidjokS7w_k1JYljxgdBHVj0pahch3kdh--ous,3511 +torch/include/ATen/ops/cudnn_convolution_cuda_dispatch.h,sha256=ONsQTYmdbG564qqWELM-2qTX3qGnRGiburJx6Js8OMU,2505 +torch/include/ATen/ops/cudnn_convolution_native.h,sha256=GS1yg7BaKzX4p5EFU6eeXsxXridPLQNzgDiRUnRVqDA,1172 +torch/include/ATen/ops/cudnn_convolution_ops.h,sha256=6oWC8M_5hEGtUCMgkTeNDPM0uP8Sn4c_EFjqyxQ0Ew8,3117 +torch/include/ATen/ops/cudnn_convolution_relu.h,sha256=5_pSqRBIx7YBSrREXYJnxvYOyCgQ2hzeXv-o9m3jL_8,7295 +torch/include/ATen/ops/cudnn_convolution_relu_compositeexplicitautograd_dispatch.h,sha256=aKstaYPvziQRw-RoN8CyLULQSvSpfhbsPG1SKTyVu-w,2028 +torch/include/ATen/ops/cudnn_convolution_relu_cuda_dispatch.h,sha256=xcHzaS67d-UWObaIwpywtm2fuz9-8CTLNpBLukJVcBk,1405 +torch/include/ATen/ops/cudnn_convolution_relu_native.h,sha256=2euB-QaPSv_l0hlaBQfelA32UbESfahXJBaXY5j9d5Q,1183 +torch/include/ATen/ops/cudnn_convolution_relu_ops.h,sha256=0P1PLtK6-AWtMCv6IqsxPqiEyXUNP-JU-3bAJpMZ_KA,3063 +torch/include/ATen/ops/cudnn_convolution_transpose.h,sha256=DJY4r-QKnjUxWIpL4CQhpIRj-VyV5N2EWPHmr4x52lg,9106 +torch/include/ATen/ops/cudnn_convolution_transpose_compositeexplicitautograd_dispatch.h,sha256=7ObqRzFhPJ_ALLtE1gJ8I-JHNkrYjS2o8nkcgC6wikk,2228 +torch/include/ATen/ops/cudnn_convolution_transpose_cuda_dispatch.h,sha256=CTYVKHl6FE0Cf_jitF2OKRWhOaHLSQAVf09SdHD1EB4,1505 +torch/include/ATen/ops/cudnn_convolution_transpose_native.h,sha256=V5gpemtkwcfYcfogCadv7J_PGrwX4IhiDfOZc9Jw9TI,1283 +torch/include/ATen/ops/cudnn_convolution_transpose_ops.h,sha256=3XgexstO1s-xy7Dxq7X8LQ_MWuEqPo7lrWjC_LSkchs,3413 +torch/include/ATen/ops/cudnn_grid_sampler.h,sha256=Lc6JCvM5hznRbdLAQIfB8-nUaIYMG85X2zAvsHH9pfM,1540 +torch/include/ATen/ops/cudnn_grid_sampler_backward.h,sha256=B-UN2i5ZSvBUXpy_NyY9ii6LZREOjbMqEvi9DAyMV5o,2045 +torch/include/ATen/ops/cudnn_grid_sampler_backward_compositeexplicitautograd_dispatch.h,sha256=LMu2qZEe3O6-1CpDfnXTp8w6YRQpFibWn4WhPbXj9b0,1371 +torch/include/ATen/ops/cudnn_grid_sampler_backward_cuda_dispatch.h,sha256=zO6G7ZtXGAbLJd6mAFby9ZmweX5DM22NrjrwEdbnyZs,1079 +torch/include/ATen/ops/cudnn_grid_sampler_backward_native.h,sha256=T3DS2ZipefEWGs609-pFifzjqDH3TdHcqGEOZb9ap4c,1036 +torch/include/ATen/ops/cudnn_grid_sampler_backward_ops.h,sha256=qseTid59T9rZRLmSLvO6Tx1rafE3y7bZFO1sAmmOG6k,2573 +torch/include/ATen/ops/cudnn_grid_sampler_compositeexplicitautograd_dispatch.h,sha256=F9LJfrknJEeczFmAo46rExBd0-dhe76QM3HvVlLZouI,1195 +torch/include/ATen/ops/cudnn_grid_sampler_cuda_dispatch.h,sha256=MRAnv5uytQfRxyCMXO2tCjuEO36a-PMLA1RFRKPajkM,1013 +torch/include/ATen/ops/cudnn_grid_sampler_native.h,sha256=ZhL3WUeU1RXO3Fn_sweRJYhaJtEfoMF_DIg2wq0AvAk,890 +torch/include/ATen/ops/cudnn_grid_sampler_ops.h,sha256=E3zLe7WmfhmNmmGc-Y34gJodz8AOkKv1s0w9qdYZh9E,2046 +torch/include/ATen/ops/cudnn_is_acceptable.h,sha256=poqK07lhDhmj2DzjVoE0wm__UjQJePEk6OzOQumq2t0,935 +torch/include/ATen/ops/cudnn_is_acceptable_compositeimplicitautograd_dispatch.h,sha256=h_JyK8XS2h8o2v76O-_Z2feOC2n_FF5bIT7MjpTDrgw,1025 +torch/include/ATen/ops/cudnn_is_acceptable_native.h,sha256=ROICuxcj7oHyAQ-45H_iBdZm9CFv5D5I2UJ5YdM4MdM,737 +torch/include/ATen/ops/cudnn_is_acceptable_ops.h,sha256=_N9AGGY17yLQSKzz4XF05CE1MvHdq8iG7Sap97bm_1U,1230 +torch/include/ATen/ops/cummax.h,sha256=xNek60u6PCDIKIwun6OSsoXzS2hdvBuUqLQv32VrvIQ,2604 +torch/include/ATen/ops/cummax_compositeexplicitautograd_dispatch.h,sha256=s80yG1PVRFVODBszuUhVVccF9fBDI3f4z71ZDi1k8YI,1343 +torch/include/ATen/ops/cummax_compositeimplicitautograd_dispatch.h,sha256=HUw2Nlg5d8De9AlK3X1UcJjekbhSS48s3uZ4I8O6VHQ,1355 +torch/include/ATen/ops/cummax_native.h,sha256=EX8JU35S6qGm-7NE3nQWgFOOSl8ZrDI4s7u8NpM8OpY,1154 +torch/include/ATen/ops/cummax_ops.h,sha256=eOV12t2C5CF7RZIWlpDPOV_702nz5lCYtPcG3Iej854,3740 +torch/include/ATen/ops/cummaxmin_backward.h,sha256=q0AaydzvsTclefcXvylLDRkNLXO6oVAp1sITjNubO5Q,1066 +torch/include/ATen/ops/cummaxmin_backward_compositeimplicitautograd_dispatch.h,sha256=C0GX2WFeO1HG5bGWJtiqzb4-j1o80Ri-p_FedPNvH48,1097 +torch/include/ATen/ops/cummaxmin_backward_native.h,sha256=QORI2zgh1-BLiAFLhTJTnZzT8TxM1-p0k9H-UXd7Xjw,809 +torch/include/ATen/ops/cummaxmin_backward_ops.h,sha256=Jb65S8JKd0otaKmK3-4tyzvezAAiQPsb074Oq7_RqFQ,1469 +torch/include/ATen/ops/cummin.h,sha256=omgTlgkRz0Ei0HuYA24m5Nm6OX5hbEFzOvXq2WWgZk0,2604 +torch/include/ATen/ops/cummin_compositeexplicitautograd_dispatch.h,sha256=64aTbWHfROi9jAvlBp4_hYiG4tWEh5BTcR-4WqVzBl0,1343 +torch/include/ATen/ops/cummin_compositeimplicitautograd_dispatch.h,sha256=P4gIx9UOKGTYVswH8qoG5ezMOCYwxZTZFU-GmhKYTj8,1355 +torch/include/ATen/ops/cummin_native.h,sha256=ziocBbqCy8RnE0m7pceECqoR-ZMwhH77t_k6r1mFKIw,1154 +torch/include/ATen/ops/cummin_ops.h,sha256=QAVRzYbauU6IzhH8a5gkrzC_JTsC8QT4IeFe896IXNo,3740 +torch/include/ATen/ops/cumprod.h,sha256=-UMBZFohCzhbuAqyqF56TrXhOU376C4I2xEL1Nov0k0,2545 +torch/include/ATen/ops/cumprod_backward.h,sha256=KBjrfpKaNuGG5Npm5c4UZhUQScQVe_ocO4e3vL1fT90,1055 +torch/include/ATen/ops/cumprod_backward_compositeimplicitautograd_dispatch.h,sha256=DBkR8KzDXzHkriO3ntXkvZnqHej6PHuOGNpDVb6iPFs,1094 +torch/include/ATen/ops/cumprod_backward_native.h,sha256=IiUsG4O4ABrUWp7sV24j0O1pNlaJe288wAIum8VlNPo,806 +torch/include/ATen/ops/cumprod_backward_ops.h,sha256=BoUg4yUpDoXpHS9hsxkXrWdeb3baxPgdQn7Tgot6wUY,1460 +torch/include/ATen/ops/cumprod_compositeexplicitautogradnonfunctional_dispatch.h,sha256=K7Dr2h-pj8gQ06oCMTyjl61pT3GQ8iK1L18ygaViqMQ,1231 +torch/include/ATen/ops/cumprod_compositeimplicitautograd_dispatch.h,sha256=6BNna1gWmkDW_s82W2YRot5X3cNE4ikZII9_QvEd8PA,1499 +torch/include/ATen/ops/cumprod_cpu_dispatch.h,sha256=j2ThUdvWFBBuXRjCk3QebhDv7ZcCFfP-_XGjIlzDaMc,1439 +torch/include/ATen/ops/cumprod_cuda_dispatch.h,sha256=igJVnpvNugE4nDkOh7RBY_aDdEYhlc_Px3KmUC2Lqm0,1441 +torch/include/ATen/ops/cumprod_meta.h,sha256=Ph2Fu5rq4FV-B79uyVrXi0HIIWD6MfnWUhoe4znyvaY,874 +torch/include/ATen/ops/cumprod_meta_dispatch.h,sha256=FXG-qAiGvdzXpObdB2S9Qn9UdQNBscLsWBLP1cV8N9M,1441 +torch/include/ATen/ops/cumprod_native.h,sha256=95rDMcg3fg0nahEs9SQfVPrsN80p9gS23GMKUnsMCRY,1289 +torch/include/ATen/ops/cumprod_ops.h,sha256=hMFsrotr514_fo502uwrQF6iqxlQNd9Z8LfNlUAY0a8,5111 +torch/include/ATen/ops/cumsum.h,sha256=mrBtYxJFFZLWzTVHxNGeFSeE6CcowiBIZs87PYUL4S0,2526 +torch/include/ATen/ops/cumsum_compositeexplicitautogradnonfunctional_dispatch.h,sha256=As4Nwe_0GgX05iwvzLabtdNPBHtHJuEQQzKaR-zrP8U,1229 +torch/include/ATen/ops/cumsum_compositeimplicitautograd_dispatch.h,sha256=EFZbzczwSqAGQHAd3aEncMlheg5ZSyO9I1T6Zi1Lod0,1495 +torch/include/ATen/ops/cumsum_cpu_dispatch.h,sha256=vu2UZIYr27EWOBByKWsYdj9K1F8n6sKW5V1pmx19Uwk,1435 +torch/include/ATen/ops/cumsum_cuda_dispatch.h,sha256=R0s2fgK3eCJBwO8ebBdreEuD8m0dobmnxpkxntgq-mE,1437 +torch/include/ATen/ops/cumsum_meta.h,sha256=4vSVZtKdalwlGLc3owEnUdk2YNgBRHRys7DHNpIjLC8,873 +torch/include/ATen/ops/cumsum_meta_dispatch.h,sha256=9IfEv-67XlD-v7dmaHBLxQ0Gr6yf6mFG93-GTOC7UU8,1437 +torch/include/ATen/ops/cumsum_native.h,sha256=dE2UQajQABC8PvVBPSn0x2VbnHqbQAeQsaKmRpvzLJE,1283 +torch/include/ATen/ops/cumsum_ops.h,sha256=5NKUPWuwpSnn4mceD1zXHD2wn2CHD-Of7ATpu-AmrEM,5093 +torch/include/ATen/ops/cumulative_trapezoid.h,sha256=ziem09D79D1butfFv8Dd4rrrxUqg1QOftKRbS2IFxuw,1265 +torch/include/ATen/ops/cumulative_trapezoid_compositeimplicitautograd_dispatch.h,sha256=hJLSc1F0xE0LQk8LlNNMCiYDrH0vnGQbACmr4Ak_g00,1173 +torch/include/ATen/ops/cumulative_trapezoid_native.h,sha256=gyy97gUefEHb2J_VQL3tGJpPkSOghFaTUKzxCVoLxic,885 +torch/include/ATen/ops/cumulative_trapezoid_ops.h,sha256=zPV2nS3-C7ytI4KS2CiNVnTU-kikBVsrTr660BKcPOY,2043 +torch/include/ATen/ops/data.h,sha256=TV23nqvF1-IUUNP8Rmp5CcKR_YdrzbPi7AtQaLLjBnY,755 +torch/include/ATen/ops/data_compositeimplicitautograd_dispatch.h,sha256=OHGdDIOt4M8aPru4Tf3UgK9A2bPLMWeDY63rJ4bBxo0,1016 +torch/include/ATen/ops/data_native.h,sha256=LW4mOj4nzjGJNchppy6q01d355x5oGBCLMie-CXKBvw,728 +torch/include/ATen/ops/data_ops.h,sha256=b9RUO92occsbRmvb0XlairjvyCY-wk8ECIQvq5wINJQ,1205 +torch/include/ATen/ops/deg2rad.h,sha256=ZDutqzy9rtUbTTJ_lqfxRw4XTTj5_F4FLgUJPMUZAO8,1436 +torch/include/ATen/ops/deg2rad_compositeexplicitautograd_dispatch.h,sha256=8Uit0Z4HDWkgc-OQowCpChdfJUXjtpDi6NdK5_pPvCg,1230 +torch/include/ATen/ops/deg2rad_native.h,sha256=TYnm5nEVQLaRJ11TOs4SnS7BnctLmGOjAPjQVys4Xuo,1288 +torch/include/ATen/ops/deg2rad_ops.h,sha256=RpoxGAWWtoK8_jw8DrOI91KF9niO7uwLJ7hmupsLv-I,2309 +torch/include/ATen/ops/dense_dim.h,sha256=h5QI8jNXIGVA88k7k5D2oUHuthCG1McLB1P6eAE00Dc,760 +torch/include/ATen/ops/dense_dim_compositeexplicitautograd_dispatch.h,sha256=H-LxjmR3ABztgjTdR_htNeSZe3fjMhyzTlLpUOz3drA,1018 +torch/include/ATen/ops/dense_dim_native.h,sha256=1ZnKfv1v9SnXl__S0ZjtarYR2KpimTnrr0h5rBIJllY,864 +torch/include/ATen/ops/dense_dim_ops.h,sha256=ZL0S4zwUp52mQKjMpojFeNwxP_b7E_bWxzvjNv9h884,1208 +torch/include/ATen/ops/dequantize.h,sha256=urVj_PRq46lUNzGXdu8y9IcZnovkqcw8vhKHMu9N1Fo,1974 +torch/include/ATen/ops/dequantize_compositeexplicitautograd_dispatch.h,sha256=BSNJCJYJNbXCq39AvKkVxtxedSYmZwQw4vbJYy8iqDU,1280 +torch/include/ATen/ops/dequantize_cpu_dispatch.h,sha256=SUHNM2pB13Nk3kI6K81Vfn61-mmBl8PVutFckk0umY8,978 +torch/include/ATen/ops/dequantize_cuda_dispatch.h,sha256=PLGC5IPiaHdh4HI0epknETUmTBTYQP_EQqtVp7Jf3Kk,980 +torch/include/ATen/ops/dequantize_native.h,sha256=6HCXsQcLRuejIf7Vozo1xZt0e8vSMuS9AKJSROkCdME,1078 +torch/include/ATen/ops/dequantize_ops.h,sha256=prcEi9M_4YF_JnBaeG824qsnub4Gw-Vh8tItaCLJikY,3036 +torch/include/ATen/ops/det.h,sha256=jczO8csSP5hHd11SdUiFCJX94uL2GKgZLYTnd3q6pIs,879 +torch/include/ATen/ops/det_compositeimplicitautograd_dispatch.h,sha256=B2uhUQDffTv-bkxIXXZpWk-UKf6vgLlkcAuxpNHadjw,1015 +torch/include/ATen/ops/det_native.h,sha256=-DhbUfDpzsubnx0HjK0_xKS0kK-8Ons9i3lCum9pREU,727 +torch/include/ATen/ops/det_ops.h,sha256=m1XcnujJooJ7cFga14-mv83VieVjDwnOPrSz9dL7mhY,1202 +torch/include/ATen/ops/detach.h,sha256=7WkxgBHIDTHVUYbwXHYNcanAP776PW__GMkds4AM1uA,1039 +torch/include/ATen/ops/detach_compositeexplicitautograd_dispatch.h,sha256=0vTOlltJ85a8L6IqxnwTz4F36xKiLmKOjw7HS8XxZOg,1069 +torch/include/ATen/ops/detach_copy.h,sha256=1Iyoh6pazDN5gNzj1F6oCJvTBY1kshy6sqM0qnj2uA4,1331 +torch/include/ATen/ops/detach_copy_compositeexplicitautograd_dispatch.h,sha256=ICrGZ8XGvGoWEzTfqjyQgXobodtlZ81DIsmJKXI_MX8,1131 +torch/include/ATen/ops/detach_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=SqKzf2xzbYt_R2_4bf-jsxZIIoOfpqHdslVVwqh6L8o,1049 +torch/include/ATen/ops/detach_copy_native.h,sha256=rJjufj_HIzh38Y4eMmK98WEFXjLv7S3Kdy4eniJJI5Y,818 +torch/include/ATen/ops/detach_copy_ops.h,sha256=ZHTi9XtoZfEAto5TX4A_WTQRWFp1AtA12EgCkbb3kNo,1831 +torch/include/ATen/ops/detach_native.h,sha256=leB-3tOPgzMfyqYj4aGZuq7hp2Psz4aUVQhfzFZOJ00,781 +torch/include/ATen/ops/detach_ops.h,sha256=TRFHRQie_ydJaWDVkzXFZrVuSlYK7vwkmIDY4-Gc3PQ,1716 +torch/include/ATen/ops/diag.h,sha256=npmLuxTu6iSN-q1w4T0QLZmIHGF4zry37tB3bDgd9qQ,1397 +torch/include/ATen/ops/diag_compositeimplicitautograd_dispatch.h,sha256=VnMMOs_BI1uTOeu7m7lh5x1mVi7v9Gni7jy3fZyHw_w,1227 +torch/include/ATen/ops/diag_embed.h,sha256=qYt_UU4bidVK-zNgBNq9RiB_ghVi6ONrNLPHuk2jk5I,1649 +torch/include/ATen/ops/diag_embed_compositeexplicitautograd_dispatch.h,sha256=lWUVeAO3kJs06hNiOGTIBftwhy-uWMU41hA_hW9wlw8,1225 +torch/include/ATen/ops/diag_embed_compositeexplicitautogradnonfunctional_dispatch.h,sha256=IBZZGoM1qXtWPAN8OpZDFNX1PgbaW5c2-Mtk2QPnA8o,1100 +torch/include/ATen/ops/diag_embed_native.h,sha256=5epC0Z5oYa7thdrn_OZVoyS-S3Rag79_5CXlS7DcGkY,912 +torch/include/ATen/ops/diag_embed_ops.h,sha256=hxVLWRPTT5lwZi0xKFsM5SJLlZa6mKNeMPLnJus1wSQ,2135 +torch/include/ATen/ops/diag_native.h,sha256=LR16KF71HKv_7sgex2BFoKu3v26FI34V_IK-PiWWRVU,842 +torch/include/ATen/ops/diag_ops.h,sha256=r0Z5JtUofeOuOZKPJVZeBykbZdZI42W7oWCr_dXSna8,1911 +torch/include/ATen/ops/diagflat.h,sha256=Dxb_iNbtMfseol9iZBJRoV1UTYcHMyOrcffWOoGcHwM,939 +torch/include/ATen/ops/diagflat_compositeimplicitautograd_dispatch.h,sha256=P0FVDLPD5l-3Gf3xSB7mQ03-K41Q0zb54tT0k7SG5dY,1038 +torch/include/ATen/ops/diagflat_native.h,sha256=pDg3-n6t4VZAqR2TlWL5fx2kK4RBpR7ANIxJ0I5LvPI,750 +torch/include/ATen/ops/diagflat_ops.h,sha256=aoNV5awRbRyCI2Ok1lwQKjHVUPh94k5y19petTX9k70,1272 +torch/include/ATen/ops/diagonal.h,sha256=6-vDs-uCrpMnS-7oWZ8imYJW_aThLURgP-ujXhg-oEs,1339 +torch/include/ATen/ops/diagonal_backward.h,sha256=R37XNX6jEepjng_SulC4iMUfY8fCgY8mjHXao9bICYU,5466 +torch/include/ATen/ops/diagonal_backward_compositeexplicitautograd_dispatch.h,sha256=LwsJiHRPnjPxXWcy95F1lNBk6mmmmYq7bfXULHsQuqQ,1965 +torch/include/ATen/ops/diagonal_backward_native.h,sha256=bd22EjrPPLJ51zcpz67YtvLO2JgEAeF1UpGaqiI1aFQ,1012 +torch/include/ATen/ops/diagonal_backward_ops.h,sha256=lsq8k7Zr8m9CWv9oYSMP9AynamgyDHk_JvbOK7DFJO8,2421 +torch/include/ATen/ops/diagonal_compositeexplicitautograd_dispatch.h,sha256=QyJQsA5HARvowGz6Rm2oM71NzjmDnrt7wJVxIqzs7xw,1070 +torch/include/ATen/ops/diagonal_compositeimplicitautograd_dispatch.h,sha256=b24IjHUIJpRXlZ_6t5zUEf-k9RCJ-Ob9jUj7vAE7rsI,1094 +torch/include/ATen/ops/diagonal_copy.h,sha256=98BOPZ80hP-N8GN5D9XO3p--leVmeJT3Uec8LOYQqnA,1669 +torch/include/ATen/ops/diagonal_copy_compositeexplicitautograd_dispatch.h,sha256=p1DGiIxdSy75uRfRkcqW-zhnMDqO3Bj_m9vNerBn5Wc,1229 +torch/include/ATen/ops/diagonal_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=Wz83kIAFeFTpV11LuGwxBJ58gSLAMwTe2szGjlxVeEA,1101 +torch/include/ATen/ops/diagonal_copy_native.h,sha256=5V6V3_SAwOYZ5OQXpKkNQoOV5HGIjVoLzZAfmADFMv0,916 +torch/include/ATen/ops/diagonal_copy_ops.h,sha256=Q6jQ2EjDHV9Q32YuryQUrniST1rf3i3lujyM06nyL1g,2149 +torch/include/ATen/ops/diagonal_native.h,sha256=Rc9q1mXHuUWP4crSIlY0Ko98k8LR5qVjziSjKBDIrsQ,912 +torch/include/ATen/ops/diagonal_ops.h,sha256=TgagXCDFfapg2BMJ8UMyW1nown5b0dzmvZWoFzYT_oQ,2164 +torch/include/ATen/ops/diagonal_scatter.h,sha256=m_avua31mmIK4kxco4j3AXu6iXmqpL84iN4EWVZdW_A,1822 +torch/include/ATen/ops/diagonal_scatter_compositeexplicitautograd_dispatch.h,sha256=QDoMJTb076wKchX3cqBwuCRojIHOkRmBpFgifyhqREQ,1283 +torch/include/ATen/ops/diagonal_scatter_compositeexplicitautogradnonfunctional_dispatch.h,sha256=_zmPeLNcYUZ4cZ01acqw5eP44_qqiveJx9YU3nkM8dw,1128 +torch/include/ATen/ops/diagonal_scatter_native.h,sha256=MScxR2seL2a8CklIYTdz-VPgCRs9CTfIAIUnb2JtQFM,970 +torch/include/ATen/ops/diagonal_scatter_ops.h,sha256=J159wcm0Wb_W0EggqN3rvjU5yIrXqPVzK6_pS45NmPE,2327 +torch/include/ATen/ops/diff.h,sha256=G3JPIXwoFJjLgpUi33QMVdJOTmBA_lQk5T2OaHWFsPw,1889 +torch/include/ATen/ops/diff_compositeimplicitautograd_dispatch.h,sha256=EH4Zb8rN_56BwG9DsNeZyYWJfXj2vassCz7XmpTPVLg,1530 +torch/include/ATen/ops/diff_native.h,sha256=zJ0D9Ytoa_08JgZ-1cyZv02MOlBdn1BISAm6gr_oXnk,1041 +torch/include/ATen/ops/diff_ops.h,sha256=P_mHceTuhC5IE5vHS6SWuPQrxCRFQtisNRrGFZNKkTw,2553 +torch/include/ATen/ops/digamma.h,sha256=__YyiHLpeo6QlblwJo4IUD60lcTMbGxko3H2XwLHeKI,1291 +torch/include/ATen/ops/digamma_compositeexplicitautogradnonfunctional_dispatch.h,sha256=G1-lQ6E0FmVzwBgMSqVCIr7m-qV6lRwyVAx0IdGIik8,1097 +torch/include/ATen/ops/digamma_cpu_dispatch.h,sha256=J7Es2jdFZCwQs6_gjnrD5yac_coy376ZaUw6qUEEjsc,1186 +torch/include/ATen/ops/digamma_cuda_dispatch.h,sha256=ugmHMoobUQcb3W6zZEDQ4nAf91FLhiI7YvcS5Te8YL4,1188 +torch/include/ATen/ops/digamma_meta.h,sha256=mqYuU1CysSjg-o9lwrW9xZAf3VrhhcPTgXmOfsmOAo8,822 +torch/include/ATen/ops/digamma_meta_dispatch.h,sha256=M3rPChCNkJ6JjaAMghOc_OHLC9exDerG4809iT1cHsw,1188 +torch/include/ATen/ops/digamma_native.h,sha256=3C0xpjLprAZxmanX1e0cUk15E_29NaA8f1rgmZY8qyM,853 +torch/include/ATen/ops/digamma_ops.h,sha256=z2qiKgEnoXZ81a6BHX5macsYkyUprHoo5DwsPq8QWDo,2309 +torch/include/ATen/ops/dim.h,sha256=aboV7ScjyD2KAcF9OG27768Vp4HoOVBf-so6D-tnfGE,754 +torch/include/ATen/ops/dim_compositeimplicitautograd_dispatch.h,sha256=4Y1uEI-FnXSpa42kLWqRn1uLo7WMpMw-HpyzUXo0G5M,1012 +torch/include/ATen/ops/dim_native.h,sha256=oCGLqnVXDk3rFYnowkZaf8YyNBpK9UuMVReX0Httfzg,724 +torch/include/ATen/ops/dim_ops.h,sha256=-iFYOeX0iOLFg_6ohwwtAXbAMxlDFT-nig_QCgCj-6E,1190 +torch/include/ATen/ops/dist.h,sha256=RGfDnzA9c06_snD5B5DhHlo0dpEZcyobnZH6_S3kFPM,1517 +torch/include/ATen/ops/dist_compositeexplicitautograd_dispatch.h,sha256=i6QhidUOeNQpn5-eJFRCrOjEZ_lA3zMkon68-9OKCu4,1317 +torch/include/ATen/ops/dist_native.h,sha256=IriwHkiPCd5ZJNnA6ZDn64re-u1W84z2CeKHgtOn_m8,902 +torch/include/ATen/ops/dist_ops.h,sha256=oHqPzPGY-M2GWydMjiWRU4U_p47URTilWMZAihWAVIo,2113 +torch/include/ATen/ops/div.h,sha256=DM_ytex7IWnzl8KuItLoyy2Iff4wpryYEB6ekFpH6Ps,3991 +torch/include/ATen/ops/div_compositeexplicitautograd_dispatch.h,sha256=jqRoRmx5r68_3GDXNgnVNWiZ0Igl5V6KktibSbOLO2c,1868 +torch/include/ATen/ops/div_compositeexplicitautogradnonfunctional_dispatch.h,sha256=whSTYQZxAHeOVeapdR0GCY6mG5CuYtsZt6MZTtnaIr0,1390 +torch/include/ATen/ops/div_cpu_dispatch.h,sha256=310bHR6uRfb7GgZ4y69_-h4RyatMsODeRPzRmPFIgHU,1824 +torch/include/ATen/ops/div_cuda_dispatch.h,sha256=e3YOYIl4SCPQIwGi78HTChuTcwl5En5rPWwwUKzaxV4,1826 +torch/include/ATen/ops/div_meta.h,sha256=j_0xV0dF_uWPUFh9WUV7RJwbhLq09UWc5IF9mP7g8aA,1045 +torch/include/ATen/ops/div_meta_dispatch.h,sha256=fJJ4Lt4auGV1_SrUGQyhIHXk-eB4ZZKitKnAUJtYYcg,1826 +torch/include/ATen/ops/div_native.h,sha256=mhfqiXM_l4P4u9d3om-GpDzznxnxQvGBpt8joKe_ufE,2762 +torch/include/ATen/ops/div_ops.h,sha256=2dfhhisJIVcZYwXf8wR4ZhGI_L-ogD8NL0rV2ge5pP4,9213 +torch/include/ATen/ops/divide.h,sha256=Y9V-QfK_BEnEKZlwJglmf2iWHQ7V_vC1h7Sn4qkL5WI,2890 +torch/include/ATen/ops/divide_compositeimplicitautograd_dispatch.h,sha256=Oa-uiYExQf4TBSs2v6CbHKZNQZsD5i6TrqhSsICYX2M,2304 +torch/include/ATen/ops/divide_native.h,sha256=-FSAo6PLmfpQm69GPFMG58oVjuYhfcm-rLrREW0L2P8,1757 +torch/include/ATen/ops/divide_ops.h,sha256=F-8TYrRsXip1BRhhRVor6gyiBOcm8Urf1w1mOyyAYU4,7759 +torch/include/ATen/ops/dot.h,sha256=hDxawQL2lna5PrlIaufZrCbACF_rcoHJDth90DShQ8g,1401 +torch/include/ATen/ops/dot_compositeexplicitautograd_dispatch.h,sha256=wcw5KQn5pJ72LPBKQXNRWmGgaORWWWsDfA4QRHxqZno,1169 +torch/include/ATen/ops/dot_cpu_dispatch.h,sha256=cjLAj9j4idJZ9iuw7vyhaNVvjgOyPjzMFyvyRU_T_tM,998 +torch/include/ATen/ops/dot_cuda_dispatch.h,sha256=fpqckH--kSA6f0xnufNmbmRjmUWLiTfuFu_WD85g7fA,1000 +torch/include/ATen/ops/dot_native.h,sha256=KqLQjyiLykDN-wb8n6Nuq_yZA1RdoaVJ0tu--Hs14RQ,939 +torch/include/ATen/ops/dot_ops.h,sha256=DHXMBOESq_NdyzU-0UY7jd91vP6PuaEx9LKOHP24G14,1961 +torch/include/ATen/ops/dropout.h,sha256=ffgo8SUCRGpVNc1wGajUUor3J5nsZ2m9mchvT6T2ogI,1149 +torch/include/ATen/ops/dropout_compositeimplicitautograd_dispatch.h,sha256=A62lu5eajcqjz-PvdfrsJrLLQI1urzSB0lQnzsLnWm0,1116 +torch/include/ATen/ops/dropout_native.h,sha256=UCpMFQHq58nA8Tfkw-lyshJSg9Li0qf43OXi1LP33RE,828 +torch/include/ATen/ops/dropout_ops.h,sha256=nBlyQIs8qckruwwQap5zz979xW18ur9vrJoC4RjnVQk,1877 +torch/include/ATen/ops/dsplit.h,sha256=K71kl82VElRd99-JOukwK7SRVpnNmpB_aFGfiiKX5Yg,1193 +torch/include/ATen/ops/dsplit_compositeimplicitautograd_dispatch.h,sha256=-RGb4ceDOGIuKJjEXHXdJzsZZYvx5Ytj7wzlxl72kpc,1145 +torch/include/ATen/ops/dsplit_native.h,sha256=gKwPnQFs_neaSi-DShY2MpSBpvswLhhrm8_V05uzYOM,857 +torch/include/ATen/ops/dsplit_ops.h,sha256=thGZzVGK40bWJCEQXi_mB7XAhsyj_B9pz-DxgJM7D2o,1996 +torch/include/ATen/ops/dstack.h,sha256=tvO9rs5SNNrs0T4AujeqXpZ-TPwrkY4nZ9N_6_LANTI,1302 +torch/include/ATen/ops/dstack_compositeimplicitautograd_dispatch.h,sha256=I8O2hHEFfPmP8xAZAU2ICtXjcSw0JvYK71FZ0CG-B1A,1172 +torch/include/ATen/ops/dstack_native.h,sha256=wgq-TUR8kydVd-srbZWHlTdUPwICQs_3vBt4QQMuHGM,806 +torch/include/ATen/ops/dstack_ops.h,sha256=jE3VRqZZ-N6m2g3eQtpxtIdVQk9kMousI1FlWlj7CPE,1799 +torch/include/ATen/ops/einsum.h,sha256=D3a0HC_yNt_12sMPesuQqdCFX_qI6TouIIjSyJmfCig,1021 +torch/include/ATen/ops/einsum_compositeimplicitautograd_dispatch.h,sha256=pb_pi68lRsZQvqT4hkC2QrNiyA4vrC1EpRYccqHGULY,1089 +torch/include/ATen/ops/einsum_native.h,sha256=S14xJR_nmLjzUYMwCtdzrsI0SIBa0mjB5xHKaMlu1N4,801 +torch/include/ATen/ops/einsum_ops.h,sha256=1YmRg95kg8CaFOn1jISe3ZHgF3IA23rq6OD9o2ASzaQ,1402 +torch/include/ATen/ops/elu.h,sha256=geP02olb1-qY7fAmw56HE35zcyXcOLnI9AUlmhmhJHU,2062 +torch/include/ATen/ops/elu_backward.h,sha256=5nUKmINRGnl8vqHR05Xu4yHQMtZZReAJwKQqXm6--6I,2302 +torch/include/ATen/ops/elu_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=BCKv8Rl1OWVDYagC-1Ce1thb3MkztI1mk5O0NXq_waM,1192 +torch/include/ATen/ops/elu_backward_cpu_dispatch.h,sha256=FOA61fDZ73rBKQIqclj8UEH8oV3FLLTjxlnbBCUhx5M,1589 +torch/include/ATen/ops/elu_backward_cuda_dispatch.h,sha256=A15wtBV05y3mNuwdVARSaARNt7Xyb6vIKRAIIL9N594,1591 +torch/include/ATen/ops/elu_backward_meta.h,sha256=cuMqof_dpN44dU6kAG0camgQUCHh-PqgSUum7xknge0,969 +torch/include/ATen/ops/elu_backward_meta_dispatch.h,sha256=HgrJZjt5hf0G0lDNBxESqstcDBYQwAb09Ul9LjY7Cyw,1591 +torch/include/ATen/ops/elu_backward_native.h,sha256=L58MWiCBc1hxBd90tMo11M7syJdSFBgt-hiYOXobBLc,1017 +torch/include/ATen/ops/elu_backward_ops.h,sha256=jOfVQW8jUwDzeVvBumeVBcBg4ltpjW3__dX50X_JeDM,2807 +torch/include/ATen/ops/elu_compositeexplicitautogradnonfunctional_dispatch.h,sha256=baUpx2rkErCKs_oLurmv4GUxlsXX6BL1sxFIJ7fGSho,1269 +torch/include/ATen/ops/elu_cpu_dispatch.h,sha256=y9DShreyq2Vw-O82O5qUCh1BI03Wnbt-6hIlgF9xgIY,1524 +torch/include/ATen/ops/elu_cuda_dispatch.h,sha256=ME9OBP8EdSjqbthwgq06jctUj3_zounYAInQnmhAmq0,1526 +torch/include/ATen/ops/elu_meta.h,sha256=UZgQceU3Qt27H796eHvvYw47hAqprBNGFtJUb_DEsjM,902 +torch/include/ATen/ops/elu_meta_dispatch.h,sha256=6u1fbb1-P9ryRfHAEVTxMnYhra0aBQpcci8lY2Zazog,1526 +torch/include/ATen/ops/elu_native.h,sha256=qm2ltdXeKmStN9l2brxvoc0Q398Oaiq3W3TKY3-kVq8,925 +torch/include/ATen/ops/elu_ops.h,sha256=B2AV3R8ImCvKtQB_N_xiAaIU0pc-kSRtxuVoWu8esCY,3119 +torch/include/ATen/ops/embedding.h,sha256=VXZlgOEHobJWEqmR4MndMdOwj_acjSToAl-8dDkmUKY,5614 +torch/include/ATen/ops/embedding_backward.h,sha256=ZbyfA5bhJwGnCs3I0qY--Y-ygsqMHpMf52BEQ6eUPM4,2445 +torch/include/ATen/ops/embedding_backward_compositeimplicitautograd_dispatch.h,sha256=9oLX0S9dGk-bgqN6DwfBXQwjtfyeozsjT5nvPMyoXww,1327 +torch/include/ATen/ops/embedding_backward_native.h,sha256=cobHiJZ2dlOJ2lPx9OFXXErT5lQJb9eL8tAfmtM_ew8,865 +torch/include/ATen/ops/embedding_backward_ops.h,sha256=XSknOoabtnW_quarg8o8Uc5YUPwU6nfOju3gIJ-JRVQ,1631 +torch/include/ATen/ops/embedding_bag.h,sha256=bvZE-ccv4K2Q5dS6MVyUL6YX0x6wrCfn3x3kF3AKVTs,2208 +torch/include/ATen/ops/embedding_bag_compositeimplicitautograd_dispatch.h,sha256=z2Hlk63FbSyf_et9yE5x2yN3PjW1G2wtEf86UYBmWB4,1625 +torch/include/ATen/ops/embedding_bag_native.h,sha256=_Nxd1dFBAPzB3Fe1pFWITFVD_BtUpLtXMWpMgTmoTts,1337 +torch/include/ATen/ops/embedding_bag_ops.h,sha256=6S9H9Ws95KiDe_Z_ab_lus-_pQ3olNtXAz0bI4vszeM,3515 +torch/include/ATen/ops/embedding_compositeexplicitautograd_dispatch.h,sha256=X9wEeoa3zC3sKdFDFHn7Ktc1qxnPq9VgBD44J7sCqaE,2031 +torch/include/ATen/ops/embedding_dense_backward.h,sha256=V0VD1_9FWwJmZa_BjQqfRdD44WGhZih9K3SEsy7oDu4,6241 +torch/include/ATen/ops/embedding_dense_backward_compositeexplicitautograd_dispatch.h,sha256=ua4FPXRvYb1BJFIZMXjuIq5fSYCQMJrq5yyxTMyJzrE,1788 +torch/include/ATen/ops/embedding_dense_backward_cpu_dispatch.h,sha256=zwa51u0ncbal4FAZsJouJ8cKGSF5si1YcGgrRMkT5nw,1283 +torch/include/ATen/ops/embedding_dense_backward_cuda_dispatch.h,sha256=j-r5ABK_xdDlm1twqGrocOvBiMa2nFr9Ne5puL8qiK8,1285 +torch/include/ATen/ops/embedding_dense_backward_native.h,sha256=xCx4lj1WCt_Z2Ks1nWmD2Pufx9RRKiVmuoUtdQLbpPM,1246 +torch/include/ATen/ops/embedding_dense_backward_ops.h,sha256=9NSiVZo4QX-9F1-DdAZwVsezhi5-uRAwo6bZslqw4X8,2629 +torch/include/ATen/ops/embedding_native.h,sha256=cjL2FfhDAtpYbWUazK9kzTbEVmgkWfIKAgC-lUpGuts,1203 +torch/include/ATen/ops/embedding_ops.h,sha256=iJAQUOuP03GCc3tjvpZ3fwjc_2NNlYYcvBvChA4bzHI,2463 +torch/include/ATen/ops/embedding_renorm.h,sha256=jGEnaPdejB8jSpmVd6QtFHUuv9IRLfq5zqhhDe28yjc,2121 +torch/include/ATen/ops/embedding_renorm_compositeexplicitautograd_dispatch.h,sha256=kt2IrehVKKhjrr9dWCQGVEGJgy-a8wCcjrT8O9SoHhA,1394 +torch/include/ATen/ops/embedding_renorm_cpu_dispatch.h,sha256=OILyb8p8mrUfJiSbU3DHG_doMQSf0SgHfeQJddDb0ok,1044 +torch/include/ATen/ops/embedding_renorm_cuda_dispatch.h,sha256=RGTLkfRRY7F6y_nLAjoP9PzKE1FtWJr_Vt1TcwkwSig,1046 +torch/include/ATen/ops/embedding_renorm_meta_dispatch.h,sha256=eeBiLc_7hoapRnvjc6EogQaO60COpr_1qpHt4swUBXg,1046 +torch/include/ATen/ops/embedding_renorm_native.h,sha256=080IuuA0PMfhi5J-0WNEcl4CihtKNzAO72sZdxMX7Ac,1211 +torch/include/ATen/ops/embedding_renorm_ops.h,sha256=XwwEveXxTvrNz7EGMp4EWYN3D7P5Wd94fCjKI5ZWuVM,3023 +torch/include/ATen/ops/embedding_sparse_backward.h,sha256=jrSdzjOKHcULM1hFOpfIVRrJ2_ueWRJOQz45L2RbvU8,1192 +torch/include/ATen/ops/embedding_sparse_backward_compositeimplicitautograd_dispatch.h,sha256=9pQ4jqFBnXneOWDfRPTKHkzDwNAYYdL7awWbdT_qa_E,1132 +torch/include/ATen/ops/embedding_sparse_backward_native.h,sha256=AE0MzTSqnSWk3zAlE4oxgzXYluvm-ZADy9ks6Ur67EU,844 +torch/include/ATen/ops/embedding_sparse_backward_ops.h,sha256=ibDyI8UpizWRB3HYjf-gQHYxd1WgeuQzrzs-oIaKbZk,1577 +torch/include/ATen/ops/empty.h,sha256=E_sO_rri6_vgvkYqw5oeWrMg3XN45r37Q8L-yx4lxn0,9482 +torch/include/ATen/ops/empty_compositeexplicitautograd_dispatch.h,sha256=oZ8R_jfxK65sS99AlwCCE1nEIwHNO7QzNpLWvpD1flo,1774 +torch/include/ATen/ops/empty_compositeimplicitautograd_dispatch.h,sha256=ku65s8JHL5Ow3Eq8U2jVvRVstMeKVFyhKu7v0YGJEAQ,1510 +torch/include/ATen/ops/empty_cpu_dispatch.h,sha256=6iQ5rpUED09D-jLOu8bqfM1s8hp0bY-4dYGs1ExTQ2M,1718 +torch/include/ATen/ops/empty_cuda_dispatch.h,sha256=6NipKv-tGlF9wZZABIsPVhrQtJFCqNIRzRPYLRxdKuI,1720 +torch/include/ATen/ops/empty_like.h,sha256=dnLoJqk_Olujv8LnpLM_15zZThPdvXu5wmNVjPOT_p0,2475 +torch/include/ATen/ops/empty_like_compositeexplicitautograd_dispatch.h,sha256=JSHN3P1bs6ta2dTb_TlvXnhNMsuZt9GKbnMyMw5UUX8,1646 +torch/include/ATen/ops/empty_like_native.h,sha256=myr7KZbvEauIshBb8LiAIdZua6uSI3-gMipFg7Yao18,2241 +torch/include/ATen/ops/empty_like_ops.h,sha256=vUKmhPn6RopZy2Bo98BlJxctrdvOxX9GXt2fVocj6gs,2655 +torch/include/ATen/ops/empty_meta_dispatch.h,sha256=-46psyLd8P9957SHSpXmFWhEq1JS3_EG55gpz6RpPy4,1720 +torch/include/ATen/ops/empty_native.h,sha256=uNW3rx-w2NXk5skO9JlahinwyFPl7cffE1hJdarDRnc,3846 +torch/include/ATen/ops/empty_ops.h,sha256=mmlimGY-RTfRaXZJAKqK9wLhLYWlBzW6yHnhWrIuvcc,4869 +torch/include/ATen/ops/empty_permuted.h,sha256=tdRLCvKQbDIQ9GTob8i1q8TXDjt_tZB8ulb7MisqO7U,7032 +torch/include/ATen/ops/empty_permuted_compositeexplicitautograd_dispatch.h,sha256=1tmPQnli_yinJV-r-3zJqjq5cwXt1Fs3uGFKVHr7u0U,2192 +torch/include/ATen/ops/empty_permuted_native.h,sha256=1xFuLCm83kiTQSTU3xLRXFnTbhmWcRg7aySoVKN9DyA,1063 +torch/include/ATen/ops/empty_permuted_ops.h,sha256=Yx1pw0EGRJukhgFuex89NyrjNIUMwvPryMoRt2Onq-4,2567 +torch/include/ATen/ops/empty_quantized.h,sha256=W1u-gjSEPeRiwPUE70HYsAkXaIFw59h4xP_GU1NZjIg,2736 +torch/include/ATen/ops/empty_quantized_compositeexplicitautograd_dispatch.h,sha256=YafgEwi-ZJin0TdyrlgkMKpBfu6aQgO6LmrxmkkwF9I,1302 +torch/include/ATen/ops/empty_quantized_native.h,sha256=EsAB1we283m5Eo1DgNrG89KF5ZloS3WoIeBnSEgN7Bo,1146 +torch/include/ATen/ops/empty_quantized_ops.h,sha256=AMPzbmaQufqeQJKC6AbSdkw1Z61UoM3HQCej_0bcYik,2849 +torch/include/ATen/ops/empty_strided.h,sha256=8aqvFYjwEcBdsXVacmcbC8WcCVQqSraI3p02A_6kCo8,6895 +torch/include/ATen/ops/empty_strided_compositeexplicitautograd_dispatch.h,sha256=xhSMpKVmVfiQaNwGIcq7WV3yNAXLQKJd2mRcuEMjV-U,1420 +torch/include/ATen/ops/empty_strided_cpu_dispatch.h,sha256=06o1S6KGVG33CehvBYBu9eT1BoKBYScNv0ArzzybI-k,1628 +torch/include/ATen/ops/empty_strided_cuda_dispatch.h,sha256=ngvPLf8nUvMdTDpE1iF_mS7-kRrULjDlAEvNg5e1X-M,1630 +torch/include/ATen/ops/empty_strided_meta_dispatch.h,sha256=K7IC5qx22Pntiin98KXzfm7tNTbrG5GvCvx9T5DL8HQ,1630 +torch/include/ATen/ops/empty_strided_native.h,sha256=hrdn1rzoZyGehfnzWkk6kQPNbpYMWdSi-P4LaWqpYOY,1800 +torch/include/ATen/ops/empty_strided_ops.h,sha256=bUoaB54xIOOSfO4VKnICAQI3ILwqTOwyUkkLtI9cZEM,2537 +torch/include/ATen/ops/eq.h,sha256=jbiBR_T-cDpsD_icbEZsNdl76sLKZiD83Fj_KQj18Ic,2096 +torch/include/ATen/ops/eq_compositeexplicitautogradnonfunctional_dispatch.h,sha256=_h16vxOSj6JM0iPdBfhjY2g5eaMsVhx3iJ4-3KL5qvk,1288 +torch/include/ATen/ops/eq_cpu_dispatch.h,sha256=p3xdTFcaS2uu3jyvNw6PDDQ_CKrThfqb3rJ0PWNm97M,1620 +torch/include/ATen/ops/eq_cuda_dispatch.h,sha256=YcfuDTYBTe-Hp3ifsK1JtR1QRZbcpZlqGICqTJKWytQ,1622 +torch/include/ATen/ops/eq_meta.h,sha256=ZfxJdGriWEPf5VOGd0VfLWtopp31JMoZBMXg3BnFDbI,989 +torch/include/ATen/ops/eq_meta_dispatch.h,sha256=m-AF4j2HXN6-RJETYIx65S81_kbNroV-4I-QKfx6eek,1622 +torch/include/ATen/ops/eq_native.h,sha256=h9HJF-2Fr053_TtC8GjGw_NdIErC3xqqQeTeQpfqtJI,1639 +torch/include/ATen/ops/eq_ops.h,sha256=YJ0XCXuKoChB6NUDpNW5gDRmOqey8dlRJxsjlattBew,4455 +torch/include/ATen/ops/equal.h,sha256=B1qej1C9ErRx4W4mir8puHicgCT3XMhYSczYO81J1oA,926 +torch/include/ATen/ops/equal_cpu_dispatch.h,sha256=Kg3CwVywunYYUcqiE0sMTyAlIfvnyRSegOb_ejq-kEo,993 +torch/include/ATen/ops/equal_cuda_dispatch.h,sha256=WnEg9gXMy9HzNX_oYdffDqOGlAPLzv7Gn6uQSbZ4Suo,995 +torch/include/ATen/ops/equal_native.h,sha256=4u0z-oBAbVo0uom0BT1tUsNrI3g6hYzDNf2RtkXcPik,918 +torch/include/ATen/ops/equal_ops.h,sha256=OWQeEjGANNFsG2LVJoA0parq-cu2y2zjODl4n9UD4D0,1274 +torch/include/ATen/ops/erf.h,sha256=-Jyqt7S3hLZnbic_e6IpZfj-piJJZXrY1culRJybpJQ,1384 +torch/include/ATen/ops/erf_compositeexplicitautogradnonfunctional_dispatch.h,sha256=aaY4RsKmcDhRjQTQs0w9zjNPv6qFqpxRYNN6IxDptvU,1089 +torch/include/ATen/ops/erf_cpu_dispatch.h,sha256=pcW8HmhwMlLqOCPpxsmZOuNIrzMf_QTazQgHj19zzKs,1170 +torch/include/ATen/ops/erf_cuda_dispatch.h,sha256=wgKacr_pKctv8amK93v334UHHWaXACXOZBYGLLB-F18,1172 +torch/include/ATen/ops/erf_meta.h,sha256=GG8-dyt4ovvx0SOpBNL5I7cVw93ZBveooufTRzt84jc,818 +torch/include/ATen/ops/erf_meta_dispatch.h,sha256=xqqYrV5LfF_eh6FY2OR_6afI6o9teIMZAts5AAuApgQ,1172 +torch/include/ATen/ops/erf_native.h,sha256=-jKnypdbIR7rnGX9Zp4EDhxcz-z36BGsvzbHm22kRiM,1243 +torch/include/ATen/ops/erf_ops.h,sha256=M0CoEgvMBcX80kAjytdJmkkv59q6feHWuVWE_Vr_PoI,2273 +torch/include/ATen/ops/erfc.h,sha256=3fhKgdJE6SHBN74Ge9LVUUa_WjlftLWAvlSLRKZNDNA,1397 +torch/include/ATen/ops/erfc_compositeexplicitautogradnonfunctional_dispatch.h,sha256=p_QN-mNWvtVZQh6pEfIbgX_nW-6mGIj0soUEK9Ig2ro,1091 +torch/include/ATen/ops/erfc_cpu_dispatch.h,sha256=7MqFKcNcp8zalFMN8Qskn-8mzIIiI6IQNAXaMxntCAM,1174 +torch/include/ATen/ops/erfc_cuda_dispatch.h,sha256=TJYzfkTR7Crd0rm7ZjWdEja8GGLp_EUWrjF4nKtxHMY,1176 +torch/include/ATen/ops/erfc_meta.h,sha256=7MRi-D7QH5s4rFHEdjLZYOs0WvTxp94BfXToDSNzgS8,819 +torch/include/ATen/ops/erfc_meta_dispatch.h,sha256=-MIAF7ORvLm00QM75MGflyBr0anj-A-xUkxdPk4OVz0,1176 +torch/include/ATen/ops/erfc_native.h,sha256=vukzl9L6b2yLrCEjp1orpBtu3TjDVO5NEYkUDVOxoTQ,844 +torch/include/ATen/ops/erfc_ops.h,sha256=dGs_VfG_sh0lT0khVc2X8pCrFU9HWkex_6e_aQ7tWqg,2282 +torch/include/ATen/ops/erfinv.h,sha256=XFrToqDxEennZ_A4nBCwjwdgSI19sNJ2FuSF4PDOkfE,1281 +torch/include/ATen/ops/erfinv_compositeexplicitautogradnonfunctional_dispatch.h,sha256=spa_KYP8Us4sENmQpwUdBS9Zx8T8MloytqkyZjWZTYA,1095 +torch/include/ATen/ops/erfinv_cpu_dispatch.h,sha256=eQ-0qRYrh06TYGl33Hj9irVngUjhoIBnDTuwropGGxU,1182 +torch/include/ATen/ops/erfinv_cuda_dispatch.h,sha256=arizfANIM1LTL2IKSNb_bP4-CPqM516v6tF5sJWPrb0,1184 +torch/include/ATen/ops/erfinv_meta.h,sha256=Xq4DfrgcaGXtEbApeKQlLIn_kWfB2x63VxWT7LVgMO4,821 +torch/include/ATen/ops/erfinv_meta_dispatch.h,sha256=2oRmI8jvH_tNQ4-CVa1RgYRfuB9VJdHLetIggkvyxWg,1184 +torch/include/ATen/ops/erfinv_native.h,sha256=i7KumcRxPO-o6fwymkGjYMJxJGln9c_10wSMlGFBq6M,1270 +torch/include/ATen/ops/erfinv_ops.h,sha256=SbPjRYY32oaURpFSk3HoqbQmhHHuR35GuvobiwSYMiA,2300 +torch/include/ATen/ops/exp.h,sha256=DC3Tw7Fm5uilEIeumDm1s2RZOLEHrj_iFuLSbNefE_8,1384 +torch/include/ATen/ops/exp2.h,sha256=W3FGcnwLlqr6NJJFOrOKBlYp82PYKkQnmOYZurehTkc,1397 +torch/include/ATen/ops/exp2_compositeexplicitautogradnonfunctional_dispatch.h,sha256=o50NiBKbX8vfSwSkpUtRIqRsOBh0EK109jpza1-IUcA,1091 +torch/include/ATen/ops/exp2_cpu_dispatch.h,sha256=abYoMbZCXR-1lnszZHf-GGvJiLSw_eOz0k9Wohk1MiM,1174 +torch/include/ATen/ops/exp2_cuda_dispatch.h,sha256=_hGNy4JRC_CzMnFnnUPTLn6zmSfoyk7ulKAVcKxnpFE,1176 +torch/include/ATen/ops/exp2_meta.h,sha256=m8gtBBUgkIkQ1cK4FJ44mx9oNPruOeRXnlaoB26kAWA,819 +torch/include/ATen/ops/exp2_meta_dispatch.h,sha256=pt6cs-uwHTI707A9v09_22pVmmNyQSWnslJC6coMyb4,1176 +torch/include/ATen/ops/exp2_native.h,sha256=7WlENldCopf4GFyv7eCRX-_zDfT3MNaEWcA0JY3h2qI,844 +torch/include/ATen/ops/exp2_ops.h,sha256=5z-tGauNj5uHCel0uYFs6Zex4C2P0mLb0PEDb2wGSZ4,2282 +torch/include/ATen/ops/exp_compositeexplicitautogradnonfunctional_dispatch.h,sha256=KpM3kWXfdW1TTuujUTgis-c98Ze-YUCcVr2WeExCYbg,1089 +torch/include/ATen/ops/exp_cpu_dispatch.h,sha256=Tjpdz2NwhGzA77Mn9DlZdq-TjWVML05JZcPOfnSFHl8,1170 +torch/include/ATen/ops/exp_cuda_dispatch.h,sha256=rjPRw1Zx-Gglf6dT77T66aNJW2yt4l5GeeEto10RD9M,1172 +torch/include/ATen/ops/exp_meta.h,sha256=hmbpqASi6dexagN1P2vkI2OfMppWcolzuhxP7nOfIZQ,818 +torch/include/ATen/ops/exp_meta_dispatch.h,sha256=Vwt198tZdsIJIGKMrMtEMuzHW382JpWqePasNFEu8yw,1172 +torch/include/ATen/ops/exp_native.h,sha256=o4S7V-PU4DYI96hyvJ0KkY0ibEV8i2Hfvv_5ZkgiCA0,841 +torch/include/ATen/ops/exp_ops.h,sha256=cmoOBrkS_1J6bJuRx0vegON4k6cJeo8FfmLoq7Xf2jg,2273 +torch/include/ATen/ops/expand.h,sha256=PezukEin25kZBEXY2tKbl0WvLI3IdYrD3fFrultfHwg,1298 +torch/include/ATen/ops/expand_as.h,sha256=ChCHxBu0I_f237DgEbRZYA_5pWtki-Cx_OPIttdwf-Q,760 +torch/include/ATen/ops/expand_as_compositeimplicitautograd_dispatch.h,sha256=ob0JbBH0eN3_hV1RCXCYDKrrB1zhfa6pQZ5ApsjNjTU,1047 +torch/include/ATen/ops/expand_as_native.h,sha256=MW0wIq_wR6hEtJieGgqozbsEIDz4vadJ_WiY36vSx_Q,759 +torch/include/ATen/ops/expand_as_ops.h,sha256=vM-KWBm9FoEa2Frv-wGv3C2bnGUOLKCXYaxH91orFgc,1312 +torch/include/ATen/ops/expand_compositeexplicitautograd_dispatch.h,sha256=eIYq4nY7QZvYsS3q1QKdxBbALr4PhBfQo8VLB1qxUUc,1169 +torch/include/ATen/ops/expand_copy.h,sha256=jgOt7AwlivhVa8gKcO9qCD3QIuNhuIzoDo8WQSUqDGw,4380 +torch/include/ATen/ops/expand_copy_compositeexplicitautograd_dispatch.h,sha256=YzTyn-w0g6jMkg9QUIJjeGPUiYWoKnVV_30Oe_y9DDQ,1480 +torch/include/ATen/ops/expand_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=0lXoxSKePgFRf_W3yvgDm-85pvldj6wFCoMbOcKWK8A,1205 +torch/include/ATen/ops/expand_copy_native.h,sha256=Lshhf3DWKcEPDbHNVoQxxEcQNJx_ArLPU_QIaP_dSw8,920 +torch/include/ATen/ops/expand_copy_ops.h,sha256=u0cn7LFUFg1H4hEKAH-E-m5TNBa8y65lltLPEi2uSyY,2124 +torch/include/ATen/ops/expand_native.h,sha256=uviKJ_7U7-kOxAkT_1GA0iX2qHwwsIWEdOxSCuZjMEU,773 +torch/include/ATen/ops/expand_ops.h,sha256=dNeK11hk_5eNaU_TplXdMnhMsRi0d5KIaNqUAlvCtr0,1365 +torch/include/ATen/ops/expm1.h,sha256=921qXV22Du8cn9ILwPQkgE-mWpWu-jT1qjmL5aIAzCA,1410 +torch/include/ATen/ops/expm1_compositeexplicitautogradnonfunctional_dispatch.h,sha256=XJKsf7e-R577kGHz084hu1hr9Fsbcm1uYgNaMvKIzAQ,1093 +torch/include/ATen/ops/expm1_cpu_dispatch.h,sha256=oxCmUv1cPWq_taq58ZpKvXCAbKgH7yHtCooYm3yEV-o,1178 +torch/include/ATen/ops/expm1_cuda_dispatch.h,sha256=mE-5U-nqsWPO5BukyZx2W-_dW_aBUJ-P81pTMNemYyo,1180 +torch/include/ATen/ops/expm1_meta.h,sha256=adHkytCmZBxNFqWxUUaVIgyYkr3SaOasjWyTNDYydLE,820 +torch/include/ATen/ops/expm1_meta_dispatch.h,sha256=oEhwLhzasqFzgGi1C9wXLQ_2SFjDJeprT3UspH3PUek,1180 +torch/include/ATen/ops/expm1_native.h,sha256=4XLabeEQ77eh92h4o4s9fgfhxoeq7vTCC8XMh8U9itc,1261 +torch/include/ATen/ops/expm1_ops.h,sha256=hQSO3un2pSI1DvzFBJ949uBvUa234T5_ASfKKaF6NMI,2291 +torch/include/ATen/ops/exponential.h,sha256=OLwz1tMRIyNAQ_Wg3iMZ3cOsVcEgWxosYDCW5n0NKeU,1716 +torch/include/ATen/ops/exponential_compositeexplicitautograd_dispatch.h,sha256=2JGiyMW_TduZm3inMUgXq6yWIvvkon_lRPCBVePMywo,1392 +torch/include/ATen/ops/exponential_cpu_dispatch.h,sha256=Kc2RT6ty52LwMMZwILvYmBUwEy0J8001xFQeC_WOlkc,1049 +torch/include/ATen/ops/exponential_cuda_dispatch.h,sha256=HS-hxBRa1-E6n-z8-Adpn5cEzgmi3-3ihuhRNFPCnOI,1051 +torch/include/ATen/ops/exponential_meta_dispatch.h,sha256=WjauTK8PSgtlf3mwMuAt5SPfVCw9pIcUcODauuR3k1U,1051 +torch/include/ATen/ops/exponential_native.h,sha256=w-2ggg6SMNnqKT0FmKt8huOkKYznDk1rXd5UfjM_bWQ,1076 +torch/include/ATen/ops/exponential_ops.h,sha256=aynzxfKhVSLcVEpOYLhIh5bXY3afU2tGX-zuWrmJ4-c,2933 +torch/include/ATen/ops/eye.h,sha256=yvN9tnXWSxjpZq2umTRF5DIJHXGkbGzONnNiSWDt2Ds,9881 +torch/include/ATen/ops/eye_compositeexplicitautograd_dispatch.h,sha256=YwxF-xhjKV1WLRvRQF7_NYbQTp9i-b0bffZ_QV7nxrQ,2056 +torch/include/ATen/ops/eye_cpu_dispatch.h,sha256=OrZnWPbjBiqa82qIrHrS_YCKSEucuaXYMdQV8bULpzI,1508 +torch/include/ATen/ops/eye_cuda_dispatch.h,sha256=ZUIk0lYNrHpl0xgmx2NCSDDYL9dV2TtuRWQaq33SGAg,1510 +torch/include/ATen/ops/eye_meta_dispatch.h,sha256=mJ-ddSEcIUuRyiJjMeQ71z8WQLjjPzfhOv5eFNKB-fY,1510 +torch/include/ATen/ops/eye_native.h,sha256=3qjHBew7DSKUXihFMsWlIlRtBi9ra-oDY1xMfT-DSYM,1359 +torch/include/ATen/ops/eye_ops.h,sha256=WgmenuNAH2ip3udCtF5chVOHuGXmoTMs-h1xbQO9od0,3844 +torch/include/ATen/ops/fake_quantize_per_channel_affine.h,sha256=PeVPisP3elUtykaZbx00M3xm01AycS81z9Fnr5zjKKI,1224 +torch/include/ATen/ops/fake_quantize_per_channel_affine_cachemask.h,sha256=D2O0dx7Cukpmuul5h7i6OrUwhnwSD2MIL7hcBJCDqKk,2547 +torch/include/ATen/ops/fake_quantize_per_channel_affine_cachemask_backward.h,sha256=LnI91W7oOlfDtsd6K5Mlv4QQk3BIUWZ9g8lBy4DCAVA,1115 +torch/include/ATen/ops/fake_quantize_per_channel_affine_cachemask_backward_compositeimplicitautograd_dispatch.h,sha256=jdjlS_IgLV7IiLS6CzJVg5yVmFXocPgDRKofSiP_FIU,1088 +torch/include/ATen/ops/fake_quantize_per_channel_affine_cachemask_backward_native.h,sha256=1-zBhn4n0FDmCZ3YAVogddgbjgBp0cLuN6W7trh_K9M,800 +torch/include/ATen/ops/fake_quantize_per_channel_affine_cachemask_backward_ops.h,sha256=LZli9OZ8vxXIERdK4E4kPL0Ah-mQgnNTXLc_-YN8z9c,1429 +torch/include/ATen/ops/fake_quantize_per_channel_affine_cachemask_compositeexplicitautograd_dispatch.h,sha256=UwhphtOYbfLX2CelW1IBh4EnjOnEyR-dIXR4Ou8Qp38,1505 +torch/include/ATen/ops/fake_quantize_per_channel_affine_cachemask_cpu_dispatch.h,sha256=3hfbe3Y8Az_t4_sASQwHgUg8Yd43iGEZJhdjA-istRA,1144 +torch/include/ATen/ops/fake_quantize_per_channel_affine_cachemask_cuda_dispatch.h,sha256=wwWUOeNnNg5SBE-KJ9VymmoRuchqro6UnKz0rCiYmSA,1146 +torch/include/ATen/ops/fake_quantize_per_channel_affine_cachemask_native.h,sha256=yZpy2PcC2hHILwWx4_BTZhQ6DHQnpWMBE3RzfmZksCg,1170 +torch/include/ATen/ops/fake_quantize_per_channel_affine_cachemask_ops.h,sha256=QdVnqbPrqO1NUyyLa4QUPwVSAmnYB8tTb94Srd-YF8s,2997 +torch/include/ATen/ops/fake_quantize_per_channel_affine_compositeimplicitautograd_dispatch.h,sha256=CO_4xzd6HXq2C6SAfH5By6OJmoxrxOb7dOTGauq56QA,1153 +torch/include/ATen/ops/fake_quantize_per_channel_affine_native.h,sha256=Yxyu38RSBHgjvPjv2fU2bMi0V3cTW38AHem7ZaLJsLQ,865 +torch/include/ATen/ops/fake_quantize_per_channel_affine_ops.h,sha256=tosCjZgzGyneSPAuvTpW-PetIxEunfPa7UwhzDqY52w,1647 +torch/include/ATen/ops/fake_quantize_per_tensor_affine.h,sha256=yglQ2559s2zf8mxDb6DnxDSj20AXtZwfwCngiF0cPzQ,1602 +torch/include/ATen/ops/fake_quantize_per_tensor_affine_cachemask.h,sha256=_YWL2kvwwND0TPq5KoUqLsUuGANW2HLFhwaET3KwIg0,2366 +torch/include/ATen/ops/fake_quantize_per_tensor_affine_cachemask_backward.h,sha256=R4aEAs5vmG4FmAhqknIIJu9B1ilDxjRtDZ0YjI96c5w,1111 +torch/include/ATen/ops/fake_quantize_per_tensor_affine_cachemask_backward_compositeimplicitautograd_dispatch.h,sha256=WY_f8NPlOyaO270NjTpFTK5d5SEm-aRYcDJG7VPHd8Q,1087 +torch/include/ATen/ops/fake_quantize_per_tensor_affine_cachemask_backward_native.h,sha256=XlFsAxkCXUh29GZybxIlk55oqXPN10wmKNCaVNYEkS0,799 +torch/include/ATen/ops/fake_quantize_per_tensor_affine_cachemask_backward_ops.h,sha256=tAX9NvU4zbLm1jUJgjzPLPw1Onjm3f9i5Rt9cYRAE6M,1426 +torch/include/ATen/ops/fake_quantize_per_tensor_affine_cachemask_compositeexplicitautograd_dispatch.h,sha256=aJxGKx6U62atFKH5aHvKtSydWD5YbB2YWBUdPXlsQu0,1429 +torch/include/ATen/ops/fake_quantize_per_tensor_affine_cachemask_cpu_dispatch.h,sha256=xt97c30q8oLo2XMPT22BENcJ3vPzvnH-GKjHLtrS9eM,1106 +torch/include/ATen/ops/fake_quantize_per_tensor_affine_cachemask_cuda_dispatch.h,sha256=JVIQzZ96Lzpi-f50iuT8vH7D7-ekOjOU5P7IX3wWTJ0,1108 +torch/include/ATen/ops/fake_quantize_per_tensor_affine_cachemask_native.h,sha256=I3rSDY1c4tIFFo6AFzb4ZnBAsazUsmhruf5-N7Fzopg,1094 +torch/include/ATen/ops/fake_quantize_per_tensor_affine_cachemask_ops.h,sha256=jolIWSHPIp96Otyjkxt3XITxRAQpvX0DDPG01Vr2Q60,2751 +torch/include/ATen/ops/fake_quantize_per_tensor_affine_compositeimplicitautograd_dispatch.h,sha256=GQWq-eTUpibA5EZTKtw13KuNkYidU7dXaR2g5Ko28B8,1289 +torch/include/ATen/ops/fake_quantize_per_tensor_affine_native.h,sha256=JBEBVI4-af_-ADdPVDmzEkfTe15hDDZeLG3KwXu3K7Y,1001 +torch/include/ATen/ops/fake_quantize_per_tensor_affine_ops.h,sha256=R35j5L7sJ1AMaVawwjwDp_M1MAS9AFphSC2SYpExYXI,2454 +torch/include/ATen/ops/fbgemm_linear_fp16_weight.h,sha256=rEJWd7iWaoeuNbb31IDvESxaZ_ze2ZPgyGizjvDAqA4,1451 +torch/include/ATen/ops/fbgemm_linear_fp16_weight_compositeimplicitautograd_dispatch.h,sha256=NnxbWuFM_n8flaF5VOtoRU_omvQUbqaWTXd3tq1f6Og,1251 +torch/include/ATen/ops/fbgemm_linear_fp16_weight_fp32_activation.h,sha256=pizXa-j2MbghR0K6Za_-eucQ2xjPRlLGccjnIeWVNVU,1599 +torch/include/ATen/ops/fbgemm_linear_fp16_weight_fp32_activation_compositeimplicitautograd_dispatch.h,sha256=2qHvTxaPDzUmmi3BC2OznzjK7Mf6wc7HpmBWqoOwxX8,1317 +torch/include/ATen/ops/fbgemm_linear_fp16_weight_fp32_activation_native.h,sha256=ALLHF_CWsZ5rABccJNWztgMUckCi0Xda8HfTkXyk2wc,1029 +torch/include/ATen/ops/fbgemm_linear_fp16_weight_fp32_activation_ops.h,sha256=wFHnXSSAfS9d8QMkn63l1zGbxosfgSKt-5UsxBDY9OY,2503 +torch/include/ATen/ops/fbgemm_linear_fp16_weight_native.h,sha256=fKIKK4Ikfjr7OQPxuqSEt9b3EjgPlWUFTiC0JJq1Agg,963 +torch/include/ATen/ops/fbgemm_linear_fp16_weight_ops.h,sha256=jKAw5AFTYNk6j6QfpMOroz1z2wewahT_EtvPev0EAAc,2303 +torch/include/ATen/ops/fbgemm_linear_int8_weight.h,sha256=2SLO1CDjGYvWl3TlPPrNsH5q7PjduZUUNEAWiOHSn_s,1330 +torch/include/ATen/ops/fbgemm_linear_int8_weight_compositeimplicitautograd_dispatch.h,sha256=WTyPo1IuzZbEiGo6txngpU-jMWVRnzIOkHUYrnbBUeA,1220 +torch/include/ATen/ops/fbgemm_linear_int8_weight_fp32_activation.h,sha256=3yrw-E6DlS_AEMsQcEIJdxRr19rZYsT4mn2vwt54BLk,1394 +torch/include/ATen/ops/fbgemm_linear_int8_weight_fp32_activation_compositeimplicitautograd_dispatch.h,sha256=eq6lQUt9oqADBCsCb_FZhepUpuhmFxft1akZiorbArU,1236 +torch/include/ATen/ops/fbgemm_linear_int8_weight_fp32_activation_native.h,sha256=pXBHxCRXh0Dv04wHSSDu2dYQ6pup07KfI2Eb9gb3UoQ,948 +torch/include/ATen/ops/fbgemm_linear_int8_weight_fp32_activation_ops.h,sha256=D4AhBZBISv9YbV95mVFJG0ow467D_0C-nI5KESWwgIw,1913 +torch/include/ATen/ops/fbgemm_linear_int8_weight_native.h,sha256=gP2h6COUhM4enFgI8TPhqcOmH9Zq2mYGxxKMZzfVDd8,932 +torch/include/ATen/ops/fbgemm_linear_int8_weight_ops.h,sha256=NSFL6EZyxesFHNY04vo7bOkgecjjEBYcfk0ZZJChNfE,1865 +torch/include/ATen/ops/fbgemm_linear_quantize_weight.h,sha256=r4NZmsvcL46eoxeVmNbTLSupO2O92kdjta_2RSQ8kUM,1048 +torch/include/ATen/ops/fbgemm_linear_quantize_weight_compositeimplicitautograd_dispatch.h,sha256=jrhuVbpaRgfX7n9Cn4F7ZiUMKMIo35R-okv4S29SPeM,1082 +torch/include/ATen/ops/fbgemm_linear_quantize_weight_native.h,sha256=Y7HhnR60kNBYDX29jtHrKMmwaMA8M8AniZwlGL669-g,794 +torch/include/ATen/ops/fbgemm_linear_quantize_weight_ops.h,sha256=ETt7KOzq-R5BtT2m41ZymB_3JIuPxdZsYOvFYsPxiTo,1425 +torch/include/ATen/ops/fbgemm_pack_gemm_matrix_fp16.h,sha256=ZH7OkWkVCTT0-5fQkHv7jI9ATQqaJ_8TvILfdtgOBYw,982 +torch/include/ATen/ops/fbgemm_pack_gemm_matrix_fp16_compositeimplicitautograd_dispatch.h,sha256=_hB1ElIij5AXi_N4Sy_hZRC5MBD7ndun_fVOPz87gP4,1041 +torch/include/ATen/ops/fbgemm_pack_gemm_matrix_fp16_native.h,sha256=8wpyhAiBln9Taj_sqfvJARfVDU2TTUNt5fb5lPvcauo,753 +torch/include/ATen/ops/fbgemm_pack_gemm_matrix_fp16_ops.h,sha256=vnke88L_XH0eZI4aCt7Gu5J1mpQIy4A7dRwZJJRkOpE,1280 +torch/include/ATen/ops/fbgemm_pack_quantized_matrix.h,sha256=AJ2lH-Vzh9Ye_DXfgV5PbrxOCXIZP2ixXvoYIhppiNA,1234 +torch/include/ATen/ops/fbgemm_pack_quantized_matrix_compositeimplicitautograd_dispatch.h,sha256=kCSvlteZQETsVtytyoGRA63NnS-8Pi9NnHxflgX-9cw,1140 +torch/include/ATen/ops/fbgemm_pack_quantized_matrix_native.h,sha256=1nEER8XyhgNr7VX-hRKWZy15mC9h92XOxqTFY4laQSo,852 +torch/include/ATen/ops/fbgemm_pack_quantized_matrix_ops.h,sha256=P9SAYE65ukiBn2y3JF_X4VqrQvsaUwa7eKghq6kNgVU,1933 +torch/include/ATen/ops/feature_alpha_dropout.h,sha256=IEOzoHvVUT665YiE5OltVEEPAfe0VvXSpr6ePW_hwnM,1247 +torch/include/ATen/ops/feature_alpha_dropout_compositeimplicitautograd_dispatch.h,sha256=7MNUIzUIGo9sxRNW51zRFWz71zKqynUZ1syimBzLjAc,1144 +torch/include/ATen/ops/feature_alpha_dropout_native.h,sha256=wxBM9GcRAQkrxu4mApXJknw__KcTf0-E0bNW2dPmvgE,856 +torch/include/ATen/ops/feature_alpha_dropout_ops.h,sha256=tZG4WA1FEFeRKh9PYfY2CSoBn1Q7_TbE-KMTTt_Q308,1961 +torch/include/ATen/ops/feature_dropout.h,sha256=LtdOsP_y4Wddw1fv60eQWaAt9knJzUrPk1OY143IM_o,1205 +torch/include/ATen/ops/feature_dropout_compositeimplicitautograd_dispatch.h,sha256=F1PqkcJwP3bCsmi7KoSCsQAf63AXEZ0dtLa8uFN2wZg,1132 +torch/include/ATen/ops/feature_dropout_native.h,sha256=lN63OrljGMVRMNqx75hZUHlnag9ksf6en-_gb2SCdn4,844 +torch/include/ATen/ops/feature_dropout_ops.h,sha256=CbEAQ33pnNUJrrNlhI_WtvcxtT83J10ixvUMD50FuBc,1925 +torch/include/ATen/ops/fft_fft.h,sha256=M11Bpu6vaLV4EATPMTVOrKmc2ow6bj7EQP3BHzQ_oWQ,5276 +torch/include/ATen/ops/fft_fft2.h,sha256=0wGgXCjXj1dgDBWaRKal1tURy_KuYNC781_uHMCbCHo,5569 +torch/include/ATen/ops/fft_fft2_compositeimplicitautograd_dispatch.h,sha256=VvqQFq-lPF8DjMk3UWxgvXPy0Wj5r8b9JZ-obTng26M,2108 +torch/include/ATen/ops/fft_fft2_native.h,sha256=DlXa0AHqJ9hFlh8ZgGTyl0aWRNi8U3KYsCa6OgHidlI,1046 +torch/include/ATen/ops/fft_fft2_ops.h,sha256=3H6YGe9ney9ZSc3IEOi0s6_cROL5OmLhs1J8XQgGNrw,2447 +torch/include/ATen/ops/fft_fft_compositeimplicitautograd_dispatch.h,sha256=GKBoWJn3LX6pI8xu03uO3t3LC7WG73XUcggG6H3X6eY,2043 +torch/include/ATen/ops/fft_fft_native.h,sha256=OddNp963aPDRrczthntRUIzSYZ8G_bMbO-KiDrBdwz0,1027 +torch/include/ATen/ops/fft_fft_ops.h,sha256=2dGAHOMeDl7jSYdweA4heUOAyZuUKEinx1dimYmbWsE,2383 +torch/include/ATen/ops/fft_fftfreq.h,sha256=NWlzS0IjAhh8GpcAFQUpilkG7BiKRw_i5b5gjLcvfFg,2018 +torch/include/ATen/ops/fft_fftfreq_compositeexplicitautograd_dispatch.h,sha256=h6v3goHYS8qamyTY5hxLZhkayR8LntViOgxNprp9umA,1416 +torch/include/ATen/ops/fft_fftfreq_native.h,sha256=J0Ii11CbYNVM_unyCRA_w6_QxSKp8aFspiYKsG5XAfs,971 +torch/include/ATen/ops/fft_fftfreq_ops.h,sha256=X7uK1Ndy6eCHNRUjLq8GaCblOYYyVz7Dc92q1o2GUgs,2319 +torch/include/ATen/ops/fft_fftn.h,sha256=UeQOT38Q76hI-5Ew_utnNhk4uTgIItOHt6IDuzK2N7Q,5709 +torch/include/ATen/ops/fft_fftn_compositeimplicitautograd_dispatch.h,sha256=JhEq2CWFST3wpAvyYLp5SZz69By_sMJqa4Q8R7ORX2s,2184 +torch/include/ATen/ops/fft_fftn_native.h,sha256=p0c7bE0iNWEtS4vBIa0BHkCcoKE-7HanIsdgJzBgO9g,1069 +torch/include/ATen/ops/fft_fftn_ops.h,sha256=S9c5O5I3TD_niIx8KO8p4j6Sodrek1oeNDvGnkiEG0Y,2491 +torch/include/ATen/ops/fft_fftshift.h,sha256=yQ_WiuirsiiizCi5okKsFKPcZeqbYe2w7VGrqmjtreg,982 +torch/include/ATen/ops/fft_fftshift_compositeimplicitautograd_dispatch.h,sha256=Y6LA_tyxazzn5yP8ykkFy9oHDXD686CO-XgF3dgTUDw,1068 +torch/include/ATen/ops/fft_fftshift_native.h,sha256=MOa0EAZlLvy7FiwenLfs4c1PMtdf5Cz2tA_NYLmu9jI,780 +torch/include/ATen/ops/fft_fftshift_ops.h,sha256=My5Mjv45q_Auc_lePE-Vw4l6e0uuASnrkpYOxAwgGlM,1330 +torch/include/ATen/ops/fft_hfft.h,sha256=gTfDc8GGlPEeHdDeb2_di2dLfE2M1d1OVLRQ6LNnEzM,5307 +torch/include/ATen/ops/fft_hfft2.h,sha256=uy1oF3Zc4ycrNRgDXqJSaQVFJWa_fG_hl9SYpeJZuXk,5600 +torch/include/ATen/ops/fft_hfft2_compositeimplicitautograd_dispatch.h,sha256=GcOG-F5AlVA03Uu-opJlJDW_Hua8RkXqfVylXBqhDiQ,2114 +torch/include/ATen/ops/fft_hfft2_native.h,sha256=qTENpXwSHQnjhuBL9d4Lv1Ydg4-w7yHJ9le-nAuApJ4,1048 +torch/include/ATen/ops/fft_hfft2_ops.h,sha256=dz_0r8pezT9mTLexp5iWR8VFjDg_So8YP5ZTvluF65k,2453 +torch/include/ATen/ops/fft_hfft_compositeimplicitautograd_dispatch.h,sha256=Yr3snNmW-G92XJftSlhmumUdmXZSk2TXlbUvVEGHz-A,2049 +torch/include/ATen/ops/fft_hfft_native.h,sha256=uQ05CzOpegxwzk7QbaGHVXyNvtwkJ9QBHFwR29zx9-U,1029 +torch/include/ATen/ops/fft_hfft_ops.h,sha256=pBP291CrOQnonQ8o0WZgd98rriqbT-G9jK0zcdKh9lg,2389 +torch/include/ATen/ops/fft_hfftn.h,sha256=yqW73zTcfcuKqAFCxZ-3d0m-cm-K6jVWqdWlmjAZYVk,5740 +torch/include/ATen/ops/fft_hfftn_compositeimplicitautograd_dispatch.h,sha256=oozUau26mclGYm0yL-J5_RKK5KQNyKDnJuK5Sd65KbE,2190 +torch/include/ATen/ops/fft_hfftn_native.h,sha256=zk72mLw0fLEOxKqfPHmLZvnPrIA51UEKMtvrRQp1woY,1071 +torch/include/ATen/ops/fft_hfftn_ops.h,sha256=rD61ulpbfZEAbxE9lRhhsSzp0xiiOTCwWtxcRsrHSas,2497 +torch/include/ATen/ops/fft_ifft.h,sha256=CbpOXQoczX4zacu2GqtHFGFCXFeLZI8RD1h9x33iOiM,5307 +torch/include/ATen/ops/fft_ifft2.h,sha256=B_UaNZEP4ixm0VaCN1yePeAVryTUZXcyuwxzaL2jgdA,5600 +torch/include/ATen/ops/fft_ifft2_compositeimplicitautograd_dispatch.h,sha256=RWkirtkMD5ZhYC0gXpFclnEKw8bC2qaIE0gpmp3X-GY,2114 +torch/include/ATen/ops/fft_ifft2_native.h,sha256=tXygv1YIADTYK9-xbin8XjibW7M62Myet6uE1wde1Ok,1048 +torch/include/ATen/ops/fft_ifft2_ops.h,sha256=Z0OWp9W9p_q5swvflnI5biPsi62cSghPZTien9XBplg,2453 +torch/include/ATen/ops/fft_ifft_compositeimplicitautograd_dispatch.h,sha256=1sqOD_6xaYPhhFPgc8uERKGbPi3WIF0h0L7NkjxXXw0,2049 +torch/include/ATen/ops/fft_ifft_native.h,sha256=Xs-2NrL6Lfy_OTCMETyGSuBsATYfY2CpQE1GWPWOGtE,1029 +torch/include/ATen/ops/fft_ifft_ops.h,sha256=jHOMhQd4W0PvTorj5jEJUSHW2s6PlyAU7BBnYGXGycE,2389 +torch/include/ATen/ops/fft_ifftn.h,sha256=MV2J_BWthgclOzYjGQP0iBQjVJNhUOoXgC1wIhtqwMo,5740 +torch/include/ATen/ops/fft_ifftn_compositeimplicitautograd_dispatch.h,sha256=ylI3iuR3GdhmE7OUP-3vMiLc2xy8qt8Na79CyTGKRlY,2190 +torch/include/ATen/ops/fft_ifftn_native.h,sha256=fh33OfkdYJ61_frIPaQImVbqek7FY8D4a3W0ARC5uRw,1071 +torch/include/ATen/ops/fft_ifftn_ops.h,sha256=_5hcv18jtNgpsKqCaviRENrdMRjs6vNtg61ygHEHAUs,2497 +torch/include/ATen/ops/fft_ifftshift.h,sha256=Ia5BXMcCS0jTGN3PQm35eOxnjwCQYlStRwAdUnSyT50,986 +torch/include/ATen/ops/fft_ifftshift_compositeimplicitautograd_dispatch.h,sha256=psnZTfM0wpG-8FXJ-Ajd8s9pDH7_uM818XGhynoK-hc,1069 +torch/include/ATen/ops/fft_ifftshift_native.h,sha256=n2aP4vhYXVr4OQ4EG70qAx2F0UAOy8G15XimYXg2a_g,781 +torch/include/ATen/ops/fft_ifftshift_ops.h,sha256=gGh28wwcZPah6MfPPCGbKYzMQvm6hfEqpZ5Qg9QwPOM,1333 +torch/include/ATen/ops/fft_ihfft.h,sha256=OSCim3A5EPy74f8ZGWMMB7cWdiSSSvmQ8i3RH8kGkBw,5338 +torch/include/ATen/ops/fft_ihfft2.h,sha256=BpmKJ-bzeumbdNrFSjmJQaAqM8fNNaCjxbWTdumoSTY,5631 +torch/include/ATen/ops/fft_ihfft2_compositeimplicitautograd_dispatch.h,sha256=NN8-Y6NQ47k98G8-1-mIr3DHpUqc8DPyFG5PW740aAE,2120 +torch/include/ATen/ops/fft_ihfft2_native.h,sha256=3JxULIKOLGbPlkT3mOmimmIIlgzeurjRzsg1MBy4Scg,1050 +torch/include/ATen/ops/fft_ihfft2_ops.h,sha256=H_7TwM9v8CddZDHkn2poXz_gQlKRUf_GEi_4n1Js89k,2459 +torch/include/ATen/ops/fft_ihfft_compositeimplicitautograd_dispatch.h,sha256=sI6YpbPpDngZwybOK03ajz72yY_HDOrdmSAipS2je5I,2055 +torch/include/ATen/ops/fft_ihfft_native.h,sha256=kStcTUMX7krIJjKp260Ix7hh67c121L2XVwAB1xBXeY,1031 +torch/include/ATen/ops/fft_ihfft_ops.h,sha256=k_nqM-o8GS7fYTE40xoDwMKuuQWtCLP8Ssr5w6jg9VY,2395 +torch/include/ATen/ops/fft_ihfftn.h,sha256=hhY_ITrEHKw6zWtg5QdueMuoEN-b4u8zbSy4BI2E43w,5771 +torch/include/ATen/ops/fft_ihfftn_compositeimplicitautograd_dispatch.h,sha256=ElvcxXpbHGHOgSaSFF1av_x_RCMxB_1n1Dz2m74Hlp0,2196 +torch/include/ATen/ops/fft_ihfftn_native.h,sha256=tK0B8zcF85H_r5c5Oo-XnBKr-l7-2wtBxdYCPLgWSx8,1073 +torch/include/ATen/ops/fft_ihfftn_ops.h,sha256=t6K6N_ejJj318Ht9oEBBIFw5Q1-4JAZhu2ayFBcWzEo,2503 +torch/include/ATen/ops/fft_irfft.h,sha256=Aug9ws-ifnVir2-p-QDcnv2HX3AZe6ahT8dghIlUAxA,5338 +torch/include/ATen/ops/fft_irfft2.h,sha256=b4DOMevddnkpxUtXtP3YeaEKcxdRB-flFZD3Ac105WE,5631 +torch/include/ATen/ops/fft_irfft2_compositeimplicitautograd_dispatch.h,sha256=0NzWTteqIn9oCPu7ZW0s-9C6dY9zTmWJcImUMwDkxDI,2120 +torch/include/ATen/ops/fft_irfft2_native.h,sha256=TnQiGSfnTlthusoJFtD_TzffgH5t4UGQIYohO7m8d58,1050 +torch/include/ATen/ops/fft_irfft2_ops.h,sha256=y4HRA8aiKneNL30jIm_0ZBExOC_chI_NNffnTZcGfSA,2459 +torch/include/ATen/ops/fft_irfft_compositeimplicitautograd_dispatch.h,sha256=LgUaE8M280ewQ238ImMNsjaXNlYkBy8BUyHKv88FWXc,2055 +torch/include/ATen/ops/fft_irfft_native.h,sha256=ZYZNyw5MFe8VwDmTDZt7y9D5_LoHEgp4gDDibDtCu-4,1031 +torch/include/ATen/ops/fft_irfft_ops.h,sha256=yyS0WTWqrQ3PEyYgm3YVyU1Z0d1hGCcgLeBZjTkzVHU,2395 +torch/include/ATen/ops/fft_irfftn.h,sha256=fWQ8jaKmicIqAjEXC30fXf7P0qz5PwhU_usqEDpiz_Q,5771 +torch/include/ATen/ops/fft_irfftn_compositeimplicitautograd_dispatch.h,sha256=JUbrqKQPxFnIh1S5X5dOL-FOGYdi8qJa8d_83XBBbwY,2196 +torch/include/ATen/ops/fft_irfftn_native.h,sha256=3rEB4LstsS-A4wNbZ6rZm9IlmPoJsLACu4W9nvGWM6E,1073 +torch/include/ATen/ops/fft_irfftn_ops.h,sha256=tqcyE97ohdbQfBv1yxn0DOjaslFmrFpYTEkcJx_zfi0,2503 +torch/include/ATen/ops/fft_rfft.h,sha256=wXupBC0vkiy3byz_UxgGpcfJ49p4wzX0ZutwYwFyTsc,5307 +torch/include/ATen/ops/fft_rfft2.h,sha256=5aL8vROWEYD5FYWKaLT5uyt2DePnMGpCkTPKt5ejnvU,5600 +torch/include/ATen/ops/fft_rfft2_compositeimplicitautograd_dispatch.h,sha256=1fSxwMhyPrzWghUSmCFaREtLYjs0MlSkbmOvplQhD3E,2114 +torch/include/ATen/ops/fft_rfft2_native.h,sha256=KnRTOTNzW8GqHghack_T-f2LA5F6mAfWbRyEVuMaogU,1048 +torch/include/ATen/ops/fft_rfft2_ops.h,sha256=81kX9nrqx0d_agv4AvbuxB6i3ubWUbqk2OWqs9FCSi8,2453 +torch/include/ATen/ops/fft_rfft_compositeimplicitautograd_dispatch.h,sha256=boLg9FJ5a9I2ZISLHmN1eAWIxcZQS9Jeb-5Gr-h3BrY,2049 +torch/include/ATen/ops/fft_rfft_native.h,sha256=yhX8ogoSu1cfodcYXMsNGJEKL6mAG6t4Xy8jOhbpPDc,1029 +torch/include/ATen/ops/fft_rfft_ops.h,sha256=gRsO4HlemDDbRRJXMMsrg0-ei9OLs9v2qpCXOeU8BFs,2389 +torch/include/ATen/ops/fft_rfftfreq.h,sha256=V0wZvl3hHrSJ38A_0OD-R1kHiCZfeN8FlISXNHaky20,2031 +torch/include/ATen/ops/fft_rfftfreq_compositeexplicitautograd_dispatch.h,sha256=86fPq1shdnB9jGLvDkZnTOn3wz-O-XQHCPxMDkrph0M,1420 +torch/include/ATen/ops/fft_rfftfreq_native.h,sha256=9trMZVfdreHMz5oh6EwAQNlF14RAlWu0XmTC7ulbTEA,973 +torch/include/ATen/ops/fft_rfftfreq_ops.h,sha256=mH0kfDrx70NFYBylozAISjXicttZRRqU_CFqsKU8eME,2325 +torch/include/ATen/ops/fft_rfftn.h,sha256=Los8e2Z1JWQXuLJ4YHiXEvETTen6XU8oDx-LMA20py4,5740 +torch/include/ATen/ops/fft_rfftn_compositeimplicitautograd_dispatch.h,sha256=q6d8x-DPk2utIvXzErWwAWHZfEWQdOOIX9yz7fr_dA0,2190 +torch/include/ATen/ops/fft_rfftn_native.h,sha256=g-dG_BIECIrM2j4otNzH64paS7-S3TAcf3fmyaXvfdI,1071 +torch/include/ATen/ops/fft_rfftn_ops.h,sha256=NyIpFN6IuvWLEb8x5cGSWKdI1rIATr8oNzdsVOigJSI,2497 +torch/include/ATen/ops/fill.h,sha256=CmYsDrpGMo3LC8A3qWCDjquXPN3puo1sqmj_exlmWxE,2528 +torch/include/ATen/ops/fill_compositeexplicitautograd_dispatch.h,sha256=SMbE8E7Cur9L5SPnzHDkMXAQ8hmGrFN2cfEJbDW-rUA,1530 +torch/include/ATen/ops/fill_cpu_dispatch.h,sha256=1wxfvPbjfmKG1p-p6TT8P3xDS83j7D0EfCZ2GXU1Bxk,1070 +torch/include/ATen/ops/fill_cuda_dispatch.h,sha256=mdrA6gVYyEgelG8S-td_a3IhKlptb0Co8ofIe6eBpKo,1072 +torch/include/ATen/ops/fill_diagonal.h,sha256=6MOHN0GTTTQmcnt3tLf275O65XOV1MIH94mZIOVn48k,764 +torch/include/ATen/ops/fill_diagonal_compositeimplicitautograd_dispatch.h,sha256=eOL7prkbALjYa1TH2EV00C0JIvg-WIxO-KIOrtmUXq4,1070 +torch/include/ATen/ops/fill_diagonal_native.h,sha256=fo5-lcVXdX2LcokflqCnXhXkrrcgiuOQ9paqL6eRrVM,782 +torch/include/ATen/ops/fill_diagonal_ops.h,sha256=g-mqRusbFaGWt0qGHHkHT2mUqO5Ndu1z5OAShSJ7piI,1377 +torch/include/ATen/ops/fill_meta_dispatch.h,sha256=15gVrQvkc8Cvpm3MSV3oSuKzDh-SYebjWZ-P-ym7F-w,1072 +torch/include/ATen/ops/fill_native.h,sha256=FINbaiTTgMSkz9m_PievKrWX2z-vdOFMr9uOhaMVnmE,1780 +torch/include/ATen/ops/fill_ops.h,sha256=08a4ZKO6VWXusZm89fzd6AhFln0xEhVwLVwGPTIIhcI,4491 +torch/include/ATen/ops/fix.h,sha256=LjhIoTc-Pc11lqgSHnFhdOG8MeMXOC0xhot8PsahYPs,1384 +torch/include/ATen/ops/fix_compositeimplicitautograd_dispatch.h,sha256=Ww9OtVDxfWUgpOcdmHXD3OPLs7RksbZKq9UTE2mn3xk,1214 +torch/include/ATen/ops/fix_native.h,sha256=DUkMUeoWv4Y_zvX6P07csWwKK9NgpwhXGbc1PmuQvaU,850 +torch/include/ATen/ops/fix_ops.h,sha256=L6-wobHT_ndsDPXDNa4S15uycQ5gQKtruC2NHLsi6ms,2273 +torch/include/ATen/ops/flatten.h,sha256=g50AuLO58HKIYSPalb6lTbZvG0lZhX6JhFAuC_3MQck,1894 +torch/include/ATen/ops/flatten_compositeimplicitautograd_dispatch.h,sha256=qjL8cQD86Ti-HIfj7asT6dLP3seAEjbCGdxK4WDQ7SM,1390 +torch/include/ATen/ops/flatten_dense_tensors.h,sha256=hQzF31WjAfioGMzTst8m5Yh5oFpeKTO3_gXx3HZYETY,958 +torch/include/ATen/ops/flatten_dense_tensors_compositeimplicitautograd_dispatch.h,sha256=mwmLr9TQmOa2YUcyrSvtCOpDhXoiz3WmtmLcV0EsoBk,1032 +torch/include/ATen/ops/flatten_dense_tensors_native.h,sha256=baRJPS0D3sDDeiAtG-FLl46Y5e9Sp4-jrnFLeyaEu_s,744 +torch/include/ATen/ops/flatten_dense_tensors_ops.h,sha256=-wk6ErOd0adX6xxzSyjdFaGqdxmpEOUHZQacUUrCCS0,1255 +torch/include/ATen/ops/flatten_native.h,sha256=Hco0dxlohS1AwgCPY_NmzSj0m3nPbVXhEE_1Rn2UvYk,1102 +torch/include/ATen/ops/flatten_ops.h,sha256=hkiJwHh6Fp0TIh--jrUEv4Zg7a-PNpxr5N7fTJSctOk,3574 +torch/include/ATen/ops/flip.h,sha256=2rRZdFRuX7vbvvMxjsg8-EVYifzDso60Rcp7t6nxqNE,1381 +torch/include/ATen/ops/flip_compositeexplicitautograd_dispatch.h,sha256=otnkQYBXa0NOI33GtBMW7JtD41-RDX8JaIMwjxQYrDk,1161 +torch/include/ATen/ops/flip_cpu_dispatch.h,sha256=6BVlvIbh_YM5pGjTHgewv5hG-QDMzxsHaX69N4NIhPo,994 +torch/include/ATen/ops/flip_cuda_dispatch.h,sha256=j3ZoleuxEb3q8S7ZUCWApDgOLmhLkkCnvRj_AgcC7AU,996 +torch/include/ATen/ops/flip_native.h,sha256=5Cfw7aoDe0kaqApnodI4w0eIU6INYofELgwwy_w9fTM,848 +torch/include/ATen/ops/flip_ops.h,sha256=Ytnfwlev3m8eCrDoTt02QeD4ICwb6R7KgOBeM6jjHaE,1935 +torch/include/ATen/ops/fliplr.h,sha256=kVQMLQ7M1sBGTDI-XB-S9z2rnYiVMt9qcuHZ3t01Ryo,891 +torch/include/ATen/ops/fliplr_compositeimplicitautograd_dispatch.h,sha256=1ZXDrZTe_PEYlSKfLQfsS1Ya-418EjrMoSX0VbRaho4,1018 +torch/include/ATen/ops/fliplr_native.h,sha256=rMJyOgWZgN8B-nblfri1vyYCpy7dvidNPe6YwyHdjiE,730 +torch/include/ATen/ops/fliplr_ops.h,sha256=-AE_Av2caiEDa6pMpsglj17cFhGIlrJdxnvR1W4sAN0,1211 +torch/include/ATen/ops/flipud.h,sha256=EU_INCEcxy8U-uv8TNN9nf5KNsJ3Y43eDo0Gsdh0MrQ,891 +torch/include/ATen/ops/flipud_compositeimplicitautograd_dispatch.h,sha256=3j-jfDVZvyoOqh-EyQsZ5V6kXzcNbhsG9_X-at2Gpm4,1018 +torch/include/ATen/ops/flipud_native.h,sha256=4hbi2pH6fdLMEbSSfVqWETvRrGVuErvXrMIAG2aN7yE,730 +torch/include/ATen/ops/flipud_ops.h,sha256=H5M9oEFOLn9b9vwSGYplNthValqHCVq9NCmn42dxcWw,1211 +torch/include/ATen/ops/float_power.h,sha256=p_WfNyBweg7YRlGF20luBXFYm4VJDhJy0Y6CNnoT8aE,3185 +torch/include/ATen/ops/float_power_compositeimplicitautograd_dispatch.h,sha256=3g36PswNAx6RgKDLaVZ5BQTK5E21v5F0eHigQyLxL6A,2073 +torch/include/ATen/ops/float_power_native.h,sha256=CNKKLNUxh57vqzCDX4zBtGrJN86iqZ82XpkcUTlmqpE,1446 +torch/include/ATen/ops/float_power_ops.h,sha256=ylPgKexYH-oXFhNQGj3_5AUSPRtou8oRGjHb_YkJlOc,6106 +torch/include/ATen/ops/floor.h,sha256=jeMqZhwHjHFAxDoRfBWEaPC0TcKTcFT8jeMrtUoq_ug,1410 +torch/include/ATen/ops/floor_compositeexplicitautogradnonfunctional_dispatch.h,sha256=KxcARUIkRIxefK_mieTzzFPE765ud5D_zQicBWxAdzk,1093 +torch/include/ATen/ops/floor_cpu_dispatch.h,sha256=vZD7gChTT-a8EH1fIsbOcuuvqxbyHvbJSi1rVQUwyGI,1178 +torch/include/ATen/ops/floor_cuda_dispatch.h,sha256=RpDy36nL6nYMGswyyKUKTgAEAvsdkzmTVPmGIPTUuRc,1180 +torch/include/ATen/ops/floor_divide.h,sha256=-G13tDwJbvESjQQ3bGAf9P-c1pKS-USjrGwEBaEaZHk,2244 +torch/include/ATen/ops/floor_divide_compositeexplicitautograd_dispatch.h,sha256=JVHa8paW7S8RGEhigBT39u77dfc-AK4DTfXxrejnkoE,1354 +torch/include/ATen/ops/floor_divide_cpu_dispatch.h,sha256=YGvvcwlAyxmCf3UolSOfV_9IyW2srv8aWFztXZO5OnQ,1310 +torch/include/ATen/ops/floor_divide_cuda_dispatch.h,sha256=5W1PuMzmsZOp6mlaHR7bMgiLaqiX4TbN1dJFyR5yK54,1312 +torch/include/ATen/ops/floor_divide_meta_dispatch.h,sha256=K7dTzgvaaCm9ijjhuaYZuj2PF4bXM2KHtWcCcSDGuTk,1005 +torch/include/ATen/ops/floor_divide_native.h,sha256=7tfQOpKTR5IoBSFqwHUsXCB3gc4yjtgIMtjbLb1JzmI,1549 +torch/include/ATen/ops/floor_divide_ops.h,sha256=bhIBBESa_XKcsbbnVj1LHoIVZqJ0QTS-KAVxAmLJuyU,4594 +torch/include/ATen/ops/floor_meta.h,sha256=i86x47d9H7yJsclw1Ti-HE2jVhJMPsfdfH08Gixtzpw,820 +torch/include/ATen/ops/floor_meta_dispatch.h,sha256=puYl619XWp4Ps0IM6Sk_8QKbR6CzA2CnmZrg116SHzc,1180 +torch/include/ATen/ops/floor_native.h,sha256=L19rirdAt1vQNq3RsGaRWw5rMWxBdRh6_K8_uxeVBNk,1261 +torch/include/ATen/ops/floor_ops.h,sha256=-9ZqNwqPXO37mPBu5n35ffp7t6unQJG4hThKjOJ0FMU,2291 +torch/include/ATen/ops/fmax.h,sha256=C8xrycKj0rAkQ87es-fFKDiGCrtik3J1nAJRNysfkzs,1402 +torch/include/ATen/ops/fmax_compositeexplicitautogradnonfunctional_dispatch.h,sha256=CJ4yQK6B8tc8VJHsS0cr4T9K2kCAXnnnXS3yMevzGgs,1068 +torch/include/ATen/ops/fmax_cpu_dispatch.h,sha256=Mj5TBFWU6BdTslprzpiCPrreCmtbT1SFJy2UqIRlNko,1203 +torch/include/ATen/ops/fmax_cuda_dispatch.h,sha256=1_swZzGFZu_YHxzk5MYHG2Nl6Cd5Q_6e5o93bACEklU,1205 +torch/include/ATen/ops/fmax_meta.h,sha256=VQzFhCpOHumFB7J7h6a3yQDQUcvabsjF5jjkoNmgSFo,845 +torch/include/ATen/ops/fmax_meta_dispatch.h,sha256=88I5nqvOuHgZM4s7wBNK30jluZ7tIf-YjiMvPiY8W14,1205 +torch/include/ATen/ops/fmax_native.h,sha256=7Zuy1wo9ieWjUOcqKIBx4poJn3iztBodsSpmIzYYUaQ,870 +torch/include/ATen/ops/fmax_ops.h,sha256=grtHjIIueHpaM77vrwhy-i6VXOFkmzRePcNkgCjfzto,1961 +torch/include/ATen/ops/fmin.h,sha256=LtR-fLULsZd9lKA4ryRFCOToxLuzv2ZjpaxdE1RODbs,1402 +torch/include/ATen/ops/fmin_compositeexplicitautogradnonfunctional_dispatch.h,sha256=-PFMakY72hswvDN7x6rpEuleI_zLy2SvFFuaXLAsDkE,1068 +torch/include/ATen/ops/fmin_cpu_dispatch.h,sha256=RSsjBPS7j0xoAlc3lxKir-zy1tCkBG1IR1I-0P9md3Q,1203 +torch/include/ATen/ops/fmin_cuda_dispatch.h,sha256=PBUqaAsBs6gdczqr4Tv0IXy0NcAuVJVTTmHE8OgOGfQ,1205 +torch/include/ATen/ops/fmin_meta.h,sha256=asGDdC4BJCNclr5liYoPogohKHxW9eqf3yJVZixFzbU,845 +torch/include/ATen/ops/fmin_meta_dispatch.h,sha256=DOztqHYtB_wPICD7KnZbuReubjU3sy5ieecsZ6PpWhs,1205 +torch/include/ATen/ops/fmin_native.h,sha256=WapxsiIYYKqXK1m8pY3-a62LIYsvMYkC7aSGK_kHhcw,870 +torch/include/ATen/ops/fmin_ops.h,sha256=b4LZPNU1-K5_2U5C9ZJr3ObpfFygWBxz_1ONVngawB8,1961 +torch/include/ATen/ops/fmod.h,sha256=OJxMPap8iFBFybff9t5kryaO-lTRXttTAoYfPRttyaE,2134 +torch/include/ATen/ops/fmod_compositeexplicitautograd_dispatch.h,sha256=_bAyJn5u-v39eSmgWTlEsZx50J2ll9IrtYbKdMr7Ve4,1322 +torch/include/ATen/ops/fmod_compositeexplicitautogradnonfunctional_dispatch.h,sha256=RqmMhxykawrRTo-nrCWkUMrj5TVFuxJzQzg6k_TTGMc,1143 +torch/include/ATen/ops/fmod_cpu_dispatch.h,sha256=Lza0K2I5e1p84KQOP53lrcyjUwx1r_feAIipwK05Cv4,1278 +torch/include/ATen/ops/fmod_cuda_dispatch.h,sha256=s3cTmJQC_4n2DR9xlGaVy4-s4vzLKimIx8D-ImjJWPM,1280 +torch/include/ATen/ops/fmod_meta.h,sha256=C1Jpy-wydYgr99CDE0fXxP9iNmRheNY3CXvsAWw10iE,852 +torch/include/ATen/ops/fmod_meta_dispatch.h,sha256=6nX20SaIF9N8vy_VX9ZQbniey4W87tJ0k1-WLw-ffNE,1280 +torch/include/ATen/ops/fmod_native.h,sha256=4fIEEWKrMzfDtfi4df2IIYjbeHQ7R0wmAOjMEhYoKU4,1132 +torch/include/ATen/ops/fmod_ops.h,sha256=iX2alweqSvcLvAqq62fWjrah-wlqfaTBbV-ZfFKkD-8,4491 +torch/include/ATen/ops/frac.h,sha256=qY580vdXLvpcuzvQbieYB-4i9Lbd6jMVSY6o4uqSD5A,1397 +torch/include/ATen/ops/frac_compositeexplicitautogradnonfunctional_dispatch.h,sha256=qsVHJtG7pueSSM9RgwvveigUPOWU1xM-inMzPAMD68c,1091 +torch/include/ATen/ops/frac_cpu_dispatch.h,sha256=sU0VMCJ_gaPO-FlYYxIj4jux4OXk5nX9XIK2O3mEyRI,1174 +torch/include/ATen/ops/frac_cuda_dispatch.h,sha256=t5re6MKQvGtvB08VMd8C28ByXL9gXDV6rKQTOw0tuzA,1176 +torch/include/ATen/ops/frac_meta.h,sha256=RYWiYd5NTHdmBY9uoE5fmgTDiepOSVDP9id6dG69fuU,819 +torch/include/ATen/ops/frac_meta_dispatch.h,sha256=wK11eaXrEGI14x5Yqq8qso6ldJmWE2gTIzJFQCX3kUk,1176 +torch/include/ATen/ops/frac_native.h,sha256=aIR5V8yg_K1pZ6F1y3pJ5uE0qnmgRxEqyoXLbq_Q-F0,1252 +torch/include/ATen/ops/frac_ops.h,sha256=Qt3H4DnwZKE-AxfZJJgapP5JpU5nFLof_u8rF5MR8QU,2282 +torch/include/ATen/ops/fractional_max_pool2d.h,sha256=cxNTlUUqx8QyneQ_C2QI--bHxr5smaJOHak4VAzFHTk,2274 +torch/include/ATen/ops/fractional_max_pool2d_backward.h,sha256=SqwUjv4KyMMlEHjZMfvdubt9HBxaSVsmnEs8eUuv1Ck,2317 +torch/include/ATen/ops/fractional_max_pool2d_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=rpaTwPZScDBQR_r9yQr0DPY27AoxlBOovbTpve4FZBU,1186 +torch/include/ATen/ops/fractional_max_pool2d_backward_cpu_dispatch.h,sha256=SYpAqGh2YyEpR-HkhNlkkWSUICwFI3Eu8Ps6TJWEdu4,1571 +torch/include/ATen/ops/fractional_max_pool2d_backward_cuda_dispatch.h,sha256=aB4QDIhPLBRSLrxnzDJUNx_4yY6PuiFHF2OdG2ZWkjM,1573 +torch/include/ATen/ops/fractional_max_pool2d_backward_meta.h,sha256=GThhHLOO1b8mGaEGyOtYnGaLDaNkPvhZnIWbTYEtE64,963 +torch/include/ATen/ops/fractional_max_pool2d_backward_meta_dispatch.h,sha256=tF3BQc3Pxozu662IB6gROAUHMPW0-hffLMKymd1ptTc,1573 +torch/include/ATen/ops/fractional_max_pool2d_backward_native.h,sha256=8Dc6nr3djwjesHHa_V8u-U1oQqxV2BijQZfzUTJ_hrs,1362 +torch/include/ATen/ops/fractional_max_pool2d_backward_ops.h,sha256=HURVUw_JKGc8QFFa8EF7MOoi_GqXzu8KK3bcJkFvkAM,2759 +torch/include/ATen/ops/fractional_max_pool2d_compositeexplicitautogradnonfunctional_dispatch.h,sha256=Vfyaj2bpg5DLXulVAp7pfr7yiRt-ulmf8wNy6nUwXNc,1177 +torch/include/ATen/ops/fractional_max_pool2d_cpu_dispatch.h,sha256=0V-fmkeZH-RDpFZGdyaLkVwHHRsJCOKuptZRCrf89WI,1584 +torch/include/ATen/ops/fractional_max_pool2d_cuda_dispatch.h,sha256=CKZmmpH90_hn8hZ_UiB2mj2UtU1FB9oyaMsE-mbwfEg,1586 +torch/include/ATen/ops/fractional_max_pool2d_meta.h,sha256=Bgr5f2-LrgPvrFR5CMZaH2RFrP_TaHB9vrmfEU34ELA,929 +torch/include/ATen/ops/fractional_max_pool2d_meta_dispatch.h,sha256=PagdMeRMM2tkhaJMGriTXL3MVTMhuD_roMJrWMCpkX8,1586 +torch/include/ATen/ops/fractional_max_pool2d_native.h,sha256=Mt9PbQxk2PwIiEGBDk5-suNTccnKuVMx2Yw6QitWkJw,1323 +torch/include/ATen/ops/fractional_max_pool2d_ops.h,sha256=fw9DKaasKi6l2PGaXmrLoiHfpzIfbzDJQcoMf4lsEko,2773 +torch/include/ATen/ops/fractional_max_pool3d.h,sha256=p0ZIF4OZoYV34lnO1_UPci5s7HGp7h7VRJDQOmGxTnk,2274 +torch/include/ATen/ops/fractional_max_pool3d_backward.h,sha256=_CFhrWIpHXBduLpEVb1XWlhrA0mnzo6-gAfJggi21og,2317 +torch/include/ATen/ops/fractional_max_pool3d_backward_cpu_dispatch.h,sha256=fH1a9hlmo0qyXDwQAYWxK-Ozwd_SpTO1kOse4UiNz7s,1571 +torch/include/ATen/ops/fractional_max_pool3d_backward_cuda_dispatch.h,sha256=XFl-vsQnMLVpeDhRO--AzJhcwwHrE3sDrIdulurmEGo,1573 +torch/include/ATen/ops/fractional_max_pool3d_backward_native.h,sha256=URU5O3duKKLPz3liV-EsY5IWgypU4eyewVpa8ArL4oE,1540 +torch/include/ATen/ops/fractional_max_pool3d_backward_ops.h,sha256=HahbbIEB9on2PBL3aS_JhMd3NZPCSmJ-j1FtzeKYoFo,2759 +torch/include/ATen/ops/fractional_max_pool3d_compositeexplicitautogradnonfunctional_dispatch.h,sha256=mvXd0szGn6Np92Y4GeCqYtnyi6araZHJF0gTYfN9AJM,1177 +torch/include/ATen/ops/fractional_max_pool3d_cpu_dispatch.h,sha256=C6Hx4MhTBY58O_L_eMaMepRMH4ZNbOEdTT52LldCo5o,1584 +torch/include/ATen/ops/fractional_max_pool3d_cuda_dispatch.h,sha256=NwWnlhnKMC3x7yQEJQgObe6u-JNZBuXhqCXKn7w6UG8,1586 +torch/include/ATen/ops/fractional_max_pool3d_meta.h,sha256=uHzdLcs_itpvkm-8Axv1V9Ni8d9RKaMY9lHoWmpd1HI,9861 +torch/include/ATen/ops/fractional_max_pool3d_meta_dispatch.h,sha256=clnwBmvmZ6tCt9iFceJ0lv8xFyoBImN60bC2zJGW_yk,1586 +torch/include/ATen/ops/fractional_max_pool3d_native.h,sha256=jJZjNstcckPWOIX-0Su_Jr7Ue385hk5j0pShh-G-_AY,1593 +torch/include/ATen/ops/fractional_max_pool3d_ops.h,sha256=kUKtr4xY5oeknFc50d8NIgE10iWejSuGP2k9azrIyKQ,2773 +torch/include/ATen/ops/frexp.h,sha256=lsto9Fz9Gce5RkHWxWlVFrVgFF6tck8DGv1rljq0SE4,1622 +torch/include/ATen/ops/frexp_compositeexplicitautograd_dispatch.h,sha256=gkewRnZ-TlaXiFdePQuPkUNctjxs68glpFBG9Fiz-4g,1042 +torch/include/ATen/ops/frexp_cpu_dispatch.h,sha256=uZsXm8jR29ztFjYcZf2IZuy_Umx91ik2h937U5X_g8M,1185 +torch/include/ATen/ops/frexp_cuda_dispatch.h,sha256=DAB94PU4tagA3yOQ7uzuhwMGhev5UoPj3YWkHs8tc1Y,1187 +torch/include/ATen/ops/frexp_native.h,sha256=R2xmWQm9i6MsNwOyLyzrw_eZBsuScIgQfNhOS5jRg6M,886 +torch/include/ATen/ops/frexp_ops.h,sha256=4-DwHjVWJpHZdDQMIOXEBSg4Xrk1Bukn5_xwc9n_dB4,2148 +torch/include/ATen/ops/frobenius_norm.h,sha256=Ljau3LSqZpAOClM4xU0XN58hokwbFGxJH47WLhZ3QwM,1624 +torch/include/ATen/ops/frobenius_norm_compositeimplicitautograd_dispatch.h,sha256=Qrou2XNU8ZQyJDsEwnmOpHJfjvj5ic8JJMKl4Nk5LHk,1316 +torch/include/ATen/ops/frobenius_norm_native.h,sha256=SXauc9EZYRCpU4N7KpgWUuvAosUxSBngI9OmPGj7NbE,900 +torch/include/ATen/ops/frobenius_norm_ops.h,sha256=jiB3kfUvIrnswqUF_PR1EGz0klvn6OQ-g4wgljRBdvw,2110 +torch/include/ATen/ops/from_blob.h,sha256=2aU1uljA--xA1E2lUlY1OwTen3mWY878Q6swjXnx8qE,4408 +torch/include/ATen/ops/from_file.h,sha256=bKqQNCw9ThLSVYi6NPa17nvK8_o1Y1km4P92XQc6TIE,2462 +torch/include/ATen/ops/from_file_compositeexplicitautograd_dispatch.h,sha256=g-J2jY9VRLBVbHsL06rKqkB4jJ8MnnWxW_f3vyuvPJE,1270 +torch/include/ATen/ops/from_file_cpu_dispatch.h,sha256=W33xVoEQr2c8e6G7-4IZ01eywWEads4iAWQZ552oR80,1352 +torch/include/ATen/ops/from_file_native.h,sha256=ytF2a3bDdutQvN4glY23DBoCzTomT-EYrSmNkTvWCMY,1114 +torch/include/ATen/ops/from_file_ops.h,sha256=cSxTyW4huzL-pBY0un9o3B4egw2Vp1qf64BgGoyFf-A,2727 +torch/include/ATen/ops/full.h,sha256=W_KL7PH07h_yCHFMPDIlz_p982ZDDhvDIWD2dikO6Uc,8171 +torch/include/ATen/ops/full_compositeexplicitautograd_dispatch.h,sha256=oZEQbovNU2DNRy7FymH-pRt_43maViEhQlA7RiKLQwA,2800 +torch/include/ATen/ops/full_like.h,sha256=_kjVJ5ccsE9Gj0zHyUDVMpV0CY78_Il9MjfIslic6eM,2710 +torch/include/ATen/ops/full_like_compositeexplicitautograd_dispatch.h,sha256=GMOt6ayOgfcK4CtV0FHYawSaUhU1n5JeUmxo1LoUTN0,1766 +torch/include/ATen/ops/full_like_native.h,sha256=l-CUK1VokH7LWXbacXCizZy4FG2wiscYILZvMEt_ccQ,1146 +torch/include/ATen/ops/full_like_ops.h,sha256=PS9-gP2lqGFuicySJKcThE3ZMa3ENX1IlMGDqMRpGps,2851 +torch/include/ATen/ops/full_native.h,sha256=tvuSZfFsBVPYxv-PJIZL5mpdTZZVEwb2C8kX6C1_XDA,1444 +torch/include/ATen/ops/full_ops.h,sha256=cik1svV1fhpgqELsRW6vLavooCo2h0r6e1ZquPTQBhU,4552 +torch/include/ATen/ops/fused_moving_avg_obs_fake_quant.h,sha256=ZqRhBq4mXANLBZtz2KuAIV2_QtzB-Xlt-YwS3AHBMow,1706 +torch/include/ATen/ops/fused_moving_avg_obs_fake_quant_compositeimplicitautograd_dispatch.h,sha256=qpyMZX0q8jPA7hTwZI-y3XIojUoAbU3UzAr-1_XWbjY,1344 +torch/include/ATen/ops/fused_moving_avg_obs_fake_quant_native.h,sha256=fvXyZM3zFbY58f15vtpVh3-EuJgpRDKd2_CytQzgWjU,1056 +torch/include/ATen/ops/fused_moving_avg_obs_fake_quant_ops.h,sha256=_u3kd5Q0WSt7_BVRH1ovEjmYBITPJYNydRFtydgAoHU,2263 +torch/include/ATen/ops/gather.h,sha256=HoyFKag3EMrGK-ODSeaDl0hccTeeT8JhK10hT7IQ0H4,2682 +torch/include/ATen/ops/gather_backward.h,sha256=vhNYOZXNLn0I-JJZ0toD1CYW7TCAZVF9fO32ZGP8gNM,1094 +torch/include/ATen/ops/gather_backward_compositeimplicitautograd_dispatch.h,sha256=RIjP3JnSvef_v51S3I7RbmIw1m6XbkzMJ-l8dG0UANI,1109 +torch/include/ATen/ops/gather_backward_native.h,sha256=o30n_u-LiFTT8u9Vhr3RciyQxXme77elKGBUGvXebjY,821 +torch/include/ATen/ops/gather_backward_ops.h,sha256=aY4hINjO0WQw3XEXoQte0jhnziR0AbXyRpApZGIPomc,1511 +torch/include/ATen/ops/gather_compositeexplicitautogradnonfunctional_dispatch.h,sha256=eWri3P8Ujanm1cdoCnjxia8VZ0rtjT_Qv7Mg6RMIaCY,1107 +torch/include/ATen/ops/gather_compositeimplicitautograd_dispatch.h,sha256=mNPXnlEtLQkca1ezUK3rN35_n5SN1084YPPTqSKlt2A,1370 +torch/include/ATen/ops/gather_cpu_dispatch.h,sha256=pdk3G3NyqS0ljfRv4T7LGu2ekeEkZUJNAWmJBN5AirA,1314 +torch/include/ATen/ops/gather_cuda_dispatch.h,sha256=rbd2ri9hG86gHYxywmMe4pW1F6VDY1R5rKP3Ntzf0_w,1316 +torch/include/ATen/ops/gather_meta.h,sha256=n_-1fl1QfWcfJG7Ha7I1sR83QUesxW4jtNB2PFhf44o,878 +torch/include/ATen/ops/gather_meta_dispatch.h,sha256=T9x3pcLxQVU31e221aLuWswMc17AJ6M-wYk9iMe1rqI,1316 +torch/include/ATen/ops/gather_native.h,sha256=8zkVxZejNyL99eRrcm_EAQIN-xLbf8GNd1xxxzjdzMU,1167 +torch/include/ATen/ops/gather_ops.h,sha256=QrS-Yz7U0XSLa_l_rsy4TAmcKYhAmqDEl3naORDf_IU,3760 +torch/include/ATen/ops/gcd.h,sha256=dsJg-9nh9KIfD26ioieG0GlQA4fFDZJMH8vxmJvjADs,1572 +torch/include/ATen/ops/gcd_compositeexplicitautogradnonfunctional_dispatch.h,sha256=oum-ltk-OvL0q5wDAQssdewVcvt3Jf46rj4cEHw_B5Y,1141 +torch/include/ATen/ops/gcd_cpu_dispatch.h,sha256=YK7nrMwISnF5m07aNmxgYQ0XDxdbVXAiR73X67EX6pg,1274 +torch/include/ATen/ops/gcd_cuda_dispatch.h,sha256=YHFX1WM-B93lVqieNC8ptr8fjGzPfUOPtFNWWqfFH_g,1276 +torch/include/ATen/ops/gcd_meta.h,sha256=GAs9aVubl_vMTZV_0LVjsYYf2lBRvsc3HCy79uhiBgc,844 +torch/include/ATen/ops/gcd_meta_dispatch.h,sha256=pU93t0zI3ktd2heasFWFwkLiwsZ3HHUNgg-R16AM6no,1276 +torch/include/ATen/ops/gcd_native.h,sha256=YQ6UQjhVSHJHfnnd_BfjB6ogsx9V9R2d6MYbHOlF1MA,867 +torch/include/ATen/ops/gcd_ops.h,sha256=s08wXStZ8sm8pl6oMVzHflZ5I5zT7iYeIce5JRQEuDs,2531 +torch/include/ATen/ops/ge.h,sha256=4htS61aHFxyeVyTApFAgWJOFO11-uEqUSiMwwIFzjIE,2096 +torch/include/ATen/ops/ge_compositeexplicitautogradnonfunctional_dispatch.h,sha256=vNmAOi4mf-a5MVqKnxGC-Tc00ta6QWlhpGjYq6sB_gE,1288 +torch/include/ATen/ops/ge_cpu_dispatch.h,sha256=xbip_u5vJr9F9tFnMT748yBohuPtG3S8ThskqDzoxRQ,1620 +torch/include/ATen/ops/ge_cuda_dispatch.h,sha256=MFLhSA7zXyN8veoR9FPTUI3q0OiwSF8f0LQZFzJVZnI,1622 +torch/include/ATen/ops/ge_meta.h,sha256=fAfB6lqROadWzN2r2lTzK1fZyujjjJXeLaoIamqWGgg,989 +torch/include/ATen/ops/ge_meta_dispatch.h,sha256=Cr8asEW5IqeKgiRRZF-JiqvVd47Er2YYHh2M5jF_Lg8,1622 +torch/include/ATen/ops/ge_native.h,sha256=b7LAzyFNtMrv8sQqnp_KZwzXGUS1IcXmOXm8fSxhSjo,1549 +torch/include/ATen/ops/ge_ops.h,sha256=202W2Q8w1E64PoHu_jg8u-S9QoCnS00ZedbtcPkkGcU,4455 +torch/include/ATen/ops/gelu.h,sha256=vl3Y21MXm1J-df-sllHwcHtPA83d9gtj1muB97J8Q7g,1692 +torch/include/ATen/ops/gelu_backward.h,sha256=YBxYppBY7N9ZXurLcZn_Ji0dyfJeercJTCyGmvGmCuM,1834 +torch/include/ATen/ops/gelu_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=8Idi-LFD4qMlVtuQZiVB-IrGwK2CcRFKCfHB9Othp78,1120 +torch/include/ATen/ops/gelu_backward_cpu_dispatch.h,sha256=H9ARpmU4_n1AVt5akEWJbQnc1eZa-1jOhROHawB87t4,1366 +torch/include/ATen/ops/gelu_backward_cuda_dispatch.h,sha256=nOxRijUP-6M9bTBnN2oSiVeOKHKt6Rz07GpDqFPCRe4,1368 +torch/include/ATen/ops/gelu_backward_meta.h,sha256=4RHWdiRlzsQCA0cQ9Lge1qR4f-DiE4v6FLg_3ZkGctA,890 +torch/include/ATen/ops/gelu_backward_meta_dispatch.h,sha256=Ixqp-Mls_KEbiyZPDhyYsjYVUMgvGzZhoFKAztx_OQE,1368 +torch/include/ATen/ops/gelu_backward_native.h,sha256=MM-rIHQUSwnxaT2iEnBZEx63xfWo_QyVNkGsyUHU2bk,1448 +torch/include/ATen/ops/gelu_backward_ops.h,sha256=Y-8dgBy0WiWrNg9mavdz13DoSHezCrcDO4QGFqy1blc,2300 +torch/include/ATen/ops/gelu_compositeexplicitautogradnonfunctional_dispatch.h,sha256=deL4YyKRMLXJn68NNqcq_HROSaioghWGTpHvqvXOgNg,1165 +torch/include/ATen/ops/gelu_cpu_dispatch.h,sha256=meuSCIb_unDFHsI37OwVqytfn4eIfWo96LYY2-pLmfM,1315 +torch/include/ATen/ops/gelu_cuda_dispatch.h,sha256=KU-wjmLNzE3nIdHL5IIgT7p1oiktGufk6Dufkku99EA,1317 +torch/include/ATen/ops/gelu_meta.h,sha256=AqCyPaeBZNyao5LrSca2hRVWHuHbbo032346AdsPUbI,849 +torch/include/ATen/ops/gelu_meta_dispatch.h,sha256=FSUWNU62DTEJ5hzCvEEmFZGJZFD2Dzk-lRGbUwtpl90,1317 +torch/include/ATen/ops/gelu_native.h,sha256=wMSEfMwO4_1839qER50KUy8ZKUv4A5Nh1iTpfKFWoxQ,1654 +torch/include/ATen/ops/gelu_ops.h,sha256=zqy2KdqC6XSc2RySVb2mXlWEFPDjGGVl8F_qyg7hzO0,2594 +torch/include/ATen/ops/geometric.h,sha256=v-NdFjyWYWsDemX-jxI-GvoZknYeSOccGec2DG4UKvo,1650 +torch/include/ATen/ops/geometric_compositeexplicitautograd_dispatch.h,sha256=jzHhEsFd2wexc4_aIcMUc4natsMyXo3-NzLvh3PQ0Yk,1370 +torch/include/ATen/ops/geometric_cpu_dispatch.h,sha256=p8VfEpw-FOc6FXnzwiH5tLRQvTpwiKbcUYDf0Kz2g5I,1041 +torch/include/ATen/ops/geometric_cuda_dispatch.h,sha256=YvAXhmiYbpz4fh-jdrLk4EYhmqbxKge8qYSgp9QYnaw,1043 +torch/include/ATen/ops/geometric_meta_dispatch.h,sha256=IqeOw2Vyr7JK3YjG2vIE56O6AuELZSjtYx1o8mepSYk,1043 +torch/include/ATen/ops/geometric_native.h,sha256=wKAgHccAmE7iCxQjDMHrTpF6n_b9t6wO_BWa2zyjIzg,1054 +torch/include/ATen/ops/geometric_ops.h,sha256=4z9ZC0JG-Hw-4OS_PXk4edpTinIXgecYP56LyLOLCUc,2873 +torch/include/ATen/ops/geqrf.h,sha256=6ZAaK9W5gnqMT9-I2Fdl9-JLJrsbV0LUzKgrlZ-zoSc,1464 +torch/include/ATen/ops/geqrf_cpu_dispatch.h,sha256=IsUEeLjkD00l83l8vyZaZs8oZA6Ip25LbrOajqnnnVw,1239 +torch/include/ATen/ops/geqrf_cuda_dispatch.h,sha256=0nm5aDSkk3AAAL8FNP0gyDb3XOCUfKTUMDM5rOPMJ9U,1241 +torch/include/ATen/ops/geqrf_native.h,sha256=yB-UfHfTqHoeJw269yOhunxLYbA6_0cy6O8S41uS2nE,874 +torch/include/ATen/ops/geqrf_ops.h,sha256=0yW4k4sox_n0uGhnU45NgXemLoJ4MnX-4VZWJZsTVZ0,2041 +torch/include/ATen/ops/ger.h,sha256=aiCGNNheihEpYD_ixYKdBJXsD4TZGaIdqhpnBdKkGNM,1383 +torch/include/ATen/ops/ger_compositeimplicitautograd_dispatch.h,sha256=k2Ba7OG0dhYHYu3IAgHQB3WJyv2TmefGdxzutyWgsLQ,1241 +torch/include/ATen/ops/ger_native.h,sha256=fNB_f1Oml7qe0qB9yU3xYrkChJWt-gVBCvW9rMgxi8c,852 +torch/include/ATen/ops/ger_ops.h,sha256=1Sbhv-ZOGTHWPG0GkkRoud1josXU5xgE8CIUivXF-Ag,1949 +torch/include/ATen/ops/get_device.h,sha256=MsH4wu4BZaWrA9iOyQmP3KgORASKy8MsrcRmIS17gSM,761 +torch/include/ATen/ops/get_device_compositeimplicitautograd_dispatch.h,sha256=DKpOXXSfikV88MXECZ64lnPjmrQlzsDSzsO2brpox3k,1019 +torch/include/ATen/ops/get_device_native.h,sha256=Ag6pFJKCRD0ESAaESUf3KxohBntW6ZMF3wrHyghbQg8,731 +torch/include/ATen/ops/get_device_ops.h,sha256=ZUJHuQpApmn_7InBW-c3hr9HuzfleGEAaDcYQC9bVIs,1211 +torch/include/ATen/ops/glu.h,sha256=xn0SzjqWKMSRqOXgkEXZkztH6YBsVXshaT3shsjVnyQ,1347 +torch/include/ATen/ops/glu_backward.h,sha256=FDTTv0J9QqlFWqKyBW8kPRwEOBWNSjTp9Ayr47yaWjo,1687 +torch/include/ATen/ops/glu_backward_cpu_dispatch.h,sha256=ZIm8KMmVGqMso3kn4ucINZT-2nzTUdlueJGkx_-9e3o,1298 +torch/include/ATen/ops/glu_backward_cuda_dispatch.h,sha256=mEvAf08XBZ3gmCg0RQLwh5aVQBy1P0Hvifa-SmFsbKA,1300 +torch/include/ATen/ops/glu_backward_jvp.h,sha256=AA_MOKMZATomnaCmwl_-gvhfvFpHdYbXTKZKCFZzNFk,2044 +torch/include/ATen/ops/glu_backward_jvp_compositeexplicitautograd_dispatch.h,sha256=AVJNiZgQ7gp6nbhx1ILkJPrPCsy_1-DdPOc1Z-Tlca0,1379 +torch/include/ATen/ops/glu_backward_jvp_cpu_dispatch.h,sha256=w_tDy61KI-6nWWXtphNOqHUcfkd0hla4kUFgmh5yKsU,1103 +torch/include/ATen/ops/glu_backward_jvp_cuda_dispatch.h,sha256=s2sT-xSUKiK2e6UQIptp0pRsLQGDKwYwDv0SitEOmaw,1105 +torch/include/ATen/ops/glu_backward_jvp_native.h,sha256=iMM04n5Kdh0mmlZTb_rox4cSxUO3gJoAjhSjGwuzqAU,1066 +torch/include/ATen/ops/glu_backward_jvp_ops.h,sha256=EqE0X-U2NgSzR6L2MV9IdChg4FPiaVIHjdQkyRhmIqk,2649 +torch/include/ATen/ops/glu_backward_native.h,sha256=XaSHWK6I6N5Q47po4eEY3jj1J11F0u2snLXmuJmYFYs,1176 +torch/include/ATen/ops/glu_backward_ops.h,sha256=udmCrV_gTqRNDaflJyzextzYl9LgskM9Cvh_pOtB-bE,2175 +torch/include/ATen/ops/glu_compositeexplicitautogradnonfunctional_dispatch.h,sha256=Yz7Mrf3IHsvsiO5NT6_DmVJBS1JU398e4vYXZYn6jUQ,1057 +torch/include/ATen/ops/glu_cpu_dispatch.h,sha256=qi_gH8FERbPmwq8KvZz8ob4OWtT_XuB5ZnOSEYPjFIA,1167 +torch/include/ATen/ops/glu_cuda_dispatch.h,sha256=qfT23KGaitJ2Vh11Fu5ozJHlaja7J_Acz5WrtYeovnw,1169 +torch/include/ATen/ops/glu_jvp.h,sha256=RSiGu2RjyHuSW4hDqYLmpkZDQrRj3EhyWu7H8frmF50,1582 +torch/include/ATen/ops/glu_jvp_compositeexplicitautograd_dispatch.h,sha256=YlOVRhc2-P9vV-EzvVHbl1316AGHx9BcbmhAvLhIpf4,1237 +torch/include/ATen/ops/glu_jvp_cpu_dispatch.h,sha256=8SnhMSnKuLy4Z8tbliRzHhTy4Ievwl-YcXS28CaeL-Y,1032 +torch/include/ATen/ops/glu_jvp_cuda_dispatch.h,sha256=aLTW1uPTxdicNR4svAd0I93v1w0og7qc8OH73NK2Q_s,1034 +torch/include/ATen/ops/glu_jvp_native.h,sha256=MeRS6rff1ToGTBWRe1E4ise6oy4RQsZWTP459cZV9Z0,924 +torch/include/ATen/ops/glu_jvp_ops.h,sha256=C8dsRFQ2rGbvhpDBmdr6oC3eReP8LFYW3Ws1eEToLw0,2191 +torch/include/ATen/ops/glu_meta.h,sha256=Ok6PBNZYx3hOC9dqFgZogvhNADAei90MVASTOKUaufw,831 +torch/include/ATen/ops/glu_meta_dispatch.h,sha256=AFOk0jhFDlkAE6h4NT_lJRnmvJIJmImjNls6grPf35s,1169 +torch/include/ATen/ops/glu_native.h,sha256=ZXDHHkGOYagfi644sIYWcXZuDGiLufip_1Hq5iHTR-M,854 +torch/include/ATen/ops/glu_ops.h,sha256=yh0Fh4Wb1-nt-Q27EP5CraohK0njCIN0DOTPmOpwLvo,1877 +torch/include/ATen/ops/gradient.h,sha256=9hh831UQ5KfvlOURZ6l4NjhzCiHST0yoiYOitDG6V64,3126 +torch/include/ATen/ops/gradient_compositeimplicitautograd_dispatch.h,sha256=nYcD48S_G7LNvQL1jMrFkaloxsWl4vgNs8SORDKUudI,2038 +torch/include/ATen/ops/gradient_native.h,sha256=nUnhXOeZz9y9ATk94XY_Wl6FWhpU8r9LuRu3y_3eEIk,1750 +torch/include/ATen/ops/gradient_ops.h,sha256=lTSLz2M9MBBGm56StlK6gU0UX8wMQA-Klp4fEvJJlo8,6526 +torch/include/ATen/ops/greater.h,sha256=qzqSySHLDwlyQhs3XrLFo06ps-WXx25DC9gP-BTPuY0,2191 +torch/include/ATen/ops/greater_compositeimplicitautograd_dispatch.h,sha256=sDCDMOnWIaAG3MWPb4whbh9CQDeiUS4NCK-t-hQkH2U,1704 +torch/include/ATen/ops/greater_equal.h,sha256=FWtJKJRjXKhC99ZS7fTmT3P08XOe0SZBXdsEMx6XFtQ,2305 +torch/include/ATen/ops/greater_equal_compositeimplicitautograd_dispatch.h,sha256=wf_64kCUUS1oa_dDclA6qk7LyXi6_a27DKmPcC8A7sc,1752 +torch/include/ATen/ops/greater_equal_native.h,sha256=Sszs-lNJkw1SUpjn9jua7bMjV1Nduif3TgrY-1GraBQ,1240 +torch/include/ATen/ops/greater_equal_ops.h,sha256=qmq2Ka_uYDqy-XL2MBoEcHLoPUFqvcEyG7kjg8zrzDE,4653 +torch/include/ATen/ops/greater_native.h,sha256=8GxNQvriWPABq6B1OM12x60CI-cmrLitz2p9aTwZpgM,1204 +torch/include/ATen/ops/greater_ops.h,sha256=C4M5YqFs43Ju2Ay7ePW4LK3YueOgapSNKHZxIPzdH_M,4545 +torch/include/ATen/ops/grid_sampler.h,sha256=LD9Ok2tqYoC5UPndDsTDnRyZO7kV0SBPDrD31jMgsjc,1143 +torch/include/ATen/ops/grid_sampler_2d.h,sha256=KFT1UlwovtC6NUTMgFGd6XW-uK61yiVhfaGbPiNa6ZE,2055 +torch/include/ATen/ops/grid_sampler_2d_backward.h,sha256=9Lv8qDvd8Bs1N60DP9_jKZvlQ8NQIof29CwCVoFCK4E,2751 +torch/include/ATen/ops/grid_sampler_2d_backward_compositeexplicitautograd_dispatch.h,sha256=KRIKJ-bn2negsyXTkrx2OTMTIC2vVayJTMxzsUKP7FM,1575 +torch/include/ATen/ops/grid_sampler_2d_backward_cpu_dispatch.h,sha256=ovSy72TICQtbm61xcM1qIfr9cVf3F5dE00hytTmNzvQ,1179 +torch/include/ATen/ops/grid_sampler_2d_backward_cuda_dispatch.h,sha256=14EWRnAqnJUSnSNCVETcvb_go7vLowutSLnF-OUHvck,1181 +torch/include/ATen/ops/grid_sampler_2d_backward_native.h,sha256=gLn0Lob5L-hqhBCE2d-lVwku7nzqQ5lxQX2dgCawl9A,1508 +torch/include/ATen/ops/grid_sampler_2d_backward_ops.h,sha256=XHs90TkJr7_mbgbHChSBBI_sdavYysNiinLwJoLQwns,3215 +torch/include/ATen/ops/grid_sampler_2d_compositeexplicitautograd_dispatch.h,sha256=ljQBVSmyOCZTAYennI08xroLp26C6On8ocqUOJzZzPk,1331 +torch/include/ATen/ops/grid_sampler_2d_cpu_dispatch.h,sha256=7zxZD2jMAtfveSPa3epi4WnqFjH9tps2CwNuxq7rZXA,1079 +torch/include/ATen/ops/grid_sampler_2d_cuda_dispatch.h,sha256=NCfAlqdXkjOpw9ISeIEtjz-KbpOqBBzb04zO_1xX2lw,1081 +torch/include/ATen/ops/grid_sampler_2d_native.h,sha256=5gFDR7dx3Yvh0PO9C9R5IkHztXGyF0MsxQpojsPhJJA,1186 +torch/include/ATen/ops/grid_sampler_2d_ops.h,sha256=_NmGwc4slgnnObZbBLVeD6w6gJuyxlmDwKW-F9iyxsw,2479 +torch/include/ATen/ops/grid_sampler_3d.h,sha256=sDeCvln2qf4qu3bQEvwZh5wXBx_k00eCNIB51dj3DvQ,2055 +torch/include/ATen/ops/grid_sampler_3d_backward.h,sha256=0XcBmRklJYsctj6awz7xdSxt_4X1hPtu4NkJWDzIu78,2751 +torch/include/ATen/ops/grid_sampler_3d_backward_compositeexplicitautograd_dispatch.h,sha256=7Erkhvn7LJQSSmR7qOXhc6BxdNxzAyOCO46qh5OW3Es,1575 +torch/include/ATen/ops/grid_sampler_3d_backward_cpu_dispatch.h,sha256=dtRsgau5lqKu-7Z69N88k09DmVFtWq4t50ux_gk-Aeo,1179 +torch/include/ATen/ops/grid_sampler_3d_backward_cuda_dispatch.h,sha256=LYe6znNZcaEPH9BpN3_kvjBIQlWRRpVtDq28nlMtrQQ,1181 +torch/include/ATen/ops/grid_sampler_3d_backward_native.h,sha256=D4VyUGxZiSmozgbbWbcALARzDytjejRYHsW4oI7rlgI,1508 +torch/include/ATen/ops/grid_sampler_3d_backward_ops.h,sha256=JdK9XZFKywFz2ze3HKYPLAxw9VsD0HgwkkOr8z0BnnE,3215 +torch/include/ATen/ops/grid_sampler_3d_compositeexplicitautograd_dispatch.h,sha256=HeB1Ca2MKf_Oqvpmdtu8EYmphTTBjQ3ehkCZ25rezbY,1331 +torch/include/ATen/ops/grid_sampler_3d_cpu_dispatch.h,sha256=FeM8WVIFus_5un3A9iGLu4NYclnRBHW8Oan-_MdbRZE,1079 +torch/include/ATen/ops/grid_sampler_3d_cuda_dispatch.h,sha256=XJlepHkCgPp-8UDDDlVKMRmWbazDy5nj3BZ1W-aPwbE,1081 +torch/include/ATen/ops/grid_sampler_3d_native.h,sha256=hFch_qdpZRmdh7cSux82tpjuGnutBQF-ct1EpF-XBQY,1186 +torch/include/ATen/ops/grid_sampler_3d_ops.h,sha256=3NHrNc3GrHZj2SZWggPDYVJn69oPEzvfnO3dcBuVizc,2479 +torch/include/ATen/ops/grid_sampler_compositeimplicitautograd_dispatch.h,sha256=OVVInODeVkoinPvRhmfEGPhdm0MkglexEBmBo7XBHSc,1120 +torch/include/ATen/ops/grid_sampler_native.h,sha256=uc3jYmBAyf4Wnw43hqNSYGX3f0S7YWu1ZjMZNh1Wimw,832 +torch/include/ATen/ops/grid_sampler_ops.h,sha256=WQy9BjniNDggIcitPQYXxRxrzUvjSLnp8rWUK-AOqNc,1541 +torch/include/ATen/ops/group_norm.h,sha256=Md9aGrPMKZJxgZ6O4Cmbi4XnvFEIV7aZeFxzsGREL0Q,1209 +torch/include/ATen/ops/group_norm_compositeimplicitautograd_dispatch.h,sha256=lxV6G2liF6LMf1yOhMbqTspk-dGXlAq5fP0y04HfDI0,1178 +torch/include/ATen/ops/group_norm_native.h,sha256=_Uo0D_CATGofe4S-iq_mqjd3969iBH_YGcPqOtkzq0c,890 +torch/include/ATen/ops/group_norm_ops.h,sha256=gKvbxsHXoQj_O7QZf4IVWH8juswLLQ5bzRvNxWBIkyQ,1697 +torch/include/ATen/ops/gru.h,sha256=K5NeoaUxqLzFQZQzG2Xeh0_evEmjwUxlzLktEdUtKkg,1826 +torch/include/ATen/ops/gru_cell.h,sha256=v2dgfe5obQ4tHFCo27x5XsjlBXQYVCwd6qBp8dVdz68,1168 +torch/include/ATen/ops/gru_cell_compositeimplicitautograd_dispatch.h,sha256=GULA8vDuuN9ZgBPDtOJP3x7gYMRHZJoitcLodWUYP3A,1184 +torch/include/ATen/ops/gru_cell_native.h,sha256=6ijjmxKg2vi4tfAxpBDLpsgMI9v2igfzSuL2_Ho3oBs,896 +torch/include/ATen/ops/gru_cell_ops.h,sha256=onqMGqg1LXKYYDNIv_4ayhhAEV489qhltn78iWE2kaE,1743 +torch/include/ATen/ops/gru_compositeimplicitautograd_dispatch.h,sha256=h_6VkDT1dhwlgOmg_rN4AJlVLstpnhzhVkHXeGko5d8,1429 +torch/include/ATen/ops/gru_native.h,sha256=XD2FpZ6--_yx-aE9wMnHuLNVfK2g0zqvVk5QiKXGh3I,1141 +torch/include/ATen/ops/gru_ops.h,sha256=W-YdrUAbeT9JAF2c8dLkOeleDdOQKvep9J226KpOQ84,2943 +torch/include/ATen/ops/gt.h,sha256=CmCWKASvzFZ9M1VJovX8uH34Q526vStvj7hDpVWMZgo,2096 +torch/include/ATen/ops/gt_compositeexplicitautogradnonfunctional_dispatch.h,sha256=NSZDdJ_G1bGiNn3pe-YYUbwWx5zI86lf7-mWW-fn-SE,1288 +torch/include/ATen/ops/gt_cpu_dispatch.h,sha256=lMFDI_bII8HyfD9cY6VX1JIyXO7hHxaK1jJkRpx329c,1620 +torch/include/ATen/ops/gt_cuda_dispatch.h,sha256=d3D8iRz0SM8oSCihqvy3EPh6s1_0oeYyD9knOA_qYVU,1622 +torch/include/ATen/ops/gt_meta.h,sha256=bjIYECmoBhmaMKTls3_ljcpWmBuvurLZiFbvqLndtek,989 +torch/include/ATen/ops/gt_meta_dispatch.h,sha256=_LF7A-xng55zcgEHKFP2_HAWTE5ZY7Iuyl53rLm-w7c,1622 +torch/include/ATen/ops/gt_native.h,sha256=ACWqY-pW4dQ3dasiX2NnvQvPvwMO9xaJ53--v4E-Eh0,1549 +torch/include/ATen/ops/gt_ops.h,sha256=2pB6HoSEhQ0RMXjEhDShDBlX1mrkl0civmeJEuJXdfw,4455 +torch/include/ATen/ops/hamming_window.h,sha256=FyyJIGMLRb0NL4nCw42h2DdpqAGteTTlP4mzLrSlvmU,7292 +torch/include/ATen/ops/hamming_window_compositeexplicitautograd_dispatch.h,sha256=EBQPtI7JcWXfDpF6NHCTA095VvsQgwtgCRGIkv-qwLw,3164 +torch/include/ATen/ops/hamming_window_native.h,sha256=oaRl9aVs9pZm1iBJj3cKw3b4l47ZEx1rcksszVTZUqU,2096 +torch/include/ATen/ops/hamming_window_ops.h,sha256=6axxbCRGscGsuapARD1v4xHb2Jz5h2uw55f6nALGnp0,8030 +torch/include/ATen/ops/hann_window.h,sha256=3CQtp35kyUTx8q_F9KeKJpuq_xVZqbD5yNr3k8VOl4k,3571 +torch/include/ATen/ops/hann_window_compositeexplicitautograd_dispatch.h,sha256=M1TLXUuEciKp4-0K562sGpOG6nQvUx0vtBI_MEZK-hU,1928 +torch/include/ATen/ops/hann_window_native.h,sha256=Qsluvu6NvnYd0NkMQJ36QlRYYYDFeKmFV8QhY7w2na8,1305 +torch/include/ATen/ops/hann_window_ops.h,sha256=ClgbvDRxSz05StaGb6GECqzYTGJG8ZdRL05Qm9Jtdy8,4062 +torch/include/ATen/ops/hardshrink.h,sha256=v4AkR70pPWqzOCN8pt9DX2dLyD4KoO9-8_H_UFloU4I,1482 +torch/include/ATen/ops/hardshrink_backward.h,sha256=p3DL3FVmb-ua_7YSraqXUGNvaW6HdCRC8H0y6l5ZpUQ,1790 +torch/include/ATen/ops/hardshrink_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=I9qcMLH-e9Kb-s9sxK2uru8CsAVWUx30BV50Mh35vUY,1112 +torch/include/ATen/ops/hardshrink_backward_cpu_dispatch.h,sha256=X9QDbS8L03BSI0oa_y-TFEUrALfym3ch3cTSWHdTm_g,1349 +torch/include/ATen/ops/hardshrink_backward_cuda_dispatch.h,sha256=0Kg3R8hd1Yizq2fa0Yjjm1j4AxZa74sh2JkNOinMWJs,1351 +torch/include/ATen/ops/hardshrink_backward_meta.h,sha256=1PfH8EQsbe3KqDn-vskQuSV9bAyiwW6r8hARZRXoeX4,889 +torch/include/ATen/ops/hardshrink_backward_meta_dispatch.h,sha256=KSzzTmveGAsorNNOB-oDFLMr9OxmM8XoVdG2Fq7pW0E,1351 +torch/include/ATen/ops/hardshrink_backward_native.h,sha256=AhuOadw4gl7-6_LlpdHp4TLbxft1EoGRqeo13mTcT0g,951 +torch/include/ATen/ops/hardshrink_backward_ops.h,sha256=0cbS2qO66bPfhJnzmYRLa-W7QcagR0hArQrE4wCeGIU,2283 +torch/include/ATen/ops/hardshrink_compositeexplicitautogradnonfunctional_dispatch.h,sha256=P3Q_Ju7TDpOPJTqKJDkAgRiWapwgqvUVsZa6tpbqGSM,1078 +torch/include/ATen/ops/hardshrink_cpu_dispatch.h,sha256=ZcNTVnbczXeP2HiOuR_JZdJMJ7zV79JJABaCR-ZnRF4,1229 +torch/include/ATen/ops/hardshrink_cuda_dispatch.h,sha256=n8au5-nwnKrQnv8RoJLRhTb-qTo-4aynVDPn-19LwUA,1231 +torch/include/ATen/ops/hardshrink_meta.h,sha256=zyKrCYPogrTpLd5ZueUm2U46TPtWLb6M3mfMBgCWRF8,851 +torch/include/ATen/ops/hardshrink_meta_dispatch.h,sha256=_DhDjqnuKEwdzWnPZfEdinPOQ3aB_bM-4yFNSZaudz8,1231 +torch/include/ATen/ops/hardshrink_native.h,sha256=0yNAMTnSz0sCob1mdHjwoeai0N07khAcBwECpncwsUM,888 +torch/include/ATen/ops/hardshrink_ops.h,sha256=WUzSkoeSpr27j3SrAHcGXXGAUMGZM8wb3g-FNoFf5dE,2005 +torch/include/ATen/ops/hardsigmoid.h,sha256=brGWlSoNJ9FGBbvh8V-WLZDDaIgu5DKwprCDmVFm1jc,1488 +torch/include/ATen/ops/hardsigmoid_backward.h,sha256=X3Wagbgdt2lSSN7i-CdsDY3AvN4ZtDP-CV_2w0T_iL4,1686 +torch/include/ATen/ops/hardsigmoid_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=qluB9yj4ThqAkpe6MeczqcpZjOrkAMQnVHY9m0bXHG4,1090 +torch/include/ATen/ops/hardsigmoid_backward_cpu_dispatch.h,sha256=hTMduBEVsEW8pBV6Gwa0NkXt1SZQHeU8QQlal0JBH6Y,1283 +torch/include/ATen/ops/hardsigmoid_backward_cuda_dispatch.h,sha256=PAXvzFC3ydQQ-uCNB1qLP8vGSu8jJupN7_XgnMPXbXU,1285 +torch/include/ATen/ops/hardsigmoid_backward_meta.h,sha256=o6buS1fDFRYWLxwJUd-E-3vJKYuAiKR94cIVoFNP6Q8,867 +torch/include/ATen/ops/hardsigmoid_backward_meta_dispatch.h,sha256=ao6zS2EQFNkk8WY8jo-PULEpKT0dvIyn5DAuBoGnB6o,1285 +torch/include/ATen/ops/hardsigmoid_backward_native.h,sha256=5h2m6JbX4oXG930D2ZMUyJKalHVvDZoas8H8vyULBr0,931 +torch/include/ATen/ops/hardsigmoid_backward_ops.h,sha256=_w_zQos8l7nLKs3ZhFXY9OvpWhU2HCbLRC-nK9cBOrw,2135 +torch/include/ATen/ops/hardsigmoid_compositeexplicitautogradnonfunctional_dispatch.h,sha256=uJpvTur1T6EnTaXyetF_ZBViT6eGWGcYCV04wQhtvbU,1105 +torch/include/ATen/ops/hardsigmoid_cpu_dispatch.h,sha256=x69Rk2-jGgjyhZaCaYDhPs5jZOvx0b8Ts3p19y_RBNI,1202 +torch/include/ATen/ops/hardsigmoid_cuda_dispatch.h,sha256=pXw3--3Fg91280E_qeWb6azJ1hyrweYcuukW_DAyg44,1204 +torch/include/ATen/ops/hardsigmoid_meta.h,sha256=0AxhGV39dK8dV8CELTGTA0AHxz655gkCO6iF32ONMqs,826 +torch/include/ATen/ops/hardsigmoid_meta_dispatch.h,sha256=S4LJUEpOBb0Lq1MLYRVjjOnZa4RsHLETO6ErJ6MYgaA,1204 +torch/include/ATen/ops/hardsigmoid_native.h,sha256=Yhj06Bd0NqZzQetCgd3Zn4O2gftz3izt61E_h6VgfNc,1035 +torch/include/ATen/ops/hardsigmoid_ops.h,sha256=nIBmfiMLJrIBJzlIt89ZC0MMJmF2w9eEi2mMye4EGwE,2345 +torch/include/ATen/ops/hardswish.h,sha256=NPdkaxJnLdXrETxx2fBQX5OnU_0S2qGFdHA0LCqEObc,1462 +torch/include/ATen/ops/hardswish_backward.h,sha256=F6J4C7OlRIbDjOnuuE5UJ8YXmbyaxWm2tDVg1HvkiDs,1596 +torch/include/ATen/ops/hardswish_backward_compositeexplicitautograd_dispatch.h,sha256=8tuWr39kiTWe3wdcMjXvILHqpdl1L3Qke0wPVZ1ZYKs,1209 +torch/include/ATen/ops/hardswish_backward_cpu_dispatch.h,sha256=_YVgkurVjT3Y2lPgkQ2NqymLKIEgEJE81tAh_J8VJBM,1018 +torch/include/ATen/ops/hardswish_backward_cuda_dispatch.h,sha256=udWkDTXwXGsZoQ6YfABnD3cHKJb1VI5oPfd9PsF5rzQ,1020 +torch/include/ATen/ops/hardswish_backward_native.h,sha256=n-H0PPZYyd4TWl-7YwhnNmYqUmD_3UHgEIDPGFjklIc,896 +torch/include/ATen/ops/hardswish_backward_ops.h,sha256=96LUi3Y6HM9X_HT1o_Y-Fmh7fVWjgKmgzlISx5BAilI,2081 +torch/include/ATen/ops/hardswish_cpu_dispatch.h,sha256=L48BaSexR4UQMbno6As1lft5DRf8Q4lAMk83ZXmrU1A,1194 +torch/include/ATen/ops/hardswish_cuda_dispatch.h,sha256=ox8utXQY3pXoeCEAMXdVf6jLM_3Rrs2v6K8xv7YJGgk,1196 +torch/include/ATen/ops/hardswish_meta_dispatch.h,sha256=81KVnWt6VqCOHNs9S1rlMMXgsIrNMpFrNbz8z0Lml2o,976 +torch/include/ATen/ops/hardswish_native.h,sha256=MzFXLh3k-boA_Wym8j5qtnNwH6OKsathU5Z7UDtbxhQ,868 +torch/include/ATen/ops/hardswish_ops.h,sha256=HCzdXInIg9ei4WhwwC6hTq2v0myYNiPnPdDrWYQCQHE,2327 +torch/include/ATen/ops/hardtanh.h,sha256=5rmBGsJC8zoAkynQxTfn5nc03bn0oAR5mPcnyW9_PUU,1908 +torch/include/ATen/ops/hardtanh_backward.h,sha256=Kz64IMoPLNp9EEonAP8N0vGjaXiyHlaN-oEO2XHXhMw,1974 +torch/include/ATen/ops/hardtanh_backward_cpu_dispatch.h,sha256=2Xrp4AK41iEA1jKvO5qyn5fVpy1WHUfRWpQ1U9FaI_s,1442 +torch/include/ATen/ops/hardtanh_backward_cuda_dispatch.h,sha256=ZjHrYw7iJOIFKIs2DPuhIBbdaZEMpdFsUlT0tyJOiiU,1444 +torch/include/ATen/ops/hardtanh_backward_native.h,sha256=uy80hqPZkoirL2SjgwQDeVmbQB-Wo2V8s_b9LHu8MLc,1013 +torch/include/ATen/ops/hardtanh_backward_ops.h,sha256=IDNN8AnLNnmR7_CHqEuviAqvgrhi5U-Mz7fxNAM4Yuo,2485 +torch/include/ATen/ops/hardtanh_cpu_dispatch.h,sha256=zO3URwZcWv4XyM4QsxPNqHrAih2EuCHs-GlyhSvP0Vw,1429 +torch/include/ATen/ops/hardtanh_cuda_dispatch.h,sha256=W9k31RCJohNIeEZDI0e6sMEZ2CH8CgWYAM_glAtYboU,1431 +torch/include/ATen/ops/hardtanh_meta_dispatch.h,sha256=tsJCqg01OXhqqRG9kmu5_mmvDDGKyRV45pr9W4BSPuc,1036 +torch/include/ATen/ops/hardtanh_native.h,sha256=pFL0LakwmvhAFO7sGAKiYH9uA5kRzcG9AeS7F3_9ZKM,1452 +torch/include/ATen/ops/hardtanh_ops.h,sha256=FcpiSvBIGhhV54OBSN3x3AAJjx-yfVU0xHRARweHOK8,2885 +torch/include/ATen/ops/hash_tensor.h,sha256=_K4GSgr0ODEiMh4GMFLeW2owM-NRo4fhC0keJRGU_2w,1704 +torch/include/ATen/ops/hash_tensor_compositeexplicitautogradnonfunctional_dispatch.h,sha256=MqDuhbX4RaVYeHO7LgC7OpuOO2v925RejDd0BuLSKYA,1109 +torch/include/ATen/ops/hash_tensor_cpu_dispatch.h,sha256=FCA-al2SwDsuPLI-PrdDEjqhUht2ry5tLebE39L78gE,1315 +torch/include/ATen/ops/hash_tensor_cuda_dispatch.h,sha256=JAjQoyC32yC-RIeMxKdRC8xSKs01JD8VjqguRQK7Ja0,1317 +torch/include/ATen/ops/hash_tensor_meta.h,sha256=2MWgy_rO0XR1LeE4j12FLFCBZJeUUL0aR0xQp6bMzNw,875 +torch/include/ATen/ops/hash_tensor_meta_dispatch.h,sha256=Hnp7ON7_tV9RASK_j_5E5dEWZT8p82Xk2UtHNw6UujA,1317 +torch/include/ATen/ops/hash_tensor_native.h,sha256=V8qQURPUIIUhRH33kNQBCguJ8WvSubLbTluEUhCIWCM,914 +torch/include/ATen/ops/hash_tensor_ops.h,sha256=zLlQSJSaE1GgMnoYESOhHoU8hoGgrIpQcSWKGjEwNUE,2188 +torch/include/ATen/ops/heaviside.h,sha256=TXM03TPE2h_EfIMsfzPnFgl5XPTxy84XUUiM4X9eEx0,1461 +torch/include/ATen/ops/heaviside_compositeexplicitautogradnonfunctional_dispatch.h,sha256=c4algCWF9CNAZONHoUIIP1c5cO6jqpbqKx3j_D1MZOw,1155 +torch/include/ATen/ops/heaviside_cpu_dispatch.h,sha256=QGlf3kg5No0qcI64dVycjcg3pZl1uR1xknBjb1wya6g,1302 +torch/include/ATen/ops/heaviside_cuda_dispatch.h,sha256=6mLKuAZm5I70niFPB2-hDuocuF_BgqlwV35p7uo-tDk,1304 +torch/include/ATen/ops/heaviside_meta.h,sha256=Pr8gCF6nhjYmeyHXc_-9vO6hOG3-o5ukuN2U2wZz-UI,851 +torch/include/ATen/ops/heaviside_meta_dispatch.h,sha256=peVOKxrFNDG48JtzTv6MZrzbO6ygmSLE-inqDbMm9fs,1304 +torch/include/ATen/ops/heaviside_native.h,sha256=uuIlBXYGmy_eQK3Z3xdMhsCu0KEv2EvL7DCDvR2tgPk,886 +torch/include/ATen/ops/heaviside_ops.h,sha256=EixNKEMB3zUxCf_gIXxMV9vvcTTEushbLBuFHS2oxoY,2594 +torch/include/ATen/ops/hinge_embedding_loss.h,sha256=_Kawd8P0i12m5HQx9iRRDA0NvWRJ79xyIISdiCYUyfE,1112 +torch/include/ATen/ops/hinge_embedding_loss_compositeimplicitautograd_dispatch.h,sha256=Xv9X7yRwKQY26ZAvgqzQ2aYM2eF3gPnb_fKe55a4Kzw,1117 +torch/include/ATen/ops/hinge_embedding_loss_native.h,sha256=EoQ7EUDr1Vu5A8HJMimkH54GsjKsbjDicnPjXexLmkQ,829 +torch/include/ATen/ops/hinge_embedding_loss_ops.h,sha256=DdQ6rRnYLHCZar4jV4Xm5m8IvjD-flP-MOVXRKf5wrc,1465 +torch/include/ATen/ops/histc.h,sha256=LdQcPudL0z9WLrekyWU5CrB1DACJvOFqvh5pe7aZbfM,1647 +torch/include/ATen/ops/histc_cpu_dispatch.h,sha256=3NQFjnAH51yWXZzUS8oNXdqwioScqWDYr7kUpSBUZ5Y,1330 +torch/include/ATen/ops/histc_cuda_dispatch.h,sha256=DLzOiDUyznsDIfv8G78IczxTpfLBULMQltq9SFbxWnc,1332 +torch/include/ATen/ops/histc_native.h,sha256=I1dQ-0oPklqqJkoDaBn1G3pqhzwAXDeUdgYFr5dVzgc,1232 +torch/include/ATen/ops/histc_ops.h,sha256=VX1uIOarE6DBY9TprVXtQ5UmToVM7y3XRhWJcgq0uTM,2225 +torch/include/ATen/ops/histogram.h,sha256=vkrSfGhiv1ArjerlM7hFskf-onWjArTVFaARrElBXAQ,3770 +torch/include/ATen/ops/histogram_cpu_dispatch.h,sha256=C4ThtlN9QObPuHOo2M_WGXB49_kSPRGrXCccEjTWOEg,2292 +torch/include/ATen/ops/histogram_native.h,sha256=mc5bJ-TWXkfPuCZNMvEjeVPkWf_E-4Y1MxlmNdATr7c,1543 +torch/include/ATen/ops/histogram_ops.h,sha256=sKFyJ2Dcku75kEZTjZP3ch993dfEOoal1EbskgAmypw,5007 +torch/include/ATen/ops/histogramdd.h,sha256=rOVwTMrfQ5XXTNLr7hotG5DQuVrV0Li76o_txoh26lA,2213 +torch/include/ATen/ops/histogramdd_compositeimplicitautograd_dispatch.h,sha256=wyFoT-gG_BZo2dlYYo3spLX49NXaJZSvgYAJkysfEYI,1699 +torch/include/ATen/ops/histogramdd_native.h,sha256=jLM7bzMKckl6hJvhw0ndJYRVQCygPIqVxyQFZsqHCuU,1411 +torch/include/ATen/ops/histogramdd_ops.h,sha256=R1MLGSvVi4jeaZPAfqDZYd4OdEceW8L9i2Okf8MjOn0,4013 +torch/include/ATen/ops/hsplit.h,sha256=Mlvg3xhYQVUXea_iUc-NOwaapbw77Jrt4f1QNkmVvwM,1193 +torch/include/ATen/ops/hsplit_compositeimplicitautograd_dispatch.h,sha256=uWtCOsxhkkIK76VYFomSbOhMnYW_XP7EwhtVFNO6QW4,1145 +torch/include/ATen/ops/hsplit_native.h,sha256=0yatecVih8I6n2TYNAyaA0xpJT1gIUrYe76LcQRvCT4,857 +torch/include/ATen/ops/hsplit_ops.h,sha256=O5J5ncjApdn1pSvWw504Egex2BNyu65YK_0i5GlN88g,1996 +torch/include/ATen/ops/hspmm.h,sha256=DprT2f7mcA2TB0dUj-l5G3oG_kbkeW5ZILwHUTeXuj8,1403 +torch/include/ATen/ops/hspmm_native.h,sha256=df_HGep2ajOKN2N-UFCGySP8Z8bjk3RX1t_MqWyyxgA,1082 +torch/include/ATen/ops/hspmm_ops.h,sha256=sayAxG2HdU8CSo_JK7u0o67oQUYnO6muOCehBVShemU,1961 +torch/include/ATen/ops/hstack.h,sha256=eJUcmXDPA7vqdQ7W3DOCFkByI5K0sDhEvlUlF7cEeEY,1302 +torch/include/ATen/ops/hstack_compositeimplicitautograd_dispatch.h,sha256=WteoJOs6qqr1IVYK_XnGAd09GKLkMfnmwGQHqzwoKd0,1172 +torch/include/ATen/ops/hstack_native.h,sha256=b-EUGlkrPtoBpRrAlbOTpZlSxjhl27YjqjbYXPKrgiA,806 +torch/include/ATen/ops/hstack_ops.h,sha256=qwxIOi_nuIw-EiAm3UdAvbHmg053DP1w8esyvZJSnlY,1799 +torch/include/ATen/ops/huber_loss.h,sha256=xuS_FrxHsefkpAy0T4JI1zuRbI0aOCtuUovE-8Hz0Fs,1783 +torch/include/ATen/ops/huber_loss_backward.h,sha256=tByeJ-n6vEsGLj7_tVYzICda7yswkuDMyADv3IBtVbA,2035 +torch/include/ATen/ops/huber_loss_backward_compositeexplicitautograd_dispatch.h,sha256=w7-u4rSO8MCq9-6ZUYMAtge0bQMjSAxMxKjCKl00bfY,1123 +torch/include/ATen/ops/huber_loss_backward_cpu_dispatch.h,sha256=V0lZElxOBAVdlRhiOTcm-G2UmdO2VbQTyK14CS3m-GA,1301 +torch/include/ATen/ops/huber_loss_backward_cuda_dispatch.h,sha256=LvATj2EzgSmHki_eSM61dn3HRGVUkIMs-qPfYESWjPY,1303 +torch/include/ATen/ops/huber_loss_backward_native.h,sha256=qTi5r3kUpZpgqB9vJ9t7acUbrOTmYQHb6fspdtzrRcU,1025 +torch/include/ATen/ops/huber_loss_backward_ops.h,sha256=H9TuUDadZPvckCgLUM4Wl-zfNF6Uo_oAat2gJKbH3JQ,2508 +torch/include/ATen/ops/huber_loss_cpu_dispatch.h,sha256=9YMqjOvBln1BtfPcQi-aSZap0h__5zT0Ucn5eNNlA2o,1371 +torch/include/ATen/ops/huber_loss_cuda_dispatch.h,sha256=f2t9RJ2awh7zbuSY6umX_YLZn_Sh01p6O7KncwaJuQI,1373 +torch/include/ATen/ops/huber_loss_native.h,sha256=6-4iN6CvQJnvZnVpRnz7uAnuwVrH-o6UbMFQhlFbYNE,960 +torch/include/ATen/ops/huber_loss_ops.h,sha256=ercboX9fOr2Yx08ce3xhl2tR7QU1IN-_iXoHElXVgHM,2243 +torch/include/ATen/ops/hypot.h,sha256=5iYlUAxQ2Zt73k0WuiSm30VNENUr0AYAVXJXa9da7TQ,1412 +torch/include/ATen/ops/hypot_compositeexplicitautogradnonfunctional_dispatch.h,sha256=K_6T-1CIyiYGrgGYK8_PdBCHhRIpBobe8pAYGafUMrc,1145 +torch/include/ATen/ops/hypot_cpu_dispatch.h,sha256=7HrOioVBGgCt-sPEJwbVSH6JckExCVUETQUKNx6vpGw,1282 +torch/include/ATen/ops/hypot_cuda_dispatch.h,sha256=KJb-6w1R4PvF3uXbHCus486X-qPcKXxtz0OLOtmd_fI,1284 +torch/include/ATen/ops/hypot_meta.h,sha256=KC6TtMhXm2Pqa4gQdaLtggrmhmf3-yH3yonQR-f5Za0,846 +torch/include/ATen/ops/hypot_meta_dispatch.h,sha256=EWNVRRAaWolzV1giKH86II3WhBBJF7YITw9_QB92GSA,1284 +torch/include/ATen/ops/hypot_native.h,sha256=yuJpaBkuaonG--6q5CZl6Uayv7uju6FNKYgiLmKwcTw,873 +torch/include/ATen/ops/hypot_ops.h,sha256=Q_e801uV1XQ13hhWU2hilMn0qlJUI0k7xyV27PydXIc,2549 +torch/include/ATen/ops/i0.h,sha256=T308xBS1wjB9K2ToInJxKKuiLg9XsBx0O11oYwoR9oU,1371 +torch/include/ATen/ops/i0_compositeexplicitautogradnonfunctional_dispatch.h,sha256=_Foe9ReQfNB-9e0lCBD5ETjO52mbMFT5kuRbRBGzSrw,1087 +torch/include/ATen/ops/i0_cpu_dispatch.h,sha256=QdV1ZOv885ouzdDR49LHHE5w7soGzfVzqu6yPH7W9SA,1166 +torch/include/ATen/ops/i0_cuda_dispatch.h,sha256=QTG2-hCydLIWXLpOaTTRuBwYd_9aySwEYIZBE0_yer4,1168 +torch/include/ATen/ops/i0_meta.h,sha256=vtqfBzUpUf78Iq9ld7QuJnsVkfFpTz3ejg8pwM12A68,817 +torch/include/ATen/ops/i0_meta_dispatch.h,sha256=wmvTwEIDLHTN30hVhlb10vQPH01o-J3sEn0Kj57UiOw,1168 +torch/include/ATen/ops/i0_native.h,sha256=85ouRhxa1L79w1WhYpG_FsYpNNrYMrI3QK-RKgZWZxQ,838 +torch/include/ATen/ops/i0_ops.h,sha256=wkVudm7WUExUpKAvrdjAIafKB8rI2sgZlUGVbj9XFGU,2264 +torch/include/ATen/ops/igamma.h,sha256=st-BaNICd7J466iGqtXudFTbOZVup9nht46aNLIyzrM,1422 +torch/include/ATen/ops/igamma_compositeexplicitautogradnonfunctional_dispatch.h,sha256=dIg5allbrVYb8KjUtkIEh2pJ-2_Hwqmlu0SGEzGQIvw,1147 +torch/include/ATen/ops/igamma_cpu_dispatch.h,sha256=XIKq35mDfWRPJaVaAn8951UHuHO97WLGf_4wMmPNI58,1286 +torch/include/ATen/ops/igamma_cuda_dispatch.h,sha256=mEFj2OyIq2pP1XeyAb6eMBClIUDrSy6EP9zsOQGICGY,1288 +torch/include/ATen/ops/igamma_meta.h,sha256=X2EIw4iTtlNlzneM1z-jgy1-pUc9GB8nSVHxAqQ_RIg,847 +torch/include/ATen/ops/igamma_meta_dispatch.h,sha256=xWPYQr1HANT8cVLarzRQmUkrDt24xxmii5_1iIqepYk,1288 +torch/include/ATen/ops/igamma_native.h,sha256=XMblXiG9VQulfksc0YqxIUlc_Z0QzWRioTJBXzhBaUc,876 +torch/include/ATen/ops/igamma_ops.h,sha256=xRlr6FgAOtUxKMauMMfwaxMycecNHkDJsiw9u1166ko,2558 +torch/include/ATen/ops/igammac.h,sha256=tsdDcPjfq57i5aIaPZRSUiNRegjdMI7MtWnvdGrEM3I,1432 +torch/include/ATen/ops/igammac_compositeexplicitautogradnonfunctional_dispatch.h,sha256=8D80aYXXuQz7BoZ5vJyJtAyGUBPoapzpUFyRqYBEWiY,1149 +torch/include/ATen/ops/igammac_cpu_dispatch.h,sha256=dgMYmRnMYDaUVQIXKwGLUd9okMTS_oelXl1qOWj7j3o,1290 +torch/include/ATen/ops/igammac_cuda_dispatch.h,sha256=8gSJnFxGgHAfFAAOmEelH8iX8aKtzB78e9NH-JdHflI,1292 +torch/include/ATen/ops/igammac_meta.h,sha256=dfACs6_XYbhf0jNRo-oZk_Bb9_Lu1efXP8MEIZDF8KU,848 +torch/include/ATen/ops/igammac_meta_dispatch.h,sha256=Y0H23tNOs3fLKDho1qmxvJrqMJaytNRqplKeZ_scQ8A,1292 +torch/include/ATen/ops/igammac_native.h,sha256=QzogQqr8kTcBc8TXvUU7-RUim4sf606CzzehPNwwJds,879 +torch/include/ATen/ops/igammac_ops.h,sha256=ARAh0VHU2m2G4LpBXGJRGNkwLFk7q0b-n_qNV_aLZeA,2567 +torch/include/ATen/ops/im2col.h,sha256=YlDUTDLoz2ZBKGl_lC46ral5zaaW17pqC9UTpKTEPug,1917 +torch/include/ATen/ops/im2col_cpu_dispatch.h,sha256=uOJ22eXzcIHH07RKU0m9CXDhduXH3Q70ULeIBOPenS0,1443 +torch/include/ATen/ops/im2col_cuda_dispatch.h,sha256=fhvxSuBrl5d5pOQlT7tpmnrRAJg6cRj7lUQexSx-NO4,1445 +torch/include/ATen/ops/im2col_native.h,sha256=ePgBbkJNl730DBnNJLCqw8elpcy9CRER-hBLuUX1BGc,1374 +torch/include/ATen/ops/im2col_ops.h,sha256=ua99MTF4_a3rc6UEhyp9ObxNoAuR_pbgATSbMQUVlBw,2489 +torch/include/ATen/ops/imag.h,sha256=yFZjfMxPblNPb9HlmZFIrTa-3XCMUX6dHJ2DbkB_8L0,889 +torch/include/ATen/ops/imag_compositeimplicitautograd_dispatch.h,sha256=SxQ-Wyw8WPQzptOBMIlPwXYIMZaFNPZLh4cK4ITrjp0,1016 +torch/include/ATen/ops/imag_native.h,sha256=WXorn8w1rdDP3XkJB848Apkh9rOrPzJj2Cg2PHjaIXs,728 +torch/include/ATen/ops/imag_ops.h,sha256=HElfQDb9uXvnYsH1XBoRnuPjMXKftZVrmKoSlXLcgLY,1211 +torch/include/ATen/ops/index.h,sha256=ruhPu8n7JyeaFk421zcfKupeioQd9FiOUv5By8f5mac,1565 +torch/include/ATen/ops/index_add.h,sha256=ZgtlPdPxvHtO5SQYW_wdcH5pzBsXfgdZ3du6WcH3Fc4,2183 +torch/include/ATen/ops/index_add_compositeexplicitautogradnonfunctional_dispatch.h,sha256=z9BTErtRCGf-rYCAaTs4VbEJF23IY-0LJPuLNXNCIVY,1289 +torch/include/ATen/ops/index_add_compositeimplicitautograd_dispatch.h,sha256=mBhbVWXroKcxrrZRDEFCGGrqXFaUh8iVWOMvYU2yiGg,1119 +torch/include/ATen/ops/index_add_cpu_dispatch.h,sha256=2F4JpX2QZjRsOI1JTmtaWXSJ81UbZ4INd03JaQlR_6g,1568 +torch/include/ATen/ops/index_add_cuda_dispatch.h,sha256=Tui8AsWwqVONrg3sor30TT9HKJ2ijGRzjDlFwb7tdb0,1570 +torch/include/ATen/ops/index_add_meta.h,sha256=DQBoGG5Y0wfzpXygggb_vAdLf0zT-eYjOTwv971Z8yU,1358 +torch/include/ATen/ops/index_add_meta_dispatch.h,sha256=YcuZ2okuVdtOVShtA6pC3f4ZuvMfCT70TnLdUIP1xqg,1570 +torch/include/ATen/ops/index_add_native.h,sha256=uKn99o38xbqpo7bz4faI7iivPwyj5mRRYADwu8oLzgI,1354 +torch/include/ATen/ops/index_add_ops.h,sha256=ki6nGowWvapAWS-D-6J-CqBJLntrNDb1llqnPTw8yWw,4112 +torch/include/ATen/ops/index_compositeexplicitautogradnonfunctional_dispatch.h,sha256=ZV_DNR4d_ncrtDwB4RYYw1SimIxzje_0B4ktoZ_S-aY,1099 +torch/include/ATen/ops/index_copy.h,sha256=LqoYqVMVtJAuGimQRhGK_qTrCvRbtPLSmUADntRo0bc,1988 +torch/include/ATen/ops/index_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=Bae7fhjweIgjzIZLkFynMrGpwni2JadYu4wspwOq4vo,1235 +torch/include/ATen/ops/index_copy_compositeimplicitautograd_dispatch.h,sha256=7cdaGi5MIuqxqEZO0HVwoTidcJmwTJ4d3DKFZ1U6ZN8,1217 +torch/include/ATen/ops/index_copy_cpu_dispatch.h,sha256=bE1T6LKEhVBpeBxVioeXMy6KnvhhtjuwGWw5Tweqk3w,1462 +torch/include/ATen/ops/index_copy_cuda_dispatch.h,sha256=ZhQFZ0qKg4h2K7zGCsFbiMq6-b4-4fcMSrx4m8CliGE,1464 +torch/include/ATen/ops/index_copy_meta.h,sha256=YWuC5O3xUPp38-j_0LjReV7VdkFWa6f6XZjIwnhRGuo,1333 +torch/include/ATen/ops/index_copy_meta_dispatch.h,sha256=lBnai1XrXcLEBNwD1rB13GFfW1YQRtY26mA6fgWYnfY,1464 +torch/include/ATen/ops/index_copy_native.h,sha256=4Iq-6mnRqfiDdqgP3G0W9nhK7OxQr4f-T6aCFx0HesI,1181 +torch/include/ATen/ops/index_copy_ops.h,sha256=tr0zwWTqD4xG0Z2x_Xuxm9ChV6U6Lw2VbkwkM6Q3Wjc,4532 +torch/include/ATen/ops/index_cpu_dispatch.h,sha256=RX6W_Jj268ioEBNpscHjqnK5srueJTkiCK8qw9XgZ4k,1296 +torch/include/ATen/ops/index_cuda_dispatch.h,sha256=LlS5NdMJKzo7u3C_dhihdlpLHI7rin7sHK0lD2a41S8,1298 +torch/include/ATen/ops/index_fill.h,sha256=NqFKcxAylfrv_gEriv2XQ35MAiDa4qcnbob0dHKKgDc,3352 +torch/include/ATen/ops/index_fill_compositeexplicitautograd_dispatch.h,sha256=Dcyf5OE5no45rVa-wSKjiQKjpEF47fy9eDLzHShCsG4,1800 +torch/include/ATen/ops/index_fill_compositeimplicitautograd_dispatch.h,sha256=8xu8vsMBY5K-3LioE8MT1_hg5Zh-YCTB_XI6HfvYy_A,1466 +torch/include/ATen/ops/index_fill_cpu_dispatch.h,sha256=0DpqbB7yHf_ophHYJhNxeuiqoQtdRG87rxwtW1lk62E,1160 +torch/include/ATen/ops/index_fill_cuda_dispatch.h,sha256=pgayRlrQ_f3zHnL4tB7yl4EPVAS-ReO1rTnJ2qEUWN0,1162 +torch/include/ATen/ops/index_fill_meta_dispatch.h,sha256=jEj5x-xgAGmEg3CRIBlrcXaorGVctBk_PBRBGHpMSxA,1162 +torch/include/ATen/ops/index_fill_native.h,sha256=uu1nCP2DlrQC7hZWUeoyDNHrv2DPv93SrZEG-hytOf0,1980 +torch/include/ATen/ops/index_fill_ops.h,sha256=JpcJJK6rF4_0k1isJdIvzB4lw6YvhHowAoSvvWnlyOo,8601 +torch/include/ATen/ops/index_meta.h,sha256=5S_h461qMH4jxskr3Fq_tAhItYCbriTDeA8Z-bFsaEQ,1724 +torch/include/ATen/ops/index_meta_dispatch.h,sha256=XrwxDDDRynUi1n8ta0AaYNqHhr1oduDbL21k4ytb2t4,1298 +torch/include/ATen/ops/index_native.h,sha256=09Lmtqaqa085HGjGWdW8AWGAoMN6DScig4af2Qx7lVs,1017 +torch/include/ATen/ops/index_ops.h,sha256=bwyezNPt29E34-RsJEJaZ8gsYxpPH_0DB36ytz_xz5w,2194 +torch/include/ATen/ops/index_put.h,sha256=Ks-6-jJ2eEoIAMJuwQSMfYCQ2BD-scLrmO2oEJuj3hI,2224 +torch/include/ATen/ops/index_put_compositeexplicitautograd_dispatch.h,sha256=mB5eByzJoPYsqozpQdwRznS7nQDjMRbvVBXCdb55LlU,1656 +torch/include/ATen/ops/index_put_native.h,sha256=oxXCba3BBaIXCVie-cbReO9NUREKQxYdyCs8Sy3IEJw,1180 +torch/include/ATen/ops/index_put_ops.h,sha256=hMUbiJ6pgrcc9G4wvOAbxUR1aFm729E_SzTBqjpvcik,3320 +torch/include/ATen/ops/index_reduce.h,sha256=qamOHdKOCypJx9Q9mG0CFV0MYBFRyhNT3OZ9qG6jdb0,2032 +torch/include/ATen/ops/index_reduce_compositeexplicitautogradnonfunctional_dispatch.h,sha256=TwWtHcnGfcnEVTeeYSj-X58QCKxW4-vKFw_70vQfBc8,1337 +torch/include/ATen/ops/index_reduce_cpu_dispatch.h,sha256=OwK25FXCWKylR0Q7nnM2s3smGdtwmx7pjD8nUq_-LF8,1661 +torch/include/ATen/ops/index_reduce_cuda_dispatch.h,sha256=9B3tVtyEAIKQG6BX12fsfWkvjBat_F8WLuVe1qkadRs,1663 +torch/include/ATen/ops/index_reduce_meta.h,sha256=yNr1Q1yztfsj21p-uf7536-OLQG_xiZaHn-vTfbnmYI,1379 +torch/include/ATen/ops/index_reduce_meta_dispatch.h,sha256=f0PHMzb771qSC1a-Mpe-4vqvJuODpN8LN58EmXrsWYw,1663 +torch/include/ATen/ops/index_reduce_native.h,sha256=93nmh87vvzHNLo0w0jXX8I_b6Yz9YfAuuyqWHwSFlZc,1250 +torch/include/ATen/ops/index_reduce_ops.h,sha256=bbqTJ0RXFEHFX8303ac8e0raRGNP4YKM9mQFhSXsSKg,3461 +torch/include/ATen/ops/index_select.h,sha256=FiMwDIdXzfSAzdDfnnSYHAJOaqZH8Qg4pdvMVlGWnOo,2436 +torch/include/ATen/ops/index_select_backward.h,sha256=slOc28DdgfNC_ubjBAmKz8yPjdS-jmQbQyrHWULP2-w,2102 +torch/include/ATen/ops/index_select_backward_compositeimplicitautograd_dispatch.h,sha256=jLGWp0uhJCSVaT2Dr9O-Eb69R6HVB4y1ghSepfMboYk,1247 +torch/include/ATen/ops/index_select_backward_native.h,sha256=gffJaodvfLdw70boye5nj0NQfgp5ddCdix0Hf5kcWI8,823 +torch/include/ATen/ops/index_select_backward_ops.h,sha256=8ME8cNRChaXiYNEv59CQ7-f8iPzfTOLas9IEI8IXsH4,1492 +torch/include/ATen/ops/index_select_compositeimplicitautograd_dispatch.h,sha256=rcy84dSmOJx15-QEvjVkrOv8XqDSe5fafG4lYF7aRso,1322 +torch/include/ATen/ops/index_select_cpu_dispatch.h,sha256=S7WsUdWsPKFvV4ZqB8rgCt_s5VoXXqlvTGadHgLZ8EY,1266 +torch/include/ATen/ops/index_select_cuda_dispatch.h,sha256=daEAg9AsS9_4NWm-lDsIppklprjd0l0_WURns5eAw28,1268 +torch/include/ATen/ops/index_select_native.h,sha256=G-_P1tWs31OBVpHYNF8dX2JWenAE3bK-8E1FuxPKUV0,1819 +torch/include/ATen/ops/index_select_ops.h,sha256=vi3v3gXx9WQ9G6RGymp3_66dKED2zZqBP8Qp5e8-ZaE,3562 +torch/include/ATen/ops/indices.h,sha256=biiLfebFduEOWdRsTTQD2akmfFG9VaEQkYMJaB0BFGM,758 +torch/include/ATen/ops/indices_compositeexplicitautograd_dispatch.h,sha256=GpSLJ6mt8tofwWsMxD2B3_4eE1qmLzWKQQywRVXrGxc,1019 +torch/include/ATen/ops/indices_copy.h,sha256=_p8Qd4y6N1_LMJnpHoDqe6K1xgdOC17PBkmNHcvjFms,1341 +torch/include/ATen/ops/indices_copy_compositeexplicitautograd_dispatch.h,sha256=oG5_Mhjt7Pc1hO8cMaCv_TF9jF8q_xRxkiYdnLJ4cs0,1133 +torch/include/ATen/ops/indices_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=oUW-_Gg9sZICspCkDSGLWgXrpORttFhhkykL7E9ejTg,1050 +torch/include/ATen/ops/indices_copy_native.h,sha256=Jhrp4gw8IkIbBSYiCA72FjEDgurR-O55c00rCo3dZps,820 +torch/include/ATen/ops/indices_copy_ops.h,sha256=BX1WBcoe3Q09d8AiiTwewazDEUnR0fNW8GKLcipvXxw,1837 +torch/include/ATen/ops/indices_native.h,sha256=bQmbcba8oUdpMoQM1qhnLTj1uwcM0nAxXRLPsfVGma0,801 +torch/include/ATen/ops/indices_ops.h,sha256=2twPl1-5RUgcCS5G-7XOgwBJoNNRb0Q0WGj98BM-On8,1220 +torch/include/ATen/ops/infinitely_differentiable_gelu_backward.h,sha256=6CL9ib1hNQQstISRcupwbnz1Kb53D-hIe8uR4X2Hn9U,1067 +torch/include/ATen/ops/infinitely_differentiable_gelu_backward_compositeimplicitautograd_dispatch.h,sha256=P0swEBGplvXoxxCPjL4J402pAfL6iwPoGpo2FrBsQxw,1076 +torch/include/ATen/ops/infinitely_differentiable_gelu_backward_native.h,sha256=Q6Xy5dnCV9Ey-5P0vnjC8Z6ayRZ_aAVluCrM1yGxMHE,788 +torch/include/ATen/ops/infinitely_differentiable_gelu_backward_ops.h,sha256=1ej29AVmtzPcIK2KqYr02DeEVjnw215g8q7tcMoacdA,1393 +torch/include/ATen/ops/inner.h,sha256=6VRopWehatz55WV_ppIbtt1CdsaK56oJ3pQpdnlojNo,1412 +torch/include/ATen/ops/inner_compositeimplicitautograd_dispatch.h,sha256=xQifvGdPeEXR5dQyZzdc7z6MfMJq_k8Qn4Lm0WpEi6M,1250 +torch/include/ATen/ops/inner_native.h,sha256=3lz0YaoHG9Cq4LwZvlSyNdQZFA5oCuTdm-OpezMcN2o,858 +torch/include/ATen/ops/inner_ops.h,sha256=WVHK0JxecEEYBCiq3tHrbrZ4eUORBh31ZnNXS1g-HVU,1967 +torch/include/ATen/ops/instance_norm.h,sha256=V1tCUnvCqvoSUY18d1pyWHT5svNsELNipScxmjCyy44,1408 +torch/include/ATen/ops/instance_norm_compositeimplicitautograd_dispatch.h,sha256=u3rK6Q5D0koH9sDa14e_qE84teW3luBNOl8jxw9YC-A,1282 +torch/include/ATen/ops/instance_norm_native.h,sha256=70-KXX4cnVxleoMFw3yMG1sktxtfIrO8QrhHVtsOgTo,994 +torch/include/ATen/ops/instance_norm_ops.h,sha256=IYdXEjZohxdjpnMDzxn-nc6lQgGyqJzlZAqUeZDoocE,2065 +torch/include/ATen/ops/int_repr.h,sha256=ycMZZTaTzKFhkPObOnDrFzauNruY1VxCBJ4_KWH-ijg,1301 +torch/include/ATen/ops/int_repr_compositeexplicitautograd_dispatch.h,sha256=fIIwBnoGsN5y1Lhg_8R90GgTBSFKrTocroCzS4z89iY,1125 +torch/include/ATen/ops/int_repr_native.h,sha256=EUKLTh4zazD3MuOy4IzYPz0e141Y4g1ryASQvggv8HM,897 +torch/include/ATen/ops/int_repr_ops.h,sha256=0uupzEn212-x-NvvVhYjQnvK9QP8v1_3aYZJFPujVAQ,1813 +torch/include/ATen/ops/inverse.h,sha256=pRWZUdhSC8wuz0E8rujCAznVF9RRRGcHtjHKJLz0PdU,1291 +torch/include/ATen/ops/inverse_compositeimplicitautograd_dispatch.h,sha256=sa_HVkfj9FO-zSrIGwXs-PReI11tSTFfKUW4aXemRgY,1178 +torch/include/ATen/ops/inverse_native.h,sha256=PH9-A5moRWzDHPcMU3uLx5KR15Zhh5oixC9hLwKu1_o,810 +torch/include/ATen/ops/inverse_ops.h,sha256=F3OKmZrWLuu7IeCtPZvXWvqFjVkpHsEdulCDQONj3AA,1807 +torch/include/ATen/ops/is_coalesced.h,sha256=ZW1-5Et3yx3yR42xodhOWhSHBf9u9xsx8_21e7gR2gA,763 +torch/include/ATen/ops/is_coalesced_compositeexplicitautograd_dispatch.h,sha256=hUlIkuWnqTJQhVbUDdNjY5jTT-MTBvaxFsKyP0OSipk,1018 +torch/include/ATen/ops/is_coalesced_native.h,sha256=l3N5JaXgAqKZQw4xe-Ei1Q7dTaRCWDjJfzyu0HVQaeo,799 +torch/include/ATen/ops/is_coalesced_ops.h,sha256=6mhh4K0KKdQEQdYlTG81pVx5L54FsyGqcv8AoQclrDw,1209 +torch/include/ATen/ops/is_complex.h,sha256=xI4aDfwm0GBVP-RjfC8VJETrSS1aMa1hWgH3i3lGGt4,910 +torch/include/ATen/ops/is_complex_compositeimplicitautograd_dispatch.h,sha256=QjufQ2YdaNIIpSfVy8q1PCdPXTiYKrHJnXl66JIJXSo,1016 +torch/include/ATen/ops/is_complex_native.h,sha256=K0z1XMOTkS1dnoPlj9KLX8WBHf0slUJ0y5SnzCgKrpw,728 +torch/include/ATen/ops/is_complex_ops.h,sha256=Rh8ByZgdXyF0GUP74ZKDa1B82HNFq8D4He6x5FxODp8,1203 +torch/include/ATen/ops/is_conj.h,sha256=YwTCcx5souEsObQYIFNDtdvbzaQbFc4DR_e8z1rw_e4,898 +torch/include/ATen/ops/is_conj_compositeimplicitautograd_dispatch.h,sha256=jj6s52CvUa2vzY8QP-aAzTCtCCenqw_IfCqtOSQKNbs,1013 +torch/include/ATen/ops/is_conj_native.h,sha256=j7u5Rb8BGwYcdsF9s8utwE4gxjg4v8igJj1_bJrzaZA,725 +torch/include/ATen/ops/is_conj_ops.h,sha256=VfXZw3JdCfKItAhvFEFLqoakVcYZ9BxWZLYqqaD-XhU,1194 +torch/include/ATen/ops/is_contiguous.h,sha256=v8QjGuWBzeWKWt70HKmTU5QH9FauY7KsCvlA1kV2JQ4,764 +torch/include/ATen/ops/is_contiguous_compositeimplicitautograd_dispatch.h,sha256=W7ygfJNr1Arx-22dK6QQ86xZa8HouLTRCBxzks0XFXw,1106 +torch/include/ATen/ops/is_contiguous_native.h,sha256=UKYScvs3zkAW_sgelr6gOexaGmljwJFE6JcXgpY1kyM,818 +torch/include/ATen/ops/is_contiguous_ops.h,sha256=sknPt-kpX65jEMoU6a2Pc2oWC1kWgsXOlutM1ClLs3c,1864 +torch/include/ATen/ops/is_distributed.h,sha256=imL-wiVkVCUHTGLBaJY39k1jnnUmdmn_xuVHe_BvXtc,915 +torch/include/ATen/ops/is_distributed_compositeimplicitautograd_dispatch.h,sha256=61V8EBwrJcd2h3csREc6vFPc_Y2CTfIFgkgmobEcrA4,1020 +torch/include/ATen/ops/is_distributed_native.h,sha256=mXFsndnWH3Q2eqkuKEIHGkT3PBXYnznwoVUNFcjIM2s,732 +torch/include/ATen/ops/is_distributed_ops.h,sha256=2tPcfGq5kkcBz3j8D1wv3hnoLYrpDPbKT27vAhsmJK0,1215 +torch/include/ATen/ops/is_floating_point.h,sha256=4IADbedwoa2UqqHiQeEQUL2uFFU-MUEME2QPMhivF1k,938 +torch/include/ATen/ops/is_floating_point_compositeimplicitautograd_dispatch.h,sha256=H59X-DeBoOABV4H6mqpXGnyXVAsxrZ-r1wqebXfhaG4,1023 +torch/include/ATen/ops/is_floating_point_native.h,sha256=yYLKOKzHOrFyPwuOXJi1TuzDcbH-ADjJ3gH0yc93Q_0,735 +torch/include/ATen/ops/is_floating_point_ops.h,sha256=C2s13gNQvqiM6hJiJ07rYwqMRRZKL75YX0o2UutF7Z8,1224 +torch/include/ATen/ops/is_inference.h,sha256=MrBFh043o5hdUsAtcM0NRa5uMb6JDy-mh4iCu4TlKHU,918 +torch/include/ATen/ops/is_inference_compositeimplicitautograd_dispatch.h,sha256=-6wpdSiNuSlOn8e8_GU7NztI15BJrqXvw_U6HVrCraE,1018 +torch/include/ATen/ops/is_inference_native.h,sha256=raRGdsoG9cXjOhou_72jDySWuYgvuOa9LEazG760ekE,730 +torch/include/ATen/ops/is_inference_ops.h,sha256=_1MgjhX7cIwaxuapmIDft_bT1M1AyVfnHwSo8ezJKWk,1209 +torch/include/ATen/ops/is_leaf.h,sha256=6p9jCL1uRs_CR0zyAvD0sNQ-p9VSV0ndQWnK_2ikYfk,758 +torch/include/ATen/ops/is_leaf_compositeimplicitautograd_dispatch.h,sha256=Hkn_EvMg2BcCzh8zvq87y-cC7FzvTyo4sPsiQMsOSvg,1013 +torch/include/ATen/ops/is_leaf_native.h,sha256=gPGiIQPdnneaHuU-dv6PKdOTh0lyjTs9GwFrJC14nrc,725 +torch/include/ATen/ops/is_leaf_ops.h,sha256=A2BFI1ADvX3VxxFRP8C9--vgkm0_BnG0RMSVcBjUdXI,1194 +torch/include/ATen/ops/is_neg.h,sha256=2NqwBkbwXrU_u3JxxYA9TesF2_E52hM6QhwoTl1sPEE,894 +torch/include/ATen/ops/is_neg_compositeimplicitautograd_dispatch.h,sha256=p2wU9Nuzx-3XJ-2Lh_CCTKdDN4RPWcwk-73akS3batg,1012 +torch/include/ATen/ops/is_neg_native.h,sha256=nV9-jkWR_jB9zqUZlW2f0Lm-y4lstQMl1pVmrWJi0vw,724 +torch/include/ATen/ops/is_neg_ops.h,sha256=Lj-KPMw9zkqyspOJH2maU7D4v9MDWNl8CfEYpU59BIc,1191 +torch/include/ATen/ops/is_nonzero.h,sha256=du320jUzSUkWBI59XkWtRENJnqAfjvYXK-s2TWuLO8c,899 +torch/include/ATen/ops/is_nonzero_compositeimplicitautograd_dispatch.h,sha256=YPhPhFiHvnixH4F2ZxHCGLSqhO0eaKK30NSHZq8XDrU,1016 +torch/include/ATen/ops/is_nonzero_native.h,sha256=fA9ymsxDYnv3bmYoUMj45W3yTi2lQ4MoNeBf2gsGzm0,728 +torch/include/ATen/ops/is_nonzero_ops.h,sha256=akpknsqDvhur33b7DYwMh2QsD_aeqix6lfVXt6T5HpQ,1203 +torch/include/ATen/ops/is_pinned.h,sha256=RFCwbemUy4l5PqvKtJZyjB42LtOaEvSo9WMQNaKHhuc,760 +torch/include/ATen/ops/is_pinned_compositeexplicitautograd_dispatch.h,sha256=mEirh2dRfyF7Y7cVxTq-CqiKsAclQQ2cq4ir7G9i2U8,1066 +torch/include/ATen/ops/is_pinned_native.h,sha256=EoZbd05jbb4Ly-BNV00lBF_IiAeccF2SzCQQCpJHGIc,1011 +torch/include/ATen/ops/is_pinned_ops.h,sha256=8r601Z8R2ohjtOXRJrcsmHx0hiufqlD6GjoPWFQiS3o,1322 +torch/include/ATen/ops/is_same_size.h,sha256=YY6JTmKvWO4vRcmqywTOhKd1yEQ82IKWutIKXEkJyhg,954 +torch/include/ATen/ops/is_same_size_compositeexplicitautograd_dispatch.h,sha256=4yVtWXLhSiNxmB-ZMbj6_jf6WHfbhcpf9Rz6nhARD5E,1044 +torch/include/ATen/ops/is_same_size_native.h,sha256=IgDqoTbfvWejDdZhPaPE1bHCtbt6AQzB5p20Jz6-EkE,843 +torch/include/ATen/ops/is_same_size_ops.h,sha256=ublGvFsLWwlhVA09TaL84h_eGcpG413qRfQ4O2GDXyk,1295 +torch/include/ATen/ops/is_set_to.h,sha256=-52DcqLN9voUTp2BcCDm6gYrjzlCbBRq1ZYVzqEF40M,760 +torch/include/ATen/ops/is_set_to_cpu_dispatch.h,sha256=_l_1fXjCdi-Bv1R426pp2bqKhQSCyEle_3fkrKKgAT0,998 +torch/include/ATen/ops/is_set_to_cuda_dispatch.h,sha256=vL6qgiFhkYwg9Sc21o4HKK9fIRiDq3CMpvJNTdXB29E,1000 +torch/include/ATen/ops/is_set_to_native.h,sha256=VcC0hPObWRnbl1HI7DrbjrCGmCjdWDadPp3YWpa4GKk,754 +torch/include/ATen/ops/is_set_to_ops.h,sha256=C2vPudmTX__mrja4NovmyJXjJ9iFxq80fehzM1TBIxE,1289 +torch/include/ATen/ops/is_signed.h,sha256=tcQ35vAA00pLtgAdgqkpbrHyS8gnRmwWU_jiG3Xus5Y,906 +torch/include/ATen/ops/is_signed_compositeimplicitautograd_dispatch.h,sha256=sgJXH_giAQDghHd8wrsmMfI2WF4pwk9lNIu99p_Ayho,1015 +torch/include/ATen/ops/is_signed_native.h,sha256=2pdzOvBDzuV0muVIwbYhYvhq2p6LUJeEAkBQByLJqk4,727 +torch/include/ATen/ops/is_signed_ops.h,sha256=2CSJ_2wRsX-VDHoERaYVy-ZmWCONG3JY05gOqoNBOaI,1200 +torch/include/ATen/ops/is_vulkan_available.h,sha256=mFdqi6hWCHywLPZarfzpqGtewj3LDxIlBcs83i_KrXI,897 +torch/include/ATen/ops/is_vulkan_available_compositeimplicitautograd_dispatch.h,sha256=tVfzrVDeJ0ZF317z4WyUUWuHUq-gu50Y9-DReBL7oss,1002 +torch/include/ATen/ops/is_vulkan_available_native.h,sha256=XgHjC0aiYvMBQmlkGPEThqaRIbj1z0jlPtGvxQoljVw,714 +torch/include/ATen/ops/is_vulkan_available_ops.h,sha256=PIsTRqyHVjFIUhxKdkkTpgQAvij8FvSl0u_EAPwK8Nc,1153 +torch/include/ATen/ops/isclose.h,sha256=-8PBlEtOMJEJOjkAbsxbIg9oEWXeELkjpv6b9iDa2DA,1083 +torch/include/ATen/ops/isclose_compositeimplicitautograd_dispatch.h,sha256=Rld3SOMcLpjog3VPgNI2Oc7WCYjJdGC5WvpG4IyUMH8,1105 +torch/include/ATen/ops/isclose_native.h,sha256=Rshvo3tkn7ojoINHclQOIbYVq9m3t-i2la2YfL9OpA8,817 +torch/include/ATen/ops/isclose_ops.h,sha256=ivRXVQ4o1feQR5ChrobS6zk9S2htBsAYOzNEsYL8YD4,1464 +torch/include/ATen/ops/isfinite.h,sha256=5ToWsv0-Q-_5EChjF9Eeo-cb79RbjbG3oGY24R8R54I,899 +torch/include/ATen/ops/isfinite_compositeimplicitautograd_dispatch.h,sha256=GZiqnUJSOFcdIyuHt0r6YzcV5Bllx1uLdLdMjonh6a0,1020 +torch/include/ATen/ops/isfinite_native.h,sha256=_u-MSvWeA8nF0Jk-_MZmf85GSjFjpC-jGQYQ0ayWIYI,732 +torch/include/ATen/ops/isfinite_ops.h,sha256=vaZ-U87s4wAkB63r8zwQWIqdRiyYwnRFXiOp39cL7kU,1217 +torch/include/ATen/ops/isin.h,sha256=WhazdlD_Opdn7LuG4A09qTWcZlO-XfCEyVTItdSRXDE,4246 +torch/include/ATen/ops/isin_compositeexplicitautogradnonfunctional_dispatch.h,sha256=Qe13jK0y2LvbuO2G-sAH7XbcIltKxbnsJvfMKu_KIQE,1393 +torch/include/ATen/ops/isin_cpu_dispatch.h,sha256=lsT6oOW3z6kmqL5xtPsNRHjFnjzwHHrpV7p7ygmDTQs,2240 +torch/include/ATen/ops/isin_cuda_dispatch.h,sha256=SVubfGLawoH2ppQVDuZVRP05OMYFw3DyreMAm8uPH6I,2242 +torch/include/ATen/ops/isin_meta.h,sha256=fbztCmAgpbgUoxooa5MU6YVS0BbxjIIJlDn0ldMoxMQ,1288 +torch/include/ATen/ops/isin_meta_dispatch.h,sha256=D5ktQImj-v5Hd7-lDFv1deZmvty-sqff66SI_bkIIuo,2242 +torch/include/ATen/ops/isin_native.h,sha256=xB-rEmOmPEjUHnSEP_WCg3RXHORzaOypd_hzwegecb0,1413 +torch/include/ATen/ops/isin_ops.h,sha256=rfm5pWfeuu9hFdUnIutfMl_XmuhyRF_VXsvliZADHWI,5661 +torch/include/ATen/ops/isinf.h,sha256=gypDpC03jA1B4vik9uXFcWd6Uc42CbXRv2LlPHJoWt4,1271 +torch/include/ATen/ops/isinf_compositeexplicitautograd_dispatch.h,sha256=bKqdE6Vai3sIcM0CcfNHkR_6EANwEl38ZOhrJU8yDGc,1172 +torch/include/ATen/ops/isinf_native.h,sha256=TI-grvT35kUJe1hWMmb7XXsvrasd92TZ1_qjzoV_SIc,1061 +torch/include/ATen/ops/isinf_ops.h,sha256=HuWOPetJp37DYsCR60zkssPOeEiE8McCUO2xQvdlqhI,1795 +torch/include/ATen/ops/isnan.h,sha256=77TyLPRerfi28Mfbz7ACkrNvx7Sg87c0lwghJ8iSQpo,1271 +torch/include/ATen/ops/isnan_compositeexplicitautograd_dispatch.h,sha256=AwqiUdjPi7-aruCVfPahUaYe1hIKIRaku5godcXPMRw,1119 +torch/include/ATen/ops/isnan_cpu_dispatch.h,sha256=HVJtU8n3sKIjGr9OQghjM6lU9Z23ek-bNTIEgBKagVU,973 +torch/include/ATen/ops/isnan_cuda_dispatch.h,sha256=vctyu7gU3TY_2JQWYu8FpMCz-CEmh1Cp9HaYrlSAW0k,975 +torch/include/ATen/ops/isnan_native.h,sha256=WsDMzgMMIzxGCDKUE4bLAHq2x9U04vdTUMtrF5qnZL4,996 +torch/include/ATen/ops/isnan_ops.h,sha256=XdC1BkfY6aRhRnQeNxFUGojZafWgsCPLT8Uf-Ibg734,1795 +torch/include/ATen/ops/isneginf.h,sha256=iof4In0F0j-c-1_Xw-Kd3w7pjUIfiO7yNK40Rh4vSoE,1301 +torch/include/ATen/ops/isneginf_compositeexplicitautogradnonfunctional_dispatch.h,sha256=QReQGn0CbxrgaB7o_0v2lSN-PzxSuc1J8ILeeCZkhko,1046 +torch/include/ATen/ops/isneginf_cpu_dispatch.h,sha256=-2QaPawkZP2C31pkXogocXs8tJZ5HIExgoulDvZo5ks,1137 +torch/include/ATen/ops/isneginf_cuda_dispatch.h,sha256=e9Xsl_tsFmQHxCcKtKSPdhbXFSXtVLwSeLL4AlqNpFc,1139 +torch/include/ATen/ops/isneginf_meta.h,sha256=N5qQE5KonmrbHTh9hHxjAPceG7FU8obggG7zEaCh230,823 +torch/include/ATen/ops/isneginf_meta_dispatch.h,sha256=4Dx6mrypjgCIqfRd48sL1cdipVgA5NCfMlgNgqAMEdo,1139 +torch/include/ATen/ops/isneginf_native.h,sha256=1UagMP1SQ01JycJa6oKi8EA4Iocawh2Xlh5YkSJFteI,1233 +torch/include/ATen/ops/isneginf_ops.h,sha256=ei81kyj0f0fIe5KvTjdcJKyFZIkKN_GmzWb0O-igO7M,1813 +torch/include/ATen/ops/isposinf.h,sha256=WLRNW7GNpOR0DyC9ciFiA7YuQfrgQE1634q69c4fJKE,1301 +torch/include/ATen/ops/isposinf_compositeexplicitautogradnonfunctional_dispatch.h,sha256=pPubQ6FYnJ3i_teq9IguUtx8Znb9U95vBGR9-NejlB0,1046 +torch/include/ATen/ops/isposinf_cpu_dispatch.h,sha256=WzV1F_przwXLoEPvWjlz55gads9NLRxvhjXZ_K9wo_I,1137 +torch/include/ATen/ops/isposinf_cuda_dispatch.h,sha256=BptRc-BkZbX2kHsOt5EQqOapZsVl1zmjT7rFynWAKt0,1139 +torch/include/ATen/ops/isposinf_meta.h,sha256=Wbt43lJCcs_ICXWt646GlBkaMj5eJAhFJPAXK9DiyIE,823 +torch/include/ATen/ops/isposinf_meta_dispatch.h,sha256=MRlwyYcBnX6hBgNGQ_7NHkP7iy9lYQFsIaeZB0CEWYM,1139 +torch/include/ATen/ops/isposinf_native.h,sha256=fSWxoxXKNPGGYwfvse_3qQd-dVDAR4qAgFaIMnUqhKo,1233 +torch/include/ATen/ops/isposinf_ops.h,sha256=hp8P_SA6voqbfw6g4LApS7r99ZFyytRoccXrVT-JoTs,1813 +torch/include/ATen/ops/isreal.h,sha256=bGTe-VSHg9TftSCKJtiVjsFrvT2sEgoRrp6LM2FzcvM,891 +torch/include/ATen/ops/isreal_compositeimplicitautograd_dispatch.h,sha256=Jc353OyqBXgmJLYR8IUyw6IWVyIS2UFgnnVX3mJE3zA,1018 +torch/include/ATen/ops/isreal_native.h,sha256=ptkmkB4sShi0e7AagNjvClwYbMHUPHGhPDDz6mErQGA,730 +torch/include/ATen/ops/isreal_ops.h,sha256=5uby9MgEcYx71TAjx7CvWjT3Lai9A8zY4fvMDf9myFc,1211 +torch/include/ATen/ops/istft.h,sha256=Yzjv3QVopjdAt_LowWswshpTDlamT9L5y9bHDfgU24U,1492 +torch/include/ATen/ops/istft_compositeimplicitautograd_dispatch.h,sha256=9Tgl-nGsoUCxkHi8-VZbpdXTB28LZWyFaDI11XuXlqc,1346 +torch/include/ATen/ops/istft_native.h,sha256=MfJ1rPM5bgvL9iMACSA2iz1r8w_PY975VkOmRQuZOBs,1058 +torch/include/ATen/ops/istft_ops.h,sha256=PRxhyMKBPsJoht904kHDJvf3JOE1Vwc1UipHAe24r10,2054 +torch/include/ATen/ops/item.h,sha256=M_CBOXGPchUuvPzFYsD9vuEZWbSuz2Yz3MTjJP12g_o,755 +torch/include/ATen/ops/item_compositeimplicitautograd_dispatch.h,sha256=fU__fqXJsjSZ3HH9vdcEtRedSPJAEStwRwMy2uwjEOs,1016 +torch/include/ATen/ops/item_native.h,sha256=4cjkD8rHfcJVhL8a2GnyYOoA8lXJHGjZthYsHIPr0qc,728 +torch/include/ATen/ops/item_ops.h,sha256=vtZU6i98N49S9LvT761jg5601yg5_axXBufL-LBm_sI,1205 +torch/include/ATen/ops/kaiser_window.h,sha256=isilAV00c5MRgJC2VG1mN5sU4IPYtgqfELXT_ci1CE8,5258 +torch/include/ATen/ops/kaiser_window_compositeexplicitautograd_dispatch.h,sha256=7wg_rjpQCyD8YQFWsSGSPvwmKYqIoG9I8XNWhvcuPac,2516 +torch/include/ATen/ops/kaiser_window_native.h,sha256=sg6GGF0y2guMwldtdB7FcMcMaEo8L-4QfuBCBgc1nBQ,1673 +torch/include/ATen/ops/kaiser_window_ops.h,sha256=TeSIVHxwedxYocx9-wkk9t5g7INbJ3zjrlpeFKN0s_w,5919 +torch/include/ATen/ops/kl_div.h,sha256=83hIlDx7C9fFDZCcfa4OaE8tdEm08nPO6LBLTqlGR_M,1072 +torch/include/ATen/ops/kl_div_compositeimplicitautograd_dispatch.h,sha256=zxBof7Nf3LHnWwrJT_dD9PjnE9rNn5XTUZBsM7QZBXM,1107 +torch/include/ATen/ops/kl_div_native.h,sha256=cjKgIbUNHO_EAl12r4jzmEIR3AfgLAlkK5OxVF0z6Vw,819 +torch/include/ATen/ops/kl_div_ops.h,sha256=a6zf7oZSAU2a47zBWwslq7Dg8dNKph8-uJ8koYxyv1M,1433 +torch/include/ATen/ops/kron.h,sha256=kGIVCkAc6abFhxEUOVWjRq1c_6Pcib3xNF5vgeXymm4,1402 +torch/include/ATen/ops/kron_compositeimplicitautograd_dispatch.h,sha256=XV6Iwbadg4M0_rgZh8ExX4L23OKBfRFiiVq32CT2wI4,1247 +torch/include/ATen/ops/kron_native.h,sha256=9h3bqZZqoKLBKk0N7Yq5r1AxPhB67mGS8DXF6H-3pT0,856 +torch/include/ATen/ops/kron_ops.h,sha256=-YgQbZfQp2vvuCB6BcHFAFBIK11Hfxkp2FHlXYhHYao,1961 +torch/include/ATen/ops/kthvalue.h,sha256=ws_ihJD0AU2UjLSSFHY6akceyssMkje5sEyzonBhNZ0,9610 +torch/include/ATen/ops/kthvalue_compositeexplicitautograd_dispatch.h,sha256=bdHYW7tMi3O0HdKwF6-9G37cnB5qj_V7tjKiPjQa1Z4,1231 +torch/include/ATen/ops/kthvalue_compositeimplicitautograd_dispatch.h,sha256=8FrB7d28o1PKm9W_fAf5-9KbIGWU5d6cl3jmDFNgnRw,1965 +torch/include/ATen/ops/kthvalue_cpu_dispatch.h,sha256=WZVenAAr02TXBwC5sBBkJE3GbJL7-_firfsc6WRN9Aw,1642 +torch/include/ATen/ops/kthvalue_cuda_dispatch.h,sha256=Da2qPRZxqN8OZ3xS_kh1Y-9LQR1wRJ2GPSdFR6nK7wU,1644 +torch/include/ATen/ops/kthvalue_native.h,sha256=02RBJcs0AH5y_GYUh69GatE2zXwcuGtPdcRy_69adSQ,1456 +torch/include/ATen/ops/kthvalue_ops.h,sha256=B8rUwMGSNULR6zCwpXzVDn6uJBhyagdCaFkmfpAyml8,4207 +torch/include/ATen/ops/l1_loss.h,sha256=k1a9jf8A0YzQgXdpluFd0O4EqdfU2As-eknk0BkWPHk,1015 +torch/include/ATen/ops/l1_loss_compositeimplicitautograd_dispatch.h,sha256=AJymPUvlIR9MqtkSSNmnBKROoCRuweUa0F0UVKvqUdY,1085 +torch/include/ATen/ops/l1_loss_native.h,sha256=xyUtLW6_QQsdggIV_nhcmF_Pj1tqjXWh_z3Xmn5hB7k,797 +torch/include/ATen/ops/l1_loss_ops.h,sha256=qv0S-bGah_B1cU7oPah8XTK-c__YwAheKsmOKW7LCC8,1370 +torch/include/ATen/ops/layer_norm.h,sha256=qVPK32H5XXf_JjhxsW4DmAzqIFEZ_ZsX133huSLVf4U,2631 +torch/include/ATen/ops/layer_norm_compositeimplicitautograd_dispatch.h,sha256=jI01jMp18uguzxhw3LifyDkgrpBhS7qQ28Na4p6Ljjc,1429 +torch/include/ATen/ops/layer_norm_native.h,sha256=mnvTtwXqu1xB1HSXdj1I2FJPPXjUyHxnsvIrlbg9Z78,914 +torch/include/ATen/ops/layer_norm_ops.h,sha256=Xy7bSxRDT9m1fQrBtD4uwyziOMWfe7y1_K7DwtpT16w,1753 +torch/include/ATen/ops/lcm.h,sha256=4vThhCCCFB0tx2r6-tvPP49HXMdrJmlvd5BvSbI_E2k,1572 +torch/include/ATen/ops/lcm_compositeexplicitautogradnonfunctional_dispatch.h,sha256=3dujOiSGprHvzvMstZdM4wIKAYKKuQ-m8zEUkbzobog,1141 +torch/include/ATen/ops/lcm_cpu_dispatch.h,sha256=eKKeVSnNRjLDImX0rpK8hTYkFzI7Bb5ZfzT7n0jYY3A,1274 +torch/include/ATen/ops/lcm_cuda_dispatch.h,sha256=cENvljCsOCi2BgBcnjgKjzZGiKr5gpRWrXKqbcok88c,1276 +torch/include/ATen/ops/lcm_meta.h,sha256=5-fPw3Pgip9aa6zU-H3ke42xNGdmAz--9OGisNRcha0,844 +torch/include/ATen/ops/lcm_meta_dispatch.h,sha256=srquQgSVi-NxvdsW1LnMzmgtt2Ubjr-LMny8YhleJYM,1276 +torch/include/ATen/ops/lcm_native.h,sha256=ljxcPeT1HmO5qmweFB9lufXTP6NG_0uOwwGIXdfboXI,867 +torch/include/ATen/ops/lcm_ops.h,sha256=FU9_QoC_vG-FXaKBxkUcv2SmwNalCX24vP6XUJPGFFs,2531 +torch/include/ATen/ops/ldexp.h,sha256=SqGIh2-eKtyWRlm-QfPI7yl3noMYe8cTjy3a0ZE6YTE,1612 +torch/include/ATen/ops/ldexp_compositeexplicitautograd_dispatch.h,sha256=I3ji3YpqEojxSz60SXO5Oxj693OPWlbKRUzwElUhKiY,1326 +torch/include/ATen/ops/ldexp_native.h,sha256=8X_ttcVRv3r3JTpp3m_JdYvi6UUkT6-0D8ypAuji6WU,934 +torch/include/ATen/ops/ldexp_ops.h,sha256=Fcae5btGXCVQ-aYkdfUFScWUHpXy_z4luYTRewvy29k,2569 +torch/include/ATen/ops/le.h,sha256=19VZOqVVuWxuKBwioVNIVpWeL7HI_0fNmO_enauTTvs,2096 +torch/include/ATen/ops/le_compositeexplicitautogradnonfunctional_dispatch.h,sha256=WSQI30NcgnnDYsBmmdBYaa0qdGq7hEZ2XH9PIvVm3RU,1288 +torch/include/ATen/ops/le_cpu_dispatch.h,sha256=ESdwdZ3dR2FS4sD9JYnUGjh3zhxUG_ynCPIJ-9sPW6w,1620 +torch/include/ATen/ops/le_cuda_dispatch.h,sha256=zq2_YhS10bXpTb7o3XOvDdTUvxnetTVf-JBKAzNN0is,1622 +torch/include/ATen/ops/le_meta.h,sha256=9sSCUK1F71kS4jHyOwwn7oMk-UhZguRKBHoGO05iwvQ,989 +torch/include/ATen/ops/le_meta_dispatch.h,sha256=IOQmMLQohyiMFEdUcw03fFAlUwgZ3Yk0IH3cyGW5FkM,1622 +torch/include/ATen/ops/le_native.h,sha256=nRxwPXb-WqrQFwoHNFZ_hqiTTqfJ-cVqBPfLYDtctEk,1459 +torch/include/ATen/ops/le_ops.h,sha256=ZMz2UPN6CtD4weuREmGUFjrsmZFowczPflwuw94e_FU,4455 +torch/include/ATen/ops/leaky_relu.h,sha256=-CLGc7m1qfcfpvDdtFRLDm7qUsf7OOHdp6UHu3onKFo,1806 +torch/include/ATen/ops/leaky_relu_backward.h,sha256=gZf4_ZyUhppyzlqBu-tFD45mz46BYBLKA27HISIBPoA,2072 +torch/include/ATen/ops/leaky_relu_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=r6aY2_i1WLNMMUuK6_Y4hXKzSTLasOdKt4zAQ3oyP20,1145 +torch/include/ATen/ops/leaky_relu_backward_cpu_dispatch.h,sha256=hI3h3YAGs3XuW7oXyTubFwBqnFa6JE5RNuPrnCEGFD8,1448 +torch/include/ATen/ops/leaky_relu_backward_cuda_dispatch.h,sha256=vqre75Zx7jRUvG8cg1mHGhbwA50AmoNuJ5QftbMnfZI,1450 +torch/include/ATen/ops/leaky_relu_backward_meta.h,sha256=-NZNhWUdiS1eDHXWd4ZCDFDH04W_7QFBAXr87tAX3u8,922 +torch/include/ATen/ops/leaky_relu_backward_meta_dispatch.h,sha256=XEoRZ1Ah3rleU0AS2uJDkU-ELg3V2-4GQv77ijnpB4w,1450 +torch/include/ATen/ops/leaky_relu_backward_native.h,sha256=P9eNYOd-Jhtw5sZBi4pbTqPQjWM6GQKkuaPBkfWMZ7c,984 +torch/include/ATen/ops/leaky_relu_backward_ops.h,sha256=ZQLlgoUVr2-9c6mzru1hB0sPtWpwsKL5UBvl8QzB0Fo,2493 +torch/include/ATen/ops/leaky_relu_compositeexplicitautogradnonfunctional_dispatch.h,sha256=oTTwf3vV_rlfRVs6vqgveLPJ9UPvtM2_Axu6IKk-XsM,1183 +torch/include/ATen/ops/leaky_relu_cpu_dispatch.h,sha256=PVYVcXH0vmGIebh7pni8H69p1BoDB7ojYC88sAitCVw,1353 +torch/include/ATen/ops/leaky_relu_cuda_dispatch.h,sha256=2gDaaoN0VFGtuXUdq9xehwaMWWe9DuAITOrCKSL1YiM,1355 +torch/include/ATen/ops/leaky_relu_meta.h,sha256=8geIt0FuoZ_2Xs2ZNMdJr4apgtf4VGCbEPFomrSk7bA,860 +torch/include/ATen/ops/leaky_relu_meta_dispatch.h,sha256=_JaiWSEnfjscrGVN23NJc5sJ1j6DUSyViOtETKBxF4U,1355 +torch/include/ATen/ops/leaky_relu_native.h,sha256=H23MHGgMYV3cFkA7W1HVH8cAi6Xr6Yj3geORjK0rYEg,1249 +torch/include/ATen/ops/leaky_relu_ops.h,sha256=Ac0ctgrObbYc3jAADZei4CCIHNdQJaBffyEd0gJOqXc,2690 +torch/include/ATen/ops/lerp.h,sha256=cV1A3CgmYqbIxUBW6j7qf_AHb60f8mK-DQ5HCzeRV2I,2398 +torch/include/ATen/ops/lerp_compositeexplicitautogradnonfunctional_dispatch.h,sha256=tbwm2obIQWAM_mqcKMOw4uVjgk7daIvtlKFmWXZ2MHg,1396 +torch/include/ATen/ops/lerp_cpu_dispatch.h,sha256=j0dcjawLFY1Cn0qZWWZ8o3nB42Fa2THm2VvkvEESsUI,1836 +torch/include/ATen/ops/lerp_cuda_dispatch.h,sha256=VeWnSEjz4ezKT70LvY_9YCgGowLXA6XvR5X9U4fIWHo,1838 +torch/include/ATen/ops/lerp_meta.h,sha256=FWska9KUKFzIcLfW7nShwiKmkQjW5tL196GxQb_QfUg,1043 +torch/include/ATen/ops/lerp_meta_dispatch.h,sha256=ZjL6XVFv0pQTzQTBlTPMMdtUbqE002ZHRBJJEiZj5OM,1838 +torch/include/ATen/ops/lerp_native.h,sha256=2B-Qh3h5JSwM5znXFtez_DOOZjNtFl9xwQpQW7214ZA,1103 +torch/include/ATen/ops/lerp_ops.h,sha256=vlztqvQSgLaVewjEby7Ry0FFPGiS0-K_ehNAbFVWKdE,4989 +torch/include/ATen/ops/less.h,sha256=TaK3EUbj54zdC6t5fEKctgzBl4syqn0A2P_PoKFr1ds,2134 +torch/include/ATen/ops/less_compositeimplicitautograd_dispatch.h,sha256=daH3ip2_gyq5VLdE_UskyunU04o6XEFZbVr04E1ob84,1680 +torch/include/ATen/ops/less_equal.h,sha256=yJBNuQ2UY6t2pCDVSN8Vmw-2FP1F50qEHHLPbzv4vf4,2248 +torch/include/ATen/ops/less_equal_compositeimplicitautograd_dispatch.h,sha256=ShkgZRScfhJgLSs5uHQPVc5azAAdzqITZV9kmzMhDTQ,1728 +torch/include/ATen/ops/less_equal_native.h,sha256=zr9b49YifeXmmdTjF3yIMZg-lvnRClPzZBneiCUDmU8,1222 +torch/include/ATen/ops/less_equal_ops.h,sha256=IJjNdOIJbN49mbSoo00PVio8hp0KlO41JVCi4r1C0t8,4599 +torch/include/ATen/ops/less_native.h,sha256=4r3FR6IRUXdRtsgi37yF8cyvSVnG9eLQjKdaXPmcskA,1186 +torch/include/ATen/ops/less_ops.h,sha256=KgbZ94sD8_7MLN7mxFwj_7Z-zwWTd3UcavGgPYMsPs4,4491 +torch/include/ATen/ops/lgamma.h,sha256=AvNeL1aLSbccWnwoTaOWG1wSZy20Q2yMhXwR0DvLLrQ,1281 +torch/include/ATen/ops/lgamma_compositeexplicitautogradnonfunctional_dispatch.h,sha256=fs_JZBCBJfDMBuDjtLcmBS8Wa0yX6hThZ5Vm21sTmV4,1095 +torch/include/ATen/ops/lgamma_cpu_dispatch.h,sha256=zT_rfENZynhi80uTsSezmONosqKulvCxUcjE5ctUD4A,1182 +torch/include/ATen/ops/lgamma_cuda_dispatch.h,sha256=IkOFjnafoj6Tw9wCfguphdAn6L3dyD3UhNrzqaMWEJM,1184 +torch/include/ATen/ops/lgamma_meta.h,sha256=MQ44SPZgk1x1G1mZxS7KDt4rePmZ46KBxS0JZwMnu7I,821 +torch/include/ATen/ops/lgamma_meta_dispatch.h,sha256=CimaogXH3Yd3d2-J4eBfo3GVntPJA7WVgT-6qCDjFQ0,1184 +torch/include/ATen/ops/lgamma_native.h,sha256=hpsGgP8cYDAXUBR1CkajzAe1Zsf0sKlUHiIZ2ctsFWo,850 +torch/include/ATen/ops/lgamma_ops.h,sha256=vzjaqK6UdW3uSxZ75IVattiTYJ84CIUr-uNHUwtUSHI,2300 +torch/include/ATen/ops/lift.h,sha256=lmY_MR-QmdqfcxtzuQrSvmQ5WgZbuzTV5tBMb0cll8s,1261 +torch/include/ATen/ops/lift_compositeexplicitautograd_dispatch.h,sha256=a_onejlEgkMEhPoN1okFy6-odh39wP-2M-7Zf6BISeE,1169 +torch/include/ATen/ops/lift_fresh.h,sha256=od7cAqJbhdrShvmOPiYF55vFWhcVHKwaVhE5zdvW6ZM,913 +torch/include/ATen/ops/lift_fresh_compositeexplicitautograd_dispatch.h,sha256=4RHH_A_PHR8pUF-FAKeTRhtCgjwGmaD1komeePICyF4,1022 +torch/include/ATen/ops/lift_fresh_copy.h,sha256=I-NX-JmAVvUbTb2nqekp2ePTfmeKXGwuJjaW21i5dks,1371 +torch/include/ATen/ops/lift_fresh_copy_compositeexplicitautograd_dispatch.h,sha256=R9PtKEeb_4YPfSE9_IUpEZvFvcRlI1-oa_HYqtYuBP4,1139 +torch/include/ATen/ops/lift_fresh_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=XUCNNl5fEbVM5JkgHaO3LggULTUeqNMRcjeZnwAndWo,1053 +torch/include/ATen/ops/lift_fresh_copy_native.h,sha256=SeFk8VKnHQy2uYpRoFXHX85skS91wm4EE7973ZFMvEY,826 +torch/include/ATen/ops/lift_fresh_copy_ops.h,sha256=c6owk1ZThAwX817C443bW3K8YrRK4o0VzMoZjWBhO8s,1855 +torch/include/ATen/ops/lift_fresh_native.h,sha256=m2p0jxvIHFSzhQw-kqbqH-efyYMhZyytY-HGmOFnm88,734 +torch/include/ATen/ops/lift_fresh_ops.h,sha256=ATFEMUKzTc267tpBs_MnUtqxoqkXPQu0ryy5FYgE1Do,1229 +torch/include/ATen/ops/lift_native.h,sha256=wn7cGshZrMEBJTDC-KERf9bKp_AUTsmqkQHkZhC7G2I,804 +torch/include/ATen/ops/lift_ops.h,sha256=AikcYovQ71v93GeX4einlF9HYEWw3fI8v6RdeNqSBC4,1789 +torch/include/ATen/ops/linalg__powsum.h,sha256=74f_pFuwe_QXKww_dSHggG7aHm7KlmKJgnqT3dK8Njk,1172 +torch/include/ATen/ops/linalg__powsum_compositeexplicitautograd_dispatch.h,sha256=GKVHdtgZcKhsGGBqKIcWu8hHg3URBlmMoxZXdhnqbpA,1170 +torch/include/ATen/ops/linalg__powsum_cpu_dispatch.h,sha256=QmOSXyNk39nbBmbbVf7rxD9xtNmLXAqTFxXYQf7W0h8,1126 +torch/include/ATen/ops/linalg__powsum_cuda_dispatch.h,sha256=o0QSnlS4y_6J8DYL3v0fYvkRnRApf2Io0Z6PNn_oqyQ,1128 +torch/include/ATen/ops/linalg__powsum_native.h,sha256=7F81_bGfeYKjhxyz69NgWqLrpKm-TsMK4sjm0lvucbI,1093 +torch/include/ATen/ops/linalg__powsum_ops.h,sha256=krWNNuDD1WeiIWh6fvQy3WoC3NV3xH8svmBA6PkBsd0,1610 +torch/include/ATen/ops/linalg_cholesky.h,sha256=x2zwvMMkQ74N2YJrMp1h47S1rFgpD3FB-i8V1jiGd08,1497 +torch/include/ATen/ops/linalg_cholesky_compositeimplicitautograd_dispatch.h,sha256=LMDISHf4MZn8uscele95Z0Xw2sm85S_BYuhSLK_aVyk,1250 +torch/include/ATen/ops/linalg_cholesky_ex.h,sha256=660E56_DFGHmvbzYvBS1r22D2eooSADJnQll-jbqLFY,1915 +torch/include/ATen/ops/linalg_cholesky_ex_compositeexplicitautogradnonfunctional_dispatch.h,sha256=uyD3dRPDXzKPgwLxUVoBNMzbqAaUCluyH_JVxpfqsUk,1124 +torch/include/ATen/ops/linalg_cholesky_ex_cpu_dispatch.h,sha256=WyrhGxEdJ8Vs5vNaTroswiem7anacRyqFsT15qyVWmA,1397 +torch/include/ATen/ops/linalg_cholesky_ex_cuda_dispatch.h,sha256=uv_dPKUBOhXV9ipX5-AoCKLSovHNB9_GMpEPgbT00ME,1399 +torch/include/ATen/ops/linalg_cholesky_ex_meta.h,sha256=aogo9AD55KY1d0nzb-wXYO3ZULg9bqzSfA09H66jyZ4,864 +torch/include/ATen/ops/linalg_cholesky_ex_meta_dispatch.h,sha256=A-SeRYJ8OKryvZi4D_dW0cfm2IEhk8tKT-VXxIAWT-g,1399 +torch/include/ATen/ops/linalg_cholesky_ex_native.h,sha256=kbVierApm4ykLBN-1dq7VBlUtCVouKJ_lU9vNVP6dUQ,940 +torch/include/ATen/ops/linalg_cholesky_ex_ops.h,sha256=UWg7OO9Qq-6ip_aVHBvF5QM73HhSTsELWHriDxmsA7g,2361 +torch/include/ATen/ops/linalg_cholesky_native.h,sha256=Rjz1xOS_dGlqRGaxttRBlvJq_yUjJQDiryhfV3PUoE8,856 +torch/include/ATen/ops/linalg_cholesky_ops.h,sha256=0ibWvh2RPlVi7RyMRJ13mtcU5M-2MSLSPZzZt_WalgI,1954 +torch/include/ATen/ops/linalg_cond.h,sha256=zGdqpDlj8BNXjHwXiK8gF-Mz3EQuweJA8eMuri0tb88,2231 +torch/include/ATen/ops/linalg_cond_compositeimplicitautograd_dispatch.h,sha256=3_GyYscnwGetxAr6-T5NBnbCh9fnJSArX-W9eGZ8bPI,1623 +torch/include/ATen/ops/linalg_cond_native.h,sha256=ewDMhWJUUb5uO21sFw7ZsvtFEig_Sfq6ma6EcO4yEyw,1093 +torch/include/ATen/ops/linalg_cond_ops.h,sha256=k02o--ursXip0jZj-5kOICrFXsImL7l5xntF4xadGwk,3378 +torch/include/ATen/ops/linalg_cross.h,sha256=BbmgQx0LzzSvYANpDkbFadBZY-9Ox7JR5gRs9Oa9XWA,1581 +torch/include/ATen/ops/linalg_cross_compositeexplicitautogradnonfunctional_dispatch.h,sha256=xt98a9At8gD2JkkQJfpcJlYd21mw8eJ3v7g-j7-CMcY,1092 +torch/include/ATen/ops/linalg_cross_cpu_dispatch.h,sha256=-8dgrBXaUh5aDEnNRF_oBYxloIaSNng7R-bjoOGvA4I,1272 +torch/include/ATen/ops/linalg_cross_cuda_dispatch.h,sha256=rkY-sP_r8FWL0gvrY2q-4KeMxLE-oOW2QIgsHQOH4m4,1274 +torch/include/ATen/ops/linalg_cross_meta.h,sha256=R-Ld2d4O9bSk9_RXniR1VvyOKgsTzCt9WCb0JFzBpK8,866 +torch/include/ATen/ops/linalg_cross_meta_dispatch.h,sha256=0Zo0GtBYRYqL3oYCSYgpQI0pd_AbWSMy78sp0frtWPo,1274 +torch/include/ATen/ops/linalg_cross_native.h,sha256=lr9JliLKilkv8uRHTBTAmwt0-CzDderS5ug4eagC6VM,1020 +torch/include/ATen/ops/linalg_cross_ops.h,sha256=Et4fJoTSuBZDXS5H9zsJVtcUMwo4WnOf4LbQ4Vtukko,2106 +torch/include/ATen/ops/linalg_det.h,sha256=qOK9s0G_CQoyJUZ85TnBLysPVUqyzkDD6iUpdCT-fnQ,1294 +torch/include/ATen/ops/linalg_det_compositeimplicitautograd_dispatch.h,sha256=mE314h14Oj4dg4T6k69saIUyfvGCLom4VgpaVQB8vg4,1178 +torch/include/ATen/ops/linalg_det_native.h,sha256=nTJzSpZexmzHdPdMsj-xl9sGon6bBRPGxB2z7LdH9_g,810 +torch/include/ATen/ops/linalg_det_ops.h,sha256=KBEZsoISoHT5ybUkzaT9fDt47yRYOcG-C1OYEDxkzAU,1807 +torch/include/ATen/ops/linalg_diagonal.h,sha256=wKXG2ajQJG6SmQPZUHng63UFEMU61zGiS302fdzQMZo,1039 +torch/include/ATen/ops/linalg_diagonal_compositeimplicitautograd_dispatch.h,sha256=eCSgUovp3SN85fxFJaq7mYRbRouM8YHfgH4OcfHluJY,1076 +torch/include/ATen/ops/linalg_diagonal_native.h,sha256=pWV1suH6pSeTEXv4BfBsIxzBzU5wwkSi4-Wr_O0odeE,788 +torch/include/ATen/ops/linalg_diagonal_ops.h,sha256=Ry15c7gyN9b1EPM-0yZngaixLvHL0o38xGqeGIKtNhc,1393 +torch/include/ATen/ops/linalg_eig.h,sha256=jaBjrOkEfvjMLvDormk8NGAm41nRAEiw9pKj8QzgReI,1693 +torch/include/ATen/ops/linalg_eig_cpu_dispatch.h,sha256=VG0p-dx3oQOitdXiZrd9ZDxroLod4dnnAGiTd2kZiA4,1292 +torch/include/ATen/ops/linalg_eig_cuda_dispatch.h,sha256=h8vsyYjznpcFbLXB6-O3b0WeJY_QdwR-ooc1SzNhnuQ,1294 +torch/include/ATen/ops/linalg_eig_native.h,sha256=nIo1ReBx0tMiMjzlKRnbDAdLxR64OtTYRepdqvEE8lU,903 +torch/include/ATen/ops/linalg_eig_ops.h,sha256=v6tM3JQcGHsxpzJaO-M0GXoX1Xm1pqrP4HA_gYB_6sU,2172 +torch/include/ATen/ops/linalg_eigh.h,sha256=NBxfedX7HJWbeWdBU5DqSE_euNcqxhriE0nQVOLihgA,1802 +torch/include/ATen/ops/linalg_eigh_compositeimplicitautograd_dispatch.h,sha256=QWKJfNgbZHJYtOhbwjjtN6FRExRCq8cp6YGtSO5Fhaw,1398 +torch/include/ATen/ops/linalg_eigh_native.h,sha256=ZxqLYU12YUJYizF1NrxBHT5QOKRtM7KsWlSDEXpnzck,946 +torch/include/ATen/ops/linalg_eigh_ops.h,sha256=CcP4ynUIivnPkxmiig4lZjwErfuPtvSLwZ2oq1A3ljw,2323 +torch/include/ATen/ops/linalg_eigvals.h,sha256=1IkJDMb9dHcHy0-IOoV77TMKS1NfXt6ZFpwbjQOlFrw,1361 +torch/include/ATen/ops/linalg_eigvals_compositeimplicitautograd_dispatch.h,sha256=XoYonDKjvxPUHb2TuW4nsgIuegIRKCEpPA-YwyII4Hs,1026 +torch/include/ATen/ops/linalg_eigvals_cpu_dispatch.h,sha256=mTtZO6JlXXDPwIXaOzWbiyv3qHvprrsojF_ZJyunWbE,1093 +torch/include/ATen/ops/linalg_eigvals_cuda_dispatch.h,sha256=ekzpzUEHwrzThPMKZ0AB2_gwHROim6xvHyl7XcbyzGs,1095 +torch/include/ATen/ops/linalg_eigvals_native.h,sha256=ohHvZ06lKIpLcX1YLmDwys88UJjz9K3DwEEEspKTdcM,824 +torch/include/ATen/ops/linalg_eigvals_ops.h,sha256=yAHMkUQRb85BUYmrv_RaA_dMzC3yVATfXPYTlIB0Rp4,1849 +torch/include/ATen/ops/linalg_eigvalsh.h,sha256=jqVwJXVQAcWVR7cORErnsVI9iiPuFf8NynZSeRDx12s,1508 +torch/include/ATen/ops/linalg_eigvalsh_compositeimplicitautograd_dispatch.h,sha256=7f4qG5c3NfkbJNrtooeqjdjAWrr-EnKIlfx011Wzh_o,1279 +torch/include/ATen/ops/linalg_eigvalsh_native.h,sha256=NJusBBvCGAU_PZwH3Z_wVCkdq6a7TgYsos_WaUP_JVg,876 +torch/include/ATen/ops/linalg_eigvalsh_ops.h,sha256=K7YFYF0Qr1YsFWgCLqgLN8pP_1yAct6YKczovCSOh-g,2015 +torch/include/ATen/ops/linalg_householder_product.h,sha256=_YQRA0JQcCGhB4jQ0UnPtE-m_YZwGLudZUEwlyvADCQ,1613 +torch/include/ATen/ops/linalg_householder_product_cpu_dispatch.h,sha256=Y3TJaqf0h8Q6B7YnOPcn8CzyrOfQd49QV57eLjzRSzg,1266 +torch/include/ATen/ops/linalg_householder_product_cuda_dispatch.h,sha256=tyoiewXg9sp2qOjMQXOa4vqGfd7XGMPe6_LBnapuotM,1268 +torch/include/ATen/ops/linalg_householder_product_native.h,sha256=9bAjC4_sOxUF-eT91KfJtkgaTZ0L6MuL4kVxVdohJYI,898 +torch/include/ATen/ops/linalg_householder_product_ops.h,sha256=wMCzogDmFH9kjJvt5vzo4A6W8Q-Yem7gyBeaC7BtAPA,2087 +torch/include/ATen/ops/linalg_inv.h,sha256=9PUeK0zgGfDG9f-nKo8A2Wxphg7xjtVZTVkGGCkGVTM,1294 +torch/include/ATen/ops/linalg_inv_compositeimplicitautograd_dispatch.h,sha256=LstNcxPDx2Z6cuQLXVWCX7W1BG17VrxazcCsWQx0s8k,1178 +torch/include/ATen/ops/linalg_inv_ex.h,sha256=Xfue3sdq82mJTE5R6lzb18WVT0FOU4cKxu6fvFz1I5w,1793 +torch/include/ATen/ops/linalg_inv_ex_compositeexplicitautogradnonfunctional_dispatch.h,sha256=yjymCW-QdMSxSBOk4AepXkSHoIgyfOQnlll-Q-17H1s,1098 +torch/include/ATen/ops/linalg_inv_ex_cpu_dispatch.h,sha256=dXmY7mwsvfWMAe-mFvA91ufplaCuIbQe9YRfAC3_4EA,1337 +torch/include/ATen/ops/linalg_inv_ex_cuda_dispatch.h,sha256=KeeSs7xa2AGbpDZKcrTU3KCmOhIEee78eBed3SyHeQw,1339 +torch/include/ATen/ops/linalg_inv_ex_meta.h,sha256=w8BfQSfy0hDvQ8QcGdvig64mxn9rpjHxP2BR4uHpsOg,844 +torch/include/ATen/ops/linalg_inv_ex_meta_dispatch.h,sha256=abX504tv_-z3s6cYtZLqSgfFHXY8ok3sYOPEApiREkU,1339 +torch/include/ATen/ops/linalg_inv_ex_native.h,sha256=gFVCRLMrsllOp6vnA6nwhDiwnEh7Yn85fkV7oUBymmM,916 +torch/include/ATen/ops/linalg_inv_ex_ops.h,sha256=vbG2bmvSK7Zfw_RgNo4YbvpDMhQ93gfIBJDqv288vJg,2265 +torch/include/ATen/ops/linalg_inv_native.h,sha256=nrfTfn7Q1zFyHo50pg-kicygmC47FsOFpKPuZpZsKDY,810 +torch/include/ATen/ops/linalg_inv_ops.h,sha256=RVm98LlBc0ItgQ_JHveKBPwX7jm7vvoYyazpx4R6Qfw,1807 +torch/include/ATen/ops/linalg_ldl_factor.h,sha256=EzrfKYeOzJzeBfcG8tStlV3eUSEalOJSVf6iwon6Mx4,1790 +torch/include/ATen/ops/linalg_ldl_factor_compositeimplicitautograd_dispatch.h,sha256=dnUji-9watS2s40fCSf7uyxzF9Qj-CbF_erWzwQVAtE,1387 +torch/include/ATen/ops/linalg_ldl_factor_ex.h,sha256=E0JQO1G42QfQF4MXdKQx3YffYZLZWEDBQLPR8Kj3FZ4,2174 +torch/include/ATen/ops/linalg_ldl_factor_ex_compositeexplicitautogradnonfunctional_dispatch.h,sha256=AwCTPCD-AVZIpxQGkMHVpi04jK9-nCukuW-sW25KPmI,1141 +torch/include/ATen/ops/linalg_ldl_factor_ex_cpu_dispatch.h,sha256=8W8js6HFdHKPPXA5xbHSUzu-XBKwgg7XDzQ9UmtHrAk,1496 +torch/include/ATen/ops/linalg_ldl_factor_ex_cuda_dispatch.h,sha256=c3Zus3yVBoVz_RJRtFJoA_aKVzzDOJUyVBhCkuJtDw0,1498 +torch/include/ATen/ops/linalg_ldl_factor_ex_meta.h,sha256=qWKY_-QeCakfQsSnb0I-YuuNb-3JVhp2v63NyLvCvt4,870 +torch/include/ATen/ops/linalg_ldl_factor_ex_meta_dispatch.h,sha256=mpjY4aZQ8EjBPYavL05r1AzaNR-DXvOMy5DtvU4IL5w,1498 +torch/include/ATen/ops/linalg_ldl_factor_ex_native.h,sha256=gOwCZMo-OJfs7dgYSsYs41O6yv_oJ2hfc-8xd5cSAlg,978 +torch/include/ATen/ops/linalg_ldl_factor_ex_ops.h,sha256=CPzuGRUzKFjz92TO-sqjwC4LMDsWu3IKZnuRRaweD28,2589 +torch/include/ATen/ops/linalg_ldl_factor_native.h,sha256=_CV7CynjnQ7rCiFo0i0roM4-wNeHY_QlXJfaPud9UMU,940 +torch/include/ATen/ops/linalg_ldl_factor_ops.h,sha256=i5piUdrVQTCQbSS_w6qkOXPubV8mqbq4oeGp4CpjBTk,2262 +torch/include/ATen/ops/linalg_ldl_solve.h,sha256=Z7_SISkO0sw0G2SY5XEvmIAydaNKz8f2iaFMjKt1Fu4,1780 +torch/include/ATen/ops/linalg_ldl_solve_compositeexplicitautogradnonfunctional_dispatch.h,sha256=Zo0HfLwVZCAx-86f1jMQuIYLmeA1TaRza0s-gFNpq98,1123 +torch/include/ATen/ops/linalg_ldl_solve_cpu_dispatch.h,sha256=eKVhnapxsYIIjvQbB2CAGhmR5K98PihMWocLg0Wd6wA,1362 +torch/include/ATen/ops/linalg_ldl_solve_cuda_dispatch.h,sha256=TZij5CTle16QLNRcLFNX_MjLrpqsR-OONf6jQ3qKMqU,1364 +torch/include/ATen/ops/linalg_ldl_solve_meta.h,sha256=vHrPcz1qtglcguq-c7pCMLX0ZnyxUnvosqWaOblpig4,894 +torch/include/ATen/ops/linalg_ldl_solve_meta_dispatch.h,sha256=jmJ7AooOk3MTO3cJJsbol5pYU3zvgr6RX4RzTyQGOVo,1364 +torch/include/ATen/ops/linalg_ldl_solve_native.h,sha256=fzR_UhEPiVaarKrxYscyJxWGRA32M8lPXZuO76tjNNc,943 +torch/include/ATen/ops/linalg_ldl_solve_ops.h,sha256=TYInDRUnvnZIC5IXefj0rx6jttCNMZ09B2je9ccTzHw,2298 +torch/include/ATen/ops/linalg_lstsq.h,sha256=eY4mZrc_PyJwdFT-D1T5n-zQiDGx9xmMs3oxBcwpP-o,2637 +torch/include/ATen/ops/linalg_lstsq_compositeexplicitautograd_dispatch.h,sha256=B491D3aN6MFFogIspibuGTQbqzr0OGWLH8is4ORUBSQ,1196 +torch/include/ATen/ops/linalg_lstsq_cpu_dispatch.h,sha256=ZCslv7V9EZ30Db7c9eWqSFCNBE4c_PFnpPtovqmqxdY,1571 +torch/include/ATen/ops/linalg_lstsq_cuda_dispatch.h,sha256=_sCwbXjfWwI_FYckj8xaKPzT1YRGlljEKeWZhQE7_0k,1573 +torch/include/ATen/ops/linalg_lstsq_native.h,sha256=vx2Zvdp1evPIfD1rNpFT8cI7wa254916IUURVknu4ZY,1218 +torch/include/ATen/ops/linalg_lstsq_ops.h,sha256=UWW9eLKVG2mzUWy4QmV6526ADkBYtrv6u7S7tv--vxE,3188 +torch/include/ATen/ops/linalg_lu.h,sha256=Ox2sr3s_BwLU6L1PWsNs5PHn-wscZhT6ONynY9SVtdQ,1729 +torch/include/ATen/ops/linalg_lu_compositeexplicitautogradnonfunctional_dispatch.h,sha256=Tq4lVIBJLeV7q6mjQIc46s30oXlxKZCBj0s7h1M3U-s,1097 +torch/include/ATen/ops/linalg_lu_cpu_dispatch.h,sha256=ayco25_68R37zckSxHNJ-CsRQZBjyL5N-4-KSe2XkPw,1353 +torch/include/ATen/ops/linalg_lu_cuda_dispatch.h,sha256=WZG78J8v6u_Aaq1_Mzjo_dHYLTsRy0S_wmNcm2l2bNI,1355 +torch/include/ATen/ops/linalg_lu_factor.h,sha256=7ZD9WZHPN9ZXS9Sr_kBWGcgAmKv0hLAkbQwkukHaIuk,1712 +torch/include/ATen/ops/linalg_lu_factor_compositeimplicitautograd_dispatch.h,sha256=KFVa1qke9OCtvMJaKyopeUsw6K0q0_6lmDyiw5mrN9M,1361 +torch/include/ATen/ops/linalg_lu_factor_ex.h,sha256=y51x13dmX2afQoWE5qZ9A-YEg2C0bhXxvs30FsKVyO8,2096 +torch/include/ATen/ops/linalg_lu_factor_ex_compositeexplicitautogradnonfunctional_dispatch.h,sha256=QL4qz14k-9TP090aKKj1mufOdhmwKqbtlZnZGax_RG0,1132 +torch/include/ATen/ops/linalg_lu_factor_ex_cpu_dispatch.h,sha256=9j7hoizb5y3qZceZEa_waJs54gHx1C7xyHzJ4wBKr1Y,1470 +torch/include/ATen/ops/linalg_lu_factor_ex_cuda_dispatch.h,sha256=fIPD1N0nRKmOHIEZd-tRn6muw6e2jhv5PcD2kOc1aOQ,1472 +torch/include/ATen/ops/linalg_lu_factor_ex_meta.h,sha256=2SSMymduI4Pbj-1aB6xaOfNDZCpco10dYV-PBi6-ZJc,862 +torch/include/ATen/ops/linalg_lu_factor_ex_meta_dispatch.h,sha256=0_GZk_Y9IZHemr3xihAyX1yTC_vjj3SxeXB-4KgN3Z0,1472 +torch/include/ATen/ops/linalg_lu_factor_ex_native.h,sha256=_ArtkrzB2B8YYm_XwWvGqbHjLrraNu1-i__51HtPfIw,968 +torch/include/ATen/ops/linalg_lu_factor_ex_ops.h,sha256=2JxIPt4ZoAxtjOo4EjcpzVpSrIPqDIpoeqjjHVrPKew,2539 +torch/include/ATen/ops/linalg_lu_factor_native.h,sha256=XiDD3sEhizMJR9uKhni6Kvx1u6dypaypS-L9lRct5oo,923 +torch/include/ATen/ops/linalg_lu_factor_ops.h,sha256=5Lm4G-J8d6IEdm8xtu-bCIJE4Yuqt--8kboJBlZpbqs,2212 +torch/include/ATen/ops/linalg_lu_meta.h,sha256=zQJlysRbWPPFF__tlnFnl9kkmW5WBGv2SbyRBFklzhM,833 +torch/include/ATen/ops/linalg_lu_meta_dispatch.h,sha256=teAv6JQ3QiWoUY6rzWKwAXXs5HwzLFl_J1Z2y_lHrPo,1355 +torch/include/ATen/ops/linalg_lu_native.h,sha256=1l3QXIiwLNyRVduX7_ujPAkp-hnGMk7yXZab8RQBdh0,910 +torch/include/ATen/ops/linalg_lu_ops.h,sha256=46LiBQx1CmdoKV-ll82UMuiuzHWaH-lfgDwzCbxsBO4,2296 +torch/include/ATen/ops/linalg_lu_solve.h,sha256=s1_0al2-sDQ7ZmDj6vPk2MIF-J1iLu7OCbwTpSlfYII,1861 +torch/include/ATen/ops/linalg_lu_solve_compositeexplicitautogradnonfunctional_dispatch.h,sha256=v7y6QWty3XAkrZMN_nepVlDnGKntB2kKehqeGcgwBCU,1136 +torch/include/ATen/ops/linalg_lu_solve_cpu_dispatch.h,sha256=FtLX1ZAmhK_4pz1mnYdSyvhA_Gr43G8INhn4XcxDRqE,1396 +torch/include/ATen/ops/linalg_lu_solve_cuda_dispatch.h,sha256=kvAOyYE9MZqy1E347QKHBVyfJyoipJbdgc_nbF6PcJA,1398 +torch/include/ATen/ops/linalg_lu_solve_meta.h,sha256=JS3ZLUUNAIMFeP_T6AU4hzqwj0WyKlbiEjUpRQlnWcI,902 +torch/include/ATen/ops/linalg_lu_solve_meta_dispatch.h,sha256=MOpZJy2-nh3WaFLsh2QxoIdA2nKAtF8DdX-IIialTt8,1398 +torch/include/ATen/ops/linalg_lu_solve_native.h,sha256=_umB08vNaOgmvAyfCOYp1KSQK78NRWa8QEIlTS70gc0,949 +torch/include/ATen/ops/linalg_lu_solve_ops.h,sha256=89z2Ns2hVyUQzBV6QQUoxMDAG_rOPDh5ARH0sa18EKQ,2368 +torch/include/ATen/ops/linalg_matmul.h,sha256=eOYG8-QlmbI_uaE6SGqhenBLKDmX9Q9f4Ce0vAXlJio,1492 +torch/include/ATen/ops/linalg_matmul_compositeimplicitautograd_dispatch.h,sha256=kzYfzY65To2KgFilD5_gD4nVdvU81WfQhCSki-Yfltg,1274 +torch/include/ATen/ops/linalg_matmul_native.h,sha256=UXufPQrmjThziUKEtvx9lXNG2I0r4gp1ZxrQ4VXTQdU,874 +torch/include/ATen/ops/linalg_matmul_ops.h,sha256=XPY_relY5iZw7nDkuYZFqOv9IxZvLSR7ZiPORaE-5g4,2015 +torch/include/ATen/ops/linalg_matrix_exp.h,sha256=xXa4s2RxaJLxYJGa8TQvp11CeH6ThBjqTRuw0GIs2Io,1391 +torch/include/ATen/ops/linalg_matrix_exp_compositeexplicitautograd_dispatch.h,sha256=QRezsk1kM8wswEnsxWzcgqwMWBlggLtu1QIQJpjWcsQ,1143 +torch/include/ATen/ops/linalg_matrix_exp_cpu_dispatch.h,sha256=jetPXq9tvVH4WTrepAt9jvzeXvcrS-_LlnXb5wpzarU,985 +torch/include/ATen/ops/linalg_matrix_exp_cuda_dispatch.h,sha256=1hf255FmbFLjMl2JSZUmaQKAZwbNw2n5jXUQb6XFNLA,987 +torch/include/ATen/ops/linalg_matrix_exp_native.h,sha256=a-RGdUhRZXmEJ7i-mtZTo03NqRs3v2SbUNb9rWQVmwo,830 +torch/include/ATen/ops/linalg_matrix_exp_ops.h,sha256=CuzE6x655TUQHb6rHK23MWx6A3VNkol9aFYGH5D1NJY,1867 +torch/include/ATen/ops/linalg_matrix_norm.h,sha256=ICvhd6q6AJ4apbyzUoWgO-b3tnATPu29nhDJY3pa6b4,3413 +torch/include/ATen/ops/linalg_matrix_norm_compositeimplicitautograd_dispatch.h,sha256=z5DGd6RezpXzK8uo3SKIQO_tVWWm2FZQH2q_PLN4fpI,2168 +torch/include/ATen/ops/linalg_matrix_norm_native.h,sha256=v_V6AOtwH3Jdb7Ixxb_t2forVGbC1mE4Oa_RgsEGfBc,1440 +torch/include/ATen/ops/linalg_matrix_norm_ops.h,sha256=ehm8hiuWzIMJpllNWmyVvaayp-QVDVSLISiO0jmxrNY,4470 +torch/include/ATen/ops/linalg_matrix_power.h,sha256=UE6UvgBroiH8qT0BoSMJmCDqItymllHQ2KqxyqJzWnE,1474 +torch/include/ATen/ops/linalg_matrix_power_compositeimplicitautograd_dispatch.h,sha256=A5Zs98TOmZh2msBLhlxsm09U9J5-olKVyva7oJ8e5sc,1247 +torch/include/ATen/ops/linalg_matrix_power_native.h,sha256=VwZlIwFeyqH2ROab7KuAJC4hLF7q0sNZi81e7ZPvEZw,856 +torch/include/ATen/ops/linalg_matrix_power_ops.h,sha256=S9FYF2bcdHikNOcmF7anNWasIK-crgp8vqdL3th1HZI,1955 +torch/include/ATen/ops/linalg_matrix_rank.h,sha256=fHKhs-LorBMnPveQCT74RrDW9LIw3BAp_GoFtuBxD5w,5169 +torch/include/ATen/ops/linalg_matrix_rank_compositeimplicitautograd_dispatch.h,sha256=J3S1rCeAGL0kmob6mbyddfhueroVLgDSzm3kIZBWVqA,2750 +torch/include/ATen/ops/linalg_matrix_rank_native.h,sha256=Voe1sNBuYYihdIL8YIrtiSW0abvKhTaUttX0U93MFAA,1852 +torch/include/ATen/ops/linalg_matrix_rank_ops.h,sha256=VXWDoNbJATQx8h3Ip697D-CA59pgZRcbCEbi-RBPKyA,7336 +torch/include/ATen/ops/linalg_multi_dot.h,sha256=p5BCH44cK8ELNiec5_5yxqS1DkUw5vxGLKXQNf-xAHw,1402 +torch/include/ATen/ops/linalg_multi_dot_compositeimplicitautograd_dispatch.h,sha256=qiA2kx_ccqIyVnS2VCYLJWQ8NBa3InKYrYtyKfNm81Q,1202 +torch/include/ATen/ops/linalg_multi_dot_native.h,sha256=xDnloi3IcF_ut5X5tEOrcrNTWlB3Ld156rNMmLHbBug,826 +torch/include/ATen/ops/linalg_multi_dot_ops.h,sha256=YEwkVAY3pGETxszliueBS1DnRxxDVpIpgaeDwiFy1Jo,1859 +torch/include/ATen/ops/linalg_norm.h,sha256=INu8d_T6WFiAqx0Nu8XFZwXY6QWQ7RRMlO63-4xsqBY,3419 +torch/include/ATen/ops/linalg_norm_compositeimplicitautograd_dispatch.h,sha256=djX0meLaJeEgX3Vc9mU-PjnPJV4J2GmyCbkZtdYKPqc,2271 +torch/include/ATen/ops/linalg_norm_native.h,sha256=Qxg47-0c6o-0Enorar2HNnuswbW0BH46SDO_5Aeh8Pc,1501 +torch/include/ATen/ops/linalg_norm_ops.h,sha256=qfBoUdh0FCphEq4LQbyiS7ZJjKt39PG7buyLrWqw4xM,4580 +torch/include/ATen/ops/linalg_pinv.h,sha256=gBjCw4aUu-O9BMHvAsFmu3G2wVueKVGcZGJ0T-lXZpo,4940 +torch/include/ATen/ops/linalg_pinv_compositeexplicitautograd_dispatch.h,sha256=j83aplXZMtVlMrMVMSXHyFWv3IqF_qlHgnQPJloYlc8,1343 +torch/include/ATen/ops/linalg_pinv_compositeexplicitautogradnonfunctional_dispatch.h,sha256=hImXM_P3Dd7r3HXHUm8Wzqh-l4SEId7batxFDv85SJQ,1161 +torch/include/ATen/ops/linalg_pinv_compositeimplicitautograd_dispatch.h,sha256=1Xm7rzihAQJVokNf7pX4XD42YQQYNLuU30su1cFTTVE,2122 +torch/include/ATen/ops/linalg_pinv_native.h,sha256=mOZUTRApqEuHS1QeZf2NoPCf2E3a2foZcbQvjmhoLU0,1800 +torch/include/ATen/ops/linalg_pinv_ops.h,sha256=jEwnEHDNalnZJzQl1VIMKS6wQkzSPXI2vaD3lCi4nr0,7192 +torch/include/ATen/ops/linalg_qr.h,sha256=IH9kK8F0E7p09s28JPf03SgiRDTIoEXI9C4OQAdUxgQ,1634 +torch/include/ATen/ops/linalg_qr_compositeexplicitautogradnonfunctional_dispatch.h,sha256=-pHxs2ZtnyA-9Sj8Bii637c2_XRszVIPdiUYFKyEgdU,1102 +torch/include/ATen/ops/linalg_qr_cpu_dispatch.h,sha256=pmMyWWRMpFqDaE9ICBB5ztmS81oG9-FGdLiDZSqPTaI,1327 +torch/include/ATen/ops/linalg_qr_cuda_dispatch.h,sha256=oQs7_EPm2OhmCsaAqTxxmpxoH_LzHazTyT7kia_UD9Q,1329 +torch/include/ATen/ops/linalg_qr_meta.h,sha256=nHSyUEM8110G2goBuN-iZ6r8UiNR-wBEOUiedr14wnA,844 +torch/include/ATen/ops/linalg_qr_meta_dispatch.h,sha256=Gus9Cts7sDp73V7FeL0cZhkEqKkm-jTHMz-d4Do8z9E,1329 +torch/include/ATen/ops/linalg_qr_native.h,sha256=ry61jq-f_KBYg9gltrJLkSNdizqONALvxM7P4VLUZ1k,899 +torch/include/ATen/ops/linalg_qr_ops.h,sha256=wzy9NVttrcs_wNKitpQsAY5_C8Ab4mNJGFwLVSigTBA,2211 +torch/include/ATen/ops/linalg_slogdet.h,sha256=XO4kgsyj0-0HJkJN-0KSkAbQ9cxppi_d5KjBHHsfKw0,1616 +torch/include/ATen/ops/linalg_slogdet_compositeimplicitautograd_dispatch.h,sha256=NN65qjD1tDmbQI3mJvGs0hOBlMFuxLl8OHY5Eeft5d4,1319 +torch/include/ATen/ops/linalg_slogdet_native.h,sha256=M4vdriYbYCcjojReIOkvH5P8k0cvGS2a2OZ30F2yxJY,895 +torch/include/ATen/ops/linalg_slogdet_ops.h,sha256=5fDrKWdRfRMY18TpJel4sEFNR24rSNdQy9YspdwIZrI,2128 +torch/include/ATen/ops/linalg_solve.h,sha256=sUOUj_9oPI-PY58G75x8GWOjASVUwip5oxwrdHqWU_8,1531 +torch/include/ATen/ops/linalg_solve_compositeimplicitautograd_dispatch.h,sha256=3LU0jn8OooVJ3uKXSczqG7PJ1s-hQya-WHAQwXlAkk0,1293 +torch/include/ATen/ops/linalg_solve_ex.h,sha256=gUkvsKLqO1EO1XgmhrCAMju7NT4cbE4AUTp5vCwYUoM,2002 +torch/include/ATen/ops/linalg_solve_ex_compositeimplicitautograd_dispatch.h,sha256=bcGxED3HeyJNQ2J8epnmsk1c8vPSemCoGAdzyVGH1WE,1494 +torch/include/ATen/ops/linalg_solve_ex_native.h,sha256=YPRTBgzu-9ZQEccObZfzrJuoO-9mT3vKJdT9DcPGJsU,1009 +torch/include/ATen/ops/linalg_solve_ex_ops.h,sha256=DXTGw_jrSiGm-lrKaIul9sJuvAMnraIXabxe0vFo1yM,2496 +torch/include/ATen/ops/linalg_solve_native.h,sha256=HUJfU8CstRWvhKu2zQJ5R4C84xnO9rWfSUHM4vswnHs,885 +torch/include/ATen/ops/linalg_solve_ops.h,sha256=5FADMlo6TYZT9dGO_4805y8vgzJ9-1Mm440Af5wmtFo,2058 +torch/include/ATen/ops/linalg_solve_triangular.h,sha256=JzFF64F-6VrHIepTJlZTHY4GrrWnz2kQX66wtEeu09c,1956 +torch/include/ATen/ops/linalg_solve_triangular_cpu_dispatch.h,sha256=JEBt6K0WNu4YW4h0yQIsaLDYIr94ekZ3fKTSzZMk2Hg,1399 +torch/include/ATen/ops/linalg_solve_triangular_cuda_dispatch.h,sha256=aAktMfLDxFse-f2aWYHGtxqASEItPGtPU9TuPyoT7UM,1401 +torch/include/ATen/ops/linalg_solve_triangular_native.h,sha256=c3bWQyFFyAFcRjL0bAHoe7jyPLe32k16T_sv4nndMYQ,983 +torch/include/ATen/ops/linalg_solve_triangular_ops.h,sha256=ZAlFA_ivtqSIeDk2RgcPkJE4-fB8kOxhq7MeirZqWUc,2370 +torch/include/ATen/ops/linalg_svd.h,sha256=CidG3-IJrXcLQPgi2-t_YaZ8qQJJ65FROJz5ud3y9HI,2046 +torch/include/ATen/ops/linalg_svd_compositeimplicitautograd_dispatch.h,sha256=_EDo0ux1ze03tcyrc2K8fEbYYvZKmmAv6m2u25M46ms,1582 +torch/include/ATen/ops/linalg_svd_native.h,sha256=mOMa98wfy9Xq4s44Ao-FG_C9htaEjAPMoDd7D5Rgrxk,1061 +torch/include/ATen/ops/linalg_svd_ops.h,sha256=Uv2nw3Rspc3oqMZfM8_FEvwY7PtF6lpTdIxkojuJ8gc,2623 +torch/include/ATen/ops/linalg_svdvals.h,sha256=S0AFo3h6AhdEXCeHdhZ42FxugMY6KBl7jtGn8pZdhfw,1571 +torch/include/ATen/ops/linalg_svdvals_compositeimplicitautograd_dispatch.h,sha256=Mgux0yIJjerTMtzcJ814vyvxymvyeITJ6KTB4u39wVY,1346 +torch/include/ATen/ops/linalg_svdvals_native.h,sha256=AKYe99jOnVZeCZc333JZrT48FFy96wpA569Y_OugxbE,917 +torch/include/ATen/ops/linalg_svdvals_ops.h,sha256=jQlGE87mPqGk-_jVOCaHIbCm58cA46MAKuKJFSzklgk,2108 +torch/include/ATen/ops/linalg_tensorinv.h,sha256=PThoNEJjzHGnjw5I6C-XccrgpMFEELXXGPbwDOCPH20,1472 +torch/include/ATen/ops/linalg_tensorinv_compositeimplicitautograd_dispatch.h,sha256=QhWibJvDLyBfd4qA28NKk5umE-iR792cKFEFtLbrn6E,1248 +torch/include/ATen/ops/linalg_tensorinv_native.h,sha256=oeZOezZ1d9X5m_KlusAuhilxXR0QyljgT2sN1tsoAJ4,856 +torch/include/ATen/ops/linalg_tensorinv_ops.h,sha256=zmvYevJ_1O4pVgbDvnCM7gU-3dbBUOlnAijxWlLPjqU,1953 +torch/include/ATen/ops/linalg_tensorsolve.h,sha256=oRTz-l08ExGr_K57BEa0vHsNeGG-LcFri8Hj_OHCBB0,1734 +torch/include/ATen/ops/linalg_tensorsolve_compositeimplicitautograd_dispatch.h,sha256=6OKTucGsojuwtMlMAIIyPojiA9ECRiKf1-Yi6eMZG0o,1409 +torch/include/ATen/ops/linalg_tensorsolve_native.h,sha256=fk8xoByzegrJCLbVYRSmA3mfi0vPSrcc9WuQ3FhAxVg,959 +torch/include/ATen/ops/linalg_tensorsolve_ops.h,sha256=QdoyVipbqJhvPRpUNf1RbPGYn6qR80TqfVcw_o8vBGM,2251 +torch/include/ATen/ops/linalg_vander.h,sha256=RW-7ePVWoNSJ5PozO8h8iBUp0Y8LPaiPPLEXBI0tlBI,1840 +torch/include/ATen/ops/linalg_vander_compositeimplicitautograd_dispatch.h,sha256=woFTLPNBQmRVvkkeoeTzT3-5uAnhNGkGgdy-UbnuKTY,1177 +torch/include/ATen/ops/linalg_vander_native.h,sha256=atoJuiM2bAJ8fOBHzUmxIhGL-z7WnWXeNzVjS-ubRrU,788 +torch/include/ATen/ops/linalg_vander_ops.h,sha256=Kixnr_Bq9TL7cSfBdmnuFQfn7phMrHXZX5oGrubTKDg,1336 +torch/include/ATen/ops/linalg_vecdot.h,sha256=zkjF6Tieo07wla-4Z1xRyJ6mZBuTjqLgKRFmkqW6WcY,1528 +torch/include/ATen/ops/linalg_vecdot_compositeimplicitautograd_dispatch.h,sha256=4jAn2-6RtA94O64tB91XkksEFKY0L4Ut-SL0EeOFn9g,1298 +torch/include/ATen/ops/linalg_vecdot_native.h,sha256=3fPm8ubqoX-3gBH0o_8YLH47tkC150uPcv64hiB78RQ,889 +torch/include/ATen/ops/linalg_vecdot_ops.h,sha256=egLqi5iLfcW78erbzWsK405bddpzLMmHAFe996emisU,2070 +torch/include/ATen/ops/linalg_vector_norm.h,sha256=Dix3RyQ-1gRkFV2KhNjZKQpzqUaWBWRF-9F-M9ImGxw,2104 +torch/include/ATen/ops/linalg_vector_norm_compositeexplicitautogradnonfunctional_dispatch.h,sha256=o4BycAW0E8tM-TrBSdNsgYWe7wi0Zp-qwORyke0owdM,1200 +torch/include/ATen/ops/linalg_vector_norm_cpu_dispatch.h,sha256=F06vJc6SBYGF3_LbKlbR-U2NZIIrhWwoBx2KTdHNjfQ,1561 +torch/include/ATen/ops/linalg_vector_norm_cuda_dispatch.h,sha256=DeF-8Qh8mf0XKPZaD7CXo0K4HJzibnzPt_69skj-uik,1563 +torch/include/ATen/ops/linalg_vector_norm_meta.h,sha256=ZjZ6-e2CIuMO6PzDhKefYoQi4oP69NVRORi27QRAl5c,939 +torch/include/ATen/ops/linalg_vector_norm_meta_dispatch.h,sha256=CzOlrzt3tB3XD1H8w0ERW5vegGsI-A5KegDkk2A6D8o,1563 +torch/include/ATen/ops/linalg_vector_norm_native.h,sha256=H_gHPDhI8rrJAKsfoQl-7x_Oc__QO3n_rc0VvYmN_ug,992 +torch/include/ATen/ops/linalg_vector_norm_ops.h,sha256=ehT6-r6FW3vu-Aok7YLNDcGxBSwajiTzW-SoCPhT8BA,2620 +torch/include/ATen/ops/linear.h,sha256=01NokxKu32cxtcMGbjYmlFkzme3PWvCnLNZiCoxkyME,1647 +torch/include/ATen/ops/linear_backward.h,sha256=TicG3L8MI7vLcRyjr7x50_Z2T9GyWZG7aI60caiNWOU,2280 +torch/include/ATen/ops/linear_backward_compositeexplicitautograd_dispatch.h,sha256=H-Eu6Ft5dzxlkOvy25Jg540UHnapKK51EqtUQD3xQKc,1483 +torch/include/ATen/ops/linear_backward_native.h,sha256=kxFDMmtqwnTr7iCUkVGK98G_gJ-7VD_Ys_riaMZJqgg,1134 +torch/include/ATen/ops/linear_backward_ops.h,sha256=eUS9SWQ3SjgiDF5IgyxSoQW3_waxtXMQC34muJPsJ58,2876 +torch/include/ATen/ops/linear_compositeexplicitautograd_dispatch.h,sha256=e58pUTv6ng4qvxUfbFHJ8NaeeXXAtlW5mT5PNdAytl4,1264 +torch/include/ATen/ops/linear_compositeimplicitautograd_dispatch.h,sha256=_TA-g4WbvagtJcXO10D0Z4HaEsK--wnpew1n4FWpJ6E,1091 +torch/include/ATen/ops/linear_native.h,sha256=FJdzdwYLF3XyFiWNJUT91UhnXaczVUcKwbczvgLIJu4,1085 +torch/include/ATen/ops/linear_ops.h,sha256=TNKnjv89VAemh4VL4Lm_sV5Wzabc318StGONbhHLqYo,2265 +torch/include/ATen/ops/linspace.h,sha256=BjrAfCrVYYRPXZg54Ax8-FRkqvvyQym0yrmdffZ4KSs,7130 +torch/include/ATen/ops/linspace_compositeexplicitautograd_dispatch.h,sha256=rAyH894irmhtzNcNcWzcjXpmWjEmfwpE8pbsLW55glo,3155 +torch/include/ATen/ops/linspace_cpu_dispatch.h,sha256=ecsxyxSojt-uO_HAdeqgEDN1D_XxXbIV_RXQx5bIdqI,1161 +torch/include/ATen/ops/linspace_cuda_dispatch.h,sha256=iYJWAcuTUZ2FcOPhfak1qXfktf_maQKFdrgW_t77PiA,1163 +torch/include/ATen/ops/linspace_meta_dispatch.h,sha256=Y4-rZ7EqCL6Z8ILzIP3F-q2K5LJbEV7Fw-0ta9VUWgc,1163 +torch/include/ATen/ops/linspace_native.h,sha256=qp1DUTgf4KUxE1P03pUKgY49E-H3g0pAYRrE7gN6Mxc,2293 +torch/include/ATen/ops/linspace_ops.h,sha256=O4MzxVxSQwJcVnzanBn9gj2B05-ObeInQye4wg_HxWM,8416 +torch/include/ATen/ops/log.h,sha256=xOQaF50tq9lcrCmH4Iezr9Kr3JAb97F5_U0SIpJQHqM,1384 +torch/include/ATen/ops/log10.h,sha256=xryDeKUv0QNiJSy_cJtbl_0FYskLAv975IScBqGoCoI,1410 +torch/include/ATen/ops/log10_compositeexplicitautogradnonfunctional_dispatch.h,sha256=qkkqkBU48LN26KruF22zWeghO3Rogaua_9ULnXB0s9A,1093 +torch/include/ATen/ops/log10_cpu_dispatch.h,sha256=mkNZWZsAT1kCIi0MkXbsZ2Q1XU7mR9VXscNgA6lYDoo,1178 +torch/include/ATen/ops/log10_cuda_dispatch.h,sha256=PAdt6UUCFcqogXnE6i05JLGH5xMpIbF0MnYe59fo1HI,1180 +torch/include/ATen/ops/log10_meta.h,sha256=4LIY7g43NNA1e2WfwVZH7UJ8TabNy_UIAm4BH4ZYCws,820 +torch/include/ATen/ops/log10_meta_dispatch.h,sha256=NlEefBvTdHBwyK-oUARwFZ7QVd0ysRwTuP9Gn4k-oro,1180 +torch/include/ATen/ops/log10_native.h,sha256=MJKOcod__cxaAmd2JpyrzXNwu5kzI9yH2X-tnOSqUOA,847 +torch/include/ATen/ops/log10_ops.h,sha256=BUejzlx8zbqNhCQvWYsxH4wydyj7JUcUqyzpyKpTzt0,2291 +torch/include/ATen/ops/log1p.h,sha256=OG2kPlZlVEhZHiE_fN4S2tONFJyB0KuRATbYN-gCcgA,1410 +torch/include/ATen/ops/log1p_compositeexplicitautogradnonfunctional_dispatch.h,sha256=aa38aHhxPV2nntvQV92r3FkRXc-UJbjGJXWxx-ncSxk,1093 +torch/include/ATen/ops/log1p_cpu_dispatch.h,sha256=MjaXv2WalOgfiP4QungEnD_63_945CZQsCp5sjPDbSI,1178 +torch/include/ATen/ops/log1p_cuda_dispatch.h,sha256=d1qSIy_FVDhYK8kOTuzg2laXOuVTh_JCTi71SiqEX0I,1180 +torch/include/ATen/ops/log1p_meta.h,sha256=vviGLx641ST0YzpoIDcYsRiiEu0JX3jx7vRKgXbssBU,820 +torch/include/ATen/ops/log1p_meta_dispatch.h,sha256=17Sj8Bc8Xv4VvZ2ILmhKidfrm7IpYPqWZFA6yMZHEoQ,1180 +torch/include/ATen/ops/log1p_native.h,sha256=dDrZEZpCtZCwGng_GCKs46VdmfAZE_vH8FcmNhy1f_w,1261 +torch/include/ATen/ops/log1p_ops.h,sha256=kfZm2qspmY-5YLLxLZMXxHovyIVvq8eSAevcChMi6xo,2291 +torch/include/ATen/ops/log2.h,sha256=ZsUCAC7Yg2u6glmX7m-BJ-X5J72XX0tGnAFnFB5zJgc,1397 +torch/include/ATen/ops/log2_compositeexplicitautogradnonfunctional_dispatch.h,sha256=nK5nvLJ0Gry9P6VWStGGRcWQquvrIxlqG7hpj41L748,1091 +torch/include/ATen/ops/log2_cpu_dispatch.h,sha256=uQof6NP-SS_yRQwZBqQc6Z6UR4EV8iILc7G-dBOkFHc,1174 +torch/include/ATen/ops/log2_cuda_dispatch.h,sha256=OUyzi3_I4ZdjFuzXGreORuwih3OXy8efssRn1-Uz5c0,1176 +torch/include/ATen/ops/log2_meta.h,sha256=NwOlwUGSMgyyR_fbcF5lNStLUUycMnTnZy4_r5fwclk,819 +torch/include/ATen/ops/log2_meta_dispatch.h,sha256=-mn18o1vbJF2mWu1AnDBldzC9k7q38QwsdaVEGAus0E,1176 +torch/include/ATen/ops/log2_native.h,sha256=QYS0_A6U9hHTAOB5sZpONdQzQRnEh4QhA5yC5eRZQw8,844 +torch/include/ATen/ops/log2_ops.h,sha256=RN65vluzw9xI2MFtIosJHmPDxAOs-k-p3LvyR4nMUFk,2282 +torch/include/ATen/ops/log_compositeexplicitautogradnonfunctional_dispatch.h,sha256=zawq8hY1L3QuF7G4KL7SXA88VGWA-7fx8z1_fy8MJ-w,1089 +torch/include/ATen/ops/log_cpu_dispatch.h,sha256=fnLB3WJHkN8-27Ca6-NDf3CFqI7mL2-Es0WOY_B0E3M,1170 +torch/include/ATen/ops/log_cuda_dispatch.h,sha256=ZUC-UzXJziTuBICEueFvHfaud3nN5WzPY_PAuDCRiV0,1172 +torch/include/ATen/ops/log_meta.h,sha256=c-pI2Ni5Zc2twOwAo8csq84GSdaJ0QxQ-9aIb86hGls,818 +torch/include/ATen/ops/log_meta_dispatch.h,sha256=qmMW14zAGzjcQb750Rji2dy7C1lEdGE-yC3JxXWib7U,1172 +torch/include/ATen/ops/log_native.h,sha256=CkQiyOgWfrNIdEwMOPWwoYm3FYOLbHklSyd73N3qF_A,841 +torch/include/ATen/ops/log_normal.h,sha256=7MYdqRD2ks9mxwuCzlEGZHbb4TZvmx6ngIw1v3S_vzY,1791 +torch/include/ATen/ops/log_normal_compositeexplicitautograd_dispatch.h,sha256=xcfQNYzJlZkUGfGXqQyhsenc3ACPBwi8SCT98vYLZeQ,1426 +torch/include/ATen/ops/log_normal_cpu_dispatch.h,sha256=HqJnk6grZmcU7YL1cuiQctsgy6ks7N1pj32YjEyrpVM,1061 +torch/include/ATen/ops/log_normal_cuda_dispatch.h,sha256=wylWaji9QReD9PbjajHB-yICpOFKObmNcsEoSCv0Alo,1063 +torch/include/ATen/ops/log_normal_meta_dispatch.h,sha256=EC3fxPiksSCkiUd9o09GWnGOMFRAZTwpcsIL2aHc8Vs,1063 +torch/include/ATen/ops/log_normal_native.h,sha256=ahg-_k9aYRzJ4vd_4zslgmZTMUPmgAjKjtARjxU1Wkc,1110 +torch/include/ATen/ops/log_normal_ops.h,sha256=IpzBUdapLU0rOHJbdYaboTZ6ZptPpQSRNBouuDic_0k,3050 +torch/include/ATen/ops/log_ops.h,sha256=uaEkHCLFuu4ioZqF7PTlP3aZY-OBRq6GZrOAHj1iBls,2273 +torch/include/ATen/ops/log_sigmoid.h,sha256=tVpIKd73NIWqD4WFU2SFd4lp6GmUMdpjcloSniL9bTg,1331 +torch/include/ATen/ops/log_sigmoid_backward.h,sha256=5AxC2EmORABYo5zlXFO8XExJiJ2iMD4W6M5MnFmFZcE,1836 +torch/include/ATen/ops/log_sigmoid_backward_cpu_dispatch.h,sha256=yq_N4Kh9f-Hh-ZyOazRlSBooIh9dAc83fZp4YUb_Mt8,1364 +torch/include/ATen/ops/log_sigmoid_backward_cuda_dispatch.h,sha256=g_us_wU6_cseacHJ3sFkitMbjgNYRyzjqbJUHy770Ko,1366 +torch/include/ATen/ops/log_sigmoid_backward_native.h,sha256=OnL7aSMp4vlMAOxRo-Kfru4ztbjVHYpudt5RKTxoMLc,1264 +torch/include/ATen/ops/log_sigmoid_backward_ops.h,sha256=AO9wm-Ebyj9nyqliZHIDO48FF5qU3aZzZuC7wgKIUOA,2313 +torch/include/ATen/ops/log_sigmoid_compositeimplicitautograd_dispatch.h,sha256=2-zUIbNN1BEWZOB82kS6eFkhkWCKK1zMsOxtLBEgqKA,1190 +torch/include/ATen/ops/log_sigmoid_forward.h,sha256=_gnULzh92JXHEARxbVfmwtTvdi9KWKtG01gbUDEmz6A,1668 +torch/include/ATen/ops/log_sigmoid_forward_cpu_dispatch.h,sha256=yv12S1BJqsaW5Dk9VGbQhWUutgpV6A-LMxInOvBSnfQ,1297 +torch/include/ATen/ops/log_sigmoid_forward_cuda_dispatch.h,sha256=WdjG0Y_VPCkQD58wXcr4uOFXHGzykjdRc6iHMw7nIAI,1299 +torch/include/ATen/ops/log_sigmoid_forward_native.h,sha256=uZs8jJh4isJq70gcNjOoF52L0CHoF4xAb40dXIRZJSM,1162 +torch/include/ATen/ops/log_sigmoid_forward_ops.h,sha256=K_XnvihHFQ-aOsc4nR6PXMeFVvHs93RIRF4UNskHES8,2166 +torch/include/ATen/ops/log_sigmoid_native.h,sha256=HV3C-nCOCAj37EZTFWn72fXz6cSOVUC_rWcjudv3FVM,818 +torch/include/ATen/ops/log_sigmoid_ops.h,sha256=mRyB4WkSGivY20MVGHgPh4aAULcAKFlrvcVPtTCpJ3s,1831 +torch/include/ATen/ops/log_softmax.h,sha256=NWcOTaYoowJWETz-OjaMfoDf1fJfxRqY2ZfJVvc6SMs,1965 +torch/include/ATen/ops/log_softmax_compositeexplicitautograd_dispatch.h,sha256=rLrrXZUUVt1mWYuls5uw_Z9RDm0u3cD2lIXzby1mU0Y,1250 +torch/include/ATen/ops/log_softmax_compositeimplicitautograd_dispatch.h,sha256=fhZiHcucjudl__eb151V74yfgbZL8x_XWpWZHSzNg44,1220 +torch/include/ATen/ops/log_softmax_native.h,sha256=QuHrs3QaCyT7CiKBjlRaCVbj3X0UpbjVzxnqtqIPIBU,1067 +torch/include/ATen/ops/log_softmax_ops.h,sha256=6kv1Hs7kekXNsBQCZVHXMAoh4_CKFguzfAd9LJgBQ0I,2948 +torch/include/ATen/ops/logaddexp.h,sha256=Y23kfc0RhyR8cai_JsadKidS5bp6hAm3_Ac_9zDPkvo,1452 +torch/include/ATen/ops/logaddexp2.h,sha256=KjwZji3NwDB2tR3W0Kaxe0frkMQ-TPTFmVLPNxXxNzI,1462 +torch/include/ATen/ops/logaddexp2_compositeexplicitautogradnonfunctional_dispatch.h,sha256=EaLUi41_axPiHd000OopXD6iYHkWUDIcYHKxhYj7fGY,1074 +torch/include/ATen/ops/logaddexp2_cpu_dispatch.h,sha256=G04mFynA5zME8xlybq10pYzb2jnrNV2ornDT6rgcBpc,1221 +torch/include/ATen/ops/logaddexp2_cuda_dispatch.h,sha256=3UdZTRjoamcAfQb0-8_b7zNO1GSqoOL8gFe_Np5u1cY,1223 +torch/include/ATen/ops/logaddexp2_meta.h,sha256=i2HyOPegYvVizWcEDCTt_u9n0eg_rvW5R31cfCRK1Ks,851 +torch/include/ATen/ops/logaddexp2_meta_dispatch.h,sha256=Ib0YXv2uCXdBVI1s6PLOg3VgS5C-uuy0pDtawjY-yds,1223 +torch/include/ATen/ops/logaddexp2_native.h,sha256=cxMMc0-hNa2RDQaUvBnLqk-Xs4xFsPK0HMtVcy6uulI,888 +torch/include/ATen/ops/logaddexp2_ops.h,sha256=r4VqUdZSZOVjfnVE1AKMNU0QUuL4s1Uhm9_o6Fbx_SM,1997 +torch/include/ATen/ops/logaddexp_compositeexplicitautogradnonfunctional_dispatch.h,sha256=vUOyXE6CcAB_xCQdVzIED5KKCBNL0Ju9C9dRUQ04Aj8,1073 +torch/include/ATen/ops/logaddexp_cpu_dispatch.h,sha256=Eg5PnJ4Aaa9vXQIAJ0o5SuCUmIDbiEUQJ_3IIqSYdok,1218 +torch/include/ATen/ops/logaddexp_cuda_dispatch.h,sha256=M0YdN8nDynFuhGoSEXkCmJy44IaETALR6PcieefLfDY,1220 +torch/include/ATen/ops/logaddexp_meta.h,sha256=reW3tJD45oPKBCDql38j3TsNBoAo-ffoHk1Oa8dMwD8,850 +torch/include/ATen/ops/logaddexp_meta_dispatch.h,sha256=dryZqZMD_SzE3uMF8aejRvZolCN0W7T9CrdIphHyadM,1220 +torch/include/ATen/ops/logaddexp_native.h,sha256=BbCD3W3B0-bQG-SRCQtmublLZnCwtSkSuMFUrOshESk,885 +torch/include/ATen/ops/logaddexp_ops.h,sha256=Dc2Gy_EAUGzTV0QYwxTE9-x1Qa_B-RXed7O-zT27Hws,1991 +torch/include/ATen/ops/logcumsumexp.h,sha256=DwjeITmT-NmoRrI7x6Hx3nYAkm49afn9mNRSaDJh0nU,2154 +torch/include/ATen/ops/logcumsumexp_compositeexplicitautograd_dispatch.h,sha256=ImURomyp9ubZsRe0xarU7Gw6y4qymFxtmJ6Of3iHImU,1232 +torch/include/ATen/ops/logcumsumexp_compositeimplicitautograd_dispatch.h,sha256=Mzx3lbL33xZ0DdLmDzpxAk10e_niKn-wKhbkimwaYkI,1244 +torch/include/ATen/ops/logcumsumexp_native.h,sha256=kAl-xZn1GF3s6Ezq5eQzFKCQ-55OYphU1BRACB9ewfw,1024 +torch/include/ATen/ops/logcumsumexp_ops.h,sha256=DKCI2I09a7wBdnyXE7KvZKkIyzY9eB5bchFI1jMbUCM,3218 +torch/include/ATen/ops/logdet.h,sha256=diUYhDXqTDjqOEgB5X892AXTqPf9sVz2g-nIrpv5XIU,891 +torch/include/ATen/ops/logdet_compositeimplicitautograd_dispatch.h,sha256=-XAH5Ayc1S1rHJwzB2G3D-jZ430HoRTbCkL1n6fHGVE,1018 +torch/include/ATen/ops/logdet_native.h,sha256=OvgfbgSbGdUeBN02pu35DFQAsvrLIaFhm2GdUiSm5jg,730 +torch/include/ATen/ops/logdet_ops.h,sha256=D_7lXSDkbmrfaltIFapPGWqR-hui2jUHl7GsoUylAB8,1211 +torch/include/ATen/ops/logical_and.h,sha256=oE5sRLTXqACgwoWBbxkxsfyeHnJXAxoUsDJT_kqtOQk,1472 +torch/include/ATen/ops/logical_and_compositeexplicitautograd_dispatch.h,sha256=-ap6pSytHxAZOfWT-XzvpJpN2wOUIrdGEjltZ1nqLqM,1131 +torch/include/ATen/ops/logical_and_cpu_dispatch.h,sha256=47tcL1vx1A0FAkwssZSj_R3tAHBAO4PfIuGryWLnjug,1139 +torch/include/ATen/ops/logical_and_cuda_dispatch.h,sha256=d1E6se5-fvbfxyIMhs3xKbBiIjMEIXRB3NhH25ROaec,1141 +torch/include/ATen/ops/logical_and_native.h,sha256=QSE7EjoZ0ExfYN_1clQn6daqYwZcK_Vh5xbmV2jC_mI,952 +torch/include/ATen/ops/logical_and_ops.h,sha256=VwuoqFUW0FunjlWd6Eoww4o8o5Un6tM4Aqzxo-kQ7HE,2603 +torch/include/ATen/ops/logical_not.h,sha256=GBdu7OodZwXyH63pgarjjeYyh8WtMydf48-tECE3Yv0,1331 +torch/include/ATen/ops/logical_not_compositeexplicitautograd_dispatch.h,sha256=i66uZ3cf3D8aCC-ZTD5c6F3k5DvSqxDfULKqBF8r3P0,1079 +torch/include/ATen/ops/logical_not_cpu_dispatch.h,sha256=8Zlgk1tND-AtMAzbYt7VXkp0jRFdG7J3C447PSWql_g,1087 +torch/include/ATen/ops/logical_not_cuda_dispatch.h,sha256=vO8Bse_bBA6rGfIXQQ2BG4iQrWaqO7JoJfDhQf8o19s,1089 +torch/include/ATen/ops/logical_not_native.h,sha256=rd3DYC22BGoowBmbtHiXAgDGQuVNXK7lgIhxhm8gAjE,1015 +torch/include/ATen/ops/logical_not_ops.h,sha256=AkLvfs8EVfmrnUfoDkQ82GIgSjOPBVjuB4rhcx4hNp4,2345 +torch/include/ATen/ops/logical_or.h,sha256=0Ho-YmstSA4Q0GtdqL-BNbiYfuHgZorBkvEk6WIW9UY,1462 +torch/include/ATen/ops/logical_or_compositeexplicitautograd_dispatch.h,sha256=3nWr8pcF_hPjd1-n65-AG_j7_NqIepZl8hWmyvQ01G8,1129 +torch/include/ATen/ops/logical_or_cpu_dispatch.h,sha256=3XstS9SpRsKJuK0LqzoBTAEMQyd5gBT1eo-1wjdm_rU,1137 +torch/include/ATen/ops/logical_or_cuda_dispatch.h,sha256=SZsKMRpZoFJcq2GZlRLaxy1k2Llvwpt608FA57QIgIU,1139 +torch/include/ATen/ops/logical_or_native.h,sha256=8WfC05fxpX2EuVNBBBpWlJ0j-wymLxTpxC1JweYG5S8,949 +torch/include/ATen/ops/logical_or_ops.h,sha256=ioTtybEg5NkT22K0DzLaJYMNV64VTcgjimW-0mgGv-I,2594 +torch/include/ATen/ops/logical_xor.h,sha256=CXdQxCrTEMnxUlE8RA93715We4Id-9NZ24B4wp8JO1U,1472 +torch/include/ATen/ops/logical_xor_compositeexplicitautograd_dispatch.h,sha256=GUv4fv2Xnt1Z6SbK5pgZRSQzwETK-bR34MCkSPZP2rk,1131 +torch/include/ATen/ops/logical_xor_cpu_dispatch.h,sha256=X6BtNUAyK-m6GOhFzjiwiUicHQnzpTmuxN--seWHKrs,1139 +torch/include/ATen/ops/logical_xor_cuda_dispatch.h,sha256=vZbd3ADpAYjcj4HP3ZFdy6Yc3ESWf0H0QxM5jrM6xPA,1141 +torch/include/ATen/ops/logical_xor_native.h,sha256=1uvTjT_q0DOFeeqR-AgOGfBVjV5nBipiV8ypBUxiZiU,952 +torch/include/ATen/ops/logical_xor_ops.h,sha256=Qqypf8jFj67tubYNZAua1wn6oW7lZohGwZ0vMwev3OM,2603 +torch/include/ATen/ops/logit.h,sha256=Ya3qHmsYy_OX5twva9sTNpFcrrGGMZpTsXg_tVgsTTs,1659 +torch/include/ATen/ops/logit_backward.h,sha256=NMoU12-Tw-XziicLqWfJ3F4wwp_1uG9PdJ8fYBOMJQ8,1809 +torch/include/ATen/ops/logit_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=S0FI3VQ1qWU1XvWu5HiL9nMRHwo1hTk-ZgiybXmHMG0,1128 +torch/include/ATen/ops/logit_backward_cpu_dispatch.h,sha256=joDDCtCW-Cok28YwckZx_bfxtFO3fNc0jd3yfc_Hhig,1382 +torch/include/ATen/ops/logit_backward_cuda_dispatch.h,sha256=VHxTok09L8JtelQHq4yY0hY7n6u4Iw20Vz-1koVJxPw,1384 +torch/include/ATen/ops/logit_backward_meta.h,sha256=xmlACX-lpM7_I6fHbqEDVWeqXvFilAzR7t5p4jvl2C8,890 +torch/include/ATen/ops/logit_backward_meta_dispatch.h,sha256=0mhXLbSgSq4Iq3lFzrmVXM4gEs91MnP-OzUDp5z6YTc,1384 +torch/include/ATen/ops/logit_backward_native.h,sha256=9ncuT0W0PIMVnFwCy2QyHEmHP5APvU-zhJaUGM3nJ7A,942 +torch/include/ATen/ops/logit_backward_ops.h,sha256=E4ibf5FOu3JchDuBiWuxUXNcVzimjiE18TX4XY-DjB8,2299 +torch/include/ATen/ops/logit_cpu_dispatch.h,sha256=Px9fLWzg908fJHurvJmlSZaPTnOAPdogryOOMp3qcms,1339 +torch/include/ATen/ops/logit_cuda_dispatch.h,sha256=PiDG8Dj7lASH51KKuOuamr94-POT4J742UTbZbV3JjA,1341 +torch/include/ATen/ops/logit_meta_dispatch.h,sha256=DW5CU2-g0nAS2sRx9asRkViHLKGu15BTV5ZEY64VJkI,1016 +torch/include/ATen/ops/logit_native.h,sha256=lAsyt4rp34A4QvW9JwSrbdMIqQG-CXc_JZBGs8Mw4HE,973 +torch/include/ATen/ops/logit_ops.h,sha256=Rlz34du2wCxNHVXgMNomT6jj2860ik6yoLsdhXqo_Bs,2591 +torch/include/ATen/ops/logspace.h,sha256=i4wqGhOhK8bepCr1uErG8T_2cWMSyc4BBPnxvnWMfPs,7746 +torch/include/ATen/ops/logspace_compositeexplicitautograd_dispatch.h,sha256=r9cf7Zmdsdzy61-mo9qKQExkWo1qXE95U9JHKbwkhQw,3372 +torch/include/ATen/ops/logspace_cpu_dispatch.h,sha256=eg58ehs1Da6YoWoDN37ByZnhKP7n92STIoXJG-BMz08,1192 +torch/include/ATen/ops/logspace_cuda_dispatch.h,sha256=W26u2y7qcGAajB_JCKaoRD-IFKVCagzVcIs1ihQ7xEE,1194 +torch/include/ATen/ops/logspace_meta_dispatch.h,sha256=p3ISKkvaODPme-4JiaEGWNZI1nm9caGnTX3ZqPMSq34,1194 +torch/include/ATen/ops/logspace_native.h,sha256=Ie7eZy96iyE7boinKgMjfKJriZcTvmtMh2-dPlZRunQ,2430 +torch/include/ATen/ops/logspace_ops.h,sha256=K15L8st9R2uRhiIr2z305XoOby4haqNsc0ukrUlFtgM,8824 +torch/include/ATen/ops/logsumexp.h,sha256=bWYKMa8IY0X2mJBRi4tK03K6DXIKSwUHTlG49MveqUo,2421 +torch/include/ATen/ops/logsumexp_compositeexplicitautograd_dispatch.h,sha256=fdxdeJb5GBSk5RzDEeZlA8B9BA7Mk1u_PXFFYn2JkcU,1062 +torch/include/ATen/ops/logsumexp_compositeexplicitautogradnonfunctional_dispatch.h,sha256=0dBxOOGT9MZ4xPbeCggbXbKzIuMAqbXfXH5bRQKp7VU,1229 +torch/include/ATen/ops/logsumexp_compositeimplicitautograd_dispatch.h,sha256=62Dl-pwDNMJAU6qoqIqiQTqAFslFiQgZO-xqKr2tF6w,1301 +torch/include/ATen/ops/logsumexp_native.h,sha256=YiPAf73pqPllJJnoEoGc5Zdrxo15DIZtzduIgaXKlsU,1104 +torch/include/ATen/ops/logsumexp_ops.h,sha256=CFv6i2aJqSwoN9ztLh30xiyiGwwbx4YdcA06ZPTomkQ,3470 +torch/include/ATen/ops/lshift.h,sha256=RDWWXhX-4pvyqB6tnF1e91V4bNd1Acqkp3ZM-Z1Kvms,2244 +torch/include/ATen/ops/lshift_compositeexplicitautograd_dispatch.h,sha256=xfEwuM5w3MrqHP-24tJvDwgm_32HoBimYDy8kVfYBuI,1398 +torch/include/ATen/ops/lshift_cpu_dispatch.h,sha256=AJdR9AJbOqOJi7XPdvfUzPDGl4-LMFZ-CmpWWRZUOYo,1250 +torch/include/ATen/ops/lshift_cuda_dispatch.h,sha256=_VtjUtAbtfQOwsKToJB9Z6yBBzJ3zGCkz8eqwbbf1Kc,1252 +torch/include/ATen/ops/lshift_meta_dispatch.h,sha256=fHcInyTf_S7qmmTDYen43KQBkhrGoJvJNOdKZ_nRe3U,1084 +torch/include/ATen/ops/lshift_native.h,sha256=GnfuVfDpmlVLB_GdXO_5X8PvnrT6KmpBqijJjfvV8Gk,1236 +torch/include/ATen/ops/lshift_ops.h,sha256=ExSeUk_d7EoqKRPjrPDsz7A6W3C6czi5vXLtMDfI1Gs,4599 +torch/include/ATen/ops/lstm.h,sha256=npSUDH9EE88Tb45L0k1qjAa5NHFfH2RSuiFF5pRVECQ,1867 +torch/include/ATen/ops/lstm_cell.h,sha256=9ChhGCyLelrwsuysnDQRXfMa7c2-ccAcpkqbH7I1EII,1205 +torch/include/ATen/ops/lstm_cell_compositeimplicitautograd_dispatch.h,sha256=x9Jum4tHatBrTYcpOjvKcPD07wKG78jXG-pbem9QT3U,1206 +torch/include/ATen/ops/lstm_cell_native.h,sha256=qZsF9RM6SH_V3-nNpOjCBtfHiXiz1qm2fb-tY0QGuqU,918 +torch/include/ATen/ops/lstm_cell_ops.h,sha256=Ri-TRhMoB0bVDdDJeBR2uvzJrWUJ4CvKSzCuk0kcF4c,1821 +torch/include/ATen/ops/lstm_compositeimplicitautograd_dispatch.h,sha256=oo1bsfEuBqdy5Xdw8mf-WqpkZaGO5tuO4RcjXfqDoro,1445 +torch/include/ATen/ops/lstm_mps_backward.h,sha256=nq72DjKGxZ-m7Uscrn_C1Eo9uLWp3zFiVYVQSlr6g94,3929 +torch/include/ATen/ops/lstm_mps_backward_compositeexplicitautograd_dispatch.h,sha256=S7mc68XXvZuqszph4aR_aVKPXXqxpPDuJuzvj3ioKfM,1967 +torch/include/ATen/ops/lstm_mps_backward_native.h,sha256=Wlag0V4q0C_u6eEwlKToBo6HVDJrBQo3GEkGIOAiiEk,1177 +torch/include/ATen/ops/lstm_mps_backward_ops.h,sha256=MEalpRoQvChUtS9wdMlx5D4umvciq4Rm6QsfcB_2eBs,4688 +torch/include/ATen/ops/lstm_native.h,sha256=JJ1efTBefLuAICX2t0CqMOF-UyKU8lRaiW2PD65yGKc,1157 +torch/include/ATen/ops/lstm_ops.h,sha256=9cUtntGblA0Lfk6XMkp6adhPD5XqFI7kRX3gNPWg1kY,3011 +torch/include/ATen/ops/lt.h,sha256=pJM_QUThaUSVrMwYAiWvP-hvpCZwBwi0_o15X4OLdFc,2096 +torch/include/ATen/ops/lt_compositeexplicitautogradnonfunctional_dispatch.h,sha256=0ql3-9FWLwNopQf502-k391RocBo62upxdmYTh1lrM0,1288 +torch/include/ATen/ops/lt_cpu_dispatch.h,sha256=Gkayne__OEdU-jOP2_Qj0HzgNPwfkK6Hm_QDk_sFryQ,1620 +torch/include/ATen/ops/lt_cuda_dispatch.h,sha256=JVjXzeuGAJnRxAxnojF2XRg3kXKWSCGo65cHHsec8vU,1622 +torch/include/ATen/ops/lt_meta.h,sha256=tLPOYvSg5YXSet2D-MKkmqkVRIgV3jnVoF6NDcJISfE,989 +torch/include/ATen/ops/lt_meta_dispatch.h,sha256=P0d_sAgOfKDAger7m_1dYvw5-BlljzGpqOkZGPoA-Fg,1622 +torch/include/ATen/ops/lt_native.h,sha256=u8FZvO_Oz7sj3-SxkV1H5_ggoKb1-XjwfNOG2qz78WQ,1459 +torch/include/ATen/ops/lt_ops.h,sha256=QpVL1mJUMd3HclW1dzIE3o_MLOBJzyUdgPjlS4WVw8k,4455 +torch/include/ATen/ops/lu_solve.h,sha256=gUMqtLx25YQdMV_TYceuOI31LZ3X08l5urnieFbckj4,1637 +torch/include/ATen/ops/lu_solve_compositeimplicitautograd_dispatch.h,sha256=NiRiMBRYPIlFRtu2iPtjqUPECt6qMQjynjIktLecwKk,1355 +torch/include/ATen/ops/lu_solve_native.h,sha256=HEthPORZztgozQYyxQQgYmvMgFYM05vnxx2FR6AiRTM,928 +torch/include/ATen/ops/lu_solve_ops.h,sha256=5CiFj94sZeb7yyTtRGTdmuH6bDwROReuAvqbCGQHtso,2193 +torch/include/ATen/ops/lu_unpack.h,sha256=sf9UQ9XXv6OECLmAZCdANrSwCpER9AU3rapkKfyqYB0,2201 +torch/include/ATen/ops/lu_unpack_compositeexplicitautogradnonfunctional_dispatch.h,sha256=c0m1UHGkOIpgqENEwrJ2DAPySp0aEcP1_9sdtV2mvOY,1164 +torch/include/ATen/ops/lu_unpack_cpu_dispatch.h,sha256=UjFauGJ1LEh-1DUzBCBho03FN9XZM4uPL9QziahKmwA,1549 +torch/include/ATen/ops/lu_unpack_cuda_dispatch.h,sha256=-4hA4j37aCfZWWdPkZwNhxyEt-8y05bXsSicyeZ88vw,1551 +torch/include/ATen/ops/lu_unpack_meta.h,sha256=lW8JM5YQAkeZvANUEadeJJ-oVRk2_FoSamer5Xj3Ab8,895 +torch/include/ATen/ops/lu_unpack_meta_dispatch.h,sha256=nlVYF2pvH3HaLoImdzGdH3Wp_BhHs2nUlJ_DeBq2N3s,1551 +torch/include/ATen/ops/lu_unpack_native.h,sha256=Cul8PAQB06yLf4kK4QbpGsOLCsCKfwUcWqH8EKCA4oI,972 +torch/include/ATen/ops/lu_unpack_ops.h,sha256=YKpNT47IfgZneVIfWkuzBB4qH259_8tguWBFJtIyIu8,2703 +torch/include/ATen/ops/mH.h,sha256=pbNrcfKRz-DtptslD6_oOhJh2dQ5_zJP9f1TxcbtwcE,753 +torch/include/ATen/ops/mH_compositeimplicitautograd_dispatch.h,sha256=5c7p1m62IDlFqSdC-EL-1DJYg3QO6d6mRKcOdWGwcYs,1014 +torch/include/ATen/ops/mH_native.h,sha256=grLNKNYYBR6simKgZ_OgIR03IycJfmB05YYQRfOpKaA,726 +torch/include/ATen/ops/mH_ops.h,sha256=DzFMYyTHKnfMWAoprPBlwTkTSap-CNMmwA-a7bXPuoU,1205 +torch/include/ATen/ops/mT.h,sha256=asgp9Kiafnhz0RwllEkh2US0r-y7kxtQfR8WNjcG0-w,753 +torch/include/ATen/ops/mT_compositeimplicitautograd_dispatch.h,sha256=0pOR0xayTRUR4ah9abHsQ9E8-P71Udq0ZjMhueyKPZ8,1014 +torch/include/ATen/ops/mT_native.h,sha256=G62vhGJK_48ZVkW1uArLuBD2IjsdzUIuZS_V342y1K0,726 +torch/include/ATen/ops/mT_ops.h,sha256=G9gruuYoK9zVidxmZIktforSmwMJGdgTkacUUf22M9g,1205 +torch/include/ATen/ops/margin_ranking_loss.h,sha256=PFLMchhpdbTzDMXkLVD8oi8tyGc-WaSOd4YXxn5TwVg,1164 +torch/include/ATen/ops/margin_ranking_loss_compositeimplicitautograd_dispatch.h,sha256=_-8nLE6Hx_cIGR1rCD67voOMYmep-s3Nr9V6g6f3hsk,1145 +torch/include/ATen/ops/margin_ranking_loss_native.h,sha256=d1WrPBpG_A0Lj9uuzEGjIx6FYHOffTfNkms1kHZp32k,857 +torch/include/ATen/ops/margin_ranking_loss_ops.h,sha256=gK-5f3inySwwtdGgjxiFf5KrZfKww-BfCqVt73t2vcA,1557 +torch/include/ATen/ops/masked_fill.h,sha256=orT5D32DYTLYqOPvh037zzMDUwLj0QvPNQLx_KQAjaQ,2531 +torch/include/ATen/ops/masked_fill_compositeexplicitautograd_dispatch.h,sha256=JOPu-_EcrDfa4WROicheidtzasK15rKeEHGMi8RxJZ0,1722 +torch/include/ATen/ops/masked_fill_cpu_dispatch.h,sha256=PiQxtYy71JJWagCkfWRI-DuAjCjI0ezG4wvU_hxfk2k,1134 +torch/include/ATen/ops/masked_fill_cuda_dispatch.h,sha256=ZuhxwuLPH46NygQwFnRa6_EBCoVOJJZ3-mn5atykTeo,1136 +torch/include/ATen/ops/masked_fill_meta_dispatch.h,sha256=o9tTd4hsl8qOKlA5aaWUUGeIpCaR2y6QMZynrKyCdjU,1136 +torch/include/ATen/ops/masked_fill_native.h,sha256=gGVcfz43gSuLsAFr5mNcjtlAGQh-7K7lrE1YOHxg1VQ,2233 +torch/include/ATen/ops/masked_fill_ops.h,sha256=8iEbhJTqeLCTswUGNpFB7HJePwdTYMip9xsXTOYikoo,5115 +torch/include/ATen/ops/masked_scatter.h,sha256=a9U2m2OIIhvA3gZTrUHWzMKyDMKp1OushwVL6-Y_KyE,1643 +torch/include/ATen/ops/masked_scatter_backward.h,sha256=7sN_0PMkcnXlQFlY16zKzCPa-g7ZvQ3_B8W7flMV22c,2044 +torch/include/ATen/ops/masked_scatter_backward_compositeexplicitautograd_dispatch.h,sha256=yLAVLFUAzozW97x7RpoAiD-SUxj20A4D-IaM5mS4uh0,1227 +torch/include/ATen/ops/masked_scatter_backward_native.h,sha256=PM8ZAvzFXjEuS7ZPjP4NuzEd7K5fbUkfRpNKmX_69Ws,813 +torch/include/ATen/ops/masked_scatter_backward_ops.h,sha256=ZFIWw7eIDsz7EHFgkXXW5BbQPVYnb0oPGuJzyKJ8l4o,1457 +torch/include/ATen/ops/masked_scatter_compositeexplicitautograd_dispatch.h,sha256=Fs9RcwUfI7nij7Yl6TPtXjsaIfBppxCDpQI0whYygs4,1355 +torch/include/ATen/ops/masked_scatter_cpu_dispatch.h,sha256=74enrbznF6YmkbMJc3uVuEMOgq7hrRMDufsQQs-B89E,1031 +torch/include/ATen/ops/masked_scatter_cuda_dispatch.h,sha256=ywRIoNAQ6WHmUm5XdHikKKGQgk50ooaJq5nORaqO188,1033 +torch/include/ATen/ops/masked_scatter_meta_dispatch.h,sha256=eglldQYSep8hKmPwy3r49fS_bTzgqbot1f-jS1AIqUI,1033 +torch/include/ATen/ops/masked_scatter_native.h,sha256=RD0R9pqIpzfNY_IUPu4ilMtIvxuNLpn9gJgAzkYqC9s,1159 +torch/include/ATen/ops/masked_scatter_ops.h,sha256=zR_uyGmrNBoclDVhOOczAqkmvSyunWaKYsx4MA_jx5M,2888 +torch/include/ATen/ops/masked_select.h,sha256=35nj-D4EHuABztDY3A2jq0meqZxh6BROXY1_Yadc5oE,1483 +torch/include/ATen/ops/masked_select_backward.h,sha256=Rn1ubEOG7XpYhgA9GGVCk31RJA2bAIEX4jIvHD-mPpM,1046 +torch/include/ATen/ops/masked_select_backward_compositeimplicitautograd_dispatch.h,sha256=kAYmFlfvkQC3w7byIJXLuKYayV-q2a0yorrMX6JJers,1085 +torch/include/ATen/ops/masked_select_backward_native.h,sha256=yJnZ8KsWdHwn9TG_cM7Tzcd-1-zniIKKj5SubCraEc4,797 +torch/include/ATen/ops/masked_select_backward_ops.h,sha256=SqZLGB0h1AXNltai_muPXsVmnDJ4rUP2jHgtVn43Ikw,1428 +torch/include/ATen/ops/masked_select_cpu_dispatch.h,sha256=CVOrGgxffjmefDE4ol_cbs0WVjQymCTFlnfzC5BXcIs,1227 +torch/include/ATen/ops/masked_select_cuda_dispatch.h,sha256=tputscIuPHtyViFhoUY0i7LIbkfpSRjOlSZ7GMmIgJQ,1229 +torch/include/ATen/ops/masked_select_native.h,sha256=kl28b0787rMCrLFBg1pdptB-xp3B9hMDtSMZla6nw7E,1086 +torch/include/ATen/ops/masked_select_ops.h,sha256=6JxuLlGclmcjBkpU37azlpm-3Onh2sldEB4xpaKrbuA,2009 +torch/include/ATen/ops/matmul.h,sha256=jaovUb9XTwqKE27kbctsdJD0gqmAzIJZBasYMp0gPAw,1422 +torch/include/ATen/ops/matmul_backward.h,sha256=ullOJa7sUxUo2jxR1MVlt8Cm9x19Zgof9nyhQjKuzuQ,1992 +torch/include/ATen/ops/matmul_backward_compositeexplicitautograd_dispatch.h,sha256=zjWedAfyxYniZthVD21CtctrVy7nPSriYAN_OobwrlU,1389 +torch/include/ATen/ops/matmul_backward_native.h,sha256=nNmp-C5gxNU7xMfkpuASxuOIH_uAwbKJUq6QNaIv5CQ,1061 +torch/include/ATen/ops/matmul_backward_ops.h,sha256=2nKXYY2acX_eQ7xX-r3wLkG-Vni9Obpuk4fGJwmEKAQ,2625 +torch/include/ATen/ops/matmul_compositeimplicitautograd_dispatch.h,sha256=Q5RMaHujLUx5jnNrv0t9E-Cs23SBFWZozSiFjvFrAyg,1253 +torch/include/ATen/ops/matmul_native.h,sha256=Zz9dnwdj3Uwio5KhA3KhRnQdqHGYtHiSbFHr_7qxBQo,1058 +torch/include/ATen/ops/matmul_ops.h,sha256=UwYR5wSUYHT6IAcgrpAreyoIjBOBb72Bd4P8LDRf5r8,1973 +torch/include/ATen/ops/matrix_H.h,sha256=sZ73InVoI6GVyw7j-twzKeJTL97Gv5qSghZAps97PLA,759 +torch/include/ATen/ops/matrix_H_compositeimplicitautograd_dispatch.h,sha256=JPmH-207ngk4S-UHHR25ePZyzDh6XHpGuVWHhYWKZVg,1020 +torch/include/ATen/ops/matrix_H_native.h,sha256=ARYclGs5nIcEvL8YJ4lo1Buw28Ls4H2RdOv92yD8Zyw,732 +torch/include/ATen/ops/matrix_H_ops.h,sha256=fmyA9eNELzU30vgLZNdgVD3jWAUkVyGOCszpxh1SI7A,1223 +torch/include/ATen/ops/matrix_exp.h,sha256=IrzitVtO0-BND4KUrFOvCq8_Knex_3EAdCeiCqKMyfY,907 +torch/include/ATen/ops/matrix_exp_backward.h,sha256=YrGWftbIT2b5dIiKfrpRfZAiSXxM8MtBGGy4UVOwGd8,987 +torch/include/ATen/ops/matrix_exp_backward_compositeimplicitautograd_dispatch.h,sha256=cUZHMzZN2wCjwrfPc-OadcSORBXJ3-QstLtIKdkvS7E,1056 +torch/include/ATen/ops/matrix_exp_backward_native.h,sha256=iR-evb-MdJb2m8qjJ-Tgvu-SAuBtFqANn8LnRd_sKRQ,768 +torch/include/ATen/ops/matrix_exp_backward_ops.h,sha256=n6GP8TRN8cJaiZ-v4Phmc736aUIuNLowspayB_FQR1I,1333 +torch/include/ATen/ops/matrix_exp_compositeimplicitautograd_dispatch.h,sha256=4BtDf0tsCCvsbvo5OV5X3lPaefvaNna3yq_Ss8wSuSw,1022 +torch/include/ATen/ops/matrix_exp_native.h,sha256=tXFiZgSZWGJL_pXmMN4NmCtbq7n-_wffVqWW8bSIgpE,734 +torch/include/ATen/ops/matrix_exp_ops.h,sha256=IowmHVhsp9I5Y_EyxObyGYuQeN_e5UjHmAi_7urG4ew,1223 +torch/include/ATen/ops/matrix_power.h,sha256=jh5c8AoNqfTsA4pT_bh-FXd2RJU4iQTthmUi0Mm4mzc,1404 +torch/include/ATen/ops/matrix_power_compositeimplicitautograd_dispatch.h,sha256=KylM42hSOfvhT8ubTXCqFzOL8HcMaQJ_72S0ODedcd4,1226 +torch/include/ATen/ops/matrix_power_native.h,sha256=f9blx8Wi0WJVRgZ4mntZZ6Pk7nz0Q_E4ee1hrXG2le4,842 +torch/include/ATen/ops/matrix_power_ops.h,sha256=-oxUv7NCbE62rMAXBr6ow-C2QCpje87cccjY-LyPk5I,1913 +torch/include/ATen/ops/max.h,sha256=u6W-s70uWyYj5XCHSogMJXAKJnaLPR3gCVawinI7AOo,4038 +torch/include/ATen/ops/max_compositeexplicitautogradnonfunctional_dispatch.h,sha256=HXAIBO5ZdfZ-NErR0BDkLAowo3MIanL3FkNR0Li9J_A,1099 +torch/include/ATen/ops/max_compositeimplicitautograd_dispatch.h,sha256=MWm7p7t5tS4e8-l3xC_n775KvuYLhZ6bxAeUfdxT-CI,1680 +torch/include/ATen/ops/max_cpu_dispatch.h,sha256=5eqgzJt7R4bFmmsHH325G0r2VSWpg_YQzXpxJEoZSaQ,1546 +torch/include/ATen/ops/max_cuda_dispatch.h,sha256=47h3noNEiY9uY_gZduq0P0Jv2S_OHNWQcH-aYgKd6KI,1548 +torch/include/ATen/ops/max_meta.h,sha256=BNDgonEkZb_vWkzEq7PnTm9a7qpMbEIXEKA4LZ3Bs9M,1291 +torch/include/ATen/ops/max_meta_dispatch.h,sha256=8PIbjPimZqMXco05kwJkH57gH-GPESaB-vYIFnRVJMw,1346 +torch/include/ATen/ops/max_native.h,sha256=58jeM65cL9sUxeWhhOCRT8qK0_TyILCfcz6mqmcfmR0,1750 +torch/include/ATen/ops/max_ops.h,sha256=kilNHwJo9Q5R-Q7Dm5G6naIXKeI6c3pNY1Z83ywHfw4,6306 +torch/include/ATen/ops/max_pool1d.h,sha256=3nLsOLETqlqJHxeayvmmEo7M9G6eQW46kMp9AyxsVxE,1188 +torch/include/ATen/ops/max_pool1d_compositeimplicitautograd_dispatch.h,sha256=Owf8WVpvZsd6SZx-K8LtitQzbFPfP3x4AxVA5WUWnP8,1155 +torch/include/ATen/ops/max_pool1d_native.h,sha256=PIlVY8KDWNiTtwDT1RrJ-Z1hygsq6W6DIEDYvvXcdOU,867 +torch/include/ATen/ops/max_pool1d_ops.h,sha256=HDcdY2PyLvDhF14kR-px9cCTgh8yANh4fJq45f5RODU,1634 +torch/include/ATen/ops/max_pool1d_with_indices.h,sha256=Tp0jZ0OcxG3IjVyobYp6KvcZoD76R_k_RUcskzAbuSA,1275 +torch/include/ATen/ops/max_pool1d_with_indices_compositeimplicitautograd_dispatch.h,sha256=J4DwKwdv8lDc_UQN2CIUCe6BeEk0RgkGCowCZs-Tpi8,1193 +torch/include/ATen/ops/max_pool1d_with_indices_native.h,sha256=SpLGau3sXnn92j7aZ7blLbQ7GLhPM3dzNmY3nO30vAA,905 +torch/include/ATen/ops/max_pool1d_with_indices_ops.h,sha256=tkZs4MuIebTLJ-w1HUFLVfFqGkwVxZvB3X63D6Cta3Q,1758 +torch/include/ATen/ops/max_pool2d.h,sha256=73-9YM7nwbkayq09YNV1lTWLIe8abeWFNYWldNZOr6k,1188 +torch/include/ATen/ops/max_pool2d_backward.h,sha256=HOeg3hpbmfYolMD7Z_7eH_rHzbedMVnz_I3EV5-G-Us,2436 +torch/include/ATen/ops/max_pool2d_backward_compositeexplicitautograd_dispatch.h,sha256=7aFxvT8NWsyoOSje32j0Qjp2BvYRB583zInkYNPWIFA,1464 +torch/include/ATen/ops/max_pool2d_backward_native.h,sha256=lDGs7P8EAQje5FoajByzdOQsRurBYis060R2RjQB10g,919 +torch/include/ATen/ops/max_pool2d_backward_ops.h,sha256=v_1jOxKJEyL70E_lGOri-42XLY8WHjxrb1us1iduAPA,2909 +torch/include/ATen/ops/max_pool2d_compositeimplicitautograd_dispatch.h,sha256=4bRNk_juojizScxd8SSSYrMtp_R4S231zdVWE8GvVgU,1155 +torch/include/ATen/ops/max_pool2d_native.h,sha256=F9EUWLoNlKvNEMxiTKQCjFPKEedoy6gBz-I39DXBVt0,867 +torch/include/ATen/ops/max_pool2d_ops.h,sha256=_Qnsd_7AQNZNL5SPzC9S0u2ntaDZDeG3IruAGNTKsQs,1634 +torch/include/ATen/ops/max_pool2d_with_indices.h,sha256=wJ_eYaqc9gkjm8KOFWjc4nlZG0yykKBgBL5YrF5WA8w,2500 +torch/include/ATen/ops/max_pool2d_with_indices_backward.h,sha256=p3siom_wNOWepDPBXYxuD2q1fKF6LSlLuU5YuxV1W9g,2730 +torch/include/ATen/ops/max_pool2d_with_indices_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=3EQunEvLzt83_Mo9wuoTg11wBWMTSj4AysdKDy9TgQc,1250 +torch/include/ATen/ops/max_pool2d_with_indices_backward_cpu_dispatch.h,sha256=n0Qk3hxtHaigNSCh0Gc-cX3fsPUALgCiEWGFSNphA74,1763 +torch/include/ATen/ops/max_pool2d_with_indices_backward_cuda_dispatch.h,sha256=C4VeX5BS7hQprkWg3e8m7tIUZJvpCHr8TGhsFU9e0Xw,1765 +torch/include/ATen/ops/max_pool2d_with_indices_backward_meta.h,sha256=1H63oFP4OxZPMUaXcvBZn1ne2kzKQWvsSYNK54JruvI,1027 +torch/include/ATen/ops/max_pool2d_with_indices_backward_meta_dispatch.h,sha256=KlHDoAP_PPOhUBRFlXWU5IlCxQLQDloYnhDIg9JcwfI,1765 +torch/include/ATen/ops/max_pool2d_with_indices_backward_native.h,sha256=0cLzUSly6lHWsQewAdDZPwHv5VmpgE24z5FXyCrQrZI,1504 +torch/include/ATen/ops/max_pool2d_with_indices_backward_ops.h,sha256=7-QLg3POJ2k9gW9pYrxoxgOm1dApJdV98jFWSqPRRGw,3187 +torch/include/ATen/ops/max_pool2d_with_indices_compositeexplicitautogradnonfunctional_dispatch.h,sha256=fRT-3r6eZWGGrB3wTqldhlfYjQzylGwRgbvmgT5-hpg,1219 +torch/include/ATen/ops/max_pool2d_with_indices_cpu_dispatch.h,sha256=7bNB-17Ht8XSHAwI1bVVIACEUGy35qJpi1_ZWZL9TM4,1691 +torch/include/ATen/ops/max_pool2d_with_indices_cuda_dispatch.h,sha256=bax5HkuBGFlPKpwLSk6PjRHoIzGkT7gTnw3zPXmXOqc,1693 +torch/include/ATen/ops/max_pool2d_with_indices_meta.h,sha256=K-dBuTS5cjtPfm0exSzqbhED72MZ9UDcbHT-Uymp7GY,958 +torch/include/ATen/ops/max_pool2d_with_indices_meta_dispatch.h,sha256=BVXVjT4iuhk-b5UyH22LYBLGmi01iLgAlbj9pg_4gng,1693 +torch/include/ATen/ops/max_pool2d_with_indices_native.h,sha256=71QmJhhxp_LBOXYk3NHvNX6tewGGlxuoCDterf0PAjc,1381 +torch/include/ATen/ops/max_pool2d_with_indices_ops.h,sha256=UJ-qIvjbH03fo3D05uMjkoj_edto82xV0pIp7aG8uxw,2983 +torch/include/ATen/ops/max_pool3d.h,sha256=gWR3wqBoVSV5JTE4zo8qHQ_8tcCSa9YsfKOGGmWoqf0,1188 +torch/include/ATen/ops/max_pool3d_compositeimplicitautograd_dispatch.h,sha256=uWPnZeRFJCRvisbsPGmVA_MM36OHxRUARFTaWooAcxU,1155 +torch/include/ATen/ops/max_pool3d_native.h,sha256=zwc6Kjp7HG2YfbCk6FL8t7ddJ1glXQcOt_aREmansVI,867 +torch/include/ATen/ops/max_pool3d_ops.h,sha256=MyQ9hSsLCk_bOrZmfphMceF1sCO41SCuQH_FBlXePwM,1634 +torch/include/ATen/ops/max_pool3d_with_indices.h,sha256=bbRLAlAWoOemhxBjvJAA6yKVEt4JjvP7gTPB9oN2ULM,2500 +torch/include/ATen/ops/max_pool3d_with_indices_backward.h,sha256=eT533Cy4gRumLT5B4HbZoZ9Y8unad6tU9b-Bu78XAT8,2730 +torch/include/ATen/ops/max_pool3d_with_indices_backward_cpu_dispatch.h,sha256=XDYGz30WNKWS4IHAzQsgh5mWFWCjAtLJs1BNyuMVLf8,1763 +torch/include/ATen/ops/max_pool3d_with_indices_backward_cuda_dispatch.h,sha256=vRwyLOQtrbJXPV2o8NWKXrRVS6NrsFKvB1JOCM5y7gA,1765 +torch/include/ATen/ops/max_pool3d_with_indices_backward_native.h,sha256=h354nw1axCC7D4mjmN7aVQaA3cDND52aIKW0CilX7QU,1796 +torch/include/ATen/ops/max_pool3d_with_indices_backward_ops.h,sha256=sjgnQZt-grP561wvS9woaJ8irMck6ERjDmuQwG-B5SQ,3187 +torch/include/ATen/ops/max_pool3d_with_indices_cpu_dispatch.h,sha256=IXn52oYMyeg2jTnpT7dbfMKR21rnyCImAsrDZOcOAOc,1691 +torch/include/ATen/ops/max_pool3d_with_indices_cuda_dispatch.h,sha256=hkXwUEl7iI9etz5kMSMuUkmhbxdJrm6WtjQ6nQFiw1M,1693 +torch/include/ATen/ops/max_pool3d_with_indices_native.h,sha256=fZDueaRIdMVuNSttagl4eCUBIOPRE3yVCW42GpipEiM,1680 +torch/include/ATen/ops/max_pool3d_with_indices_ops.h,sha256=XAtkzJTtnbXmMGkyh0zexvRJ_f6ExcB8iYl6JGZB290,2983 +torch/include/ATen/ops/max_unpool2d.h,sha256=SXqQHj_pfv8qhMqfdvC4_ugC6dzdQVJ84MUz9HhgT48,4687 +torch/include/ATen/ops/max_unpool2d_cpu_dispatch.h,sha256=kFQZz9kAjLOaAPAZvkrRHCW8QToKLGQKlnErtReyxZU,1753 +torch/include/ATen/ops/max_unpool2d_cuda_dispatch.h,sha256=cnEIQEG4PmJQtJd1rsagUC-QNzZoZyaAob62xOhu0aw,1755 +torch/include/ATen/ops/max_unpool2d_native.h,sha256=RMDXXGJUZ7TJ-xtvMgXWXOKJZZdP8FuAhppC1wYjJ6Q,1254 +torch/include/ATen/ops/max_unpool2d_ops.h,sha256=o4Mr5UYs9sCNU9cXNPWzMNEbhlgZu_ktyhPlSL3T5AM,2241 +torch/include/ATen/ops/max_unpool3d.h,sha256=VfwcR-ZKW3i81SNiV8c5kIFybRG-ZW1LDVfiMWkpKFE,5665 +torch/include/ATen/ops/max_unpool3d_cpu_dispatch.h,sha256=o2SA5rvkgBRyoYOeoQFMwtXjW8sFKBN65R-eAOIk2ek,2047 +torch/include/ATen/ops/max_unpool3d_cuda_dispatch.h,sha256=uQoqVl7msihpXZ4KC4_2o6fv8kOn3fWamV39jboB1_Q,2049 +torch/include/ATen/ops/max_unpool3d_native.h,sha256=IZ7PFVKVBmMqDe2yagvU4LkmVTnBD4IJYGhb0VrJzPE,1450 +torch/include/ATen/ops/max_unpool3d_ops.h,sha256=gLtHwsWUnr2dNVOIxcDDKGJGvAFRKWi6s3R0-3_rBuo,2567 +torch/include/ATen/ops/maximum.h,sha256=zT515n3Qi4kj6tSiLH8DMN5hWsLANZttowF3GxaO1Js,1432 +torch/include/ATen/ops/maximum_compositeexplicitautogradnonfunctional_dispatch.h,sha256=4flFPhuJ9-ev43Hm6d_oU4jC6c1IzKjoSd5Yl_JMfNU,1071 +torch/include/ATen/ops/maximum_cpu_dispatch.h,sha256=8TAv6qXCmqcxHNHQrDLzcCqWF0dMqxZPyN7t-E763eo,1212 +torch/include/ATen/ops/maximum_cuda_dispatch.h,sha256=1kw9IfbFRVgQlmE2XT6FonYyyp4xfeB9zGpUCgo1O7w,1214 +torch/include/ATen/ops/maximum_meta.h,sha256=OQssgHUq5hhgOZP-Fold8yuif3_5Q90zCvxC8WFo_uI,848 +torch/include/ATen/ops/maximum_meta_dispatch.h,sha256=iVnmEUJwht-AQ1nhTnyq65uKHzqfvcIABznPC_mHBpc,1214 +torch/include/ATen/ops/maximum_native.h,sha256=jPnmvvnlaxQdnHcJG1evFw7gliZdtJrIdg_BLr8wCkM,879 +torch/include/ATen/ops/maximum_ops.h,sha256=M7mjEkAzeqiRQ2rYhvx5k0Y4trrGzWHcdYcOJoYIY9U,1979 +torch/include/ATen/ops/mean.h,sha256=M3XzIkrNYLjyqaLcnqM9lePTKEVeG3UFPSwCHDPC9dc,3629 +torch/include/ATen/ops/mean_compositeexplicitautograd_dispatch.h,sha256=kONrR20k3MH6fuRoctEvnhCCDzYvoeF0DmrKhdM0jRI,1316 +torch/include/ATen/ops/mean_compositeexplicitautogradnonfunctional_dispatch.h,sha256=PTi35X_c5u6Ufv808yBTPyQq3cb_FigOAv7Bd1kXuAI,1145 +torch/include/ATen/ops/mean_compositeimplicitautograd_dispatch.h,sha256=nlvGAcXdxh6YZ-eUZwGhd4rFyusCiqCPUsCo_NPShNU,1433 +torch/include/ATen/ops/mean_cpu_dispatch.h,sha256=Wexg4e0TlQsSCgKLDs08EjWV682boy6u5d0Xvx6WJbE,1413 +torch/include/ATen/ops/mean_cuda_dispatch.h,sha256=ZAAwc7aSRD_meR_sT3D8yzOFxF-FhcPMflHuIzp0fyk,1415 +torch/include/ATen/ops/mean_meta.h,sha256=cVslIWJxSriwnjCQ8pi3tNaYC6gPhl8dP68ggE5B5zk,905 +torch/include/ATen/ops/mean_meta_dispatch.h,sha256=C4KAHwNCxwZbMJLaKii2r4tn_jglUcWAW0i08tLGIzU,1415 +torch/include/ATen/ops/mean_native.h,sha256=BsA6hVwfBogM3KdUdhb88e0V8-Ez1VvCnPagzE0QEuw,1795 +torch/include/ATen/ops/mean_ops.h,sha256=oQiKOVLKFEwKhRWrnZ1Lc65KZbNI9cPUuK5HUsPtG9g,5398 +torch/include/ATen/ops/median.h,sha256=-CpiD6nMX9An_sNDwZ-Eqj2uCM8iRNVAHjr09QCFQXE,3471 +torch/include/ATen/ops/median_compositeexplicitautograd_dispatch.h,sha256=TI_cc_DVPuPHPcM0OnmGt1yZUIwIt8YkpfYfkCZz-IY,1233 +torch/include/ATen/ops/median_compositeimplicitautograd_dispatch.h,sha256=sLFHsWid9Ja80-AujVohrOw8TXIqC8PblhCPD1vohsI,1409 +torch/include/ATen/ops/median_cpu_dispatch.h,sha256=hlYLTs9fsev6FhdQ_4TbjWCZKCR05_Yg6oIpNKYZ3ME,1295 +torch/include/ATen/ops/median_cuda_dispatch.h,sha256=1qEEeIs8xcWESIdEKkYEk3lVH2LhUejoMhFb2T2OTC8,1297 +torch/include/ATen/ops/median_native.h,sha256=mnKsszWgai55f99JzhFBUX_KpDxYcSliAUXZMIZeZLc,1583 +torch/include/ATen/ops/median_ops.h,sha256=pylvwOb-SfpxwF3pe4VkIkXJPwLiETHv_BwIPqh_9O0,5099 +torch/include/ATen/ops/meshgrid.h,sha256=1ltTaB7X83B4AEsR6imhOHMJSzg_frPMqgNQCEzbQ3g,1160 +torch/include/ATen/ops/meshgrid_compositeimplicitautograd_dispatch.h,sha256=HxALCti4vu7xjxQt-ZOw3rgvMUO1kYOElv3A7DIKO8M,1131 +torch/include/ATen/ops/meshgrid_native.h,sha256=LBo7w0u98i3b7Lez9p6l_5stVlmyjqozMECwFulp6bc,843 +torch/include/ATen/ops/meshgrid_ops.h,sha256=1f1FUppy8pFB_V9LTzPl4omXhz7W1zRwrxB_Ov2ktFc,1930 +torch/include/ATen/ops/min.h,sha256=cpQaPcuKLF49h-qZbcaL83Zl5Vs73NrRoYeqLkbSta8,4050 +torch/include/ATen/ops/min_compositeexplicitautogradnonfunctional_dispatch.h,sha256=qyB7Evfb7kH0qzYBPggbSLSYYzh5mBYWfN2vTlRavuE,1099 +torch/include/ATen/ops/min_compositeimplicitautograd_dispatch.h,sha256=k_92397f52BLK-eYf1AFKqV7dKRiEyAJVLYjK7jex6A,1682 +torch/include/ATen/ops/min_cpu_dispatch.h,sha256=Gws1QIdqhoEhHohdeUJfIIJZ7_W6wNUAqdSYJJWC3aM,1548 +torch/include/ATen/ops/min_cuda_dispatch.h,sha256=uGwQzJQZOD43VrYLsrcdyWBlNRPjqSzPJCQ1Zj_fN-M,1550 +torch/include/ATen/ops/min_meta.h,sha256=L7c2brEm4cYFh4twYgUbGGwpyPSrmtB0qfzMR0tsJbU,1291 +torch/include/ATen/ops/min_meta_dispatch.h,sha256=Gx5ifqW6UYhdbvNaAROn7uTitXGrn6PJYyL9bbcEZmI,1348 +torch/include/ATen/ops/min_native.h,sha256=o-SyJHCO-j7xrNsXHcBi1HptilupVD5cTOsbc6dLT68,1752 +torch/include/ATen/ops/min_ops.h,sha256=WuJV8gZXdE239MPWCjsN9kKnOHREbOUofDrOskNSICE,6312 +torch/include/ATen/ops/minimum.h,sha256=FUDt-lh6oFoSDYPj1iAXt9sLE8Tbw15X9djlvu4nTyA,1432 +torch/include/ATen/ops/minimum_compositeexplicitautogradnonfunctional_dispatch.h,sha256=mB-yGMQp0Hcn6Bc7qYvgekts81y9jC-_m1ji_QmvU7Y,1071 +torch/include/ATen/ops/minimum_cpu_dispatch.h,sha256=3PHqMoGnakLvjSxPT2nSyVFk60XeL3I1PZHBttblF7U,1212 +torch/include/ATen/ops/minimum_cuda_dispatch.h,sha256=UycuTLvdhR0yBFccCvyujK-4RyK6pi9yfvJdi47bk9I,1214 +torch/include/ATen/ops/minimum_meta.h,sha256=7G43dicDfmmT7_vpOelCnfB93-EnL75tFUC7fu5vfRU,848 +torch/include/ATen/ops/minimum_meta_dispatch.h,sha256=DL-1qyViExwJqCumuADsyDpIcUlXr4rsalR3MtbadfA,1214 +torch/include/ATen/ops/minimum_native.h,sha256=VtLsZ2TFJlzItjCO0JJFNzopkUbFD2_Wgt-sEwePb7Q,879 +torch/include/ATen/ops/minimum_ops.h,sha256=wxxlHeTRW7dEzAmQOJyf-rZzPrqAL8SnRLjGOOoobjg,1979 +torch/include/ATen/ops/miopen_batch_norm.h,sha256=DzyIq51M_3hkcQ1OM_rRvbUdH8RO8oC-xatNRbCL9AU,3134 +torch/include/ATen/ops/miopen_batch_norm_backward.h,sha256=3yDrXJGrJ7knlKoeJWAJGkjgO7f6QXkIDDmvZt54PTY,3275 +torch/include/ATen/ops/miopen_batch_norm_backward_compositeexplicitautograd_dispatch.h,sha256=96k4AY0M1CvRNRIa02hOjCn69tXjTHxyfiQaZpRKLvo,1855 +torch/include/ATen/ops/miopen_batch_norm_backward_cuda_dispatch.h,sha256=pO6zsV44b4eCxlWbAzx5E4_KoKJ3vfekfOyvFPIfwJs,1300 +torch/include/ATen/ops/miopen_batch_norm_backward_native.h,sha256=BBkH9I9wCSsaXEUExxh8AvH0jetqr5MIdWxsEHskhro,1499 +torch/include/ATen/ops/miopen_batch_norm_backward_ops.h,sha256=WaFU082P-coTiq6fnzyA3iezG4qFY2m9zGG77BHh9W8,4060 +torch/include/ATen/ops/miopen_batch_norm_compositeexplicitautograd_dispatch.h,sha256=rXefiC1_CAOnPW5S2r3LAEzRYG1WADt-jkF9HwifNvo,1771 +torch/include/ATen/ops/miopen_batch_norm_cuda_dispatch.h,sha256=8eOzvAf3888L7tq9Gzrn2wefADtHv8FyVw6XpxfNfjY,1258 +torch/include/ATen/ops/miopen_batch_norm_native.h,sha256=FJc31fcwy8OKBiqQ0knk2HuymsbdztO_rvNdg-5pIWc,1415 +torch/include/ATen/ops/miopen_batch_norm_ops.h,sha256=DobfZ0Tu_CkFVQBLr1mxMhiy4WdMpxuy2NmMPRsJlh0,3800 +torch/include/ATen/ops/miopen_convolution.h,sha256=vjoINAGOchonGjck1FZKRpJFUYRz4xUFBsv5G9d4b80,8131 +torch/include/ATen/ops/miopen_convolution_add_relu.h,sha256=F0y251lqFpkSQqef62fejd0fADpCGO5ZKBx-p4-QKHw,3226 +torch/include/ATen/ops/miopen_convolution_add_relu_cuda_dispatch.h,sha256=bu5l12qrnHxIQVwNveklWAoBAo03dppr-7nyemlB8wM,1545 +torch/include/ATen/ops/miopen_convolution_add_relu_native.h,sha256=gpPtRnqa0sH34uJ_M_uCSg6hm15hViZwGFwJpvJPZkU,976 +torch/include/ATen/ops/miopen_convolution_add_relu_ops.h,sha256=seInneUD30AZD3gHY01ukWrXIsyfmaA8L-FuUfppcDE,2069 +torch/include/ATen/ops/miopen_convolution_compositeexplicitautograd_dispatch.h,sha256=lPwmtmEHqU3aVSYlLsTpwQEwbNt2hZU25ABprebKKCo,2156 +torch/include/ATen/ops/miopen_convolution_cuda_dispatch.h,sha256=1HVsX8rlHcDcqVP_7KHpM2uu8bJICXQKWoGOlg5RZII,1469 +torch/include/ATen/ops/miopen_convolution_native.h,sha256=muxW44VLb-MeR-SXgECLJEU-LdXQpHM7DvJQhSButyE,1247 +torch/include/ATen/ops/miopen_convolution_ops.h,sha256=wNEFCcc4tyCAx_lWcIXiDWxiWMWKgp_fuUrLnzyu1lE,3279 +torch/include/ATen/ops/miopen_convolution_relu.h,sha256=ZmSOqx-_t7rIjCkWBBTJDbpbByfXkDCeP2i74ZVEB-4,2832 +torch/include/ATen/ops/miopen_convolution_relu_cuda_dispatch.h,sha256=dweI5j-729KqjFBMzvU6C0I8hRMEBWBy_MQP-zAS03k,1407 +torch/include/ATen/ops/miopen_convolution_relu_native.h,sha256=g4vie8NZArMRsAPoAYFt4lvGZ-tajxyc8ySJf6ETe7Y,907 +torch/include/ATen/ops/miopen_convolution_relu_ops.h,sha256=6pWF6RDYmS9-uxdWvjw8jRlfLDs-2qfNI699kIhcEPI,1845 +torch/include/ATen/ops/miopen_convolution_transpose.h,sha256=YDtjkwR_s7KHHQbj3isZwUzUwkwoOkm6nL35t_xtlV8,9347 +torch/include/ATen/ops/miopen_convolution_transpose_compositeexplicitautograd_dispatch.h,sha256=eYIHDkImHd-OHjf8zEtMIdwTeVyV4hq0z_Wsu6JiQt4,2332 +torch/include/ATen/ops/miopen_convolution_transpose_cuda_dispatch.h,sha256=iKQTuQMhQEdqdfslvCpsIzfDXKxcO2uMoXALoIeE9Ws,1557 +torch/include/ATen/ops/miopen_convolution_transpose_native.h,sha256=J9phkFMTErsYNOWG81I87uWBYtxXZyTB9ov9zveonjY,1335 +torch/include/ATen/ops/miopen_convolution_transpose_ops.h,sha256=Yvsp-RkddHerw5uNhoy8vyOHsYXPehBaDDjos8jwYW4,3575 +torch/include/ATen/ops/miopen_ctc_loss.h,sha256=odgd1sX6iSsNiFMYvoKDOVc2rJldKfBVV7PQeXB2UTQ,3189 +torch/include/ATen/ops/miopen_ctc_loss_compositeexplicitautograd_dispatch.h,sha256=v2Pe8eN6UGFUB-3KFgJShNB74GhSJ9IiFlSdS_oSLv4,1535 +torch/include/ATen/ops/miopen_ctc_loss_cuda_dispatch.h,sha256=c0_BQjXyFgGTgx0vkuOHaMANpmJW5iIggZ1v8Mjw1Bg,1406 +torch/include/ATen/ops/miopen_ctc_loss_native.h,sha256=oE8H3iITSdnswboq2r0pMt50fEJ8TT9wKmvc7jyekEQ,1452 +torch/include/ATen/ops/miopen_ctc_loss_ops.h,sha256=ew_NNjkxVpI1nw5wTykRzhi8h0dvcAiGohVHd33yL3Q,4235 +torch/include/ATen/ops/miopen_depthwise_convolution.h,sha256=z4zSRFUpNSv2s9cWEzxzhCgX79-aZ670McIPZsFhdgw,8441 +torch/include/ATen/ops/miopen_depthwise_convolution_compositeexplicitautograd_dispatch.h,sha256=1Kgn6-PIhsoXkDB5TXE8Itp3qaZBf9wRiwoF1h1S_E4,2196 +torch/include/ATen/ops/miopen_depthwise_convolution_cuda_dispatch.h,sha256=9DpqV4lwcaMN5eQ_V0RWrJm1DwlYb_KQx5FbceSe1e4,1489 +torch/include/ATen/ops/miopen_depthwise_convolution_native.h,sha256=TdogTUSlfr4N7EZfpzgneSH7UVftQOmpp7Oaoq-jS34,1267 +torch/include/ATen/ops/miopen_depthwise_convolution_ops.h,sha256=qiJwgD-5YiFL3NCsYbqh7FYJxBFflB-TCF_Pbes0hos,3339 +torch/include/ATen/ops/miopen_rnn.h,sha256=BV3xDqKXPpUpsVqkp9Iwv6rF_cxXVufO_LkRdr9Ae-c,3964 +torch/include/ATen/ops/miopen_rnn_backward.h,sha256=zfGDCwt7FjFUgZ3dfUhkYzDUhBte-KBIxHRDjF5sC6c,5086 +torch/include/ATen/ops/miopen_rnn_backward_compositeexplicitautograd_dispatch.h,sha256=uLUpCNO2POWiLhKPezkl3M56qmdG1Bzru6MdAowaX2U,2393 +torch/include/ATen/ops/miopen_rnn_backward_cuda_dispatch.h,sha256=5FF8zP9_dtYcDRPMUtQ5ZlS_b3AFrw55KXIa9mnXYv8,1622 +torch/include/ATen/ops/miopen_rnn_backward_native.h,sha256=blqOkjdqVyyBhhXMQLTfEaMUFZpE7kOkTozpNGVpAMc,2090 +torch/include/ATen/ops/miopen_rnn_backward_ops.h,sha256=lno9-oinrU5jZBY-vqSC6GeJLW6zis3XCSkHwFeX05Q,6001 +torch/include/ATen/ops/miopen_rnn_compositeexplicitautograd_dispatch.h,sha256=CY8RbdBm-kZILZUbTfozNnihIPqdWbNuMtjdp95SQFA,2039 +torch/include/ATen/ops/miopen_rnn_cuda_dispatch.h,sha256=A-dCGCveAi_2BouFnROF1uIXAsaP-oxoprLqYiCChS8,1350 +torch/include/ATen/ops/miopen_rnn_native.h,sha256=dsPfWLw9OurpYZ8YkPeLWUXbIGk7WtGVbOmf1wfrnPc,1641 +torch/include/ATen/ops/miopen_rnn_ops.h,sha256=WO9BMnhKxvr2Qt7-6OsgiyM6T33tTZ9IUQugDRHogio,4608 +torch/include/ATen/ops/mish.h,sha256=AFjehP8XrwGy8WKYdbziRBQ60Ncia0qB64XsfQpN9Gw,1397 +torch/include/ATen/ops/mish_backward.h,sha256=oazQNMN-gWnv-0Q_yHWd78lrwqeV0GhcvZCJ8q9PLp8,984 +torch/include/ATen/ops/mish_backward_compositeimplicitautograd_dispatch.h,sha256=6UTmKYnWd8vGflhzzvoeboxLsAvia9ruf90SF3hlfg8,1057 +torch/include/ATen/ops/mish_backward_cpu_dispatch.h,sha256=zxh0po5wcWMfIbKAuqSjY1mAXLmKzJRqwGC-Mp81-Dc,1013 +torch/include/ATen/ops/mish_backward_cuda_dispatch.h,sha256=57F_iF1FtW6fnutPijCTzlfqWYHphv6fiIpO9o5BAvk,1015 +torch/include/ATen/ops/mish_backward_native.h,sha256=tkq9H10HLcBUS4VUfFt37tymSdUI8y3bqgblB1uQG7U,867 +torch/include/ATen/ops/mish_backward_ops.h,sha256=ONPY7WZadEAeyIKY_RAi_oReVWhFQKDiQPDpIJB7tZE,1336 +torch/include/ATen/ops/mish_compositeexplicitautogradnonfunctional_dispatch.h,sha256=RxMl1vUDxTwFc2ZV5YVCNQYPhX2_PPMle2Mn5s35EF8,1091 +torch/include/ATen/ops/mish_cpu_dispatch.h,sha256=630vF_vnjCAZvghVjOoGupknZRAJigMVse4idBc6fXI,1174 +torch/include/ATen/ops/mish_cuda_dispatch.h,sha256=hGPq3lVyfahqnfmRtosdkVMn3JeTFGffDVs5fWKX-Dg,1176 +torch/include/ATen/ops/mish_meta.h,sha256=lvJ_U-U9AP5A75rq3IY5MlFGDY3HI_P2j5BgAd6qXG8,819 +torch/include/ATen/ops/mish_meta_dispatch.h,sha256=ByUkAEkUbVfDpf3Vzpdt73oOeVjKih7XqM2edYQ9IdE,1176 +torch/include/ATen/ops/mish_native.h,sha256=1fryZdZzRlotHDfMaUEDGcRFcFWhpcfht6jPVv2U874,844 +torch/include/ATen/ops/mish_ops.h,sha256=2ThhdTYtU8Waljdw8Lu5rxoOppjWy0MBWav3Ugsjgeg,2282 +torch/include/ATen/ops/mkldnn_adaptive_avg_pool2d.h,sha256=OiItyJQkLXpYwzV0Z36fhIZKdsp0ah0cVlc3oSeVlVA,1667 +torch/include/ATen/ops/mkldnn_adaptive_avg_pool2d_backward.h,sha256=KGy2UoFkafW_HiVdiC7Zimv6XYGi1TpFcqHq9nU4jvQ,1766 +torch/include/ATen/ops/mkldnn_adaptive_avg_pool2d_backward_compositeexplicitautograd_dispatch.h,sha256=Bev411GqygfeQ9aCzGS562-oTYa7944R_gLt0aGl2WM,1243 +torch/include/ATen/ops/mkldnn_adaptive_avg_pool2d_backward_native.h,sha256=inVq12MBAeuvAlVZ6FSMVfu_RDOmYvc_uPU-oIK0Sko,930 +torch/include/ATen/ops/mkldnn_adaptive_avg_pool2d_backward_ops.h,sha256=RepvNEOE21bnny-bPJOKhFEAs22KX9Qqu6P4BPg2jf8,2183 +torch/include/ATen/ops/mkldnn_adaptive_avg_pool2d_native.h,sha256=-N6Fuga_L1PvnQiCYlSxn3M-JUnIe2FyHJ-Tb3i0xw4,906 +torch/include/ATen/ops/mkldnn_adaptive_avg_pool2d_ops.h,sha256=okUu1qwLD6H-Gp6mK8L1so4CQv_vJN6doIEH_AV6pnk,2111 +torch/include/ATen/ops/mkldnn_convolution.h,sha256=pIzmpo745a8fcMCEbNwiJm3MTCh1hYHsm45ukK8weAM,7171 +torch/include/ATen/ops/mkldnn_convolution_compositeexplicitautograd_dispatch.h,sha256=HhkZadR3zIsJq3gEdBAL-p-tgKgwFNouBH2CWslNLFI,2487 +torch/include/ATen/ops/mkldnn_convolution_native.h,sha256=jMTdW5qKqbDaD_FHR-5hXb6685MxmW4dJPhjVeYmkVI,1175 +torch/include/ATen/ops/mkldnn_convolution_ops.h,sha256=t89eTIbf15QKipz7_loD4bNrdpT74CK-uyu1QQkaMTw,3039 +torch/include/ATen/ops/mkldnn_linear.h,sha256=UiM5a86XJt1Ot63bRKeQCo0cnEUbW7Iuelh7Ugz-CAc,1708 +torch/include/ATen/ops/mkldnn_linear_backward.h,sha256=cJ9Y07b1178QxQaEOWOhshOhVUIPFbUcm5lOIPNuiuk,2350 +torch/include/ATen/ops/mkldnn_linear_backward_compositeexplicitautograd_dispatch.h,sha256=3Yzy_I744W-26cxZ4yNiUXo2lSvQvOC04eTuYXX1pfA,1497 +torch/include/ATen/ops/mkldnn_linear_backward_input.h,sha256=3Xcp-aDoKyQ1kMWOKzlWrLTX2g7gBsV0LD3RclxYBqY,1888 +torch/include/ATen/ops/mkldnn_linear_backward_input_compositeexplicitautograd_dispatch.h,sha256=kvUTeh7owlnWP8i9R1MQIR_bHtO_wtNdz1L7TIhQY-I,1289 +torch/include/ATen/ops/mkldnn_linear_backward_input_native.h,sha256=plcBsrmnt728jmzYItaThBI1coLwIpLuE_9RoHXH1mQ,976 +torch/include/ATen/ops/mkldnn_linear_backward_input_ops.h,sha256=fi5QTmYklcRXSw8xN9xcP9xS1RjFKrZs6HqGITOf7T8,2335 +torch/include/ATen/ops/mkldnn_linear_backward_native.h,sha256=whQoWTcVfM74ULBrKr64eTwRSMLpJDIfNjKb7Vz_SCo,1141 +torch/include/ATen/ops/mkldnn_linear_backward_ops.h,sha256=xo_LFk3xoEQA5B0umrPspLRiz-nos7I7aclanXRcdIg,2918 +torch/include/ATen/ops/mkldnn_linear_backward_weights.h,sha256=izqEOKt_f-NmHVlCXW1XgK67Fy2g5R6ZhTEKlISxG6c,2238 +torch/include/ATen/ops/mkldnn_linear_backward_weights_compositeexplicitautograd_dispatch.h,sha256=MnJpoOPV_4s7qiyKUF7O2wIC-30t0stazGCjtSJiHp8,1421 +torch/include/ATen/ops/mkldnn_linear_backward_weights_native.h,sha256=hG2ejd5PYL_HIur_5dO5NCsnkSfNkGZ8AxTkwcGmcm8,1086 +torch/include/ATen/ops/mkldnn_linear_backward_weights_ops.h,sha256=DaKBbwTViHdci2X6H1YbiqYNxjJ8RbCSpY5q7HZe5LM,2715 +torch/include/ATen/ops/mkldnn_linear_compositeexplicitautograd_dispatch.h,sha256=kTPQD0X28lzN7o66r11O_ION_rhcMx9zEiZNTJJuY1M,1276 +torch/include/ATen/ops/mkldnn_linear_native.h,sha256=RLAmNgG_uENDJ_RmfVXjKoqnrH6nE1L3y5F5cvrLb2A,963 +torch/include/ATen/ops/mkldnn_linear_ops.h,sha256=N3Xpcx4bljhcupDc2qFdMnBwZjGUO1-MeT78gaBamBk,2301 +torch/include/ATen/ops/mkldnn_max_pool2d.h,sha256=fNgCUQg7ULU50vnCnVqNIomoUzjbmXl__3-xW4RjuEA,2221 +torch/include/ATen/ops/mkldnn_max_pool2d_backward.h,sha256=53HX_XRwFfb0GCZINWIR5GPzpvI5GS0w43MQWHfEmT8,2665 +torch/include/ATen/ops/mkldnn_max_pool2d_backward_compositeexplicitautograd_dispatch.h,sha256=HhVf22eibCb626ro9LDAH3qtoh1xviyqmeEiBxSjH2s,1534 +torch/include/ATen/ops/mkldnn_max_pool2d_backward_native.h,sha256=ruNDMgY1Ea2q2j38DQl5wZE03pVW9051J4c_RVQlwzE,1221 +torch/include/ATen/ops/mkldnn_max_pool2d_backward_ops.h,sha256=NMVMqNgBTG-MCfVjqWhUak0fsmv2JoVnLWV4pBBtyB8,3135 +torch/include/ATen/ops/mkldnn_max_pool2d_compositeexplicitautograd_dispatch.h,sha256=qOqArPvdIBU1u9fotY3cNKV1d5m5irMGCf_wZl9Qr2g,1396 +torch/include/ATen/ops/mkldnn_max_pool2d_native.h,sha256=Xmn9-8UskhsdtG5P8AUTGykOtIa0ti9B92zHBxx6svI,1083 +torch/include/ATen/ops/mkldnn_max_pool2d_ops.h,sha256=3kffAJ09pk_bQJf_-hRxRiJfEuO2xS6p8prJ8M-kFYI,2689 +torch/include/ATen/ops/mkldnn_max_pool3d.h,sha256=ao7vjFT9PzCO-Vdg4rQIUyzOwZ9hXuIalLVMyS0XWds,2221 +torch/include/ATen/ops/mkldnn_max_pool3d_backward.h,sha256=EPHk_OTMyPHZbaUYtMaF15mM1ZQc2owByXRJpNbLxzU,2665 +torch/include/ATen/ops/mkldnn_max_pool3d_backward_compositeexplicitautograd_dispatch.h,sha256=mbQDgWhRUs4X6vYRhq7iHMYpU4dC06g6qvOA8k7jZOw,1534 +torch/include/ATen/ops/mkldnn_max_pool3d_backward_native.h,sha256=3RVD3zo8L0-RbDMvHizjHgo_vRJUCqjA1GRg-F2qqsc,1221 +torch/include/ATen/ops/mkldnn_max_pool3d_backward_ops.h,sha256=Up52WC47eV5BL4SISUm9CATSjCXxyc7cAWCVgGW3GYQ,3135 +torch/include/ATen/ops/mkldnn_max_pool3d_compositeexplicitautograd_dispatch.h,sha256=-IfwNPIIoYSRWtMeRA2QfzegD-9m5vnWc0Fvk2wp-w4,1396 +torch/include/ATen/ops/mkldnn_max_pool3d_native.h,sha256=rqHag1R7l0YGdqDI8o9cj5rq5LrwGri9QfbgSTTmp_I,1083 +torch/include/ATen/ops/mkldnn_max_pool3d_ops.h,sha256=YPAkfEPUJKqdqzwIG7ZdJDo3AmAedN1uFUPiuy0hI9Y,2689 +torch/include/ATen/ops/mkldnn_reorder_conv2d_weight.h,sha256=fVwB0JWSJESu6XhZNw6qQfAehXyQw4e9Ds6_-DVTMxA,8019 +torch/include/ATen/ops/mkldnn_reorder_conv2d_weight_compositeexplicitautograd_dispatch.h,sha256=meQ4Sp8H4y9_y-vxEe0r9pvrG8STS4EAsLt7DMSGuFE,2011 +torch/include/ATen/ops/mkldnn_reorder_conv2d_weight_native.h,sha256=5QMuRkxBh49EydtkSEj_-Bio1OYoM3qFexDWHzCg-Rg,1155 +torch/include/ATen/ops/mkldnn_reorder_conv2d_weight_ops.h,sha256=j2lxKZol50uzH0Z7v5X5FNbR6_V2XgOFxAPwj9XalyY,2939 +torch/include/ATen/ops/mkldnn_reorder_conv3d_weight.h,sha256=C1l7JStT2V26C0cCgGmVC_0V8BnZPOJokR1UW6mcwr4,8019 +torch/include/ATen/ops/mkldnn_reorder_conv3d_weight_compositeexplicitautograd_dispatch.h,sha256=sqchHmDYYowUUREpxPtvdJFL-upuEj8NoabFHOcU46I,2011 +torch/include/ATen/ops/mkldnn_reorder_conv3d_weight_native.h,sha256=j5bvlXT9O-6sh-yIcaL394gCS3ZFR9a7IzEt4xTambo,1155 +torch/include/ATen/ops/mkldnn_reorder_conv3d_weight_ops.h,sha256=PsQ6HMj_uBqtUOOu4xLfn3mp9RkhOLQiaLfspdyxRH8,2939 +torch/include/ATen/ops/mkldnn_rnn_layer.h,sha256=wGploXOeZ6vPc_0S5YUiTxTs7buQ8QxThMjiMpnz9KI,4009 +torch/include/ATen/ops/mkldnn_rnn_layer_backward.h,sha256=cJUWpRoPXWPdNFmbOOrl0O4tb472A12DVVhWfpEcsaU,5833 +torch/include/ATen/ops/mkldnn_rnn_layer_backward_compositeexplicitautograd_dispatch.h,sha256=p8HQltvfWMF7-sTlxAJETLq0-DjWXa7Dsdu_lfbuvA0,2719 +torch/include/ATen/ops/mkldnn_rnn_layer_backward_cpu_dispatch.h,sha256=yCHGaeZT94CRjIDg_XriGHKWkYNanwzngUZHMco75ws,1646 +torch/include/ATen/ops/mkldnn_rnn_layer_backward_native.h,sha256=TIDqXj0LwGAg1KqYP_IlBAkRP7EnHsCbfMFJ27d9NDM,2279 +torch/include/ATen/ops/mkldnn_rnn_layer_backward_ops.h,sha256=Ot6BYMP6RGYpB0y31LdKKFSWBkp1bCeeJzgHTZ5K6dU,6728 +torch/include/ATen/ops/mkldnn_rnn_layer_compositeexplicitautograd_dispatch.h,sha256=OxME3sMYUcTJpf5jdvLflrSajkdKDoObkKHqyegiJds,2015 +torch/include/ATen/ops/mkldnn_rnn_layer_cpu_dispatch.h,sha256=GS_3o9m7W9VP3jZG2Be9DK156BPIXRyszLL7bo-5xNw,1357 +torch/include/ATen/ops/mkldnn_rnn_layer_native.h,sha256=LhohnHmsehGFnqdd5NTYqfm4heTgsZPteThbd5VT254,1638 +torch/include/ATen/ops/mkldnn_rnn_layer_ops.h,sha256=7EKfwpETw9JMidSN_3u5Xkw_foMBUFPyp4iYw0VWrbc,4591 +torch/include/ATen/ops/mm.h,sha256=3gNlWwyefOpkbyUgTZKoHB6S5_mAZwutJ5fp334sHdc,2207 +torch/include/ATen/ops/mm_compositeexplicitautogradnonfunctional_dispatch.h,sha256=_MUXd_6IczxzeMOszOY0SItU3wsVwZkUPOtKvkckOrE,1065 +torch/include/ATen/ops/mm_cpu_dispatch.h,sha256=E1VTfGRHoiGA7E2iwW9jmhBxv73CufYRFxqEZO0vXVc,1194 +torch/include/ATen/ops/mm_cuda_dispatch.h,sha256=iIkQ6zOSmo7KgRLdt6sFaL9qvbYluS8ZcRq4u4_eK-0,1548 +torch/include/ATen/ops/mm_meta.h,sha256=3eB7FnXI07W3vtgPCWR8LJbrmjXYFVWMZ2y8YMiCMFQ,842 +torch/include/ATen/ops/mm_meta_dispatch.h,sha256=eKK-VTqzq3n1yuISj8NlRiEblX0-g6yYTMUTMaAjaMo,1196 +torch/include/ATen/ops/mm_native.h,sha256=cr4QHsey_2OvORLJyOtK93q66XFFYHYlvcxOsfHUCa4,1668 +torch/include/ATen/ops/mm_ops.h,sha256=SysbA_e3XcMy8NxS3ja3LHkFQ1NSqwEwd-q46dXLXbo,3390 +torch/include/ATen/ops/mode.h,sha256=K0r37tfo88C9N7MS95ZKKusaBABu6wUvisNH-zFcouw,2875 +torch/include/ATen/ops/mode_compositeexplicitautograd_dispatch.h,sha256=-FdiEkK6Xejmz39XPsA21HbUncnuflaV_c-a1oM_Lkw,1284 +torch/include/ATen/ops/mode_compositeimplicitautograd_dispatch.h,sha256=tqrqnENPxHuFSa--VvVL686kXXJ9_oteJiXFo1Nn7AA,1403 +torch/include/ATen/ops/mode_cpu_dispatch.h,sha256=7BzFAZ5jENU5rwlGINI0U7hcDS67GDrF3C16w70D62o,1033 +torch/include/ATen/ops/mode_cuda_dispatch.h,sha256=I6zdftYd9saNZLaUEmA8hOkoJ9aiVapbFYAqz1XiXlM,1035 +torch/include/ATen/ops/mode_native.h,sha256=RT0DGNc4coq-H5R_cdHlXh21Nes0P9hYXCugmzjQqmI,1217 +torch/include/ATen/ops/mode_ops.h,sha256=t4LoES896Rj2UH88eIu2MhaMPyJfDPxrqQy3fHxgs8g,3947 +torch/include/ATen/ops/moveaxis.h,sha256=fbQy1NErRcQmsqxP6jlnxPPFuW0bT-JDI6Xlba1enNo,1270 +torch/include/ATen/ops/moveaxis_compositeimplicitautograd_dispatch.h,sha256=oALMgumCd1Utd5uQNYiJkNYyN7Xg7D6pqJzJ6FIyJG8,1166 +torch/include/ATen/ops/moveaxis_native.h,sha256=Rh0Rgl31ziUhSP_dm-D1FwFwHWzCv67lV0IdGsBkAaU,878 +torch/include/ATen/ops/moveaxis_ops.h,sha256=UX-3CtHhkBFbCAhm01o--SPaGohLglOitnmNrGeq3L4,2063 +torch/include/ATen/ops/movedim.h,sha256=ElS6Y9ZTZB9Z2I-lf8OD0q1zIyxgYQHOnTU5VYfUk34,1263 +torch/include/ATen/ops/movedim_compositeimplicitautograd_dispatch.h,sha256=YNdI1Qtu_bMb5B_B18IzMybgfuaU1wKQH-2477ETnoM,1164 +torch/include/ATen/ops/movedim_native.h,sha256=8irGWfcmRuCxodVwVfhdbdCfhlYLwwti3YuJuJnojXE,876 +torch/include/ATen/ops/movedim_ops.h,sha256=nsHVJU7dm7b0SVbReuHdq3Sfm_GqwE6f2ko07J8JE2g,2057 +torch/include/ATen/ops/mps_convolution_backward.h,sha256=ILVW6FoagQq9pk34CsUGhC4C0gyu0h9uz6Ae2Au02mU,9207 +torch/include/ATen/ops/mps_convolution_backward_compositeexplicitautograd_dispatch.h,sha256=amGbfVKGH_mLcmKN4R2GPZ1C4NELV4oj-PYx-sOocCk,2448 +torch/include/ATen/ops/mps_convolution_backward_native.h,sha256=lJjtscC8hACvHQ7SJ0672UHoXBeh8Fi4pabq-IZCYYw,1058 +torch/include/ATen/ops/mps_convolution_backward_ops.h,sha256=Gvx5GoBoL0SicHjCQat4yzDd46jd--tbh9O8KZAzfDI,3648 +torch/include/ATen/ops/mps_convolution_transpose_backward.h,sha256=8QkQuKhkLcBK_-DFg1RUjvh0zjQKGQFDebxUYfsbwH4,9943 +torch/include/ATen/ops/mps_convolution_transpose_backward_compositeexplicitautograd_dispatch.h,sha256=-pthlgSODIFkPj79UlPXXMRYN0NQ3BMfKSkFlNCFyK0,2496 +torch/include/ATen/ops/mps_convolution_transpose_backward_native.h,sha256=GuM9pOUMyLIs2Q7OTvgmx4VAVpQ9yHkviYF-emb-low,1072 +torch/include/ATen/ops/mps_convolution_transpose_backward_ops.h,sha256=JjPIwJQNbg9lY14m1BDmHi5z5JjULPTKidnV1HeJr-k,3783 +torch/include/ATen/ops/mse_loss.h,sha256=d3zyA-zWvT5r8_Obc7or1234nxnrrAJDb7Ea4al2_TQ,1641 +torch/include/ATen/ops/mse_loss_backward.h,sha256=NVivTBkXJdidUr_xqCXXP5SCIIz0HJdHXhqGc8PVcCc,1941 +torch/include/ATen/ops/mse_loss_backward_cpu_dispatch.h,sha256=ebajBXon_udoiNayYNZ3p0cN_KWrvUchrXhpghY0BHA,1412 +torch/include/ATen/ops/mse_loss_backward_cuda_dispatch.h,sha256=DdKdbBrWwQaQw93x92Et3zBIIZEf0tkrGgGz7IfXySA,1414 +torch/include/ATen/ops/mse_loss_backward_native.h,sha256=okIkz67pz_mWVoIBCF-LMmnsUObLPHooqPf9BankCUk,993 +torch/include/ATen/ops/mse_loss_backward_ops.h,sha256=WZ0O3LggZbxqFR06P_kXMg2YLvVMkwe0nnNGbBZW7MA,2419 +torch/include/ATen/ops/mse_loss_compositeexplicitautogradnonfunctional_dispatch.h,sha256=hbBPDxztvKYcZdKCEl-pJJjH9Hf5rcBFQFwJRVCrpCA,1112 +torch/include/ATen/ops/mse_loss_cpu_dispatch.h,sha256=6s3t4cg5mmsiZNa28QwHNZRzsWX_ckwydJKzdJmATTY,1315 +torch/include/ATen/ops/mse_loss_cuda_dispatch.h,sha256=PsTQSwQTq_F2IAqw4hAszQ_AN6ctpLzoVTMHoR6202E,1317 +torch/include/ATen/ops/mse_loss_meta.h,sha256=C8ZhXv5IYxm5m9MQHktQbbXPho9ozjcdS37ah49biMs,869 +torch/include/ATen/ops/mse_loss_meta_dispatch.h,sha256=UhdxJ4Je1IoM4_G52jWpE89UwquiT9afR3F8mde8wwc,1317 +torch/include/ATen/ops/mse_loss_native.h,sha256=YznOoXHkG8guJ576fRAUMCXav_mpG-AIFdsvdXQ4Sic,902 +torch/include/ATen/ops/mse_loss_ops.h,sha256=JpykFUJmAhS89WSlaLx4kIcm6UTzd0srKwPs7CZwTng,2125 +torch/include/ATen/ops/msort.h,sha256=R592S5elfhm5sm3LM-Ym4RJbmUmXZpnVHflq1bd0ho8,1271 +torch/include/ATen/ops/msort_compositeimplicitautograd_dispatch.h,sha256=mOzWk66yCjthOLUDBZ-i9fMDW9yXVQXDSY-0CKzfw4E,1172 +torch/include/ATen/ops/msort_native.h,sha256=toLQqY21bbV_-VJXFpMZNAtmN0CuhzuhiBKYuTIxWGQ,806 +torch/include/ATen/ops/msort_ops.h,sha256=EO5GAjX9CsRVCP7hZ9UDKhnUXPC-2Mz19WLmuJRL31A,1795 +torch/include/ATen/ops/mul.h,sha256=TZrRwMayTY6in94-ahIX4mbX3pcVI6liiqLZCME1L2w,2087 +torch/include/ATen/ops/mul_compositeexplicitautograd_dispatch.h,sha256=uLldtxYv7j97v18gB3YN493P5158pyvQ-2b8zQkciYs,1318 +torch/include/ATen/ops/mul_compositeexplicitautogradnonfunctional_dispatch.h,sha256=AiX2Jrqfzzx9O0pK5B4-2rH7v9xT9fhiyBF9165VToQ,1141 +torch/include/ATen/ops/mul_cpu_dispatch.h,sha256=6oyNCIxgTRYBXKEBDcwCRptSXUxxYfKZtm4LQD0Y5ws,1274 +torch/include/ATen/ops/mul_cuda_dispatch.h,sha256=Ha6FThK3eHVax9shiTb23M4uSfyT5z45hRvBhJikbek,1276 +torch/include/ATen/ops/mul_meta.h,sha256=a7uN2fgODrWiJKGAKOQiNjWeecyHeyET7dneTJRa0Qs,851 +torch/include/ATen/ops/mul_meta_dispatch.h,sha256=qzRm7kDSkrVTlxLCnW59qaXEtYtUxLTjITrunuzGGXc,1276 +torch/include/ATen/ops/mul_native.h,sha256=K_RpZO2msxl445HwfQs3DAvox5oTBhwXyCxwqRTZ_p8,2738 +torch/include/ATen/ops/mul_ops.h,sha256=qpqda27m5uZCWIJ0BWeILqyN6aJ6UshoMxi8-BEqnDg,4452 +torch/include/ATen/ops/multi_margin_loss.h,sha256=zAzeoHQ6x1C6B3eR8pGA14gNagPun9Emg5DxSGcRTcc,2231 +torch/include/ATen/ops/multi_margin_loss_backward.h,sha256=FtBhkrO0_EqNyqcs3OTn6L9pHf-5PvwgdEpfCUGodrc,2566 +torch/include/ATen/ops/multi_margin_loss_backward_cpu_dispatch.h,sha256=qJWmxPBhZv_8xep8KUlVu_Q-cb0aX6SZvowp9oxyD1U,1764 +torch/include/ATen/ops/multi_margin_loss_backward_cuda_dispatch.h,sha256=NXJUzr1RV5P_acKjWIj9NxmrQhezXnl1h9rCEx_mPd8,1766 +torch/include/ATen/ops/multi_margin_loss_backward_native.h,sha256=0EDRGdU4awnD9q7-5BB9gJzNnqlDLs9yoh1p4c2k6D8,1782 +torch/include/ATen/ops/multi_margin_loss_backward_ops.h,sha256=O0tSVWVWWu9PASH9k36yzpCM1GmaCnp5UdNkgFIVZXw,3101 +torch/include/ATen/ops/multi_margin_loss_cpu_dispatch.h,sha256=Dgflnkt7O25XqWjpPySBqP-4A0cXco4jm7-zFSFhHms,1635 +torch/include/ATen/ops/multi_margin_loss_cuda_dispatch.h,sha256=_BYLFxzYACB7TdtPX7oLosEYuE5iSykV7-k7Ktbjm08,1637 +torch/include/ATen/ops/multi_margin_loss_native.h,sha256=gGPXZYEu9m0ZUnX3SBaeZci1mynFLxCRhBjjlvRY9-4,1612 +torch/include/ATen/ops/multi_margin_loss_ops.h,sha256=ChKiNLCwCD2uFo1oqXBVdln9rQIHEtCdRlUunBF1oJg,2805 +torch/include/ATen/ops/multilabel_margin_loss.h,sha256=WNfTo7hf2gqNzwKw35RG29_tftWP_HzCQMdVI3OYw38,1781 +torch/include/ATen/ops/multilabel_margin_loss_backward.h,sha256=hFto8jPx8i_q6HxE8MUA2dW04ZEM7kFDgv9XyMiKygw,2258 +torch/include/ATen/ops/multilabel_margin_loss_backward_cpu_dispatch.h,sha256=wwSj0wSG79lTipGiY0hPhXmhK2bru7Z3k2bPGOHV8Aw,1544 +torch/include/ATen/ops/multilabel_margin_loss_backward_cuda_dispatch.h,sha256=2Y3lNW2kPka02S0DMC4wgcUXuBVCUHdqZywtoHXsdQE,1546 +torch/include/ATen/ops/multilabel_margin_loss_backward_native.h,sha256=fYxqS1rBi8YqZfenbF-OF0tE0TfHxN7qcCt3io87MyM,1504 +torch/include/ATen/ops/multilabel_margin_loss_backward_ops.h,sha256=8QqxxS2IowTgWMIkzDiBoJj04XA-H-fzxV-KqTOaJaw,2699 +torch/include/ATen/ops/multilabel_margin_loss_compositeimplicitautograd_dispatch.h,sha256=cL8fTJkEPKN8uHaQofRsH1k3OlQiJsI9LrgrLXf3A_o,1401 +torch/include/ATen/ops/multilabel_margin_loss_forward.h,sha256=r9d3GsLRUPIRki9n6u3xjqzbwJHyJGxEJbkAOBOGERY,2084 +torch/include/ATen/ops/multilabel_margin_loss_forward_cpu_dispatch.h,sha256=e8Zf_U3W6Sn6YZZ7tSh8MMYy_WxE_Um1IZf6ZDN03-0,1474 +torch/include/ATen/ops/multilabel_margin_loss_forward_cuda_dispatch.h,sha256=v8PslDRuNIVBrBNl03IOHmn8QhHGm4FfIM2mFlWveSM,1476 +torch/include/ATen/ops/multilabel_margin_loss_forward_native.h,sha256=XYxRT66GEfQPjjbBEIxslKXDrEm2MGAm5B4XYZVfUFY,1396 +torch/include/ATen/ops/multilabel_margin_loss_forward_ops.h,sha256=ezfZOZzgCnHBedA8vqW1xxUa9Y0-JLW8B7plDUx6Wg4,2546 +torch/include/ATen/ops/multilabel_margin_loss_native.h,sha256=TqzMIPglGvX_BKlbnromzyoIy8NqxqGmvQHlM5ndl_E,952 +torch/include/ATen/ops/multilabel_margin_loss_ops.h,sha256=Odq5_5tZlfKn1FJG-th3mg4goOKNTeImWWMF5pH4Cjk,2209 +torch/include/ATen/ops/multinomial.h,sha256=yvGZ3Wfvx-LNB3W8L9-5u5eyjSQ5BzQpLLFa205MKrE,5334 +torch/include/ATen/ops/multinomial_cpu_dispatch.h,sha256=cBhHKfdfaGhCIt-EjI1DT4ae154qRvGaAUj9lPwy_WI,1975 +torch/include/ATen/ops/multinomial_cuda_dispatch.h,sha256=Y4xIh2j0CsQ7yhArjERsDsFVXu4dcFKlryACsEvVj0U,1977 +torch/include/ATen/ops/multinomial_native.h,sha256=q1EGnmrsM6gOX7h5qM-rNptb477UMAVz5oYbHxzoBw4,1001 +torch/include/ATen/ops/multinomial_ops.h,sha256=RtShwTYLoVTcg_9rkW51h57cJL8sJynVRpSa9pNAwWc,2418 +torch/include/ATen/ops/multiply.h,sha256=u8mzBJ5Y9R3MET5lkEibB_MP2iG73DcjivoHlspktQw,1658 +torch/include/ATen/ops/multiply_compositeimplicitautograd_dispatch.h,sha256=GSLt3bpNDxmaMsnHZH4CZhHTW9MyyUdkzFBfrsuD3aE,1499 +torch/include/ATen/ops/multiply_native.h,sha256=v6rewbsVV-JL7sZjykUMcDvAIQnD_6ET2oAQyFUm-YY,1104 +torch/include/ATen/ops/multiply_ops.h,sha256=p5HiVpqSsFWuJHmvbqVr4MxwpZdllJZxvXeGpF2qpTg,3839 +torch/include/ATen/ops/mv.h,sha256=X5lykqbK0XT2Z85XK8U02Ay4h6qHYqY3uKX3gB96vzs,1364 +torch/include/ATen/ops/mv_compositeexplicitautograd_dispatch.h,sha256=BXYidWGL-TNbaMqTT1u4EBPI32vylMdZ7wZVLcsTvko,1235 +torch/include/ATen/ops/mv_native.h,sha256=OfOjmJbxiJqxu0JGLfVarAuelBgw9C20VodUFB3nhgo,929 +torch/include/ATen/ops/mv_ops.h,sha256=51P5nk0LLnKoVXGffMFaNiz0FVb_JhQojRYDIoXT_J8,1937 +torch/include/ATen/ops/mvlgamma.h,sha256=m6JOUnsBe4QKCDIsGsKlyp5UawEym_DSjfGRfENX-0Y,1364 +torch/include/ATen/ops/mvlgamma_compositeexplicitautograd_dispatch.h,sha256=GeeB4-qTTs3kSrXH5VqpHJJ2HEy7P3VIoNBCVzocBX8,1095 +torch/include/ATen/ops/mvlgamma_cpu_dispatch.h,sha256=o2rq5NmL0mJvZhzHJ6m3xNuZa8Uo8M1Ur_tJtnQ_6TI,1103 +torch/include/ATen/ops/mvlgamma_cuda_dispatch.h,sha256=rLiquDuthXbayEo3J9zhwcE4eBF2LnqqVeUrNnlPpX0,1105 +torch/include/ATen/ops/mvlgamma_native.h,sha256=ywyVxp8jv8SekLF2dsQnnbNP9gfQHcKTmrM1dpLgNs0,898 +torch/include/ATen/ops/mvlgamma_ops.h,sha256=SXURNS8K5isyJSCqiZZJrTw2JcvN0ni-wendKK8Y-fY,2432 +torch/include/ATen/ops/nan_to_num.h,sha256=MPSKQINhS8_B0jQck-66UhFTp3nOQp94rILzEygMxBw,2294 +torch/include/ATen/ops/nan_to_num_compositeexplicitautograd_dispatch.h,sha256=R4PKDMtv1LVDuHnUARlMWuH15UPh3SixT2tzZCSRsuA,1353 +torch/include/ATen/ops/nan_to_num_cpu_dispatch.h,sha256=4qOBMWh7zintG-vOen7HkpVSaV2OKECVDUEQ219TEHc,1316 +torch/include/ATen/ops/nan_to_num_cuda_dispatch.h,sha256=XHJ8w5f12wdTTUBxPqPPP-b78WxDRwc6L2hX0sVJ-18,1318 +torch/include/ATen/ops/nan_to_num_native.h,sha256=u8sucp0X8lQ7hnrAAKVnpugMobhVCpQ7MOSd_W9aaf0,1825 +torch/include/ATen/ops/nan_to_num_ops.h,sha256=WpftTchVJLbDXSUSJVRCri0qPERPbTs1x1-tgpcGBtA,3290 +torch/include/ATen/ops/nanmean.h,sha256=-JVLwwWhWP1yOhrqJCRAzH-15A7FTqndtuHmnQ1UQDE,1861 +torch/include/ATen/ops/nanmean_compositeimplicitautograd_dispatch.h,sha256=9Y1VMhVvEFFr9zfVNGk4w74SBr6sn6ExicUq4fiQbDg,1496 +torch/include/ATen/ops/nanmean_native.h,sha256=g0eHuBY2qam-D3O07mm0OWDzWQhV076PzBcw_J5m9Lg,1010 +torch/include/ATen/ops/nanmean_ops.h,sha256=gIePLM1Z9BTiywnmpk2k0bQ3vgGEtlTFOXC2coD0yWY,2390 +torch/include/ATen/ops/nanmedian.h,sha256=ISIhvgJmblN-3LJAWTCRxsyTjkufx2a7UpUxyce8XD4,3555 +torch/include/ATen/ops/nanmedian_compositeexplicitautograd_dispatch.h,sha256=1zGv1Zk2NM-4UI14Yl1jX7C-6MoBE37MlkZVRGqOU_Q,1242 +torch/include/ATen/ops/nanmedian_compositeimplicitautograd_dispatch.h,sha256=1c6RG5O7Oa31FBnTzwZLjKE0Li-HX5shhAVTyZOghuI,1418 +torch/include/ATen/ops/nanmedian_cpu_dispatch.h,sha256=9gb-4bWyN5MFMflxSj05m8_6_T1HmsAKBukOUsm9Lpw,1304 +torch/include/ATen/ops/nanmedian_cuda_dispatch.h,sha256=wCuL0EdBMWFjx0WcfQ3fpi5sAav43Q-eAcBU4t-KeP0,1306 +torch/include/ATen/ops/nanmedian_native.h,sha256=gAgOtslf6DblxztciLz7qaVRMvwgSi5PkwuM1CNHzpI,1607 +torch/include/ATen/ops/nanmedian_ops.h,sha256=wzk9sATnW8XUVkBDxxgjD-RyCi9LtiCkYb9NMMnxvVU,5153 +torch/include/ATen/ops/nanquantile.h,sha256=f5NBFtj_EfyLbL7-mK43lrRcWY10cE2O63HiIRMbZ-g,3248 +torch/include/ATen/ops/nanquantile_compositeimplicitautograd_dispatch.h,sha256=Pz830ni4hTtpT-FLXiBqzIUOeinF2g_CKEtE0DqcLoU,2088 +torch/include/ATen/ops/nanquantile_native.h,sha256=MJNMphCjf5I8S_EWrKzVWIyZnkXwL2pbYPgvl26JZHg,1388 +torch/include/ATen/ops/nanquantile_ops.h,sha256=tHuI4Aj676CrB9ovOv0ZiDzLAu0NX4UntD_TtCHpcpI,4280 +torch/include/ATen/ops/nansum.h,sha256=Le-a87c-7MTQzve36XxzZvULVqKSHtCsJ5fxjIims1A,1851 +torch/include/ATen/ops/nansum_cpu_dispatch.h,sha256=qaNgMG6w3CVYSdlICbrB_KvRYNivfduMdjzuHYb1hEc,1449 +torch/include/ATen/ops/nansum_cuda_dispatch.h,sha256=pBHoKGkarU8RtlgFOVVbTvkhVOoVs8xzkzEiFo5r-qc,1451 +torch/include/ATen/ops/nansum_native.h,sha256=jnP2Wa0OIpnQMQfbDEwzdBeA1gmrU9J2byCeHjN-87A,1008 +torch/include/ATen/ops/nansum_ops.h,sha256=l6PwBLAa2MJ83EEuPhuurIAFrY77fFTKb8BCV-ztNXk,2384 +torch/include/ATen/ops/narrow.h,sha256=tuPziGHNvbVggBDD_R2drMWatAj8NieDTfntd2SRedc,2892 +torch/include/ATen/ops/narrow_compositeimplicitautograd_dispatch.h,sha256=D0mlQLjVH8CQk6aYRXFqQ20W66qdIqcVIizSs1ngVJM,1404 +torch/include/ATen/ops/narrow_copy.h,sha256=IwqGzoGV5yFBz28doHMLvk22YWkeB4Gu8iOCQKWLCHk,4338 +torch/include/ATen/ops/narrow_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=TjYOqzvt_fEejTu3SaiZKI52mNryhBT4QzZIe445kB0,1211 +torch/include/ATen/ops/narrow_copy_cpu_dispatch.h,sha256=amjkFzLO1lz7sigD2tmN0WNW6_VPkLLVIbQDMqXwUw0,1681 +torch/include/ATen/ops/narrow_copy_native.h,sha256=XMmRZtyirmLUUOrlSpe9CE6yPMeM469k7t6ltUdbIfk,1160 +torch/include/ATen/ops/narrow_copy_ops.h,sha256=jjUhA5tpoxF7Quqcyo4DkhcQK5UmqQEZuCU967abvQs,2185 +torch/include/ATen/ops/narrow_native.h,sha256=pZnXu6F69N2fBKtevRgAe2vIxzVJG_7KclFwmtqvbyA,1036 +torch/include/ATen/ops/narrow_ops.h,sha256=K5PuDOQxlSQjieSPovjSP1uEsN3Yws6tKwCGr3WotUI,2118 +torch/include/ATen/ops/native_batch_norm.h,sha256=XUgIXrw1RoKY3vx35RZIwGvZpXusT4D399Vnu9KhM8M,3056 +torch/include/ATen/ops/native_batch_norm_backward.h,sha256=pucNYvGdf9x5SJ72wKSW8bfN0kGc0HB2Hs-DUGWRjOE,3590 +torch/include/ATen/ops/native_batch_norm_backward_compositeexplicitautograd_dispatch.h,sha256=LhkCiqvo6E4mImXqvrpH7ZtojM9kccVKEhINFWUNzIM,1973 +torch/include/ATen/ops/native_batch_norm_backward_cpu_dispatch.h,sha256=RcS2pqc3Kr1dazG2uLkx7r5M7xPzUkkMtcnKWbhJktI,1357 +torch/include/ATen/ops/native_batch_norm_backward_cuda_dispatch.h,sha256=g8eBrQ81B97joeVOptxD9XM7CGOPIT8qV30VDOXnKMc,1359 +torch/include/ATen/ops/native_batch_norm_backward_native.h,sha256=5_LkJ_t8x6En2KvGn5aS2zx_pTIOs75_e6729wbrusU,2486 +torch/include/ATen/ops/native_batch_norm_backward_ops.h,sha256=GUY7V6JVOCmd8SSvHRmLKhWTOGRYQDs87P8AO1Cuw4A,4446 +torch/include/ATen/ops/native_batch_norm_cpu_dispatch.h,sha256=_NVyNLSH2Ift5Dr5582qLMvdRy9bhdaCdKXFXsnwo5I,2070 +torch/include/ATen/ops/native_batch_norm_cuda_dispatch.h,sha256=7F4Bk-SMY5kSDvp05k7IEjImDzypOz5tqdWg0OG2ZmA,2072 +torch/include/ATen/ops/native_batch_norm_native.h,sha256=aoOAbODrWN0-rlWrfddua7Wz0vvED4HXEtvhQEDTsMw,2477 +torch/include/ATen/ops/native_batch_norm_ops.h,sha256=X7udntMza0uIr23VXtNcILRPdLMDrFmXXqwiN6tzWMg,3805 +torch/include/ATen/ops/native_channel_shuffle.h,sha256=KzCSZyniWqrSsNMTdGfByce8K9JgLY7WhxNPcD0pMtc,1735 +torch/include/ATen/ops/native_channel_shuffle_compositeimplicitautograd_dispatch.h,sha256=9Xh4jBZmd6E0OBeRSLDZ37ZhKibq22mRBRD7Gt-7buQ,1147 +torch/include/ATen/ops/native_channel_shuffle_cpu_dispatch.h,sha256=dKAC3JYJ9q5FwUTGOyCmTV5duzDIvOoZM_rIn2YqHHc,1103 +torch/include/ATen/ops/native_channel_shuffle_native.h,sha256=LIQO13Xn_htgZOHy1KHEdJJ_6CnIEe3NJdGI3Lh4LOU,843 +torch/include/ATen/ops/native_channel_shuffle_ops.h,sha256=qnDguQrATE0aiHSOR1tiLNM4wVCXJPMctNCy5TKTs68,1327 +torch/include/ATen/ops/native_dropout.h,sha256=vRtZxe8ojAtMMDCV4LcQjPfP8ZypmCfhAtMe3lX4b_k,1790 +torch/include/ATen/ops/native_dropout_backward.h,sha256=GSHGwW3U4mw8Vai0US3oXiDOgO6nkx0UfuTp0xyGvew,1748 +torch/include/ATen/ops/native_dropout_backward_compositeexplicitautograd_dispatch.h,sha256=mPyJ2bGcfRahWboVQ4PuW1RDSU6KCH7IWQTiFiaHmmI,1247 +torch/include/ATen/ops/native_dropout_backward_cpu_dispatch.h,sha256=jt9SR67LMZFNfc2JIVcrOeWcGR8vpbWGovaE965joZM,1037 +torch/include/ATen/ops/native_dropout_backward_cuda_dispatch.h,sha256=jrDqigpz8h1pqAB13KKddu5FsqeKgtIvDIXBWr5ug-A,1039 +torch/include/ATen/ops/native_dropout_backward_native.h,sha256=tuwhBnk7fDrLBq9eIslnKkmNOvUAn3oDB5-GMqYCd2U,1056 +torch/include/ATen/ops/native_dropout_backward_ops.h,sha256=jy1Bfvp9usroxSyM4WVSZUdu0FUSijoERNSFu-P8k0o,2209 +torch/include/ATen/ops/native_dropout_compositeexplicitautograd_dispatch.h,sha256=cW1XJ_vsyVIfY6cMk-PVAQwkl-PWDJx8IMb4QLdV4zM,1311 +torch/include/ATen/ops/native_dropout_cpu_dispatch.h,sha256=vHGXLLMd63nUYGLYI5_og9mrlPqCk4iDh7KqdCCcKX8,1047 +torch/include/ATen/ops/native_dropout_cuda_dispatch.h,sha256=YBDcHuWeBgTwcmd4g1MtjgL2-jkpOIL7JLS5XAGGDfE,1049 +torch/include/ATen/ops/native_dropout_native.h,sha256=Zk0P4LfqwJYmtFDr6oMDFp0POfwgOFNGLM8dib-GprE,1246 +torch/include/ATen/ops/native_dropout_ops.h,sha256=7wUJF9w9LAS0EzuSPbm9Z2HICZXw4klTTXGMoZQUb2Q,2369 +torch/include/ATen/ops/native_group_norm.h,sha256=7Dv2tYVuhWdWP8XbWeTls3NT7_4HW7y7Q_s5Lp2PZ2M,7466 +torch/include/ATen/ops/native_group_norm_backward.h,sha256=0K6VC4WDzHiueA7fq7pBQMa9X9huRQq7ZCx-k3F7zmA,8975 +torch/include/ATen/ops/native_group_norm_backward_compositeexplicitautograd_dispatch.h,sha256=L7cyjYzKqo5z2fJdL9t7CuGZDxgUyp_YtezTj-g6Tb4,2544 +torch/include/ATen/ops/native_group_norm_backward_cpu_dispatch.h,sha256=rC0SorxLN8--x-yGwrKF_TAHiniPKNxIZHoIPd7wSlg,1575 +torch/include/ATen/ops/native_group_norm_backward_cuda_dispatch.h,sha256=Dua1HplB0jVW6brQG0E_e8u7W9DIXwy5pZSR0YJusy4,1577 +torch/include/ATen/ops/native_group_norm_backward_native.h,sha256=XLEUw9MN42ZFOlniHyzHQQf2qtfhJcg1f48aVGlxOCs,1398 +torch/include/ATen/ops/native_group_norm_backward_ops.h,sha256=0LqN48ShBI9Jj7m5-Qww4PIIt4TGNWYhxBIqqc7oUg4,3796 +torch/include/ATen/ops/native_group_norm_compositeexplicitautograd_dispatch.h,sha256=o5PD18tXtO_shBUaAZlDSClpkbj7Hd-E-c7I_nWpJ2Y,2791 +torch/include/ATen/ops/native_group_norm_cpu_dispatch.h,sha256=ni4C5QGUWcIBg_ivqiTUwqd5vkOFPRagzeU2UTu4uL0,1439 +torch/include/ATen/ops/native_group_norm_cuda_dispatch.h,sha256=iwHv89VEkK55zgCDB9yoAWLRpnL5S9zW0VQsx_9IMhk,1441 +torch/include/ATen/ops/native_group_norm_native.h,sha256=yvXkzMk4OoLKV0dqYWqT4PVkS-op3SKIKlgRvcArNis,1510 +torch/include/ATen/ops/native_group_norm_ops.h,sha256=wYzSuV5XSXDasQyasalXJtAnis4cFVZNncaMj1OIpGM,3354 +torch/include/ATen/ops/native_layer_norm.h,sha256=RngddZoFs1Am2SlzoPjbteqLqZuplYCf20-vBgTtk6U,7286 +torch/include/ATen/ops/native_layer_norm_backward.h,sha256=ESHIilI2Bk2QCeyid48ef4f1wncUWzxeKY1w0vC5JXQ,9455 +torch/include/ATen/ops/native_layer_norm_backward_compositeexplicitautograd_dispatch.h,sha256=harJcPHECBPNEGAuVXvdUbfakSyxsw1ZaL6V345xZpI,2632 +torch/include/ATen/ops/native_layer_norm_backward_cpu_dispatch.h,sha256=BSWs45sTtz8k5LUT-6ciWwBf5VpeKXefKaKEgXekrOk,1619 +torch/include/ATen/ops/native_layer_norm_backward_cuda_dispatch.h,sha256=2B3QtvismkQFb2kjxRJybBcdpJGT3NiZl3RP6M2R87U,1621 +torch/include/ATen/ops/native_layer_norm_backward_native.h,sha256=s-0NgBzl23wiY2D_Isj22KojrxGcZ7DPPm8DPQ88h84,2125 +torch/include/ATen/ops/native_layer_norm_backward_ops.h,sha256=u2aoVn7s-csznVdfxumDmZxDrP-sk99bFYseRUigUig,3884 +torch/include/ATen/ops/native_layer_norm_compositeexplicitautograd_dispatch.h,sha256=Gv6S46OolGSlhSw4SMoVD8yt0txehrxWqXuAqNhU4Gg,2671 +torch/include/ATen/ops/native_layer_norm_cpu_dispatch.h,sha256=IF72vS4T2v16qCBsSWG1FsevKusABWQ4jKENZjiPY5o,1399 +torch/include/ATen/ops/native_layer_norm_cuda_dispatch.h,sha256=YzrvBXZ40HJSwLH2q0XiJLjXV6JCyirWFiX_sa6fqUk,1401 +torch/include/ATen/ops/native_layer_norm_native.h,sha256=-aPAmyEZPpDlfW5WcLDq_4pCuh9bnnBni64opcS9DEw,1924 +torch/include/ATen/ops/native_layer_norm_ops.h,sha256=yvV9yx6aP5P0cBvw3M7Fo566ZZramn59D8VZycRRDDw,3172 +torch/include/ATen/ops/native_norm.h,sha256=NmEcCyc71ydiFy1gZRImOUNB88NPiPPtRp5xVc4aXwk,2715 +torch/include/ATen/ops/native_norm_compositeexplicitautograd_dispatch.h,sha256=gVJRjs55h9DUjt1ZsHYvtyEf9OK_RF-JnZSJWSjvrM8,1570 +torch/include/ATen/ops/native_norm_native.h,sha256=Z5mssLD42nSd-4pTM53U7NZCgI683FHeDWoBOKCdvyg,1252 +torch/include/ATen/ops/native_norm_ops.h,sha256=w7HE1Qo-TOPIcFjqqNmowEOItPnrvrY-4w0FAP6BSkQ,3972 +torch/include/ATen/ops/ne.h,sha256=-DdzR1To3wcnzjWk71AD5gXbGGsbiqwSzBeducMFZQk,2096 +torch/include/ATen/ops/ne_compositeexplicitautogradnonfunctional_dispatch.h,sha256=HPaKzP9g-5lPN4YCJDcrA4Nlo5dwWXtl0CmFzxdMyEs,1288 +torch/include/ATen/ops/ne_cpu_dispatch.h,sha256=DoK7b4q2wTo3VIzT5MDA1zIVXLq-pd-nlc-aTLq5p5w,1620 +torch/include/ATen/ops/ne_cuda_dispatch.h,sha256=KeZkxA4X-5uLA5llipDn9dzgY0_CXhHuBF6zEjtwZ2c,1622 +torch/include/ATen/ops/ne_meta.h,sha256=vi02e6F5EIBfBBM1hprGjzkmFYWyydJ84RZvZQcLxo8,989 +torch/include/ATen/ops/ne_meta_dispatch.h,sha256=ElrVXrJagst6mxw4gHAwYXpERTC0eWda908NCEommb0,1622 +torch/include/ATen/ops/ne_native.h,sha256=l8QcQikr_q6Z4XelASLloRheKJH8m1q43m9gbX77-Z0,1459 +torch/include/ATen/ops/ne_ops.h,sha256=QlQ-L6e4pew1Z0OZHW5tV5Vd1121AM8mgnGOKiRDQdM,4455 +torch/include/ATen/ops/neg.h,sha256=3dil3e93bYN1znPwnJcqO_b4Peu4wlLkQ8GupsBgXLg,1384 +torch/include/ATen/ops/neg_compositeexplicitautogradnonfunctional_dispatch.h,sha256=QKZyMJQouMIyjcrLfVbW0vCY79b6Fd1BMN63doqjOj8,1089 +torch/include/ATen/ops/neg_cpu_dispatch.h,sha256=hVkvXUwRKuGzVIxHtdx2NsUn7ZmLNyqaF4KqpqmCruY,1170 +torch/include/ATen/ops/neg_cuda_dispatch.h,sha256=6ykp4X0Fl0oMxoiyxORWZVCt3GjztdWJ5GMRGP2Jc0M,1172 +torch/include/ATen/ops/neg_meta.h,sha256=57nq1B29KTXV2XD3RxU7dei3e10Va_X11WBeK-1LQjU,818 +torch/include/ATen/ops/neg_meta_dispatch.h,sha256=DoHY3wKyUrOYLrxC1xypYFYhNxMk_ztuy82J6HhZxvc,1172 +torch/include/ATen/ops/neg_native.h,sha256=JV7eREAa3hMs2RlTkwIM8rYTzjokJPAXMicr1SDnNmM,1368 +torch/include/ATen/ops/neg_ops.h,sha256=hvRtHi2LAVleZ5nOC1m6Mb9XIXh4yo2FNYih1ypJWkw,2273 +torch/include/ATen/ops/negative.h,sha256=8Oug72iYvfRcQuDGOKu5bhBOAzCE4pjV4GxLJw0KSRE,1449 +torch/include/ATen/ops/negative_compositeimplicitautograd_dispatch.h,sha256=agjot52602rW0eBazmt6PnGfzapX05YhdxAEtDb-F20,1234 +torch/include/ATen/ops/negative_native.h,sha256=ldt_g8Rtmyuxt4F4aAJ7cywNdKFh_7MhixuNZr_8jU8,865 +torch/include/ATen/ops/negative_ops.h,sha256=xxg6662VE6dSvnyLTaW2xAfrLbU-T9Y5rRE7nr31GFI,2318 +torch/include/ATen/ops/nested_to_padded_tensor.h,sha256=9MigTsKd9zLcSJvor8X4vzkgRhHh-HowWPcbvfeJJwU,1089 +torch/include/ATen/ops/nested_to_padded_tensor_compositeimplicitautograd_dispatch.h,sha256=B01U5BmlHOcvRzMpx3ou91HkfUIHbe4s_oxMqtjnwTU,1103 +torch/include/ATen/ops/nested_to_padded_tensor_native.h,sha256=EMWQlBojardN6cqNN_rZRcVM0Tz7GFTejEvh5hZbJKE,815 +torch/include/ATen/ops/nested_to_padded_tensor_ops.h,sha256=StRExLhgnm7MaQFTpOkcqQCv_AL_s3lBzRznzoitvxY,1441 +torch/include/ATen/ops/new_empty.h,sha256=UiSxVfxrKLKmN3PVd4zKMNFgOQ_rqziGUk0RhvPKh0M,4589 +torch/include/ATen/ops/new_empty_compositeexplicitautograd_dispatch.h,sha256=xOTBvta-cgz_rqYN7b_p0ICF_TxpJRnDzdStyaBjD8s,2088 +torch/include/ATen/ops/new_empty_native.h,sha256=5q3d43fyXuBo8GMv-gIP_G1oGA2oeNR2QNIZJ37qnMY,1037 +torch/include/ATen/ops/new_empty_ops.h,sha256=L_hnffy4GHwE0WfB60wUwWUPMcqnFts2KkCn4lKK3kM,2491 +torch/include/ATen/ops/new_empty_strided.h,sha256=Z1527DKyNyM1SARoC4BSyigjFDQxiBQxM735eehdOz4,5453 +torch/include/ATen/ops/new_empty_strided_compositeexplicitautograd_dispatch.h,sha256=D7_L84y0YmVCk-NLb7nxXU1D1UXQKttOOGM4wwXifnM,1536 +torch/include/ATen/ops/new_empty_strided_compositeexplicitautogradnonfunctional_dispatch.h,sha256=_jRCpvWQ0erhDCUzI6W5Qxad9xfLOx6HJ_VtdNKCclU,1814 +torch/include/ATen/ops/new_empty_strided_native.h,sha256=uG55t8f2jXqnPB4CMyf99Hw1O9oONHKYR0MIAy3K864,1109 +torch/include/ATen/ops/new_empty_strided_ops.h,sha256=PTmQ3eRrhhoSXwdubya7bNLJYPkfZp9yD2BsuwtF4Og,2727 +torch/include/ATen/ops/new_full.h,sha256=JPCK3LhVB2xej1K61CqCgca2Jr30l-Fpdqu_MQEd4W8,5152 +torch/include/ATen/ops/new_full_compositeexplicitautograd_dispatch.h,sha256=wokdK2NxHVo5lQWW810YkxpgR7WMVOMR-IUCIOE0phA,2328 +torch/include/ATen/ops/new_full_native.h,sha256=UUNJocjpxhhAkUtFWr43dcPT-Lhghm80hpyY0QfXc_I,1086 +torch/include/ATen/ops/new_full_ops.h,sha256=4rOLCQmEU3NhhU8oaHpht5OJYfsUxXzxgPqOT_8mwSw,2687 +torch/include/ATen/ops/new_ones.h,sha256=J0OLEZJMBU8Z61SxNoBcThNfJ0CbdIW-Bpdhq3gqki8,4560 +torch/include/ATen/ops/new_ones_compositeexplicitautograd_dispatch.h,sha256=snVoFVkayeE3O9VTx9Q9t0LNy4YFemtxmpJPVe8xqmM,2080 +torch/include/ATen/ops/new_ones_native.h,sha256=nggNLllVKJIO54JFgPyYBz7A2GR7Tke7VommY7NxZ1k,1024 +torch/include/ATen/ops/new_ones_ops.h,sha256=H1Ap5v0zRaopmBasWy1aZRsWG1NdSk3GxEaH3xWFmBc,2485 +torch/include/ATen/ops/new_zeros.h,sha256=AO_RrsVoT8m6th_-P_nEO7TLno_D3Bw0cvW2Amy6wJk,4589 +torch/include/ATen/ops/new_zeros_compositeexplicitautograd_dispatch.h,sha256=Vm6wDPLdJpQ5_080UJWMXPfruElK9Zi_CZRU8eQHodo,2088 +torch/include/ATen/ops/new_zeros_native.h,sha256=YA8SmTDS5Aw3GYOu7DSsbtx8Wu_15wx7IMM3K81z3tM,1026 +torch/include/ATen/ops/new_zeros_ops.h,sha256=cr7vaGPIm_01hN9NxyW9T52Tn9TM7B0IZqjYUnUPTWA,2491 +torch/include/ATen/ops/nextafter.h,sha256=-TblIa9sAkmMrIH07FumvBgni-eYY1rS2yLkVWXFCO4,1452 +torch/include/ATen/ops/nextafter_compositeexplicitautogradnonfunctional_dispatch.h,sha256=CqlDNXL3s0xWbeHpWRnQYw6n4jWPL35aiAtpzqQHtnw,1153 +torch/include/ATen/ops/nextafter_cpu_dispatch.h,sha256=_9AQ9leL9FwtC6_RIkZN148aKPLGdfbC-YGt_qRwd7c,1298 +torch/include/ATen/ops/nextafter_cuda_dispatch.h,sha256=mLsfFLwWS102x7BB439S16n34AP7g12iCKpVY8pCod0,1300 +torch/include/ATen/ops/nextafter_meta.h,sha256=xuWLppoQXGI27BFIeInsk-J-1VLl8EKyIffHEbXCca0,850 +torch/include/ATen/ops/nextafter_meta_dispatch.h,sha256=K1oQxUp-7-_2BOnPnDYr-tXSSQzUBe6bfQO1EA-4Xjo,1300 +torch/include/ATen/ops/nextafter_native.h,sha256=Qx4IZw_tAf7cZUM10MRusRG80CbMZU0iZxIQrjG9iqQ,885 +torch/include/ATen/ops/nextafter_ops.h,sha256=p59BwVz8Fyp9iUaK3W4zUgcjdQWBNmTKAzbdMlGPHyI,2585 +torch/include/ATen/ops/nll_loss.h,sha256=Eh2wlGFDgU1czBhePODMcYtHt5Hn66k9UDEoh4EdjsQ,5777 +torch/include/ATen/ops/nll_loss2d.h,sha256=hv1ov3XmTex5-V66gysrONmfDsBL7pFBmk3CgqPCBCI,5839 +torch/include/ATen/ops/nll_loss2d_backward.h,sha256=tfHW2Q6IdqdsU62Z5_4d-9vE4H7yw9cEQixkL6S38TY,7378 +torch/include/ATen/ops/nll_loss2d_backward_cpu_dispatch.h,sha256=LLSPFElfKtTdSj0jmY9h_KavQLG7yuvU3Qf4_mFkNZ4,2543 +torch/include/ATen/ops/nll_loss2d_backward_cuda_dispatch.h,sha256=a3OgFiSNm25AGITfttM0DoAdUm_oEWOMhGxaxH7hjrE,2545 +torch/include/ATen/ops/nll_loss2d_backward_native.h,sha256=2hDdI1qkBxcizGsxvSGGsCFmZCKiJFdvA_LudGhWwRc,1732 +torch/include/ATen/ops/nll_loss2d_backward_ops.h,sha256=4ut3Fk3y8gWxaFMyFeSJy9EIuMSfHc0uSh6Gcxe80AE,3099 +torch/include/ATen/ops/nll_loss2d_compositeimplicitautograd_dispatch.h,sha256=-Ao-XeVoPaI0VX8L26yBYfdruti516SNFeq8OA9L0wM,2227 +torch/include/ATen/ops/nll_loss2d_forward.h,sha256=b7pJLGZmQI_6wwJr2ZeKvyIhqb-Bo-SmFHiQ6aMjjew,6729 +torch/include/ATen/ops/nll_loss2d_forward_cpu_dispatch.h,sha256=OJBAxo5dXQrlb7BmG4NfCFZ40Gti7g7-ReUGIKYOzVU,2397 +torch/include/ATen/ops/nll_loss2d_forward_cuda_dispatch.h,sha256=e6f819-h_Hw9f2pxWg0TyrRBlKncj-uPESZWH1RN_ZI,2399 +torch/include/ATen/ops/nll_loss2d_forward_native.h,sha256=J2JTuC3PVSC5MYGQ2_5jH3DYPaOrDj6HLqgLe0H1FFw,1618 +torch/include/ATen/ops/nll_loss2d_forward_ops.h,sha256=y_pUpQe32hfrO6ho1FdK01ZZAw7syVPNmelmBIrBjnE,2940 +torch/include/ATen/ops/nll_loss2d_native.h,sha256=CmBsNyPXCY5lg02NcEwRaMq-yVa-ZQhZGSpb8yeKDXk,1079 +torch/include/ATen/ops/nll_loss2d_ops.h,sha256=RwtIuO3O8xqbzfDdHLxp20NIbTvTs2cUecvMkw0yRTU,2611 +torch/include/ATen/ops/nll_loss_backward.h,sha256=6ehcxwFbbZZo_AMiLwottcix32UIGg1y3SfD_rzHzkI,7316 +torch/include/ATen/ops/nll_loss_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=U-tbjWgkvoWMJ8TtcNd_aUsTdffbgDuUFFqJ3KaMSG4,1485 +torch/include/ATen/ops/nll_loss_backward_cpu_dispatch.h,sha256=n8F8w36MpzcTheQbfzcCAIrM95XnORr06Nvy3zO6bY4,2531 +torch/include/ATen/ops/nll_loss_backward_cuda_dispatch.h,sha256=XkkLWKJs_Ai-M7gbdy8zvT5Q4nFMboNuauwmUC3exSk,2533 +torch/include/ATen/ops/nll_loss_backward_meta.h,sha256=W6hjRyONtqptasAonOE2uf4dW0VKKqPl442zHWGk_4g,995 +torch/include/ATen/ops/nll_loss_backward_meta_dispatch.h,sha256=BADsEwi0ZRGeEwJjiVKlKYbYO6ZbB8NDgglbkYUViKM,2533 +torch/include/ATen/ops/nll_loss_backward_native.h,sha256=EhRGO42dPRbuhgo-hRol6SB57OX2Bgw_U67URlpD73o,1395 +torch/include/ATen/ops/nll_loss_backward_ops.h,sha256=RFOLfAi0pl7qFh81NEp-erLW24pfUit-0XdNzxnHYHI,3087 +torch/include/ATen/ops/nll_loss_compositeimplicitautograd_dispatch.h,sha256=0m16YPlIckHH5kJaO5Ox44mWeNRJr8Kwi5ob79e8WBY,2215 +torch/include/ATen/ops/nll_loss_forward.h,sha256=65Mv2fysKAeynCm64upMcuTVL2nu864JVcINk2kZlak,6667 +torch/include/ATen/ops/nll_loss_forward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=8s8oNWzpYA9gOthksx4kDck7aIF6fwztb1ZHJ6Xu86E,1403 +torch/include/ATen/ops/nll_loss_forward_cpu_dispatch.h,sha256=qrjsNekoUDZG6WwPBrhPfMGwghGfQ9yoIOjEixixXJg,2385 +torch/include/ATen/ops/nll_loss_forward_cuda_dispatch.h,sha256=uol3mOU5iOBl5J-PK7eRAD9S3L-lHyPyEvuqblKar3A,2387 +torch/include/ATen/ops/nll_loss_forward_meta.h,sha256=2ZnRaukgVnOPU9GObu_o6O5fZ5XOLNBfvyoqfIyd4ow,929 +torch/include/ATen/ops/nll_loss_forward_meta_dispatch.h,sha256=C497g9x9nVIdVMPYGLKA7I4jtm5gowu9C9hlA5AUTgI,2387 +torch/include/ATen/ops/nll_loss_forward_native.h,sha256=z4g2_bimglUW7JcrbPrHvJ1_bFAlr-zS3GluAS_O0tM,1318 +torch/include/ATen/ops/nll_loss_forward_ops.h,sha256=zvdDJhijxbRzLtELepLrcYyWNS7rrEjJDcAsmh-xJzM,2928 +torch/include/ATen/ops/nll_loss_native.h,sha256=Nqkdacz598yRVl6ORucTIljHbTK0AShFLVdXm-NhiW4,1075 +torch/include/ATen/ops/nll_loss_nd.h,sha256=nc2oGZGxx_m3sjuXvteHhQ6hYmrtc8LKGgAOPPCkctI,2376 +torch/include/ATen/ops/nll_loss_nd_compositeimplicitautograd_dispatch.h,sha256=MJ80xvsCHxI0gnbKddLIq4ZnsY-GkGwwgG_ggs0i3Zo,1373 +torch/include/ATen/ops/nll_loss_nd_native.h,sha256=J5MyTLIgAGDek7eToZpPQx7MpH8pn5qymRvM5gkK-zw,886 +torch/include/ATen/ops/nll_loss_nd_ops.h,sha256=_65h8l1sc3aYwkedTUgKPvSmANass22xfLrXUAE0OnA,1619 +torch/include/ATen/ops/nll_loss_ops.h,sha256=uEAvyzxh7IIpKOo3WvcWoU0l7UEL5qVHx-64_CARvBc,2599 +torch/include/ATen/ops/nonzero.h,sha256=ysYJ5d6QrJY0rDdWgy8wVgykPLLK0e5CcakBdyB0pko,1291 +torch/include/ATen/ops/nonzero_cpu_dispatch.h,sha256=wCdSTwF5T2xedb1J24bVixd7LefZ6AyRN9vak-jGzUg,1134 +torch/include/ATen/ops/nonzero_cuda_dispatch.h,sha256=0eFxM-bOyLWHyYK9eWT8S0m9rD6baPFA3IYAY2F4mh8,1136 +torch/include/ATen/ops/nonzero_native.h,sha256=yxQ2ql_VknxsnQcJFKRIqc26wuc0iNiUbV7e3KNUpZg,962 +torch/include/ATen/ops/nonzero_numpy.h,sha256=fUSQKqON8495ueRHDw-A_MhGkdQMJCwnOc_MYxBlDHA,936 +torch/include/ATen/ops/nonzero_numpy_compositeimplicitautograd_dispatch.h,sha256=_Wh8rlMiWAJ-OkAn0r2tW1B6Kn_oUI8sMuoUho5wJ4o,1040 +torch/include/ATen/ops/nonzero_numpy_native.h,sha256=W5GHvlWkvnA10lbm7dy7zrE3Dd4wBfEDf7N4Hu8PadY,752 +torch/include/ATen/ops/nonzero_numpy_ops.h,sha256=Ef-Mf9PYa3iFU_rJTsJQgoD--odaa1E_CBQbBVVmS2w,1279 +torch/include/ATen/ops/nonzero_ops.h,sha256=Krm-E4Xzq1EYX39aGU_V2yW06SQ6RXhVZkO_ebcZ1VM,1807 +torch/include/ATen/ops/nonzero_static.h,sha256=C75Toksa3S0iRwBf9CM9n5L5AtJAJjWW2r1OJGyE928,4257 +torch/include/ATen/ops/nonzero_static_cpu_dispatch.h,sha256=CYqoWnNE1O1CGUtYgKup6PO8vSP4fAGf3lBm-dupCw4,1639 +torch/include/ATen/ops/nonzero_static_cuda_dispatch.h,sha256=3H28CXLAYVNpgNpUch_dLEOBWwXKNhbt_Ll1U2no-JU,1641 +torch/include/ATen/ops/nonzero_static_native.h,sha256=EvFNaBExDso_SQT7tkDr4lcOTXH_DVRjRNBCUbY6t2E,1132 +torch/include/ATen/ops/nonzero_static_ops.h,sha256=WCUf3ImI-rDUpy4rfMLvL-aSLHTnWXZtEzmIwpBDwuE,2112 +torch/include/ATen/ops/norm.h,sha256=5tatF-Kg2GNeL9zA3AnjguexQZhmWQIXvGnbQWXMrPw,6516 +torch/include/ATen/ops/norm_compositeexplicitautograd_dispatch.h,sha256=xqzeGOMtHBfiKn3wIp7rvG8jp-MpRRXs7TU3jS5IkZo,1627 +torch/include/ATen/ops/norm_compositeexplicitautogradnonfunctional_dispatch.h,sha256=3JKsNt_7X8ux7dSqqTEMPuh-9vH8QlfIKs1aoMn-xnE,1270 +torch/include/ATen/ops/norm_compositeimplicitautograd_dispatch.h,sha256=aenIraO0p-7zp9tldlBMwqDBJpY69Njf6OVbmn9HmVQ,1896 +torch/include/ATen/ops/norm_cpu_dispatch.h,sha256=LgN0McgHf_6bzB2u6uHOnGv1ah40xrB8ZdiZLh9LZBY,1852 +torch/include/ATen/ops/norm_cuda_dispatch.h,sha256=rAFtAGElwqki2OiJb2asKKwgAwz1l2jbjoP1qTK2wEs,1854 +torch/include/ATen/ops/norm_except_dim.h,sha256=35bSg2rX8OIMvvuLo6vyRSwKnLKZ099NKSuCAC_rl_4,980 +torch/include/ATen/ops/norm_except_dim_compositeimplicitautograd_dispatch.h,sha256=Z_IAQ-Cj2aNGHGz30vg3ctp4gYcizsjgbT_21dS5E1o,1054 +torch/include/ATen/ops/norm_except_dim_native.h,sha256=qujaPdGjvf8DBRqJTxj79FtxkW8SmnsRPhSa1ImC9YI,766 +torch/include/ATen/ops/norm_except_dim_ops.h,sha256=JX8m-36vd_Xgk92QfC9vxOAdX9OWPkOivEzngKN4yr4,1321 +torch/include/ATen/ops/norm_meta.h,sha256=3OBPCJ6S5yWI0qE9fcm6TXzzeIDnCem1SXkVb7cXw_k,1103 +torch/include/ATen/ops/norm_meta_dispatch.h,sha256=zl1Huec01S-uNhlfj5_vZ71t8rOqRy8fL7jxNsmrFxo,1854 +torch/include/ATen/ops/norm_native.h,sha256=uUwnklId78ipnCBrRhk8zctPPTDs1nRUd20MyZK-tq8,2512 +torch/include/ATen/ops/norm_ops.h,sha256=SB3pJ1tpv7Ya-wLUFFJ4XVs9SZ1ogUTsnUHpl7IxhXU,10504 +torch/include/ATen/ops/normal.h,sha256=wkYf5hdo-VrjhO66g3kHnTu644sZk8oPxxsXzq18QQg,11915 +torch/include/ATen/ops/normal_compositeexplicitautograd_dispatch.h,sha256=hMReygAhIkZH7A3f7Dua6IJ-Q8Oq3E1GC7SRlBszYHI,2921 +torch/include/ATen/ops/normal_cpu_dispatch.h,sha256=RTaM3OHZ5v4TUjLhIGIlaRlVZh8jR8SQjDnA7toHaWg,2306 +torch/include/ATen/ops/normal_cuda_dispatch.h,sha256=hH7zjJTN14P9HMEDPYPtl-OO4_J6pA0IgnbJUZJBqZA,2308 +torch/include/ATen/ops/normal_meta_dispatch.h,sha256=pJ1LMXAEJjz3e8Pg9fSrP3_zWmhcO1erT6L1j69yPVE,2308 +torch/include/ATen/ops/normal_native.h,sha256=nbYl4zEHBkI9leCmqzREc0hP5rULthXRIAb6lbNecTI,3587 +torch/include/ATen/ops/normal_ops.h,sha256=YzA_97ITiVltXJVBa25hS6Pt-hJqvMwwoVrorybo7-s,9888 +torch/include/ATen/ops/not_equal.h,sha256=46rGJui3-kGy_OYmbURITdHsiW9621Aikoh4V1_YkmY,2229 +torch/include/ATen/ops/not_equal_compositeimplicitautograd_dispatch.h,sha256=c9a6mmiEZbgdSpgtbxzwNIATQP5ONSITT-akpvDUiSE,1720 +torch/include/ATen/ops/not_equal_native.h,sha256=s3itfrPp3hKOjBWjWII9-VggE7nxLfnDAORJwQ9WeQo,1216 +torch/include/ATen/ops/not_equal_ops.h,sha256=I-_K8wBN4m4rVhYRByEm8R_ehuHpSCep46lriNkeUIk,4581 +torch/include/ATen/ops/nuclear_norm.h,sha256=VNkWZmqmBZiPEuTHAMJlctWYXR5whhzMtnIcoN3TLMM,2340 +torch/include/ATen/ops/nuclear_norm_compositeimplicitautograd_dispatch.h,sha256=e6v8IqQTUU5woGQ-DlD-Qc6nmWlsbecajbCBQWW6myc,1593 +torch/include/ATen/ops/nuclear_norm_native.h,sha256=pe37nwIvfGzR9Omdl_HLeCl3RjsHZhLtG4V56Wx2aSI,1074 +torch/include/ATen/ops/nuclear_norm_ops.h,sha256=83jT_oJjjYFZ4uT0eYegJEoRtZgGIk9CNwWWZs91bA4,3344 +torch/include/ATen/ops/numel.h,sha256=YiV_IOzZj82f--7CL3z9jx9xDlTUBiM2FFuzCrqUzlw,756 +torch/include/ATen/ops/numel_compositeimplicitautograd_dispatch.h,sha256=2osIzi2Uy3MnHRCu9apwFIYhVXl00uedvx_EqjWvBrA,1014 +torch/include/ATen/ops/numel_native.h,sha256=Ql9Lku3Xf7LgaTnlGcOEzAdeua8c5l5SUwVZtaSKMuI,726 +torch/include/ATen/ops/numel_ops.h,sha256=aFau1zEB2cDfP2IrR2FB2xgQxZ_eJdvwelfrndmXiH8,1196 +torch/include/ATen/ops/numpy_T.h,sha256=32PcuB7WnL62gX0HBE1-5nBWHxCMWuYbU3LAHXZgXyk,758 +torch/include/ATen/ops/numpy_T_compositeimplicitautograd_dispatch.h,sha256=Pv83dKFQ96GgSO9O-dC8zeX90xRZwj5VU_BOl3zSgs0,1019 +torch/include/ATen/ops/numpy_T_native.h,sha256=1JjT7rDgNqehTMlbmFtA0WZCKwgWPZnMuXBqnzLUYR4,731 +torch/include/ATen/ops/numpy_T_ops.h,sha256=hUtDgK-fnM2g_vu-grneQHERiSXCiKV-UxxzjAsKFSw,1220 +torch/include/ATen/ops/one_hot.h,sha256=G557pLCY1UF3S4DntHrQ5iTFO-S1RLESiKKObPdmelw,952 +torch/include/ATen/ops/one_hot_compositeimplicitautograd_dispatch.h,sha256=MkTITT2rvxCjx7CJgcLkqXzCdC-aSYCcDXK12hFPVHM,1043 +torch/include/ATen/ops/one_hot_native.h,sha256=dhrhm1td1sqyj-H8v-g37DlzZ1lf6dWOtH0TGXIim0g,755 +torch/include/ATen/ops/one_hot_ops.h,sha256=0g6hYLhvPvq13oA-Nqg6ngqeDN-T70fGSm3ALe8D9YE,1285 +torch/include/ATen/ops/ones.h,sha256=W_g22DwoMDQ8yNcEAYcUv6DXn2JgTQtYeEvH1qM5V94,7083 +torch/include/ATen/ops/ones_compositeexplicitautograd_dispatch.h,sha256=bcSohEEpEy1V9CHcPLGhQuMisyHX3z3dYAIpgqM7hL8,2428 +torch/include/ATen/ops/ones_like.h,sha256=65po7sEMvdbiZD9nBi4gnq61JaK9mu_310T7-5oN1gQ,2462 +torch/include/ATen/ops/ones_like_compositeexplicitautograd_dispatch.h,sha256=FRsNhP7kllx7X6xwHFxoXDwvahwfhV77yIESTbgusqI,1642 +torch/include/ATen/ops/ones_like_native.h,sha256=ga7jIKFXUX1eqWOdJ9uPvmaYeDjmCMVBZzo1iQnY544,1084 +torch/include/ATen/ops/ones_like_ops.h,sha256=PfK109IN9n1F6DYtWTPA5pKDJEtp_efyVRzEjQXwRDk,2649 +torch/include/ATen/ops/ones_native.h,sha256=HtIyUUspwQSg26Vy8q8f-YEg5CrYOALfyXmU9Whp7oM,1320 +torch/include/ATen/ops/ones_ops.h,sha256=i94zNKxsqQtLOSqiofYVWJDgHKzaGO0kUAN2ZR9HU9E,4148 +torch/include/ATen/ops/or.h,sha256=wEbGL_7iJQ3LyZpFvyXJWb3hsocq34iKEDGlwmJ7l_o,1144 +torch/include/ATen/ops/or_compositeimplicitautograd_dispatch.h,sha256=dWCpHwpRVFMabWAlCBRK1h-A2ouBdvjCh0Ft4GZ2ClM,1278 +torch/include/ATen/ops/or_native.h,sha256=cQ8L_VYxWkgN52P03bKe6-CGdwj_YBsUIKoaTXfb284,990 +torch/include/ATen/ops/or_ops.h,sha256=30lZvc6fitKLpwgplZEc-fsZ0m_pwA0mtvKA_WAkyv4,3133 +torch/include/ATen/ops/orgqr.h,sha256=_kgKEfoZqGKEpRsbqsOyFG_JH6qSvOPhyiW_iOpyiLs,1421 +torch/include/ATen/ops/orgqr_compositeimplicitautograd_dispatch.h,sha256=DnaoWNhTh0ess9dYIMAPAFyq5ckOVkCKwbuSljXGbhI,1253 +torch/include/ATen/ops/orgqr_native.h,sha256=qdmmLM50RmgcxE0C0tTOn0GhDAupY9Q2thoASCrEc6o,860 +torch/include/ATen/ops/orgqr_ops.h,sha256=uBj1UWLK13j1hDC11DP8TZ8ec_M5VFcJXdPafVei-xg,1973 +torch/include/ATen/ops/ormqr.h,sha256=pGd-p5wEcmMR9Kl5Cqqby1WApBo0ngRD_Sf-EqMYRiA,1839 +torch/include/ATen/ops/ormqr_cpu_dispatch.h,sha256=gnSCAjNid_Bp6K2QMSdvBBiRxp4GEPIPrl0M5yZx60g,1393 +torch/include/ATen/ops/ormqr_cuda_dispatch.h,sha256=xP3oHdel9gPmAZ3kMNZziGqzJFo1-6DXAbkQV4jQ1QI,1395 +torch/include/ATen/ops/ormqr_native.h,sha256=alRGzVKLWzNDmwgLxOjphebjq-LvmXZKwxMyezQmbeE,979 +torch/include/ATen/ops/ormqr_ops.h,sha256=FrmoBlDTz8h8BuTuxPh77KechsoAX-v9A2YRx4jj4RA,2359 +torch/include/ATen/ops/outer.h,sha256=lwZApKb_eLqz6Q3oRMtBnQn9CdcDrqheK5mjfw9yPY4,1403 +torch/include/ATen/ops/outer_compositeimplicitautograd_dispatch.h,sha256=vm1KAYvuhjAMGNiGGpuh6nKrp7WIhXR1tzxpQdJeQM4,1247 +torch/include/ATen/ops/outer_native.h,sha256=Y_3kwwRs1la_4cLm6EZ5TfTef7GwYLtgsC5L_-jPEfc,856 +torch/include/ATen/ops/outer_ops.h,sha256=W-585u8uC4AapAs-Gn61_vN5vm31L_rEAr3pbo6hIpo,1961 +torch/include/ATen/ops/output_nr.h,sha256=Qh4E28AaxT7dPXJ85KP-iGp9PIsmw6BfwqCArG3fBGA,760 +torch/include/ATen/ops/output_nr_compositeimplicitautograd_dispatch.h,sha256=UdpJISwTc4233OyFr3eeRwHujCAg5w6kvENi1lkcjMM,1018 +torch/include/ATen/ops/output_nr_native.h,sha256=G7JHbr5l9ho9Bh3NZ3aS8PD6_DIEHMpoxEbnViUzfmY,730 +torch/include/ATen/ops/output_nr_ops.h,sha256=QTcEcdaOf2O6rUkF5n67O2WyFVi1P9lTsBgv1BZrPcs,1208 +torch/include/ATen/ops/pad.h,sha256=x12iCHoGpQF8TydCXZrE3R8jMUVaxnBlU7cJWSsD9Ws,2036 +torch/include/ATen/ops/pad_compositeimplicitautograd_dispatch.h,sha256=SSC5us6Z9D0wXhTxZDjMU5RNAzJXLBb7iLgVna-PlBE,1279 +torch/include/ATen/ops/pad_native.h,sha256=OUY8EBQoFD792LKHSvbwxaKa15D1fNmbIIVjA07Btg4,839 +torch/include/ATen/ops/pad_ops.h,sha256=-oFcHxD7Esw_4xy_ZP_dcqXkjYwbHxtQjI-0UvChf2k,1480 +torch/include/ATen/ops/pad_sequence.h,sha256=KylRCD1P9tCM41-4_i5bL_I2_I6paYzgf6NrRPIc4X4,1134 +torch/include/ATen/ops/pad_sequence_compositeimplicitautograd_dispatch.h,sha256=ldIyjPXz5f4L5Hy1WcnLX-ivA0uRLp4mljl2MRMMTRo,1114 +torch/include/ATen/ops/pad_sequence_native.h,sha256=j5nMc02Rh9sKhL2meN7AZZ0qMjbkS3STCWUteg_3NM8,826 +torch/include/ATen/ops/pad_sequence_ops.h,sha256=kJMRW6YMTB1ZALIVvEmsJwtmVy7-FAwjfLKRymlj2bU,1485 +torch/include/ATen/ops/pairwise_distance.h,sha256=LwNs-fuATmgAxZgHg2lo7nOsRl_xLaPlNGWfAmi1A1M,1082 +torch/include/ATen/ops/pairwise_distance_compositeimplicitautograd_dispatch.h,sha256=9Ca5HKvuSz01zCiFSik3MA8A9M5lBMIEeOwOeAaN9v4,1100 +torch/include/ATen/ops/pairwise_distance_native.h,sha256=HcociC6WWIZbbawY0WYUTNif4G6gc9JQUKiqp_sL-Cc,812 +torch/include/ATen/ops/pairwise_distance_ops.h,sha256=uMbfQQuLz7KI2pzt4tRdZ-ryGTI01r7FZDRSp44V7Z0,1457 +torch/include/ATen/ops/pdist.h,sha256=dD8ZU0Ee2h8FiB9xo5AvnHnr0rI-ckHxaci6eVkvxws,913 +torch/include/ATen/ops/pdist_compositeimplicitautograd_dispatch.h,sha256=eS3GeRxyjlaM4bBc0cmFwQ-L7u61GVTSNEQvhBjcJxs,1029 +torch/include/ATen/ops/pdist_native.h,sha256=tPQIZmKuiPax2Gpy6DknEZchsVHAFe_ivFWZ5yWaRUI,741 +torch/include/ATen/ops/pdist_ops.h,sha256=hl98K9tMth4ixw9nWXSEdwE8huBcC3kiCxWrFpTdjR0,1247 +torch/include/ATen/ops/permute.h,sha256=ZWyQUTnuu1qiPs3H036jYXcgjhJlGNEaaDPkPB8_8PY,941 +torch/include/ATen/ops/permute_compositeexplicitautograd_dispatch.h,sha256=5B-SH_D-nq4rlLYnS8WF8qDkvRbq8pytlQoIlqFMzV0,1041 +torch/include/ATen/ops/permute_copy.h,sha256=Ia321sUCvMi0WSHBq4etdjrQ1MMSbWS_upPLXkeom64,1461 +torch/include/ATen/ops/permute_copy_compositeexplicitautograd_dispatch.h,sha256=YdDg3DKHc5Pfhq8q1zrDSbg-jphY9yY-H6l7BX9uTL4,1177 +torch/include/ATen/ops/permute_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=9Dx9MCSR9a4fews9rdzRBK1oVCap-AL_l0o5_nPszy8,1072 +torch/include/ATen/ops/permute_copy_native.h,sha256=nG1UwTZQYOM0ZxdaCzYYRgp_m3wfB8iaTu7hwUUnP8c,864 +torch/include/ATen/ops/permute_copy_ops.h,sha256=9h2dMXRmfP4mF20v64FdDcbvRTI2YlSr7J1gxH_zq0s,1983 +torch/include/ATen/ops/permute_native.h,sha256=YN2K44AhN2B799YS23MEykktktlZhh1TQEq6m59eWCw,841 +torch/include/ATen/ops/permute_ops.h,sha256=aCjn1K4Y4GKEHWACWIDrFWlbYfHhcElkOK-RCZtPrYc,1293 +torch/include/ATen/ops/pin_memory.h,sha256=m-iQal92NcI7l6icfTfOBPBhaKVwHStutoVUSutEBI4,761 +torch/include/ATen/ops/pin_memory_compositeimplicitautograd_dispatch.h,sha256=I0DqFATtVQ8hR3ugq07fjqSEyf79xyWLgRAuM5U3ciE,1073 +torch/include/ATen/ops/pin_memory_native.h,sha256=35VkVuEljLoSWYqsVAWieLuW0odmC8RrbEFPoMpBPEI,785 +torch/include/ATen/ops/pin_memory_ops.h,sha256=KyU4ieqwAoRrbO3gSX59ah-JJ0zLOL4Ha1FeuxOi9mA,1351 +torch/include/ATen/ops/pinverse.h,sha256=fGcxnWh-hAQJOQwVeRgtcOkatt8AK28R3T1Vt_lsC7s,945 +torch/include/ATen/ops/pinverse_compositeimplicitautograd_dispatch.h,sha256=oqZCmG7bp8UZlEI0YZ_1gz3bRnI52jlrvOaTGKpG1kY,1040 +torch/include/ATen/ops/pinverse_native.h,sha256=ReZC8u40pfr5BHqxX4jVcd-ON3XGkt5fXmAbx9HJq2c,752 +torch/include/ATen/ops/pinverse_ops.h,sha256=lZ3vBriEXftZgXf660MmOA69XSERE_gN98oBb7XaxkQ,1272 +torch/include/ATen/ops/pixel_shuffle.h,sha256=ejKZdtcIDd9tLZlboJsDLKqXQcynS7U5j0eA9RJvNUY,1531 +torch/include/ATen/ops/pixel_shuffle_compositeexplicitautograd_dispatch.h,sha256=S7DC1zmaKpTiBRJOegN88D3UBewRgKBZ4L_x3NVzulw,1183 +torch/include/ATen/ops/pixel_shuffle_compositeexplicitautogradnonfunctional_dispatch.h,sha256=JfZQBrraEp2Vdr0CcuYPRViZ-lYJchGAKbpo2zrOTAg,1075 +torch/include/ATen/ops/pixel_shuffle_cpu_dispatch.h,sha256=SlKVkKIuKa8jGWOoDLnGbjQA2mKe022T5yw_EvACe_w,1005 +torch/include/ATen/ops/pixel_shuffle_native.h,sha256=ZQxeEzBz7z9tnCXsMxuNXv2dtsObmxrbTcNiaSU8pOQ,964 +torch/include/ATen/ops/pixel_shuffle_ops.h,sha256=wuEfBzTwjjf1ZlEWbF8roXLidJ7lsN4T2s8jds8x4ws,1997 +torch/include/ATen/ops/pixel_unshuffle.h,sha256=xmjgeTFjGetuyVGSBV5brLeWRxACilEXbM55spkJvr8,1569 +torch/include/ATen/ops/pixel_unshuffle_compositeexplicitautograd_dispatch.h,sha256=5xBbUDPtX6lLAnG5QaJR9uUjHXcH_1xNaudLfTFb9Wg,1191 +torch/include/ATen/ops/pixel_unshuffle_compositeexplicitautogradnonfunctional_dispatch.h,sha256=2m-mlFy51O12WjhngoxbycfDWuM2cH3BEsZhhO36erM,1079 +torch/include/ATen/ops/pixel_unshuffle_cpu_dispatch.h,sha256=DHgDfhmZ0PUqqe4RqFAx8RpgM8-HXhgcgj4xZNB1n5Y,1009 +torch/include/ATen/ops/pixel_unshuffle_native.h,sha256=oDHVRRKOKKKWCIt0uALzDy0DGJ5pOi5frp-P9reDfWI,976 +torch/include/ATen/ops/pixel_unshuffle_ops.h,sha256=laVhiKWL91sz_nMff4xXljVg3dvYY8IeseXkpLQvNjs,2021 +torch/include/ATen/ops/poisson.h,sha256=AyVek-ij1xNMT9a9gUyQUoyvkGzhmHHNBT9Q0EBqFLw,1561 +torch/include/ATen/ops/poisson_compositeexplicitautograd_dispatch.h,sha256=giBT2SV-N5P33J3vNwThSlNTINe9TGWaIAsC_XDTRC0,1222 +torch/include/ATen/ops/poisson_cpu_dispatch.h,sha256=y0d3Jb4SOCUV5h-HN5pbARqb2vIk6M9slt2MmBdl_tU,1032 +torch/include/ATen/ops/poisson_cuda_dispatch.h,sha256=OdeJuLd5ml7cXSAuTcMhoFqSdTWei07HvY2Us8f5tmo,1034 +torch/include/ATen/ops/poisson_native.h,sha256=ic7tTHq7bgHilkfQzHURCff5Zhw_WbO2zhbQj4oyPME,1036 +torch/include/ATen/ops/poisson_nll_loss.h,sha256=HksHExpx5JmGBYBcOn1zWKyzqnxTx3YEuOXXOz3YY8A,1128 +torch/include/ATen/ops/poisson_nll_loss_compositeimplicitautograd_dispatch.h,sha256=0SlpWtXrli-3drB73FPD_8Wv5TaKlGSXQs2ahkdAHbY,1114 +torch/include/ATen/ops/poisson_nll_loss_native.h,sha256=0hkcCb32MF0gnA2A_O-M2wSAyNv9VUKde2PhblQfvyw,826 +torch/include/ATen/ops/poisson_nll_loss_ops.h,sha256=mr6YHsfVWWT6aPoMooV3DDpRCgiqC1j5PCjgHl1D7q4,1531 +torch/include/ATen/ops/poisson_ops.h,sha256=fs0y73ogeDIqjpInglErUu87M0mex9hPA-c7rPiwju8,2093 +torch/include/ATen/ops/polar.h,sha256=59nwGgeNPIvJ0x3_djeP2Px-1mHrlpyTuUv7CZLcN3o,1403 +torch/include/ATen/ops/polar_compositeexplicitautograd_dispatch.h,sha256=8jC9x-50uJzs4RlQYTTyFI5GqmB1euAJsBFviP46aKw,1042 +torch/include/ATen/ops/polar_cpu_dispatch.h,sha256=HJPL7YAIEvTamcN4zE_CY5mMamLuBAEQtdkvSnP2Pi8,1125 +torch/include/ATen/ops/polar_cuda_dispatch.h,sha256=uQpP6S5i6jmY0_MUenlQsd2o17qbAmlwXuCQRcmTlWI,1127 +torch/include/ATen/ops/polar_native.h,sha256=PEz-OBSeFuiw1jx5AtblKBAZ2f8meYUHoIMEJTa7EVI,856 +torch/include/ATen/ops/polar_ops.h,sha256=g6fpYt16-ercG4hBhs3iWCSQV2QJbJMmJU7ypF90jTo,1961 +torch/include/ATen/ops/polygamma.h,sha256=-3ikoI7C6MD1aOysM7Eg3ciKQVVDJil5BBvrQSAgrME,1374 +torch/include/ATen/ops/polygamma_compositeexplicitautograd_dispatch.h,sha256=ATyYl5quZzXVmMHddMycxu24v6q1ilz6lgcH2YeDZr8,1029 +torch/include/ATen/ops/polygamma_compositeexplicitautogradnonfunctional_dispatch.h,sha256=FRgHWy67jyCpxRL5eQxPoT4sEAo1OLw0t5fyw7j04_c,1058 +torch/include/ATen/ops/polygamma_cpu_dispatch.h,sha256=fPQ7AR0Mhj8hgT3fUnce-yzrjhvT4AQS1deAkvVXdxw,1173 +torch/include/ATen/ops/polygamma_cuda_dispatch.h,sha256=qhFeGZ0lh4FsTDApAZNrLH53-Iw3_1XkxjUtZl0Vy70,1175 +torch/include/ATen/ops/polygamma_meta.h,sha256=dWzsOLaB2VHnnRmqoP6YfnaOY0o7CJuYw1rFjmZ0M5Q,835 +torch/include/ATen/ops/polygamma_meta_dispatch.h,sha256=Jepz4eowtRhljOQqo8qdoJR1QNSVk7Bt33mhEzZ6Fi8,1175 +torch/include/ATen/ops/polygamma_native.h,sha256=DuBh1KOv1nZAtvYFvl3ZtWn-TnNvNvHX3Ndqo4-hFYM,935 +torch/include/ATen/ops/polygamma_ops.h,sha256=PcoteqJd5A6x0Rsj_1Aajnuf7x3bEokXrWkX0rRkRgM,2441 +torch/include/ATen/ops/positive.h,sha256=Mu66OlqZj3X8Fjlj8X0VfTWnZkzWfQBe-6O1EYAHh8g,905 +torch/include/ATen/ops/positive_compositeimplicitautograd_dispatch.h,sha256=QGsRJWN5RhpOrKn1jnHFQnC6wzW4k9CbiSulfubPbj0,1020 +torch/include/ATen/ops/positive_native.h,sha256=hkiqdyQTI31dieW0rysixXq2-LeJnVYn7E5ZKU4boYM,732 +torch/include/ATen/ops/positive_ops.h,sha256=isaCy0KrT9J4uhltWqTJAPQFPxS6PVrfMAhQO81x9F0,1223 +torch/include/ATen/ops/pow.h,sha256=-EK328jhUomchm4GJz8g-lKw2AONa01SQvo9b_O0HXM,2961 +torch/include/ATen/ops/pow_compositeexplicitautogradnonfunctional_dispatch.h,sha256=nljLUc8gm-mxAzjoArePxFZ_1pC97m0XAwXmbyodLgw,1384 +torch/include/ATen/ops/pow_cpu_dispatch.h,sha256=ArgZui8B6sIA5oigxgmsvRU3eZVqfHtaV4p4rn7KmWo,1941 +torch/include/ATen/ops/pow_cuda_dispatch.h,sha256=fqH9JOOy9E5S3UiGAvf5B8tyTh67Fz_dxlg4wzn3ENM,1943 +torch/include/ATen/ops/pow_meta.h,sha256=DGxa8NeFcOfZMxDtSVJVD3jcAQAldAC7mRnkQSiWX3c,1154 +torch/include/ATen/ops/pow_meta_dispatch.h,sha256=OfUX0PQZOMAK1kcpFgCZ9Mtb6aksFaiwG0EXpcUaGHU,1943 +torch/include/ATen/ops/pow_native.h,sha256=I4_ogEWBQmWgIr8gz6xcKS2X5l-IHQdlVJlu0eP5IE0,1480 +torch/include/ATen/ops/pow_ops.h,sha256=yXOFN_7rgdtJcR9a3sv003I5ifbaAz-sAOkrAuUWgAE,5914 +torch/include/ATen/ops/prelu.h,sha256=TJ-kYkNkD_T7VzAySkx7gE5O3rfPUfrPQOn_neOuTXg,937 +torch/include/ATen/ops/prelu_compositeimplicitautograd_dispatch.h,sha256=WKV2r00u93ai8fCd38QsPzg4b5n5wMMPpmxzMXNG01M,1044 +torch/include/ATen/ops/prelu_native.h,sha256=0NBrld2TiiRUTivI5ijBy-cRI2EqSZNmrmFU0paivyg,756 +torch/include/ATen/ops/prelu_ops.h,sha256=3sXLxty2j3z60eIx_i_PoP1RKZlWIiofLunih73JtKM,1297 +torch/include/ATen/ops/prod.h,sha256=pYSiMEQ3BTDvCsqsz_-SAQ_VCE8lHKBKQnhVA3Lq-is,3560 +torch/include/ATen/ops/prod_compositeexplicitautograd_dispatch.h,sha256=jHIedNnCNCGj4Z4SVFipP9ik6kv7FjpnKLHFKGbQx2Y,1210 +torch/include/ATen/ops/prod_compositeexplicitautogradnonfunctional_dispatch.h,sha256=XGARH5XY2QagoAuQ0-vyae-Ji4p4vAR7kOCCYnY6OUA,1129 +torch/include/ATen/ops/prod_compositeimplicitautograd_dispatch.h,sha256=X_ABSbuV7Nm16kQNjWFhaG7KT4aNtIdrX5a4StYpwYs,1421 +torch/include/ATen/ops/prod_cpu_dispatch.h,sha256=fgnYuoD44QvJhTYIe3eJEbuQhGwmgfzrhwPOKWH9HrU,1471 +torch/include/ATen/ops/prod_cuda_dispatch.h,sha256=DmsR0vXUVOuhwxqSBxA_ooTMfaK2asLzvIgo4WM232E,1473 +torch/include/ATen/ops/prod_meta.h,sha256=7VOwKynXEdDYYQ52QslmexZjK9YMCiJrbUfQiiT8NGI,893 +torch/include/ATen/ops/prod_meta_dispatch.h,sha256=t5SZZU0jGkzxTL8hbtKh5Er9vQJen8JC6vael0AGwTA,1367 +torch/include/ATen/ops/prod_native.h,sha256=G1DKLXvmTOATl9eyB9vuA2BdasqmlI7DariPgW71bao,1428 +torch/include/ATen/ops/prod_ops.h,sha256=0Z1tRhWneaq0r99tJJCtVLf9oR3k0rTDdFqxqBLEJL0,5282 +torch/include/ATen/ops/promote_types.h,sha256=yY5J_y9-UDUVg8AOwSjiwBDGk5hgDE-JavgC76jnEiI,977 +torch/include/ATen/ops/promote_types_compositeimplicitautograd_dispatch.h,sha256=Arja6ix0IM_1Ky4cOYBq6FVReHhYa9j0qFg7g8h2bpk,1048 +torch/include/ATen/ops/promote_types_native.h,sha256=HKlBJqK7kookmuQO9vRLxiZb0fr9gEaxmw9lIVxcChQ,760 +torch/include/ATen/ops/promote_types_ops.h,sha256=5AtQQLqc9Whd8GGIpyoc9XsZ4X683vzN835rcZwP0yw,1321 +torch/include/ATen/ops/put.h,sha256=zKxCVw0WuiIJjmPoavVgDbOZEXltqlVr4BWb9tu-hio,1710 +torch/include/ATen/ops/put_compositeexplicitautograd_dispatch.h,sha256=2GFpgaKRAgLzybNMzLnYQ_WpukiljfYr225tc_nE-Bk,1388 +torch/include/ATen/ops/put_cpu_dispatch.h,sha256=AaAzeeYizV4QcCcQNkLj2FqllfIUk5VTlbRmIgXQVi0,1044 +torch/include/ATen/ops/put_cuda_dispatch.h,sha256=DrVD92DdMWmTY2GcKw9V1w5f_Sjsl-rOA4vSuxFF-g8,1046 +torch/include/ATen/ops/put_meta_dispatch.h,sha256=M-jUHofnB-CI49NOTKfmQxz2vjDQJGhfWRxuNUyEJVs,1046 +torch/include/ATen/ops/put_native.h,sha256=OjL_Ozw2av95qgHF1aRfyLj-iMrYinDJ969jmqWlzFg,1072 +torch/include/ATen/ops/put_ops.h,sha256=Xk3ZLM2f8WFluntexeEMJz0WgkCx2S6taNEX8tfHJ3U,2987 +torch/include/ATen/ops/q_per_channel_axis.h,sha256=tYmmRertATakSQ9hD0NCmrW1CJFDu3HNG87ejkqfQpg,933 +torch/include/ATen/ops/q_per_channel_axis_native.h,sha256=f8rqlsUs7RTqUg8bdZTRoL9RV0LtmDgh1OJuiQo8NgM,739 +torch/include/ATen/ops/q_per_channel_axis_ops.h,sha256=pLhS6kbovOUGcBtfg3lqUD-Ugz5NthS5d7wCslKtUec,1235 +torch/include/ATen/ops/q_per_channel_scales.h,sha256=-T265OFu7YwezrloNbyJTrTHXPO7mUXiFiyyNuHrBiM,1421 +torch/include/ATen/ops/q_per_channel_scales_compositeexplicitautograd_dispatch.h,sha256=z_bZB6-nBgom99A-USUFqdOatep1B1jgPhpi2nvPALs,1149 +torch/include/ATen/ops/q_per_channel_scales_native.h,sha256=E5Vczsy39kBk1ZNCYtsoL4DeldjeBkgeNUhzu4TPKUE,836 +torch/include/ATen/ops/q_per_channel_scales_ops.h,sha256=o9qMF9Yq5W8CjsILpC_xY7szEKkWOj5j5iQ7Ef3CjDQ,1885 +torch/include/ATen/ops/q_per_channel_zero_points.h,sha256=xHCcn_bGZ2_YVnjRvL-Cogw6uWFnMoDtC_cGvBSUI3k,1471 +torch/include/ATen/ops/q_per_channel_zero_points_compositeexplicitautograd_dispatch.h,sha256=JDxc3roywf2B4blrB1jaCBATSM6uPllYPU_yRb9v1qw,1159 +torch/include/ATen/ops/q_per_channel_zero_points_native.h,sha256=7f7m6gecEdHNK0nQ-TyBN8AyXwKuZXqLRq4jpLNK6Wo,846 +torch/include/ATen/ops/q_per_channel_zero_points_ops.h,sha256=tqAAxJkMirXR2Xs3mKs2Knex_9ghHri7f874XtWgpJE,1915 +torch/include/ATen/ops/q_scale.h,sha256=1WggPLvpVzf5OYqrqh2nBsRDbq4FMn1H90YNGObIHAI,890 +torch/include/ATen/ops/q_scale_native.h,sha256=Q27fWRo48tf2NhBOYCqXXokNRpAI0xhUgys-P4dHvRY,733 +torch/include/ATen/ops/q_scale_ops.h,sha256=0J-KBz3FzFk572hu2XWKm_E298eC_myyss_Zo0U5vm4,1201 +torch/include/ATen/ops/q_zero_point.h,sha256=vBfIWKFuQayfrECh7jDFjqyCRfm2KielCAMksdjorGk,909 +torch/include/ATen/ops/q_zero_point_native.h,sha256=7B--Bv75JI_LuWHoDIUxAH64If8KUlUWBcRxWol2hJ4,739 +torch/include/ATen/ops/q_zero_point_ops.h,sha256=RJG0IdLFtyI78ImD19zkfxI0Y_UbP2BSYaFBZ9KW_1w,1217 +torch/include/ATen/ops/qr.h,sha256=mCt0cKsXHRusEDxGRr8wvtB5lrLmUoT5fItqpTC5CpE,1525 +torch/include/ATen/ops/qr_compositeimplicitautograd_dispatch.h,sha256=zWs4CYrAxqFkIpDSxsPcDPMvyv6NcU1EjryPbulso0I,1313 +torch/include/ATen/ops/qr_native.h,sha256=GCy2id16vZSRa1p4ZtW9J2Ig5fF4vjZf_Nkls1FqQv0,893 +torch/include/ATen/ops/qr_ops.h,sha256=iKD_9MJtqDyLkqBeZ79YVXBABH9n6qeHf6MWbi0DgEI,2101 +torch/include/ATen/ops/qscheme.h,sha256=qcrePpz_LIFeYvz4JYdodUaorRagEgJgCUSjDu25Gg8,758 +torch/include/ATen/ops/qscheme_native.h,sha256=SP2sqF4szvKIHYX4TXbTcHXBDdsln61BIt_XBe_djMs,738 +torch/include/ATen/ops/qscheme_ops.h,sha256=x-z57214V3Ban8AUYHvV2mNbY9btFN05qDY4gBwAK7c,1218 +torch/include/ATen/ops/quantile.h,sha256=s6m5pSEXB6R8AJg18UMVW2eXawwuwj27_sDrPon3-Q0,3191 +torch/include/ATen/ops/quantile_compositeimplicitautograd_dispatch.h,sha256=jdbRH7Dwb_bd5V9hlOeImfGB14hndR1LHSSk4m0WVSw,2070 +torch/include/ATen/ops/quantile_native.h,sha256=wdI-OpgxXzH-xqC9AVB9dMmdMX5W0gZh9fTst_A59Uc,1376 +torch/include/ATen/ops/quantile_ops.h,sha256=Oy7PlxJUK-eUXLOAnU9MvHqPjNUt_c_oF-UfvRzKoHs,4244 +torch/include/ATen/ops/quantize_per_channel.h,sha256=WkuQCnJuDOOs4BmgJMLsQk_Ex5bY5w60YHKs4hnT3Do,1997 +torch/include/ATen/ops/quantize_per_channel_compositeexplicitautograd_dispatch.h,sha256=qQvHSUOuGiavBC-9iC1mWW5FwwrBoCLtjO0_cUlSSGM,1339 +torch/include/ATen/ops/quantize_per_channel_cpu_dispatch.h,sha256=CbP2HmOAy-BZJMi9eo6gpwDaGGYNJZKWHarAYkVgJcc,1083 +torch/include/ATen/ops/quantize_per_channel_cuda_dispatch.h,sha256=WP3Gw_P3OZsAqDSxmYBEeOnplwmGF-g_PR5Sz5iwNvo,1085 +torch/include/ATen/ops/quantize_per_channel_native.h,sha256=tPlLsPG6noHvkeBoC0B97llxAgJYQB5UbWZu3KubZ3s,1026 +torch/include/ATen/ops/quantize_per_channel_ops.h,sha256=fZoP1IKOPh9OMXq6GuOPf9ejI9uP6PhVl81jGKWWoec,2521 +torch/include/ATen/ops/quantize_per_tensor.h,sha256=34mT0kVQ1JnapUS61DJq-uYQab0tQWydyF4LArMwMYM,4188 +torch/include/ATen/ops/quantize_per_tensor_compositeexplicitautograd_dispatch.h,sha256=T6j9LfbP9VXbuHkfuFuL9vG97uMovGA_hE2urK9K0BA,1931 +torch/include/ATen/ops/quantize_per_tensor_cpu_dispatch.h,sha256=Uu-tbhTQNnuUcgrgcgIIWcN4dfiap_hUTavhPcFWGNQ,1351 +torch/include/ATen/ops/quantize_per_tensor_cuda_dispatch.h,sha256=hiY6FAhmHLPETKxsL7_wR-Z8CGq3zaR89X4EsKTJAT4,1191 +torch/include/ATen/ops/quantize_per_tensor_dynamic.h,sha256=Zt8SdrwOVmrgmVL1sfNB_9VWDBkQTdoDw8ShRhGkJjY,1788 +torch/include/ATen/ops/quantize_per_tensor_dynamic_compositeexplicitautograd_dispatch.h,sha256=HmjSm2p6Ddv9oMM8_4C-7YFvDDZg7-IGy517mm1Pp7k,1245 +torch/include/ATen/ops/quantize_per_tensor_dynamic_cpu_dispatch.h,sha256=qq0AH2mKj5Vn8MaPfs51FRIWCbxbsPgxJo4drDSyc7w,1036 +torch/include/ATen/ops/quantize_per_tensor_dynamic_cuda_dispatch.h,sha256=qWO5oerFtBm33iFtCZ2WQ0B89r9TTGWZO3zW7PiatHM,1038 +torch/include/ATen/ops/quantize_per_tensor_dynamic_native.h,sha256=WJ7lt_Hf8USh63iLtAp7YrZZMoDPBgRMDJUk8g0g5hY,932 +torch/include/ATen/ops/quantize_per_tensor_dynamic_ops.h,sha256=ZHjRfSmQFUEJlwOKGmN_C8SRS3JtetbtG2MjaZyzWKY,2209 +torch/include/ATen/ops/quantize_per_tensor_native.h,sha256=--AnfYaBoBXKJlYlVnVghxzTn058ZQDE_U0zKFBqq8k,1636 +torch/include/ATen/ops/quantize_per_tensor_ops.h,sha256=qWdPhurwMFX7yGfE4_mbh0JpkIIdBa9GGM0KHqrVF-k,5828 +torch/include/ATen/ops/quantized_batch_norm.h,sha256=Re9Hjr6PLCg_ymAZ_oHEI_RA8oKGo1Bp0ESdsprarMc,2531 +torch/include/ATen/ops/quantized_batch_norm_compositeexplicitautograd_dispatch.h,sha256=EY8ZuhILv9_i9PZTu2Jv639KiMibAD8kWp3psKPBkS0,1541 +torch/include/ATen/ops/quantized_batch_norm_native.h,sha256=AYd2nnzy6w8Jx4hoDtermw6O7LCJUy8tgFpp9zsNKVY,1228 +torch/include/ATen/ops/quantized_batch_norm_ops.h,sha256=U6jCfgRrK90aQh0SeXz_xTpTScOEQ2ThczQm4xY0ZMw,3167 +torch/include/ATen/ops/quantized_gru_cell.h,sha256=8ISaZ1OYgDObb2MSq5rsGI-69vbB3a-cWOo--cT67LQ,1676 +torch/include/ATen/ops/quantized_gru_cell_compositeimplicitautograd_dispatch.h,sha256=inhkG_wQnqgQ0ENC82U787h78mjhkbCZSqCxKGdpp6U,1410 +torch/include/ATen/ops/quantized_gru_cell_native.h,sha256=dGkcKSYwVdr3Bsvmp5U5iYJJl4pH8q97QlfXxjA0Gxo,1122 +torch/include/ATen/ops/quantized_gru_cell_ops.h,sha256=bSk8YkuU5wy8JAVDkyCm9ZOR9-bvjsmxCxfQYeHROZU,2491 +torch/include/ATen/ops/quantized_lstm_cell.h,sha256=j2NYTrMBolo_FqzY_lWnepWrX4cSi8QD5jqCyrNIqHM,1713 +torch/include/ATen/ops/quantized_lstm_cell_compositeimplicitautograd_dispatch.h,sha256=QyGEzK8m2VWlcmCDj5DJzyT2mdSOibzk6P3RwTRUVbc,1432 +torch/include/ATen/ops/quantized_lstm_cell_native.h,sha256=T7B7MUP9Hn9pSO0ByVV435idnp3QXbDlNKqRFwmKkAI,1144 +torch/include/ATen/ops/quantized_lstm_cell_ops.h,sha256=B4T9AQvpTv6Tc5g-kVyQ5HgMDeSZ_9TEmt2fjpa_ZqU,2569 +torch/include/ATen/ops/quantized_max_pool1d.h,sha256=GEwGRhrOwBbdodISt4HD8eSH0edViDNGM_yW4wtbBx0,2251 +torch/include/ATen/ops/quantized_max_pool1d_compositeexplicitautograd_dispatch.h,sha256=A07VGjkfwp7xAhVci5x03iVnfVCunf3wqAoFIhxlMpI,1402 +torch/include/ATen/ops/quantized_max_pool1d_native.h,sha256=HK392qLIUpe26ee_RXalccEenbusO2kl8TFxAel8V24,1089 +torch/include/ATen/ops/quantized_max_pool1d_ops.h,sha256=3nuPSb-TZBKFDdjXwl0c9vpJagvhz1vGAdo31wAetls,2707 +torch/include/ATen/ops/quantized_max_pool2d.h,sha256=n7Cw1nFwh0WTxGN5qXJFRvwtLWdIxZqD0716BrcwwVs,2251 +torch/include/ATen/ops/quantized_max_pool2d_compositeexplicitautograd_dispatch.h,sha256=1Ea3qbbHJ-FISD_PYCnTGCJNkw2-ySXciHjVVApPkho,1402 +torch/include/ATen/ops/quantized_max_pool2d_native.h,sha256=tWicl9hnkZ3lXOSHi2wpgAf6iHgB1XE02UEwTQozduI,1296 +torch/include/ATen/ops/quantized_max_pool2d_ops.h,sha256=1tbBoarO2v8UzDbjb9vJ8jbuYFkOWIzjI16dEfuUw6E,2707 +torch/include/ATen/ops/quantized_max_pool3d.h,sha256=SSEbwvl8pS4IaKXZKKmKrnhlf8BXRG0dSeyFN_WgOZo,2251 +torch/include/ATen/ops/quantized_max_pool3d_compositeexplicitautograd_dispatch.h,sha256=ALRVG5vck8nIrNpWrhYtbcXgD20U-mmhAO8T6sdNcVA,1402 +torch/include/ATen/ops/quantized_max_pool3d_native.h,sha256=fEQVDh31mm_JouOd9CqCYWV_9BPc4GZ-quoKuUYhVqg,1089 +torch/include/ATen/ops/quantized_max_pool3d_ops.h,sha256=9LLe7DDVeTUKGsa4mpSkL-ZM9mGNYU3DzoJLdwg9znM,2707 +torch/include/ATen/ops/quantized_rnn_relu_cell.h,sha256=rtqOVAZc1gYada_24zATRm7e_3C7yYU4PGHYguBRcp4,1696 +torch/include/ATen/ops/quantized_rnn_relu_cell_compositeimplicitautograd_dispatch.h,sha256=HjwjPjX80DSmtz6_iYjLB1xA8pwEKeD9pclOGZjLd4M,1415 +torch/include/ATen/ops/quantized_rnn_relu_cell_native.h,sha256=uQVATTp_Twcm76vKglNu7dVU5Spdb9M6yr1Rb4bFC44,1127 +torch/include/ATen/ops/quantized_rnn_relu_cell_ops.h,sha256=VpevJOyReHyE4-um0Nm9LCjng9tsnzovO8KdAf5wy6g,2506 +torch/include/ATen/ops/quantized_rnn_tanh_cell.h,sha256=zxN3OwhGY48MJqpaHdpt4PTb31Dnqp1GkPcOcH6QVZM,1696 +torch/include/ATen/ops/quantized_rnn_tanh_cell_compositeimplicitautograd_dispatch.h,sha256=JhXqJjT8JQnielLh15vQOXTtZ4epL4YeSnI5OckxWFk,1415 +torch/include/ATen/ops/quantized_rnn_tanh_cell_native.h,sha256=7kWFjiDJHPBbc0--3kWTfj88aJB02riZOKjUECdUQWw,1127 +torch/include/ATen/ops/quantized_rnn_tanh_cell_ops.h,sha256=BQBhu6OKofQ-HJATJhVQ-v-mzqWAultISlxCTR3jb_I,2506 +torch/include/ATen/ops/rad2deg.h,sha256=L20HGM_cphhO_glBxFJlHMucSwBjK5mNsfFKIrxsdIg,1436 +torch/include/ATen/ops/rad2deg_compositeexplicitautograd_dispatch.h,sha256=3o0DspkJr7-95oR08TysYEWhkltVTU0Peup0hGdbRA0,1230 +torch/include/ATen/ops/rad2deg_native.h,sha256=FONDrgrUReE-UKb82F9QzNUzzLBDvUQ6EWOsVzD-gUU,1288 +torch/include/ATen/ops/rad2deg_ops.h,sha256=D_UDLDxHI0i9q0-ClarEjV3fffayYJL2OYJr_lGHH3U,2309 +torch/include/ATen/ops/rand.h,sha256=zHCjxsoVWVtSTtEt0XGR6itYNSa-pe7zmpNfAxpbFXQ,25018 +torch/include/ATen/ops/rand_compositeexplicitautograd_dispatch.h,sha256=uRCJlSl2K-tBt8dJv8WCVAtifm2tr-TVAP20C1MeLNM,5328 +torch/include/ATen/ops/rand_compositeimplicitautograd_dispatch.h,sha256=XOf4FXZWAbTzlUzB7cskBVUO_kEpRoAbqKa4NJHKv4U,1448 +torch/include/ATen/ops/rand_like.h,sha256=30z_hfw4t-yuh9iOHMGhHdIRVh5o9_-y_k_-a2e2RW8,4545 +torch/include/ATen/ops/rand_like_compositeexplicitautograd_dispatch.h,sha256=CvN0dq9YBvH6nUxFxlmRwmhEM0a1G-jiEQcUxr3H0ZQ,2488 +torch/include/ATen/ops/rand_like_native.h,sha256=HT1gOkkv_I0a7Bw8Bnq_-Y6ItReGxDTJiQ6nHoUbaUY,1586 +torch/include/ATen/ops/rand_like_ops.h,sha256=iSJJNV3bo6L95OOlMbuQS64lyPyaHWfcGUwzGO0xSXs,4922 +torch/include/ATen/ops/rand_native.h,sha256=23lfmNilug7y-WH9sXgBuVghF0ThTqp0_jZW4EgcnL4,2169 +torch/include/ATen/ops/rand_ops.h,sha256=gymq5wORTLIScd5fO8kMDNxKIkQHhJYD3kB4azoIG9k,8346 +torch/include/ATen/ops/randint.h,sha256=njWb3PkPu81pzt887dvG3XW-DT4AlHNPcjCvXz443BM,26261 +torch/include/ATen/ops/randint_compositeexplicitautograd_dispatch.h,sha256=vwKaTEFxcnvddIxK70wozO8bUsuJjazMa6yk2zFmOFY,6076 +torch/include/ATen/ops/randint_like.h,sha256=Zw_Vxq7aWmWJ9TvohMCmSUEKT2th60gkChh0KfgfNPY,37484 +torch/include/ATen/ops/randint_like_compositeexplicitautograd_dispatch.h,sha256=fONL8wew8dwgBwAzQHEq02udoQSfrzoIYtG2Way030s,9768 +torch/include/ATen/ops/randint_like_native.h,sha256=Hkr1PAIv-kmenkiuqmEGSbf1O5ThaBPfyCqLZm2BaZw,3792 +torch/include/ATen/ops/randint_like_ops.h,sha256=g2x8YQ8Of013u6o5pomIRbqj4mV1idUX0eD8NeP6Y1c,14718 +torch/include/ATen/ops/randint_native.h,sha256=_9fXPK6KxvBkYw692glbOoaJU1RBjjtYAM65UB3tgpk,2148 +torch/include/ATen/ops/randint_ops.h,sha256=NqJbnqsvSDhE21wK77NcrOF4wzYmypsWHptPd_fcR4M,8568 +torch/include/ATen/ops/randn.h,sha256=YW2rOBbSn-y3ze22aip8QgsSmPrn9OKLKSB5O0YiPWw,25179 +torch/include/ATen/ops/randn_compositeexplicitautograd_dispatch.h,sha256=k_EK7MSjVD7IsTVrzGSsJZzcsmRQh1Q8PReR8xthfxY,5036 +torch/include/ATen/ops/randn_compositeimplicitautograd_dispatch.h,sha256=1VYIrrAHNebbAnXhTKgSFOOzXlOoIosEeM_FrLtgNMk,1772 +torch/include/ATen/ops/randn_like.h,sha256=Bye3xG69AGctJD_t7_PzlYw-pqeCc2M10gpJrucG_AQ,4570 +torch/include/ATen/ops/randn_like_compositeexplicitautograd_dispatch.h,sha256=jqF_nztvdBs8m1hOoNbMIiqI7mxhxHFRy8sZX7tIYOw,2496 +torch/include/ATen/ops/randn_like_compositeimplicitautogradnestedtensor_dispatch.h,sha256=hMw9z46joIOu_8W6Y1_UDw-FOjzP4e0Y_5IiX7kM6cI,1880 +torch/include/ATen/ops/randn_like_native.h,sha256=gNfG4KdGjhnrtEf5SAeBiubZybXyfVGnlWL8sQDtpKY,1590 +torch/include/ATen/ops/randn_like_ops.h,sha256=467VLa2wSHK1s5eTsKY1F8vVveWUxK3VSmsJKmSfY6E,4934 +torch/include/ATen/ops/randn_native.h,sha256=WUJ3PU-lUMGvLdyXUQ1ih2WBu4N3puONoSiF06Dn_0Y,2177 +torch/include/ATen/ops/randn_ops.h,sha256=iLDYCcvpaa3KSYc_K52Aesh-BF1PhtsQJlKQR26F0Vk,8370 +torch/include/ATen/ops/random.h,sha256=4FaCZPsIRPxvaSP6BFBi2rYYQvgCBQXEzHUvDxyQgIE,3486 +torch/include/ATen/ops/random_compositeexplicitautograd_dispatch.h,sha256=RQARzbrmjpSbGq3ib7KJ0_49yrdbesOOKdkE86uHSmY,2230 +torch/include/ATen/ops/random_cpu_dispatch.h,sha256=5y06dYxMprv45Tg-Kl9suUtdQKD9TNo1ypAFXbxVEEw,1299 +torch/include/ATen/ops/random_cuda_dispatch.h,sha256=HQn61lwk7EluM2Z6rjylHyw6anPQSzZ5ronaozuefvA,1301 +torch/include/ATen/ops/random_meta_dispatch.h,sha256=mMiibvwYr8fUAoOjwrgZWGHm93ADVrWCuTjfHbC7hjI,1301 +torch/include/ATen/ops/random_native.h,sha256=it_BC0AlkZolxUUFDUC1odw0jUzQM8GtLHV5G2BjrKg,2260 +torch/include/ATen/ops/random_ops.h,sha256=Xqn52y11O6ku4NeEHbo4Tv8MoyoZ02GXN6Ivx9KKbQ4,7394 +torch/include/ATen/ops/randperm.h,sha256=glg9AJ3ylTt-pF6t0UBwdjYccM0cL_sVOM4xT8bq38E,11222 +torch/include/ATen/ops/randperm_compositeexplicitautograd_dispatch.h,sha256=y8aHVtjduxYUUjxN30RqfNShWOO_gONRU0Ih-8SYRJY,2528 +torch/include/ATen/ops/randperm_cpu_dispatch.h,sha256=CcsZ6VtbBGPvQLacoJpXYrVXkq31BKKegwEZ8yO9iRQ,1376 +torch/include/ATen/ops/randperm_cuda_dispatch.h,sha256=QJFO2xE4S14tv3dWY1-5PZHwwO0BnhC0BQG4UQYHpcU,1378 +torch/include/ATen/ops/randperm_native.h,sha256=n40UpAUEqfRjX_ERSgRyT8PcCtwwxn7KPUSvJ765A3s,1407 +torch/include/ATen/ops/randperm_ops.h,sha256=E5OPegkLeLj8SfKq5FMlgGbnL05-kMLH5B46VZxJ4n8,4122 +torch/include/ATen/ops/range.h,sha256=9jRvfb8oVPjUmarWv2-MwFkkQfUrZiw2B0G6k0F2P7o,3647 +torch/include/ATen/ops/range_compositeexplicitautograd_dispatch.h,sha256=fti55kETwhtEhgdNFUg6-qg8LdMXrBPtSeEIzzBF5bA,1883 +torch/include/ATen/ops/range_cpu_dispatch.h,sha256=NgaZ6eDxMoGvcMbTu8AOqhgXWo2y8n_Az88YySObO0U,1175 +torch/include/ATen/ops/range_cuda_dispatch.h,sha256=D1RSUE1eeOT0Z3gFgdpHzgSaBpPNGkbV_lAqr9Js4QU,1177 +torch/include/ATen/ops/range_meta_dispatch.h,sha256=ONjT2hjR5t6jpv1gQHWhO2Tl5x47ZOVBHabhw30HwDE,1177 +torch/include/ATen/ops/range_native.h,sha256=JowoZgl4hPVAnthjug-c7kzXhyxYDqmLTNfGlBmnJDE,1542 +torch/include/ATen/ops/range_ops.h,sha256=5jWNaXTdww0V-68Tit-7fYNq4MaQK7zJAn_HtEsDoFk,4390 +torch/include/ATen/ops/ravel.h,sha256=Us73mVpadnS2DLxLyr_dM9xEkReX8whvTchohGWoEfI,893 +torch/include/ATen/ops/ravel_compositeimplicitautograd_dispatch.h,sha256=AC0K5pnZnU2vsFpHbeXwalZGpbzvTPrSMNMQRb6BNSM,1017 +torch/include/ATen/ops/ravel_native.h,sha256=eAwJ7usg91zpuHC5DZugKJKEG6Yq3095MBcKclfDM3g,729 +torch/include/ATen/ops/ravel_ops.h,sha256=QJe1iqrrX9mfUm9J0RO8mlyF391AzjqV6Dwox0RhJAU,1214 +torch/include/ATen/ops/real.h,sha256=m0C_rkM1UXEnQIPUDJNALKA-JshQphvqg_ePzmbz0ok,889 +torch/include/ATen/ops/real_compositeimplicitautograd_dispatch.h,sha256=rCcPKi6vWpwyZzllVskusj328A7fJPZ2fDWMzD7IOEw,1016 +torch/include/ATen/ops/real_native.h,sha256=1trlUHuin7b5xra45F4tKGv0yd6lkfri3KmEfHoHKi8,728 +torch/include/ATen/ops/real_ops.h,sha256=uSC3nf7sYq8TzgRdU7tZOWMXDvkX_GXHRHu2M2GN8KU,1211 +torch/include/ATen/ops/reciprocal.h,sha256=-jPdvliiLlx75gZjTXlxE1cgJGzd7uHwaJztSt2uKQY,1475 +torch/include/ATen/ops/reciprocal_compositeexplicitautogradnonfunctional_dispatch.h,sha256=MzlFb7uHD_H2hvkP36WTwOeP4KhlqSReNipxxKkEook,1103 +torch/include/ATen/ops/reciprocal_cpu_dispatch.h,sha256=884lW1jzF7CnpFMGCjjWv3LNhoX_aPBNbCNndYJtoTc,1198 +torch/include/ATen/ops/reciprocal_cuda_dispatch.h,sha256=DVAjuichl9gnssKsfWiKIf9j1boRPAojCxXGc6IvQzI,1200 +torch/include/ATen/ops/reciprocal_meta.h,sha256=Lec4KaLukDNry0qos2trLid9M2ktfWOqmJiv7p-o18w,825 +torch/include/ATen/ops/reciprocal_meta_dispatch.h,sha256=Ckqjj75BMxtx9YUibhR2fqybidHIm-RopIxakiczAYk,1200 +torch/include/ATen/ops/reciprocal_native.h,sha256=0XFprc6k6yhPWw2BlDPJ3_rjQ2PNbwDAGIpULZ0zOhY,862 +torch/include/ATen/ops/reciprocal_ops.h,sha256=qcX9FWoThII9ldlSbMcKmms_LRrfRUYJC64Skl0VPcA,2336 +torch/include/ATen/ops/record_stream.h,sha256=RIphFBPfEIjMJvONie68kSEHYP6Kw9ecpzGsF4MHrXY,764 +torch/include/ATen/ops/record_stream_cuda_dispatch.h,sha256=8bjzIFiPwQP-wQcK4VjOV_nmeWozPVV4W1fStlmmT2M,985 +torch/include/ATen/ops/record_stream_native.h,sha256=1hwm6nRo6gwRXqb_96AdOdWBtyO0Sy_We-pDb_g96vY,744 +torch/include/ATen/ops/record_stream_ops.h,sha256=LGYJDo0kliPFdM-Rqdyd__hPI35vTr49u8ei_qSUlgk,1246 +torch/include/ATen/ops/refine_names.h,sha256=sf-67YC6sUgVAg7x_DZ0esEvcUKJQ68YsyiCTfjEgvs,763 +torch/include/ATen/ops/refine_names_compositeimplicitautograd_dispatch.h,sha256=ARFmA7K2LRy9I4vXnSDrdPIP5RqMBvGf0zzjqZMaoP0,1047 +torch/include/ATen/ops/refine_names_native.h,sha256=qwI21kukpYJEiSEjWbCyOkxhH-ncOKZiMEUjybF74_M,759 +torch/include/ATen/ops/refine_names_ops.h,sha256=UzqH3C_r4xOrr9JPAtz9CX_X_mLGeq1ywyEssN4lmbQ,1315 +torch/include/ATen/ops/reflection_pad1d.h,sha256=UY80qaP1xwTwjnTzCbyJlzP80PenYTeEVMgAQJ2-7hM,4151 +torch/include/ATen/ops/reflection_pad1d_backward.h,sha256=l_ePIfxYV_9pSp5LZdOn6e9p-K7T07cM5le4f02jdM0,5314 +torch/include/ATen/ops/reflection_pad1d_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=GhYCZL8SysRsZuyOLG0JCeQBjqrGmqMZFZSjnNCPXAA,1261 +torch/include/ATen/ops/reflection_pad1d_backward_cpu_dispatch.h,sha256=KEEVFzJvAZpp5pl_0OxQKWJ-ImpZhRHwUArtOyJV2bQ,1859 +torch/include/ATen/ops/reflection_pad1d_backward_cuda_dispatch.h,sha256=ZMPaRICpZcX5vQ2w3Q5cJxXovmYu75HOoVMilyYOON8,1861 +torch/include/ATen/ops/reflection_pad1d_backward_meta.h,sha256=HfZKDgWXyER7MSi-zWZs5MCiPSlr9iZd67HMpOeJr3k,903 +torch/include/ATen/ops/reflection_pad1d_backward_meta_dispatch.h,sha256=-qrCLdT1ByDqg3ep310A2cmL-y_VtHc58MLctuiiUwc,1861 +torch/include/ATen/ops/reflection_pad1d_backward_native.h,sha256=v4GA8PqAwxNvhhmAAmJmKxAn0qlBLpmFP5o_btw_Czc,1235 +torch/include/ATen/ops/reflection_pad1d_backward_ops.h,sha256=C-Ot0cNPNt731FYDBlGyYFqz_PAA-lJOYLU_bcAtasU,2361 +torch/include/ATen/ops/reflection_pad1d_compositeexplicitautogradnonfunctional_dispatch.h,sha256=Y3HT-6Bl8eno5h7t4mmJpx7sYBmI4MJqckzwHh2WwWM,1179 +torch/include/ATen/ops/reflection_pad1d_cpu_dispatch.h,sha256=dmhfwd8xYTgFlPdvXssBPFiSa2PyAqcxwvbSqZzTsPg,1585 +torch/include/ATen/ops/reflection_pad1d_cuda_dispatch.h,sha256=W-98_P50XzYFfIRx9e56e6I7sa8hPnZKi06p-1p4TO0,1587 +torch/include/ATen/ops/reflection_pad1d_meta.h,sha256=NrvYNVehvn2rINRc-ruhBsjWqv-VMHi4GZttwDzNvNg,862 +torch/include/ATen/ops/reflection_pad1d_meta_dispatch.h,sha256=Cv-E_PFMykunJOg9uAm06A5P-j_W6jjFOuMv0AD3pQ8,1587 +torch/include/ATen/ops/reflection_pad1d_native.h,sha256=1Tq0P9chLbvTfXY8NUTCj1GF3s70XvcqRbWM8niAIAk,1239 +torch/include/ATen/ops/reflection_pad1d_ops.h,sha256=mw1r3HxWJ8vRDaq47s7IjFL_5HOxGoDeom-QPeuBw2k,2057 +torch/include/ATen/ops/reflection_pad2d.h,sha256=U2BRBYRegUdF68QuSKXuYMImup7W1rpEUYL3K3rAnHw,4151 +torch/include/ATen/ops/reflection_pad2d_backward.h,sha256=Bt0OJNNkuezIEjx8TRqFmcoVtvQR01X2gGicQrNxnQA,5314 +torch/include/ATen/ops/reflection_pad2d_backward_cpu_dispatch.h,sha256=pNJcHalJIeC8dMO1avdOn8V_l4yRdj88rB0n_KBT-c4,1859 +torch/include/ATen/ops/reflection_pad2d_backward_cuda_dispatch.h,sha256=NLhnKGeptuWQHOz28zr8esQEW_Cr7CU0jEJbFPPCOZA,1861 +torch/include/ATen/ops/reflection_pad2d_backward_native.h,sha256=Kb54ajQxtyrF8DQyXw1jkHYs68l44yT8BuCU1jfG84k,1276 +torch/include/ATen/ops/reflection_pad2d_backward_ops.h,sha256=KlqPoRnuoo0wqoUJyA-Z8nxDrbZyaKVIymyj3V6z20o,2361 +torch/include/ATen/ops/reflection_pad2d_cpu_dispatch.h,sha256=QlzzQ90f5NZevfBtPakBCJ_Xjnins5CeqlqZh9wUuoQ,1585 +torch/include/ATen/ops/reflection_pad2d_cuda_dispatch.h,sha256=429oLBFEnPJ_szzCa4HqO7mq-XIbq3Q90FO98Epd-Fk,1587 +torch/include/ATen/ops/reflection_pad2d_native.h,sha256=6WnpsEvizH8uJTHRJ22doRG2krJbERDIFnDv6S0gWbg,1201 +torch/include/ATen/ops/reflection_pad2d_ops.h,sha256=3wQ4XITmP_quFNIijmfJIXM1sVA59JAVsxOzgUGu4vc,2057 +torch/include/ATen/ops/reflection_pad3d.h,sha256=vcv1E1zsthf-Cl8inuyzbQh7y2QeOmWQ3SNVQ4jdZQw,4151 +torch/include/ATen/ops/reflection_pad3d_backward.h,sha256=2_x1myub93IM9lkKd1-Iee_GMbaJsxXiNqlEGFi-o_4,5314 +torch/include/ATen/ops/reflection_pad3d_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=2SIEA00zT0m4Wou2NODQAsjQHp_SR1w6A6eZWFUk-1A,1261 +torch/include/ATen/ops/reflection_pad3d_backward_cpu_dispatch.h,sha256=9ZtGHIQF9UZ8Z2tlVlLaMAxVZD_jlY626savtIYWAsk,1859 +torch/include/ATen/ops/reflection_pad3d_backward_cuda_dispatch.h,sha256=9lxLgRM5r31_jSMzE7OEtjDkB66EyZYTm4gaXdqDfqw,1861 +torch/include/ATen/ops/reflection_pad3d_backward_meta.h,sha256=5WDCmDFE-DcReKo6EQvv7_fFPi1l85ayObZyUWs6Cvs,903 +torch/include/ATen/ops/reflection_pad3d_backward_meta_dispatch.h,sha256=octYefl8wyWJTLYppgLCvifFttsVTnGBEC57kPpUEdU,1861 +torch/include/ATen/ops/reflection_pad3d_backward_native.h,sha256=WvVpG4NWP0LAykxK3LmSODOI3qGLYlPsXl2md2BNdeo,1235 +torch/include/ATen/ops/reflection_pad3d_backward_ops.h,sha256=zozrXunXGe8dcJkZccp8MmmMeVolQHR2JyjWtSRiMoQ,2361 +torch/include/ATen/ops/reflection_pad3d_compositeexplicitautogradnonfunctional_dispatch.h,sha256=aEKFUkbofzrEEOrprIQ86Au9hHwu8B0yTqHz6dhageM,1179 +torch/include/ATen/ops/reflection_pad3d_cpu_dispatch.h,sha256=W23FfB5owb-t2-alhkZ5DsrEB0MfRFLfqN4EqquUZXQ,1585 +torch/include/ATen/ops/reflection_pad3d_cuda_dispatch.h,sha256=IiNHvHicpEu8C_FJNQXrzHb2EMEzjeOhpL7LaWHnD08,1587 +torch/include/ATen/ops/reflection_pad3d_meta.h,sha256=Tbc3adBTs32m_HsQbEmyr5CtN4jNHl88OpAoHWpk-10,862 +torch/include/ATen/ops/reflection_pad3d_meta_dispatch.h,sha256=wOnhEYo9ZRnHwRw06pRKGYNfaK8Tv4J6b7SfAxNe9Do,1587 +torch/include/ATen/ops/reflection_pad3d_native.h,sha256=Ew3mEzMDoMkyh1mQT_p4ClHNFkbrEq-TwgqkoIya4J0,1112 +torch/include/ATen/ops/reflection_pad3d_ops.h,sha256=VPAS7x6khaZsrlqsDYwSiLpJ17mvXh1oBFKn4tru80Q,2057 +torch/include/ATen/ops/relu.h,sha256=M3Ode7artRDDTJwUeP9z0Y7vuic5Bn-5B7XPDxeozG4,1397 +torch/include/ATen/ops/relu6.h,sha256=ICGrAtEkkJq-pTGwPKXwXXhaAoCAcVdgfKP8DBaIQUI,1026 +torch/include/ATen/ops/relu6_compositeimplicitautograd_dispatch.h,sha256=EbYthn2TW62VG-_1Jxn2M9QrFDiPCv97xqk8PbQhcHA,1067 +torch/include/ATen/ops/relu6_native.h,sha256=ugDbunXLVeeYsmMEhE2Ud8AE_82blKXS59JT4JwjG64,779 +torch/include/ATen/ops/relu6_ops.h,sha256=5iT80HKY2kHHZ2oIsA8v8vpXYBdy-hoG_DYZ4rr9E2c,1704 +torch/include/ATen/ops/relu_compositeexplicitautograd_dispatch.h,sha256=cC0-1b2VlMWkpFmygY8D_6reYLz8zBFsWG87sS8Cc7A,1117 +torch/include/ATen/ops/relu_cpu_dispatch.h,sha256=Qb49RqVhCTNvYT3ZLhrubXoTe9H7BzH5QXxXdUoGASQ,1021 +torch/include/ATen/ops/relu_cuda_dispatch.h,sha256=pucxk11bsv6dE1lSMY4LLcNLQzzBlZm2g5QvzS7coO4,1023 +torch/include/ATen/ops/relu_meta_dispatch.h,sha256=xRDQYzYoXHu1QT1uXCKU8QBLRMY9l-LUYQdo_cdQCtk,971 +torch/include/ATen/ops/relu_native.h,sha256=oU2xN_7HRLREco2-tF5P1Ke_1UIP4zkoi83rwepV7sE,1593 +torch/include/ATen/ops/relu_ops.h,sha256=DxhQlofLOB1ibY4VFqHroBkh990x0YUJOzOw1KYqHt8,2282 +torch/include/ATen/ops/remainder.h,sha256=Osj0cmtCbG9_xjdA0Ea05djtjQtCqIqwdGMvBgTpIeA,3006 +torch/include/ATen/ops/remainder_compositeexplicitautograd_dispatch.h,sha256=f7qvcs7gqzV7SJAtoroztt3vY28spb9RvfJhK7boqVA,1557 +torch/include/ATen/ops/remainder_compositeexplicitautogradnonfunctional_dispatch.h,sha256=b8GiBfPhw-i-M4lqSEhj6Rk1kurCUp3ReqVk6rNO_l0,1153 +torch/include/ATen/ops/remainder_cpu_dispatch.h,sha256=8gsBJAMsOZsYbC5W-SIfPSiXXHOI-lp8fA0Lxko-F8U,1381 +torch/include/ATen/ops/remainder_cuda_dispatch.h,sha256=1BaJazlSaoBWqeX7onZpZBpiNE0JXkWh0qVTuYmfrAc,1383 +torch/include/ATen/ops/remainder_meta.h,sha256=6Z_ncBROTEATuHdn3NOZREIk7costpBZo_GJVz8WdQw,857 +torch/include/ATen/ops/remainder_meta_dispatch.h,sha256=Rw0QVtedtDa3RNVwFUqohTNJYutFnGEnD4toZrPMITU,1300 +torch/include/ATen/ops/remainder_native.h,sha256=m9IlMYru23jQPFB4oC5otTHGGvpprGOlxpGFHQF_r7g,1366 +torch/include/ATen/ops/remainder_ops.h,sha256=1zDq8kbwdkTk9tOAhhtTk6QbbiP-XpdQsASuhwlwvMo,5944 +torch/include/ATen/ops/rename.h,sha256=g0mwlwiGwpvsXzd4htrYeKhMW8zieeoglU62zn0JeLU,757 +torch/include/ATen/ops/rename_compositeimplicitautograd_dispatch.h,sha256=Im_kTstnUc9eOiK3GlDYSHXhZMqqXkNQ6zXVZ0Sb65Q,1149 +torch/include/ATen/ops/rename_native.h,sha256=WbcAfMw1LzfVjxi0eW8i9lhsyZm3wzLfCngslDr17YA,861 +torch/include/ATen/ops/rename_ops.h,sha256=40j68r-kGNb7Qy1BIOPYPwj7Gf677Mw1YG4NPZAwhtc,1980 +torch/include/ATen/ops/renorm.h,sha256=iVTnx6dEppCbuP10wa4yu-F4ZLQ03aXRerV4SEBXNNw,1626 +torch/include/ATen/ops/renorm_compositeexplicitautogradnonfunctional_dispatch.h,sha256=eBFw2KmDCM8MhgwMklqnqOTRLvvHLR7fygVGDrMR8yo,1221 +torch/include/ATen/ops/renorm_cpu_dispatch.h,sha256=Q34m2YPI2fwe0vvH7sw4ct5HsCJBxgSvPEKHBBN_ZYw,1434 +torch/include/ATen/ops/renorm_cuda_dispatch.h,sha256=JNc-OZogwv61mKLJEwaZ237zpUJ9xe7Vh-sSJ6WnbM8,1436 +torch/include/ATen/ops/renorm_meta.h,sha256=SuPJShyv9iubL3yXxNhrNfdogFrjQL1LhF0HWZbl3eM,884 +torch/include/ATen/ops/renorm_meta_dispatch.h,sha256=M9L9XchacR90S91h9CJ93WwttKC_TpMCHO4krZEcKqo,1436 +torch/include/ATen/ops/renorm_native.h,sha256=gPXoREEzazMNB0Yj63y5QcQop7Qaclekz_fhgq_KU-g,913 +torch/include/ATen/ops/renorm_ops.h,sha256=l0n_35vl_Nh_0Z8w0nWxmoA_YwS4T9qbQWSbAh5c4-Q,2930 +torch/include/ATen/ops/repeat.h,sha256=YYm-DhJ_s26M5-w_FbF0oafvhEegOI8VMH9oqZCbNSk,3426 +torch/include/ATen/ops/repeat_compositeexplicitautograd_dispatch.h,sha256=PugdJDXjwh-4gHRkyn-J1ahorV8kc3YwxbrJ6ZOI-v0,1569 +torch/include/ATen/ops/repeat_interleave.h,sha256=Y-4qkS3MMNsGpSnZ4bLt4R5FDuTeMpK1ppEOz8PmuBA,8532 +torch/include/ATen/ops/repeat_interleave_compositeexplicitautograd_dispatch.h,sha256=EtEDxoHAP6q01p8VAyHx5XRzsh9ueo36219v_9ziwII,1538 +torch/include/ATen/ops/repeat_interleave_compositeimplicitautograd_dispatch.h,sha256=ZsyN3yZkPLg2GnR_qF9u8b3jxhAS752bvG54-d5Y7I0,1732 +torch/include/ATen/ops/repeat_interleave_cpu_dispatch.h,sha256=shAe6RFMhoFaCY9Xv5wHxvAhkT1VX-JbvNDPIm8vA7I,1173 +torch/include/ATen/ops/repeat_interleave_cuda_dispatch.h,sha256=yorsUGfSYSBJej10a4hbmllPv5a1-nCk8otaSYC0Ado,1175 +torch/include/ATen/ops/repeat_interleave_native.h,sha256=-Yl0xyzyqzPMN-acziJ9jmD4PUTjx_akkHsQwJ6imTI,1472 +torch/include/ATen/ops/repeat_interleave_ops.h,sha256=iKDfyew8-Ujy-HcIbsyomZ7ESI6pNQ3TScMywdGjK34,3987 +torch/include/ATen/ops/repeat_native.h,sha256=VNKlb3YGWgZpyHAj6cEJLXofU94obelDdw2K-Bp5JZk,869 +torch/include/ATen/ops/repeat_ops.h,sha256=_InN0wG9mFg54N1wraWlHODJcxR-Ut7kl8cvpN_bEnA,1995 +torch/include/ATen/ops/replication_pad1d.h,sha256=Cwwr5gTh7z_vO1S8VrmsuhHt1IErOJN-esgl55p2ML8,4182 +torch/include/ATen/ops/replication_pad1d_backward.h,sha256=Sog_edg4WD0M3KGBGov--52l9aNyeX_VqGzEvelMLwc,5345 +torch/include/ATen/ops/replication_pad1d_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=ptIHUmH-yJIfW2e2hh36zD1davS_sXX-sPclDErSj_0,1263 +torch/include/ATen/ops/replication_pad1d_backward_cpu_dispatch.h,sha256=aKJrgYCMFXNpCDbq8N5y9ritvnfj1o9p9ZQ_ouu7f10,1865 +torch/include/ATen/ops/replication_pad1d_backward_cuda_dispatch.h,sha256=mN-qmRr3cAuPD4waigfdpyjkSTd3tBzJO0xyuRBUyYI,1867 +torch/include/ATen/ops/replication_pad1d_backward_meta.h,sha256=D-aHDcGfrkMnfrRSBI1FGCpxhKp85hpKMg_drn6IYNQ,904 +torch/include/ATen/ops/replication_pad1d_backward_meta_dispatch.h,sha256=mLR6otC481JtqHcJ40W98U0IdDQlyAXKr3B_tetuSn4,1867 +torch/include/ATen/ops/replication_pad1d_backward_native.h,sha256=ojNbOUubaj-hmrVF5xx0XKY43oa2QzYdkuqO15n35Ok,1240 +torch/include/ATen/ops/replication_pad1d_backward_ops.h,sha256=WOUl6RE2fUjCO5UqRxgLWW9QSaWboGc7d234WisbuLo,2367 +torch/include/ATen/ops/replication_pad1d_compositeexplicitautogradnonfunctional_dispatch.h,sha256=_sg7u1j6ORuRstakmnogDMQCKqbpf6PSF4Pl3_xKHSQ,1181 +torch/include/ATen/ops/replication_pad1d_cpu_dispatch.h,sha256=s0uH7ECJUBJVPN7DKz2Z7HAHK62qn8qJh91dXkxyF08,1591 +torch/include/ATen/ops/replication_pad1d_cuda_dispatch.h,sha256=hfJsQXlPy_uYizytPiJAm_u6KRma0N52OMxkXtkIgX8,1593 +torch/include/ATen/ops/replication_pad1d_meta.h,sha256=LbHofGuZTUhPrNbUN0SouXhlEs6oeKUYH2LfdD37qNA,863 +torch/include/ATen/ops/replication_pad1d_meta_dispatch.h,sha256=N2RC2miI99rOtgYEUdPyUvFDGPsiokvVBul5GbiqGLk,1593 +torch/include/ATen/ops/replication_pad1d_native.h,sha256=Hu2sj4UXDLX1gY-uiDB1wfVxpzTXquuhDk_OOAUJ7o0,1117 +torch/include/ATen/ops/replication_pad1d_ops.h,sha256=u-1lNbPLVpEmS9Xl83bmFiPhih_9e1GbFTQ2G8PIhYk,2063 +torch/include/ATen/ops/replication_pad2d.h,sha256=j-SSJ4Co5-s8jfGCJVoPPF74PYrxg8FLfNzVgd8Qpho,4182 +torch/include/ATen/ops/replication_pad2d_backward.h,sha256=eMFa6-htInS6xdgFvthcDlkqQkhTyU0xdVllVjpg3H0,5345 +torch/include/ATen/ops/replication_pad2d_backward_cpu_dispatch.h,sha256=pMkRopxXrFVDzY2k5t13uvUZfZmb61KgdZiypMrLvHk,1865 +torch/include/ATen/ops/replication_pad2d_backward_cuda_dispatch.h,sha256=Ro8fxz3Kjpto5hkY9KTa4KXN5l9rx-ZZ3rupR11ivmY,1867 +torch/include/ATen/ops/replication_pad2d_backward_native.h,sha256=78qaewhRA62UU6_r_UnovcXOCdnkYMmXuRqj5Wrk06s,1280 +torch/include/ATen/ops/replication_pad2d_backward_ops.h,sha256=QvaIkBT1o1G1qu_uGU6Zc84aMIKr18yBsH9C01aNc9A,2367 +torch/include/ATen/ops/replication_pad2d_compositeexplicitautogradnonfunctional_dispatch.h,sha256=6ZGMXo1s7QCVxgCqQlNgPsEMYZeoTl_cWSyQkyIJsyA,1181 +torch/include/ATen/ops/replication_pad2d_cpu_dispatch.h,sha256=IOb1LrLtTR9xpkLblAJwymYRIOCJFF7cUrdupn9gZgQ,1591 +torch/include/ATen/ops/replication_pad2d_cuda_dispatch.h,sha256=nIOrAOck57QzDRYox84FLcJR0p_iPWMpQ2meGQiCOBw,1593 +torch/include/ATen/ops/replication_pad2d_meta.h,sha256=HXnrb9UY0UTBQVM4dIZH4WBD9EHOUdA7XLLMv2gmUz8,863 +torch/include/ATen/ops/replication_pad2d_meta_dispatch.h,sha256=LYKHPDh8ZTHI4a3LdcGn9AS6D-l9_TsHPdmQue-78pA,1593 +torch/include/ATen/ops/replication_pad2d_native.h,sha256=D_tAYx7prU2vov8QqKdzkovxZpanVNUF-OcWCQdX4BU,1117 +torch/include/ATen/ops/replication_pad2d_ops.h,sha256=-HeNAHmbzIaGMe850EvzYTHE4T8gy0KuW94c9Rd8pKI,2063 +torch/include/ATen/ops/replication_pad3d.h,sha256=9Myy1sd0Ss5uhCbMRyYzEboEiWhcmzNgDD4LT-mBM1I,4182 +torch/include/ATen/ops/replication_pad3d_backward.h,sha256=QL0tSpeBNIdIuF6Y0fa_lASmmsjsYnhKRV0PVnCUZKE,5345 +torch/include/ATen/ops/replication_pad3d_backward_cpu_dispatch.h,sha256=kESHBTy6QmdNspXp9gXz-dvtbCyCpDqCQjVjwTOE_Xc,1865 +torch/include/ATen/ops/replication_pad3d_backward_cuda_dispatch.h,sha256=pdMrLi4PG-uwoMf1l_amc-48jemiPTj81SOn8drlkrw,1867 +torch/include/ATen/ops/replication_pad3d_backward_native.h,sha256=g3VedJAwiddBH0gzEruWx6t9U0-Fb7LAxzSM_0Www2k,1280 +torch/include/ATen/ops/replication_pad3d_backward_ops.h,sha256=soIB8cO5lGaJ40ZgK_IznBlyNUordqRoDUgUu3PCjBQ,2367 +torch/include/ATen/ops/replication_pad3d_compositeexplicitautogradnonfunctional_dispatch.h,sha256=KTBVCkRZRdU716CPOZDlrkihHntPQSZZ-VOQs2qx_Bc,1181 +torch/include/ATen/ops/replication_pad3d_cpu_dispatch.h,sha256=VOAZ6H-eFE5cnkYAkoth8OCBB_on_W2f20DK_6IKECs,1591 +torch/include/ATen/ops/replication_pad3d_cuda_dispatch.h,sha256=0Lid9SfKQrp3v-t1yE8fZ_W8eVo_URlCezWPKJOVdoY,1593 +torch/include/ATen/ops/replication_pad3d_meta.h,sha256=DrvZTdrbcwjLdghvk91yc4GKbYVTu5QJaj_WAgy4F-0,863 +torch/include/ATen/ops/replication_pad3d_meta_dispatch.h,sha256=jZ3CXGKCFnjCeDJDjW4kpYcSxJMmUZ-nO-rohuvsbTA,1593 +torch/include/ATen/ops/replication_pad3d_native.h,sha256=iNTK6Kb9ieuCPauTpy2XL3wrX8jqC3nwdM8qZRn6pmk,1117 +torch/include/ATen/ops/replication_pad3d_ops.h,sha256=h2IX1Stq3tUdVJVlDmy2Ohv70EtHIuPPZiXAwwIdFpI,2063 +torch/include/ATen/ops/requires_grad.h,sha256=iFzT1FldNNBKBzludNNejfGosc0lzv9YwmIzn9kp2y0,764 +torch/include/ATen/ops/requires_grad_compositeimplicitautograd_dispatch.h,sha256=qpBzni24u10t6eWB8pr6BiXwnVSH3VkhLCBpMF5xkH8,1047 +torch/include/ATen/ops/requires_grad_native.h,sha256=61peM-jUV1s8fnwW5-dexOp26T3pzTrqdYTOblB8cw0,759 +torch/include/ATen/ops/requires_grad_ops.h,sha256=RpnooLnkLyku83_od4jMsoeqb4f_0cBPkrBfvJkbas4,1302 +torch/include/ATen/ops/reshape.h,sha256=BFPfub9tIH_UvNfI2Xa9M7vSnIKis5aOSYGagW-i07Y,1660 +torch/include/ATen/ops/reshape_as.h,sha256=DyGu6KKfYZvSfk7pTmKSKCb_2Nzf1wsYU4STx56gnRk,761 +torch/include/ATen/ops/reshape_as_compositeimplicitautograd_dispatch.h,sha256=j60g1mY6selAp2GEywCligywln4mX81FSS-rOorA59A,1048 +torch/include/ATen/ops/reshape_as_compositeimplicitautogradnestedtensor_dispatch.h,sha256=HVZk13u_G59WiO8A6VQHYtfNSWGUQRy8bJOb_DYyS9k,1072 +torch/include/ATen/ops/reshape_as_native.h,sha256=-2G3gv7vc5iWNGpXsoSL6ji-hLvMgXsyL6PxxJeHdVA,851 +torch/include/ATen/ops/reshape_as_ops.h,sha256=jN_y295lfb9P4x_FqYcPRMFpYjpESJ4xOESDhluvkpU,1315 +torch/include/ATen/ops/reshape_compositeimplicitautograd_dispatch.h,sha256=o3mwg7Q83CjaBB5j5GstvmonxCr4fOR8Jiz2r5iahF8,1131 +torch/include/ATen/ops/reshape_compositeimplicitautogradnestedtensor_dispatch.h,sha256=DTOxteltG44ExFj1M14Fhg0PkqzSOKlwIvNET474ba8,1155 +torch/include/ATen/ops/reshape_native.h,sha256=uvmBO9ee0wTP5egkqawAgEiiIYpc9Kbdve6I4IWoFP8,861 +torch/include/ATen/ops/reshape_ops.h,sha256=wwnp5E3vhULEg872z7mVOcbvAd3Al4YBztROjdUIREg,1311 +torch/include/ATen/ops/resize.h,sha256=IYWBHzf7PLdQ_wCeEIPuCH5PwLYnJNLkmA8N88TARQ0,5597 +torch/include/ATen/ops/resize_as.h,sha256=xamaWvIy-wwV1DZdmPECPFyezAN6lA81U8XgE_Dn3P8,2213 +torch/include/ATen/ops/resize_as_compositeexplicitautograd_dispatch.h,sha256=3mgsgd8Mtnt9TRAkS_-Ps0GIFYBX8p_k0JxS4TVMIrg,1647 +torch/include/ATen/ops/resize_as_native.h,sha256=sAGg-38LAahm5nCb37WZuMTedvMX0NjCY9LTYHWiOtY,1168 +torch/include/ATen/ops/resize_as_ops.h,sha256=jwl7hsDw3suTcTHvT65bOv-2D3D7SJyekIa1hgSJ_5k,3227 +torch/include/ATen/ops/resize_as_sparse.h,sha256=M18TmIwKH7-oPvmWBcBLdDe4-mP7nbEZZ25IAqmm2BM,1861 +torch/include/ATen/ops/resize_as_sparse_compositeexplicitautograd_dispatch.h,sha256=0wGvXBB0qLc-jaiQMrN0MJKKh38WyYErTsJiNrpgm5w,1328 +torch/include/ATen/ops/resize_as_sparse_meta_dispatch.h,sha256=kmEBxHWIW5pGQSiyH99RxSZWcbnN5vnF1JzqTIzyNFQ,1028 +torch/include/ATen/ops/resize_as_sparse_native.h,sha256=yCAnsL6Ip1bw_54pvNDvALeqxoGsoIndHCFlUxzsLrs,1129 +torch/include/ATen/ops/resize_as_sparse_ops.h,sha256=o2QWVMV_tzrk7reFnpKJJq0Dyh-gsfXeg7wP6Eayw_U,2783 +torch/include/ATen/ops/resize_compositeexplicitautograd_dispatch.h,sha256=wHQiylJRlA3iFcCxep4HlvZnnEc13Lxi3vtrtrbHC1U,1953 +torch/include/ATen/ops/resize_cpu_dispatch.h,sha256=H1lLuHJ9Axfc2vaT1LwLn5_0ouV3D_ff1IqMwBSXF34,1229 +torch/include/ATen/ops/resize_cuda_dispatch.h,sha256=MaC2QglQnPogkHx2fkeSYD2LeMCT7o1Mm_OZICes6cM,1231 +torch/include/ATen/ops/resize_meta_dispatch.h,sha256=nPcAMuZrV8bxIwPtyEN8lnS2kF1msjAEd9suelYjMFI,1231 +torch/include/ATen/ops/resize_native.h,sha256=oppUtU3hm5OC9gCoiCMgpDR4NEJxwq4kR8xCHODdar4,1785 +torch/include/ATen/ops/resize_ops.h,sha256=DFHPGOw2Md-c1xWrfdPMIcIfRq6osG0kfyoEyGHrBIw,3143 +torch/include/ATen/ops/resolve_conj.h,sha256=pZtPlWnWRIbY8W-7LCBdfLbe_sTs-Bo8KsKyjp2_uKc,921 +torch/include/ATen/ops/resolve_conj_compositeimplicitautograd_dispatch.h,sha256=MMWJp6bkyNCnSl8beG7msh9bueBVklGsW3s8fIkXQFw,1024 +torch/include/ATen/ops/resolve_conj_native.h,sha256=scu8vXMMNhYOyHvKRB5HK2oowzOOh2SoS71jCo7AtCw,736 +torch/include/ATen/ops/resolve_conj_ops.h,sha256=WNfXTJeGcOYue_QDzUz5EZaps7ed5O08SzR1wVWm67w,1235 +torch/include/ATen/ops/resolve_neg.h,sha256=9UrAcYJ5Aqk-N3a_pRN0GDU_8fyATM1LyWT7IM_dDyo,917 +torch/include/ATen/ops/resolve_neg_compositeimplicitautograd_dispatch.h,sha256=vMcqr1afLV42uFe_dT1SX1BVLdd3yA7I7Hsq9QPVkHE,1023 +torch/include/ATen/ops/resolve_neg_native.h,sha256=tyQGWZmAnkl8KI7bdKtrol10brhZ_LpAAGg0PN1KKZ0,735 +torch/include/ATen/ops/resolve_neg_ops.h,sha256=p-s6jTrwrCdaHs3CLZX2AqAjAqtrDD_VvDxk30NG18U,1232 +torch/include/ATen/ops/result_type.h,sha256=3in95uv0aS1mYcr59Cwnsr0mhxPshdDR9WqGN57QvMg,1701 +torch/include/ATen/ops/result_type_compositeimplicitautograd_dispatch.h,sha256=vxGsMgAasADhF1SGQlAJDMSZA48UmdFxErNn56u7KWk,1332 +torch/include/ATen/ops/result_type_native.h,sha256=UMIeRIFjJLjuBE4c_f3BJxiZl00lSfadXDxp0ql2BOc,1044 +torch/include/ATen/ops/result_type_ops.h,sha256=WcXMZ86xsqfnLoZp4ndfKEW64AKrop5u3HZh6KqE5CE,3337 +torch/include/ATen/ops/retain_grad.h,sha256=bUNZdCHtNiwc-z-dw5xsHy8G3vPB7JMIo5AOQt4IOBY,762 +torch/include/ATen/ops/retain_grad_compositeimplicitautograd_dispatch.h,sha256=4K4BImGp96Lihs7BA32LkVKIFKfcgQHIdMXmA-5zuNc,1011 +torch/include/ATen/ops/retain_grad_native.h,sha256=96yVKd7RmXZLe7G_b52YchMTiEDCQmknNbAEh7raJ2I,723 +torch/include/ATen/ops/retain_grad_ops.h,sha256=GhFUc4kf8X2UO_5tQxBeeHeh-WoKRBGJrQEWb4ZgLi0,1190 +torch/include/ATen/ops/retains_grad.h,sha256=5BkCy3-WJP2_U_c8cWOEJlUHjCvt9CzJJoMmQSt_fno,763 +torch/include/ATen/ops/retains_grad_compositeimplicitautograd_dispatch.h,sha256=ZRoDPXbg-uJRZMQ6WpvW_DSLLiHe4yk8RJGOFiT8zEE,1018 +torch/include/ATen/ops/retains_grad_native.h,sha256=hb-WUlpilDpbV1YIOEvArLprzHaKglof0WkX9PAo5sw,730 +torch/include/ATen/ops/retains_grad_ops.h,sha256=V_SQL20VIOniAonJ5l-IluUsFw2r23EVy8I90Oh1YG4,1209 +torch/include/ATen/ops/rms_norm.h,sha256=xJQba4oZBg-DWe7WRJ1f4jW_fqgdDGntvmap-BUF8rc,2271 +torch/include/ATen/ops/rms_norm_compositeimplicitautograd_dispatch.h,sha256=b8SYQoMbJd7sAo8mPdTWc7hbJdVCIVv_tMe8NzpxZZY,1339 +torch/include/ATen/ops/rms_norm_native.h,sha256=-JNHx8yW9UgXOio0PInQcoe6kAjdZBuplaySltW1Vn8,869 +torch/include/ATen/ops/rms_norm_ops.h,sha256=7bCTm0b043x4416xi5mI0s5zVYdmtvhStOLskTTS0us,1590 +torch/include/ATen/ops/rnn_relu.h,sha256=QEwxcBWyy6jWgWgwJMM9iRS1af0lcL7QSTKPXjO4IBU,1861 +torch/include/ATen/ops/rnn_relu_cell.h,sha256=m2yH1O2fDnqCVtf0mIUt47I1ymuvvu07MCulmFZewec,1188 +torch/include/ATen/ops/rnn_relu_cell_compositeimplicitautograd_dispatch.h,sha256=HinWxB7fWsAmQ9q2ydL9LDUmIefTXlBWbsOYuSehX-Y,1189 +torch/include/ATen/ops/rnn_relu_cell_native.h,sha256=9tzEeeaTW5EdDefnrthG6D6dq2xlmusSo0dNNZ1yLUM,901 +torch/include/ATen/ops/rnn_relu_cell_ops.h,sha256=1pR-1h8NaRY99OV9wYFTEGMGkUoydlr-oxt0h03Wykc,1758 +torch/include/ATen/ops/rnn_relu_compositeimplicitautograd_dispatch.h,sha256=TQrk-NR5CG-FU-SNlYZ0r0epL0VC4ZB-X7ZX8MPWiM8,1439 +torch/include/ATen/ops/rnn_relu_native.h,sha256=O6OcVbUzxbAEgY0PcmNcG1F5mRab6C-dM6H45eI5R2c,1151 +torch/include/ATen/ops/rnn_relu_ops.h,sha256=Wj3AbagwQNpv344CwEUp95syFEldV00LaPi7gPemGCI,2973 +torch/include/ATen/ops/rnn_tanh.h,sha256=GQnk-5thc9RdtoST57kLlV3o5HYZVJ_xon0mrNN0Fm0,1861 +torch/include/ATen/ops/rnn_tanh_cell.h,sha256=DoD4LDfI5C95r33lHQ36YSDEbqcOel0mNacaYJtQB28,1188 +torch/include/ATen/ops/rnn_tanh_cell_compositeimplicitautograd_dispatch.h,sha256=Mu9nq6TFukphH6uQMph1-cKgTGpc7qJFDLrKMa5Uzgs,1189 +torch/include/ATen/ops/rnn_tanh_cell_native.h,sha256=mKZ2mwWX8-6DVdR_hnIMjPvhsJXmXiKK0BAF3pAY-go,901 +torch/include/ATen/ops/rnn_tanh_cell_ops.h,sha256=L_jDi_0p8Y2CcYg6eUveLWoHUTiJkMsUMqNR2mSJf9o,1758 +torch/include/ATen/ops/rnn_tanh_compositeimplicitautograd_dispatch.h,sha256=S7pqJVofnSkzdoC-pN5B1zElBUMLSQQdnOWN93ZZvww,1439 +torch/include/ATen/ops/rnn_tanh_native.h,sha256=1uWu_uDUskwUF1W9m7M-kQX5qNmTe9eeV2h6Axw8NI0,1151 +torch/include/ATen/ops/rnn_tanh_ops.h,sha256=6eaas8njrf4ooq9cCUqurt8Fpw26fudKnRrwZZawv4E,2973 +torch/include/ATen/ops/roll.h,sha256=Y5QhgZvOxlvx4u9Hi-KPgLmax2qCKt6mO0KlU-U8Vj8,4205 +torch/include/ATen/ops/roll_compositeexplicitautograd_dispatch.h,sha256=lXipB92Mg4riTG1_vXgMb14_tv_js1a3Antu0Aw5G5E,1482 +torch/include/ATen/ops/roll_cpu_dispatch.h,sha256=YVrguTeonBDLSvVixTaSajS-b9eZbsz15908AWn6os4,1133 +torch/include/ATen/ops/roll_cuda_dispatch.h,sha256=EX1-bNw6GhCaeZqibckT2xpbBgwunfowqzeLr_pGb5k,1135 +torch/include/ATen/ops/roll_native.h,sha256=eks9eTtMlvMlpmE_T1gs6wfWm8PyMTUaMrHPoNmSiO8,1016 +torch/include/ATen/ops/roll_ops.h,sha256=vP_G10mPReE77cpEpUE_y6msmHX-xDj9neHSzyh1nOI,2133 +torch/include/ATen/ops/rot90.h,sha256=m_0rYw6u0QxttASHHds_GEjtcGHq7x8Ho0jRFcSlDX8,1494 +torch/include/ATen/ops/rot90_compositeexplicitautograd_dispatch.h,sha256=pz3FgSORR4LO07R0ELZQ3Cv4XYamZttaFkhXA88dF18,1287 +torch/include/ATen/ops/rot90_native.h,sha256=WufEaaZDE7bgw5qnZismipAghFY-zog_2DzCJ3oxO-4,880 +torch/include/ATen/ops/rot90_ops.h,sha256=4gT7zNK_a5qH3WOGo0h6wwKPYfhzB7Ntf6H8l-zSSz8,2033 +torch/include/ATen/ops/round.h,sha256=ghp7jbFWm-Y7wav-ZBZNOq95EgUAiZMpMrp3Hv1y1BI,2311 +torch/include/ATen/ops/round_compositeexplicitautogradnonfunctional_dispatch.h,sha256=Tu4Zl9DIWzGI_ztyt1j2yM6br_KIqqKWX7GSO4i6UJ4,1232 +torch/include/ATen/ops/round_cpu_dispatch.h,sha256=tMkOcMxju_dDaFdbJW1EWXR11auZHTaeCkvuceCtnfs,1508 +torch/include/ATen/ops/round_cuda_dispatch.h,sha256=0pzUNDYaNiL_w6o3MddOMqmo1onwXwdkD765bFSmANA,1510 +torch/include/ATen/ops/round_meta.h,sha256=T5eY_el-mxFZ8Vn2ZtO7IUiZb_NzjrEM6cOSOSGuh9A,956 +torch/include/ATen/ops/round_meta_dispatch.h,sha256=otEmONNKe41ZrBz-Dz8bwzYtjAbljw0unDWxrYODoIY,1510 +torch/include/ATen/ops/round_native.h,sha256=kjQSMNYB90LPkt8ArmPqpV5Q68Zpy9bM6D96HFQgNTM,1436 +torch/include/ATen/ops/round_ops.h,sha256=b6Izjd81rSRPBzJgJDv9QSS0LXegndLwDe_vDCJ8Ce0,4133 +torch/include/ATen/ops/row_indices.h,sha256=o9nZn0NvcMqpha-mVkSSFQdCjYSYEO1C-I0xwqiz02U,762 +torch/include/ATen/ops/row_indices_compositeexplicitautograd_dispatch.h,sha256=mtV3jVdtuO9axQOfyeLiy3Au9QIe_jl1iimzHp7JaF8,1023 +torch/include/ATen/ops/row_indices_copy.h,sha256=tb2QHVhgwWbze6HsImcA58qUsxFIkCrkq_ln3ucOtZw,1381 +torch/include/ATen/ops/row_indices_copy_compositeexplicitautograd_dispatch.h,sha256=-Ew0ig5VhEkc_yYjQ7s8TgYd-54Uh_iZZHSCAqYskQw,1141 +torch/include/ATen/ops/row_indices_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=veNw2jtcIlGpDwoX29vr_pW107ChnThpQPe0gzDrjTY,1054 +torch/include/ATen/ops/row_indices_copy_native.h,sha256=fEdIiytcms4CWzKthLPmKbUi_etE0CrpyRrOwm5I-gg,828 +torch/include/ATen/ops/row_indices_copy_ops.h,sha256=1xb1uDlmJyZ_CV9eeg_THDuh4IZ_96Roe-wJmjMWIEs,1861 +torch/include/ATen/ops/row_indices_native.h,sha256=R8dRIhV-lr2seMEWjXNZynBxTGkDm-ZakAy4eN8LPM4,813 +torch/include/ATen/ops/row_indices_ops.h,sha256=iQHlckPo28PSy1Ly4nI3MrCAQL4WBXsiJLNYylN0IC0,1232 +torch/include/ATen/ops/row_stack.h,sha256=kahBlM4-q49wxRz99mVKn2LbDm-q-aGrP_q1isDOxSw,1332 +torch/include/ATen/ops/row_stack_compositeimplicitautograd_dispatch.h,sha256=D72AykzujZss5C2Ufhj5pWUzXuPAdYO0BlWGmO8gpS4,1181 +torch/include/ATen/ops/row_stack_native.h,sha256=dSsMLMxRIbmvVeX33oFT7Ibu1OVEXW4fK3-evmrZg1Q,812 +torch/include/ATen/ops/row_stack_ops.h,sha256=1VxWuN0TRse0lG3olG1jxstxOesdKqeb6q6ulEKx9N4,1817 +torch/include/ATen/ops/rrelu.h,sha256=bmqBOt7onCiqT-jJMOlDRaGZSLwmUw5eOjvkGVmS3Q8,1608 +torch/include/ATen/ops/rrelu_compositeimplicitautograd_dispatch.h,sha256=OMGTnlclDSiT25pyd63aS7dCaIqDZ7crdnFEQhkaPBk,1377 +torch/include/ATen/ops/rrelu_native.h,sha256=xDrAzGdJGd2BMx5qgZMaBDNYj-6VF1N9qHV7_wrX-_c,1089 +torch/include/ATen/ops/rrelu_ops.h,sha256=Q7PmJDYM-ZAnNZ61T_Ye5tGbBDovGW7D1MiYLBU611k,2498 +torch/include/ATen/ops/rrelu_with_noise.h,sha256=K3n5q1eXTQniw0MA3h6yIpmZNEkejKDznV6Q-oe2llU,3432 +torch/include/ATen/ops/rrelu_with_noise_backward.h,sha256=aSKgzR4QSAj9arm4aevxRGeUZ9BidID3G5Bqtjg2uS4,2383 +torch/include/ATen/ops/rrelu_with_noise_backward_compositeexplicitautograd_dispatch.h,sha256=wl4evcR0LIk12O4OdsoKJrT6LKg10lBZU6rN09vQmG4,1670 +torch/include/ATen/ops/rrelu_with_noise_backward_native.h,sha256=cwl7MgEcztpDjf3BfD5meAwXSfTkL-KyDTIVrhpEyXY,1138 +torch/include/ATen/ops/rrelu_with_noise_backward_ops.h,sha256=pGlPN34EfFSjtDK5pQQjABz7M2FI0xWUw6bAHSqD7eY,2879 +torch/include/ATen/ops/rrelu_with_noise_compositeexplicitautograd_dispatch.h,sha256=ZAoQgJua52TFwVXkkJ3ftELM30NRSFAGNxi-V_4WTaI,1245 +torch/include/ATen/ops/rrelu_with_noise_cpu_dispatch.h,sha256=GRwXfGnQTHJwQ79aj2bAm-mk58eCMZSFMKwxvVqUfBk,1876 +torch/include/ATen/ops/rrelu_with_noise_cuda_dispatch.h,sha256=ptBOwhoYw24F0GvgPVtLoqeHj80CZG2LUKHAEot40yY,1878 +torch/include/ATen/ops/rrelu_with_noise_meta_dispatch.h,sha256=zc8JPzRWVS1JkKjyFHBoJqwvFGtlzweiH7GmtM7m4mo,1158 +torch/include/ATen/ops/rrelu_with_noise_native.h,sha256=YHn8WQ_ZZysGw9Zq9pyjm_KBN-y4HjDx6roxUpg7UGU,2368 +torch/include/ATen/ops/rrelu_with_noise_ops.h,sha256=2jng3KR15CsuF46_jRONyE5BesNXudh6I23W_kum2Uo,4938 +torch/include/ATen/ops/rshift.h,sha256=qgsM7uK6gUvmCleprWnI_BrGeobjfViMBTqdKDFF7mM,2244 +torch/include/ATen/ops/rshift_compositeexplicitautograd_dispatch.h,sha256=0pTXVKXMTK-sFdHkvh1V7jlM3BKh39AgLwispQMN_ZU,1398 +torch/include/ATen/ops/rshift_cpu_dispatch.h,sha256=KNyNENoUSFPfXprgo2mgwU6RS71LMaTsCOvGk2cLwls,1250 +torch/include/ATen/ops/rshift_cuda_dispatch.h,sha256=zYQm2xOyZ1eE9HwhPbVsJ54Y-3lbFw3SiuuGR7tvzJw,1252 +torch/include/ATen/ops/rshift_meta_dispatch.h,sha256=hq5LEIdT8yPOTEGq7bu5xVZO17GO-PF2JAT2B1zqkIM,1084 +torch/include/ATen/ops/rshift_native.h,sha256=0hBLz_e1qVx8YYuZ3c9tO9Ey3laBDZYIvmbgAaQ1UD8,1236 +torch/include/ATen/ops/rshift_ops.h,sha256=p-dePtjLTXw3-ioSq1NbQp42nT9LL_vZ2e8JSxHtpEk,4599 +torch/include/ATen/ops/rsqrt.h,sha256=OQFow5aN1yF6srkgYkDSWWpGEVcI7-uxi268AFIILRU,1410 +torch/include/ATen/ops/rsqrt_compositeexplicitautogradnonfunctional_dispatch.h,sha256=UiHL4fE5ezjXaTuOAWDxAqw-x4srIQ6ppdr_2X00D-8,1093 +torch/include/ATen/ops/rsqrt_cpu_dispatch.h,sha256=F6Zx-gU1GmJ-2as9JNgN1RUPyIs9BE0Yor_3miY0xjw,1178 +torch/include/ATen/ops/rsqrt_cuda_dispatch.h,sha256=2Na13kIC_KOGHPLtBxKL0cxSBRDgsxmf0i2nNcCEWa0,1180 +torch/include/ATen/ops/rsqrt_meta.h,sha256=msSUjsSMNzMEfZH_GKynmUNPEEHMY0nFBBhQ527sZZ0,820 +torch/include/ATen/ops/rsqrt_meta_dispatch.h,sha256=MiXXXnAS36rqNIoO4Lt51_gpDfawZWGjnSt-my6Qh64,1180 +torch/include/ATen/ops/rsqrt_native.h,sha256=4UOMKgClGpukdqxafE-JeBz3wa03BdgkuDlI01n7_aQ,847 +torch/include/ATen/ops/rsqrt_ops.h,sha256=_rdRzTuj4kE9WygHNeDX7LRr5KJb4_dYnURaGssfxJs,2291 +torch/include/ATen/ops/rsub.h,sha256=IbYZi_ubsf6FH1i804LEOOKmt7yvcZOnKwoJZcBKLY8,2439 +torch/include/ATen/ops/rsub_compositeexplicitautograd_dispatch.h,sha256=kVIxMNqzlUNAkV1X-2n6WW_aInOB7KVgbiOLiPPcIUg,1588 +torch/include/ATen/ops/rsub_cpu_dispatch.h,sha256=WQp_YNNrsLUY_2mNrfy2V8eoFvAV18AQ2nJztOUOiAk,1026 +torch/include/ATen/ops/rsub_cuda_dispatch.h,sha256=ag2judvZL_iuuzMcxenZF8pCg6g8KkuB3Mf50ZcYKso,1028 +torch/include/ATen/ops/rsub_native.h,sha256=vaigEO2IFHNl9du9eE1g7CSgkVcwLz_bT9JT5-ddKW0,1158 +torch/include/ATen/ops/rsub_ops.h,sha256=1hjUvdhgmehU8O8mqYV_vwYJyz8PXqcfDPma4RpLzPw,3648 +torch/include/ATen/ops/scalar_tensor.h,sha256=OG5uP7JLZye0yZIpHiPKqXNQNxwhyrc-njGV_SebmsY,1988 +torch/include/ATen/ops/scalar_tensor_compositeexplicitautograd_dispatch.h,sha256=NEEwV6P3W7QDmCDNEcV3Pu1eEa_0GcQS-oS8GD6MQwA,1420 +torch/include/ATen/ops/scalar_tensor_native.h,sha256=8Vb3HPzGeMNycXG3KovDQg2ZNheVixBR0l5Ivq79kDA,973 +torch/include/ATen/ops/scalar_tensor_ops.h,sha256=6-fhFAPbBk_VMVGcIgSx0aGSfdRbMmVDpRnkVCEhK_s,2321 +torch/include/ATen/ops/scaled_dot_product_attention.h,sha256=waNWxgRDuKZlPXiraeJqlUSVWNR4CE6HPiLy3pWp8fM,1397 +torch/include/ATen/ops/scaled_dot_product_attention_compositeimplicitautograd_dispatch.h,sha256=m1QUiPPEAAuJ8fJa4G74wRM96nRJtHGQXqjElJVLJdM,1254 +torch/include/ATen/ops/scaled_dot_product_attention_native.h,sha256=-L6xIvtJGKSTlfbQ-_NCkxKS75urLu77cXNyqwQLco0,966 +torch/include/ATen/ops/scaled_dot_product_attention_ops.h,sha256=ufGybKU04q7S5f4s0RswWHnt-ii3Hw0iCkgx2iiwYLY,1898 +torch/include/ATen/ops/scatter.h,sha256=sdzIICo2_j-JGIKGGeTpYdLkqf39kLyb9HkIbM6Amu8,5345 +torch/include/ATen/ops/scatter_add.h,sha256=dSZMGL9-hg9SDbmM4xs7eJzGBgNyh_0q3WXdsbi6tKs,1965 +torch/include/ATen/ops/scatter_add_compositeexplicitautogradnonfunctional_dispatch.h,sha256=5QyA_y1ln2sUIYJSdEbZQdI4tg-E5fFYgBfzr0knB28,1231 +torch/include/ATen/ops/scatter_add_compositeimplicitautograd_dispatch.h,sha256=pBJk34oXQO0dzY7T9W51br_nCMVcXaZQS1_XvXixaTo,1090 +torch/include/ATen/ops/scatter_add_cpu_dispatch.h,sha256=X7irNUJK6RBdC206W5o-pB9E1PsNR36xBmjLdFi0z7E,1454 +torch/include/ATen/ops/scatter_add_cuda_dispatch.h,sha256=aQScy9LFhdAPcrOjjv1FEPhhF1qCdCKxgI4mSyhOFRs,1456 +torch/include/ATen/ops/scatter_add_meta.h,sha256=cr-h3LflBxtjom5ugQ-SrVsgEliCdDGN2CsULqLz_jk,889 +torch/include/ATen/ops/scatter_add_meta_dispatch.h,sha256=KIASOmQRROY77Asek8YviiEP_t7zLQLg5Or9Gu8VS-g,1456 +torch/include/ATen/ops/scatter_add_native.h,sha256=tPTsOea8SUAqp_edIoIxsNT4BdkPIwp51FN1bZuulno,1050 +torch/include/ATen/ops/scatter_add_ops.h,sha256=FWJbuhcaW5Jqn4a1d2UN2XVbMnFiNXKhNDd2grO1IZE,3739 +torch/include/ATen/ops/scatter_compositeexplicitautogradnonfunctional_dispatch.h,sha256=guN5dRoEwYDMXLAfNzG3S9PfLjlpcDHEqMaw9qrLyP4,2030 +torch/include/ATen/ops/scatter_compositeimplicitautograd_dispatch.h,sha256=EDVn0F0AKgz1zhn7bsabLu3KqytEkKk3hRWqBKHeQrU,1210 +torch/include/ATen/ops/scatter_cpu_dispatch.h,sha256=Y-XCrhhA6_ylmW20J6kXU8_jWV_fifxLx_XQll68s4Y,3208 +torch/include/ATen/ops/scatter_cuda_dispatch.h,sha256=ptJgXfz2dRr7KHv4CV4un3x2CFNo1S89uJXbSOA5edw,3210 +torch/include/ATen/ops/scatter_meta.h,sha256=7-4b5p9SohXf3RNiPewk1bzcDZgnNY0UvHKOppOC-08,1491 +torch/include/ATen/ops/scatter_meta_dispatch.h,sha256=3gB9rZ8AXoUMcuVj6NXBcdB9b7lodZz9lcxzC1WnLD8,3210 +torch/include/ATen/ops/scatter_native.h,sha256=I9iSeph4xJWDXrfOPRTR0p1LtK0qeVCV08SucLHmk-Q,1894 +torch/include/ATen/ops/scatter_ops.h,sha256=9IANj8Bb0-cHRHOGIPUa4d1xkDxtaUbQj4XJMtnR2xg,11953 +torch/include/ATen/ops/scatter_reduce.h,sha256=P-qfQKnAe65txT9YYrmLvOgbkCDT7dWOj7OE1g0zg4I,2049 +torch/include/ATen/ops/scatter_reduce_compositeexplicitautogradnonfunctional_dispatch.h,sha256=x01ccrTho4U1MrLcMYKny2QfECBNbVrh7YBVZ-N9vjY,1335 +torch/include/ATen/ops/scatter_reduce_cpu_dispatch.h,sha256=0-cysGg9b3TwwYTCeauwbAXJJWFo9UjUXwKvfE1QnEE,1657 +torch/include/ATen/ops/scatter_reduce_cuda_dispatch.h,sha256=WvvmrBH0tbxbpLvuc1RzhhPH9v-WoQJvuqCDGBHN5wo,1659 +torch/include/ATen/ops/scatter_reduce_meta.h,sha256=LpqD2aXtxtd1J2ixFlFIG-1PKMmBkQNVsJ0Yfb-yBmY,940 +torch/include/ATen/ops/scatter_reduce_meta_dispatch.h,sha256=W5sJQVT7t4x-hAc_iKGwLe7RLW_US5s9JbuBEIEl67E,1659 +torch/include/ATen/ops/scatter_reduce_native.h,sha256=uYOl2oVbcR8-xo84rhrkoENo4xfx9L45iU_zSM0ot3Y,985 +torch/include/ATen/ops/scatter_reduce_ops.h,sha256=1wOgqs-MKtFuuA85TpyGL6_1WVleuqAYk3D3TQS5UAk,3486 +torch/include/ATen/ops/searchsorted.h,sha256=qJGnimAqzADjhFBSgxsRJledjno2u9WN82hbuW-q1BA,3918 +torch/include/ATen/ops/searchsorted_cpu_dispatch.h,sha256=T97oFww58m-OXUlIM7uaI7qv_aoPrR_TYVtUoQoxn-4,2386 +torch/include/ATen/ops/searchsorted_cuda_dispatch.h,sha256=10EBjqxA5a_0kR88yGRiKzIlMrlzu5sMLHB2uAVauD0,2388 +torch/include/ATen/ops/searchsorted_native.h,sha256=6SLQb-IVU4qv0_WLfUZnURCVYjquRgvcaqrq_KsFik8,2592 +torch/include/ATen/ops/searchsorted_ops.h,sha256=3kymaFbHoUBaSBCWySg0X7hv0zfuR6tTSFQ7NTvs968,5055 +torch/include/ATen/ops/segment_reduce.h,sha256=Yfyvw55KNGD1tkizeu4VZfMMfnMenjjcLqWXTZEmetk,2691 +torch/include/ATen/ops/segment_reduce_compositeexplicitautograd_dispatch.h,sha256=3ydRv6-fP1P6jGGFJBwgRedGM5pD0CDqeSMPAmlKt-c,1633 +torch/include/ATen/ops/segment_reduce_cpu_dispatch.h,sha256=13ol0tPxvXoHOpjJGOrv19nWbu8L5iXYWALF1xBx1ZU,1246 +torch/include/ATen/ops/segment_reduce_cuda_dispatch.h,sha256=3DdKpRlDliNNJTSlli0bKf-JXkybxhtQMli4OzMncNU,1248 +torch/include/ATen/ops/segment_reduce_native.h,sha256=yRJSHwAb512BW7hwPCWUuqQTKy6a5q7uEd4bi0JesB8,1327 +torch/include/ATen/ops/segment_reduce_ops.h,sha256=RoJVJZiDCl5woNaVpPzoN96Rc4Hwn30jBDtTSYAu6YU,3404 +torch/include/ATen/ops/select.h,sha256=4NDeO7llMICBO0ErO2swMT1dXwcRypTbdNwMx_VRAVo,1900 +torch/include/ATen/ops/select_backward.h,sha256=cci8wzIzE612qTyx51S-i9iBXmfiIabaGRLzli7-2LQ,5086 +torch/include/ATen/ops/select_backward_compositeexplicitautograd_dispatch.h,sha256=qiRlEyCwlxoiWePtVX8wXWfFofL5xSw9l6R7_XdCNaI,1600 +torch/include/ATen/ops/select_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=bo2r3jXA7T0W8xoPFnoExLzQi0Auf5AJA12avIxiQQg,1259 +torch/include/ATen/ops/select_backward_native.h,sha256=r4PKzswJB3QMYVVjnC_4HqNXTKtnZ6_0NVhob5k20Fw,984 +torch/include/ATen/ops/select_backward_ops.h,sha256=cA9rrppl0G2Zt4jzgm4IzR1MDJa0S8Y3sz2qdsl6ggM,2333 +torch/include/ATen/ops/select_compositeexplicitautograd_dispatch.h,sha256=CAriz-Wukhboa005Sfq88-VvfH0tx0t7BAxScrHEVaw,1139 +torch/include/ATen/ops/select_compositeimplicitautograd_dispatch.h,sha256=ryAQThoipuBYg2vOfc-jzJ-mOV-kx6QpdM5qHf5oGew,1050 +torch/include/ATen/ops/select_copy.h,sha256=JyqOVVZm0cavwhKgWZsxh9IO1nNg4VSpJSA115O2IgI,4008 +torch/include/ATen/ops/select_copy_compositeexplicitautograd_dispatch.h,sha256=mWQmENydby4TzvZ1N6Ex5eICLfBd1xlycLDUItAO_94,1432 +torch/include/ATen/ops/select_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=ccRmau6MIaPbC51GEzDV88h0AtX2W9kuXJ2fklK_8Dc,1175 +torch/include/ATen/ops/select_copy_native.h,sha256=mxgkE48Do2VvXPUlbBH2VYd1j5mK5-vSiqKZ5bQGCA8,998 +torch/include/ATen/ops/select_copy_ops.h,sha256=JogO8p6_WduqfmP6xYMNabbVSsd-FXHAqG8uZ5dqIZg,2072 +torch/include/ATen/ops/select_native.h,sha256=GY1e4nDfXUWJ0GXNX-PcFYX8e9WRJNYMmGReG3KMi3Q,1037 +torch/include/ATen/ops/select_ops.h,sha256=M4STX5Y_8_pZYksjzEZWJCvQrPmR3uwLS-18dghBFRw,1976 +torch/include/ATen/ops/select_scatter.h,sha256=MrfI6oY9dVBUpXXU5QQLCje6C1lIcu_5abqT9CEhD-s,4449 +torch/include/ATen/ops/select_scatter_compositeexplicitautograd_dispatch.h,sha256=iTgT4fnr8dLTPKuSoivNDKOmqyLppKjTtoiznQyUu5w,1540 +torch/include/ATen/ops/select_scatter_compositeexplicitautogradnonfunctional_dispatch.h,sha256=LverrgwrzZMwqGJFH8UbKWauyxMaKVjR8BxPZMHjpFQ,1229 +torch/include/ATen/ops/select_scatter_native.h,sha256=T0FhLnC4OBmDaCUv4yk8xpsSJEfDVxfulmDn7VFlAek,950 +torch/include/ATen/ops/select_scatter_ops.h,sha256=s0gb8NqCH54P0wjpuPtmssRNMmaobAoipSbc_RkOknA,2227 +torch/include/ATen/ops/selu.h,sha256=ITghWDoBQ0vNIfM9nNc9_2TOXm0TPiLVjy4mhPPXX-w,1019 +torch/include/ATen/ops/selu_compositeimplicitautograd_dispatch.h,sha256=6gtCF172XP9dT1GnJ1A2D86Qlenm-TKtYwBSHrWWMmI,1065 +torch/include/ATen/ops/selu_native.h,sha256=fpiZZm6VxLKIQKxIlIXjWOJ7IiH3dLN9U47s4SWLmlM,777 +torch/include/ATen/ops/selu_ops.h,sha256=VNhMqvGJzPtkVtZVHjjXUVK_Nwrb4ssYGr5sgOiC0NE,1698 +torch/include/ATen/ops/set.h,sha256=_qV0ht3c1durpm9fSaDU_3S772ue-Kj5Jljt-Rtp1cU,9464 +torch/include/ATen/ops/set_compositeexplicitautograd_dispatch.h,sha256=9yomqD2b979Bo_uFmFxfv8MbRaYIHd70vhPWDgcU5ZQ,2724 +torch/include/ATen/ops/set_compositeimplicitautograd_dispatch.h,sha256=czaR2sRMEhrINebzvDiK50UDESWdtrRuzeCRwzI6pzU,1279 +torch/include/ATen/ops/set_cpu_dispatch.h,sha256=eAwk6b3skUvO9iJNcbeee6W5GwP93tzWg6Sqx3Q31fo,1412 +torch/include/ATen/ops/set_cuda_dispatch.h,sha256=rIXh27UjeR8VY2qym57p1fkdAUr0WHSLF5JE5Wnp29s,1414 +torch/include/ATen/ops/set_data.h,sha256=Zg11Enb8IekJV53Ci3a4iVLEwOkjT88xeRgLVgBdE3c,759 +torch/include/ATen/ops/set_data_compositeimplicitautograd_dispatch.h,sha256=Bwj-q11Y3fou0GuTETplXF4gC-yhcOJGuU6wanVXK8k,1037 +torch/include/ATen/ops/set_data_native.h,sha256=V85wfKgmMB6O5PXded7OW6hFL2Rycko_O71fDfI_X7c,749 +torch/include/ATen/ops/set_data_ops.h,sha256=dGdEs3cjwKAqdqeAf7M_fXJyEd6y-V9O7qHnHg6NV1M,1276 +torch/include/ATen/ops/set_meta_dispatch.h,sha256=RHyyh5XyHYoSOC7cFhrmeLVoI141jHzTZ_kGiNd1UME,1414 +torch/include/ATen/ops/set_native.h,sha256=JLpKJJpwJ59-A4rUtmEfj-1Xz-aC27DJPTiYv25LnZA,2668 +torch/include/ATen/ops/set_ops.h,sha256=Uk30BQHMCfVq2HmYSIY3YF2YZ9P9eHiHzNhOht55F9I,9938 +torch/include/ATen/ops/sgn.h,sha256=kI6oR1iPTFNCY0ytOgSu4dn06C0ikMp_MVhsWSvRBco,1251 +torch/include/ATen/ops/sgn_compositeexplicitautogradnonfunctional_dispatch.h,sha256=1TObnSBX3qT5dUptHoUXXP3VJszaggpyL7kEF06jZtU,1089 +torch/include/ATen/ops/sgn_cpu_dispatch.h,sha256=7tUfCjhN2aSAyvvuK6fimSVAOpjA0Z4hxZumJsEHbgs,1170 +torch/include/ATen/ops/sgn_cuda_dispatch.h,sha256=ZC17B79tEvNFWdp-1dIcBY620WMcYOxde9HPhDn1K3Q,1172 +torch/include/ATen/ops/sgn_meta.h,sha256=3v8kBuKKtLjcuSFRxBoX1GLjbNcDhD_TTKU-wsL4S4E,818 +torch/include/ATen/ops/sgn_meta_dispatch.h,sha256=3fqrjwCr3QJw8-qgTksL3KUsfG-0R_-yyIflCO1FP5M,1172 +torch/include/ATen/ops/sgn_native.h,sha256=eFs7GLEH00cRgnesHp4alyc2I7_4dYNiMyGSsjZCsmg,1368 +torch/include/ATen/ops/sgn_ops.h,sha256=uJ35vi2kPGZHPr7Zijsl3sNMCJzryCCYpc5H9zPfKvk,2273 +torch/include/ATen/ops/sigmoid.h,sha256=SP35S1-8mE6rellGA63DV4rlaaRjvEWcCZY3ZMRQI5w,1436 +torch/include/ATen/ops/sigmoid_backward.h,sha256=YkZuVSkqxLqmvWEqhJeu6XJmb8EnOtx3QRAoETKYofo,1664 +torch/include/ATen/ops/sigmoid_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=5URGXYFbUjtr7vBzO6FJs_vxzWcHkcmG0KNNNAAfCjA,1088 +torch/include/ATen/ops/sigmoid_backward_cpu_dispatch.h,sha256=vfip83mtbtU6AGKa7dyh63CNYgQHSO37Upvi2d7xIy8,1277 +torch/include/ATen/ops/sigmoid_backward_cuda_dispatch.h,sha256=mV8F5s0GKYeh0Ec6WQIbBJwFae9Rq6fzWrFjU8xSX58,1279 +torch/include/ATen/ops/sigmoid_backward_meta.h,sha256=vamPqk9RH5Oak3b-df8qn9U_K5piC2fGV8W8IvokxRY,865 +torch/include/ATen/ops/sigmoid_backward_meta_dispatch.h,sha256=y2vfQ1HFlEYyF15M-LHxMIGEd1oDFAJMH56jmRFAR6I,1279 +torch/include/ATen/ops/sigmoid_backward_native.h,sha256=7N1vDAB-dTGTDxvi7FpHZn8_OAP4YrdrW80iPhdrhG4,921 +torch/include/ATen/ops/sigmoid_backward_ops.h,sha256=J7EHByjZEKEeIsR9YInQi38LJJ6UG7i6OfHMqnIsZ4Y,2123 +torch/include/ATen/ops/sigmoid_compositeexplicitautogradnonfunctional_dispatch.h,sha256=ircFvP3RbayrEdzzGJdj4isQC23LAH8uwBXNIwg7jSY,1097 +torch/include/ATen/ops/sigmoid_cpu_dispatch.h,sha256=uaMyqYr9JlH_IfkxrspT8jnJ-OVbGBKq_vzLCvZQW9I,1186 +torch/include/ATen/ops/sigmoid_cuda_dispatch.h,sha256=jbvBcLX-LB7czGp-dsc2hWTsGaKnWHGZ_uEy1sHWBno,1188 +torch/include/ATen/ops/sigmoid_meta.h,sha256=8SIac2c0v2xgH4po4wwEHNsgnWqTfSHHNAuYZidRxjk,822 +torch/include/ATen/ops/sigmoid_meta_dispatch.h,sha256=Kr5wm70cOY81sZIkCFmZo_RjaDDqUkvi0sMpLOK4Qv8,1188 +torch/include/ATen/ops/sigmoid_native.h,sha256=EPPFWLxMsbulfwgzI6f-OlnWA8jSy_bPo8gCvS-XFjs,1043 +torch/include/ATen/ops/sigmoid_ops.h,sha256=YMmoS_8uX_2NoYZJ4v2R_5vrZsOzrCTOKE29waccmDM,2309 +torch/include/ATen/ops/sign.h,sha256=zLFbcn3EpuP4EOceElsn7uBz4ywjCz4EJWk-WYbrNic,1261 +torch/include/ATen/ops/sign_compositeexplicitautogradnonfunctional_dispatch.h,sha256=u5_Tb2wgdJ-C-sV5BFAgNQfUczgODEyXahPQhxBLIYw,1091 +torch/include/ATen/ops/sign_cpu_dispatch.h,sha256=iDAbHMqmYggcQ1KZj_DR-4WkgDqOcJk-jyhnjVVrEws,1174 +torch/include/ATen/ops/sign_cuda_dispatch.h,sha256=06dl16Gr9zFlRtGGYGeWShdymHEGHUtamk6cx-cuCjc,1176 +torch/include/ATen/ops/sign_meta.h,sha256=a30zithYb093NjF5Pz0OHllx4usPxeWKrm4IPSgqWt4,819 +torch/include/ATen/ops/sign_meta_dispatch.h,sha256=qSV8Gel4hdVFhVal3JBLuWkGjTA8mjuRbvUf9CXIQ6E,1176 +torch/include/ATen/ops/sign_native.h,sha256=8tE4gCWZM7qoTbZ-c2krE4yL9a0SM89No3vebyi3F2w,1252 +torch/include/ATen/ops/sign_ops.h,sha256=8ZYl8YDO8ez6jpH538cwcTk4CFdsv2fEpBufQJy_C3s,2282 +torch/include/ATen/ops/signbit.h,sha256=8raUbE9A3BSRJ1i91JumIYD8wnNqKsalZvAJISz8Ewc,1291 +torch/include/ATen/ops/signbit_compositeexplicitautogradnonfunctional_dispatch.h,sha256=dKG0zQYQNc-gO1mp9pQSPaE5pB1GSQWxbW2vHAEvLLk,1045 +torch/include/ATen/ops/signbit_cpu_dispatch.h,sha256=ghacY1-BhVYCzdqth8Pd9Rp2h7IbWhaPlXC4EdwdkQg,1134 +torch/include/ATen/ops/signbit_cuda_dispatch.h,sha256=n-hXRnEcBB4D8ZsmkCR2obOslV5X9XpUDObYx0d8yIY,1136 +torch/include/ATen/ops/signbit_meta.h,sha256=z1DB1eigJJgdsalJngbGiWQ1j5GEQR7rkVCw_VcSKRY,822 +torch/include/ATen/ops/signbit_meta_dispatch.h,sha256=XreuC_tXOtOxF35Kj9p1M_ZxSwkciN3VixF8FEzzePk,1136 +torch/include/ATen/ops/signbit_native.h,sha256=lbVBTjMgal7sDsWmxHsfA2cxfwRyTYmJMJAXqkKdH3I,1157 +torch/include/ATen/ops/signbit_ops.h,sha256=o6yV8bSrInlsFurvNs-4i2l4blVYNKN1I7dIEL2jCUM,1807 +torch/include/ATen/ops/silu.h,sha256=1ucL0i4qRjjU0EcV1Jebc10looOuoj0NtGdeqbbi9X8,1397 +torch/include/ATen/ops/silu_backward.h,sha256=5MjcViFALzdxwZ19Tz0etmOC5C63uakz-vTjB3oPtTg,1616 +torch/include/ATen/ops/silu_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=MP0iPaXAmhRYKNEClxJ68u1zihsLs4U3qvfuCMYVTZE,1083 +torch/include/ATen/ops/silu_backward_compositeimplicitautograd_dispatch.h,sha256=uXCIoxGDuqVQRkHtamFdqZ5SASD36cPXTNoR68HwC1c,1057 +torch/include/ATen/ops/silu_backward_cpu_dispatch.h,sha256=hSk2vnrP-7FZnWaN5HwwpVilpHL1GKzAfLVMhP-8Sv8,1262 +torch/include/ATen/ops/silu_backward_cuda_dispatch.h,sha256=WW31UOYV-SvGSDTDRBREnjpSQnuQcR3hN-KE5MOEdqs,1264 +torch/include/ATen/ops/silu_backward_meta.h,sha256=Igtb9j_htA0cAiY78vRKc9504ZWL4rVirWXJkvZ-Lpc,860 +torch/include/ATen/ops/silu_backward_meta_dispatch.h,sha256=yv0qMaKhtyzKfb25pSCwwrCAqQxQzK7GFZ-TrPfxyj8,1264 +torch/include/ATen/ops/silu_backward_native.h,sha256=I2QaNP-pcT7itvu3RHRtmM8vcDbdFfNzsCXKCctyjwM,1108 +torch/include/ATen/ops/silu_backward_ops.h,sha256=pvoDjdylieWb14IdwhPZNFEZBLnkSogPu2IEml82Tns,2093 +torch/include/ATen/ops/silu_compositeexplicitautogradnonfunctional_dispatch.h,sha256=oIErYPa3AcRltGRKOeD957NGfUcPKHUjobCRn83yjYI,1091 +torch/include/ATen/ops/silu_cpu_dispatch.h,sha256=CR0lHgiTUIoIaKbFcBbIZjid8MPVghctLameXKtnNRg,1174 +torch/include/ATen/ops/silu_cuda_dispatch.h,sha256=oDfWNaebBAHaZLZr0trZb1fkKUXo2nSLpGw-_mDzrC0,1176 +torch/include/ATen/ops/silu_meta.h,sha256=MLkU3umju5GEIjiRvxfWyNjdiumdDka8aQq_2dCvDzs,819 +torch/include/ATen/ops/silu_meta_dispatch.h,sha256=53NEmZGzUUAcLKWJU_EYs2LW9xb0y1ua3ZeO2-xZSww,1176 +torch/include/ATen/ops/silu_native.h,sha256=qsvgPSg_Bo0jiIKvkZkMVtkkRfiilz54fscc8Ra6W5Y,971 +torch/include/ATen/ops/silu_ops.h,sha256=Hu17I0HyVv8hwpYXH5goasMa_swSnHwsZBv1OVhu_JU,2282 +torch/include/ATen/ops/sin.h,sha256=VYOnRrwlpzHP6xcD7uUFyMSbZp59nyEZ-1ffZJ96nqc,1384 +torch/include/ATen/ops/sin_compositeexplicitautogradnonfunctional_dispatch.h,sha256=my9QX9Z0GJfSw6Xw7SWHcUTYnrGcMvBE3-rKDnBNYno,1089 +torch/include/ATen/ops/sin_cpu_dispatch.h,sha256=CqBqUhuEbzir-8zZn2ittMKzg_C5ZdYdH3pDVDYsrj8,1170 +torch/include/ATen/ops/sin_cuda_dispatch.h,sha256=QdcgB7HLsRXnhfvj9bldaChoJQGMtV5YV5nkRrdqE0Q,1172 +torch/include/ATen/ops/sin_meta.h,sha256=h2k4PBLyLEaFfNnu4pFC4KvdKjq-b7fRHPnEYjSCaRM,818 +torch/include/ATen/ops/sin_meta_dispatch.h,sha256=bt00eNUqL72JRlh1GjxhnaA84NV7qDqX3NCM6m8nUuk,1172 +torch/include/ATen/ops/sin_native.h,sha256=QDG03Vdp1XpJf6nXO8COvnEm-OJWlMGlwk5ETRzYfjs,1307 +torch/include/ATen/ops/sin_ops.h,sha256=YbcZLqGv3LB_ha9iWdbT1vKvnZQTt3xk4FvvtjPjqDw,2273 +torch/include/ATen/ops/sinc.h,sha256=gH9yZTjoDcWJVNiig2cu2b1Oa601fsFb4LB7SiZXcMs,1397 +torch/include/ATen/ops/sinc_compositeexplicitautogradnonfunctional_dispatch.h,sha256=a0V7eutuY0WYLPqvm3SZumQzzJMG5mq991RYJoi5fnI,1091 +torch/include/ATen/ops/sinc_cpu_dispatch.h,sha256=FqWcZU8S_9w4P_aD4wWNZnvIn-r5TNVfJRg9_uAXyRE,1174 +torch/include/ATen/ops/sinc_cuda_dispatch.h,sha256=Q2G6re58qKB5Jjab2aOlxm-HHqRfpBkWqmgjH9ZnbGg,1176 +torch/include/ATen/ops/sinc_meta.h,sha256=j9PY7loM_Nq7YCm8cBROx73OKduh5rkX4r6jrrdfutY,819 +torch/include/ATen/ops/sinc_meta_dispatch.h,sha256=XcvMLSoKHE_bF6K_6QeIMoI84mNHs8-MGPKw-p413Ag,1176 +torch/include/ATen/ops/sinc_native.h,sha256=O6CyE7AEOqrP5qPLy0zHtvIwxoxMwLtMKDJE0_epAmQ,844 +torch/include/ATen/ops/sinc_ops.h,sha256=cREVeGspVDvP2pEingUp_uKwnAtCJVCn1_2spDvEYz4,2282 +torch/include/ATen/ops/sinh.h,sha256=JaBiBLWfTNW9ymS_YhLn2otw8DZziUkmqFnRrD37we8,1397 +torch/include/ATen/ops/sinh_compositeexplicitautogradnonfunctional_dispatch.h,sha256=F2lmt1N9UdgHiJ9g3CCQL1rvCV7w2hawN3ZijklOaIA,1091 +torch/include/ATen/ops/sinh_cpu_dispatch.h,sha256=Vc8OM0gMxhCOnPLJ_BiScfIoR6bZgWWOddo9DkIbTo0,1174 +torch/include/ATen/ops/sinh_cuda_dispatch.h,sha256=gnXdbzuNB30NiU22rTVMjRcJeY4c68RG63NGtAn0KN0,1176 +torch/include/ATen/ops/sinh_meta.h,sha256=EdjpUvQdtsjsPQb-efPAC14oL8BiOGdw8YcQXhkd0hw,819 +torch/include/ATen/ops/sinh_meta_dispatch.h,sha256=V4YQ_gr9S2v-SuwDe6nuvSP92YVhLz6VztHoV9sanqo,1176 +torch/include/ATen/ops/sinh_native.h,sha256=GQnPzrnjsWmHDq7hh89T3jRaHzawpeDWqcCawXUddA0,1252 +torch/include/ATen/ops/sinh_ops.h,sha256=WlRPU9UJXG4pjuxCY9Ja4Dl5Cu9qC3GOWyryIlhp8KE,2282 +torch/include/ATen/ops/size.h,sha256=VYkVzP-wQGpe1B_40VDtkWRpudg1Jgcs1ZbrJe9_5Wo,1097 +torch/include/ATen/ops/size_compositeimplicitautograd_dispatch.h,sha256=bmRy-OVh4YR3bjBt0z7-Oe0GfDwEaW2SppJoKQTmCj0,1092 +torch/include/ATen/ops/size_native.h,sha256=nm8d1ID3ZrB0ljZVMFV-k5hXlz7DjyE0iVAejedca_o,804 +torch/include/ATen/ops/size_ops.h,sha256=QLx9pZDU7hUG4-XLDrcHsNY9Bb_kTRiJuSt3xXcMYcU,1813 +torch/include/ATen/ops/slice.h,sha256=X3WJmttO7XXf7ua4AaCgRSE8FIl_GMA5ptFR8RLvvPk,2492 +torch/include/ATen/ops/slice_backward.h,sha256=GpdqDAgKSp54FTTBi8HRiuFvGGwSVdv2CnqV7JEoTgE,5709 +torch/include/ATen/ops/slice_backward_compositeexplicitautograd_dispatch.h,sha256=RpGYSUzCKh07LstQtjoGxfxNLyv3C0NkWdGK0sgMScg,2049 +torch/include/ATen/ops/slice_backward_native.h,sha256=KY3r9Z7wjQxxIus--_TT479reZ-aaZS38G1WWZb7dC8,1029 +torch/include/ATen/ops/slice_backward_ops.h,sha256=QbhELvlTKKXG3df5jTKW3XZSezthuX-elMDq4inpOc4,2569 +torch/include/ATen/ops/slice_compositeexplicitautograd_dispatch.h,sha256=8jjPzsvgjt_oHadl1LbNE6vI478sy7PjMCBbK-E8FLg,1335 +torch/include/ATen/ops/slice_copy.h,sha256=nxFp0KSYh9Ka8uzX0UaLnHo1hENaou-4CzJJ1lCDeRc,6325 +torch/include/ATen/ops/slice_copy_compositeexplicitautograd_dispatch.h,sha256=0gYggcdX4SCLlWeTx-GaHWvnz-HaqsnTQVmig8Ix2zg,1756 +torch/include/ATen/ops/slice_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=94wkloCmIt-De3qh4ldU2YG8BhblhwTfM1Xz3aF0wkI,1371 +torch/include/ATen/ops/slice_copy_native.h,sha256=tgvL13FGp9soWzh-Kw9ovvaeb00rjXal309VeJs7tnU,1080 +torch/include/ATen/ops/slice_copy_ops.h,sha256=jXcClfPIo6i1EumEyqFpeD1_CvBE1nbL78bHJ4gZR9c,2562 +torch/include/ATen/ops/slice_inverse.h,sha256=gN3zDtQEohd7f_qVDiS_Q0imhOJYOYmFFRTNKZFuIPE,2678 +torch/include/ATen/ops/slice_inverse_compositeexplicitautograd_dispatch.h,sha256=1psWKg-U8ecGPszm2urUWasfj88GHc5jpwtYjjdQggs,1399 +torch/include/ATen/ops/slice_inverse_native.h,sha256=EpyMQfrnx3hPvj7qnVLdhKOjK5aimsIHZLrAbuBrqGE,903 +torch/include/ATen/ops/slice_inverse_ops.h,sha256=DHAPiBUvL8T5jB16VSVXe8U86CSXqVptykL3X9SjxZ8,1666 +torch/include/ATen/ops/slice_native.h,sha256=qnDEVIbZH9TXgYUH9lnqJwgdnr0F6vgvFQlyTQfBEgY,852 +torch/include/ATen/ops/slice_ops.h,sha256=RAN3IqSjVMNBRRCEqNGfBccOp6CN0bLJXQH24k8UQCI,1582 +torch/include/ATen/ops/slice_scatter.h,sha256=SlpeXRVfbj2xgUVW_9YwvvyTkD-UIBOckl9C5rg0c8o,6712 +torch/include/ATen/ops/slice_scatter_compositeexplicitautograd_dispatch.h,sha256=OvWSqk5oo8H-rj4RgTKLXsN-kflm4FmUOp2c-XKjv74,1864 +torch/include/ATen/ops/slice_scatter_compositeexplicitautogradnonfunctional_dispatch.h,sha256=aUOOtrX4K7KQa4C4b01CEPu_-CIusJMSqO2wHCapDoU,1425 +torch/include/ATen/ops/slice_scatter_native.h,sha256=JSEqPhVSsF1NPe-53VOzh7yXYaXZtitplPd5TZUN42U,1101 +torch/include/ATen/ops/slice_scatter_ops.h,sha256=zW4jt_cZAGF2CQBZvBXnBoPOq-AK9P6kJxxG-yv3S7Q,2699 +torch/include/ATen/ops/slogdet.h,sha256=u9oduL3X6cpCcMxZalrbv2_S0_58oasXE8uxJaCxG0w,1573 +torch/include/ATen/ops/slogdet_compositeimplicitautograd_dispatch.h,sha256=Kb4VUK4gDwVMEoix36rvOEYSyt6dXkuoZ6IfcAYB_Ws,1307 +torch/include/ATen/ops/slogdet_native.h,sha256=7Y9Izwd6biFtIvvxDcXNr2TrkaFRM4fjqtnHxKBgxCU,887 +torch/include/ATen/ops/slogdet_ops.h,sha256=pKpMExaaBcY03iw0BQtx3DOWh8UgQp0HoAFKvJf1an0,2104 +torch/include/ATen/ops/slow_conv3d.h,sha256=OZoNbrkN_gL182n9MyhFFMuv3t9GXx2ZNju9UsdcDG4,6874 +torch/include/ATen/ops/slow_conv3d_compositeimplicitautograd_dispatch.h,sha256=H0Z08mDe2Jkgwn4PnaQ1ie-Z2wciDc6ECK0BvGPfQ40,2435 +torch/include/ATen/ops/slow_conv3d_forward.h,sha256=VrQQ6n4Hq3aCh4ZpgLuQZZNl5MfswzX_tNOFJbTyhxk,7004 +torch/include/ATen/ops/slow_conv3d_forward_cpu_dispatch.h,sha256=gZqnu5dFJXoy4EUBipdZMjMpDGUoVrXTh-8mz5JJ_Lk,2371 +torch/include/ATen/ops/slow_conv3d_forward_native.h,sha256=FNTkZWQwM16huCCTrtDaKmQIn93nEUGG1GKyFMti5rw,1139 +torch/include/ATen/ops/slow_conv3d_forward_ops.h,sha256=U928nbkJMrwniysQqsBIM2gjKbPHv0ipWsk0QJHAr3g,2951 +torch/include/ATen/ops/slow_conv3d_native.h,sha256=fSxIZv3A-zCossM_6m0It9k37avz6ND-1wzLuE2VzcM,1119 +torch/include/ATen/ops/slow_conv3d_ops.h,sha256=Tc10lplvojHfysDv67205tskm9LJVDGiODuEZ0f_ZGs,2903 +torch/include/ATen/ops/slow_conv_dilated2d.h,sha256=2xGzI6_LY_sG5g61-zG03h2dijWv_BmihzFVegVyzos,7934 +torch/include/ATen/ops/slow_conv_dilated2d_compositeexplicitautograd_dispatch.h,sha256=eW0V1iuUNwGhDlO3CJ-vEP81hkWZlWLaGHBDGtVdd8M,2125 +torch/include/ATen/ops/slow_conv_dilated2d_cpu_dispatch.h,sha256=bcu8OP8ZxzG99WtcymLHOMz-BLmG3t3SEZCT85hqJq0,1480 +torch/include/ATen/ops/slow_conv_dilated2d_cuda_dispatch.h,sha256=-fU1Pd3GUbBQTi4Ol1yn5is461DcbYj4ugrSpche0AA,1482 +torch/include/ATen/ops/slow_conv_dilated2d_native.h,sha256=vhFalh5Lb62KV2v5xPOkttPkp9h-MqqOMeTyxL1NdFM,1470 +torch/include/ATen/ops/slow_conv_dilated2d_ops.h,sha256=folH8I1PfOrJbYO_R0tz_q6IsQAWUYOwKcOrA6EyQJo,3157 +torch/include/ATen/ops/slow_conv_dilated3d.h,sha256=vEsBA0Fg_xnOK-illpUiGIZwb2cNUh4fYVhpPEaMvt8,7934 +torch/include/ATen/ops/slow_conv_dilated3d_compositeexplicitautograd_dispatch.h,sha256=kwYOH6GDrl-sc_vqKmdqhTxN5qV7qygO_JvDZCUt2K4,2125 +torch/include/ATen/ops/slow_conv_dilated3d_cpu_dispatch.h,sha256=1bp9ypNUL-Lz0SvZOW6TEaWN7__iEoRVXyu4sK3srZg,1480 +torch/include/ATen/ops/slow_conv_dilated3d_cuda_dispatch.h,sha256=uyv01ofzOANsiQiaQ1rc6vmO56KET_jQ-sLtOlXAMCU,1482 +torch/include/ATen/ops/slow_conv_dilated3d_native.h,sha256=NrkBD1o6Ga4YaYVxz8nOuTN8lbj7ovR3YCfD-cO8S64,1470 +torch/include/ATen/ops/slow_conv_dilated3d_ops.h,sha256=jd4tLqH0kfHRC_6lNtyp2P8dQ_clYhSAD1OjCnwlqPQ,3157 +torch/include/ATen/ops/slow_conv_transpose2d.h,sha256=SVs973WWW6Q-h2bZNlkdUOmEgSn-Fsv8-gHN_fWLaxI,8988 +torch/include/ATen/ops/slow_conv_transpose2d_compositeexplicitautogradnonfunctional_dispatch.h,sha256=J1hOvGYXsLzKzDdnzdoP8YKMeKcn-N6XPDTGVCAsYDw,1639 +torch/include/ATen/ops/slow_conv_transpose2d_cpu_dispatch.h,sha256=K9yn_pb8AyIiSMAsc8BL1HaH9-ykjApc-tYndujko9M,2891 +torch/include/ATen/ops/slow_conv_transpose2d_cuda_dispatch.h,sha256=eVWBLJgSkrSMgEhXPhPxV8pfQO3buuS9gbun4_bt4RY,2893 +torch/include/ATen/ops/slow_conv_transpose2d_meta.h,sha256=iX0YK83sD5p9ellF_a3jB8cJUGmGNsIlmh9puoHznhw,1057 +torch/include/ATen/ops/slow_conv_transpose2d_meta_dispatch.h,sha256=TRonKVL6lXb8gM9sGg4hgkkqJC9lPlhL6MdMq6EMmIw,2893 +torch/include/ATen/ops/slow_conv_transpose2d_native.h,sha256=7rBuN9bebLF8-WCXYJYzx5ftVENwpgA05BrBxCNtlBc,1531 +torch/include/ATen/ops/slow_conv_transpose2d_ops.h,sha256=VIFrXgHwfughWbtaRcsYsLTU2F5j0nOU5CYYjVN1zTs,3411 +torch/include/ATen/ops/slow_conv_transpose3d.h,sha256=RXYwCSccUHOx7McihEqSi2p8uaJbuLWf0LRqpPGhIDI,8988 +torch/include/ATen/ops/slow_conv_transpose3d_cpu_dispatch.h,sha256=Px24CcNxo_HBbsmLK7GQsgfRPmchN2F8oGKjq7-gzhU,2891 +torch/include/ATen/ops/slow_conv_transpose3d_cuda_dispatch.h,sha256=5ynb_SdN9KQjAekTz_nkNiCUuIO0A8W4b_xkw7yXti8,2893 +torch/include/ATen/ops/slow_conv_transpose3d_native.h,sha256=z-T_X56A0kJb-uXuIhqLQcjCzCO0ppUz2Devwgty960,1860 +torch/include/ATen/ops/slow_conv_transpose3d_ops.h,sha256=sZK3QG9km8Cst30-IhMH_yqG4X8M5z02zNlRkQZVD04,3411 +torch/include/ATen/ops/smm.h,sha256=Dui1ezudAT1W44Zs94M6FR8WQSsUywfTHoB-SM12Ngs,923 +torch/include/ATen/ops/smm_compositeimplicitautograd_dispatch.h,sha256=XlRdtT8yCOJSm4CyMIop1P7VgaaO9r1CDwgJRQklqx0,1040 +torch/include/ATen/ops/smm_native.h,sha256=tDrFVit4KTnZYr635CttAd2qWgDT7xmNKTgcJCJRcHU,752 +torch/include/ATen/ops/smm_ops.h,sha256=14swLIWERBM6NAMQwdFomyahG24FM-9Gq8cILWRn6e4,1285 +torch/include/ATen/ops/smooth_l1_loss.h,sha256=JOGdfN3B-1z2e_8zEfZZeKjcUiiPr1b2ZNgSAqpWq-w,1814 +torch/include/ATen/ops/smooth_l1_loss_backward.h,sha256=eufX-PHT1sCRCKTunVX1ue7GPdtg5yx2DLsTulUwQNQ,2094 +torch/include/ATen/ops/smooth_l1_loss_backward_compositeexplicitautograd_dispatch.h,sha256=y9A5ksE8lf08yZymzdncwLCvf7vFh8fyIXH2FRKt2kw,1126 +torch/include/ATen/ops/smooth_l1_loss_backward_cpu_dispatch.h,sha256=a0e_9YvepTOINLcAtsok59lpIBJS-c0Z_XWwbKIPNpc,1307 +torch/include/ATen/ops/smooth_l1_loss_backward_cuda_dispatch.h,sha256=JSOTJUpMwZra6xCRFUJjTONZ4hwXcvTr5HNPliNh2yQ,1309 +torch/include/ATen/ops/smooth_l1_loss_backward_native.h,sha256=r3GY4U4CwQSermAUBn6RaYMmpaGvjpUfwy_31syy_9Y,1031 +torch/include/ATen/ops/smooth_l1_loss_backward_ops.h,sha256=eoLzKkTLqzw9IZdH0xcx5lVzFOPSzF-Dy1JRzl35mnY,2547 +torch/include/ATen/ops/smooth_l1_loss_compositeexplicitautogradnonfunctional_dispatch.h,sha256=-L04JUEMe6wsMHRv241ZJhaXwtaqBIr0Co-r5y8QsnY,1135 +torch/include/ATen/ops/smooth_l1_loss_cpu_dispatch.h,sha256=3c3QzHrOx9JvJJLsYRfqDIHG8i44gob57PvwepgKd1Y,1380 +torch/include/ATen/ops/smooth_l1_loss_cuda_dispatch.h,sha256=yI-Nd_JKwbQlyDZ51YOwKks64pnWxpakipmbuikXr68,1382 +torch/include/ATen/ops/smooth_l1_loss_meta.h,sha256=C6n1qKgEkn6cgUDfPk-_Erz0X3SQ9PcPtCksogfkPnA,888 +torch/include/ATen/ops/smooth_l1_loss_meta_dispatch.h,sha256=K8Q-lz04zW-1-eaKDvPq09NEZ4vnf4rowvJUZRvQWD4,1382 +torch/include/ATen/ops/smooth_l1_loss_native.h,sha256=adYdv1CprSjGEQ1fx48TPw7lqeMefBapxcWkG5rJOqc,933 +torch/include/ATen/ops/smooth_l1_loss_ops.h,sha256=qhrgdXZ9O0BicOx_VB_s3Q7thBMU_6s-0e40tKz5rXk,2261 +torch/include/ATen/ops/soft_margin_loss.h,sha256=CZAe8fC7c_mJnnGzXWvwqbbOmOWpz0p01-t4UUJQ1Kk,1721 +torch/include/ATen/ops/soft_margin_loss_backward.h,sha256=eeA8hZ0h3t54Gxp_VmLAkDDflVSJwl47vYApIF-idEc,2021 +torch/include/ATen/ops/soft_margin_loss_backward_compositeexplicitautograd_dispatch.h,sha256=3OaYNQflmlW96u_ZciQxXY8BXkYwXI3e--1eog6m1bo,1480 +torch/include/ATen/ops/soft_margin_loss_backward_native.h,sha256=SxPOek224M2BJLXoHNSxuPett-ASRlUIXKQ2taczb0k,1009 +torch/include/ATen/ops/soft_margin_loss_backward_ops.h,sha256=hyUZAyh77FP-AFp_8-I0id_zBWcZgZ4YrkvdPUCGhW8,2467 +torch/include/ATen/ops/soft_margin_loss_compositeexplicitautograd_dispatch.h,sha256=Js7yrTmAHxFSFCZxPyuoneQl9P3WJ8fomyCd_vJT86c,1383 +torch/include/ATen/ops/soft_margin_loss_native.h,sha256=iCUdsYRPTNMxsHC75KKEEMqTPIuwssgtzBTVlsWdQo0,940 +torch/include/ATen/ops/soft_margin_loss_ops.h,sha256=mDRg8Vc3Ic01gguVIEqVOX56VjCvY6DxMEz3t87i3-M,2173 +torch/include/ATen/ops/softmax.h,sha256=iNGYNDc8FbuD5VuP2ddBwwiiYBy1Xp0f8verRnkJgX0,1913 +torch/include/ATen/ops/softmax_compositeexplicitautograd_dispatch.h,sha256=46O1w5mWQI4WfjyXW_LaSSslPtX5rSHGqLpCKv-GaiU,1242 +torch/include/ATen/ops/softmax_compositeimplicitautograd_dispatch.h,sha256=CfuMA4IKcrU3-5stoOf43c58a_C5FHYz-cRhLWK_dI8,1212 +torch/include/ATen/ops/softmax_native.h,sha256=eyNTsogd-qWw_ZcAmFUxsI22Yi4ow2-BQ1MnKu-f2eg,1055 +torch/include/ATen/ops/softmax_ops.h,sha256=sRuPE3LIlxD0Owgn50vsqMjP1-LgLRTaSEvq3a0Sm48,2912 +torch/include/ATen/ops/softplus.h,sha256=WQIQXvBbDhRlo4u65s-jYwyECshKvU81Fml1iQiaJEY,1635 +torch/include/ATen/ops/softplus_backward.h,sha256=9As8u9ZqK__KD8_pIVdcex9fQBS1Zi7JqEoVOex6W7k,1965 +torch/include/ATen/ops/softplus_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=LQ8WcPOKD4cD44gqWEFcje3oXCIECs4KFxcBTiShShE,1142 +torch/include/ATen/ops/softplus_backward_cpu_dispatch.h,sha256=Zt4pnDVgwBxakHTojjHGKjL4grPdqwffo6IqcklUfhU,1439 +torch/include/ATen/ops/softplus_backward_cuda_dispatch.h,sha256=U9oL4QJOGoGgLIOdyTtHfhsufaYSwZiYuoyVYZa5548,1441 +torch/include/ATen/ops/softplus_backward_meta.h,sha256=6PbJJT2bgTZiBQto4lXwCs_MUwGsJGRqLgH7Z5e-Ef4,919 +torch/include/ATen/ops/softplus_backward_meta_dispatch.h,sha256=ux1k-QqXJKovpHEt6a-BPrwubeHmgw9ed5GBNh1cIbU,1441 +torch/include/ATen/ops/softplus_backward_native.h,sha256=k_o_c8uao-4x1zfiQfuryDAhD905XQa9hpiN7YkpRE4,977 +torch/include/ATen/ops/softplus_backward_ops.h,sha256=Zl7idp0GUkxgm3WMX_xiWX1YTgoO7FFn9xjb_SXbgPI,2479 +torch/include/ATen/ops/softplus_compositeexplicitautogradnonfunctional_dispatch.h,sha256=9mDOyaBcDTyZfiemmw16ypp4H00RgZGGJv1juV98F3k,1106 +torch/include/ATen/ops/softplus_cpu_dispatch.h,sha256=FwPzQNvjcJx-PETQgnAW8Zml0UBv0bh46oyRgD2q6w4,1312 +torch/include/ATen/ops/softplus_cuda_dispatch.h,sha256=Q7fMWJhIUxPDapjCZ3CuNh2nnwkYChGboYY-Xcz4p_4,1314 +torch/include/ATen/ops/softplus_meta.h,sha256=jbv4pH2VEBB6pAPungWbj6b55x-_XMIu2caz8fR1jGE,878 +torch/include/ATen/ops/softplus_meta_dispatch.h,sha256=yivAyKcxg0IEvF9y6JhdhvN17dzUEdVacrzLhThaexs,1314 +torch/include/ATen/ops/softplus_native.h,sha256=xfZVTk3RXxANJJhqrrApwtt9rd1OKkVQIvI6kS786ms,911 +torch/include/ATen/ops/softplus_ops.h,sha256=qMnql2vSo5vo9PFFEokiHdk1ldro-eWTeFMZ3119bIQ,2185 +torch/include/ATen/ops/softshrink.h,sha256=C9bDTHTegZaDVevI-vAfwJ_TLYGBHvIt7i_kRymLeXA,1482 +torch/include/ATen/ops/softshrink_backward.h,sha256=5GRklJt08Migh6qcpLSbNUqoO54fvnkK3remBjvZtUY,1817 +torch/include/ATen/ops/softshrink_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=bqsdxPOTcEVD4175ZG5qW9VCt6JC15X-dDcH-Ca8Oog,1115 +torch/include/ATen/ops/softshrink_backward_cpu_dispatch.h,sha256=gi9MA86VSsCuFJFMYi4eiwnAOT_n4xoXKx7Mw8y9Upw,1358 +torch/include/ATen/ops/softshrink_backward_cuda_dispatch.h,sha256=nFUNjr5hu2C5ShxXYseOJrLMCICzVr1SCaoRhUguPLE,1360 +torch/include/ATen/ops/softshrink_backward_meta.h,sha256=8EgIn4GdwK7CVVhBiqDm6NAp8qIfljHPiW-TIdk2MuU,892 +torch/include/ATen/ops/softshrink_backward_meta_dispatch.h,sha256=JrsiIYyR5mHtn8OvF5-qXRMocv6OCrDNi99yj_Jo1GE,1360 +torch/include/ATen/ops/softshrink_backward_native.h,sha256=E4MDvgfsjcwcMibfyxvQNiAvXuvp0FYl31KszEae6v4,954 +torch/include/ATen/ops/softshrink_backward_ops.h,sha256=SFQ7HDNOLe60i3gZneAF6nh74tfqwFPr4jDqOYuNINQ,2301 +torch/include/ATen/ops/softshrink_compositeexplicitautogradnonfunctional_dispatch.h,sha256=iBM_HHMHQiPW4p3oEtXXaPpceftMHk7vjBrkfD46DM0,1078 +torch/include/ATen/ops/softshrink_cpu_dispatch.h,sha256=DoVo-tzk7JlQsifxjhiOkF901xBtikSoibEgoz2KA7w,1229 +torch/include/ATen/ops/softshrink_cuda_dispatch.h,sha256=P9IX9CrgoMv1m0nSYl8ACTyjF8OoRbtE2qYxLBa2k68,1231 +torch/include/ATen/ops/softshrink_meta.h,sha256=AEGQC0SvrnRCD5E_TFvQsWbU3t0tVBDZzkprl-tjReQ,851 +torch/include/ATen/ops/softshrink_meta_dispatch.h,sha256=tnlenm1In7uWQtjMZvbBOd77ur7Xrf10-FR7163Z7VE,1231 +torch/include/ATen/ops/softshrink_native.h,sha256=2pANYqaGxU4zr6TKP6YcbQrcnr7BtC6qUey3_wFiAck,888 +torch/include/ATen/ops/softshrink_ops.h,sha256=91weszDfgIxUG3wn70b48P4FKnVtx54vD8QsCbKPN4U,2005 +torch/include/ATen/ops/sort.h,sha256=ESA8JESHU_BCLflxZ0MtDH7I3yq6IbJqfjkx6uHzd00,5530 +torch/include/ATen/ops/sort_compositeexplicitautograd_dispatch.h,sha256=8Xx7fUNc--WuE4piimGTB331SOZTOR7vGiAvlkajakA,1406 +torch/include/ATen/ops/sort_compositeexplicitautogradnonfunctional_dispatch.h,sha256=ivpaf11vy5Bf1NoFrBeci8DW0H3lsvF6UFzuiIV3Nn4,1136 +torch/include/ATen/ops/sort_compositeimplicitautograd_dispatch.h,sha256=31H-pvXwx19p3b7pxU6B0DC6h9b1O42ja9Injltfyu8,1950 +torch/include/ATen/ops/sort_cpu_dispatch.h,sha256=rF9nyrcKpw0PPWumEMFTqc35NwaWJghNK4-9b4uKXDI,1452 +torch/include/ATen/ops/sort_cuda_dispatch.h,sha256=u9l87r60ejdIphyGWwXgVvoNZyRAEnAfthBq475wOlE,1454 +torch/include/ATen/ops/sort_meta.h,sha256=2Il2d2Mj1wVlJaQzGfcvjzYRO6pI5IvLkMeE8noY6KU,886 +torch/include/ATen/ops/sort_meta_dispatch.h,sha256=d6jio7spm_vOSB4nIvBjN71NXoN1moaLEiLU4vRmAjc,1454 +torch/include/ATen/ops/sort_native.h,sha256=4uWKXRcWDOs0sI36fqS70tAghg2iWU1lcvZvfvFSyg4,2008 +torch/include/ATen/ops/sort_ops.h,sha256=aGbkEvPafv6mwviIEKxWSJ9LSt-s__m4Y3F2QpY0ZgQ,7750 +torch/include/ATen/ops/sparse_bsc_tensor.h,sha256=Fq0Q5dPjRDVWVUvh2JjgvfUOzS9r6NUiUBD4Pq6V40A,3247 +torch/include/ATen/ops/sparse_bsc_tensor_compositeimplicitautograd_dispatch.h,sha256=e8f6GdRY7Oh4PQ-v2Fe7rJuGxmMZz8zZTrRQBv0WnTw,1880 +torch/include/ATen/ops/sparse_bsc_tensor_native.h,sha256=IsYVUPPf-2MDqOP7jrFI7Tmtawr0XV1GykGWtXZChcU,1276 +torch/include/ATen/ops/sparse_bsc_tensor_ops.h,sha256=VfWF4b2sIJRnw_UPjGs0d5QGCA_aNu3RGneTgjOG1mg,3381 +torch/include/ATen/ops/sparse_bsr_tensor.h,sha256=1vPZQdI5qudigZklILkvKGty_PgtvuxMQmpv56cxAhk,3247 +torch/include/ATen/ops/sparse_bsr_tensor_compositeimplicitautograd_dispatch.h,sha256=5fTZhnMAAz60Ih0Lna0iVcZ4QzjB6Gb81YQ-ALy_QTc,1880 +torch/include/ATen/ops/sparse_bsr_tensor_native.h,sha256=EhqWdef8wDUPF-XP9C-Q2Cuybyh89tSTJiGUeUezZmc,1276 +torch/include/ATen/ops/sparse_bsr_tensor_ops.h,sha256=hoM9Bic1cevjUsERjCabCvAAxTHf2JZwU5qnSL_rxQg,3381 +torch/include/ATen/ops/sparse_compressed_tensor.h,sha256=5QTL5V4WctniLTXYBiw-gtQJV8qRgLCYPfF2eez7Z0A,7224 +torch/include/ATen/ops/sparse_compressed_tensor_compositeexplicitautograd_dispatch.h,sha256=48KUixU8BXcDw2mAYtabEbDusE63-09-OBf2SnmEOtw,2472 +torch/include/ATen/ops/sparse_compressed_tensor_native.h,sha256=TEtoaO_V6UoMuNuKW3Qb-bdKdI_4EpEGaauFF8sWGu4,1306 +torch/include/ATen/ops/sparse_compressed_tensor_ops.h,sha256=6vpQ90aBC29ZtTdpBVAzE1mMQmqYyy19tPKGtYZRQWU,3498 +torch/include/ATen/ops/sparse_coo_tensor.h,sha256=cjDkL0aEKrNzzBd_KzXMVlBH3XS2GryDR85LLUNdxrQ,4535 +torch/include/ATen/ops/sparse_coo_tensor_compositeexplicitautograd_dispatch.h,sha256=FlSOVJCBBrWtjtlxhjwWQYbTN5VkmYKjoqYzaChmbHs,1433 +torch/include/ATen/ops/sparse_coo_tensor_compositeimplicitautograd_dispatch.h,sha256=cCCF-yLpuwa-V8dwSilqE_TjvthfAtcC1rwkBmIcH9M,1912 +torch/include/ATen/ops/sparse_coo_tensor_native.h,sha256=UXWH223UfzGtuJVVTOFYPCkWt8eYj9kIKV37jvBsvoQ,1614 +torch/include/ATen/ops/sparse_coo_tensor_ops.h,sha256=XpFMmYyR4qvIVh63VFSf7zVvpCfUe2DZTqlRx9VzMCY,5001 +torch/include/ATen/ops/sparse_csc_tensor.h,sha256=f3_js_8uoVbtDaxRtTzPWSLRzpMgpzjeENPpS_uvUcI,3247 +torch/include/ATen/ops/sparse_csc_tensor_compositeimplicitautograd_dispatch.h,sha256=j6KpXBjMBO4Upp7j9Z3JeAHOEGBnoG_6jvUF7a2_FpI,1880 +torch/include/ATen/ops/sparse_csc_tensor_native.h,sha256=H_0c5twzqVfwswcBVgQJ_NKggrhehFm_FOKkEyucChw,1276 +torch/include/ATen/ops/sparse_csc_tensor_ops.h,sha256=yM2g-NHHkMkebFXxTv43mfZ4HiNGkrW8CXaXRLUyHD8,3381 +torch/include/ATen/ops/sparse_csr_tensor.h,sha256=-Yh3gwqcjTcQVTlvwFafYcrE8GfVrWo3auTSQ2eRujk,3247 +torch/include/ATen/ops/sparse_csr_tensor_compositeimplicitautograd_dispatch.h,sha256=3CxhedXXEzGJF8ZTVxqwfFABmmsHea_h2ej1PqIh8xo,1880 +torch/include/ATen/ops/sparse_csr_tensor_native.h,sha256=P8G6aSqmi6fN-HZypmvazbyQn7_6VJXEDhAiFd3pH2s,1276 +torch/include/ATen/ops/sparse_csr_tensor_ops.h,sha256=ikJq-toeMTKrP0Yk9FVsKYCSSUSST4_TKueeP5FwosU,3381 +torch/include/ATen/ops/sparse_dim.h,sha256=GUvojgxOi9n7IQ8Wi7UkGt6-Vy3q7VZGQ1Gt3UmDM9k,761 +torch/include/ATen/ops/sparse_dim_compositeexplicitautograd_dispatch.h,sha256=iH0LCbBzWZb2tkGAz38GnpTgyWHNynjM5ad804GB8OU,1019 +torch/include/ATen/ops/sparse_dim_native.h,sha256=1Ht7WFWJlQouChzvR-tpHdYwpSrT6mm3SgYHRDLil-4,867 +torch/include/ATen/ops/sparse_dim_ops.h,sha256=gw79EMAX-HUG6Uv6NJqoZlRe8L6fdcc1O8CfF9EbWOY,1211 +torch/include/ATen/ops/sparse_mask.h,sha256=jZaxKGZqNzClx9hM1bkoG2s5RrBdJQhoKxbwYE2YUoQ,1269 +torch/include/ATen/ops/sparse_mask_compositeexplicitautograd_dispatch.h,sha256=55Y4UopDswrn4kWu6-2pASWEj-gumemWVMbGRTn7ekI,1181 +torch/include/ATen/ops/sparse_mask_native.h,sha256=eWPWLddFWPP4iE4hVzAH7UdIsjfN9sn2iPTCmR06Gk8,970 +torch/include/ATen/ops/sparse_mask_ops.h,sha256=Z9MV78AADtPk8-KYNxA7j0uotThmpnSg2VYzfjjpLbg,1997 +torch/include/ATen/ops/sparse_resize.h,sha256=bz1iI69PZNC89k5Ul7BwyLh8LRB1kczqG-9momSDgHI,1774 +torch/include/ATen/ops/sparse_resize_and_clear.h,sha256=f0Vy0hPeSo-NqjQjLoZL9bvwwqQn7BmM7CSKeA8oytw,1874 +torch/include/ATen/ops/sparse_resize_and_clear_compositeexplicitautograd_dispatch.h,sha256=WEMQ-GAMCq6Q1sR0xufvpL6rgD8eV7s9sYlhQvS-pJQ,1433 +torch/include/ATen/ops/sparse_resize_and_clear_meta_dispatch.h,sha256=ikbGTRc-SyOBmlYHFtbGeq8YcBkErfoxVwuVyG1sYks,1063 +torch/include/ATen/ops/sparse_resize_and_clear_native.h,sha256=1mGBXIXhnLk2gFwwT079F1Kjy7WUQQK4XOhwfTBbbXU,1117 +torch/include/ATen/ops/sparse_resize_and_clear_ops.h,sha256=up0xhBcF7J0hiyXoqTw_81mp9rKG2UE0Zh4IwCzi8UI,3125 +torch/include/ATen/ops/sparse_resize_compositeexplicitautograd_dispatch.h,sha256=BuIKFbO0XExqms6fNDLhZEKw2pN6gY6yegkV6awfdRU,1403 +torch/include/ATen/ops/sparse_resize_meta_dispatch.h,sha256=l0OXu6u-LnLweEeVji8E6J0rT6spqX0VqB0q7_NuiTA,1053 +torch/include/ATen/ops/sparse_resize_native.h,sha256=T9U2eEtUQg1oyaezslYuG1gwPyCv7-0PJj4MA-tlYbU,1087 +torch/include/ATen/ops/sparse_resize_ops.h,sha256=brrwab60RKJet_ZWIioSgYtmiGS757zEgesQqBKYioo,3035 +torch/include/ATen/ops/sparse_sampled_addmm.h,sha256=QAR_bQg-IN3V7WiLaAh9spJZjWgkzjD8cU1kDpJ2rz0,1981 +torch/include/ATen/ops/sparse_sampled_addmm_native.h,sha256=OpOTKN_7ZhOm8ZVBPk7nE_THrb-Pip66TGwT0c6maAc,1470 +torch/include/ATen/ops/sparse_sampled_addmm_ops.h,sha256=8W-K5jXUeghvwqy-_fUhaK3qPFEH0EuCIYqPFgmyfsQ,2566 +torch/include/ATen/ops/special_airy_ai.h,sha256=MKkP6VJEU4iFHFjposTGGlKu7LCD8Np59-bskHFFwuI,1344 +torch/include/ATen/ops/special_airy_ai_compositeexplicitautogradnonfunctional_dispatch.h,sha256=-7G3ug6FYHXseEgf8P60d3r4hbqULhdh4fe5kh6lYLE,1050 +torch/include/ATen/ops/special_airy_ai_cpu_dispatch.h,sha256=sa-UrcPW1OkJNcpvsazihoJH0V57xypf-jBAi8SGrGI,1149 +torch/include/ATen/ops/special_airy_ai_cuda_dispatch.h,sha256=TD-g4V8Q8qdcZNo2rh1ehEB3QVA7HgAfNUQA5dpvFrc,1151 +torch/include/ATen/ops/special_airy_ai_meta.h,sha256=sUmRfedCbiCVHeuyAG18AVwK5OggeeGRzIXfkEmROCw,827 +torch/include/ATen/ops/special_airy_ai_meta_dispatch.h,sha256=pJnE5QeYLKSEOyHYHYrQ3AlEhzoO9Om_mICEKB3hqCI,1151 +torch/include/ATen/ops/special_airy_ai_native.h,sha256=AF6HaJucbem1_Ke-ltgZNAL0gmA_e9yEzjxsayHFyMs,874 +torch/include/ATen/ops/special_airy_ai_ops.h,sha256=10MxwI2KYSeBIaeSo0DD0UUu0bsBhls1b_cL_gdeOKg,1837 +torch/include/ATen/ops/special_bessel_j0.h,sha256=cY7uADPldNTI3uLCYE8C9orzXvuRiqfpZxm4K56uv9g,1391 +torch/include/ATen/ops/special_bessel_j0_compositeexplicitautogradnonfunctional_dispatch.h,sha256=HIJDQ_TVxHKQ-4GFnDPkMjR03LtzfXbQ3vZTZEqHD90,1055 +torch/include/ATen/ops/special_bessel_j0_cpu_dispatch.h,sha256=6qL6BLh_BRu1cV_OoG1a8P_651ruCAJj7NEwONhuX_k,1164 +torch/include/ATen/ops/special_bessel_j0_cuda_dispatch.h,sha256=IwGeBMGBpWVHg_lHt_Y6zhKw_3BaH6TQXtKCl8B_hnI,1166 +torch/include/ATen/ops/special_bessel_j0_meta.h,sha256=IbpcQ8vd1PvtJbeGDJAs9_CWYgrkJuunXdhiIXG9LVs,832 +torch/include/ATen/ops/special_bessel_j0_meta_dispatch.h,sha256=rMj_YaFJCeRaNFBG8eE095I_QfZYUicteaMwpNvLJqY,1166 +torch/include/ATen/ops/special_bessel_j0_native.h,sha256=_3lUH5OTltPTBmqaHfoRtgJyz6pcD0Cu1l4WzWW9DiY,883 +torch/include/ATen/ops/special_bessel_j0_ops.h,sha256=yCLyfSfnWVrkjXmm7JfPTjF8eQdusLXUIl_5MsiR01M,1867 +torch/include/ATen/ops/special_bessel_j1.h,sha256=nVrhWo9tZ2LeAQ70ffygC3chiz3W-UXGTMMt_DoL37s,1391 +torch/include/ATen/ops/special_bessel_j1_compositeexplicitautogradnonfunctional_dispatch.h,sha256=7MEMk4haPBys3RRxygKoxsZC8cpAamzNDkROlNjn3MY,1055 +torch/include/ATen/ops/special_bessel_j1_cpu_dispatch.h,sha256=8vQMh612vheyQP3rt9LC3hTFtieNPplBsvKhGEK_wTc,1164 +torch/include/ATen/ops/special_bessel_j1_cuda_dispatch.h,sha256=D6aWFlKew1y9-SbVKnfilVYe2G3bjlifKk1OQl-hTj0,1166 +torch/include/ATen/ops/special_bessel_j1_meta.h,sha256=KvBfYUmDK005GRvpqmvxXURg25y3TFjPsL1O3sOW894,832 +torch/include/ATen/ops/special_bessel_j1_meta_dispatch.h,sha256=w_PCyg1v9J6j4TiNLuGFSUZ51Vai8dIYlRM_jCkBvyQ,1166 +torch/include/ATen/ops/special_bessel_j1_native.h,sha256=siQYFLzHqHaKH2uYCuXPVf1v_pGHYJB_pibnqgR8lPU,883 +torch/include/ATen/ops/special_bessel_j1_ops.h,sha256=crKMbapmMiBb1-qmEoMuYYlJWmxPkRlNwsArYw70Bng,1867 +torch/include/ATen/ops/special_bessel_y0.h,sha256=SmTm_yx9QYAxjtq_4iczvFLGMEGUXI-O0FTgO42pUv8,1391 +torch/include/ATen/ops/special_bessel_y0_compositeexplicitautogradnonfunctional_dispatch.h,sha256=w35AhLsOmXvfkCebPmtHiiGOsUo-IhotKwYA-jxstKA,1055 +torch/include/ATen/ops/special_bessel_y0_cpu_dispatch.h,sha256=ickI7Kqy82X31ISx14wv2g9MP6ZGhmKL5a87Sm8QE18,1164 +torch/include/ATen/ops/special_bessel_y0_cuda_dispatch.h,sha256=q4SgZymb03Pd5ecz20hJO1bTDN5pEg3B3H08B3NzgEc,1166 +torch/include/ATen/ops/special_bessel_y0_meta.h,sha256=BSwyOGNAaXLVDiUv5LHFHTlB734hy1WPDzkwDAFIdyc,832 +torch/include/ATen/ops/special_bessel_y0_meta_dispatch.h,sha256=jqRF-zM8B4RiMIC1ODKcuA7QE4q5YBRLqRG5XEl61po,1166 +torch/include/ATen/ops/special_bessel_y0_native.h,sha256=gBxl6iFgYp6uj1RH5I3xaeYOoJAKoQqz5IIQpK3Egi8,883 +torch/include/ATen/ops/special_bessel_y0_ops.h,sha256=s66Fr0lhZ6CfE-Ka-ROmQ4qsfEKeop00ZEbDnMhcpcI,1867 +torch/include/ATen/ops/special_bessel_y1.h,sha256=0PBbb0eMuooE_M7YaOPuPBpeaAfd8vTQ3jRkZ7TCrJU,1391 +torch/include/ATen/ops/special_bessel_y1_compositeexplicitautogradnonfunctional_dispatch.h,sha256=AoWAHK0WCK7Ns3OcwF61dGjTBZU0xQbCfXn3sBshAVc,1055 +torch/include/ATen/ops/special_bessel_y1_cpu_dispatch.h,sha256=fP8NP8yaL3pO_-NRGNNm02yK5kSURwAwmeOooibzLXY,1164 +torch/include/ATen/ops/special_bessel_y1_cuda_dispatch.h,sha256=EmWRwwYmJISV9rO9JREOFdQpJKeTtLr66-2fn8jWsFw,1166 +torch/include/ATen/ops/special_bessel_y1_meta.h,sha256=RuyvQGHmMXkDaZlSXZIlAukCsFuePn5wL7YQWEeeSYE,832 +torch/include/ATen/ops/special_bessel_y1_meta_dispatch.h,sha256=2NTcNGJODqG0lUbSyyNqYZXtAvF7WjbPhTBMrb56yAg,1166 +torch/include/ATen/ops/special_bessel_y1_native.h,sha256=5xEs4HoS_dDjU-yHR63qKcaUAnd5mH9_HBQ0ZhrHCqI,883 +torch/include/ATen/ops/special_bessel_y1_ops.h,sha256=lDIiNDqfNjlVD24Gzytqzq6ks8RAam0oe2NR9L8Z1Lg,1867 +torch/include/ATen/ops/special_chebyshev_polynomial_t.h,sha256=iJGF4l99S8Urp06GTtce3lwSDZX8Jj18R08VXBWhpE0,3345 +torch/include/ATen/ops/special_chebyshev_polynomial_t_compositeexplicitautograd_dispatch.h,sha256=CMWRtks5CwTapR2nAyka1rrj-5s0-vrtfz4CdM0oABU,1644 +torch/include/ATen/ops/special_chebyshev_polynomial_t_compositeexplicitautogradnonfunctional_dispatch.h,sha256=Bmq0VrGdwio8dZGLdtByZcVDl2GNeSPz61p66vIp2tI,1087 +torch/include/ATen/ops/special_chebyshev_polynomial_t_cpu_dispatch.h,sha256=eo2T020-_H2Ek824jblyj4B57JqQJ_SzCWgz0UGPLiI,1260 +torch/include/ATen/ops/special_chebyshev_polynomial_t_cuda_dispatch.h,sha256=2n-MRqFfvjR4O4_Xor5KzvIszpJrgysdxkSOe3YlkD4,1262 +torch/include/ATen/ops/special_chebyshev_polynomial_t_meta.h,sha256=FPPWmsHFYQgDMM4fWpd-rFwPONlgVKW3uIZKV7WP75E,864 +torch/include/ATen/ops/special_chebyshev_polynomial_t_meta_dispatch.h,sha256=G8CpwZ9WH_CbQEgdNFyw_wmW4WtnlwkKCbfRA1tot7A,1262 +torch/include/ATen/ops/special_chebyshev_polynomial_t_native.h,sha256=kpgpZx6RkIf7cHkZ69SMkygKbb9mKEuMmqPnp_-h1MQ,1377 +torch/include/ATen/ops/special_chebyshev_polynomial_t_ops.h,sha256=spsBX-QUpZCMDuWGP20bprmbWsS5t3gHPcBscxUTR-4,4909 +torch/include/ATen/ops/special_chebyshev_polynomial_u.h,sha256=_LJaTeQhRUBaAoK9pNF7wns8rIitcn49PWqde4vIpdk,3345 +torch/include/ATen/ops/special_chebyshev_polynomial_u_compositeexplicitautograd_dispatch.h,sha256=KOHk9UHSNaQOOR4Ryzb2jixdl1mgICS6I89ekfAHxY0,1644 +torch/include/ATen/ops/special_chebyshev_polynomial_u_compositeexplicitautogradnonfunctional_dispatch.h,sha256=0BDs0Mm1RoqSSZldsN9P5Q7lIzfCDmK4KH7LY7ra8EU,1087 +torch/include/ATen/ops/special_chebyshev_polynomial_u_cpu_dispatch.h,sha256=chx-U_NRh_mloUaOW1qN9D4kXD0HTzYw-kdZzPlPyfM,1260 +torch/include/ATen/ops/special_chebyshev_polynomial_u_cuda_dispatch.h,sha256=0VSdEVxNAdk7HB-A714mozml-qtZ_51myydxTXudWVM,1262 +torch/include/ATen/ops/special_chebyshev_polynomial_u_meta.h,sha256=TGOqS3FKLG4Vif_r_D_w7c_8QtgB8o89zvxo6CPenbw,864 +torch/include/ATen/ops/special_chebyshev_polynomial_u_meta_dispatch.h,sha256=hCecgooNwQgrJp2YfibkeRYH7ING33ybLI1SLB0fOH8,1262 +torch/include/ATen/ops/special_chebyshev_polynomial_u_native.h,sha256=_LwdIr0IWI0KfEQB9wonDevxQbxXr6DRB8VFX_e-u0I,1377 +torch/include/ATen/ops/special_chebyshev_polynomial_u_ops.h,sha256=4DdlYHI2-DjgcE5K7KVvg1hYIxj6zi1IUrt_YaoayI4,4909 +torch/include/ATen/ops/special_chebyshev_polynomial_v.h,sha256=91vb59p9yLOKzhsukhKnkFhRk5Df5rtZL-6OvM6f0tE,3345 +torch/include/ATen/ops/special_chebyshev_polynomial_v_compositeexplicitautograd_dispatch.h,sha256=ttyA0gAEONgzWWs0F1AbImF290mwayU-5ieBoKnC0i0,1644 +torch/include/ATen/ops/special_chebyshev_polynomial_v_compositeexplicitautogradnonfunctional_dispatch.h,sha256=6G6Xa0eZKnfZy2FJNHdB6bpJFI9jC9WABYxTefl-liU,1087 +torch/include/ATen/ops/special_chebyshev_polynomial_v_cpu_dispatch.h,sha256=v2b9fl6B-VQIZVSjpwnZYnoYgvTF_-OL2NoQEtkQDv0,1260 +torch/include/ATen/ops/special_chebyshev_polynomial_v_cuda_dispatch.h,sha256=btPy-fatG8R6ybQEAU2uLerQjFtY8b9nh5LXKZ8IJlE,1262 +torch/include/ATen/ops/special_chebyshev_polynomial_v_meta.h,sha256=oi1pEYpPL_VpaTx0a1JlZh1UBcSn77DhOnEELJ0n5nM,864 +torch/include/ATen/ops/special_chebyshev_polynomial_v_meta_dispatch.h,sha256=h13wIrsCL_pt37YfBwq0jNyhDlNTbYLmR9Godh1vvf4,1262 +torch/include/ATen/ops/special_chebyshev_polynomial_v_native.h,sha256=mWSEAWqIHXOSg7nh-l53Xw8qwUlt5QDHzva4xQPhvCc,1377 +torch/include/ATen/ops/special_chebyshev_polynomial_v_ops.h,sha256=u0CYvF7eELw7eb5ANWnRe_JLacS_3OAOG404OOfUG0A,4909 +torch/include/ATen/ops/special_chebyshev_polynomial_w.h,sha256=vQ7ypfNy-yQhzbrpAGxSWA5-maTLR66RLjlvZ_rOyg0,3345 +torch/include/ATen/ops/special_chebyshev_polynomial_w_compositeexplicitautograd_dispatch.h,sha256=0s1D99p5-PVxVdU3DywLSnQt44wXisrYhCOYd4UaRTE,1644 +torch/include/ATen/ops/special_chebyshev_polynomial_w_compositeexplicitautogradnonfunctional_dispatch.h,sha256=NAzztlUcGLfdfVnN3Tbif9Pqz7EpBTrsJLzsLgzuF5s,1087 +torch/include/ATen/ops/special_chebyshev_polynomial_w_cpu_dispatch.h,sha256=sDHtOKJhoeC4ipgLe51V8YfeWL8bsWa3wrVLuST1uds,1260 +torch/include/ATen/ops/special_chebyshev_polynomial_w_cuda_dispatch.h,sha256=YaYUbG6Bn__zFCVC_1DciuyAcHf4qdkF9M68sPDhyTE,1262 +torch/include/ATen/ops/special_chebyshev_polynomial_w_meta.h,sha256=WO2H2QN4UVuYehuFEbAAt0fck2VV4KMu5smBmLhwW0E,864 +torch/include/ATen/ops/special_chebyshev_polynomial_w_meta_dispatch.h,sha256=fHuWQYnPFPp6P4HZgcbfURgYtIODBLoNKCFEzFF9nbQ,1262 +torch/include/ATen/ops/special_chebyshev_polynomial_w_native.h,sha256=ez7ESxhZfbbvubQmb1UQMdMblupq78iYn4O0_9SJu-M,1377 +torch/include/ATen/ops/special_chebyshev_polynomial_w_ops.h,sha256=HSdSOCjrJr5jHqJDeHGthKiiBna3lk5gid8rWLw27qc,4909 +torch/include/ATen/ops/special_digamma.h,sha256=9IJO14dA23fjx-JjlQWLEgAJy6LaYJJ7FQVU09QPg4A,1371 +torch/include/ATen/ops/special_digamma_compositeimplicitautograd_dispatch.h,sha256=4CuO5JDdCwqjq8xRfcNnpno08uyuoArqvShdeAOSklo,1202 +torch/include/ATen/ops/special_digamma_native.h,sha256=kgf2-xl0f0i_nbdlEU0iRKgwH-0l1HuGR330VIJBWso,826 +torch/include/ATen/ops/special_digamma_ops.h,sha256=ekbnyGkNy4pj9HO_wWzRx9Txp_BzZ_nzi_3y6mlq1S4,1855 +torch/include/ATen/ops/special_entr.h,sha256=RXPAAE9uYwxy-UJocNQCWLLc9atFtJVO3W2T9mf_3f4,1341 +torch/include/ATen/ops/special_entr_compositeexplicitautogradnonfunctional_dispatch.h,sha256=knUtBKaUL3jgFe8VKdhtqadvBESqolJ7cSWZYol8d10,1050 +torch/include/ATen/ops/special_entr_cpu_dispatch.h,sha256=bGXo7Ya-ymChtAEcH_Tep-GsGdxqgNS8YXv1AG0M94I,1149 +torch/include/ATen/ops/special_entr_cuda_dispatch.h,sha256=_AVglvrj-gf7TWtAWwVZsXBjxTArP1v158B2TZ4fMsk,1151 +torch/include/ATen/ops/special_entr_meta.h,sha256=wBqjCkTvuIB-TAqXalSb_2wGmTAEiXfrjI8xakvdFqc,827 +torch/include/ATen/ops/special_entr_meta_dispatch.h,sha256=_r-uhmQ4PRZTDPlkgszC90cFvjsPn7mGC_9lVPMClFs,1151 +torch/include/ATen/ops/special_entr_native.h,sha256=0HzQxu5DaiVcwGQcpdeags8RfvbnDsKWnicadCO_QVM,868 +torch/include/ATen/ops/special_entr_ops.h,sha256=PiVB22Vof6Vd70QSzSePmyCLWhysEKQU_tnMpaIkbvk,1837 +torch/include/ATen/ops/special_erf.h,sha256=6ahoHHfgVYsJP4ZGm63Ho0Os8up1znPnk2YpMGMFpuY,1331 +torch/include/ATen/ops/special_erf_compositeimplicitautograd_dispatch.h,sha256=h_bYrWWNMg7_241ad2NZb_y7Ln2TLL_f9zTFdsNUhUw,1190 +torch/include/ATen/ops/special_erf_native.h,sha256=Cjg0Tb1VfnDty0YBy9s7gw0jxq8DpXPqGyvW6EwPDuA,818 +torch/include/ATen/ops/special_erf_ops.h,sha256=hLz2KLgKijNjhSEws118zNS2YT3eqwwcWT4ubnOrxgk,1831 +torch/include/ATen/ops/special_erfc.h,sha256=MVlB88tp5SSSttvm5TQKm3a8rn5k3WGXLUt1pnrlbnI,1341 +torch/include/ATen/ops/special_erfc_compositeimplicitautograd_dispatch.h,sha256=37Lk32_Q6tBZ8ZPxUGk3dO4cV8Ys2gIxOeTgYdKYcYA,1193 +torch/include/ATen/ops/special_erfc_native.h,sha256=NFP0XORc10VRACdJMgXm6bVYPgngrqHjvzO8kUcKiu0,820 +torch/include/ATen/ops/special_erfc_ops.h,sha256=PZKxoYNF1Wv1_vo2LRTJOL7SNYGiNPXQo25tUHsDlBo,1837 +torch/include/ATen/ops/special_erfcx.h,sha256=45fWlZW2faNHPKXRAWwpQ0Ur77sY45NyYC1ul6tEt7w,1351 +torch/include/ATen/ops/special_erfcx_compositeexplicitautogradnonfunctional_dispatch.h,sha256=Yv9ss35FvKIafiJxl8f-7CIoEARS5hQdfovaEztRTho,1051 +torch/include/ATen/ops/special_erfcx_cpu_dispatch.h,sha256=pvT9oVRajlxj7xyXpqFw_XmyfHeNUgoRXEqS_YD3rwM,1152 +torch/include/ATen/ops/special_erfcx_cuda_dispatch.h,sha256=ePdPBCLtPLd9MVaXceOYMAJcY0L6cZnNP48GN5LJs-Q,1154 +torch/include/ATen/ops/special_erfcx_meta.h,sha256=ChdzGzHgGQYG7Sz-k2VjbIx3UtpOQ3SBtKYizWQwYk0,828 +torch/include/ATen/ops/special_erfcx_meta_dispatch.h,sha256=8urEMFpSBgIXw0FaFboczc_vz6IprXBOwP0qD6_Pj5I,1154 +torch/include/ATen/ops/special_erfcx_native.h,sha256=Uh1nffGM6CwIUAEboudSMC2XGzh9WPPhbuo5LWtYybQ,871 +torch/include/ATen/ops/special_erfcx_ops.h,sha256=NF6B2cH7iAeei9wg9DYSacT60kNTdGe4Hf5NAswGnrA,1843 +torch/include/ATen/ops/special_erfinv.h,sha256=L2pSvMBg0m6tXuQ9hEEY-NL8IM1cpBau5NKOm7Yt0a0,1361 +torch/include/ATen/ops/special_erfinv_compositeimplicitautograd_dispatch.h,sha256=1gGaBYei-MK-ev5MsnyafoRSpU3vDeVXj6Sr8otNhPI,1199 +torch/include/ATen/ops/special_erfinv_native.h,sha256=ZZkxIDlrvSqIc7SZS2YKSjsnPGjJPivRYeI_MmSwaks,824 +torch/include/ATen/ops/special_erfinv_ops.h,sha256=LaGbcWJ7CMbeg5ZVqAIMA6MU6Gvc6i3-EEiBHIiqBCs,1849 +torch/include/ATen/ops/special_exp2.h,sha256=D0DhA2YQUqSNQqtlMl2oN44ske7fwCwbhQOKYtkMUFQ,1341 +torch/include/ATen/ops/special_exp2_compositeimplicitautograd_dispatch.h,sha256=8wjnmWcfzFRetLhRnCT2_9o5NRHiKDbi6HvKJDvg4N0,1193 +torch/include/ATen/ops/special_exp2_native.h,sha256=OQCoRcLfVHT07wVAZbZhyEN7oPLmDHiHOT6wpHLHyKQ,820 +torch/include/ATen/ops/special_exp2_ops.h,sha256=31MAdisy6DXWqIl2JN_HDUOTJVAjD13pFjMKXRSE3kg,1837 +torch/include/ATen/ops/special_expit.h,sha256=IfAeCldygOH2FBAFRgfvDhucQBYfcX0qWobtqY7dX2w,1351 +torch/include/ATen/ops/special_expit_compositeimplicitautograd_dispatch.h,sha256=GZ1IKb-EED6Htf5FqrPq-y6TVSBTy3jCAuywLAAYIMc,1196 +torch/include/ATen/ops/special_expit_native.h,sha256=VYjTdnRAoF48b05TV4tYn9ZnUF7nNEab22vuTJFq_sE,822 +torch/include/ATen/ops/special_expit_ops.h,sha256=NPV4sSVF010UxdJFgqU5olskTFuofJwjUkDz1rBxeHE,1843 +torch/include/ATen/ops/special_expm1.h,sha256=dInqsPU1Kyy5aj-32n96F07T14RJaHbMEImcKovOVVo,1351 +torch/include/ATen/ops/special_expm1_compositeimplicitautograd_dispatch.h,sha256=cqRJMp8nKMWCMJfMLW-BugIXP2_gYe_Fhd_sA0il-yU,1196 +torch/include/ATen/ops/special_expm1_native.h,sha256=tak2dFsNCadHVg3bZZ7FbnMW2VfqkdsigPmvICsNioo,822 +torch/include/ATen/ops/special_expm1_ops.h,sha256=xyqoNipDGNlYFymWoe6T6oC8rqGS6ImTlmcVwRxmh1s,1843 +torch/include/ATen/ops/special_gammainc.h,sha256=__o3k6dr-78wbXqejnCBWHQNx8h4gPcP3Wye0PEAUsQ,1522 +torch/include/ATen/ops/special_gammainc_compositeimplicitautograd_dispatch.h,sha256=9hMxf7TTAllEV1TlCouWvgHssP-KmoIOcnjYfArDeoU,1283 +torch/include/ATen/ops/special_gammainc_native.h,sha256=PuV1vZKpTgSxD6QPF6UhO7mpW6ifjWoZs3Q_tHJ3XZE,880 +torch/include/ATen/ops/special_gammainc_ops.h,sha256=pKoAX30_vcVhWjdZ0GbizFHoClBwUTzA5ToRWXVF2Fg,2033 +torch/include/ATen/ops/special_gammaincc.h,sha256=WpUl5Q3REdKvyukcwfg875csnXeOAjRtEySkx5ctl0k,1532 +torch/include/ATen/ops/special_gammaincc_compositeimplicitautograd_dispatch.h,sha256=X3onM9dOzUkb2XIhW8WfeXvnKwx0lAWDPHuhba9xlOI,1286 +torch/include/ATen/ops/special_gammaincc_native.h,sha256=uID8FzXSVHOE4ARBXCGtJv3Bcd1dvBiiXn8mLjXPrtk,882 +torch/include/ATen/ops/special_gammaincc_ops.h,sha256=3gLk5c5mGMVKhjeg0_TSOnMQ5FYza_0Tw3xmB2oXPKo,2039 +torch/include/ATen/ops/special_gammaln.h,sha256=DgU7Gs_u8yTomOfanFbOSjEPPfCPVALTCK4BZyTP1M4,1371 +torch/include/ATen/ops/special_gammaln_compositeimplicitautograd_dispatch.h,sha256=JuBT08-gBvUxQS0jkaxDu9WBgEX9YbEZJN0sObuhU14,1202 +torch/include/ATen/ops/special_gammaln_native.h,sha256=UxjjIJOOdbx88Yrl9nQyd0mdMvx-GGUk1tYZHwOAvH8,826 +torch/include/ATen/ops/special_gammaln_ops.h,sha256=mjU0VPWENCLHfRQxea-E7NAAd-DYdWrpyBO4XLi4ly0,1855 +torch/include/ATen/ops/special_hermite_polynomial_h.h,sha256=1NcmEnYt7W87F02aTb-W6dMbl_f8Ee371ffTBAB7Wa4,3289 +torch/include/ATen/ops/special_hermite_polynomial_h_compositeexplicitautograd_dispatch.h,sha256=cFds92tXmhWqwRhtJSTwRYNLMRmO-QfetMiydZlvazU,1632 +torch/include/ATen/ops/special_hermite_polynomial_h_compositeexplicitautogradnonfunctional_dispatch.h,sha256=HwIIwovuYv2jywNU4I6uJ-LOiXpJPxoaXYRn8abyhpY,1085 +torch/include/ATen/ops/special_hermite_polynomial_h_cpu_dispatch.h,sha256=9YN5hMQ2lkY3KiYP3ToUchuVZDK3UTf85MKxRDNu2sg,1254 +torch/include/ATen/ops/special_hermite_polynomial_h_cuda_dispatch.h,sha256=JIVcIsBYUnkyzwGl6qf7xYl6MK0Qd1VUNidvnSsbf6E,1256 +torch/include/ATen/ops/special_hermite_polynomial_h_meta.h,sha256=laM2E7R2zuw-IYj0HpOvS6N7kOZtX4zAujxbnNyi0EU,862 +torch/include/ATen/ops/special_hermite_polynomial_h_meta_dispatch.h,sha256=RF5oPI6jtmudoPVwYhL2DRo4jDdoEN7M7l6ZOF47Vck,1256 +torch/include/ATen/ops/special_hermite_polynomial_h_native.h,sha256=0gCHnV2iFGDuCelDUEZiIpLIdwiMhU1elq2KYWaLROo,1363 +torch/include/ATen/ops/special_hermite_polynomial_h_ops.h,sha256=jegH2yawZXiXoaQj1seWQDYrmh0WXS1jm6zsvLQ-OrI,4873 +torch/include/ATen/ops/special_hermite_polynomial_he.h,sha256=46rcDhsEvNR0jH0cbhyWYHJI9w5S8jR5taDv830rV_I,3317 +torch/include/ATen/ops/special_hermite_polynomial_he_compositeexplicitautograd_dispatch.h,sha256=JzgfiQf3R48UNUP1HoirMIlbCl_4125mqte-dJnCy1Q,1638 +torch/include/ATen/ops/special_hermite_polynomial_he_compositeexplicitautogradnonfunctional_dispatch.h,sha256=dgWcI8LCfw34FGsDBoiNaJJ-5IcUqv4zD-wlQqWEt0E,1086 +torch/include/ATen/ops/special_hermite_polynomial_he_cpu_dispatch.h,sha256=pS5w3_VAR3_7RPS8_nrV71hAZ6g5GSpwBGbCDQB3DMs,1257 +torch/include/ATen/ops/special_hermite_polynomial_he_cuda_dispatch.h,sha256=kjlAmbgG7LnND8GldBD6u9-UmjIun6RvwwgOXuYrpCc,1259 +torch/include/ATen/ops/special_hermite_polynomial_he_meta.h,sha256=oA8GWkZK93PKJ9QWgO1tC7ER1r1CZoDcsqGr1phVJ9k,863 +torch/include/ATen/ops/special_hermite_polynomial_he_meta_dispatch.h,sha256=jzQcA_qmq-mhz8dO-GUtLOrzKsgqO_UcX3DKPkk8pps,1259 +torch/include/ATen/ops/special_hermite_polynomial_he_native.h,sha256=JohrF2JLG3acHHMzOFGKIo1_a5DL04t2Q2Tp5xaz4lE,1370 +torch/include/ATen/ops/special_hermite_polynomial_he_ops.h,sha256=xgUZrso2yg2rCUqagiDSemof1B99ctX9BpHQV0vWr8k,4891 +torch/include/ATen/ops/special_i0.h,sha256=V8tw2tchIuEULXe0-eUbBSDpZXzxRiV9l2EU9GwU0dE,1321 +torch/include/ATen/ops/special_i0_compositeimplicitautograd_dispatch.h,sha256=3n55QHcEK9bGMLjEHjSVv8V2h_sAVDumKo3rPaEax5o,1187 +torch/include/ATen/ops/special_i0_native.h,sha256=5abiuijh7_P0oyFiXWZBOihUZ3vvWD2bjo8mTFEA4wc,816 +torch/include/ATen/ops/special_i0_ops.h,sha256=7-vH2Zn11RKKv8mC1-xxKIxFvsy1Dy-qQcgKfiXAzh0,1825 +torch/include/ATen/ops/special_i0e.h,sha256=AiDmRthvu28UkJ0uhGemNw039NQR9-HiINojgXUqWH0,1331 +torch/include/ATen/ops/special_i0e_compositeexplicitautogradnonfunctional_dispatch.h,sha256=3VrisaWO3mBL0fxjkqtcOAc7cs-Okwrhn6xgSaCORE0,1049 +torch/include/ATen/ops/special_i0e_cpu_dispatch.h,sha256=GxfnZlWwmNQPQeiXQQS8DD7_huUMoQ2R-bh52uuHXbA,1146 +torch/include/ATen/ops/special_i0e_cuda_dispatch.h,sha256=J5JkIaLlmUprurVjNnfhyg6uMMxmJ_o_jLWm7oyJaSU,1148 +torch/include/ATen/ops/special_i0e_meta.h,sha256=0ExsHhz9Fj-jFueA2lELSakT2bhTuFDjhVEwfUJpqZQ,826 +torch/include/ATen/ops/special_i0e_meta_dispatch.h,sha256=xuX65J-6Chc1qSh-34w2mpj7m2y9cmwDJVItIxCzesc,1148 +torch/include/ATen/ops/special_i0e_native.h,sha256=ptlotzB-Vc3z1xFHPqXAckuZ_mzOuiFk5QXwjCFLzdY,865 +torch/include/ATen/ops/special_i0e_ops.h,sha256=gveA6iHza7QALWZdZMOdl-H1axSyWDVKKWVX2R_Gkx8,1831 +torch/include/ATen/ops/special_i1.h,sha256=dWPvLqcPNANXxEZNr-JY_IKZ0r38aOPXPCNhkuhhDx0,1321 +torch/include/ATen/ops/special_i1_compositeexplicitautogradnonfunctional_dispatch.h,sha256=mrt6tRPObeVF63ubo-KZ69AZKBVWkuH-O24Uk14cD7Y,1048 +torch/include/ATen/ops/special_i1_cpu_dispatch.h,sha256=Y0wgEAJ4hvwEKVCVyv_xWaERHzvuylMER_WtI6vMTE0,1143 +torch/include/ATen/ops/special_i1_cuda_dispatch.h,sha256=m84PlCbbrlpf-3ChcQw9vZtmzufJJoCFNzwkYIpfceM,1145 +torch/include/ATen/ops/special_i1_meta.h,sha256=PU1wCD1BF47vsuIdtXczfrPv2aUpSEBr23i_ef0BrXI,825 +torch/include/ATen/ops/special_i1_meta_dispatch.h,sha256=Bjnpp5U9UiAODTkNfP1-xQ1EvMNbqbnbHWQbvFKYnVo,1145 +torch/include/ATen/ops/special_i1_native.h,sha256=NRjnBeA-UryUnTOZtgYTF0Q4ObEoYyOJAzY9OIRrkq4,862 +torch/include/ATen/ops/special_i1_ops.h,sha256=WXASfh66RmlI8GyeD3hXSgVNATgEfDeubOg64iQlaQI,1825 +torch/include/ATen/ops/special_i1e.h,sha256=zn4Tli6lsMaAm5R0Y53cp447QfP-Z1RRsAZDrvBWCsg,1331 +torch/include/ATen/ops/special_i1e_compositeexplicitautogradnonfunctional_dispatch.h,sha256=BqEOEMu8q64I2yD7LQF2PGUNioRq3lXqjoMHPVMyEBY,1049 +torch/include/ATen/ops/special_i1e_cpu_dispatch.h,sha256=ceBZ37IDl4vchgou6Uj1h2RPl8VKKMXIs0Idw2FQlUw,1146 +torch/include/ATen/ops/special_i1e_cuda_dispatch.h,sha256=k61rhKBWQb8XUujD_LLyDgKcaJHh2bNu1My-D47iZjk,1148 +torch/include/ATen/ops/special_i1e_meta.h,sha256=cV0GwP6QTlVIB_h3VusBJqsE4k-BXxEaHKJKTjNWBCI,826 +torch/include/ATen/ops/special_i1e_meta_dispatch.h,sha256=uVYSQsf-K4Wt4llywZfO1sOixWqszA_I83qqpVwwoqk,1148 +torch/include/ATen/ops/special_i1e_native.h,sha256=vNDtzED4QN7Y43gNq4OU66LQjsIcYWhw3zzL_M9n-Pw,865 +torch/include/ATen/ops/special_i1e_ops.h,sha256=qtyK-ZSeuvVxmILE1RFetSpnCLH_zTVkWOAcZufdPaU,1831 +torch/include/ATen/ops/special_laguerre_polynomial_l.h,sha256=d3qDQmFVD4NiwGpe2VHZu1f4GgeGNU1ebFW5V1-hHG4,3317 +torch/include/ATen/ops/special_laguerre_polynomial_l_compositeexplicitautograd_dispatch.h,sha256=zQa9y6C3lwWXXlrfc-vtIISa0p7HnfILyox9ITSYnvI,1638 +torch/include/ATen/ops/special_laguerre_polynomial_l_compositeexplicitautogradnonfunctional_dispatch.h,sha256=YRwNru4kV_zBgbxdiqJLTwQkdyjJD2drJR_PGivcneA,1086 +torch/include/ATen/ops/special_laguerre_polynomial_l_cpu_dispatch.h,sha256=TtzDW7eUPeLIfpbE2BDExH7h2HgfnQG2rFTlESs5VzY,1257 +torch/include/ATen/ops/special_laguerre_polynomial_l_cuda_dispatch.h,sha256=AsEF7pujBT2EyIg026177YUg5vsiIsfYpMz60tbjLcI,1259 +torch/include/ATen/ops/special_laguerre_polynomial_l_meta.h,sha256=cPV4gb9h11sEhaNqMgHvUJpzUmNtQMERLGfEVllpwo0,863 +torch/include/ATen/ops/special_laguerre_polynomial_l_meta_dispatch.h,sha256=hYAaJxNUztIQAvtQrC_r-3NUoQCpsMvVQKwoBaok-4g,1259 +torch/include/ATen/ops/special_laguerre_polynomial_l_native.h,sha256=9OgmPzBHY3dLkoXAzZsXTYThGs6hGBswHuZhswq-imE,1370 +torch/include/ATen/ops/special_laguerre_polynomial_l_ops.h,sha256=Whwoe1elsEIF11L8FHyCea3a316uWL_xfaDJs2s0eFA,4891 +torch/include/ATen/ops/special_legendre_polynomial_p.h,sha256=wzi2qKGHy3zT1Rvw54QCUc0IIY_ERim55eXySATJizs,3317 +torch/include/ATen/ops/special_legendre_polynomial_p_compositeexplicitautograd_dispatch.h,sha256=Vj0qNn2yK5a85WiguTBC9_DQsh9fNE0kRrYQwXaDQiM,1638 +torch/include/ATen/ops/special_legendre_polynomial_p_compositeexplicitautogradnonfunctional_dispatch.h,sha256=zQn1sTcWMqgwcA2B1EroYjdYXkmFkbuAnzQksEPyXJI,1086 +torch/include/ATen/ops/special_legendre_polynomial_p_cpu_dispatch.h,sha256=oW1fsBQmec4oQINts47Kd9-o6u73zvvl7Ri0nhkgHEw,1257 +torch/include/ATen/ops/special_legendre_polynomial_p_cuda_dispatch.h,sha256=GZxWhCAJDDYWDiKakhSHXda3tvasNIhEQ6DqIPPnACE,1259 +torch/include/ATen/ops/special_legendre_polynomial_p_meta.h,sha256=dcgTa9JH6Lq8W-FZtpAWNv5nuGixKPwhl5R5ekk3K60,863 +torch/include/ATen/ops/special_legendre_polynomial_p_meta_dispatch.h,sha256=Zc6J-UVkbZxBgzvCrlBJ06ZZWtaSSgsIdpSYZYTFmAI,1259 +torch/include/ATen/ops/special_legendre_polynomial_p_native.h,sha256=-L4lBwhaYdTC_XU-n8KdYoQUnCjRM-sbzbSZyZq3sfM,1370 +torch/include/ATen/ops/special_legendre_polynomial_p_ops.h,sha256=Z5LNX6Vc2y9nbAxepUAXxnmZf0EgSzVvUPwkhOjbz9A,4891 +torch/include/ATen/ops/special_log1p.h,sha256=LPDXi2sQG8TPR_yN9SqU03RNqlbMPXG6C-0xxnuj7yc,1351 +torch/include/ATen/ops/special_log1p_compositeimplicitautograd_dispatch.h,sha256=Q-LTYFipCB19V1MOGxmYDHPqS4o1ZYbAeS0NClW4LtU,1196 +torch/include/ATen/ops/special_log1p_native.h,sha256=N6wzYMzGfga4iN7JT9XMQpai5GqToK81wJeOC_MJYPo,822 +torch/include/ATen/ops/special_log1p_ops.h,sha256=UBu24OIQdUJssex3NHCv89cbVW1PibAnlXqhCyJ1szM,1843 +torch/include/ATen/ops/special_log_ndtr.h,sha256=XR1el6-ZDMs3EHkt3mRQT4VOB58hEBmhsTInGQ6pteQ,1381 +torch/include/ATen/ops/special_log_ndtr_compositeexplicitautogradnonfunctional_dispatch.h,sha256=Cb6-4Q8srZvKfKO7dd5eMrprniAdjMNFIrXoxyWbMDY,1054 +torch/include/ATen/ops/special_log_ndtr_cpu_dispatch.h,sha256=0B29Mq593nEQSQO9cRDjSHDYLXnJDcdkKv8cTAjldL8,1161 +torch/include/ATen/ops/special_log_ndtr_cuda_dispatch.h,sha256=LyRmaZ-gHZfFQL5Ic8bGBXRWWX1gG1SqV9GdyrUWCPM,1163 +torch/include/ATen/ops/special_log_ndtr_meta.h,sha256=LCNGFzhV8GoLJfw0SF5q-BVTQDaMiiZ3SEe5n37jf84,831 +torch/include/ATen/ops/special_log_ndtr_meta_dispatch.h,sha256=ATZOolnKmlYQNhenxRpD79_MtkwK3dsK57hzwns27hU,1163 +torch/include/ATen/ops/special_log_ndtr_native.h,sha256=4aI5f1hpDS_CICKlpJPx1GEDQkLR4yxeTG9a7YtHZyY,880 +torch/include/ATen/ops/special_log_ndtr_ops.h,sha256=B7Za6IEfmGfoK1sZHJR1zjarb0uBNWMgxQQUb7qNxwI,1861 +torch/include/ATen/ops/special_log_softmax.h,sha256=vr-KtHqKWHfhnYdaaA4ebVvAGCEcufCRDkKKWGPk26w,1058 +torch/include/ATen/ops/special_log_softmax_compositeimplicitautograd_dispatch.h,sha256=5QPmA_MAk8jPxLQJa9ukDxRf1mN_97u4cRmAwvt-Xzw,1098 +torch/include/ATen/ops/special_log_softmax_native.h,sha256=UtpvAU0SmzIPYd3EQDSIzJRU4n06yfXbsm7jSML04Fo,810 +torch/include/ATen/ops/special_log_softmax_ops.h,sha256=j0O-9aUTYCQL0bQlyGGBdWbukAU-rquC6s85QWkH2mM,1432 +torch/include/ATen/ops/special_logit.h,sha256=gpYJ0ahwOwnb7o1lIc_ouvD5lC7wf5WeqGTv3aSqXWw,1534 +torch/include/ATen/ops/special_logit_compositeimplicitautograd_dispatch.h,sha256=HY7VaQ-yErMjHLHtW9X5w1gExhkXqXuRQenepXLdb0w,1313 +torch/include/ATen/ops/special_logit_native.h,sha256=OpLB3EcTobPPvvF2LfEEOH7vshqr5gRS1Uf6iPmkIG0,895 +torch/include/ATen/ops/special_logit_ops.h,sha256=gwqQnm_wGQteN38TO1ud6f7XE7pr09hhCUhXzv5AvpY,2043 +torch/include/ATen/ops/special_logsumexp.h,sha256=wIufsM4U3zr00vKAt5UzNpKFxnE3-klgLz7LRzCK4vE,1646 +torch/include/ATen/ops/special_logsumexp_compositeimplicitautograd_dispatch.h,sha256=WOjfZnAfdgKygIcPw4Vjo-8cSwxOuT81YWzC1cAy0JY,1325 +torch/include/ATen/ops/special_logsumexp_native.h,sha256=K1TJKA-YX-3EiR0DMKqTxT-kXIuKwkjtFu2k2JjC0Qo,906 +torch/include/ATen/ops/special_logsumexp_ops.h,sha256=ZPuJ59IX93_RRn2x94J2QlBlCmgqbcgULlOKP5U6Xc8,2117 +torch/include/ATen/ops/special_modified_bessel_i0.h,sha256=knoeapUhorXt-clWZTWSxGQAQNa_XeFz_TvJp2l8xdA,1481 +torch/include/ATen/ops/special_modified_bessel_i0_compositeexplicitautogradnonfunctional_dispatch.h,sha256=zN5sbALb8wtJO5uH8_vhfoOazkeCZRH83ExIrlf35sE,1064 +torch/include/ATen/ops/special_modified_bessel_i0_cpu_dispatch.h,sha256=OFoN8Jn2hEmbQtHxIshi2_oWQCqhohJdStcyu6SSDDM,1191 +torch/include/ATen/ops/special_modified_bessel_i0_cuda_dispatch.h,sha256=bfAgVIY-Fi3AF2E6M9iHTO2uaJBoiaIjr_LIcZAOtOA,1193 +torch/include/ATen/ops/special_modified_bessel_i0_meta.h,sha256=CCzP7Zk68Ap_5MMWNrlVOJ66pQBzSDLLZKlHm2EOWsI,841 +torch/include/ATen/ops/special_modified_bessel_i0_meta_dispatch.h,sha256=BSPF5owQRqjZ0z7xV9mBZg3QjiZcBQzwmHmHFYnwTwY,1193 +torch/include/ATen/ops/special_modified_bessel_i0_native.h,sha256=Ln4J-88nEPZHjcZFRIxchk3L7v7DUqyUb8Y_AZKFI6c,910 +torch/include/ATen/ops/special_modified_bessel_i0_ops.h,sha256=Ywdb-YXrqtferIyt5TIanWNKEdyak4g0NdbgH_h43uI,1921 +torch/include/ATen/ops/special_modified_bessel_i1.h,sha256=LYNc8-LLpZMkKiHq9WyTD2RkWZLx6kdbzHe8SRa956M,1481 +torch/include/ATen/ops/special_modified_bessel_i1_compositeexplicitautogradnonfunctional_dispatch.h,sha256=edVq2hBXhza-n_CY65P6XurYwd4i5FqLTQmcnNB2PMw,1064 +torch/include/ATen/ops/special_modified_bessel_i1_cpu_dispatch.h,sha256=700lq2SYTuB9__dI2JBdNpNPMFqdBkddWEbt_kbr7dU,1191 +torch/include/ATen/ops/special_modified_bessel_i1_cuda_dispatch.h,sha256=1X2WFpfQUrHo2DuJ6ZEykJfIKwEXiFTdZnzRM1Pk5d0,1193 +torch/include/ATen/ops/special_modified_bessel_i1_meta.h,sha256=m-kw-FW7K2nJXHpR1f8z8nu1_4TzJM01IyCfNQOOcYA,841 +torch/include/ATen/ops/special_modified_bessel_i1_meta_dispatch.h,sha256=xv7lWaPMJMDHRHEHY-cDsNOvF24b_bhkncsvIg4ShJU,1193 +torch/include/ATen/ops/special_modified_bessel_i1_native.h,sha256=vtha295SK-CFPY2KV9P6rjaJUkQiDklqQLm5MopMCho,910 +torch/include/ATen/ops/special_modified_bessel_i1_ops.h,sha256=cFTDzpIYQD-svJB1P_7zVuq2pwUw6ZKfM8eKUEJrt20,1921 +torch/include/ATen/ops/special_modified_bessel_k0.h,sha256=w3DZNj4M2QXWytNNhdbhiGzvxLXS_HKWrftC-PBwJIU,1481 +torch/include/ATen/ops/special_modified_bessel_k0_compositeexplicitautogradnonfunctional_dispatch.h,sha256=-YR4C87jsSDyzHVfWcVVBkCMQHE-e83qc6Hfa9DpmLY,1064 +torch/include/ATen/ops/special_modified_bessel_k0_cpu_dispatch.h,sha256=jul6H6LZuQh0zRiIykd20XPRkID8f-yXiYJfS0U4Lq8,1191 +torch/include/ATen/ops/special_modified_bessel_k0_cuda_dispatch.h,sha256=4BhmrN79HBpfcaT4nhUuDx62R_l7KJ24bjXuEDAhVVE,1193 +torch/include/ATen/ops/special_modified_bessel_k0_meta.h,sha256=djU-vyM0PaGUQKqm0iauAQ24S666LwxvOxR2T5XHGkU,841 +torch/include/ATen/ops/special_modified_bessel_k0_meta_dispatch.h,sha256=4xmjPpiHA82rC8v1V9rR5SbZoXDLjSZXIUhVUmEIy0s,1193 +torch/include/ATen/ops/special_modified_bessel_k0_native.h,sha256=RweHONzDneJRDmzTYHCA776LRSmDGKe3KzGuLHt4WEg,910 +torch/include/ATen/ops/special_modified_bessel_k0_ops.h,sha256=9gEKY_KhiEh4qROOWzU4hU2QWxNlMQSXJQ7jMW6I4Mo,1921 +torch/include/ATen/ops/special_modified_bessel_k1.h,sha256=WHGLvxJNqlUsdFumKWQWmkSjHKM3V0KcoP90_2akjLc,1481 +torch/include/ATen/ops/special_modified_bessel_k1_compositeexplicitautogradnonfunctional_dispatch.h,sha256=Ke0JlqZASX_3fQtiRYEDC2LIuHn8t4LC-dnZR9sJnOQ,1064 +torch/include/ATen/ops/special_modified_bessel_k1_cpu_dispatch.h,sha256=1xVFdxaV_AaRuCdL53ihEYl0Nx7aHZFbUk9-PrOwJ04,1191 +torch/include/ATen/ops/special_modified_bessel_k1_cuda_dispatch.h,sha256=lL2r5k57gBhN4jDG8m2_LCfZ9l04_4EM2hhOjn6G250,1193 +torch/include/ATen/ops/special_modified_bessel_k1_meta.h,sha256=rFNnu4hAJf5Rhr1bjzHfKMS2OOa-N0Ah1E0sVOuoOMM,841 +torch/include/ATen/ops/special_modified_bessel_k1_meta_dispatch.h,sha256=bb7IKKRR0Fy2IoDalCLWeDngB5fnW1fjCcmjP5K8D8E,1193 +torch/include/ATen/ops/special_modified_bessel_k1_native.h,sha256=lOP2I55dypMpYcOmoFiTULxK6ibd7TRLqCBheYUA8dY,910 +torch/include/ATen/ops/special_modified_bessel_k1_ops.h,sha256=2aPnRmz4tco0_cmOS9bm_79t6fmsUlwh1UoVYG32tPY,1921 +torch/include/ATen/ops/special_multigammaln.h,sha256=5-oT_sOI3A7RLJ8Zs0bcXaOVhwbVkkkVEG5UWao4EjI,1484 +torch/include/ATen/ops/special_multigammaln_compositeimplicitautograd_dispatch.h,sha256=uld9uDo49UCpDyagZG4mlxK7FVpzSufj5yMyNmO07Zc,1250 +torch/include/ATen/ops/special_multigammaln_native.h,sha256=4WzSysSSJoc7iDSYo2V39XBmAqNcz2ExUkgoO4AeZHQ,858 +torch/include/ATen/ops/special_multigammaln_ops.h,sha256=wN8q-OLlqTGc3gtRngZoryH7e7syZB0MluHdDFgqJPc,1961 +torch/include/ATen/ops/special_ndtr.h,sha256=TwOvt_h2VXF6RjM3lOKXFWnd_XK_ixdcou7CZ1WlQ7g,1341 +torch/include/ATen/ops/special_ndtr_compositeimplicitautograd_dispatch.h,sha256=4AzhWFvzzCDurhkl7qT1t-Lv6FEJNzFPTkmPXhtgKuo,1193 +torch/include/ATen/ops/special_ndtr_native.h,sha256=7n6ckBQlZNBQgQevT_2HAXsOmkeeIaLX24M6meFZMiU,820 +torch/include/ATen/ops/special_ndtr_ops.h,sha256=ECbZKHayF9gUav_65OuRSsFcetu4zAX6SNDQAwoKOxs,1837 +torch/include/ATen/ops/special_ndtri.h,sha256=7eEf4wXf32gnqanUZNI0GQLtY4giTgVTTZwJ8E6YK1g,1351 +torch/include/ATen/ops/special_ndtri_compositeexplicitautogradnonfunctional_dispatch.h,sha256=wS2tqh0_aNn5bENe4jR-_Gh_eVfYztArjuNhkciBwj0,1051 +torch/include/ATen/ops/special_ndtri_cpu_dispatch.h,sha256=5fwmcmLEIIHmnZYrcuYBAw8ia8hK466mIcbwdazM5SQ,1152 +torch/include/ATen/ops/special_ndtri_cuda_dispatch.h,sha256=Hs3kGUiEWB2dr6IkKCI5CtNhFg6wxhH21iWK8RTro7o,1154 +torch/include/ATen/ops/special_ndtri_meta.h,sha256=rbewT1A25RjrO7iwl49Q83K7xEtzQllwHJZ8_SLoXq0,828 +torch/include/ATen/ops/special_ndtri_meta_dispatch.h,sha256=rxpurJZ1RQig6W7UIfLwsCmPxlK4wODsI58zatIt34k,1154 +torch/include/ATen/ops/special_ndtri_native.h,sha256=q40c0r_GWdrWUY3HK2Af8o-H7n1lU0NP6p8EAlzvosU,871 +torch/include/ATen/ops/special_ndtri_ops.h,sha256=qqwHxNYaohm8p0TZsRGrOU0rojVd6n6SBCPgXkXWPs4,1843 +torch/include/ATen/ops/special_polygamma.h,sha256=1lPSFppARN3icGVkuNu0m4789zo0DbdX39iXb8OZl88,1454 +torch/include/ATen/ops/special_polygamma_compositeimplicitautograd_dispatch.h,sha256=PeFmbLr--44xjBVcOMqDn6JdeZQf8OJpceSkVXNFcM0,1241 +torch/include/ATen/ops/special_polygamma_native.h,sha256=XPvf-qqb7m2n5MrIrCKQ4BUGjT7EAjlmYHxv_yWPElg,852 +torch/include/ATen/ops/special_polygamma_ops.h,sha256=o2NQYtpB24-ax8lxWt79o4WYHNdqIM7-sOBn43DIqXg,1943 +torch/include/ATen/ops/special_psi.h,sha256=z5maXOO47rGifdAj0CUITXd4lrWtsB8nEtBZqttXR7s,1331 +torch/include/ATen/ops/special_psi_compositeimplicitautograd_dispatch.h,sha256=UL-f5ArY0GTW192qCaf6ODiz-suZpe41wGwBD4RzFsI,1190 +torch/include/ATen/ops/special_psi_native.h,sha256=H972O_EYK50jv1DCS8bg3oAKTpZsJU9HoLsXGBMtYn8,818 +torch/include/ATen/ops/special_psi_ops.h,sha256=hEbXrboP7tMtyv2fqu9L6oscumkw8oCMLyED_pynmZk,1831 +torch/include/ATen/ops/special_round.h,sha256=LSeWpi2zt6i1d5Y_bxyxwkYdKAiimyMuXWjNef2qpTc,1490 +torch/include/ATen/ops/special_round_compositeimplicitautograd_dispatch.h,sha256=P9DIwiDJLamjrbWHwlV49mWbgCLZ0ruXtBl7AGLqweg,1254 +torch/include/ATen/ops/special_round_native.h,sha256=rdEGjONdqI0_jYbctuOdJuSV2JR7QI6leBN9jfTcpCQ,860 +torch/include/ATen/ops/special_round_ops.h,sha256=aGe4qpLO-gPxwFgBSGc363mmApE7DEaFb9zER4fcpHc,1968 +torch/include/ATen/ops/special_scaled_modified_bessel_k0.h,sha256=4ZnaANlB9QM_8w_6tq6OBqTRHWVuiLFInEWKnr0mAQo,1524 +torch/include/ATen/ops/special_scaled_modified_bessel_k0_compositeexplicitautogradnonfunctional_dispatch.h,sha256=D9kguWQ80eEXykSlnGbt7Lw0dZBU3HiTGH8sK9ehme0,1068 +torch/include/ATen/ops/special_scaled_modified_bessel_k0_cpu_dispatch.h,sha256=JgAuDaa9SCTxTJr_SGPNh9seUzRXiMbd4-CVPTMeK_4,1203 +torch/include/ATen/ops/special_scaled_modified_bessel_k0_cuda_dispatch.h,sha256=Jf9eyp8Km9DDpE00ZZGV-iYJJG9pmBgwdxiUa4uGKvU,1205 +torch/include/ATen/ops/special_scaled_modified_bessel_k0_meta.h,sha256=04t1_VYCB4AvbwCdE-HENJ3OKyg0SLKXjFZg3Qz0nsI,845 +torch/include/ATen/ops/special_scaled_modified_bessel_k0_meta_dispatch.h,sha256=1yqdbYu7kAg9p8ZO5WZVBagOIBhWlEHkRMjUwiycdpA,1205 +torch/include/ATen/ops/special_scaled_modified_bessel_k0_native.h,sha256=QVyqiyEvsVKzWCARohDRKZEJq46-0RwmIjy5LV7tfQk,928 +torch/include/ATen/ops/special_scaled_modified_bessel_k0_ops.h,sha256=Yz1gVR8-_r3jS-nvs9ysquOcdOjF51jGYQ9XJiR9CxQ,1945 +torch/include/ATen/ops/special_scaled_modified_bessel_k1.h,sha256=0DppqITfQEDPVBH3iHhRt5J7YYh38AEcJ24VHlS_KpA,1524 +torch/include/ATen/ops/special_scaled_modified_bessel_k1_compositeexplicitautogradnonfunctional_dispatch.h,sha256=0Bwg7ihJNPfAg6xuXW3HRSP1llDm-UWM3o8TlYWcsDI,1068 +torch/include/ATen/ops/special_scaled_modified_bessel_k1_cpu_dispatch.h,sha256=wRWzuki8KAGIsNDkIe6tC0Mq2sirhrau8nU3donxxDo,1203 +torch/include/ATen/ops/special_scaled_modified_bessel_k1_cuda_dispatch.h,sha256=91sqdZEwpJeaZD5_cAJ_VFMUts-SYpvk43ilGsKPleg,1205 +torch/include/ATen/ops/special_scaled_modified_bessel_k1_meta.h,sha256=cGzZ3rl2BD13c6_i_-1GV4i_vahIMk6rvzrQciR04xs,845 +torch/include/ATen/ops/special_scaled_modified_bessel_k1_meta_dispatch.h,sha256=f670AxWiy5hJAnPnB-YvfHK3XTmy7WX1Ch1sl3l3ba8,1205 +torch/include/ATen/ops/special_scaled_modified_bessel_k1_native.h,sha256=O08EcyUqzMRqvk_2mJQQ-TcFXHQs_ACsJHGqrIJbSdY,928 +torch/include/ATen/ops/special_scaled_modified_bessel_k1_ops.h,sha256=X25S02XWxL6zQg56Z7TisEppmyFQMe7P_gqR5lDioB4,1945 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_t.h,sha256=ljKCNRxW188l5nUbaFQcNmNJi7rfQDZWWgEsugQlSsk,3569 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_t_compositeexplicitautograd_dispatch.h,sha256=hT-urNAhc23HedzYvTPvNMe6FV6nGewVVCknfnxCGR4,1692 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_t_compositeexplicitautogradnonfunctional_dispatch.h,sha256=FBcQ2_MAkTQ4GxVK-Jpm2dcGCRJLATmkJyiFBU6Z3aY,1095 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_t_cpu_dispatch.h,sha256=kYNe0g_QyqQ0ZRiASlgcBbiB7Ral9aDKiD0xBYoVgmU,1284 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_t_cuda_dispatch.h,sha256=7qMHGP8PAOV7kGB3JUOBlUFFE6Ayz0AfoHPvdtmfE1M,1286 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_t_meta.h,sha256=8vLjnKRVT97Ex69AeXEGLZUGfFBRCE7hoIvyORj38RY,872 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_t_meta_dispatch.h,sha256=2nNtiOioNw79gFBXNCzqnFDQvq6ZRyrJ7LfOR3b0s90,1286 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_t_native.h,sha256=qQKQbMOjZElascXKM15L1C8fAaejVB3IV30VnG19xIA,1433 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_t_ops.h,sha256=twC2i7DUv5FC1RrGtFkOggMKOxq7JAS6ZJax6JIJZhI,5053 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_u.h,sha256=ju6vHaM7VPDOTJk6W506jeIBuRf0iktOt06XQ5IY7kM,3569 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_u_compositeexplicitautograd_dispatch.h,sha256=erSZLuGNebN7EzySC8-VYxVbHQf93WJvH_d7T5iOu_c,1692 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_u_compositeexplicitautogradnonfunctional_dispatch.h,sha256=RoB8FFeH-J3XZNvTTsglRqsDADPDLIq5GDzGuM_gzGo,1095 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_u_cpu_dispatch.h,sha256=g8_Z6krJVJQNstTNJNijF3GQdKZARo1WTguxB_CDwng,1284 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_u_cuda_dispatch.h,sha256=yWso1KUiwqNI59jAQ8v1duvDoZ03ZWzPNRvhKT-hkfg,1286 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_u_meta.h,sha256=simmZuiwwJoYRmz3h1SIORzzETDoiO-fmm_n8OmPPAw,872 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_u_meta_dispatch.h,sha256=sXj6lMy5fBtEPfCgGcHRYMqTirdhtHTfmvFyzOSLPxs,1286 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_u_native.h,sha256=v8fP-RASCpne0Szoh-3yUDZw6SXjBljSXckN76QiOtQ,1433 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_u_ops.h,sha256=6GiH4BZR6aykUCXz6aA1A4mqwx11remD88j7uwvJTMk,5053 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_v.h,sha256=T1Uc9ohsRc6kHXLMUJa9SmfPo6uZYdrVojcZTwkexjY,3569 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_v_compositeexplicitautograd_dispatch.h,sha256=XcD7eBiPzVfk9r6EBHMlXC5faZ8EohXgzn4TfCIv1l4,1692 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_v_compositeexplicitautogradnonfunctional_dispatch.h,sha256=rJChMcBy3YoQWsh7gh8hvfmHHh1ahHmfhR6eHn-md9M,1095 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_v_cpu_dispatch.h,sha256=fu155XJiSAWEEeAWNRdo5roPIOQwdB-b63FJY_3Xo9Y,1284 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_v_cuda_dispatch.h,sha256=gj5Z3y1VlGxaVDd0PDpptN-DVKrSQKkm7hWtueactmE,1286 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_v_meta.h,sha256=rP2jkzYcfocz1SEoXn8Pt2lkM1-Th0q7k7Nzl6cJdaE,872 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_v_meta_dispatch.h,sha256=aQQX7nojyf0ZmsOJDUxf6dFum41iv4KXWqMS4gpH0zE,1286 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_v_native.h,sha256=O4S0TrTPXCMPsIxkDiE34l53YoHDtT2vwIbCdqhFpZM,1433 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_v_ops.h,sha256=zGGnAYj3zMz-vhTzespj_kHofk5fbE9NxSoWBaO38Do,5053 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_w.h,sha256=ff062I2wZpyX52CxO-pkYpTzw2Peie82O5KqpBVJS8c,3569 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_w_compositeexplicitautograd_dispatch.h,sha256=DApDCH3UpaMJsyQuwryYyy1NDa221YHOdUOgdMRxaJY,1692 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_w_compositeexplicitautogradnonfunctional_dispatch.h,sha256=7n2brL__o-6WS5_SensRHYt_TxGeConmwwjgKg4zIZE,1095 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_w_cpu_dispatch.h,sha256=7cc7E6xiCRB3cVxZ3hyX01fIX81BiVsoHax4Vxx4rmE,1284 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_w_cuda_dispatch.h,sha256=xuIeusRTrGasn34S6vTrGP4dbq9QYrEw-mX6GO9_XQc,1286 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_w_meta.h,sha256=Rxu3uSszXcJKusEPc3vxX4Dd9-AVi0x1LrZud9GGOws,872 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_w_meta_dispatch.h,sha256=y6AmcVGU1cxrOz0iUh7L7oNW8cBfUo4HEgEOW04j03M,1286 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_w_native.h,sha256=uGZMGpKB_brZE0CK2YUriaCRS_uYT8O-92nAmCYqSe0,1433 +torch/include/ATen/ops/special_shifted_chebyshev_polynomial_w_ops.h,sha256=RTMWrVt-MOKVVt-9QeUlLNNgYX_abQx7w0sW7WMjEFw,5053 +torch/include/ATen/ops/special_sinc.h,sha256=dOxn27pAuQVLCHW1SJRhk1HJ6hBWs_5WT_zZQP9gNFM,1341 +torch/include/ATen/ops/special_sinc_compositeimplicitautograd_dispatch.h,sha256=75w5kc3uR8KfGxppEBOqgT7K9PEyU9X6AMsHARzgKC4,1193 +torch/include/ATen/ops/special_sinc_native.h,sha256=3mvrXOhGYB6Ar3lV_sWbxPXt-hQM8WQdN00KiW4Xuss,820 +torch/include/ATen/ops/special_sinc_ops.h,sha256=cSC2g_mGiFif25xqeaM1yRs02TWoJTgoLEqWE1V4NLM,1837 +torch/include/ATen/ops/special_softmax.h,sha256=6Qy2obWyDMKmaSWh9N5syX_PN2kgh_-3Kf2nH9NMFM4,1039 +torch/include/ATen/ops/special_softmax_compositeimplicitautograd_dispatch.h,sha256=0mrweuUJko9utkNIE8OzM6L1sDE5KKeY2H4FBQJ7ejM,1094 +torch/include/ATen/ops/special_softmax_native.h,sha256=BxuGqwf1hSQTFLkJ7YBAMYt_gS7F6g0z_ahXCK4lCvc,806 +torch/include/ATen/ops/special_softmax_ops.h,sha256=V98P9CgFRDrFSnixv9hjSuKa7-ivJKvr3YhM94d909o,1417 +torch/include/ATen/ops/special_spherical_bessel_j0.h,sha256=scTpjGJChq4LQH4ubXAOFMBnT6iKzuRX_btYCikyiEE,1464 +torch/include/ATen/ops/special_spherical_bessel_j0_compositeexplicitautogradnonfunctional_dispatch.h,sha256=n1mUx9qXkEFPLwz-pY-ovV0LgJw5JiIwEnejoVhbfGk,1062 +torch/include/ATen/ops/special_spherical_bessel_j0_cpu_dispatch.h,sha256=NODpgKK53LjDW3cDcvjYwlqxPdVBJbBP12dJUlFe1o0,1185 +torch/include/ATen/ops/special_spherical_bessel_j0_cuda_dispatch.h,sha256=3lOLvfVHp9hEGbFYVebfSqXN2RFMBye-Uj3FJHW9Kbw,1187 +torch/include/ATen/ops/special_spherical_bessel_j0_meta.h,sha256=3EyGu4mbyQVBNQa-PkjrxqKyRcbvgSaKztpCwpZScW4,839 +torch/include/ATen/ops/special_spherical_bessel_j0_meta_dispatch.h,sha256=s1x2F0hDZ9NmSi5Kce4hqw4F3OeOew2Zpsyj21zEZ30,1187 +torch/include/ATen/ops/special_spherical_bessel_j0_native.h,sha256=az0P7BJ_srVRHHjfSK5xvbH_7JfHshU87Zlwxw3J6_w,910 +torch/include/ATen/ops/special_spherical_bessel_j0_ops.h,sha256=u4_SBV8IIPTBY2OuJL5pHsH_AueDbN0sHwkCh12Kvdo,1909 +torch/include/ATen/ops/special_xlog1py.h,sha256=QXHUqpho2S9qj5VClFkgKWaliN2_xHSRW3ouCfNfH84,3156 +torch/include/ATen/ops/special_xlog1py_compositeexplicitautograd_dispatch.h,sha256=9kXNHPGFW6QPtOyeqO2WO-SM-d2navaInKr6y-_90iU,1596 +torch/include/ATen/ops/special_xlog1py_compositeexplicitautogradnonfunctional_dispatch.h,sha256=fcgMuHBAkbu1AEWo4zhPnj1zilnRoRfn7T81OdwRZRg,1079 +torch/include/ATen/ops/special_xlog1py_cpu_dispatch.h,sha256=xKxT92Kg9oTC9mp6gEj2Ia5Rx-OYjA4lWtBOj_E9T4U,1236 +torch/include/ATen/ops/special_xlog1py_cuda_dispatch.h,sha256=J4ivdy1aINjOTHKjoY8GNFcJmV5UpwKe53Ujzktu5QM,1238 +torch/include/ATen/ops/special_xlog1py_meta.h,sha256=KSW_Fz5ntUbbWNZfRtJk24aukTiAX3DkFxFNWVCdbXM,856 +torch/include/ATen/ops/special_xlog1py_meta_dispatch.h,sha256=DLf72TaQKCe069MpA-RMkLLnk2JfXOzRWIoWwACxjTQ,1238 +torch/include/ATen/ops/special_xlog1py_native.h,sha256=7I3bFhzwzIXngHFpLSmgJKTLxLyG1PQWuYom3o_Zevo,1307 +torch/include/ATen/ops/special_xlog1py_ops.h,sha256=b6nFz4fQJXlEhK7VHnQGBlTE0_mP4dMekTbXDHba-rw,4807 +torch/include/ATen/ops/special_xlogy.h,sha256=_NkYG7wNcU94VglkRRZylm38keDjpPH_P1IIU96gEJc,3100 +torch/include/ATen/ops/special_xlogy_compositeimplicitautograd_dispatch.h,sha256=3jH_FojbOq6DtlE5lIpLea3dcUxRT2aoo01NkQoKX6U,1894 +torch/include/ATen/ops/special_xlogy_native.h,sha256=zDnl0dVk9R-hOZxbng4CLymi3nKvJ2lcsMZ5riWsWe8,1270 +torch/include/ATen/ops/special_xlogy_ops.h,sha256=70D6zPiUYT6YdDVVDXMDLHE2Jpdj-4J8LeOiG007q30,4771 +torch/include/ATen/ops/special_zeta.h,sha256=GAN2VCvs76HQN1A5Actk366tjvh8G2GzVzf5Kqr49EA,3072 +torch/include/ATen/ops/special_zeta_compositeexplicitautograd_dispatch.h,sha256=fcjmQTDPjOOUQ-I59FSzCI9GtY4o39LMoGTsnED9wvI,1578 +torch/include/ATen/ops/special_zeta_compositeexplicitautogradnonfunctional_dispatch.h,sha256=raEWaxWLaFFex2wJE1NwZU3oV-YFEtydxr-FV5TrTqU,1076 +torch/include/ATen/ops/special_zeta_cpu_dispatch.h,sha256=AcdCL3lAfGsTXZeoXTBfsbinHFQ2U8cwqGO-BVGwvsk,1227 +torch/include/ATen/ops/special_zeta_cuda_dispatch.h,sha256=GfP7--qjelRQzl3Dny9FcOygD0uhEAm8U32ogSdpWjs,1229 +torch/include/ATen/ops/special_zeta_meta.h,sha256=UTxC2DpPoIdoxxsSugIxJwxRBN3dviPN2tHhDD8V0OY,853 +torch/include/ATen/ops/special_zeta_meta_dispatch.h,sha256=LDzTFXcEXSpfAZrMQ7fDnnWuTU4xRRi8P-AueDculEI,1229 +torch/include/ATen/ops/special_zeta_native.h,sha256=mvlzamNCD1AsMquw0L4-UrnLl0IhEhV8jU9dAVptnO8,1286 +torch/include/ATen/ops/special_zeta_ops.h,sha256=ghtOSy01hilA7BoAeAfLy7NK26oxMm6sFmCXEvvCgSY,4753 +torch/include/ATen/ops/split.h,sha256=h5J5YN-6o8LcLUmncFHcDpfiuzyAngeyOIlIClI1g7w,2963 +torch/include/ATen/ops/split_compositeexplicitautograd_dispatch.h,sha256=MncTnMHOMD8wa3XnKCNSeSuiYF4lItTm5aSIgvjpE-E,1181 +torch/include/ATen/ops/split_compositeimplicitautograd_dispatch.h,sha256=xP5zeap10kz2sSHFLfj70bI_aKbhqtGfrtamMcZDYxo,1197 +torch/include/ATen/ops/split_copy.h,sha256=T1d_ziTAqDnfBvHukgeWH8NIBcIgJlItMr0GHwJ0e_M,4201 +torch/include/ATen/ops/split_copy_compositeexplicitautograd_dispatch.h,sha256=gLkjnJtvIgSJajFHwzRzL64lSxKNnx16hLdgdq6XSIA,1428 +torch/include/ATen/ops/split_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=LEb8v_K8qSzv7oDTPcjWpMxFkiffvea0pTH-_4Xa9oE,1217 +torch/include/ATen/ops/split_copy_native.h,sha256=JgOOj-cNRBT41m5tqLnV_BC-8JOnUH0z_RRTKMAd7KQ,918 +torch/include/ATen/ops/split_copy_ops.h,sha256=y0BIomWBnL_ZLMz5F8lzCFiLdGwvflPF-vM87EY_s1I,2141 +torch/include/ATen/ops/split_native.h,sha256=M-8204CbYMMty0O5Xl9Aq0gUXtiFBNtmEZvX4qdP1UE,901 +torch/include/ATen/ops/split_ops.h,sha256=S7hFWxOs5imD6jB2m2X5Kgw9h71BGsmmJO8arRX6Ezg,2136 +torch/include/ATen/ops/split_with_sizes.h,sha256=1rDs3gjWNK924zsgpO5RpQUcb0cbwjy7Y40Q_wZbw9k,1995 +torch/include/ATen/ops/split_with_sizes_compositeexplicitautograd_dispatch.h,sha256=_Q3dRajwCooY93QH0UAGeqO9ceut9_-QzK2KtZ8AtQU,1221 +torch/include/ATen/ops/split_with_sizes_copy.h,sha256=K_pUUDGP_7rZgK-DeYCW-w7wNxAA8uGgkDrfxFrXz_A,4710 +torch/include/ATen/ops/split_with_sizes_copy_compositeexplicitautograd_dispatch.h,sha256=Ad1oZ19zNZrfioXk1-v6_PeqLy_Mtf-nnpvIQBJQh8o,1508 +torch/include/ATen/ops/split_with_sizes_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=L9uJk97OK3OvRibglcpQ7i5yn3rdLQTsmJsbOfeiqyk,1257 +torch/include/ATen/ops/split_with_sizes_copy_cuda_dispatch.h,sha256=QZROOLbq2U5Ek4ceGkKlHlEfSMPfLhkl6qcy7p6zX-8,1466 +torch/include/ATen/ops/split_with_sizes_copy_native.h,sha256=M8ttUaXpkR2CtuTKAIn1VTmkPqk-odK5QDAnpVA7ao4,1078 +torch/include/ATen/ops/split_with_sizes_copy_ops.h,sha256=NJe6o-MdJX1_iqlSRKmvyhRFK6OE0H5Lsg2PfgQBh9g,2224 +torch/include/ATen/ops/split_with_sizes_native.h,sha256=xqY1T_Z5nhj29HtYCj1bELvjmKP0M-O3QxyT4EfiGeU,929 +torch/include/ATen/ops/split_with_sizes_ops.h,sha256=LRoERWxGmxLOZonierXl-g2P-1wsULymSvfy3Ymi_TI,1454 +torch/include/ATen/ops/sqrt.h,sha256=XHOet260Go_8JBKbHvsAmSvVO8VYY0R-U7f-pQlfb7U,1397 +torch/include/ATen/ops/sqrt_compositeexplicitautogradnonfunctional_dispatch.h,sha256=uQGaFwBmDDOgAO2SYg66pCnD_GXHt4ggTYh5ywNphR0,1091 +torch/include/ATen/ops/sqrt_cpu_dispatch.h,sha256=Fjy3pPCURmAFmAkWN3cm__ae41FJk5S1Yc1ToCqTkio,1174 +torch/include/ATen/ops/sqrt_cuda_dispatch.h,sha256=ypIukgmtYEFqQPBZ3Rr7XYp9wR3UNdtUaMdok92W7vQ,1176 +torch/include/ATen/ops/sqrt_meta.h,sha256=903aTi2X5JhJN9H2DbHxHH3rq7iUoR8W9qWSmTrfcNo,819 +torch/include/ATen/ops/sqrt_meta_dispatch.h,sha256=qGLw8iJGQ7_9a2Rxw37al70Kh0fSFlINCVYQGMTKtiY,1176 +torch/include/ATen/ops/sqrt_native.h,sha256=_fnb5p5W8TeN3EHSMDeL3BvUlbvYaApZSbbPxaxbcbY,1317 +torch/include/ATen/ops/sqrt_ops.h,sha256=kpPjUDtHcGFVCngSvVx1TJ3LkIf4tJkopYpcCyQ-aPI,2282 +torch/include/ATen/ops/square.h,sha256=e4KvE34EgrDnOnTd6m9EfNbsN9EKtBEMV_-Z0AwFwNM,1423 +torch/include/ATen/ops/square_compositeimplicitautograd_dispatch.h,sha256=xo0-A41iPUchBZ6E1Jk3qQuzVypJs2pQmMZHup0_Xzs,1226 +torch/include/ATen/ops/square_native.h,sha256=lKsznyzKFd9EbQjzR8Ge2RkYTPK7YqttZ1Psp9uPq5I,859 +torch/include/ATen/ops/square_ops.h,sha256=dJQh2m70S1BraIARQ4IcsDQHUh1tcJehact_DyEoWEA,2300 +torch/include/ATen/ops/squeeze.h,sha256=g3gXbhI_caJqHdx3Au6NHOKNySusUnawN104FuUJ5Ls,1466 +torch/include/ATen/ops/squeeze_compositeexplicitautograd_dispatch.h,sha256=ZSb1yOyzqe5O_D35hGbhCsDNYuUUqn0DXRMSAkiI2C4,1353 +torch/include/ATen/ops/squeeze_compositeimplicitautograd_dispatch.h,sha256=JVHvTW-l-udf6fAuRXEMJTTFnExQg1fC_iTpfDG6Xbs,1105 +torch/include/ATen/ops/squeeze_copy.h,sha256=IKc8Z-e94OyS-YqJ-q4u0MakENZ2Kb58c3Jr2hv4_ZY,2745 +torch/include/ATen/ops/squeeze_copy_compositeexplicitautograd_dispatch.h,sha256=7nDV0C-X_qZkEhNEWYl2sAjoIxqrSGnbmpdRWm6omeY,1539 +torch/include/ATen/ops/squeeze_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=ZsKfXMl5q6az4lo7xuMbL8J8XTZhNehfHjyM3AiTjNA,1204 +torch/include/ATen/ops/squeeze_copy_native.h,sha256=ICFWFY5LWrqAgt4taqvLKW91IxCekEhhFVucCwDlb2o,1194 +torch/include/ATen/ops/squeeze_copy_ops.h,sha256=0hEkbhzOho930mXLaR3ahNFgiSE4bbcyZWpomRDeSd8,4369 +torch/include/ATen/ops/squeeze_native.h,sha256=zH47J6V4oltQD24ko5toAMF3Gv2LjTXxpmS6eKN8Z14,1663 +torch/include/ATen/ops/squeeze_ops.h,sha256=sM6XFSX9RmWSc_-FUr4yxRGxqS9mA5t-opf6al_hXCI,5199 +torch/include/ATen/ops/sspaddmm.h,sha256=GCf00WUgI5klLqG9v4biTgi7xQgcRMmMjnh5XNtRom0,1861 +torch/include/ATen/ops/sspaddmm_compositeimplicitautograd_dispatch.h,sha256=Gqt36TJVgrsynX4Bu5jhgrpCoIcXDfD7y5BJw6UCAqA,1125 +torch/include/ATen/ops/sspaddmm_cpu_dispatch.h,sha256=V718TF-MF5Z2R6ABWt6L91UDLoyoQ26geGbvu6cmg8s,1287 +torch/include/ATen/ops/sspaddmm_cuda_dispatch.h,sha256=WSt5AH5f5s0zcN-pvdG-d5-F4NkGB0VOWgz-t3VCazU,1289 +torch/include/ATen/ops/sspaddmm_native.h,sha256=fX2tMqiLDgc0JecPQVJqqvhaPFN2h_mtWYSnpi1pGEc,1603 +torch/include/ATen/ops/sspaddmm_ops.h,sha256=qEu8LzxebW-oNipAhSdLtDtLJejE45P_eEkVejICDyU,2494 +torch/include/ATen/ops/stack.h,sha256=aMZdsxNT_JVDmSOHo8hmkcJGOnpOj091zDnkf_X4Cfs,1383 +torch/include/ATen/ops/stack_compositeexplicitautograd_dispatch.h,sha256=ZvwP0AOFPMgNQaNxuwQZXYpa6xPEq6HNJc8YD81w4_g,1212 +torch/include/ATen/ops/stack_native.h,sha256=6A10LdJLtHKKarlThokYrAWVHNPK7o6hJwgpGHNmTKw,832 +torch/include/ATen/ops/stack_ops.h,sha256=gn4mp0uSj5_0qhMZoPXDCVhvU_KapoUfdT9OLY25og8,1885 +torch/include/ATen/ops/std.h,sha256=Sn5EBPoguw5p7unsLVcSd-2D1bjvxp8N-_IA6G9QKDk,5125 +torch/include/ATen/ops/std_compositeimplicitautograd_dispatch.h,sha256=vh-g1_c14sj0iLWYrqSbLBoow8M5uyorqz5le_UdyiU,2275 +torch/include/ATen/ops/std_cpu_dispatch.h,sha256=rOfugf4oSD9EcGLjyNQJ8RVW-HKh8WyyBQAKbr4EL8M,1467 +torch/include/ATen/ops/std_cuda_dispatch.h,sha256=yrOm16B3Kzeg_zSI60BHl37n-dDsWcpnuo6JuyR_6fE,1469 +torch/include/ATen/ops/std_mean.h,sha256=OLB9DRQvFCmebTSoTVdF_ebcwZYNfh8NIaObTzhPAmE,3471 +torch/include/ATen/ops/std_mean_compositeexplicitautograd_dispatch.h,sha256=MGcesqjaQ_c87syWBMhvYTE26nxIV-8fOEQKS8iuN44,1437 +torch/include/ATen/ops/std_mean_compositeimplicitautograd_dispatch.h,sha256=BblMcekBck5mtdvUcXZPNT3J4W934QxfS05MZwmAIRI,1527 +torch/include/ATen/ops/std_mean_cpu_dispatch.h,sha256=_rbTV-XV9by8EEazPrj_t_0P-1sIIrtOVpJ7PUxQfEU,1128 +torch/include/ATen/ops/std_mean_cuda_dispatch.h,sha256=dGs3PuoL2P6U_B0oQiOs5KUOr7KjYk8c5HSOSSMxA2Y,1130 +torch/include/ATen/ops/std_mean_native.h,sha256=iSULCV6JEz-Bt0jGz8RA2_NLIc8qyRD0lHnyy88B-Nc,1691 +torch/include/ATen/ops/std_mean_ops.h,sha256=oN5hV1aMzT93kGWGdks0y7a69VdvWl0UJm6kh43wg9A,5950 +torch/include/ATen/ops/std_native.h,sha256=W4VuPglZYrMxCUVgCSiEmnvaXIfAWhEC0ndrSrTlk1k,2266 +torch/include/ATen/ops/std_ops.h,sha256=2mjyC0TWbl2mfA3In0vJx1hc8vTe2m7DUQvbrs7w87A,7758 +torch/include/ATen/ops/stft.h,sha256=pUAXR5Z9uP9mfVWWuM2zXVYu4kX66kjOWW0RIZ6fEKo,2326 +torch/include/ATen/ops/stft_compositeimplicitautograd_dispatch.h,sha256=fq-SB2m1ZGwvor63KYlNYaUpOmdt-ka16-0riYisvcs,1770 +torch/include/ATen/ops/stft_native.h,sha256=xPgk-E3809JgwkfSLVYg5CTZLxtae7BTyCnBpGTb4SY,1521 +torch/include/ATen/ops/stft_ops.h,sha256=AO0RvgR5c_Uj9E2qv6Bgb9RX09AM7oa4TkkyK8n-Sf0,3599 +torch/include/ATen/ops/storage_offset.h,sha256=LwVkr21lne9Tvhv4VpkhPBmJ4R3EqqsnHh2RucP0fbo,765 +torch/include/ATen/ops/storage_offset_compositeimplicitautograd_dispatch.h,sha256=6QBhFnrSRgeTyixmlNKMUmy3B7iJE8U4StaV9jQ2DqA,1023 +torch/include/ATen/ops/storage_offset_native.h,sha256=SeXnb_KzBlSpPXPOj_Mc-QKCYTwlNH9nyTOFpWRyOyw,735 +torch/include/ATen/ops/storage_offset_ops.h,sha256=rnrw3CplU-F-BquJnOSfY1Ohs5mhRlkllz7SBE-3q5w,1223 +torch/include/ATen/ops/stride.h,sha256=sInTcrRrdIimjiCjUtzDIhlTCSfzu6_sXBED-u_VbVo,1111 +torch/include/ATen/ops/stride_compositeimplicitautograd_dispatch.h,sha256=ZFVhKk4rHIj2XHrd_U1d0zhGPEcjSK_HX8fInlhRSAQ,1096 +torch/include/ATen/ops/stride_native.h,sha256=Q7fwpCln3h4T-GapAHqDP2i8tVvpA9nei7x265bY1Tc,808 +torch/include/ATen/ops/stride_ops.h,sha256=jrkWUwA5907rbqMhhVbutYeWfBvBqSK_7KUJMLXyFlU,1825 +torch/include/ATen/ops/sub.h,sha256=MYqpBoJLT6QWdCXNB-soiiYtjcoMpuMjuYDht_fuFQ8,2392 +torch/include/ATen/ops/sub_compositeexplicitautograd_dispatch.h,sha256=f8GQBnN6cbZTLfhmkvqs78JiUfgN5TUnFiMelG9M25A,1428 +torch/include/ATen/ops/sub_compositeexplicitautogradnonfunctional_dispatch.h,sha256=tSjvcBgF5VHlZo6mbEdM-tKUum6YSLhG3wJg-fJ-Uag,1197 +torch/include/ATen/ops/sub_cpu_dispatch.h,sha256=wlywFWikE1X9FAEVaocFH4deo6I857FfFOoKSmk0AKc,1384 +torch/include/ATen/ops/sub_cuda_dispatch.h,sha256=3_CQhhSPJB8Xtxl32zVdmPLWNPcnaSbaO28m4BBxl58,1386 +torch/include/ATen/ops/sub_meta.h,sha256=QWUlFb4sqT61UPmwMyuIfVQbrfDC2OnLLZ_mWuBtv1g,877 +torch/include/ATen/ops/sub_meta_dispatch.h,sha256=gEke6lfMhGgzXCmUirOAVAYw3nuBOEsdASP0_aAVzzs,1386 +torch/include/ATen/ops/sub_native.h,sha256=g-aT-d_XtN9_3eygYLCyvCTF3ZFYk936RqNlbbE_Hrs,1837 +torch/include/ATen/ops/sub_ops.h,sha256=TZPEReaPghV7_6Zk-V3pMCRR_TR5sgXVhSH5KhA0_cs,4986 +torch/include/ATen/ops/subtract.h,sha256=Q45eKrr1fKZAxjez13K74pSMaQVzco5Y4PDww9jCPHw,1863 +torch/include/ATen/ops/subtract_compositeimplicitautograd_dispatch.h,sha256=Fln9p4a7kdCr8BIq2Jv_ejV2U_kemdIMgEv3yHvZmrI,1665 +torch/include/ATen/ops/subtract_native.h,sha256=SXUK8e_f5VMfHFm0DwiTfUN0ViNiuIt2GsdAnIhN7OE,1242 +torch/include/ATen/ops/subtract_ops.h,sha256=MLfovAPIBCPyMlCUxXO7O7i-ehB05M7IBdOpezPRUuc,4285 +torch/include/ATen/ops/sum.h,sha256=2HWkcxc0bZOHg4P8SMRm4pXqCNUNio8k-G_85pFVtzY,3661 +torch/include/ATen/ops/sum_compositeexplicitautograd_dispatch.h,sha256=Zqeei8aGYMkjMdGYlzIj2a_8LLXe3Y4TNiOpBvNGCbk,1313 +torch/include/ATen/ops/sum_compositeexplicitautogradnonfunctional_dispatch.h,sha256=6OMDNRMBC_1bdtDFzODgwkObyGRUC4m88xaMPRHjZXA,1144 +torch/include/ATen/ops/sum_compositeimplicitautograd_dispatch.h,sha256=_cHp8x4eMmzDEBrfK9XMDLQnuKMHH-miW4BJFmUqVrY,1430 +torch/include/ATen/ops/sum_cpu_dispatch.h,sha256=tnvEV4VVVjQvFS2Y8B7u17g2G8zSLbUhe3dFvYJ1quY,1410 +torch/include/ATen/ops/sum_cuda_dispatch.h,sha256=HTtoGmZhrv1YuW2EFhTViJYX3AFtIpLZoXjlI2yN9Mk,1412 +torch/include/ATen/ops/sum_meta.h,sha256=Wiq_jbANgPZv7XqhNrCZPfcAbW8p6ae3i2bxz-B0mY8,912 +torch/include/ATen/ops/sum_meta_dispatch.h,sha256=kuoLlkGprcuL23_1S7q32G6SwsdNC5YoK0tq8LQkiIw,1412 +torch/include/ATen/ops/sum_native.h,sha256=pm8BdxAUUBy85R6c3IhkG94YgCL3vIRWPjoM0DKhmUA,2179 +torch/include/ATen/ops/sum_ops.h,sha256=hoBVoK1v5BP2ej5EttPnTHRij-XWyERO8dNnD7Bfkfg,5446 +torch/include/ATen/ops/sum_to_size.h,sha256=LodmqMNMI_iyxirxS661UHUDbgcwUgNd5ee4stDg9BQ,1261 +torch/include/ATen/ops/sum_to_size_compositeimplicitautograd_dispatch.h,sha256=jr0I3ZTISd2BSrRxpisHDYrSw-TfpyeNt-AqT8JyI7k,1137 +torch/include/ATen/ops/sum_to_size_native.h,sha256=fMQvE6pcoo60o4GG2mK-pVKHUAbpdIbj7FL1cEXy-6E,768 +torch/include/ATen/ops/sum_to_size_ops.h,sha256=MpgsrwhZGkGR0t82hvmLWx2OyShelBCxwmX0d7mKdFA,1314 +torch/include/ATen/ops/svd.h,sha256=ZmGkzEtE2hejqYdbyzFBwfXWGcfSVDiZ4RPDHkC9Z2U,1839 +torch/include/ATen/ops/svd_compositeimplicitautograd_dispatch.h,sha256=86lNN8QpkMUKK4ywF4lTbcilYohIoU3zjJY3PO1MDtw,1446 +torch/include/ATen/ops/svd_native.h,sha256=29sB2pVpERq3myRjUcxcQsQGdr9zjIBFq6CfPIHLJ5c,974 +torch/include/ATen/ops/svd_ops.h,sha256=ShDjnRQF7WjasPTQdUZ2kxmkV2E1tgJ-wXKkMv3qkow,2387 +torch/include/ATen/ops/swapaxes.h,sha256=29t8aYD9AadJpL94IIqTAbeLCtMiD0CpdM9Qz-CYreM,971 +torch/include/ATen/ops/swapaxes_compositeimplicitautograd_dispatch.h,sha256=hB1PurvK8WFYBgDQGSAJYFq58jIPRo-stsWi4VcMQnY,1133 +torch/include/ATen/ops/swapaxes_native.h,sha256=F80B2j2UN0lh7Wz49aqG8XrQRjZ7O-7FTZ7IJq1k9ds,845 +torch/include/ATen/ops/swapaxes_ops.h,sha256=0WvJ4_MIi3tSxw7FqV6XHIiAy5aAZf3TTO82hXy0V20,1928 +torch/include/ATen/ops/swapdims.h,sha256=1kYVp-XKCe_sdPfkoW5mBgh-I3WuzRytJlK6ctolnlw,965 +torch/include/ATen/ops/swapdims_compositeimplicitautograd_dispatch.h,sha256=V997x7yfEy5GAgLmlEWpmCy2GZr8C3qxPgpa3pldPq0,1129 +torch/include/ATen/ops/swapdims_native.h,sha256=5oK3MGVh6NzNMr8OyLolHAhKWV-wAJbXrAzDjvpGfHc,841 +torch/include/ATen/ops/swapdims_ops.h,sha256=nOzW_mchJnSlWG0zziJb0xqgGqHTBj0Tzi6qJVFUw4s,1916 +torch/include/ATen/ops/sym_constrain_range.h,sha256=920VqtO_BcyYZBTg9lFKZDlBe-RvK5PDMhL0Ba6bieo,1066 +torch/include/ATen/ops/sym_constrain_range_compositeexplicitautograd_dispatch.h,sha256=TvCSeIOQyBnbOIBTssN9TaRzOQU-It_r0SfUM3-Wt3o,1115 +torch/include/ATen/ops/sym_constrain_range_for_size.h,sha256=22zDubFHrdSL9v8EH0CXfhpLhYrxmx3GCDZmbhG0STY,1102 +torch/include/ATen/ops/sym_constrain_range_for_size_compositeexplicitautograd_dispatch.h,sha256=hcZ-2ee1dcMBOJYP6p4nAmysKvGxbL_1ympEzo0SEE4,1124 +torch/include/ATen/ops/sym_constrain_range_for_size_native.h,sha256=V9Pu25AdeESmbhN5X_Sk61QlmEsPHveq86Trl6UX-8o,836 +torch/include/ATen/ops/sym_constrain_range_for_size_ops.h,sha256=6Vp1eZJOedqk7QXKg1-UH1QB59M-HHSQyA6NOX6zCJ8,1460 +torch/include/ATen/ops/sym_constrain_range_native.h,sha256=nhPlVm12i5YGm5Tn8y__6TqwvMGDfgl3snli34V7SCw,827 +torch/include/ATen/ops/sym_constrain_range_ops.h,sha256=xx-2cHXUgNvFb1UX_xACI572JLqDO3hWMazv9wpsePU,1433 +torch/include/ATen/ops/sym_is_contiguous.h,sha256=545hxC-VtPox5g4DivnSCriq5LqfQwK1i6NuoVL4Urg,1072 +torch/include/ATen/ops/sym_is_contiguous_compositeimplicitautograd_dispatch.h,sha256=EtqpN5fJ44t_34qhmGV-C0Q1JeA_DBIeazqCKsRW_OQ,1093 +torch/include/ATen/ops/sym_is_contiguous_native.h,sha256=3RShIYGXpoNhpAQl1Zoe28DfJQ8zcHqpIaIwjQUDlsA,805 +torch/include/ATen/ops/sym_is_contiguous_ops.h,sha256=71V5VljVovxsHPIJ8TLXgT9fG_IZm2waAuajYfdQUkU,1379 +torch/include/ATen/ops/sym_numel.h,sha256=U7TIu_SZShOaHN_U0CHLIjLNPjab3dbBLluJhIZ-AMw,915 +torch/include/ATen/ops/sym_numel_compositeimplicitautograd_dispatch.h,sha256=WJtd4KNS4NlRaE_Mf0OKqoEiDwBsSk-_M1wdDvp6MDE,1022 +torch/include/ATen/ops/sym_numel_native.h,sha256=uWIG12AsDJhTVvdtD_dBf3312hpWVAE5WKSH7Fd0wCw,734 +torch/include/ATen/ops/sym_numel_ops.h,sha256=Amr4Dm9Vyd1aj_hA43G3oEJPB_S9v9X4KdpQHhnibq8,1223 +torch/include/ATen/ops/sym_size.h,sha256=YMBukl2X2EejU3pBn0vq8SBP_RZJf9xaHZxFj4BH2sE,946 +torch/include/ATen/ops/sym_size_compositeimplicitautograd_dispatch.h,sha256=vbLHrJfuxmDBvetS4XZ0PAJveyv5dKl_C5Qz-5elcVY,1034 +torch/include/ATen/ops/sym_size_native.h,sha256=edxQty447HlHRaNToij0mdamySiHpHOIRaxKEwPSorU,746 +torch/include/ATen/ops/sym_size_ops.h,sha256=EdhRVhPryJC_WzSDkzQ0Ey2FIuCmKst9EwFKDbnlDXY,1275 +torch/include/ATen/ops/sym_storage_offset.h,sha256=ErnY_L9r4RDI7JVm-vbNfh24IcPr9KRAFV3Q-DSXc9g,951 +torch/include/ATen/ops/sym_storage_offset_compositeimplicitautograd_dispatch.h,sha256=E6cKLs_DkINY2sQ7QOQEZLDsH3_g2zykHyIIR-GWTHk,1031 +torch/include/ATen/ops/sym_storage_offset_native.h,sha256=3cr2k0TMkIsXHRH0bUpGD5F6JTrCQjg0iEysW4j3MqQ,743 +torch/include/ATen/ops/sym_storage_offset_ops.h,sha256=rnQF8QUvu3D6iHbsD7UvCvLFQsU8ZlAtnVi_UHCEdGs,1250 +torch/include/ATen/ops/sym_stride.h,sha256=tuCUaUTJ3sIRmH1EHh5cOkp9mKlO_Y35JuVp4gQ38SU,954 +torch/include/ATen/ops/sym_stride_compositeimplicitautograd_dispatch.h,sha256=jYCNOtxkAX8QMBEWhaNhJ2L84392g_3-DDLuyv6v0Ik,1036 +torch/include/ATen/ops/sym_stride_native.h,sha256=oiBaRgEY-s-uEXhvmQCGeyjYTzAaXLuVwsn9jNHE7Y0,748 +torch/include/ATen/ops/sym_stride_ops.h,sha256=niaNctuWgckNaqbYcNKZepDU-dV_i00ZibxxBjPOjZY,1281 +torch/include/ATen/ops/t.h,sha256=u9g5X1-el2ibTTDSTEEWH8a5U7aoLdD9Cazdok_vtFc,877 +torch/include/ATen/ops/t_compositeexplicitautograd_dispatch.h,sha256=HGXpPcJ8yoJIbS8RXC669bcIkQDeKD80eT4irFyJQHI,1059 +torch/include/ATen/ops/t_copy.h,sha256=7JteRF2KvB6-IYXJv9cce4ThAbdZXuhV5VqDOWVlrA4,1281 +torch/include/ATen/ops/t_copy_compositeexplicitautograd_dispatch.h,sha256=m-nVK9W2tzdV9yjvZ7VIISNtTZpcDbFSL-nLz3uyRUA,1121 +torch/include/ATen/ops/t_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=SkPqxSVglOra5Q-HrMBxMRkx8HTe6le1rc_YRG2NAjk,1044 +torch/include/ATen/ops/t_copy_native.h,sha256=qgQDpbr__9ImbYmJTadCNgdN7_S2TtqRZHRdKkuXlD0,808 +torch/include/ATen/ops/t_copy_ops.h,sha256=iHF3QUMZ9_okqOLGirzFBEHOpXYbaDy473l5lkblOgc,1801 +torch/include/ATen/ops/t_native.h,sha256=Npm4nLUEvm-88NgmL1BaTVZ95i5SQDvukPAhQbtZlRY,771 +torch/include/ATen/ops/t_ops.h,sha256=XXWy-LxZUlJF70KheMCktUoIJrT9TqhHRph-9hEFvOM,1686 +torch/include/ATen/ops/take.h,sha256=h9GX0DT2urGGw2U86S0Mw556saj3tlVAkSsTtP4Won0,1402 +torch/include/ATen/ops/take_along_dim.h,sha256=XOHQnR2X8oeOETCx_bM6flt64BixVLjhzbX72xhiJaI,1700 +torch/include/ATen/ops/take_along_dim_compositeimplicitautograd_dispatch.h,sha256=Gfq5Pm4N_K6TazsL81p6LGq-MT14H_Ywbl4ewL_OV3M,1403 +torch/include/ATen/ops/take_along_dim_native.h,sha256=_uspp1VN-9qn0Ijv4x_Het0ndOdCONiPIA7BeEsEgGI,955 +torch/include/ATen/ops/take_along_dim_ops.h,sha256=0EaGtFKQaK9GVN6nJMkBd67BwfwHUi9RTTMbaWUgZgA,2235 +torch/include/ATen/ops/take_cpu_dispatch.h,sha256=7FWXQJj4mjC5DDzvCcyFWIrKRILuFTnJIzg5HCIDWYU,1203 +torch/include/ATen/ops/take_cuda_dispatch.h,sha256=W7pCDCHcS0Zeqwk0U0ZEtQO3S4TGrclVP-jpOjPiPvs,1205 +torch/include/ATen/ops/take_native.h,sha256=PtbTYdgmS0DmEMgiQDkfCIG9ZvEeZ6Tkmk4SIYBK7TE,856 +torch/include/ATen/ops/take_ops.h,sha256=eUuVYWUGMPVcDXv91rDuCGo1CbSL54xkQ93NR6hmtCw,1961 +torch/include/ATen/ops/tan.h,sha256=Qg8l1Z-sIoWsg7ZVx93-RgtyNRlZ_-V5kV7y3vOAdSo,1384 +torch/include/ATen/ops/tan_compositeexplicitautogradnonfunctional_dispatch.h,sha256=w4l5wEuQHx4oK9UYiCKkhhvljve0ZQJTukuJ8u4it1I,1089 +torch/include/ATen/ops/tan_cpu_dispatch.h,sha256=trzZfZn-aDVkyhVio_K0AKNJR8KEULZzks0eBhQY-gY,1170 +torch/include/ATen/ops/tan_cuda_dispatch.h,sha256=cV7wjgxx4DrJjIAH9MP7R6Z48DVU6zcYSrd3iEjIlrA,1172 +torch/include/ATen/ops/tan_meta.h,sha256=lhLoE-k21uIROQU6KgNiSfx6sEiPYmELsqqKSbP8Cis,818 +torch/include/ATen/ops/tan_meta_dispatch.h,sha256=yZY_4gYPtWeSF2ScksoS-7-R006Oy1e_IWdauAHMEO8,1172 +torch/include/ATen/ops/tan_native.h,sha256=Hs6jUWODlLEQGErWtVVAywRsxHXxT62xbiCoRzHhhCY,1243 +torch/include/ATen/ops/tan_ops.h,sha256=UqayTHgIMHv66ZTJ1Jgm9rqZ4BrAEU4yfc2EKXJnHdw,2273 +torch/include/ATen/ops/tanh.h,sha256=kYp_0mwFqISveSTqRtTKYBfRdqVaG5ocIldAaU6HQkg,1397 +torch/include/ATen/ops/tanh_backward.h,sha256=ezRTu-KK2nhpBGZ7GicCvGZZjUktKxWZ7ny3yKiaJak,1634 +torch/include/ATen/ops/tanh_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=gJVoxe-WXmZeREyVz-QfYCERYWAivd2YdiNb-PqvR5g,1085 +torch/include/ATen/ops/tanh_backward_cpu_dispatch.h,sha256=e-mpAqy1J4hfXuf2vOJKuvAbnRqNZP4qJu8c_hfvLbw,1268 +torch/include/ATen/ops/tanh_backward_cuda_dispatch.h,sha256=nufDEwmP5T_896-UkyO4dVCW679J0Q6BiHUDMae2G9w,1270 +torch/include/ATen/ops/tanh_backward_meta.h,sha256=TAXzJe2rbGsOtSbf5XTKFoSHTnVlglT80tKmvJIgVPE,862 +torch/include/ATen/ops/tanh_backward_meta_dispatch.h,sha256=yJf7-YwZXPFeDJe_Bz3PHMLL0HPAYDy3KhypxUY8WPI,1270 +torch/include/ATen/ops/tanh_backward_native.h,sha256=DUJO-_IQirCBHVwmL1M0SKTyR_vRPvWD7FeZrfkOwVo,912 +torch/include/ATen/ops/tanh_backward_ops.h,sha256=BS3ybMiHGVtkPfYFZ0CjO__3IRbW9MXs0zfb01XUMOM,2105 +torch/include/ATen/ops/tanh_compositeexplicitautogradnonfunctional_dispatch.h,sha256=aqKJ1EwOsNGD36l-9LXJXkUnPuRN3TC8eb38yjJHkbQ,1091 +torch/include/ATen/ops/tanh_cpu_dispatch.h,sha256=2SsHyPlvZlX4-mIwk-6USAQKZWgeSfLQ_xTFHK2N1L4,1174 +torch/include/ATen/ops/tanh_cuda_dispatch.h,sha256=hKlzb5VLTVOu6BQ7iQMr6dC5EV-WHFbrKkCJA--vSZ8,1176 +torch/include/ATen/ops/tanh_meta.h,sha256=hkBWNzudzO0DCxSe9tnMWdKkOaSGaHYNFpgUjmmEaIA,819 +torch/include/ATen/ops/tanh_meta_dispatch.h,sha256=ykbeNysj288-4T20qVbMWKqs7T-ttRkV3pFyGNytRjc,1176 +torch/include/ATen/ops/tanh_native.h,sha256=kueQZXBZYfIHkwT8DXIsVow6iDGYDhYaAyecTk0u8wU,1560 +torch/include/ATen/ops/tanh_ops.h,sha256=7UuSsFu0a67RTSALWkV_L1uK1zWWxzKYf1oYDc_ZEXc,2282 +torch/include/ATen/ops/tensor.h,sha256=bCjxWtrcaqT6yjX9fpCSrf8rjUqUPYy-GyFTcJATMZ8,1885 +torch/include/ATen/ops/tensor_split.h,sha256=efT_6_tZiIzuLhijUBrGBAIzGkeFy3AWC0_ji_iCVb0,3460 +torch/include/ATen/ops/tensor_split_compositeimplicitautograd_dispatch.h,sha256=z7Nj8nXQB2YdKOkxakeSAtLLLVJyjauhXgqj5bYLlUw,1569 +torch/include/ATen/ops/tensor_split_native.h,sha256=k28PvuZEpNl3WEazefvMr_fe4BZP0n0V2Of13lXfNcY,1075 +torch/include/ATen/ops/tensor_split_ops.h,sha256=sYJ_EBA-YWX-oQzGW_1F8XSU0HvG6KhXoeQUSTTmY7A,3026 +torch/include/ATen/ops/tensordot.h,sha256=QPBJ_4TojGG5yd0p4N-MHzRiLmmbVLCRdrneu5-SAzM,1791 +torch/include/ATen/ops/tensordot_compositeimplicitautograd_dispatch.h,sha256=tAuEPyNR5kz_zRUhD2tgienUrhF59yhVOsN-ukwJsEo,1427 +torch/include/ATen/ops/tensordot_native.h,sha256=VwWQpfG0Ed3MlG4d1tnbl4wECAlwZ4a2wY5VJyTJ6Q8,976 +torch/include/ATen/ops/tensordot_ops.h,sha256=kbv4o4q_OKRIKxIunsKAs6c1prBwj4bbuD8_n1o7wW0,2349 +torch/include/ATen/ops/thnn_conv2d.h,sha256=I6YSsJNiruV2dYqPhLaRmcb4RkYboe-rSoGAW1D7Sqg,6874 +torch/include/ATen/ops/thnn_conv2d_compositeimplicitautograd_dispatch.h,sha256=a2rbACf0HJVGCfxfmDeAKMr9IjcTBwDSH8KysBwxAt4,2435 +torch/include/ATen/ops/thnn_conv2d_native.h,sha256=daD5ULTl-Nz2ftBRfic8sMaBTh5n7IIajxjZ7KXK9uk,1119 +torch/include/ATen/ops/thnn_conv2d_ops.h,sha256=OkQbjfqI4nUo-3eyGqa6SV8I4iKv3H9rTtynvlWDgLE,2903 +torch/include/ATen/ops/threshold.h,sha256=sAc16VXqsKz9I28SSH19oEVP2L_YZ1midyk-hq9_7t0,1886 +torch/include/ATen/ops/threshold_backward.h,sha256=DNi6T1wdRP38VeX0DlU4YfVhNtsgATfyshtynOlkXHM,1843 +torch/include/ATen/ops/threshold_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=N8Pm9v2Yqvy4bA8Kq6Dg7lf0abc-HDCnjV7CmZZpy9I,1118 +torch/include/ATen/ops/threshold_backward_cpu_dispatch.h,sha256=u57AxRobSuYCdoRkgMFDtVu35g9w63sshTpTsDauDmI,1367 +torch/include/ATen/ops/threshold_backward_cuda_dispatch.h,sha256=j4KfV8-UwIgMVJqVLpmczXkBdCbiaYp7jCZpd0Jw0P0,1369 +torch/include/ATen/ops/threshold_backward_meta.h,sha256=6J4aA7eeiPrJ4f61hZp7axEzRP8gYCDLHgszmtfq6eA,895 +torch/include/ATen/ops/threshold_backward_meta_dispatch.h,sha256=EvDNFutPr3Q8m2vACRHh08kM3voarQ70AInP6CAxQmA,1369 +torch/include/ATen/ops/threshold_backward_native.h,sha256=xIfOi-zOnZfD2m3bUQ9RQGwLp65OlBM5Qt7CviWDkZI,1845 +torch/include/ATen/ops/threshold_backward_ops.h,sha256=nt6VB43rGB7Sqq5WdVXO1cGVHNay6mSzhITohPmQlao,2319 +torch/include/ATen/ops/threshold_compositeexplicitautogradnonfunctional_dispatch.h,sha256=u_TGVLSgM00QuS3dX7or-r6ioFl_EME2RYoHqzFxAJA,1213 +torch/include/ATen/ops/threshold_cpu_dispatch.h,sha256=MDKpKlo2S5MlKBI06NM9Z-8sClebfx4l-I3k751sCfM,1418 +torch/include/ATen/ops/threshold_cuda_dispatch.h,sha256=jH50Z8yjlC3826l4ey52VkGCHjbJUSgjLZlxEHIq32Q,1420 +torch/include/ATen/ops/threshold_meta.h,sha256=GlsZ8nQLei8OHJVb5wDJOT5OrcA-ZvlOXVAXZZN2TW8,880 +torch/include/ATen/ops/threshold_meta_dispatch.h,sha256=No_lE_Wzu9U-tuplhJJfHaDj2V24xOxmIJSHd6Rl3yU,1420 +torch/include/ATen/ops/threshold_native.h,sha256=0e-KNb9oVqqsI1jsuR0UItVc6hsmtZXO0N9qLUzjubY,1042 +torch/include/ATen/ops/threshold_ops.h,sha256=B9Gw65He73UbJoWuxNsjbsQo_TuMIT9bi-daG5xIWIM,2879 +torch/include/ATen/ops/tile.h,sha256=GL5i3V9uVv8n0DRi5wMZAdmybXdupU5TE3b6mRIioQw,1605 +torch/include/ATen/ops/tile_compositeimplicitautograd_dispatch.h,sha256=EMeOEP8hHt3rmptFkE2CpFe0BM0BfaWeR_FNCTEMHQM,1123 +torch/include/ATen/ops/tile_native.h,sha256=j6v1wvEv0nqUwUJmMgYiXmrtw3MH6pKoi8wR4pEiTk8,761 +torch/include/ATen/ops/tile_ops.h,sha256=tll5NeidjQL9VeIZnMjXkHxtHXJZwHLuptuMlMl0hzQ,1293 +torch/include/ATen/ops/to.h,sha256=uk72uhzpd6xE_3F6SvmPNmULI62M3k_ShTOKOA_rFnE,753 +torch/include/ATen/ops/to_compositeimplicitautograd_dispatch.h,sha256=yQSNN-RKv0JwetkpoiVkI0pPHKNSoArSQuUvFumnn2w,1981 +torch/include/ATen/ops/to_dense.h,sha256=fHv8fHMwxJGM2YVgQbJP6_23jOWA5SFyLuP913EAOuE,759 +torch/include/ATen/ops/to_dense_backward.h,sha256=UMW-FWpJkh0tMXDqgJ8QxmlzcZiuG3pY6sxlEqBt8O0,1069 +torch/include/ATen/ops/to_dense_backward_compositeimplicitautograd_dispatch.h,sha256=LkbNxyMzNtk_lZVf7z2W86kfCh7uNP9_6W7unfF9Z2g,1105 +torch/include/ATen/ops/to_dense_backward_native.h,sha256=sak20s57gMHKoxbh2Ne2ZV51bgu2BeH1rsQZNgFab4w,817 +torch/include/ATen/ops/to_dense_backward_ops.h,sha256=1oUiWlfJGgPdKtLlxjHXXNadQFHOi5GzMp0X6vlXJek,1447 +torch/include/ATen/ops/to_dense_compositeimplicitautograd_dispatch.h,sha256=O7IQ3pznnIwtMXSNfXDoAJ4YQX2SxDWPUSuuWYFbAsU,1124 +torch/include/ATen/ops/to_dense_native.h,sha256=tLsx6TKoPjONACfnWgE2-oYdXwBHOl0rcHpBA8qF1nM,836 +torch/include/ATen/ops/to_dense_ops.h,sha256=wc95r1ro0NS9XGXQpbPIkbHsqe6BcYSjhn5ys1grDXs,1472 +torch/include/ATen/ops/to_mkldnn.h,sha256=JHw_YSLFe7KqbePdPnoUz6ixm2fYvJ9wX3qcHQf8tsY,1322 +torch/include/ATen/ops/to_mkldnn_backward.h,sha256=9jg9UojKNEQ5F4j7T125Q0G8__l5IIFFtjjwFJRiZ0c,986 +torch/include/ATen/ops/to_mkldnn_backward_compositeimplicitautograd_dispatch.h,sha256=AeolIabuJhnL-KIJNzvifupaSFe3Ez7FnU3lWzxLE-0,1056 +torch/include/ATen/ops/to_mkldnn_backward_native.h,sha256=-W4ODuWCpk6TQaJhvjsaj_73frS1xSghmtO32KGseA0,768 +torch/include/ATen/ops/to_mkldnn_backward_ops.h,sha256=fSjcp3eQnzz7U26tuKqdyuFqvdx72duQXkLykDQlMdY,1333 +torch/include/ATen/ops/to_mkldnn_compositeexplicitautograd_dispatch.h,sha256=JXldsfZXgtVaBBfRBIqFCiLkLMeGkGrtEm1adVgiofE,1220 +torch/include/ATen/ops/to_mkldnn_cpu_dispatch.h,sha256=kSek53SiILCJynzCJaO26d7yMmjZUym7sty89vLjBoE,1031 +torch/include/ATen/ops/to_mkldnn_native.h,sha256=gjxvDLEhNhuNCE5oFBI5Y86Aa6iHVc6Qo8hcub_7LbQ,913 +torch/include/ATen/ops/to_mkldnn_ops.h,sha256=I6ekRQWBZuT4vTDnS4A7DVSxPpC8vtWmIUEy7p1nbD4,2089 +torch/include/ATen/ops/to_native.h,sha256=varHgkKEtnW0GNu7oenaL3VJoWqEGhrdh269h0OyccQ,1546 +torch/include/ATen/ops/to_ops.h,sha256=iCZ0RF6M7hDvQ_DgtLHG0_z7hixbb1Gq67ObZGpxVdE,4706 +torch/include/ATen/ops/to_padded_tensor.h,sha256=fkYjvDqjUpX1dUugGLwT-HD2ulP_1KY3IgBPyXu54yc,4601 +torch/include/ATen/ops/to_padded_tensor_compositeexplicitautograd_dispatch.h,sha256=Uus528eR89tjNORMGNb7utCX81nWIqmQ-oedY5zPdYg,1580 +torch/include/ATen/ops/to_padded_tensor_native.h,sha256=hjsUyz5UrWxh0cPj7RLcil6VP81OOkfdSm1hc3Fi0y0,1130 +torch/include/ATen/ops/to_padded_tensor_ops.h,sha256=vxjx21fIaaCt5FnKvpmLKUF82JL2aBe2bU4mek4DPGA,2243 +torch/include/ATen/ops/to_sparse.h,sha256=Go8Ymb444cQPIoI0KpK7M_XqOKUqct5DvkcVvoSPheg,760 +torch/include/ATen/ops/to_sparse_bsc.h,sha256=84KDYvlR5z0LycGO2TLL6apJ7Le15v0AbZ3Q-SXOIoc,764 +torch/include/ATen/ops/to_sparse_bsc_compositeimplicitautograd_dispatch.h,sha256=vUxLgeTpjKdKGkPaQ6RrKrqEpeQpWQolwf11y1pQKWk,1103 +torch/include/ATen/ops/to_sparse_bsc_native.h,sha256=KaGHyVPlJ2O4SSmuQmFJYj0seiak1nFNWImOdoSiurQ,815 +torch/include/ATen/ops/to_sparse_bsc_ops.h,sha256=_LAnxrmEMAkz5Eh_XbzA5ktyCSgGhBvnpC69mG-4PDQ,1440 +torch/include/ATen/ops/to_sparse_bsr.h,sha256=7Ku9qtqm-THc32tRHnmOrUwyLRNeBt1bv0aKtaxf64w,764 +torch/include/ATen/ops/to_sparse_bsr_compositeimplicitautograd_dispatch.h,sha256=bUBegCGsWMbrMyPXhq782MqQz3awVEhSx5Hm0Ajxy3g,1103 +torch/include/ATen/ops/to_sparse_bsr_native.h,sha256=yDGMOHQh9vZFkWxhZAnm4rRAFWrHfTkWND5yFZfOTBM,815 +torch/include/ATen/ops/to_sparse_bsr_ops.h,sha256=JMsERtHsi5h17jZUlS14g0Qi6w45uQ3uCXmoWE3RxZA,1440 +torch/include/ATen/ops/to_sparse_compositeimplicitautograd_dispatch.h,sha256=T00rrQPvK4bqSQgAH-p9baMMbkD6gR-zri8UuBzJyzo,1250 +torch/include/ATen/ops/to_sparse_csc.h,sha256=0JHiT62bxrfu1td4bD9vq41GRkUFJ_sOs7pO46NWoyM,764 +torch/include/ATen/ops/to_sparse_csc_compositeimplicitautograd_dispatch.h,sha256=xIuO2y2kWSL_MtrRa8WCigMx34yd5G6zYZ5EcdhHycw,1076 +torch/include/ATen/ops/to_sparse_csc_native.h,sha256=llKNNxMTC2Vcf2Haurb7_HeEt7Dh42FGUNWNcARBvGY,788 +torch/include/ATen/ops/to_sparse_csc_ops.h,sha256=7WoXLai8dIuBkdMDUDh58Sdv3di80fO3NTYIXT43yVY,1351 +torch/include/ATen/ops/to_sparse_csr.h,sha256=L7QN-fW21xFE2qVQ4f8n5is1Qq_ti8h6a4TXiTCHxcs,764 +torch/include/ATen/ops/to_sparse_csr_compositeimplicitautograd_dispatch.h,sha256=UFV3BsJtY7yuZm-O4QExW5JEBBkxQA02TSZAMOQBBh8,1076 +torch/include/ATen/ops/to_sparse_csr_native.h,sha256=OKZtEXULBHoeJ2OcdzlvF5tKskiI3sbMRJr_Ipyj3QI,788 +torch/include/ATen/ops/to_sparse_csr_ops.h,sha256=n0LzU3IGgbGQi8wMdIiUFCRBt_MJFNmWauHl-3h_2Wo,1351 +torch/include/ATen/ops/to_sparse_native.h,sha256=rB39ccyiEwXsHa_DD_h1OaGs3QEiS30Gr_0KscDs9lc,962 +torch/include/ATen/ops/to_sparse_ops.h,sha256=V5l617qAoin5ADySrMoTGfEdm2USv9JcpDdEk68GyrY,2189 +torch/include/ATen/ops/topk.h,sha256=DJFAcnv7bdIkcMnRbxcY8VtX5d4AvvtBK5UwqibhSuA,5377 +torch/include/ATen/ops/topk_compositeexplicitautogradnonfunctional_dispatch.h,sha256=CYzlMPJGjTKBB9dpmfPiiG6DWUjQRNLBgqEYlqNenjA,1283 +torch/include/ATen/ops/topk_cpu_dispatch.h,sha256=lVrszZjuylFDrJEwodgBK5lVaABxUWmMkssMAACatLQ,1979 +torch/include/ATen/ops/topk_cuda_dispatch.h,sha256=tKCkxpc-E4HHeHfKCfBjNkSe8DYJjsR1nW4rsdVzB4U,1981 +torch/include/ATen/ops/topk_meta.h,sha256=22NNNTMoDh4WMXbJazzj8TlmY0QcN-6oA716xi5cVy4,870 +torch/include/ATen/ops/topk_meta_dispatch.h,sha256=CgUhpAtUtlHoGNsSNKp6CGbadxu-5w0nSGrlbUpnfVY,1981 +torch/include/ATen/ops/topk_native.h,sha256=foxXZmSLN-_8Nasgb2ohgS36lggMu9eJtiVo1p4xY6o,1309 +torch/include/ATen/ops/topk_ops.h,sha256=QWFXbKlTOSx8w_ph6MNtBMirXL87eaSga1hwtTXo5iE,2501 +torch/include/ATen/ops/trace.h,sha256=y7S-OMePDpM17m7LdhEYdeneyMnwi6nhtLQ9hlHMsCo,1271 +torch/include/ATen/ops/trace_backward.h,sha256=MbFkq3U4ipeFbMy2dvn2yzo5Ni10h_cUbSyjfmPdQUc,1725 +torch/include/ATen/ops/trace_backward_compositeimplicitautograd_dispatch.h,sha256=JLhJmSb-EBVNz9nC4jCfykCOqjGqWUWxHvE5zzWI88U,1145 +torch/include/ATen/ops/trace_backward_native.h,sha256=FNJMyBxi91KTBWKBjFOnuM4Px4Lu-Z-BCl1QzrWEgn4,772 +torch/include/ATen/ops/trace_backward_ops.h,sha256=rnEitzif5VYNzCjrsFkSzrv0_taYgeQruQu1jdczF6w,1326 +torch/include/ATen/ops/trace_compositeexplicitautograd_dispatch.h,sha256=v-i6rApLCtmAh022Kug2W4c0awkU27NP-LYg3V8kMWw,1119 +torch/include/ATen/ops/trace_cpu_dispatch.h,sha256=OkPFiwZ7GUBARcii2l94kaA46nw06bqKWGuUOtRy8rI,973 +torch/include/ATen/ops/trace_cuda_dispatch.h,sha256=NrIWj2X4lqIT9Mx7hGZ1QvydlPAS5bwiWtczfbKdJ_s,975 +torch/include/ATen/ops/trace_native.h,sha256=RT6_vEEwGTEwNGaAAVkeY2RWMjp88vrsbCh2cXzlCG4,868 +torch/include/ATen/ops/trace_ops.h,sha256=LDBJR55dDX_FTAECQAllgWuTPatlBv7YQ2iEoiAQTBY,1795 +torch/include/ATen/ops/transpose.h,sha256=gEkAxHY9nguD89H-zzKQkRFtrMfp9KdIidvmcGFfjpA,1219 +torch/include/ATen/ops/transpose_compositeexplicitautograd_dispatch.h,sha256=vDpiK0QPLh2y9JRskDzMwiXyYI1JetrPf39_7SZT2C8,1131 +torch/include/ATen/ops/transpose_compositeimplicitautograd_dispatch.h,sha256=T_-uy500xbidVW-JkgrSK-chVKa6FSSHtz2x93iByt8,1057 +torch/include/ATen/ops/transpose_copy.h,sha256=_67SbEIGUcegzQb2e52MNwyszBcgUyYEHh0D_d0zTWw,1565 +torch/include/ATen/ops/transpose_copy_compositeexplicitautograd_dispatch.h,sha256=u5QsMpPNQBQB-mUpVbgz2tbli4jEkw9hBvkpXiJ8ea8,1193 +torch/include/ATen/ops/transpose_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=dMqvVp1kjSzPme50lEK_JE6LHgmyCMIYfQUfERR0wss,1080 +torch/include/ATen/ops/transpose_copy_native.h,sha256=dLXUeM8t6rQSMXrYCkPYoLbRucA9If3xvcZdNAKKJ1E,888 +torch/include/ATen/ops/transpose_copy_ops.h,sha256=POhI_Bsu47uoB3iepiP3oivv9bsd9OSxgoakRz11dKg,2060 +torch/include/ATen/ops/transpose_native.h,sha256=ldkrpGYUE8qqPJG7PkqpWwDZNE_GJMfB6e8KcXdSFcU,1028 +torch/include/ATen/ops/transpose_ops.h,sha256=4Si_blynot-eEXgiHIDpNzjKVOJVxs-DlwEeNNT3S4Y,2597 +torch/include/ATen/ops/trapezoid.h,sha256=Df62Q_BticehSk2JPI_Y7jpdI7GVwFgmEebOA-a021I,1188 +torch/include/ATen/ops/trapezoid_compositeimplicitautograd_dispatch.h,sha256=RI2CHkvX_RtpVqVuz4EYJ-Eu38OnBscCuYp81lie4F4,1151 +torch/include/ATen/ops/trapezoid_native.h,sha256=_Six84Wz_6APyeC7ddBwylfx7IBJyRKuLlCrDntcUgw,863 +torch/include/ATen/ops/trapezoid_ops.h,sha256=MmahfIp4fXXA_FfGDyaTEo_SQJzMNTTVwh4TgDc9C54,1977 +torch/include/ATen/ops/trapz.h,sha256=WNqjA_Xx39vRHK9HhUEADozdHaOr4J_OEHNSKm8mXSg,1147 +torch/include/ATen/ops/trapz_compositeimplicitautograd_dispatch.h,sha256=9ETB9eJ1rYs3-mgf9NjoQPQlk4AfUS6mt13sGloXV4A,1131 +torch/include/ATen/ops/trapz_native.h,sha256=1Bvfk_A3x8mo47m1z_SFITgVgZ9AD1JF0EWtjP0RX7g,843 +torch/include/ATen/ops/trapz_ops.h,sha256=sqyX0dG-AFxA3FVUi8XMe4iYgCRv-6sVtppzyVVx11A,1916 +torch/include/ATen/ops/triangular_solve.h,sha256=zgJ7wCvEXOM8wEheYnJ06apNR1zLBh7lbZT--0UNQQQ,2205 +torch/include/ATen/ops/triangular_solve_compositeexplicitautogradnonfunctional_dispatch.h,sha256=wmtrooultk359PieXB44iyV173Iw7dLqpg39s7LEo8c,1166 +torch/include/ATen/ops/triangular_solve_cpu_dispatch.h,sha256=tyVcfo7LH1sv2FankB_agR-zwgOAsxJsi_dm1WTVm2s,1512 +torch/include/ATen/ops/triangular_solve_cuda_dispatch.h,sha256=sIFedQ68QDvyD8aNWEL41affhMjj-js90iotDcXj27Y,1514 +torch/include/ATen/ops/triangular_solve_meta.h,sha256=3TYkaBDAGCRSRd1IqVJtEItR4YKgAAp1oqOTlEhIptg,901 +torch/include/ATen/ops/triangular_solve_meta_dispatch.h,sha256=sIrwXPY6kzI3AJ92b71JQewFoVgg2wjH1ffsbT94xU0,1514 +torch/include/ATen/ops/triangular_solve_native.h,sha256=Y_3GozTlRh3MyK-DVgEUBJEZVRfZXiRC63xzHzcPWSY,1399 +torch/include/ATen/ops/triangular_solve_ops.h,sha256=APK_qWnjrnif-Z91iPbNBBs2bqMIZJZwrwrkOgdA3ks,2651 +torch/include/ATen/ops/tril.h,sha256=hWmTyK0ebCcfdty_GI816MPKp_Mrqh9LRLA9dM0NPXU,4013 +torch/include/ATen/ops/tril_compositeexplicitautogradnonfunctional_dispatch.h,sha256=7MonXhoFn1QmPWqWLxNSDUZsfVAlscyPLYT87l9QZ28,1294 +torch/include/ATen/ops/tril_cpu_dispatch.h,sha256=FhClPP2DOzfhqPToYaRUkTaFyayyY5yuDhmzy8IFUQ0,1628 +torch/include/ATen/ops/tril_cuda_dispatch.h,sha256=Pw0fYbCZciBsFDCgweji_lkpBa-CV6JQ8FHw9sZOj9Q,1630 +torch/include/ATen/ops/tril_indices.h,sha256=DNkN-Gx0RZYYcyW6Xnc1m2mZGHdCux2_tG9DKC32JW0,2214 +torch/include/ATen/ops/tril_indices_compositeexplicitautograd_dispatch.h,sha256=YS6sTcx5bKhzyeINbU15uSx6CmKYyC96KeZgZhTT-Tk,1169 +torch/include/ATen/ops/tril_indices_cpu_dispatch.h,sha256=N-VfIgdiwoIGmEbdGNmJ_9uCYowLpzw3dCXAXDQ3AD8,1258 +torch/include/ATen/ops/tril_indices_cuda_dispatch.h,sha256=yUk8qARfloPH57aczIlY3uCtAX7w76JJEa5eo3MGreY,1260 +torch/include/ATen/ops/tril_indices_native.h,sha256=4CWekTKKNvTQEAm6RI0kizHvZ5WKOmIrAe6_L0pZsHk,1258 +torch/include/ATen/ops/tril_indices_ops.h,sha256=jolBeqTHLaYt5_HzhRTMLV73zKLDIuDYTvtmRF35yZw,2453 +torch/include/ATen/ops/tril_meta.h,sha256=6SRAPZRNOUvDonbFzhzM84POk9SztKD2OCyKwREqx_A,837 +torch/include/ATen/ops/tril_meta_dispatch.h,sha256=ef-uTzwH0AuCdz80PtIgi_N0aHLypfl4_KmVeK4qNeE,1630 +torch/include/ATen/ops/tril_native.h,sha256=UtWCWB2fyB5PN5osPg3HRqZXCYayhy_uuAEHIEMNACo,1018 +torch/include/ATen/ops/tril_ops.h,sha256=LDJVlJQxta0IcDYuTS9hQHfxIqj0jo_nMvuf0pd5RaU,2510 +torch/include/ATen/ops/triplet_margin_loss.h,sha256=Hmr39QHwiLBtms6GCYvRVgjgFxDwQvY_6VGxjiNu-PI,1282 +torch/include/ATen/ops/triplet_margin_loss_compositeimplicitautograd_dispatch.h,sha256=ygsQoa7Hv103vD93JaTKTNXWFaoffYFJjGRTfPUI7zo,1196 +torch/include/ATen/ops/triplet_margin_loss_native.h,sha256=mdhEb5IFPQzZV_gWKkJ-QDP90LWdU2GW53zAnuVpvI0,908 +torch/include/ATen/ops/triplet_margin_loss_ops.h,sha256=Hvfe_kINZBMt05RhExIbXY0h-fimQnFv9NtYSUY14T8,1702 +torch/include/ATen/ops/triu.h,sha256=cW4-55KxSo6a4Phy2pikk1DQqGjy4b5mmkRO8-pEsB8,4013 +torch/include/ATen/ops/triu_compositeexplicitautogradnonfunctional_dispatch.h,sha256=IQv_0mjONwZaqwbzN3klw-xDAoE6Jx6aTo43aAeLCSc,1294 +torch/include/ATen/ops/triu_cpu_dispatch.h,sha256=TfDoEX__-JW8wSnZk7sMJx-eFb_9qbOaqvI67F5Pit0,1628 +torch/include/ATen/ops/triu_cuda_dispatch.h,sha256=klxQIokRO6heIi5uHKb0pQQoEdS8B72BxXFp0wzRlFg,1630 +torch/include/ATen/ops/triu_indices.h,sha256=-b8__dGDHUuy1yEdrP2FwjVjhsCTfqLdXO79C4TE3kw,2214 +torch/include/ATen/ops/triu_indices_compositeexplicitautograd_dispatch.h,sha256=p99twpuIiW-I4JYsLnOBEm7oTj0HE6mSapRo6Vr9kgw,1169 +torch/include/ATen/ops/triu_indices_cpu_dispatch.h,sha256=ThiFwj8tvlUiwO8Rpv9JnthVQBtzklleI4sLO61njn4,1258 +torch/include/ATen/ops/triu_indices_cuda_dispatch.h,sha256=4RbNsfGAwm-8eptEXusVFfyxGr9BI1CvlHbyetbuRWQ,1260 +torch/include/ATen/ops/triu_indices_native.h,sha256=vZgKik7LpKla_EYEaNIj91QS62d_SiiBZYD97-FvxAw,1258 +torch/include/ATen/ops/triu_indices_ops.h,sha256=UzN2jCOt_7mfG6MS6-sjQ-Q_R2DiCeXxkAqHpfcV4LI,2453 +torch/include/ATen/ops/triu_meta.h,sha256=R3oRI2ROWLR9TN8lKeeriPQSRvT1KIVvDCArvI5x-t0,837 +torch/include/ATen/ops/triu_meta_dispatch.h,sha256=c0DWcTujwcTJ1guoyN7tsYv1QUUVUAINdlrk3Vx0eJw,1630 +torch/include/ATen/ops/triu_native.h,sha256=NJzfQvtGCktCcMroztM33hdPBseg73Jtk5EtNbevXiI,1018 +torch/include/ATen/ops/triu_ops.h,sha256=xzUvf4tfQnyJ6ooE5yKZp4GSq6w-WrdT20t1IZDTdR4,2510 +torch/include/ATen/ops/true_divide.h,sha256=vVM0u8Jt-tnib5lGLU34nX8m7_KGsLqJgQTRQ-iKUQQ,1697 +torch/include/ATen/ops/true_divide_compositeimplicitautograd_dispatch.h,sha256=GTK2kBA9vEY5dlfzn6PiPi8AZy9NgyztGDf976AQXM8,1517 +torch/include/ATen/ops/true_divide_native.h,sha256=HjUGdggLMAiR72SvFqQK62VkWjd-sW30C5nR6av81EA,1119 +torch/include/ATen/ops/true_divide_ops.h,sha256=izXjsaT_Z7c4PutaawTzj61mGAMkyAOhk9TcrelF0e4,3884 +torch/include/ATen/ops/trunc.h,sha256=bThHrJg42Lc4jBItMj1ALdy3fba__G0GWaekARXavO4,1410 +torch/include/ATen/ops/trunc_compositeexplicitautogradnonfunctional_dispatch.h,sha256=ezkCR1YK0N0ehZyEr3AJ0yepOssUvxq6o7mfdK-8DrY,1093 +torch/include/ATen/ops/trunc_cpu_dispatch.h,sha256=XtMNanhlVlfQehDBd-iMP1o2JUas2Ui9Q4AStZe1MnA,1178 +torch/include/ATen/ops/trunc_cuda_dispatch.h,sha256=WnmnDuQoHLYgRRYqhIswwtHq_ypKfDO21q3QVjhAo7M,1180 +torch/include/ATen/ops/trunc_meta.h,sha256=ePhwtjbH5Y9x2TakgYNupYJSqdVtCDpTDOjczOSS3pY,820 +torch/include/ATen/ops/trunc_meta_dispatch.h,sha256=7fixKYBsxpqVDmrtvnBc3OiPP89HBlL6A8VdgCdC7kw,1180 +torch/include/ATen/ops/trunc_native.h,sha256=1mUL_UoI3Ez1Uro5gTZqKsb3boeZlafXdypYbO93HC8,1261 +torch/include/ATen/ops/trunc_ops.h,sha256=N-k-omO5sUAma2FQPIJuEdoz38AkXHgt66fpDtYue8I,2291 +torch/include/ATen/ops/type_as.h,sha256=AwdVDvYR91dnzV2NBKn3jmaFZw3E1GQFUYiHbz2oT3g,758 +torch/include/ATen/ops/type_as_compositeimplicitautograd_dispatch.h,sha256=dv8uyoCMjTCYB5RtdBBuj2oeTDCJBd6lqxvXMCbjW8Y,1045 +torch/include/ATen/ops/type_as_native.h,sha256=v2LPDmsYu4iQrg66e88k11xbntoyJ14YFfyJmwBTg7Y,757 +torch/include/ATen/ops/type_as_ops.h,sha256=OioOs7XMmXtex2G7ERpJo1-uxjvO62JKxlZoRU9Lll8,1300 +torch/include/ATen/ops/unbind.h,sha256=Us1fppseabi-x5bkZQAWw8Up3CP6joOhr2tAap8wf0o,1172 +torch/include/ATen/ops/unbind_compositeexplicitautograd_dispatch.h,sha256=1AUAnZzYjo8pXCoxPwyvOb_rhy_YBKk2Ppv5BvzxwcI,1048 +torch/include/ATen/ops/unbind_compositeimplicitautograd_dispatch.h,sha256=VZms1q-XD70XSJatP9jiyjnP3gSNDYwvofA9zu7MLTs,1050 +torch/include/ATen/ops/unbind_copy.h,sha256=odoE7jy3xo_wzzF511YrzFRLq2bTvx1UZVPTD2GhoqM,1439 +torch/include/ATen/ops/unbind_copy_compositeexplicitautograd_dispatch.h,sha256=SCiFQGUcY305ijwIzFe_HMbD5aOVW4x7At7HtuqUicA,1147 +torch/include/ATen/ops/unbind_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=WzJCqQShrinmnjWHlQb4ECZ5RZPu6cxcwKEKw7YVzkY,1079 +torch/include/ATen/ops/unbind_copy_native.h,sha256=o4DwnRwMMa-rrmh_KAYsBbEvKLvv0T6y0711c8OwAJ0,863 +torch/include/ATen/ops/unbind_copy_ops.h,sha256=zCODlW7yla9Ef1r2SyaeWyJZu0wCadw1TbgM2eQILSo,1969 +torch/include/ATen/ops/unbind_native.h,sha256=a96IIfvlEmJBsrG26jl-yOqlBBBhidVaUX8iasLjYFc,943 +torch/include/ATen/ops/unbind_ops.h,sha256=8nZXbe4nLJa79FLWC74hLInAxrRbDuzw4HOqjagw-us,1967 +torch/include/ATen/ops/unflatten.h,sha256=XY0zghsNhL4xIFsW-0qta3fhq5EdOjhwLfnh6DtI9kM,3035 +torch/include/ATen/ops/unflatten_compositeimplicitautograd_dispatch.h,sha256=q3pmv37xLSmzONSyxLm5pIOXb-EGLqRmYMqXirOCpIQ,1412 +torch/include/ATen/ops/unflatten_dense_tensors.h,sha256=hPGFTdnsuy3OOLY9swgY3XBM0l_6I88z5qtUBnA-J_c,1027 +torch/include/ATen/ops/unflatten_dense_tensors_compositeimplicitautograd_dispatch.h,sha256=6n0V_CTfUS0ApPHEaKQH128kwn15EnCOFM6BTktjuzc,1074 +torch/include/ATen/ops/unflatten_dense_tensors_native.h,sha256=g1B_XmzUdt_8FAdIAPpGhj097yd7Gu4_UQpO82UwuRM,786 +torch/include/ATen/ops/unflatten_dense_tensors_ops.h,sha256=V0ocHe-XxJUUnNo-MYjP2hUTZE1uf-6WmdP-BdjFkcI,1391 +torch/include/ATen/ops/unflatten_native.h,sha256=7FTdxEzeKUI5vW5JvsE7vGlQ_Rj55LHF6Tha9iyi7PQ,919 +torch/include/ATen/ops/unflatten_ops.h,sha256=NtYccRRzkcys92u6DLFiLCoF2YHaWGK__rRivOiFmXM,2141 +torch/include/ATen/ops/unfold.h,sha256=s3T99PCBveeZExVaiyiTCPCZl0eEwzNqIKcvNXHGEd4,757 +torch/include/ATen/ops/unfold_backward.h,sha256=6LLF2qOMzqe_M8-sOPDTgT5EYiqzpyGxiDkYPwIu95k,5194 +torch/include/ATen/ops/unfold_backward_compositeexplicitautograd_dispatch.h,sha256=unmx5aSR3mko0ZWHt3ohc3o-kF4Rl9pjgHA_usng708,1628 +torch/include/ATen/ops/unfold_backward_cpu_dispatch.h,sha256=8hNRxDa0O11AYJ21tLQWSF8BexFIYwSHcjTxh6KcrzU,1203 +torch/include/ATen/ops/unfold_backward_cuda_dispatch.h,sha256=0QcM2lEahMqldeLaehuMMi57Xldi6VUoongCt-IT1Rk,1205 +torch/include/ATen/ops/unfold_backward_native.h,sha256=j8JFbKSh-UNSJeSH-ax9Yqsa_0sCadYmwky1lcCVdII,983 +torch/include/ATen/ops/unfold_backward_ops.h,sha256=2ZJwAeZKszpYe0ZFJiqJfqpzJ8nMzQt8e9NRM0OCj6A,2367 +torch/include/ATen/ops/unfold_copy.h,sha256=a2ab_KuD3jBa6cikEArKh_e6lOMsc4HngtRjpSF_Ou0,1646 +torch/include/ATen/ops/unfold_copy_compositeexplicitautograd_dispatch.h,sha256=Tu02oAKCNR3swxznEOAuLhY4Bi-gxH_RlQOEfUpYSrc,1225 +torch/include/ATen/ops/unfold_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=bHCFrbr20k_OQl1EBusSBL6EzSEYkL9RfZldhqyo7Gc,1096 +torch/include/ATen/ops/unfold_copy_native.h,sha256=cTUzPy2baCqqZOYXFFasTflV2E6vcQRjyztT6d_zxgw,912 +torch/include/ATen/ops/unfold_copy_ops.h,sha256=F0Lc3nSJkbVCsq9Cnd0hlUwaZTlIG-Ekr_72Cry20yY,2143 +torch/include/ATen/ops/unfold_cpu_dispatch.h,sha256=LQzs-kZ6aZ6HBSaj6ro4Okh7kwfXQ4_fN_Rk6PwPBbY,1021 +torch/include/ATen/ops/unfold_cuda_dispatch.h,sha256=cEc1Mn6UZnpLXwsnhT-cTiXkBzY5_LwL6YQfx86K5aU,1023 +torch/include/ATen/ops/unfold_meta_dispatch.h,sha256=ZENsp1SbM7bDsRO9Ta2Wn5Nitg5_np-wt8e7MgxNSMw,1023 +torch/include/ATen/ops/unfold_native.h,sha256=r4RtD3L7ZsPvzxbOSQZbFnMUQhJoEQfzbUs7MWBq3CQ,777 +torch/include/ATen/ops/unfold_ops.h,sha256=trzss8tbLxPJIbEhC6MvtwSk58KkFNFRJ_950-bGi7s,1373 +torch/include/ATen/ops/uniform.h,sha256=vudakx8sdSljf7Hee_qgm72Im0ZXRdl3-sx4RDa2bQg,1752 +torch/include/ATen/ops/uniform_compositeexplicitautograd_dispatch.h,sha256=Osq3PHPGpq97Xc0pML9YQ_knpVpFrdVnF0K15t-y2Q4,1414 +torch/include/ATen/ops/uniform_cpu_dispatch.h,sha256=Jv2-6RGQtimjkBYTviWVF0wHhuxsi-ShApxxcon9Ikk,1057 +torch/include/ATen/ops/uniform_cuda_dispatch.h,sha256=S0hqmznLSPxHUUY0cILYLPUAEKFpVSKsSXBXjbb8hWI,1059 +torch/include/ATen/ops/uniform_meta_dispatch.h,sha256=OHslAJlbhpCL0_r1rjvDT6k4FQ4CCKOaVgme73q3udA,1059 +torch/include/ATen/ops/uniform_native.h,sha256=OICD2Mu4nG6XIO1fj-I0qLgqRqKk83XhSXquaWVyzJ0,1240 +torch/include/ATen/ops/uniform_ops.h,sha256=BEzEvPH6roudbfOz0R1sRYWdYdsRPpo8TTjwA2eDWpI,3014 +torch/include/ATen/ops/unique_consecutive.h,sha256=EgYnf30mTLscYKb5YATv8HmR1tHyDnEGlfpjxxTshsE,2340 +torch/include/ATen/ops/unique_consecutive_compositeexplicitautograd_dispatch.h,sha256=ip2_E_cZrTnt8M7M4kvTSGsCzIBuCc_w88Vr6axSLzA,1472 +torch/include/ATen/ops/unique_consecutive_cpu_dispatch.h,sha256=LCX03ZhiWrdgeacTAfMpJoyfKbVzCNHJQ-jaRU1hrvg,1120 +torch/include/ATen/ops/unique_consecutive_cuda_dispatch.h,sha256=cC6Zkl1Fa5Q2Dm8FhQk9hRFeUHrTjM-LPUqQxaQ0CPU,1122 +torch/include/ATen/ops/unique_consecutive_native.h,sha256=xdwhZQKoVU6D38bQhqV5bPvxplPqkEzSRL9WGF1nj30,1325 +torch/include/ATen/ops/unique_consecutive_ops.h,sha256=DUo_TOLEHqv0YCigXDl3eE9gaQfpFffgV5OHgco8UHw,2782 +torch/include/ATen/ops/unique_dim.h,sha256=6s8jKULkqYrRBHKdgiB2vVPaGewbAq2o-LnHDCYS048,2288 +torch/include/ATen/ops/unique_dim_compositeexplicitautograd_dispatch.h,sha256=shtRtoF3VSv1wVzB5OkzvJc5S6I0CyvGsB6l60UuJ5I,1438 +torch/include/ATen/ops/unique_dim_consecutive.h,sha256=LYfEJUSF6-Kx4qPz9udEZt5kbtcxldi07VaqQO4DAUU,2281 +torch/include/ATen/ops/unique_dim_consecutive_compositeexplicitautograd_dispatch.h,sha256=MEAiIko-yvrWz_A3MlNFo_aKhr0APGTBysqQOX-9PIc,1431 +torch/include/ATen/ops/unique_dim_consecutive_cpu_dispatch.h,sha256=VkJHGj9AUjpULH0san-ZJcKw_m0KGs8JV4A9VYHt6bQ,1092 +torch/include/ATen/ops/unique_dim_consecutive_cuda_dispatch.h,sha256=9OdxQ2m3pjc1yyX8bI0kDTZUZrWkFYuqa9vyuzMii6U,1094 +torch/include/ATen/ops/unique_dim_consecutive_native.h,sha256=338Q6ZNjaZKtKvYqvxa2TPXxAy5zKjLAEijXg0wT7MU,1256 +torch/include/ATen/ops/unique_dim_consecutive_ops.h,sha256=0uBeRnSK6KCTZ7pf-gkmVNbAqdSYNu3qRf34o65CM1k,2692 +torch/include/ATen/ops/unique_dim_cpu_dispatch.h,sha256=EvZku3JTmuxuOy5amEBWHZnEv-QieaAtOYM-AuKvScA,1098 +torch/include/ATen/ops/unique_dim_cuda_dispatch.h,sha256=gtyuZJM_xaIwkERvmt2SaM39tUKUr76jIa5cF73mJbk,1100 +torch/include/ATen/ops/unique_dim_native.h,sha256=QRPo2F-tnfoUStfotsY-fQX1nO8cpPVejMtbKDnOdEc,1269 +torch/include/ATen/ops/unique_dim_ops.h,sha256=0AbjIDh-58vw9vJfDGKpEnotyhJO5Jepl1tHXKqeVTI,2720 +torch/include/ATen/ops/unsafe_chunk.h,sha256=ZwioqB5WtrkuEaABDz2_4y6naqIfbOQHnWUOp4bEEXY,999 +torch/include/ATen/ops/unsafe_chunk_compositeimplicitautograd_dispatch.h,sha256=nnNOSfnzJzhvD1NySrLD2APoNW_BqT87WicybE9OGIg,1070 +torch/include/ATen/ops/unsafe_chunk_native.h,sha256=58WRzG0jkJgeDpmTETv-J9_kVe9igwAp3d5WRyYnqCk,782 +torch/include/ATen/ops/unsafe_chunk_ops.h,sha256=NZgRwR_gfq1kcG71bgDIXGPEZaXwvokyWKcJA50bx-4,1375 +torch/include/ATen/ops/unsafe_split.h,sha256=udX3V42Z25IjjIMaZI9wsbvpNBJCg4L5FIvEyuFmeYc,4263 +torch/include/ATen/ops/unsafe_split_compositeexplicitautograd_dispatch.h,sha256=tXaEXZQXb7YC16OGSkQPaa3WhTEv71hEYzFurkzwL7w,1667 +torch/include/ATen/ops/unsafe_split_native.h,sha256=n8TRnYCFC8VcNJfGMgcKCqLlixX5Iq0oQh48KUnYZR8,915 +torch/include/ATen/ops/unsafe_split_ops.h,sha256=9VewGYHzwA-s5VNVryD-dkh7I0XBfH_ImwPU_Up4k4s,2153 +torch/include/ATen/ops/unsafe_split_with_sizes.h,sha256=n2TgDEfYBGpwBc4lfO1LbxPffPwJ_lJE1HsAdSgsuYs,4772 +torch/include/ATen/ops/unsafe_split_with_sizes_compositeexplicitautograd_dispatch.h,sha256=iGy0DN6Fz0l7gitayqAv43f85zBohiqo-3j4ZobyJ0U,1787 +torch/include/ATen/ops/unsafe_split_with_sizes_native.h,sha256=bP9WJI3IexJJkAnDkC2s1gp_eUEErmG-ZWdQiAkHFKc,948 +torch/include/ATen/ops/unsafe_split_with_sizes_ops.h,sha256=i4k-PjlXR3V4FfJO7NRofwsZPeHJY_aPGJ6fIxQc-gc,2236 +torch/include/ATen/ops/unsqueeze.h,sha256=uaqaxIIvhFyw46gXSJqKZsH8oWTrDeezZPKH__mV43k,936 +torch/include/ATen/ops/unsqueeze_compositeexplicitautograd_dispatch.h,sha256=y6D0SxsL3aQH-JA_1ATfZAdlFfwzBP0MwZN9v_9KU-o,1101 +torch/include/ATen/ops/unsqueeze_copy.h,sha256=ulF74zjjITbg2oNi4JH5U7MAA7TWmL7k8o0-GpZGbBw,1442 +torch/include/ATen/ops/unsqueeze_copy_compositeexplicitautograd_dispatch.h,sha256=RXBdoSDxk5-n4IXqOauFoR74IYVoY5ViYX-UWy1sjjQ,1163 +torch/include/ATen/ops/unsqueeze_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=bpxg01nCb_nYLIvqY-jKUeojiSpP6-aAj-SsRs3ZakQ,1065 +torch/include/ATen/ops/unsqueeze_copy_native.h,sha256=kcmh6t_O3JHpSSc7xlnv-luwW_heskS80hCt4LeguVc,850 +torch/include/ATen/ops/unsqueeze_copy_ops.h,sha256=fzNr2J_vu0N5HDHX1t-ciwWzjqGePxu4b44Q1D7PIo0,1937 +torch/include/ATen/ops/unsqueeze_native.h,sha256=jKux_Juj458LEfBG_P61YATAA06JEpEE72FcGPFpqkc,1047 +torch/include/ATen/ops/unsqueeze_ops.h,sha256=Jn3hsOhjPmCk9lqmg8scStR2-mIAFVunQiB18nsqjxc,1822 +torch/include/ATen/ops/upsample_bicubic2d.h,sha256=VFG7Sjs3cg54poGpR31zQKO57-cW4YXMRB2f7GUOi9Y,8192 +torch/include/ATen/ops/upsample_bicubic2d_backward.h,sha256=xohEMXqS3OFZ-BqCGBZS8qjXSkOuDpgTAmvDhoCdDCw,7938 +torch/include/ATen/ops/upsample_bicubic2d_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=g0d07D8UAM7dis5G1vaj2eSQFbLukIsthdqS7OlLg9A,1519 +torch/include/ATen/ops/upsample_bicubic2d_backward_cpu_dispatch.h,sha256=9Yqn5LLtryH7gKMl3mXRydYQZKxuZIt2W6BiX6cgG70,2573 +torch/include/ATen/ops/upsample_bicubic2d_backward_cuda_dispatch.h,sha256=DYKpeD_DCL4vXznMLKD6CFhukQpIlTd3FbWTEsVbA68,2575 +torch/include/ATen/ops/upsample_bicubic2d_backward_meta.h,sha256=TwzAviaFoWdnSq8wRpPHi8kGcjJogfR8Ojki6MuxuR8,1006 +torch/include/ATen/ops/upsample_bicubic2d_backward_meta_dispatch.h,sha256=S0RysAHoVnXgESmOAdZmg6k548HPetSwXwzOl_hAuTM,2575 +torch/include/ATen/ops/upsample_bicubic2d_backward_native.h,sha256=ZodaA34-MTFpHkguqLRrbY6UosObu6brVHxx7Plw5tg,1447 +torch/include/ATen/ops/upsample_bicubic2d_backward_ops.h,sha256=YSda_a4UhAkCJNqe4KNEiFdPdc-0TYWAwFlQsnNxXJU,3037 +torch/include/ATen/ops/upsample_bicubic2d_compositeexplicitautogradnonfunctional_dispatch.h,sha256=GJRI66OCMJ0ohJusXTX7lTKXYJK9wN1Ik0BkGVt7lJ4,1427 +torch/include/ATen/ops/upsample_bicubic2d_compositeimplicitautograd_dispatch.h,sha256=g_28nb7pK3wbDQFt-lpLbsksbGGyJMw7s4OmbEGewqw,1328 +torch/include/ATen/ops/upsample_bicubic2d_cpu_dispatch.h,sha256=jB8LfeRwokVGHN6A_e6pg7lBvU8dImc5Hv5EJIL4bP4,2269 +torch/include/ATen/ops/upsample_bicubic2d_cuda_dispatch.h,sha256=tUdJWbV0oKP06DyMQkE3eq7eZ1sI6ZdBhJrKZhw-qvU,2271 +torch/include/ATen/ops/upsample_bicubic2d_meta.h,sha256=Ob_5soB-Ow95Dl99VPXlgwM6avIL59jX_3sq2xKAY6U,956 +torch/include/ATen/ops/upsample_bicubic2d_meta_dispatch.h,sha256=ev5daEgNn9PCJ8etxyp3RaLullGOchlFS-xCy5RXESo,2271 +torch/include/ATen/ops/upsample_bicubic2d_native.h,sha256=a09SH9SdyDfsvgQnTRo60-xVq2QlhFSojRRPFmLX22w,1483 +torch/include/ATen/ops/upsample_bicubic2d_ops.h,sha256=s65OEj73Dz_xkDeg6iKQh9ptYKQ-Ddke1ltVVBzvPUM,3601 +torch/include/ATen/ops/upsample_bilinear2d.h,sha256=2SjYLWupIwtLpSWtct1TGNtx65JWveHxQLSSoTG-oA4,12147 +torch/include/ATen/ops/upsample_bilinear2d_backward.h,sha256=BbykxVTg5wsqn9REo43MSFuDkqG0BDCtpOOY5K2uNLM,7969 +torch/include/ATen/ops/upsample_bilinear2d_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=u8y3eHcsdzIvQBxvWPvSSzt0hnCesnTHVPYgxNiQVU0,1521 +torch/include/ATen/ops/upsample_bilinear2d_backward_cpu_dispatch.h,sha256=xpWQkhlw7ixr_NWPqmk5Jg36HV-GWHDPpSJ3Z-pScGs,2579 +torch/include/ATen/ops/upsample_bilinear2d_backward_cuda_dispatch.h,sha256=vwxus4eIHVgo7cBz-bxyHzNOc-cgGTKX3hKUh3B-z0s,2581 +torch/include/ATen/ops/upsample_bilinear2d_backward_meta.h,sha256=y3g_dTcr6vGo26ehNPK3Viptne_AbZGIMGbdt_omaMk,1007 +torch/include/ATen/ops/upsample_bilinear2d_backward_meta_dispatch.h,sha256=P6oJdzjsbmsEOttA3_xDm-np4qqylMsA1dY5PCYD69w,2581 +torch/include/ATen/ops/upsample_bilinear2d_backward_native.h,sha256=pvItM3mfrh4ib5MqVl4Sl1l-dA1XbeKIj71TZoiYxTw,1452 +torch/include/ATen/ops/upsample_bilinear2d_backward_ops.h,sha256=ZSZmqVZdp2Fd41msrdIc_U8DQanU0rHyQcIymzc3Qzk,3043 +torch/include/ATen/ops/upsample_bilinear2d_compositeexplicitautograd_dispatch.h,sha256=AFonp7HYJdKstea9nOO5dp9aued3qjazrSJbOAhhjp0,1794 +torch/include/ATen/ops/upsample_bilinear2d_compositeexplicitautogradnonfunctional_dispatch.h,sha256=Wb9fcvUUqRmxlwgQMtw-z_ON9VWuaQCcPKh_hm74q-Y,1429 +torch/include/ATen/ops/upsample_bilinear2d_compositeimplicitautograd_dispatch.h,sha256=IGmpa4Y6UZTWjvDszfzLQPliXi7zCAzSxkyFcR9Pqf8,1330 +torch/include/ATen/ops/upsample_bilinear2d_cpu_dispatch.h,sha256=kC3Q4xHH3X59GQfKMrVja2E-LnkKmx2PFyZn6Kd4r7Q,2275 +torch/include/ATen/ops/upsample_bilinear2d_cuda_dispatch.h,sha256=MdoExLBsocpwAYjWpXFecH2ZGprjNASpl1ccclWOEt8,2277 +torch/include/ATen/ops/upsample_bilinear2d_meta.h,sha256=jgHIEKvRT6etXOtk7OTvnnB3qUULzJMfgHKJ2bu2bjI,957 +torch/include/ATen/ops/upsample_bilinear2d_meta_dispatch.h,sha256=Py2wNqAxmOarNBPOUk4W818VNqMl8FzTrIQ4rN_M1PU,2277 +torch/include/ATen/ops/upsample_bilinear2d_native.h,sha256=hKGce_EcyoFRXyhw9gz0UDiBpFV2csYx11n6FzQHlMw,1933 +torch/include/ATen/ops/upsample_bilinear2d_ops.h,sha256=cREMKi70-JOeYBAFCjZ1gk5BBXL3f_jAMys_Rxy_4LA,4620 +torch/include/ATen/ops/upsample_linear1d.h,sha256=XMfYzr3D0mfrne1CaQwm2A1II08h7qsfRtbOYaklu88,7311 +torch/include/ATen/ops/upsample_linear1d_backward.h,sha256=kwy5bGep8i7ziVowLguD8P4GigD-Xcl3m6koFjv8E6Y,7067 +torch/include/ATen/ops/upsample_linear1d_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=lBSE3kmc4BB7CaxFf3MOqmSUMYlHdnfHg698xqP6OwE,1415 +torch/include/ATen/ops/upsample_linear1d_backward_cpu_dispatch.h,sha256=2fB5y1fQw9ACU-SNsur0W-94i_YqVd5T_r-_Afd4Z8Q,2291 +torch/include/ATen/ops/upsample_linear1d_backward_cuda_dispatch.h,sha256=kere2JAlUoC7O7nq92I9qGSlJbtlOky-L6Y9UjbYaTU,2293 +torch/include/ATen/ops/upsample_linear1d_backward_meta.h,sha256=oRXml8iFunMdUKG369sS5DKGmxhtvGndfqhGwkyL3Hw,969 +torch/include/ATen/ops/upsample_linear1d_backward_meta_dispatch.h,sha256=NG-EBlKmzPyIL8wGGoA74jQ3Uypuu0FL3pPvZTGbmPc,2293 +torch/include/ATen/ops/upsample_linear1d_backward_native.h,sha256=vKSHMAWZ6kus7Co20yq9kunrtMQ8X4nW6elQp-D_MIk,1370 +torch/include/ATen/ops/upsample_linear1d_backward_ops.h,sha256=ATodPxp3U30nOJa2tu9j0uI47vxEh8WhnL7WulKxcak,2789 +torch/include/ATen/ops/upsample_linear1d_compositeexplicitautogradnonfunctional_dispatch.h,sha256=ivwdDgfcGzY1iFx_Pp4G-OIh3g2pAtPLzMMJrsGUfNg,1323 +torch/include/ATen/ops/upsample_linear1d_compositeimplicitautograd_dispatch.h,sha256=yI8L8BBuy_JfEo6UVla9bGV8sfvkIqsaEHGWhB-61dY,1326 +torch/include/ATen/ops/upsample_linear1d_cpu_dispatch.h,sha256=pwsgd1HnHL8zQjq31vcQ5j1VDngHavSVIiOucldbXnY,1987 +torch/include/ATen/ops/upsample_linear1d_cuda_dispatch.h,sha256=dRAjjgUEanXTessojXyjjm4jCA2Cl5vp2OeCRa-Bp2I,1989 +torch/include/ATen/ops/upsample_linear1d_meta.h,sha256=1kWxbA_DjYmeRVPQwmiNoYZdvLVsFNpjMKeEa0KZhos,919 +torch/include/ATen/ops/upsample_linear1d_meta_dispatch.h,sha256=dLS_D0AmqPfBU44_nAd1LYMH9e5fUp6JZgsbiDF9D6U,1989 +torch/include/ATen/ops/upsample_linear1d_native.h,sha256=tT4KwDEmOa5zZpgud45S_pUeU6Ptk-gTcJawtNXR564,1405 +torch/include/ATen/ops/upsample_linear1d_ops.h,sha256=wOXKdObt3qKdzKRIakouFHBD4Z0e7P5l8NCXGyDOF6g,3350 +torch/include/ATen/ops/upsample_nearest1d.h,sha256=jBdVNdzc--py5Z2lGXWt-P-J9YIW7hIhVKDu_crTAhY,6632 +torch/include/ATen/ops/upsample_nearest1d_backward.h,sha256=OEyC1qpBn47Gp95vs7cOILx1IlbBK_tCIccXfBeScr0,6558 +torch/include/ATen/ops/upsample_nearest1d_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=mdHB-STpHD5mkRhMpFCMRb6xJMwOPal8eI7d9ZriKK8,1377 +torch/include/ATen/ops/upsample_nearest1d_backward_cpu_dispatch.h,sha256=fcRZb_Fju5v35-UqY7TIc9SMYkw4ljXieLLN-hHrwiA,2177 +torch/include/ATen/ops/upsample_nearest1d_backward_cuda_dispatch.h,sha256=5NDlCuj0EwWJ8UCM-IUypq7-7chnqD5TOwju3_GAKF0,2179 +torch/include/ATen/ops/upsample_nearest1d_backward_meta.h,sha256=U2PLncfKNwHzR0oLm2UDjnCrQu7m6mv1q2AwANDuYXE,950 +torch/include/ATen/ops/upsample_nearest1d_backward_meta_dispatch.h,sha256=dMH9nFTQtTzQLwkesGH-KEsa4SrlmZ_UddUXpBYBP_c,2179 +torch/include/ATen/ops/upsample_nearest1d_backward_native.h,sha256=Aql3slzmg9XS5WdNR0euFGdEVxkNOWhTjKgWePBTW50,1335 +torch/include/ATen/ops/upsample_nearest1d_backward_ops.h,sha256=jsS-FUQ4BmB_fpbyJKLg_ClJ__JBhBEVmnfoBgSJXfM,2663 +torch/include/ATen/ops/upsample_nearest1d_compositeexplicitautogradnonfunctional_dispatch.h,sha256=fGFQAHPhtd06nLi8_fZ5Bq58a47af-q9BEKFtpB1w8w,1285 +torch/include/ATen/ops/upsample_nearest1d_compositeimplicitautograd_dispatch.h,sha256=sumWZGvf75FfJIxi_npiYxXr-SWbK_sXSAUkY4WsVXE,1288 +torch/include/ATen/ops/upsample_nearest1d_cpu_dispatch.h,sha256=w0GpkzU97FINPKcdDjfRXCIpJstKN-pG7c0h_KGPFiM,1873 +torch/include/ATen/ops/upsample_nearest1d_cuda_dispatch.h,sha256=3YSirPZNlB9W4lXB-0iaoZE9ibiTzU-8fsP_lmmrhtI,1875 +torch/include/ATen/ops/upsample_nearest1d_meta.h,sha256=4BPjT8S8sENwPkHN-FYkpDrZEpUwHzJU1Y5eUPs_HNQ,900 +torch/include/ATen/ops/upsample_nearest1d_meta_dispatch.h,sha256=eZAeY7L0vrCO4Pg4TtbZCwrz8L_cWqX6VxqUQt-Tw08,1875 +torch/include/ATen/ops/upsample_nearest1d_native.h,sha256=7Usz2bcZf-ZO9wADjpkIEw5jQQOTk-y_AV2PLh7CwU0,1351 +torch/include/ATen/ops/upsample_nearest1d_ops.h,sha256=1mIGCtCOKUHJavVYyIc2Gx_Vlo-RnrPnc5EZtzX95H0,3161 +torch/include/ATen/ops/upsample_nearest2d.h,sha256=O_5ffpixJga9VIeobNTWWdgiKoF5thaefVCBkvPwxRM,11006 +torch/include/ATen/ops/upsample_nearest2d_backward.h,sha256=udedsCys3u4JReu1l9pqCImHk3HH-obKMEfm6aGzUk4,7398 +torch/include/ATen/ops/upsample_nearest2d_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=1MzQcxYgVgdMzf3YAJpyY67spU0xOCyhG-tW3JEqoGE,1479 +torch/include/ATen/ops/upsample_nearest2d_backward_cpu_dispatch.h,sha256=GlbG2EorM5DXATkDUSRQVf0JKKFga_d_rKGojVaDKq8,2453 +torch/include/ATen/ops/upsample_nearest2d_backward_cuda_dispatch.h,sha256=HpAVwdP44f7xWDJOKPxjxVRu-sww8w4L3UnTb0bLUJ0,2455 +torch/include/ATen/ops/upsample_nearest2d_backward_meta.h,sha256=zyGFvrmYXIU2sd5LW9nlg6Pw0Rgo-Lw3seMpjUh9MZo,986 +torch/include/ATen/ops/upsample_nearest2d_backward_meta_dispatch.h,sha256=u_hHiKGlewIkNWzp5GPx9tmnD_O0QQKBzTwApN31ZYo,2455 +torch/include/ATen/ops/upsample_nearest2d_backward_native.h,sha256=pyprzLb6jzVT8DaBvFXab0I__HFVmRfRmzAQCycjNqI,1407 +torch/include/ATen/ops/upsample_nearest2d_backward_ops.h,sha256=yElwaXsJSwUpF-IcYvIljlE10-2_ng4ucZRoGrpVjvM,2905 +torch/include/ATen/ops/upsample_nearest2d_compositeexplicitautograd_dispatch.h,sha256=aFScUxyx5xG6b-zDAf5yIBkQ_ufI2GwOUos4yy616DI,1710 +torch/include/ATen/ops/upsample_nearest2d_compositeexplicitautogradnonfunctional_dispatch.h,sha256=hziL-cvrzOJ6PF8iAzrkr66Eil6xVh2pcSzGuzgzgXk,1387 +torch/include/ATen/ops/upsample_nearest2d_compositeimplicitautograd_dispatch.h,sha256=r_Lh330YzJ2sz137JqJ3_OaELvP31_i59R4_SdGaMMU,1288 +torch/include/ATen/ops/upsample_nearest2d_cpu_dispatch.h,sha256=KLrwfa_aQDjnGJ9xBZueZRDXRrT9Q6Zow-rlvwygA5A,2149 +torch/include/ATen/ops/upsample_nearest2d_cuda_dispatch.h,sha256=uj1k2MBSila5Jc5rIXAvskiD5_K8Nk2e_KNt_QfCPTQ,2151 +torch/include/ATen/ops/upsample_nearest2d_meta.h,sha256=MjEloyM-rcqtkXZ-b1IijXxoEsk7WJnRgEbqWDtwkhM,936 +torch/include/ATen/ops/upsample_nearest2d_meta_dispatch.h,sha256=XKMsaV-fW3k6EykUytRxEDS3Z1X69tZQEuNNOxdM5o0,2151 +torch/include/ATen/ops/upsample_nearest2d_native.h,sha256=iFcnobq73QduuYOSFsj-hRwA_7MzLDN1hASdgH5MigA,1825 +torch/include/ATen/ops/upsample_nearest2d_ops.h,sha256=NX_114ByvM5Iu1Zx3GNfolzNBIiTz5LYd-cOKosTreY,4344 +torch/include/ATen/ops/upsample_nearest3d.h,sha256=QmD2cR5kUTXnmT7a3iTlQwnLOehttMBxX-MlTXwHuts,8252 +torch/include/ATen/ops/upsample_nearest3d_backward.h,sha256=txFD-Av9RCMbP0tgZmPkRLKkcWytQdv_Bqp8SYy_sJY,8178 +torch/include/ATen/ops/upsample_nearest3d_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=lzmFuH3ecfnpV7CXnOOsFHoSWhJz0VrH7TuERSz7TCg,1577 +torch/include/ATen/ops/upsample_nearest3d_backward_cpu_dispatch.h,sha256=EqnWiEwPQUa5TuP1DPJwb9IUXxOYGbRYo8xj3K24Z3M,2717 +torch/include/ATen/ops/upsample_nearest3d_backward_cuda_dispatch.h,sha256=AJudIp8RCyXaePWGfY9FJcrmJnsxuZfGLwnh3BKVaC0,2719 +torch/include/ATen/ops/upsample_nearest3d_backward_meta.h,sha256=Rg7bRlZPktxhgg6IXQTXRu4Jp8VDfAtEFC9tQ-D8ikg,1020 +torch/include/ATen/ops/upsample_nearest3d_backward_meta_dispatch.h,sha256=jODEUU2iUNxrZHZj26sZ5FvXTSaBCvX9ESV0GKkbxc4,2719 +torch/include/ATen/ops/upsample_nearest3d_backward_native.h,sha256=ZSnOPvFhS3Y8AFObBHa6YD3_bLMFvK6H2hQKwU60akg,1475 +torch/include/ATen/ops/upsample_nearest3d_backward_ops.h,sha256=ITV4Vn-y5-0EarAIpEFD5N3YeD0InGtWNloqG6NVqeQ,3135 +torch/include/ATen/ops/upsample_nearest3d_compositeexplicitautogradnonfunctional_dispatch.h,sha256=1qJ4luQVnGE6NRtOrz5_OvpdVBmdLwCbBZEulOiRF0k,1485 +torch/include/ATen/ops/upsample_nearest3d_compositeimplicitautograd_dispatch.h,sha256=us4SZKx54BNw8qn5HVT9715KEPu0mK2HSyg4Lzg7m7M,1288 +torch/include/ATen/ops/upsample_nearest3d_cpu_dispatch.h,sha256=6HPW0Dkw3gUPtuUUNGFRTJ94rrc8bZYLGEOplBu77tc,2413 +torch/include/ATen/ops/upsample_nearest3d_cuda_dispatch.h,sha256=Diy1FaKuyB3s9OFDay_lNb8YIgRdItKN7A85oNybFYw,2415 +torch/include/ATen/ops/upsample_nearest3d_meta.h,sha256=mESNA1u323tXos4lHI0Xb-QJe93khPp8rvKnyK1R99c,970 +torch/include/ATen/ops/upsample_nearest3d_meta_dispatch.h,sha256=hIHn0s-OaLYF43OpCBq2t-18wxgNaZjMo70pOJUlkfA,2415 +torch/include/ATen/ops/upsample_nearest3d_native.h,sha256=eiQEhIMx8axNFVzjzmmlhy6becX4VzrDGfwhsnsV1jw,1747 +torch/include/ATen/ops/upsample_nearest3d_ops.h,sha256=2EHfxmEjRNwLffTVHyq6LCkN3OgU_Ww7Xw_DqVQa81I,3633 +torch/include/ATen/ops/upsample_trilinear3d.h,sha256=3W9E6kvtVPHhfnVXQZ9lW3hDgvba3wyjdunYW2XjcZg,9054 +torch/include/ATen/ops/upsample_trilinear3d_backward.h,sha256=SqPf9FNBGRBAk-Zp7-fqkcv8DGnvfD3zfC9DNJQgoms,8780 +torch/include/ATen/ops/upsample_trilinear3d_backward_compositeexplicitautogradnonfunctional_dispatch.h,sha256=AP2kXqEo9wi_XHOFXxzuRfoCQA9pf6gaj88T8-5Z4-c,1621 +torch/include/ATen/ops/upsample_trilinear3d_backward_cpu_dispatch.h,sha256=s0iSQflxCP1hF5pjgR_fDo4LjupLwO2m13LMnPIdHP0,2849 +torch/include/ATen/ops/upsample_trilinear3d_backward_cuda_dispatch.h,sha256=GkTpTsqlRe6z51pXzsRpyztFTRE_71TVDVEN4Jz2WEE,2851 +torch/include/ATen/ops/upsample_trilinear3d_backward_meta.h,sha256=TKGxdkvWo-MGz0oYBtu9NzRbiM0xhJ7oEBApujHZIxI,1042 +torch/include/ATen/ops/upsample_trilinear3d_backward_meta_dispatch.h,sha256=kc9pT8jE0XxHPZELuAaNLLCnopoUV76uD_07KnrzTsA,2851 +torch/include/ATen/ops/upsample_trilinear3d_backward_native.h,sha256=DsDe4hdKCvN2mwABULGcANebhdbb8qK-f1_P3VxFSn0,1525 +torch/include/ATen/ops/upsample_trilinear3d_backward_ops.h,sha256=TRWVmmPmMxw39RsgVgnuiy3SOkrR082bo4Tpa0cMPJ0,3279 +torch/include/ATen/ops/upsample_trilinear3d_compositeexplicitautogradnonfunctional_dispatch.h,sha256=8hW2jm5ozyz78lqhe543EgtIDFRDUx1cOtgRQvKR5ls,1529 +torch/include/ATen/ops/upsample_trilinear3d_compositeimplicitautograd_dispatch.h,sha256=zreAYtRkrA6BjIBcrDqzedxVegRyLV0QMvM6DSeDG1M,1332 +torch/include/ATen/ops/upsample_trilinear3d_cpu_dispatch.h,sha256=zu6J7ocKvCaw8UsQY9T4iu2JwEIsjs3do0_aB1eRpSM,2545 +torch/include/ATen/ops/upsample_trilinear3d_cuda_dispatch.h,sha256=izNpTuxeT3tjQeY6TjjbdVEtxBk0kGyrZMLi8f6YuZM,2547 +torch/include/ATen/ops/upsample_trilinear3d_meta.h,sha256=V2VD_cRq_XmREMLDYHb0XIl9aTGMPLgoUiLqnd_heIE,992 +torch/include/ATen/ops/upsample_trilinear3d_meta_dispatch.h,sha256=30aaUlfLBQZMJ0D7beom4Y1JryH2vLnjikuuf1leQ2I,2547 +torch/include/ATen/ops/upsample_trilinear3d_native.h,sha256=In-rSLbiKtoo5vAbaD-9Wf9abS826W5354l6X6WG0AY,1563 +torch/include/ATen/ops/upsample_trilinear3d_ops.h,sha256=TuDc7fNnX1B6qxAUrKbMxMKqoJo2DTO7rgCYXOi4_9Q,3849 +torch/include/ATen/ops/value_selecting_reduction_backward.h,sha256=50iUpIEwpCTGhy81ykc_3hqc-t6sy6LQXxjyOFbacCI,2335 +torch/include/ATen/ops/value_selecting_reduction_backward_compositeimplicitautograd_dispatch.h,sha256=XZOBQxgOmxOTGbXly8T2DYQTmU5aWD2bc0dFmehGHso,1295 +torch/include/ATen/ops/value_selecting_reduction_backward_native.h,sha256=mVQH2Irl_BLOPJLOCx63QNTNSgI7HYlkPem9DN9sxf0,1025 +torch/include/ATen/ops/value_selecting_reduction_backward_ops.h,sha256=DL7brvLTfri9Paf5ZUfCIaFotzYcaZ2GVwSPFiwH120,1570 +torch/include/ATen/ops/values.h,sha256=aHiEbW13ImT9Kxo2-9wG7ERpwYIQFXHmBIfnIXuHg3g,757 +torch/include/ATen/ops/values_compositeexplicitautograd_dispatch.h,sha256=NfxBe-IKRKHgsn-e6BK3h_gcKPJOrwikkx6sZQkNeso,1018 +torch/include/ATen/ops/values_copy.h,sha256=8ScsN7bZKLseag-JbeMqiQ_ZXR3f1Uau-sQJUX-Z_dg,1331 +torch/include/ATen/ops/values_copy_compositeexplicitautograd_dispatch.h,sha256=-_kQv813ADijVdRCK4oDIlLCs-p4lap3kAxzIGtywLY,1131 +torch/include/ATen/ops/values_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=G7qH4UrcePdCuKcFyg-2Rp0jz2RvZlc9a6EIudFUVOA,1049 +torch/include/ATen/ops/values_copy_native.h,sha256=w9zwAvkNe16eAq1rdQQx1r4uEFC9SVh8OxvYp3CB_yw,818 +torch/include/ATen/ops/values_copy_ops.h,sha256=j_LgxXl5pGa1ZN1KJhogl4nufnr9LzGWL3MrYZf1pHA,1831 +torch/include/ATen/ops/values_native.h,sha256=XL8VFOu16JXk1Cr-GXJSLcVqALOOnizI8baLftH-pZw,925 +torch/include/ATen/ops/values_ops.h,sha256=K0NvQylY7UsEzgdCJWriEkc8UZbT1GPkilN1WLG8JzM,1217 +torch/include/ATen/ops/vander.h,sha256=nHXvQ6uH_FJh9g4JeV4nEBseWwJvT3cvX2e4PGFCYWA,999 +torch/include/ATen/ops/vander_compositeimplicitautograd_dispatch.h,sha256=uXoUUm1vx2D0GgP6KAldUXrrIrtjwrxyJh5SYdNzdLo,1081 +torch/include/ATen/ops/vander_native.h,sha256=btiDecUDd6ABR57r8V5PcmQ9RVdY-BHQnBxDbixdyQg,793 +torch/include/ATen/ops/vander_ops.h,sha256=c4C80epl2oE36jNNfI2WJxpztELmNLlVjvJuoN5MHxQ,1360 +torch/include/ATen/ops/var.h,sha256=8TgH44ilLXBzoGuP-jK14DCZ7C1AJ_r7OfrhYFUaEn0,5125 +torch/include/ATen/ops/var_compositeimplicitautograd_dispatch.h,sha256=lneD8C9FsxcAhXtZGSQp3eXZkEAQrvlciZuPlYB9PuU,2275 +torch/include/ATen/ops/var_cpu_dispatch.h,sha256=xbTiFw-dPZ7yOjUcMeeyw9_moM-xRlVVjJ873Nqd1xs,1467 +torch/include/ATen/ops/var_cuda_dispatch.h,sha256=uzyd8yLSrd0yP0b1MHAUSqV2sMES69nzvHLQ9IPW2Fw,1469 +torch/include/ATen/ops/var_mean.h,sha256=tHOPj3nbkkxrrtNjFPUIREWcI2TrbsEIUrm_POi6aIA,3471 +torch/include/ATen/ops/var_mean_compositeexplicitautograd_dispatch.h,sha256=nJCMUsGiTT1vPPZY1S4j2FbynhrMKzGwPb2r4f3Wth8,1437 +torch/include/ATen/ops/var_mean_compositeimplicitautograd_dispatch.h,sha256=ZydlSZl7_itNZD4KsOSy9Ht391qMQd9415IdI--clWY,1527 +torch/include/ATen/ops/var_mean_cpu_dispatch.h,sha256=vYztBG8dlhkkV9Qm0sHdfKesjSBeUwLlAyXWcQ1sR3I,1128 +torch/include/ATen/ops/var_mean_cuda_dispatch.h,sha256=A_4opqHf8q6ilPM5jdkmV8hiQY_UDHbQAZ-t6JFFCmI,1130 +torch/include/ATen/ops/var_mean_native.h,sha256=SqDxuvF1Avwgp6uhfdNxFFOSSvonnYEN5-kzOju0d-s,1691 +torch/include/ATen/ops/var_mean_ops.h,sha256=iMjv5G18ETat0FsLdKBK8ag75tLdnC__ROYIVaN5zVE,5950 +torch/include/ATen/ops/var_native.h,sha256=HjJ-lf9zLKTWY9mjMs-MKNXUASmz5aqTHcOzXwXRNek,1894 +torch/include/ATen/ops/var_ops.h,sha256=q4GJL23srEMokn0Ey5xu8Wq66IIrBgRPPU4g4i03xeI,7758 +torch/include/ATen/ops/vdot.h,sha256=JicLDIkN5IfnoN87enhlobiJviGMJe6C5n1G2wd37UM,1402 +torch/include/ATen/ops/vdot_compositeexplicitautograd_dispatch.h,sha256=l6lc0wGToDZwZPEiSl20UKMYJGxcJi-gUt_xYnHsYjs,1169 +torch/include/ATen/ops/vdot_cpu_dispatch.h,sha256=YHIEGfbDjVlUP_jU-rTJnkolITQ-hkjz_CP1nZDn5JU,998 +torch/include/ATen/ops/vdot_cuda_dispatch.h,sha256=GaZyEFeqgMVWQocjbsYrjrwnfmsi8gdy18XQPDWpcGs,1000 +torch/include/ATen/ops/vdot_native.h,sha256=bxNBtL1qS4gZUG34QntoryniL9Zu2gDzoXQ1LrAhsPA,939 +torch/include/ATen/ops/vdot_ops.h,sha256=9T724eQRJCw7rQYrYOL8ODZ8qU7Ye8qZXgw2HdqdKr8,1961 +torch/include/ATen/ops/view.h,sha256=GGtONjhHkbAAZoG7YkCTLRMSjKO4PJHnyOu4SxGspo8,1226 +torch/include/ATen/ops/view_as.h,sha256=xDxUn24gipOhvcTNyePXEVhT0zQlx7dFF3IySwo45eM,758 +torch/include/ATen/ops/view_as_complex.h,sha256=u7picSMflYrIWKCWQ814OjXBYBFW55tjDY6mHcGzNAk,933 +torch/include/ATen/ops/view_as_complex_copy.h,sha256=1NDBuYRizSL7R0wpMrZehqqnMhwRSID6-I8wdTXQyTs,1421 +torch/include/ATen/ops/view_as_complex_copy_compositeexplicitautograd_dispatch.h,sha256=7YwDxhmZ4enLPGl5UONKstWHBRVHXAv2UxJ5FFcVang,1149 +torch/include/ATen/ops/view_as_complex_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=nIIJh5cxokGirJpguEn88TDnecBG1HxI9RLdSjleJC4,1058 +torch/include/ATen/ops/view_as_complex_copy_native.h,sha256=t_0Bq63ZfO63adSp1mNQ6makFBr2UGGZe4ZKJ8yjG7g,836 +torch/include/ATen/ops/view_as_complex_copy_ops.h,sha256=0rLVSPL32E60Qcjpu-38TfnY_-Jgh7VdxSMxA3Yrt2g,1885 +torch/include/ATen/ops/view_as_complex_cpu_dispatch.h,sha256=3jMO8MKkA30YDaXsRtIsJ7bLvD2hnABjOeCQUUKWpog,983 +torch/include/ATen/ops/view_as_complex_cuda_dispatch.h,sha256=yAopiXBJRt86Ot8cCjrxSTkXRphkp9rQDoe4qQ-i3CU,985 +torch/include/ATen/ops/view_as_complex_meta_dispatch.h,sha256=bnfEFb_v0CGfAxp7lS-4B454LowAle6x6XMdZDk61cI,985 +torch/include/ATen/ops/view_as_complex_native.h,sha256=m_crbI2Lcc2yoM8S4QWDHmZeUyq3clI7S4986T1N61I,809 +torch/include/ATen/ops/view_as_complex_ops.h,sha256=9R6piRXR4G7RDALjgA2UWTU_6wyLo_fwGxmo8V96h9M,1244 +torch/include/ATen/ops/view_as_compositeimplicitautograd_dispatch.h,sha256=C5cdp5DbhwwtcNkmqpICCGuT646zDlRD03zgeIPE8WY,1045 +torch/include/ATen/ops/view_as_native.h,sha256=_wWLqJC__0CWRID3JDYSnqRHczhbQauaX2fDwfMgp-k,757 +torch/include/ATen/ops/view_as_ops.h,sha256=zpiLCubplyWHWYexQuGPI8MyzJZZ2mKkOHm4fw_X02U,1306 +torch/include/ATen/ops/view_as_real.h,sha256=5ayVHt5QlvTfSHaJ1Hz8-4dmx-M_VKWim-WVyA1F9yc,921 +torch/include/ATen/ops/view_as_real_copy.h,sha256=7IQEl-c6a8QJ1wN0jaSyYKcSSGU1-ySygrXWRiyIlNQ,1391 +torch/include/ATen/ops/view_as_real_copy_compositeexplicitautograd_dispatch.h,sha256=7AyOa60Jva43fN_S0GYrJoLyIJt4H0i6bQqpweM67tM,1143 +torch/include/ATen/ops/view_as_real_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=pxYeLcSTKRfJIz1bUIy2ppanoNUMT-Hd2ZVdZ1v0TDo,1055 +torch/include/ATen/ops/view_as_real_copy_native.h,sha256=0WF3X8s2Hqdr_twooGlPfpzwRCMpc6IFsH0YJcXXjVo,830 +torch/include/ATen/ops/view_as_real_copy_ops.h,sha256=1QEGWkzDQPwNNeSuezLkRT278PeaCCkA2bKkVcMx9xg,1867 +torch/include/ATen/ops/view_as_real_cpu_dispatch.h,sha256=IIDz6-o9AGK1JjNbVtGvYxbGGP0cFJ8paH12DRBXxFo,980 +torch/include/ATen/ops/view_as_real_cuda_dispatch.h,sha256=a8jBi4gQ5a-fkvIIVCOLp-vJ4CwbwgZBkX_ZBrgseJs,982 +torch/include/ATen/ops/view_as_real_meta_dispatch.h,sha256=jLFinJQF4v1-HgEsoVUN4-iSY3tTjbHlUG4PMjPtfyw,982 +torch/include/ATen/ops/view_as_real_native.h,sha256=rC2H9uYQki8uZdDLuSdBQXUFoMtsrzyxlx76QQuTWEU,803 +torch/include/ATen/ops/view_as_real_ops.h,sha256=ea3qjXjO9-xonKQR3sG6-kZ-gTzrZxBBLvxmZvFCefg,1235 +torch/include/ATen/ops/view_compositeexplicitautograd_dispatch.h,sha256=YfVf_zRhMJVZwtdi0360E_lsDJZmo0C9jqRX7Ayfq6U,1038 +torch/include/ATen/ops/view_copy.h,sha256=peQjHdsgZV7JG_uG6MABHdu6S-TxxOFhTbD0cxrezYs,4567 +torch/include/ATen/ops/view_copy_compositeexplicitautograd_dispatch.h,sha256=aYEAnUUQxskAc4fziN8xtieCgMmVXicygQUn2l1aWr0,1607 +torch/include/ATen/ops/view_copy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=MvDZROlbaG5ER5LTuq5REUHVGm8kBwwxLP2FVKYX4vU,1238 +torch/include/ATen/ops/view_copy_native.h,sha256=YiUsJYzg0-BgZw7QmPTc7wrqeZJalTBLkngAk_jkVsc,1074 +torch/include/ATen/ops/view_copy_ops.h,sha256=Y2jtVsII1DLIQn31Bcdm57xlnlJOVb4nIoM7-GkwUCQ,3294 +torch/include/ATen/ops/view_cpu_dispatch.h,sha256=n0nHJcsPfSrGba8oDYuE8b93v5BumHDMVt6A-N_enr0,1079 +torch/include/ATen/ops/view_cuda_dispatch.h,sha256=2u7dNdDKeuSEg4aeLaSOOYvfc40dCXn4MINdLMuyLUg,1081 +torch/include/ATen/ops/view_meta_dispatch.h,sha256=vAOyA1AJ5XD0tXbygiTYrRa-uEJX35_SACr1gNTx4lg,1081 +torch/include/ATen/ops/view_native.h,sha256=Cs4X4WNX_eatnOHi2Hhfjmm3Ko6yQLFJcJuNXDq9N4k,992 +torch/include/ATen/ops/view_ops.h,sha256=SwwCiaWM53F4d3WML2FpoU9FK4ZupDcCcWYJkC-eP9g,1894 +torch/include/ATen/ops/vsplit.h,sha256=KM71VxI6WvjpHrNSaX6Otlz5tKSh3YyP5tvdKBySMMQ,1193 +torch/include/ATen/ops/vsplit_compositeimplicitautograd_dispatch.h,sha256=t52jUPFnDHNxt8JdBEq-3SSE1O9tGfzsOczonUdybOE,1145 +torch/include/ATen/ops/vsplit_native.h,sha256=OIWh43o4DGB9m7Y4bT4EcE6T8vsSo8QV1MdA9RGIUXo,857 +torch/include/ATen/ops/vsplit_ops.h,sha256=u1eSYptxW_q-ruySzD6rhOKni5O-9Kzuv_I5r2tworM,1996 +torch/include/ATen/ops/vstack.h,sha256=9-oSnsmcpHnF7OQmLdMbNGUw1F-DFWDS0MwG49lVZMk,1302 +torch/include/ATen/ops/vstack_compositeimplicitautograd_dispatch.h,sha256=emO4YscThcSAWMKGxGuJosB94u8muTcTjLW98iK6xpY,1172 +torch/include/ATen/ops/vstack_native.h,sha256=me3PDh8hR7Z7IBZcjd2zWU_5Q4leydqeEAY4ewtC16s,806 +torch/include/ATen/ops/vstack_ops.h,sha256=WzGCcbXgd_UTVjQZf5ozkAS13a0bTNWfNict4SXTI-0,1799 +torch/include/ATen/ops/where.h,sha256=e5IQB-LZoBA2mv24F8lCpdGtg5mZLp5IN-75vqLyhS0,2557 +torch/include/ATen/ops/where_compositeimplicitautograd_dispatch.h,sha256=peRwiVwihUlDxQwojEO1mXQO7Ha2XaIaAQ9wqwzcu3w,1364 +torch/include/ATen/ops/where_cpu_dispatch.h,sha256=S0qQQ16Fii0CA3i09OAUYWAY9hrRcudP9OGJV5WWgjQ,1296 +torch/include/ATen/ops/where_cuda_dispatch.h,sha256=4EoxCwDtpsOS4qD5vqgW0mB_wPlZOWrwdG3MMCrx-Sk,1298 +torch/include/ATen/ops/where_native.h,sha256=EdIsoAf_mD76R_OaeXYQ-hzkFPS5RckLT9hvMXmjcLE,1591 +torch/include/ATen/ops/where_ops.h,sha256=4UmqmbPgxA9Ow7EEpldJUbrUgm-JowsOwhAy-K6DdPk,4881 +torch/include/ATen/ops/xlogy.h,sha256=TuCqeYsAVCOenJnWAo8TaphxJlOMowdc7RhMNiOCUug,3318 +torch/include/ATen/ops/xlogy_compositeexplicitautograd_dispatch.h,sha256=iVS_KwkXYj3d4WVWMOLPWnAEWouswJnKsjq736Ito-I,1612 +torch/include/ATen/ops/xlogy_compositeexplicitautogradnonfunctional_dispatch.h,sha256=893tL9CGZya8TpO9sRY0zYtCaipyLDE7CIc_Xpf5C1Q,1145 +torch/include/ATen/ops/xlogy_cpu_dispatch.h,sha256=rLLrWLK8GlMaWaFOjXxFMfLPgxyi3Y8fmDsg-5ApNy8,1282 +torch/include/ATen/ops/xlogy_cuda_dispatch.h,sha256=WbCQeTbvAWTPrGUZ4ahFEM8bjrc9ETJJAqslOU6ADAI,1284 +torch/include/ATen/ops/xlogy_meta.h,sha256=XwY96Fur0W4J-FkBBzSLX7vkPd2hIn0CSfoSxZSA1l8,853 +torch/include/ATen/ops/xlogy_meta_dispatch.h,sha256=XfwHSu5uRYR8XerF7Pj7jia6SWcP7ILRR_82gZC5PoU,1284 +torch/include/ATen/ops/xlogy_native.h,sha256=dxKz3BI0ip-r2VMHmdv4Z5M1dT5a1UvRzEHrNL3GQk8,1320 +torch/include/ATen/ops/xlogy_ops.h,sha256=8qWfUHgkOfm_ltEQLeT0mFjr-fyY9nc2O6raghk8g1I,5881 +torch/include/ATen/ops/xor.h,sha256=UIoqw1zoIaprTXMXWtpL9qk0Zs6lERKjzaPsosIrUKM,1151 +torch/include/ATen/ops/xor_compositeimplicitautograd_dispatch.h,sha256=8R1svVhfc2qFTWM-Fj8wooTqKBD6pYAJXgyS_g73A74,1282 +torch/include/ATen/ops/xor_native.h,sha256=gM5dHlixX5ocP3UuTv8teVyONjrhFj8lkBciivnrQ7s,994 +torch/include/ATen/ops/xor_ops.h,sha256=KNyI_wAKSbxhcl7EmkaPR65P_u2wSNxFq2J2ic-Sx6s,3145 +torch/include/ATen/ops/zero.h,sha256=l1nRjtPSq1AQr6AEwYAKTUeywvg004HZYB-NT3LjQ6c,1397 +torch/include/ATen/ops/zero_compositeexplicitautograd_dispatch.h,sha256=RwOxpmH7vFAarQXVZkuYdBdybZy_YhEfUwdLeSwmlnk,1169 +torch/include/ATen/ops/zero_cpu_dispatch.h,sha256=--hGYlPpPqTv9nVIBWSLlCq1eY4F17dhTx6e-vUKy3c,969 +torch/include/ATen/ops/zero_cuda_dispatch.h,sha256=5yduzMQuacGwEV7MWqKhXMWXF2gjbG3FkvNFS-3Y7Gk,971 +torch/include/ATen/ops/zero_meta_dispatch.h,sha256=zj1PwiKraybZ-vSRnryY-eXt37kxO9M8dtG5HaQW2w4,971 +torch/include/ATen/ops/zero_native.h,sha256=zIxO5KqSUxuJcMoAC6Yrw_prZsmxTz6NJGb30lMjmnw,1135 +torch/include/ATen/ops/zero_ops.h,sha256=SH7IZbIrl1-rELgxW4Rl2LIg23hSNCmLMJwGHwy2gL8,2282 +torch/include/ATen/ops/zeros.h,sha256=28Fpk86-P5URArDY3iPweMXVtcc0iJjqRwR1Amr70Ik,7136 +torch/include/ATen/ops/zeros_compositeexplicitautograd_dispatch.h,sha256=flCpRhzYMiT2a3IDtKWxyh4i3954alOAmf0TBqWc6wQ,2440 +torch/include/ATen/ops/zeros_like.h,sha256=jdw3IDyDg_k5_j_t9agBCmStJpL0bfP-PlvJhxqCbpI,2475 +torch/include/ATen/ops/zeros_like_compositeexplicitautograd_dispatch.h,sha256=Zef8fFttnNwB08ztQGWxwQ149IgEewYmpKtgLhLYyu8,1646 +torch/include/ATen/ops/zeros_like_compositeimplicitautogradnestedtensor_dispatch.h,sha256=TmVm2MpPmpHuSrfeqTFuPJ5aVEBnQYMgQauXMJSnbcw,1392 +torch/include/ATen/ops/zeros_like_native.h,sha256=jUbqnlj7UU-v1U3lWjQSFxciVMD7uo-YWOL3JLHcnL8,1086 +torch/include/ATen/ops/zeros_like_ops.h,sha256=FkMXkSDU7uv1jAT_teyuPyr5S1GMgbLVkIkp_i3wSFM,2655 +torch/include/ATen/ops/zeros_native.h,sha256=hGGjFyBZargs2pXY_DrBUfIOehVEMHS_7Xcm9uTd5Vk,1416 +torch/include/ATen/ops/zeros_ops.h,sha256=6OzY2ObtV9NggSvRmLF8aBRlkwkhCKgUKBT3CZB26D8,4160 +torch/include/ATen/quantized/QTensorImpl.h,sha256=YCONez30ZR878R0GgzfJazkS44z8xQBYXrIqGM2JG5s,4275 +torch/include/ATen/quantized/Quantizer.h,sha256=11qYFvRL3cOpn03oX2jj-McVtmqvxCTVp70_i2HgokY,9486 +torch/include/ATen/record_function.h,sha256=dcBOVXeL6voE_KcAcjxKUgGkVtI-JZIFzpN-vsrOEX0,24519 +torch/include/ATen/xpu/CachingHostAllocator.h,sha256=gONgsOfhC26F5q2kJ650FDaMpCQT1EvK3OHy-365fDg,1611 +torch/include/ATen/xpu/EmptyTensor.h,sha256=rOqGXEQjRbuhyjk0MVDF3ys9HbnwSjMzbOwtUq7nGCI,1413 +torch/include/ATen/xpu/PeerToPeerAccess.h,sha256=asP_YLMYgbcCoC3deEigGTYHVMKMOCQhO2s1F8sQYeI,954 +torch/include/ATen/xpu/PhiloxXpuState.h,sha256=1XsgWS7eFn9uyFMrhp9KcWESdjg_TMwP0LCYdS8dWWg,1261 +torch/include/ATen/xpu/PinnedMemoryAllocator.h,sha256=pQ7YKcs5YKKEwiGf5yUQROWjKj5WXtt2GOs-dZg1nIA,500 +torch/include/ATen/xpu/XPUContext.h,sha256=2mMuW1pieqh-HETTKnZBhNdwC1fv-A-taQbVquPzvNE,791 +torch/include/ATen/xpu/XPUDevice.h,sha256=rSn5aU7Pn8Pdmig-ckK2xwXXUpH1Q9rtzGJI63Dhsv8,521 +torch/include/ATen/xpu/XPUEvent.h,sha256=jdUIC50oEIdXyYz1r3J2-gQoYg_HIYl9iIzNVooOszI,330 +torch/include/ATen/xpu/XPUGeneratorImpl.h,sha256=n8gJT7tSo_GSdzMzdaLktqU1EpmHLTi2Bk0tj9CssGQ,2912 +torch/include/ATen/xpu/XPUGraph.h,sha256=1aTwdrHbLCGCA00JpuLq4txTfI6bqASHvmYhVnoP8BU,3557 +torch/include/ATen/xpu/XPUGraphsUtils.h,sha256=Z6abmhD97-catJA8HzmeuHUDPIVg3Bt74WSBNLEMiR4,810 +torch/include/ATen/xpu/XPUScaledBlas.h,sha256=CMnT00Kf9FJX1P3mN2VkZOb6dMFo5FVsEvxjecrLA6U,2639 +torch/include/ATen/xpu/XPUUtils.h,sha256=kpMUbXqmDwFezM13YxjumUw91b-3AKe-DNgWQE78IGo,676 +torch/include/ATen/xpu/detail/LazyLevelZero.h,sha256=7O6n_KlFmEixug90cyphDAx6Ht-zO9c9lDhdne9836w,485 +torch/include/ATen/xpu/detail/XPUHooks.h,sha256=Xl3mIs2Mq8HZuNWRjfporgN9POVL2j0Bhrh2SGEhxOg,1488 +torch/include/THC/THCAtomics.cuh,sha256=H75MAoZpXZIKRrPHUPUk-ZQaky8eTN8UYEcI8-BsfdE,372 +torch/include/THC/THCDeviceUtils.cuh,sha256=U2DABMB1OvzbnGeK5XZgJaHx3rt_Ox9gobPJgzm_cCY,332 +torch/include/advisor-annotate.h,sha256=MgjrWkMfFXXb2B7pJlf4xO-drRhiQUPw5t36P264E-g,23930 +torch/include/c10/core/Allocator.h,sha256=qoy_QZsb6KEIXWvDztG0K6E_JAjeYyQj8LbXCRk6UM4,14571 +torch/include/c10/core/AllocatorConfig.h,sha256=MlMZS9VX7iExnBbZ2l2mJYHkGvENUKF6J6BCKpmZrNU,15070 +torch/include/c10/core/AutogradState.h,sha256=RoJraKpzqdovlTTR6UpNBIaQW1aAwwOHogS4RO__zDM,2268 +torch/include/c10/core/Backend.h,sha256=jUqyE50qhbELtKPwwVryHE_7Aj6M9YXT1PEUbO59uy8,12187 +torch/include/c10/core/CPUAllocator.h,sha256=_tQd7SAIJ5k0s7Inu0P5L-o7SSs7diwk2j71sLX98Lw,1953 +torch/include/c10/core/CachingDeviceAllocator.h,sha256=oWD12jnCBnQKGhSUJDApvu_rLhDqVHGb8SGHSigbUnM,9510 +torch/include/c10/core/CompileTimeFunctionPointer.h,sha256=ea6PBQnezWHDIAcwtLYbIb-iS_nRuNcF8aE5lS4dgYM,1954 +torch/include/c10/core/ConstantSymNodeImpl.h,sha256=S0UAsSIydJwtWNl5lp759zfM77quImnhBQY7PMGPUhE,3363 +torch/include/c10/core/Contiguity.h,sha256=OcYWLOKaMJuo7dRL5Yw3piqMJ_a5706yUPGr1y47Zr0,10039 +torch/include/c10/core/CopyBytes.h,sha256=MawPcjyx1VMe1f9kp2RIx2BjAs_lI8jlK4BuppekD6I,1597 +torch/include/c10/core/DefaultDtype.h,sha256=KZKv7UUxi8v82O_Rk4gLa8yQ7QvkYq2HYUmxinwch3I,648 +torch/include/c10/core/DefaultTensorOptions.h,sha256=HgF3PO38zQ9lgd4RxZ2D5wWhobFPof5Sao6cxb_XJ_8,1318 +torch/include/c10/core/Device.h,sha256=xOo02kJjwgwFhsBck2TOjH3cg97SsNwbo0NItlqkxr8,7120 +torch/include/c10/core/DeviceArray.h,sha256=22EPv2g9iAoMplJyqgcPJkRJ35OwJAp3LOv_6RFg724,937 +torch/include/c10/core/DeviceCapability.h,sha256=sw7aVyoj2M0skKdyJQoauOguTqBcB9yYKvJwRDRmyoY,2534 +torch/include/c10/core/DeviceGuard.h,sha256=Gms0KqpunmWig_7lmwO7jrGu9f9vSESDEbsIQcBz5FI,8062 +torch/include/c10/core/DeviceType.h,sha256=FSeENqyP_wy2oz9TTWCVIn7UAWq0p2v4v9tMqMTCKlc,1055 +torch/include/c10/core/DispatchKey.h,sha256=C3OAST7bz92qGy7aKDdhRZ9hZ0aEBgemBFJ2FmmR8s4,32690 +torch/include/c10/core/DispatchKeySet.h,sha256=g6mlJJHWxlCYR8yzsAim-z0L4gJBSoABSVbVsdDPgqg,42040 +torch/include/c10/core/DynamicCast.h,sha256=Rak9MDhBjaSbRxDI-yqQnB8f55gwpX0OM3n4yUuX-Lc,4868 +torch/include/c10/core/Event.h,sha256=UadXfNbB3Rga50tKW1BbTvfB-0_3vmscx6ta3JbwHxk,4710 +torch/include/c10/core/GeneratorImpl.h,sha256=pXrJKhbpEkzfzW2ZmattDRTK-o4US_0VNP-LSEGcczg,4191 +torch/include/c10/core/GradMode.h,sha256=z9_siQQtwK4RxWAE2eHUyt20IIUgGpdfGLp_LbMzKjE,1915 +torch/include/c10/core/InferenceMode.h,sha256=WiggR4JpCIisvvfKIhts7QMvJBsUvG3uksyGQBAkUZw,4017 +torch/include/c10/core/Layout.h,sha256=WZRk5uQ1-c6RjGjk0TGDwMIWZrgNSxMoXZZxIqQ4TUE,1887 +torch/include/c10/core/MemoryFormat.h,sha256=XI0mFyt3vpwyPJ-urnb0vmdrW2W1EOeoEJuYyKbdGeY,8843 +torch/include/c10/core/OptionalRef.h,sha256=VGHaFtquoi3P9FKVWvCmaEmliVViTAy04X7PLWl-IXc,775 +torch/include/c10/core/PyHandleCache.h,sha256=FouTl09n8S7PrgCeNrIYlsUJefsAuddQkYKc5aJveNI,3355 +torch/include/c10/core/QEngine.h,sha256=0XnrQ3HHh00H39dSdMOnWxDt2mC-2F8gUbRd5mtDopM,1264 +torch/include/c10/core/QScheme.h,sha256=Hxao6hBmnsPo4mDykSRoaHGQV1BKndR9W_qvIoD9P5o,1934 +torch/include/c10/core/RefcountedDeleter.h,sha256=z9vp7IFlO65iZE_GqMSfYYX5tXSLOla7T0jgecY96UU,2505 +torch/include/c10/core/SafePyObject.h,sha256=C4eUbVovN5DSCny3CpaMuV0iD65i3urfiM25v9Ce5c4,3975 +torch/include/c10/core/Scalar.h,sha256=0XcaSo3YRCBTAH2PSq7JT99WXwesnsMjthZj3kWLDDw,14411 +torch/include/c10/core/ScalarType.h,sha256=dXc5-TfXfEyB0pxmXPwxXmONPCxR0gGFee6Bd7knZoQ,9704 +torch/include/c10/core/ScalarTypeToTypeMeta.h,sha256=2ZAPKZkxiEGr1pwqGpnxjqF-ISfk5b4jk6zf18IW_bw,1611 +torch/include/c10/core/Storage.h,sha256=nEHPb13MWuBqzgsdGVd9j9yIb0xteDeoRsSIrkkV97I,7997 +torch/include/c10/core/StorageImpl.h,sha256=sVXhSlIrjrFunrYWqLzlqFUpT6Mjy4aLa8NLa-oCNx4,12990 +torch/include/c10/core/Stream.h,sha256=xmk3T7nP5C62JKrPf3fmLAT2C0Z7JOgkGV8BgDDRmnQ,7032 +torch/include/c10/core/StreamGuard.h,sha256=lSXnEpjYzbhTv5LS9PbBpCHFY90SDmbf-pYfDPIqosk,6842 +torch/include/c10/core/SymBool.h,sha256=rdRarYzPMHq3OvsNyg05BbQMt1dDkqiuBZw7dKkVO7M,4892 +torch/include/c10/core/SymFloat.h,sha256=mhRHhTtXNNcyr3B5sDwclWDOLzI5_HOkA64fBNFN_iE,3891 +torch/include/c10/core/SymInt.h,sha256=zREY9U92LNHcuc7xIhBpDa54wGq1lMGQDdrzkhFMIn4,17653 +torch/include/c10/core/SymIntArrayRef.h,sha256=psgPBcmm_8F1Gr_Z9GrUo94nF7LmvkHhs54bP6yYME4,3530 +torch/include/c10/core/SymNodeImpl.h,sha256=e43eQx5LX4kt6RxU2aDGfaFcl89Lpnl-fcfg33lFjZ8,7598 +torch/include/c10/core/SymbolicShapeMeta.h,sha256=VAbG9Yrm0GZUDbOJfIar8mF3Ulfozh0izsS8FAMnePk,7997 +torch/include/c10/core/TensorImpl.h,sha256=8PxRh1CyMW2g57r4v53mGdJglIFoVSZmAo4eMAAm1l8,116916 +torch/include/c10/core/TensorOptions.h,sha256=qFFAmNKqdaCMXoRMge0hy4DjxOz2SAUAhcfjWFxl_ts,27288 +torch/include/c10/core/UndefinedTensorImpl.h,sha256=YPHuqeThSMX-hlQXH3_1ax1hejSGvexTJQeULXYJs4s,1487 +torch/include/c10/core/WrapDimMinimal.h,sha256=GzEltFCQfxV_PknyCE2aTtan-Uie-0AtUDNPO76f6ZE,1614 +torch/include/c10/core/alignment.h,sha256=CyLRjpw3Jm1j6I9sVCPc4F1wWXOfo1wcEzSYuezXhNo,1132 +torch/include/c10/core/impl/COW.h,sha256=KPS_fVIdl7S7-n4OZAbTbv16aoV_1pSDCXgn6n9uRLg,1310 +torch/include/c10/core/impl/COWDeleter.h,sha256=XnD0YAt5Euep8_WazaoqIs2sxEQpyunbVwLgAoTtGqg,2352 +torch/include/c10/core/impl/DeviceGuardImplInterface.h,sha256=AjqzbFsdfRiujQbfZfHIeSBOXsD0ksIq5dp9jdd1OAs,15803 +torch/include/c10/core/impl/FakeGuardImpl.h,sha256=AO7r_xeS46X0I_63CpAmTlaB7BTNdyo6aYVudvpYBac,3436 +torch/include/c10/core/impl/GPUTrace.h,sha256=h3gsM8i7vgjyb8ypN9JpTtxbcKr5xGRB05IML4lffZY,1128 +torch/include/c10/core/impl/HermeticPyObjectTLS.h,sha256=3ZAGs8gcdy01ZnRPqN9i6SrN_SJUmkXLi4F-FhGqSR4,2800 +torch/include/c10/core/impl/InlineDeviceGuard.h,sha256=R8ooBA35wnukVZ5_Cl4eo19Jn4azaxVeUngCTTS66sI,16165 +torch/include/c10/core/impl/InlineEvent.h,sha256=oSHUnxokPTjgAtJsjrcL4iwYaJogtdguP4Ny8bCubns,4562 +torch/include/c10/core/impl/InlineStreamGuard.h,sha256=y0-b1g1el6WQGK1mHXMwcniDstsC9m8Q6HIUL_K4lWc,10168 +torch/include/c10/core/impl/LocalDispatchKeySet.h,sha256=uPWPtzGIfkJqvALMpp-1kFfQh_Ng7owMmmZGXNt9PCU,6819 +torch/include/c10/core/impl/PyInterpreter.h,sha256=Imdw1o8r0S5Pb1NiNyEK_FpB0StVgyyTl9dV67pa52g,11003 +torch/include/c10/core/impl/PyInterpreterHooks.h,sha256=_6a3hwA1xa1ADfvedrfYZs9A4gaCNdmFHABb8J5_azo,1370 +torch/include/c10/core/impl/PyObjectSlot.h,sha256=uHrktIqLM_6T6wUQurLruZI0CzQOKqsoHk9OETxAq9g,2080 +torch/include/c10/core/impl/PythonDispatcherTLS.h,sha256=iPTFvUJXiDcNL3U0fL9DwbnRBvHKA98Sj1mdxG_esWE,1094 +torch/include/c10/core/impl/SizesAndStrides.h,sha256=3Lk4MQ_G9Yxd466J0Y63J4gznQJvjSTNcTCgn3CEzx0,9010 +torch/include/c10/core/impl/TorchDispatchModeTLS.h,sha256=cc-jimOtCaHndjJJC4CXNc0ZxiJbojjZfbDSnGPbi0w,2535 +torch/include/c10/core/impl/VirtualGuardImpl.h,sha256=5Ds4eZ78mrIaBTos3XwggFbCLqM5wIwjxq-23EsuGhM,3879 +torch/include/c10/core/impl/alloc_cpu.h,sha256=r1kaVQbsvfDznXZhbyfzCd5V1iUhM5cb-i__TG8p7Ik,926 +torch/include/c10/core/thread_pool.h,sha256=I3B_S9Ug2qpxoMRzI6kpxTEJ2QfdE2qQ8_LGEglKpSo,3251 +torch/include/c10/cuda/CUDAAlgorithm.h,sha256=lsQzc-6okqaGCA8Jbeh2Z2nMRzzeMqPrjP8R7_R4XSc,1295 +torch/include/c10/cuda/CUDAAllocatorConfig.h,sha256=vChljCcd_cyTlfnWFxrrb6qqbTVdmsZzDgTU_QOvc6g,8797 +torch/include/c10/cuda/CUDACachingAllocator.h,sha256=_kOT1CwWgMRPHxfMg2DCUWYbFw2zEgHH5JAA-ARZ96w,16482 +torch/include/c10/cuda/CUDADeviceAssertion.h,sha256=8MMMTcwJdHHovtI4mLZQMWwvin9qrDfow5PCTBj9Zq8,4416 +torch/include/c10/cuda/CUDADeviceAssertionHost.h,sha256=86Lu3bQ7p4NJcHwlr_8mD1cThCvr4dWu5hArkd4C2kk,6912 +torch/include/c10/cuda/CUDAEvent.h,sha256=wFTPunNcllPfJIVjwBvLVsXHXXCCjrENWR2e1HBFDz8,12609 +torch/include/c10/cuda/CUDAException.h,sha256=xz5j1Mude9IsuNUReszYRnbTvPPY9ChAu3I-vA9dmSo,4776 +torch/include/c10/cuda/CUDAFunctions.h,sha256=tzta019dB33TZD1HGdR0u4lgp_G416OvCH3U7vJ0Nek,5357 +torch/include/c10/cuda/CUDAGraphsC10Utils.h,sha256=2X18n30MqsLggVVUQ71PWVMphOC69wq8ABoegun0n3Y,4087 +torch/include/c10/cuda/CUDAGuard.h,sha256=pogRsenjYuqUa0rxFCuv4PQVtvnC3fbO8eMDF-llypQ,11599 +torch/include/c10/cuda/CUDAMacros.h,sha256=vKcRKJirbLzl6keZ7h9Nq0GHVBG4k8_xD_F6_DRo-rs,1733 +torch/include/c10/cuda/CUDAMathCompat.h,sha256=-ycGywH4SB7-AFYszcthbtzN3tYeRLC59wbhveUS8Gc,3800 +torch/include/c10/cuda/CUDAMiscFunctions.h,sha256=bAYoH_BsfE0drBHbPwbQY1BKpQvzAqIp47Ttp3ixSQQ,682 +torch/include/c10/cuda/CUDAStream.h,sha256=pfD_N_mGiyV2surx1fIXprZ_ShdnPVvIm9aCPkwsMrg,11217 +torch/include/c10/cuda/PeerToPeerAccess.h,sha256=AAm8L22rGCpiQIXDJNNSPg4aOvm-DUQ9hoa5AG5Cq_E,2035 +torch/include/c10/cuda/driver_api.h,sha256=dzKlqIfRIf44TwIRt4Vj4IOdfFPbcUfZQ0LORghPDJk,7216 +torch/include/c10/cuda/impl/CUDAGuardImpl.h,sha256=EABPMCjkrNmerJ3H-5-KwjZQPyaxZN0cmJGRyCOgQ4w,9841 +torch/include/c10/cuda/impl/CUDATest.h,sha256=BTPl4FJNqWy_3-YjnTBSSP51zAn9mZNRExbII4A6ldY,368 +torch/include/c10/cuda/impl/cuda_cmake_macros.h,sha256=b4GPHGIedCcUlEmdyIUJSueqx6cxYglCPACGG4tBD0Q,448 +torch/include/c10/macros/Export.h,sha256=aKgtX7IoPp-XfETT47kLUzjtrnOMHwXoApOWvfEHm-k,298 +torch/include/c10/macros/Macros.h,sha256=wH4q51OHw80iQFJqqiA9fdomPzKQyNh16vYhQ_FDjkY,298 +torch/include/c10/macros/cmake_macros.h,sha256=1C1RQ6S24kR8rzJDnxSjruaF9pbsx4bfcQjFvsNVKe8,541 +torch/include/c10/metal/atomic.h,sha256=Lui3bBpSuKN6OZ85LZ1Z7LUQRPr9QY3fE2yajqFh36U,8838 +torch/include/c10/metal/common.h,sha256=FrHfAJXhYz8fKzsaJK2_SWTr2WifWv4wy9Y59jaN9UE,1574 +torch/include/c10/metal/error.h,sha256=A9oV-mQYa2KoAp6JqIeI4IA4xdHB8WLo0os6xcXbPos,2662 +torch/include/c10/metal/expm1f.h,sha256=W1tWWSsW05yGNpKRElkDGV2p-AMXWMa_NPhRTEkdN-s,3850 +torch/include/c10/metal/igamma.h,sha256=qqyazrvnsloK5hiJX3kibHJXEwbAHDBxSWfzwmMBcdE,29348 +torch/include/c10/metal/indexing.h,sha256=Uz68ioCEHXegsVtcE4yFgRJUSkcEWmoemwfXJMdt94o,56577 +torch/include/c10/metal/random.h,sha256=_bOmpTuZn1t5JM9iVCvOYWIttk5D8FyK6tjhBcrIT50,2471 +torch/include/c10/metal/reduction_utils.h,sha256=pn6Y5d7N1Qa-Al6YbHirW5RusI4itTtSCj_7fRKLDho,11229 +torch/include/c10/metal/special_math.h,sha256=dkMH8AEiimc1dJ-nEm8-BqaHmvl_b4QJrp8tfMZO0xs,88430 +torch/include/c10/metal/utils.h,sha256=ClfTqoz-pyzXk2ExgLXfX6EqcO7YYMK7eWIWtWVbxFM,13510 +torch/include/c10/mobile/CPUCachingAllocator.h,sha256=siV7RrY8N_OTHsB5pv_i_vLjwP42pTXwrGyXYSJDqnk,4419 +torch/include/c10/mobile/CPUProfilingAllocator.h,sha256=oncuerKj9rl0s1psb-coVn62gPeuacZ9bDRlkRIyS8I,4990 +torch/include/c10/test/util/Macros.h,sha256=zDj8MR87ceOXepi-1GwaSYEnZTKQpcsCivD-tTmzd2k,430 +torch/include/c10/test/util/complex_math_test_common.h,sha256=WybEVfYt5z6FHzF8BQTu3bhpdmizcJYweZWK6T6SUAU,22218 +torch/include/c10/test/util/complex_test_common.h,sha256=iQ67ozmpgtTR3kdLPpWYFjxSV1eQzlXzoQSKOGv5suU,20382 +torch/include/c10/util/AbortHandler.h,sha256=tpnYao6yYLJanEvxZbNYmuWGY0nk9xi-VOaCwPk7k7M,2446 +torch/include/c10/util/AlignOf.h,sha256=2DAJK0-8JTaWbnw0tZdUvyAafOIrnkldhnWVB2oOIpw,5160 +torch/include/c10/util/ApproximateClock.h,sha256=fhQloge2zvy7Px5s4P4BmlWhOzjlkh6XT353zYq-2qM,4053 +torch/include/c10/util/Array.h,sha256=H7UEVhnbTgTUx1NSbaGvr6RcwKM2c2rouVamgDnL2qM,704 +torch/include/c10/util/ArrayRef.h,sha256=Hn57lAMvVMwEAy5gqpEEE4Y1IR3evlLis9DAm-0HyHY,10252 +torch/include/c10/util/BFloat16-inl.h,sha256=tANwC7RCx2Q4TQpZxebutCOlc7XIiQ3rzCiC9GALxWk,298 +torch/include/c10/util/BFloat16-math.h,sha256=rfHxMYHrE90RgFQb6fRdPhlwO8X-gveGM_5XS0At72o,8771 +torch/include/c10/util/BFloat16.h,sha256=tANwC7RCx2Q4TQpZxebutCOlc7XIiQ3rzCiC9GALxWk,298 +torch/include/c10/util/Backtrace.h,sha256=99hh6frZffmL9B6uyPlKMEC_DVrSZ90iBnf0buYsBMA,1051 +torch/include/c10/util/Bitset.h,sha256=viuJC1vkqCvyuQAakEIe7gH1jc4sI6qJOjEmbQb61YM,3674 +torch/include/c10/util/C++17.h,sha256=knpXYMQApc3HoERm4dG22AydBp82DW9eAFbD_bdCVAA,1178 +torch/include/c10/util/CallOnce.h,sha256=MpdyEek7ttrfoxeAKlfihi81e8j2yfiWUlKxsKQbMM0,2289 +torch/include/c10/util/ConstexprCrc.h,sha256=KxnQ5FBry6GVPm0732nDRE82DIq2g7DWfN-LmHcLfoc,6849 +torch/include/c10/util/DeadlockDetection.h,sha256=quzUTfDHPvS_6mttyRt-dDe_9kyGSmnuL-eI_-yx5BU,2471 +torch/include/c10/util/Deprecated.h,sha256=9xSX2Bd3ZgvKHV3qLA28orYjoEi4OlQW4upS17Ik644,313 +torch/include/c10/util/DimVector.h,sha256=CMuEFgqGmK-gM6sVX6LKXCBrbE3KIjy1PkMBlYIW2SQ,698 +torch/include/c10/util/DynamicCounter.h,sha256=9CUviUDJgTs5bkUecWKED1k03u15M_AEQNVonkxFGh4,1571 +torch/include/c10/util/Enumerate.h,sha256=lF-iYhMrwqAgSJR8OFrJN767aNDdhoQ0cTmy6XvbGeU,4255 +torch/include/c10/util/Exception.h,sha256=t2nUJ1mMZw1Iefi0UytSwEKl3BVdW7TbaUtp-nrelwM,33847 +torch/include/c10/util/ExclusivelyOwned.h,sha256=wf_sQd-NXJvDWYzGc8vpY26EOrnNIiPPx4gF3tJBW5c,4718 +torch/include/c10/util/ExclusivelyOwnedTensorTraits.h,sha256=H9-sjDESpRHPJ9PNJ5wHsOznreGa6Q5AZJwIhzZER2s,2474 +torch/include/c10/util/FbcodeMaps.h,sha256=SvWo5BYW6hq-FW5gA-SaXpa2SWxs9wzkKR2erty_Prc,982 +torch/include/c10/util/FileSystem.h,sha256=qa1WnkhdQWOnmAdw6VGPMuRRFC7T7PZZjzTu9r_m6CY,891 +torch/include/c10/util/Flags.h,sha256=LICXlXDamM7sC-CLBxoacYqUvHZpu15JlnWiDb5vGh4,11154 +torch/include/c10/util/Float4_e2m1fn_x2.h,sha256=I5T3I6VvHz10-h6Au7k7hoQPZ0HGgj-QDDA3LmAEJOQ,306 +torch/include/c10/util/Float8_e4m3fn-inl.h,sha256=OUgD3KdzlsxbY4vU88NObVdrSSf2LZktRGUmnUQJsnk,303 +torch/include/c10/util/Float8_e4m3fn.h,sha256=OUgD3KdzlsxbY4vU88NObVdrSSf2LZktRGUmnUQJsnk,303 +torch/include/c10/util/Float8_e4m3fnuz-inl.h,sha256=dU4G7OuItSLI6hzDUQ3akWwsnurqoqmqiguPZqIR8ms,305 +torch/include/c10/util/Float8_e4m3fnuz.h,sha256=dU4G7OuItSLI6hzDUQ3akWwsnurqoqmqiguPZqIR8ms,305 +torch/include/c10/util/Float8_e5m2-inl.h,sha256=iqc-2y8RBLJiqt3vVigCgalkl5Xnv3knpiZ0fLBZLKs,301 +torch/include/c10/util/Float8_e5m2.h,sha256=iqc-2y8RBLJiqt3vVigCgalkl5Xnv3knpiZ0fLBZLKs,301 +torch/include/c10/util/Float8_e5m2fnuz-inl.h,sha256=bSW6u8wgewkReTQ3LAYMfRBsl9iVBlZttCu6ZtbzXtk,305 +torch/include/c10/util/Float8_e5m2fnuz.h,sha256=bSW6u8wgewkReTQ3LAYMfRBsl9iVBlZttCu6ZtbzXtk,305 +torch/include/c10/util/Float8_e8m0fnu-inl.h,sha256=QesGPWulELXJsE1_ymZwYgNS1LACzW1FRM5VIlIyrbU,304 +torch/include/c10/util/Float8_e8m0fnu.h,sha256=QesGPWulELXJsE1_ymZwYgNS1LACzW1FRM5VIlIyrbU,304 +torch/include/c10/util/FunctionRef.h,sha256=fyQ8_KLA5NIOXrYy34ytVaSHMgTm0kuGA9B_T4JnUTs,2584 +torch/include/c10/util/Gauge.h,sha256=kZMzAF3p4sit2L0JEX2gjttCzHPHBRaJyac6FC5YK0U,1446 +torch/include/c10/util/Half-inl.h,sha256=aQVHyZtMaFu4m6195VXdn0DNNsfDuBc4gLu9Jmb82SQ,294 +torch/include/c10/util/Half.h,sha256=WCt2hbTquUvDKVMV-07qwyw0pwhYQeb_V9xDYJeInps,555 +torch/include/c10/util/IdWrapper.h,sha256=XrOlnZhjCy8yK7PGWfS7452TFzEFjQvexjlwkWR1xzE,2590 +torch/include/c10/util/IntrusiveList.h,sha256=U1jvYlB76ulrnrgACg1WihddOs1vtEFq-RInhlPUGF4,4749 +torch/include/c10/util/Lazy.h,sha256=cqlGY0dfmPapAy_WV7Lih5j4U1q0Tobe__JaTW2VjXc,3077 +torch/include/c10/util/LeftRight.h,sha256=GKovBValnILIaGvYNlIhkZ7C0Z1gX0sMFW-qTxXK-kM,7463 +torch/include/c10/util/Load.h,sha256=UojwOytDL4SaAR_KCqRyqPTKXzhlN5RJcwbINCnoqtc,1178 +torch/include/c10/util/Logging.h,sha256=OEyhjoez2US21O9_P0KSQpUgJ8OjCWcWa35NNgWxmSc,14354 +torch/include/c10/util/MathConstants.h,sha256=1mpiCU8wwQfIepeIQznB-39Y3vE5sYBCPloMGZCdx4E,3944 +torch/include/c10/util/MaybeOwned.h,sha256=fClAWJ30LKxRPQEYhunWbKIiZFLhOs8R1wpxULDGug4,7431 +torch/include/c10/util/Metaprogramming.h,sha256=8zzmy2y_5eEUR4lMAPsfBcTadQusC2506eA4Zf7JJ28,305 +torch/include/c10/util/NetworkFlow.h,sha256=EghGK6X4dvknoqYKFIOsPBPiS-Tj-z43CMhDObpOswU,1391 +torch/include/c10/util/Optional.h,sha256=GzsvJjlMuP8KRtSRH7FTMJF6fHZo7k497eXst1y7u2c,2249 +torch/include/c10/util/OptionalArrayRef.h,sha256=BWL-GFUet5QKN9Wi_jaRupiNAgWuxG4iMza-51f06Y4,7438 +torch/include/c10/util/ParallelGuard.h,sha256=uV2vMWwnlXgS7s082IZruJiv6OkLAYMMD3Ty39kIVwc,627 +torch/include/c10/util/Registry.h,sha256=HbWzeygfVQq4hX5gJ_NsPVHlf6wRqrUu20Wn3fZH8LQ,13514 +torch/include/c10/util/ScopeExit.h,sha256=t3YVD8cpprBt4WXFuHi1jHT9BJ8DhFSyGtQZ17CEF3U,1513 +torch/include/c10/util/Semaphore.h,sha256=6MAXrwYvAWZAoVFl6NnLntQ4ugHabFOBdwRkqYzF0O0,1992 +torch/include/c10/util/SmallBuffer.h,sha256=tIOQ9OvQaBuOI6xYm0FNHIx4BsGODO4GEQiUCPV9hDM,2016 +torch/include/c10/util/SmallVector.h,sha256=Ti6EP3OL3y8t0qvtMozmC3y6cbM7U6z6_YBg3t9G-o8,49323 +torch/include/c10/util/StringUtil.h,sha256=Yzl0fdy6UpGMOQnuS8nPW9mWlH8cO1PuWGAfwfVZ2kw,7300 +torch/include/c10/util/Synchronized.h,sha256=2tW_9s7EXK40MUtpwv3-YJjA7FQwWllpaxOZLR0ar6o,2179 +torch/include/c10/util/ThreadLocal.h,sha256=wCti5HZb8cPA89t_y1OpPuw7DHj98QT9YfM9slvgxqI,4274 +torch/include/c10/util/ThreadLocalDebugInfo.h,sha256=X3IiE4KqBH1ftqZxGu2pYU47Ev7WzjTGuJlTFvfd-z0,2919 +torch/include/c10/util/Type.h,sha256=T1XX9iuFVOaeV2BNjLjgt5Hp1Aku0Q-Ecl_PolibcmU,900 +torch/include/c10/util/TypeCast.h,sha256=fSNsybFcY0MkrAxthVh-wdmrDYg3niv8glx9BYurJI4,6916 +torch/include/c10/util/TypeIndex.h,sha256=dbzYTSLXTBMex7BW93K3W5ABC6_2-o7vB-1XbjWIAAY,4947 +torch/include/c10/util/TypeList.h,sha256=zkNZb9AcFUJktCgDJSi0K2OKn1w8K_UvhVMPT5nhWx8,298 +torch/include/c10/util/TypeSafeSignMath.h,sha256=HvEviNWsHTA3-frX0xDhi-n0TGTNrgwC4GzSRy0dxHU,306 +torch/include/c10/util/TypeTraits.h,sha256=7EvZei8Q0T6N4WzrKKxXrKYtqLiBaU9GEh1l2BE37_Y,300 +torch/include/c10/util/Unicode.h,sha256=Ua4k-_JzTSImffi1DR5qlhijico5wN8hDI5pCl9sRB4,549 +torch/include/c10/util/UniqueVoidPtr.h,sha256=S5MaEA0td3mAog2tT9EaBqNhx_XneoasbaSEBRkTf0s,4835 +torch/include/c10/util/Unroll.h,sha256=UPOfiyO4HaMYDiu9w0X48H1cC1noEQmvQbfh6tnReRc,1097 +torch/include/c10/util/WaitCounter.h,sha256=3GaSw6xL0LaXhwA9_Rfi5WJSU3lFiXgHM_x3xwIRL1M,3050 +torch/include/c10/util/WaitCounterDynamicBackend.h,sha256=MsfBpIa5pRwQzILRp5Pg6AmlgPvnXXUOfdiz1RE_SYY,916 +torch/include/c10/util/accumulate.h,sha256=vqbcE_ZUjeZ4eC_9x0dAFDinmn-TWl0jp6ZEHNg3Crg,4286 +torch/include/c10/util/bit_cast.h,sha256=sxSghPDly-p8OH6gmTpfHz45ALOYU3Q_qSSForY8N3k,298 +torch/include/c10/util/bits.h,sha256=NvnFKQ-qXIxRN0UJsSzWvlkCWhAaVwJwOQ_saK6-00U,294 +torch/include/c10/util/complex.h,sha256=Fp2VuG8-5FJP0A-ppPtz8hC0OtPl0BibZPYr5I29nI8,2354 +torch/include/c10/util/complex_math.h,sha256=hFwpXlHE9juLMn5i_yyz9x-alNFHG5hMv7XrIdna-xg,14357 +torch/include/c10/util/complex_utils.h,sha256=uh8DvEyYr1jMQ06vgnx3bS6YNB7zV4sMoyC8pIA7hkY,1331 +torch/include/c10/util/copysign.h,sha256=4fFRt3OSrkCMfGUGbbcqHpCkEs0pw8_uKGOsJGr11Z0,1086 +torch/include/c10/util/env.h,sha256=zuLIDHeM7sxVohvXwl6-aoNwcTbLXozkjUzO5Ugl1Y0,1148 +torch/include/c10/util/error.h,sha256=0PShMfIU8VkM8fME8HC_gAkBTfPsP9Op4eeS_k6VpX4,459 +torch/include/c10/util/flat_hash_map.h,sha256=RrZriUT2NETrS8tCQeh7mET1Nf4Z7-jZWK34UCU6wlI,62262 +torch/include/c10/util/floating_point_utils.h,sha256=l8yiPUHN9Za9CCKY9MUFvPUMmgP6mwfuetzTN5TobgY,310 +torch/include/c10/util/generic_math.h,sha256=ezfY9osScXISPCzKsoVKsVmk-r1zyaWkQKNbda3Hdt8,3379 +torch/include/c10/util/hash.h,sha256=0FzKQcvZ7Cdn29QZRmbdGVSpcUUrG-gn8J5MLucmmPM,11360 +torch/include/c10/util/int128.h,sha256=lGDT-DCXohEx5riIIeri_91JleTaxyiy8SmZtWuQUz4,12577 +torch/include/c10/util/intrusive_ptr.h,sha256=lGJXxgGiea_guUwgI6PQ7PDr6WtHV3aMRJzDAbSfHaQ,46544 +torch/include/c10/util/irange.h,sha256=UzaE6wBFzo7QL4IjDnvnZ2zy1j8AITXz2wRpg91G_sc,3690 +torch/include/c10/util/llvmMathExtras.h,sha256=qKPCbOKabdjuq1_lTAeV49yAzvVHR8d8HA_m6wW2B2g,29717 +torch/include/c10/util/logging_common.h,sha256=tvOqN0oPLTJRZ47uh5xapHMgZaYWLiENqzOsadOaR4A,2053 +torch/include/c10/util/logging_is_google_glog.h,sha256=5_XA51tYu4EgZVQDycJLO-Osjy_jcicQOf_ifTUQzyo,3235 +torch/include/c10/util/logging_is_not_google_glog.h,sha256=D2V1ZZyuk4rteBLKehK8hrnb389H6cpgv_q1Hpj3Qno,6459 +torch/include/c10/util/numa.h,sha256=ThNH5iMdklhU1kgFOdr9IlHryVIOKKdcwexg83E0mJE,967 +torch/include/c10/util/order_preserving_flat_hash_map.h,sha256=O0szYNijg27FvK7v2zLo0lQo7ltmD69U6VL69pCtQRo,65783 +torch/include/c10/util/overflows.h,sha256=oHbFZO3daQDjJgw1skcYrF7rFUhSkXw8MVskwWOPu9U,3721 +torch/include/c10/util/overloaded.h,sha256=FHGcSpssgR5hnXJJ-MIn9wI2Mqb8FVYgTVNNcDlQ7d0,981 +torch/include/c10/util/python_stub.h,sha256=JqFk4mKCyu0chr2QF5a1IqXXbi9HPecVk_VhA2TxtCA,310 +torch/include/c10/util/qint32.h,sha256=ZxbaslMWGDjHB8VlJu25dTRcWWwklUFkUh6T9b8HHsk,296 +torch/include/c10/util/qint8.h,sha256=8IYNTICfJYSwwplrhGH9VGvjyFW56zDXd59Mh_3l6S4,295 +torch/include/c10/util/quint2x4.h,sha256=zcnQCEqSMrTjovsd5FdRF_KMIumwqhT5zwsHMyRcVHI,298 +torch/include/c10/util/quint4x2.h,sha256=IlMXyvQf4QqSO601TKk69qCMcfiSV8EKGKKQixbqFrI,298 +torch/include/c10/util/quint8.h,sha256=aydMTZmqEB4N7-EM5mRUhTZYJIZpSMJkiH_khO5Qcgg,296 +torch/include/c10/util/safe_numerics.h,sha256=g8o-ABoIf_kpszh3kVm6xLtHiqlzzbfNT2Evx8mcLlg,3347 +torch/include/c10/util/signal_handler.h,sha256=gv0fEnjAovuN0bL101qlZCFKTpj0VvXha_7pG8BG__s,4066 +torch/include/c10/util/sparse_bitset.h,sha256=tLRVQ8J_dDTkoIw6lVU3ZbIdcBW9ZHltKf5l0XaONQc,26931 +torch/include/c10/util/ssize.h,sha256=3LVqLbLSSldl1SP7d45-5ov2KxHnluC7_z7Pf_qkFXA,1623 +torch/include/c10/util/static_tracepoint.h,sha256=rED_IEBTyD9MieY029u4UdzsFnLaXVpAA22wplohBbE,1330 +torch/include/c10/util/static_tracepoint_elfx86.h,sha256=uT3xse24frgvxeuyHh8K34U6YcynWti_y9lacxCOZFo,7927 +torch/include/c10/util/strides.h,sha256=ijl5aJ28SyH_L44u77n1FCOs_kwdm96oYnHFo4IjPC8,884 +torch/include/c10/util/string_utils.h,sha256=FZ-mqgraU_uZqPS1m6iaJ0xD00cuCQ50iycgYya2GBY,700 +torch/include/c10/util/string_view.h,sha256=CQhocLd5DudSxVaIG-5MmgTd1xc1sXxQShpyutXBi0k,18654 +torch/include/c10/util/strong_type.h,sha256=riwLN2kJ1cUnuZ8Ow9jDy1Ak_hDFbXHD4jsfLq5eB6A,35793 +torch/include/c10/util/tempfile.h,sha256=QzgZNO5g3E4TW2g16iL6DwmhkdFOUDrSfMKRHCrYMK8,3014 +torch/include/c10/util/thread_name.h,sha256=5EZrohns_m4Tpb9e7lzI11nm6lGBd9wX5C4eA4l9ix4,440 +torch/include/c10/util/typeid.h,sha256=f4AlUA2mZoQUVarFlDgtCkHW3fg5fhcaBRQZdbwxj48,23584 +torch/include/c10/util/win32-headers.h,sha256=_EBVLD8V16450_L4ha7WnXQvO6a2zP_FXILRLogCLPE,1112 +torch/include/c10/xpu/PeerToPeerAccess.h,sha256=opZ60OwHD1qnRupWAY5zKmuEmAeQP63NK0xDe-XOTIc,741 +torch/include/c10/xpu/XPUCachingAllocator.h,sha256=LOCZ3fL59NWYO1cdYMX3kcia_GCXz-kYkFEM1AKIYYI,3828 +torch/include/c10/xpu/XPUDeviceProp.h,sha256=vgC3s2i1LBZVm0pQEwX8LVQD0DlXMOrf2_ZoZpiWZNo,14014 +torch/include/c10/xpu/XPUEvent.h,sha256=f9OVsmLdmvRoXT-NT4pIbcjBou5GWU2ToJEK9ROfBe0,5640 +torch/include/c10/xpu/XPUException.h,sha256=LYBaOSJ4EGshvXPMZQ6CvER0NrWBJy-Hr9hWnWuOfeI,728 +torch/include/c10/xpu/XPUFunctions.h,sha256=d6UF_lw5NTPHSSngOGDVP4JOpKEWg5M5Qk94MXYts_Q,1523 +torch/include/c10/xpu/XPUGraphsC10Utils.h,sha256=jky2gKO_NFZWGy9peL_Krn37HAHUhXuc6seXUr2wYi4,1350 +torch/include/c10/xpu/XPUMacros.h,sha256=r6IGtxNCSJg1ccaOrhyZFS-NfTUmGbWhH39Ce9r6o7I,1124 +torch/include/c10/xpu/XPUStream.h,sha256=RsB35OmcbQJbdmeAx8n4rPokuz3P-PtizW3RDY2MJs0,7133 +torch/include/c10/xpu/impl/XPUGuardImpl.h,sha256=LHK-E6J8XI3wyYodT_iV9Xlad3FCY3D9DhrX1XR8uhM,8915 +torch/include/c10/xpu/test/impl/XPUTest.h,sha256=U4e0J34PGyBX6Tao-X3X85TLgF3sVNpA1xq7oA5Mb6c,720 +torch/include/caffe2/core/common.h,sha256=s1y5zswxMN52p4NyHDZT9IFP4KqgahRgGA8tHVr2Gcw,1613 +torch/include/caffe2/core/macros.h,sha256=_ZsNGYIgK8Oe1hhF04e131CyNM62PTOsZg-Zimg9bKM,3987 +torch/include/caffe2/core/timer.h,sha256=C6gSn8UqhEI1yr7isd_-xGwmYgoIJKhaoIAvah0J12A,1472 +torch/include/caffe2/perfkernels/common.h,sha256=V-FFQ9vAOsaaG4QE08h7Zeuxh6H4m_umwDc8j7FOUuo,6403 +torch/include/caffe2/perfkernels/embedding_lookup_idx.h,sha256=v6rEhVi3EdlyELZwq6W_FZSPS0cdv0emL-0Q-z4kbpU,1928 +torch/include/caffe2/serialize/crc_alt.h,sha256=9-npt1fZ3vAS3LwE9c-sxmOhpgYokW1WvDJ7q-k3iIE,75756 +torch/include/caffe2/serialize/file_adapter.h,sha256=pAP8jaI0BTcjQB2EfPZ76kpsNBQ9G3LPwrvO7nZTchQ,1096 +torch/include/caffe2/serialize/in_memory_adapter.h,sha256=QXZ31tffGCe7LEOd_GWfnlPpneX4VtI-S3BZ-XlH3A0,895 +torch/include/caffe2/serialize/inline_container.h,sha256=ZHsmkcz1SQA5fit_U6iDEkCroGRaQqug0TWOOj-jtMY,10761 +torch/include/caffe2/serialize/istream_adapter.h,sha256=-Y6HdewRC9Uhayv_q9h85R8PPO66a_qIolt1eR0tVlU,899 +torch/include/caffe2/serialize/read_adapter_interface.h,sha256=X-TyU4I-IxYbqQz0lyByvWJFYcAey8tPaX7xx0DESYA,786 +torch/include/caffe2/serialize/versions.h,sha256=nnNzQCd-EYVwQwfLfghke-iDM5X2FKIaVS9wyeJmpKQ,6878 +torch/include/caffe2/utils/fixed_divisor.h,sha256=Zvgc9CidZoQfI7j9QkTqrQaanXf5iZcsvxCJfnJE2bA,3786 +torch/include/caffe2/utils/proto_wrap.h,sha256=1QVXbf-ihQ7qhv9aNvO46oyVXUIYnQrrEi2jc3N9SO8,1514 +torch/include/caffe2/utils/string_utils.h,sha256=OZypdSsHGVDnqhxYJsh_yQXaW0FBlpoEEzpTLlxZieo,1460 +torch/include/caffe2/utils/threadpool/ThreadPool.h,sha256=k8zVVNB-237ElHKofNIJsBPktFzgjp3DX05Dn7j6thg,2630 +torch/include/caffe2/utils/threadpool/ThreadPoolCommon.h,sha256=41zihSOOaucnvGexl1jRBNHowqQDxcwqRPd8mv3PHSg,931 +torch/include/caffe2/utils/threadpool/WorkersPool.h,sha256=Vl9nyM5Fu6CZctEvXOetuqyiAXCoRbl9fSFqiSN8azU,11981 +torch/include/caffe2/utils/threadpool/pthreadpool-cpp.h,sha256=wdhFwxXXDwaAJ-Msy1LkBZD0KA7SEfXZ7EegAf3MpAo,1718 +torch/include/caffe2/utils/threadpool/pthreadpool.h,sha256=J5PnQfqWRF3ETKYJS_vcS95UxeaGIwIA5rmx8T5_spQ,6598 +torch/include/caffe2/utils/threadpool/thread_pool_guard.h,sha256=Bv3NtbE_UJ1KT7Z3Wb0ylMy59G2LOZV09ZWhG4Fr_X4,821 +torch/include/clog.h,sha256=LmhU0B5GdvZxhbdibrfyD6I-wBeQU4ZSuN_mL5O3ZJ8,5154 +torch/include/cpuinfo.h,sha256=2Xqq7HM7ppg34uH7bVY14LTG0H0RJYvgz8dE2HfcYHg,57043 +torch/include/dnnl.h,sha256=-npiSEIICX2ZJy2baWpMX4uOZQpgXfh1A_IZdGSBp8A,1080 +torch/include/dnnl.hpp,sha256=YPZAJVUfe_dEFAyBWc7Zl1dIWZCKQAvnRezxMjIhkSE,1088 +torch/include/dnnl_config.h,sha256=0LRW_9dJNTWARLqhK-nlCgbnWGxWQBszbSoVyRXZcnY,1108 +torch/include/dnnl_debug.h,sha256=XLjSNgFUn83ayTuqCZHZmn_Yvq4mjwaU5A-czblJTc4,1104 +torch/include/dnnl_ocl.h,sha256=03__vBMCxQj81y5cqXR4lF3yoDlZ2Sd6UQ2GJIKCqHQ,1096 +torch/include/dnnl_ocl.hpp,sha256=Oe6xYIdgeoptQbGC9Z8fBKd-iZRLbVZkVpwPxXgnrC4,1104 +torch/include/dnnl_sycl.h,sha256=QuFHJ9y0PVBk7wE5Ad87DUY8w1ut_0284HA3Azr4OSI,1100 +torch/include/dnnl_sycl.hpp,sha256=qyZJxdsGray5-Qb5GlsreeRFni2Ryj4dwGozwFJBkFk,1108 +torch/include/dnnl_sycl_types.h,sha256=cQOxuhg809O4LuehF2b01m66cjXDd11IYcEub_-txJw,1124 +torch/include/dnnl_threadpool.h,sha256=N_AYimWiSinfGRfaJO7QO-wwUSp656InQMsxoupxsvg,1124 +torch/include/dnnl_threadpool.hpp,sha256=FTZXdpXDy7T-HHTtZ4-R8NFuhl8n_61HKmXHqJLZd8I,1132 +torch/include/dnnl_threadpool_iface.hpp,sha256=5H7Q_E09_nyCmWPAg6KAr2_Vs7VyGDbX4pI6Eq9op0M,1156 +torch/include/dnnl_types.h,sha256=342AMEBUhQUC605L8na27vlAj9dChtGiZ645-f4kbfY,1104 +torch/include/dnnl_version.h,sha256=9R16ZzMZoFGazgp5nucYaHprBXG7Qqm2J67EHYUDZ68,1112 +torch/include/fbgemm/ConvUtils.h,sha256=cvaDHju_twkawy_GwHTNWOojzNqVxr34lCcGYWijFEU,6430 +torch/include/fbgemm/Fbgemm.h,sha256=XNuwhJzEdEyRaRRw_atSDUrshEnEPs7Murx5SHXyl3o,44257 +torch/include/fbgemm/FbgemmBuild.h,sha256=8BY1QpKWGNZcIargdcXtUAAVWnSpmz76aVwljBT_qfs,3567 +torch/include/fbgemm/FbgemmConvert.h,sha256=Xr47oOcirsIyLd1F9JRmMV0mDmghMIfVtZtoexGaQ1Q,4842 +torch/include/fbgemm/FbgemmEmbedding.h,sha256=OI1oO4qX1g_I1_tD4HOLGW0fttZCh6oJz0eBoW7Q0SE,12435 +torch/include/fbgemm/FbgemmFP16.h,sha256=qKdkHPTdodaaUQJwNjqp1UhG_WiPqempHwatsmaibvM,1597 +torch/include/fbgemm/FbgemmFP32.h,sha256=QOLrz1KxYQOC4wZbNPvyA_wbEr-CC4ZorFDlW_2JO7U,1398 +torch/include/fbgemm/FbgemmFPCommon.h,sha256=LPEP74Uk4DY9SqzN0vXRFGQR4Hj5H2LRoX8xy1WGjdg,9892 +torch/include/fbgemm/FbgemmI64.h,sha256=oUACFs1tWPDyd3pUO3os_j7tzTH7avHVRRL0OiZFVQ0,835 +torch/include/fbgemm/FbgemmI8DepthwiseAvx2.h,sha256=QumE9n8azzsmzGyx4z754ZYKcRNE-5z8uEIGB40RHm8,3795 +torch/include/fbgemm/FbgemmI8DirectconvAvx2.h,sha256=4oKMoeKXFALz6NSZwZDfNUc3c8Y4S4aXHdcTu22NBU8,2059 +torch/include/fbgemm/FbgemmI8Spmdm.h,sha256=tSDTxQLYGA0p-6NYet_oyL3ybCXjmlKf-XjihebThzI,3691 +torch/include/fbgemm/FbgemmPackMatrixB.h,sha256=GkHBT42qVCRPlSEM6wAd8GQxmcu_wLbRbmyH9h0Cs5o,9485 +torch/include/fbgemm/FbgemmSparse.h,sha256=eFxR4UQOaDQUpKlvw7FQIvvmMYIHl7BqPJf0JM92TF8,6642 +torch/include/fbgemm/FloatConversion.h,sha256=d2lOVk1l9sw1Ja3PSIe4_Yve7I-xBjmMGtEuv8Pd9Ao,11644 +torch/include/fbgemm/OutputProcessing-inl.h,sha256=_Q2OPwlpusdlH2V4SZYNOAm6WcptEuVT5Du8dPuXw0c,10579 +torch/include/fbgemm/PackingTraits-inl.h,sha256=pCHjfXyFkEMc5jnCg0-mO4RY-yLmKQpaJ7cnZo5ai2k,20905 +torch/include/fbgemm/QuantUtils.h,sha256=Ey5B3N1Hg85xU80qR0mxSGrmVXjhb2JoakQiEz0rezo,12920 +torch/include/fbgemm/QuantUtilsAvx2.h,sha256=vMZtI59MCQDHxM2QSMwTI9rP-x8-pC9-Di7QPineG6E,5313 +torch/include/fbgemm/QuantUtilsAvx512.h,sha256=bae15lfRDn8teH7NRXbINDIcHxu84LaG_5Oy-ojy8Q0,1464 +torch/include/fbgemm/QuantUtilsNeon.h,sha256=Wo6kEORiB1q--4U9n6P1vloWu5a2lja01e7oXZdrEc4,1463 +torch/include/fbgemm/SimdUtils.h,sha256=tEsPQiR7vh5V1kPYWH4Az1KeDsI99Z-5uhTjfL7gGKk,3209 +torch/include/fbgemm/Types.h,sha256=LMt3p_xD1ig08FYvzzDw4aC6Ood_SnE4fC7HHRGe_W0,800 +torch/include/fbgemm/Utils.h,sha256=x4ZJ2EF5i_UD_ZLP_UkC_OmlDJYx4RGGQ2jur3TjQkM,14636 +torch/include/fbgemm/UtilsAvx2.h,sha256=JZdUxlO1AggRAecTpyn-eSmyolFvLg8V5RbaBk8NpfA,2536 +torch/include/fbgemm/spmmUtils.h,sha256=yYztyD1mvv1xwSUEg6yP0GdPwH2Li9ogYcniEzT2P8I,1584 +torch/include/fbgemm/spmmUtilsAvx2.h,sha256=xC5hZAJdIEJJWp9dj51GpL9OXEww7dToPQBQ3f0yCkw,1376 +torch/include/fmt/args.h,sha256=DceIEI6i6AajzaHQ3Z0Ye95nHSS9vBtBN3rqs4Bx7R4,7453 +torch/include/fmt/base.h,sha256=vkhZh12cbDVEJMMgUo1aV-cpqSX3Ob7OZDbtHEPGVbI,105285 +torch/include/fmt/chrono.h,sha256=8xDR25gWjdvLhEEcdZp8a2ERFC-ikBTGV3xHjemlXL8,77708 +torch/include/fmt/color.h,sha256=psoxTkLeJR7c8DGpSBFs28uD00KE6sJOcHyouf3Zazw,24399 +torch/include/fmt/compile.h,sha256=aFQtB8Uu6C_LUv_iwlL2tKK6iwpO2p0me4Ol3ZagJao,20747 +torch/include/fmt/core.h,sha256=Fon8wYxr5EmpFEP62k7O0QhukP0z9N8E9PGfx-Ygs0A,441 +torch/include/fmt/format-inl.h,sha256=2rX8BILADI7NRM4WMvBU4BOf7jjaigbGc1_8LJnyqQ4,81262 +torch/include/fmt/format.h,sha256=C4PH44EiUxGOi1qdqLnp0zmTSIcX6IpvJWLjjWslm60,162920 +torch/include/fmt/os.h,sha256=9EaHZUNGSZHEmhPALGAlMKDWrJik47HROopcRhjSYM8,13114 +torch/include/fmt/ostream.h,sha256=TwItPiJ9TDezk5XYfFDL7C78XJZG3Px7YP1L6iUBFws,5281 +torch/include/fmt/printf.h,sha256=_6aU3tIvrI_cL9lLpsi6IM3HguW2jvFUC6qJwD9Cxtg,20245 +torch/include/fmt/ranges.h,sha256=eWBKZ53Smvp8H0qigABJ0G_IWxWXEkQRtCoiTvMkYwU,28380 +torch/include/fmt/std.h,sha256=embCKeLfMWOCMXmcLRPgbRS-t0Vk_n95u7xP8RCumms,23786 +torch/include/fmt/xchar.h,sha256=C_ZqGoQboP4kYOlGeHJFgmeVPt7AZFxSlNukFoeYRuA,13352 +torch/include/fp16.h,sha256=qOihPuIFJc7Ka_UrtrCjHjXFWHKZO5sm4MyRgoa6hUw,395 +torch/include/fp16/bitcasts.h,sha256=j98oDlFXdzNmpyi2G416tRL7K3bl2_LORCQnytZ6_cg,2407 +torch/include/fp16/fp16.h,sha256=O-KcphLcDRvpwLmJsl-3FqxqRoTuOvBYIVb0yPBbNmA,22256 +torch/include/fp16/psimd.h,sha256=2L-pHlaH1_t1SUpq0LOvGqKA3zScoC0hHUYhpYwEgbE,7099 +torch/include/fxdiv.h,sha256=tGAjCriH6CaOaYaGoVsuSr56y4GhUyC2NeVsdM1jKY0,13403 +torch/include/ittnotify-zca.h,sha256=B0LFdu1bVWrH3uE6bD37JkUy6GmUpapjNhT6vH1a8eA,4007 +torch/include/ittnotify.h,sha256=ubI9PiSnV95_u6xdsevUFQOOXNuzkp_TyWfMeI3Tl2k,199788 +torch/include/jitprofiling.h,sha256=KUCBurzd7j_1CDBWlBm6LGD5ccDunyQJw8SRfSX8wsQ,29872 +torch/include/kineto/AbstractConfig.h,sha256=SZtvJkH3sXFFnvlIqQfSiu91tkAuf2K547z8lEXJdiA,4132 +torch/include/kineto/ActivityProfilerInterface.h,sha256=j8dVmzepEFATjxGnQxmuDGX7lPoXkPwRP4S2F34qyt8,4146 +torch/include/kineto/ActivityTraceInterface.h,sha256=GqIs_ETbsFlvokpmirXS2yXi2eDmzodm9vu_4Wf8GKQ,863 +torch/include/kineto/ActivityType.h,sha256=BYH_pmjwtjaSXGtK9UC6kIxNQpPVRfsxwfZb8OruEsQ,4664 +torch/include/kineto/ClientInterface.h,sha256=YByMXn1wrv6ejl60Xz4aBLTWQkSFHs0zyoy0iCZ3cYU,919 +torch/include/kineto/Config.h,sha256=WOyRNM_4wyyyW50XAxgZqe-vXxNppoiYFpyckzOxiUo,16930 +torch/include/kineto/GenericTraceActivity.h,sha256=hUo-NM0HHzfrl2KHNkjUk3Zx7C0xcqM9iYYd2x1cxM4,4704 +torch/include/kineto/IActivityProfiler.h,sha256=DBN4UBzu2Y5buCQ3YJTWcFaNQFx__r49ZjZ6IPU6ifg,5723 +torch/include/kineto/ILoggerObserver.h,sha256=osHMpksk-Y6CttCP9nm7S76a98DWDpXgCEWAHSBlYXc,2205 +torch/include/kineto/ITraceActivity.h,sha256=OHr3NKCpve5ueI6DSm20PyZxtpJKDO2yCyvwQcU_zy0,2911 +torch/include/kineto/LoggingAPI.h,sha256=lguI_Ou7FauSHElTPiWO9L1813UTWuqTdV1hikv5IQE,600 +torch/include/kineto/ThreadUtil.h,sha256=pl7vMR9bCinR4wEs9j9dqjKYmqYNegZqcPIxxPWboHU,1179 +torch/include/kineto/TraceSpan.h,sha256=jZ5d58NqsAWrVd40t0r_kxXbfe9d19UFZQVP60PFT5s,1206 +torch/include/kineto/libkineto.h,sha256=FjisHFO3fHX-Y3JHhpc_69gnqBa--IWnFN0v5v8FTuc,4133 +torch/include/kineto/output_base.h,sha256=EZsfcBdpekr2YyqJCLYhx8yO7UC00YuVqqJAIeC4MZw,2491 +torch/include/kineto/time_since_epoch.h,sha256=UEGKzykCccgf73A5aAYSn-KpxQ7lIlEl1mRd-LlXKq8,749 +torch/include/legacy/ittnotify.h,sha256=WyHVB1ifIqOIvr7OvKeiXHoLi1FRGE_LuT5aGPf-2fM,37628 +torch/include/libittnotify.h,sha256=zA1MPO6UURWLg9TsFl2vb_Pivo3Sg6PsNZXcr31P91Q,823 +torch/include/libshm.h,sha256=NzZuufgNX2-Y5q_APKnvqt8Cj_f3Fbqts07hk9tME6c,1459 +torch/include/nnpack.h,sha256=Y9NhEeYb9-epCjY-a9X0e6xzyM55mXQAoJKR2LQ1Xts,33337 +torch/include/oneapi/dnnl/dnnl.h,sha256=XfmCDVNXJDxR3-v1FwCeD0gcXuEZQYliCtWZc3rrbGk,197127 +torch/include/oneapi/dnnl/dnnl.hpp,sha256=-V7T3-Ek960wpHJNDIdhSJ-GYJhj_bn9dfjg1wkeL78,662256 +torch/include/oneapi/dnnl/dnnl_common.h,sha256=dbUffm_vzMEsvBBdQm4QWiJcKx7dRZD0IL6BQ34MOaw,5905 +torch/include/oneapi/dnnl/dnnl_common.hpp,sha256=wGf9qyugz_u3Pxgl-Nu4ggeUeYdsyc-5Y5xklfP9gNQ,16045 +torch/include/oneapi/dnnl/dnnl_common_types.h,sha256=rqrRru0Lm1r8aQdvGttzFlzFB_Zt_t0-mwZbFHoXZKA,8503 +torch/include/oneapi/dnnl/dnnl_config.h,sha256=jw-6EKEpoe6b0XfqvSAMAoJmfr5xGRImmbBA1Gx1ZXw,6556 +torch/include/oneapi/dnnl/dnnl_debug.h,sha256=CyO3SZ5Xl83SZ8gBfr-I564GgMhZ1JaEm3WXjjXuUwk,2597 +torch/include/oneapi/dnnl/dnnl_graph.h,sha256=SsWXMGvP337gv4zIqpC9E0HnT0VzJPlNFgJvPDFEM64,34541 +torch/include/oneapi/dnnl/dnnl_graph.hpp,sha256=iQqmxTkhlan3Lnw6p7oT0PL7kOKDR9DCUR7P4Lzlaxs,68794 +torch/include/oneapi/dnnl/dnnl_graph_ocl.h,sha256=JBnC4cE6ewlQcKoy7YckAZKAigytXRZNE9WuSuFrcrA,6028 +torch/include/oneapi/dnnl/dnnl_graph_ocl.hpp,sha256=vZSl091yjQ1Msa_rcWBiOlIzgZMVVkn-9xIca7pUw7g,5682 +torch/include/oneapi/dnnl/dnnl_graph_sycl.h,sha256=KY3JaYUBbJFrpvxZJRoekT4kV2x4vCIT6NPm6hpWxoc,3902 +torch/include/oneapi/dnnl/dnnl_graph_sycl.hpp,sha256=1wJHH9FIBZ0KLZuiaPeahsCQ3gEDfuqUDQq1XZd3u2A,4586 +torch/include/oneapi/dnnl/dnnl_graph_types.h,sha256=cSx0EeE2nfF-ox1jkGUL1ncUu4hbewYzT85XcLtsKnM,17908 +torch/include/oneapi/dnnl/dnnl_ocl.h,sha256=Obblsh4Hdxe9fJt7bO-7She9QSiFouKpqnpThGqstdM,11884 +torch/include/oneapi/dnnl/dnnl_ocl.hpp,sha256=hGcbJAPhWM9wx3ylJYoda2HukFI2WUpF7vxSj9tOluU,15571 +torch/include/oneapi/dnnl/dnnl_ocl_types.h,sha256=gzwyeH3ueR6be7RYPtbl4fDNDBnL4ZQiCPXJ0m2HN_Q,1592 +torch/include/oneapi/dnnl/dnnl_sycl.h,sha256=5DhTc-YRz9XF1b-24xBhlh-rrI-bEn1nvOG7DsXGFdA,8562 +torch/include/oneapi/dnnl/dnnl_sycl.hpp,sha256=rmfH8ZRAUHL00kItlGhG3SUsikCxwGsn8hafe3TN4_k,13094 +torch/include/oneapi/dnnl/dnnl_sycl_types.h,sha256=ZUBXIn5gEby1GqtBY8Lm3oqWlIUGeJPu995dC9gvRvc,1599 +torch/include/oneapi/dnnl/dnnl_threadpool.h,sha256=pbXjaWA3NAlbtYyQCzR7KyrgcRvCBDiWfRPL3Agro7I,4773 +torch/include/oneapi/dnnl/dnnl_threadpool.hpp,sha256=wmTX4Asi90ryCGSnDIF5enXRRqcFoWsOZn_l0uTzIiI,4576 +torch/include/oneapi/dnnl/dnnl_threadpool_iface.hpp,sha256=LStQLhzz7sIQMEj5crZ7LO1K2DwiauVUJCj32wzi_c0,2752 +torch/include/oneapi/dnnl/dnnl_types.h,sha256=QlsVXmR8_lQkm2Bm1wr9D6qaBQD5jQKWGvJQX6FuqGE,101688 +torch/include/oneapi/dnnl/dnnl_ukernel.h,sha256=I1iZhzwsd7p32MtbRrHJwlQYKPAwi8Y45gggjwl06Ys,14037 +torch/include/oneapi/dnnl/dnnl_ukernel.hpp,sha256=O8dcx-ypO-jCsGPrDLZIwZRhgCWeAG7cmN8UDKayW6s,17933 +torch/include/oneapi/dnnl/dnnl_ukernel_types.h,sha256=afoOCsxR7bdbi-nmOMcyHhM0Hgn7xCK3EV-m_EZjWBM,2957 +torch/include/oneapi/dnnl/dnnl_version.h,sha256=NrFHY6pY5TFXvzKqUzZ-FIf5s0OHN5EYVh8sUAL7TMw,1262 +torch/include/oneapi/dnnl/dnnl_version_hash.h,sha256=N3FVjeoQcfKZ1vuSe0KW60cN6uup0HF7KWh7ziJ4dN0,1500 +torch/include/psimd.h,sha256=Zz7YehRUM8gHMbAgELTyZqAx1Vo01wJFgN7-XCnaIWY,45758 +torch/include/pthreadpool.h,sha256=WCxI36to5mSi14ZZsoJ_pNnJsNF6ZJVPBZzzcxeCiio,99582 +torch/include/pybind11/attr.h,sha256=1ems9luMNWI0iQLODXwL6eUwqt2oVo3DIYyMiJf8DsI,26477 +torch/include/pybind11/buffer_info.h,sha256=Yvlrn5CAGjdaW7-I7Yjwnq2MvOfVOcAPbq0tWlmbFGQ,8032 +torch/include/pybind11/cast.h,sha256=-CAlLyvCjg5uHz8TmHJ5OUBieX6gUjkBsCQOmg_3xvU,93493 +torch/include/pybind11/chrono.h,sha256=uPfk6B6By7PVNisjsK9POSemaaK067KBFpj9tqpgbSA,8867 +torch/include/pybind11/common.h,sha256=gPyvFv4QoeZXIScQJFUQ4ZorDCNaj7rmauNmyXKryR4,374 +torch/include/pybind11/complex.h,sha256=Ed9RnnUAzCpNKbsohjlK9wiuVMJqTkt534gmpackgLo,2350 +torch/include/pybind11/conduit/pybind11_conduit_v1.h,sha256=S7fBLOEGYLtDKNH3P0RLK2yA5dsxkLfIzrZJAEH-sT0,4407 +torch/include/pybind11/conduit/pybind11_platform_abi_id.h,sha256=xVIPJrQU5t5Fdkuvym-5Uq7hG3h0UuY9HaI-T4UdcZ0,4245 +torch/include/pybind11/conduit/wrap_include_python_h.h,sha256=0i5dyYjj5r-d_b6_2RM2Al4-bw8pk8FWXSPKpRs53u8,2323 +torch/include/pybind11/critical_section.h,sha256=taXAwGTd6qdN0xQ2fFyx54rwtvcxKHtGohSmj0Horwg,1864 +torch/include/pybind11/detail/class.h,sha256=lWdbLzuLWT13FXg3mpGyk3fdCr7YZV_ElK3nvzN03Xw,31490 +torch/include/pybind11/detail/common.h,sha256=5un8HFrbh9Rwl46zrVuORl0PgNFUpItcKMKtVgXSOR0,60170 +torch/include/pybind11/detail/cpp_conduit.h,sha256=Ky4trNogphamYB3mPZRiUqdj-Kn7N-pj6JFHTD3HIwg,2807 +torch/include/pybind11/detail/descr.h,sha256=Tx_PmytruYwTbHD-P-nFabeVeN36QiiFtexnW_fSqD8,8315 +torch/include/pybind11/detail/dynamic_raw_ptr_cast_if_possible.h,sha256=ohZyWzmgYl6C-hVY-M95L2TlJ-o7FWVLhBUzTUJ6Nh0,1430 +torch/include/pybind11/detail/exception_translation.h,sha256=I0Kcq942M9fBqdDcHxC_xi5IGbz9MpyuYTBBXCDSZzw,2847 +torch/include/pybind11/detail/function_record_pyobject.h,sha256=gLKBGhjjZgJyb_Ko_I9UdA93cCYDovJnR8t_mR8naWk,7992 +torch/include/pybind11/detail/init.h,sha256=wAe1Tcq6zTe2fVTGNwD5dopnGggeH1ITf4lj0k4x82w,23327 +torch/include/pybind11/detail/internals.h,sha256=SX3GA-OVNL_hzYUugiiFybNRycomSkhU0pRhLmhxyB0,32455 +torch/include/pybind11/detail/native_enum_data.h,sha256=UbLzcm8Sr8qSIZDZBe23NDQaCG9mv8nOKm3ihpP3JRU,7887 +torch/include/pybind11/detail/pybind11_namespace_macros.h,sha256=HkDg8EaXiYYo40-GVgLB89tu59MfOSpndItiaKmNVxU,3755 +torch/include/pybind11/detail/struct_smart_holder.h,sha256=TyFmoD7GEJPJL7F0eKSsicZVsiVXVSZUMTwSX-s50_0,15326 +torch/include/pybind11/detail/type_caster_base.h,sha256=HMapjYM-G_s6xwWhVTasZIeRHf0ih80XVCDEO6R_8OA,66447 +torch/include/pybind11/detail/typeid.h,sha256=rNavm6ne8gSq8kf9ktNchKrp4LPzvoDkiSffOjKOHg4,1879 +torch/include/pybind11/detail/using_smart_holder.h,sha256=Sw21_eubAl4zLd5vSJeOQrvAM8Qh8axAziuRt0VDQJ4,794 +torch/include/pybind11/detail/value_and_holder.h,sha256=Jj8DQG_7b4GJWUR68lvnzyMSzVQmR6Yq4raU2MhaYLM,3931 +torch/include/pybind11/eigen.h,sha256=i-T90hORMeIsLSOlZKHIWJnZ1Zr_dsXPlk6HOsUcAsk,570 +torch/include/pybind11/eigen/common.h,sha256=RsVa00Nmbrnu-dUnXHM0RPwElcDIWdFr8GUHAeRXtKM,632 +torch/include/pybind11/eigen/matrix.h,sha256=3l6hl3j4Vf5GYiN5eSUet5Fdjn8kYjYAAb_AaTRI2Lk,32844 +torch/include/pybind11/eigen/tensor.h,sha256=hPyEjJ3wVl9ijofydLvW2KYtSGAY19TWpgrWo43wshc,18914 +torch/include/pybind11/embed.h,sha256=Jiig-eB4X29PHsAETSRW9QcMb_Uhl3dI5DeZ0dbTuD4,12890 +torch/include/pybind11/eval.h,sha256=mKpLWiEMihIwfszdLSZ0AR4Er4K-vrkqQvVts3D3T1Q,5116 +torch/include/pybind11/functional.h,sha256=HtoVWGymQtRk8pXMm1XkeX9iyhxeQwRt-cYWCOybtgw,5598 +torch/include/pybind11/gil.h,sha256=slDhtOmhPnygMDRcn4Ow4SEmbB3_AKOPVVWOLSzWBk8,6997 +torch/include/pybind11/gil_safe_call_once.h,sha256=INXGowIf5Pkrj3Dx2-3k8PTtNLpE1KGj0PeuWAwSEng,4308 +torch/include/pybind11/gil_simple.h,sha256=IaDqehOobdxm9vNti3nrgpYwmWyYhq_2hL5RAfMnU9o,1439 +torch/include/pybind11/iostream.h,sha256=8GiODvb8XDo8l8MbkV9doUMQXKcSJGHIY57HUMUfRMk,9116 +torch/include/pybind11/native_enum.h,sha256=_PeH6t6Nto5n_OzPseMoAdfOYSTcM0gCb3JQG1dzGlg,2731 +torch/include/pybind11/numpy.h,sha256=IE5oasvNX5E-IxRBIjeJ_mWOlu6vUosZX83qS65DBP0,91831 +torch/include/pybind11/operators.h,sha256=ngkisot1ufStnPaqrTa5dDdPVpa9iIfo0xI14HHKjkY,9357 +torch/include/pybind11/options.h,sha256=8ZETtW7ki2zoCP0H75SER_KC3bK8v6pyNmWCtXQAh30,2988 +torch/include/pybind11/pybind11.h,sha256=5Rco-aXAtEbWrr-BAfc9hsJFAA3sL1eCL59pfWRZ7-A,160933 +torch/include/pybind11/pytypes.h,sha256=hZtv1K0eSdK0wp7BSltdmLtI61xM0EfqbsXgNfqxmOo,102452 +torch/include/pybind11/stl.h,sha256=2ShB4sVCmoLQEXwQ4TtpdNlfVNjC8Oe3o_ueXqHwryg,24996 +torch/include/pybind11/stl/filesystem.h,sha256=JRytMDkseOyHEUr5_QmQ5Aq3h0KPuFYm05_MBAv9gYc,4327 +torch/include/pybind11/stl_bind.h,sha256=ueu4PBjrmNE8eeYCO_199Ao7UaxvaekIst4X-mTg3YI,29900 +torch/include/pybind11/subinterpreter.h,sha256=jjLvW8JasrqA0TEN4oVv-F3RdXaX3AV2khapPOMXw9M,11721 +torch/include/pybind11/trampoline_self_life_support.h,sha256=n9awxwSLjSCDn_iI0scbyFj-2dFmQ9VDH7oMQUZ_GoY,2927 +torch/include/pybind11/type_caster_pyobject_ptr.h,sha256=L2FBWjW4QZB8tvWspGtLJ5risRpwuYaTDd0lxacPqF4,2183 +torch/include/pybind11/typing.h,sha256=XbhaqcvlrIHdl95G0S9AeFhVP8jE9PK3UrX9oBevUUo,9145 +torch/include/pybind11/warnings.h,sha256=OCaRnwHWlndKlsTAPeMCeG9k27T19vS3hSq-_CdTQIU,2622 +torch/include/qnnpack_func.h,sha256=TtDF5mhpFcTbzvLUYlHV33KG2BkVZELMfdJa8dKN6eo,4400 +torch/include/tensorpipe/channel/basic/factory.h,sha256=ymil_LBc8GItwEFwHfBAuQNp46y_7T3Ll4qnvJ3kSvg,717 +torch/include/tensorpipe/channel/cma/factory.h,sha256=MwKFZJViyVujWnLo4RyfncH50bJSJx7J_gx7hoMxbnA,713 +torch/include/tensorpipe/channel/context.h,sha256=wNHghkQ66kK3UmlgjQVTjzLN1mFIVDQM_pqp6IwHmP0,3955 +torch/include/tensorpipe/channel/cuda_basic/factory.h,sha256=7bOoST16TKhE2dniZEw2pRLYtkU7PoIKETA_y55fPcs,762 +torch/include/tensorpipe/channel/cuda_gdr/error.h,sha256=fn1e-JAtlHlwMPoSzG8sdzqUufoef6R5traX3Kj47AU,893 +torch/include/tensorpipe/channel/cuda_gdr/factory.h,sha256=jk0MGTTp0yOnjlmo-OYIFB-AqSHRC3kWW_1IvWreRFo,846 +torch/include/tensorpipe/channel/cuda_ipc/factory.h,sha256=DaoYze9SwRtxeKBxUfNocEFetD8iC8I8O91zjHxNpWI,723 +torch/include/tensorpipe/channel/cuda_xth/factory.h,sha256=rU3qvRAN8IdjqKRpjKf-VNN5hp1hus4SwCYwPVTd7FM,723 +torch/include/tensorpipe/channel/error.h,sha256=HpiFTA5aFd7omH5ffWJ_QzRVfmzk4GyE3mEZA_KN3Ho,1032 +torch/include/tensorpipe/channel/mpt/factory.h,sha256=4NYX8S-rdFBR9GDWjgVwF0fuE2k1WhTs7-z8XKYJAiE,900 +torch/include/tensorpipe/channel/xth/factory.h,sha256=oq9LF99KTTer6ZkP2QW2u6a7x4aOBXO3fIR4iTbI0iE,713 +torch/include/tensorpipe/common/buffer.h,sha256=vZhzGJbP7wGrwFQQaY0dnYf_PG70tPEqOaX7D8kvf6Q,3726 +torch/include/tensorpipe/common/cpu_buffer.h,sha256=dWjm6FWlfNu-Gye6ARmHgWxWwOJYEAoHvgo2FwR1AII,695 +torch/include/tensorpipe/common/cuda_buffer.h,sha256=f2pUmSj2Zu6cvVh_f4kOt0S1xwrysdazM7xtvmWuBuc,722 +torch/include/tensorpipe/common/device.h,sha256=qyWkJ6NhKKGPqDSzXdDxzHyUkNlYX3OMM-wxTHlgACs,1903 +torch/include/tensorpipe/common/error.h,sha256=sUmM9D9IZBstFv8aV27ZLAxDQ2d194w39-auvOR3ZCc,3382 +torch/include/tensorpipe/common/optional.h,sha256=Cg8ztuIvxC8ckWyM1giXZhoIsYCFGIopRQ8wQd3f17k,382 +torch/include/tensorpipe/config.h,sha256=bAyHYIbpM0M0TMPiTcaFvcWnFCfDodz_rqGZNi_kZck,605 +torch/include/tensorpipe/config_cuda.h,sha256=2sXFPeoSb2bwgUfnhtcwL9QZJbyRxbbdUWwYLZVb9CA,573 +torch/include/tensorpipe/core/context.h,sha256=eUPwjLU3Voc-puVW8YZ03-utlUh1E2pmLrzpmgV8wZQ,2722 +torch/include/tensorpipe/core/error.h,sha256=czqGb_5R6zz5hcj1BrXZN3D04d8ANt49nbEjpsc5sow,1215 +torch/include/tensorpipe/core/listener.h,sha256=NoKRYhODFRTb2oifps5cxRdYoIe6l5pLqhS_m5xHMFQ,3182 +torch/include/tensorpipe/core/message.h,sha256=NylQKLbpf-IKhyNOzOQBUe2j4pVXjJ9Zl0CBruK8hp0,3139 +torch/include/tensorpipe/core/pipe.h,sha256=FzxISVeZVDxVxgLNyz8N4rcqg-En5JYJK3jMDAdDNOM,3226 +torch/include/tensorpipe/tensorpipe.h,sha256=5qmmXu8SyMq_sREiWZ5GljM-glz-pl4bJSeMaRQLh6U,1703 +torch/include/tensorpipe/tensorpipe_cuda.h,sha256=vHBuinUAmAWIB97PgDRZjclLIJ2-sjmoKkGXwG7iMSg,958 +torch/include/tensorpipe/transport/context.h,sha256=dD4NNcqRe1jvzHAVPYlL_koSf0oC6q3u-ZXIGyqHoQQ,2899 +torch/include/tensorpipe/transport/error.h,sha256=h86Nl4wdVPCBcB11mL630XYqSNzAnavmB2oOU3WwVMw,1173 +torch/include/tensorpipe/transport/ibv/error.h,sha256=iVqKZZU6-Mwxek1SaGohndVYPtL19Ei5fbv8X2b27oU,1174 +torch/include/tensorpipe/transport/ibv/factory.h,sha256=uAAKRzbF6MdDTikr3gCTKXJxGS5sfBjyHcZ4oOCrU9Y,719 +torch/include/tensorpipe/transport/ibv/utility.h,sha256=Yi-VEfXhUG39nK8PMXZT9_jEEO5o3JamDb55besOXw4,823 +torch/include/tensorpipe/transport/shm/factory.h,sha256=HcaaTa5gnGqT0Qz2LlsLttU9DYkLYD2XJ5IE2m_ftfQ,719 +torch/include/tensorpipe/transport/uv/error.h,sha256=QsPw4R0VuiMJPiU4bp2QIYw9A40Uyb-F3J5efL88yaY,970 +torch/include/tensorpipe/transport/uv/factory.h,sha256=D3i_rOQ2F31pDo6iivssNX9q2GlmPcxRQLx3kv-UYTM,717 +torch/include/tensorpipe/transport/uv/utility.h,sha256=5Z_QG64aU9n-yMSMKepKBlUI90htLwHBIcZhJrn92Mg,1303 +torch/include/torch/csrc/CudaIPCTypes.h,sha256=qsqVbMeUqs5FMT02n7hsDxpjxLnBrXnjbn6xgAEmTh4,3651 +torch/include/torch/csrc/DataLoader.h,sha256=0lLHCpmBQ9wnuXLOIH_Ok-t1EQHsX9-IgRPmrYTzfL8,476 +torch/include/torch/csrc/Device.h,sha256=WMNOcYpUnj5oDV05ABo2xLUG4AdmJ14WuB7wRy1rJao,739 +torch/include/torch/csrc/DeviceAccelerator.h,sha256=kK0O_HBZNVYKHKEB7zCW9c2IB03enTyLR_Q427Kp47Y,430 +torch/include/torch/csrc/Dtype.h,sha256=u_dUqcRhIC1kenlr-nnrrz0T0I0XhB_48aKqt7Z3shw,1090 +torch/include/torch/csrc/DynamicTypes.h,sha256=LFNtoH9z3wftoGGyS0lNCgmC4vEAFss3S8-mz3UONWY,1316 +torch/include/torch/csrc/Event.h,sha256=ZaiYri4BhtfCgKsXKUFrnj9s0-LxNd4IvdgDggmV6mc,840 +torch/include/torch/csrc/Exceptions.h,sha256=tUo98K-t1Fv4XuZK2icCWw7TNiWyW3R5_5sIRHME4tI,16256 +torch/include/torch/csrc/Export.h,sha256=cqQQF3wDc-5-WHNjcnuu6fEGxNBDZvqGV7xfx1C5fiM,411 +torch/include/torch/csrc/Generator.h,sha256=m2Bqihf3Sc0bWnI4unsiH51o8YmYhGuCtkzATUDVktg,1310 +torch/include/torch/csrc/Layout.h,sha256=NB5zkGBd7Grp7USYFjF1zYqkXJH6FNEMrwPuCRUdyc8,840 +torch/include/torch/csrc/MemoryFormat.h,sha256=leW7WY12ZeRCjgcbTGhRw1hHEyo5MjP0mzY0B-9Z75s,936 +torch/include/torch/csrc/Module.h,sha256=xPZ6iAnFOpb0kJKIkvSamoVaepAvN9nIp8qDnL1vfpw,355 +torch/include/torch/csrc/PyInterpreter.h,sha256=FwV8NJX2vHVvAgSH9pQKqq66z67jwZjciKcipXFbyjg,647 +torch/include/torch/csrc/PyInterpreterHooks.h,sha256=z8Ur8_WiaAWFDFbfT9zRh6w1FNrLxGwcD_9cTIuch8k,649 +torch/include/torch/csrc/QScheme.h,sha256=X-6XDVHnS9nPbqA3sbH4iulEe38QurprXBRIXF5puRQ,862 +torch/include/torch/csrc/Size.h,sha256=GG35TADU4Fb5LsxfMYG2S1li_9unhRLFcfMiQ41KiLY,730 +torch/include/torch/csrc/Storage.h,sha256=2_h8Ndwai_c3HhWZTeEoBEUVcj6vg63VOS6m-jy9JXY,1701 +torch/include/torch/csrc/StorageMethods.h,sha256=wdY_jcfOWT5HwMR2634Q7id1n4COsYf-hJiJxPUPr_Y,386 +torch/include/torch/csrc/StorageSharing.h,sha256=FDdRsnDvPPBWeBpuSztbEEC3UwZkprcmSIcK0BeC65I,393 +torch/include/torch/csrc/Stream.h,sha256=T_frqzmuEVKzU21HrUoJDUiDCaZNoF1vd5UeF77EmCA,963 +torch/include/torch/csrc/THConcat.h,sha256=t4GpgRJv-bY0ccAE0AgICWQNamhXi3g_EDkJOWVpA6I,945 +torch/include/torch/csrc/THP.h,sha256=5gweWqAcY2BZqsPj1bp0at5P-XYyEWN4MM5L2qRBolo,763 +torch/include/torch/csrc/TypeInfo.h,sha256=r7tPAL63xDEPFo8x6uvHtgODFHXjhXJDzRFAUulNFsU,819 +torch/include/torch/csrc/Types.h,sha256=sEsjWCg6HiCzV10np0kjdl6YWmjcpU0biDbJzBQGQ5c,417 +torch/include/torch/csrc/acc/Module.h,sha256=dFVIrVAvxN9Uk4QybsLW1QQZsincqYLEbXsi9fg8FD4,428 +torch/include/torch/csrc/api/include/torch/all.h,sha256=d_uD0PDavFCyhOyDnOdk5wLAVQE9NI7iSBXqTcfiprk,818 +torch/include/torch/csrc/api/include/torch/arg.h,sha256=BL9aGQ0jh03qjO-ktgWHFxTcukzzbsVZlat4G-lSl6s,1681 +torch/include/torch/csrc/api/include/torch/autograd.h,sha256=c2Z8tuuRXj_DwlwBBYHIjDjaHbDjGcA-L6QqrPNy9Yg,426 +torch/include/torch/csrc/api/include/torch/cuda.h,sha256=iEh4xDeeRRMgYfLIkDNu9Q8crqvLJ2CbNTRj6MsNd1s,987 +torch/include/torch/csrc/api/include/torch/data.h,sha256=LQstdyTLY96Iw3-alKqvTgzfeK7McbI5ae83zGoh41E,551 +torch/include/torch/csrc/api/include/torch/data/dataloader.h,sha256=LKWckxETIn2rdHCN_belMApFqkzs-dQfjvZNvUWrek4,2151 +torch/include/torch/csrc/api/include/torch/data/dataloader/base.h,sha256=jBcbswB5JpHaJJ6gn1opeXmZzLF4QUn4ySBcWEQ1XD0,9475 +torch/include/torch/csrc/api/include/torch/data/dataloader/stateful.h,sha256=EGKQPKMzA7uvIuT8jGGoSALVLggpHhZRXT0VuYEEVXU,2589 +torch/include/torch/csrc/api/include/torch/data/dataloader/stateless.h,sha256=HByZb45MUrHOb0q-aLcj9aPq5JnpPByCMtlu2An3-Sg,3000 +torch/include/torch/csrc/api/include/torch/data/dataloader_options.h,sha256=PbZabfCzPYj6WCCX1vUkybqdiYPdk4uBGwF-h7tPnns,2451 +torch/include/torch/csrc/api/include/torch/data/datasets.h,sha256=tir-STDUqaajiGy5-x_bwDoOc4PwlvmwadAITiB82a8,543 +torch/include/torch/csrc/api/include/torch/data/datasets/base.h,sha256=Cjw4p8Vo-rca61JdGvm9Gvum6eYjV9G65WJtIH6UrcU,3430 +torch/include/torch/csrc/api/include/torch/data/datasets/chunk.h,sha256=s8v5sRT9ZulWFXlp-WNfi9eXKnYO9Bzz2hovW-54Aw0,19430 +torch/include/torch/csrc/api/include/torch/data/datasets/map.h,sha256=DAwZ6ieQyoHNZrkHBaGEmTbYPt4XtDeS4XISGl6OMEM,4326 +torch/include/torch/csrc/api/include/torch/data/datasets/mnist.h,sha256=YRPvU01q1ywMPAQjrjBaNo6KUzSgW9uvuNPEpfDtQaE,1483 +torch/include/torch/csrc/api/include/torch/data/datasets/shared.h,sha256=dLHvC69hde_HijNDTWAJ9jYMTk_OAX9GelxNjr_goMc,2849 +torch/include/torch/csrc/api/include/torch/data/datasets/stateful.h,sha256=ltL0s1nqziimtGBnUpEJffAeInVa2KwWe0jxuTcvcMc,2488 +torch/include/torch/csrc/api/include/torch/data/datasets/tensor.h,sha256=5GaBd5nOL3lvJw5po94pIRkGZBv1OFC_Am8RX7gUXAA,1185 +torch/include/torch/csrc/api/include/torch/data/detail/data_shuttle.h,sha256=crrKlaIf0Y7nvvN1qiU7vNdthyS7wH5YTQEwE7IUE0w,2839 +torch/include/torch/csrc/api/include/torch/data/detail/queue.h,sha256=3PbwSIlInczgyEu4kzi1TNK9RPA2Ipc6QI8QT5PmDhg,2709 +torch/include/torch/csrc/api/include/torch/data/detail/sequencers.h,sha256=408hk6loMFpzN9QVZdbyGsv0mQ-m63m_86sUawhH77U,4694 +torch/include/torch/csrc/api/include/torch/data/example.h,sha256=s_XXP010mJyyotdSSY0lIUsWJgyqCALdfXgiPj9OJNA,1543 +torch/include/torch/csrc/api/include/torch/data/iterator.h,sha256=ztvL0ZIktgE9uNVqS32HjQ0yRwckT0h_A3KS3k1EZQI,5559 +torch/include/torch/csrc/api/include/torch/data/samplers.h,sha256=EJcqg_L6zv1LbFAlpkytbkGTZA6pGGIAbDc1y_jeDUQ,572 +torch/include/torch/csrc/api/include/torch/data/samplers/base.h,sha256=roqyYGAFtgoLNPaVbQo0FlQ-f7Hyeg1IYUJ1eCMV5Xg,1420 +torch/include/torch/csrc/api/include/torch/data/samplers/custom_batch_request.h,sha256=Go9M3TfetFP9DqO_VLJh3Q7IHWz67v7opPOTFLQMUrQ,760 +torch/include/torch/csrc/api/include/torch/data/samplers/distributed.h,sha256=TsFvLnW8X24dJArLqcXrxDvmAAn658vReUk8m2YG56s,4332 +torch/include/torch/csrc/api/include/torch/data/samplers/random.h,sha256=PBl9BsQzkJ4iVIWCHxyWjz33mpP6PKAXNRpIFuL6Bjs,1716 +torch/include/torch/csrc/api/include/torch/data/samplers/sequential.h,sha256=NDKQhS8I9qqAZJj789_KnUBMkIZjOijEUe3uKJcGGR4,1448 +torch/include/torch/csrc/api/include/torch/data/samplers/serialize.h,sha256=nubpsLpxYasgAUxYhHQI3F0aXeVO71iyVftZAQKUMsk,911 +torch/include/torch/csrc/api/include/torch/data/samplers/stream.h,sha256=1KrRV4D5s25Zyk8TG_2hlGA6gjWFm2pESGO52UHw1jg,2227 +torch/include/torch/csrc/api/include/torch/data/transforms.h,sha256=-7PZ3J4Sl8IGwJkCtsa3gwyRIRwAakqh0XYCjLIRr30,476 +torch/include/torch/csrc/api/include/torch/data/transforms/base.h,sha256=zy50TQRf0TfljUSw97T-uBt3JOsqpTX29QOT_Tyydns,1833 +torch/include/torch/csrc/api/include/torch/data/transforms/collate.h,sha256=6ixnhJX-HgRWGYOxW7TlRt0jfTHEJ_f9k9M6SuoXVoM,1317 +torch/include/torch/csrc/api/include/torch/data/transforms/lambda.h,sha256=oRuX2N9-kb-ri0kl-nXUWFA2Z-ndJ03W7p34b78mpL0,1913 +torch/include/torch/csrc/api/include/torch/data/transforms/stack.h,sha256=e8RMeA2_J1Ee0CBnJVpvGC6oR1YUJzZJlhRb7lgvCUU,1628 +torch/include/torch/csrc/api/include/torch/data/transforms/tensor.h,sha256=uT8NLQGuIK7cAnu3hqZ1MwE9P5DZwKjlt6dayOzrMjU,2677 +torch/include/torch/csrc/api/include/torch/data/worker_exception.h,sha256=cReMfofGMxB08LBOyvVQj_u7E4IqMN9W6ZTPgw7jI2M,1373 +torch/include/torch/csrc/api/include/torch/detail/TensorDataContainer.h,sha256=Gf65fgWWtL0d8WZ-sRFJ8Bw95DTSgS6RR0m_Y_9ym7c,13206 +torch/include/torch/csrc/api/include/torch/detail/static.h,sha256=slXrhsYFnm2u6o3WMwIwn2olNGwC68waixn1TGf8Xlw,2347 +torch/include/torch/csrc/api/include/torch/enum.h,sha256=4dLXAs573lv-RY-KA9SoVS-fZjsMPTtpQjsIysif-ZM,7704 +torch/include/torch/csrc/api/include/torch/expanding_array.h,sha256=mJgJDI08qavPtouHQwo9ZzD_Al8oIFnDZdwkKYwXOBI,6927 +torch/include/torch/csrc/api/include/torch/fft.h,sha256=UhE-r-y8A3qsxDf8xSu1zXKXfOkXBMzM1Jy7mMDrzzE,12358 +torch/include/torch/csrc/api/include/torch/imethod.h,sha256=9jhzS5dOBFwnbq-1_a7C-coPinIrrkssmZfagWPpyHA,1994 +torch/include/torch/csrc/api/include/torch/jit.h,sha256=fVuU6JSqhzY-GsSoOZf4VHgKtnkHbGFo8KPeOd9kTEE,1142 +torch/include/torch/csrc/api/include/torch/mps.h,sha256=HrGBge68iJlcBjFVYOCQ0v6V-_kIpAiJ_pwwPAro_E0,1448 +torch/include/torch/csrc/api/include/torch/nativert/ModelRunnerHandle.h,sha256=pM8dpUHKtzlOjWp8Dhf-6GRCt_AFhfdbqDWSTJyy5DI,1580 +torch/include/torch/csrc/api/include/torch/nested.h,sha256=VjlIslutEY3O4RQUM652WoldCaH-nNMa_x0dUd5Hj0o,3027 +torch/include/torch/csrc/api/include/torch/nn.h,sha256=Y6_mVoiLIHyzr4RRQ5LYIA9MxJOmTPQn2tFbvrYXcZk,505 +torch/include/torch/csrc/api/include/torch/nn/cloneable.h,sha256=hYgWBoO_CdiI7TIkKvKQBc8uzgqpx7_o--jrV_cq-sU,4155 +torch/include/torch/csrc/api/include/torch/nn/functional.h,sha256=Yebih9a14mooUre0-lyB7AbuSM3zQI54o5hy8j5qXyA,896 +torch/include/torch/csrc/api/include/torch/nn/functional/activation.h,sha256=AanEgOQHeLicHOwTzZizciTofcBC-Jj3st0BB_JcKRo,30070 +torch/include/torch/csrc/api/include/torch/nn/functional/batchnorm.h,sha256=thPydHdHkAH9GiVKLJ6rBiCnjeyxNh1jKiGG5V5Ntc4,2269 +torch/include/torch/csrc/api/include/torch/nn/functional/conv.h,sha256=Tls9WI9J-iSMRhYGmTkzrPoQZwW7bvk-N7MxU1JfIbM,8373 +torch/include/torch/csrc/api/include/torch/nn/functional/distance.h,sha256=rEP1qHLYXatcmYEMAWWHsjVAumgwF1IGiRBk5c-NbrI,2753 +torch/include/torch/csrc/api/include/torch/nn/functional/dropout.h,sha256=3sJbPO0E8TaifvfoJyTZxTC0KDGi6xydUTVT2r4rSLo,6790 +torch/include/torch/csrc/api/include/torch/nn/functional/embedding.h,sha256=-n4IK-tZPGJmAmdxWyT-gqmzk0clttDfsm-HAhrIciU,6613 +torch/include/torch/csrc/api/include/torch/nn/functional/fold.h,sha256=lLbiMxGeCA1dJP3PIAUVOAfLQAzvM1f-Zw2x5Hp2gjs,2990 +torch/include/torch/csrc/api/include/torch/nn/functional/instancenorm.h,sha256=zIIIVJG2Bzo7FZyED4D0SWWIV6WovO7cbPEOryUohX8,1809 +torch/include/torch/csrc/api/include/torch/nn/functional/linear.h,sha256=ugg28fvjDzk2lgYne1UVM4csQdQLUAGda3ezZuHAkBo,1015 +torch/include/torch/csrc/api/include/torch/nn/functional/loss.h,sha256=Z5tmLVYSQt7Zp7IL_4crceVtUL88rIIBdaXnLhZDT10,32095 +torch/include/torch/csrc/api/include/torch/nn/functional/normalization.h,sha256=s5cxNP6BF1UiO40t8oBV1dIT_h3UiRH_zyjYKFH-cSs,6225 +torch/include/torch/csrc/api/include/torch/nn/functional/padding.h,sha256=5gYWsnKjj7ofCPHkjYPpJ-SynLBJud8EAjaDijQCNTg,1928 +torch/include/torch/csrc/api/include/torch/nn/functional/pixelshuffle.h,sha256=pjM2FRB74Vw2dZWre034KB4LsFPUP-BBoclCa9mYTOU,1547 +torch/include/torch/csrc/api/include/torch/nn/functional/pooling.h,sha256=v_5wJJYLo5db9KDb7SyS0wd7ikfzWwMkb5eVcoCrZqU,35664 +torch/include/torch/csrc/api/include/torch/nn/functional/upsampling.h,sha256=gbZ6HgiDysvMmz9IqOeZQwGT5LB23IYRfxqOVg5dLNU,10982 +torch/include/torch/csrc/api/include/torch/nn/functional/vision.h,sha256=HjnFEeYjeBGo7xEZupgryWYaeprbBRpUS0uDO7HI2cw,3833 +torch/include/torch/csrc/api/include/torch/nn/init.h,sha256=TQ4dS3iK_g_lZSA6H3QRjWHCU8LD3bAMdrV4mT1qv9M,5173 +torch/include/torch/csrc/api/include/torch/nn/module.h,sha256=6ADqnUhYJwgDBuolods-IVU0Ja8kDKltRtmlHdzerAs,27242 +torch/include/torch/csrc/api/include/torch/nn/modules.h,sha256=UZxQ4tAgNJ5MB824qRZUVwVBRscPY9h3fslYV3b0H8Q,1543 +torch/include/torch/csrc/api/include/torch/nn/modules/_functions.h,sha256=lfmzcEi-3tq_8YKuvNcrCtrPC3UKVtoOEy0G3AqlGoY,910 +torch/include/torch/csrc/api/include/torch/nn/modules/activation.h,sha256=03i8F0M9vuuxzcf3BqAzwpn-GEaEBMBdWCvDmDib0TY,30571 +torch/include/torch/csrc/api/include/torch/nn/modules/adaptive.h,sha256=gzmhHN6jsfv38PJUZMB5RnSkYpFufVcy1hH_dTq14IM,3771 +torch/include/torch/csrc/api/include/torch/nn/modules/batchnorm.h,sha256=v2fGhpWLroZu-HNmj0GqBEv3CBeabjj0KHKzI5BnXOo,8479 +torch/include/torch/csrc/api/include/torch/nn/modules/common.h,sha256=jVT0e01SXVxuvGpfauX-sjoeFZJImpZ-HvtEqhg0XzU,4602 +torch/include/torch/csrc/api/include/torch/nn/modules/container/any.h,sha256=F01wtQcvmgLe3S0o3iYNVpeIA4OcXAV8eytwvqA2KBA,13712 +torch/include/torch/csrc/api/include/torch/nn/modules/container/any_module_holder.h,sha256=S-IMNkIUdSLtUpRD9NSSD_JnjDuXgwO5QUNqAzzQSUo,5250 +torch/include/torch/csrc/api/include/torch/nn/modules/container/any_value.h,sha256=4WmDto4MkFYybDAfv95JVHZ3fURvguwuWV890TzyHTU,4392 +torch/include/torch/csrc/api/include/torch/nn/modules/container/functional.h,sha256=EGxMBeX0zHtKL6wWek3-3FGhVMlG6Z1Ku5ncqfZikwo,3597 +torch/include/torch/csrc/api/include/torch/nn/modules/container/moduledict.h,sha256=iBorAWRt_qNevxSW_1N74gS-5VCrz3lY8_mG1fRJH74,8676 +torch/include/torch/csrc/api/include/torch/nn/modules/container/modulelist.h,sha256=J4PxwHw4-05Ok-zWqJAyV6QBnGNjHmGQHQ6PvSuR3TI,9196 +torch/include/torch/csrc/api/include/torch/nn/modules/container/named_any.h,sha256=b3TYOyXtnx1PtDUfP03XZDnhdmj5F5xTcfq7n_9PhSc,2696 +torch/include/torch/csrc/api/include/torch/nn/modules/container/parameterdict.h,sha256=22O3j4R_oC6MJAmE9iWNffx9Pb6atCVK0-GD6yQDJv0,4711 +torch/include/torch/csrc/api/include/torch/nn/modules/container/parameterlist.h,sha256=OVlHpI4NxcpAL4JbpDazpF4wlzd0NU78q7z8kLDOEA8,5812 +torch/include/torch/csrc/api/include/torch/nn/modules/container/sequential.h,sha256=bb75yxy9DuRtuhb_U3aYDp1G-fYPoyaJRm3PeWMm2XU,13988 +torch/include/torch/csrc/api/include/torch/nn/modules/conv.h,sha256=EpGiG2mprFb7oocnUc7N-r1BERpm2tllnqZNCD1RRjA,16513 +torch/include/torch/csrc/api/include/torch/nn/modules/distance.h,sha256=nql9Y19QBsW032P6_RVhGmfq3NYtvKcLIqSjc-5IM8w,3310 +torch/include/torch/csrc/api/include/torch/nn/modules/dropout.h,sha256=Alr2vWdC2vQ_P3vAFwXqvGYoG9ENxpmCQhzoR8sN2Xo,6654 +torch/include/torch/csrc/api/include/torch/nn/modules/embedding.h,sha256=nuJtlx1iXIalox9jWBJViUIvofZ2JgbiAFve00alXMI,6309 +torch/include/torch/csrc/api/include/torch/nn/modules/fold.h,sha256=czUUxQhErjSun_9F0cQ3cbYjTJsWKzyT8eB_AluM1IE,3076 +torch/include/torch/csrc/api/include/torch/nn/modules/instancenorm.h,sha256=brdUwQ8jDoyuLbS5y8KxnM7NJyKnWs6mJ7IukdHLhtU,5768 +torch/include/torch/csrc/api/include/torch/nn/modules/linear.h,sha256=kgodTIxGeZOe7VUHCSMkzCNsAxWqgv8C6JXPyHAXSkE,7739 +torch/include/torch/csrc/api/include/torch/nn/modules/loss.h,sha256=QVsU0rm3VxGWPYcH3uS61ed_oJm6s6yKx_8vDOoZ90I,31230 +torch/include/torch/csrc/api/include/torch/nn/modules/normalization.h,sha256=GSvC2nI74qLTUt18BXboGZlfd-SyispJO09d3_6orLA,7185 +torch/include/torch/csrc/api/include/torch/nn/modules/padding.h,sha256=g3RTBTVaJz-8Byd0QaDp7GCXihIh1Sr7ZhjKjKo_90I,14600 +torch/include/torch/csrc/api/include/torch/nn/modules/pixelshuffle.h,sha256=BDmKhAvvlh3XMIBDJCcLwxKZJGcsGj8A0z6nk2ZE8Sw,3363 +torch/include/torch/csrc/api/include/torch/nn/modules/pooling.h,sha256=uikBjDJjHp3v9Ge5WWgF150NIEGEMtAgBgkZjIBxx-s,29894 +torch/include/torch/csrc/api/include/torch/nn/modules/rnn.h,sha256=BF92Lb2iX0HigEyM0mYpms2Yylp4zteTqnvPoLn48K8,13702 +torch/include/torch/csrc/api/include/torch/nn/modules/transformer.h,sha256=VfumjzK-K-ynNtgVZ3kNR81AX17LnQw--a69DTBZoS8,5576 +torch/include/torch/csrc/api/include/torch/nn/modules/transformercoder.h,sha256=DMi4gf-7bhJMIN2Mmo-hcxT0P3Vs55tQJwTnhAFF6nI,5457 +torch/include/torch/csrc/api/include/torch/nn/modules/transformerlayer.h,sha256=wOu5mDfVXfrC6OWeud6vlp_ERqmsCf2hGmOfxIIeLZ8,6661 +torch/include/torch/csrc/api/include/torch/nn/modules/upsampling.h,sha256=4-8Y2-yx6CYi6FMar3jY3OBgJy3scUubRVieChU0-K8,1873 +torch/include/torch/csrc/api/include/torch/nn/modules/utils.h,sha256=EFeKPqk8CAjyY5KvvaWiDFArSVy_MWuHJ4ryA-QbXMM,1654 +torch/include/torch/csrc/api/include/torch/nn/options.h,sha256=sxG7alldUUJoWyfJrvSTi-0B72_NQXn1Mop-JfTHceo,899 +torch/include/torch/csrc/api/include/torch/nn/options/activation.h,sha256=uhyNnM7WIuoju5zQxwdcz33Ci_kMAfKH98poA5aNa1w,19238 +torch/include/torch/csrc/api/include/torch/nn/options/adaptive.h,sha256=sjOvq3GgknXt1PkX9MFkU7qjOSyGjtQYzuRc6JovEJM,1311 +torch/include/torch/csrc/api/include/torch/nn/options/batchnorm.h,sha256=tSndtNVHDgkdoHeiVnzO8wO6sbb9axlSOgQEEN56AoE,2991 +torch/include/torch/csrc/api/include/torch/nn/options/conv.h,sha256=lQXIbZwhpTt95rCaE0VmHDO7pi0fU8pSlGNUDOFdpdI,13648 +torch/include/torch/csrc/api/include/torch/nn/options/distance.h,sha256=IFWwIffyDJ1Lry00dfccYOt_TOGpK_q4X-Mjbxi6JJA,2243 +torch/include/torch/csrc/api/include/torch/nn/options/dropout.h,sha256=6bJy2Iqz0OXfGSDUX23n2dj2CHTwQ0qfCZQm6nlhx70,3299 +torch/include/torch/csrc/api/include/torch/nn/options/embedding.h,sha256=JUsnVNC9P-Sg9rlUOc-6oKb--hPgKsXrklmfOjBbBGo,11852 +torch/include/torch/csrc/api/include/torch/nn/options/fold.h,sha256=USrVVGHqN90-CLvmnQveb-S2MigbiCwZPfCXSNqW34Q,3167 +torch/include/torch/csrc/api/include/torch/nn/options/instancenorm.h,sha256=tN7AKMLz_tX7u0mvLA2C0JTeATVDiq52g_IwsuXy-pY,2506 +torch/include/torch/csrc/api/include/torch/nn/options/linear.h,sha256=zQ0gjydeaArty4-8PqXP__vE-Sf_JSLS3NtS2QEXJk8,3033 +torch/include/torch/csrc/api/include/torch/nn/options/loss.h,sha256=Mtu5B5AaslcrDi6xa7tn50BCtxaxYAjK-epFgIbU8X4,26909 +torch/include/torch/csrc/api/include/torch/nn/options/normalization.h,sha256=LLi4Snl31dy_KfV4m33KbW5Z2Fe5wjyT3pYZRVi34Uc,5731 +torch/include/torch/csrc/api/include/torch/nn/options/padding.h,sha256=tbU2Tvhs-LnyxWJqtOyyb7TGDHycaGcc-l0zIXWWgQo,7089 +torch/include/torch/csrc/api/include/torch/nn/options/pixelshuffle.h,sha256=m5j2SlTRE7BJijFx1RmSloo70YWbPDTlJVm7L3YPSEo,1886 +torch/include/torch/csrc/api/include/torch/nn/options/pooling.h,sha256=rK_4UzIrHnL1BvJ0oX3P5CP3nSJ5HaYg7BasPFd7cEI,17961 +torch/include/torch/csrc/api/include/torch/nn/options/rnn.h,sha256=5qTRgvl4Cq3gTOcQex8Jc_JSPYCmVBewOmxadwkbGyc,8449 +torch/include/torch/csrc/api/include/torch/nn/options/transformer.h,sha256=bvMimjBCIRN0vmA66AZHdKNBNx8Ib0kIen4SODfFhV0,2068 +torch/include/torch/csrc/api/include/torch/nn/options/transformercoder.h,sha256=KyMKPP5LOnqggsVAEh6yKd6vT-i-hpX3gwHhbOVsIgc,2573 +torch/include/torch/csrc/api/include/torch/nn/options/transformerlayer.h,sha256=vbt-2FO0LdboCf6g0zvQdYi8RHHcefezgSGKeJp0V6w,2313 +torch/include/torch/csrc/api/include/torch/nn/options/upsampling.h,sha256=-rGCWi7NB8ZDo4gC8AyluCZboU0CCCSEs4rhvoG2xoo,4379 +torch/include/torch/csrc/api/include/torch/nn/options/vision.h,sha256=8T2d6HnqLAMZWVrjeHdPrG8hwm8-QG_rJO4araZCx7s,1340 +torch/include/torch/csrc/api/include/torch/nn/parallel/data_parallel.h,sha256=cgf5YDCNfv8pmMAtOIym3De_kc1B1IUz23wW9SpdpUo,11452 +torch/include/torch/csrc/api/include/torch/nn/pimpl-inl.h,sha256=_7gjiWDY99dqBzC7khwLF-7g1OKmsunrtTuTMDLhhro,3478 +torch/include/torch/csrc/api/include/torch/nn/pimpl.h,sha256=wzvuQ_6KJXp5O49oIIGNZMsMcnxQyhqj8JHTLOWGjc4,6869 +torch/include/torch/csrc/api/include/torch/nn/utils.h,sha256=eZzeszpy667cwp6FJ523gX_puBwH-2OMvLeqGQPuFEI,385 +torch/include/torch/csrc/api/include/torch/nn/utils/clip_grad.h,sha256=fOyCc1u-hCi6OekXaJ6ZMqGgpcX-6lNE5Y-j1ZsuLs8,5092 +torch/include/torch/csrc/api/include/torch/nn/utils/convert_parameters.h,sha256=cYaGluG4Ra0DFAqtbjo1bqD4INGuQA7G8OHo2IFuoUg,2630 +torch/include/torch/csrc/api/include/torch/nn/utils/rnn.h,sha256=1fO253Y8XJjMdccTDcKD8jLSCbqHFr0nMnL-hIRK3Aw,13047 +torch/include/torch/csrc/api/include/torch/optim.h,sha256=dKbqqbG93ik70Mqw60l65oGLZl9N-rWQVhI_TQ07K38,648 +torch/include/torch/csrc/api/include/torch/optim/adagrad.h,sha256=nAVNhd73uYBYL2ZeTCLU3vjEbfJgut34RBhdP-g_yWk,3451 +torch/include/torch/csrc/api/include/torch/optim/adam.h,sha256=PJvoyY_mO-OsMuS2gPjKrZnwakTVLmBTEXR3sfvq2e0,3129 +torch/include/torch/csrc/api/include/torch/optim/adamw.h,sha256=KkrUzV21r36SWjpZhgB5t4v5f_PuUO9LhSFoPvpOfd0,3149 +torch/include/torch/csrc/api/include/torch/optim/lbfgs.h,sha256=sTD9wwF_XrGtm-2aUr4yyfq7k92Nc-J_lLwge0vbJaM,3684 +torch/include/torch/csrc/api/include/torch/optim/optimizer.h,sha256=mbpFHQYn2qtqqeG9KEPO8UKO9nt3TUOPUruEiEnnPoQ,16402 +torch/include/torch/csrc/api/include/torch/optim/rmsprop.h,sha256=srRMwObMUT9gcndgw8Zr0JBtkb-8Wjz-iX5SRTXh_8g,3142 +torch/include/torch/csrc/api/include/torch/optim/schedulers/lr_scheduler.h,sha256=-7Z-GPuYZWCf8TjI5J87q0jR9xi3Opa5Xbayvy3MEE0,1373 +torch/include/torch/csrc/api/include/torch/optim/schedulers/reduce_on_plateau_scheduler.h,sha256=-rWp5O4vbLWCWhv8Ng5-Pi6AowyEYnKRBrmpDaYqtE0,1634 +torch/include/torch/csrc/api/include/torch/optim/schedulers/step_lr.h,sha256=AR6ANTwsCyEVEnfg4_uNiBKM_zgNPEXNlCHpsJcSIWM,653 +torch/include/torch/csrc/api/include/torch/optim/serialize.h,sha256=n4P_G-sQqX3RKGRz0tDGoI0IQLqK6T-j9u-Co--1GjY,12927 +torch/include/torch/csrc/api/include/torch/optim/sgd.h,sha256=mbnkMFtvgOYUWSS25noZtCL1U0-7_UBE7t-mxrnYAjU,2876 +torch/include/torch/csrc/api/include/torch/ordered_dict.h,sha256=qbkJy2mDZxqt5rkMLhaVYE-6Mlo5wEidHY8LcgQoJX8,16522 +torch/include/torch/csrc/api/include/torch/python.h,sha256=xNAoE1udfG8OcxH-Ob5ZXcm95WfpEuYaQIywN-mTzbI,10174 +torch/include/torch/csrc/api/include/torch/python/init.h,sha256=DI9siWXORGUKh2T9AousnlS3ss2XOLsXmC2ci2fzdm4,458 +torch/include/torch/csrc/api/include/torch/serialize.h,sha256=cJYBTLdpqP6ZhbZD6XPBwPjNG27lofBkgk_AzjonEZE,5498 +torch/include/torch/csrc/api/include/torch/serialize/archive.h,sha256=bgmYgV3iccrvTK1uih12iixI6ZmuXNlwN2yOiA5JgpE,355 +torch/include/torch/csrc/api/include/torch/serialize/input-archive.h,sha256=94hT0mn8WsZMPf6jDzY0GECw3vOeK_oZTWIiVGDWLys,4209 +torch/include/torch/csrc/api/include/torch/serialize/output-archive.h,sha256=JV4yJh7pHvUejgJT3Ks0ByQv8yy8oBnyM1Krc123AoI,2543 +torch/include/torch/csrc/api/include/torch/serialize/tensor.h,sha256=0zHxiYy2sLUsm0I33QgdUI9wOVukkU_toXnQ4TiAk50,686 +torch/include/torch/csrc/api/include/torch/sparse.h,sha256=Gtx29zexv7Kz-O1GmCSsESZHS9Abtd1INKsc21GmqNM,291 +torch/include/torch/csrc/api/include/torch/special.h,sha256=oH3xzdNxoyHZnP1xjxyG-XISWpdfBrO1-VhzrSHHz_8,38539 +torch/include/torch/csrc/api/include/torch/torch.h,sha256=Pl63ncpcYFuxfHZlmVPbj5_dJ4E6pnRAY8G9QbBd-rw,408 +torch/include/torch/csrc/api/include/torch/types.h,sha256=N00lXLA_-FDh8z1MOBB_ygEfKoxieN3KEOQwy-ACX_4,2642 +torch/include/torch/csrc/api/include/torch/utils.h,sha256=GB1CqG8ZKtQmwCv3I7fOMvdlmngE3RG1FG9XNDRNiIo,3839 +torch/include/torch/csrc/api/include/torch/version.h,sha256=e6jwvr0_ZyDbVQT9pfn4HX7RLbLsPjcFFDnijTct2Fs,292 +torch/include/torch/csrc/api/include/torch/xpu.h,sha256=AMYSk9Y1uA92ZQ16t9uXRxEPjtPo5ScFS3KhaWnVKxM,856 +torch/include/torch/csrc/autograd/FunctionsManual.h,sha256=sRpzMUnlb1quOR75qzEPDHr2rLc0IoLnn2YO3OncQUM,35155 +torch/include/torch/csrc/autograd/InferenceMode.h,sha256=IIsNk73vBgJGreu_P72DNwmvvUzynAuFphP3tEAf-eg,410 +torch/include/torch/csrc/autograd/VariableTypeUtils.h,sha256=N4a7JuuQ3O5pg4dAXvqy6O2c9NI9156cOxoE91Y3nKo,14821 +torch/include/torch/csrc/autograd/anomaly_mode.h,sha256=WUXJ0uJlIF2bueS1UEZUyWkj0GUegPoYcj1aiIn5ah0,1979 +torch/include/torch/csrc/autograd/autograd.h,sha256=FFXo-LL0wK9pD3yC5foBkVHE_w7yK1HulOGpzj91ES4,5563 +torch/include/torch/csrc/autograd/autograd_not_implemented_fallback.h,sha256=tCJe7yOLcR7RL_3UxToohetXaL4IV4-AhirhV0-ICFc,1396 +torch/include/torch/csrc/autograd/cpp_hook.h,sha256=EU4UlP4ia7rBL1MFvTwoQvow-FsZU1q87npXD99hLBc,1213 +torch/include/torch/csrc/autograd/custom_function.h,sha256=-ZSPfYRlRrpjl1FfFsCtlblAp-XLeH1ns_fEZtkOmW0,21502 +torch/include/torch/csrc/autograd/edge.h,sha256=3ExDHbB7rd61-6oJ4xVs3WCAMqBwfFYvMdtfgTHVapo,1869 +torch/include/torch/csrc/autograd/engine.h,sha256=YCx302poAtiqT6wSn4b9_W4zN0UXy7S1PxcRhQ2JLuY,11070 +torch/include/torch/csrc/autograd/forward_grad.h,sha256=EvkQ6z7r0OJOFsZOFj3Fj8HOHCVJJxZCzXjpVVlDOqg,9191 +torch/include/torch/csrc/autograd/function.h,sha256=Li4oaACOgNBgRpOJTWhlxBC1xrgWkO1PuFku1_kMuEc,30970 +torch/include/torch/csrc/autograd/function_hook.h,sha256=_mhR01mCC8NZPe4VcGVDCWBrluemLCvKjxyLZ_lhwEU,2506 +torch/include/torch/csrc/autograd/functions/accumulate_grad.h,sha256=1FZmJFc4b4CYTcbBgr-gygTNu66ej74TQLqWI0ann0Q,15229 +torch/include/torch/csrc/autograd/functions/basic_ops.h,sha256=wbS5BgGMoGw3C5UKodlHsXVq_a1aM-sX7rjv94Sbro8,3995 +torch/include/torch/csrc/autograd/functions/comm.h,sha256=FNF3iPcVZJLNbnnL6O5iK39EULAsbdjPuPYQ6J9zNGQ,1451 +torch/include/torch/csrc/autograd/functions/pybind.h,sha256=eMdYn3nYpRUpn2gG6xMtyCUKr37Tdcd8yPNF-mdo6eU,634 +torch/include/torch/csrc/autograd/functions/tensor.h,sha256=C91kezIt12_arV9fzIP7xqgDjJ40bki3_gva7m_m0xE,7523 +torch/include/torch/csrc/autograd/functions/utils.h,sha256=dVZArpaTbZE27304zREYGBfLyzZ3IY8U-CT2ojRU8vo,3484 +torch/include/torch/csrc/autograd/generated/Functions.h,sha256=pMURf4A3L2CiWq_Pf6eL6TPgPKe_SK0CDJfEJmqJMww,525960 +torch/include/torch/csrc/autograd/generated/VariableType.h,sha256=xu17YMWup0QnMT6IdfIN5ro4ft9ekdDJGMm9cNyQzFk,1759 +torch/include/torch/csrc/autograd/generated/ViewFuncs.h,sha256=yPvzfQIRFWg-9GPcG1JBBIIW6pZ150ihOgyrQdf9ofY,37577 +torch/include/torch/csrc/autograd/generated/python_functions.h,sha256=cqFoR0VPydNMFLNZE1gQLyNgKqVlPl-TXqk8dEdo3Dw,1145 +torch/include/torch/csrc/autograd/generated/python_return_types.h,sha256=CvTXlC3oUkpxoNUGArs7fYZGAoJpOVDO6UDpQfRgjt8,4316 +torch/include/torch/csrc/autograd/generated/variable_factories.h,sha256=EWalUuVIP-5o0htCkXwdvVZccPRIb59rnsN8UDxsPxQ,60271 +torch/include/torch/csrc/autograd/grad_mode.h,sha256=49QHebGFym_CUOczJEtR9N64aq9mdZjk7o9scjMT6XU,464 +torch/include/torch/csrc/autograd/graph_task.h,sha256=bJIY4z8Jo4lYaLBitBbm_yKJGXoVvbPlDpKsOaQgvho,9616 +torch/include/torch/csrc/autograd/input_buffer.h,sha256=5rDYazxZzTRe4xTxL9H0bM4rOVLy-pMEpvPbAtEDwt0,2266 +torch/include/torch/csrc/autograd/input_metadata.h,sha256=8BE5MVxErQyJ-uqmLYTR7gHVMaGeqMQbIbazSUmqeRw,4022 +torch/include/torch/csrc/autograd/jit_decomp_interface.h,sha256=cQ3nucJtKJIUvLQCHo5vz3mem5As_-Yb0XZIiN9FQkM,2082 +torch/include/torch/csrc/autograd/profiler.h,sha256=B4BypHNHlVX9vBCnvfwl4yxogmg-pWrKUhQ3SKceoMU,366 +torch/include/torch/csrc/autograd/profiler_kineto.h,sha256=O5Kbc7dLwhihltugoYjk9x1my-W_t8dGnwwxzE_lBBs,9222 +torch/include/torch/csrc/autograd/profiler_legacy.h,sha256=ybnnQqJ55ZyBMj9-X65QC6LBQGHl1a-aGaAYrdziuro,10956 +torch/include/torch/csrc/autograd/profiler_python.h,sha256=w_uymVzw7mSJshQulmwIbbypnob4XkFFcRdr_pLmKeQ,338 +torch/include/torch/csrc/autograd/python_anomaly_mode.h,sha256=U0rQ5UcXxtf5r-77lmLEb60r3DanCUqnbbt-7NICuts,1440 +torch/include/torch/csrc/autograd/python_autograd.h,sha256=vU-tC6gZ3BY11lhixIp-rPmPB67doBTiX8eRV7_ogp8,677 +torch/include/torch/csrc/autograd/python_cpp_function.h,sha256=Hzc5J7cVNNffCylrbR3L82F-A6hI5v8IAY2pyWIpxpE,5498 +torch/include/torch/csrc/autograd/python_engine.h,sha256=lpZEd6U06q3aGIjXXzMNzuaSsOEUgCqlqjxLUSOzcE0,1510 +torch/include/torch/csrc/autograd/python_enum_tag.h,sha256=DWE7qeWc8UxiHD2TgGvRtkmCNiihI6phVvHIOE76vH8,374 +torch/include/torch/csrc/autograd/python_fft_functions.h,sha256=rCqcUNevR9OzMD2NhlUKC3WWinruFbqKYo13oUS5GLA,389 +torch/include/torch/csrc/autograd/python_function.h,sha256=vc6dO6g4n67DQWM_MNSWXnZsLhcfdYKXthcMvh3hW9k,5759 +torch/include/torch/csrc/autograd/python_hook.h,sha256=OdHmJXgXfy5jadWaKCHREp80MInG0q2WSR39921_v7g,2321 +torch/include/torch/csrc/autograd/python_legacy_variable.h,sha256=tNV-tr0AfucX_7ooFijF1lEWN3Tw5VT0myraeUQcVB8,511 +torch/include/torch/csrc/autograd/python_linalg_functions.h,sha256=8wRQxErZ873uJ5RptU29fcGT-OJYlaIy3B8hW8g6J4o,392 +torch/include/torch/csrc/autograd/python_nested_functions.h,sha256=4ipseJnANXuARoQRTVboHeqICoDEDKzeVTb0Y7PyDMU,462 +torch/include/torch/csrc/autograd/python_nn_functions.h,sha256=EKy9pNl3ybOxBu0JZTA8W9auzbtCnBqjctIS40LZOgI,383 +torch/include/torch/csrc/autograd/python_saved_variable_hooks.h,sha256=83uwA7LUqaCznTyUST-mlRNzBPt0MA8RUH_jI2RgfEg,1333 +torch/include/torch/csrc/autograd/python_sparse_functions.h,sha256=-BmwGly0XH3XsNvJbbSFkj0taRxazvFz-XRoT79BO4o,392 +torch/include/torch/csrc/autograd/python_special_functions.h,sha256=rxQgJ6E7VDMf73wk-DSnSwj5-j4pQoatW--g9h8HYeM,392 +torch/include/torch/csrc/autograd/python_torch_functions.h,sha256=ZgViZedLSuehprslQelMPBEjtTJ_xjLKXNcLLZRb2gY,920 +torch/include/torch/csrc/autograd/python_variable.h,sha256=VWKfw-DXVrDFKbSZZyNrBLrX2sqbcbYD284Bm-DKJtQ,4112 +torch/include/torch/csrc/autograd/python_variable_indexing.h,sha256=EdGDkaPMSb6PRj1dTG2tyiqWpDS3Hrrkrmb4csUejs0,3006 +torch/include/torch/csrc/autograd/record_function_ops.h,sha256=FuLjqyuwTmxPp4xP94yxkLp_XfgHcR_H2txjyFqEVzo,1189 +torch/include/torch/csrc/autograd/saved_variable.h,sha256=R4T7rg-Ou9m00Al9IJTHXDhOJkeUpvwDGFuKnaTry3Q,5418 +torch/include/torch/csrc/autograd/saved_variable_hooks.h,sha256=kwnUYEiaui84rDo3h3apvW3G2PXCk-qlB_7bpY213sE,795 +torch/include/torch/csrc/autograd/symbolic.h,sha256=QkadzHJ6l6JTk1lnaBv6t0IQw5L2YQin5b9HKLlZiuQ,554 +torch/include/torch/csrc/autograd/utils/error_messages.h,sha256=dtBSGmA8U46QFfsSfSDsP1mP_cBjbYWO-zHACUQphdw,749 +torch/include/torch/csrc/autograd/utils/grad_layout_contract.h,sha256=-m8k_tjDVBdAlQ6Hq794tYxSILM6R_NWMvKFZN90-QU,3168 +torch/include/torch/csrc/autograd/utils/lambda_post_hook.h,sha256=LmkQcAnvDxXP6ISLWFrmT_qiTeBJsxQvWplpdDqet7o,1658 +torch/include/torch/csrc/autograd/utils/python_arg_parsing.h,sha256=KYRRUVW4HID-8dXLLK8ejR3Q0dRJxK4ORjqsE_RLPBo,1629 +torch/include/torch/csrc/autograd/utils/warnings.h,sha256=vMaKfEyqoSsAqrwKjRVnypKd4wvWDT6h1FYsxwNttUk,837 +torch/include/torch/csrc/autograd/utils/wrap_outputs.h,sha256=voVEs04uTnBr3Cfg7XYBKrPDuNE7UTuWCYwvspbfeao,4091 +torch/include/torch/csrc/autograd/variable.h,sha256=bxSbmVIGP6YnwtOe4MS4uyxBEYHe8U7rRKqzD5H8i9A,42899 +torch/include/torch/csrc/autograd/variable_info.h,sha256=x_powXIvA0FoDX1ZfprEiC7UknRztkLKAfKWpvCDpx4,862 +torch/include/torch/csrc/copy_utils.h,sha256=L27LKL-iro2NvWObZ5WKTH-1Csq304z0U1N3gW26N6k,1674 +torch/include/torch/csrc/cpu/Module.h,sha256=zGx7rIRNPxhfuZdJND23s8ueyqhYxEANUwyMs6XBJA8,393 +torch/include/torch/csrc/cuda/CUDAPluggableAllocator.h,sha256=EzQBqqHZz3tIGfnL4fUsh8WrqVYBtlHeG9Pwew3ts40,6913 +torch/include/torch/csrc/cuda/Event.h,sha256=KLa6boqJoG359kbJUQ05SEnt_jfDTgSTZJx9zT9b10I,687 +torch/include/torch/csrc/cuda/GdsFile.h,sha256=_sbk174mXjBzcCce8rvrChCh_0Yyk0e-hIM3VzanxX8,446 +torch/include/torch/csrc/cuda/Module.h,sha256=mFzWaRz5WRtYv2VaovHWXTdsafKM3KK1pzQhvtyBawk,738 +torch/include/torch/csrc/cuda/Stream.h,sha256=pOltSeNx7OTGfnVQBh1V3USsJwtMfkvYuBzzBjhfhS8,758 +torch/include/torch/csrc/cuda/THCP.h,sha256=824p3D8G5rEcJ8_mqta6VVtehwmQrX8r2LR630cDITM,477 +torch/include/torch/csrc/cuda/comm.h,sha256=X39M4z7rL1-bsydkOa7ctawby7a9c_rVh_vgZUmtxGE,1768 +torch/include/torch/csrc/cuda/device_set.h,sha256=WphcH70-YDeVx1chXwuIzm6uQZRdDuuGptqpD120_lA,439 +torch/include/torch/csrc/cuda/memory_snapshot.h,sha256=9AqVSIqCiXeFCZpP-bqojEarcxnESUKl1llyIdcML1w,1363 +torch/include/torch/csrc/cuda/nccl.h,sha256=oSBApz0v7VDQuSQvqTdmsWtT3Wee-cCegWX73uOI3ko,6125 +torch/include/torch/csrc/cuda/python_comm.h,sha256=3UpS2iokMzxsYGpslUbV5JnGWopGe3zjdTHOp5IzgT0,425 +torch/include/torch/csrc/cuda/python_nccl.h,sha256=438GoxIfBg-mTsXGvv2hMY9mKpclUEGX9M7ZV-9p978,936 +torch/include/torch/csrc/cuda/utils.h,sha256=wlakPJDSnG_QUpIK6f8LvWw0r7y5OQc4w1hei9exg3Y,469 +torch/include/torch/csrc/distributed/Placement.h,sha256=Ljbn5O4sm3CF4fBgshX4YRiQqzO6vy9Sk6n_ZCrXlaI,2831 +torch/include/torch/csrc/distributed/autograd/autograd.h,sha256=3rkmIlVBwPEIBrhQOqZZMJlMDEuVAersaMGqVP7IA3I,1890 +torch/include/torch/csrc/distributed/autograd/context/container.h,sha256=1QFZ6vefKZmxD8Zc9-EBvjCWkjHhfZ9UxYvrRF2-yAc,6638 +torch/include/torch/csrc/distributed/autograd/context/context.h,sha256=WxXzVZWmQqRmkqVTQbuCCyp64KYya1e0OWdMZlIXJkw,6868 +torch/include/torch/csrc/distributed/autograd/engine/dist_engine.h,sha256=oUAdwQuhseLPr6qTwc-ZzPFi11zfDycWPcgWWwP-mHM,7672 +torch/include/torch/csrc/distributed/autograd/functions/recvrpc_backward.h,sha256=yUhTCVz-MeNdBaXoMDHwEzuL-qmFra3_mVjBjkIOopM,1916 +torch/include/torch/csrc/distributed/autograd/functions/sendrpc_backward.h,sha256=ztfoFVFG6KzHKU4Zz3IzpfkshRcOh-awivGQapGF_i8,1577 +torch/include/torch/csrc/distributed/autograd/python_autograd.h,sha256=F9cPdI4F4m7HPMIs_fBea6QMpX0J5kUyD3EDmHHX1Xg,428 +torch/include/torch/csrc/distributed/autograd/rpc_messages/autograd_metadata.h,sha256=VdgRx9Eaj6Jy3s55wgTpRQVpYoX1WqNuHutcs8cZbj8,954 +torch/include/torch/csrc/distributed/autograd/rpc_messages/cleanup_autograd_context_req.h,sha256=QeJbAf00azhBpdrAUaCBXyrT1KHFng6rIeK37d14594,1090 +torch/include/torch/csrc/distributed/autograd/rpc_messages/cleanup_autograd_context_resp.h,sha256=-CIxYg-7UQ52v3om34tmUM0r1nxWHX35BhQqGAXWnZE,915 +torch/include/torch/csrc/distributed/autograd/rpc_messages/propagate_gradients_req.h,sha256=cCl7oeWz1PbpB80JTecbjugSF3SMstl2tPW1mIrrrK4,1502 +torch/include/torch/csrc/distributed/autograd/rpc_messages/propagate_gradients_resp.h,sha256=G_2iVpZVZSecDjhQA-EslD5swLZWHCJ1k1MB5_UvNnM,1008 +torch/include/torch/csrc/distributed/autograd/rpc_messages/rpc_with_autograd.h,sha256=wWIg4p62dn0Kq4BSNnZz0a-CDv0cs09VBtL1Z53W3aw,3760 +torch/include/torch/csrc/distributed/autograd/rpc_messages/rpc_with_profiling_req.h,sha256=FZqHLNTHs8uMCbRd_fHTjrf_S5dWJ_MwPHK87W3XiME,2764 +torch/include/torch/csrc/distributed/autograd/rpc_messages/rpc_with_profiling_resp.h,sha256=7VpaqDe6N23Qk-vOyJ2J9VQUzrTpHUiiaU9NvR22T2Q,2724 +torch/include/torch/csrc/distributed/autograd/rpc_messages/rref_backward_req.h,sha256=E9P-Y0xyK68cinxepkUq2uKl73qzssChvNtTYZ4eRaA,1444 +torch/include/torch/csrc/distributed/autograd/rpc_messages/rref_backward_resp.h,sha256=yxE9UFlGQauit2LcWyCkFgy8Uw31HXPRheKJFB7Eqvs,762 +torch/include/torch/csrc/distributed/autograd/utils.h,sha256=oRUE0r6ccxMxc3SPd1ViAexoV2c5xsxmyS4YAp2HWW4,2901 +torch/include/torch/csrc/distributed/c10d/Backend.hpp,sha256=sjOtQ9QVRVI36M7utsn9MNNV6WFMqe-pi-deRCAeZ0Q,17528 +torch/include/torch/csrc/distributed/c10d/Backoff.hpp,sha256=DnLFbWRCa3IhP5E29sSnNpsHBO9oJat1Ek4W1hDjIAw,1305 +torch/include/torch/csrc/distributed/c10d/FakeProcessGroup.hpp,sha256=TWpNTw3rjB4mVQMztkfRxR_vaxlLPYk7kpD7hzpjkRU,8491 +torch/include/torch/csrc/distributed/c10d/FileStore.hpp,sha256=iK7cGCElJxpUzi4-Xv4e1mN_6RSEHvoYYcWvynJw640,1842 +torch/include/torch/csrc/distributed/c10d/FlightRecorder.hpp,sha256=SHskWoCb2xDGd0lMB61b25JXH-uKuCDEI1Y9kAj4uW8,12413 +torch/include/torch/csrc/distributed/c10d/FlightRecorderDetail.hpp,sha256=Ef7lHkiZP21eOtfXnHPnT1d_hiXwlmZWFNx4YA8SG0g,21246 +torch/include/torch/csrc/distributed/c10d/Functional.hpp,sha256=710n8pvHltshQs2MvTdO3atzOT5MmwN4FjNTG4h5OYE,5378 +torch/include/torch/csrc/distributed/c10d/GlooDeviceFactory.hpp,sha256=6MsvopYzTV3oGjWqYoDRXQTbeaNCwg7F2CalioXwYeM,1094 +torch/include/torch/csrc/distributed/c10d/GroupRegistry.hpp,sha256=LFpx87v7dvk11uGm6nS4cxkllN4G6gBHSJL6eouJB44,823 +torch/include/torch/csrc/distributed/c10d/HashStore.hpp,sha256=wLEhb20eHMpuzUCLVCx0q4Ne4bzqa1g_YYupgq9Lgxk,2487 +torch/include/torch/csrc/distributed/c10d/NCCLUtils.hpp,sha256=u9mXKVcJvomhTuKMrEmb-JTZUk_SG74qjV2mlBWvWe0,17594 +torch/include/torch/csrc/distributed/c10d/NanCheck.hpp,sha256=7IMJ1X-zeKEMAb4vsPmHB6lRr7NmtkudyjsJyRn5_iw,562 +torch/include/torch/csrc/distributed/c10d/ParamCommsUtils.hpp,sha256=Q84ODQ1pyLO56l2DRoadR0ZOk5pYJ7Vs9_PcSSPxSXE,11813 +torch/include/torch/csrc/distributed/c10d/PrefixStore.hpp,sha256=6ccfMIhqe3OGCWTut0PKGoU43e6uukpMFTu1qpOgioU,2525 +torch/include/torch/csrc/distributed/c10d/ProcessGroup.hpp,sha256=uf7nnFkqazR_ElHojtv2uXNZPLrDMrF4zHvCZxKW8UY,37565 +torch/include/torch/csrc/distributed/c10d/ProcessGroupGloo.hpp,sha256=Piyr9IV-QoMIsqssrXB2Gy1tjwAGKlfWxqvPspLuC1A,17433 +torch/include/torch/csrc/distributed/c10d/ProcessGroupGlooDetail.hpp,sha256=1ENHPv3UM0Mb8bOLWo8lDvfGFamLVZP7EUf4zg4F4u8,22229 +torch/include/torch/csrc/distributed/c10d/ProcessGroupMPI.hpp,sha256=G0Ejy5zjR7xzIleHvbf5c0JsKa_MJ9lceq4bElwabww,9035 +torch/include/torch/csrc/distributed/c10d/ProcessGroupNCCL.hpp,sha256=FOVweakKcFsFEOuBc26T8CZf1up7opkn8AMvH198BVw,56529 +torch/include/torch/csrc/distributed/c10d/ProcessGroupUCC.hpp,sha256=4Fi1Bzw3nBo9zoU92LvtMDpM52gsf7Pm7fmmQPGFCq4,11518 +torch/include/torch/csrc/distributed/c10d/ProcessGroupWrapper.hpp,sha256=VzObSfFjlZIje1NzmVVrAyfR3ez8CtB6tIpMw2KWy1g,8064 +torch/include/torch/csrc/distributed/c10d/PyProcessGroup.hpp,sha256=g3aEN4SyDwE6NaMJfPxgdwpQtRyIKqwFqTsOb-xzYSQ,11295 +torch/include/torch/csrc/distributed/c10d/RankLocal.hpp,sha256=xpv_I2vmc3Y5k6FjIwb3clFuqrWshbe8hXP1rxFXSHI,3180 +torch/include/torch/csrc/distributed/c10d/Store.hpp,sha256=T_7JBhy99kexlNmRPM99eM6iK-hSiT9QXFgaoi-2SRk,5199 +torch/include/torch/csrc/distributed/c10d/TCPStore.hpp,sha256=nhT0-x9ExKKMQdnRoAGHentZG9tyCWuSE9guGRlglY0,5486 +torch/include/torch/csrc/distributed/c10d/TCPStoreBackend.hpp,sha256=EOhlch6kDsQ0lPQuua6CZqHxO7h8DltbXU8tAkaj6eg,1843 +torch/include/torch/csrc/distributed/c10d/TraceUtils.h,sha256=itfJMHemy2q7yvi_PZlaGcj5vOy3p_U3WqGDh_8BPb8,9340 +torch/include/torch/csrc/distributed/c10d/Types.hpp,sha256=wepA8YoV7H_xAkuD7A4HpuzUCWFDIViuia81C8vg5IY,5340 +torch/include/torch/csrc/distributed/c10d/UCCTracing.hpp,sha256=xzw8ckF13C97z9ZzJZJruxZPW1COo96OuuV2_1RD9DA,2555 +torch/include/torch/csrc/distributed/c10d/UCCUtils.hpp,sha256=1yEkP1SJnvJQCCtLG7jKUqNAYDlV0mjkJcnxcLRYm0c,6614 +torch/include/torch/csrc/distributed/c10d/UnixSockUtils.hpp,sha256=RBTSux9rLp20yj8jF_k5c3rguQBp_o9aWy4aohgsyQU,804 +torch/include/torch/csrc/distributed/c10d/Utils.hpp,sha256=UZuyr33mSYtSKl9SuVfOIO2WH-g6oaGeLBIBUbzCFvU,24041 +torch/include/torch/csrc/distributed/c10d/WinSockUtils.hpp,sha256=-DWh4gPRTjDxX8zfhyE9Bu9YXyhUAGciZjCQsctmlkU,795 +torch/include/torch/csrc/distributed/c10d/Work.hpp,sha256=dhsrOZ7xkcdM_BHJN9bX0D4bKhdWhD3cSuy4Rujy95g,6266 +torch/include/torch/csrc/distributed/c10d/c10d.h,sha256=98aqdnQ7MT6I3vRDCjmrF2zpwhmlbjjebZHyaDdUz3k,420 +torch/include/torch/csrc/distributed/c10d/comm.hpp,sha256=MB5AenuguWwMeIKABucAzpwS7T4lNA85YgSKkxtbxfo,4677 +torch/include/torch/csrc/distributed/c10d/control_collectives/ControlCollectives.hpp,sha256=IbknaNbjdaGHyXPzJVP3JaDMOPB5LF0-0pzHVdeGzMA,1959 +torch/include/torch/csrc/distributed/c10d/control_collectives/StoreCollectives.hpp,sha256=nQjw3mAaL0nwCBTfvvtlM9QO31os-yHHc74gzM_k-eE,2195 +torch/include/torch/csrc/distributed/c10d/control_plane/Handlers.hpp,sha256=vG-xauGcy-87UZbzThZHGzwo6wsw25Z79HWhUFZLkGs,2570 +torch/include/torch/csrc/distributed/c10d/control_plane/WaitCounterHandler.hpp,sha256=XveaRQ5aVYkHecZ2Z4a_3HRejCU0233sxJimG1xtLbk,567 +torch/include/torch/csrc/distributed/c10d/control_plane/WorkerServer.hpp,sha256=xxqg78hobK_Z0E587GIjWeOOsEaiENHKsZsnUeRnlso,902 +torch/include/torch/csrc/distributed/c10d/cuda/CUDAEventCache.hpp,sha256=q4lCWhFi99XcNnFdk9A9YhfUtJlQRfSmr6RykF4HvUs,998 +torch/include/torch/csrc/distributed/c10d/cuda/StreamBlock.hpp,sha256=rbq6FcheBGluDgn9NEU4-nuXN8ItfSgVhy8NBZb5C_k,1117 +torch/include/torch/csrc/distributed/c10d/cuda/utils.hpp,sha256=p-DYuAHZo9VjAbXM5FvxqTXSl47rPhPAiWttX5qNprs,484 +torch/include/torch/csrc/distributed/c10d/debug.h,sha256=ebhH_PUCoe7bakjer98f7OMMkrvIkefj3-jdzbwOb9Y,858 +torch/include/torch/csrc/distributed/c10d/default_comm_hooks.hpp,sha256=i9cBVCXiFfq8wAmCUMFnnG4lhvlWyoeaQP7B5GZotmQ,1999 +torch/include/torch/csrc/distributed/c10d/error.h,sha256=VVxbcGxJKtxoYWiji9uEhc3UwMonbEEQ7W5_zMvj_N0,1544 +torch/include/torch/csrc/distributed/c10d/exception.h,sha256=NDYECXJFZdExOQEW-vt3dXvUntTtgP-pvV-UP2uER8s,1600 +torch/include/torch/csrc/distributed/c10d/logger.hpp,sha256=tkHtVcM3BcBv3b4ZyrvuuYEyIo6m-9W2dEtgEWM2ZQM,6686 +torch/include/torch/csrc/distributed/c10d/logging.h,sha256=kQSwLqHtBQGg00Ow6Be3fg8HPUrHCHcAC7mLU_xF2-I,2084 +torch/include/torch/csrc/distributed/c10d/python_callback_work.hpp,sha256=6Gt8x8CATCK7aJiAFygtXfN9dx7RlINra7pJ77ibpeE,1030 +torch/include/torch/csrc/distributed/c10d/python_comm_hook.h,sha256=KZ2FDYZSeCvTUUdakbwM5TgK7MfS8NVfpundzm1-Zkw,1327 +torch/include/torch/csrc/distributed/c10d/quantization/quantization.h,sha256=Md-HOaJ9-DpVUffMQnBRJ812FMA9jX_JfFVvVhQ_LG4,709 +torch/include/torch/csrc/distributed/c10d/quantization/quantization_gpu.h,sha256=jtpDYbQ9RTOF5AeWmm9zi2e13NCIziUX_rvcHJRUl5E,711 +torch/include/torch/csrc/distributed/c10d/quantization/quantization_utils.h,sha256=S40yJ9Z3sN81eQkoCt1BPol-D41J8RRYI8m9WMmY1LU,1510 +torch/include/torch/csrc/distributed/c10d/reducer.hpp,sha256=BuojgLCbBYFghmafxHRC5hw_Ks1d53uhbKe1NJ78pYk,27238 +torch/include/torch/csrc/distributed/c10d/reducer_timer.hpp,sha256=TD4Lpxk-65H8hy9A1eDI60X8pX4U0zqc_EYLrsJrkC0,2638 +torch/include/torch/csrc/distributed/c10d/sequence_num.hpp,sha256=otUETjq8RGaGOOWeqsCjPAq-MrjJ48rNWSXtlcX563Q,1958 +torch/include/torch/csrc/distributed/c10d/socket.h,sha256=HpAenewC5doWDVOyzdVBkmrO-Q40dpnS_kAPzIMZGxM,2714 +torch/include/torch/csrc/distributed/c10d/socket_fmt.h,sha256=ugcrbys6fYksAsFKph3TptWa_b3MDR-0hqL34nZfgxs,956 +torch/include/torch/csrc/distributed/c10d/symm_mem/CUDASymmetricMemory.hpp,sha256=iU5JmU2pVOjL2YaAiTELvBPBlrH-hhBnA1RZpm6-YaY,5140 +torch/include/torch/csrc/distributed/c10d/symm_mem/CUDASymmetricMemoryTypes.hpp,sha256=VppiFczA3XetbXUOlgejQ21fnyHfsX_dvphy1_1Qoow,1602 +torch/include/torch/csrc/distributed/c10d/symm_mem/CUDASymmetricMemoryUtils.hpp,sha256=eZar06nd5Y50-NAlhQp7YTKDiKxwIMNrNomNnTWRC-4,3243 +torch/include/torch/csrc/distributed/c10d/symm_mem/DMAConnectivity.hpp,sha256=UA_H2-MUPXBRVjruzND7ieJ_h3MsgrzThydPDEYBu3M,1531 +torch/include/torch/csrc/distributed/c10d/symm_mem/NCCLSymmetricMemory.hpp,sha256=VXjJYvHlqNXyowbk7fOtgJBrKcfrpc1JgcFNbyq_SAk,1668 +torch/include/torch/csrc/distributed/c10d/symm_mem/SymmetricMemory.hpp,sha256=GYC-_x8EB6HiohJnA0yut-8jU41fhrp0qicsgij_FB8,8900 +torch/include/torch/csrc/distributed/c10d/symm_mem/env.hpp,sha256=-4nJOjv1iHpWQ8TU3lI2ZgWBcVTLHxHL9dSt1v2jgEk,669 +torch/include/torch/csrc/distributed/c10d/symm_mem/intra_node_comm.hpp,sha256=j17CAZFd8mBUo3OW-AWpgrLjK1u4UQfyJOQLWJ7iMhk,2639 +torch/include/torch/csrc/distributed/c10d/symm_mem/macros.hpp,sha256=9_ey3ngus8M1TwEJI1M10rGWKg1_xMrIbL33jrjv7cA,1343 +torch/include/torch/csrc/distributed/c10d/symm_mem/nccl_dev_cap.hpp,sha256=Tcty_i0pN42WdaE_UGveAFx2nJJLfTNMr7JOIuquhHU,770 +torch/include/torch/csrc/distributed/c10d/symm_mem/nccl_devcomm_manager.hpp,sha256=IjzTO5pm4Z3b9ROixckKIaxkW2cuCaYKVWsm59prf6I,10765 +torch/include/torch/csrc/distributed/c10d/symm_mem/nccl_extension.hpp,sha256=HfIyhjHlbT0QyUM4OUK3eBtJRjtzU084S46cU1Ze2JA,1271 +torch/include/torch/csrc/distributed/c10d/symm_mem/nvshmem_extension.hpp,sha256=wyX4rg9mxjkFbFE7fjvTjqzyeTeQBGkp26ATzqmWxuc,2682 +torch/include/torch/csrc/distributed/c10d/symm_mem/nvshmem_team_manager.hpp,sha256=eTkIWMsk2lctKuH9b6qKFTC1E8Cs4rWqbVDW4Un7EdI,6722 +torch/include/torch/csrc/distributed/python_placement.h,sha256=87wvbwBCZkwHvXHZ12w_RIc8nwlR5GgxZVNmuZQACLY,422 +torch/include/torch/csrc/distributed/rpc/agent_utils.h,sha256=-WmN5L_KWnHQPDVm8G8lnvyl8CVP3itL_71MxSoD930,1883 +torch/include/torch/csrc/distributed/rpc/message.h,sha256=4J0JYMLIRqpvzFsG8zwjv49Biok9AtJWttFcW60vj8M,7887 +torch/include/torch/csrc/distributed/rpc/metrics/RpcMetricsHandler.h,sha256=qBhyhGPXtUqD16i-UP-zGC-FcH3heCX4lnFEZJcC3fA,1822 +torch/include/torch/csrc/distributed/rpc/profiler/remote_profiler_manager.h,sha256=57nLwfYlLfg_4Q82xj6teBpsEI-VtpQmrHikpXOJsOo,2480 +torch/include/torch/csrc/distributed/rpc/profiler/server_process_global_profiler.h,sha256=4LyG-7M-7dnoS7AxoEJ2A_C6ibEFh7XHYgZFOPsx7u8,4653 +torch/include/torch/csrc/distributed/rpc/py_rref.h,sha256=19R-hMHZZ4wwDCYxoGQZGHBmaDSt4F7imiImR61r8QI,3219 +torch/include/torch/csrc/distributed/rpc/python_call.h,sha256=ib1wexw1L3-FANmVfR5z8k6k8bJWDX_LUDHhhc2SIPc,1065 +torch/include/torch/csrc/distributed/rpc/python_functions.h,sha256=udBVDNxsN7qlVKV6RYNWfga9atMEP64wz0B5h9WfVTk,2511 +torch/include/torch/csrc/distributed/rpc/python_remote_call.h,sha256=L6V5BiyzPhuj0W_-0CfbkUlJzcO2ZBbFW4c9mpMrvuQ,1532 +torch/include/torch/csrc/distributed/rpc/python_resp.h,sha256=Lm4TlIG9M46Qn7uXjSbtGHg5heXeKzFzn_Ccuo6lY_M,875 +torch/include/torch/csrc/distributed/rpc/python_rpc_handler.h,sha256=dWlsGBFT9zHB2Hr_BLxSlvM15xWDKjhNogVyjOH4ur4,5215 +torch/include/torch/csrc/distributed/rpc/request_callback.h,sha256=zJnOxrCIzxFWwuia5XvgvIL--WflFgHSPP337JzGcvk,1480 +torch/include/torch/csrc/distributed/rpc/request_callback_impl.h,sha256=ljQoxGJulsdA1jbSXmcKpAOA_fhbSItRx2wCLMAJ9NI,2336 +torch/include/torch/csrc/distributed/rpc/request_callback_no_python.h,sha256=y5wSLgvzWSU9p-8ZATnzUKbRliw29xWVccbSbpf341k,4158 +torch/include/torch/csrc/distributed/rpc/rpc.h,sha256=AZ88ciAR9Kpv7jQjNO9hWvrgFkTMuyssBTr1HaJjBQQ,418 +torch/include/torch/csrc/distributed/rpc/rpc_agent.h,sha256=mlgNrzyiR68jkMDOuMbFxURwYwGahAEtB3fyZXlNf80,13898 +torch/include/torch/csrc/distributed/rpc/rpc_command_base.h,sha256=v3MU4z486fYnio_EQ5lZmWz_l8dcEe6tD-vCq4jUJMU,932 +torch/include/torch/csrc/distributed/rpc/rref_context.h,sha256=bpPQk3p5wEayzyYiusB27j9zOFfNqeExlDOSToUIAjU,16033 +torch/include/torch/csrc/distributed/rpc/rref_impl.h,sha256=y-j6pPBLe85lWMkwrUSkvCGEczuMD7lnhkZrV1AUfEk,16707 +torch/include/torch/csrc/distributed/rpc/rref_proto.h,sha256=SWbK563pyfM4ErGDXn8csprLuyWMhKQDhBj3YACMZMk,5611 +torch/include/torch/csrc/distributed/rpc/script_call.h,sha256=6YqWqBglQVy9d6ekl0oaficMWr6RpsltysOUMwARXIM,2740 +torch/include/torch/csrc/distributed/rpc/script_remote_call.h,sha256=dmWKw9zMvhAr47cx4wUZfBdcKJ4v-fWOs35CY9KwCCY,1947 +torch/include/torch/csrc/distributed/rpc/script_resp.h,sha256=g-NlV9plQD0iRb4Oe-RdMcUROnVR1KVWxDiW3xi2REU,903 +torch/include/torch/csrc/distributed/rpc/tensorpipe_agent.h,sha256=uku_0SKx9IE_kVuCGltuNcLOVpI8t8u7jbDgwl0Lr_E,17894 +torch/include/torch/csrc/distributed/rpc/tensorpipe_utils.h,sha256=jiKArNodJh9qrWWApKos2cQFYYYwQlpdGXF-P9_0OJg,4995 +torch/include/torch/csrc/distributed/rpc/testing/faulty_tensorpipe_agent.h,sha256=knNysmZUsPfvEdMnV8n5RWVkxXH6yC4QEfBuOWUi79Y,4040 +torch/include/torch/csrc/distributed/rpc/testing/testing.h,sha256=9Z7ubO59UGH4QyrBqzqDuSR4LzuiVJzcV0teEMAa5s0,436 +torch/include/torch/csrc/distributed/rpc/torchscript_functions.h,sha256=h16g5rg-iUPYVNzmfovPMZlq4HJXf-yQZ-QKy4X5Dwo,1910 +torch/include/torch/csrc/distributed/rpc/types.h,sha256=3za2zUBLFSjbS4mMrpcWzfG2xPASKvCJz_mmRIv20jM,2464 +torch/include/torch/csrc/distributed/rpc/unpickled_python_call.h,sha256=lQy-y_rF5i3E1gAh_gH9byjIGMMoWFIi7qFMf2AZjN0,1642 +torch/include/torch/csrc/distributed/rpc/unpickled_python_remote_call.h,sha256=AVUQz2-ZGzECQgZl2Ocpvnw8blFvEIAfnc2KOpMnn_0,1461 +torch/include/torch/csrc/distributed/rpc/utils.h,sha256=2CGx4yhtg62GZHCmuPp2DAN0p-GTGA-6jQ7SpkqMBOM,4044 +torch/include/torch/csrc/dynamo/cache_entry.h,sha256=to35fpvYfvTCGY4eiHWFsq9s2HPZKX6cob4AbaKXM8o,3062 +torch/include/torch/csrc/dynamo/compiled_autograd.h,sha256=MtnR3UA_0TNLb9o0S3FtIxy6Nx2X88gnvrqbdDw70T0,51322 +torch/include/torch/csrc/dynamo/cpp_shim.h,sha256=PikXznGvcUJZ5GSh4D6Fs8Pc28kk6BUcB1WzUsDi22E,611 +torch/include/torch/csrc/dynamo/cpython_defs.h,sha256=Axt2oLc0fsLl5VqxCR-5rRyBLHhSpnt-LF8O-4dTYWA,1174 +torch/include/torch/csrc/dynamo/cpython_includes.h,sha256=d53ADPd7Sk_FzfNKvtgPigmzUWJ6H6AZpzu5SqZGkrs,1934 +torch/include/torch/csrc/dynamo/debug_macros.h,sha256=M6MYIcD0iNODFf9uia3dM4XLxiBs0b54HG4JgFh1zHk,3782 +torch/include/torch/csrc/dynamo/eval_frame.h,sha256=hfnluYBSDER9JJmyFq3j4FZHKmdCVDpI62E1ZsOZmjU,1831 +torch/include/torch/csrc/dynamo/eval_frame_cpp.h,sha256=d7NPXFHNt0w0aNoG4qUz9-Q_9swuszwI0gn0Ok7NGNQ,1430 +torch/include/torch/csrc/dynamo/extra_state.h,sha256=UoFwBzF-jO-p_9qFsFHZAK9fTgJtnRnsdnwb3jRy2zo,6682 +torch/include/torch/csrc/dynamo/framelocals_mapping.h,sha256=1wY8fe28hVm3r1oYVnVtPGWQeJdrim7wP1XuuzpKPPQ,3035 +torch/include/torch/csrc/dynamo/guards.h,sha256=V4h9-BvLVxq1Vp9SBERm1p8py73LM89m22TMsM7LkMk,4202 +torch/include/torch/csrc/dynamo/init.h,sha256=2zowU12pO7ujkPnOise78YFjJq85AilpavNxRc_Fe3g,441 +torch/include/torch/csrc/dynamo/python_compiled_autograd.h,sha256=pnKkQpXyekQfk5B4vtzCgxNWHUjKgwp-4J2lPrOfpyg,469 +torch/include/torch/csrc/dynamo/stackref_bridge.h,sha256=VDxP9T4sWOW0QHU3HAWhvX8LV5dMX0PiXbimAa_Dbgo,618 +torch/include/torch/csrc/dynamo/utils.h,sha256=QhXCgdMkEzSha-lH8EJKO7NnsKg5OVEaWu_gWG8X9do,772 +torch/include/torch/csrc/export/example_upgraders.h,sha256=-mACzEc9kbq3weBPH9VqyGkZPjRdWUt374q6Z3SnuUM,761 +torch/include/torch/csrc/export/pt2_archive_constants.h,sha256=Cyyy9SEmMFmOfl310PkG2rvteCBxXzac27YPyTTcF28,5089 +torch/include/torch/csrc/export/pybind.h,sha256=fI_Sphc3RTmoEAd8w5bUsVyY1ZFBaJTvF6mQ_7ls-Q4,396 +torch/include/torch/csrc/export/upgrader.h,sha256=Hpg96dnZyxdzYIfRUblO2D_dwbmVmsIdQ80VbYLD8qk,5603 +torch/include/torch/csrc/functionalization/Module.h,sha256=5ZEw4c7qn1PtmLTX7QH_bjxWsQdgoAZvpUgUeUwmcHE,1308 +torch/include/torch/csrc/functorch/init.h,sha256=oGmErAJcLTYIjo-LgFLpDI934rG-kDnH22cu0jcoKFE,360 +torch/include/torch/csrc/fx/node.h,sha256=82SLiN-PrEtXKlVBK2sECGpVi7SbFbTpLUPn4_LXcu8,384 +torch/include/torch/csrc/inductor/aoti_eager/kernel_holder.h,sha256=cLB3oS4-UnP5kK5mvWlW1gv0gdXuWRl_LAywuwP05Wc,4995 +torch/include/torch/csrc/inductor/aoti_eager/kernel_meta_info.h,sha256=VRE8Nx4ZG4HsKXOymZ4YZsp6-xDXNxOBPtAnhfUp2hs,6396 +torch/include/torch/csrc/inductor/aoti_include/array_ref.h,sha256=SFBN5XNKtGL8M4EOlZh4wKWDEfeFawPurJrz7Q8TuyQ,555 +torch/include/torch/csrc/inductor/aoti_include/common.h,sha256=pk3x6OttsruIOjeDW1AfSKAzTewv0PV84F_6JhIMK3g,670 +torch/include/torch/csrc/inductor/aoti_include/cpu.h,sha256=cxf5uxsTPXTmzx9Tal01sNbQMLpGIV71OQsLQAMtFzU,386 +torch/include/torch/csrc/inductor/aoti_include/cuda.h,sha256=e5T6P_3cdnOAKaSOpNv8JXHp2pNfCsDGqNNvqjv2kdo,387 +torch/include/torch/csrc/inductor/aoti_include/mps.h,sha256=tZd4iKD9EXjrnZ5y_umoJ1rX3wMCbN1F7stgzTniRSg,386 +torch/include/torch/csrc/inductor/aoti_include/xpu.h,sha256=7zsKLgDuFFnmOpsQ18ZNC28pb8-aKaW2b9TnJeEQDv8,386 +torch/include/torch/csrc/inductor/aoti_package/model_package_loader.h,sha256=SCBejTgGLIgcsYctnHOPNRbyP6FrMl3AZz66IhqWjFs,2129 +torch/include/torch/csrc/inductor/aoti_package/pybind.h,sha256=-QbSC0FRBUlK06XOsjhMkqaoLotj8abv4QS6AgEu4nk,403 +torch/include/torch/csrc/inductor/aoti_runner/model_container_runner.h,sha256=GZdHfXt6I4hI154I5TJO76v09zVEnvI66IJW39lUBUM,5837 +torch/include/torch/csrc/inductor/aoti_runner/model_container_runner_cpu.h,sha256=z6F1PWz7f0CK5aZSNnuy24o_5x-zHLDtkD8AFrQ5l9k,733 +torch/include/torch/csrc/inductor/aoti_runner/model_container_runner_cuda.h,sha256=N-sbQlgKK07d01VyelmnwKoTfiufb-R_hpzeFqHV_U8,1385 +torch/include/torch/csrc/inductor/aoti_runner/model_container_runner_mps.h,sha256=Q8DXtywT5LCB62h1PjXAg2RGvhIafrROAncYfWpBURs,710 +torch/include/torch/csrc/inductor/aoti_runner/model_container_runner_xpu.h,sha256=JrBydhSlEk9MOITI33NQg_Yf2hi8dBepGPUlnIoU64k,1470 +torch/include/torch/csrc/inductor/aoti_runner/pybind.h,sha256=sllydAFs1uLRcUJzr6HhfDKdFR-U6_gdquQWoVLQL30,402 +torch/include/torch/csrc/inductor/aoti_runtime/arrayref_tensor.h,sha256=IuuybEMszMIr5k-OiQmJH5u7wtrQB_hlbfyngJSqMDM,6535 +torch/include/torch/csrc/inductor/aoti_runtime/arrayref_tensor_conversion.h,sha256=nlpKJgBu60U_duWCvEOvv8fj3Re-lM7yAWxJZXQzXHQ,3629 +torch/include/torch/csrc/inductor/aoti_runtime/constant_type.h,sha256=kw7DVntwNZI20Tx0yksFG7tZPHrpJuN7gZmqF09LHl4,781 +torch/include/torch/csrc/inductor/aoti_runtime/device_utils.h,sha256=c1H1BS8sIFDLh3UUhBQRCxz7vHykMXVebnYn9q510LI,2574 +torch/include/torch/csrc/inductor/aoti_runtime/interface.h,sha256=RjIM6ILH9OPm2iOiYNAO3lffIZOamb7xiCbyswbmJaM,14231 +torch/include/torch/csrc/inductor/aoti_runtime/kernel_context_tls.h,sha256=0qROm7sfcfo80fxSatPjddnUxZX0YbFCCkvpBO2qzUo,4229 +torch/include/torch/csrc/inductor/aoti_runtime/mini_array_ref.h,sha256=5DbABsGXNt8dA4tLwQRDqUq4ccRlXDXzwXjdxAbsB7k,4980 +torch/include/torch/csrc/inductor/aoti_runtime/model.h,sha256=0crcjSzh8t3hYaOqlKZZMmIQc8jwTdpkIaf9jKl_V8M,2511 +torch/include/torch/csrc/inductor/aoti_runtime/model_base.h,sha256=Q0I_vw0n5bJi0diej1Oa90EMr_NkK0xo3bguK-cfSAM,32684 +torch/include/torch/csrc/inductor/aoti_runtime/model_container.h,sha256=xkSWN-EdioaP7sxO_XE3fAAhL3SVnWkuz6TefstA1Bo,30143 +torch/include/torch/csrc/inductor/aoti_runtime/scalar_to_tensor.h,sha256=1_eNE1F_kl-XWpwsgc33m1p07_lNK1iasp1cRVQt5NI,1844 +torch/include/torch/csrc/inductor/aoti_runtime/sycl_runtime_wrappers.h,sha256=aPA6XbVCaa3AXHFGeJMfYbwv6umbP9BG_LkJsD7Vuqg,6549 +torch/include/torch/csrc/inductor/aoti_runtime/thread_local.h,sha256=kQpIjL_9JLeu-B5C2_PYsv-BhIh8NueCEVupbBdCJyU,4606 +torch/include/torch/csrc/inductor/aoti_runtime/utils.h,sha256=EWudxCMNKZgkYcw_QIc_XWMFBMl2wsGYLOQe_fhzHD4,14357 +torch/include/torch/csrc/inductor/aoti_runtime/utils_cuda.h,sha256=iP8TDGVTQKcAQH5GscGF21TcRPiUggE887Pl_j_n5i8,2079 +torch/include/torch/csrc/inductor/aoti_runtime/utils_xpu.h,sha256=OxYab5unrLFCiIAbqy7iZf5e0_p6IF-YY7NU1VEEHlk,1969 +torch/include/torch/csrc/inductor/aoti_torch/c/macros.h,sha256=dbD2szZ8zECHPYsKCOC8lT4WJj7CnbkKvlGrsBmUl5w,2321 +torch/include/torch/csrc/inductor/aoti_torch/c/shim.h,sha256=Wj8WdV3v2r872yamiwWg6DlxFh5vdgjBxkhy98mFWGM,26047 +torch/include/torch/csrc/inductor/aoti_torch/c/shim_cpu.h,sha256=tx_K_GPKYJ2_erq5WfWx4Cj_U__Ze28tvea1kvPBrrI,7490 +torch/include/torch/csrc/inductor/aoti_torch/c/shim_deprecated.h,sha256=84fTR6qD0UVNXY9ammn7K1Fp5Rj9mvKHjCkWtIOEmCg,6551 +torch/include/torch/csrc/inductor/aoti_torch/c/shim_mps.h,sha256=1zx5xWfQsLU7HfIVMfzotvFDJmJjAlqWVHcnAavB04Y,3189 +torch/include/torch/csrc/inductor/aoti_torch/c/shim_xpu.h,sha256=Psqiql3DOXCZaXLv7GwoKCcQi4B4Ihg4t49PvH8YXCY,5982 +torch/include/torch/csrc/inductor/aoti_torch/generated/c_shim_aten.h,sha256=xG_AhAJbz_mAHwzAMSu0uhcgFD98KUfUrmdHoQ_j6zw,1888 +torch/include/torch/csrc/inductor/aoti_torch/generated/c_shim_cpu.h,sha256=E42uHG7p1YzJCCLHr48TnemLPLqKn04a--yWqrBh8WU,32605 +torch/include/torch/csrc/inductor/aoti_torch/generated/c_shim_cuda.h,sha256=LQdtcYdUO3vHIW2QCFVpaI1vntYkIhKBh2VKPzR-8Yg,40709 +torch/include/torch/csrc/inductor/aoti_torch/generated/c_shim_mps.h,sha256=VCJRZrNRnzpJkpBMYwvGzSnPOleBsv3Pb9M_DM8-o0U,27301 +torch/include/torch/csrc/inductor/aoti_torch/generated/c_shim_xpu.h,sha256=LfngaHjbEr5-mTAuHwlW1fgWE_iFh-0RByjgR3Gxs-A,14788 +torch/include/torch/csrc/inductor/aoti_torch/generated_enum_converters.h,sha256=9Soz7Yzln75OEmVwfVWdy91867ZHgqvFBfS0Qt-Ne8s,4624 +torch/include/torch/csrc/inductor/aoti_torch/mkldnn_tensor.h,sha256=ZdeZ09ReNHprPAM-vXNUXrFL3uupfCbuwVaOQS7ivLs,625 +torch/include/torch/csrc/inductor/aoti_torch/oss_proxy_executor.h,sha256=P_YnlpyPprSTfrsebAjxnoiXW4irLumVbKISuEaaAu4,4893 +torch/include/torch/csrc/inductor/aoti_torch/proxy_executor.h,sha256=qIXJIglBUusFnK8VloIMmFur3Z0j8VHzXjVhcHSWxdU,1111 +torch/include/torch/csrc/inductor/aoti_torch/tensor_converter.h,sha256=WdeIfmMjhpTrqPXmWQ09BKeBKJIZ53UIobYOzefW3nk,1207 +torch/include/torch/csrc/inductor/aoti_torch/utils.h,sha256=NkLCyR_WcJo1l4IHElRaIv9w8QFQKmaTOT8OM0vGa-o,7825 +torch/include/torch/csrc/inductor/array_ref_impl.h,sha256=r424waXg_g_yI3xTAXohMc4yxGWqAEChQCtm6zGbVZw,3260 +torch/include/torch/csrc/inductor/cpp_prefix.h,sha256=x1eojnd8jJsXHUVhiNlHBsByfOoNuIAOcU-KvlGuIdc,39688 +torch/include/torch/csrc/inductor/cpp_wrapper/array_ref.h,sha256=XKMFQCveJevHKVCHmyiepJa2JBZTCMFrU0kE8lJmsnE,554 +torch/include/torch/csrc/inductor/cpp_wrapper/common.h,sha256=3ivk7VbPOyMp_OkR85OwrzrHm9b8zNik_ID5Coepx5Y,2688 +torch/include/torch/csrc/inductor/cpp_wrapper/cpu.h,sha256=DsDdKA8bpepv9yp-59zY3HoQa55zmmdgZtRS4y4JXuU,385 +torch/include/torch/csrc/inductor/cpp_wrapper/cuda.h,sha256=rp2P98HM-V1bA6Jqb-ya1P9EsEbdXX35QVjlCLl1bjw,599 +torch/include/torch/csrc/inductor/cpp_wrapper/device_internal/cpu.h,sha256=rOgmA6ZaUHX1Zvj-Tr3qj8Oc_8BYCMmXPE5GAZhj9ZQ,333 +torch/include/torch/csrc/inductor/cpp_wrapper/device_internal/cuda.h,sha256=2x0n7z6ZZ1t0Bo5xEhcyCnoaH0GsvweIfR0fBN_oXZ0,391 +torch/include/torch/csrc/inductor/cpp_wrapper/device_internal/mps.h,sha256=wRwIY3fjx11KMZZuPGffr3sFJilZ39DDGJ9M4UV5_3w,388 +torch/include/torch/csrc/inductor/cpp_wrapper/device_internal/xpu.h,sha256=SulOHp5rrEkUIyWH0wjhPK1ezDtmiX00u3tAnusq1XQ,457 +torch/include/torch/csrc/inductor/cpp_wrapper/lazy_triton_compile.h,sha256=vI4Qw9bqUQ97NU0Q6xbJnZXg_oKNJaLpMy2lFgU9OFo,7959 +torch/include/torch/csrc/inductor/cpp_wrapper/mps.h,sha256=1BbioeTM6zhVciGbOrNx2SHBn7tw_9-z6bBV-QZ8WqA,385 +torch/include/torch/csrc/inductor/cpp_wrapper/xpu.h,sha256=wStJ3gsDAGB6qcUl_X0ihO9pW6noIi9h04THwMJLEO4,450 +torch/include/torch/csrc/inductor/inductor_ops.h,sha256=lln5wsSTK3alK8h3ooWn5VEjKM4m3IewPDdzw9_Xc0w,1349 +torch/include/torch/csrc/inductor/static_launcher/cuda.h,sha256=qw5_d7GMXzu5vomhEkCOmwGNzX5MjU-uwCAyhFQC9x0,450 +torch/include/torch/csrc/inductor/static_launcher/xpu.h,sha256=ONDk0ocLnY-EgVdgqSnO1OxWjMpK-k-f2eOAwIgW27Y,382 +torch/include/torch/csrc/instruction_counter/Module.h,sha256=Ml9ZG1I-Y6RPLlwR-rnjGTsz77UfWljboJcIEhfjgRw,425 +torch/include/torch/csrc/itt.h,sha256=Hh_KZ49HvlacfiBSGHKCIOxr8lJ7gwwAYpFMGxyvgTI,435 +torch/include/torch/csrc/itt_wrapper.h,sha256=AiJkfyZXHdf_XHd5s6hkf4dxtDYCpUS14iFxmzKuSvA,574 +torch/include/torch/csrc/jit/api/compilation_unit.h,sha256=hUIkZcGmufGNvFGijvHyETh9F7G6Rw7Xh6YJ3t2W-ho,11950 +torch/include/torch/csrc/jit/api/function_impl.h,sha256=4yKX3Evd3u0UwmzAM2Cad1mpScm9JtlNfJE6ri36waY,5995 +torch/include/torch/csrc/jit/api/method.h,sha256=eHbmuglj-sEN05sX-njsaznd-xnGRsV06NyD8CkD6vY,2676 +torch/include/torch/csrc/jit/api/module.h,sha256=A-UjaUfOofIqr71ps4ImjsqEVMWKh5DAcrurB1NUcXA,23751 +torch/include/torch/csrc/jit/api/object.h,sha256=26RTyq72lWmX5CFc5jC3ZTpd5Mc8itPqGyeT0FmaBpo,6337 +torch/include/torch/csrc/jit/backends/backend.h,sha256=Jp65JTXDs4J2ThN_jLXjZZnSL7zK6VghpFSnkqFw9s8,4086 +torch/include/torch/csrc/jit/backends/backend_debug_handler.h,sha256=_QT_zsuAF_buHIuago5qA2sNd8REDXq8ylIALk8gM2s,6586 +torch/include/torch/csrc/jit/backends/backend_debug_info.h,sha256=1XFkmDPhdGlyjLpFLx0x_FIIIcnMw32BZk8gg7S-4j4,2567 +torch/include/torch/csrc/jit/backends/backend_detail.h,sha256=wdFD4DqTtzpkP9gDSiv-7UMirUM6wDDGB7H-HR1QPwY,1333 +torch/include/torch/csrc/jit/backends/backend_exception.h,sha256=zLusJ6DuLALB6i6bVPoGJ5uJXa0AynE1t1wRpEb2ajE,2390 +torch/include/torch/csrc/jit/backends/backend_init.h,sha256=RAFmi0TqARbl-ubYaKTCIL8TNqAGm1qFMPCY3Xx9L30,506 +torch/include/torch/csrc/jit/backends/backend_interface.h,sha256=MX68QIi9QUduProJUDhmZRYrI0v70iFW6T-aIoG_l1o,1413 +torch/include/torch/csrc/jit/backends/backend_preprocess.h,sha256=VqNFjRIHvSl7dzAUIL7By46cYMTxFH2jXRhbK62PHYM,667 +torch/include/torch/csrc/jit/backends/backend_resolver.h,sha256=CYBglxD9roKA4sfXp_54q4ruhOKFu16OWd3Lta8dWGw,506 +torch/include/torch/csrc/jit/backends/coreml/cpp/context.h,sha256=tethBGnuL4WyugUIwuYJ0enleu3p0ayUni8k8fzPNb4,692 +torch/include/torch/csrc/jit/backends/coreml/objc/PTMCoreMLCompiler.h,sha256=reCeVEraZWxNme4d0cnKMjywXuSfMWGE6ZSgTkjEBBc,787 +torch/include/torch/csrc/jit/backends/coreml/objc/PTMCoreMLExecutor.h,sha256=xwIlHZRCswsW26xZ7Ql_fjUTjLBt42ZfNlNrJzf9BuM,668 +torch/include/torch/csrc/jit/backends/coreml/objc/PTMCoreMLFeatureProvider.h,sha256=DkokTYTWbUAlpImXcjhqy7a11H7A5Ty0hJ4fxXmMjtY,604 +torch/include/torch/csrc/jit/backends/coreml/objc/PTMCoreMLModelWrapper.h,sha256=wHqsv6LISy7Xy9B6SkOQQMdSdWBuQIypvi_SHRjpSGA,1176 +torch/include/torch/csrc/jit/backends/coreml/objc/PTMCoreMLTensorSpec.h,sha256=5gsPmrVB6h5S29xNnRgVWAiYrwrKK-51ArG_vJ5J5Mg,902 +torch/include/torch/csrc/jit/backends/xnnpack/compiler/xnn_compiler.h,sha256=ADmstNgU9OkZ5aV11bfLXfUexBpDMyTAIhtzz7o03IY,1036 +torch/include/torch/csrc/jit/backends/xnnpack/executor/xnn_executor.h,sha256=iuAnIUo0qIJ1kY9Uuvj5Nmh2fPzRlvrKcjTdE3EE7Tw,1821 +torch/include/torch/csrc/jit/backends/xnnpack/serialization/serializer.h,sha256=tEkmXQjr76j9w_xXGTJDQf6oqeNXGm11EJ-fhVUq904,3033 +torch/include/torch/csrc/jit/backends/xnnpack/xnnpack_graph_builder.h,sha256=2WQ7XQcCZvv619Q-3Lc4aKqwhJEU9eAeOnSz0-C3oZY,3489 +torch/include/torch/csrc/jit/codegen/cuda/interface.h,sha256=n_0AGEGG0qhy6rCnWJpRk3NwlY7fWXNmxSnms0BrWzY,2118 +torch/include/torch/csrc/jit/codegen/fuser/arg_spec.h,sha256=kEbcFpRmYoos45ISwGCEj7xMeR5yTrTqtRVzkVa-22k,1607 +torch/include/torch/csrc/jit/codegen/fuser/codegen.h,sha256=iUhuS0ExBWQ3dJgW3rXixOfs9wr_Hv4W8_1wBVTB4Jk,999 +torch/include/torch/csrc/jit/codegen/fuser/compiler.h,sha256=XlK31j1-g_YBuW4eNveTsIJhsfLhfS5S75BwtV1-5gY,2088 +torch/include/torch/csrc/jit/codegen/fuser/cpu/fused_kernel.h,sha256=4GspYxscZ_D7qaNhqpb3vOdrp8zOk4kDJrwTftge9SQ,1253 +torch/include/torch/csrc/jit/codegen/fuser/cpu/resource_strings.h,sha256=-mHwdYh9bS9Qp0Rjwjhn1slJ5Dsba7WpaoSyEOnNr1g,2532 +torch/include/torch/csrc/jit/codegen/fuser/cpu/temp_file.h,sha256=fjVmQwk3FzmMZaR-3uVOAWBUnS0Karbb2SRRNFdvuQk,3145 +torch/include/torch/csrc/jit/codegen/fuser/cuda/fused_kernel.h,sha256=QYz6Vg2SZAolMNCXOm97jCKznd5YVGxi1jUf_rKaAfc,1765 +torch/include/torch/csrc/jit/codegen/fuser/cuda/resource_strings.h,sha256=uWSW1FCXRu-v37o5IqTmsXcUkXPlFMJSOrZLKXiueSg,11175 +torch/include/torch/csrc/jit/codegen/fuser/executor.h,sha256=B7r0NLU-F8utHGO8CRIuCjp204lK1Ch8_bgGgTU3Rws,754 +torch/include/torch/csrc/jit/codegen/fuser/fallback.h,sha256=8caRHyCb87UPKCrvhOIiQ4rwfWYeut2LUL2qHWrxIE0,428 +torch/include/torch/csrc/jit/codegen/fuser/fused_kernel.h,sha256=aisFlx4O0Ur4aqwSMKKeexzBtMU7cz_ZnBJJbL9TCkc,3559 +torch/include/torch/csrc/jit/codegen/fuser/interface.h,sha256=S-tgQYiHs8Yq8aQ6bS45VKTkY9dwS1TZmLEM8O-OSEA,1976 +torch/include/torch/csrc/jit/codegen/fuser/kernel_cache.h,sha256=RRzEWG3xtahznaAG4DjhdrbmXY1Jp6Ndmv8T_hopvb0,1248 +torch/include/torch/csrc/jit/codegen/fuser/kernel_spec.h,sha256=BivQtrvupHG9BAEjCZCXrH71hc_zuojVtWLUjZKh_LA,4655 +torch/include/torch/csrc/jit/codegen/fuser/partition_desc.h,sha256=IddHbNKQdgPgY4ESijYgYkoPamv5Rl5l0KQpgyqU5Bk,2009 +torch/include/torch/csrc/jit/codegen/fuser/tensor_desc.h,sha256=ATarPR55x29jHUU-RznxLnDmHiIax1Hwo35ymAAfT1w,2955 +torch/include/torch/csrc/jit/codegen/fuser/tensor_info.h,sha256=dzENGXbxvP1X-sHViShL8mjKYCtZyCCY9TAaI7EWAoE,790 +torch/include/torch/csrc/jit/codegen/onednn/LlgaTensorImpl.h,sha256=PzwwFiuS1WR8uguOyLfScgiTq8rPY4qwyJwlu6mkZNQ,7944 +torch/include/torch/csrc/jit/codegen/onednn/decompose_silu.h,sha256=p_G-mIPLgMY8jSGFSk0x3Lku8FaVjyluOluZUlo1On4,442 +torch/include/torch/csrc/jit/codegen/onednn/defer_size_check.h,sha256=pE1__qzRiyQxN2cJbvvqWFWKjWPYBo790Ledlv98MhY,436 +torch/include/torch/csrc/jit/codegen/onednn/graph_fuser.h,sha256=CR2zC1oIpjsRncDjPGgK6SeQR2ZGVGG1iuja1UKwiqY,1470 +torch/include/torch/csrc/jit/codegen/onednn/graph_helper.h,sha256=LGewDjvOWFT38EcIBi_JOnHV_I9zOQcBwzFwgcGC7yc,2718 +torch/include/torch/csrc/jit/codegen/onednn/guard_shape.h,sha256=j20gjfQhLQYJqfBBe8L4AnpzjfP7gFbSkd1Bu5DxAg8,438 +torch/include/torch/csrc/jit/codegen/onednn/interface.h,sha256=h47yQa2csCXocYQVkvTHsPb7iyJJjEnqQDfvHc3bXdU,1652 +torch/include/torch/csrc/jit/codegen/onednn/kernel.h,sha256=RDURTHKr-SJMSACT3S2pV2RnC-8P4yCU-V3cu6U1b2s,2949 +torch/include/torch/csrc/jit/codegen/onednn/layout_propagation.h,sha256=A-K9-r745pQok43Myo_xHK9kmxsf5sut9U8ZolAykvc,443 +torch/include/torch/csrc/jit/codegen/onednn/operator.h,sha256=vX10EMXfm62FHTWVTb284rQGQF7vpdeiznLJmkFgPb0,4176 +torch/include/torch/csrc/jit/codegen/onednn/prepare_binary.h,sha256=u2XAd1M6J7MiGAqN_QH8ktm0Y_ppCJ89YPAOEmnqFC0,753 +torch/include/torch/csrc/jit/cuda/cuda.h,sha256=dRaA7N_y1gPx6TIxr-DgVimq5hrhKrsXwWrKxRYx_4s,5411 +torch/include/torch/csrc/jit/frontend/builtin_functions.h,sha256=IZBvfhC3BrCaGLAUUVWmqchlP7aNvLonuPTxlBskFXY,469 +torch/include/torch/csrc/jit/frontend/canonicalize_modified_loop.h,sha256=jsuIx-jMYBiRGMHonSgVsKio2zrmbgjVRqeDiqOVxqw,541 +torch/include/torch/csrc/jit/frontend/concrete_module_type.h,sha256=GCxfEpftkhM8Z1sP5vTssOJ3eIg-ZViluiZEPmZkQZk,9291 +torch/include/torch/csrc/jit/frontend/convert_to_ssa.h,sha256=3zWfz9auCqI1QD7FxwBBjL2_UMe6E3p3G4_A90JG0J4,556 +torch/include/torch/csrc/jit/frontend/edit_distance.h,sha256=kBIcPiahPtaKkOxWxALNLIi6fjke52sFJqNoII-lmbE,483 +torch/include/torch/csrc/jit/frontend/error_report.h,sha256=NUq0IuGQRclkqoYl683WnEpv5aIU79t2XtQzBMR_sEI,2494 +torch/include/torch/csrc/jit/frontend/exit_transforms.h,sha256=AHUnyTGs7X9qs68WAce4PaeNaYnZU-ZiUXq9N6n4p-c,447 +torch/include/torch/csrc/jit/frontend/function_schema_parser.h,sha256=A2AeqcgaCJv99Meo_KUk7IdUEvd09tdJkDExivRiij8,1058 +torch/include/torch/csrc/jit/frontend/inline_loop_condition.h,sha256=4tqiJQvvtb7knAxeGN7_2XV47pJwoTZO2qLqPpw4GS0,581 +torch/include/torch/csrc/jit/frontend/ir_emitter.h,sha256=0sEUfd9NIyIK_zS4st3_79jowETO89MCwy0-fPnIRCU,770 +torch/include/torch/csrc/jit/frontend/lexer.h,sha256=ybWb6X5xGC4OwghexEU_fVM_tnGF5QnmPGbKfTq4seU,19212 +torch/include/torch/csrc/jit/frontend/mini_environment.h,sha256=u87AA6rHKGLu_MNWaKLtkIkjb_IIqytdpI24T5Qxeug,1629 +torch/include/torch/csrc/jit/frontend/name_mangler.h,sha256=PRM_e4MlsIKA1wowjkp5vHEGNBTOaB0X5K85wHKKszA,884 +torch/include/torch/csrc/jit/frontend/parse_string_literal.h,sha256=Fznb2iPJ4zUS5wUiMAjIY6q4O91g_VyE93DL5sdDbuw,2548 +torch/include/torch/csrc/jit/frontend/parser.h,sha256=_VFpRbn8WXPLBhYDz70syzCXeSXU0SRYAfe8ZaKvvhI,903 +torch/include/torch/csrc/jit/frontend/parser_constants.h,sha256=0oL1Mg44XC6hXBAUVj99yv1wylrXakght95EY8u7aHw,405 +torch/include/torch/csrc/jit/frontend/resolver.h,sha256=nHTt6zBkmJoMOlSKazSzRYwWajRE-DE-d50_vInSpOQ,2211 +torch/include/torch/csrc/jit/frontend/schema_matching.h,sha256=5duuKpN_Iu8dwscoEsjSlxNmAshtYyyLEqMtuQEYwrI,2362 +torch/include/torch/csrc/jit/frontend/schema_type_parser.h,sha256=Vq5C0npJSoWJYb-qJ2KlbNIgqrvLphPdOUKpM2Ruix4,1657 +torch/include/torch/csrc/jit/frontend/script_type_parser.h,sha256=J0NaC5d95lNulX8d1gN7A94c2U44hrh0OI85Oo83KTI,1834 +torch/include/torch/csrc/jit/frontend/source_range.h,sha256=2RKUq0fZGS76QMDILHOltvJjxLE1dGS5C7IWc8oRJ0M,17167 +torch/include/torch/csrc/jit/frontend/source_ref.h,sha256=62PZejPu4EM0IIIzvCc0CLbi-M--HGcAfpGXtgKvYVo,1542 +torch/include/torch/csrc/jit/frontend/strtod.h,sha256=zBQEJYtFWY-Fvdb6nsS13gggDCnZo8UFQDxv90QZv4M,470 +torch/include/torch/csrc/jit/frontend/sugared_value.h,sha256=I4HFJFg5JjLT3lGlE1M5pOKH2ROrg9ArDwIoqANJbRE,28516 +torch/include/torch/csrc/jit/frontend/tracer.h,sha256=-wUprSpD2qxaVJuMOsYFeOpZH15_GqWtJGREqucHsI0,13055 +torch/include/torch/csrc/jit/frontend/tree.h,sha256=INdyEOZij5mHcPQ0dA7weulkHlxPpH4EfcLipDEUDdg,6807 +torch/include/torch/csrc/jit/frontend/tree_views.h,sha256=jUVuM_ORa1Fw2JpabQ437wr9bUTbnKjrBJ1SHWRAdXg,37454 +torch/include/torch/csrc/jit/frontend/versioned_symbols.h,sha256=QQs29ujosMvluxrGO2hAW7BFNDKEk2d9F_nTO3Lmmig,849 +torch/include/torch/csrc/jit/ir/alias_analysis.h,sha256=aW6ia8q2mJjNqzru3uhzz8YWxa2EUL69KDjhDVbUTvM,14545 +torch/include/torch/csrc/jit/ir/attributes.h,sha256=aI-bBxIrJVjRBKMvsHbqeQNPVLBlVKzqMMZ2gNNacsA,5048 +torch/include/torch/csrc/jit/ir/constants.h,sha256=6fLeQ2WAKA5g2gw8Zs-R7XkAXkXk4YXgYUcDwUohf5Y,2262 +torch/include/torch/csrc/jit/ir/graph_node_list.h,sha256=rgOcMU9i8Cl87ZuhS0sSSjeKVHx1lDbAercWE9y7NS0,6608 +torch/include/torch/csrc/jit/ir/graph_utils.h,sha256=f7t71HGhSNU94EvgZvL67Ns4uelB56jQHlK9Nfh0xW0,758 +torch/include/torch/csrc/jit/ir/ir.h,sha256=LUSxB6I-STtgTmW3jX54Kao3GxSjN9o4U8Kw_dWhkzY,54043 +torch/include/torch/csrc/jit/ir/ir_views.h,sha256=Wb8vo6TOqKNyz9JpfZhOxT_EtBCwK5eI2XZwqp8JsCI,4878 +torch/include/torch/csrc/jit/ir/irparser.h,sha256=QR383rzKoILJH2nvRV99BfSLecPlQ0JmNhRUUkdSBY4,1354 +torch/include/torch/csrc/jit/ir/named_value.h,sha256=82WrC4LrBN4TKGqdHMEXgO-n50yfYiUtR2h-Bg30Ny4,2650 +torch/include/torch/csrc/jit/ir/node_hashing.h,sha256=DR0v95_n2vYSlFBwPiJ8ITtCCexa-Yl8QFI3stx6mjM,519 +torch/include/torch/csrc/jit/ir/scope.h,sha256=2kze-TeAMP3hBFE-kK8jyJSYeHR9OeTY7UhFG262FD4,7412 +torch/include/torch/csrc/jit/ir/subgraph_matcher.h,sha256=WImU1qLKIOT_5C7nMn58JP_v5ApuyrZN-uSMEysC4BU,3381 +torch/include/torch/csrc/jit/ir/type_hashing.h,sha256=8TAouNEGWvMPma9IVod1oqIYHuIggQaFsq8_Zq71yYQ,688 +torch/include/torch/csrc/jit/jit_log.h,sha256=syz7hm-O9pgJaPrw4-5q9GNwPCqfNoR6-idW4okMeOg,5060 +torch/include/torch/csrc/jit/jit_opt_limit.h,sha256=l-n0og_7nXcLMg_ae44PbLXrziAZY1ISo3PmTzCVsww,1635 +torch/include/torch/csrc/jit/mobile/code.h,sha256=E-rv5f8zS38MQixts0_MOe7Ur3sGHLM0Hih0rMcgj5I,1332 +torch/include/torch/csrc/jit/mobile/compatibility/backport.h,sha256=my50F4l06bIP3ScMBpCyHLLkzKVI6R5Teno6DO5MVGw,893 +torch/include/torch/csrc/jit/mobile/compatibility/backport_manager.h,sha256=RiXxwVhpwUkte-nxkn5-ChdWNlo21NliH1XFW25R-Rk,1413 +torch/include/torch/csrc/jit/mobile/compatibility/model_compatibility.h,sha256=dywbWpJUEvz_CiepxNHFc0oATDKtWOJwblheeOvIaFU,3864 +torch/include/torch/csrc/jit/mobile/compatibility/runtime_compatibility.h,sha256=z4MRUqp0Zv4ldMRb6BODecdKaoPZvB8MNeMtwces6P8,1450 +torch/include/torch/csrc/jit/mobile/debug_info.h,sha256=zWiX3q7hHzoNvtlkyeqhm5wi5o-VPa9W41Cb7W3DQ74,2460 +torch/include/torch/csrc/jit/mobile/file_format.h,sha256=dhaybsAFdjlU06j0_UY4SCiV4WUl6lJhG_q-akFl6oo,6925 +torch/include/torch/csrc/jit/mobile/flatbuffer_loader.h,sha256=ZemcyJvz1xrViIzqyU9FOpEFKSfs0Zj5KLZFizGbwOk,5028 +torch/include/torch/csrc/jit/mobile/frame.h,sha256=WiI8ygemRG2Cs8kC-XhXSsUEsW4_OPVg7fxVpAB58Sk,1065 +torch/include/torch/csrc/jit/mobile/function.h,sha256=fs89swfvXdN8o1rkHr1YJ7WplNp2GfnzoUbp8qld1lE,3195 +torch/include/torch/csrc/jit/mobile/import.h,sha256=yr-EklN5mCQAZ4UFDu17e1r4Kjje5dpLkhOv3LxYRWk,4094 +torch/include/torch/csrc/jit/mobile/import_data.h,sha256=kqh0Z_dfBXiDhA4cVAURyAn5tmKpjAz71FpwcIj8dzA,1249 +torch/include/torch/csrc/jit/mobile/import_export_common.h,sha256=dLR011fk_eI2oPyJ_s-rSPt0EqhKUHpYiDlBXjfQejE,731 +torch/include/torch/csrc/jit/mobile/interpreter.h,sha256=JUerPsUZ5IqflpfMtbtPOCIW58lD2ZwmAyVXmJqnY5s,901 +torch/include/torch/csrc/jit/mobile/method.h,sha256=oYavtszbUZH2NAe0pM7wkKQtAyr1edu6qwn5PiWq7mo,1078 +torch/include/torch/csrc/jit/mobile/model_tracer/BuildFeatureTracer.h,sha256=K-OXlFb1vxQ9yYmUh9iGcluYaMWrrFpvTyaryo9wX04,1215 +torch/include/torch/csrc/jit/mobile/model_tracer/CustomClassTracer.h,sha256=ZFqxc7Hukxo_Mb4g7ikCxcPvRObAqcfqUxPG-IvQ4_E,1213 +torch/include/torch/csrc/jit/mobile/model_tracer/KernelDTypeTracer.h,sha256=kP9reVHEFkMFMnMr1LR_6CD-352jdMl9dDlCAci3tQM,1466 +torch/include/torch/csrc/jit/mobile/model_tracer/MobileModelRunner.h,sha256=Xfd9FoGNn9_R3oAZaDN4YC35lQzutLYIHIgJyuGztvg,5340 +torch/include/torch/csrc/jit/mobile/model_tracer/OperatorCallTracer.h,sha256=KFHgSJ8NOBDwzrswmf6dNCCW2L2SF8OoqG42NnryF4M,1172 +torch/include/torch/csrc/jit/mobile/model_tracer/TensorUtils.h,sha256=9KJss0Al81LTcQKjbUZJclVKvIqn-0OYrF8rQN2XotA,652 +torch/include/torch/csrc/jit/mobile/model_tracer/TracerRunner.h,sha256=wj-4TNfuyr4Q0yXX5AGbaEI3C7GaGc5o7RTorH3gvHE,1361 +torch/include/torch/csrc/jit/mobile/module.h,sha256=AjMKsMnliGQWiNEY2q6rBJoGg1xq6IvMF5y_QC6_v84,6175 +torch/include/torch/csrc/jit/mobile/nnc/aot_compiler.h,sha256=4QtJt2yncfiqbmu-TdqZXukUJSUoyG299S3SyHwuYMY,884 +torch/include/torch/csrc/jit/mobile/nnc/context.h,sha256=gFDTG6b9go-Oc2gUseF8DNsfvFtdVTlQh1nrzn1PAlA,6870 +torch/include/torch/csrc/jit/mobile/nnc/registry.h,sha256=q_Ba_oX7lIXuiH0Eu6mXvLT1zFEW8X2BhAhGW7EYFv0,1414 +torch/include/torch/csrc/jit/mobile/observer.h,sha256=5nKATYXvy7peg2rKDFro8wGL76rlx9hIJoCURvo3xLo,4080 +torch/include/torch/csrc/jit/mobile/parse_bytecode.h,sha256=o27oJpF6gCfKzSi8p8m5Gu72LfZXckuzJ6lweJLnCuU,994 +torch/include/torch/csrc/jit/mobile/parse_operators.h,sha256=av7eaS1-HSzMpE57EnjVBcBrr0AzWPyCrKpp3UJW1tU,963 +torch/include/torch/csrc/jit/mobile/prim_ops_registery.h,sha256=nhqJNmc8RtbuOJbMfog5XBknbBnw8lukCYsEnGFVnS4,849 +torch/include/torch/csrc/jit/mobile/profiler_edge.h,sha256=K7vw8Lu4GZ22V9PcAVj31heshmiSJQvtZP-k3WYjuhk,4742 +torch/include/torch/csrc/jit/mobile/promoted_prim_ops.h,sha256=3lp0XyINie-YHJQbH9bAr1dqcS2L7e5LXcIiLWwDXBA,1297 +torch/include/torch/csrc/jit/mobile/quantization.h,sha256=5yAbohsf1X8ysN-Fdi74gDpcSn2M4JeqBkR-SF1dSYM,1492 +torch/include/torch/csrc/jit/mobile/register_ops_common_utils.h,sha256=qPbFCTpOJiEo2mbQFMdhgA5VYHEg6pTZVntHoTO0Hzs,1941 +torch/include/torch/csrc/jit/mobile/train/export_data.h,sha256=VjByQpzxac0K4d5RSjDZEf7tJXkitv728Sr4ZhxR_jI,1848 +torch/include/torch/csrc/jit/mobile/train/optim/sgd.h,sha256=LQc_NMk3A0J43eJVLbrGme_tf2lonFAUz5xTH_3XoOM,4585 +torch/include/torch/csrc/jit/mobile/train/random.h,sha256=l8ExBi_8l5sQInNEL4XyvgIh5eUWH6H_xci33saSzmc,1773 +torch/include/torch/csrc/jit/mobile/train/sequential.h,sha256=SN3bNiMvPnwhSvmrp9k__pvHli_Xzc2QfFQgdsgN8qk,1478 +torch/include/torch/csrc/jit/mobile/type_parser.h,sha256=sapP6ZQle_VaZCI1hieMjxZTz5kGQ5-E6_1dju27KkI,1697 +torch/include/torch/csrc/jit/mobile/upgrader_mobile.h,sha256=CfF3MVWCIOkQWEbeJj25Ez2jhxR-OzplLf65Oujqwek,1159 +torch/include/torch/csrc/jit/operator_upgraders/upgraders.h,sha256=tBLNg_Aw07Vox9rPhruU1aoMdpadPMCuwdsyDnbuNOc,1638 +torch/include/torch/csrc/jit/operator_upgraders/upgraders_entry.h,sha256=7oBZBxLSNsQZ7E0HLUL2WPbEBtxElBydUtEjAOEvuEQ,776 +torch/include/torch/csrc/jit/operator_upgraders/utils.h,sha256=oD6TyMldIa8D9ygMZ7fmgjOtQTl2hK6Gsmi00gWy-po,1947 +torch/include/torch/csrc/jit/operator_upgraders/version_map.h,sha256=Oq0QWD-3F83cJ1_VmSkv_C8zJW-7Ndwpdfuvwe7fFaI,1141 +torch/include/torch/csrc/jit/passes/add_if_then_else.h,sha256=f0ShcVoByKs00Ld2YqZYXvquWhtqIikV2zornZZkhIc,417 +torch/include/torch/csrc/jit/passes/annotate_warns.h,sha256=02JWzxMLmy_BfOtgIgCmMeA6MMJWOqh1xm3VH4wAdi8,421 +torch/include/torch/csrc/jit/passes/autocast.h,sha256=_qPHpJ7hB1wzcvYWEuzEuEbmD69eteFsNq2IAVQhTEM,496 +torch/include/torch/csrc/jit/passes/bailout_graph.h,sha256=-E0TEJ6zyidaxR7FZTRymeOpVOlGqF2MsJPiQpaZXcs,1344 +torch/include/torch/csrc/jit/passes/batch_mm.h,sha256=DyxWCGNbD3UeqUbNxlUb4mGeKD1rayabjZcO3SVClZ0,385 +torch/include/torch/csrc/jit/passes/canonicalize.h,sha256=v7t65TCLRkIsGRnDhSa2Vlk65tMBGpJ_kMwERKX7NNw,721 +torch/include/torch/csrc/jit/passes/canonicalize_graph_fuser_ops.h,sha256=xN1GwxxzunnJ8gd-M6MtsKR4iy4_zPRWpCyme7EWCV4,399 +torch/include/torch/csrc/jit/passes/check_strict_fusion.h,sha256=MsxAQiu72jflrxZqFGFv8u3-M98BokJpck5ZruquxgY,420 +torch/include/torch/csrc/jit/passes/clear_profiling.h,sha256=5tAIUwLoKnKFfTK-jTGE622dvzxCuguLeqSElDg3wyI,722 +torch/include/torch/csrc/jit/passes/clear_undefinedness.h,sha256=jnc_bdQUATcOY3Jz7fMHoYaBX71k3IIZfqB_NYI8UEs,1104 +torch/include/torch/csrc/jit/passes/common_subexpression_elimination.h,sha256=rofGn5UT4KhFColNDpbnqiXeL5goOP4U0NQutKRNOUU,416 +torch/include/torch/csrc/jit/passes/concat_opt.h,sha256=YuSp1PFcUmxy_dLmEhVlhM_YcoFb2ZA9tQXIJaP0lYo,779 +torch/include/torch/csrc/jit/passes/constant_pooling.h,sha256=En3nfQkAGG3_470VppGHE65MINttbQgqMV2H_Tw6IfQ,399 +torch/include/torch/csrc/jit/passes/constant_propagation.h,sha256=p35UK_K-X2j2XImbtpgrGFpUNO4SXkRxf2m4htvJ_Rw,1543 +torch/include/torch/csrc/jit/passes/create_autodiff_subgraphs.h,sha256=_mlHdBQFWeKNgLAXa2DuUkBNWDekvjaVYYkN8KiTALA,767 +torch/include/torch/csrc/jit/passes/create_functional_graphs.h,sha256=5_fBFCv2Fa6Ns-7LhXrmZBtOL7hlKhIjjTODem5uzQ0,538 +torch/include/torch/csrc/jit/passes/dbr_quantization/remove_redundant_aliases.h,sha256=cMY-yjhfl6j62rOMFYw2usBgHUqA_pemFtc9tjsP4Co,594 +torch/include/torch/csrc/jit/passes/dead_code_elimination.h,sha256=Egpe15Aw5mI7eETml6LIPzIMmhTsEi6m0swVL5CpeGg,1813 +torch/include/torch/csrc/jit/passes/decompose_ops.h,sha256=B9qYNXZWlkJI5Q-RqSPM0UymrH7_748Rd5IWKtwTVQs,390 +torch/include/torch/csrc/jit/passes/device_type_analysis.h,sha256=NFvPZxkTRmVQ6H8iM0hcF_ksf6qiqS38FYAsZQkbdoM,496 +torch/include/torch/csrc/jit/passes/dtype_analysis.h,sha256=GCEVeveWihqGgJphM-DTpPlhNIvcUk3qGYUjUUlvZ1g,643 +torch/include/torch/csrc/jit/passes/eliminate_no_ops.h,sha256=sSidjyAbmaWMv9g-Y_GybSiJOw06wcwHabBXSZ5cuGA,746 +torch/include/torch/csrc/jit/passes/erase_number_types.h,sha256=n37Zgicm7KfOrz5bMFo-oSfjg1V8EXCWdEVwStYT9xM,1042 +torch/include/torch/csrc/jit/passes/fixup_trace_scope_blocks.h,sha256=PRjV9r6yj3s-N1hU1A2DYQSqU2g4I-BbRVRlBNrBh8w,1902 +torch/include/torch/csrc/jit/passes/fold_conv_bn.h,sha256=rGgsRsYYCyvl4oZ3eiHEPFl0NRnhO7sidzFHY-1QR2Q,1224 +torch/include/torch/csrc/jit/passes/fold_linear_bn.h,sha256=o3V0vkB4kiML7iN7KSvGYX20ta-cozpNT2o-9ofvwd8,920 +torch/include/torch/csrc/jit/passes/freeze_module.h,sha256=zsbw3P9Y4vImNTSrHU3a3LCgbtPCC51qJ7q5ArWdkmM,1473 +torch/include/torch/csrc/jit/passes/frozen_concat_linear.h,sha256=R_dFKDX09qS1051w0BQg4QEuy1urm8Rd2nt-6Qhi0f8,506 +torch/include/torch/csrc/jit/passes/frozen_conv_add_relu_fusion.h,sha256=oJ3U7PeMHAuuGK3LDJRwWAVQHU0KRSuzI8-PHM37dKU,558 +torch/include/torch/csrc/jit/passes/frozen_conv_folding.h,sha256=gqsDYKhyF7MI_OpRx7a922ULvGWGpoa4zTW70HFLVxA,1101 +torch/include/torch/csrc/jit/passes/frozen_graph_optimizations.h,sha256=aaRe66_HHQh2uYaDpGH8Od5NzJKDbMqtTdK9I5Nklt0,695 +torch/include/torch/csrc/jit/passes/frozen_linear_folding.h,sha256=YSh0apny-0M41_JuI7Tri2Z1kQf3UZWfrzaKubdir0M,599 +torch/include/torch/csrc/jit/passes/frozen_linear_transpose.h,sha256=c_Dw0bRU5R1w0-nmiPEauljSJgvi88FD3mUgsiCEiJY,515 +torch/include/torch/csrc/jit/passes/frozen_ops_to_mkldnn.h,sha256=cle2FR8ZgXrj4gEaFmqDIcMTg0TNEg3w4L_GTtiTtMs,643 +torch/include/torch/csrc/jit/passes/fuse_linear.h,sha256=VzB0Mw8-Lu4zS1JRwncRxmUMiU9fFOu80orgNp3Y6Ew,997 +torch/include/torch/csrc/jit/passes/fuse_relu.h,sha256=KcwM0AHZQFtb25kONC0f8oW3XYlUBArSZ2Y0oOtQSMo,502 +torch/include/torch/csrc/jit/passes/graph_fuser.h,sha256=nSYOAoLK2QWkUGSCaQ4zI3iTxT6QzFJnRHxrEIuTQGI,1480 +torch/include/torch/csrc/jit/passes/graph_rewrite_helper.h,sha256=WoXBBh9VgNk-MIqbifhEGiX4kh4LU2qs5odFQGXtwsc,1989 +torch/include/torch/csrc/jit/passes/guard_elimination.h,sha256=Q4EZMWjp79bdW-X45G1IdG4TFj1tl6jMKVVNIPXYCUQ,605 +torch/include/torch/csrc/jit/passes/hoist_conv_packed_params.h,sha256=CdAvrvCgDfL7zvtwgHG0AKqrWOdKe_nqbbwaJcOQRlY,440 +torch/include/torch/csrc/jit/passes/inline_autodiff_subgraphs.h,sha256=VZxi6tzq_hzPn3EIzIg2ZtvXBJ6yGfAZc5b7ATbX_ug,504 +torch/include/torch/csrc/jit/passes/inline_fork_wait.h,sha256=OYvgI7lfPVwGsxgnzilm2OJuhkGt6Ltc__35dn0-Owg,776 +torch/include/torch/csrc/jit/passes/inline_forked_closures.h,sha256=8e3yZCxzuikeldUCGUF3XTgAfkeHh6wEyz-KBCulR9k,456 +torch/include/torch/csrc/jit/passes/inliner.h,sha256=ToYyx5gJ37QcV0oTvzDEkDMVJUnb8GYXzk-4hThoCzs,483 +torch/include/torch/csrc/jit/passes/inplace_check.h,sha256=sOI32FKTl3O3s0tHYlg1k_Sn77sEst2-hWueyAj3i2A,390 +torch/include/torch/csrc/jit/passes/insert_guards.h,sha256=AIb_PhMXGon7heho-glI929uIC1Im0meEjOgRZLiIyI,668 +torch/include/torch/csrc/jit/passes/integer_value_refinement.h,sha256=CLQ2zGwDUAv_Y281ot29mm2GgduyL0vK3eujms0Md1Q,463 +torch/include/torch/csrc/jit/passes/lift_closures.h,sha256=td4UuyZdea9dFkD6W7KJODsmMQtFzUloB7ZRJY_zEsc,451 +torch/include/torch/csrc/jit/passes/liveness.h,sha256=Vxa4INJpMYKITv3m8bqOFZfJzDbfDZAfLtMLewxzuUE,879 +torch/include/torch/csrc/jit/passes/loop_unrolling.h,sha256=asj2phSEZGmoy9emUuDzgkc26M2J3kVk5nc6VfTUG-8,1235 +torch/include/torch/csrc/jit/passes/lower_grad_of.h,sha256=QYS_pCq01yGmynQVkT9l0_v1PgmUrWTMs3j5vdWn1KY,577 +torch/include/torch/csrc/jit/passes/lower_graph.h,sha256=rWUkw2SbpYBkvHYsCSnDrqeHXD75Qu2CNPjJJtC8QZ8,979 +torch/include/torch/csrc/jit/passes/lower_tuples.h,sha256=6LHRDOHVsmYyg1ciIF0PdXDX-yf0Wnj42YeXrMISSWQ,895 +torch/include/torch/csrc/jit/passes/metal_rewrite.h,sha256=Aq9hJ1g_b3rQKMBRm5BboxDHVKXCSKYDZ2A_duZ8LQE,835 +torch/include/torch/csrc/jit/passes/mkldnn_rewrite.h,sha256=3VXK9g-dLkqo4FCUmH8MwloWrtA3KtinJYCNeXgD-uA,859 +torch/include/torch/csrc/jit/passes/mobile_optimizer_type.h,sha256=15fTYpsDTiBMHsuAwOxPsTjXIZL37PtFWtZKRgFRn6M,491 +torch/include/torch/csrc/jit/passes/normalize_ops.h,sha256=lXj48gpVeLtNH-4uxdtIKYTCCMgAXEcXwm0pkzDgCU0,765 +torch/include/torch/csrc/jit/passes/onednn_graph_fuser.h,sha256=GBjQKvwNo03pCg9YKeSRbXSn-6QlqFFcvzfLbiU3gfY,1653 +torch/include/torch/csrc/jit/passes/onnx.h,sha256=_UkiWGPLHo91XTx9I-0bagdDtkLgzuNjaI1N9ZLYSYk,1086 +torch/include/torch/csrc/jit/passes/onnx/cast_all_constant_to_floating.h,sha256=dAvOYnKqFVtEHNOkfClRH3eNj7MbSKFcam_kBj4sGwM,471 +torch/include/torch/csrc/jit/passes/onnx/constant_fold.h,sha256=_XQyhSXo2-qnPkq340iCigEeHpih1PVrHls2iSjgm20,947 +torch/include/torch/csrc/jit/passes/onnx/constant_map.h,sha256=5pZuHzoqzXePcJsmaPYCqfEKKnU3sH4uoNwh82NatdY,4676 +torch/include/torch/csrc/jit/passes/onnx/deduplicate_initializers.h,sha256=w1w5ieTjPU34qymJgA_2JGWjoL2bmjx1A7KYQDSzPJ0,501 +torch/include/torch/csrc/jit/passes/onnx/eliminate_unused_items.h,sha256=krk079cOT4rOH11yfKlxBXyD7zx-KH47s6D22eUfaPk,597 +torch/include/torch/csrc/jit/passes/onnx/eval_peephole.h,sha256=-hDeDvDyI7kkdWzqeANeNLyjZ-XhSNCEtFkPrso0_4I,474 +torch/include/torch/csrc/jit/passes/onnx/fixup_onnx_controlflow.h,sha256=QhZj4aOPAdB3mVdIra74SH8ZIDRis6MMDnagak07f-o,475 +torch/include/torch/csrc/jit/passes/onnx/function_extraction.h,sha256=IrN-zKkMc117HwUOPd8rpLrScYQg0BWjVhsKfL3KpNQ,2505 +torch/include/torch/csrc/jit/passes/onnx/function_substitution.h,sha256=UE5MXmhwcKcnThcaJ44yHVQhUJEOYH1Te1cu8ua6dLQ,389 +torch/include/torch/csrc/jit/passes/onnx/helper.h,sha256=RSnKwjRHMLYSn9MBghSauvoIFIEppnUgSwoDodezT9U,2259 +torch/include/torch/csrc/jit/passes/onnx/list_model_parameters.h,sha256=Bjjdu1GfYUC_XzaoNeDd9uFxxI3BtRqHUBeyQsYTFh4,493 +torch/include/torch/csrc/jit/passes/onnx/naming.h,sha256=xARbuBP5w5yHBxa1SqvHvsIgsgSfzjYCLkbYIyOCKKA,1014 +torch/include/torch/csrc/jit/passes/onnx/onnx_log.h,sha256=k7Q3msE4ebSIbatK2SozmuuHhAN6PmDtG5o7na41lgw,838 +torch/include/torch/csrc/jit/passes/onnx/pattern_conversion/autograd_function_process.h,sha256=TzA91rqMukunWZhNt7243zU9XfOm183P5c8xD4y3QoY,429 +torch/include/torch/csrc/jit/passes/onnx/pattern_conversion/common.h,sha256=SwwoOcou_ddWJ-ZZaq9dGO4DUnQVkZ0H2fH-R3je_u8,590 +torch/include/torch/csrc/jit/passes/onnx/pattern_conversion/pattern_conversion.h,sha256=yWht1SKQmZcuKsB72qwwKXcIBtlvzWA53D_S-em-OtI,2349 +torch/include/torch/csrc/jit/passes/onnx/pattern_conversion/pattern_encapsulation.h,sha256=5NhWadoRDuNm59FWVQ_E1vTuD5XUJ9aLvg_7offUD58,1616 +torch/include/torch/csrc/jit/passes/onnx/peephole.h,sha256=CE7EBRjxIdulDb9RKZKCZzDY8_i6ahhbP4Ly1tpep1E,467 +torch/include/torch/csrc/jit/passes/onnx/prepare_division_for_onnx.h,sha256=BMLs0MXEEuJAzJbrSF7RsC0nUBDYEdb1y59QJzDk9gk,705 +torch/include/torch/csrc/jit/passes/onnx/preprocess_for_onnx.h,sha256=YippKvsxqhHWv_oqgC2ZW-RnI-jROrOlQ6V93sCAZOg,409 +torch/include/torch/csrc/jit/passes/onnx/remove_inplace_ops_for_onnx.h,sha256=-hSGx58ku7bXvK-mb020ASWIUnCX2q3W-82DP8zgaPI,455 +torch/include/torch/csrc/jit/passes/onnx/scalar_type_analysis.h,sha256=74SMht0iHAbNST6nalhUdYH4g3maNy3l7HFSQQvGwcQ,534 +torch/include/torch/csrc/jit/passes/onnx/shape_type_inference.h,sha256=SlGyecscNEDgdxVBblR94i56eM2W-I5nHs3FKVXSPB0,4209 +torch/include/torch/csrc/jit/passes/onnx/unpack_quantized_weights.h,sha256=DkcIIjXB_6VqcDWmss6830dM5ICTHG3pgQhqQMOfVuo,681 +torch/include/torch/csrc/jit/passes/pass_manager.h,sha256=LvOMTVmjxz-XJqZKWj9p6k0UwMlRTualwlZQ9Kar8Hs,4803 +torch/include/torch/csrc/jit/passes/peephole.h,sha256=Mo7rrtoHcaYiQXLtAuzLTrq6havHuGUk6S8EI7TwjWc,736 +torch/include/torch/csrc/jit/passes/peephole_alias_sensitive.h,sha256=Sf5RJwOqKFe4iciAVLkp1FrJpjShsvbjVHL5By-XDQs,664 +torch/include/torch/csrc/jit/passes/peephole_dict_idioms.h,sha256=V1wOXOIN92YLg3pFp1SYwO3zuCxe_c7Iwq9coIatUZU,1229 +torch/include/torch/csrc/jit/passes/peephole_list_idioms.h,sha256=y6BBOysIaiX9LXvuefeadCFj2p0s4sko4-GsQYPnxnI,2232 +torch/include/torch/csrc/jit/passes/peephole_non_tensor.h,sha256=skm22Pz51el-KVG0k2jh9gR8wlDOKfcR5NDQPmsHaRE,571 +torch/include/torch/csrc/jit/passes/prepack_folding.h,sha256=kX30fJNLOVaYaUVY2f1iQk8VySYqlOXv3gi6m5vQy8k,587 +torch/include/torch/csrc/jit/passes/quantization/dedup_module_uses.h,sha256=cLkTsvEGzKSDL1wyuvvvBBagD7DnVXlXTcwj3pTF-NE,1055 +torch/include/torch/csrc/jit/passes/quantization/finalize.h,sha256=-QWRnlHJuRD-VOMy4dhOXHl76pcvNMJHfG3HaKWWSI4,2550 +torch/include/torch/csrc/jit/passes/quantization/fusion_passes.h,sha256=7MHhqzRUYn7PztFKJ-wXW57JLKNQHmiJ6M06Ybi0VAY,420 +torch/include/torch/csrc/jit/passes/quantization/helper.h,sha256=MMFMaD1PNwvUSsdkkfdf2eK8XKpYuFfzysXyiEp33U0,7713 +torch/include/torch/csrc/jit/passes/quantization/insert_observers.h,sha256=k4Z0aSWRs2a2AiHnJPddEr10qb8XtqaQS4VTIRmICiA,2580 +torch/include/torch/csrc/jit/passes/quantization/insert_quant_dequant.h,sha256=sv9uH-qDkwIiS6PfV9KyTuw7SN_xZo40mAGHL7-TXME,1679 +torch/include/torch/csrc/jit/passes/quantization/quantization_patterns.h,sha256=qEZPI2jlOnTnl6wf-wxjG11-_RZm_UvPPU687m4oze0,53615 +torch/include/torch/csrc/jit/passes/quantization/quantization_type.h,sha256=1MjTQ7coNAARQy0W3o_hvfMv-3Wl5VhThENqY99fiBc,587 +torch/include/torch/csrc/jit/passes/quantization/register_packed_params.h,sha256=qPhixrMBoFVCr8GWDqs-v4jIiDDai3ytqbv23aMeDWI,743 +torch/include/torch/csrc/jit/passes/refine_tuple_types.h,sha256=97LywtAOszRtA9MQscOX8gLmB2pZzXQZfEz9C4wtaUg,496 +torch/include/torch/csrc/jit/passes/remove_dropout.h,sha256=ANNXHbSIIcRmZpBcoC0ZlsPAsGgJoobsWCGrLK-gMKI,509 +torch/include/torch/csrc/jit/passes/remove_exceptions.h,sha256=BSf7-h68dGHJ4OCbxFH5G53zLAnqgcQDCnwjb0kvnbM,1183 +torch/include/torch/csrc/jit/passes/remove_expands.h,sha256=_wMfo-Lk2Kkru2UWb7wxY5SjZd9ch-_DVvaTdVXoAjY,397 +torch/include/torch/csrc/jit/passes/remove_inplace_ops.h,sha256=ZeX2AINr3DaNyLJT4mGcwIhT2nwwNi-TjFpVD5_tMSQ,525 +torch/include/torch/csrc/jit/passes/remove_mutation.h,sha256=v_hHpZwvYKxAo3S7AcIURHmz-lI3Zv5YXMnuTM-8wFo,2891 +torch/include/torch/csrc/jit/passes/remove_redundant_profiles.h,sha256=zcRHNfhQ46hRnX5G1vNJJGdNf5ln9O2zFZDmf1REyFM,491 +torch/include/torch/csrc/jit/passes/replacement_of_old_operators.h,sha256=Vt8IwExtBSQL8GgsGUMuAonB3K7ZjfkBzRCHUQOv5L4,688 +torch/include/torch/csrc/jit/passes/requires_grad_analysis.h,sha256=NS7EqB2A-1reB4lsvoL4Yp-sxnWfQFNyr7SIaHzhmyU,475 +torch/include/torch/csrc/jit/passes/restore_mutation.h,sha256=eOvMa99BGqwPfZPgiS0QOq5U0BQJAcNHygQHZzcm2BA,2055 +torch/include/torch/csrc/jit/passes/shape_analysis.h,sha256=lmNddX5YF6phTtpKEEj2EuaShFHmG4THQyB7Td0qHbI,1331 +torch/include/torch/csrc/jit/passes/specialize_autogradzero.h,sha256=21kPaHTi-xVHnofwW5P0sK73y-1XsKnl8lMT0SsSy64,885 +torch/include/torch/csrc/jit/passes/subgraph_rewrite.h,sha256=wMJHB3HCrYpqgBex6Kys9oWZ7OB6xt0nfIOK5pE_PSE,4313 +torch/include/torch/csrc/jit/passes/symbolic_shape_analysis.h,sha256=TOMd0js5rYIWV05AFpf-PJq9OYXUoaFBOl707VvPZvk,2332 +torch/include/torch/csrc/jit/passes/symbolic_shape_cache.h,sha256=sXd7qzIrY6LAcp9iudjXKO23O9J4iS2hMVpQw3QS47I,1828 +torch/include/torch/csrc/jit/passes/symbolic_shape_runtime_fusion.h,sha256=DLMEVq55DQ3b0DYl-XywA0aS1Av7IQdAHC5LubhTa00,2593 +torch/include/torch/csrc/jit/passes/tensorexpr_fuser.h,sha256=BZSULniWR5TvBLOyiryThuYXdissuTKArdcJ66z0VZ0,2953 +torch/include/torch/csrc/jit/passes/update_differentiable_graph_requires_grad.h,sha256=hwcyT7I6dlZWCmLqedbalUm73IvOfAKMhXlZwUZdWcM,969 +torch/include/torch/csrc/jit/passes/utils/check_alias_annotation.h,sha256=hBYq1dwM4MiGPCY1e89K2uxovD2u01KNkHu-c4A4-4s,841 +torch/include/torch/csrc/jit/passes/utils/memory_dag.h,sha256=PgqnB_pKQxz3le9erTTycryFQ9q1YQTz4eri-0wna5o,6645 +torch/include/torch/csrc/jit/passes/utils/op_registry.h,sha256=2egFx0dFliiCY71fhR1HkJKYJrZEA0v4t-0tAITc65w,1262 +torch/include/torch/csrc/jit/passes/utils/optimization_utils.h,sha256=AiONhxLLO2m3l_G7mcAX1xZigva1RrBJHvUoa78ITNw,473 +torch/include/torch/csrc/jit/passes/utils/subgraph_utils.h,sha256=NTZJ2TZ3LpMsje665S60ulrvfG54IKWMn4PHR0x9Rtw,2614 +torch/include/torch/csrc/jit/passes/value_refinement_utils.h,sha256=nDJhO_jc3-arA7JW5WdnWn-s5EKgx4sMEAxsRGXQSlQ,2861 +torch/include/torch/csrc/jit/passes/variadic_ops.h,sha256=gB8X2YrJJvpMxajBSMk36y4Wb-qGMed2vKIKiDBpzE8,1139 +torch/include/torch/csrc/jit/passes/vulkan_rewrite.h,sha256=2am84jm42Je81wqkg8oNJVsSLY39hhxK7nygP7eCLiI,927 +torch/include/torch/csrc/jit/passes/xnnpack_rewrite.h,sha256=yl8n6WNwyx2L4_aH4hUE1UQrbAWO23sZ3qVB_oZLwB4,1049 +torch/include/torch/csrc/jit/python/init.h,sha256=vNYIEI_xN8J5Mt06W0zqxyNmpg9sVxwgpW4zkp037QI,397 +torch/include/torch/csrc/jit/python/module_python.h,sha256=igT4tAZwKBYHmEtHSUyXp8SM_cpiCsWBbJ2y-u5xO_I,2127 +torch/include/torch/csrc/jit/python/opaque_obj.h,sha256=kZy2BWyyma9BVgtF4Owx_mJ0Aj3CPLn-5eh12pf0CE4,3135 +torch/include/torch/csrc/jit/python/pybind.h,sha256=oRXJuaMzSL5txY51K_YchGAQ5AKXuFO6v0JL3EQ3o1c,8207 +torch/include/torch/csrc/jit/python/pybind_utils.h,sha256=yffkkHhrR6jUeVO6KZhaNoNpsmhjEXigvngUqV2qpBU,46161 +torch/include/torch/csrc/jit/python/python_arg_flatten.h,sha256=T_5P6SeD4L0HwgiF1EgBaOJTns53ObnKlrWo8uuSwic,3781 +torch/include/torch/csrc/jit/python/python_custom_class.h,sha256=ld9_AGKC_-TTIhJ8Arb18NskKGvOhmKM5Mk4hb9gqRw,666 +torch/include/torch/csrc/jit/python/python_dict.h,sha256=wnSiklovZ7ltUylHMtu0XTnxSGZeDvQbUYUgP5H86TA,3637 +torch/include/torch/csrc/jit/python/python_ir.h,sha256=WvU_pTbdoTY5yQQ9wJIv6f4ixvr2pfKZ8bAYW7M9Vws,1947 +torch/include/torch/csrc/jit/python/python_ivalue.h,sha256=RoKOjA5RuPZwble4J_LxmG3vg8Epbd6rSDCnia1nEkg,3936 +torch/include/torch/csrc/jit/python/python_list.h,sha256=bR11jlcisx1BfNLiUy_sZt4EChGw3Yzymm6PvdRe7Bw,5748 +torch/include/torch/csrc/jit/python/python_sugared_value.h,sha256=OWOjMwm4H3Mb9lr1hRca7uvAAIIy2jR3TUvfli7-wfk,11590 +torch/include/torch/csrc/jit/python/python_tracer.h,sha256=4T989L04dccgGxgHBXghLodx48imnb7nUfBxO4GiieU,1472 +torch/include/torch/csrc/jit/python/python_tree_views.h,sha256=RPY1Ogr9vgVgg_hAE3ISyF_xYAWp9If4kdwmcaE9TuE,404 +torch/include/torch/csrc/jit/python/script_init.h,sha256=XgA-WXGN1XrJwXmirEGVqc5UtY_KWNb4fUQX-Thfj2E,406 +torch/include/torch/csrc/jit/python/update_graph_executor_opt.h,sha256=xdKRIbEiJewN_qDogGpAFIuyhaoeX-X0n2_4nB6bAwg,439 +torch/include/torch/csrc/jit/python/utf8_decoding_ignore.h,sha256=B6blNz_2z3iECmAe7j7YLkDvvI8C1qS_3XOQE_Xqz14,433 +torch/include/torch/csrc/jit/resource_guard.h,sha256=SlgztVvYnO7gH67Es8lAgD36-otV1Z4Bwha1Lbf3yfQ,694 +torch/include/torch/csrc/jit/runtime/argument_spec.h,sha256=XL7F12AAl0FXOoMXra-nTqUw_K3TeXtmh_FFH1XeCU4,16638 +torch/include/torch/csrc/jit/runtime/autodiff.h,sha256=gk9xNh2dJ_7kotDK_PPTRN7X7GfS1U5o45FqkUpuUYw,4184 +torch/include/torch/csrc/jit/runtime/calculate_necessary_args.h,sha256=VHcSKHiUe_SXS2K7hyc0uG-4OgZQFjZcnzKEgmUz3LU,2535 +torch/include/torch/csrc/jit/runtime/custom_operator.h,sha256=h1APxS6uYOLL9pKJ-xoAcoRb8m0gwaD2lD2S4OOBodc,1308 +torch/include/torch/csrc/jit/runtime/decomposition_registry.h,sha256=rqzNfixCRRvSIACDilIpQSyJ2bcFI0DMJ34B1F92LkQ,1299 +torch/include/torch/csrc/jit/runtime/decomposition_registry_util.h,sha256=x-tYdDgODVbKlfH9CdiePOmbQokrbO3ceTS2Bb_aAtQ,515 +torch/include/torch/csrc/jit/runtime/exception_message.h,sha256=BslHUofsN8BPUqzFUOSbCR4K_vn-6jpuoqMVGyILQhw,868 +torch/include/torch/csrc/jit/runtime/graph_executor.h,sha256=Uf_YQ650NhnpoYN5ZKp78F6NWlmgrANPrs2SPFvkQp0,5237 +torch/include/torch/csrc/jit/runtime/graph_executor_impl.h,sha256=z7RvxYg1R1CgVKtoxxu-cDBhybJddJhgF4fv4voCSVQ,4617 +torch/include/torch/csrc/jit/runtime/graph_iterator.h,sha256=jCz577Ln9PoIwzyx0FEzkHmdqav5fqYC9nJ-_nUNPGE,5192 +torch/include/torch/csrc/jit/runtime/instruction.h,sha256=29MNt2M4kKwP_BhDfpzVJTLAsgDIdUJnUtg4Cft0s7s,5798 +torch/include/torch/csrc/jit/runtime/interpreter.h,sha256=Ae4OGN2Iy6Y2UDGsYHqn6qu2gaLr-K5nbeGU7kHXqtM,5245 +torch/include/torch/csrc/jit/runtime/interpreter/can_emit_inline.h,sha256=y9NZJmjJOWpkZq_E_dI1c2TixH-NoSmaWqzjqmPenuc,4208 +torch/include/torch/csrc/jit/runtime/interpreter/code_impl.h,sha256=SuENU6qmE-6Cq5_9QNudU-pMAXkgRAhdXFSZgK2SDyY,33553 +torch/include/torch/csrc/jit/runtime/interpreter/frame.h,sha256=VeercdUuV2EqaQPgEg_4bANdttPbyxOWtq0cHVlxl-I,1364 +torch/include/torch/csrc/jit/runtime/interpreter/preprocess_graph.h,sha256=nTwhXzmPZROEwL6x3Xa7DSHHelnHkxbUnRZjjQmwIek,655 +torch/include/torch/csrc/jit/runtime/jit_exception.h,sha256=Zc8QecTVAQX8NJmO5jyOlbhiMI85f6cHAPrnrsj-QJc,1423 +torch/include/torch/csrc/jit/runtime/jit_trace.h,sha256=QOfLSGozBn6GWvSU8lZP2ei3H341v5_c56RaQKHo-Do,461 +torch/include/torch/csrc/jit/runtime/logging.h,sha256=dw5NkNpPi_XUNYg7PZ7Y7iBC5ziQull3pL8OsMiU80o,2868 +torch/include/torch/csrc/jit/runtime/operator.h,sha256=GuDfqdJ4QpIcWGQnFn_qO0-P4rGIIl1s9t97AR2fFNA,11872 +torch/include/torch/csrc/jit/runtime/operator_options.h,sha256=aKyUKJcXMUY2coB-r6w7Gn5MqM6Oi_gagAUreCBz3fs,418 +torch/include/torch/csrc/jit/runtime/print_handler.h,sha256=Y8I3uAqbeTiRz0PGKPPuddwV3K-x5TsFUaiHsQx3Tx4,562 +torch/include/torch/csrc/jit/runtime/profiling_graph_executor_impl.h,sha256=VDgNi6zLZCugkS7NMOd_vG4AD-FhLLLNqUJlxF4gDx0,3453 +torch/include/torch/csrc/jit/runtime/profiling_record.h,sha256=Pl8FRDdC3xcnXC0QY_YqxKsXMYAcR0twk3_bDjgNQF8,8811 +torch/include/torch/csrc/jit/runtime/register_ops_utils.h,sha256=q6U1f5ag2mbImjCdDX89RTtn039ONUbsWDhgZcnpUV8,42878 +torch/include/torch/csrc/jit/runtime/script_profile.h,sha256=N1X3tzFIej3-eVHceltWERDxdGVPZVSCLILcwva1q3I,2890 +torch/include/torch/csrc/jit/runtime/serialized_shape_function_registry.h,sha256=mcuHossgV1v7dKRzyGnfhZFyhXsTzDnaWN6Y9HT9Mjs,610 +torch/include/torch/csrc/jit/runtime/shape_function_registry.h,sha256=uoL-f3SUaAQuiukKBOihRcRjbGI4RW7UYHcnDV3cN6o,497 +torch/include/torch/csrc/jit/runtime/simple_graph_executor_impl.h,sha256=99zYDUdxqtTqzauiZUd8DFazx9gFybNDk3kXzadfvPM,1011 +torch/include/torch/csrc/jit/runtime/slice_indices_adjust.h,sha256=n3jrzM_G9_3ccL-w6g17Klgv7m7OZx8Nt4ueF-AYh6s,1036 +torch/include/torch/csrc/jit/runtime/static/ProcessedNodeInputs.h,sha256=0VsG_EWU4RlKMytyPWszfKkN9r1tsUguema93szWs20,6657 +torch/include/torch/csrc/jit/runtime/static/fusion.h,sha256=tbkTq6d876UIXZJUIwG1E9y0Y9G51l38RPRvcDOehC8,561 +torch/include/torch/csrc/jit/runtime/static/impl.h,sha256=ji25jEShUmncR86XQMCPUz4OPSoYXPtJfF60npcw14A,36161 +torch/include/torch/csrc/jit/runtime/static/init.h,sha256=aNaEAVBJYoov2lPcnGzHAgfMYph6jxyAOUfRrxrQK-c,403 +torch/include/torch/csrc/jit/runtime/static/memory_planner.h,sha256=J4ta170Vh1I_hSfwvvzKef8mCqWVPmo2BvPU0J3CEjo,10180 +torch/include/torch/csrc/jit/runtime/static/ops.h,sha256=5I8G87YwBcJ--zBW4vWSqV4BCYa_k_U7w7GRbvduQeU,5824 +torch/include/torch/csrc/jit/runtime/static/passes.h,sha256=Wu3GXnn1CiiP90I5bgtelZQYEn3jFL6arF5X6PsE1MM,3938 +torch/include/torch/csrc/jit/runtime/static/processed_node_wrapper.h,sha256=My4mV4TP1f4HOTVOPj3RQZoKXFIX2haaHuuXnH7Wo9A,6849 +torch/include/torch/csrc/jit/runtime/static/static_method.h,sha256=I9CqnYsJgIzLyVJz-US2O8M0_O6F6J8DgzBOkihoTKY,1578 +torch/include/torch/csrc/jit/runtime/static/te_wrapper.h,sha256=MKHuU07WRx2w7L6AbXVEe9k9PVAUvgmHwZXz_kp4x4s,1399 +torch/include/torch/csrc/jit/runtime/symbolic_script.h,sha256=g3o1hzSledXLC_qGXaW00L5ceN_5f9GkUcsHVj0oh7A,816 +torch/include/torch/csrc/jit/runtime/symbolic_shape_registry.h,sha256=OhMa9p-mfJyzj-iQGgK97aIowSuoWM1_aFwYp5JN76c,3056 +torch/include/torch/csrc/jit/runtime/symbolic_shape_registry_util.h,sha256=x2o-VKti7VMmmQqOIINueRcjcddhyRBLSAhZyYTkFGQ,605 +torch/include/torch/csrc/jit/runtime/vararg_functions.h,sha256=4C3J9b3VP4jaUBAGH3ZF9CRc2WRAfPP0JdhMOiAiUWs,1401 +torch/include/torch/csrc/jit/runtime/variable_tensor_list.h,sha256=fEV6nglRgQkc_2-Gag2kf9lwJ_z4FV2Q5M7xOjUZs-w,781 +torch/include/torch/csrc/jit/serialization/callstack_debug_info_serialization.h,sha256=QcsfMxPT_pqRc7EASChDRGo24Qs4FWRoXsHqcdDdBSw,2858 +torch/include/torch/csrc/jit/serialization/export.h,sha256=X6mqoZw41PetqOCOxaeZyaKcsLcJ8qYnx7T2bOFaaM4,11743 +torch/include/torch/csrc/jit/serialization/export_bytecode.h,sha256=K5fnIyMk2cOEvawaXbJyMwhwPkzwAnCjswZdjiK9Sgo,1622 +torch/include/torch/csrc/jit/serialization/flatbuffer_serializer.h,sha256=zVHXB_S7tz5eQ9_ams7Zs_rfLWZsP_2dSMBNC1ttAKY,3297 +torch/include/torch/csrc/jit/serialization/flatbuffer_serializer_jit.h,sha256=n-sfcJ-3xmrwI5jpCFXoQvSaFEV-gp8tVB_yphdoAXc,426 +torch/include/torch/csrc/jit/serialization/import.h,sha256=CBVFVUcoTm_zaWm7uoqeCR_Zd0Mt-9ViWQ2RZYF-B88,5085 +torch/include/torch/csrc/jit/serialization/import_export_constants.h,sha256=4oXjn6hyyJNAWk5su46kkyjStM189G05kktdT7N43g0,899 +torch/include/torch/csrc/jit/serialization/import_export_functions.h,sha256=LwcXblZza7xkyq0Rka34tHdsd_mTGmyT4tJpoEIsavs,643 +torch/include/torch/csrc/jit/serialization/import_export_helpers.h,sha256=4eXPN8wLr2YGcnCxglW8a3uQP4JarUu6znXfw2Jutt4,905 +torch/include/torch/csrc/jit/serialization/import_read.h,sha256=A5y-7aXZN_AsR_Xs5TeAUFDzu3DKU6pGwuPiv9nCKKo,1086 +torch/include/torch/csrc/jit/serialization/import_source.h,sha256=CsfRD-msOa4zp7bsm3GFRueWXoNKllKtqBnc12E_kQ4,3678 +torch/include/torch/csrc/jit/serialization/mobile_bytecode_generated.h,sha256=lsTXYABe5eo_pIVoaEkB6afoTkB2GZ-m1t4_vPHng5g,98868 +torch/include/torch/csrc/jit/serialization/onnx.h,sha256=qJhopSKUjvWlH2obLaaYCTMrW9W2qnZJVAjN3PNLEQ4,767 +torch/include/torch/csrc/jit/serialization/pickle.h,sha256=pgfxjFeY2B8EbGlNOh1jGnlAN27A9C8yCCpp9RN3AdA,4944 +torch/include/torch/csrc/jit/serialization/pickler.h,sha256=irAEuSyKkGnm_noEteCownc4zn_IhkGUOf2Cr8M3JKY,6589 +torch/include/torch/csrc/jit/serialization/pickler_helper.h,sha256=JP45K7oJ56Carbn1DE4qVTiZpdU4Xp_kbzXgarec2_M,7204 +torch/include/torch/csrc/jit/serialization/python_print.h,sha256=N-gq3PVba8pfhIElWd3BStwWTrR0VpgfM_fOyYZhY6U,1563 +torch/include/torch/csrc/jit/serialization/source_range_serialization.h,sha256=7g9X73noS0b5SL75D4qkmSh9Y5b4eFSaII8TEps4a88,1920 +torch/include/torch/csrc/jit/serialization/source_range_serialization_impl.h,sha256=N3-0_YKngFCYPWVg-vLqjo4NIoJZIHDwubKSEIpWFt8,934 +torch/include/torch/csrc/jit/serialization/storage_context.h,sha256=ndqEnG2nx8IYCScZEGgfSfnK98O8LmTkFsi6nqzGpy8,2741 +torch/include/torch/csrc/jit/serialization/type_name_uniquer.h,sha256=WeGv4RvmdKHQWZkT8cxnS0LXKLkYMVTsfLiGVFFFkfs,1008 +torch/include/torch/csrc/jit/serialization/unpickler.h,sha256=wF1HWI6CT-NqrxfAgrdJBpyBkxIfgGD8p1TLxYhaygA,7938 +torch/include/torch/csrc/jit/tensorexpr/analysis.h,sha256=2ujRn9DusgJSx48wfTBcafF_OmRqI2ZUhSWEON_QUo8,9236 +torch/include/torch/csrc/jit/tensorexpr/block_codegen.h,sha256=rWfhdJdSRI5_Yci_08AdMpAo9DxYL_IGeIxcTFB1qEI,4544 +torch/include/torch/csrc/jit/tensorexpr/bounds_inference.h,sha256=X7rqLiu36NbZ8xyWLHI51dPOxAF0FEB2ZngozgS6FBo,2424 +torch/include/torch/csrc/jit/tensorexpr/bounds_overlap.h,sha256=hRRgaDYY0YQjP09GU4iKkkxcMurzQAUF0u-hD4M4WBg,4725 +torch/include/torch/csrc/jit/tensorexpr/codegen.h,sha256=Gl-PYYGtvgAeIGnXzfIoDlxgaENonD3YbA95eHqwDsQ,7820 +torch/include/torch/csrc/jit/tensorexpr/cpp_codegen.h,sha256=vql6RehQDmUSOGYtaNMfYCnOLkDpUJQbFOIu8kbpB-8,2706 +torch/include/torch/csrc/jit/tensorexpr/cpp_intrinsics.h,sha256=f2nVKYuxGRr0dRpmYBC2s2HouEh_UrCkirRB084kxgI,887 +torch/include/torch/csrc/jit/tensorexpr/cuda_codegen.h,sha256=1tNyoT2slJt8I0eUCv3hvk2vWHCvkgFoIFuC6cpe8l0,8488 +torch/include/torch/csrc/jit/tensorexpr/cuda_random.h,sha256=xNgNZ6ulyIg_RXjBcuLSywKlfFPlfLbYooFQ7o7Igqg,2846 +torch/include/torch/csrc/jit/tensorexpr/eval.h,sha256=di5-_tg9Wxz_zZO1_TfSzETK-BjVWIhrjjHU1AqB0Ps,10097 +torch/include/torch/csrc/jit/tensorexpr/exceptions.h,sha256=h4tscEytrsVBp0FeDu7dQ1a70SyqvhE2zK52gBNLE-c,3475 +torch/include/torch/csrc/jit/tensorexpr/expr.h,sha256=kwHPQLgNNggfMmRuhW-nG_Kx70oBKGCKLvp-pCwyUTU,14435 +torch/include/torch/csrc/jit/tensorexpr/external_functions.h,sha256=TbX1FLAD27y78pp0ibNQbkAtkrRedl819pSEnsCrkkM,3687 +torch/include/torch/csrc/jit/tensorexpr/external_functions_core.h,sha256=-XniYhj7ULLZaIJXLxOmVi5R8M6QoPsppkZ792Xe-rU,707 +torch/include/torch/csrc/jit/tensorexpr/external_functions_registry.h,sha256=pFmM_5RCB22qFInr1mwWoX6hT4vyDDiOMNflfcxlJLE,2560 +torch/include/torch/csrc/jit/tensorexpr/fwd_decls.h,sha256=QoA0Vbh_h-33YrgqSpyn0XvheH9Ubfmy1SQZOkqRrKo,3244 +torch/include/torch/csrc/jit/tensorexpr/graph_opt.h,sha256=nztWGJXqgy2d55nJrA_O1rHuw_32tfUVTDHuQAD_t_Y,4688 +torch/include/torch/csrc/jit/tensorexpr/half_support.h,sha256=9Y-LYGyA0Xqs3NNqzhw4Id-6x2eds0c3AzxgCJ042eY,6143 +torch/include/torch/csrc/jit/tensorexpr/hash_provider.h,sha256=_M-CQWG_NeTYPfXFq-vuEo3gtAZ0Nqq0VFljlF-u7Rs,7803 +torch/include/torch/csrc/jit/tensorexpr/intrinsic_symbols.h,sha256=qc_HAjNnjTPricyApZe-ah89dmIydG-_IohjaC3QOKc,674 +torch/include/torch/csrc/jit/tensorexpr/ir.h,sha256=5AXa-hM0bsST1tTzs4WhBAB-BjJTGgE-6cX8kza-IgQ,23233 +torch/include/torch/csrc/jit/tensorexpr/ir_cloner.h,sha256=88KpZ7EwH5QwR694Lo5gWCj_T8aFTEGXeckCtLbxa9w,2597 +torch/include/torch/csrc/jit/tensorexpr/ir_mutator.h,sha256=xIIYd3jGDJwGQNYNJNGY4zTxONONq1WKhrE4AZ2bzJM,2623 +torch/include/torch/csrc/jit/tensorexpr/ir_printer.h,sha256=i9QX1RBE-T_EsYICKb9FmzdRLhVbPwcC21bbV3110HI,4515 +torch/include/torch/csrc/jit/tensorexpr/ir_simplifier.h,sha256=bfo3nS5BWEJIm5P0d1GWxuLFnpUUSjx2Z0tY-YmGscM,15511 +torch/include/torch/csrc/jit/tensorexpr/ir_verifier.h,sha256=3BIXofQLDRbC4f4oXyxtB8hPZmr58EN6TY6bye-3qaI,1567 +torch/include/torch/csrc/jit/tensorexpr/ir_visitor.h,sha256=yGeW-NEbk9Sr3JWyN-BpTqxWAIIkHFeXVJiA3FwYGoM,2441 +torch/include/torch/csrc/jit/tensorexpr/kernel.h,sha256=9WGYY5qqKt2evd4NCe8sK0fEXFjB-5cQgQUkE9QSV_k,13646 +torch/include/torch/csrc/jit/tensorexpr/llvm_codegen.h,sha256=iNG4AcV8blDZASUGlAHJfsKNp8NwPj_STQD6XhXuJ7E,4093 +torch/include/torch/csrc/jit/tensorexpr/llvm_jit.h,sha256=ti8Y7XRaZTbRofvOim-pe8htkhIK7WiApV5MpaOow2c,2274 +torch/include/torch/csrc/jit/tensorexpr/loopnest.h,sha256=K_rimui2rklVgDOUNCgJeQB_HwobFaabBd-sDAtwc44,22032 +torch/include/torch/csrc/jit/tensorexpr/loopnest_randomization.h,sha256=QYpdnfuqv9YlA0shpYVSoSC3ZdbBEU1k334eMSpl7X4,563 +torch/include/torch/csrc/jit/tensorexpr/lowerings.h,sha256=uLQ7cEVTUanhRoUj70V77d63qmEtEQ9NxOqnYmYAK-c,1534 +torch/include/torch/csrc/jit/tensorexpr/mem_dependency_checker.h,sha256=uZGsYXWIela0_0tBuKxr5Nj6fgEoJdouzDv4--ofZ-Y,13716 +torch/include/torch/csrc/jit/tensorexpr/operators/conv2d.h,sha256=NKC3IMS43R68jwounzCjcpK5kMXbyi_zHXJ_TEeYutI,3147 +torch/include/torch/csrc/jit/tensorexpr/operators/matmul.h,sha256=1_W_nubAKxRtQElE8cIbHUIMnYUpzGh0S-ubZDcUmpE,857 +torch/include/torch/csrc/jit/tensorexpr/operators/misc.h,sha256=Keqv3pTo-YL1k6Sk1uPn-WmQVKd9k5HOIv1yWKXtGfw,3542 +torch/include/torch/csrc/jit/tensorexpr/operators/norm.h,sha256=iP-nTSjXKVrcIJ0BhRfPi0Ureik5eHY4o-D6GIQST_Y,627 +torch/include/torch/csrc/jit/tensorexpr/operators/operators.h,sha256=_Ry3BgjJ7jD_7tip9TcAr456eHg-MBLFOI5SHIBh0vU,725 +torch/include/torch/csrc/jit/tensorexpr/operators/pointwise.h,sha256=8C9DJI3SpUov7VAGWsLgxd0QJFCvVan4zDiUBZVqkVo,3413 +torch/include/torch/csrc/jit/tensorexpr/operators/quantization.h,sha256=ELez7-v-cjZ4jo1uGghV51V34zyyNn9fNJhqnATQNrg,5543 +torch/include/torch/csrc/jit/tensorexpr/operators/reduction.h,sha256=o5Gm21oXdYuDycCYgzDJmTNYx1ORWT9FBj21QvWlDbc,1359 +torch/include/torch/csrc/jit/tensorexpr/operators/softmax.h,sha256=E5SPmORIGJGA7T-WsbQ17XGeOtEAP40S2RA6qXewEZ4,575 +torch/include/torch/csrc/jit/tensorexpr/reduction.h,sha256=IlW0-XCNfWWtBw3uIdtu79KxRpU6MvvF8Gu2Pv38UOI,9120 +torch/include/torch/csrc/jit/tensorexpr/registerizer.h,sha256=2p119qQdHGQP8HErMZfbA4la9YIuxsKyLGc2432tEvM,12773 +torch/include/torch/csrc/jit/tensorexpr/stmt.h,sha256=KX9ydeQE8JsiupZEwuNoTgJMTZCfuo02Ozif6Oc3Uq0,24074 +torch/include/torch/csrc/jit/tensorexpr/tensor.h,sha256=uzw4CIqoSprQabliELSqixZV38OH-1gNYWce6a58PMQ,10753 +torch/include/torch/csrc/jit/tensorexpr/tensorexpr_init.h,sha256=g29feo9fFx5y7g8-FTKgkyLz-067Vk1UgEbGJPhBIJ8,497 +torch/include/torch/csrc/jit/tensorexpr/types.h,sha256=avrlOuBF5XvP8gfas5K0H-Ef4wNyHa2U4WJcP-gGC60,4534 +torch/include/torch/csrc/jit/tensorexpr/unique_name_manager.h,sha256=SRV0LH8tZ03D2QOWlDf_UypE8KW8OY1taliuZ98eNA8,1079 +torch/include/torch/csrc/jit/tensorexpr/var_substitutor.h,sha256=kyXzHdMPDXrWW6qexm2NdLuZDoOckM047EG7gDpSAyk,1914 +torch/include/torch/csrc/jit/testing/catch_utils.hpp,sha256=9J4-d643UOXpEEozt3uj9IjBEOiYzO8hQl6MSrJvwWA,607 +torch/include/torch/csrc/jit/testing/file_check.h,sha256=kmx_9WCtQPYXNBEY16EtQa7hPG5_hdpQ9oUUQRDRcHQ,2797 +torch/include/torch/csrc/jit/testing/hooks_for_testing.h,sha256=qW-z-AW6Bh843JWoG1EaMaGtWnsCIBhSJ_s2BeZ6HOA,832 +torch/include/torch/csrc/lazy/backend/backend_data.h,sha256=KFer511g6xsjax-CTfHhesSd6iVyK-I9Lu0tm0OLfWA,1434 +torch/include/torch/csrc/lazy/backend/backend_device.h,sha256=FHbt6vo6-M7P6RPmTEHsn-wci86hDzaUKpJtokkDzmo,3165 +torch/include/torch/csrc/lazy/backend/backend_interface.h,sha256=LDrHg3jqgn--27fk9LjLLPvFah-BC5CAJeNyGfpQ0i8,5057 +torch/include/torch/csrc/lazy/backend/lowering_context.h,sha256=ByjZ8kTR6xJQv3djqkb8-FVoTwU7KiaMhQod0sCxbnI,3492 +torch/include/torch/csrc/lazy/core/cache.h,sha256=NPX66NO6k1kTnOuxuoXhvqDKeSggJgYdX9ycmXZS_0s,3979 +torch/include/torch/csrc/lazy/core/config.h,sha256=NTCfI1DLjGKJ_CenoDuhGgOGFA1CNiRKQIPikR1UOTk,1165 +torch/include/torch/csrc/lazy/core/debug_util.h,sha256=WofYQtKMOilg_NYSJJGOVpp0-j620_Xow_uq4OKOHdg,1528 +torch/include/torch/csrc/lazy/core/dynamic_ir.h,sha256=r5M9Jz8i2QslpW347zzyDieFodJ2RKDqeouU9CLhr_o,1651 +torch/include/torch/csrc/lazy/core/hash.h,sha256=JqcW9fbKY4LHGuK2n-TKi3FXzIlOMW7hEftR_o5Lvzo,7853 +torch/include/torch/csrc/lazy/core/helpers.h,sha256=spbVctMT_ExB7IAJ_I41c8683CfcuSND9YfrQiHRogY,2477 +torch/include/torch/csrc/lazy/core/internal_ops/ltc_ops.h,sha256=u7eSsjmKarTO6HoXAQmGB6ovkv4heVKITcGW9z1CdB0,1704 +torch/include/torch/csrc/lazy/core/ir.h,sha256=x-wp2s94Pd5-Ap5BuHPNSY1KLDBqhGmRmJJdypD6_P0,8165 +torch/include/torch/csrc/lazy/core/ir_builder.h,sha256=LFFuUi2tQnknn1vAc3NCMbqYsZkeQ2nfNTgslIKwOEo,4963 +torch/include/torch/csrc/lazy/core/ir_dump_util.h,sha256=wTnx_SqhzRO0Iqj_l0XOZyi2VlG5pxl9c-4x7ZW8Gh8,918 +torch/include/torch/csrc/lazy/core/ir_metadata.h,sha256=4gKlybk5kMnedrHtuxn2VFPw_GA9froaCjFyz74eTmU,1577 +torch/include/torch/csrc/lazy/core/ir_util.h,sha256=N8jZgssPrh2RquBZ1MPnCn76GLaRwP7flOdYfoNbpNQ,1620 +torch/include/torch/csrc/lazy/core/lazy_graph_executor.h,sha256=vZ0LzZKUQDKZW9aHmDTnX2VG9CPcqVK6O-WwjW5gG18,15285 +torch/include/torch/csrc/lazy/core/metrics.h,sha256=wlwOLg_QznDs-jpVtpLZUXH1o3y8Hcp7DM1MGgqcb0M,8505 +torch/include/torch/csrc/lazy/core/multi_wait.h,sha256=g_DRC2nbclyo9wPg59GPkARRRkCblYJJNqIoVIxGYn0,2003 +torch/include/torch/csrc/lazy/core/ops/arithmetic_ir_ops.h,sha256=tm0XXxCP76MrNTvigLQ1ndJk6KuqoMSqcutoDtn2iMU,635 +torch/include/torch/csrc/lazy/core/ops/utils.h,sha256=GImlZp7FQGsmM8HqgcEIAvJaugEUSi1Ti4QrJd1X_R4,1239 +torch/include/torch/csrc/lazy/core/permutation_util.h,sha256=Q9MUTbUEkCcM9J5muU9oNYCgBRZmcC2bdldsBM-N5mY,1506 +torch/include/torch/csrc/lazy/core/shape.h,sha256=hkUJcwT7We7i78k6tn1IJYqxBs6ZbQOFu704igBeqQg,2269 +torch/include/torch/csrc/lazy/core/shape_inference.h,sha256=T4svTZ8aGNx-uMpB-YyO0JzP2brFqyAt-Zuo64zMOX8,15656 +torch/include/torch/csrc/lazy/core/tensor.h,sha256=cM7lEIXw4D6wbYk1GetFdqNqai4NIKJXOaz8ZYmSWrc,10134 +torch/include/torch/csrc/lazy/core/tensor_impl.h,sha256=dYQ-izxXl2wfr3OfEkUi-b_FKG-i-fhxuWuPp8CLkGY,2170 +torch/include/torch/csrc/lazy/core/tensor_util.h,sha256=PrHDUfoMAsIrCQMMM2EmwU13pZBR7kaupc0wdWS2upc,2790 +torch/include/torch/csrc/lazy/core/thread_pool.h,sha256=K_THTX12OXQHK-6-Hz9rKnkZOZ-LiGzgRf85XjTGm14,1046 +torch/include/torch/csrc/lazy/core/trie.h,sha256=BSxr1ajdACgUhkgPOat-UgRU54-HPj6YdWFoSvv8juw,2446 +torch/include/torch/csrc/lazy/core/unique.h,sha256=I9Bp4qmGEQL4iBw8gIVUFf6yTE25bmc4T_EOL6aP7eE,1427 +torch/include/torch/csrc/lazy/core/util.h,sha256=HpMCdADPJ5pddLtVHMxCFU1Wz3cRbK1rRzRR-unOjNw,3127 +torch/include/torch/csrc/lazy/generated/LazyIr.h,sha256=_sMPAn8432z8zxwyCin1a6Ry-eIAwz6xeaI1kbtSXZI,296076 +torch/include/torch/csrc/lazy/generated/LazyNativeFunctions.h,sha256=1-U98BOSCutmRtKFomtrqB18Aawfk-C5O4q_IYwVx6E,23104 +torch/include/torch/csrc/lazy/generated/LazyNonNativeIr.h,sha256=gGlt2iV9CIh2ZhzFATnhnRO7jwtPSTDxDw48Op5k4Gk,4197 +torch/include/torch/csrc/lazy/python/init.h,sha256=NZYCX2lL9lwbHUnsXw5YgWxETS4lqMJn5ZPCUuz1_nQ,478 +torch/include/torch/csrc/lazy/python/python_util.h,sha256=gWzcbBoLIC17LCUycSWsDWXr1ZnqzQjvFibyIfpaA_0,569 +torch/include/torch/csrc/lazy/ts_backend/config.h,sha256=JPAgsEYiOlNHlNWphPlOEQ77bRs_cvscW90lKvdXqKc,460 +torch/include/torch/csrc/lazy/ts_backend/dynamic_ir.h,sha256=cyUKC1y86Db3LhHl85BrRoQDvtcSZsPsywGw2Z0AhCE,2610 +torch/include/torch/csrc/lazy/ts_backend/ir_builder.h,sha256=R-54wutbGLkaVoEjX71KPDenJHRvCQdX_67CxuVOlaI,2645 +torch/include/torch/csrc/lazy/ts_backend/ops/device_data.h,sha256=llMQNQtVtsJNjTASKtIsTqHpOZXvkA6_WgZQo6c2FFA,1550 +torch/include/torch/csrc/lazy/ts_backend/ops/generic.h,sha256=YfpQxCCAq4_QoJEy886VfiMFn4LhD8tzd2FPdnZOWzs,1682 +torch/include/torch/csrc/lazy/ts_backend/ops/to_copy.h,sha256=QP6Bl2xw3qUxqY8wzdAm0bJJeprhXBX_SQpFBRGFz9c,4333 +torch/include/torch/csrc/lazy/ts_backend/tensor_aten_ops.h,sha256=zjZsB7ks-66zjdNXNjB1yzaaJfgbbLHcYZwGSFCIXuU,777 +torch/include/torch/csrc/lazy/ts_backend/ts_autograd_functions.h,sha256=PF6QsWXwmBJ8as2Bi1S4D6A-QwkNUVdsBEyTnCxsA0A,880 +torch/include/torch/csrc/lazy/ts_backend/ts_backend_impl.h,sha256=RmrFgmvb6YpwJ9OfalU3ykyLbB36Y-QH57WZUkixh68,1494 +torch/include/torch/csrc/lazy/ts_backend/ts_eager_fallback.h,sha256=zzuu9qy_l3DK__izeiDULKw8BXVHH6_3_VrwD9QZ7Nw,946 +torch/include/torch/csrc/lazy/ts_backend/ts_lowering_context.h,sha256=JLTgyK1_rv0JURMXdpkxypmoeJU9XS1t83_kOZcgEn8,4766 +torch/include/torch/csrc/lazy/ts_backend/ts_node.h,sha256=svuUBEC01SrGzKuSktuyePEGf5LHLij6dzDiSgo8HsE,3605 +torch/include/torch/csrc/lazy/ts_backend/ts_node_lowering.h,sha256=Ae0WcTTYggl-ltP4TJhF4CY_fWLsw6oiL5WW2DNhJWQ,720 +torch/include/torch/csrc/monitor/counters.h,sha256=1M8nPXP8kvJh07G84-8Er_Yxw4aCOx4s13hvkkGT0ME,8097 +torch/include/torch/csrc/monitor/events.h,sha256=gMjVvEPEKxzWiDz_836HQxHw780l01DOxKGZjDw0HXA,2936 +torch/include/torch/csrc/monitor/python_init.h,sha256=ffmFgZ0KuXD-55U1Cl5L5NILNxO1GmFy55Giy78OCKA,381 +torch/include/torch/csrc/mps/Module.h,sha256=Apu7gii0dgPwg9bKgKnTjByEbqlIGalnAcMe_xO8okc,427 +torch/include/torch/csrc/mtia/Module.h,sha256=YFWOdviupcuSSKOYYRkRc0WQvAzgTDm2jFgYg1fMg1M,432 +torch/include/torch/csrc/mtia/profiler/MTIAMemoryProfiler.h,sha256=u6o2GVJoyjszRJ-PtMxVhaqDIjYFPhyKGaxKPM7hUs4,801 +torch/include/torch/csrc/multiprocessing/init.h,sha256=MDM3byavkbVz0s27gK41WWSm2QXYY_D5CzdeQZum3-g,422 +torch/include/torch/csrc/onnx/back_compat.h,sha256=NdCcjbbsoMV9cfLR7VgZG8ZY6Xx3QW67FEPpfBX19VE,1278 +torch/include/torch/csrc/onnx/init.h,sha256=nofikk1oLIWEWuDOtCxajPECVUwk1wfwxT32f-xeuGY,400 +torch/include/torch/csrc/onnx/onnx.h,sha256=iB8JqbKgTU0LEsC-MyZ9CzQMm-vDTwObYrg2JDfyBcU,759 +torch/include/torch/csrc/profiler/api.h,sha256=xGirYXerLVr29MBGKasBpHlty_2R_ubR6PO3tKX1O1I,764 +torch/include/torch/csrc/profiler/collection.h,sha256=9ukrKO6LKrc3sXCce4pdMyetDVy6RF-QZV4KMXEC6BE,21477 +torch/include/torch/csrc/profiler/combined_traceback.h,sha256=dKxMUihbgdnMbjtHvMQ8yUpUesaEC5UyRiNijtQMigo,4158 +torch/include/torch/csrc/profiler/containers.h,sha256=WDZSvZ25EhAZxa6QLBLacg7GG6U3ar_tzJf9sBB7aHU,6248 +torch/include/torch/csrc/profiler/data_flow.h,sha256=q2ojqcszbAWhZip6MuCo2C29sArfBFA5niAMTLuH94A,3880 +torch/include/torch/csrc/profiler/events.h,sha256=QVTGHVeO3B_dz8xeUEEH1EUpK_QxGWFcc2f7-VmXsyk,1290 +torch/include/torch/csrc/profiler/kineto_client_interface.h,sha256=k6Da71DcfA4CuBppIXQHFWx_MzxBxa1DKkQJH8wXBAs,500 +torch/include/torch/csrc/profiler/kineto_shim.h,sha256=ud1EfYiSxQ-K5YDMCEqQcHR4FwO2ZaaZxS0-7gTQki4,4343 +torch/include/torch/csrc/profiler/orchestration/observer.h,sha256=JONGVhaHu3nMVicqi-8SHR-CUKoSBQRpmyUYbHpWMig,7774 +torch/include/torch/csrc/profiler/orchestration/python_tracer.h,sha256=xtE70933sen95GAWc3N2hCTimRsoHukfVRmFBeAjmDw,2558 +torch/include/torch/csrc/profiler/orchestration/vulkan.h,sha256=JnVjekrFW8Syv2J0DIRh9esqtM6UrgjlSeIafZB3m5Q,1030 +torch/include/torch/csrc/profiler/perf-inl.h,sha256=P3W5T5ZGJO6H6kyGVG6jdJ6IZDz6KN7-j8YhZY_HMng,1658 +torch/include/torch/csrc/profiler/perf.h,sha256=dX35-crTvUn84O5tX42GJFFEyTjvsmLeC3tXHd-LW8I,2847 +torch/include/torch/csrc/profiler/python/combined_traceback.h,sha256=_a1nMBwi4_f_CXlvXoLDI_FrL4lWKhkmb2m6e46q8Qo,1246 +torch/include/torch/csrc/profiler/python/init.h,sha256=ZxXqiKbTO0_Ym1-doIZBz9UgqpeLrJR5U6hSfnnSa4s,1252 +torch/include/torch/csrc/profiler/python/pybind.h,sha256=6yCJymuZHstk5mhrEKwMtL9CHtFIc1yZ0-4U5DokRzs,1515 +torch/include/torch/csrc/profiler/standalone/execution_trace_observer.h,sha256=XEu_BQoKycd7zvUbK-8qo6MsoTZiDlGTyQB4QlS6ndw,882 +torch/include/torch/csrc/profiler/standalone/itt_observer.h,sha256=e1m64SgR2WYIjNv8SpkugKFihDL4L0PoYwnZaGPjXpg,478 +torch/include/torch/csrc/profiler/standalone/nvtx_observer.h,sha256=C6vGiw36g4tlZxw_gYFxGwzHkIPdp1FHKJdbCEICyoM,479 +torch/include/torch/csrc/profiler/standalone/privateuse1_observer.h,sha256=7lrsKkoS165BrnTYC1BWwu-qiOTtq2Y4jFwxVTwTcXE,1675 +torch/include/torch/csrc/profiler/standalone/privateuse1_profiler.h,sha256=B-sdxsFd7UKd8EQgSnQK8JbCrg58SRYY7uNXFlMoGM0,4012 +torch/include/torch/csrc/profiler/stubs/base.h,sha256=F7fUVssVS6_IjHPZb5thWw9vro26s8ykVwsazBds5hE,1939 +torch/include/torch/csrc/profiler/unwind/action.h,sha256=9LFKtggxTENmyAtkeJyB-mNJkt6Sl_SpG6_js89wJHc,2233 +torch/include/torch/csrc/profiler/unwind/communicate.h,sha256=9Hw2syApVGUsDyKQiAKXmzWwu9G2xsuIEJGpf-UTFzw,2506 +torch/include/torch/csrc/profiler/unwind/debug_info.h,sha256=_5sgKQQ3zaBPE5Qwo9-RtMmKgFXyd9SKvL9QvPWI6qU,9354 +torch/include/torch/csrc/profiler/unwind/dwarf_enums.h,sha256=FiB4IwZLquC7J5QSlDCZeQSa7_YutAutZX4wi1Umkqc,1397 +torch/include/torch/csrc/profiler/unwind/dwarf_symbolize_enums.h,sha256=02cDTcepBwtkBB2xl6j5kRR3439c7zZv5KDsZs5Moi4,4912 +torch/include/torch/csrc/profiler/unwind/eh_frame_hdr.h,sha256=NGXHq0_cbbCQ5O9GNSexDktFO2IOiXCbIgPPaLl_NQw,2934 +torch/include/torch/csrc/profiler/unwind/fast_symbolizer.h,sha256=tBeWMSZVhAUxibcIYVB9iqwU1DV9pFI_qqCeO8ywAMM,3557 +torch/include/torch/csrc/profiler/unwind/fde.h,sha256=wjsRFhNtKODHk5UPYns-nZHI4fXQmamGNonaeneZW8I,12874 +torch/include/torch/csrc/profiler/unwind/lexer.h,sha256=qteUGXS78lP8Q6EJU2JanNwUSMqRnkUx7GZBs6Vfws4,4135 +torch/include/torch/csrc/profiler/unwind/line_number_program.h,sha256=93WN5uZJIAdg3zdESlMPDOALhphl8HZKUxvs-Vc2UKI,11079 +torch/include/torch/csrc/profiler/unwind/mem_file.h,sha256=1wXn3uYzPJ80v5-XOfmhAncaubiw_jjv-bt686idwpQ,4843 +torch/include/torch/csrc/profiler/unwind/range_table.h,sha256=2fRNVYzs6KNiFkvveN9awqa5oNIxwcxIi8s2F52-0BU,2363 +torch/include/torch/csrc/profiler/unwind/sections.h,sha256=i02YUf5QMuuzJgdfAifWcIOZl8P3Ip4S5SrnqkZKdug,3922 +torch/include/torch/csrc/profiler/unwind/unwind.h,sha256=xaMH9xCsVyhCHotSw6e73aqNRz8d-oCduQlP4vSGtFQ,1387 +torch/include/torch/csrc/profiler/unwind/unwind_error.h,sha256=6SFMi81YnkNMvPRi4_ar_4PMplmX2VJmAP0sVGJZSYI,1152 +torch/include/torch/csrc/profiler/unwind/unwinder.h,sha256=I1rnvUYCiIbqTUfkuY6LECFlOXnzAdTZkgqxU8P3rl4,2672 +torch/include/torch/csrc/profiler/util.h,sha256=8cpmGim5ThzCK07BImF0Kt7m-BnnnPMxxrd6PRmFuZ8,7191 +torch/include/torch/csrc/python_dimname.h,sha256=myFoabBPfQqnBLUwqLepYasPlIhxdBrnHLf4HJxOSxM,468 +torch/include/torch/csrc/python_headers.h,sha256=W1ASyJDtRGr7YTipLtmOGZ6N2gzkNjM_8ju-vWUwi-w,903 +torch/include/torch/csrc/serialization.h,sha256=3_Zm2oq56ytJX1nTZXV1xGdum9BkuUusbG739Tty8wE,935 +torch/include/torch/csrc/shim_conversion_utils.h,sha256=WzsYcnAgrlZQ5lbDSZK7e3hTM4vAoVoQbIDPnYFlrQ4,926 +torch/include/torch/csrc/stable/accelerator.h,sha256=zaFRdnbdCYUTQ21uay8jr8ExHgensZ09ZlfZa-ZQuXo,3154 +torch/include/torch/csrc/stable/c/shim.h,sha256=YQsMH-MMKQKQktSaxumSGLWLpOj4jNXm8vYBMuJQocA,8067 +torch/include/torch/csrc/stable/device.h,sha256=c127B_czfZfuAQikoKN5kuiOj3eK-zWs5aMJ09mz0-8,101 +torch/include/torch/csrc/stable/device_inl.h,sha256=9qoxIAI9UQb9TRi9JWDsWqcPZgH-nkuCD7r-BjC2BrI,1349 +torch/include/torch/csrc/stable/device_struct.h,sha256=ItDv-YgxfSNzDo_IZf9vvA6_vlbC5mfqDJ2YafDii5w,5111 +torch/include/torch/csrc/stable/library.h,sha256=3WCxJThVGS8T66fN2A6BSDOH5kUuLaW7B28rqbWH6no,13092 +torch/include/torch/csrc/stable/macros.h,sha256=vild052zPBgRQSSnc5CPpUrKJV5F81-z9fxUIrc-lKw,1183 +torch/include/torch/csrc/stable/ops.h,sha256=jjAe-zFmTonbYvDDLyB4tqGYhUUbcdTDhC-5zkoFpFA,42768 +torch/include/torch/csrc/stable/stableivalue_conversions.h,sha256=hTVWcPL6rHbAxeX0-ZVdZ9sHKG1LgVGP4hi6YN8tT5c,39867 +torch/include/torch/csrc/stable/tensor.h,sha256=MIwb6Kq9H9Ry_wh9uij65SEUpw-JYddJ4UI9YFMvf6M,101 +torch/include/torch/csrc/stable/tensor_inl.h,sha256=YyQEmbrqJoZcXaS9QuvJ2uHqBWKaCQ2B1VOABGuE7SI,3172 +torch/include/torch/csrc/stable/tensor_struct.h,sha256=hhi_jLgU7fETnM78kxTlPqEsUpS-ZNu6w4falbumbKo,14093 +torch/include/torch/csrc/stable/version.h,sha256=9YK-Wki3fwlaev9WmRCSWFUAo9Xr_FM3hsXnzPC8Z7I,1183 +torch/include/torch/csrc/tensor/python_tensor.h,sha256=W51E9SLaphq9d3dR2CqRLTiOnNrh8q2-hWuFPK4UGDM,1454 +torch/include/torch/csrc/utils.h,sha256=MEEk2pvmH89d8q08Yr31hjOXp9A3xi9pLlHWuUoEDkE,4884 +torch/include/torch/csrc/utils/byte_order.h,sha256=BhoYR327QBjuW7_X6MfbdW2ZcV2bi5x4XOsNuHJGDuw,2508 +torch/include/torch/csrc/utils/cpp_stacktraces.h,sha256=rMp2epRbiAYUnwzeEFtDKUgh4qQtsJfNcJb97fVluDY,484 +torch/include/torch/csrc/utils/cuda_enabled.h,sha256=tHkNXPv0rKNUg_ld-gA61f_7jYZ7AgUf1SkayPhxVhI,424 +torch/include/torch/csrc/utils/device_lazy_init.h,sha256=Lq2sY2b3o9L6sOsLVW3UJ3MsZ-_2NxjRJw4AYLDWF1I,3068 +torch/include/torch/csrc/utils/disable_torch_function.h,sha256=ntEGSYFVYb73xt4ar8X9M03q7ErmDb_KjuEbmqL5zcI,2164 +torch/include/torch/csrc/utils/generated_serialization_types.h,sha256=myz8tbNb5F1DHkDfSBZWNqADq8Nzj6fggrBvupED-kg,125101 +torch/include/torch/csrc/utils/init.h,sha256=yFogmRgeaTycae64CMu1uQsaqrZ28T0XiBmcHTRLcqc,447 +torch/include/torch/csrc/utils/invalid_arguments.h,sha256=OYo7VRpe44aNaGGvVJIL7xPSI3rBFkGUHtRGYQyEEX0,556 +torch/include/torch/csrc/utils/nested.h,sha256=eBsEENIGSfa5kjay2Xmc3AIgUDRRN4D9g5A5nKDsJ-o,560 +torch/include/torch/csrc/utils/numpy_stub.h,sha256=iSr881WC_2tdoB55OTK2oUk2yXL8OscXS5oL45TOY3A,653 +torch/include/torch/csrc/utils/object_ptr.h,sha256=SqtlMKOikYchibyiqOvsV8MNUDvsEiS_4_X5r7QM7Kg,2254 +torch/include/torch/csrc/utils/out_types.h,sha256=mwq_iEveRZqZR9NfUx-XdC4Kr-ltwSVXsi7i27v8RrE,574 +torch/include/torch/csrc/utils/pybind.h,sha256=xa8X7QCUioJ5WC0L87bw1-ADNlK0MH7l40ii1CLD7fA,13429 +torch/include/torch/csrc/utils/pycfunction_helpers.h,sha256=OaKMH7DhZUQeC6EjF-XjrOK4OW1vfZLP6BUzXQ41-EY,1061 +torch/include/torch/csrc/utils/pyobject_preservation.h,sha256=rUW1oCr5l4bbkZ199tXlkDktOVuiC6rooCkzjF58yOc,982 +torch/include/torch/csrc/utils/python_arg_parser.h,sha256=GCsd09IwgHfWGrfhtudpQxzpc0IYry2gPJMZs0UJ3dY,43970 +torch/include/torch/csrc/utils/python_compat.h,sha256=Vr5VaAfrlhP9EJw5DDAa38PuiZAThz_SNOVB0TPe9w4,1222 +torch/include/torch/csrc/utils/python_dispatch.h,sha256=jqjX8Y8ebUUoXE6UZOybFRzMLM5VR94uZmu4fYty7Fg,651 +torch/include/torch/csrc/utils/python_numbers.h,sha256=1jrABqT3xL7BQzUwi5oNfjscA0Z-kxKUWEtano1BxZw,6383 +torch/include/torch/csrc/utils/python_raii.h,sha256=JLoYiMGFICxaIMoH6u5e4vp6SGE4W2N_EpTxD78NlV4,2912 +torch/include/torch/csrc/utils/python_scalars.h,sha256=JLGvlzGLJHFu1PLBKyxEcAc8OVsYHKNcVlhKG-4WkUg,6282 +torch/include/torch/csrc/utils/python_strings.h,sha256=lg0THu6tMRvIsihohsa49N9EpO3BBIt6ogFLv6fegCQ,4857 +torch/include/torch/csrc/utils/python_stub.h,sha256=JqFk4mKCyu0chr2QF5a1IqXXbi9HPecVk_VhA2TxtCA,310 +torch/include/torch/csrc/utils/python_symnode.h,sha256=TsvNCunai6IiBOL_wAcNpqeWMSh_ftOmtxzT-DPzd4c,10375 +torch/include/torch/csrc/utils/python_torch_function_mode.h,sha256=DxJo0hwTAG1hkq5LWJgXK58NUHiS4CDAbsrsBK_SkVY,1094 +torch/include/torch/csrc/utils/python_tuples.h,sha256=I8rMtebgRbe52cgReGUGwmmNk2HBsukIZaGg3V4VjkA,980 +torch/include/torch/csrc/utils/pythoncapi_compat.h,sha256=9ZKnncRIDr_22WnehcTVL4mLVJ9S1t3_sO9KC_Ch7D8,72696 +torch/include/torch/csrc/utils/schema_info.h,sha256=kAn1bspmNcHr91si2o4ei6k3fuQ1-NvtoT-ISRENK6M,4043 +torch/include/torch/csrc/utils/structseq.h,sha256=2G-lkmF_SYF2ECFSJwOLA6HBYFctjEwcgt924a5jfkw,395 +torch/include/torch/csrc/utils/tensor_apply.h,sha256=utGr0N-b-NAYkc68JEZcyeKrNncROANSHTpEQjidt4k,682 +torch/include/torch/csrc/utils/tensor_dtypes.h,sha256=cfAjJqa_c3rgNnj3ZxtnCRK-Ozyaykiwy9TfeXbilpU,496 +torch/include/torch/csrc/utils/tensor_flatten.h,sha256=-JgUD7iNFqUTEhe6bDougZZkdibYt3QuRmN7CPJBD-g,2999 +torch/include/torch/csrc/utils/tensor_layouts.h,sha256=9iqdB6L0Fzm8LXUjOKgSg8JDxxPNAvc6p_YG_YCCqOc,323 +torch/include/torch/csrc/utils/tensor_list.h,sha256=_dWalILXx6uIho9CQRwN-RW7hiVOikXfvR1Vu7geUYo,421 +torch/include/torch/csrc/utils/tensor_memoryformats.h,sha256=nV8q2ZOPt1auubOHrtFZvobiPTsqvo2UUT9ohUAi0qQ,600 +torch/include/torch/csrc/utils/tensor_new.h,sha256=3p24CSRxCljCviIdlOehwuz7jRXW1wWIFfI7epvhuI4,4300 +torch/include/torch/csrc/utils/tensor_numpy.h,sha256=CKuofC4dLDOzDQd7lBuoTWcagNQp--s7Dp_TrwVb6OQ,1129 +torch/include/torch/csrc/utils/tensor_qschemes.h,sha256=yOncI33ZbiK-oPvZEnvWapNXE0wRSqzZNit4zyCCOz0,428 +torch/include/torch/csrc/utils/tensor_types.h,sha256=z8Fq8XAQUE-NWt-AeOelujtTbpzllUyHm3H4D-Xd3EM,923 +torch/include/torch/csrc/utils/throughput_benchmark-inl.h,sha256=JmcH6qIqFot8fp8cLSVF6RIyEMdbGNyCxjUYZY5dP28,6590 +torch/include/torch/csrc/utils/throughput_benchmark.h,sha256=WcS0hu1H0O6aqlflKnQyuwo9V15e9sv4NR-zA0x2WkU,7191 +torch/include/torch/csrc/utils/torch_dispatch_mode.h,sha256=c-D7EjkxhFiKGeEzuGWzAbE-Iq8rVsqmrklnwamj8G4,2529 +torch/include/torch/csrc/utils/variadic.h,sha256=gbXQ7bGebPOoVsGoLjc4RycltMc1BYLTKcUv_VxUGw8,3630 +torch/include/torch/csrc/utils/verbose.h,sha256=YMrRuUzOz8RuhXUsyIH2uzVkHpXGp6iWrV1mgVwrpqY,392 +torch/include/torch/csrc/xpu/Event.h,sha256=DUja-x8C-w3C3xD_lzTVDY61kgx1PVLn1zWi8m758MQ,623 +torch/include/torch/csrc/xpu/Module.h,sha256=ITvFMk9MWU03WLLy-BOZmpoJnIVF0f70KlIO3dtoTTw,430 +torch/include/torch/csrc/xpu/Stream.h,sha256=6lPNJMuXZqw9O-_PNTb5EY9fXplRF0Jj0JfbV0xXJ7g,691 +torch/include/torch/csrc/xpu/XPUPluggableAllocator.h,sha256=ZAKYjogIIzPBamhYGB5ewStINvWxF1lRt8dCbiXCVpQ,3124 +torch/include/torch/csrc/xpu/memory_snapshot.h,sha256=VSJFwIr4rNRd2iY6UrwQAaacCT3DCbt52jQl4UBdN5o,730 +torch/include/torch/custom_class.h,sha256=tTZxsho386NSvF4bRp4L-fNlXiWtlAfWN-NFESIEFTs,20076 +torch/include/torch/custom_class_detail.h,sha256=BIE1P3Ie7e5Ma5Ii9I1_xp5rlR_ZyY95ADZ68LYGoUU,8086 +torch/include/torch/extension.h,sha256=2juzxgbeXcd8wDHl9fCm-8iqxJ8YnqutefZANPuWnkg,467 +torch/include/torch/headeronly/core/DeviceType.h,sha256=3VX6zWVEIf5ChLy6EUKdXEOLMB0I8uIO4cI6Pc66CS4,4460 +torch/include/torch/headeronly/core/Dispatch.h,sha256=cdTOahmNMCFJ_1qKM62sYWYRzooKV7_3nfUY_XxgJ34,3825 +torch/include/torch/headeronly/core/Dispatch_v2.h,sha256=CzUSaaTunLFhT8KmZ3MUNLpcB-AbeIc69-XfWa-J60g,32823 +torch/include/torch/headeronly/core/Layout.h,sha256=HFoNirxYWVYbAcPO_UtnWv3lhAwY37RKczzFKgf3wKw,948 +torch/include/torch/headeronly/core/MemoryFormat.h,sha256=K7Q7XLCpUnKaFrI0k5D1hGOQK5X7obWQAQkF7a1PVH0,1206 +torch/include/torch/headeronly/core/ScalarType.h,sha256=C7Lrm8rgVAqcvDfYmR-lvdl6VBIHZ9cIeneMOiKk9b4,17784 +torch/include/torch/headeronly/core/TensorAccessor.h,sha256=j_0qsKM8oV-CQJGO5YXi6fX9v-bn9LqT4R3tG5dlnuw,13907 +torch/include/torch/headeronly/core/enum_tag.h,sha256=99O4BSvG6nPAIsWXkytyMd2LPB75xx7ZFO9u9UiBdoI,787 +torch/include/torch/headeronly/cpu/vec/intrinsics.h,sha256=PV2_UwjmjaVTKAc1PjPerISePzJnTLKf5iynUNFmnHM,1917 +torch/include/torch/headeronly/cpu/vec/vec_half.h,sha256=kXa2ne1je1uWnwec2732Zx8jV1gNFlRa7yw1k2X5D9o,1740 +torch/include/torch/headeronly/macros/Export.h,sha256=bC2_b5PrzlYBQdkmBhe2MH2nEOADscHqdLuiBVBQcO8,5599 +torch/include/torch/headeronly/macros/Macros.h,sha256=jiu1NgIaK8gExY_IC8o4HXREyQCciXqmFmKK4i0VJp4,27451 +torch/include/torch/headeronly/macros/cmake_macros.h,sha256=GFBE7BEJHYCFrGffrJidYZkCT-srrcDCzMM65W5ZjGQ,445 +torch/include/torch/headeronly/util/BFloat16.h,sha256=zVdwWziwVmCEAigHHrDubaxG81DRvfoRSW7KZDeQvmk,15277 +torch/include/torch/headeronly/util/Deprecated.h,sha256=tyNcwEnjhdHs3LbgKssdAQqInoDJXNhgcSg1z2sj3nc,3579 +torch/include/torch/headeronly/util/Exception.h,sha256=IJVuC3dAGEfh0M5pap7hFGyRixEgOQjwfR83CFsdSUk,3422 +torch/include/torch/headeronly/util/Float4_e2m1fn_x2.h,sha256=G734w0W4oOe35KET9Tap746EWyTe7G6SbMmoNHvyt0g,1326 +torch/include/torch/headeronly/util/Float8_e4m3fn.h,sha256=C1vYaZvcThxJzUg9ZMjrDKpxhrxut8TrzLReI4Kmk84,18606 +torch/include/torch/headeronly/util/Float8_e4m3fnuz.h,sha256=hHD8n_B5ZVtktOqv6jxhtdMteaJt-5JVyNehETKcVo4,14815 +torch/include/torch/headeronly/util/Float8_e5m2.h,sha256=YCEB1vgf5rR42qYQc6VoXz46wecBtlfGl5RbXSRrBeM,14852 +torch/include/torch/headeronly/util/Float8_e5m2fnuz.h,sha256=87PtkT3hft5BedgwSL39-4KA4_KRP_dMFWs51XE0nic,14898 +torch/include/torch/headeronly/util/Float8_e8m0fnu.h,sha256=UtF9d4bS2fnTUFA_UHHK7Y3pG1it99XKo3ZiaA67OsE,6938 +torch/include/torch/headeronly/util/Float8_fnuz_cvt.h,sha256=aVJimoCmZgfahBmkRR40USG1eSeAng5hzhclZTa5TDM,1920 +torch/include/torch/headeronly/util/Half.h,sha256=r2_DJws_bzPgHK1jNzj8v8T2SZXU9sEsik97PPC2hLo,28235 +torch/include/torch/headeronly/util/HeaderOnlyArrayRef.h,sha256=f_p0joOnbl3MTpJuOEefhvRPCg_3L1AuF0d8UiQKqzo,7712 +torch/include/torch/headeronly/util/Metaprogramming.h,sha256=jPSAnrndcYsql4SqkbcffUCImefhQJxQmlNfd112EX0,7444 +torch/include/torch/headeronly/util/TypeList.h,sha256=bbsfasQ9L24ryDshgykojdyL98jbAcFdjr0ygLu4xI4,17804 +torch/include/torch/headeronly/util/TypeSafeSignMath.h,sha256=HjY_mtA-ngu32v3y_U_Kl1SS1RZlW_OE1mjyFXMGzgo,4585 +torch/include/torch/headeronly/util/TypeTraits.h,sha256=C4S0eYZ8fQZnHQAKZcnfMCBE2PrZ8m0W8djVag2_nJE,5698 +torch/include/torch/headeronly/util/bit_cast.h,sha256=-YBNY7PSadYyIoF3IyB-_RvY19evGIVh-Zt9Vi8liT8,1426 +torch/include/torch/headeronly/util/bits.h,sha256=K1SQupBTltkxUVAH28IXO8VQqNf1eLkYqGGMKKT7gmc,1644 +torch/include/torch/headeronly/util/complex.h,sha256=DBoJapV0ySW-w8QqKy3muh1YuxlunJC_4KU_Yx83Hv0,18096 +torch/include/torch/headeronly/util/floating_point_utils.h,sha256=o36InAmLzUt4OsrTbNeM2dNwCT0xbjmkOqYwewTZ1h0,1047 +torch/include/torch/headeronly/util/qint32.h,sha256=NjQBdVMVQoI1SxNNrtgEOOScvOLpgwPrTHIAmIlMSJY,434 +torch/include/torch/headeronly/util/qint8.h,sha256=JIN-Vao78wIx0308UT98URVQZdmXfYX3oTuzqlOi--o,586 +torch/include/torch/headeronly/util/quint2x4.h,sha256=vSoOsu-raTav0QIldQWUhYp9bY88d_HD3Kn_VXdRm9M,483 +torch/include/torch/headeronly/util/quint4x2.h,sha256=Pu82ZJKu21wqi232YMuAmtTWtq7DKaIek56Lr9u-N1c,483 +torch/include/torch/headeronly/util/quint8.h,sha256=2W7tsPA88e_obpE9TqWAeprIXjjZkyqwOqvX6TlGz-s,435 +torch/include/torch/headeronly/util/shim_utils.h,sha256=m0wt7-KIUyyPwP0oD2Bl1TsfLiCMEbVU4ZhsE4hnpkg,1028 +torch/include/torch/headeronly/version.h,sha256=AjZIef0mQ1XP--aXymXLCtlAzdGSJkUdtTHKEYkRaYc,818 +torch/include/torch/library.h,sha256=aacH18q2lzMY84pdeHjuukS2usY1dOQUkdUP_GOGP_U,42695 +torch/include/torch/script.h,sha256=e7ma1b60NplDJbbjKdE0vS98ttRT1GzWH4xHD6jn_MA,723 +torch/jit/__init__.py,sha256=SiT48q3MakNgr5HAMtznarbUnw8UjXXqWJ9oJMHp624,8964 +torch/jit/__pycache__/__init__.cpython-311.pyc,, +torch/jit/__pycache__/_async.cpython-311.pyc,, +torch/jit/__pycache__/_await.cpython-311.pyc,, +torch/jit/__pycache__/_builtins.cpython-311.pyc,, +torch/jit/__pycache__/_check.cpython-311.pyc,, +torch/jit/__pycache__/_dataclass_impls.cpython-311.pyc,, +torch/jit/__pycache__/_decomposition_utils.cpython-311.pyc,, +torch/jit/__pycache__/_decompositions.cpython-311.pyc,, +torch/jit/__pycache__/_freeze.cpython-311.pyc,, +torch/jit/__pycache__/_fuser.cpython-311.pyc,, +torch/jit/__pycache__/_ir_utils.cpython-311.pyc,, +torch/jit/__pycache__/_logging.cpython-311.pyc,, +torch/jit/__pycache__/_monkeytype_config.cpython-311.pyc,, +torch/jit/__pycache__/_pickle.cpython-311.pyc,, +torch/jit/__pycache__/_recursive.cpython-311.pyc,, +torch/jit/__pycache__/_script.cpython-311.pyc,, +torch/jit/__pycache__/_serialization.cpython-311.pyc,, +torch/jit/__pycache__/_shape_functions.cpython-311.pyc,, +torch/jit/__pycache__/_state.cpython-311.pyc,, +torch/jit/__pycache__/_trace.cpython-311.pyc,, +torch/jit/__pycache__/annotations.cpython-311.pyc,, +torch/jit/__pycache__/frontend.cpython-311.pyc,, +torch/jit/__pycache__/generate_bytecode.cpython-311.pyc,, +torch/jit/__pycache__/quantized.cpython-311.pyc,, +torch/jit/__pycache__/supported_ops.cpython-311.pyc,, +torch/jit/__pycache__/unsupported_tensor_ops.cpython-311.pyc,, +torch/jit/_async.py,sha256=VZ-IFUaQy4Lxj_4Op69RSpWoIpdyC8lpqcthWHcptvw,4304 +torch/jit/_await.py,sha256=UG6mM5L4tF7NRDT5BfFX4njoM1B_EhdoMT59KsyHF-8,852 +torch/jit/_builtins.py,sha256=PE1J9wwL6Xi2hBRbC6NKtRCm8B30QDSO0wQbC-P22sI,6776 +torch/jit/_check.py,sha256=pAon5PwX0F0aENhczukFdu8R59Sqob-on9KnEMr9RDE,9772 +torch/jit/_dataclass_impls.py,sha256=3xo2DKMaUZv44Ngw1VYETZ4mqbwPTyX29U1VCItl6Co,6681 +torch/jit/_decomposition_utils.py,sha256=IOugHESe09GNFdtx4geGCppHwGUzp4EPskQXoU3PqG8,510 +torch/jit/_decompositions.py,sha256=Zrc3x4XHhVo9M2je3NfGysiTmL0i8xPaLwTuC-R32vU,4659 +torch/jit/_freeze.py,sha256=hfysa-VuzO1YStEQmu1bSBmEVOYl2ARYWLNLvEEKknw,9969 +torch/jit/_fuser.py,sha256=WK0-Wb-4jxYWBekc7jR9detA9_0-FSO7s_vl0QhbAJo,7617 +torch/jit/_ir_utils.py,sha256=QskhtXHHEmqXbfFBA_R8JdMr7OCdIqqZd2JuLEeT1Kw,838 +torch/jit/_logging.py,sha256=jWaacYoHjd_Cao_1hzyPKYiADS7cb7tLQc1gRkZblUQ,257 +torch/jit/_monkeytype_config.py,sha256=54Y0yNZHjeG84imUFnNk08cl-nWJiB1eSwE19tQ7uU0,7337 +torch/jit/_passes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/jit/_passes/__pycache__/__init__.cpython-311.pyc,, +torch/jit/_passes/__pycache__/_property_propagation.cpython-311.pyc,, +torch/jit/_passes/_property_propagation.py,sha256=4L1s-f_Ngp4Abz0Mf5t-BtQlEnyIWV2GPya6N2Om7qE,1438 +torch/jit/_pickle.py,sha256=lV929M0juZlRKP8-OwClLpLwxIb7W-74r055yqNc8wQ,1130 +torch/jit/_recursive.py,sha256=KsdaIhHyWG22jCUOV8l0Q34Vfk6K10jFj_mQgxKyNJs,42939 +torch/jit/_script.py,sha256=1M5Byj3XUAaRyXtLkeKjDcZFHQ7Wme2KnOlNRq8DnLU,68126 +torch/jit/_script.pyi,sha256=8LgMHIC1_beIEUEsOF0TvA38-oaRPY0WeocOA1-aoSk,9863 +torch/jit/_serialization.py,sha256=-sJ5EwAc7nr-193XbDmPQ1RkliQshkf_kfQSr0u1vpE,10698 +torch/jit/_shape_functions.py,sha256=_rBTifMTiYR-IwdERfcIfCIzd1KB7HfbKoaxu7FZFhE,52703 +torch/jit/_state.py,sha256=lOiv73EtiQebxiOG1o_0rMnZ1KiKVWkvDikBPLGWjTg,3880 +torch/jit/_trace.py,sha256=9pbDMRyMaa_N0EB-jKCriqnTACqD_xgYj_3p0GS0e6w,56369 +torch/jit/annotations.py,sha256=AMy0ZNG8eOwjwJtydIkX_ifOMJxyfE3isD-FyLCp5X8,18238 +torch/jit/frontend.py,sha256=-TteSBNjJesmL79r-tDOeEkDfYcnzb4dtRhIFkg6NPs,45377 +torch/jit/generate_bytecode.py,sha256=e-Ltj08oGvI5x-Q3SWgnU0v21B-YQafnhYDj3XJ_C2c,1042 +torch/jit/mobile/__init__.py,sha256=1S-ZgAQBSjkLiKnObxqWkxg50Pw2J_GNsX7R1BvHpkY,8601 +torch/jit/mobile/__pycache__/__init__.cpython-311.pyc,, +torch/jit/quantized.py,sha256=_qdmUEm74_VB2z0Dipf61uuvyefSkNAz0kLSPGxFMmA,3193 +torch/jit/supported_ops.py,sha256=Pe-f7iivLwVZF6P2z21xmLkCo9TuNw9S3EUdcu60uRA,10264 +torch/jit/unsupported_tensor_ops.py,sha256=JYLe90X6vb3BBzNB9xKY8VIRKtk2-LmsK-UXUbXMqYI,1995 +torch/lib/libc10.so,sha256=1yxtpEL9rxtLORay77nFsbo1ZPW1Tu-z6TGZB9vfzvw,1423328 +torch/lib/libc10_cuda.so,sha256=jdQRLQK51Hnz2BlV75RTzgTDa5PCGqutRukpY4X5MdM,589080 +torch/lib/libcaffe2_nvrtc.so,sha256=TJ3-yMDyx-UCnuvcueA9hqyiBqobYl3sznvCW1QTWTM,16608 +torch/lib/libshm.so,sha256=mkdkLTytt2vMZoK1ec4N8_G7yPxzBM6dYIJSDnq66yc,47960 +torch/lib/libshm/alloc_info.h,sha256=7SdVmCqiLa2mfKg-4DaB9rdpJnStPCmgXASpbjqtzBU,104 +torch/lib/libshm/err.h,sha256=j5cpgd5gS8_WgroKTyMLvDHDiXSe0GzbwE-1Sy88mA4,1258 +torch/lib/libshm/libshm.h,sha256=_6sOfY_vSO6mECr6XNIChm7r06uVO2fQRW-CZDOf5gs,1205 +torch/lib/libshm/socket.h,sha256=b_IuucKssZ6iHI_coGieeWw4aePAX9eYHly8l1BNyCs,4322 +torch/lib/libshm_windows/libshm.h,sha256=9MByK00M3an2HH2S8gFjZMUJsFJb96VRYE190Z-ALFo,779 +torch/lib/libtorch.so,sha256=ojCVnbgvxrUi3Nl0B8AAuqWz113BeeDzTA1UKxaY-68,14416 +torch/lib/libtorch_cpu.so,sha256=u30WqmVXSTU47J9BAw1uKcs3ED5duauzEhM2X5KF7_M,320251880 +torch/lib/libtorch_cuda.so,sha256=67lYvloIyt7GE66ah_HcPYI5CbVqMZdYSC7I4EORv3s,539185872 +torch/lib/libtorch_cuda_linalg.so,sha256=A8QD2rdnyXR-QG5hIkx__m3ee70Xn7JBT2qlGkYJAEs,574312 +torch/lib/libtorch_global_deps.so,sha256=cdf7A2HJz_3pn2pWkKaWepjIVYlYdizMb5rDu3GKcnM,14584 +torch/lib/libtorch_python.so,sha256=3-NnB2P1s0Dh2zIU1WUctZmAPd0vGMgHBdGqZc3rmmg,31291720 +torch/library.py,sha256=W0cO8XQwEkXnJbUPBGZAlmDzk3mfHlKDwxQZ3dG6gSI,68855 +torch/linalg/__init__.py,sha256=po-2QVSq2_zESTq8rl03s2ommvKgancirhYUAsZCDN4,116471 +torch/linalg/__pycache__/__init__.cpython-311.pyc,, +torch/masked/__init__.py,sha256=WljBC5z-aMQ3EB29GNw5BVnONrx14zh1Cgrz7fqJ-1E,928 +torch/masked/__pycache__/__init__.cpython-311.pyc,, +torch/masked/__pycache__/_docs.cpython-311.pyc,, +torch/masked/__pycache__/_ops.cpython-311.pyc,, +torch/masked/_docs.py,sha256=Jr-iD8MG_4F6Ip_yxboE8Or1ms-bo3ay_6pdggbfV44,49468 +torch/masked/_ops.py,sha256=TwGwveRib62Ad81KuZUr1NpOT25Ekxz-Fus7DvmQ4uY,67692 +torch/masked/maskedtensor/__init__.py,sha256=yRXNgVmvSu6WET5dYVroutE7gtiXkN1JuBwogvcTvsY,344 +torch/masked/maskedtensor/__pycache__/__init__.cpython-311.pyc,, +torch/masked/maskedtensor/__pycache__/_ops_refs.cpython-311.pyc,, +torch/masked/maskedtensor/__pycache__/binary.cpython-311.pyc,, +torch/masked/maskedtensor/__pycache__/core.cpython-311.pyc,, +torch/masked/maskedtensor/__pycache__/creation.cpython-311.pyc,, +torch/masked/maskedtensor/__pycache__/passthrough.cpython-311.pyc,, +torch/masked/maskedtensor/__pycache__/reductions.cpython-311.pyc,, +torch/masked/maskedtensor/__pycache__/unary.cpython-311.pyc,, +torch/masked/maskedtensor/_ops_refs.py,sha256=iUIohR1D-kldMvpsf7fjs9do2tAThFcfA6PRwAkD-YA,18131 +torch/masked/maskedtensor/binary.py,sha256=8cYTvBPO3P-8I99WQrVr1oLMDrXsfcWPwU-HMu6I4Dk,5496 +torch/masked/maskedtensor/core.py,sha256=5m6EdCtOXQfu76SnF5jzU9JdYIi2aREPq9CmaBq_0_Y,13059 +torch/masked/maskedtensor/creation.py,sha256=cuKrXLyknX42q3rbZOmrjmqgrFudey8GUh5Fmpu5YOs,605 +torch/masked/maskedtensor/passthrough.py,sha256=kEDm_BwgAN2erALo2NF8SLWX8J9jrAuySd9upW15-40,1447 +torch/masked/maskedtensor/reductions.py,sha256=lpGZNoL58xnxvhKntt2YMeZZUqcrGAzwijWSVhaRAmg,5599 +torch/masked/maskedtensor/unary.py,sha256=F3sO8CbzFYZhpTZxOx4nobOb7RRMgtx_gbY0IRbAXmA,4197 +torch/monitor/__init__.py,sha256=09VJnyTA2zwN2clbG0o6pV3Yf4YdzW2BospVTxNa4WU,1278 +torch/monitor/__pycache__/__init__.cpython-311.pyc,, +torch/mps/__init__.py,sha256=0IajD_CjncDWF3NfilyGVNilYZ-hYJYxzo_Mr0J_SUw,6239 +torch/mps/__pycache__/__init__.cpython-311.pyc,, +torch/mps/__pycache__/event.cpython-311.pyc,, +torch/mps/__pycache__/profiler.cpython-311.pyc,, +torch/mps/event.py,sha256=tobbRc_mwlY-8W0QlYxxQQg75sPO-25nLzR9Pw9Ix7Q,1730 +torch/mps/profiler.py,sha256=TaunF3Y7c_HW26Y7ECPS6MRUFl-D93ArcSPgKT-hMyw,3553 +torch/mtia/__init__.py,sha256=uE91Ju0ptGP6Dtkguil2HPo-1GYEGng6OCOYZB_g8ew,18991 +torch/mtia/__pycache__/__init__.cpython-311.pyc,, +torch/mtia/__pycache__/_utils.cpython-311.pyc,, +torch/mtia/__pycache__/memory.cpython-311.pyc,, +torch/mtia/__pycache__/mtia_graph.cpython-311.pyc,, +torch/mtia/_utils.py,sha256=b8D_IGip8ER-8kUIfs_tglz_Sc8CG2-_4YZ2pZHB7d4,1916 +torch/mtia/memory.py,sha256=_NQP8NoU3C8ytbaPFMN0tVWONd9Lu4gLh0Xs9wnpxss,2233 +torch/mtia/mtia_graph.py,sha256=tOqt7wSx2HlxHnE7dHmZefXOAMQSEMY_ljBik8Gi-vM,2656 +torch/multiprocessing/__init__.py,sha256=5FklmQB_ltILmXpEkY1kHsEvxVnhMW_fGGXLCn7Qm7U,3552 +torch/multiprocessing/__pycache__/__init__.cpython-311.pyc,, +torch/multiprocessing/__pycache__/_atfork.cpython-311.pyc,, +torch/multiprocessing/__pycache__/pool.cpython-311.pyc,, +torch/multiprocessing/__pycache__/queue.cpython-311.pyc,, +torch/multiprocessing/__pycache__/reductions.cpython-311.pyc,, +torch/multiprocessing/__pycache__/spawn.cpython-311.pyc,, +torch/multiprocessing/_atfork.py,sha256=NDXE2HR06ENj_1bGrQumxLdTGSDOlP-2bzeNwij7ajA,790 +torch/multiprocessing/pool.py,sha256=HQtd_V3oWKnkpQRrR4cutVFdlwxWwgCiUVPYSQXaU7M,1743 +torch/multiprocessing/queue.py,sha256=OT9KTbNOpqjhun_ZQTXizodE1UOwrpSbJhYRKtAyNmE,1477 +torch/multiprocessing/reductions.py,sha256=njCm-1F9r3ITWCKArQ_x47cL5_s4mEJnUYPuddhVWTE,23096 +torch/multiprocessing/spawn.py,sha256=lqqwiBGMGAwdqQftBObfOvpyDVgqdyuTResjEfPuCj4,12863 +torch/nativert/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/nativert/__pycache__/__init__.cpython-311.pyc,, +torch/nativert/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/nativert/backends/__pycache__/__init__.cpython-311.pyc,, +torch/nativert/backends/__pycache__/_lower_utils.cpython-311.pyc,, +torch/nativert/backends/__pycache__/_lowered_aoti_module.cpython-311.pyc,, +torch/nativert/backends/_lower_utils.py,sha256=2S0KcY-NadyeIEPGYIG6vDfG9H3nb7ac7SKBwpStX6g,3614 +torch/nativert/backends/_lowered_aoti_module.py,sha256=qBtnm7S4xagZczsqAdqcqmpLHwz-Z65tMvenrbSP3Fc,890 +torch/nested/__init__.py,sha256=00i4yf9AOOzVCXviAWuCaZHtCqvwi5ZPV4oepzvDMoY,22307 +torch/nested/__pycache__/__init__.cpython-311.pyc,, +torch/nested/_internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/nested/_internal/__pycache__/__init__.cpython-311.pyc,, +torch/nested/_internal/__pycache__/nested_int.cpython-311.pyc,, +torch/nested/_internal/__pycache__/nested_tensor.cpython-311.pyc,, +torch/nested/_internal/__pycache__/ops.cpython-311.pyc,, +torch/nested/_internal/__pycache__/sdpa.cpython-311.pyc,, +torch/nested/_internal/nested_int.py,sha256=9FoOZfUv3dcUrDOuRsrje6zORe23oqGnALGxEMsoYDc,3319 +torch/nested/_internal/nested_tensor.py,sha256=0EE3eFBny5uu9YBgA2Hz6eH896nBu630Rki1vQpfrTM,25964 +torch/nested/_internal/ops.py,sha256=oxMmPXIysp2pTVuDLEmjZ5Z_10ydhUUWwzG2Xn8TlSQ,97287 +torch/nested/_internal/sdpa.py,sha256=4vD9zF7SJHn1Hb_0ZVgyy_c7z3t-6rBEQgCzE3pNDTo,34645 +torch/nn/__init__.py,sha256=SGakM4nNGjI1YZwNintPfgNVTV5FrVKhiFXbq5Db8Pk,2425 +torch/nn/__pycache__/__init__.cpython-311.pyc,, +torch/nn/__pycache__/_reduction.cpython-311.pyc,, +torch/nn/__pycache__/common_types.cpython-311.pyc,, +torch/nn/__pycache__/cpp.cpython-311.pyc,, +torch/nn/__pycache__/functional.cpython-311.pyc,, +torch/nn/__pycache__/grad.cpython-311.pyc,, +torch/nn/__pycache__/init.cpython-311.pyc,, +torch/nn/__pycache__/parameter.cpython-311.pyc,, +torch/nn/_reduction.py,sha256=ndJ4VxoNYRrvspg35qJtWdkGi0Cu2XsMv-sa0rBDt-s,1626 +torch/nn/attention/__init__.py,sha256=VuELb5ZcwFDbeC3U3Ecgl8mwLsW1_jqyyLBAVcCwu-A,7256 +torch/nn/attention/__pycache__/__init__.cpython-311.pyc,, +torch/nn/attention/__pycache__/_fa3.cpython-311.pyc,, +torch/nn/attention/__pycache__/_fa4.cpython-311.pyc,, +torch/nn/attention/__pycache__/_registry.cpython-311.pyc,, +torch/nn/attention/__pycache__/_utils.cpython-311.pyc,, +torch/nn/attention/__pycache__/bias.cpython-311.pyc,, +torch/nn/attention/__pycache__/flex_attention.cpython-311.pyc,, +torch/nn/attention/__pycache__/varlen.cpython-311.pyc,, +torch/nn/attention/_fa3.py,sha256=8jIppH8SAQL19e6JM9kZzM20j-iVm6Kbntrz9mHJO7g,21137 +torch/nn/attention/_fa4.py,sha256=ZV6V9u4abWZBHCqrF99RTdkmaj0tJl1JX1fhwYcENOo,14657 +torch/nn/attention/_registry.py,sha256=gD85V4lu2cwtJD6U91RttNy1oZZA0vslni0NwrAvJfY,4463 +torch/nn/attention/_utils.py,sha256=AElRsYvBfPxbPT2xyHq32GTwk_5NgSd1ucR3Jn05CMg,2088 +torch/nn/attention/bias.py,sha256=xIREKtYVtoV0C86cfKNtJyeY74eh2MSKc23mjDqIqHk,13782 +torch/nn/attention/experimental/__init__.py,sha256=VXpUxbEIcm46WvCIT1rgWY3vSN7V7UMT42FqE7UR-9M,111 +torch/nn/attention/experimental/__pycache__/__init__.cpython-311.pyc,, +torch/nn/attention/experimental/__pycache__/_paged_attention.cpython-311.pyc,, +torch/nn/attention/experimental/__pycache__/_scaled_dot_product_attention_quantized.cpython-311.pyc,, +torch/nn/attention/experimental/_paged_attention.py,sha256=r9zNXBmL718JyeAqKWPBU_DRUxyg9gGA1B4J_8Db448,13216 +torch/nn/attention/experimental/_scaled_dot_product_attention_quantized.py,sha256=RwS2dWSK_Nv85Yct-tZ9RWuANeXCrNDNH85R2oWb8Ko,5788 +torch/nn/attention/flex_attention.py,sha256=CclDbi_MRQmTT2B1YiTZxEAIoiT86kDMK1aISUC-GJE,80633 +torch/nn/attention/varlen.py,sha256=L1OE4LyM43HQChwJ04rQGVFwCXmOfLNDT1bPS5-jUeo,22757 +torch/nn/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/nn/backends/__pycache__/__init__.cpython-311.pyc,, +torch/nn/backends/__pycache__/thnn.cpython-311.pyc,, +torch/nn/backends/thnn.py,sha256=DIn1LJwiPPLheO-ePySpWoHesiuc7NUEcfM4X-hyE2Y,154 +torch/nn/common_types.py,sha256=6nu95uJFHkfNYQrVRxzgRWSF-4tVNSzIF7A1h3HWiMI,2089 +torch/nn/cpp.py,sha256=qiuQgs3CT0t-Vy1FcJsrm08DQSHnMcxG09AWIf2hu_A,3100 +torch/nn/functional.py,sha256=J0kxhu4i-BG1U-MdnIBNTUZxbRvmLQNNcxU39m8n7xk,263236 +torch/nn/functional.pyi,sha256=MpdKSw93GzORsnnhrztyXt655YhuqUi_9J7zzay6cj8,27812 +torch/nn/grad.py,sha256=xEFG-ZnkxxjBMJajUSoNPqlHLiFFFAZ3wXBvn2kCRYc,9910 +torch/nn/init.py,sha256=6rv8st2GV8ibatr2tTGKO1PP4DlKRFxjMWNHlAtPFPA,26625 +torch/nn/intrinsic/__init__.py,sha256=mLJtyO2jadna-iZ8mCcW_NoEMq4mJxr3BqaJDy0jBhE,697 +torch/nn/intrinsic/__pycache__/__init__.cpython-311.pyc,, +torch/nn/intrinsic/modules/__init__.py,sha256=bqi9D10UvQcO_cimMFdlI5HjLEvFOp7Y0hT6g3WOSMQ,517 +torch/nn/intrinsic/modules/__pycache__/__init__.cpython-311.pyc,, +torch/nn/intrinsic/modules/__pycache__/fused.cpython-311.pyc,, +torch/nn/intrinsic/modules/fused.py,sha256=Q6ta4U7JgPoSVs66FPll7Hjhjl_pXcO3pFWKGnBzspk,563 +torch/nn/intrinsic/qat/__init__.py,sha256=7rFxYP3UVmm4gwSlC7aBqXoJF1s0Q4aIdJZuW7ST8wI,59 +torch/nn/intrinsic/qat/__pycache__/__init__.cpython-311.pyc,, +torch/nn/intrinsic/qat/modules/__init__.py,sha256=n9s1HTHyr4Ao5_38irURngF2ZPh7pTJy9eos_oIz3Bs,637 +torch/nn/intrinsic/qat/modules/__pycache__/__init__.cpython-311.pyc,, +torch/nn/intrinsic/qat/modules/__pycache__/conv_fused.cpython-311.pyc,, +torch/nn/intrinsic/qat/modules/__pycache__/linear_fused.cpython-311.pyc,, +torch/nn/intrinsic/qat/modules/__pycache__/linear_relu.cpython-311.pyc,, +torch/nn/intrinsic/qat/modules/conv_fused.py,sha256=YKNHs_Fh3tfSoWmUAgd5APZwerDHpxPyY8KAXXDdMak,833 +torch/nn/intrinsic/qat/modules/linear_fused.py,sha256=qKnc8PyXqHPM--vfXmlD7JQoR5I480vCcYNZu-52-mM,434 +torch/nn/intrinsic/qat/modules/linear_relu.py,sha256=8740qDh1H-F03wWtKB6tQhPFSf2M2Cowyb91sfs02Ww,434 +torch/nn/intrinsic/quantized/__init__.py,sha256=Elo1b9Ro7sj3MsWn3xys-1rGWSe21SANc4H6Ai3x25c,336 +torch/nn/intrinsic/quantized/__pycache__/__init__.cpython-311.pyc,, +torch/nn/intrinsic/quantized/dynamic/__init__.py,sha256=Ov25o_5XouCKIqpzK42xcw8dAwVd02tGZqS4XL8BOIM,73 +torch/nn/intrinsic/quantized/dynamic/__pycache__/__init__.cpython-311.pyc,, +torch/nn/intrinsic/quantized/dynamic/modules/__init__.py,sha256=acHjDVSQZsjlTsbUoN4pI-971UJRfjavwMJRJuEOOBk,114 +torch/nn/intrinsic/quantized/dynamic/modules/__pycache__/__init__.cpython-311.pyc,, +torch/nn/intrinsic/quantized/dynamic/modules/__pycache__/linear_relu.cpython-311.pyc,, +torch/nn/intrinsic/quantized/dynamic/modules/linear_relu.py,sha256=z509nJpUu_QTwDUjE_ON9Fbu7n5GfMnOzWju35bEXRk,97 +torch/nn/intrinsic/quantized/modules/__init__.py,sha256=6WHqSE0pA7qaW20FVPWggCar8uawjVKABKVeNdxjNlo,379 +torch/nn/intrinsic/quantized/modules/__pycache__/__init__.cpython-311.pyc,, +torch/nn/intrinsic/quantized/modules/__pycache__/bn_relu.cpython-311.pyc,, +torch/nn/intrinsic/quantized/modules/__pycache__/conv_relu.cpython-311.pyc,, +torch/nn/intrinsic/quantized/modules/__pycache__/linear_relu.cpython-311.pyc,, +torch/nn/intrinsic/quantized/modules/bn_relu.py,sha256=3t9doT82fRh1SytKSivqQgxVfDP41KuvL-R9hz8oSb8,111 +torch/nn/intrinsic/quantized/modules/conv_relu.py,sha256=QWzacsMW7FtkasYvsZ9WqRExBjaMqsxHQHD5tYsZBFA,149 +torch/nn/intrinsic/quantized/modules/linear_relu.py,sha256=Zuj3I1owPTdoovG1-BoogRjn8JX1rMWM-WXYc-QFneU,89 +torch/nn/modules/__init__.py,sha256=Eef2WuOfFW36I0RRotha0XO8cU3NW9P6t7F-ibNeJpU,6542 +torch/nn/modules/__pycache__/__init__.cpython-311.pyc,, +torch/nn/modules/__pycache__/_functions.cpython-311.pyc,, +torch/nn/modules/__pycache__/activation.cpython-311.pyc,, +torch/nn/modules/__pycache__/adaptive.cpython-311.pyc,, +torch/nn/modules/__pycache__/batchnorm.cpython-311.pyc,, +torch/nn/modules/__pycache__/channelshuffle.cpython-311.pyc,, +torch/nn/modules/__pycache__/container.cpython-311.pyc,, +torch/nn/modules/__pycache__/conv.cpython-311.pyc,, +torch/nn/modules/__pycache__/distance.cpython-311.pyc,, +torch/nn/modules/__pycache__/dropout.cpython-311.pyc,, +torch/nn/modules/__pycache__/flatten.cpython-311.pyc,, +torch/nn/modules/__pycache__/fold.cpython-311.pyc,, +torch/nn/modules/__pycache__/instancenorm.cpython-311.pyc,, +torch/nn/modules/__pycache__/lazy.cpython-311.pyc,, +torch/nn/modules/__pycache__/linear.cpython-311.pyc,, +torch/nn/modules/__pycache__/loss.cpython-311.pyc,, +torch/nn/modules/__pycache__/module.cpython-311.pyc,, +torch/nn/modules/__pycache__/normalization.cpython-311.pyc,, +torch/nn/modules/__pycache__/padding.cpython-311.pyc,, +torch/nn/modules/__pycache__/pixelshuffle.cpython-311.pyc,, +torch/nn/modules/__pycache__/pooling.cpython-311.pyc,, +torch/nn/modules/__pycache__/rnn.cpython-311.pyc,, +torch/nn/modules/__pycache__/sparse.cpython-311.pyc,, +torch/nn/modules/__pycache__/transformer.cpython-311.pyc,, +torch/nn/modules/__pycache__/upsampling.cpython-311.pyc,, +torch/nn/modules/__pycache__/utils.cpython-311.pyc,, +torch/nn/modules/_functions.py,sha256=C_QAxSaXW57WZxE8ItmvnxA5Nu_-f6e1ftpr4bHhv5U,12180 +torch/nn/modules/activation.py,sha256=icd06dDW_Aaj2MvwYDbzLg_H-9GLgENrbUYsOY1NGos,62129 +torch/nn/modules/adaptive.py,sha256=_fGwVPaYb2GHaz_Uv1klKHGnt7MTH1y4LwFD7Ia21I8,12606 +torch/nn/modules/batchnorm.py,sha256=leSFa4m_BatB3HHeYyaNPMYsfBG44iyNzyjU_yaE0ao,41176 +torch/nn/modules/channelshuffle.py,sha256=1K2PoerBn3WvtN3gfTyLAp6sjMVhADPjgI0eV5XD0WU,1682 +torch/nn/modules/container.py,sha256=BHi5SkO1BydsxNzYXPvf9_yDgH8wIm9XWqrGnUFrZYo,37394 +torch/nn/modules/conv.py,sha256=_NETMHEjVK4i9ukov3KZT7HI9u0wso1YvjxkrMmaRKQ,79715 +torch/nn/modules/distance.py,sha256=z7zUT5-kLio0kqt6r3EwNgDpmPDcoRC6QasilD_yTsk,3372 +torch/nn/modules/dropout.py,sha256=8avb3aCV6e4LuWcB6a_XDbyiApi9MZCqaLedDsmMR_c,11517 +torch/nn/modules/flatten.py,sha256=ogOVF9rao5nMuDXr2bLASB2QzQ4BIWhR3Z_t-byMpL8,5760 +torch/nn/modules/fold.py,sha256=o58ibuN2AmkR3o2Qg9ACBwx8iAFTlhaEuyGpucZxr14,13227 +torch/nn/modules/instancenorm.py,sha256=9JRMWmcS7n5VUJhNtuQCWFaClZx2vO85ie_Fs7aFKdI,21516 +torch/nn/modules/lazy.py,sha256=yAx_4T2XYmaBfaH9fKr9tAeFLA6-aUW2DJtYUvPausI,11674 +torch/nn/modules/linear.py,sha256=GWGtGh9lDhBLPH940Zry0hv5d-evbD_fJCCq1WPJ4gI,12376 +torch/nn/modules/loss.py,sha256=tDSg-3QlINXXMpPE8JYEYg043XmdOX87FwI5tId_W-Y,97637 +torch/nn/modules/module.py,sha256=VqH6OfMyI447rYf0MZA6h1llq--SVHr-5jVsE5DytxM,127992 +torch/nn/modules/normalization.py,sha256=lihLY6IIjH03hxbVEU61tqHActR5EWFw_P0oTFfoS08,15924 +torch/nn/modules/padding.py,sha256=Nyvsav0h0dJ1rtUt6i5c0jnPtfImRlId567eusJcHNk,31660 +torch/nn/modules/pixelshuffle.py,sha256=N4rqCH-2DvBKLG4ZpJLHUNsv8Ylx2uQHm7VxRop4CWw,3948 +torch/nn/modules/pooling.py,sha256=embOujctPnv03alIcbm3MLjQwr-fb1BRh0kXu13KyCY,61114 +torch/nn/modules/rnn.py,sha256=RbpIiDgRnNo2X6ME82ODNbWExMS22jU6Q9TzaNqPDmc,76242 +torch/nn/modules/sparse.py,sha256=SJe1QCw15JyDDtruHqzBscP4At3I5930ESpxx4vqgfU,24262 +torch/nn/modules/transformer.py,sha256=9s1lgkFAIrw-jA1HhsH4XrRoYL8CcU17rwUWMT04hGo,52209 +torch/nn/modules/upsampling.py,sha256=xqIhg4bfAfGsJ3rp8fMm-yeI8P_nKParbOdUGCkALlk,11611 +torch/nn/modules/utils.py,sha256=kS7sezb3cU9-B9swphiw4LaO0kzOlegUliZTHuFtKIk,2601 +torch/nn/parallel/__init__.py,sha256=z43J5FJ5qqe_aVSla6yG0qZ19t_Y9pX3g3BzYJvVuSs,760 +torch/nn/parallel/__pycache__/__init__.cpython-311.pyc,, +torch/nn/parallel/__pycache__/_functions.cpython-311.pyc,, +torch/nn/parallel/__pycache__/comm.cpython-311.pyc,, +torch/nn/parallel/__pycache__/data_parallel.cpython-311.pyc,, +torch/nn/parallel/__pycache__/distributed.cpython-311.pyc,, +torch/nn/parallel/__pycache__/parallel_apply.cpython-311.pyc,, +torch/nn/parallel/__pycache__/replicate.cpython-311.pyc,, +torch/nn/parallel/__pycache__/scatter_gather.cpython-311.pyc,, +torch/nn/parallel/_functions.py,sha256=HHi7gH1S1mwDXLC2ivD3w3e_s3AqO3qgHKelO2mzMOk,6226 +torch/nn/parallel/comm.py,sha256=ogPGR7BU6F8EWlHYpAVjVGdBJrr6uNsfTIVgiZdhAW8,11105 +torch/nn/parallel/data_parallel.py,sha256=dCC7VAilFp53b5FaJIiObG1SBdZkPwM9F3JIhNakKtM,11938 +torch/nn/parallel/distributed.py,sha256=JotDQkRWl_kIxF3O5R2ZCoauIk4R5Xrbw1JCfFQEelM,117758 +torch/nn/parallel/parallel_apply.py,sha256=tQQAIHez6tVvF3-Zgm17cYFi7MV_JGIZYlzf0rIEqWI,5115 +torch/nn/parallel/replicate.py,sha256=esgxFGR67Ni3bQCYcDlKMhbq9KXgYzDE5XTZrKLKRGY,7259 +torch/nn/parallel/scatter_gather.py,sha256=kPoOGvZe5zY2JBncFvOVqmHNYUZnCQUDXIopYmYKP0Y,5550 +torch/nn/parameter.py,sha256=WlPMxw0QjaXkCarcpAFMJrmC4OjQxT4VW85xz3PYysE,12322 +torch/nn/parameter.pyi,sha256=nWmOqB7CJFdB0wabxODC0yZI5j0N20MhsHb_twxD3Ac,1118 +torch/nn/qat/__init__.py,sha256=YHWepHV69h8eIIZ09WgM96wRwYTKAdZ5IXJG4ajhsHI,365 +torch/nn/qat/__pycache__/__init__.cpython-311.pyc,, +torch/nn/qat/dynamic/__init__.py,sha256=3v0msXCbfI7q_EYZ2WUPfuW0IxLRr2s8ICycY6XraDQ,208 +torch/nn/qat/dynamic/__pycache__/__init__.cpython-311.pyc,, +torch/nn/qat/dynamic/modules/__init__.py,sha256=xnBpUudYrmz9leiWC2UaMEGbDX2eO--nNluoaO_V-LE,78 +torch/nn/qat/dynamic/modules/__pycache__/__init__.cpython-311.pyc,, +torch/nn/qat/dynamic/modules/__pycache__/linear.cpython-311.pyc,, +torch/nn/qat/dynamic/modules/linear.py,sha256=io9A-B4H0RMvMRYuKeVSxRQPsBhdCy5WKfvr5QtKHuo,416 +torch/nn/qat/modules/__init__.py,sha256=xHBwOWC71Dzb9MLPvLkMMdcDlr39rf-dejMilOtshHM,501 +torch/nn/qat/modules/__pycache__/__init__.cpython-311.pyc,, +torch/nn/qat/modules/__pycache__/conv.cpython-311.pyc,, +torch/nn/qat/modules/__pycache__/embedding_ops.cpython-311.pyc,, +torch/nn/qat/modules/__pycache__/linear.cpython-311.pyc,, +torch/nn/qat/modules/conv.py,sha256=hOAGSJ7oaQTf_9DWXPWrGGsQ9oPLASiCZaeHX4X3BMI,406 +torch/nn/qat/modules/embedding_ops.py,sha256=1BP3HyU1Xkr8yQBH1RNqv2rwZM9Uv6Wl6X5-DM_Jlls,458 +torch/nn/qat/modules/linear.py,sha256=cFw8lAcvlWfV__h6uSDi9w4I7snqlWGVAyfY7nnHiMA,392 +torch/nn/quantizable/__init__.py,sha256=O3C0GktZB_Ut6pNTL17JbCzJ2h2hCIK3KH8sVnhSuDs,57 +torch/nn/quantizable/__pycache__/__init__.cpython-311.pyc,, +torch/nn/quantizable/modules/__init__.py,sha256=gr03bjx4iwgg1n8zCu3B1UpgNqhb6UxxSVvwO5894V4,207 +torch/nn/quantizable/modules/__pycache__/__init__.cpython-311.pyc,, +torch/nn/quantizable/modules/__pycache__/activation.cpython-311.pyc,, +torch/nn/quantizable/modules/__pycache__/rnn.cpython-311.pyc,, +torch/nn/quantizable/modules/activation.py,sha256=m8gKPli1OoBlwAng4E2ndP9K3ov2t6D7pN1Zj84nv0g,440 +torch/nn/quantizable/modules/rnn.py,sha256=ymfl_ayTkuUunsNt9186sFOhtapsxsTHVtY_QlKFH9A,429 +torch/nn/quantized/__init__.py,sha256=OTMoZbhpm8nI1oMVMuB8tt4JvpDN3MsIoYww2nUJfQM,771 +torch/nn/quantized/__pycache__/__init__.cpython-311.pyc,, +torch/nn/quantized/__pycache__/functional.cpython-311.pyc,, +torch/nn/quantized/_reference/__init__.py,sha256=VrWZh6FzvyvAi744iiFBcYarBX3Akn6kTarYzEIX0_w,66 +torch/nn/quantized/_reference/__pycache__/__init__.cpython-311.pyc,, +torch/nn/quantized/_reference/modules/__init__.py,sha256=yjgG2MRfrWs-u8l1CCILBoPTa-FBORFZh9i86vYKdy8,1018 +torch/nn/quantized/_reference/modules/__pycache__/__init__.cpython-311.pyc,, +torch/nn/quantized/_reference/modules/__pycache__/conv.cpython-311.pyc,, +torch/nn/quantized/_reference/modules/__pycache__/linear.cpython-311.pyc,, +torch/nn/quantized/_reference/modules/__pycache__/rnn.cpython-311.pyc,, +torch/nn/quantized/_reference/modules/__pycache__/sparse.cpython-311.pyc,, +torch/nn/quantized/_reference/modules/__pycache__/utils.cpython-311.pyc,, +torch/nn/quantized/_reference/modules/conv.py,sha256=FclYIsMCbXH4erKiBDintHNWDsplOru0QY9LDToSL-s,579 +torch/nn/quantized/_reference/modules/linear.py,sha256=Cu-oS3rGRNtFQX8C8yBiLIeORYswqNnFbVw3ds6PMKQ,450 +torch/nn/quantized/_reference/modules/rnn.py,sha256=A6kV2QXCij5mpFFUTWBQwf6ynKQNJj0VMJbvHqkXa-Y,524 +torch/nn/quantized/_reference/modules/sparse.py,sha256=gSNXDYXlx1IoSrRN0i_pJHJt1znBH3sAPvDpivdfask,467 +torch/nn/quantized/_reference/modules/utils.py,sha256=nBSMp0qUV2OBmuCJYKGmpY6JtRinMoHhwPT2B8VbY08,590 +torch/nn/quantized/dynamic/__init__.py,sha256=lN8JfmyIwtMWNsOD0hWGgKMVPUXuUb5cu6QOvIlEJxg,58 +torch/nn/quantized/dynamic/__pycache__/__init__.cpython-311.pyc,, +torch/nn/quantized/dynamic/modules/__init__.py,sha256=ORZYUZYDqtgat8r4CkTj2GRbnR4y2CxoK3hNUT1AFEU,993 +torch/nn/quantized/dynamic/modules/__pycache__/__init__.cpython-311.pyc,, +torch/nn/quantized/dynamic/modules/__pycache__/conv.cpython-311.pyc,, +torch/nn/quantized/dynamic/modules/__pycache__/linear.cpython-311.pyc,, +torch/nn/quantized/dynamic/modules/__pycache__/rnn.cpython-311.pyc,, +torch/nn/quantized/dynamic/modules/conv.py,sha256=bq0IjYdFIpdJbsQkIeF1LDHZOC8wvGInVohV5KwqqI0,669 +torch/nn/quantized/dynamic/modules/linear.py,sha256=67W7Cw26T5oIiE4n3RJykC6PX5VypOJU3lQcNP6mohg,448 +torch/nn/quantized/dynamic/modules/rnn.py,sha256=vWAb3OQKyHWubLC5U-qIGP-GgYq-GFpvltZCDXjogrA,740 +torch/nn/quantized/functional.py,sha256=YLagkINzH1ksH0zcEEizTr0Wdu8gvziqPkx-elbUkJE,276 +torch/nn/quantized/modules/__init__.py,sha256=oNogz5eH2YEYfHjRkYBEqp_XD2GduDqc9StknEGWx40,2101 +torch/nn/quantized/modules/__pycache__/__init__.cpython-311.pyc,, +torch/nn/quantized/modules/__pycache__/activation.cpython-311.pyc,, +torch/nn/quantized/modules/__pycache__/batchnorm.cpython-311.pyc,, +torch/nn/quantized/modules/__pycache__/conv.cpython-311.pyc,, +torch/nn/quantized/modules/__pycache__/dropout.cpython-311.pyc,, +torch/nn/quantized/modules/__pycache__/embedding_ops.cpython-311.pyc,, +torch/nn/quantized/modules/__pycache__/functional_modules.cpython-311.pyc,, +torch/nn/quantized/modules/__pycache__/linear.cpython-311.pyc,, +torch/nn/quantized/modules/__pycache__/normalization.cpython-311.pyc,, +torch/nn/quantized/modules/__pycache__/rnn.cpython-311.pyc,, +torch/nn/quantized/modules/__pycache__/utils.cpython-311.pyc,, +torch/nn/quantized/modules/activation.py,sha256=52tIo-6xSFg2QIuNL-Q7AKs2IiDBCcGFIvWNupA3fjA,528 +torch/nn/quantized/modules/batchnorm.py,sha256=OpxwQosX9Pv53csZ4ZXKhFOkya_tXMbtndDMSETJKV8,437 +torch/nn/quantized/modules/conv.py,sha256=3JBXb4gZOKXHIyWnnPEVxlb-WRDSMiNEUvuofCSNsSw,666 +torch/nn/quantized/modules/dropout.py,sha256=qdWqDycnaodhJDr_EyIQCiaSg4xK5dqEZ21IBIsC_8M,442 +torch/nn/quantized/modules/embedding_ops.py,sha256=smsmXs2h7t2y6WbToNuJ060heMQbZOXOfkNbdwOqVO4,547 +torch/nn/quantized/modules/functional_modules.py,sha256=bk60spaa4_sUCDXyh4GOh937FVIwNCH-l93lAPi39-Q,554 +torch/nn/quantized/modules/linear.py,sha256=zsZr5Rb4z4XJvTjc-hF9cqG4uqpsbkHOc3jJOxcSM4A,481 +torch/nn/quantized/modules/normalization.py,sha256=vUyWsXC7CFIm0oohnco73FD3Kz9xMGHeJKq3dNKZxKQ,626 +torch/nn/quantized/modules/rnn.py,sha256=NWI5IuH_qaC1YD1ROeoUbodbN3yS0MrZKOhXLmGfPDo,411 +torch/nn/quantized/modules/utils.py,sha256=ZkyzQS1nmLaK5Nvq2eKtSha7mHG3HyM08_5ueUc9FpQ,539 +torch/nn/utils/__init__.py,sha256=IDrUDb4E1qZkMUEfsT0eN0zC9YJyHjbJc0oxtgosE0c,1274 +torch/nn/utils/__pycache__/__init__.cpython-311.pyc,, +torch/nn/utils/__pycache__/_deprecation_utils.cpython-311.pyc,, +torch/nn/utils/__pycache__/_named_member_accessor.cpython-311.pyc,, +torch/nn/utils/__pycache__/_per_sample_grad.cpython-311.pyc,, +torch/nn/utils/__pycache__/clip_grad.cpython-311.pyc,, +torch/nn/utils/__pycache__/convert_parameters.cpython-311.pyc,, +torch/nn/utils/__pycache__/fusion.cpython-311.pyc,, +torch/nn/utils/__pycache__/init.cpython-311.pyc,, +torch/nn/utils/__pycache__/memory_format.cpython-311.pyc,, +torch/nn/utils/__pycache__/parametrizations.cpython-311.pyc,, +torch/nn/utils/__pycache__/parametrize.cpython-311.pyc,, +torch/nn/utils/__pycache__/prune.cpython-311.pyc,, +torch/nn/utils/__pycache__/rnn.cpython-311.pyc,, +torch/nn/utils/__pycache__/spectral_norm.cpython-311.pyc,, +torch/nn/utils/__pycache__/stateless.cpython-311.pyc,, +torch/nn/utils/__pycache__/weight_norm.cpython-311.pyc,, +torch/nn/utils/_deprecation_utils.py,sha256=KB2l-yIWZAA9OI0lT0f2s5WXeFvwvydY4EP0GGDDags,1698 +torch/nn/utils/_expanded_weights/__init__.py,sha256=PHIe9H3l0iuImQ6z3WqMkWIS37FDQVQ16vMo0a08mtA,452 +torch/nn/utils/_expanded_weights/__pycache__/__init__.cpython-311.pyc,, +torch/nn/utils/_expanded_weights/__pycache__/conv_expanded_weights.cpython-311.pyc,, +torch/nn/utils/_expanded_weights/__pycache__/conv_utils.cpython-311.pyc,, +torch/nn/utils/_expanded_weights/__pycache__/embedding_expanded_weights.cpython-311.pyc,, +torch/nn/utils/_expanded_weights/__pycache__/expanded_weights_impl.cpython-311.pyc,, +torch/nn/utils/_expanded_weights/__pycache__/expanded_weights_utils.cpython-311.pyc,, +torch/nn/utils/_expanded_weights/__pycache__/group_norm_expanded_weights.cpython-311.pyc,, +torch/nn/utils/_expanded_weights/__pycache__/instance_norm_expanded_weights.cpython-311.pyc,, +torch/nn/utils/_expanded_weights/__pycache__/layer_norm_expanded_weights.cpython-311.pyc,, +torch/nn/utils/_expanded_weights/__pycache__/linear_expanded_weights.cpython-311.pyc,, +torch/nn/utils/_expanded_weights/conv_expanded_weights.py,sha256=5Kr60dZ4gzcsX-uPJYWw6_9-Afoqu5QgVAmUt-smiDA,2925 +torch/nn/utils/_expanded_weights/conv_utils.py,sha256=iuAChFyYOsVpVcQtlv2Ux2JKuANQfvFdgidAIlgGjeE,10815 +torch/nn/utils/_expanded_weights/embedding_expanded_weights.py,sha256=kVjENz7zj9_3fIiF9rNgNbUx7Z78UNSEJRhO9dYjryc,3073 +torch/nn/utils/_expanded_weights/expanded_weights_impl.py,sha256=z7QPT00z7IxUOpO3Fad3ot-2dPK4YI93D4WHM4aHO_8,6408 +torch/nn/utils/_expanded_weights/expanded_weights_utils.py,sha256=l0Kjs3qjXsjwYxVf86g23uI_UufloirP79V4tBp3ALo,7612 +torch/nn/utils/_expanded_weights/group_norm_expanded_weights.py,sha256=Uw86QFNavKYlaNSnbSbBH0ieyQSh3jyChz9fwbKxoO4,3514 +torch/nn/utils/_expanded_weights/instance_norm_expanded_weights.py,sha256=TEs5rHPpUAet5KUtF1_RgyKr3kbZRKY6kEqsqP5mk5M,3772 +torch/nn/utils/_expanded_weights/layer_norm_expanded_weights.py,sha256=X1r7CwjyK-j03S9J6axQPGJ7DQr-yg1mWUNQ3Rip9UE,3289 +torch/nn/utils/_expanded_weights/linear_expanded_weights.py,sha256=6BI2LGjLpH29uFg5ktMxIW7AmxrA83uBPs62YmZOqww,2259 +torch/nn/utils/_named_member_accessor.py,sha256=m5zwqxzn6O2vwfz9lFZhYwewQLQZHVYPJvTlqbM5WgA,14470 +torch/nn/utils/_per_sample_grad.py,sha256=r2XSvB-eGfw7g-TOhHWT_v_w2K4oI3qaK7pHxm9S_iw,5775 +torch/nn/utils/clip_grad.py,sha256=XjDawX6wMRqxoS5G7SSE3stmFlQnZE0mAdE1cKsO5Nc,11465 +torch/nn/utils/convert_parameters.py,sha256=xiTn9HykDVWMwcR_Kx4zTJrTWxtLlfPv3oWYxeSUku4,3213 +torch/nn/utils/fusion.py,sha256=qbwJpB-sZ4tIAvBcfWDb61Hpla6ERwUAHb5Dx8fxEo4,6753 +torch/nn/utils/init.py,sha256=eA5Y0Ti3Qjhd-pCKEx9MpLHjJuz4bA3XNw6W0lC55XE,2250 +torch/nn/utils/memory_format.py,sha256=fYxW9eaJswQSSDeH1Yn2TVC0C_ExJMKWumdhgl5jiEc,8206 +torch/nn/utils/parametrizations.py,sha256=DSh9GFR0WmH0HdvPoeL-CtVAR0FHb6VyLy3IAR3BNTk,26044 +torch/nn/utils/parametrize.py,sha256=VqB5QsjuESWbnYilV--gF-6k96h_UuPjUa7hr03BdGk,39211 +torch/nn/utils/prune.py,sha256=s1NmGgt7i3NHyrCWozahELKk6nJ35vnhZuQRwMcEP5A,58753 +torch/nn/utils/rnn.py,sha256=dwyonizGne8qGfUuzqkbWb2uLeG0FZs-qDaSdu-TT_4,23131 +torch/nn/utils/spectral_norm.py,sha256=PxYIagdAIGLXL9QO-YRhYgamRzS1MjALbZH_QlJFFIA,14708 +torch/nn/utils/stateless.py,sha256=3rQJAtpopS35ovIp8bCuoIBuz-xWr_0CFigLDwqlw7I,11568 +torch/nn/utils/weight_norm.py,sha256=PZ7TbdZ2zo76SmvY2zAvzUsJ8Dt8YiXVfgtMDByEdgE,5883 +torch/numa/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/numa/__pycache__/__init__.cpython-311.pyc,, +torch/numa/__pycache__/binding.cpython-311.pyc,, +torch/numa/binding.py,sha256=4wnOn3P9D_geFINY2VrJcQjWmfb_CozJaZOtjWlWZKU,24799 +torch/onnx/__init__.py,sha256=ishI0e9uBbh9r6C34WieMCbUaGyi3f-U2kdvX-Vk0qU,15003 +torch/onnx/__pycache__/__init__.cpython-311.pyc,, +torch/onnx/__pycache__/_constants.cpython-311.pyc,, +torch/onnx/__pycache__/_flags.cpython-311.pyc,, +torch/onnx/__pycache__/errors.cpython-311.pyc,, +torch/onnx/__pycache__/operators.cpython-311.pyc,, +torch/onnx/__pycache__/symbolic_helper.cpython-311.pyc,, +torch/onnx/__pycache__/symbolic_opset10.cpython-311.pyc,, +torch/onnx/__pycache__/symbolic_opset11.cpython-311.pyc,, +torch/onnx/__pycache__/symbolic_opset12.cpython-311.pyc,, +torch/onnx/__pycache__/symbolic_opset13.cpython-311.pyc,, +torch/onnx/__pycache__/symbolic_opset14.cpython-311.pyc,, +torch/onnx/__pycache__/symbolic_opset15.cpython-311.pyc,, +torch/onnx/__pycache__/symbolic_opset16.cpython-311.pyc,, +torch/onnx/__pycache__/symbolic_opset17.cpython-311.pyc,, +torch/onnx/__pycache__/symbolic_opset18.cpython-311.pyc,, +torch/onnx/__pycache__/symbolic_opset19.cpython-311.pyc,, +torch/onnx/__pycache__/symbolic_opset20.cpython-311.pyc,, +torch/onnx/__pycache__/symbolic_opset7.cpython-311.pyc,, +torch/onnx/__pycache__/symbolic_opset8.cpython-311.pyc,, +torch/onnx/__pycache__/symbolic_opset9.cpython-311.pyc,, +torch/onnx/__pycache__/testing.cpython-311.pyc,, +torch/onnx/__pycache__/utils.cpython-311.pyc,, +torch/onnx/__pycache__/verification.cpython-311.pyc,, +torch/onnx/_constants.py,sha256=KsVyVjgGFLE_G3mr8-ilc3YY6_0zxbKHZsw1OVbQOUo,531 +torch/onnx/_flags.py,sha256=7gg9rPep-Oy_cuneXABiEItasVTVvsp5PJ7cfc_6KLA,1554 +torch/onnx/_internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/onnx/_internal/__pycache__/__init__.cpython-311.pyc,, +torch/onnx/_internal/__pycache__/_lazy_import.cpython-311.pyc,, +torch/onnx/_internal/_lazy_import.py,sha256=RWu_Nk7U6sIybFCMEMuPG4YrJiZ0LX1tP56a7--61xo,1213 +torch/onnx/_internal/exporter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/onnx/_internal/exporter/__pycache__/__init__.cpython-311.pyc,, +torch/onnx/_internal/exporter/__pycache__/_analysis.cpython-311.pyc,, +torch/onnx/_internal/exporter/__pycache__/_building.cpython-311.pyc,, +torch/onnx/_internal/exporter/__pycache__/_capture_strategies.cpython-311.pyc,, +torch/onnx/_internal/exporter/__pycache__/_compat.cpython-311.pyc,, +torch/onnx/_internal/exporter/__pycache__/_constants.cpython-311.pyc,, +torch/onnx/_internal/exporter/__pycache__/_core.cpython-311.pyc,, +torch/onnx/_internal/exporter/__pycache__/_decomp.cpython-311.pyc,, +torch/onnx/_internal/exporter/__pycache__/_dispatching.cpython-311.pyc,, +torch/onnx/_internal/exporter/__pycache__/_dynamic_shapes.cpython-311.pyc,, +torch/onnx/_internal/exporter/__pycache__/_errors.cpython-311.pyc,, +torch/onnx/_internal/exporter/__pycache__/_exportable_module.cpython-311.pyc,, +torch/onnx/_internal/exporter/__pycache__/_flags.cpython-311.pyc,, +torch/onnx/_internal/exporter/__pycache__/_fx_passes.cpython-311.pyc,, +torch/onnx/_internal/exporter/__pycache__/_input_observer.cpython-311.pyc,, +torch/onnx/_internal/exporter/__pycache__/_ir_passes.cpython-311.pyc,, +torch/onnx/_internal/exporter/__pycache__/_isolated.cpython-311.pyc,, +torch/onnx/_internal/exporter/__pycache__/_onnx_program.cpython-311.pyc,, +torch/onnx/_internal/exporter/__pycache__/_registration.cpython-311.pyc,, +torch/onnx/_internal/exporter/__pycache__/_reporting.cpython-311.pyc,, +torch/onnx/_internal/exporter/__pycache__/_schemas.cpython-311.pyc,, +torch/onnx/_internal/exporter/__pycache__/_tensors.cpython-311.pyc,, +torch/onnx/_internal/exporter/__pycache__/_testing.cpython-311.pyc,, +torch/onnx/_internal/exporter/__pycache__/_type_casting.cpython-311.pyc,, +torch/onnx/_internal/exporter/__pycache__/_verification.cpython-311.pyc,, +torch/onnx/_internal/exporter/_analysis.py,sha256=ZhMKGTs8voROxN0x8azRngSVnqibbRvYyKQkRMib1bY,9969 +torch/onnx/_internal/exporter/_building.py,sha256=bwDvC5ULGGfnpxXy_jdVOwfzqXRRQtppaaxOJS6svZc,29538 +torch/onnx/_internal/exporter/_capture_strategies.py,sha256=upT9bFJMij1tzPOfmM2B0hG0DIWvAJkEe_9UBxpW40k,10542 +torch/onnx/_internal/exporter/_compat.py,sha256=4HBcn7Ifmd7OdvngRS3dMTSyYAsfrHnE0Dru5_D8FQA,7552 +torch/onnx/_internal/exporter/_constants.py,sha256=y8ST-ZGRhbGrA_d-oM2xapBMa0hnFcEgLbLxt8pcMn4,378 +torch/onnx/_internal/exporter/_core.py,sha256=FwrMBhs7rH7imeYkQfu18VnB0KBoJPWM30o75RH1bw4,70360 +torch/onnx/_internal/exporter/_decomp.py,sha256=mVFktC8pOoFyQnl6UvhpDbHlNZtSvB8Hg5jNcui6eFQ,2938 +torch/onnx/_internal/exporter/_dispatching.py,sha256=_4rGW0B6NRWiPEAGg4TgxvzSgW2BlVkqGizNPdynuI8,2070 +torch/onnx/_internal/exporter/_dynamic_shapes.py,sha256=djj0TF_hAucwvAXd1ZSCeJLFu8gFb567Z7viGQj6ADA,14431 +torch/onnx/_internal/exporter/_errors.py,sha256=VziOIvyap9A_UDRP41HkC_s0J-R13dbCrVLIusF-6A8,535 +torch/onnx/_internal/exporter/_exportable_module.py,sha256=ymWXCMLYKiMruQAF3duzJRArqpp4yH19zTUYKaWEOvc,6807 +torch/onnx/_internal/exporter/_flags.py,sha256=0vyPbWUoBb_BUpGJpR5JRKZJxlXfk312XsdrbZsD9JM,794 +torch/onnx/_internal/exporter/_fx_passes.py,sha256=RJDceCGcbBr_lGpVbQGuSReBRbOTkt7uatRNQtNr9w0,1919 +torch/onnx/_internal/exporter/_input_observer.py,sha256=8Lko6FzmvjaFPUapBos7qLqAkSGV1T749rhz8LH3ij8,51666 +torch/onnx/_internal/exporter/_ir_passes.py,sha256=9XFQqrx0mg9EQfzyMWaCS88zD8lBX0tTgKZjsGiMl3Q,6289 +torch/onnx/_internal/exporter/_isolated.py,sha256=4LAKM1QeQ1bn6WePE3NyAS2o8RhE5lLy-lk8ArV-8uU,1869 +torch/onnx/_internal/exporter/_onnx_program.py,sha256=iynL3xhJ9JXU5ZJr91GKSPpLGec6IXqHEAKbfgSMLEk,19606 +torch/onnx/_internal/exporter/_registration.py,sha256=jG9jxd8gPPFGnCJX_d-aqX5VWHWCubYhMsvTA-D4q-w,12422 +torch/onnx/_internal/exporter/_reporting.py,sha256=gTtMzru1mYtL48DRk-8vGmyrCDQm3PxrBsBwKWU1O5s,7411 +torch/onnx/_internal/exporter/_schemas.py,sha256=mGvy0H7IgrHRJ4dOZv_yywXpAKJydeFJefteEc8hIug,12280 +torch/onnx/_internal/exporter/_tensors.py,sha256=qxJ6FpCQZgA0KOMr_7CvrxQD-88b52prQk9QQ6GeYyE,2567 +torch/onnx/_internal/exporter/_testing.py,sha256=vn4KD6-Cd7pD7NUVEWJv8M_dvCeCWobEucKpjvZQPVg,3993 +torch/onnx/_internal/exporter/_torchlib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/onnx/_internal/exporter/_torchlib/__pycache__/__init__.cpython-311.pyc,, +torch/onnx/_internal/exporter/_torchlib/__pycache__/_tensor_typing.cpython-311.pyc,, +torch/onnx/_internal/exporter/_torchlib/__pycache__/_torchlib_registry.cpython-311.pyc,, +torch/onnx/_internal/exporter/_torchlib/_tensor_typing.py,sha256=DfaNR_WzfujCOX0PuD5QeE9hTI86ihF9g-GeRA7k0NQ,1953 +torch/onnx/_internal/exporter/_torchlib/_torchlib_registry.py,sha256=BG8oUTNKK-FVAo_s2Re8g15oJo2m1QVcSF-MiqlBmig,2886 +torch/onnx/_internal/exporter/_torchlib/ops/__init__.py,sha256=bgyPtdiM9s1nE_1ZdR_6-0y0Tea9o0Qiyts2wWU7EM4,180 +torch/onnx/_internal/exporter/_torchlib/ops/__pycache__/__init__.cpython-311.pyc,, +torch/onnx/_internal/exporter/_torchlib/ops/__pycache__/core.cpython-311.pyc,, +torch/onnx/_internal/exporter/_torchlib/ops/__pycache__/hop.cpython-311.pyc,, +torch/onnx/_internal/exporter/_torchlib/ops/__pycache__/nn.cpython-311.pyc,, +torch/onnx/_internal/exporter/_torchlib/ops/__pycache__/symbolic.cpython-311.pyc,, +torch/onnx/_internal/exporter/_torchlib/ops/__pycache__/symops.cpython-311.pyc,, +torch/onnx/_internal/exporter/_torchlib/ops/core.py,sha256=NMSMQLta-VKSWasAcaUQ7h03h62B0WO3cZC2OsN7U0k,1568 +torch/onnx/_internal/exporter/_torchlib/ops/hop.py,sha256=umnwD9LvYT4YXcapTpDzW6guvVq2e3mwOWMROVdK7nM,12837 +torch/onnx/_internal/exporter/_torchlib/ops/nn.py,sha256=lX90Y-wHiWqpVPaVWS5Y1KSZuG9FdWyKuZtIgrS6rqs,14044 +torch/onnx/_internal/exporter/_torchlib/ops/symbolic.py,sha256=ZR470gARvhh1UMMzL3oH7PhaPp9qp7Em2UaEB3wTNgk,4773 +torch/onnx/_internal/exporter/_torchlib/ops/symops.py,sha256=T82DeVN_Y1fmqrlgHZaKw2ZXk6gD5UCXGFh6YGepvfA,1796 +torch/onnx/_internal/exporter/_type_casting.py,sha256=ZfJSaAagtIWGV_0BTDOnjOtnrZRwoS1f2rKuedkQMbw,1313 +torch/onnx/_internal/exporter/_verification.py,sha256=Vo3MCIcV0ALzSICc_PG5buKbG10HvKUdef1vwjX6HHc,12535 +torch/onnx/_internal/fx/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/onnx/_internal/fx/__pycache__/__init__.cpython-311.pyc,, +torch/onnx/_internal/fx/__pycache__/_pass.cpython-311.pyc,, +torch/onnx/_internal/fx/__pycache__/type_utils.cpython-311.pyc,, +torch/onnx/_internal/fx/_pass.py,sha256=ijrOE4Clp5xEKvTid1WJPDwa2QWqkC5FKMu_FOrZrj0,8638 +torch/onnx/_internal/fx/passes/__init__.py,sha256=mImXwcuJd6IfP3-3RkuLStx9i0ykJK8dhozuZNwRdpA,91 +torch/onnx/_internal/fx/passes/__pycache__/__init__.cpython-311.pyc,, +torch/onnx/_internal/fx/passes/__pycache__/type_promotion.cpython-311.pyc,, +torch/onnx/_internal/fx/passes/type_promotion.py,sha256=PGWMKXdLb-bCd66yXQZ3z-T7QiGhoyAP_TpdKbIJp44,65278 +torch/onnx/_internal/fx/type_utils.py,sha256=XblXgNj16vBEpGEd5Obl6D1XBuAnSeAFjfeFp0VtRbk,945 +torch/onnx/_internal/torchscript_exporter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/onnx/_internal/torchscript_exporter/__pycache__/__init__.cpython-311.pyc,, +torch/onnx/_internal/torchscript_exporter/__pycache__/_experimental.cpython-311.pyc,, +torch/onnx/_internal/torchscript_exporter/__pycache__/_globals.cpython-311.pyc,, +torch/onnx/_internal/torchscript_exporter/__pycache__/_type_utils.cpython-311.pyc,, +torch/onnx/_internal/torchscript_exporter/__pycache__/jit_utils.cpython-311.pyc,, +torch/onnx/_internal/torchscript_exporter/__pycache__/onnx_proto_utils.cpython-311.pyc,, +torch/onnx/_internal/torchscript_exporter/__pycache__/registration.cpython-311.pyc,, +torch/onnx/_internal/torchscript_exporter/__pycache__/symbolic_helper.cpython-311.pyc,, +torch/onnx/_internal/torchscript_exporter/__pycache__/symbolic_opset10.cpython-311.pyc,, +torch/onnx/_internal/torchscript_exporter/__pycache__/symbolic_opset11.cpython-311.pyc,, +torch/onnx/_internal/torchscript_exporter/__pycache__/symbolic_opset12.cpython-311.pyc,, +torch/onnx/_internal/torchscript_exporter/__pycache__/symbolic_opset13.cpython-311.pyc,, +torch/onnx/_internal/torchscript_exporter/__pycache__/symbolic_opset14.cpython-311.pyc,, +torch/onnx/_internal/torchscript_exporter/__pycache__/symbolic_opset15.cpython-311.pyc,, +torch/onnx/_internal/torchscript_exporter/__pycache__/symbolic_opset16.cpython-311.pyc,, +torch/onnx/_internal/torchscript_exporter/__pycache__/symbolic_opset17.cpython-311.pyc,, +torch/onnx/_internal/torchscript_exporter/__pycache__/symbolic_opset18.cpython-311.pyc,, +torch/onnx/_internal/torchscript_exporter/__pycache__/symbolic_opset19.cpython-311.pyc,, +torch/onnx/_internal/torchscript_exporter/__pycache__/symbolic_opset20.cpython-311.pyc,, +torch/onnx/_internal/torchscript_exporter/__pycache__/symbolic_opset7.cpython-311.pyc,, +torch/onnx/_internal/torchscript_exporter/__pycache__/symbolic_opset8.cpython-311.pyc,, +torch/onnx/_internal/torchscript_exporter/__pycache__/symbolic_opset9.cpython-311.pyc,, +torch/onnx/_internal/torchscript_exporter/__pycache__/utils.cpython-311.pyc,, +torch/onnx/_internal/torchscript_exporter/__pycache__/verification.cpython-311.pyc,, +torch/onnx/_internal/torchscript_exporter/_experimental.py,sha256=sNZuVCJZztlSpM8VxZmdXgd8bOcsQo8C_EqF7quG2Cs,968 +torch/onnx/_internal/torchscript_exporter/_globals.py,sha256=dEltGsC4MJTeVUCaAYm3-L6xpjaNPZkGBNwG7jfM47Q,2801 +torch/onnx/_internal/torchscript_exporter/_type_utils.py,sha256=-2e69dp1sBkq9UHRyjbnZaG-cLnVBvffE4tG1AZtOdM,14021 +torch/onnx/_internal/torchscript_exporter/jit_utils.py,sha256=LSmDihegunKT5OUXa920hLxCboOFC_EXZnHD_K2g7KQ,14170 +torch/onnx/_internal/torchscript_exporter/onnx_proto_utils.py,sha256=Iz_QXJoN8MUWTWswjK2BGinni2tzgTXkr3md3lZD6NA,9358 +torch/onnx/_internal/torchscript_exporter/registration.py,sha256=oHZfHRVQEB9bKa3tFa8sQ0Bt9GrjWha49GwTdtS-6OU,11135 +torch/onnx/_internal/torchscript_exporter/symbolic_helper.py,sha256=KFWSRxrt5eFdmAGEdpdoo3SWN3rr7BgWKhaZSLwb3NI,86588 +torch/onnx/_internal/torchscript_exporter/symbolic_opset10.py,sha256=wwyoZDc4LQ5xv8jJYD83kQ6HXHlQSo0l4WBs1EMv87s,37593 +torch/onnx/_internal/torchscript_exporter/symbolic_opset11.py,sha256=RSWXkus5f1uURfj7UXh0LIV6seZTLPhgiesWBUEzz8U,53594 +torch/onnx/_internal/torchscript_exporter/symbolic_opset12.py,sha256=5W_QJD6V7MeCtiRLcN8QBmZT24JKWEuB32wJAOojoxM,15807 +torch/onnx/_internal/torchscript_exporter/symbolic_opset13.py,sha256=4PXy5wy51WWspaoyPfwMG3GEDdDfm7Z5Cw9q6KO2mJE,41510 +torch/onnx/_internal/torchscript_exporter/symbolic_opset14.py,sha256=AUeXVfoV8Lo2SeYdPR-62vyKTkwk6goUZV0vSw0KlfQ,10426 +torch/onnx/_internal/torchscript_exporter/symbolic_opset15.py,sha256=yUBs1fDhvIx7-aWghD1ZtBbYwlVODGJrb_Tk1HQPEFQ,2892 +torch/onnx/_internal/torchscript_exporter/symbolic_opset16.py,sha256=QRJIIAf0VwR4NseYTKn5K3TGNJ8sBNYsgdbQBfxG0oY,6456 +torch/onnx/_internal/torchscript_exporter/symbolic_opset17.py,sha256=RPcutTe7lEEEVHLTZXgg9334wTkGJvcif4FpNbD1Ua4,8356 +torch/onnx/_internal/torchscript_exporter/symbolic_opset18.py,sha256=nAbSdAcm2QnUj0yYK0nUs6RNjiSQuP_R85I79YDzlOQ,8247 +torch/onnx/_internal/torchscript_exporter/symbolic_opset19.py,sha256=mdWDL5ju6R87V0WlsPnwFidl5EwyPeOb4roJkXLW1fI,536 +torch/onnx/_internal/torchscript_exporter/symbolic_opset20.py,sha256=LUCfXezm0zhOyDiSHhuYJac_y9DoIgTtAzgIJ-UtkOw,2462 +torch/onnx/_internal/torchscript_exporter/symbolic_opset7.py,sha256=d71ZOvg4TYXfi9AP3F3YxtUrqrTXxkcXV6Qj0aSQAI0,2192 +torch/onnx/_internal/torchscript_exporter/symbolic_opset8.py,sha256=jR_c6xodWrKtmz8CaV_1zS4Ywhr-xG4DKBOzRajmETY,15081 +torch/onnx/_internal/torchscript_exporter/symbolic_opset9.py,sha256=cYQqe2Ecffim_oj_hZJey7Edj7OG5mQxj0WjQDwmrRY,225996 +torch/onnx/_internal/torchscript_exporter/utils.py,sha256=xoufcmFNox5eLjo8HFOBR2LWAWYHEbFOCIQTbWgRWtE,76841 +torch/onnx/_internal/torchscript_exporter/verification.py,sha256=ysbe_khOrCWnqkuWhuLA-mGwswtfZp2JYm7tSPuHbxQ,19156 +torch/onnx/errors.py,sha256=7Svwc5kOBcoGNz4d7rZ0Cdh217IkmlDADQZOeFL9flg,3478 +torch/onnx/operators.py,sha256=fS94DP2lYBZwI8qpxN6VWHWuTrvD7VWueC8eonqRbnE,1185 +torch/onnx/ops/__init__.py,sha256=OLQtAPGNTE3dZM_4u3KOTedP6OodYoP_2kzIYdliJuE,20939 +torch/onnx/ops/__pycache__/__init__.cpython-311.pyc,, +torch/onnx/ops/__pycache__/_dtype_mappings.cpython-311.pyc,, +torch/onnx/ops/__pycache__/_impl.cpython-311.pyc,, +torch/onnx/ops/__pycache__/_symbolic_impl.cpython-311.pyc,, +torch/onnx/ops/_dtype_mappings.py,sha256=T2_Rwd7HR5CzErvrphymlsCk0kRZhauZdhZbi0JZb3Y,836 +torch/onnx/ops/_impl.py,sha256=vndhmlw6dYLBIf8Te79er5ifyFVWCMq89f-pkeunjE8,19910 +torch/onnx/ops/_symbolic_impl.py,sha256=_zZyJ1o5mI9mAij49CE6ElyoLQStoG4va-WUeqaLaso,11503 +torch/onnx/symbolic_helper.py,sha256=LIHrpW5b175KG4GTm6gWc9WISbYYmgkKEd-hXXRGyGw,222 +torch/onnx/symbolic_opset10.py,sha256=SYoifeNPe7fnfUQ1o7oOfsfJTBkRjsgI-spAJ4zqZfU,325 +torch/onnx/symbolic_opset11.py,sha256=HER3r7zS8st1M2PCCZdyUkDp4ImPaAp4h5-yNjg8arM,224 +torch/onnx/symbolic_opset12.py,sha256=xaQpIzjkwHUiPIsJ3PTDfh-9_DH8ko_Ryve2_oZv4JI,224 +torch/onnx/symbolic_opset13.py,sha256=WqXlv_pfF46qr5GdBgwGQjPYF9kJtuk9EXMyQeQppfM,224 +torch/onnx/symbolic_opset14.py,sha256=nTk5SFQne8C41KTD8ZNyBF5vQfF_YZvg2qXmpA75QYA,224 +torch/onnx/symbolic_opset15.py,sha256=UnyYwoNDZ4wsiSjLzTQug9TabHmEEkXXzt53IPH-aB0,224 +torch/onnx/symbolic_opset16.py,sha256=lo4OY1dQwuJfL52MUh7zuQDdVhyxBJOnsJTTQDTWsnQ,224 +torch/onnx/symbolic_opset17.py,sha256=IdVLH_n6JA3TttyJ6NI1HFYpDdwTChRB5ZjSd7szl7w,224 +torch/onnx/symbolic_opset18.py,sha256=0yKeke5KAewf1P536eOWLondGHKk-kPp1etMqtCyyek,224 +torch/onnx/symbolic_opset19.py,sha256=sUngszvMGJzrGCyrzTuZgSA-aOY4G9-niC9JuwCsVuQ,224 +torch/onnx/symbolic_opset20.py,sha256=rz2fMG4kDcGK1j0qTEb77TwYXBhFVtS_JuIVjp0KMpk,224 +torch/onnx/symbolic_opset7.py,sha256=M27NKKqPnRtfFaW-M5MKFxQ7n0chpvTLN66xwuSyuOA,222 +torch/onnx/symbolic_opset8.py,sha256=8yMePMZ6epwV-RxEKja0OHDGddthTfL0zc7eBoOb-ys,222 +torch/onnx/symbolic_opset9.py,sha256=jAXYpzkr9EBN7tpGVw3JCJhuZN2yWmHVmty_3HgdEeQ,391 +torch/onnx/testing.py,sha256=QbAECaWoSos_a1XwM_KBh63qvQVajvlnMDHr0qUnNO4,219 +torch/onnx/utils.py,sha256=UASN7loGVDomvR9PayxZDTgvq1SRyQC2C7-gcBlSFRI,203 +torch/onnx/verification.py,sha256=L6GdYIC4gPAgZu4uXJmib7vG7u_1bkMMnXmee70zveU,343 +torch/optim/__init__.py,sha256=IJRMuKRPeA_LG1xGkftt7lCJtIUcZumTdvnYTHckfRA,2205 +torch/optim/__pycache__/__init__.cpython-311.pyc,, +torch/optim/__pycache__/_adafactor.cpython-311.pyc,, +torch/optim/__pycache__/_functional.cpython-311.pyc,, +torch/optim/__pycache__/_muon.cpython-311.pyc,, +torch/optim/__pycache__/adadelta.cpython-311.pyc,, +torch/optim/__pycache__/adagrad.cpython-311.pyc,, +torch/optim/__pycache__/adam.cpython-311.pyc,, +torch/optim/__pycache__/adamax.cpython-311.pyc,, +torch/optim/__pycache__/adamw.cpython-311.pyc,, +torch/optim/__pycache__/asgd.cpython-311.pyc,, +torch/optim/__pycache__/lbfgs.cpython-311.pyc,, +torch/optim/__pycache__/lr_scheduler.cpython-311.pyc,, +torch/optim/__pycache__/nadam.cpython-311.pyc,, +torch/optim/__pycache__/optimizer.cpython-311.pyc,, +torch/optim/__pycache__/radam.cpython-311.pyc,, +torch/optim/__pycache__/rmsprop.cpython-311.pyc,, +torch/optim/__pycache__/rprop.cpython-311.pyc,, +torch/optim/__pycache__/sgd.cpython-311.pyc,, +torch/optim/__pycache__/sparse_adam.cpython-311.pyc,, +torch/optim/__pycache__/swa_utils.cpython-311.pyc,, +torch/optim/_adafactor.py,sha256=tvzdaK9HKn6-09J06ElNNfAvvBIGNFkdKPoS4hJji3s,28512 +torch/optim/_functional.py,sha256=kYDxfTcm5jVdomzxYI38DtdvmbyvtHJT3jG9b1cuxLc,3250 +torch/optim/_multi_tensor/__init__.py,sha256=DaZ72GF7H5n46jPJ_mAiz67xOsutFFE16KJsB05ylns,1027 +torch/optim/_multi_tensor/__init__.pyi,sha256=Q4IMQ5dfkrDDq7ooUZubB4Okb7KHVhWpjx5HUF3f7hY,537 +torch/optim/_multi_tensor/__pycache__/__init__.cpython-311.pyc,, +torch/optim/_muon.py,sha256=TQA6ui0Mf8wkh1hFgC5F7bRHWlGgN-LKqntGw5RMDa4,14444 +torch/optim/adadelta.py,sha256=G7oYwi1Wo3fGNsri2fg4QOQxjxmRMfgkBHEuBZ3WYuM,16851 +torch/optim/adagrad.py,sha256=jIExkXD4UPgYQVplP__J5I4uekVjNmUFLJ1VuGUe8S4,22923 +torch/optim/adam.py,sha256=fvqFCqtzQu0ehnXPD3p33wOKtTJJZDSwp_KqaGbLOlw,40124 +torch/optim/adamax.py,sha256=HxXC6PK7pLaEfYJCyOrQcbnX3x7lrdHUQS8qe0vJhv8,17487 +torch/optim/adamw.py,sha256=0POi2ImkO2XtSBdZAPY0u1okTIzXmj8RF9yFLdrUsek,7376 +torch/optim/asgd.py,sha256=ChP8X1v1QLpkoN2fP66JTzrQHTCGRnLndbo2wj47Kio,16448 +torch/optim/lbfgs.py,sha256=obzQpGUK-UfXTXO9xZVYYMf87shCUHhODegsN-oY-E8,19702 +torch/optim/lr_scheduler.py,sha256=-NcFj-dSJWq6NOONeCNsIKJTH6L3pEO5oerVcJ93xxs,103402 +torch/optim/nadam.py,sha256=uVGHwApSmfPJaZUQJ9r706Xm6DqT73BR_u6_Sd4WPm8,26721 +torch/optim/optimizer.py,sha256=RosWCALluXXFhwNaYJC9eXztBUkf-3xs4xTdgfr3eD8,51385 +torch/optim/radam.py,sha256=DIwXjs4xI8niSrZ9Kp4Lj8bEv8LYbVfLLewFGC_MjAA,24927 +torch/optim/rmsprop.py,sha256=ETRPrSwF8pmMskZVgQOTBpciKOmtl8xwpu7yyxKZkrk,20590 +torch/optim/rprop.py,sha256=Mq6ZHRyNMJmeev-zcfsHvN3n_MboCjB10ZnEafsP70o,17695 +torch/optim/sgd.py,sha256=4JVTY0FlUNCqlNUWW_AwA5zez-vMYQjNOk8rInPTRoc,20296 +torch/optim/sparse_adam.py,sha256=M9uMYpTVzM2Jy7WOjLYWxGLTX7RTAh44lYN1fohPoQg,8046 +torch/optim/swa_utils.py,sha256=DLBth9zB5pb-RoJKz2hCRx3JCpFycSvk4u_MfiIUvew,23184 +torch/overrides.py,sha256=pDJDIuoaoGrKAyav72s1oEnS3DcyvaDWOSPuJADv_tU,108122 +torch/package/__init__.py,sha256=ZLLvoviHHErV-XQZagde2I4cuNDK49dFLRGUC5oyOFc,388 +torch/package/__pycache__/__init__.cpython-311.pyc,, +torch/package/__pycache__/_digraph.cpython-311.pyc,, +torch/package/__pycache__/_directory_reader.cpython-311.pyc,, +torch/package/__pycache__/_importlib.cpython-311.pyc,, +torch/package/__pycache__/_mangling.cpython-311.pyc,, +torch/package/__pycache__/_mock.cpython-311.pyc,, +torch/package/__pycache__/_package_pickler.cpython-311.pyc,, +torch/package/__pycache__/_package_unpickler.cpython-311.pyc,, +torch/package/__pycache__/_stdlib.cpython-311.pyc,, +torch/package/__pycache__/file_structure_representation.cpython-311.pyc,, +torch/package/__pycache__/find_file_dependencies.cpython-311.pyc,, +torch/package/__pycache__/glob_group.cpython-311.pyc,, +torch/package/__pycache__/importer.cpython-311.pyc,, +torch/package/__pycache__/package_exporter.cpython-311.pyc,, +torch/package/__pycache__/package_importer.cpython-311.pyc,, +torch/package/_digraph.py,sha256=sFyjCdLOgMvWt5Z8I5f_iliJqdnSRahZF58FPpv4DLA,5630 +torch/package/_directory_reader.py,sha256=4CzVDaz_zvXlYrgPfIJe5PGxyBHpFhMBGNiJvOeGOLM,1915 +torch/package/_importlib.py,sha256=chdvY9cde326LrzXj8VnjV_3eNqrMlhuPwhuEO0BvaQ,2998 +torch/package/_mangling.py,sha256=ultKR57Zsk2oEnpwCYGA2XHyA3dBp406yjUxFgHcdCs,1948 +torch/package/_mock.py,sha256=n4L1d-hoa5XO7kyAlxbYMjeZWa2vwQ_-7Ih_dZfH0SA,2866 +torch/package/_package_pickler.py,sha256=aJu-wsZUxM7AFr1VUJI6qClABvKKjoVaKDzHRW8QNoA,5785 +torch/package/_package_unpickler.py,sha256=hBxGPJDOF1wWmGVAfvN4FMCmm1o1Qt4pDKPmCdSdH-k,992 +torch/package/_stdlib.py,sha256=ttgTOJID6PsBLAyeNQ_tMaNXVF7tNEWUcH2_GIwI7WA,552 +torch/package/analyze/__init__.py,sha256=RtjmM0jmYQwfuv9mQoKgZQZBij-GQ4cFcJX7_-aihDg,130 +torch/package/analyze/__pycache__/__init__.cpython-311.pyc,, +torch/package/analyze/__pycache__/find_first_use_of_broken_modules.cpython-311.pyc,, +torch/package/analyze/__pycache__/is_from_package.cpython-311.pyc,, +torch/package/analyze/__pycache__/trace_dependencies.cpython-311.pyc,, +torch/package/analyze/find_first_use_of_broken_modules.py,sha256=0nn7RnQBbM_OvsyNz7AWHR1IL95wMs768O8vdMD2s7s,1114 +torch/package/analyze/is_from_package.py,sha256=5RN5zZTnmZiMxadQGK3OVYl38Q37nYS92FDVXrpQVEw,404 +torch/package/analyze/trace_dependencies.py,sha256=PHXKGtmWdCy7VczGvfVcV7AwFhFqfToPYVcTI5nSxec,2235 +torch/package/file_structure_representation.py,sha256=uJkvIJanCyW5QFFLGNWg5ICzo812ot_PuGeRGVnSmWE,4734 +torch/package/find_file_dependencies.py,sha256=-47nZhmmsTN92nmLp09KAmymnSzOAiXf5f65-umr_jc,3948 +torch/package/glob_group.py,sha256=aQo1kEtLj8JyyGzxSp3SNMrT1VhMoYZaUWdyNcfY3wQ,3658 +torch/package/importer.py,sha256=9SAhhM7FbU3W5F9FYgL8vZItnbrVC3c3lh9Z25ikquM,10239 +torch/package/package_exporter.py,sha256=EQGBZJxHhs5F3u4Vvcs9bAliRRO_o2_HInRxIyBGHao,52018 +torch/package/package_importer.py,sha256=yxJI1ZnEoF4P8oaRPCjiC-a_TPaWmtYizB8bEvyqqiA,32437 +torch/profiler/__init__.py,sha256=wkycjPawFAc2hKygHPFfcAfdkKKII5tR_Tp4GpGF0tw,1726 +torch/profiler/__pycache__/__init__.cpython-311.pyc,, +torch/profiler/__pycache__/_memory_profiler.cpython-311.pyc,, +torch/profiler/__pycache__/_pattern_matcher.cpython-311.pyc,, +torch/profiler/__pycache__/_utils.cpython-311.pyc,, +torch/profiler/__pycache__/itt.cpython-311.pyc,, +torch/profiler/__pycache__/profiler.cpython-311.pyc,, +torch/profiler/__pycache__/python_tracer.cpython-311.pyc,, +torch/profiler/_memory_profiler.py,sha256=yQXgBSdJaLvNDPnbDJNhzEh4n02nmCxx8Uo1Cmo2Md4,49566 +torch/profiler/_pattern_matcher.py,sha256=DJXdhBfr2k6DuW8ptOE9P0hANYrediNYwhLKi3ekeLw,25676 +torch/profiler/_utils.py,sha256=UaIPAW9xJxFSEulosABnLajpDWQluemlZPagEsWrXPg,22162 +torch/profiler/itt.py,sha256=GwDQYUY-qkdGn6Yg5VuS52aih12iJWLrPxdE3EMEXeg,1830 +torch/profiler/profiler.py,sha256=KRwwEOIg7ehlbkHVXAoMEPjGmXn4-AGrHCi_QOOyFBU,51818 +torch/profiler/python_tracer.py,sha256=mY1c9wqNHjZPmbJCrxNzduQiXUz2FM3wqYLsPwsEhtI,543 +torch/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/quantization/__init__.py,sha256=qdViHYX73iqc5xiNB9pKD6Ybzp33Wa2Xjv8j0DDA1eA,2810 +torch/quantization/__pycache__/__init__.cpython-311.pyc,, +torch/quantization/__pycache__/_numeric_suite.cpython-311.pyc,, +torch/quantization/__pycache__/_numeric_suite_fx.cpython-311.pyc,, +torch/quantization/__pycache__/_quantized_conversions.cpython-311.pyc,, +torch/quantization/__pycache__/fake_quantize.cpython-311.pyc,, +torch/quantization/__pycache__/fuse_modules.cpython-311.pyc,, +torch/quantization/__pycache__/fuser_method_mappings.cpython-311.pyc,, +torch/quantization/__pycache__/observer.cpython-311.pyc,, +torch/quantization/__pycache__/qconfig.cpython-311.pyc,, +torch/quantization/__pycache__/quant_type.cpython-311.pyc,, +torch/quantization/__pycache__/quantization_mappings.cpython-311.pyc,, +torch/quantization/__pycache__/quantize.cpython-311.pyc,, +torch/quantization/__pycache__/quantize_fx.cpython-311.pyc,, +torch/quantization/__pycache__/quantize_jit.cpython-311.pyc,, +torch/quantization/__pycache__/stubs.cpython-311.pyc,, +torch/quantization/__pycache__/utils.cpython-311.pyc,, +torch/quantization/_numeric_suite.py,sha256=kGqWAUJhc0DKg9RjXhiKRx7dxfmX-M5Y1w9jAEnU0Z0,779 +torch/quantization/_numeric_suite_fx.py,sha256=LkEYZQLt_CRTe4d_9EAvCzpuKKHTmTjYoXLXcawjN-I,752 +torch/quantization/_quantized_conversions.py,sha256=OM1zSUmz0HKz_aeVfQf92ZG2xiTFqAVWpQMas5gy8AQ,5204 +torch/quantization/fake_quantize.py,sha256=AZes9LhE_KB-0Q_nV0Qy5kSOY0N9cvv7NPEpdjTwBz4,1015 +torch/quantization/fuse_modules.py,sha256=qdHvwLDuYEu2zJaAKtztSbw157nYTS5rJLCKBbBLPRA,732 +torch/quantization/fuser_method_mappings.py,sha256=QT2XYwG6LRioeQPh0lrmZ2awt05ejXODVO3S1BFgu-I,512 +torch/quantization/fx/__init__.py,sha256=s3Wh6JJbmUuv-pk4yieKjDpsHZRUkEqW04jRMT9iJPs,594 +torch/quantization/fx/__pycache__/__init__.cpython-311.pyc,, +torch/quantization/fx/__pycache__/_equalize.cpython-311.pyc,, +torch/quantization/fx/__pycache__/convert.cpython-311.pyc,, +torch/quantization/fx/__pycache__/fuse.cpython-311.pyc,, +torch/quantization/fx/__pycache__/fusion_patterns.cpython-311.pyc,, +torch/quantization/fx/__pycache__/graph_module.cpython-311.pyc,, +torch/quantization/fx/__pycache__/match_utils.cpython-311.pyc,, +torch/quantization/fx/__pycache__/pattern_utils.cpython-311.pyc,, +torch/quantization/fx/__pycache__/prepare.cpython-311.pyc,, +torch/quantization/fx/__pycache__/quantization_patterns.cpython-311.pyc,, +torch/quantization/fx/__pycache__/quantization_types.cpython-311.pyc,, +torch/quantization/fx/__pycache__/utils.cpython-311.pyc,, +torch/quantization/fx/_equalize.py,sha256=lqBIInk3Gq4t2kdsaO0vpkjpCXriv5WQAgCP2uKlbak,1251 +torch/quantization/fx/convert.py,sha256=hQUg5B8P8CByLc7JIHeBEm15VHyuxPWxv2zFgo5oYmc,387 +torch/quantization/fx/fuse.py,sha256=xKT6NKY-nOHbiUAhvd6UyFLOWaN7IzTXzQkQQRM1OCM,381 +torch/quantization/fx/fusion_patterns.py,sha256=qSu3LbPeOO8dbO14vvA-yHKvoflh8F4Ta6JLCYOfmxU,416 +torch/quantization/fx/graph_module.py,sha256=Q2bphJkn60j97Wvy_gAOol-sAx5VKavZujO5Z1ChBmg,574 +torch/quantization/fx/match_utils.py,sha256=qFqoYdkrjA4jB2Figx-06RzeiN3KGs5WYt68TRqRYKs,457 +torch/quantization/fx/pattern_utils.py,sha256=8YjiPNSE0n9A6pLrlsv92foYAx37EWl93C5tHbxKrUQ,1299 +torch/quantization/fx/prepare.py,sha256=k6hE4OfbcI8r-csnlRP9gd8E4Hbak6NIO-q4E2_TPTg,387 +torch/quantization/fx/quantization_patterns.py,sha256=Qws7uHQqdnaF9nK_UPx_ACyQiREN7D40F9QqcuFafdQ,2088 +torch/quantization/fx/quantization_types.py,sha256=FC78rHJfePvTdJfTmXfKCBUXtz2mbF1SK7s3401zhZY,396 +torch/quantization/fx/utils.py,sha256=3KZFWzVZPxCpzxlNUxv3xigcpmYg2AmtaOyJfKtfuCM,724 +torch/quantization/observer.py,sha256=J8sHSdsC9i6OqY4_OpzrTOqeHS1fZF_VmN132CZQWsY,1079 +torch/quantization/qconfig.py,sha256=NT4W-h_HrXKX06TnuRxrvfnv5Kwho6Xa4vd7ESA7RHs,944 +torch/quantization/quant_type.py,sha256=wwPL8MSv-G6QV5LogvkL4xRJ28Ido0yA7kPzh2dsIo0,399 +torch/quantization/quantization_mappings.py,sha256=F4DwF6qNFg8h4xhKvp8nBGuLLr5VwNjNjRoSTWFebdI,1148 +torch/quantization/quantize.py,sha256=g8mA0kRJIO2z63PuUcawc9bovat-uVjeUxIKFwvLb-I,804 +torch/quantization/quantize_fx.py,sha256=hBC2pUobd9oeYUliLKlIYE2dQ-6BQvdxg2xTyvkFLa8,736 +torch/quantization/quantize_jit.py,sha256=JNw2_M1d6EITYzYrXlrAsUac_4tX-IDMuAO_7prxhk8,714 +torch/quantization/stubs.py,sha256=ukEM_vZ34I3UdBnhFPn5GFL713MwFlEysXUAfYGshnA,392 +torch/quantization/utils.py,sha256=kOpHHmJ602vEybccn81hVLOHwY0CQ2YdnG9n9kOVcQM,833 +torch/quasirandom.py,sha256=APrygrXAGBNtwTyf4v_gqJtT6AvOukzyCkQQf7l1p7k,7905 +torch/random.py,sha256=uouV1Ty8gpCkI3QX-mBEFqteAe2aoe6ttVKK6Tpch7I,9515 +torch/return_types.py,sha256=n2BeQf08b5YJcfOkm6JSqVUPDcy5To831qwGVNWiFf8,1537 +torch/return_types.pyi,sha256=hHUj4bIDTq9gprXJamZ5xR0U5vLVBqQRSOwE0uIg8G4,17837 +torch/serialization.py,sha256=gfKlt1TsxveU7DTlEw9SFLcAx-h5uAwLXxtJZPU1KcE,87310 +torch/share/cmake/ATen/ATenConfig.cmake,sha256=xNnEU2M076jtMAEujFyD6PIVK1CH7_VmvMiQO9hOfjU,299 +torch/share/cmake/Caffe2/Caffe2Config.cmake,sha256=QPGaT88ucHtrXtUIwYwMYFW-zPaKyMv29oA1AT8YD4s,5347 +torch/share/cmake/Caffe2/Caffe2Targets-release.cmake,sha256=ktjB35_r3hByVk9vsV7aPUzb0SYhq7ek8pW53WaOZZg,2580 +torch/share/cmake/Caffe2/Caffe2Targets.cmake,sha256=Mh98tDdDHTWQxIR8vr9WYxqGO44C0P4VHeMbjx_chBI,7413 +torch/share/cmake/Caffe2/FindCUDAToolkit.cmake,sha256=kl99c2bqe1LwRcg7k8VkwqL99pQ9CF9vTwG-kfKIu84,38768 +torch/share/cmake/Caffe2/FindCUDSS.cmake,sha256=54i8T6FKzYP1KMtHTXaUhsuCuXHogM8SDadMAUNZT8I,2698 +torch/share/cmake/Caffe2/FindCUSPARSELT.cmake,sha256=cjNafMBEzBGv0kZAQqMxdpku0Vyf2Yrn3vJ_OVHxdUQ,3068 +torch/share/cmake/Caffe2/FindSYCLToolkit.cmake,sha256=w2vDQMm9VF71HM4v7XmJK8DTdiE3Q_d91rmjB8nE-kQ,4547 +torch/share/cmake/Caffe2/Modules_CUDA_fix/FindCUDA.cmake,sha256=uH9LCtcsv8VgeuFEyyMTugFUiILpcgM3oEnJZka4AB0,459 +torch/share/cmake/Caffe2/Modules_CUDA_fix/FindCUDNN.cmake,sha256=NKwIx_LRJ3uu9oJC9_apdlRooZ-uR_izK1_deByfEQo,3085 +torch/share/cmake/Caffe2/Modules_CUDA_fix/upstream/CMakeInitializeConfigs.cmake,sha256=v1O1FBKmJWk1h-Zbh8M6qVlP4OqVsmCcYD8zwdVfb6Q,1657 +torch/share/cmake/Caffe2/Modules_CUDA_fix/upstream/FindCUDA.cmake,sha256=vz7pTfsrZCUqr1wtAtEP7gkiTKex3dDaAK4AZLj2hRQ,86626 +torch/share/cmake/Caffe2/Modules_CUDA_fix/upstream/FindCUDA/make2cmake.cmake,sha256=_KLZxL3AhZehZKubThy4o2C_gEH5mm4h3kMpxLHgajU,3925 +torch/share/cmake/Caffe2/Modules_CUDA_fix/upstream/FindCUDA/parse_cubin.cmake,sha256=h3Ka8c-mmE2Majl0s8342faZWVPAaDbO1rM_4m--YzA,3439 +torch/share/cmake/Caffe2/Modules_CUDA_fix/upstream/FindCUDA/run_nvcc.cmake,sha256=xCYQQ4GWx5BsAWYZZEOo79e_Pu_pK7S_pWM-6XNS-Tw,11813 +torch/share/cmake/Caffe2/Modules_CUDA_fix/upstream/FindCUDA/select_compute_arch.cmake,sha256=PUypM4YCR0F9MGhlKdZf42uuJ75p7QscDUXYjE0jm5o,11478 +torch/share/cmake/Caffe2/Modules_CUDA_fix/upstream/FindPackageMessage.cmake,sha256=ToKFxPt7HSmEA014cFkMZl79quM2gpF7tmcP8h1BuYs,1564 +torch/share/cmake/Caffe2/public/LoadHIP.cmake,sha256=m5IZN3iFDIH2dYYkm_JusVe0bM3tmSdibD2GPKIn7AI,11583 +torch/share/cmake/Caffe2/public/cuda.cmake,sha256=d81xNZF8GCHeT7xcVxptrewQWF1QXIS1BvyX75EL-kM,14952 +torch/share/cmake/Caffe2/public/gflags.cmake,sha256=YrTkm-nQX6N3mh3tpY9a-i1_s_lAlifW0V_UZdAHS-M,2620 +torch/share/cmake/Caffe2/public/glog.cmake,sha256=zy1mZaicXNUHxSG7eOZ4ZVnbgk5qN-IuG_-jXUi98nk,2320 +torch/share/cmake/Caffe2/public/mkl.cmake,sha256=y1E6axKvT-AvgfmJrVMptYDVJ5svt723jNuQYIJp_kg,1317 +torch/share/cmake/Caffe2/public/mkldnn.cmake,sha256=7D8oS35genLaLdSPfgh3foWXQMsa2bUsQnB5WKfKPAA,444 +torch/share/cmake/Caffe2/public/protobuf.cmake,sha256=weW3OuHBIqIt0KpWRWzAnzSCu-AJ9naUfkjxcvaRl5c,4003 +torch/share/cmake/Caffe2/public/utils.cmake,sha256=1UMBDrswArGXYU6AViKYbIAGjIDwIhbnZyvIrvltNBo,23878 +torch/share/cmake/Caffe2/public/xpu.cmake,sha256=ZIqtXMW4xoEMW0e534gK8EnfdEvy3e5LpXHK5ZK2bag,1551 +torch/share/cmake/Tensorpipe/TensorpipeTargets-release.cmake,sha256=F61imoXwiRatw97-TefIPmRwlsVTdvAXItQDGEFGGPI,1803 +torch/share/cmake/Tensorpipe/TensorpipeTargets.cmake,sha256=Q38LErNHgRz5BhUrCMqs2L3eNClmq1llrh7KZMCyIyI,4837 +torch/share/cmake/Torch/TorchConfig.cmake,sha256=hwK5dIaH-1nA2uJRibCKluPw0fqYDm_22MSHYmSv4z4,4945 +torch/share/cmake/Torch/TorchConfigVersion.cmake,sha256=9UVQsRf7gk6XRd1ZLOcVvWiI5-59S3XWiw7yXWgrPow,367 +torch/signal/__init__.py,sha256=UvInN-gZ-pXXT9wvdSjrESHuSVNz5qEcnLMRzycbXiU,46 +torch/signal/__pycache__/__init__.cpython-311.pyc,, +torch/signal/windows/__init__.py,sha256=pqkf3lWIkwGpjDn_njgkrpqzYYCBpC25zEK7iD4FGaI,383 +torch/signal/windows/__pycache__/__init__.cpython-311.pyc,, +torch/signal/windows/__pycache__/windows.cpython-311.pyc,, +torch/signal/windows/windows.py,sha256=qJi7w3QzoL4Ime9gKazKAaErMj-QreMgDHGr1LCz5cI,22720 +torch/sparse/__init__.py,sha256=0n3D6V_sF2pYzuthQaPy8qx-JBmgtX4-5UEEgDb0xIY,26965 +torch/sparse/__pycache__/__init__.cpython-311.pyc,, +torch/sparse/__pycache__/_semi_structured_conversions.cpython-311.pyc,, +torch/sparse/__pycache__/_semi_structured_ops.cpython-311.pyc,, +torch/sparse/__pycache__/_triton_ops.cpython-311.pyc,, +torch/sparse/__pycache__/_triton_ops_meta.cpython-311.pyc,, +torch/sparse/__pycache__/semi_structured.cpython-311.pyc,, +torch/sparse/_semi_structured_conversions.py,sha256=F1nRbKXb3PClzvZ26vvU8Ud69elhsYqPyN2DocHGco4,14094 +torch/sparse/_semi_structured_ops.py,sha256=6uj2Fvn1JYyBfT2sF9uDI7EzXivvmKhFkxAxEeicJhM,10612 +torch/sparse/_triton_ops.py,sha256=9oBcxE_L_5NDrGZkEi7HdbrYtgzSEvZcfc8XFKUxMjI,89779 +torch/sparse/_triton_ops_meta.py,sha256=y16nK_DKMcm8yH-jzC_HpVbBL30xwIexsxwkvrLoD8w,501362 +torch/sparse/semi_structured.py,sha256=MwHbXxtUtbj01gz_fBfGRsxFQNvO1g0qrUHeYd106Fw,33260 +torch/special/__init__.py,sha256=vua7SYF8ZjpL6Gpf_M6VCrVW1b-WHfJqfx4-KTNMZgU,32035 +torch/special/__pycache__/__init__.cpython-311.pyc,, +torch/storage.py,sha256=-ut6ECHI8BugF6-igb8OlN6vVfye5f50Ly8JzBZGf-A,52636 +torch/testing/__init__.py,sha256=KWGXAtM1wGYjenz5lGf2H16r3-qI1ZmOVsHuxHn7S2k,219 +torch/testing/__pycache__/__init__.cpython-311.pyc,, +torch/testing/__pycache__/_comparison.cpython-311.pyc,, +torch/testing/__pycache__/_creation.cpython-311.pyc,, +torch/testing/__pycache__/_utils.cpython-311.pyc,, +torch/testing/_comparison.py,sha256=-SuWgM5IXl3CUnTUZXL1Y8lQ7rJYMRdjMrWz4SCnJuI,67574 +torch/testing/_creation.py,sha256=t0WsWWWwuWIKu8S7fTSUeEryLxogRishdWJWEXFvoPg,12156 +torch/testing/_internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/testing/_internal/__pycache__/__init__.cpython-311.pyc,, +torch/testing/_internal/__pycache__/autocast_test_lists.cpython-311.pyc,, +torch/testing/_internal/__pycache__/autograd_function_db.cpython-311.pyc,, +torch/testing/_internal/__pycache__/check_kernel_launches.cpython-311.pyc,, +torch/testing/_internal/__pycache__/common_cuda.cpython-311.pyc,, +torch/testing/_internal/__pycache__/common_device_type.cpython-311.pyc,, +torch/testing/_internal/__pycache__/common_dist_composable.cpython-311.pyc,, +torch/testing/_internal/__pycache__/common_distributed.cpython-311.pyc,, +torch/testing/_internal/__pycache__/common_dtype.cpython-311.pyc,, +torch/testing/_internal/__pycache__/common_fsdp.cpython-311.pyc,, +torch/testing/_internal/__pycache__/common_jit.cpython-311.pyc,, +torch/testing/_internal/__pycache__/common_methods_invocations.cpython-311.pyc,, +torch/testing/_internal/__pycache__/common_mkldnn.cpython-311.pyc,, +torch/testing/_internal/__pycache__/common_modules.cpython-311.pyc,, +torch/testing/_internal/__pycache__/common_mps.cpython-311.pyc,, +torch/testing/_internal/__pycache__/common_nn.cpython-311.pyc,, +torch/testing/_internal/__pycache__/common_ops_unbacked.cpython-311.pyc,, +torch/testing/_internal/__pycache__/common_optimizers.cpython-311.pyc,, +torch/testing/_internal/__pycache__/common_pruning.cpython-311.pyc,, +torch/testing/_internal/__pycache__/common_quantization.cpython-311.pyc,, +torch/testing/_internal/__pycache__/common_quantized.cpython-311.pyc,, +torch/testing/_internal/__pycache__/common_subclass.cpython-311.pyc,, +torch/testing/_internal/__pycache__/common_utils.cpython-311.pyc,, +torch/testing/_internal/__pycache__/common_xpu.cpython-311.pyc,, +torch/testing/_internal/__pycache__/composite_compliance.cpython-311.pyc,, +torch/testing/_internal/__pycache__/custom_op_db.cpython-311.pyc,, +torch/testing/_internal/__pycache__/custom_tensor.cpython-311.pyc,, +torch/testing/_internal/__pycache__/dist_utils.cpython-311.pyc,, +torch/testing/_internal/__pycache__/dynamo_pytree_test_utils.cpython-311.pyc,, +torch/testing/_internal/__pycache__/dynamo_test_failures.cpython-311.pyc,, +torch/testing/_internal/__pycache__/fake_config_module.cpython-311.pyc,, +torch/testing/_internal/__pycache__/fake_config_module2.cpython-311.pyc,, +torch/testing/_internal/__pycache__/fake_config_module3.cpython-311.pyc,, +torch/testing/_internal/__pycache__/hop_db.cpython-311.pyc,, +torch/testing/_internal/__pycache__/hypothesis_utils.cpython-311.pyc,, +torch/testing/_internal/__pycache__/inductor_utils.cpython-311.pyc,, +torch/testing/_internal/__pycache__/jit_metaprogramming_utils.cpython-311.pyc,, +torch/testing/_internal/__pycache__/jit_utils.cpython-311.pyc,, +torch/testing/_internal/__pycache__/logging_tensor.cpython-311.pyc,, +torch/testing/_internal/__pycache__/logging_utils.cpython-311.pyc,, +torch/testing/_internal/__pycache__/quantization_torch_package_models.cpython-311.pyc,, +torch/testing/_internal/__pycache__/static_module.cpython-311.pyc,, +torch/testing/_internal/__pycache__/subclasses.cpython-311.pyc,, +torch/testing/_internal/__pycache__/torchbind_impls.cpython-311.pyc,, +torch/testing/_internal/__pycache__/triton_utils.cpython-311.pyc,, +torch/testing/_internal/__pycache__/two_tensor.cpython-311.pyc,, +torch/testing/_internal/autocast_test_lists.py,sha256=UebIEDySNOBGqMvy6_35gb-631DGLb-uMUnjF5CWNys,28483 +torch/testing/_internal/autograd_function_db.py,sha256=mR_aqHOk6Ib7aZXSW_Y32mfWe7e9iymYw0sJAchdAzY,19755 +torch/testing/_internal/check_kernel_launches.py,sha256=KDW-fjae41C_aetbWyQGeXsEBWpv0cQaM9S57AdbQPo,6027 +torch/testing/_internal/codegen/__init__.py,sha256=8QLhisbHub6VJl6egijnrOPKK5QNAe5FJhfcxEelj4Y,22 +torch/testing/_internal/codegen/__pycache__/__init__.cpython-311.pyc,, +torch/testing/_internal/common_cuda.py,sha256=wXBvxEIx0V8r7iVMwlbAlyRQAvcY8RjGhWam8ZVcxVo,20749 +torch/testing/_internal/common_device_type.py,sha256=u9xE282GZS0BSUZ0tj4Wrk6GDzxA_73UgX1PqDqeEjM,78103 +torch/testing/_internal/common_dist_composable.py,sha256=IwtTq8pjXlXDotDZE_Fpy1o7tkpAP_WnNcx05GpJ3YA,3577 +torch/testing/_internal/common_distributed.py,sha256=5xPiTvkpUCVhMel193UUfbNJJRcaZKroUBVtGdyePSs,77548 +torch/testing/_internal/common_dtype.py,sha256=FTpLgdDdpjIZ1qNYDhBTmvumoryYYJe6dZA5eWf5Jtc,5589 +torch/testing/_internal/common_fsdp.py,sha256=3i8dvE-ig8w8I6vsE4txw7FTadKFFLtJhWfuWdnmiOE,63927 +torch/testing/_internal/common_jit.py,sha256=3TEnvapmxqgf_O31FoBrIJgcGbRp_uERaDJyut39zaU,15823 +torch/testing/_internal/common_methods_invocations.py,sha256=0BXkOmL5n_veijApVH7oVLgUJbpv2G9ot9hJhJoh_gs,1330190 +torch/testing/_internal/common_mkldnn.py,sha256=b0E0qdrCqWWWhonniOmNFT7_aE8DwdDB12cqjuvwt4Y,3895 +torch/testing/_internal/common_modules.py,sha256=bUS5wK5jEn5d5CnD6pUOBrTBenXoXjccUS-_4k0TOBU,227778 +torch/testing/_internal/common_mps.py,sha256=uSpkldJorzjVPH8mQ0AjkBVjX3mVmTIZuASgh4-C8yk,36324 +torch/testing/_internal/common_nn.py,sha256=1BAGkKwPvMZ87G9aLDAu6j8z9-b_6c1_O3TcTCbjEQ0,173860 +torch/testing/_internal/common_ops_unbacked.py,sha256=wSVpv7UEzojYtAk1bmfJQK5RelSo06CWKa0BNxU3zm0,8139 +torch/testing/_internal/common_optimizers.py,sha256=PINJdcjRDV0I2smt1yjFYytFvjc07LiXlDEjKQDfKrw,86428 +torch/testing/_internal/common_pruning.py,sha256=nYwQmrHvNQpRmIkuxK7yYki2CwmaMVJKsnIW_Z-xIw8,13655 +torch/testing/_internal/common_quantization.py,sha256=POrIhsraTvmhDxTl11gfuTzAgiATDhdkbvsfwmSR0gQ,113562 +torch/testing/_internal/common_quantized.py,sha256=DFpHK9zUlWbl81_HN623IAeKTEZ0ZDbSp_A0xJcU37o,26229 +torch/testing/_internal/common_subclass.py,sha256=DnQmbpIJwQulcL2_LKY-0Eecns3UTAmPGjnjPP9_Aek,12277 +torch/testing/_internal/common_utils.py,sha256=Mipwm2PVFvethSbXSNE1zRkf_CCu0SAF5ge4t7rsIsM,254687 +torch/testing/_internal/common_xpu.py,sha256=5MToq646Q7bYRLYlBnvkP-AZNaoQWJfRqvSNGDj_vug,2265 +torch/testing/_internal/composite_compliance.py,sha256=QyoLKwh7grzb8MqdhxamA7X5Bvo_6YqFAnSAHWf1JXM,26584 +torch/testing/_internal/custom_op_db.py,sha256=bJ1_wqRX4UrohsLp29Z3qKJO5M4WRgoXlgpIKss3wgI,20991 +torch/testing/_internal/custom_tensor.py,sha256=f1Yc5nNAanrdQ5gCflY6a-Vs10xZXWYRB8jd5fEKzO4,5337 +torch/testing/_internal/data/__init__.py,sha256=8QLhisbHub6VJl6egijnrOPKK5QNAe5FJhfcxEelj4Y,22 +torch/testing/_internal/data/__pycache__/__init__.cpython-311.pyc,, +torch/testing/_internal/data/__pycache__/network1.cpython-311.pyc,, +torch/testing/_internal/data/__pycache__/network2.cpython-311.pyc,, +torch/testing/_internal/data/network1.py,sha256=ksE5iUCq6Hhp8772pRhqpUna414huKdlzvh92oQgxTc,169 +torch/testing/_internal/data/network2.py,sha256=FlOrR6LuubeOhZHKURvkoWqIGHlvMNX2SyoZ22XPvfg,199 +torch/testing/_internal/dist_utils.py,sha256=WBlzvl4sb7bXl8T_Dv_-LDgZtUp4bdGCFfCNpbDjWck,7255 +torch/testing/_internal/distributed/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/testing/_internal/distributed/__pycache__/__init__.cpython-311.pyc,, +torch/testing/_internal/distributed/__pycache__/checkpoint_utils.cpython-311.pyc,, +torch/testing/_internal/distributed/__pycache__/common_state_dict.cpython-311.pyc,, +torch/testing/_internal/distributed/__pycache__/ddp_under_dist_autograd_test.cpython-311.pyc,, +torch/testing/_internal/distributed/__pycache__/distributed_test.cpython-311.pyc,, +torch/testing/_internal/distributed/__pycache__/distributed_utils.cpython-311.pyc,, +torch/testing/_internal/distributed/__pycache__/fake_pg.cpython-311.pyc,, +torch/testing/_internal/distributed/__pycache__/multi_threaded_pg.cpython-311.pyc,, +torch/testing/_internal/distributed/__pycache__/rpc_utils.cpython-311.pyc,, +torch/testing/_internal/distributed/_shard/__init__.py,sha256=mIQlHRV-d0Zr3TOwF0Vr4fBPuPk4uNR8rzKPy1EhlPw,27 +torch/testing/_internal/distributed/_shard/__pycache__/__init__.cpython-311.pyc,, +torch/testing/_internal/distributed/_shard/__pycache__/test_common.cpython-311.pyc,, +torch/testing/_internal/distributed/_shard/sharded_tensor/__init__.py,sha256=h9RFxi9o1Jukm8ez0X7m1JNc9_zEcvBPNHNtODTMIPA,3212 +torch/testing/_internal/distributed/_shard/sharded_tensor/__pycache__/__init__.cpython-311.pyc,, +torch/testing/_internal/distributed/_shard/sharded_tensor/__pycache__/_test_ops_common.cpython-311.pyc,, +torch/testing/_internal/distributed/_shard/sharded_tensor/__pycache__/_test_st_common.cpython-311.pyc,, +torch/testing/_internal/distributed/_shard/sharded_tensor/_test_ops_common.py,sha256=Ngk6Ynz4RSlUmj5oDTB0d-1jr4hl7DiVvyGy1IZefcw,4011 +torch/testing/_internal/distributed/_shard/sharded_tensor/_test_st_common.py,sha256=Qys7mhe_-Ew8m14WqTGlJ1VJf_gINSZyraRfyDNP44w,1618 +torch/testing/_internal/distributed/_shard/test_common.py,sha256=0siUUMgcT2SqfCOGQvb4_k-_r2yHoOALNG0kM1OTGwc,1219 +torch/testing/_internal/distributed/_tensor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/testing/_internal/distributed/_tensor/__pycache__/__init__.cpython-311.pyc,, +torch/testing/_internal/distributed/_tensor/__pycache__/common_dtensor.cpython-311.pyc,, +torch/testing/_internal/distributed/_tensor/common_dtensor.py,sha256=SK8hNvUEYAvY80ea54htmIVF06JrX819Yr1PzJBC21o,52552 +torch/testing/_internal/distributed/checkpoint_utils.py,sha256=xxtwj393h3AM_1tT4CTCdB0qd_zyYyCc4xvALUjOFDc,6267 +torch/testing/_internal/distributed/common_state_dict.py,sha256=HU0cY-TeqC7QE6BFuQd_GnLF-H5Up0_IY-y9AFw1Ui4,6725 +torch/testing/_internal/distributed/ddp_under_dist_autograd_test.py,sha256=jU3edCICiCyIKvbKM3HSreOzUApjTfUFBefCzJ0wt-c,27326 +torch/testing/_internal/distributed/distributed_test.py,sha256=j59ak0RnBJB3AXHdfrSR8CPCNgG_Vsp0XENMhHB-k1g,455010 +torch/testing/_internal/distributed/distributed_utils.py,sha256=rZ606dkmJjUfgKsgyRMTYOZATiaXwryb6GRcsbQ3wdg,1932 +torch/testing/_internal/distributed/fake_pg.py,sha256=Rw_i-rRfacMra5a7Pg7cWf_YG7YEDCUV3S2LldZ8lL8,1150 +torch/testing/_internal/distributed/multi_threaded_pg.py,sha256=V8fEjM0S09R2gT5y4YVAfTg837EyWCiArD_U6BSrPKM,22866 +torch/testing/_internal/distributed/nn/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/testing/_internal/distributed/nn/__pycache__/__init__.cpython-311.pyc,, +torch/testing/_internal/distributed/nn/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/testing/_internal/distributed/nn/api/__pycache__/__init__.cpython-311.pyc,, +torch/testing/_internal/distributed/nn/api/__pycache__/remote_module_test.cpython-311.pyc,, +torch/testing/_internal/distributed/nn/api/remote_module_test.py,sha256=GohOmmJgmhgehHlcwU55daRtg1zl1NN447dORb_An9E,29751 +torch/testing/_internal/distributed/rpc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/testing/_internal/distributed/rpc/__pycache__/__init__.cpython-311.pyc,, +torch/testing/_internal/distributed/rpc/__pycache__/dist_autograd_test.cpython-311.pyc,, +torch/testing/_internal/distributed/rpc/__pycache__/dist_optimizer_test.cpython-311.pyc,, +torch/testing/_internal/distributed/rpc/__pycache__/faulty_agent_rpc_test.cpython-311.pyc,, +torch/testing/_internal/distributed/rpc/__pycache__/faulty_rpc_agent_test_fixture.cpython-311.pyc,, +torch/testing/_internal/distributed/rpc/__pycache__/rpc_agent_test_fixture.cpython-311.pyc,, +torch/testing/_internal/distributed/rpc/__pycache__/rpc_test.cpython-311.pyc,, +torch/testing/_internal/distributed/rpc/__pycache__/tensorpipe_rpc_agent_test_fixture.cpython-311.pyc,, +torch/testing/_internal/distributed/rpc/dist_autograd_test.py,sha256=m75fbca1a1AKYej-xilTAphhZtTjlwRJKOnNevpH05E,107635 +torch/testing/_internal/distributed/rpc/dist_optimizer_test.py,sha256=HibDFt3xUTuOmm2mXOAnEzCctb48WKGzNPWZ-BRr-hk,10574 +torch/testing/_internal/distributed/rpc/examples/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/testing/_internal/distributed/rpc/examples/__pycache__/__init__.cpython-311.pyc,, +torch/testing/_internal/distributed/rpc/examples/__pycache__/parameter_server_test.cpython-311.pyc,, +torch/testing/_internal/distributed/rpc/examples/__pycache__/reinforcement_learning_rpc_test.cpython-311.pyc,, +torch/testing/_internal/distributed/rpc/examples/parameter_server_test.py,sha256=_sm9R6jjnAkl49tk_dOH9dRZIdDEmuAmOy4DUkMa9ck,4568 +torch/testing/_internal/distributed/rpc/examples/reinforcement_learning_rpc_test.py,sha256=JDYkhzz7ZsK-H-IVEPic9Sxu7ZLv0taf1REfAnWgTbM,9268 +torch/testing/_internal/distributed/rpc/faulty_agent_rpc_test.py,sha256=zcYRImWXoIg0qmVWpkPlTKA_t0neQPYyi9YXm8IdgTo,14239 +torch/testing/_internal/distributed/rpc/faulty_rpc_agent_test_fixture.py,sha256=ziVR9Z4tDhdG0omKEvGVfOXDN2I10eeXCcMYJ6G_vYk,2142 +torch/testing/_internal/distributed/rpc/jit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/testing/_internal/distributed/rpc/jit/__pycache__/__init__.cpython-311.pyc,, +torch/testing/_internal/distributed/rpc/jit/__pycache__/dist_autograd_test.cpython-311.pyc,, +torch/testing/_internal/distributed/rpc/jit/__pycache__/rpc_test.cpython-311.pyc,, +torch/testing/_internal/distributed/rpc/jit/__pycache__/rpc_test_faulty.cpython-311.pyc,, +torch/testing/_internal/distributed/rpc/jit/dist_autograd_test.py,sha256=bzq_ajaMCiVEFFmI1IsrK_bRKneEDMyyKOkXuiuq_ZE,4172 +torch/testing/_internal/distributed/rpc/jit/rpc_test.py,sha256=5Z1TtfUjWPqMWS6hlGq53PvW34Cs5A6WTZ3iMxoKTNw,46869 +torch/testing/_internal/distributed/rpc/jit/rpc_test_faulty.py,sha256=8TjJOzAvAlbE2qy3izpDBUHnUzog6r7jjEPciYoLs7U,7974 +torch/testing/_internal/distributed/rpc/rpc_agent_test_fixture.py,sha256=y5P27BCxk82IPTVOzov4-Ojr3_tykIOGlLlSEwWEv_w,1874 +torch/testing/_internal/distributed/rpc/rpc_test.py,sha256=kOBdxxXTM9FWJ7V4JNQUBikliwSgmrcMoftKwFu-Sr4,225756 +torch/testing/_internal/distributed/rpc/tensorpipe_rpc_agent_test_fixture.py,sha256=6RTlsS0sKBh2iZqvLm_ieqIQpjSuwqlYc7qdgjb96YM,974 +torch/testing/_internal/distributed/rpc_utils.py,sha256=_ytL9c2DUzSMzTVyoOTKg8UJVlINNdy0R4mtFXBR0rI,6615 +torch/testing/_internal/dynamo_pytree_test_utils.py,sha256=5zPqhGQDcqd4Ynshj8cS_TVz_syUcPa_nKWDAKCQ0lY,1059 +torch/testing/_internal/dynamo_test_failures.py,sha256=RHMRhAL0qKlVfHftaisckwbED_660cYHzyxCP4ANHVI,5440 +torch/testing/_internal/fake_config_module.py,sha256=py4Y9FaDJ7vdrG2xgJGVkuySNFyN1fe_pXoSgKlJ3xw,1559 +torch/testing/_internal/fake_config_module2.py,sha256=gk8fSMjiMktUYrbdWi-Yvm4aH6TeOBa-7nnB5SDMZwQ,343 +torch/testing/_internal/fake_config_module3.py,sha256=z6yJU2RkB7XBD22EDgPgRo5VVtr-iDR-U0HLdmMF8JU,220 +torch/testing/_internal/generated/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/testing/_internal/generated/__pycache__/__init__.cpython-311.pyc,, +torch/testing/_internal/generated/__pycache__/annotated_fn_args.cpython-311.pyc,, +torch/testing/_internal/generated/annotated_fn_args.py,sha256=_CFByfk35O5U_s3tnvTw7Thm5tbWMaqG7PGu1oIlk_M,561508 +torch/testing/_internal/hop_db.py,sha256=uPTK9DAnN4ygDlbZCzP44QOZ1YkvxYKyCNKskqcCdjA,21951 +torch/testing/_internal/hypothesis_utils.py,sha256=KzYeCpETyJ78U5bd7KJYHr9aRhkeS86JUHKEt2t2CHs,15161 +torch/testing/_internal/inductor_utils.py,sha256=oP6jzu4-l0Uwo9IGxjGQYAeg_J0N_UZpcso4EXSuLqI,15029 +torch/testing/_internal/jit_metaprogramming_utils.py,sha256=z1YykYJIqnC2Ik2EepGoB_Hicux88m2Wytze3LX769o,34155 +torch/testing/_internal/jit_utils.py,sha256=cGn3Orv7a1b5sfYwOtJEwfljyQb2UEXYZHxGFHwx_BY,33964 +torch/testing/_internal/logging_tensor.py,sha256=d91-JZrIa-zByXCSVLRuWjbXViUhjXFkqxwV4NwPieQ,6615 +torch/testing/_internal/logging_utils.py,sha256=hHrY_eSidr5n7N602cfaa_rp9tuksIEhNq54g3y-NfI,8240 +torch/testing/_internal/opinfo/__init__.py,sha256=6PWvlARagSjyrZW5xCOA5YGQjLqwaijc36TFX4UrU9g,116 +torch/testing/_internal/opinfo/__pycache__/__init__.cpython-311.pyc,, +torch/testing/_internal/opinfo/__pycache__/core.cpython-311.pyc,, +torch/testing/_internal/opinfo/__pycache__/refs.cpython-311.pyc,, +torch/testing/_internal/opinfo/__pycache__/utils.cpython-311.pyc,, +torch/testing/_internal/opinfo/core.py,sha256=AAf-jgR1cIu-f-J0g6yjceqYXUwHX0hje9o6u0Q6IoM,127681 +torch/testing/_internal/opinfo/definitions/__init__.py,sha256=8IK85dB9S_tx3aiyuUwfSYLKgoGRaBmVnajBKn__Vqk,452 +torch/testing/_internal/opinfo/definitions/__pycache__/__init__.cpython-311.pyc,, +torch/testing/_internal/opinfo/definitions/__pycache__/_masked.cpython-311.pyc,, +torch/testing/_internal/opinfo/definitions/__pycache__/fft.cpython-311.pyc,, +torch/testing/_internal/opinfo/definitions/__pycache__/linalg.cpython-311.pyc,, +torch/testing/_internal/opinfo/definitions/__pycache__/nested.cpython-311.pyc,, +torch/testing/_internal/opinfo/definitions/__pycache__/signal.cpython-311.pyc,, +torch/testing/_internal/opinfo/definitions/__pycache__/sparse.cpython-311.pyc,, +torch/testing/_internal/opinfo/definitions/__pycache__/special.cpython-311.pyc,, +torch/testing/_internal/opinfo/definitions/_masked.py,sha256=SudppCxRYJbWo3AzBEGpJ2o3GniJNsgpjpGf4hgbqj8,52992 +torch/testing/_internal/opinfo/definitions/fft.py,sha256=6rjSHPTRcvEA4Sk2ErE5WiJTsk5oKmtYCXqliY221-Y,34972 +torch/testing/_internal/opinfo/definitions/linalg.py,sha256=bdd9jOzQhKhbYVuiBqpbnqhj6SnTwNx8ph3OfaHc1_Y,103844 +torch/testing/_internal/opinfo/definitions/nested.py,sha256=NBYahzMS7eMKqlQlDfK02tQEFzIERQYsr5wMt9zUPlw,60962 +torch/testing/_internal/opinfo/definitions/signal.py,sha256=LM2_KWXES706JWWxUyf0oPbuz75WaFZ_fpR_UM0AsCY,15351 +torch/testing/_internal/opinfo/definitions/sparse.py,sha256=Qu8nC0I6uqNZp9rTsRvKE2651Tiyj5e5Ldqa1SD3iH8,33990 +torch/testing/_internal/opinfo/definitions/special.py,sha256=X-hckhKa6M0oaZaCE5GlNdtmUlQERbkWlfmm9UQ47-8,38344 +torch/testing/_internal/opinfo/refs.py,sha256=8AK4TpjI2I_4RAirGNEEgUqdOFX3OTRKZzYRzL2FhF8,8601 +torch/testing/_internal/opinfo/utils.py,sha256=h4MlSwpGT0NImvYqQE9M77ZBJC4ZGXbb5JaFTHKDxME,9042 +torch/testing/_internal/optests/__init__.py,sha256=o-8t0Cva860Tcw0Ig_-rBr6-9Uuc9bDRWRMG6FgKzbA,372 +torch/testing/_internal/optests/__pycache__/__init__.cpython-311.pyc,, +torch/testing/_internal/optests/__pycache__/aot_autograd.cpython-311.pyc,, +torch/testing/_internal/optests/__pycache__/autograd_registration.cpython-311.pyc,, +torch/testing/_internal/optests/__pycache__/fake_tensor.cpython-311.pyc,, +torch/testing/_internal/optests/__pycache__/generate_tests.cpython-311.pyc,, +torch/testing/_internal/optests/__pycache__/make_fx.cpython-311.pyc,, +torch/testing/_internal/optests/aot_autograd.py,sha256=-kidAO1i5dDRsdYFthkXhibAV6-w4R_zKnb6cvhmwVs,7123 +torch/testing/_internal/optests/autograd_registration.py,sha256=d1hcQqT58qY_re5xsDl7BL17EraIrvAHvcsTjvrKcQM,5850 +torch/testing/_internal/optests/fake_tensor.py,sha256=WuT0PGbogjTGPJeRYo2JiQYoTzj_iZET56L1zkv0W4w,257 +torch/testing/_internal/optests/generate_tests.py,sha256=03ddn1BtUlpG0bO2JI86FVXY5k1eEAp8Png6NuafHeE,32403 +torch/testing/_internal/optests/make_fx.py,sha256=cERDt-I8VgMfwqddFNkbnkWnBWPZZegU5Yo0ijAtF5E,3265 +torch/testing/_internal/py312_intrinsics.py,sha256=fYgzb7zJXmlxR7JP5sp9RyxwMo3L5XubgD8M7vagwfE,854 +torch/testing/_internal/quantization_torch_package_models.py,sha256=DnChjrnLG54TWRhINvfTxOFmNZt5WflDBJDpam4fj9w,951 +torch/testing/_internal/static_module.py,sha256=bwmblZ7N3UtKuO6UEJDUUJdqdhxxIpCwvmrJEESauOk,893 +torch/testing/_internal/subclasses.py,sha256=8zo_8ospVkQFG66o92R4So-doE1pwmMzUrQtQV5TBNo,2717 +torch/testing/_internal/test_module/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/testing/_internal/test_module/__pycache__/__init__.cpython-311.pyc,, +torch/testing/_internal/test_module/__pycache__/future_div.cpython-311.pyc,, +torch/testing/_internal/test_module/__pycache__/no_future_div.cpython-311.pyc,, +torch/testing/_internal/test_module/future_div.py,sha256=298hLJlLz2QCJ80OVQXQM6CgN71nbkFMNnkesgzSnY8,114 +torch/testing/_internal/test_module/no_future_div.py,sha256=sksxzWFUupRBbSThS69P366IwnWBNGJe9EqQx8m5EKM,145 +torch/testing/_internal/torchbind_impls.py,sha256=8fCTOVfS50ZUumG6lMv0AtA-EQp8MCAFQDolhKkDuho,5655 +torch/testing/_internal/triton_utils.py,sha256=GhJ-drULNUX-RXuG_0V0NUhgCPCqFMEbuXvYYjz9OSA,34222 +torch/testing/_internal/two_tensor.py,sha256=OW6MrKArI4emVGfWA3OC6wVU8HAKDZlFyBkA33yiZso,4451 +torch/testing/_utils.py,sha256=qfU2CiPMoNiej2eD4hqMJDAxMT8tviWzxM0HJqxiQ9M,2519 +torch/torch_version.py,sha256=MheXhDr4r0O0mDO_Eaxz7vYLl0HRWr8hnQciPgx4QuI,2530 +torch/types.py,sha256=p9HIFrfGdCQDv7Ws3JwV-v-k1ogXEzrhudBV3zJfzWg,3642 +torch/utils/__init__.py,sha256=zMoIT_1VcmllcYuDNcUEfhrwT5iksaEIlf0mzinvnqM,3891 +torch/utils/__pycache__/__init__.cpython-311.pyc,, +torch/utils/__pycache__/_appending_byte_serializer.cpython-311.pyc,, +torch/utils/__pycache__/_config_module.cpython-311.pyc,, +torch/utils/__pycache__/_content_store.cpython-311.pyc,, +torch/utils/__pycache__/_contextlib.cpython-311.pyc,, +torch/utils/__pycache__/_cpp_embed_headers.cpython-311.pyc,, +torch/utils/__pycache__/_cpp_extension_versioner.cpython-311.pyc,, +torch/utils/__pycache__/_cxx_pytree.cpython-311.pyc,, +torch/utils/__pycache__/_device.cpython-311.pyc,, +torch/utils/__pycache__/_dtype_abbrs.cpython-311.pyc,, +torch/utils/__pycache__/_exposed_in.cpython-311.pyc,, +torch/utils/__pycache__/_filelock.cpython-311.pyc,, +torch/utils/__pycache__/_foreach_utils.cpython-311.pyc,, +torch/utils/__pycache__/_functools.cpython-311.pyc,, +torch/utils/__pycache__/_get_clean_triton.cpython-311.pyc,, +torch/utils/__pycache__/_helion.cpython-311.pyc,, +torch/utils/__pycache__/_import_utils.cpython-311.pyc,, +torch/utils/__pycache__/_inspect.cpython-311.pyc,, +torch/utils/__pycache__/_mode_utils.cpython-311.pyc,, +torch/utils/__pycache__/_ordered_set.cpython-311.pyc,, +torch/utils/__pycache__/_pallas.cpython-311.pyc,, +torch/utils/__pycache__/_python_dispatch.cpython-311.pyc,, +torch/utils/__pycache__/_pytree.cpython-311.pyc,, +torch/utils/__pycache__/_runtime_estimation.cpython-311.pyc,, +torch/utils/__pycache__/_stats.cpython-311.pyc,, +torch/utils/__pycache__/_thunk.cpython-311.pyc,, +torch/utils/__pycache__/_traceback.cpython-311.pyc,, +torch/utils/__pycache__/_triton.cpython-311.pyc,, +torch/utils/__pycache__/_typing_utils.cpython-311.pyc,, +torch/utils/__pycache__/_zip.cpython-311.pyc,, +torch/utils/__pycache__/backend_registration.cpython-311.pyc,, +torch/utils/__pycache__/bundled_inputs.cpython-311.pyc,, +torch/utils/__pycache__/checkpoint.cpython-311.pyc,, +torch/utils/__pycache__/collect_env.cpython-311.pyc,, +torch/utils/__pycache__/cpp_backtrace.cpython-311.pyc,, +torch/utils/__pycache__/cpp_extension.cpython-311.pyc,, +torch/utils/__pycache__/deterministic.cpython-311.pyc,, +torch/utils/__pycache__/dlpack.cpython-311.pyc,, +torch/utils/__pycache__/file_baton.cpython-311.pyc,, +torch/utils/__pycache__/flop_counter.cpython-311.pyc,, +torch/utils/__pycache__/hooks.cpython-311.pyc,, +torch/utils/__pycache__/mkldnn.cpython-311.pyc,, +torch/utils/__pycache__/mobile_optimizer.cpython-311.pyc,, +torch/utils/__pycache__/model_zoo.cpython-311.pyc,, +torch/utils/__pycache__/module_tracker.cpython-311.pyc,, +torch/utils/__pycache__/show_pickle.cpython-311.pyc,, +torch/utils/__pycache__/throughput_benchmark.cpython-311.pyc,, +torch/utils/__pycache__/weak.cpython-311.pyc,, +torch/utils/_appending_byte_serializer.py,sha256=bs9USsaM-2edEomwNuRARE3qpqM6yMvauob3_EChH4s,4064 +torch/utils/_config_module.py,sha256=k3Fnh6B2XPwapOMJkdrwgMCdF3HJmeFn6VbKnzQa5oQ,35007 +torch/utils/_config_typing.pyi,sha256=ZSNBjlnywGtVn4IxDkS0azK0t3q9Go71xETCA7VTN-E,1333 +torch/utils/_content_store.py,sha256=oe3EG2xt1HjHby1Qx-QXwN4ny004UhStbwtm-ImE79o,9327 +torch/utils/_contextlib.py,sha256=8iwhoDfEsmpDERITj6ZqUQjF6c_kyRaecywdFep6hAY,6402 +torch/utils/_cpp_embed_headers.py,sha256=JEXbg6pJrEuEyc6wTsDYVAJds2U66qZ15-Ik4W1tYdw,1758 +torch/utils/_cpp_extension_versioner.py,sha256=YHjYXX88iLDyZSuhNPJ3O4LS0LkNiqc2HMCW9GJmMSs,1946 +torch/utils/_cxx_pytree.py,sha256=s0mUyHE20HLOZnwiCmXA0TQfK18zBXFZdE6q7BqXMP8,39540 +torch/utils/_debug_mode/__init__.py,sha256=-UAxBbdHX814m-ssq_tP2v9y0zioXiN-d13nBqOnHEU,671 +torch/utils/_debug_mode/__pycache__/__init__.cpython-311.pyc,, +torch/utils/_debug_mode/__pycache__/_calls.cpython-311.pyc,, +torch/utils/_debug_mode/__pycache__/_mode.cpython-311.pyc,, +torch/utils/_debug_mode/__pycache__/_utils.cpython-311.pyc,, +torch/utils/_debug_mode/_calls.py,sha256=on8lxXNnam0qfxMRJejYuH_u3VxTNJnkm1ASULDCN1s,11234 +torch/utils/_debug_mode/_mode.py,sha256=_-oUbJtj6leUMtpAgUk92o4sIzmxKDXwos6owS4gEhs,40727 +torch/utils/_debug_mode/_utils.py,sha256=LTUfYLN6NfcTPHjIOhb36U4JJzEB8e8Q6TQRBhenwnY,8547 +torch/utils/_device.py,sha256=VxuBQa9VHC2KcLpQcXI_clqZpDELIKqwmEUQYsQgy1w,4491 +torch/utils/_dtype_abbrs.py,sha256=L-w4-UnjmD5QeuGbwRqilJ0iCc9Q1XsTjQUvygG0GE0,755 +torch/utils/_exposed_in.py,sha256=BdZbKFvTNdNkns_bTnsscKtH-o-OyJf5WOZS_mZlcXs,720 +torch/utils/_filelock.py,sha256=pzI0dRIiOSru8SdJ_IYI0d3FJqj2PZ0atCQoiGMgTTc,1530 +torch/utils/_foreach_utils.py,sha256=BWAnBP6D5TSRloDeNja7WfPM6Hz4fArfq7TEY_UmZUE,2409 +torch/utils/_functools.py,sha256=-eVphbmHHOzIph1xNgIGf9RtiCAcfENk8qMDajzhzcY,1527 +torch/utils/_get_clean_triton.py,sha256=pGrb9Ec40ZYcUhZLzIcdMiXJECinZp9P2VXvKHW_s34,6965 +torch/utils/_helion.py,sha256=JcmLdzWOPs6yfikYYZDIzWUSejX4gF598lAo9x2Sbcg,364 +torch/utils/_import_utils.py,sha256=WKkO4UjWrjJ-Kw_eeveZUMVsvcDc43YB5IxXf2Icy2o,1174 +torch/utils/_inspect.py,sha256=FFgrCL8pPZGhceoQ3rztoc3fSt4mqECQhjUykvERcgo,3073 +torch/utils/_mode_utils.py,sha256=sYjEYYBLwkP2g45Acigb32vqjNru3RgCJ-Efd1ol0A8,255 +torch/utils/_ordered_set.py,sha256=XCMvtn58N4_UbhnInekig5dDmwn2ZpltuuF3tIdFVxY,5619 +torch/utils/_pallas.py,sha256=AoI32P2NUpnKjndIjz4VafXP5C7SNO4kGo-DIAc0JzM,3340 +torch/utils/_python_dispatch.py,sha256=pGGpRuD_C8U0jbp_5fDo8FUn86dDbhiZeKrfSqPATG8,39506 +torch/utils/_pytree.py,sha256=IMQIV-vubPth9RPhjBtNphaXWDJd7Zn3X9m69s7xNP0,78685 +torch/utils/_runtime_estimation.py,sha256=vCDeombgBoMvReUn3PxKnOo6JbY1XdYjbj39-UIVUsU,4366 +torch/utils/_stats.py,sha256=6tFYMMxr0QGrEZg9qI1Whq-t1uizO3fneCjmjaWyxDA,1041 +torch/utils/_strobelight/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/utils/_strobelight/__pycache__/__init__.cpython-311.pyc,, +torch/utils/_strobelight/__pycache__/cli_function_profiler.cpython-311.pyc,, +torch/utils/_strobelight/cli_function_profiler.py,sha256=g7ZjL4WWrNcd_KtjWQMAyQE41haPAJ0_0TGOZL-vULg,11360 +torch/utils/_sympy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/utils/_sympy/__pycache__/__init__.cpython-311.pyc,, +torch/utils/_sympy/__pycache__/functions.cpython-311.pyc,, +torch/utils/_sympy/__pycache__/interp.cpython-311.pyc,, +torch/utils/_sympy/__pycache__/numbers.cpython-311.pyc,, +torch/utils/_sympy/__pycache__/printers.cpython-311.pyc,, +torch/utils/_sympy/__pycache__/reference.cpython-311.pyc,, +torch/utils/_sympy/__pycache__/singleton_int.cpython-311.pyc,, +torch/utils/_sympy/__pycache__/solve.cpython-311.pyc,, +torch/utils/_sympy/__pycache__/symbol.cpython-311.pyc,, +torch/utils/_sympy/__pycache__/value_ranges.cpython-311.pyc,, +torch/utils/_sympy/functions.py,sha256=fxoHfiT14YBPEWOZlW2bZFjBscYJs3x7vuYU3YUKpYo,54176 +torch/utils/_sympy/interp.py,sha256=Z4G1PT0oma4lwmNGw_mzyJq8XX_JqLsdG9UR_SSA70o,7200 +torch/utils/_sympy/numbers.py,sha256=ZYLHqe6LAl5kgztdANtt35vpB0mTaXQtAXSYPEJ2ONs,12049 +torch/utils/_sympy/printers.py,sha256=zzd2-laYlBCZ7dNWgKirXZK-k6juCljB3TPBxQPnhYY,28988 +torch/utils/_sympy/reference.py,sha256=mVpcw_8mf8gGroKqxhREZzanAEoXKgIIc0iGhUsALkQ,14625 +torch/utils/_sympy/singleton_int.py,sha256=K9fu2DlCBq5cXXQHzo1aJKbA11bxaIzuXptEZ96OP1A,2975 +torch/utils/_sympy/solve.py,sha256=TKC7vPm_YgXV3IPW4YqfwK1GT7RyQVNdhgX7_ojYpKM,6377 +torch/utils/_sympy/symbol.py,sha256=-rU79KpJLIfxT7jAXUlEp3M_OvXj83win7XHVJ3IMc8,3737 +torch/utils/_sympy/value_ranges.py,sha256=o0XioJIreXJwtC9pm80ULW4fPFeXYN06IerqoFqSIwA,39291 +torch/utils/_thunk.py,sha256=m5ck10KTsFbRFnH0qyv9_exIsG8ujIeLozlGLEhVC8Y,644 +torch/utils/_traceback.py,sha256=jLTvYPVDTxdTWs03vZGrDzTs_cVydzEPOt_-Nu664mc,10274 +torch/utils/_triton.py,sha256=u_YHtyb0ICbHSKWoycba4crfs2L_ntwiYQ2cdU0LNn0,6019 +torch/utils/_typing_utils.py,sha256=ez9L9GrSvYbXCC5EQp81cRC1gkUNlUfyrR5I6WtK8VQ,2501 +torch/utils/_zip.py,sha256=eBoEuB5X-ARtblldfoAU5JN-lADeWkRE59wtuFKiFPc,2509 +torch/utils/backcompat/__init__.py,sha256=R3Sq5nrFTb96s7Cs-gNFpXfjDtyVahc-dbqXaEVqUnA,678 +torch/utils/backcompat/__pycache__/__init__.cpython-311.pyc,, +torch/utils/backend_registration.py,sha256=gn1wRf18-IG2KxrLp1h1dT4Su41OSSYbwiroLKtkHQg,22031 +torch/utils/benchmark/__init__.py,sha256=VMZoFTt8YGaScu3-5L1uWwMOED8FRYoEBAX37RFJ3c0,411 +torch/utils/benchmark/__pycache__/__init__.cpython-311.pyc,, +torch/utils/benchmark/examples/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/utils/benchmark/examples/__pycache__/__init__.cpython-311.pyc,, +torch/utils/benchmark/examples/__pycache__/compare.cpython-311.pyc,, +torch/utils/benchmark/examples/__pycache__/fuzzer.cpython-311.pyc,, +torch/utils/benchmark/examples/__pycache__/op_benchmark.cpython-311.pyc,, +torch/utils/benchmark/examples/__pycache__/simple_timeit.cpython-311.pyc,, +torch/utils/benchmark/examples/__pycache__/spectral_ops_fuzz_test.cpython-311.pyc,, +torch/utils/benchmark/examples/compare.py,sha256=vCmmcvWlXuf3hLDdZprpNCeV4Dv-7Qn6fTHH9Mqna24,2931 +torch/utils/benchmark/examples/fuzzer.py,sha256=5e2AwlYhk30tRXL4pmkiP4a6wtiHtgm-6A5m5DRM-zg,2658 +torch/utils/benchmark/examples/op_benchmark.py,sha256=C9lRKNCPijSkKiPjo6-3lu_wVQwt-4oc4z91qAeTuLc,4412 +torch/utils/benchmark/examples/simple_timeit.py,sha256=ioYkChBgAPHwz5gWqTfUFTCiqqk6CRud3Lob1tFe9uM,541 +torch/utils/benchmark/examples/spectral_ops_fuzz_test.py,sha256=Z4r34jAqH9rrDVdnZBj8yMaHigcYrQ2N6iS0O3JDlPU,4787 +torch/utils/benchmark/op_fuzzers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/utils/benchmark/op_fuzzers/__pycache__/__init__.cpython-311.pyc,, +torch/utils/benchmark/op_fuzzers/__pycache__/binary.cpython-311.pyc,, +torch/utils/benchmark/op_fuzzers/__pycache__/sparse_binary.cpython-311.pyc,, +torch/utils/benchmark/op_fuzzers/__pycache__/sparse_unary.cpython-311.pyc,, +torch/utils/benchmark/op_fuzzers/__pycache__/spectral.cpython-311.pyc,, +torch/utils/benchmark/op_fuzzers/__pycache__/unary.cpython-311.pyc,, +torch/utils/benchmark/op_fuzzers/binary.py,sha256=_A--hlOm0zcmwm3JoB_4ggFfNYAHzjFtlK7a3MHmkbI,4144 +torch/utils/benchmark/op_fuzzers/sparse_binary.py,sha256=FfyrCWiRHqxAzK27kp_gqP-zb4V31aT3N9drKRD8URU,4226 +torch/utils/benchmark/op_fuzzers/sparse_unary.py,sha256=TB__9Vo1Q9n6Awp07zMbGj_0nmUb54LCP3YyBRjU_7w,3491 +torch/utils/benchmark/op_fuzzers/spectral.py,sha256=u3ydR5HcQ3DwN0N0IIX9cYRiWDFm32sEw8nCkXa2djU,3632 +torch/utils/benchmark/op_fuzzers/unary.py,sha256=xvApHM3-2cP997UF5gotcTDfUas2tUUkzeUByLgKWV8,3154 +torch/utils/benchmark/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/utils/benchmark/utils/__pycache__/__init__.cpython-311.pyc,, +torch/utils/benchmark/utils/__pycache__/_stubs.cpython-311.pyc,, +torch/utils/benchmark/utils/__pycache__/common.cpython-311.pyc,, +torch/utils/benchmark/utils/__pycache__/compare.cpython-311.pyc,, +torch/utils/benchmark/utils/__pycache__/compile.cpython-311.pyc,, +torch/utils/benchmark/utils/__pycache__/cpp_jit.cpython-311.pyc,, +torch/utils/benchmark/utils/__pycache__/fuzzer.cpython-311.pyc,, +torch/utils/benchmark/utils/__pycache__/sparse_fuzzer.cpython-311.pyc,, +torch/utils/benchmark/utils/__pycache__/timer.cpython-311.pyc,, +torch/utils/benchmark/utils/_stubs.py,sha256=u29cftbrzC0fc9gq-6o78yApgPHNMwBKoXqY4QEiQ1M,1026 +torch/utils/benchmark/utils/common.py,sha256=u7toTEFGVRe4DgX4juDUVNIuzpxUD-k2Y2--lkXA_Yg,13774 +torch/utils/benchmark/utils/compare.py,sha256=vGP9rkUnbQLIXDPtZXDaia5pBet7Y8ACLaidC11wQIE,13473 +torch/utils/benchmark/utils/compile.py,sha256=Wx3JjogowjvrpFbXL5SaFBs-HgLSPazi0HjlxYd8xZk,7675 +torch/utils/benchmark/utils/cpp_jit.py,sha256=9sTV4KXXjMy6-8gVCLzFk2EFRq_Qfg39v2MS-KOw3Fc,6976 +torch/utils/benchmark/utils/fuzzer.py,sha256=I1fpGS3SxZ6evdJIYtAUCDLYuZnHe6N9Y9f_NuH01Ps,18778 +torch/utils/benchmark/utils/sparse_fuzzer.py,sha256=Zfd1iQ5zp1BhgGGYVWNo92FEVaao7j2Xlh0U-bH8TVs,5213 +torch/utils/benchmark/utils/timeit_template.cpp,sha256=Wzz-o6Yjgq3tkmUTxeRldQxrsETh48T2hwL8xbOkRSg,1009 +torch/utils/benchmark/utils/timer.py,sha256=cJM5ENvXJrtngSzVDJ_XDqknJLCDJYU5wBIk8ylpnDg,20805 +torch/utils/benchmark/utils/valgrind_wrapper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/utils/benchmark/utils/valgrind_wrapper/__pycache__/__init__.cpython-311.pyc,, +torch/utils/benchmark/utils/valgrind_wrapper/__pycache__/timer_interface.cpython-311.pyc,, +torch/utils/benchmark/utils/valgrind_wrapper/callgrind.h,sha256=wK1NVdRImF_4WVLlQrXkufunvE0qLr5dw50v86KPIo0,5744 +torch/utils/benchmark/utils/valgrind_wrapper/compat_bindings.cpp,sha256=ysuof0blt-4g76St1LUrdlZLiaCBKjwjwZXE0L4nI74,813 +torch/utils/benchmark/utils/valgrind_wrapper/timer_callgrind_template.cpp,sha256=ILVnffXHThuakEj3hzKv4usmt8rICdXpSTBeWKz7jU4,1676 +torch/utils/benchmark/utils/valgrind_wrapper/timer_interface.py,sha256=o9Fj5P4e3FKEvWy5LXzqDmpFTufLGVYYAFQpgtikiGs,37717 +torch/utils/benchmark/utils/valgrind_wrapper/valgrind.h,sha256=8MpV41sjwR0bIML04pxlLIjVuGhRtWdy1Kmtax4jFLI,422653 +torch/utils/bundled_inputs.py,sha256=f5W5KXT65LbYYiG25rMrMswLL5tPpbkMCpcL57O7evs,22701 +torch/utils/checkpoint.py,sha256=xSjFtN12lQ9DmE5Rr4DV_xKACGYcvU8a55MH0qmGVC0,73669 +torch/utils/collect_env.py,sha256=Bf_D9qgNyNBNIbdQx5xv6AngcDLOMXRhq7v7vBotKE0,31107 +torch/utils/cpp_backtrace.py,sha256=GxSqoJwxCh9nbgm7EJS9KRJ0Mn5UwIwJUje-0vC4C-Y,483 +torch/utils/cpp_extension.py,sha256=r2bPyw3DZpyKlJyU_fv56F8ayfmnkAKRReITCbNCjN8,142190 +torch/utils/data/__init__.py,sha256=atpjQDmxEyRtlfR9vDgGuJNxGQJq3H8g5drwHgkAK9A,1701 +torch/utils/data/__pycache__/__init__.cpython-311.pyc,, +torch/utils/data/__pycache__/backward_compatibility.cpython-311.pyc,, +torch/utils/data/__pycache__/dataloader.cpython-311.pyc,, +torch/utils/data/__pycache__/dataset.cpython-311.pyc,, +torch/utils/data/__pycache__/distributed.cpython-311.pyc,, +torch/utils/data/__pycache__/graph.cpython-311.pyc,, +torch/utils/data/__pycache__/graph_settings.cpython-311.pyc,, +torch/utils/data/__pycache__/sampler.cpython-311.pyc,, +torch/utils/data/_utils/__init__.py,sha256=9-7TzN_myxBjyvWvbQPPgZLmWAJ89O3AH1AKzyORONA,1606 +torch/utils/data/_utils/__pycache__/__init__.cpython-311.pyc,, +torch/utils/data/_utils/__pycache__/collate.cpython-311.pyc,, +torch/utils/data/_utils/__pycache__/fetch.cpython-311.pyc,, +torch/utils/data/_utils/__pycache__/pin_memory.cpython-311.pyc,, +torch/utils/data/_utils/__pycache__/signal_handling.cpython-311.pyc,, +torch/utils/data/_utils/__pycache__/worker.cpython-311.pyc,, +torch/utils/data/_utils/collate.py,sha256=_gv2PGubmzXO9I1ZJl3dZ8fMNiIGQ7yZwXGuJvwhlTg,15938 +torch/utils/data/_utils/fetch.py,sha256=3F1nYcG5DGCtTDd_LhHLnYOC4pzjz0w8BTkJiUy9E7U,2010 +torch/utils/data/_utils/pin_memory.py,sha256=DEJxMASS5TqKu19qIKYoo0EnbR9MLvSoAQTxTfR-2P8,4143 +torch/utils/data/_utils/signal_handling.py,sha256=4QRnZFkfMb3bgaptzCh24hgbwDITJ-32Tl5lgEZusNc,3261 +torch/utils/data/_utils/worker.py,sha256=OBA8-42rVcp9gbftkfmQqAxM7gxizGIvtqLrp5BIlHA,14829 +torch/utils/data/backward_compatibility.py,sha256=hEdTcktD0OuPmwt2eK_F4UkslR-n6D7wd14VSfG1DI4,317 +torch/utils/data/dataloader.py,sha256=cJidL2_9iRqKTMzDMTxsJA432p5QDiWG7vZW0mteyjQ,80463 +torch/utils/data/datapipes/__init__.py,sha256=OIYy5fRjiWdLc8SRrug0pOjrXouG0I-f2G8QQB0ynto,88 +torch/utils/data/datapipes/__pycache__/__init__.cpython-311.pyc,, +torch/utils/data/datapipes/__pycache__/_decorator.cpython-311.pyc,, +torch/utils/data/datapipes/__pycache__/_hook_iterator.cpython-311.pyc,, +torch/utils/data/datapipes/__pycache__/_typing.cpython-311.pyc,, +torch/utils/data/datapipes/__pycache__/datapipe.cpython-311.pyc,, +torch/utils/data/datapipes/__pycache__/gen_pyi.cpython-311.pyc,, +torch/utils/data/datapipes/_decorator.py,sha256=OhlEdmcjdqhVTfTc4FO2gIiJxQUMbcI-ug-5Nrc0Rig,7757 +torch/utils/data/datapipes/_hook_iterator.py,sha256=SciExxOz5XAb6PawByXG9MfuLdIN6XntMV_esMuqyU4,11972 +torch/utils/data/datapipes/_typing.py,sha256=GFWrRncLHo6KV65rIp2flGVntUIlz1foz3tawNRk-a0,16553 +torch/utils/data/datapipes/dataframe/__init__.py,sha256=j6gnc1vHYL9elliHkQsCRh9vaKbFRwHa0oMj6AIU2SY,378 +torch/utils/data/datapipes/dataframe/__pycache__/__init__.cpython-311.pyc,, +torch/utils/data/datapipes/dataframe/__pycache__/dataframe_wrapper.cpython-311.pyc,, +torch/utils/data/datapipes/dataframe/__pycache__/dataframes.cpython-311.pyc,, +torch/utils/data/datapipes/dataframe/__pycache__/datapipes.cpython-311.pyc,, +torch/utils/data/datapipes/dataframe/__pycache__/structures.cpython-311.pyc,, +torch/utils/data/datapipes/dataframe/dataframe_wrapper.py,sha256=9_V6cyBVauL0RpEehdWMCroAn1TGqKcM-M7ggGG7spg,3288 +torch/utils/data/datapipes/dataframe/dataframes.py,sha256=WdqoDNSjPnWV1RohBLKf9opZtCBSpw9Cp20_9XDMPDw,14034 +torch/utils/data/datapipes/dataframe/datapipes.py,sha256=yga6OgqN06IdQDPuCYd8T4tr-IzuyMttwYiIkZdM7t0,4653 +torch/utils/data/datapipes/dataframe/structures.py,sha256=7NKwwvZI2CtjpjvA1eJmyFQcbet7cYXdaxSMTFPZdx0,662 +torch/utils/data/datapipes/datapipe.py,sha256=VVX5I_Ulqt3NYtUsPNNROFNalRsflL1zVu8XjIhXE9g,17268 +torch/utils/data/datapipes/datapipe.pyi,sha256=kx0WXMNJNO74UvU-hs5iiaqijR-DucetLwH4As7sNNY,32730 +torch/utils/data/datapipes/gen_pyi.py,sha256=FR1brWWZ7IfnbsUblKApGwseZ51eORLfooAsf7lxEFE,11798 +torch/utils/data/datapipes/iter/__init__.py,sha256=Mh3NOCQIx3v7WrLqstLcFBuLDz4GRM-cSaBf-kJ6uFY,1862 +torch/utils/data/datapipes/iter/__pycache__/__init__.cpython-311.pyc,, +torch/utils/data/datapipes/iter/__pycache__/callable.cpython-311.pyc,, +torch/utils/data/datapipes/iter/__pycache__/combinatorics.cpython-311.pyc,, +torch/utils/data/datapipes/iter/__pycache__/combining.cpython-311.pyc,, +torch/utils/data/datapipes/iter/__pycache__/filelister.cpython-311.pyc,, +torch/utils/data/datapipes/iter/__pycache__/fileopener.cpython-311.pyc,, +torch/utils/data/datapipes/iter/__pycache__/grouping.cpython-311.pyc,, +torch/utils/data/datapipes/iter/__pycache__/routeddecoder.cpython-311.pyc,, +torch/utils/data/datapipes/iter/__pycache__/selecting.cpython-311.pyc,, +torch/utils/data/datapipes/iter/__pycache__/sharding.cpython-311.pyc,, +torch/utils/data/datapipes/iter/__pycache__/streamreader.cpython-311.pyc,, +torch/utils/data/datapipes/iter/__pycache__/utils.cpython-311.pyc,, +torch/utils/data/datapipes/iter/callable.py,sha256=vGa_hics1TsiXLsCkFS6gQFlC8mj8E_hA8UMRNh9j8c,9114 +torch/utils/data/datapipes/iter/combinatorics.py,sha256=ZmBXzNg1aVZFFoc_Gib_SkVyNnBzFtPNzRaZEyLB7l0,6557 +torch/utils/data/datapipes/iter/combining.py,sha256=Bp9lg-u3H9LZBaWCrXQOTx9aLVcZPCn9wtGhT14qnbs,28128 +torch/utils/data/datapipes/iter/filelister.py,sha256=pd59x2Ls-g1SpKBm4T5hgln0LHSqCVO8L82rfNVI-VY,2554 +torch/utils/data/datapipes/iter/fileopener.py,sha256=Qz0RAtlb8o2A9-YIMGcRVU2T6RztItmNCuqcGcvPQeA,2889 +torch/utils/data/datapipes/iter/grouping.py,sha256=KvqX3GwQoCEnvdy8_TAsqxLUaVjkBOPwVvjpP7346sA,12390 +torch/utils/data/datapipes/iter/routeddecoder.py,sha256=tdXrrUemDgjMWYxinV6bUeUFWxcujUc-UpqMVnHOW4o,2731 +torch/utils/data/datapipes/iter/selecting.py,sha256=LXpA0_L7TlTGkc5FlZpdzkxEaKqLUAEDoDFnAW3y4Ro,3308 +torch/utils/data/datapipes/iter/sharding.py,sha256=MRUQ2z-E4kn5cezM8PEHBGDu6y320a0IDyhiHp-pIJg,3657 +torch/utils/data/datapipes/iter/streamreader.py,sha256=TWVLV5IUepvqMWcNkEo3cBNbjbNYecXoXRpJ9GKfRGU,1537 +torch/utils/data/datapipes/iter/utils.py,sha256=y4CTzQ6oasBdi4xihoTYopUZ8_4P5eVoOCfk6s_aMSM,2109 +torch/utils/data/datapipes/map/__init__.py,sha256=6weaVqSBgL8DhjqKLXA2mpYjkh8djBYGEl8zwP4RXcY,714 +torch/utils/data/datapipes/map/__pycache__/__init__.cpython-311.pyc,, +torch/utils/data/datapipes/map/__pycache__/callable.cpython-311.pyc,, +torch/utils/data/datapipes/map/__pycache__/combinatorics.cpython-311.pyc,, +torch/utils/data/datapipes/map/__pycache__/combining.cpython-311.pyc,, +torch/utils/data/datapipes/map/__pycache__/grouping.cpython-311.pyc,, +torch/utils/data/datapipes/map/__pycache__/utils.cpython-311.pyc,, +torch/utils/data/datapipes/map/callable.py,sha256=lUC_SHHytKC2yJVi60rQdwxwrJGtxwoRCOkxIYio0k8,1933 +torch/utils/data/datapipes/map/combinatorics.py,sha256=7z15zvemzsOwnZvs9KaFs6WOW65nsj6V9eGHuQT3HOE,4267 +torch/utils/data/datapipes/map/combining.py,sha256=VwrqONcr9r5wGZqqhczQJRWmwFI2PKidi7T4wFg8zo0,3989 +torch/utils/data/datapipes/map/grouping.py,sha256=k7x6DBhQct1D869iIs7Ej3bzyzALO6mV-RsIl2ore2w,2531 +torch/utils/data/datapipes/map/utils.py,sha256=5oq8xhZHdJjrswR2Zzgef32cdSTMrgvvfrSC8f8EKLo,1813 +torch/utils/data/datapipes/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/utils/data/datapipes/utils/__pycache__/__init__.cpython-311.pyc,, +torch/utils/data/datapipes/utils/__pycache__/common.cpython-311.pyc,, +torch/utils/data/datapipes/utils/__pycache__/decoder.cpython-311.pyc,, +torch/utils/data/datapipes/utils/__pycache__/snapshot.cpython-311.pyc,, +torch/utils/data/datapipes/utils/common.py,sha256=Hf_J9RJpQaoahbDYqujoFZR3oVXbfbo73xYvlfpZEcM,13850 +torch/utils/data/datapipes/utils/decoder.py,sha256=BOfLfpyctXU8jDKKpvm0_tSOoXTpGdWfv_4iHwrbEH0,12121 +torch/utils/data/datapipes/utils/snapshot.py,sha256=tk8G2YDUdmEjIOMlLxuqOScYD3bxFyHUmyt_rvZA3Ck,3145 +torch/utils/data/dataset.py,sha256=M1m7rQ01kezp__7bzfaLM950RvLZpn88wF5F8T3vsUo,20952 +torch/utils/data/distributed.py,sha256=lYZvlTxNcfW5ysXW2vvqZBwU3nYMymmi3d45_3aNc7I,6451 +torch/utils/data/graph.py,sha256=duXC7TKPMyJ3sOJhZ9H6PK7RbvIs1Ab0B4ZZUjQ70D8,5918 +torch/utils/data/graph_settings.py,sha256=ImWDygTKAWFF9-wy0-RkgYh8_0l6HLiEJT3uhQK8jWM,5556 +torch/utils/data/sampler.py,sha256=gX-BikiX8MElaaqI7blRw9mRLMILSkfWK_87cMrfGsU,12738 +torch/utils/deterministic.py,sha256=aDwP89FjYTIT-3g2RtWBoagN59_JbqE2BZbgV4HttMU,611 +torch/utils/dlpack.py,sha256=xf66jbvrVfzzOypKLVw6Wgo1vD7MXq0K57cnJRoCbGI,8462 +torch/utils/file_baton.py,sha256=B67yGDzUCaDx6LZYmCXgcciL9TucXJrHZtz7JywZC50,2093 +torch/utils/flop_counter.py,sha256=bYXKB168sIttJkB8UWXo5VTOEkvN4QbgtsS0YFPxiyo,37814 +torch/utils/hipify/__init__.py,sha256=Jzb_RfgvXCrm_SQ4AfeGVi1N36YybxnM5mpyxrnihgI,33 +torch/utils/hipify/__pycache__/__init__.cpython-311.pyc,, +torch/utils/hipify/__pycache__/constants.cpython-311.pyc,, +torch/utils/hipify/__pycache__/cuda_to_hip_mappings.cpython-311.pyc,, +torch/utils/hipify/__pycache__/hipify_python.cpython-311.pyc,, +torch/utils/hipify/__pycache__/version.cpython-311.pyc,, +torch/utils/hipify/constants.py,sha256=rT3bQVod7V-F3Rc6fk9ix9ZEwZ8muEvb89OvRF9XGK8,1300 +torch/utils/hipify/cuda_to_hip_mappings.py,sha256=zTCq_nGEVU2YCXX-eGhjrwP-zgV91MsLiy_7oU_tuoo,204591 +torch/utils/hipify/hipify_python.py,sha256=KhSkwdgeHcw9N0g8w2rzRqTVGOr_P1-YRpWFo1XHoKY,46703 +torch/utils/hipify/version.py,sha256=hwOJuFUEKtsgiOt4l6op9s-hviovM6TK1uCdtRNWY4E,22 +torch/utils/hooks.py,sha256=v6WbXTcuC6b6PNw-Q6xG1mUeDonYmD57-9cRf-2rBH4,10165 +torch/utils/jit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/utils/jit/__pycache__/__init__.cpython-311.pyc,, +torch/utils/jit/__pycache__/log_extract.cpython-311.pyc,, +torch/utils/jit/log_extract.py,sha256=ow9gm6RPIXXwgGYOVx63uEreA31vzKY-pbaWTjfUR-E,4194 +torch/utils/mkldnn.py,sha256=OynlvKEDzAFEV5zLLqUKO61n-P_lExeBtuF_PEGW5qk,8244 +torch/utils/mobile_optimizer.py,sha256=lV9qq0E-O7M3AcVBnNdRJEYaQkEZwz7Tl7R6W1qo60s,6414 +torch/utils/model_dump/__init__.py,sha256=IZfRjacOoMdDjh4CnxvwHBY-cemXHVHm-w9bVCdCgJ8,19311 +torch/utils/model_dump/__main__.py,sha256=jYGPuoI11jzWgGKtK1-E550XLfPkrbHq_BRUbLusK-A,79 +torch/utils/model_dump/__pycache__/__init__.cpython-311.pyc,, +torch/utils/model_dump/__pycache__/__main__.cpython-311.pyc,, +torch/utils/model_dump/code.js,sha256=70w_JAT7N8dkWHrpQsA1enZCJK7VJOIy23ukbbbXQAg,19251 +torch/utils/model_dump/htm.mjs,sha256=m-psDFjVL3_BzcZnYkiRT8AIYhFhCY5ERrh_LP4sEH4,1230 +torch/utils/model_dump/preact.mjs,sha256=005yDhrtmGbeMNCyf7SMhNktZT4VisnDde1R-TMD5gk,10078 +torch/utils/model_dump/skeleton.html,sha256=vq4r1yFKZEchXwQmky1zpj3q65MCPDBD7wDt6SqzJGg,384 +torch/utils/model_zoo.py,sha256=o2NC-XaU8fqDXbUBQDv7thQBld_LOK-Ko63GS4x8Iyg,117 +torch/utils/module_tracker.py,sha256=pt9-CzmJYVRSg7U91RQCtU5rRBVGRmro0a9biTeKjCg,5434 +torch/utils/serialization/__init__.py,sha256=urhmq5QqBImvzUxNXw7VkCHllOx41xEyNenyZOWKYQQ,21 +torch/utils/serialization/__pycache__/__init__.cpython-311.pyc,, +torch/utils/serialization/__pycache__/config.cpython-311.pyc,, +torch/utils/serialization/config.py,sha256=01NhAREofDqt4RBG0NS2TRodKXUEyRwpmYw0dnBELdk,654 +torch/utils/show_pickle.py,sha256=gQRZpzpYj1zBCHMxehPmyqvC-9pIobj4-mhYH7cmkvo,5459 +torch/utils/tensorboard/__init__.py,sha256=ZYXvCXkbnXG7fJB_0aD2m1tdKIjo39LFzMqN7fku94w,480 +torch/utils/tensorboard/__pycache__/__init__.cpython-311.pyc,, +torch/utils/tensorboard/__pycache__/_convert_np.cpython-311.pyc,, +torch/utils/tensorboard/__pycache__/_embedding.cpython-311.pyc,, +torch/utils/tensorboard/__pycache__/_onnx_graph.cpython-311.pyc,, +torch/utils/tensorboard/__pycache__/_proto_graph.cpython-311.pyc,, +torch/utils/tensorboard/__pycache__/_pytorch_graph.cpython-311.pyc,, +torch/utils/tensorboard/__pycache__/_utils.cpython-311.pyc,, +torch/utils/tensorboard/__pycache__/summary.cpython-311.pyc,, +torch/utils/tensorboard/__pycache__/writer.cpython-311.pyc,, +torch/utils/tensorboard/_convert_np.py,sha256=Wcss2Qu8wlM9GHrn6m0AVXK8o8wyhsHdoGtxOjuZSPU,882 +torch/utils/tensorboard/_embedding.py,sha256=z6sP-bBDNOsAm-wJfa9GZ66pU9sJUzHKDiomNZ4BcOY,3281 +torch/utils/tensorboard/_onnx_graph.py,sha256=KMnPjhnuLWLp3jJEnaOhUUV-yIk_4Z9S4x8l2A_mko8,1886 +torch/utils/tensorboard/_proto_graph.py,sha256=WMZNB-Vxc_Px-QxHVJFXQW_GaOIqLR3NT4WdZisWIFQ,1964 +torch/utils/tensorboard/_pytorch_graph.py,sha256=4sY0kGhULwVkGwOKBEIz97GaQcO7IBrgEHnXUp6v9dQ,13843 +torch/utils/tensorboard/_utils.py,sha256=mDiLcRZC_ZBWCzinLD5tTd2Vc_G5tOx4qAjwunQKdfQ,4307 +torch/utils/tensorboard/summary.py,sha256=w7RpsrRwFE_PNpbSUKa-UJd15OHUSJXP5ZQ8k4VXOc0,34719 +torch/utils/tensorboard/writer.py,sha256=0P_p8HODAG9Mm7xlH9WqkyRFMlUVBxsYodZNP1M74n8,47343 +torch/utils/throughput_benchmark.py,sha256=zlDMe1eHSkg2aoXXUiRppGgYGb4IILIIPL2QHHxGxqI,6625 +torch/utils/viz/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torch/utils/viz/__pycache__/__init__.cpython-311.pyc,, +torch/utils/viz/__pycache__/_cycles.cpython-311.pyc,, +torch/utils/viz/_cycles.py,sha256=zHEnEeFxpLC6CPyEVrCuELSwhLeyRlUD3Ek51w_XvHo,16980 +torch/utils/weak.py,sha256=37kIF_DXnasHEwz_OvuTguZaeLFRckXV5Gkf1jz7m2M,12227 +torch/version.py,sha256=Vt-rnx-cOJsuhs81rsAKfbwHQHRuX-FhXDMW4nTKnfQ,311 +torch/xpu/__init__.py,sha256=eaYT1DpSBNCPq7tt0odBEHWF0uF1Iy1NtW5QOPmRYkY,21702 +torch/xpu/__pycache__/__init__.cpython-311.pyc,, +torch/xpu/__pycache__/_gpu_trace.cpython-311.pyc,, +torch/xpu/__pycache__/_utils.cpython-311.pyc,, +torch/xpu/__pycache__/graphs.cpython-311.pyc,, +torch/xpu/__pycache__/memory.cpython-311.pyc,, +torch/xpu/__pycache__/random.cpython-311.pyc,, +torch/xpu/__pycache__/streams.cpython-311.pyc,, +torch/xpu/_gpu_trace.py,sha256=xVF2Wike9f8uqlxtwDshiyTFbduMGq0HupoSLb47_70,2364 +torch/xpu/_utils.py,sha256=JTETOkI3J7tp4SFKV3ukRlvQDO-6Qg850KkJ8wO6gh0,1591 +torch/xpu/graphs.py,sha256=ApQ-sFToGMfblGyiB0csOwOcK-VvwITCBI1mRDJAGgI,22224 +torch/xpu/memory.py,sha256=MazVMWXsezQlQftHGg62cnDQ9CWi-ZmAbUKIjmdu71M,26192 +torch/xpu/random.py,sha256=dnrrJobYRQJd-6-JcuyoNmbkw7IsMsJM-GnigqsfnlY,5282 +torch/xpu/streams.py,sha256=iRsHzdjqjqSFmXd7ehELgR88yjwo0JSugBXfUptX7ts,6305 +torchgen/__init__.py,sha256=iirTpG38WcCsNMhEbi1dg7_jad6ptk_uzZ-BzaGBFyU,348 +torchgen/__pycache__/__init__.cpython-311.pyc,, +torchgen/__pycache__/code_template.cpython-311.pyc,, +torchgen/__pycache__/context.cpython-311.pyc,, +torchgen/__pycache__/gen.cpython-311.pyc,, +torchgen/__pycache__/gen_aoti_c_shim.cpython-311.pyc,, +torchgen/__pycache__/gen_backend_stubs.cpython-311.pyc,, +torchgen/__pycache__/gen_functionalization_type.cpython-311.pyc,, +torchgen/__pycache__/gen_lazy_tensor.cpython-311.pyc,, +torchgen/__pycache__/gen_schema_utils.cpython-311.pyc,, +torchgen/__pycache__/gen_vmap_plumbing.cpython-311.pyc,, +torchgen/__pycache__/local.cpython-311.pyc,, +torchgen/__pycache__/model.cpython-311.pyc,, +torchgen/__pycache__/native_function_generation.cpython-311.pyc,, +torchgen/__pycache__/utils.cpython-311.pyc,, +torchgen/__pycache__/yaml_utils.cpython-311.pyc,, +torchgen/aoti/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torchgen/aoti/__pycache__/__init__.cpython-311.pyc,, +torchgen/aoti/__pycache__/fallback_ops.cpython-311.pyc,, +torchgen/aoti/fallback_ops.py,sha256=yBxBb0ULVatAkRCR3x9hWvdIWHoFTE-7yY6EBEbD05c,8844 +torchgen/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torchgen/api/__pycache__/__init__.cpython-311.pyc,, +torchgen/api/__pycache__/autograd.cpython-311.pyc,, +torchgen/api/__pycache__/cpp.cpython-311.pyc,, +torchgen/api/__pycache__/dispatcher.cpython-311.pyc,, +torchgen/api/__pycache__/functionalization.cpython-311.pyc,, +torchgen/api/__pycache__/lazy.cpython-311.pyc,, +torchgen/api/__pycache__/meta.cpython-311.pyc,, +torchgen/api/__pycache__/native.cpython-311.pyc,, +torchgen/api/__pycache__/python.cpython-311.pyc,, +torchgen/api/__pycache__/structured.cpython-311.pyc,, +torchgen/api/__pycache__/translate.cpython-311.pyc,, +torchgen/api/__pycache__/ufunc.cpython-311.pyc,, +torchgen/api/__pycache__/unboxing.cpython-311.pyc,, +torchgen/api/autograd.py,sha256=y6vasrnA5-DSoZjrOJ2PY3yCb-GlsIWoU7wcO22IV-Y,39666 +torchgen/api/cpp.py,sha256=OUm9vRzwhgVZu83wro4qyiJB-OBdIT6xlQlKEM88JHw,16542 +torchgen/api/dispatcher.py,sha256=gPrg9tJ0ob1ErXWoGXJDGZTg0MbDCivTALKE7kjITU4,3479 +torchgen/api/functionalization.py,sha256=e5Jv65MTJiQ5LpYUU57Yf7mLRVmCVBhDS4kywZy1l2k,8349 +torchgen/api/lazy.py,sha256=ztV8Uhy6Ke5ArAVNNBREW7e045jaFMXGY8qgVHQ4DPU,17141 +torchgen/api/meta.py,sha256=zJYzviYI2gY9V9yPUyiZ_fShcdm_5LbigqGUH_WfaWw,483 +torchgen/api/native.py,sha256=xpye5SVepNMaHSIFzIfcrG-6BkDxCB3fPdQUPcilf5w,5205 +torchgen/api/python.py,sha256=fksUYTYPBT8U1Nu4cTnTKiw1lBwdncFnGPrm8AsNtwk,59907 +torchgen/api/structured.py,sha256=MuPt1MpFhHtZxXtUY5KaeccGY0Q_T5RHHXAFqgrdQVY,6115 +torchgen/api/translate.py,sha256=KBoD8K6_1e4I1ftVf2hDAoYri4zILxrs-3ZziTqYN2s,19297 +torchgen/api/types/__init__.py,sha256=bQ29sz_GNJGgqoDUsE6i_AcYZq81pOs1ATXQJQhUhLY,144 +torchgen/api/types/__pycache__/__init__.cpython-311.pyc,, +torchgen/api/types/__pycache__/signatures.cpython-311.pyc,, +torchgen/api/types/__pycache__/types.cpython-311.pyc,, +torchgen/api/types/__pycache__/types_base.cpython-311.pyc,, +torchgen/api/types/signatures.py,sha256=hNWM3qWCfyk635BOjyIJm6Fam-pOlr22zgHb_ltYh7k,12884 +torchgen/api/types/types.py,sha256=gRiCF9DO_x0ARN1faZ9iYx0IRYTzyCywAwhWXqYzcuo,6210 +torchgen/api/types/types_base.py,sha256=v8Ks3hCBZHDWZ-K7tVlNIowqV1wLKnBX-bgITDGzH7E,7171 +torchgen/api/ufunc.py,sha256=lkjsc9zBKYWFScj0dlV0J6fT67kz_doD7PDc2lhEENk,6810 +torchgen/api/unboxing.py,sha256=_JIvPzZF-LoRDkenskzx4JVTqiAit5-TTXk0F-pOjaU,9381 +torchgen/code_template.py,sha256=3WKyggNeuDRmFKwOiw9dTDJLCpjqhiudfAU2Nw7BGxc,3265 +torchgen/context.py,sha256=TESgCeRyBcLVD3ixrHShmeqQQKV9MSfkuiyXze_JH6o,4024 +torchgen/dest/__init__.py,sha256=qECRwrljRjK-kMdBqfc9X8JPVVPU6XlUuWNEdFD9u0w,805 +torchgen/dest/__pycache__/__init__.cpython-311.pyc,, +torchgen/dest/__pycache__/lazy_ir.cpython-311.pyc,, +torchgen/dest/__pycache__/lazy_ts_lowering.cpython-311.pyc,, +torchgen/dest/__pycache__/native_functions.cpython-311.pyc,, +torchgen/dest/__pycache__/register_dispatch_key.cpython-311.pyc,, +torchgen/dest/__pycache__/ufunc.cpython-311.pyc,, +torchgen/dest/lazy_ir.py,sha256=p5ql6rb5bDupsKodcnFGKsz_NKAVRbAOwahdPSIX-NQ,29693 +torchgen/dest/lazy_ts_lowering.py,sha256=9QUvL_Z-mGqRfhtK_X2RSEHlGmFOqDr_J8cYJrALUG4,1831 +torchgen/dest/native_functions.py,sha256=I4SK08v3bRwTfFJP7CKtqP3yqmR6Bxt1MqR8g5h_LPg,3171 +torchgen/dest/register_dispatch_key.py,sha256=KJ4aLf02TYMpYaq_aTGcAF1qnDUORO3E2rMe7U_knZM,42367 +torchgen/dest/ufunc.py,sha256=GyHbO3xBJYg9cGZhTfALevujG0RxMjbcnn4kDju8Tak,18204 +torchgen/gen.py,sha256=BeFPSkyDW80qZMuNxfbGhAtgUwTsczRz6G55yTMv0NM,116890 +torchgen/gen_aoti_c_shim.py,sha256=hmoxP8rvRnC8RZNO1du6wzg2MZPdwzAMT4OZI0_ab-s,28941 +torchgen/gen_backend_stubs.py,sha256=vYp7Jszke3ueM7RDpVl6EDkVpl0hxbEofCgfWhrOzQw,23340 +torchgen/gen_functionalization_type.py,sha256=xTxrqM0sY9Y7a6eXDUm2kU_UrUo2VLzg-w58AN2VVeY,50815 +torchgen/gen_lazy_tensor.py,sha256=GAzbJNqdBcYq5eQoTDOvEcYUXsIbwVy1FAO4pEfXZ0g,23205 +torchgen/gen_schema_utils.py,sha256=-wvIzm5ESeeBqpucXXbFetYjtdm2RJtQ-UXB5rSyW4Q,3350 +torchgen/gen_vmap_plumbing.py,sha256=jcAo7Kx9hX6DWD-9xrorY473o033QE1jxpDBxWOWxKo,9523 +torchgen/local.py,sha256=NPwuRTtAXVEfXOkinBU5trBAyXCa5xdZv2zjQBmmBYg,2227 +torchgen/model.py,sha256=3fwSao7nOxF28wL4sFhPfvp6kSj12fw014IAa_YNW5o,124032 +torchgen/native_function_generation.py,sha256=QF3dV4NTLrOgTjMdQSdGniO3f2NPciMFi_D2U0GJJ70,30568 +torchgen/operator_versions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torchgen/operator_versions/__pycache__/__init__.cpython-311.pyc,, +torchgen/operator_versions/__pycache__/gen_mobile_upgraders.cpython-311.pyc,, +torchgen/operator_versions/__pycache__/gen_mobile_upgraders_constant.cpython-311.pyc,, +torchgen/operator_versions/gen_mobile_upgraders.py,sha256=C00LckTVFV839j3qTSnyElxe6p5nQOTSWh8YIjUOx68,12583 +torchgen/operator_versions/gen_mobile_upgraders_constant.py,sha256=C-U6rHQybm_FTcxsz27RMgJDj464NOLhlOzVjSjEn0w,243 +torchgen/packaged/ATen/native/native_functions.yaml,sha256=u1xT3tJszGJQpzrAVwEZgPmgyZwXLgk7KKPwKcVZyxE,625883 +torchgen/packaged/ATen/native/tags.yaml,sha256=TxFArqXG1qfFBUpixXqbVr3w2RLPUGoTnrae2i1wp3M,5820 +torchgen/packaged/ATen/templates/ATenOpList.cpp,sha256=YobnhIm91ECCc6uYD2uDOrvFM4WqutKQbQ5x_Fh_5IE,1059 +torchgen/packaged/ATen/templates/CompositeViewCopyKernels.cpp,sha256=H64AHoCBB7MJIECAHNzki8NiTVPND0hy2vJ-KqiSF2c,2077 +torchgen/packaged/ATen/templates/DispatchKeyFunction.h,sha256=npUU8WpU76sZv8oqUQqBpcV_QHT6RW9j42EVTSA6pvA,702 +torchgen/packaged/ATen/templates/DispatchKeyFunctions.h,sha256=KlLfLZSYEG_7miq0fD8yuFtgVtm2mO4CQ9WiT6xoEpY,1937 +torchgen/packaged/ATen/templates/DispatchKeyFunctions_inl.h,sha256=nlAU0xWHQqRZn7JNV163YgAv5wwlykwsikMyjzZeZkI,824 +torchgen/packaged/ATen/templates/DispatchKeyNativeFunctions.cpp,sha256=DYjxJmYQ5Yegq1XW4hakqjvZo5skNWi2f5ZNLPUyQ4c,184 +torchgen/packaged/ATen/templates/DispatchKeyNativeFunctions.h,sha256=e8lUNJZ4jt0uMHjio6HOupVpMv83DtAaFBudAG6pEDw,384 +torchgen/packaged/ATen/templates/Function.h,sha256=Z2OimxsHx42itqLZE04H7-RiAPb7UJRzNZQvmVUW6n4,519 +torchgen/packaged/ATen/templates/FunctionalInverses.h,sha256=ikZPokOnPXrImLa9EbaKGPMgB4NsyIH1cuUSgmLyejQ,797 +torchgen/packaged/ATen/templates/Functions.cpp,sha256=OBZ0Sa3RsXJGI0bBJlxY3FopVvT_76QP9vjWXm-URN8,3107 +torchgen/packaged/ATen/templates/Functions.h,sha256=W_xrKMuoXaRhohnPldbA0OVqkAi_NYid-pZ9zJQAa8U,4637 +torchgen/packaged/ATen/templates/LazyIr.h,sha256=-aVOIdjB719-6SLBsUURho6x0xdKyXsN6h5QP76HTd8,585 +torchgen/packaged/ATen/templates/LazyNonNativeIr.h,sha256=KQbjyZ0Q8qK8JcgqAaF-M-ZhvRE5UhTj8JIHyceNK9Y,178 +torchgen/packaged/ATen/templates/MethodOperators.h,sha256=ifirYleNPll8bjo_OYaC8jEuLWIJlP0Asy0xjtdGfQo,830 +torchgen/packaged/ATen/templates/NativeFunction.h,sha256=C8rQosVZF3aESwI4IvZitd60sdGov6kvClkDAtnx3Oc,366 +torchgen/packaged/ATen/templates/NativeFunctions.h,sha256=N351coNgM9F_jpdma5OK3DvlNUw2oY51iBXKe5dK81Y,1149 +torchgen/packaged/ATen/templates/NativeMetaFunction.h,sha256=C0alnIY6J-5Mlca9_0ocI7bnFKo5jQ_QTuLzo8iCUDQ,452 +torchgen/packaged/ATen/templates/NativeMetaFunctions.h,sha256=mIOwmpkQY9zYolxUXK39c4nRDyG32vBsqEeSDo76p_k,306 +torchgen/packaged/ATen/templates/Operator.h,sha256=5TqYc2DVGzB2gwuIwC8p4D6KnSDIylKXScnjwLfpdu0,448 +torchgen/packaged/ATen/templates/Operators.cpp,sha256=cjfjkIMtfc8n1w0TDy_JJDJq0DK2cT9DfhkZw3YnTWM,347 +torchgen/packaged/ATen/templates/Operators.h,sha256=oU939CI59Drfg2QlKfkCdU6yVQBVi0y9Ia_kQ0rFC5k,3200 +torchgen/packaged/ATen/templates/RedispatchFunctions.cpp,sha256=pNhfp3gMBw4km2c_4EfeF6ge3DGZi8xtGCnkmjzfpi0,307 +torchgen/packaged/ATen/templates/RedispatchFunctions.h,sha256=HFJ8SLBmg2LNRbsp9MdhHBGGztTGhcjzdWCgYPx5f7c,882 +torchgen/packaged/ATen/templates/RegisterBackendSelect.cpp,sha256=Op-RV7_8UnF_dbxO-hZ8X-7DBnFHsP9s11cM0JkJOWY,752 +torchgen/packaged/ATen/templates/RegisterCodegenUnboxedKernels.cpp,sha256=tux2wSt9RalK0o5AfliXJB3N4diTi-88PwNHOobDbmM,1119 +torchgen/packaged/ATen/templates/RegisterDispatchDefinitions.ini,sha256=hnJyQ-BCtiix4FaiwW1l3Zaq95M8C0lFTwbySsiWMDs,455 +torchgen/packaged/ATen/templates/RegisterDispatchKey.cpp,sha256=VBl-G3QyZ2UG-guGMf_2AEKFqq9zn-EAThFTjIUbh50,1428 +torchgen/packaged/ATen/templates/RegisterFunctionalization.cpp,sha256=XwSLhkDBdltLpwLt6tju8BXB0JLWK1MDPb01Gv3agCs,3461 +torchgen/packaged/ATen/templates/RegisterSchema.cpp,sha256=HoLTDNwRhe8xJJucgd6qCkqTglPtxLYCRGCD_4-S0j0,383 +torchgen/packaged/ATen/templates/RegistrationDeclarations.h,sha256=KImic_ILyhxavbGxVna-Ascf--okibalZJlK44a5dic,160 +torchgen/packaged/ATen/templates/TensorBody.h,sha256=g0bpNECPnvZPuwja9K1mvdpAD2o8OtKS11oNvYcgLe8,29327 +torchgen/packaged/ATen/templates/TensorMethods.cpp,sha256=ujhPuoXBOy23ZNJqFYqKbPwwLXoFK3ubnWK9jAfZ9w8,1824 +torchgen/packaged/ATen/templates/UfuncCPU.cpp,sha256=LrnISndBkXtdugvOWeRk9ZGYQlztFI5yqytoaZiKOQk,445 +torchgen/packaged/ATen/templates/UfuncCPUKernel.cpp,sha256=paz66F7U6E9e2X-rpbxlVDGcxevcXIOialaEqAaoArc,350 +torchgen/packaged/ATen/templates/UfuncCUDA.cu,sha256=HOBz8yO4QFxxmX_6gCF7L8MJvrGPwGQjoE-qDf8kF9Y,494 +torchgen/packaged/ATen/templates/UnboxingFunctions.cpp,sha256=wwdlYUaaCjXwhlaoqieeO-3fOqoQSBj62j6Is4n-UKY,709 +torchgen/packaged/ATen/templates/UnboxingFunctions.h,sha256=bcs4ET0LLtzs7nSSWhKA8jJzongib5CGlNA5yaExfKw,1026 +torchgen/packaged/ATen/templates/ViewMetaClasses.cpp,sha256=_8f0OdKZjfhK7LzODYmnmwaXjyie-LRnC-rVHxTv-ZM,346 +torchgen/packaged/ATen/templates/ViewMetaClasses.h,sha256=MhYaW9BQoS8iplXAz9IVu6_SY4JMG4eHP-ERqSXsdD0,233 +torchgen/packaged/ATen/templates/ViewMetaClassesPythonBinding.cpp,sha256=ATEHc06ioTG0d02quoCUFyBgaYR3FRV6SX-tkiLiFdY,292 +torchgen/packaged/ATen/templates/aten_interned_strings.h,sha256=_FM2jXAhATj9GZ66dXXUPx72q2uYnzT8iN4hkTz0rmI,805 +torchgen/packaged/ATen/templates/enum_tag.h,sha256=2f71l3hhsetytOYMpzhSywY-vpjF_uiHZgwZFJ8eG2I,389 +torchgen/packaged/autograd/BUILD.bazel,sha256=Jd76gG6LQlmmEKK9IYlDbkVSmc8L5bTvGjG159L3rJA,104 +torchgen/packaged/autograd/README.md,sha256=hGiUzBaCs0wzBhEXB3vkWUXU4Lima6y5_wPKjAoKQ-Q,147 +torchgen/packaged/autograd/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torchgen/packaged/autograd/__pycache__/__init__.cpython-311.pyc,, +torchgen/packaged/autograd/__pycache__/context.cpython-311.pyc,, +torchgen/packaged/autograd/__pycache__/gen_annotated_fn_args.cpython-311.pyc,, +torchgen/packaged/autograd/__pycache__/gen_autograd.cpython-311.pyc,, +torchgen/packaged/autograd/__pycache__/gen_autograd_functions.cpython-311.pyc,, +torchgen/packaged/autograd/__pycache__/gen_inplace_or_view_type.cpython-311.pyc,, +torchgen/packaged/autograd/__pycache__/gen_python_functions.cpython-311.pyc,, +torchgen/packaged/autograd/__pycache__/gen_trace_type.cpython-311.pyc,, +torchgen/packaged/autograd/__pycache__/gen_variable_factories.cpython-311.pyc,, +torchgen/packaged/autograd/__pycache__/gen_variable_type.cpython-311.pyc,, +torchgen/packaged/autograd/__pycache__/gen_view_funcs.cpython-311.pyc,, +torchgen/packaged/autograd/__pycache__/load_derivatives.cpython-311.pyc,, +torchgen/packaged/autograd/build.bzl,sha256=mByyWKdnGG70dVc0E-YFaqRlPzikan1ZAJDtUNvfD_Y,491 +torchgen/packaged/autograd/context.py,sha256=aCykxnX--PJ_Tl4CW2GOYAbW25o26ZyirEobqc7ozOk,954 +torchgen/packaged/autograd/deprecated.yaml,sha256=UbtajzWo89jf1Q5sw8JNJIZT5s-iDBagnrGJthtDS2Q,6250 +torchgen/packaged/autograd/derivatives.yaml,sha256=dmujUIJuwH-7wnyEurd1HpdL4Tu491NbqHJa2d4afVc,185992 +torchgen/packaged/autograd/gen_annotated_fn_args.py,sha256=7SpCWSDgEj5pBYtWqsPAseC6Cfvyi_hUt-ST7BSF9hY,4476 +torchgen/packaged/autograd/gen_autograd.py,sha256=p6C9Pjmm1DyvB5QnFPqLs4EnWSR82cSpX975BipgJT8,4617 +torchgen/packaged/autograd/gen_autograd_functions.py,sha256=riiNmrDzNxm3-oEXVBImIwrsES90LGw_u8iHqj_dGzo,38452 +torchgen/packaged/autograd/gen_inplace_or_view_type.py,sha256=dmhrvrqn6j1bfGQGvKUbgRgbEYeDlfu5RC5nHhCP1-I,22914 +torchgen/packaged/autograd/gen_python_functions.py,sha256=bmNMEMmSEo9UphPlsDBM08I9-6NTNYbY2ifq3AZqFjU,46668 +torchgen/packaged/autograd/gen_trace_type.py,sha256=xBpXuGpepoTgpwwZNZUwYE2YRNUNROjxh6sRCoon_eY,19167 +torchgen/packaged/autograd/gen_variable_factories.py,sha256=a0Q5N1zGSVxfES_cnq88tjwOB9P79piRqchTrhWCNPk,4479 +torchgen/packaged/autograd/gen_variable_type.py,sha256=0eIQm5xkvp0x-5hhQpQ5-B604kmbtV_sEy4U_bwRrpI,87933 +torchgen/packaged/autograd/gen_view_funcs.py,sha256=LSNYEpzkNZXXFtM2pYpfCMw_QNAF5jm9RTOUMIFwJUM,11817 +torchgen/packaged/autograd/load_derivatives.py,sha256=dgj54kXO2bn0OT1unZxw0v0ArgfY6lciK4iQ5b_z7gw,41570 +torchgen/packaged/autograd/templates/ADInplaceOrViewType.cpp,sha256=6juXEdMJaxhS1nv6bqUmx-cJLWPyc4Yb3teAeTyEBG4,790 +torchgen/packaged/autograd/templates/Functions.cpp,sha256=j8Ga18okz6DI1ulIL5BErJIskHKQZPhuuNlj5RcgUuE,1478 +torchgen/packaged/autograd/templates/Functions.h,sha256=9vjETYlNoQKCJVRNBmIvBoj6T2GA9-c16T5FPVmWpa0,1577 +torchgen/packaged/autograd/templates/TraceType.cpp,sha256=aqACTyrT05ElIiBLJYkfSgxNjwhum6_QUPDAtXwoKqo,695 +torchgen/packaged/autograd/templates/VariableType.cpp,sha256=AG80s3CwhESp-zaewyfHmwmL0cOxOXZJcZxqyn2cIBs,2259 +torchgen/packaged/autograd/templates/VariableType.h,sha256=DVuAf8_kgQCcnZsVBFxSwwJTNZbFo01C5dVFhcROmq4,1467 +torchgen/packaged/autograd/templates/ViewFuncs.cpp,sha256=oas1Pw6wWyAfRy2uh5K7fGD3qR60LD2Oiv-B5OW6Tvc,269 +torchgen/packaged/autograd/templates/ViewFuncs.h,sha256=7RoIEE9NQ6jWdg3SfdbRsQxACKdscsrnZN45JTJER5I,498 +torchgen/packaged/autograd/templates/annotated_fn_args.py.in,sha256=gRgF9BZmylhyfXrVSAVjg9Y4TUYpq1FgYVd3_hk_9no,199 +torchgen/packaged/autograd/templates/python_enum_tag.cpp,sha256=2cTLq6vaU-qjAXLrChZAnCmpVqA4oDvZLOsBY3GWmDA,495 +torchgen/packaged/autograd/templates/python_fft_functions.cpp,sha256=g8Ub5jh_YhgeourCXjB2zlH15Lm_oGwLa37IjibMoEc,1951 +torchgen/packaged/autograd/templates/python_functions.cpp,sha256=b20LJcBbbQHQ4hTt-2h__DIuk8uHksD4ZVD5csfM43Q,1121 +torchgen/packaged/autograd/templates/python_functions.h,sha256=WX52FzntisoprdObQvGXrzMhehgWZ2rIfnHzgNpX-5U,345 +torchgen/packaged/autograd/templates/python_linalg_functions.cpp,sha256=3NyK1tMOYwAsnxyb1k04RPiN9MQkriblY3GnPVOrfSY,1614 +torchgen/packaged/autograd/templates/python_nested_functions.cpp,sha256=2wivRfIBY8pkU9mqHVQfqnsIff6K1Al-BTJyRFuUeAw,2029 +torchgen/packaged/autograd/templates/python_nn_functions.cpp,sha256=8AyIozHVM21KEaVuOPgT-zPfPGj6hpNMC5SiwqUixW0,3501 +torchgen/packaged/autograd/templates/python_return_types.cpp,sha256=GB75OiT-5X3rmgXZlc30MB67qMlvqkzhrDIfIj1mZp4,1219 +torchgen/packaged/autograd/templates/python_return_types.h,sha256=ZDLPH-bxSjCpeyWLhU6kZsuAxa2pnCgTE57YpxXmDmQ,198 +torchgen/packaged/autograd/templates/python_sparse_functions.cpp,sha256=NW_L2mF7ZrR2FvXtDE7iNfw0BM-wTyUzBa_C1B5RZ7A,1551 +torchgen/packaged/autograd/templates/python_special_functions.cpp,sha256=JqcAExUPCnbzUujY2PIDL5Gap-ZKlltKiZmDTleO_8s,1972 +torchgen/packaged/autograd/templates/python_torch_functions.cpp,sha256=QEgUPJbi5TunkkQog-o6zoIjpLFZ6VFHQYxKe7BUAiw,2601 +torchgen/packaged/autograd/templates/python_variable_methods.cpp,sha256=udmhz_G4hUGZjlUlEj70d1wZZ7b1z8e3TIQejK8tc3U,54000 +torchgen/packaged/autograd/templates/variable_factories.h,sha256=g-WOn2XuHBsLNGUk-emw0-KcrNsosDjqAu4NjPJCFA4,5637 +torchgen/selective_build/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torchgen/selective_build/__pycache__/__init__.cpython-311.pyc,, +torchgen/selective_build/__pycache__/operator.cpython-311.pyc,, +torchgen/selective_build/__pycache__/selector.cpython-311.pyc,, +torchgen/selective_build/operator.py,sha256=rA-TkO7eMUnHHysNngoP2fMKJcwRw1wvSeH7Vqq5av8,7209 +torchgen/selective_build/selector.py,sha256=GiA_q-Q_qwyc5s7MzUFkt3f8EwUtxMscYDWtpyo9Qyk,13813 +torchgen/static_runtime/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +torchgen/static_runtime/__pycache__/__init__.cpython-311.pyc,, +torchgen/static_runtime/__pycache__/config.cpython-311.pyc,, +torchgen/static_runtime/__pycache__/gen_static_runtime_ops.cpython-311.pyc,, +torchgen/static_runtime/__pycache__/generator.cpython-311.pyc,, +torchgen/static_runtime/config.py,sha256=ZGckbYpoJpi9vmLxVu0yMnYUqNTGhRHWd_2DrBN8oR4,14546 +torchgen/static_runtime/gen_static_runtime_ops.py,sha256=eoYNdqEXbgEG5YMmYeKEMp8hAU9__jrmZ4j_n6DrDpA,7395 +torchgen/static_runtime/generator.py,sha256=pdiU4FSZATPTovtEbfzrXdk4GdkjLAZL2wzOwPCWoXs,29538 +torchgen/utils.py,sha256=R05E4aFW5ZlNRulAzqh0WWHGtB_mb7j9SZybSauizaU,16962 +torchgen/yaml_utils.py,sha256=cQ9aPicmhKYSNfgbTZc4hrg0GPKKxddzZt5FdMHEKEE,1116 diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch-2.12.1+computecanada.dist-info/WHEEL b/outputs/audit_venv/lib/python3.11/site-packages/torch-2.12.1+computecanada.dist-info/WHEEL new file mode 100644 index 0000000000000000000000000000000000000000..3b96bae3ba84a6075769d2101f804bc5896460cb --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch-2.12.1+computecanada.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: wheelfile 0.0.8 +Root-Is-Purelib: true +Tag: cp311-cp311-linux_x86_64 + diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch-2.12.1+computecanada.dist-info/entry_points.txt b/outputs/audit_venv/lib/python3.11/site-packages/torch-2.12.1+computecanada.dist-info/entry_points.txt new file mode 100644 index 0000000000000000000000000000000000000000..5851bbc6ac14dfa78834f2dfa02553ce80777dc4 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch-2.12.1+computecanada.dist-info/entry_points.txt @@ -0,0 +1,5 @@ +[console_scripts] +torchrun = torch.distributed.run:main + +[torchrun.logs_specs] +default = torch.distributed.elastic.multiprocessing:DefaultLogsSpecs diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch-2.12.1+computecanada.dist-info/licenses/LICENSE b/outputs/audit_venv/lib/python3.11/site-packages/torch-2.12.1+computecanada.dist-info/licenses/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..c23172f7aff0254e4f0f163fb2e6e355cbaec5f4 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch-2.12.1+computecanada.dist-info/licenses/LICENSE @@ -0,0 +1,84 @@ +From PyTorch: + +Copyright (c) 2016- Facebook, Inc (Adam Paszke) +Copyright (c) 2014- Facebook, Inc (Soumith Chintala) +Copyright (c) 2011-2014 Idiap Research Institute (Ronan Collobert) +Copyright (c) 2012-2014 Deepmind Technologies (Koray Kavukcuoglu) +Copyright (c) 2011-2012 NEC Laboratories America (Koray Kavukcuoglu) +Copyright (c) 2011-2013 NYU (Clement Farabet) +Copyright (c) 2006-2010 NEC Laboratories America (Ronan Collobert, Leon Bottou, Iain Melvin, Jason Weston) +Copyright (c) 2006 Idiap Research Institute (Samy Bengio) +Copyright (c) 2001-2004 Idiap Research Institute (Ronan Collobert, Samy Bengio, Johnny Mariethoz) + +From Caffe2: + +Copyright (c) 2016-present, Facebook Inc. All rights reserved. + +All contributions by Facebook: +Copyright (c) 2016 Facebook Inc. + +All contributions by Google: +Copyright (c) 2015 Google Inc. +All rights reserved. + +All contributions by Yangqing Jia: +Copyright (c) 2015 Yangqing Jia +All rights reserved. + +All contributions by Kakao Brain: +Copyright 2019-2020 Kakao Brain + +All contributions by Cruise LLC: +Copyright (c) 2022 Cruise LLC. +All rights reserved. + +All contributions by Tri Dao: +Copyright (c) 2024 Tri Dao. +All rights reserved. + +All contributions by Arm: +Copyright (c) 2021, 2023-2025 Arm Limited and/or its affiliates + +All contributions from Caffe: +Copyright(c) 2013, 2014, 2015, the respective contributors +All rights reserved. + +All other contributions: +Copyright(c) 2015, 2016 the respective contributors +All rights reserved. + +Caffe2 uses a copyright model similar to Caffe: each contributor holds +copyright over their contributions to Caffe2. The project versioning records +all such contribution and copyright details. If a contributor wants to further +mark their specific copyright on a particular contribution, they should +indicate their copyright solely in the commit message of the change when it is +committed. + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the names of Facebook, Deepmind Technologies, NYU, NEC Laboratories America + and IDIAP Research Institute nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch-2.12.1+computecanada.dist-info/licenses/NOTICE b/outputs/audit_venv/lib/python3.11/site-packages/torch-2.12.1+computecanada.dist-info/licenses/NOTICE new file mode 100644 index 0000000000000000000000000000000000000000..6effb8b5d70709f90835f2f5d646352fd77b6943 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch-2.12.1+computecanada.dist-info/licenses/NOTICE @@ -0,0 +1,456 @@ +======================================================================= +Software under third_party +======================================================================= +Software libraries under third_party are provided as github submodule +links, and their content is not part of the Caffe2 codebase. Their +licences can be found under the respective software repositories. + +======================================================================= +Earlier BSD License +======================================================================= +Early development of Caffe2 in 2015 and early 2016 is licensed under the +BSD license. The license is attached below: + +All contributions by Facebook: +Copyright (c) 2016 Facebook Inc. + +All contributions by Google: +Copyright (c) 2015 Google Inc. +All rights reserved. + +All contributions by Yangqing Jia: +Copyright (c) 2015 Yangqing Jia +All rights reserved. + +All contributions by Kakao Brain: +Copyright 2019-2020 Kakao Brain + +All other contributions: +Copyright(c) 2015, 2016 the respective contributors +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +======================================================================= +Caffe's BSD License +======================================================================= +Some parts of the caffe2 code is derived from the original Caffe code, which is +created by Yangqing Jia and is now a BSD-licensed open-source project. The Caffe +license is as follows: + +COPYRIGHT + +All contributions by the University of California: +Copyright (c) 2014, The Regents of the University of California (Regents) +All rights reserved. + +All other contributions: +Copyright (c) 2014, the respective contributors +All rights reserved. + +Caffe uses a shared copyright model: each contributor holds copyright over +their contributions to Caffe. The project versioning records all such +contribution and copyright details. If a contributor wants to further mark +their specific copyright on a particular contribution, they should indicate +their copyright solely in the commit message of the change when it is +committed. + +LICENSE + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +CONTRIBUTION AGREEMENT + +By contributing to the BVLC/caffe repository through pull-request, comment, +or otherwise, the contributor releases their content to the +license and copyright terms herein. + +======================================================================= +Caffe2's Apache License +======================================================================= + +This repo contains Caffe2 code, which was previously licensed under +Apache License Version 2.0: + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +======================================================================= +Cephes's 3-Clause BSD License +======================================================================= + +Code derived from implementations in the Cephes Math Library should mention +its derivation and reference the following license: + + 3-Clause BSD License for the Cephes Math Library + Copyright (c) 2018, Steven Moshier + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + * Neither the name of the nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL Steven Moshier BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +======================================================================= +SciPy's 3-Clause BSD License +======================================================================= + +Code derived from implementations in SciPy should mention its derivation +and reference the following license: + + Copyright (c) 2001-2002 Enthought, Inc. 2003-2019, SciPy Developers. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + 3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +======================================================================= +Boost's 1.0 Software License +======================================================================= + +Code derived from implementations in Boost 1.0 should mention its +derivation and reference the following license: + + Boost Software License - Version 1.0 - August 17th, 2003 + + Permission is hereby granted, free of charge, to any person or organization + obtaining a copy of the software and accompanying documentation covered by + this license (the "Software") to use, reproduce, display, distribute, + execute, and transmit the Software, and to prepare derivative works of the + Software, and to permit third-parties to whom the Software is furnished to + do so, all subject to the following: + + The copyright notices in the Software and this entire statement, including + the above license grant, this restriction and the following disclaimer, + must be included in all copies of the Software, in whole or in part, and + all derivative works of the Software, unless such copies or derivative + works are solely in the form of machine-executable object code generated by + a source language processor. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT + SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE + FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +======================================================================= +PILLOW-SIMD Software License +======================================================================= + +Code derived from implementations in PILLOW-SIMD should mention its derivation +and reference the following license: + + The Python Imaging Library (PIL) is + + Copyright © 1997-2011 by Secret Labs AB + Copyright © 1995-2011 by Fredrik Lundh + + Pillow is the friendly PIL fork. It is + + Copyright © 2010-2022 by Alex Clark and contributors + + Like PIL, Pillow is licensed under the open source HPND License: + + By obtaining, using, and/or copying this software and/or its associated + documentation, you agree that you have read, understood, and will comply + with the following terms and conditions: + + Permission to use, copy, modify, and distribute this software and its + associated documentation for any purpose and without fee is hereby granted, + provided that the above copyright notice appears in all copies, and that + both that copyright notice and this permission notice appear in supporting + documentation, and that the name of Secret Labs AB or the author not be + used in advertising or publicity pertaining to distribution of the software + without specific, written prior permission. + + SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. + IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR BE LIABLE FOR ANY SPECIAL, + INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch-2.12.1+computecanada.dist-info/top_level.txt b/outputs/audit_venv/lib/python3.11/site-packages/torch-2.12.1+computecanada.dist-info/top_level.txt new file mode 100644 index 0000000000000000000000000000000000000000..3e40c4547cdefb9b810ff0c8f952fdead98563c6 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch-2.12.1+computecanada.dist-info/top_level.txt @@ -0,0 +1,2 @@ +torch +torchgen diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/datapipes/iter/utils.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/datapipes/iter/utils.py new file mode 100644 index 0000000000000000000000000000000000000000..e45ddab282f7b975732b28ab88339f979792646a --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/datapipes/iter/utils.py @@ -0,0 +1,60 @@ +import copy +import warnings +from collections.abc import Iterable, Iterator, Sized +from typing import TypeVar + +from torch.utils.data.datapipes.datapipe import IterDataPipe + + +_T = TypeVar("_T") + +__all__ = ["IterableWrapperIterDataPipe"] + + +class IterableWrapperIterDataPipe(IterDataPipe[_T]): + r""" + Wraps an iterable object to create an IterDataPipe. + + Args: + iterable: Iterable object to be wrapped into an IterDataPipe + deepcopy: Option to deepcopy input iterable object for each + iterator. The copy is made when the first element is read in ``iter()``. + + .. note:: + If ``deepcopy`` is explicitly set to ``False``, users should ensure + that the data pipeline doesn't contain any in-place operations over + the iterable instance to prevent data inconsistency across iterations. + + Example: + >>> # xdoctest: +SKIP + >>> from torchdata.datapipes.iter import IterableWrapper + >>> dp = IterableWrapper(range(10)) + >>> list(dp) + [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + """ + + def __init__(self, iterable: Iterable[_T], deepcopy: bool = True) -> None: + self.iterable = iterable + self.deepcopy = deepcopy + + def __iter__(self) -> Iterator[_T]: + source_data = self.iterable + if self.deepcopy: + try: + source_data = copy.deepcopy(self.iterable) + # For the case that data cannot be deep-copied, + # all in-place operations will affect iterable variable. + # When this DataPipe is iterated second time, it will + # yield modified items. + except TypeError: + warnings.warn( + "The input iterable can not be deepcopied, " + "please be aware of in-place modification would affect source data.", + stacklevel=2, + ) + yield from source_data + + def __len__(self) -> int: + if isinstance(self.iterable, Sized): + return len(self.iterable) + raise TypeError(f"{type(self).__name__} instance doesn't have valid length") diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/datapipes/map/__init__.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/datapipes/map/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..bc555e8fdac26039d36c4c1e1ba8309bfa8b4e5a --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/datapipes/map/__init__.py @@ -0,0 +1,20 @@ +# Functional DataPipe +from torch.utils.data.datapipes.map.callable import MapperMapDataPipe as Mapper +from torch.utils.data.datapipes.map.combinatorics import ( + ShufflerIterDataPipe as Shuffler, +) +from torch.utils.data.datapipes.map.combining import ( + ConcaterMapDataPipe as Concater, + ZipperMapDataPipe as Zipper, +) +from torch.utils.data.datapipes.map.grouping import BatcherMapDataPipe as Batcher +from torch.utils.data.datapipes.map.utils import ( + SequenceWrapperMapDataPipe as SequenceWrapper, +) + + +__all__ = ["Batcher", "Concater", "Mapper", "SequenceWrapper", "Shuffler", "Zipper"] + +# Please keep this list sorted +if __all__ != sorted(__all__): + raise AssertionError("__all__ is not sorted") diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/datapipes/map/callable.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/datapipes/map/callable.py new file mode 100644 index 0000000000000000000000000000000000000000..3696d34b2a815599709bb09d9b0dfcaca988a6eb --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/datapipes/map/callable.py @@ -0,0 +1,67 @@ +# mypy: allow-untyped-defs +from collections.abc import Callable +from typing import TypeVar + +from torch.utils.data.datapipes._decorator import functional_datapipe +from torch.utils.data.datapipes.datapipe import MapDataPipe +from torch.utils.data.datapipes.utils.common import _check_unpickable_fn + + +__all__ = ["MapperMapDataPipe", "default_fn"] + + +_T_co = TypeVar("_T_co", covariant=True) + + +# Default function to return each item directly +# In order to keep datapipe picklable, eliminates the usage +# of python lambda function +def default_fn(data): + return data + + +@functional_datapipe("map") +class MapperMapDataPipe(MapDataPipe[_T_co]): + r""" + Apply the input function over each item from the source DataPipe (functional name: ``map``). + + The function can be any regular Python function or partial object. Lambda + function is not recommended as it is not supported by pickle. + + Args: + datapipe: Source MapDataPipe + fn: Function being applied to each item + + Example: + >>> # xdoctest: +SKIP + >>> from torchdata.datapipes.map import SequenceWrapper, Mapper + >>> def add_one(x): + ... return x + 1 + >>> dp = SequenceWrapper(range(10)) + >>> map_dp_1 = dp.map(add_one) + >>> list(map_dp_1) + [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + >>> map_dp_2 = Mapper(dp, lambda x: x + 1) + >>> list(map_dp_2) + [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + """ + + datapipe: MapDataPipe + fn: Callable + + def __init__( + self, + datapipe: MapDataPipe, + fn: Callable = default_fn, + ) -> None: + super().__init__() + self.datapipe = datapipe + _check_unpickable_fn(fn) + self.fn = fn # type: ignore[assignment] + + def __len__(self) -> int: + # pyrefly: ignore [bad-argument-type] + return len(self.datapipe) + + def __getitem__(self, index) -> _T_co: + return self.fn(self.datapipe[index]) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/datapipes/map/combinatorics.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/datapipes/map/combinatorics.py new file mode 100644 index 0000000000000000000000000000000000000000..af4792fc805b824d45a966851e0fae2d853ff99f --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/datapipes/map/combinatorics.py @@ -0,0 +1,132 @@ +# mypy: allow-untyped-defs +import random +from collections.abc import Iterator +from typing import TypeVar + +import torch +from torch.utils.data.datapipes.datapipe import IterDataPipe, MapDataPipe + + +__all__ = ["ShufflerIterDataPipe"] + + +_T_co = TypeVar("_T_co", covariant=True) + + +# @functional_datapipe('shuffle') +class ShufflerIterDataPipe(IterDataPipe[_T_co]): + r""" + Shuffle the input MapDataPipe via its indices (functional name: ``shuffle``). + + When it is used with :class:`~torch.utils.data.DataLoader`, the methods to + set up random seed are different based on :attr:`num_workers`. + + For single-process mode (:attr:`num_workers == 0`), the random seed is set before + the :class:`~torch.utils.data.DataLoader` in the main process. For multi-process + mode (:attr:`num_worker > 0`), ``worker_init_fn`` is used to set up a random seed + for each worker process. + + Args: + datapipe: MapDataPipe being shuffled + indices: a list of indices of the MapDataPipe. If not provided, we assume it uses 0-based indexing + + Example: + >>> # xdoctest: +SKIP + >>> from torchdata.datapipes.map import SequenceWrapper + >>> dp = SequenceWrapper(range(10)) + >>> shuffle_dp = dp.shuffle().set_seed(0) + >>> list(shuffle_dp) + [7, 8, 1, 5, 3, 4, 2, 0, 9, 6] + >>> list(shuffle_dp) + [6, 1, 9, 5, 2, 4, 7, 3, 8, 0] + >>> # Reset seed for Shuffler + >>> shuffle_dp = shuffle_dp.set_seed(0) + >>> list(shuffle_dp) + [7, 8, 1, 5, 3, 4, 2, 0, 9, 6] + + Note: + Even thought this ``shuffle`` operation takes a ``MapDataPipe`` as the input, it would return an + ``IterDataPipe`` rather than a ``MapDataPipe``, because ``MapDataPipe`` should be non-sensitive to + the order of data order for the sake of random reads, but ``IterDataPipe`` depends on the order + of data during data-processing. + """ + + datapipe: MapDataPipe[_T_co] + _enabled: bool + _seed: int | None + _rng: random.Random + + def __init__( + self, + datapipe: MapDataPipe[_T_co], + *, + indices: list | None = None, + ) -> None: + super().__init__() + self.datapipe = datapipe + # pyrefly: ignore [bad-argument-type] + self.indices = list(range(len(datapipe))) if indices is None else indices + self._enabled = True + self._seed = None + self._rng = random.Random() + self._shuffled_indices: list = self.indices + + def set_shuffle(self, shuffle=True): + self._enabled = shuffle + return self + + def set_seed(self, seed: int): + self._seed = seed + return self + + def __iter__(self) -> Iterator[_T_co]: + if not self._enabled: + for idx in self.indices: + yield self.datapipe[idx] + else: + while self._shuffled_indices: + idx = self._shuffled_indices.pop() + yield self.datapipe[idx] + + def reset(self) -> None: + if self._enabled and self._seed is None: + self._seed = int(torch.empty((), dtype=torch.int64).random_().item()) + self._rng.seed(self._seed) + self._seed = None + self._shuffled_indices = self._rng.sample(self.indices, len(self.indices)) + + def __len__(self) -> int: + # pyrefly: ignore [bad-argument-type] + return len(self.datapipe) + + def __getstate__(self): + state = ( + self.datapipe, + self.indices, + self._enabled, + self._seed, + self._rng.getstate(), + self._shuffled_indices, + self._valid_iterator_id, + self._number_of_samples_yielded, + ) + if IterDataPipe.getstate_hook is not None: + return IterDataPipe.getstate_hook(state) + return state + + def __setstate__(self, state): + ( + self.datapipe, + self.indices, + self._enabled, + self._seed, + rng_state, + self._shuffled_indices, + self._valid_iterator_id, + self._number_of_samples_yielded, + ) = state + self._rng = random.Random() + self._rng.setstate(rng_state) + + +MapDataPipe.register_datapipe_as_function("shuffle", ShufflerIterDataPipe) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/datapipes/map/combining.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/datapipes/map/combining.py new file mode 100644 index 0000000000000000000000000000000000000000..276404de530015f14561832e5b8a0d28383ca57f --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/datapipes/map/combining.py @@ -0,0 +1,111 @@ +# mypy: allow-untyped-defs +from collections.abc import Sized +from typing import TypeVar + +from torch.utils.data.datapipes._decorator import functional_datapipe +from torch.utils.data.datapipes.datapipe import MapDataPipe + + +__all__ = ["ConcaterMapDataPipe", "ZipperMapDataPipe"] + +_T_co = TypeVar("_T_co", covariant=True) + + +@functional_datapipe("concat") +class ConcaterMapDataPipe(MapDataPipe): + r""" + Concatenate multiple Map DataPipes (functional name: ``concat``). + + The new index of is the cumulative sum of source DataPipes. + For example, if there are 2 source DataPipes both with length 5, + index 0 to 4 of the resulting `ConcatMapDataPipe` would refer to + elements of the first DataPipe, and 5 to 9 would refer to elements + of the second DataPipe. + + Args: + datapipes: Map DataPipes being concatenated + + Example: + >>> # xdoctest: +SKIP + >>> from torchdata.datapipes.map import SequenceWrapper + >>> dp1 = SequenceWrapper(range(3)) + >>> dp2 = SequenceWrapper(range(3)) + >>> concat_dp = dp1.concat(dp2) + >>> list(concat_dp) + [0, 1, 2, 0, 1, 2] + """ + + datapipes: tuple[MapDataPipe] + + def __init__(self, *datapipes: MapDataPipe) -> None: + if len(datapipes) == 0: + raise ValueError("Expected at least one DataPipe, but got nothing") + if not all(isinstance(dp, MapDataPipe) for dp in datapipes): + raise TypeError("Expected all inputs to be `MapDataPipe`") + # pyrefly: ignore [unsafe-overlap] + if not all(isinstance(dp, Sized) for dp in datapipes): + raise TypeError("Expected all inputs to be `Sized`") + self.datapipes = datapipes # type: ignore[assignment] + + def __getitem__(self, index) -> _T_co: # type: ignore[type-var] + offset = 0 + for dp in self.datapipes: + # pyrefly: ignore [bad-argument-type] + if index - offset < len(dp): + return dp[index - offset] + else: + # pyrefly: ignore [bad-argument-type] + offset += len(dp) + raise IndexError(f"Index {index} is out of range.") + + def __len__(self) -> int: + # pyrefly: ignore [bad-argument-type] + return sum(len(dp) for dp in self.datapipes) + + +@functional_datapipe("zip") +class ZipperMapDataPipe(MapDataPipe[tuple[_T_co, ...]]): + r""" + Aggregates elements into a tuple from each of the input DataPipes (functional name: ``zip``). + + This MataPipe is out of bound as soon as the shortest input DataPipe is exhausted. + + Args: + *datapipes: Map DataPipes being aggregated + + Example: + >>> # xdoctest: +SKIP + >>> from torchdata.datapipes.map import SequenceWrapper + >>> dp1 = SequenceWrapper(range(3)) + >>> dp2 = SequenceWrapper(range(10, 13)) + >>> zip_dp = dp1.zip(dp2) + >>> list(zip_dp) + [(0, 10), (1, 11), (2, 12)] + """ + + datapipes: tuple[MapDataPipe[_T_co], ...] + + def __init__(self, *datapipes: MapDataPipe[_T_co]) -> None: + if len(datapipes) == 0: + raise ValueError("Expected at least one DataPipe, but got nothing") + if not all(isinstance(dp, MapDataPipe) for dp in datapipes): + raise TypeError("Expected all inputs to be `MapDataPipe`") + # pyrefly: ignore [unsafe-overlap] + if not all(isinstance(dp, Sized) for dp in datapipes): + raise TypeError("Expected all inputs to be `Sized`") + self.datapipes = datapipes + + def __getitem__(self, index) -> tuple[_T_co, ...]: + res = [] + for dp in self.datapipes: + try: + res.append(dp[index]) + except IndexError as e: + raise IndexError( + f"Index {index} is out of range for one of the input MapDataPipes {dp}." + ) from e + return tuple(res) + + def __len__(self) -> int: + # pyrefly: ignore [bad-argument-type] + return min(len(dp) for dp in self.datapipes) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/datapipes/map/grouping.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/datapipes/map/grouping.py new file mode 100644 index 0000000000000000000000000000000000000000..fdc34d9dc4fdb0d6ce4d973c667bbfc774bd9bcb --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/datapipes/map/grouping.py @@ -0,0 +1,76 @@ +# mypy: allow-untyped-defs +from collections.abc import Sized +from typing import TypeVar + +from torch.utils.data.datapipes._decorator import functional_datapipe +from torch.utils.data.datapipes.datapipe import DataChunk, MapDataPipe + + +__all__ = ["BatcherMapDataPipe"] + + +_T = TypeVar("_T") + + +@functional_datapipe("batch") +class BatcherMapDataPipe(MapDataPipe[DataChunk]): + r""" + Create mini-batches of data (functional name: ``batch``). + + An outer dimension will be added as ``batch_size`` if ``drop_last`` is set to ``True``, + or ``length % batch_size`` for the last batch if ``drop_last`` is set to ``False``. + + Args: + datapipe: Iterable DataPipe being batched + batch_size: The size of each batch + drop_last: Option to drop the last batch if it's not full + + Example: + >>> # xdoctest: +SKIP + >>> from torchdata.datapipes.map import SequenceWrapper + >>> dp = SequenceWrapper(range(10)) + >>> batch_dp = dp.batch(batch_size=2) + >>> list(batch_dp) + [[0, 1], [2, 3], [4, 5], [6, 7], [8, 9]] + """ + + datapipe: MapDataPipe + batch_size: int + drop_last: bool + + def __init__( + self, + datapipe: MapDataPipe[_T], + batch_size: int, + drop_last: bool = False, + wrapper_class: type[DataChunk] = DataChunk, + ) -> None: + if batch_size <= 0: + raise AssertionError("Batch size is required to be larger than 0!") + super().__init__() + self.datapipe = datapipe + self.batch_size = batch_size + self.drop_last = drop_last + self.wrapper_class = wrapper_class + + def __getitem__(self, index) -> DataChunk: + batch: list = [] + indices = range(index * self.batch_size, (index + 1) * self.batch_size) + try: + batch.extend(self.datapipe[i] for i in indices) + return self.wrapper_class(batch) + except IndexError as e: + if not self.drop_last and len(batch) > 0: + return self.wrapper_class(batch) + else: + raise IndexError(f"Index {index} is out of bound.") from e + + def __len__(self) -> int: + # pyrefly: ignore [unsafe-overlap] + if isinstance(self.datapipe, Sized): + if self.drop_last: + return len(self.datapipe) // self.batch_size + else: + return (len(self.datapipe) + self.batch_size - 1) // self.batch_size + else: + raise TypeError(f"{type(self).__name__} instance doesn't have valid length") diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/datapipes/map/utils.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/datapipes/map/utils.py new file mode 100644 index 0000000000000000000000000000000000000000..a5b9075f1dbbc66a84dfd14d0778cc96ca604da0 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/datapipes/map/utils.py @@ -0,0 +1,61 @@ +import copy +import warnings +from collections.abc import Mapping, Sequence +from typing import Any, TypeVar + +from torch.utils.data.datapipes.datapipe import MapDataPipe + + +_T = TypeVar("_T") + +__all__ = ["SequenceWrapperMapDataPipe"] + + +class SequenceWrapperMapDataPipe(MapDataPipe[_T]): + r""" + Wraps a sequence object into a MapDataPipe. + + Args: + sequence: Sequence object to be wrapped into an MapDataPipe + deepcopy: Option to deepcopy input sequence object + + .. note:: + If ``deepcopy`` is set to False explicitly, users should ensure + that data pipeline doesn't contain any in-place operations over + the iterable instance, in order to prevent data inconsistency + across iterations. + + Example: + >>> # xdoctest: +SKIP + >>> from torchdata.datapipes.map import SequenceWrapper + >>> dp = SequenceWrapper(range(10)) + >>> list(dp) + [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + >>> dp = SequenceWrapper({"a": 100, "b": 200, "c": 300, "d": 400}) + >>> dp["a"] + 100 + """ + + sequence: Sequence[_T] | Mapping[Any, _T] + + def __init__( + self, sequence: Sequence[_T] | Mapping[Any, _T], deepcopy: bool = True + ) -> None: + if deepcopy: + try: + self.sequence = copy.deepcopy(sequence) + except TypeError: + warnings.warn( + "The input sequence can not be deepcopied, " + "please be aware of in-place modification would affect source data", + stacklevel=2, + ) + self.sequence = sequence + else: + self.sequence = sequence + + def __getitem__(self, index: int) -> _T: + return self.sequence[index] + + def __len__(self) -> int: + return len(self.sequence) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/datapipes/utils/__init__.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/datapipes/utils/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/datapipes/utils/common.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/datapipes/utils/common.py new file mode 100644 index 0000000000000000000000000000000000000000..4e78cd5095245247d43e06d69f557e8467214de2 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/datapipes/utils/common.py @@ -0,0 +1,414 @@ +# mypy: allow-untyped-defs +import fnmatch +import functools +import inspect +import os +import warnings +from collections.abc import Callable, Iterable +from io import IOBase +from typing import Any, NoReturn + +from torch.utils._import_utils import dill_available + + +__all__ = [ + "validate_input_col", + "StreamWrapper", + "get_file_binaries_from_pathnames", + "get_file_pathnames_from_root", + "match_masks", + "validate_pathname_binary_tuple", +] + + +# BC for torchdata +DILL_AVAILABLE = dill_available() + + +def validate_input_col(fn: Callable, input_col: int | tuple | list | None) -> None: + """ + Check that function used in a callable datapipe works with the input column. + + This simply ensures that the number of positional arguments matches the size + of the input column. The function must not contain any non-default + keyword-only arguments. + + Examples: + >>> # xdoctest: +SKIP("Failing on some CI machines") + >>> def f(a, b, *, c=1): + >>> return a + b + c + >>> def f_def(a, b=1, *, c=1): + >>> return a + b + c + >>> assert validate_input_col(f, [1, 2]) + >>> assert validate_input_col(f_def, 1) + >>> assert validate_input_col(f_def, [1, 2]) + + Notes: + If the function contains variable positional (`inspect.VAR_POSITIONAL`) arguments, + for example, f(a, *args), the validator will accept any size of input column + greater than or equal to the number of positional arguments. + (in this case, 1). + + Args: + fn: The function to check. + input_col: The input column to check. + + Raises: + ValueError: If the function is not compatible with the input column. + """ + try: + sig = inspect.signature(fn) + except ( + ValueError + ): # Signature cannot be inspected, likely it is a built-in fn or written in C + return + if isinstance(input_col, (list, tuple)): + input_col_size = len(input_col) + else: + input_col_size = 1 + + pos = [] + var_positional = False + non_default_kw_only = [] + + for p in sig.parameters.values(): + if p.kind in ( + inspect.Parameter.POSITIONAL_ONLY, + inspect.Parameter.POSITIONAL_OR_KEYWORD, + ): + pos.append(p) + elif p.kind is inspect.Parameter.VAR_POSITIONAL: + var_positional = True + elif p.kind is inspect.Parameter.KEYWORD_ONLY: + if p.default is p.empty: + non_default_kw_only.append(p) + else: + continue + + if isinstance(fn, functools.partial): + fn_name = getattr(fn.func, "__name__", repr(fn.func)) + else: + fn_name = getattr(fn, "__name__", repr(fn)) + + if len(non_default_kw_only) > 0: + raise ValueError( + f"The function {fn_name} takes {len(non_default_kw_only)} " + f"non-default keyword-only parameters, which is not allowed." + ) + + if len(sig.parameters) < input_col_size: + if not var_positional: + raise ValueError( + f"The function {fn_name} takes {len(sig.parameters)} " + f"parameters, but {input_col_size} are required." + ) + else: + if len(pos) > input_col_size: + if any(p.default is p.empty for p in pos[input_col_size:]): + raise ValueError( + f"The function {fn_name} takes {len(pos)} " + f"positional parameters, but {input_col_size} are required." + ) + elif len(pos) < input_col_size: + if not var_positional: + raise ValueError( + f"The function {fn_name} takes {len(pos)} " + f"positional parameters, but {input_col_size} are required." + ) + + +def _is_local_fn(fn): + # Functions or Methods + if hasattr(fn, "__code__"): + return fn.__code__.co_flags & inspect.CO_NESTED + # Callable Objects + else: + if hasattr(fn, "__qualname__"): + return "" in fn.__qualname__ + fn_type = type(fn) + if hasattr(fn_type, "__qualname__"): + return "" in fn_type.__qualname__ + return False + + +def _check_unpickable_fn(fn: Callable) -> None: + """ + Check function is pickable or not. + + If it is a lambda or local function, a UserWarning will be raised. If it's not a callable function, a TypeError will be raised. + """ + if not callable(fn): + raise TypeError(f"A callable function is expected, but {type(fn)} is provided.") + + # Extract function from partial object + # Nested partial function is automatically expanded as a single partial object + if isinstance(fn, functools.partial): + fn = fn.func + + # Local function + if _is_local_fn(fn) and not dill_available(): + warnings.warn( + "Local function is not supported by pickle, please use " + "regular python function or functools.partial instead.", + stacklevel=2, + ) + return + + # Lambda function + if hasattr(fn, "__name__") and fn.__name__ == "" and not dill_available(): + warnings.warn( + "Lambda function is not supported by pickle, please use " + "regular python function or functools.partial instead.", + stacklevel=2, + ) + return + + +def match_masks(name: str, masks: str | list[str]) -> bool: + # empty mask matches any input name + if not masks: + return True + + if isinstance(masks, str): + return fnmatch.fnmatch(name, masks) + + for mask in masks: + if fnmatch.fnmatch(name, mask): + return True + return False + + +def get_file_pathnames_from_root( + root: str, + masks: str | list[str], + recursive: bool = False, + abspath: bool = False, + non_deterministic: bool = False, +) -> Iterable[str]: + # print out an error message and raise the error out + def onerror(err: OSError) -> NoReturn: + warnings.warn(err.filename + " : " + err.strerror, stacklevel=2) + raise err + + if os.path.isfile(root): + path = root + if abspath: + path = os.path.abspath(path) + fname = os.path.basename(path) + if match_masks(fname, masks): + yield path + else: + for path, dirs, files in os.walk(root, onerror=onerror): + if abspath: + path = os.path.abspath(path) + if not non_deterministic: + files.sort() + for f in files: + if match_masks(f, masks): + yield os.path.join(path, f) + if not recursive: + break + if not non_deterministic: + # Note that this is in-place modifying the internal list from `os.walk` + # This only works because `os.walk` doesn't shallow copy before turn + # https://github.com/python/cpython/blob/f4c03484da59049eb62a9bf7777b963e2267d187/Lib/os.py#L407 + dirs.sort() + + +def get_file_binaries_from_pathnames( + pathnames: Iterable, mode: str, encoding: str | None = None +): + if not isinstance(pathnames, Iterable): + pathnames = [ + pathnames, + ] + + if mode in ("b", "t"): + mode = "r" + mode + + for pathname in pathnames: + if not isinstance(pathname, str): + raise TypeError( + f"Expected string type for pathname, but got {type(pathname)}" + ) + yield pathname, StreamWrapper(open(pathname, mode, encoding=encoding)) # noqa:SIM115 + + +def validate_pathname_binary_tuple(data: tuple[str, IOBase]) -> None: + if not isinstance(data, tuple): + raise TypeError( + f"pathname binary data should be tuple type, but it is type {type(data)}" + ) + if len(data) != 2: + raise TypeError( + f"pathname binary stream tuple length should be 2, but got {len(data)}" + ) + if not isinstance(data[0], str): + raise TypeError( + f"pathname within the tuple should have string type pathname, but it is type {type(data[0])}" + ) + if not isinstance(data[1], IOBase) and not isinstance(data[1], StreamWrapper): + raise TypeError( + f"binary stream within the tuple should have IOBase or" + f"its subclasses as type, but it is type {type(data[1])}" + ) + + +# Deprecated function names and its corresponding DataPipe type and kwargs for the `_deprecation_warning` function +_iter_deprecated_functional_names: dict[str, dict] = {} +_map_deprecated_functional_names: dict[str, dict] = {} + + +def _deprecation_warning( + old_class_name: str, + *, + deprecation_version: str, + removal_version: str, + old_functional_name: str = "", + old_argument_name: str = "", + new_class_name: str = "", + new_functional_name: str = "", + new_argument_name: str = "", + deprecate_functional_name_only: bool = False, +) -> None: + if new_functional_name and not old_functional_name: + raise ValueError( + "Old functional API needs to be specified for the deprecation warning." + ) + if new_argument_name and not old_argument_name: + raise ValueError( + "Old argument name needs to be specified for the deprecation warning." + ) + + if old_functional_name and old_argument_name: + raise ValueError( + "Deprecating warning for functional API and argument should be separated." + ) + + msg = f"`{old_class_name}()`" + if deprecate_functional_name_only and old_functional_name: + msg = f"{msg}'s functional API `.{old_functional_name}()` is" + elif old_functional_name: + msg = f"{msg} and its functional API `.{old_functional_name}()` are" + elif old_argument_name: + msg = f"The argument `{old_argument_name}` of {msg} is" + else: + msg = f"{msg} is" + msg = ( + f"{msg} deprecated since {deprecation_version} and will be removed in {removal_version}." + f"\nSee https://github.com/pytorch/data/issues/163 for details." + ) + + if new_class_name or new_functional_name: + msg = f"{msg}\nPlease use" + if new_class_name: + msg = f"{msg} `{new_class_name}()`" + if new_class_name and new_functional_name: + msg = f"{msg} or" + if new_functional_name: + msg = f"{msg} `.{new_functional_name}()`" + msg = f"{msg} instead." + + if new_argument_name: + msg = f"{msg}\nPlease use `{old_class_name}({new_argument_name}=)` instead." + + warnings.warn(msg, FutureWarning, stacklevel=2) + + +class StreamWrapper: + """ + StreamWrapper is introduced to wrap file handler generated by DataPipe operation like `FileOpener`. + + StreamWrapper would guarantee the wrapped file handler is closed when it's out of scope. + """ + + session_streams: dict[Any, int] = {} + debug_unclosed_streams: bool = False + + def __init__(self, file_obj, parent_stream=None, name=None) -> None: + self.file_obj = file_obj + self.child_counter = 0 + self.parent_stream = parent_stream + self.close_on_last_child = False + self.name = name + self.closed = False + if parent_stream is not None: + if not isinstance(parent_stream, StreamWrapper): + raise RuntimeError( + f"Parent stream should be StreamWrapper, {type(parent_stream)} was given" + ) + parent_stream.child_counter += 1 + self.parent_stream = parent_stream + if StreamWrapper.debug_unclosed_streams: + StreamWrapper.session_streams[self] = 1 + + @classmethod + def close_streams(cls, v, depth=0) -> None: + """Traverse structure and attempts to close all found StreamWrappers on best effort basis.""" + if depth > 10: + return + if isinstance(v, StreamWrapper): + v.close() + else: + # Traverse only simple structures + if isinstance(v, dict): + for vv in v.values(): + cls.close_streams(vv, depth=depth + 1) + elif isinstance(v, (list, tuple)): + for vv in v: + cls.close_streams(vv, depth=depth + 1) + + def __getattr__(self, name): + file_obj = self.__dict__["file_obj"] + return getattr(file_obj, name) + + def close(self, *args, **kwargs) -> None: + if self.closed: + return + if StreamWrapper.debug_unclosed_streams: + del StreamWrapper.session_streams[self] + if hasattr(self, "parent_stream") and self.parent_stream is not None: + self.parent_stream.child_counter -= 1 + if ( + not self.parent_stream.child_counter + and self.parent_stream.close_on_last_child + ): + self.parent_stream.close() + try: + self.file_obj.close(*args, **kwargs) + except AttributeError: + pass + self.closed = True + + def autoclose(self) -> None: + """Automatically close stream when all child streams are closed or if there are none.""" + self.close_on_last_child = True + if self.child_counter == 0: + self.close() + + def __dir__(self): + attrs = list(self.__dict__.keys()) + list(StreamWrapper.__dict__.keys()) + attrs += dir(self.file_obj) + return list(set(attrs)) + + def __del__(self) -> None: + if not self.closed: + self.close() + + def __iter__(self): + yield from self.file_obj + + def __next__(self): + return next(self.file_obj) + + def __repr__(self) -> str: + if self.name is None: + return f"StreamWrapper<{self.file_obj!r}>" + else: + return f"StreamWrapper<{self.name},{self.file_obj!r}>" + + def __getstate__(self): + return self.file_obj + + def __setstate__(self, obj): + self.file_obj = obj diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/datapipes/utils/decoder.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/datapipes/utils/decoder.py new file mode 100644 index 0000000000000000000000000000000000000000..2f33c5cc7e0e7312d0746292b8f714c10f9907a2 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/datapipes/utils/decoder.py @@ -0,0 +1,389 @@ +# mypy: allow-untyped-defs +# This file takes partial of the implementation from NVIDIA's webdataset at here: +# https://github.com/tmbdev/webdataset/blob/master/webdataset/autodecode.py + +import io +import json +import os.path +import pickle +import tempfile + +import torch +from torch.utils.data.datapipes.utils.common import StreamWrapper + + +__all__ = [ + "Decoder", + "ImageHandler", + "MatHandler", + "audiohandler", + "basichandlers", + "extension_extract_fn", + "handle_extension", + "imagehandler", + "mathandler", + "videohandler", +] + + +################################################################ +# handle basic datatypes +################################################################ +def basichandlers(extension: str, data): + """Transforms raw data (byte stream) into python objects. + + Looks at the extension and loads the data into a python object supporting + the corresponding extension. + + Args: + extension (str): The file extension + data (byte stream): Data to load into a python object. + + Returns: + object: The data loaded into a corresponding python object + supporting the extension. + + Example: + >>> import pickle + >>> data = pickle.dumps("some data") + >>> new_data = basichandlers("pickle", data) + >>> new_data + some data + + The transformation of data for extensions are: + - txt, text, transcript: utf-8 decoded data of str format + - cls, cls2, class, count, index, inx, id: int + - json, jsn: json loaded data + - pickle, pyd: pickle loaded data + - pt: torch loaded data + """ + + if extension in "txt text transcript": + return data.decode("utf-8") + + if extension in ["cls", "cls2", "class", "count", "index", "inx", "id"]: + try: + return int(data) + except ValueError: + return None + + if extension in "json jsn": + return json.loads(data) + + if extension in ["pyd", "pickle"]: + return pickle.loads(data) + + if extension == "pt": + stream = io.BytesIO(data) + return torch.load(stream) + + # if extension in "ten tb".split(): + # from . import tenbin + # return tenbin.decode_buffer(data) + + # if extension in "mp msgpack msg".split(): + # import msgpack + # return msgpack.unpackb(data) + + return None + + +################################################################ +# handle images +################################################################ +imagespecs = { + "l8": ("numpy", "uint8", "l"), + "rgb8": ("numpy", "uint8", "rgb"), + "rgba8": ("numpy", "uint8", "rgba"), + "l": ("numpy", "float", "l"), + "rgb": ("numpy", "float", "rgb"), + "rgba": ("numpy", "float", "rgba"), + "torchl8": ("torch", "uint8", "l"), + "torchrgb8": ("torch", "uint8", "rgb"), + "torchrgba8": ("torch", "uint8", "rgba"), + "torchl": ("torch", "float", "l"), + "torchrgb": ("torch", "float", "rgb"), + "torch": ("torch", "float", "rgb"), + "torchrgba": ("torch", "float", "rgba"), + "pill": ("pil", None, "l"), + "pil": ("pil", None, "rgb"), + "pilrgb": ("pil", None, "rgb"), + "pilrgba": ("pil", None, "rgba"), +} + + +def handle_extension(extensions, f): + """ + Return a decoder handler function for the list of extensions. + + Extensions can be a space separated list of extensions. + Extensions can contain dots, in which case the corresponding number + of extension components must be present in the key given to f. + Comparisons are case insensitive. + Examples: + handle_extension("jpg jpeg", my_decode_jpg) # invoked for any file.jpg + handle_extension("seg.jpg", special_case_jpg) # invoked only for file.seg.jpg + """ + extensions = extensions.lower().split() + + def g(key, data): + extension = key.lower().split(".") + + for target in extensions: + target = target.split(".") + if len(target) > len(extension): + continue + + if extension[-len(target) :] == target: + return f(data) + return None + + return g + + +class ImageHandler: + """ + Decode image data using the given `imagespec`. + + The `imagespec` specifies whether the image is decoded + to numpy/torch/pi, decoded to uint8/float, and decoded + to l/rgb/rgba: + + - l8: numpy uint8 l + - rgb8: numpy uint8 rgb + - rgba8: numpy uint8 rgba + - l: numpy float l + - rgb: numpy float rgb + - rgba: numpy float rgba + - torchl8: torch uint8 l + - torchrgb8: torch uint8 rgb + - torchrgba8: torch uint8 rgba + - torchl: torch float l + - torchrgb: torch float rgb + - torch: torch float rgb + - torchrgba: torch float rgba + - pill: pil None l + - pil: pil None rgb + - pilrgb: pil None rgb + - pilrgba: pil None rgba + """ + + def __init__(self, imagespec) -> None: + if imagespec not in list(imagespecs.keys()): + raise AssertionError(f"unknown image specification: {imagespec}") + self.imagespec = imagespec.lower() + + def __call__(self, extension, data): + if extension.lower() not in ["jpg", "jpeg", "png", "ppm", "pgm", "pbm", "pnm"]: + return None + + try: + import numpy as np + except ModuleNotFoundError as e: + raise ModuleNotFoundError( + "Package `numpy` is required to be installed for default image decoder." + "Please use `pip install numpy` to install the package" + ) from e + + try: + import PIL.Image + except ModuleNotFoundError as e: + raise ModuleNotFoundError( + "Package `PIL` is required to be installed for default image decoder." + "Please use `pip install Pillow` to install the package" + ) from e + + imagespec = self.imagespec + atype, etype, mode = imagespecs[imagespec] + + with io.BytesIO(data) as stream: + img = PIL.Image.open(stream) + img.load() + img = img.convert(mode.upper()) + if atype == "pil": + return img + elif atype == "numpy": + result = np.asarray(img) + if result.dtype != np.uint8: + raise AssertionError( + f"numpy image array should be type uint8, but got {result.dtype}" + ) + if etype == "uint8": + return result + else: + return result.astype("f") / 255.0 + elif atype == "torch": + result = np.asarray(img) + if result.dtype != np.uint8: + raise AssertionError( + f"numpy image array should be type uint8, but got {result.dtype}" + ) + + if etype == "uint8": + result = np.array(result.transpose(2, 0, 1)) + return torch.tensor(result) + else: + result = np.array(result.transpose(2, 0, 1)) + return torch.tensor(result) / 255.0 + return None + + +def imagehandler(imagespec): + return ImageHandler(imagespec) + + +################################################################ +# torch video +################################################################ +def videohandler(extension, data): + if extension not in [ + "mp4", + "ogv", + "mjpeg", + "avi", + "mov", + "h264", + "mpg", + "webm", + "wmv", + ]: + return None + + try: + import torchvision.io + except ImportError as e: + raise ModuleNotFoundError( + "Package `torchvision` is required to be installed for default video file loader." + "Please use `pip install torchvision`" + "to install the package" + ) from e + + with tempfile.TemporaryDirectory() as dirname: + fname = os.path.join(dirname, f"file.{extension}") + with open(fname, "wb") as stream: + stream.write(data) + return torchvision.io.read_video(fname) + + +################################################################ +# torchaudio +################################################################ +def audiohandler(extension, data): + if extension not in ["flac", "mp3", "sox", "wav", "m4a", "ogg", "wma"]: + return None + + try: + import torchaudio # type: ignore[import] + except ImportError as e: + raise ModuleNotFoundError( + "Package `torchaudio` is required to be installed for default audio file loader." + "Please use `pip install torchaudio`" + "to install the package" + ) from e + + with tempfile.TemporaryDirectory() as dirname: + fname = os.path.join(dirname, f"file.{extension}") + with open(fname, "wb") as stream: + stream.write(data) + return torchaudio.load(fname) + + +################################################################ +# mat +################################################################ +class MatHandler: + def __init__(self, **loadmat_kwargs) -> None: + try: + import scipy.io as sio + except ImportError as e: + raise ModuleNotFoundError( + "Package `scipy` is required to be installed for mat file." + "Please use `pip install scipy`" + "to install the package" + ) from e + self.sio = sio + self.loadmat_kwargs = loadmat_kwargs + + def __call__(self, extension, data): + if extension != "mat": + return None + with io.BytesIO(data) as stream: + return self.sio.loadmat(stream, **self.loadmat_kwargs) + + +def mathandler(**loadmat_kwargs): + return MatHandler(**loadmat_kwargs) + + +################################################################ +# a sample decoder +################################################################ +# Extract extension from pathname +def extension_extract_fn(pathname): + ext = os.path.splitext(pathname)[1] + # Remove dot + if ext: + ext = ext[1:] + return ext + + +class Decoder: + """ + Decode key/data sets using a list of handlers. + + For each key/data item, this iterates through the list of + handlers until some handler returns something other than None. + """ + + def __init__(self, *handler, key_fn=extension_extract_fn) -> None: + self.handlers = list(handler) if handler else [] + self.key_fn = key_fn + + # Insert new handler from the beginning of handlers list to make sure the new + # handler having the highest priority + def add_handler(self, *handler) -> None: + if not handler: + return + self.handlers = list(handler) + self.handlers + + @staticmethod + def _is_stream_handle(data): + obj_to_check = data.file_obj if isinstance(data, StreamWrapper) else data + return isinstance(obj_to_check, (io.BufferedIOBase, io.RawIOBase)) + + def decode1(self, key, data): + if not data: + return data + + # if data is a stream handle, we need to read all the content before decoding + if Decoder._is_stream_handle(data): + ds = data + # The behavior of .read can differ between streams (e.g. HTTPResponse), hence this is used instead + data = b"".join(data) + ds.close() + + for f in self.handlers: + result = f(key, data) + if result is not None: + return result + return data + + def decode(self, data): + result = {} + # single data tuple(pathname, data stream) + if isinstance(data, tuple): + data = [data] + + if data is not None: + for k, v in data: + # TODO: xinyu, figure out why Nvidia do this? + if k[0] == "_": + if isinstance(v, bytes): + v = v.decode("utf-8") + result[k] = v + continue + result[k] = self.decode1(self.key_fn(k), v) + return result + + def __call__(self, data): + return self.decode(data) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/datapipes/utils/snapshot.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/datapipes/utils/snapshot.py new file mode 100644 index 0000000000000000000000000000000000000000..42aec1aa308a9b21b251de595cddfbe171930bb6 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/datapipes/utils/snapshot.py @@ -0,0 +1,65 @@ +# mypy: allow-untyped-defs +from torch.utils.data.datapipes._hook_iterator import _SnapshotState +from torch.utils.data.datapipes.datapipe import IterDataPipe +from torch.utils.data.graph_settings import apply_random_seed + + +# TODO: Caveats +# 1. Caller (either the ReadingService or DataLoader) must pass in the initial RNG +# 2. `in_batch_shuffle` and `bucketbatch` are not compatible with this because they currently +# lack the option to `set_seed`. +def _simple_graph_snapshot_restoration( + datapipe: IterDataPipe, n_iterations: int, rng=None +) -> None: + r""" + Fast-forward the given DataPipe and its parents by ``n_iterations``, re-doing computations to restore a snapshot. + + For instance, applying this function to the final DataPipe of a graph will restore the snapshot + (via fast-forward) every DataPipe within the graph. + + After you deserialize a DataPipe, you can use its `_number_of_samples_yielded` attribute as the input + to this function to forward the DataPipe. + + A DataPipe cannot be restored twice in a row unless there is an iteration started between the restoration + attempts. + + Note: + This is the simplest but least efficient way to fast-forward a DataPipe. Usage of other fast-forwarding + methods (custom ones if necessary) are recommended. + + Args: + datapipe: IterDataPipe to be fast-forwarded + n_iterations: number of iterations to fast-forward + rng: ``Optional[torch.Generator]``. If not ``None``, this RNG will be used for shuffling. The generator + should be in its `initial` state as it was first passed into ``DataLoader`` or ``ReadingService``. + """ + if datapipe._snapshot_state == _SnapshotState.Restored: + raise RuntimeError( + "Snapshot restoration cannot be applied. You can only restore simple snapshot to the graph " + "if your graph has not been restored." + ) + + # For this snapshot restoration function, we want the DataPipe to be at its initial state prior to + # simple fast-forwarding. Therefore, we need to call `reset` twice, because if `SnapshotState` is `Restored`, + # the first reset will not actually reset. + datapipe.reset() # This ensures `SnapshotState` is `Iterating` by this point, even if it was `Restored`. + # pyrefly: ignore [bad-argument-type] + apply_random_seed(datapipe, rng) + + remainder = n_iterations + it = iter(datapipe) # This always reset the DataPipe if it hasn't already. + while remainder > 0: + try: + next(it) + remainder -= 1 + except StopIteration as e: + raise RuntimeError( + f"Fast-forward {datapipe} by {n_iterations} iterations " + "exceeds the number of samples available." + ) from e + datapipe._fast_forward_iterator = it + # While the DataPipe has `_fast_forward_iterator`, `next()` will get result from there instead of elsewhere. + + # This will prevent the DataPipe from resetting in the `iter()` call + # If another DataPipe is consuming it, it won't have to start over again + datapipe._snapshot_state = _SnapshotState.Restored diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/dataset.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/dataset.py new file mode 100644 index 0000000000000000000000000000000000000000..a7c8be6824b1ebeb6b2aaf82a4720870572d2ca9 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/dataset.py @@ -0,0 +1,511 @@ +# mypy: allow-untyped-defs +import bisect +import itertools +import math +import warnings +from collections.abc import Sequence + +# UP006 wants 'Iterable' to be imported from collections.abc but it needs to +# stay from typing for now due to BC concerns. In particular several internal +# targets fail to typecheck with: +# TypeError: Cannot create a consistent method resolution order (MRO) for +# bases Iterable, Generic +from typing import cast, Generic, Iterable, TypeVar # noqa: UP035 +from typing_extensions import deprecated + +# No 'default_generator' in torch/__init__.pyi +from torch import default_generator, Generator, randperm, Tensor + + +__all__ = [ + "Dataset", + "IterableDataset", + "TensorDataset", + "StackDataset", + "ConcatDataset", + "ChainDataset", + "Subset", + "random_split", +] + + +_T = TypeVar("_T") +_T_co = TypeVar("_T_co", covariant=True) +_T_dict = dict[str, _T_co] +_T_tuple = tuple[_T_co, ...] +_T_stack = TypeVar("_T_stack", _T_tuple, _T_dict) + + +class Dataset(Generic[_T_co]): + r"""An abstract class representing a :class:`Dataset`. + + All datasets that represent a map from keys to data samples should subclass + it. All subclasses should overwrite :meth:`__getitem__`, supporting fetching a + data sample for a given key. Subclasses could also optionally overwrite + :meth:`__len__`, which is expected to return the size of the dataset by many + :class:`~torch.utils.data.Sampler` implementations and the default options + of :class:`~torch.utils.data.DataLoader`. Subclasses could also + optionally implement :meth:`__getitems__`, for speedup batched samples + loading. This method accepts list of indices of samples of batch and returns + list of samples. + + .. note:: + :class:`~torch.utils.data.DataLoader` by default constructs an index + sampler that yields integral indices. To make it work with a map-style + dataset with non-integral indices/keys, a custom sampler must be provided. + """ + + def __getitem__(self, index) -> _T_co: + raise NotImplementedError("Subclasses of Dataset should implement __getitem__.") + + # def __getitems__(self, indices: List) -> List[_T_co]: + # Not implemented to prevent false-positives in fetcher check in + # torch.utils.data._utils.fetch._MapDatasetFetcher + + def __add__(self, other: "Dataset[_T_co]") -> "ConcatDataset[_T_co]": + return ConcatDataset([self, other]) + + # No `def __len__(self)` default? + # See NOTE [ Lack of Default `__len__` in Python Abstract Base Classes ] + # in pytorch/torch/utils/data/sampler.py + + +class IterableDataset(Dataset[_T_co], Iterable[_T_co]): + r"""An iterable Dataset. + + All datasets that represent an iterable of data samples should subclass it. + Such form of datasets is particularly useful when data come from a stream. + + All subclasses should overwrite :meth:`__iter__`, which would return an + iterator of samples in this dataset. + + When a subclass is used with :class:`~torch.utils.data.DataLoader`, each + item in the dataset will be yielded from the :class:`~torch.utils.data.DataLoader` + iterator. When :attr:`num_workers > 0`, each worker process will have a + different copy of the dataset object, so it is often desired to configure + each copy independently to avoid having duplicate data returned from the + workers. :func:`~torch.utils.data.get_worker_info`, when called in a worker + process, returns information about the worker. It can be used in either the + dataset's :meth:`__iter__` method or the :class:`~torch.utils.data.DataLoader` 's + :attr:`worker_init_fn` option to modify each copy's behavior. + + Example 1: splitting workload across all workers in :meth:`__iter__`:: + + >>> # xdoctest: +REQUIRES(env:TORCH_DOCTEST_DATALOADER) + >>> # xdoctest: +SKIP("Fails on MacOS12") + >>> class MyIterableDataset(torch.utils.data.IterableDataset): + ... def __init__(self, start, end): + ... super(MyIterableDataset).__init__() + ... assert end > start, "this example only works with end >= start" + ... self.start = start + ... self.end = end + ... + ... def __iter__(self): + ... worker_info = torch.utils.data.get_worker_info() + ... if worker_info is None: # single-process data loading, return the full iterator + ... iter_start = self.start + ... iter_end = self.end + ... else: # in a worker process + ... # split workload + ... per_worker = int(math.ceil((self.end - self.start) / float(worker_info.num_workers))) + ... worker_id = worker_info.id + ... iter_start = self.start + worker_id * per_worker + ... iter_end = min(iter_start + per_worker, self.end) + ... return iter(range(iter_start, iter_end)) + ... + >>> # should give same set of data as range(3, 7), i.e., [3, 4, 5, 6]. + >>> ds = MyIterableDataset(start=3, end=7) + + >>> # Single-process loading + >>> print(list(torch.utils.data.DataLoader(ds, num_workers=0))) + [tensor([3]), tensor([4]), tensor([5]), tensor([6])] + + >>> # xdoctest: +REQUIRES(POSIX) + >>> # Multi-process loading with two worker processes + >>> # Worker 0 fetched [3, 4]. Worker 1 fetched [5, 6]. + >>> # xdoctest: +IGNORE_WANT("non deterministic") + >>> print(list(torch.utils.data.DataLoader(ds, num_workers=2))) + [tensor([3]), tensor([5]), tensor([4]), tensor([6])] + + >>> # With even more workers + >>> # xdoctest: +IGNORE_WANT("non deterministic") + >>> print(list(torch.utils.data.DataLoader(ds, num_workers=12))) + [tensor([3]), tensor([5]), tensor([4]), tensor([6])] + + Example 2: splitting workload across all workers using :attr:`worker_init_fn`:: + + >>> # xdoctest: +REQUIRES(env:TORCH_DOCTEST_DATALOADER) + >>> class MyIterableDataset(torch.utils.data.IterableDataset): + ... def __init__(self, start, end): + ... super(MyIterableDataset).__init__() + ... assert end > start, "this example only works with end >= start" + ... self.start = start + ... self.end = end + ... + ... def __iter__(self): + ... return iter(range(self.start, self.end)) + ... + >>> # should give same set of data as range(3, 7), i.e., [3, 4, 5, 6]. + >>> ds = MyIterableDataset(start=3, end=7) + + >>> # Single-process loading + >>> print(list(torch.utils.data.DataLoader(ds, num_workers=0))) + [3, 4, 5, 6] + >>> + >>> # Directly doing multi-process loading yields duplicate data + >>> print(list(torch.utils.data.DataLoader(ds, num_workers=2))) + [3, 3, 4, 4, 5, 5, 6, 6] + + >>> # Define a `worker_init_fn` that configures each dataset copy differently + >>> def worker_init_fn(worker_id): + ... worker_info = torch.utils.data.get_worker_info() + ... dataset = worker_info.dataset # the dataset copy in this worker process + ... overall_start = dataset.start + ... overall_end = dataset.end + ... # configure the dataset to only process the split workload + ... per_worker = int(math.ceil((overall_end - overall_start) / float(worker_info.num_workers))) + ... worker_id = worker_info.id + ... dataset.start = overall_start + worker_id * per_worker + ... dataset.end = min(dataset.start + per_worker, overall_end) + ... + + >>> # Mult-process loading with the custom `worker_init_fn` + >>> # Worker 0 fetched [3, 4]. Worker 1 fetched [5, 6]. + >>> print(list(torch.utils.data.DataLoader(ds, num_workers=2, worker_init_fn=worker_init_fn))) + [3, 5, 4, 6] + + >>> # With even more workers + >>> print(list(torch.utils.data.DataLoader(ds, num_workers=12, worker_init_fn=worker_init_fn))) + [3, 4, 5, 6] + """ + + def __add__(self, other: Dataset[_T_co]): + return ChainDataset([self, other]) + + # No `def __len__(self)` default? Subclasses raise `TypeError` when needed. + # See NOTE [ Lack of Default `__len__` in Python Abstract Base Classes ] + + +class TensorDataset(Dataset[tuple[Tensor, ...]]): + r"""Dataset wrapping tensors. + + Each sample will be retrieved by indexing tensors along the first dimension. + + Args: + *tensors (Tensor): tensors that have the same size of the first dimension. + """ + + tensors: tuple[Tensor, ...] + + def __init__(self, *tensors: Tensor) -> None: + if any(tensors[0].size(0) != tensor.size(0) for tensor in tensors): + raise AssertionError("Size mismatch between tensors") + self.tensors = tensors + + def __getitem__(self, index): + return tuple(tensor[index] for tensor in self.tensors) + + def __len__(self) -> int: + return self.tensors[0].size(0) + + +class StackDataset(Dataset[_T_stack]): + r"""Dataset as a stacking of multiple datasets. + + This class is useful to assemble different parts of complex input data, given as datasets. + + Example: + >>> # xdoctest: +SKIP + >>> images = ImageDataset() + >>> texts = TextDataset() + >>> tuple_stack = StackDataset(images, texts) + >>> tuple_stack[0] == (images[0], texts[0]) + >>> dict_stack = StackDataset(image=images, text=texts) + >>> dict_stack[0] == {"image": images[0], "text": texts[0]} + + Args: + *args (Dataset): Datasets for stacking returned as tuple. + **kwargs (Dataset): Datasets for stacking returned as dict. + """ + + datasets: tuple | dict + + def __init__(self, *args: Dataset[_T_co], **kwargs: Dataset[_T_co]) -> None: + if args: + if kwargs: + raise ValueError( + "Supported either ``tuple``- (via ``args``) or" + "``dict``- (via ``kwargs``) like input/output, but both types are given." + ) + self._length = len(args[0]) # type: ignore[arg-type] + if any(self._length != len(dataset) for dataset in args): # type: ignore[arg-type] + raise ValueError("Size mismatch between datasets") + self.datasets = args + elif kwargs: + tmp = list(kwargs.values()) + self._length = len(tmp[0]) # type: ignore[arg-type] + if any(self._length != len(dataset) for dataset in tmp): # type: ignore[arg-type] + raise ValueError("Size mismatch between datasets") + self.datasets = kwargs + else: + raise ValueError("At least one dataset should be passed") + + def __getitem__(self, index): + if isinstance(self.datasets, dict): + return {k: dataset[index] for k, dataset in self.datasets.items()} + return tuple(dataset[index] for dataset in self.datasets) + + def __getitems__(self, indices: list): + # add batched sampling support when parent datasets supports it. + if isinstance(self.datasets, dict): + dict_batch: list[_T_dict] = [{} for _ in indices] + for k, dataset in self.datasets.items(): + if callable(getattr(dataset, "__getitems__", None)): + items = dataset.__getitems__(indices) # type: ignore[attr-defined] + if len(items) != len(indices): + raise ValueError( + "Nested dataset's output size mismatch." + f" Expected {len(indices)}, got {len(items)}" + ) + for data, d_sample in zip(items, dict_batch, strict=True): + d_sample[k] = data + else: + for idx, d_sample in zip(indices, dict_batch, strict=True): + d_sample[k] = dataset[idx] + return dict_batch + + # tuple data + list_batch: list[list] = [[] for _ in indices] + for dataset in self.datasets: + if callable(getattr(dataset, "__getitems__", None)): + items = dataset.__getitems__(indices) # type: ignore[attr-defined] + if len(items) != len(indices): + raise ValueError( + "Nested dataset's output size mismatch." + f" Expected {len(indices)}, got {len(items)}" + ) + for data, t_sample in zip(items, list_batch, strict=True): + t_sample.append(data) + else: + for idx, t_sample in zip(indices, list_batch, strict=True): + t_sample.append(dataset[idx]) + tuple_batch: list[_T_tuple] = [tuple(sample) for sample in list_batch] + return tuple_batch + + def __len__(self) -> int: + return self._length + + +class ConcatDataset(Dataset[_T_co]): + r"""Dataset as a concatenation of multiple datasets. + + This class is useful to assemble different existing datasets. + + Args: + datasets (sequence): List of datasets to be concatenated + """ + + datasets: list[Dataset[_T_co]] + cumulative_sizes: list[int] + + @staticmethod + def cumsum(sequence): + r, s = [], 0 + for e in sequence: + l = len(e) + r.append(l + s) + s += l + return r + + def __init__(self, datasets: Iterable[Dataset]) -> None: + super().__init__() + self.datasets = list(datasets) + if len(self.datasets) == 0: + raise AssertionError("datasets should not be an empty iterable") + for d in self.datasets: + if isinstance(d, IterableDataset): + raise AssertionError("ConcatDataset does not support IterableDataset") + self.cumulative_sizes = self.cumsum(self.datasets) + + def __len__(self) -> int: + return self.cumulative_sizes[-1] + + def __getitem__(self, idx): + if idx < 0: + if -idx > len(self): + raise ValueError( + "absolute value of index should not exceed dataset length" + ) + idx = len(self) + idx + dataset_idx = bisect.bisect_right(self.cumulative_sizes, idx) + if dataset_idx == 0: + sample_idx = idx + else: + sample_idx = idx - self.cumulative_sizes[dataset_idx - 1] + return self.datasets[dataset_idx][sample_idx] + + @property + @deprecated( + "`cummulative_sizes` attribute is renamed to `cumulative_sizes`", + category=FutureWarning, + ) + def cummulative_sizes(self): + return self.cumulative_sizes + + +class ChainDataset(IterableDataset): + r"""Dataset for chaining multiple :class:`IterableDataset` s. + + This class is useful to assemble different existing dataset streams. The + chaining operation is done on-the-fly, so concatenating large-scale + datasets with this class will be efficient. + + Args: + datasets (iterable of IterableDataset): datasets to be chained together + """ + + def __init__(self, datasets: Iterable[Dataset]) -> None: + super().__init__() + self.datasets = datasets + + def __iter__(self): + for d in self.datasets: + if not isinstance(d, IterableDataset): + raise AssertionError("ChainDataset only supports IterableDataset") + yield from d + + def __len__(self) -> int: + total = 0 + for d in self.datasets: + if not isinstance(d, IterableDataset): + raise AssertionError("ChainDataset only supports IterableDataset") + total += len(d) # type: ignore[arg-type] + return total + + +class Subset(Dataset[_T_co]): + r""" + Subset of a dataset at specified indices. + + .. note:: + When subclassing `Subset` and overriding `__getitem__`, you **must** also + override `__getitems__` to ensure `DataLoader` works correctly with your + custom logic. If you override only `__getitem__`, a `NotImplementedError` + will be raised when using `DataLoader`. + + A simple implementation of `__getitems__` can delegate to `__getitem__`: + + .. code-block:: python + + def __getitems__(self, indices): + return [self.__getitem__(idx) for idx in indices] + + For better performance, consider implementing batch-aware logic in + `__getitems__` instead of calling `__getitem__` multiple times. + + Args: + dataset (Dataset): The whole Dataset + indices (sequence): Indices in the whole set selected for subset + """ + + dataset: Dataset[_T_co] + indices: Sequence[int] + + def __init__(self, dataset: Dataset[_T_co], indices: Sequence[int]) -> None: + self.dataset = dataset + self.indices = indices + + # Check if __getitem__ is overridden but __getitems__ is not + if ( + type(self).__getitem__ is not Subset.__getitem__ + and type(self).__getitems__ is Subset.__getitems__ + ): + raise NotImplementedError( + f"{type(self).__name__} overrides __getitem__ but not __getitems__. " + "When subclassing Subset and overriding __getitem__, you must also override " + "__getitems__ to ensure DataLoader works correctly with your custom logic. " + "A simple implementation:\n\n" + "def __getitems__(self, indices):\n" + " return [self.__getitem__(idx) for idx in indices]" + ) + + def __getitem__(self, idx): + if isinstance(idx, list): + return self.dataset[[self.indices[i] for i in idx]] + return self.dataset[self.indices[idx]] + + def __getitems__(self, indices: list[int]) -> list[_T_co]: + # add batched sampling support when parent dataset supports it. + # see torch.utils.data._utils.fetch._MapDatasetFetcher + if callable(getattr(self.dataset, "__getitems__", None)): + return self.dataset.__getitems__([self.indices[idx] for idx in indices]) # type: ignore[attr-defined] + else: + return [self.dataset[self.indices[idx]] for idx in indices] + + def __len__(self) -> int: + return len(self.indices) + + +def random_split( + dataset: Dataset[_T], + lengths: Sequence[int | float], + generator: Generator | None = default_generator, +) -> list[Subset[_T]]: + r""" + Randomly split a dataset into non-overlapping new datasets of given lengths. + + If a list of fractions that sum up to 1 is given, + the lengths will be computed automatically as + floor(frac * len(dataset)) for each fraction provided. + + After computing the lengths, if there are any remainders, 1 count will be + distributed in round-robin fashion to the lengths + until there are no remainders left. + + Optionally fix the generator for reproducible results, e.g.: + + Example: + >>> # xdoctest: +SKIP + >>> generator1 = torch.Generator().manual_seed(42) + >>> generator2 = torch.Generator().manual_seed(42) + >>> random_split(range(10), [3, 7], generator=generator1) + >>> random_split(range(30), [0.3, 0.3, 0.4], generator=generator2) + + Args: + dataset (Dataset): Dataset to be split + lengths (sequence): lengths or fractions of splits to be produced + generator (Generator): Generator used for the random permutation. + """ + if math.isclose(sum(lengths), 1) and sum(lengths) <= 1: + subset_lengths: list[int] = [] + for i, frac in enumerate(lengths): + if frac < 0 or frac > 1: + raise ValueError(f"Fraction at index {i} is not between 0 and 1") + n_items_in_split = math.floor(len(dataset) * frac) # type: ignore[arg-type] + subset_lengths.append(n_items_in_split) + remainder = len(dataset) - sum(subset_lengths) # type: ignore[arg-type] + # add 1 to all the lengths in round-robin fashion until the remainder is 0 + for i in range(remainder): + idx_to_add_at = i % len(subset_lengths) + subset_lengths[idx_to_add_at] += 1 + lengths = subset_lengths + for i, length in enumerate(lengths): + if length == 0: + warnings.warn( + f"Length of split at index {i} is 0. " + f"This might result in an empty dataset.", + stacklevel=2, + ) + + # Cannot verify that dataset is Sized + if sum(lengths) != len(dataset): # type: ignore[arg-type] + raise ValueError( + "Sum of input lengths does not equal the length of the input dataset!" + ) + + indices = randperm(sum(lengths), generator=generator).tolist() # type: ignore[arg-type, call-overload] + lengths = cast(Sequence[int], lengths) + return [ + Subset(dataset, indices[offset - length : offset]) + for offset, length in zip(itertools.accumulate(lengths), lengths, strict=True) + ] diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/distributed.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/distributed.py new file mode 100644 index 0000000000000000000000000000000000000000..5179d7698ffee0f2acda62a2b2073df176aae794 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/distributed.py @@ -0,0 +1,157 @@ +import math +from collections.abc import Iterator +from typing import TypeVar + +import torch +import torch.distributed as dist +from torch.utils.data.dataset import Dataset +from torch.utils.data.sampler import Sampler + + +__all__ = ["DistributedSampler"] + + +_T_co = TypeVar("_T_co", covariant=True) + + +class DistributedSampler(Sampler[_T_co]): + r"""Sampler that restricts data loading to a subset of the dataset. + + It is especially useful in conjunction with + :class:`torch.nn.parallel.DistributedDataParallel`. In such a case, each + process can pass a :class:`~torch.utils.data.DistributedSampler` instance as a + :class:`~torch.utils.data.DataLoader` sampler, and load a subset of the + original dataset that is exclusive to it. + + .. note:: + Dataset is assumed to be of constant size and that any instance of it always + returns the same elements in the same order. + + Args: + dataset: Dataset used for sampling. + num_replicas (int, optional): Number of processes participating in + distributed training. By default, :attr:`world_size` is retrieved from the + current distributed group. + rank (int, optional): Rank of the current process within :attr:`num_replicas`. + By default, :attr:`rank` is retrieved from the current distributed + group. + shuffle (bool, optional): If ``True`` (default), sampler will shuffle the + indices. + seed (int, optional): random seed used to shuffle the sampler if + :attr:`shuffle=True`. This number should be identical across all + processes in the distributed group. Default: ``0``. + drop_last (bool, optional): if ``True``, then the sampler will drop the + tail of the data to make it evenly divisible across the number of + replicas. If ``False``, the sampler will add extra indices to make + the data evenly divisible across the replicas. Default: ``False``. + + .. warning:: + In distributed mode, calling the :meth:`set_epoch` method at + the beginning of each epoch **before** creating the :class:`DataLoader` iterator + is necessary to make shuffling work properly across multiple epochs. Otherwise, + the same ordering will be always used. + + Example:: + + >>> # xdoctest: +SKIP + >>> sampler = DistributedSampler(dataset) if is_distributed else None + >>> loader = DataLoader(dataset, shuffle=(sampler is None), + ... sampler=sampler) + >>> for epoch in range(start_epoch, n_epochs): + ... if is_distributed: + ... sampler.set_epoch(epoch) + ... train(loader) + """ + + def __init__( + self, + dataset: Dataset, + num_replicas: int | None = None, + rank: int | None = None, + shuffle: bool = True, + seed: int = 0, + drop_last: bool = False, + ) -> None: + if num_replicas is None: + if not dist.is_available(): + raise RuntimeError("Requires distributed package to be available") + num_replicas = dist.get_world_size() + if rank is None: + if not dist.is_available(): + raise RuntimeError("Requires distributed package to be available") + rank = dist.get_rank() + if rank >= num_replicas or rank < 0: + raise ValueError( + f"Invalid rank {rank}, rank should be in the interval [0, {num_replicas - 1}]" + ) + self.dataset = dataset + self.num_replicas = num_replicas + self.rank = rank + self.epoch = 0 + self.drop_last = drop_last + # If the dataset length is evenly divisible by # of replicas, then there + # is no need to drop any data, since the dataset will be split equally. + if self.drop_last and len(self.dataset) % self.num_replicas != 0: # type: ignore[arg-type] + # Split to nearest available length that is evenly divisible. + # This is to ensure each rank receives the same amount of data when + # using this Sampler. + self.num_samples = math.ceil( + (len(self.dataset) - self.num_replicas) / self.num_replicas # type: ignore[arg-type] + ) + else: + self.num_samples = math.ceil(len(self.dataset) / self.num_replicas) # type: ignore[arg-type] + self.total_size = self.num_samples * self.num_replicas + self.shuffle = shuffle + self.seed = seed + + def __iter__(self) -> Iterator[_T_co]: + if self.shuffle: + # deterministically shuffle based on epoch and seed + g = torch.Generator() + g.manual_seed(self.seed + self.epoch) + indices = torch.randperm(len(self.dataset), generator=g).tolist() # type: ignore[arg-type] + else: + indices = list(range(len(self.dataset))) # type: ignore[arg-type] + + if not self.drop_last: + # add extra samples to make it evenly divisible + padding_size = self.total_size - len(indices) + if padding_size <= len(indices): + indices += indices[:padding_size] + else: + indices += (indices * math.ceil(padding_size / len(indices)))[ + :padding_size + ] + else: + # remove tail of data to make it evenly divisible. + indices = indices[: self.total_size] + if len(indices) != self.total_size: + raise AssertionError( + f"Number of indices ({len(indices)}) does not match total_size ({self.total_size})" + ) + + # subsample + indices = indices[self.rank : self.total_size : self.num_replicas] + if len(indices) != self.num_samples: + raise AssertionError( + f"Number of subsampled indices ({len(indices)}) does not match num_samples ({self.num_samples})" + ) + + # pyrefly: ignore [bad-return] + return iter(indices) + + def __len__(self) -> int: + return self.num_samples + + def set_epoch(self, epoch: int) -> None: + r""" + Set the epoch for this sampler. + + When :attr:`shuffle=True`, this ensures all replicas + use a different random ordering for each epoch. Otherwise, the next iteration of this + sampler will yield the same ordering. + + Args: + epoch (int): Epoch number. + """ + self.epoch = epoch diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/graph.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/graph.py new file mode 100644 index 0000000000000000000000000000000000000000..3f8dbb17ceaea9c61f46af7ce29666361f45094b --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/graph.py @@ -0,0 +1,163 @@ +# mypy: allow-untyped-defs +import io +import pickle +import warnings +from collections.abc import Collection + +from torch.utils._import_utils import dill_available +from torch.utils.data.datapipes.datapipe import IterDataPipe, MapDataPipe + + +__all__ = ["traverse", "traverse_dps"] + +DataPipe = IterDataPipe | MapDataPipe +# pyrefly: ignore [invalid-type-alias] +DataPipeGraph = dict[int, tuple[DataPipe, "DataPipeGraph"]] + + +def _stub_unpickler() -> str: + return "STUB" + + +# TODO(VitalyFedyunin): Make sure it works without dill module installed +def _list_connected_datapipes( + scan_obj: DataPipe, only_datapipe: bool, cache: set[int] +) -> list[DataPipe]: + f = io.BytesIO() + p = pickle.Pickler( + f + ) # Not going to work for lambdas, but dill infinite loops on typing and can't be used as is + if dill_available(): + from dill import Pickler as dill_Pickler + + d = dill_Pickler(f) + else: + d = None + + captured_connections = [] + + def getstate_hook(ori_state): + state = None + if isinstance(ori_state, dict): + state = {} + for k, v in ori_state.items(): + if isinstance(v, (IterDataPipe, MapDataPipe, Collection)): + state[k] = v + elif isinstance(ori_state, (tuple, list)): + state = [] # type: ignore[assignment] + for v in ori_state: + if isinstance(v, (IterDataPipe, MapDataPipe, Collection)): + state.append(v) # type: ignore[attr-defined] + elif isinstance(ori_state, (IterDataPipe, MapDataPipe, Collection)): + state = ori_state # type: ignore[assignment] + return state + + def reduce_hook(obj): + if obj == scan_obj or id(obj) in cache: + raise NotImplementedError + else: + captured_connections.append(obj) + # Adding id to remove duplicate DataPipe serialized at the same level + cache.add(id(obj)) + return _stub_unpickler, () + + datapipe_classes: tuple[type[DataPipe]] = (IterDataPipe, MapDataPipe) # type: ignore[assignment] + + try: + for cls in datapipe_classes: + cls.set_reduce_ex_hook(reduce_hook) + if only_datapipe: + cls.set_getstate_hook(getstate_hook) + try: + p.dump(scan_obj) + except (pickle.PickleError, AttributeError, TypeError): + if dill_available(): + # pyrefly: ignore [missing-attribute] + d.dump(scan_obj) + else: + raise + finally: + for cls in datapipe_classes: + cls.set_reduce_ex_hook(None) + if only_datapipe: + cls.set_getstate_hook(None) + if dill_available(): + from dill import extend as dill_extend + + dill_extend(False) # Undo change to dispatch table + return captured_connections + + +def traverse_dps(datapipe: DataPipe) -> DataPipeGraph: + r""" + Traverse the DataPipes and their attributes to extract the DataPipe graph. + + This only looks into the attribute from each DataPipe that is either a + DataPipe and a Python collection object such as ``list``, ``tuple``, + ``set`` and ``dict``. + + Args: + datapipe: the end DataPipe of the graph + Returns: + A graph represented as a nested dictionary, where keys are ids of DataPipe instances + and values are tuples of DataPipe instance and the sub-graph + """ + cache: set[int] = set() + return _traverse_helper(datapipe, only_datapipe=True, cache=cache) + + +def traverse(datapipe: DataPipe, only_datapipe: bool | None = None) -> DataPipeGraph: + r""" + Traverse the DataPipes and their attributes to extract the DataPipe graph. + + [Deprecated] + When ``only_dataPipe`` is specified as ``True``, it would only look into the + attribute from each DataPipe that is either a DataPipe and a Python collection object + such as ``list``, ``tuple``, ``set`` and ``dict``. + + Note: + This function is deprecated. Please use `traverse_dps` instead. + + Args: + datapipe: the end DataPipe of the graph + only_datapipe: If ``False`` (default), all attributes of each DataPipe are traversed. + This argument is deprecating and will be removed after the next release. + Returns: + A graph represented as a nested dictionary, where keys are ids of DataPipe instances + and values are tuples of DataPipe instance and the sub-graph + """ + msg = ( + "`traverse` function and will be removed after 1.13. " + "Please use `traverse_dps` instead." + ) + if not only_datapipe: + msg += " And, the behavior will be changed to the equivalent of `only_datapipe=True`." + warnings.warn(msg, FutureWarning, stacklevel=2) + if only_datapipe is None: + only_datapipe = False + cache: set[int] = set() + return _traverse_helper(datapipe, only_datapipe, cache) + + +# Add cache here to prevent infinite recursion on DataPipe +def _traverse_helper( + datapipe: DataPipe, only_datapipe: bool, cache: set[int] +) -> DataPipeGraph: + if not isinstance(datapipe, (IterDataPipe, MapDataPipe)): + raise RuntimeError( + f"Expected `IterDataPipe` or `MapDataPipe`, but {type(datapipe)} is found" + ) + + dp_id = id(datapipe) + if dp_id in cache: + return {} + cache.add(dp_id) + # Using cache.copy() here is to prevent the same DataPipe pollutes the cache on different paths + items = _list_connected_datapipes(datapipe, only_datapipe, cache.copy()) + d: DataPipeGraph = {dp_id: (datapipe, {})} + for item in items: + # Using cache.copy() here is to prevent recursion on a single path rather than global graph + # Single DataPipe can present multiple times in different paths in graph + # pyrefly: ignore [no-matching-overload] + d[dp_id][1].update(_traverse_helper(item, only_datapipe, cache.copy())) + return d diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/graph_settings.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/graph_settings.py new file mode 100644 index 0000000000000000000000000000000000000000..03096398a6738b29c22aad044caaf16e4c45a7d0 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/graph_settings.py @@ -0,0 +1,173 @@ +# mypy: allow-untyped-defs +import inspect +import warnings +from typing import Any +from typing_extensions import deprecated + +import torch +from torch.utils.data.datapipes.iter.sharding import ( + _ShardingIterDataPipe, + SHARDING_PRIORITIES, +) +from torch.utils.data.graph import DataPipe, DataPipeGraph, traverse_dps + + +__all__ = [ + "apply_random_seed", + "apply_sharding", + "apply_shuffle_seed", + "apply_shuffle_settings", + "get_all_graph_pipes", +] + + +def get_all_graph_pipes(graph: DataPipeGraph) -> list[DataPipe]: + return _get_all_graph_pipes_helper(graph, set()) + + +def _get_all_graph_pipes_helper( + graph: DataPipeGraph, id_cache: set[int] +) -> list[DataPipe]: + results: list[DataPipe] = [] + for dp_id, (datapipe, sub_graph) in graph.items(): + if dp_id in id_cache: + continue + id_cache.add(dp_id) + results.append(datapipe) + results.extend(_get_all_graph_pipes_helper(sub_graph, id_cache)) + return results + + +def _is_sharding_datapipe(datapipe: DataPipe) -> bool: + return isinstance(datapipe, _ShardingIterDataPipe) or ( + hasattr(datapipe, "apply_sharding") + and inspect.ismethod(datapipe.apply_sharding) + ) + + +def apply_sharding( + datapipe: DataPipe, + num_of_instances: int, + instance_id: int, + sharding_group=SHARDING_PRIORITIES.DEFAULT, +) -> DataPipe: + r""" + Apply dynamic sharding over the ``sharding_filter`` DataPipe that has a method ``apply_sharding``. + + RuntimeError will be raised when multiple ``sharding_filter`` are presented in the same branch. + """ + graph = traverse_dps(datapipe) + + def _helper(graph, prev_applied=None) -> None: + for dp, sub_graph in graph.values(): + applied = None + if _is_sharding_datapipe(dp): + if prev_applied is not None: + raise RuntimeError( + "Sharding twice on a single pipeline is likely unintended and will cause data loss. " + f"Sharding already applied to {prev_applied} while trying to apply to {dp}" + ) + # For BC, only provide sharding_group if accepted + sig = inspect.signature(dp.apply_sharding) + if len(sig.parameters) < 3: + dp.apply_sharding(num_of_instances, instance_id) + else: + dp.apply_sharding( + num_of_instances, instance_id, sharding_group=sharding_group + ) + applied = dp + if applied is None: + applied = prev_applied + _helper(sub_graph, applied) + + _helper(graph) + + return datapipe + + +def _is_shuffle_datapipe(datapipe: DataPipe) -> bool: + return ( + hasattr(datapipe, "set_shuffle") + and hasattr(datapipe, "set_seed") + and inspect.ismethod(datapipe.set_shuffle) + and inspect.ismethod(datapipe.set_seed) + ) + + +def apply_shuffle_settings(datapipe: DataPipe, shuffle: bool | None = None) -> DataPipe: + r""" + Traverse the graph of ``DataPipes`` to find and set shuffle attribute. + + Apply the method to each `DataPipe` that has APIs of ``set_shuffle`` + and ``set_seed``. + + Args: + datapipe: DataPipe that needs to set shuffle attribute + shuffle: Shuffle option (default: ``None`` and no-op to the graph) + """ + if shuffle is None: + return datapipe + + graph = traverse_dps(datapipe) + all_pipes = get_all_graph_pipes(graph) + shufflers = [pipe for pipe in all_pipes if _is_shuffle_datapipe(pipe)] + if not shufflers and shuffle: + warnings.warn( + "`shuffle=True` was set, but the datapipe does not contain a `Shuffler`. Adding one at the end. " + "Be aware that the default buffer size might not be sufficient for your task.", + stacklevel=2, + ) + datapipe = datapipe.shuffle() + shufflers = [ + datapipe, + ] + + for shuffler in shufflers: + shuffler.set_shuffle(shuffle) + + return datapipe + + +@deprecated( + "`apply_shuffle_seed` is deprecated since 1.12 and will be removed in the future releases. " + "Please use `apply_random_seed` instead.", + category=FutureWarning, +) +def apply_shuffle_seed(datapipe: DataPipe, rng: Any) -> DataPipe: + return apply_random_seed(datapipe, rng) + + +def _is_random_datapipe(datapipe: DataPipe) -> bool: + return hasattr(datapipe, "set_seed") and inspect.ismethod(datapipe.set_seed) + + +def apply_random_seed(datapipe: DataPipe, rng: torch.Generator) -> DataPipe: + r""" + Traverse the graph of ``DataPipes`` to find random ``DataPipe`` with an API of ``set_seed``. + + Then set the random seed based on the provided RNG to those ``DataPipe``. + + Args: + datapipe: DataPipe that needs to set randomness + rng: Random number generator to generate random seeds + """ + graph = traverse_dps(datapipe) + all_pipes = get_all_graph_pipes(graph) + # Using a set to track id of DataPipe to prevent setting randomness per DataPipe more than once. + # And, `id` is used in case of unhashable DataPipe + cache = set() + random_datapipes = [] + for pipe in all_pipes: + if id(pipe) in cache: + continue + if _is_random_datapipe(pipe): + random_datapipes.append(pipe) + cache.add(id(pipe)) + + for pipe in random_datapipes: + random_seed = int( + torch.empty((), dtype=torch.int64).random_(generator=rng).item() + ) + pipe.set_seed(random_seed) + + return datapipe diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/sampler.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/sampler.py new file mode 100644 index 0000000000000000000000000000000000000000..aa13bb8e0a3e146bd7bfbc766fdfcb822efa9313 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/data/sampler.py @@ -0,0 +1,354 @@ +# mypy: allow-untyped-defs +import itertools +from collections.abc import Iterable, Iterator, Sequence, Sized +from typing import Generic, TypeVar + +import torch + + +# Note: For benchmarking changes to samplers, see: +# /benchmarks/data/samplers_bench.py +# This benchmark compares the performance of different sampler implementations +# and can be used to evaluate the impact of optimizations. + + +__all__ = [ + "BatchSampler", + "RandomSampler", + "Sampler", + "SequentialSampler", + "SubsetRandomSampler", + "WeightedRandomSampler", +] + + +_T_co = TypeVar("_T_co", covariant=True) + + +class Sampler(Generic[_T_co]): + r"""Base class for all Samplers. + + Every Sampler subclass has to provide an :meth:`__iter__` method, providing a + way to iterate over indices or lists of indices (batches) of dataset elements, + and may provide a :meth:`__len__` method that returns the length of the returned iterators. + + Example: + >>> # xdoctest: +SKIP + >>> class AccedingSequenceLengthSampler(Sampler[int]): + >>> def __init__(self, data: List[str]) -> None: + >>> self.data = data + >>> + >>> def __len__(self) -> int: + >>> return len(self.data) + >>> + >>> def __iter__(self) -> Iterator[int]: + >>> sizes = torch.tensor([len(x) for x in self.data]) + >>> yield from torch.argsort(sizes).tolist() + >>> + >>> class AccedingSequenceLengthBatchSampler(Sampler[List[int]]): + >>> def __init__(self, data: List[str], batch_size: int) -> None: + >>> self.data = data + >>> self.batch_size = batch_size + >>> + >>> def __len__(self) -> int: + >>> return (len(self.data) + self.batch_size - 1) // self.batch_size + >>> + >>> def __iter__(self) -> Iterator[List[int]]: + >>> sizes = torch.tensor([len(x) for x in self.data]) + >>> for batch in torch.chunk(torch.argsort(sizes), len(self)): + >>> yield batch.tolist() + + .. note:: The :meth:`__len__` method isn't strictly required by + :class:`~torch.utils.data.DataLoader`, but is expected in any + calculation involving the length of a :class:`~torch.utils.data.DataLoader`. + """ + + def __iter__(self) -> Iterator[_T_co]: + raise NotImplementedError + + # NOTE [ Lack of Default `__len__` in Python Abstract Base Classes ] + # + # Many times we have an abstract class representing a collection/iterable of + # data, e.g., `torch.utils.data.Sampler`, with its subclasses optionally + # implementing a `__len__` method. In such cases, we must make sure to not + # provide a default implementation, because both straightforward default + # implementations have their issues: + # + # + `return NotImplemented`: + # Calling `len(subclass_instance)` raises: + # TypeError: 'NotImplementedType' object cannot be interpreted as an integer + # + # + `raise NotImplementedError`: + # This prevents triggering some fallback behavior. E.g., the built-in + # `list(X)` tries to call `len(X)` first, and executes a different code + # path if the method is not found or `NotImplemented` is returned, while + # raising a `NotImplementedError` will propagate and make the call fail + # where it could have used `__iter__` to complete the call. + # + # Thus, the only two sensible things to do are + # + # + **not** provide a default `__len__`. + # + # + raise a `TypeError` instead, which is what Python uses when users call + # a method that is not defined on an object. + # (@ssnl verifies that this works on at least Python 3.7.) + + +class SequentialSampler(Sampler[int]): + r"""Samples elements sequentially, always in the same order. + + Args: + data_source (Sized): data source to sample from. Must implement __len__. + """ + + data_source: Sized + + def __init__(self, data_source: Sized) -> None: + self.data_source = data_source + + def __iter__(self) -> Iterator[int]: + return iter(range(len(self.data_source))) + + def __len__(self) -> int: + return len(self.data_source) + + +class RandomSampler(Sampler[int]): + r"""Samples elements randomly. If without replacement, then sample from a shuffled dataset. + + If with replacement, then user can specify :attr:`num_samples` to draw. + + Args: + data_source (Sized): data source to sample from. Must implement __len__. + replacement (bool): samples are drawn on-demand with replacement if ``True``, default=``False`` + num_samples (int): number of samples to draw, default=`len(dataset)`. + generator (Generator): Generator used in sampling. + """ + + data_source: Sized + replacement: bool + + def __init__( + self, + data_source: Sized, + replacement: bool = False, + num_samples: int | None = None, + generator=None, + ) -> None: + self.data_source = data_source + self.replacement = replacement + self._num_samples = num_samples + self.generator = generator + + if not isinstance(self.replacement, bool): + raise TypeError( + f"replacement should be a boolean value, but got replacement={self.replacement}" + ) + + if not isinstance(self.num_samples, int) or self.num_samples <= 0: + raise ValueError( + f"num_samples should be a positive integer value, but got num_samples={self.num_samples}" + ) + + @property + def num_samples(self) -> int: + # dataset size might change at runtime + if self._num_samples is None: + return len(self.data_source) + return self._num_samples + + def __iter__(self) -> Iterator[int]: + n = len(self.data_source) + if self.generator is None: + seed = int(torch.empty((), dtype=torch.int64).random_().item()) + generator = torch.Generator() + generator.manual_seed(seed) + else: + generator = self.generator + + if self.replacement: + for _ in range(self.num_samples // 32): + yield from torch.randint( + high=n, size=(32,), dtype=torch.int64, generator=generator + ).tolist() + yield from torch.randint( + high=n, + size=(self.num_samples % 32,), + dtype=torch.int64, + generator=generator, + ).tolist() + else: + for _ in range(self.num_samples // n): + yield from torch.randperm(n, generator=generator).tolist() + yield from torch.randperm(n, generator=generator).tolist()[ + : self.num_samples % n + ] + + def __len__(self) -> int: + return self.num_samples + + +class SubsetRandomSampler(Sampler[int]): + r"""Samples elements randomly from a given list of indices, without replacement. + + Args: + indices (sequence): a sequence of indices + generator (Generator): Generator used in sampling. + """ + + indices: Sequence[int] + + def __init__(self, indices: Sequence[int], generator=None) -> None: + self.indices = indices + self.generator = generator + + def __iter__(self) -> Iterator[int]: + for i in torch.randperm(len(self.indices), generator=self.generator).tolist(): + yield self.indices[i] + + def __len__(self) -> int: + return len(self.indices) + + +class WeightedRandomSampler(Sampler[int]): + r"""Samples elements from ``[0,..,len(weights)-1]`` with given probabilities (weights). + + Args: + weights (sequence) : a sequence of weights, not necessary summing up to one + num_samples (int): number of samples to draw + replacement (bool): if ``True``, samples are drawn with replacement. + If not, they are drawn without replacement, which means that when a + sample index is drawn for a row, it cannot be drawn again for that row. + generator (Generator): Generator used in sampling. + + Example: + >>> # xdoctest: +IGNORE_WANT("non-deterministic") + >>> list( + ... WeightedRandomSampler( + ... [0.1, 0.9, 0.4, 0.7, 3.0, 0.6], 5, replacement=True + ... ) + ... ) + [4, 4, 1, 4, 5] + >>> list( + ... WeightedRandomSampler( + ... [0.9, 0.4, 0.05, 0.2, 0.3, 0.1], 5, replacement=False + ... ) + ... ) + [0, 1, 4, 3, 2] + """ + + weights: torch.Tensor + num_samples: int + replacement: bool + + def __init__( + self, + weights: Sequence[float], + num_samples: int, + replacement: bool = True, + generator=None, + ) -> None: + if ( + not isinstance(num_samples, int) + or isinstance(num_samples, bool) + or num_samples <= 0 + ): + raise ValueError( + f"num_samples should be a positive integer value, but got num_samples={num_samples}" + ) + if not isinstance(replacement, bool): + raise ValueError( + f"replacement should be a boolean value, but got replacement={replacement}" + ) + + weights_tensor = torch.as_tensor(weights, dtype=torch.double) + if len(weights_tensor.shape) != 1: + raise ValueError( + "weights should be a 1d sequence but given " + f"weights have shape {tuple(weights_tensor.shape)}" + ) + + self.weights = weights_tensor + self.num_samples = num_samples + self.replacement = replacement + self.generator = generator + + def __iter__(self) -> Iterator[int]: + rand_tensor = torch.multinomial( + self.weights, self.num_samples, self.replacement, generator=self.generator + ) + yield from iter(rand_tensor.tolist()) + + def __len__(self) -> int: + return self.num_samples + + +class BatchSampler(Sampler[list[int]]): + r"""Wraps another sampler to yield a mini-batch of indices. + + Args: + sampler (Sampler or Iterable): Base sampler. Can be any iterable object + batch_size (int): Size of mini-batch. + drop_last (bool): If ``True``, the sampler will drop the last batch if + its size would be less than ``batch_size`` + + Example: + >>> list( + ... BatchSampler( + ... SequentialSampler(range(10)), batch_size=3, drop_last=False + ... ) + ... ) + [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9]] + >>> list( + ... BatchSampler(SequentialSampler(range(10)), batch_size=3, drop_last=True) + ... ) + [[0, 1, 2], [3, 4, 5], [6, 7, 8]] + """ + + def __init__( + self, + sampler: Sampler[int] | Iterable[int], + batch_size: int, + drop_last: bool, + ) -> None: + # Since collections.abc.Iterable does not check for `__getitem__`, which + # is one way for an object to be an iterable, we don't do an `isinstance` + # check here. + if ( + not isinstance(batch_size, int) + or isinstance(batch_size, bool) + or batch_size <= 0 + ): + raise ValueError( + f"batch_size should be a positive integer value, but got batch_size={batch_size}" + ) + if not isinstance(drop_last, bool): + raise ValueError( + f"drop_last should be a boolean value, but got drop_last={drop_last}" + ) + self.sampler = sampler + self.batch_size = batch_size + self.drop_last = drop_last + + def __iter__(self) -> Iterator[list[int]]: + sampler_iter = iter(self.sampler) + if self.drop_last: + # Create multiple references to the same iterator + args = [sampler_iter] * self.batch_size + for batch_droplast in zip(*args, strict=False): + yield [*batch_droplast] + else: + batch = [*itertools.islice(sampler_iter, self.batch_size)] + while batch: + yield batch + batch = [*itertools.islice(sampler_iter, self.batch_size)] + + def __len__(self) -> int: + # Can only be called if self.sampler has __len__ implemented + # We cannot enforce this condition, so we turn off typechecking for the + # implementation below. + # Somewhat related: see NOTE [ Lack of Default `__len__` in Python Abstract Base Classes ] + if self.drop_last: + return len(self.sampler) // self.batch_size # type: ignore[arg-type] + else: + return (len(self.sampler) + self.batch_size - 1) // self.batch_size # type: ignore[arg-type] diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/deterministic.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/deterministic.py new file mode 100644 index 0000000000000000000000000000000000000000..a055c43be531a5c65c4f29f6c8165104e98e5ca0 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/deterministic.py @@ -0,0 +1,22 @@ +# mypy: allow-untyped-defs +import sys +import types + +import torch + + +class _Deterministic(types.ModuleType): + @property + def fill_uninitialized_memory(self): + """ + Whether to fill uninitialized memory with a known value when + :meth:`torch.use_deterministic_algorithms()` is set to ``True``. + """ + return torch._C._get_deterministic_fill_uninitialized_memory() + + @fill_uninitialized_memory.setter + def fill_uninitialized_memory(self, mode): + return torch._C._set_deterministic_fill_uninitialized_memory(mode) + + +sys.modules[__name__].__class__ = _Deterministic diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/dlpack.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/dlpack.py new file mode 100644 index 0000000000000000000000000000000000000000..aef32100ee7105d364f0e144dc1cf2e0368f7767 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/dlpack.py @@ -0,0 +1,231 @@ +from typing import Any + +import torch +import enum + +from torch._C import _to_dlpack as to_dlpack +from torch.types import Device as _Device + +__all__ = [ + "DLDeviceType", + "from_dlpack", +] + +class DLDeviceType(enum.IntEnum): + # Enums as in DLPack specification (aten/src/ATen/dlpack.h) + kDLCPU = 1, + kDLCUDA = 2, + kDLCUDAHost = 3, + kDLOpenCL = 4, + kDLVulkan = 7, + kDLMetal = 8, + kDLVPI = 9, + kDLROCM = 10, + kDLROCMHost = 11, + kDLExtDev = 12, + kDLCUDAManaged = 13, + kDLOneAPI = 14, + kDLWebGPU = 15, + kDLHexagon = 16, + kDLMAIA = 17, + + +torch._C._add_docstr(to_dlpack, r"""to_dlpack(tensor) -> PyCapsule + +Returns an opaque object (a "DLPack capsule") representing the tensor. + +.. note:: + ``to_dlpack`` is a legacy DLPack interface. The capsule it returns + cannot be used for anything in Python other than use it as input to + ``from_dlpack``. The more idiomatic use of DLPack is to call + ``from_dlpack`` directly on the tensor object - this works when that + object has a ``__dlpack__`` method, which PyTorch and most other + libraries indeed have now. + +.. warning:: + Only call ``from_dlpack`` once per capsule produced with ``to_dlpack``. + Behavior when a capsule is consumed multiple times is undefined. + +Args: + tensor: a tensor to be exported + +The DLPack capsule shares the tensor's memory. +""") + + +# TODO: add a typing.Protocol to be able to tell Mypy that only objects with +# __dlpack__ and __dlpack_device__ methods are accepted. +def from_dlpack( + ext_tensor: Any, + *, + device: _Device | None = None, + copy: bool | None = None +) -> 'torch.Tensor': + """from_dlpack(ext_tensor) -> Tensor + + Converts a tensor from an external library into a ``torch.Tensor``. + + The returned PyTorch tensor will share the memory with the input tensor + (which may have come from another library). Note that in-place operations + will therefore also affect the data of the input tensor. This may lead to + unexpected issues (e.g., other libraries may have read-only flags or + immutable data structures), so the user should only do this if they know + for sure that this is fine. + + Args: + ext_tensor (object with ``__dlpack__`` attribute, or a DLPack capsule): + The tensor or DLPack capsule to convert. + + If ``ext_tensor`` is a tensor (or ndarray) object, it must support + the ``__dlpack__`` protocol (i.e., have a ``ext_tensor.__dlpack__`` + method). Otherwise ``ext_tensor`` may be a DLPack capsule, which is + an opaque ``PyCapsule`` instance, typically produced by a + ``to_dlpack`` function or method. + + device (torch.device or str or None): An optional PyTorch device + specifying where to place the new tensor. If None (default), the + new tensor will be on the same device as ``ext_tensor``. + + copy (bool or None): An optional boolean indicating whether or not to copy + ``self``. If None, PyTorch will copy only if necessary. + + Examples:: + + >>> import torch.utils.dlpack + >>> t = torch.arange(4) + + # Convert a tensor directly (supported in PyTorch >= 1.10) + >>> t2 = torch.from_dlpack(t) + >>> t2[:2] = -1 # show that memory is shared + >>> t2 + tensor([-1, -1, 2, 3]) + >>> t + tensor([-1, -1, 2, 3]) + + # The old-style DLPack usage, with an intermediate capsule object + >>> capsule = torch.utils.dlpack.to_dlpack(t) + >>> capsule + + >>> t3 = torch.from_dlpack(capsule) + >>> t3 + tensor([-1, -1, 2, 3]) + >>> t3[0] = -9 # now we're sharing memory between 3 tensors + >>> t3 + tensor([-9, -1, 2, 3]) + >>> t2 + tensor([-9, -1, 2, 3]) + >>> t + tensor([-9, -1, 2, 3]) + + """ + + if hasattr(ext_tensor, '__dlpack__'): + # Only populate kwargs if any of the optional arguments are, in fact, not None. Otherwise, + # leave them out, since we might end up falling back to no-extra-kwargs __dlpack__ call. + kwargs: dict[str, Any] = {} + kwargs["max_version"] = (1, 0) + + # Track copy request for potential manual handling + requested_copy = copy + producer_handled_copy = True + cross_device_transfer = False # Will be set to True if device transfer is needed + + if copy is not None: + kwargs["copy"] = copy + + # Parse the device parameter. + # At this moment, it can either be a torch.device or a str representing + # a torch.device, e.g. "cpu", "cuda", etc. + # Get source device first (we need it to detect cross-device transfers) + ext_device = ext_tensor.__dlpack_device__() + + if device is not None: + if isinstance(device, str): + device = torch.device(device) + if not isinstance(device, torch.device): + raise AssertionError(f"from_dlpack: unsupported device type: {type(device)}") + + # Convert target device to DLPack format + target_dl_device = torch._C._torchDeviceToDLDevice(device) + + # Detect cross-device transfer by comparing source and target devices + # E.g. CPU->CUDA, cuda:0->cuda:1, etc. + cross_device_transfer = (ext_device != target_dl_device) + + # Only pass dl_device to producer if NOT cross-device transfer + if not cross_device_transfer: + kwargs["dl_device"] = target_dl_device + + # Cross-device transfer always requires a copy + if cross_device_transfer and copy is False: + raise ValueError( + f"cannot move DLPack tensor from device {ext_device} to {target_dl_device} " + "without copying. Set copy=None or copy=True." + ) + + # ext_device is either CUDA or ROCm, we need to pass the current + # stream + if ext_device[0] in (DLDeviceType.kDLCUDA, DLDeviceType.kDLROCM): + stream = torch.cuda.current_stream(f'cuda:{ext_device[1]}') + # cuda_stream is the pointer to the stream and it is a public + # attribute, but it is not documented + # The array API specify that the default legacy stream must be passed + # with a value of 1 for CUDA + # https://data-apis.org/array-api/latest/API_specification/array_object.html?dlpack-self-stream-none#dlpack-self-stream-none + is_cuda = ext_device[0] == DLDeviceType.kDLCUDA + # Since pytorch is not using PTDS by default, lets directly pass + # the legacy stream + stream_ptr = 1 if is_cuda and stream.cuda_stream == 0 else stream.cuda_stream + kwargs["stream"] = stream_ptr + + # Try different parameter combinations until one works + dlpack = None + + # Attempt 1: Try with all the parameters + try: + dlpack = ext_tensor.__dlpack__(**kwargs) + except TypeError: + pass + + # Attempt 2: Remove max_version + if dlpack is None: + kwargs.pop("max_version", None) + try: + dlpack = ext_tensor.__dlpack__(**kwargs) + except TypeError: + pass + + # Attempt 3: Remove copy + if dlpack is None: + kwargs.pop("copy", None) + producer_handled_copy = False + try: + dlpack = ext_tensor.__dlpack__(**kwargs) + except TypeError: + pass + + # Attempt 4: Remove dl_device + if dlpack is None: + kwargs.pop("dl_device", None) + dlpack = ext_tensor.__dlpack__(**kwargs) + + tensor = torch._C._from_dlpack(dlpack) + + # Manual copy if producer didn't handle it (cross-device already copies via .to()) + if requested_copy is True and not producer_handled_copy and not cross_device_transfer: + tensor = tensor.clone() + + # Handle cross-device transfer by moving tensor to target device + if cross_device_transfer: + tensor = tensor.to(device) + + return tensor + + else: + if device is not None or copy is not None: + raise AssertionError( + "device and copy kwargs not supported when ext_tensor is already a DLPack capsule." + ) + # Old versions just call the converter + dlpack = ext_tensor + return torch._C._from_dlpack(dlpack) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/file_baton.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/file_baton.py new file mode 100644 index 0000000000000000000000000000000000000000..74de1495c8fc572cfc350966f6f0b7997fde7ad1 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/file_baton.py @@ -0,0 +1,63 @@ +# mypy: allow-untyped-defs +import os +import time +import warnings + + +class FileBaton: + """A primitive, file-based synchronization utility.""" + + def __init__(self, lock_file_path, wait_seconds=0.1, warn_after_seconds=None) -> None: + """ + Create a new :class:`FileBaton`. + + Args: + lock_file_path: The path to the file used for locking. + wait_seconds: The seconds to periodically sleep (spin) when + calling ``wait()``. + warn_after_seconds: The seconds to wait before showing + lock file path to warn existing lock file. + """ + self.lock_file_path = lock_file_path + self.wait_seconds = wait_seconds + self.fd = None + self.warn_after_seconds = warn_after_seconds + + def try_acquire(self) -> bool | None: + """ + Try to atomically create a file under exclusive access. + + Returns: + True if the file could be created, else False. + """ + try: + self.fd = os.open(self.lock_file_path, os.O_CREAT | os.O_EXCL) + return True + except FileExistsError: + return False + + def wait(self) -> None: + """ + Periodically sleeps for a certain amount until the baton is released. + + The amount of time slept depends on the ``wait_seconds`` parameter + passed to the constructor. + """ + has_warned = False + + start_time = time.time() + while os.path.exists(self.lock_file_path): + time.sleep(self.wait_seconds) + + if self.warn_after_seconds is not None: + if time.time() - start_time > self.warn_after_seconds and not has_warned: + warnings.warn(f'Waited on lock file "{self.lock_file_path}" for ' + f'{self.warn_after_seconds} seconds.', stacklevel=2) + has_warned = True + + def release(self) -> None: + """Release the baton and removes its file.""" + if self.fd is not None: + os.close(self.fd) + + os.remove(self.lock_file_path) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/flop_counter.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/flop_counter.py new file mode 100644 index 0000000000000000000000000000000000000000..5f015a32f9c313c06a7274a7b38c82e5a0b4c362 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/flop_counter.py @@ -0,0 +1,1017 @@ +# mypy: allow-untyped-defs +from types import NoneType +import logging +import torch +from torch.utils._pytree import tree_map, tree_flatten, tree_unflatten +from .module_tracker import ModuleTracker +from typing import Any, TypeVar +from collections.abc import Callable +from collections.abc import Iterator +from typing_extensions import ParamSpec +from collections import defaultdict +from torch.utils._python_dispatch import TorchDispatchMode +from math import prod +from functools import wraps +import warnings + +__all__ = ["FlopCounterMode", "register_flop_formula"] + +_T = TypeVar("_T") +_P = ParamSpec("_P") + +log = logging.getLogger(__name__) + + +try: + from triton.runtime.jit import JITFunction as _JITFunction +except ImportError: + if any(getattr(torch.version, attr, None) is not None for attr in ["cuda", "hip", "xpu"]): + log.warning("triton not found; flop counting will not work for triton kernels") + _JITFunction = NoneType + + +aten = torch.ops.aten + +def get_shape(i): + if isinstance(i, torch.Tensor): + return i.shape + return i + +flop_registry: dict[Any, Any] = {} + +def shape_wrapper(f): + @wraps(f) + def nf(*args, out_val=None, **kwargs): + args, kwargs, out_shape = tree_map(get_shape, (args, kwargs, out_val)) + return f(*args, out_shape=out_shape, **kwargs) + return nf + +def register_flop_formula(targets, get_raw=False) -> Callable[[Callable[_P, _T]], Callable[_P, _T]]: + + def register_fun(flop_formula: Callable[_P, _T]) -> Callable[_P, _T]: + if not get_raw: + flop_formula = shape_wrapper(flop_formula) + + def register(target) -> None: + if not (isinstance(target, (torch._ops.OpOverloadPacket, _JITFunction))): + raise ValueError( + f"register_flop_formula(targets): expected each target to be " + f"OpOverloadPacket (i.e. torch.ops.mylib.foo), or JitFunction" + f", got {target} which is of type {type(target)}") + if target in flop_registry: + raise RuntimeError(f"duplicate registrations for {target}") + flop_registry[target] = flop_formula + + # To handle allowing multiple aten_ops at once + torch.utils._pytree.tree_map_(register, targets) + + return flop_formula + + return register_fun + +@register_flop_formula(aten.mm) +def mm_flop(a_shape, b_shape, *args, out_shape=None, **kwargs) -> int: + """Count flops for matmul.""" + # Inputs should be a list of length 2. + # Inputs contains the shapes of two matrices. + m, k = a_shape + k2, n = b_shape + if k != k2: + raise AssertionError(f"matmul: inner dimensions must match (k == k2), got {k} and {k2}") + # NB(chilli): Should be 2 * k - 1 technically for FLOPs. + return m * n * 2 * k + +@register_flop_formula(aten.addmm) +def addmm_flop(self_shape, a_shape, b_shape, out_shape=None, **kwargs) -> int: + """Count flops for addmm.""" + return mm_flop(a_shape, b_shape) + +@register_flop_formula(aten.bmm) +def bmm_flop(a_shape, b_shape, out_shape=None, **kwargs) -> int: + """Count flops for the bmm operation.""" + # Inputs should be a list of length 2. + # Inputs contains the shapes of two tensor. + b, m, k = a_shape + b2, k2, n = b_shape + if b != b2: + raise AssertionError(f"bmm: batch dimensions must match (b == b2), got {b} and {b2}") + if k != k2: + raise AssertionError(f"bmm: inner dimensions must match (k == k2), got {k} and {k2}") + # NB(chilli): Should be 2 * k - 1 technically for FLOPs. + flop = b * m * n * 2 * k + return flop + +@register_flop_formula(aten.baddbmm) +def baddbmm_flop(self_shape, a_shape, b_shape, out_shape=None, **kwargs) -> int: + """Count flops for the baddbmm operation.""" + # Inputs should be a list of length 3. + # Inputs contains the shapes of three tensors. + return bmm_flop(a_shape, b_shape) + +@register_flop_formula(aten._scaled_mm) +def _scaled_mm_flop( + a_shape, + b_shape, + scale_a_shape, + scale_b_shape, + bias_shape=None, + scale_result_shape=None, + out_dtype=None, + use_fast_accum=False, + out_shape=None, + **kwargs, +) -> int: + """Count flops for _scaled_mm.""" + return mm_flop(a_shape, b_shape) + + +def conv_flop_count( + x_shape: list[int], + w_shape: list[int], + out_shape: list[int], + transposed: bool = False, +) -> int: + """Count flops for convolution. + + Note only multiplication is + counted. Computation for bias are ignored. + Flops for a transposed convolution are calculated as + flops = (x_shape[2:] * prod(w_shape) * batch_size). + Args: + x_shape (list(int)): The input shape before convolution. + w_shape (list(int)): The filter shape. + out_shape (list(int)): The output shape after convolution. + transposed (bool): is the convolution transposed + Returns: + int: the number of flops + """ + batch_size = x_shape[0] + conv_shape = (x_shape if transposed else out_shape)[2:] + c_out, c_in, *filter_size = w_shape + + """ + General idea here is that for a regular conv, for each point in the output + spatial dimension we convolve the filter with something (hence + `prod(conv_shape) * prod(filter_size)` ops). Then, this gets multiplied by + 1. batch_size, 2. the cross product of input and weight channels. + + For the transpose, it's not each point in the *output* spatial dimension but + each point in the *input* spatial dimension. + """ + # NB(chilli): I don't think this properly accounts for padding :think: + # NB(chilli): Should be 2 * c_in - 1 technically for FLOPs. + flop = prod(conv_shape) * prod(filter_size) * batch_size * c_out * c_in * 2 + return flop + +@register_flop_formula([aten.convolution, + aten._convolution, + aten.cudnn_convolution, + aten._slow_conv2d_forward, + aten.convolution_overrideable]) +def conv_flop(x_shape, w_shape, _bias, _stride, _padding, _dilation, transposed, *args, out_shape=None, **kwargs) -> int: + """Count flops for convolution.""" + # pyrefly: ignore [bad-argument-type] + return conv_flop_count(x_shape, w_shape, out_shape, transposed=transposed) + + +@register_flop_formula(aten.convolution_backward) +def conv_backward_flop( + grad_out_shape, + x_shape, + w_shape, + _bias, + _stride, + _padding, + _dilation, + transposed, + _output_padding, + _groups, + output_mask, + out_shape) -> int: + + def t(shape): + return [shape[1], shape[0]] + list(shape[2:]) + flop_count = 0 + + """ + Let's say we have a regular 1D conv + {A, B, C} [inp] + {i, j} [weight] + => (conv) + {Ai + Bj, Bi + Cj} [out] + + And as a reminder, the transposed conv of the above is + => {Ai, Aj + Bi, Bj + Ci, Cj} [transposed conv out] + + For the backwards of conv, we now have + {D, E} [grad_out] + {A, B, C} [inp] + {i, j} [weight] + + # grad_inp as conv_transpose(grad_out, weight) + Let's first compute grad_inp. To do so, we can simply look at all the + multiplications that each element of inp is involved in. For example, A is + only involved in the first element of the output (and thus only depends upon + D in grad_out), and C is only involved in the last element of the output + (and thus only depends upon E in grad_out) + + {Di, Dj + Ei, Ej} [grad_inp] + + Note that this corresponds to the below conv_transpose. This gives us the + output_mask[0] branch, which is grad_inp. + + {D, E} [inp (grad_out)] + {i, j} [weight] + => (conv_transpose) + {Di, Dj + Ei, Ej} [out (grad_inp)] + + I leave the fact that grad_inp for a transposed conv is just conv(grad_out, + weight) as an exercise for the reader. + + # grad_weight as conv(inp, grad_out) + To compute grad_weight, we again look at the terms in the output, which as + a reminder is: + => {Ai + Bj, Bi + Cj} [out] + => {D, E} [grad_out] + If we manually compute the gradient for the weights, we see it's + {AD + BE, BD + CE} [grad_weight] + + This corresponds to the below conv + {A, B, C} [inp] + {D, E} [weight (grad_out)] + => (conv) + {AD + BE, BD + CE} [out (grad_weight)] + + # grad_weight of transposed conv as conv(grad_out, inp) + As a reminder, the terms of the output of a transposed conv are: + => {Ai, Aj + Bi, Bj + Ci, Cj} [transposed conv out] + => {D, E, F, G} [grad_out] + + Manually computing the gradient for the weights, we see it's + {AD + BE + CF, AE + BF + CG} [grad_weight] + + This corresponds to the below conv + {D, E, F, G} [inp (grad_out)] + {A, B, C} [weight (inp)] + => (conv) + {AD + BE + CF, AE + BF + CG} [out (grad_weight)] + + For the full backwards formula, there are also some details involving + transpose of the batch/channel dimensions and groups, but I skip those for + the sake of brevity (and they're pretty similar to matmul backwards) + + Check [conv backwards decomposition as conv forwards] + """ + # grad_inp as conv_transpose(grad_out, weight) + if output_mask[0]: + grad_input_shape = get_shape(out_shape[0]) + flop_count += conv_flop_count(grad_out_shape, w_shape, grad_input_shape, not transposed) + + if output_mask[1]: + grad_weight_shape = get_shape(out_shape[1]) + if transposed: + # grad_weight of transposed conv as conv(grad_out, inp) + flop_count += conv_flop_count(t(grad_out_shape), t(x_shape), t(grad_weight_shape), transposed=False) + else: + # grad_weight as conv(inp, grad_out) + flop_count += conv_flop_count(t(x_shape), t(grad_out_shape), t(grad_weight_shape), transposed=False) + + return flop_count + +def sdpa_flop_count(query_shape, key_shape, value_shape): + """ + Count flops for self-attention. + + Supports GQA (grouped-query attention) where key/value have fewer heads + than the query. The kernel broadcasts KV heads to match query heads. + """ + b, h_q, s_q, d_q = query_shape + _b2, h_kv, s_k, _d2 = key_shape + _b3, _h3, _s3, d_v = value_shape + if not (b == _b2 == _b3 and h_kv == _h3 and d_q == _d2 and s_k == _s3): + raise AssertionError( + f"sdpa_flop_count: query/key/value shapes are incompatible: " + f"q={query_shape}, k={key_shape}, v={value_shape}" + ) + if h_q < h_kv or h_q % h_kv != 0: + raise AssertionError( + f"sdpa_flop_count: query heads ({h_q}) must be a multiple of " + f"key/value heads ({h_kv})" + ) + total_flops = 0 + # q: [b, h_q, s_q, d_q] @ k: [b, h_q, d_q, s_k] -> scores: [b, h_q, s_q, s_k] + total_flops += bmm_flop((b * h_q, s_q, d_q), (b * h_q, d_q, s_k)) + # scores: [b, h_q, s_q, s_k] @ v: [b, h_q, s_k, d_v] -> out: [b, h_q, s_q, d_v] + total_flops += bmm_flop((b * h_q, s_q, s_k), (b * h_q, s_k, d_v)) + return total_flops + + +@register_flop_formula([aten._scaled_dot_product_efficient_attention, + aten._scaled_dot_product_flash_attention, + aten._scaled_dot_product_cudnn_attention]) +def sdpa_flop(query_shape, key_shape, value_shape, *args, out_shape=None, **kwargs) -> int: + """Count flops for self-attention.""" + # NB: We aren't accounting for causal attention here + return sdpa_flop_count(query_shape, key_shape, value_shape) + + +def _offsets_to_lengths(offsets, max_len): + """ + If the offsets tensor is fake, then we don't know the actual lengths. + In that case, we can just assume the worst case; each batch has max length. + """ + from torch._subclasses.fake_tensor import FakeTensor + from torch._subclasses.functional_tensor import FunctionalTensor + if not isinstance(offsets, (FakeTensor, FunctionalTensor)) and offsets.device.type != "meta": + return offsets.diff().tolist() + return [max_len] * (offsets.size(0) - 1) + + +def _unpack_flash_attention_nested_shapes( + *, + query, + key, + value, + grad_out=None, + cum_seq_q, + cum_seq_k, + max_q, + max_k, +) -> Iterator[tuple[tuple[int, ...], tuple[int, ...], tuple[int, ...], tuple[int, ...] | None]]: + """ + Given inputs to a flash_attention_(forward|backward) kernel, this will handle behavior for + NestedTensor inputs by effectively unbinding the NestedTensor and yielding the shapes for + each batch element. + + In the case that this isn't a NestedTensor kernel, then it just yields the original shapes. + """ + if cum_seq_q is not None: + # This means we should be dealing with a Nested Jagged Tensor query. + # The inputs will have shape (sum(sequence len), heads, dimension) + # In comparison, non-Nested inputs have shape (batch, heads, sequence len, dimension) + # To deal with this, we convert to a shape of (batch, heads, max_seq_len, dimension) + # So the flops calculation in this case is an overestimate of the actual flops. + if len(key.shape) != 3: + raise AssertionError("sdpa_flop_count: expected key.shape to be 3-dimensional") + if len(value.shape) != 3: + raise AssertionError("sdpa_flop_count: expected value.shape to be 3-dimensional") + if grad_out is not None and grad_out.shape != query.shape: + raise AssertionError("sdpa_flop_count: grad_out.shape must match query.shape when provided") + _, h_q, d_q = query.shape + _, h_k, d_k = key.shape + _, h_v, d_v = value.shape + if cum_seq_q is None: + raise AssertionError("sdpa_flop_count: cum_seq_q must not be None") + if cum_seq_k is None: + raise AssertionError("sdpa_flop_count: cum_seq_k must not be None") + if cum_seq_q.shape != cum_seq_k.shape: + raise AssertionError("sdpa_flop_count: cum_seq_q and cum_seq_k must have the same shape") + seq_q_lengths = _offsets_to_lengths(cum_seq_q, max_q) + seq_k_lengths = _offsets_to_lengths(cum_seq_k, max_k) + for (seq_q_len, seq_k_len) in zip(seq_q_lengths, seq_k_lengths, strict=True): + new_query_shape = (1, h_q, seq_q_len, d_q) + new_key_shape = (1, h_k, seq_k_len, d_k) + new_value_shape = (1, h_v, seq_k_len, d_v) + new_grad_out_shape = new_query_shape if grad_out is not None else None + yield new_query_shape, new_key_shape, new_value_shape, new_grad_out_shape + return + + yield query.shape, key.shape, value.shape, grad_out.shape if grad_out is not None else None + + +def _unpack_efficient_attention_nested_shapes( + *, + query, + key, + value, + grad_out=None, + cu_seqlens_q, + cu_seqlens_k, + max_seqlen_q, + max_seqlen_k, +) -> Iterator[tuple[tuple[int, ...], tuple[int, ...], tuple[int, ...], tuple[int, ...] | None]]: + """ + Given inputs to a efficient_attention_(forward|backward) kernel, this will handle behavior for + NestedTensor inputs by effectively unbinding the NestedTensor and yielding the shapes for + each batch element. + + In the case that this isn't a NestedTensor kernel, then it just yields the original shapes. + """ + if cu_seqlens_q is not None: + # Unlike flash_attention_forward, we get a 4D tensor instead of a 3D tensor for efficient attention. + # + # This means we should be dealing with a Nested Jagged Tensor query. + # The inputs will have shape (sum(sequence len), heads, dimension) + # In comparison, non-Nested inputs have shape (batch, heads, sequence len, dimension) + # To deal with this, we convert to a shape of (batch, heads, max_seq_len, dimension) + # So the flops calculation in this case is an overestimate of the actual flops. + if len(key.shape) != 4: + raise AssertionError("_unpack_efficient_attention_nested_shapes: expected key.shape to be 4-dimensional") + if len(value.shape) != 4: + raise AssertionError("_unpack_efficient_attention_nested_shapes: expected value.shape to be 4-dimensional") + if grad_out is not None and grad_out.shape != query.shape: + raise AssertionError("_unpack_efficient_attention_nested_shapes: grad_out.shape must match query.shape when provided") + _, _, h_q, d_q = query.shape + _, _, h_k, d_k = key.shape + _, _, h_v, d_v = value.shape + if cu_seqlens_q is None: + raise AssertionError("_unpack_efficient_attention_nested_shapes: cu_seqlens_q must not be None") + if cu_seqlens_k is None: + raise AssertionError("_unpack_efficient_attention_nested_shapes: cu_seqlens_k must not be None") + if cu_seqlens_q.shape != cu_seqlens_k.shape: + raise AssertionError("_unpack_efficient_attention_nested_shapes: " + "cu_seqlens_q and cu_seqlens_k must have the same shape") + seqlens_q = _offsets_to_lengths(cu_seqlens_q, max_seqlen_q) + seqlens_k = _offsets_to_lengths(cu_seqlens_k, max_seqlen_k) + for len_q, len_k in zip(seqlens_q, seqlens_k, strict=True): + new_query_shape = (1, h_q, len_q, d_q) + new_key_shape = (1, h_k, len_k, d_k) + new_value_shape = (1, h_v, len_k, d_v) + new_grad_out_shape = new_query_shape if grad_out is not None else None + yield new_query_shape, new_key_shape, new_value_shape, new_grad_out_shape + return + + yield query.shape, key.shape, value.shape, grad_out.shape if grad_out is not None else None + + +@register_flop_formula(aten._flash_attention_forward, get_raw=True) +def _flash_attention_forward_flop( + query, + key, + value, + cum_seq_q, + cum_seq_k, + max_q, + max_k, + *args, + out_shape=None, + **kwargs +) -> int: + """Count flops for self-attention.""" + # NB: We aren't accounting for causal attention here + # in case this is a nested tensor, we unpack the individual batch elements + # and then sum the flops per batch element + sizes = _unpack_flash_attention_nested_shapes( + query=query, + key=key, + value=value, + cum_seq_q=cum_seq_q, + cum_seq_k=cum_seq_k, + max_q=max_q, + max_k=max_k, + ) + return sum( + sdpa_flop_count(query_shape, key_shape, value_shape) + for query_shape, key_shape, value_shape, _ in sizes + ) + + +@register_flop_formula(aten._efficient_attention_forward, get_raw=True) +def _efficient_attention_forward_flop( + query, + key, + value, + bias, + cu_seqlens_q, + cu_seqlens_k, + max_seqlen_q, + max_seqlen_k, + *args, + **kwargs +) -> int: + """Count flops for self-attention.""" + # NB: We aren't accounting for causal attention here + # in case this is a nested tensor, we unpack the individual batch elements + # and then sum the flops per batch element + sizes = _unpack_efficient_attention_nested_shapes( + query=query, + key=key, + value=value, + cu_seqlens_q=cu_seqlens_q, + cu_seqlens_k=cu_seqlens_k, + max_seqlen_q=max_seqlen_q, + max_seqlen_k=max_seqlen_k, + ) + return sum( + sdpa_flop_count(query_shape, key_shape, value_shape) + for query_shape, key_shape, value_shape, _ in sizes + ) + + +def sdpa_backward_flop_count(grad_out_shape, query_shape, key_shape, value_shape): + b, h_q, s_q, d_q = query_shape + _b2, h_kv, s_k, _d2 = key_shape + _b3, _h3, _s3, d_v = value_shape + _b4, _h4, _s4, _d4 = grad_out_shape + if not (b == _b2 == _b3 == _b4 and h_kv == _h3 and h_q == _h4): + raise AssertionError( + "sdpa_backward_flop_count: batch/heads mismatch among tensors" + ) + if h_q < h_kv or h_q % h_kv != 0: + raise AssertionError( + f"sdpa_backward_flop_count: query heads ({h_q}) must be a multiple of " + f"key/value heads ({h_kv})" + ) + if not (d_q == _d2 and d_v == _d4 and s_k == _s3 and s_q == _s4): + raise AssertionError( + "sdpa_backward_flop_count: grad_out/value/key/query shapes are incompatible" + ) + total_flops = 0 + # Step 1: We recompute the scores matrix. + # q: [b, h_q, s_q, d_q] @ k: [b, h_q, d_q, s_k] -> scores: [b, h_q, s_q, s_k] + total_flops += bmm_flop((b * h_q, s_q, d_q), (b * h_q, d_q, s_k)) + + # Step 2: We propagate the gradients through the score @ v operation. + # gradOut: [b, h_q, s_q, d_v] @ v: [b, h_q, d_v, s_k] -> gradScores: [b, h_q, s_q, s_k] + total_flops += bmm_flop((b * h_q, s_q, d_v), (b * h_q, d_v, s_k)) + # scores: [b, h_q, s_k, s_q] @ gradOut: [b, h_q, s_q, d_v] -> gradV: [b, h_q, s_k, d_v] + total_flops += bmm_flop((b * h_q, s_k, s_q), (b * h_q, s_q, d_v)) + + # Step 3: We propagate th gradients through the k @ v operation + # gradScores: [b, h_q, s_q, s_k] @ k: [b, h_q, s_k, d_q] -> gradQ: [b, h_q, s_q, d_q] + total_flops += bmm_flop((b * h_q, s_q, s_k), (b * h_q, s_k, d_q)) + # q: [b, h_q, d_q, s_q] @ gradScores: [b, h_q, s_q, s_k] -> gradK: [b, h_q, d_q, s_k] + total_flops += bmm_flop((b * h_q, d_q, s_q), (b * h_q, s_q, s_k)) + return total_flops + + +@register_flop_formula([aten._scaled_dot_product_efficient_attention_backward, + aten._scaled_dot_product_flash_attention_backward, + aten._scaled_dot_product_cudnn_attention_backward]) +def sdpa_backward_flop(grad_out_shape, query_shape, key_shape, value_shape, *args, out_shape=None, **kwargs) -> int: + """Count flops for self-attention backward.""" + return sdpa_backward_flop_count(grad_out_shape, query_shape, key_shape, value_shape) + +@register_flop_formula(aten._flash_attention_backward, get_raw=True) +def _flash_attention_backward_flop( + grad_out, + query, + key, + value, + out, # named _out_shape to avoid kwarg collision with out_shape created in wrapper + logsumexp, + cum_seq_q, + cum_seq_k, + max_q, + max_k, + *args, + **kwargs, +) -> int: + # in case this is a nested tensor, we unpack the individual batch elements + # and then sum the flops per batch element + shapes = _unpack_flash_attention_nested_shapes( + query=query, + key=key, + value=value, + grad_out=grad_out, + cum_seq_q=cum_seq_q, + cum_seq_k=cum_seq_k, + max_q=max_q, + max_k=max_k, + ) + return sum( + sdpa_backward_flop_count(grad_out_shape, query_shape, key_shape, value_shape) + for query_shape, key_shape, value_shape, grad_out_shape in shapes + ) + + +@register_flop_formula(aten._efficient_attention_backward, get_raw=True) +def _efficient_attention_backward_flop( + grad_out, + query, + key, + value, + bias, + out, # named _out to avoid kwarg collision with out created in wrapper + cu_seqlens_q, + cu_seqlens_k, + max_seqlen_q, + max_seqlen_k, + *args, + **kwargs, +) -> int: + # in case this is a nested tensor, we unpack the individual batch elements + # and then sum the flops per batch element + shapes = _unpack_efficient_attention_nested_shapes( + query=query, + key=key, + value=value, + grad_out=grad_out, + cu_seqlens_q=cu_seqlens_q, + cu_seqlens_k=cu_seqlens_k, + max_seqlen_q=max_seqlen_q, + max_seqlen_k=max_seqlen_k, + ) + return sum( + sdpa_backward_flop_count(grad_out_shape, query_shape, key_shape, value_shape) + for query_shape, key_shape, value_shape, grad_out_shape in shapes + ) + + +def _varlen_attn_forward_flop( + query, + key, + value, + cu_seq_q, + cu_seq_k, + max_q, + max_k, + *args, + out_val=None, + **kwargs, +) -> int: + """Count flops for varlen_attn forward.""" + sizes = _unpack_flash_attention_nested_shapes( + query=query, + key=key, + value=value, + cum_seq_q=cu_seq_q, + cum_seq_k=cu_seq_k if cu_seq_k is not None else cu_seq_q, + max_q=max_q, + max_k=max_k, + ) + return sum( + sdpa_flop_count(query_shape, key_shape, value_shape) + for query_shape, key_shape, value_shape, _ in sizes + ) + + +def _varlen_attn_out_flop( + out, + query, + key, + value, + cu_seq_q, + cu_seq_k, + max_q, + max_k, + *args, + out_val=None, + **kwargs, +) -> int: + """Count flops for varlen_attn_out forward.""" + return _varlen_attn_forward_flop( + query, key, value, cu_seq_q, cu_seq_k, max_q, max_k, + ) + + +def _varlen_attn_backward_flop( + grad_out, + query, + key, + value, + out, + lse, + cu_seq_q, + cu_seq_k, + max_q, + max_k, + *args, + out_val=None, + **kwargs, +) -> int: + """Count flops for varlen_attn backward.""" + sizes = _unpack_flash_attention_nested_shapes( + query=query, + key=key, + value=value, + grad_out=grad_out, + cum_seq_q=cu_seq_q, + cum_seq_k=cu_seq_k, + max_q=max_q, + max_k=max_k, + ) + return sum( + sdpa_backward_flop_count(grad_out_shape, query_shape, key_shape, value_shape) + for query_shape, key_shape, value_shape, grad_out_shape in sizes + ) + + +flop_registry = { + aten.mm: mm_flop, + aten.addmm: addmm_flop, + aten.bmm: bmm_flop, + aten.baddbmm: baddbmm_flop, + aten._scaled_mm: _scaled_mm_flop, + aten.convolution: conv_flop, + aten._convolution: conv_flop, + aten.cudnn_convolution: conv_flop, + aten.convolution_overrideable: conv_flop, + aten._slow_conv2d_forward: conv_flop, + aten.convolution_backward: conv_backward_flop, + aten._scaled_dot_product_efficient_attention: sdpa_flop, + aten._scaled_dot_product_flash_attention: sdpa_flop, + aten._scaled_dot_product_cudnn_attention: sdpa_flop, + aten._scaled_dot_product_efficient_attention_backward: sdpa_backward_flop, + aten._scaled_dot_product_flash_attention_backward: sdpa_backward_flop, + aten._scaled_dot_product_cudnn_attention_backward: sdpa_backward_flop, + aten._flash_attention_forward: _flash_attention_forward_flop, + aten._efficient_attention_forward: _efficient_attention_forward_flop, + aten._flash_attention_backward: _flash_attention_backward_flop, + aten._efficient_attention_backward: _efficient_attention_backward_flop, +} + +def normalize_tuple(x): + if not isinstance(x, tuple): + return (x,) + return x + + +# Define the suffixes for different orders of magnitude +suffixes = ["", "K", "M", "B", "T"] +# Thanks BingChat! +def get_suffix_str(number): + # Find the index of the appropriate suffix based on the number of digits + # with some additional overflow. + # i.e. 1.01B should be displayed as 1001M, not 1.001B + index = max(0, min(len(suffixes) - 1, (len(str(number)) - 2) // 3)) + return suffixes[index] + +def convert_num_with_suffix(number, suffix): + index = suffixes.index(suffix) + # Divide the number by 1000^index and format it to two decimal places + value = f"{number / 1000 ** index:.3f}" + # Return the value and the suffix as a string + return value + suffixes[index] + +def convert_to_percent_str(num, denom) -> str: + if denom == 0: + return "0%" + return f"{num / denom:.2%}" + +def _pytreeify_preserve_structure(f): + @wraps(f) + def nf(args): + flat_args, spec = tree_flatten(args) + out = f(*flat_args) + return tree_unflatten(out, spec) + + return nf + + +class FlopCounterMode: + """ + ``FlopCounterMode`` is a context manager that counts the number of flops within its context. + + It does this using a ``TorchDispatchMode``. + + It also supports hierarchical output by passing a module (or list of + modules) to FlopCounterMode on construction. If you do not need hierarchical + output, you do not need to use it with a module. + + Example usage + + .. code-block:: python + + mod = ... + with FlopCounterMode(mod) as flop_counter: + mod.sum().backward() + + """ + + def __init__( + self, + mods: torch.nn.Module | list[torch.nn.Module] | None = None, + depth: int = 2, + display: bool = True, + custom_mapping: dict[Any, Any] | None = None) -> None: + super().__init__() + self.flop_counts: dict[str, dict[Any, int]] = defaultdict(lambda: defaultdict(int)) + self.depth = depth + self.display = display + self.mode: _FlopCounterMode | None = None + if custom_mapping is None: + custom_mapping = {} + if mods is not None: + warnings.warn("mods argument is not needed anymore, you can stop passing it", stacklevel=2) + self.flop_registry = { + **flop_registry, + **{k: v if getattr(v, "_get_raw", False) else shape_wrapper(v) for k, v in custom_mapping.items()} + } + self.mod_tracker = ModuleTracker() + + def get_total_flops(self) -> int: + return sum(self.flop_counts['Global'].values()) + + def get_flop_counts(self) -> dict[str, dict[Any, int]]: + """Return the flop counts as a dictionary of dictionaries. + + The outer + dictionary is keyed by module name, and the inner dictionary is keyed by + operation name. + + Returns: + Dict[str, Dict[Any, int]]: The flop counts as a dictionary. + """ + return {k: dict(v) for k, v in self.flop_counts.items()} + + def get_table(self, depth=None): + if depth is None: + depth = self.depth + if depth is None: + depth = 999999 + + + import tabulate + + tabulate.PRESERVE_WHITESPACE = True + header = ["Module", "FLOP", "% Total"] + values = [] + global_flops = self.get_total_flops() + global_suffix = get_suffix_str(global_flops) + is_global_subsumed = False + + def process_mod(mod_name, depth): + nonlocal is_global_subsumed + + total_flops = sum(self.flop_counts[mod_name].values()) + + is_global_subsumed |= total_flops >= global_flops + + padding = " " * depth + values = [] + values.append([ + padding + mod_name, + convert_num_with_suffix(total_flops, global_suffix), + convert_to_percent_str(total_flops, global_flops) + ]) + for k, v in self.flop_counts[mod_name].items(): + values.append([ + padding + " - " + str(k), + convert_num_with_suffix(v, global_suffix), + convert_to_percent_str(v, global_flops) + ]) + return values + + for mod in sorted(self.flop_counts.keys()): + if mod == 'Global': + continue + mod_depth = mod.count(".") + 1 + if mod_depth > depth: + continue + + cur_values = process_mod(mod, mod_depth - 1) + values.extend(cur_values) + + # We do a bit of messing around here to only output the "Global" value + # if there are any FLOPs in there that aren't already fully contained by + # a module. + if 'Global' in self.flop_counts and not is_global_subsumed: + for value in values: + value[0] = " " + value[0] + + values = process_mod('Global', 0) + values + + if len(values) == 0: + values = [["Global", "0", "0%"]] + + return tabulate.tabulate(values, headers=header, colalign=("left", "right", "right")) + + # NB: This context manager is NOT reentrant + def __enter__(self): + self.flop_counts.clear() + self.mod_tracker.__enter__() + self.mode = _FlopCounterMode(self) + self.mode.__enter__() + return self + + def __exit__(self, *args): + if self.mode is None: + raise AssertionError("Internal error: FlopCounter.__exit__ called but mode is None") + b = self.mode.__exit__(*args) + self.mode = None # break cycles + self.mod_tracker.__exit__() + if self.display: + print(self.get_table(self.depth)) + return b + + def _count_flops(self, func_packet, out, args, kwargs): + if func_packet in self.flop_registry: + flop_count_func = self.flop_registry[func_packet] + flop_count = flop_count_func(*args, **kwargs, out_val=out) # type: ignore[operator] + for par in set(self.mod_tracker.parents): + self.flop_counts[par][func_packet] += flop_count + return out + +class _FlopCounterMode(TorchDispatchMode): + supports_higher_order_operators = True + + def __init__(self, counter: FlopCounterMode) -> None: + self.counter = counter + + def _execute_with_isolated_flop_counting(self, branch_fn, operands): + """Execute a branch function and capture its FLOP counts without + affecting self.counter.flop_counts + + Args: + branch_fn: The branch function to execute + operands: Arguments to pass to the branch function + + Returns: + Tuple of (result, flop_counts) where result is the branch output + and flop_counts is a copy of the FLOP counts after execution + """ + import copy + checkpointed_flop_counts = copy.copy(self.counter.flop_counts) + with self: + result = branch_fn(*operands) + flop_counts = copy.copy(self.counter.flop_counts) + self.counter.flop_counts = checkpointed_flop_counts + return result, flop_counts + + def _handle_higher_order_ops(self, func, types, args, kwargs): + is_triton = func in {torch.ops.higher_order.triton_kernel_wrapper_mutation, + torch.ops.higher_order.triton_kernel_wrapper_functional} + if is_triton: + from torch._higher_order_ops.triton_kernel_wrap import get_kernel + # Special case - look in the triton flop registry for the kernel + from triton.runtime.jit import JITFunction + kernel_name = get_kernel(kwargs["kernel_idx"]) + # Unwrap heuristics if they are present + while not isinstance(kernel_name, JITFunction): + if hasattr(kernel_name, "fn"): + kernel_name = kernel_name.fn + else: + break + return self.counter._count_flops(kernel_name, None, args, kwargs) + elif func is torch.ops.higher_order.cond: + # The flop counter for cond counts the upper bound of flops. + # For example, if a matmul is executed 2 times in true branch + # but only 1 time in the false branch, the flop counter will + # record the larger number of flops, i.e. 2 times. + pred, true_branch, false_branch, operands = args + # Step 1: Count flops for true branch and false branch separately + true_out, true_flop_counts = self._execute_with_isolated_flop_counting( + true_branch, operands + ) + if true_out is NotImplemented: + return NotImplemented + + false_out, false_flop_counts = self._execute_with_isolated_flop_counting( + false_branch, operands + ) + if false_out is NotImplemented: + return NotImplemented + + # Step 2: merge flop counts + all_mod_keys = set(true_flop_counts.keys()) | set(false_flop_counts.keys()) + merged_flop_counts = {} + for outer_key in all_mod_keys: + true_func_counts = true_flop_counts[outer_key] + false_func_counts = false_flop_counts[outer_key] + + merged_func_counts = {} + all_func_keys = set(true_func_counts.keys()) | set(false_func_counts.keys()) + + for func_key in all_func_keys: + true_val = true_func_counts.get(func_key, 0) + false_val = false_func_counts.get(func_key, 0) + merged_func_counts[func_key] = max(true_val, false_val) + + merged_flop_counts[outer_key] = merged_func_counts + + # Step 3: update the counter with merged counts + for outer_key, inner_dict in merged_flop_counts.items(): + self.counter.flop_counts[outer_key].update(inner_dict) + + # It doesn't matter which one we return since true_fn and false_fn return + # output with the same structure. + return true_out + else: + return NotImplemented + + def __torch_dispatch__(self, func, types, args=(), kwargs=None): + kwargs = kwargs if kwargs else {} + + # Skip ops from non-standard dispatch_sizes_strides_policy such as NJT + if func in {torch.ops.aten.sym_is_contiguous.default, + torch.ops.aten.is_contiguous.default, + torch.ops.aten.is_contiguous.memory_format, + torch.ops.aten.is_strides_like_format.default, + torch.ops.aten.is_non_overlapping_and_dense.default, + torch.ops.aten.size.default, + torch.ops.aten.sym_size.default, + torch.ops.aten.stride.default, + torch.ops.aten.sym_stride.default, + torch.ops.aten.storage_offset.default, + torch.ops.aten.sym_storage_offset.default, + torch.ops.aten.numel.default, + torch.ops.aten.sym_numel.default, + torch.ops.aten.dim.default, + torch.ops.prim.layout.default}: + + return NotImplemented + + if isinstance(func, torch._ops.HigherOrderOperator): + return self._handle_higher_order_ops(func, types, args, kwargs) + + # If we don't have func in flop_registry, see if it can decompose + if func not in self.counter.flop_registry and func is not torch.ops.prim.device.default: + with self: + r = func.decompose(*args, **kwargs) + if r is not NotImplemented: + return r + + # no further decomposition; execute & count flops + out = func(*args, **kwargs) + return self.counter._count_flops(func._overloadpacket, out, args, kwargs) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/hipify/__init__.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/hipify/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..58f3ace6c03d093337c9fa417ccbe8bc267b6c69 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/hipify/__init__.py @@ -0,0 +1 @@ +from .version import __version__ diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/hipify/constants.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/hipify/constants.py new file mode 100644 index 0000000000000000000000000000000000000000..c9e1bc4dc410cce97c6bc0b55391387fd04c349c --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/hipify/constants.py @@ -0,0 +1,66 @@ +"""Constants for annotations in the mapping. + +The constants defined here are used to annotate the mapping tuples in cuda_to_hip_mappings.py. +They are based on +https://github.com/ROCm/HIPIFY/blob/master/src/Statistics.h +and fall in three categories: 1) type of mapping, 2) API of mapping, 3) unsupported +mapping. +""" + +import warnings +warnings.warn("hipify's constants.py is no longer used as of version 2.0.0", FutureWarning) + +CONV_VERSION = 0, +CONV_INIT = 1 +CONV_DEVICE = 2 +CONV_MEM = 3 +CONV_KERN = 4 +CONV_COORD_FUNC = 5 +CONV_MATH_FUNC = 6 +CONV_DEVICE_FUNC = 7 +CONV_SPECIAL_FUNC = 8 +CONV_STREAM = 9 +CONV_EVENT = 10 +CONV_OCCUPANCY = 11 +CONV_CONTEXT = 12 +CONV_PEER = 13 +CONV_MODULE = 14 +CONV_CACHE = 15 +CONV_EXEC = 16 +CONV_ERROR = 17 +CONV_DEF = 18 +CONV_TEX = 19 +CONV_GL = 20 +CONV_GRAPHICS = 21 +CONV_SURFACE = 22 +CONV_JIT = 23 +CONV_D3D9 = 24 +CONV_D3D10 = 25 +CONV_D3D11 = 26 +CONV_VDPAU = 27 +CONV_EGL = 28 +CONV_THREAD = 29 +CONV_OTHER = 30 +CONV_INCLUDE = 31 +CONV_INCLUDE_CUDA_MAIN_H = 32 +CONV_TYPE = 33 +CONV_LITERAL = 34 +CONV_NUMERIC_LITERAL = 35 +CONV_LAST = 36 + +API_DRIVER = 37 +API_RUNTIME = 38 +API_BLAS = 39 +API_SPECIAL = 40 +API_RAND = 41 +API_LAST = 42 +API_FFT = 43 +API_RTC = 44 +API_ROCTX = 45 +API_PYT_EXT = 46 + +HIP_UNSUPPORTED = 47 +API_PYTORCH = 1337 +API_CAFFE2 = 1338 +API_C10 = 1339 +API_ROCMSMI = 1340 diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/hipify/cuda_to_hip_mappings.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/hipify/cuda_to_hip_mappings.py new file mode 100644 index 0000000000000000000000000000000000000000..9332d0a24f8ed3382b271beb355079bc07152eb5 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/hipify/cuda_to_hip_mappings.py @@ -0,0 +1,3497 @@ +import collections +import os + +""" Mapping of CUDA functions, include files, constants, and types to ROCm/HIP equivalents """ + +_IS_FBCODE = os.environ.get("IS_FBCODE", "0") == "1" + +# FBCODE compiles against rccl sources instead of an installed rccl package. +# The header location is src/rccl.h versus rccl/rccl.h, respectively. +_RCCL_HEADER = "" if _IS_FBCODE else "" + +# List of math functions that should be replaced inside device code only. +MATH_TRANSPILATIONS = collections.OrderedDict([ + ("std::max", ("::max")), + ("std::min", ("::min")), + ("std::ceil", ("::ceil")), + ("std::floor", ("::floor")), + ("std::exp", ("::exp")), + ("std::log", ("::log")), + ("std::pow", ("::pow")), + ("std::fabs", ("::fabs")), + ("std::fmod", ("::fmod")), + ("std::remainder", ("::remainder")), + ("std::frexp", ("::frexp")), +]) + +CUDA_TYPE_NAME_MAP = collections.OrderedDict([ + ("CUresult", "hipError_t"), + ("cudaError_t", "hipError_t"), + ("cudaError", "hipError_t"), + ("CUDA_ARRAY3D_DESCRIPTOR", "HIP_ARRAY3D_DESCRIPTOR"), + ("CUDA_ARRAY_DESCRIPTOR", "HIP_ARRAY_DESCRIPTOR"), + ("CUDA_MEMCPY2D", "hip_Memcpy2D"), + ("CUDA_MEMCPY3D", "HIP_MEMCPY3D"), + ("CUDA_MEMCPY3D_PEER", "HIP_MEMCPY3D_PEER"), + ("CUDA_POINTER_ATTRIBUTE_P2P_TOKENS", "HIP_POINTER_ATTRIBUTE_P2P_TOKENS"), + ("CUDA_RESOURCE_DESC", "HIP_RESOURCE_DESC"), + ("CUDA_RESOURCE_VIEW_DESC", "HIP_RESOURCE_VIEW_DESC"), + ("CUipcEventHandle", "hipIpcEventHandle"), + ("CUipcMemHandle", "hipIpcMemHandle"), + ("CUaddress_mode", "hipAddress_mode"), + ("CUarray_cubemap_face", "hipArray_cubemap_face"), + ("CUarray_format", "hipArray_format"), + ("CUcomputemode", "hipComputemode"), + ("CUmem_advise", "hipMemAdvise"), + ("CUmem_range_attribute", "hipMemRangeAttribute"), + ("CUctx_flags", "hipCctx_flags"), + ("CUdevice", "hipDevice_t"), + ("CUdevice_attribute_enum", "hipDeviceAttribute_t"), + ("CUdevice_attribute", "hipDeviceAttribute_t"), + ("CUpointer_attribute", "hipPointer_attribute"), + ("CU_POINTER_ATTRIBUTE_DEVICE_ORDINAL", "HIP_POINTER_ATTRIBUTE_DEVICE_ORDINAL"), + ("CU_POINTER_ATTRIBUTE_BUFFER_ID", "HIP_POINTER_ATTRIBUTE_BUFFER_ID"), + ("CUdeviceptr", "hipDeviceptr_t"), + ("CUarray_st", "hipArray"), + ("CUarray", "hipArray *"), + ("CUdevprop_st", "hipDeviceProp_t"), + ("CUdevprop", "hipDeviceProp_t"), + ("CUfunction", "hipFunction_t"), + ("CUgraphicsResource", "hipGraphicsResource_t"), + ("CUmipmappedArray", "hipMipmappedArray_t"), + ("CUfunction_attribute", "hipFuncAttribute_t"), + ("CUfunction_attribute_enum", "hipFuncAttribute_t"), + ("CUgraphicsMapResourceFlags", "hipGraphicsMapFlags"), + ("CUgraphicsMapResourceFlags_enum", "hipGraphicsMapFlags"), + ("CUgraphicsRegisterFlags", "hipGraphicsRegisterFlags"), + ("CUgraphicsRegisterFlags_enum", "hipGraphicsRegisterFlags"), + ("CUoccupancy_flags", "hipOccupancyFlags"), + ("CUoccupancy_flags_enum", "hipOccupancyFlags"), + ("CUfunc_cache_enum", "hipFuncCache"), + ("CUfunc_cache", "hipFuncCache"), + ("CUipcMem_flags", "hipIpcMemFlags"), + ("CUipcMem_flags_enum", "hipIpcMemFlags"), + ("CUjit_cacheMode", "hipJitCacheMode"), + ("CUjit_cacheMode_enum", "hipJitCacheMode"), + ("CUjit_fallback", "hipJitFallback"), + ("CUjit_fallback_enum", "hipJitFallback"), + ("CUjit_option", "hipJitOption"), + ("CUjit_option_enum", "hipJitOption"), + ("CUjit_target", "hipJitTarget"), + ("CUjit_target_enum", "hipJitTarget"), + ("CUjitInputType", "hipJitInputType"), + ("CUjitInputType_enum", "hipJitInputType"), + ("CUlimit", "hipLimit_t"), + ("CUlimit_enum", "hipLimit_t"), + ("CUmemAccessDesc", "hipMemAccessDesc"), + ("CUmemAccessDesc_st", "hipMemAccessDesc"), + ("CUmemAccessDesc_v1", "hipMemAccessDesc"), + ("CUmemAttach_flags", "hipMemAttachFlags_t"), + ("CUmemAttach_flags_enum", "hipMemAttachFlags_t"), + ("CUmemAllocationGranularity_flags", "hipMemAllocationGranularity_flags"), + ("CUmemAllocationGranularity_flags_enum", "hipMemAllocationGranularity_flags"), + ("CUmemAllocationHandleType", "hipMemAllocationHandleType"), + ("CUmemAllocationHandleType_enum", "hipMemAllocationHandleType"), + ("CUmemAllocationProp", "hipMemAllocationProp"), + ("CUmemAllocationProp_st", "hipMemAllocationProp"), + ("CUmemAllocationProp_v1", "hipMemAllocationProp"), + ("CUmemAllocationType", "hipMemAllocationType"), + ("CUmemAllocationType_enum", "hipMemAllocationType"), + ("CUmemGenericAllocationHandle", "hipMemGenericAllocationHandle_t"), + ("CUmemGenericAllocationHandle_v1", "hipMemGenericAllocationHandle_t"), + ("CUmemHandleType", "hipMemHandleType"), + ("CUmemHandleType_enum", "hipMemHandleType"), + ("CUmemLocation", "hipMemLocation"), + ("CUmemLocationType", "hipMemLocationType"), + ("CUmemLocationType_enum", "hipMemLocationType"), + ("CUmemLocation_st", "hipMemLocation"), + ("CUmemLocation_v1", "hipMemLocation"), + ("CUmemOperationType", "hipMemOperationType"), + ("CUmemOperationType_enum", "hipMemOperationType"), + ("CUmemPoolHandle_st", "ihipMemPoolHandle_t"), + ("CUmemPoolProps", "hipMemPoolProps"), + ("CUmemPoolProps_st", "hipMemPoolProps"), + ("CUmemPoolProps_v1", "hipMemPoolProps"), + ("CUmemPoolPtrExportData", "hipMemPoolPtrExportData"), + ("CUmemPoolPtrExportData_st", "hipMemPoolPtrExportData"), + ("CUmemPoolPtrExportData_v1", "hipMemPoolPtrExportData"), + ("CUmemPool_attribute", "hipMemPoolAttr"), + ("CUmemPool_attribute_enum", "hipMemPoolAttr"), + ("CUmem_advise_enum", "hipMemoryAdvise"), + ("CUmem_range_attribute_enum", "hipMemRangeAttribute"), + ("CUmemoryPool", "hipMemPool_t"), + ("CUmemorytype", "hipMemType_t"), + ("CUmemorytype_enum", "hipMemType_t"), + ("CUresourcetype", "hipResourceType"), + ("CUresourcetype_enum", "hipResourceType"), + ("CUresourceViewFormat", "hipResourceViewFormat"), + ("CUresourceViewFormat_enum", "hipResourceViewFormat"), + ("CUsharedconfig", "hipSharedMemConfig"), + ("CUsharedconfig_enum", "hipSharedMemConfig"), + ("CUcontext", "hipCtx_t"), + ("CUmodule", "hipModule_t"), + ("CUstream", "hipStream_t"), + ("CUstream_st", "ihipStream_t"), + ("CUstreamCallback", "hipStreamCallback_t"), + ("CUsurfObject", "hipSurfaceObject"), + ("CUsurfref", "hipSurfaceReference_t"), + ("CUtexObject", "hipTextureObject_t"), + ("CUtexref", "textureReference"), + ("CUstream_flags", "hipStreamFlags"), + ("CUstreamWaitValue_flags", "hipStreamWaitValueFlags"), + ("CUstreamWriteValue_flags", "hipStreamWriteValueFlags"), + ("CUstreamBatchMemOpType", "hipStreamBatchMemOpType"), + ("CUdevice_P2PAttribute", "hipDeviceP2PAttribute"), + ("CUevent", "hipEvent_t"), + ("CUevent_st", "ihipEvent_t"), + ("CUevent_flags", "hipEventFlags"), + ("CUfilter_mode", "hipTextureFilterMode"), + ("CUGLDeviceList", "hipGLDeviceList"), + ("CUGLmap_flags", "hipGLMapFlags"), + ("CUd3d9DeviceList", "hipD3D9DeviceList"), + ("CUd3d9map_flags", "hipD3D9MapFlags"), + ("CUd3d9register_flags", "hipD3D9RegisterFlags"), + ("CUd3d10DeviceList", "hipd3d10DeviceList"), + ("CUd3d10map_flags", "hipD3D10MapFlags"), + ("CUd3d10register_flags", "hipD3D10RegisterFlags"), + ("CUd3d11DeviceList", "hipd3d11DeviceList"), + ("CUeglStreamConnection_st", "hipEglStreamConnection"), + ("CUeglStreamConnection", "hipEglStreamConnection"), + ("libraryPropertyType_t", "hipLibraryPropertyType_t"), + ("libraryPropertyType", "hipLibraryPropertyType_t"), + ("cudaStreamCallback_t", "hipStreamCallback_t"), + ("cudaArray", "hipArray"), + ("cudaArray_t", "hipArray_t"), + ("cudaArray_const_t", "hipArray_const_t"), + ("cudaMipmappedArray_t", "hipMipmappedArray_t"), + ("cudaMipmappedArray_const_t", "hipMipmappedArray_const_t"), + ("cudaArrayDefault", "hipArrayDefault"), + ("cudaArrayLayered", "hipArrayLayered"), + ("cudaArraySurfaceLoadStore", "hipArraySurfaceLoadStore"), + ("cudaArrayCubemap", "hipArrayCubemap"), + ("cudaArrayTextureGather", "hipArrayTextureGather"), + ("cudaMemoryAdvise", "hipMemoryAdvise"), + ("cudaMemRangeAttribute", "hipMemRangeAttribute"), + ("cudaMemcpyKind", "hipMemcpyKind"), + ("cudaMemoryType", "hipMemoryType"), + ("cudaExtent", "hipExtent"), + ("cudaPitchedPtr", "hipPitchedPtr"), + ("cudaPos", "hipPos"), + ("cudaEvent_t", "hipEvent_t"), + ("cudaStream_t", "hipStream_t"), + ("cudaPointerAttributes", "hipPointerAttribute_t"), + ("cudaDeviceAttr", "hipDeviceAttribute_t"), + ("cudaDeviceProp", "hipDeviceProp_t"), + ("cudaDeviceP2PAttr", "hipDeviceP2PAttribute"), + ("cudaComputeMode", "hipComputeMode"), + ("cudaFuncCache", "hipFuncCache_t"), + ("cudaFuncAttributes", "hipFuncAttributes"), + ("cudaSharedMemConfig", "hipSharedMemConfig"), + ("cudaLimit", "hipLimit_t"), + ("cudaOutputMode", "hipOutputMode"), + ("cudaTextureReadMode", "hipTextureReadMode"), + ("cudaTextureFilterMode", "hipTextureFilterMode"), + ("cudaChannelFormatKind", "hipChannelFormatKind"), + ("cudaChannelFormatDesc", "hipChannelFormatDesc"), + ("cudaResourceDesc", "hipResourceDesc"), + ("cudaResourceViewDesc", "hipResourceViewDesc"), + ("cudaTextureDesc", "hipTextureDesc"), + ("surfaceReference", "hipSurfaceReference"), + ("cudaTextureObject_t", "hipTextureObject_t"), + ("cudaResourceType", "hipResourceType"), + ("cudaResourceViewFormat", "hipResourceViewFormat"), + ("cudaTextureAddressMode", "hipTextureAddressMode"), + ("cudaSurfaceBoundaryMode", "hipSurfaceBoundaryMode"), + ("cudaSurfaceFormatMode", "hipSurfaceFormatMode"), + ("cudaSurfaceObject_t", "hipSurfaceObject_t"), + ("cudaTextureType1D", "hipTextureType1D"), + ("cudaTextureType2D", "hipTextureType2D"), + ("cudaTextureType3D", "hipTextureType3D"), + ("cudaTextureTypeCubemap", "hipTextureTypeCubemap"), + ("cudaTextureType1DLayered", "hipTextureType1DLayered"), + ("cudaTextureType2DLayered", "hipTextureType2DLayered"), + ("cudaTextureTypeCubemapLayered", "hipTextureTypeCubemapLayered"), + ("cudaUUID_t", "hipUUID"), + ("cudaIpcEventHandle_t", "hipIpcEventHandle_t"), + ("cudaIpcEventHandle_st", "hipIpcEventHandle_t"), + ("cudaIpcMemHandle_t", "hipIpcMemHandle_t"), + ("cudaIpcMemHandle_st", "hipIpcMemHandle_t"), + ("cudaGraphicsCubeFace", "hipGraphicsCubeFace"), + ("cudaGraphicsMapFlags", "hipGraphicsMapFlags"), + ("cudaGraphicsRegisterFlags", "hipGraphicsRegisterFlags"), + ("cudaGLDeviceList", "hipGLDeviceList"), + ("cudaGLMapFlags", "hipGLMapFlags"), + ("cudaD3D9DeviceList", "hipD3D9DeviceList"), + ("cudaD3D9MapFlags", "hipD3D9MapFlags"), + ("cudaD3D9RegisterFlags", "hipD3D9RegisterFlags"), + ("cudaD3D10DeviceList", "hipd3d10DeviceList"), + ("cudaD3D10MapFlags", "hipD3D10MapFlags"), + ("cudaD3D10RegisterFlags", "hipD3D10RegisterFlags"), + ("cudaD3D11DeviceList", "hipd3d11DeviceList"), + ("cudaEglStreamConnection", "hipEglStreamConnection"), + ("cublasHandle_t", "hipblasHandle_t"), + ("cublasOperation_t", "hipblasOperation_t"), + ("cublasStatus_t", "hipblasStatus_t"), + ("cublasFillMode_t", "hipblasFillMode_t"), + ("cublasDiagType_t", "hipblasDiagType_t"), + ("cublasSideMode_t", "hipblasSideMode_t"), + ("cublasPointerMode_t", "hipblasPointerMode_t"), + ("cublasGemmAlgo_t", "hipblasGemmAlgo_t"), + ("cublasAtomicsMode_t", "hipblasAtomicsMode_t"), + ("cublasDataType_t", "hipblasDatatype_t"), + ("curandStatus", "hiprandStatus_t"), + ("curandStatus_t", "hiprandStatus_t"), + ("curandRngType", "hiprandRngType_t"), + ("curandRngType_t", "hiprandRngType_t"), + ("curandGenerator_st", "hiprandGenerator_st"), + ("curandGenerator_t", "hiprandGenerator_t"), + ("curandDirectionVectorSet", "hiprandDirectionVectorSet_t"), + ("curandDirectionVectorSet_t", "hiprandDirectionVectorSet_t"), + ("curandOrdering", "hiprandOrdering_t"), + ("curandOrdering_t", "hiprandOrdering_t"), + ("curandDistribution_st", "hiprandDistribution_st"), + ("curandHistogramM2V_st", "hiprandDistribution_st"), + ("curandDistribution_t", "hiprandDistribution_t"), + ("curandHistogramM2V_t", "hiprandDistribution_t"), + ("curandDistributionShift_st", "hiprandDistributionShift_st"), + ("curandDistributionShift_t", "hiprandDistributionShift_t"), + ("curandDistributionM2Shift_st", "hiprandDistributionM2Shift_st"), + ("curandDistributionM2Shift_t", "hiprandDistributionM2Shift_t"), + ("curandHistogramM2_st", "hiprandHistogramM2_st"), + ("curandHistogramM2_t", "hiprandHistogramM2_t"), + ("curandHistogramM2K_st", "hiprandHistogramM2K_st"), + ("curandHistogramM2K_t", "hiprandHistogramM2K_t"), + ("curandDiscreteDistribution_st", "hiprandDiscreteDistribution_st"), + ("curandDiscreteDistribution_t", "hiprandDiscreteDistribution_t"), + ("curandMethod", "hiprandMethod_t"), + ("curandMethod_t", "hiprandMethod_t"), + ("curandDirectionVectors32_t", "hiprandDirectionVectors32_t"), + ("curandDirectionVectors64_t", "hiprandDirectionVectors64_t"), + ("curandStateMtgp32_t", "hiprandStateMtgp32_t"), + ("curandStateMtgp32", "hiprandStateMtgp32_t"), + ("curandStateScrambledSobol64_t", "hiprandStateScrambledSobol64_t"), + ("curandStateSobol64_t", "hiprandStateSobol64_t"), + ("curandStateScrambledSobol32_t", "hiprandStateScrambledSobol32_t"), + ("curandStateSobol32_t", "hiprandStateSobol32_t"), + ("curandStateMRG32k3a_t", "hiprandStateMRG32k3a_t"), + ("curandStatePhilox4_32_10_t", "hiprandStatePhilox4_32_10_t"), + ("curandStateXORWOW_t", "hiprandStateXORWOW_t"), + ("curandState_t", "hiprandState_t"), + ("curandState", "hiprandState_t"), + ("CUuuid", "hipUUID"), + ("cudaGraph_t", "hipGraph_t"), + ("cudaGraphExec_t", "hipGraphExec_t"), + ("__nv_bfloat16", "__hip_bfloat16"), + ("__nv_bfloat162", "__hip_bfloat162"), +]) + +CUDA_INCLUDE_MAP = collections.OrderedDict([ + ("include ", _RCCL_HEADER), + ("nvrtc.h", "hip/hiprtc.h"), + ("thrust/system/cuda", "thrust/system/hip"), + ("cub/util_allocator.cuh", "hipcub/hipcub.hpp"), + ("cub/block/block_reduce.cuh", "hipcub/hipcub.hpp"), + ("cub/block/block_raking_layout.cuh", "hipcub/hipcub.hpp"), + ("cub/cub.cuh", "hipcub/hipcub.hpp"), + ("cub/config.cuh", "hipcub/hipcub.hpp"), + ("cub/util_ptx.cuh", "hipcub/hipcub.hpp"), + ("cub/util_type.cuh", "hipcub/hipcub.hpp"), + ("cub/device/device_run_length_encode.cuh", "hipcub/hipcub.hpp"), + ("cub/block/block_load.cuh", "hipcub/hipcub.hpp"), + ("cub/block/block_store.cuh", "hipcub/hipcub.hpp"), + ("cub/block/block_scan.cuh", "hipcub/hipcub.hpp"), + ("cub/device/device_radix_sort.cuh", "hipcub/hipcub.hpp"), + ("cub/device/device_reduce.cuh", "hipcub/hipcub.hpp"), + ("cub/device/device_scan.cuh", "hipcub/hipcub.hpp"), + ("cub/device/device_select.cuh", "hipcub/hipcub.hpp"), + ("nvtx3/nvtx3.hpp", "roctracer/roctx.h"), + ("nvToolsExt.h", "roctracer/roctx.h"), + ("nvml.h", "rocm_smi/rocm_smi.h"), + ("tensorpipe/tensorpipe_cuda.h", "tensorpipe/tensorpipe_hip.h"), +]) + +CUDA_IDENTIFIER_MAP = collections.OrderedDict([ + ("__CUDACC__", "__HIPCC__"), + ("CUDA_ERROR_INVALID_CONTEXT", "hipErrorInvalidContext"), + ("CUDA_ERROR_CONTEXT_ALREADY_CURRENT", "hipErrorContextAlreadyCurrent"), + ("CUDA_ERROR_ARRAY_IS_MAPPED", "hipErrorArrayIsMapped"), + ("CUDA_ERROR_ALREADY_MAPPED", "hipErrorAlreadyMapped"), + ("CUDA_ERROR_ALREADY_ACQUIRED", "hipErrorAlreadyAcquired"), + ("CUDA_ERROR_NOT_MAPPED", "hipErrorNotMapped"), + ("CUDA_ERROR_NOT_MAPPED_AS_ARRAY", "hipErrorNotMappedAsArray"), + ("CUDA_ERROR_NOT_MAPPED_AS_POINTER", "hipErrorNotMappedAsPointer"), + ("CUDA_ERROR_CONTEXT_ALREADY_IN_USE", "hipErrorContextAlreadyInUse"), + ("CUDA_ERROR_INVALID_SOURCE", "hipErrorInvalidSource"), + ("CUDA_ERROR_FILE_NOT_FOUND", "hipErrorFileNotFound"), + ("CUDA_ERROR_NOT_FOUND", "hipErrorNotFound"), + ("CUDA_ERROR_LAUNCH_INCOMPATIBLE_TEXTURING", "hipErrorLaunchIncompatibleTexturing"), + ("CUDA_ERROR_PRIMARY_CONTEXT_ACTIVE", "hipErrorPrimaryContextActive"), + ("CUDA_ERROR_CONTEXT_IS_DESTROYED", "hipErrorContextIsDestroyed"), + ("CUDA_ERROR_NOT_PERMITTED", "hipErrorNotPermitted"), + ("CUDA_ERROR_NOT_SUPPORTED", "hipErrorNotSupported"), + ("cudaErrorMissingConfiguration", "hipErrorMissingConfiguration"), + ("cudaErrorPriorLaunchFailure", "hipErrorPriorLaunchFailure"), + ("cudaErrorInvalidDeviceFunction", "hipErrorInvalidDeviceFunction"), + ("cudaErrorInvalidConfiguration", "hipErrorInvalidConfiguration"), + ("cudaErrorInvalidPitchValue", "hipErrorInvalidPitchValue"), + ("cudaErrorInvalidSymbol", "hipErrorInvalidSymbol"), + ("cudaErrorInvalidHostPointer", "hipErrorInvalidHostPointer"), + ("cudaErrorInvalidDevicePointer", "hipErrorInvalidDevicePointer"), + ("cudaErrorInvalidTexture", "hipErrorInvalidTexture"), + ("cudaErrorInvalidTextureBinding", "hipErrorInvalidTextureBinding"), + ("cudaErrorInvalidChannelDescriptor", "hipErrorInvalidChannelDescriptor"), + ("cudaErrorInvalidMemcpyDirection", "hipErrorInvalidMemcpyDirection"), + ("cudaErrorAddressOfConstant", "hipErrorAddressOfConstant"), + ("cudaErrorTextureFetchFailed", "hipErrorTextureFetchFailed"), + ("cudaErrorTextureNotBound", "hipErrorTextureNotBound"), + ("cudaErrorSynchronizationError", "hipErrorSynchronizationError"), + ("cudaErrorInvalidFilterSetting", "hipErrorInvalidFilterSetting"), + ("cudaErrorInvalidNormSetting", "hipErrorInvalidNormSetting"), + ("cudaErrorMixedDeviceExecution", "hipErrorMixedDeviceExecution"), + ("cudaErrorNotYetImplemented", "hipErrorNotYetImplemented"), + ("cudaErrorMemoryValueTooLarge", "hipErrorMemoryValueTooLarge"), + ("cudaErrorInsufficientDriver", "hipErrorInsufficientDriver"), + ("cudaErrorSetOnActiveProcess", "hipErrorSetOnActiveProcess"), + ("cudaErrorInvalidSurface", "hipErrorInvalidSurface"), + ("cudaErrorDuplicateVariableName", "hipErrorDuplicateVariableName"), + ("cudaErrorDuplicateTextureName", "hipErrorDuplicateTextureName"), + ("cudaErrorDuplicateSurfaceName", "hipErrorDuplicateSurfaceName"), + ("cudaErrorDevicesUnavailable", "hipErrorDevicesUnavailable"), + ("cudaErrorIncompatibleDriverContext", "hipErrorIncompatibleDriverContext"), + ("cudaErrorDeviceAlreadyInUse", "hipErrorDeviceAlreadyInUse"), + ("cudaErrorLaunchMaxDepthExceeded", "hipErrorLaunchMaxDepthExceeded"), + ("cudaErrorLaunchFileScopedTex", "hipErrorLaunchFileScopedTex"), + ("cudaErrorLaunchFileScopedSurf", "hipErrorLaunchFileScopedSurf"), + ("cudaErrorSyncDepthExceeded", "hipErrorSyncDepthExceeded"), + ("cudaErrorLaunchPendingCountExceeded", "hipErrorLaunchPendingCountExceeded"), + ("cudaErrorNotPermitted", "hipErrorNotPermitted"), + ("cudaErrorNotSupported", "hipErrorNotSupported"), + ("cudaErrorStartupFailure", "hipErrorStartupFailure"), + ("cudaErrorApiFailureBase", "hipErrorApiFailureBase"), + ("CUDA_SUCCESS", "hipSuccess"), + ("cudaSuccess", "hipSuccess"), + ("CUDA_ERROR_INVALID_VALUE", "hipErrorInvalidValue"), + ("cudaErrorInvalidValue", "hipErrorInvalidValue"), + ("CUDA_ERROR_OUT_OF_MEMORY", "hipErrorMemoryAllocation"), + ("cudaErrorMemoryAllocation", "hipErrorMemoryAllocation"), + ("CUDA_ERROR_NOT_INITIALIZED", "hipErrorNotInitialized"), + ("cudaErrorInitializationError", "hipErrorInitializationError"), + ("CUDA_ERROR_DEINITIALIZED", "hipErrorDeinitialized"), + ("cudaErrorCudartUnloading", "hipErrorDeinitialized"), + ("CUDA_ERROR_PROFILER_DISABLED", "hipErrorProfilerDisabled"), + ("cudaErrorProfilerDisabled", "hipErrorProfilerDisabled"), + ("CUDA_ERROR_PROFILER_NOT_INITIALIZED", "hipErrorProfilerNotInitialized"), + ("cudaErrorProfilerNotInitialized", "hipErrorProfilerNotInitialized"), + ("CUDA_ERROR_PROFILER_ALREADY_STARTED", "hipErrorProfilerAlreadyStarted"), + ("cudaErrorProfilerAlreadyStarted", "hipErrorProfilerAlreadyStarted"), + ("CUDA_ERROR_PROFILER_ALREADY_STOPPED", "hipErrorProfilerAlreadyStopped"), + ("cudaErrorProfilerAlreadyStopped", "hipErrorProfilerAlreadyStopped"), + ("CUDA_ERROR_NO_DEVICE", "hipErrorNoDevice"), + ("cudaErrorNoDevice", "hipErrorNoDevice"), + ("CUDA_ERROR_INVALID_DEVICE", "hipErrorInvalidDevice"), + ("cudaErrorInvalidDevice", "hipErrorInvalidDevice"), + ("CUDA_ERROR_INVALID_IMAGE", "hipErrorInvalidImage"), + ("cudaErrorInvalidKernelImage", "hipErrorInvalidImage"), + ("CUDA_ERROR_MAP_FAILED", "hipErrorMapFailed"), + ("cudaErrorMapBufferObjectFailed", "hipErrorMapFailed"), + ("CUDA_ERROR_UNMAP_FAILED", "hipErrorUnmapFailed"), + ("cudaErrorUnmapBufferObjectFailed", "hipErrorUnmapFailed"), + ("CUDA_ERROR_NO_BINARY_FOR_GPU", "hipErrorNoBinaryForGpu"), + ("cudaErrorNoKernelImageForDevice", "hipErrorNoBinaryForGpu"), + ("CUDA_ERROR_ECC_UNCORRECTABLE", "hipErrorECCNotCorrectable"), + ("cudaErrorECCUncorrectable", "hipErrorECCNotCorrectable"), + ("CUDA_ERROR_UNSUPPORTED_LIMIT", "hipErrorUnsupportedLimit"), + ("cudaErrorUnsupportedLimit", "hipErrorUnsupportedLimit"), + ("CUDA_ERROR_PEER_ACCESS_UNSUPPORTED", "hipErrorPeerAccessUnsupported"), + ("cudaErrorPeerAccessUnsupported", "hipErrorPeerAccessUnsupported"), + ("CUDA_ERROR_INVALID_PTX", "hipErrorInvalidKernelFile"), + ("cudaErrorInvalidPtx", "hipErrorInvalidKernelFile"), + ("CUDA_ERROR_INVALID_GRAPHICS_CONTEXT", "hipErrorInvalidGraphicsContext"), + ("cudaErrorInvalidGraphicsContext", "hipErrorInvalidGraphicsContext"), + ("CUDA_ERROR_NVLINK_UNCORRECTABLE", "hipErrorNvlinkUncorrectable"), + ("cudaErrorNvlinkUncorrectable", "hipErrorNvlinkUncorrectable"), + ("CUDA_ERROR_SHARED_OBJECT_SYMBOL_NOT_FOUND", "hipErrorSharedObjectSymbolNotFound"), + ("cudaErrorSharedObjectSymbolNotFound", "hipErrorSharedObjectSymbolNotFound"), + ("CUDA_ERROR_SHARED_OBJECT_INIT_FAILED", "hipErrorSharedObjectInitFailed"), + ("cudaErrorSharedObjectInitFailed", "hipErrorSharedObjectInitFailed"), + ("CUDA_ERROR_OPERATING_SYSTEM", "hipErrorOperatingSystem"), + ("cudaErrorOperatingSystem", "hipErrorOperatingSystem"), + ("CUDA_ERROR_INVALID_HANDLE", "hipErrorInvalidResourceHandle"), + ("cudaErrorInvalidResourceHandle", "hipErrorInvalidResourceHandle"), + ("CUDA_ERROR_NOT_READY", "hipErrorNotReady"), + ("cudaErrorNotReady", "hipErrorNotReady"), + ("CUDA_ERROR_ILLEGAL_ADDRESS", "hipErrorIllegalAddress"), + ("cudaErrorIllegalAddress", "hipErrorIllegalAddress"), + ("CUDA_ERROR_LAUNCH_OUT_OF_RESOURCES", "hipErrorLaunchOutOfResources"), + ("cudaErrorLaunchOutOfResources", "hipErrorLaunchOutOfResources"), + ("CUDA_ERROR_LAUNCH_TIMEOUT", "hipErrorLaunchTimeOut"), + ("cudaErrorLaunchTimeout", "hipErrorLaunchTimeOut"), + ("CUDA_ERROR_PEER_ACCESS_ALREADY_ENABLED", "hipErrorPeerAccessAlreadyEnabled"), + ("cudaErrorPeerAccessAlreadyEnabled", "hipErrorPeerAccessAlreadyEnabled"), + ("CUDA_ERROR_PEER_ACCESS_NOT_ENABLED", "hipErrorPeerAccessNotEnabled"), + ("cudaErrorPeerAccessNotEnabled", "hipErrorPeerAccessNotEnabled"), + ("CUDA_ERROR_ASSERT", "hipErrorAssert"), + ("cudaErrorAssert", "hipErrorAssert"), + ("CUDA_ERROR_TOO_MANY_PEERS", "hipErrorTooManyPeers"), + ("cudaErrorTooManyPeers", "hipErrorTooManyPeers"), + ("CUDA_ERROR_HOST_MEMORY_ALREADY_REGISTERED", "hipErrorHostMemoryAlreadyRegistered"), + ("cudaErrorHostMemoryAlreadyRegistered", "hipErrorHostMemoryAlreadyRegistered"), + ("CUDA_ERROR_HOST_MEMORY_NOT_REGISTERED", "hipErrorHostMemoryNotRegistered"), + ("cudaErrorHostMemoryNotRegistered", "hipErrorHostMemoryNotRegistered"), + ("CUDA_ERROR_HARDWARE_STACK_ERROR", "hipErrorHardwareStackError"), + ("cudaErrorHardwareStackError", "hipErrorHardwareStackError"), + ("CUDA_ERROR_ILLEGAL_INSTRUCTION", "hipErrorIllegalInstruction"), + ("cudaErrorIllegalInstruction", "hipErrorIllegalInstruction"), + ("CUDA_ERROR_MISALIGNED_ADDRESS", "hipErrorMisalignedAddress"), + ("cudaErrorMisalignedAddress", "hipErrorMisalignedAddress"), + ("CUDA_ERROR_INVALID_ADDRESS_SPACE", "hipErrorInvalidAddressSpace"), + ("cudaErrorInvalidAddressSpace", "hipErrorInvalidAddressSpace"), + ("CUDA_ERROR_INVALID_PC", "hipErrorInvalidPc"), + ("cudaErrorInvalidPc", "hipErrorInvalidPc"), + ("CUDA_ERROR_LAUNCH_FAILED", "hipErrorLaunchFailure"), + ("cudaErrorLaunchFailure", "hipErrorLaunchFailure"), + ("CUDA_ERROR_UNKNOWN", "hipErrorUnknown"), + ("cudaErrorUnknown", "hipErrorUnknown"), + ("CU_TR_ADDRESS_MODE_WRAP", "HIP_TR_ADDRESS_MODE_WRAP"), + ("CU_TR_ADDRESS_MODE_CLAMP", "HIP_TR_ADDRESS_MODE_CLAMP"), + ("CU_TR_ADDRESS_MODE_MIRROR", "HIP_TR_ADDRESS_MODE_MIRROR"), + ("CU_TR_ADDRESS_MODE_BORDER", "HIP_TR_ADDRESS_MODE_BORDER"), + ("CU_CUBEMAP_FACE_POSITIVE_X", "HIP_CUBEMAP_FACE_POSITIVE_X"), + ("CU_CUBEMAP_FACE_NEGATIVE_X", "HIP_CUBEMAP_FACE_NEGATIVE_X"), + ("CU_CUBEMAP_FACE_POSITIVE_Y", "HIP_CUBEMAP_FACE_POSITIVE_Y"), + ("CU_CUBEMAP_FACE_NEGATIVE_Y", "HIP_CUBEMAP_FACE_NEGATIVE_Y"), + ("CU_CUBEMAP_FACE_POSITIVE_Z", "HIP_CUBEMAP_FACE_POSITIVE_Z"), + ("CU_CUBEMAP_FACE_NEGATIVE_Z", "HIP_CUBEMAP_FACE_NEGATIVE_Z"), + ("CU_AD_FORMAT_UNSIGNED_INT8", "HIP_AD_FORMAT_UNSIGNED_INT8"), + ("CU_AD_FORMAT_UNSIGNED_INT16", "HIP_AD_FORMAT_UNSIGNED_INT16"), + ("CU_AD_FORMAT_UNSIGNED_INT32", "HIP_AD_FORMAT_UNSIGNED_INT32"), + ("CU_AD_FORMAT_SIGNED_INT8", "HIP_AD_FORMAT_SIGNED_INT8"), + ("CU_AD_FORMAT_SIGNED_INT16", "HIP_AD_FORMAT_SIGNED_INT16"), + ("CU_AD_FORMAT_SIGNED_INT32", "HIP_AD_FORMAT_SIGNED_INT32"), + ("CU_AD_FORMAT_HALF", "HIP_AD_FORMAT_HALF"), + ("CU_AD_FORMAT_FLOAT", "HIP_AD_FORMAT_FLOAT"), + ("CU_COMPUTEMODE_DEFAULT", "hipComputeModeDefault"), + ("CU_COMPUTEMODE_EXCLUSIVE", "hipComputeModeExclusive"), + ("CU_COMPUTEMODE_PROHIBITED", "hipComputeModeProhibited"), + ("CU_COMPUTEMODE_EXCLUSIVE_PROCESS", "hipComputeModeExclusiveProcess"), + ("CU_MEM_ADVISE_SET_READ_MOSTLY", "hipMemAdviseSetReadMostly"), + ("CU_MEM_ADVISE_UNSET_READ_MOSTLY", "hipMemAdviseUnsetReadMostly"), + ("CU_MEM_ADVISE_SET_PREFERRED_LOCATION", "hipMemAdviseSetPreferredLocation"), + ("CU_MEM_ADVISE_UNSET_PREFERRED_LOCATION", "hipMemAdviseUnsetPreferredLocation"), + ("CU_MEM_ADVISE_SET_ACCESSED_BY", "hipMemAdviseSetAccessedBy"), + ("CU_MEM_ADVISE_UNSET_ACCESSED_BY", "hipMemAdviseUnsetAccessedBy"), + ("CU_MEM_RANGE_ATTRIBUTE_READ_MOSTLY", "hipMemRangeAttributeReadMostly"), + ("CU_MEM_RANGE_ATTRIBUTE_PREFERRED_LOCATION", "hipMemRangeAttributePreferredLocation"), + ("CU_MEM_RANGE_ATTRIBUTE_ACCESSED_BY", "hipMemRangeAttributeAccessedBy"), + ("CU_MEM_RANGE_ATTRIBUTE_LAST_PREFETCH_LOCATION", "hipMemRangeAttributeLastPrefetchLocation"), + ("CU_CTX_SCHED_AUTO", "HIP_CTX_SCHED_AUTO"), + ("CU_CTX_SCHED_SPIN", "HIP_CTX_SCHED_SPIN"), + ("CU_CTX_SCHED_YIELD", "HIP_CTX_SCHED_YIELD"), + ("CU_CTX_SCHED_BLOCKING_SYNC", "HIP_CTX_SCHED_BLOCKING_SYNC"), + ("CU_CTX_BLOCKING_SYNC", "HIP_CTX_BLOCKING_SYNC"), + ("CU_CTX_SCHED_MASK", "HIP_CTX_SCHED_MASK"), + ("CU_CTX_MAP_HOST", "HIP_CTX_MAP_HOST"), + ("CU_CTX_LMEM_RESIZE_TO_MAX", "HIP_CTX_LMEM_RESIZE_TO_MAX"), + ("CU_CTX_FLAGS_MASK", "HIP_CTX_FLAGS_MASK"), + ("CU_LAUNCH_PARAM_BUFFER_POINTER", "HIP_LAUNCH_PARAM_BUFFER_POINTER"), + ("CU_LAUNCH_PARAM_BUFFER_SIZE", "HIP_LAUNCH_PARAM_BUFFER_SIZE"), + ("CU_LAUNCH_PARAM_END", "HIP_LAUNCH_PARAM_END"), + ("CU_IPC_HANDLE_SIZE", "HIP_IPC_HANDLE_SIZE"), + ("CU_MEMHOSTALLOC_DEVICEMAP", "HIP_MEMHOSTALLOC_DEVICEMAP"), + ("CU_MEMHOSTALLOC_PORTABLE", "HIP_MEMHOSTALLOC_PORTABLE"), + ("CU_MEMHOSTALLOC_WRITECOMBINED", "HIP_MEMHOSTALLOC_WRITECOMBINED"), + ("CU_MEMHOSTREGISTER_DEVICEMAP", "HIP_MEMHOSTREGISTER_DEVICEMAP"), + ("CU_MEMHOSTREGISTER_IOMEMORY", "HIP_MEMHOSTREGISTER_IOMEMORY"), + ("CU_MEMHOSTREGISTER_PORTABLE", "HIP_MEMHOSTREGISTER_PORTABLE"), + ("CU_PARAM_TR_DEFAULT", "HIP_PARAM_TR_DEFAULT"), + ("CU_STREAM_LEGACY", "HIP_STREAM_LEGACY"), + ("CU_STREAM_PER_THREAD", "HIP_STREAM_PER_THREAD"), + ("CU_TRSA_OVERRIDE_FORMAT", "HIP_TRSA_OVERRIDE_FORMAT"), + ("CU_TRSF_NORMALIZED_COORDINATES", "HIP_TRSF_NORMALIZED_COORDINATES"), + ("CU_TRSF_READ_AS_INTEGER", "HIP_TRSF_READ_AS_INTEGER"), + ("CU_TRSF_SRGB", "HIP_TRSF_SRGB"), + ("CUDA_ARRAY3D_2DARRAY", "HIP_ARRAY3D_LAYERED"), + ("CUDA_ARRAY3D_CUBEMAP", "HIP_ARRAY3D_CUBEMAP"), + ("CUDA_ARRAY3D_DEPTH_TEXTURE", "HIP_ARRAY3D_DEPTH_TEXTURE"), + ("CUDA_ARRAY3D_LAYERED", "HIP_ARRAY3D_LAYERED"), + ("CUDA_ARRAY3D_SURFACE_LDST", "HIP_ARRAY3D_SURFACE_LDST"), + ("CUDA_ARRAY3D_TEXTURE_GATHER", "HIP_ARRAY3D_TEXTURE_GATHER"), + ("CU_DEVICE_ATTRIBUTE_MAX_THREADS_PER_BLOCK", "hipDeviceAttributeMaxThreadsPerBlock"), + ("CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_X", "hipDeviceAttributeMaxBlockDimX"), + ("CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_Y", "hipDeviceAttributeMaxBlockDimY"), + ("CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_Z", "hipDeviceAttributeMaxBlockDimZ"), + ("CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_X", "hipDeviceAttributeMaxGridDimX"), + ("CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_Y", "hipDeviceAttributeMaxGridDimY"), + ("CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_Z", "hipDeviceAttributeMaxGridDimZ"), + ("CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_BLOCK", "hipDeviceAttributeMaxSharedMemoryPerBlock"), + ("CU_DEVICE_ATTRIBUTE_SHARED_MEMORY_PER_BLOCK", "hipDeviceAttributeMaxSharedMemoryPerBlock"), + ("CU_DEVICE_ATTRIBUTE_TOTAL_CONSTANT_MEMORY", "hipDeviceAttributeTotalConstantMemory"), + ("CU_DEVICE_ATTRIBUTE_WARP_SIZE", "hipDeviceAttributeWarpSize"), + ("CU_DEVICE_ATTRIBUTE_MAX_PITCH", "hipDeviceAttributeMaxPitch"), + ("CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_BLOCK", "hipDeviceAttributeMaxRegistersPerBlock"), + ("CU_DEVICE_ATTRIBUTE_REGISTERS_PER_BLOCK", "hipDeviceAttributeMaxRegistersPerBlock"), + ("CU_DEVICE_ATTRIBUTE_CLOCK_RATE", "hipDeviceAttributeClockRate"), + ("CU_DEVICE_ATTRIBUTE_TEXTURE_ALIGNMENT", "hipDeviceAttributeTextureAlignment"), + ("CU_DEVICE_ATTRIBUTE_GPU_OVERLAP", "hipDeviceAttributeAsyncEngineCount"), + ("CU_DEVICE_ATTRIBUTE_MULTIPROCESSOR_COUNT", "hipDeviceAttributeMultiprocessorCount"), + ("CU_DEVICE_ATTRIBUTE_KERNEL_EXEC_TIMEOUT", "hipDeviceAttributeKernelExecTimeout"), + ("CU_DEVICE_ATTRIBUTE_INTEGRATED", "hipDeviceAttributeIntegrated"), + ("CU_DEVICE_ATTRIBUTE_CAN_MAP_HOST_MEMORY", "hipDeviceAttributeCanMapHostMemory"), + ("CU_DEVICE_ATTRIBUTE_COMPUTE_MODE", "hipDeviceAttributeComputeMode"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_WIDTH", "hipDeviceAttributeMaxTexture1DWidth"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_WIDTH", "hipDeviceAttributeMaxTexture2DWidth"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_HEIGHT", "hipDeviceAttributeMaxTexture2DHeight"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_WIDTH", "hipDeviceAttributeMaxTexture3DWidth"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_HEIGHT", "hipDeviceAttributeMaxTexture3DHeight"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_DEPTH", "hipDeviceAttributeMaxTexture3DDepth"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_WIDTH", "hipDeviceAttributeMaxTexture2DLayeredWidth"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_HEIGHT", "hipDeviceAttributeMaxTexture2DLayeredHeight"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_LAYERS", "hipDeviceAttributeMaxTexture2DLayeredLayers"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_ARRAY_WIDTH", "hipDeviceAttributeMaxTexture2DLayeredWidth"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_ARRAY_HEIGHT", "hipDeviceAttributeMaxTexture2DLayeredHeight"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_ARRAY_NUMSLICES", "hipDeviceAttributeMaxTexture2DLayeredLayers"), + ("CU_DEVICE_ATTRIBUTE_SURFACE_ALIGNMENT", "hipDeviceAttributeSurfaceAlignment"), + ("CU_DEVICE_ATTRIBUTE_CONCURRENT_KERNELS", "hipDeviceAttributeConcurrentKernels"), + ("CU_DEVICE_ATTRIBUTE_ECC_ENABLED", "hipDeviceAttributeEccEnabled"), + ("CU_DEVICE_ATTRIBUTE_PCI_BUS_ID", "hipDeviceAttributePciBusId"), + ("CU_DEVICE_ATTRIBUTE_PCI_DEVICE_ID", "hipDeviceAttributePciDeviceId"), + ("CU_DEVICE_ATTRIBUTE_TCC_DRIVER", "hipDeviceAttributeTccDriver"), + ("CU_DEVICE_ATTRIBUTE_MEMORY_CLOCK_RATE", "hipDeviceAttributeMemoryClockRate"), + ("CU_DEVICE_ATTRIBUTE_GLOBAL_MEMORY_BUS_WIDTH", "hipDeviceAttributeMemoryBusWidth"), + ("CU_DEVICE_ATTRIBUTE_L2_CACHE_SIZE", "hipDeviceAttributeL2CacheSize"), + ("CU_DEVICE_ATTRIBUTE_MAX_THREADS_PER_MULTIPROCESSOR", "hipDeviceAttributeMaxThreadsPerMultiProcessor"), + ("CU_DEVICE_ATTRIBUTE_ASYNC_ENGINE_COUNT", "hipDeviceAttributeAsyncEngineCount"), + ("CU_DEVICE_ATTRIBUTE_UNIFIED_ADDRESSING", "hipDeviceAttributeUnifiedAddressing"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_LAYERED_WIDTH", "hipDeviceAttributeMaxTexture1DLayeredWidth"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_LAYERED_LAYERS", "hipDeviceAttributeMaxTexture1DLayeredLayers"), + ("CU_DEVICE_ATTRIBUTE_CAN_TEX2D_GATHER", "hipDeviceAttributeCanTex2DGather"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_GATHER_WIDTH", "hipDeviceAttributeMaxTexture2DGatherWidth"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_GATHER_HEIGHT", "hipDeviceAttributeMaxTexture2DGatherHeight"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_WIDTH_ALTERNATE", "hipDeviceAttributeMaxTexture3DWidthAlternate"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_HEIGHT_ALTERNATE", "hipDeviceAttributeMaxTexture3DHeightAlternate"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_DEPTH_ALTERNATE", "hipDeviceAttributeMaxTexture3DDepthAlternate"), + ("CU_DEVICE_ATTRIBUTE_PCI_DOMAIN_ID", "hipDeviceAttributePciDomainId"), + ("CU_DEVICE_ATTRIBUTE_TEXTURE_PITCH_ALIGNMENT", "hipDeviceAttributeTexturePitchAlignment"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURECUBEMAP_WIDTH", "hipDeviceAttributeMaxTextureCubemapWidth"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURECUBEMAP_LAYERED_WIDTH", "hipDeviceAttributeMaxTextureCubemapLayeredWidth"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURECUBEMAP_LAYERED_LAYERS", "hipDeviceAttributeMaxTextureCubemapLayeredLayers"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE1D_WIDTH", "hipDeviceAttributeMaxSurface1DWidth"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_WIDTH", "hipDeviceAttributeMaxSurface2DWidth"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_HEIGHT", "hipDeviceAttributeMaxSurface2DHeight"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE3D_WIDTH", "hipDeviceAttributeMaxSurface3DWidth"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE3D_HEIGHT", "hipDeviceAttributeMaxSurface3DHeight"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE3D_DEPTH", "hipDeviceAttributeMaxSurface3DDepth"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE1D_LAYERED_WIDTH", "hipDeviceAttributeMaxSurface1DLayeredWidth"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE1D_LAYERED_LAYERS", "hipDeviceAttributeMaxSurface1DLayeredLayers"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_LAYERED_WIDTH", "hipDeviceAttributeMaxSurface2DLayeredWidth"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_LAYERED_HEIGHT", "hipDeviceAttributeMaxSurface2DLayeredHeight"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_LAYERED_LAYERS", "hipDeviceAttributeMaxSurface2DLayeredLayers"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACECUBEMAP_WIDTH", "hipDeviceAttributeMaxSurfaceCubemapWidth"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACECUBEMAP_LAYERED_WIDTH", "hipDeviceAttributeMaxSurfaceCubemapLayeredWidth"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACECUBEMAP_LAYERED_LAYERS", "hipDeviceAttributeMaxSurfaceCubemapLayeredLayers"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_LINEAR_WIDTH", "hipDeviceAttributeMaxTexture1DLinearWidth"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_WIDTH", "hipDeviceAttributeMaxTexture2DLinearWidth"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_HEIGHT", "hipDeviceAttributeMaxTexture2DLinearHeight"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_PITCH", "hipDeviceAttributeMaxTexture2DLinearPitch"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_MIPMAPPED_WIDTH", "hipDeviceAttributeMaxTexture2DMipmappedWidth"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_MIPMAPPED_HEIGHT", "hipDeviceAttributeMaxTexture2DMipmappedHeight"), + ("CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJOR", "hipDeviceAttributeComputeCapabilityMajor"), + ("CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MINOR", "hipDeviceAttributeComputeCapabilityMinor"), + ("CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_MIPMAPPED_WIDTH", "hipDeviceAttributeMaxTexture1DMipmappedWidth"), + ("CU_DEVICE_ATTRIBUTE_STREAM_PRIORITIES_SUPPORTED", "hipDeviceAttributeStreamPrioritiesSupported"), + ("CU_DEVICE_ATTRIBUTE_GLOBAL_L1_CACHE_SUPPORTED", "hipDeviceAttributeGlobalL1CacheSupported"), + ("CU_DEVICE_ATTRIBUTE_LOCAL_L1_CACHE_SUPPORTED", "hipDeviceAttributeLocalL1CacheSupported"), + ("CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_MULTIPROCESSOR", "hipDeviceAttributeMaxSharedMemoryPerMultiprocessor"), + ("CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_MULTIPROCESSOR", "hipDeviceAttributeMaxRegistersPerMultiprocessor"), + ("CU_DEVICE_ATTRIBUTE_MANAGED_MEMORY", "hipDeviceAttributeManagedMemory"), + ("CU_DEVICE_ATTRIBUTE_MULTI_GPU_BOARD", "hipDeviceAttributeIsMultiGpuBoard"), + ("CU_DEVICE_ATTRIBUTE_MULTI_GPU_BOARD_GROUP_ID", "hipDeviceAttributeMultiGpuBoardGroupId"), + ("CU_DEVICE_ATTRIBUTE_HOST_NATIVE_ATOMIC_SUPPORTED", "hipDeviceAttributeHostNativeAtomicSupported"), + ("CU_DEVICE_ATTRIBUTE_SINGLE_TO_DOUBLE_PRECISION_PERF_RATIO", "hipDeviceAttributeSingleToDoublePrecisionPerfRatio"), + ("CU_DEVICE_ATTRIBUTE_PAGEABLE_MEMORY_ACCESS", "hipDeviceAttributePageableMemoryAccess"), + ("CU_DEVICE_ATTRIBUTE_CONCURRENT_MANAGED_ACCESS", "hipDeviceAttributeConcurrentManagedAccess"), + ("CU_DEVICE_ATTRIBUTE_COMPUTE_PREEMPTION_SUPPORTED", "hipDeviceAttributeComputePreemptionSupported"), + ("CU_DEVICE_ATTRIBUTE_CAN_USE_HOST_POINTER_FOR_REGISTERED_MEM", "hipDeviceAttributeCanUseHostPointerForRegisteredMem"), + ("CU_DEVICE_ATTRIBUTE_MAX", "hipDeviceAttributeMax"), + ("CU_POINTER_ATTRIBUTE_CONTEXT", "hipPointerAttributeContext"), + ("CU_POINTER_ATTRIBUTE_MEMORY_TYPE", "hipPointerAttributeMemoryType"), + ("CU_POINTER_ATTRIBUTE_DEVICE_POINTER", "hipPointerAttributeDevicePointer"), + ("CU_POINTER_ATTRIBUTE_HOST_POINTER", "hipPointerAttributeHostPointer"), + ("CU_POINTER_ATTRIBUTE_P2P_TOKENS", "hipPointerAttributeP2pTokens"), + ("CU_POINTER_ATTRIBUTE_SYNC_MEMOPS", "hipPointerAttributeSyncMemops"), + ("CU_POINTER_ATTRIBUTE_BUFFER_ID", "hipPointerAttributeBufferId"), + ("CU_POINTER_ATTRIBUTE_IS_MANAGED", "hipPointerAttributeIsManaged"), + ("CU_FUNC_ATTRIBUTE_MAX_THREADS_PER_BLOCK", "hipFuncAttributeMaxThreadsPerBlocks"), + ("CU_FUNC_ATTRIBUTE_SHARED_SIZE_BYTES", "hipFuncAttributeSharedSizeBytes"), + ("CU_FUNC_ATTRIBUTE_MAX_DYNAMIC_SHARED_SIZE_BYTES", "hipFuncAttributeMaxDynamicSharedMemorySize"), + ("CU_FUNC_ATTRIBUTE_CONST_SIZE_BYTES", "hipFuncAttributeConstSizeBytes"), + ("CU_FUNC_ATTRIBUTE_LOCAL_SIZE_BYTES", "hipFuncAttributeLocalSizeBytes"), + ("CU_FUNC_ATTRIBUTE_NUM_REGS", "hipFuncAttributeNumRegs"), + ("CU_FUNC_ATTRIBUTE_PTX_VERSION", "hipFuncAttributePtxVersion"), + ("CU_FUNC_ATTRIBUTE_BINARY_VERSION", "hipFuncAttributeBinaryVersion"), + ("CU_FUNC_ATTRIBUTE_CACHE_MODE_CA", "hipFuncAttributeCacheModeCA"), + ("CU_FUNC_ATTRIBUTE_MAX", "hipFuncAttributeMax"), + ("CU_GRAPHICS_MAP_RESOURCE_FLAGS_NONE", "hipGraphicsMapFlagsNone"), + ("CU_GRAPHICS_MAP_RESOURCE_FLAGS_READ_ONLY", "hipGraphicsMapFlagsReadOnly"), + ("CU_GRAPHICS_MAP_RESOURCE_FLAGS_WRITE_DISCARD", "hipGraphicsMapFlagsWriteDiscard"), + ("CU_GRAPHICS_REGISTER_FLAGS_NONE", "hipGraphicsRegisterFlagsNone"), + ("CU_GRAPHICS_REGISTER_FLAGS_READ_ONLY", "hipGraphicsRegisterFlagsReadOnly"), + ("CU_GRAPHICS_REGISTER_FLAGS_WRITE_DISCARD", "hipGraphicsRegisterFlagsWriteDiscard"), + ("CU_GRAPHICS_REGISTER_FLAGS_SURFACE_LDST", "hipGraphicsRegisterFlagsSurfaceLoadStore"), + ("CU_GRAPHICS_REGISTER_FLAGS_TEXTURE_GATHER", "hipGraphicsRegisterFlagsTextureGather"), + ("CU_OCCUPANCY_DEFAULT", "hipOccupancyDefault"), + ("CU_OCCUPANCY_DISABLE_CACHING_OVERRIDE", "hipOccupancyDisableCachingOverride"), + ("CU_FUNC_CACHE_PREFER_NONE", "hipFuncCachePreferNone"), + ("CU_FUNC_CACHE_PREFER_SHARED", "hipFuncCachePreferShared"), + ("CU_FUNC_CACHE_PREFER_L1", "hipFuncCachePreferL1"), + ("CU_FUNC_CACHE_PREFER_EQUAL", "hipFuncCachePreferEqual"), + ("CU_IPC_MEM_LAZY_ENABLE_PEER_ACCESS", "hipIpcMemLazyEnablePeerAccess"), + ("CUDA_IPC_HANDLE_SIZE", "HIP_IPC_HANDLE_SIZE"), + ("CU_JIT_CACHE_OPTION_NONE", "hipJitCacheModeOptionNone"), + ("CU_JIT_CACHE_OPTION_CG", "hipJitCacheModeOptionCG"), + ("CU_JIT_CACHE_OPTION_CA", "hipJitCacheModeOptionCA"), + ("CU_PREFER_PTX", "hipJitFallbackPreferPtx"), + ("CU_PREFER_BINARY", "hipJitFallbackPreferBinary"), + ("CU_JIT_MAX_REGISTERS", "hipJitOptionMaxRegisters"), + ("CU_JIT_THREADS_PER_BLOCK", "hipJitOptionThreadsPerBlock"), + ("CU_JIT_WALL_TIME", "hipJitOptionWallTime"), + ("CU_JIT_INFO_LOG_BUFFER", "hipJitOptionInfoLogBuffer"), + ("CU_JIT_INFO_LOG_BUFFER_SIZE_BYTES", "hipJitOptionInfoLogBufferSizeBytes"), + ("CU_JIT_ERROR_LOG_BUFFER", "hipJitOptionErrorLogBuffer"), + ("CU_JIT_ERROR_LOG_BUFFER_SIZE_BYTES", "hipJitOptionErrorLogBufferSizeBytes"), + ("CU_JIT_OPTIMIZATION_LEVEL", "hipJitOptionOptimizationLevel"), + ("CU_JIT_TARGET_FROM_CUCONTEXT", "hipJitOptionTargetFromContext"), + ("CU_JIT_TARGET", "hipJitOptionTarget"), + ("CU_JIT_FALLBACK_STRATEGY", "hipJitOptionFallbackStrategy"), + ("CU_JIT_GENERATE_DEBUG_INFO", "hipJitOptionGenerateDebugInfo"), + ("CU_JIT_LOG_VERBOSE", "hipJitOptionLogVerbose"), + ("CU_JIT_GENERATE_LINE_INFO", "hipJitOptionGenerateLineInfo"), + ("CU_JIT_CACHE_MODE", "hipJitOptionCacheMode"), + ("CU_JIT_NEW_SM3X_OPT", "hipJitOptionSm3xOpt"), + ("CU_JIT_FAST_COMPILE", "hipJitOptionFastCompile"), + ("CU_JIT_NUM_OPTIONS", "hipJitOptionNumOptions"), + ("CU_TARGET_COMPUTE_10", "hipJitTargetCompute10"), + ("CU_TARGET_COMPUTE_11", "hipJitTargetCompute11"), + ("CU_TARGET_COMPUTE_12", "hipJitTargetCompute12"), + ("CU_TARGET_COMPUTE_13", "hipJitTargetCompute13"), + ("CU_TARGET_COMPUTE_20", "hipJitTargetCompute20"), + ("CU_TARGET_COMPUTE_21", "hipJitTargetCompute21"), + ("CU_TARGET_COMPUTE_30", "hipJitTargetCompute30"), + ("CU_TARGET_COMPUTE_32", "hipJitTargetCompute32"), + ("CU_TARGET_COMPUTE_35", "hipJitTargetCompute35"), + ("CU_TARGET_COMPUTE_37", "hipJitTargetCompute37"), + ("CU_TARGET_COMPUTE_50", "hipJitTargetCompute50"), + ("CU_TARGET_COMPUTE_52", "hipJitTargetCompute52"), + ("CU_TARGET_COMPUTE_53", "hipJitTargetCompute53"), + ("CU_TARGET_COMPUTE_60", "hipJitTargetCompute60"), + ("CU_TARGET_COMPUTE_61", "hipJitTargetCompute61"), + ("CU_TARGET_COMPUTE_62", "hipJitTargetCompute62"), + ("CU_JIT_INPUT_CUBIN", "hipJitInputTypeBin"), + ("CU_JIT_INPUT_PTX", "hipJitInputTypePtx"), + ("CU_JIT_INPUT_FATBINARY", "hipJitInputTypeFatBinary"), + ("CU_JIT_INPUT_OBJECT", "hipJitInputTypeObject"), + ("CU_JIT_INPUT_LIBRARY", "hipJitInputTypeLibrary"), + ("CU_JIT_NUM_INPUT_TYPES", "hipJitInputTypeNumInputTypes"), + ("CU_LIMIT_STACK_SIZE", "hipLimitStackSize"), + ("CU_LIMIT_PRINTF_FIFO_SIZE", "hipLimitPrintfFifoSize"), + ("CU_LIMIT_MALLOC_HEAP_SIZE", "hipLimitMallocHeapSize"), + ("CU_LIMIT_DEV_RUNTIME_SYNC_DEPTH", "hipLimitDevRuntimeSyncDepth"), + ("CU_LIMIT_DEV_RUNTIME_PENDING_LAUNCH_COUNT", "hipLimitDevRuntimePendingLaunchCount"), + ("CU_MEM_ATTACH_GLOBAL", "hipMemAttachGlobal"), + ("CU_MEM_ATTACH_HOST", "hipMemAttachHost"), + ("CU_MEM_ATTACH_SINGLE", "hipMemAttachSingle"), + ("CU_MEMORYTYPE_HOST", "hipMemTypeHost"), + ("CU_MEMORYTYPE_DEVICE", "hipMemTypeDevice"), + ("CU_MEMORYTYPE_ARRAY", "hipMemTypeArray"), + ("CU_MEMORYTYPE_UNIFIED", "hipMemTypeUnified"), + ("CU_MEMHOSTREGISTER_READ_ONLY", "hipHostRegisterReadOnly"), + ("CU_MEMPOOL_ATTR_RELEASE_THRESHOLD", "hipMemPoolAttrReleaseThreshold"), + ("CU_MEMPOOL_ATTR_RESERVED_MEM_CURRENT", "hipMemPoolAttrReservedMemCurrent"), + ("CU_MEMPOOL_ATTR_RESERVED_MEM_HIGH", "hipMemPoolAttrReservedMemHigh"), + ("CU_MEMPOOL_ATTR_REUSE_ALLOW_INTERNAL_DEPENDENCIES", "hipMemPoolReuseAllowInternalDependencies"), + ("CU_MEMPOOL_ATTR_REUSE_ALLOW_OPPORTUNISTIC", "hipMemPoolReuseAllowOpportunistic"), + ("CU_MEMPOOL_ATTR_REUSE_FOLLOW_EVENT_DEPENDENCIES", "hipMemPoolReuseFollowEventDependencies"), + ("CU_MEMPOOL_ATTR_USED_MEM_CURRENT", "hipMemPoolAttrUsedMemCurrent"), + ("CU_MEMPOOL_ATTR_USED_MEM_HIGH", "hipMemPoolAttrUsedMemHigh"), + ("CU_MEM_ACCESS_FLAGS_PROT_NONE", "hipMemAccessFlagsProtNone"), + ("CU_MEM_ACCESS_FLAGS_PROT_READ", "hipMemAccessFlagsProtRead"), + ("CU_MEM_ACCESS_FLAGS_PROT_READWRITE", "hipMemAccessFlagsProtReadWrite"), + ("CU_MEM_ALLOCATION_TYPE_INVALID", "hipMemAllocationTypeInvalid"), + ("CU_MEM_ALLOCATION_TYPE_MAX", "hipMemAllocationTypeMax"), + ("CU_MEM_ALLOCATION_TYPE_PINNED", "hipMemAllocationTypePinned"), + ("CU_MEM_ALLOC_GRANULARITY_MINIMUM", "hipMemAllocationGranularityMinimum"), + ("CU_MEM_ALLOC_GRANULARITY_RECOMMENDED", "hipMemAllocationGranularityRecommended"), + ("CU_MEM_HANDLE_TYPE_GENERIC", "hipMemHandleTypeGeneric"), + ("CU_MEM_HANDLE_TYPE_NONE", "hipMemHandleTypeNone"), + ("CU_MEM_HANDLE_TYPE_POSIX_FILE_DESCRIPTOR", "hipMemHandleTypePosixFileDescriptor"), + ("CU_MEM_HANDLE_TYPE_WIN32", "hipMemHandleTypeWin32"), + ("CU_MEM_HANDLE_TYPE_WIN32_KMT", "hipMemHandleTypeWin32Kmt"), + ("CU_MEM_LOCATION_TYPE_DEVICE", "hipMemLocationTypeDevice"), + ("CU_MEM_LOCATION_TYPE_HOST", "hipMemLocationTypeHost"), + ("CU_MEM_LOCATION_TYPE_INVALID", "hipMemLocationTypeInvalid"), + ("CU_MEM_OPERATION_TYPE_MAP", "hipMemOperationTypeMap"), + ("CU_MEM_OPERATION_TYPE_UNMAP", "hipMemOperationTypeUnmap"), + ("CU_RESOURCE_TYPE_ARRAY", "hipResourceTypeArray"), + ("CU_RESOURCE_TYPE_MIPMAPPED_ARRAY", "hipResourceTypeMipmappedArray"), + ("CU_RESOURCE_TYPE_LINEAR", "hipResourceTypeLinear"), + ("CU_RESOURCE_TYPE_PITCH2D", "hipResourceTypePitch2D"), + ("CU_RES_VIEW_FORMAT_NONE", "hipResViewFormatNone"), + ("CU_RES_VIEW_FORMAT_UINT_1X8", "hipResViewFormatUnsignedChar1"), + ("CU_RES_VIEW_FORMAT_UINT_2X8", "hipResViewFormatUnsignedChar2"), + ("CU_RES_VIEW_FORMAT_UINT_4X8", "hipResViewFormatUnsignedChar4"), + ("CU_RES_VIEW_FORMAT_SINT_1X8", "hipResViewFormatSignedChar1"), + ("CU_RES_VIEW_FORMAT_SINT_2X8", "hipResViewFormatSignedChar2"), + ("CU_RES_VIEW_FORMAT_SINT_4X8", "hipResViewFormatSignedChar4"), + ("CU_RES_VIEW_FORMAT_UINT_1X16", "hipResViewFormatUnsignedShort1"), + ("CU_RES_VIEW_FORMAT_UINT_2X16", "hipResViewFormatUnsignedShort2"), + ("CU_RES_VIEW_FORMAT_UINT_4X16", "hipResViewFormatUnsignedShort4"), + ("CU_RES_VIEW_FORMAT_SINT_1X16", "hipResViewFormatSignedShort1"), + ("CU_RES_VIEW_FORMAT_SINT_2X16", "hipResViewFormatSignedShort2"), + ("CU_RES_VIEW_FORMAT_SINT_4X16", "hipResViewFormatSignedShort4"), + ("CU_RES_VIEW_FORMAT_UINT_1X32", "hipResViewFormatUnsignedInt1"), + ("CU_RES_VIEW_FORMAT_UINT_2X32", "hipResViewFormatUnsignedInt2"), + ("CU_RES_VIEW_FORMAT_UINT_4X32", "hipResViewFormatUnsignedInt4"), + ("CU_RES_VIEW_FORMAT_SINT_1X32", "hipResViewFormatSignedInt1"), + ("CU_RES_VIEW_FORMAT_SINT_2X32", "hipResViewFormatSignedInt2"), + ("CU_RES_VIEW_FORMAT_SINT_4X32", "hipResViewFormatSignedInt4"), + ("CU_RES_VIEW_FORMAT_FLOAT_1X16", "hipResViewFormatHalf1"), + ("CU_RES_VIEW_FORMAT_FLOAT_2X16", "hipResViewFormatHalf2"), + ("CU_RES_VIEW_FORMAT_FLOAT_4X16", "hipResViewFormatHalf4"), + ("CU_RES_VIEW_FORMAT_FLOAT_1X32", "hipResViewFormatFloat1"), + ("CU_RES_VIEW_FORMAT_FLOAT_2X32", "hipResViewFormatFloat2"), + ("CU_RES_VIEW_FORMAT_FLOAT_4X32", "hipResViewFormatFloat4"), + ("CU_RES_VIEW_FORMAT_UNSIGNED_BC1", "hipResViewFormatUnsignedBlockCompressed1"), + ("CU_RES_VIEW_FORMAT_UNSIGNED_BC2", "hipResViewFormatUnsignedBlockCompressed2"), + ("CU_RES_VIEW_FORMAT_UNSIGNED_BC3", "hipResViewFormatUnsignedBlockCompressed3"), + ("CU_RES_VIEW_FORMAT_UNSIGNED_BC4", "hipResViewFormatUnsignedBlockCompressed4"), + ("CU_RES_VIEW_FORMAT_SIGNED_BC4", "hipResViewFormatSignedBlockCompressed4"), + ("CU_RES_VIEW_FORMAT_UNSIGNED_BC5", "hipResViewFormatUnsignedBlockCompressed5"), + ("CU_RES_VIEW_FORMAT_SIGNED_BC5", "hipResViewFormatSignedBlockCompressed5"), + ("CU_RES_VIEW_FORMAT_UNSIGNED_BC6H", "hipResViewFormatUnsignedBlockCompressed6H"), + ("CU_RES_VIEW_FORMAT_SIGNED_BC6H", "hipResViewFormatSignedBlockCompressed6H"), + ("CU_RES_VIEW_FORMAT_UNSIGNED_BC7", "hipResViewFormatUnsignedBlockCompressed7"), + ("CU_SHARED_MEM_CONFIG_DEFAULT_BANK_SIZE", "hipSharedMemBankSizeDefault"), + ("CU_SHARED_MEM_CONFIG_FOUR_BYTE_BANK_SIZE", "hipSharedMemBankSizeFourByte"), + ("CU_SHARED_MEM_CONFIG_EIGHT_BYTE_BANK_SIZE", "hipSharedMemBankSizeEightByte"), + ("CU_STREAM_DEFAULT", "hipStreamDefault"), + ("CU_STREAM_NON_BLOCKING", "hipStreamNonBlocking"), + ("CU_STREAM_WAIT_VALUE_GEQ", "hipStreamWaitValueGeq"), + ("CU_STREAM_WAIT_VALUE_EQ", "hipStreamWaitValueEq"), + ("CU_STREAM_WAIT_VALUE_AND", "hipStreamWaitValueAnd"), + ("CU_STREAM_WAIT_VALUE_FLUSH", "hipStreamWaitValueFlush"), + ("CU_STREAM_WRITE_VALUE_DEFAULT", "hipStreamWriteValueDefault"), + ("CU_STREAM_WRITE_VALUE_NO_MEMORY_BARRIER", "hipStreamWriteValueNoMemoryBarrier"), + ("CU_STREAM_MEM_OP_WAIT_VALUE_32", "hipStreamBatchMemOpWaitValue32"), + ("CU_STREAM_MEM_OP_WRITE_VALUE_32", "hipStreamBatchMemOpWriteValue32"), + ("CU_STREAM_MEM_OP_FLUSH_REMOTE_WRITES", "hipStreamBatchMemOpFlushRemoteWrites"), + ("cuGetErrorName", "hipGetErrorName"), + ("cuGetErrorString", "hipDrvGetErrorString"), + ("cuInit", "hipInit"), + ("cuDriverGetVersion", "hipDriverGetVersion"), + ("cuCtxCreate", "hipCtxCreate"), + ("cuCtxCreate_v2", "hipCtxCreate"), + ("cuCtxDestroy", "hipCtxDestroy"), + ("cuCtxDestroy_v2", "hipCtxDestroy"), + ("cuCtxGetApiVersion", "hipCtxGetApiVersion"), + ("cuCtxGetCacheConfig", "hipCtxGetCacheConfig"), + ("cuCtxGetCurrent", "hipCtxGetCurrent"), + ("cuCtxGetDevice", "hipCtxGetDevice"), + ("cuCtxGetFlags", "hipCtxGetFlags"), + ("cuDeviceGetUuid", "hipDeviceGetUuid"), + ("cuCtxGetLimit", "hipCtxGetLimit"), + ("cuCtxGetSharedMemConfig", "hipCtxGetSharedMemConfig"), + ("cuCtxGetStreamPriorityRange", "hipCtxGetStreamPriorityRange"), + ("cuCtxPopCurrent_v2", "hipCtxPopCurrent"), + ("cuCtxPushCurrent_v2", "hipCtxPushCurrent"), + ("cuCtxSetCacheConfig", "hipCtxSetCacheConfig"), + ("cuCtxSetCurrent", "hipCtxSetCurrent"), + ("cuCtxSetLimit", "hipCtxSetLimit"), + ("cuCtxSetSharedMemConfig", "hipCtxSetSharedMemConfig"), + ("cuCtxSynchronize", "hipCtxSynchronize"), + ("cuCtxAttach", "hipCtxAttach"), + ("cuCtxDetach", "hipCtxDetach"), + ("cuCtxEnablePeerAccess", "hipCtxEnablePeerAccess"), + ("cuCtxDisablePeerAccess", "hipCtxDisablePeerAccess"), + ("cuDeviceCanAccessPeer", "hipDeviceCanAccessPeer"), + ("cuDeviceGetP2PAttribute", "hipDeviceGetP2PAttribute"), + ("cuDevicePrimaryCtxGetState", "hipDevicePrimaryCtxGetState"), + ("cuDevicePrimaryCtxRelease", "hipDevicePrimaryCtxRelease"), + ("cuDevicePrimaryCtxReset", "hipDevicePrimaryCtxReset"), + ("cuDevicePrimaryCtxRetain", "hipDevicePrimaryCtxRetain"), + ("cuDevicePrimaryCtxSetFlags", "hipDevicePrimaryCtxSetFlags"), + ("cuDeviceGet", "hipDeviceGet"), + ("cuDeviceGetName", "hipDeviceGetName"), + ("cuDeviceGetCount", "hipGetDeviceCount"), + ("cuDeviceGetAttribute", "hipDeviceGetAttribute"), + ("cuDeviceGetPCIBusId", "hipDeviceGetPCIBusId"), + ("cuDeviceGetByPCIBusId", "hipDeviceGetByPCIBusId"), + ("cuDeviceTotalMem_v2", "hipDeviceTotalMem"), + ("cuDeviceComputeCapability", "hipDeviceComputeCapability"), + ("cuDeviceGetProperties", "hipGetDeviceProperties"), + ("cuLinkAddData", "hipLinkAddData"), + ("cuLinkAddFile", "hipLinkAddFile"), + ("cuLinkComplete", "hipLinkComplete"), + ("cuLinkCreate", "hipLinkCreate"), + ("cuLinkDestroy", "hipLinkDestroy"), + ("cuModuleGetFunction", "hipModuleGetFunction"), + ("cuModuleGetGlobal", "hipModuleGetGlobal"), + ("cuModuleGetGlobal_v2", "hipModuleGetGlobal"), + ("cuModuleGetSurfRef", "hipModuleGetSurfRef"), + ("cuModuleGetTexRef", "hipModuleGetTexRef"), + ("cuModuleLoad", "hipModuleLoad"), + ("cuModuleLoadData", "hipModuleLoadData"), + ("cuModuleLoadDataEx", "hipModuleLoadDataEx"), + ("cuModuleLoadFatBinary", "hipModuleLoadFatBinary"), + ("cuModuleUnload", "hipModuleUnload"), + ("CU_DEVICE_P2P_ATTRIBUTE_PERFORMANCE_RANK", "hipDeviceP2PAttributePerformanceRank"), + ("CU_DEVICE_P2P_ATTRIBUTE_ACCESS_SUPPORTED", "hipDeviceP2PAttributeAccessSupported"), + ("CU_DEVICE_P2P_ATTRIBUTE_NATIVE_ATOMIC_SUPPORTED", "hipDeviceP2PAttributeNativeAtomicSupported"), + ("CU_EVENT_DEFAULT", "hipEventDefault"), + ("CU_EVENT_BLOCKING_SYNC", "hipEventBlockingSync"), + ("CU_EVENT_DISABLE_TIMING", "hipEventDisableTiming"), + ("CU_EVENT_INTERPROCESS", "hipEventInterprocess"), + ("cuEventCreate", "hipEventCreate"), + ("cuEventDestroy", "hipEventDestroy"), + ("cuEventDestroy_v2", "hipEventDestroy"), + ("cuEventElapsedTime", "hipEventElapsedTime"), + ("cuEventQuery", "hipEventQuery"), + ("cuEventRecord", "hipEventRecord"), + ("cuEventSynchronize", "hipEventSynchronize"), + ("cuFuncSetAttribute", "hipFuncSetAttribute"), + ("cuFuncGetAttribute", "hipFuncGetAttribute"), + ("cuFuncSetCacheConfig", "hipFuncSetCacheConfig"), + ("cuFuncSetSharedMemConfig", "hipFuncSetSharedMemConfig"), + ("cuLaunchKernel", "hipModuleLaunchKernel"), + ("cuLaunchCooperativeKernel", "hipModuleLaunchCooperativeKernel"), + ("cuFuncSetBlockShape", "hipFuncSetBlockShape"), + ("cuFuncSetSharedSize", "hipFuncSetSharedSize"), + ("cuLaunch", "hipLaunch"), + ("cuLaunchGrid", "hipLaunchGrid"), + ("cuLaunchGridAsync", "hipLaunchGridAsync"), + ("cuParamSetf", "hipParamSetf"), + ("cuParamSeti", "hipParamSeti"), + ("cuParamSetSize", "hipParamSetSize"), + ("cuParamSetv", "hipParamSetv"), + ("cuOccupancyMaxActiveBlocksPerMultiprocessor", "hipModuleOccupancyMaxActiveBlocksPerMultiprocessor"), + ("cuOccupancyMaxActiveBlocksPerMultiprocessorWithFlags", "hipModuleOccupancyMaxActiveBlocksPerMultiprocessorWithFlags"), + ("cuOccupancyMaxPotentialBlockSize", "hipModuleOccupancyMaxPotentialBlockSize"), + ("cuOccupancyMaxPotentialBlockSizeWithFlags", "hipModuleOccupancyMaxPotentialBlockSizeWithFlags"), + ("cuStreamAddCallback", "hipStreamAddCallback"), + ("cuStreamAttachMemAsync", "hipStreamAttachMemAsync"), + ("cuStreamCreate", "hipStreamCreate__"), + ("cuStreamCreateWithPriority", "hipStreamCreateWithPriority"), + ("cuStreamDestroy", "hipStreamDestroy"), + ("cuStreamDestroy_v2", "hipStreamDestroy"), + ("cuStreamGetFlags", "hipStreamGetFlags"), + ("cuStreamGetPriority", "hipStreamGetPriority"), + ("cuStreamQuery", "hipStreamQuery"), + ("cuStreamSynchronize", "hipStreamSynchronize"), + ("cuStreamWaitEvent", "hipStreamWaitEvent"), + ("cuStreamWaitValue32", "hipStreamWaitValue32"), + ("cuStreamWriteValue32", "hipStreamWriteValue32"), + ("cuStreamBatchMemOp", "hipStreamBatchMemOp"), + ("cuArray3DCreate", "hipArray3DCreate"), + ("cuArray3DGetDescriptor", "hipArray3DGetDescriptor"), + ("cuArrayCreate", "hipArrayCreate"), + ("cuArrayDestroy", "hipArrayDestroy"), + ("cuArrayGetDescriptor", "hipArrayGetDescriptor"), + ("cuIpcCloseMemHandle", "hipIpcCloseMemHandle"), + ("cuIpcGetEventHandle", "hipIpcGetEventHandle"), + ("cuIpcGetMemHandle", "hipIpcGetMemHandle"), + ("cuIpcOpenEventHandle", "hipIpcOpenEventHandle"), + ("cuIpcOpenMemHandle", "hipIpcOpenMemHandle"), + ("cuMemAlloc_v2", "hipMalloc"), + ("cuMemAllocHost", "hipMemAllocHost"), + ("cuMemAllocManaged", "hipMemAllocManaged"), + ("cuMemAllocPitch", "hipMemAllocPitch__"), + ("cuMemcpy", "hipMemcpy__"), + ("cuMemcpy2D", "hipMemcpy2D__"), + ("cuMemcpy2DAsync", "hipMemcpy2DAsync__"), + ("cuMemcpy2DUnaligned", "hipMemcpy2DUnaligned"), + ("cuMemcpy3D", "hipMemcpy3D__"), + ("cuMemcpy3DAsync", "hipMemcpy3DAsync__"), + ("cuMemcpy3DPeer", "hipMemcpy3DPeer__"), + ("cuMemcpy3DPeerAsync", "hipMemcpy3DPeerAsync__"), + ("cuMemcpyAsync", "hipMemcpyAsync__"), + ("cuMemcpyAtoA", "hipMemcpyAtoA"), + ("cuMemcpyAtoD", "hipMemcpyAtoD"), + ("cuMemcpyAtoH", "hipMemcpyAtoH"), + ("cuMemcpyAtoHAsync", "hipMemcpyAtoHAsync"), + ("cuMemcpyDtoA", "hipMemcpyDtoA"), + ("cuMemcpyDtoD_v2", "hipMemcpyDtoD"), + ("cuMemcpyDtoDAsync_v2", "hipMemcpyDtoDAsync"), + ("cuMemcpyDtoH_v2", "hipMemcpyDtoH"), + ("cuMemcpyDtoHAsync_v2", "hipMemcpyDtoHAsync"), + ("cuMemcpyHtoA", "hipMemcpyHtoA"), + ("cuMemcpyHtoAAsync", "hipMemcpyHtoAAsync"), + ("cuMemcpyHtoD_v2", "hipMemcpyHtoD"), + ("cuMemcpyHtoDAsync_v2", "hipMemcpyHtoDAsync"), + ("cuMemcpyPeerAsync", "hipMemcpyPeerAsync__"), + ("cuMemcpyPeer", "hipMemcpyPeer__"), + ("cuMemFree", "hipFree"), + ("cuMemFree_v2", "hipFree"), + ("cuMemFreeHost", "hipHostFree"), + ("cuMemGetAddressRange", "hipMemGetAddressRange"), + ("cuMemGetInfo_v2", "hipMemGetInfo"), + ("cuMemHostAlloc", "hipHostMalloc"), + ("cuMemHostGetDevicePointer", "hipMemHostGetDevicePointer"), + ("cuMemHostGetFlags", "hipMemHostGetFlags"), + ("cuMemHostRegister_v2", "hipHostRegister"), + ("cuMemHostUnregister", "hipHostUnregister"), + ("cuMemsetD16_v2", "hipMemsetD16"), + ("cuMemsetD16Async", "hipMemsetD16Async"), + ("cuMemsetD2D16_v2", "hipMemsetD2D16"), + ("cuMemsetD2D16Async", "hipMemsetD2D16Async"), + ("cuMemsetD2D32_v2", "hipMemsetD2D32"), + ("cuMemsetD2D32Async", "hipMemsetD2D32Async"), + ("cuMemsetD2D8_v2", "hipMemsetD2D8"), + ("cuMemsetD2D8Async", "hipMemsetD2D8Async"), + ("cuMemsetD32_v2", "hipMemset"), + ("cuMemsetD32Async", "hipMemsetAsync"), + ("cuMemsetD8_v2", "hipMemsetD8"), + ("cuMemsetD8Async", "hipMemsetD8Async"), + ("cuMipmappedArrayCreate", "hipMipmappedArrayCreate"), + ("cuMipmappedArrayDestroy", "hipMipmappedArrayDestroy"), + ("cuMipmappedArrayGetLevel", "hipMipmappedArrayGetLevel"), + ("cuMemPrefetchAsync", "hipMemPrefetchAsync__"), + ("cuMemAdvise", "hipMemAdvise"), + ("cuMemRangeGetAttribute", "hipMemRangeGetAttribute"), + ("cuMemRangeGetAttributes", "hipMemRangeGetAttributes"), + ("cuPointerGetAttribute", "hipPointerGetAttribute"), + ("cuMemGetAddressRange_v2", "hipMemGetAddressRange"), + ("cuArray3DCreate_v2", "hipArray3DCreate"), + ("cuArray3DGetDescriptor_v2", "hipArray3DGetDescriptor"), + ("cuArrayGetDescriptor_v2", "hipArrayGetDescriptor"), + ("cuMemAlloc", "hipMalloc"), + ("cuMemAllocHost_v2", "hipMemAllocHost"), + ("cuMemAllocPitch_v2", "hipMemAllocPitch"), + ("cuMemGetInfo", "hipMemGetInfo"), + ("cuMemHostGetDevicePointer_v2", "hipHostGetDevicePointer"), + ("cuMemHostRegister", "hipHostRegister"), + ("cuMemcpy2DAsync_v2", "hipMemcpyParam2DAsync"), + ("cuMemcpy2DUnaligned_v2", "hipDrvMemcpy2DUnaligned"), + ("cuMemcpy2D_v2", "hipMemcpyParam2D"), + ("cuMemcpy3DAsync_v2", "hipDrvMemcpy3DAsync"), + ("cuMemcpy3D_v2", "hipDrvMemcpy3D"), + ("cuMemcpyAtoA_v2", "hipMemcpyAtoA"), + ("cuMemcpyAtoD_v2", "hipMemcpyAtoD"), + ("cuMemcpyAtoHAsync_v2", "hipMemcpyAtoHAsync"), + ("cuMemcpyAtoH_v2", "hipMemcpyAtoH"), + ("cuMemcpyDtoA_v2", "hipMemcpyDtoA"), + ("cuMemcpyDtoD", "hipMemcpyDtoD"), + ("cuMemcpyDtoDAsync", "hipMemcpyDtoDAsync"), + ("cuMemcpyDtoH", "hipMemcpyDtoH"), + ("cuMemcpyDtoHAsync", "hipMemcpyDtoHAsync"), + ("cuMemcpyHtoA_v2", "hipMemcpyHtoA"), + ("cuMemcpyHtoD", "hipMemcpyHtoD"), + ("cuMemcpyHtoDAsync", "hipMemcpyHtoDAsync"), + ("cuMemsetD16", "hipMemsetD16"), + ("cuMemsetD32", "hipMemsetD32"), + ("cuMemsetD8", "hipMemsetD8"), + ("cuMemAddressFree", "hipMemAddressFree"), + ("cuMemAddressReserve", "hipMemAddressReserve"), + ("cuMemCreate", "hipMemCreate"), + ("cuMemExportToShareableHandle", "hipMemExportToShareableHandle"), + ("cuMemGetAccess", "hipMemGetAccess"), + ("cuMemGetAllocationGranularity", "hipMemGetAllocationGranularity"), + ("cuMemGetAllocationPropertiesFromHandle", "hipMemGetAllocationPropertiesFromHandle"), + ("cuMemImportFromShareableHandle", "hipMemImportFromShareableHandle"), + ("cuMemMap", "hipMemMap"), + ("cuMemMapArrayAsync", "hipMemMapArrayAsync"), + ("cuMemRelease", "hipMemRelease"), + ("cuMemRetainAllocationHandle", "hipMemRetainAllocationHandle"), + ("cuMemSetAccess", "hipMemSetAccess"), + ("cuMemUnmap", "hipMemUnmap"), + ("cuMemAllocAsync", "hipMallocAsync"), + ("cuMemAllocFromPoolAsync", "hipMallocFromPoolAsync"), + ("cuMemFreeAsync", "hipFreeAsync"), + ("cuMemPoolCreate", "hipMemPoolCreate"), + ("cuMemPoolDestroy", "hipMemPoolDestroy"), + ("cuMemPoolExportPointer", "hipMemPoolExportPointer"), + ("cuMemPoolExportToShareableHandle", "hipMemPoolExportToShareableHandle"), + ("cuMemPoolGetAccess", "hipMemPoolGetAccess"), + ("cuMemPoolGetAttribute", "hipMemPoolGetAttribute"), + ("cuMemPoolImportFromShareableHandle", "hipMemPoolImportFromShareableHandle"), + ("cuMemPoolImportPointer", "hipMemPoolImportPointer"), + ("cuMemPoolSetAccess", "hipMemPoolSetAccess"), + ("cuMemPoolSetAttribute", "hipMemPoolSetAttribute"), + ("cuMemPoolTrimTo", "hipMemPoolTrimTo"), + ("cuPointerGetAttributes", "hipPointerGetAttributes"), + ("cuPointerSetAttribute", "hipPointerSetAttribute"), + ("CU_TR_FILTER_MODE_POINT", "hipFilterModePoint"), + ("CU_TR_FILTER_MODE_LINEAR", "hipFilterModeLinear"), + ("cuTexRefGetAddress", "hipTexRefGetAddress"), + ("cuTexRefGetAddressMode", "hipTexRefGetAddressMode"), + ("cuTexRefGetArray", "hipTexRefGetArray"), + ("cuTexRefGetBorderColor", "hipTexRefGetBorderColor"), + ("cuTexRefGetFilterMode", "hipTexRefGetFilterMode"), + ("cuTexRefGetFlags", "hipTexRefGetFlags"), + ("cuTexRefGetFormat", "hipTexRefGetFormat"), + ("cuTexRefGetMaxAnisotropy", "hipTexRefGetMaxAnisotropy"), + ("cuTexRefGetMipmapFilterMode", "hipTexRefGetMipmapFilterMode"), + ("cuTexRefGetMipmapLevelBias", "hipTexRefGetMipmapLevelBias"), + ("cuTexRefGetMipmapLevelClamp", "hipTexRefGetMipmapLevelClamp"), + ("cuTexRefGetMipmappedArray", "hipTexRefGetMipmappedArray"), + ("cuTexRefSetAddress", "hipTexRefSetAddress"), + ("cuTexRefSetAddress2D", "hipTexRefSetAddress2D"), + ("cuTexRefSetAddressMode", "hipTexRefSetAddressMode"), + ("cuTexRefSetArray", "hipTexRefSetArray"), + ("cuTexRefSetBorderColor", "hipTexRefSetBorderColor"), + ("cuTexRefSetFilterMode", "hipTexRefSetFilterMode"), + ("cuTexRefSetFlags", "hipTexRefSetFlags"), + ("cuTexRefSetFormat", "hipTexRefSetFormat"), + ("cuTexRefSetMaxAnisotropy", "hipTexRefSetMaxAnisotropy"), + ("cuTexRefSetMipmapFilterMode", "hipTexRefSetMipmapFilterMode"), + ("cuTexRefSetMipmapLevelBias", "hipTexRefSetMipmapLevelBias"), + ("cuTexRefSetMipmapLevelClamp", "hipTexRefSetMipmapLevelClamp"), + ("cuTexRefSetMipmappedArray", "hipTexRefSetMipmappedArray"), + ("cuTexRefCreate", "hipTexRefCreate"), + ("cuTexRefDestroy", "hipTexRefDestroy"), + ("cuSurfRefGetArray", "hipSurfRefGetArray"), + ("cuSurfRefSetArray", "hipSurfRefSetArray"), + ("cuTexObjectCreate", "hipTexObjectCreate"), + ("cuTexObjectDestroy", "hipTexObjectDestroy"), + ("cuTexObjectGetResourceDesc", "hipTexObjectGetResourceDesc"), + ("cuTexObjectGetResourceViewDesc", "hipTexObjectGetResourceViewDesc"), + ("cuTexObjectGetTextureDesc", "hipTexObjectGetTextureDesc"), + ("cuSurfObjectCreate", "hipSurfObjectCreate"), + ("cuSurfObjectDestroy", "hipSurfObjectDestroy"), + ("cuSurfObjectGetResourceDesc", "hipSurfObjectGetResourceDesc"), + ("cuGraphicsMapResources", "hipGraphicsMapResources"), + ("cuGraphicsResourceGetMappedMipmappedArray", "hipGraphicsResourceGetMappedMipmappedArray"), + ("cuGraphicsResourceGetMappedPointer", "hipGraphicsResourceGetMappedPointer"), + ("cuGraphicsResourceSetMapFlags", "hipGraphicsResourceSetMapFlags"), + ("cuGraphicsSubResourceGetMappedArray", "hipGraphicsSubResourceGetMappedArray"), + ("cuGraphicsUnmapResources", "hipGraphicsUnmapResources"), + ("cuGraphicsUnregisterResource", "hipGraphicsUnregisterResource"), + ("cuProfilerInitialize", "hipProfilerInitialize"), + ("cuProfilerStart", "hipProfilerStart"), + ("cuProfilerStop", "hipProfilerStop"), + ("CU_GL_DEVICE_LIST_ALL", "HIP_GL_DEVICE_LIST_ALL"), + ("CU_GL_DEVICE_LIST_CURRENT_FRAME", "HIP_GL_DEVICE_LIST_CURRENT_FRAME"), + ("CU_GL_DEVICE_LIST_NEXT_FRAME", "HIP_GL_DEVICE_LIST_NEXT_FRAME"), + ("cuGLGetDevices", "hipGLGetDevices"), + ("cuGraphicsGLRegisterBuffer", "hipGraphicsGLRegisterBuffer"), + ("cuGraphicsGLRegisterImage", "hipGraphicsGLRegisterImage"), + ("cuWGLGetDevice", "hipWGLGetDevice"), + ("CU_GL_MAP_RESOURCE_FLAGS_NONE", "HIP_GL_MAP_RESOURCE_FLAGS_NONE"), + ("CU_GL_MAP_RESOURCE_FLAGS_READ_ONLY", "HIP_GL_MAP_RESOURCE_FLAGS_READ_ONLY"), + ("CU_GL_MAP_RESOURCE_FLAGS_WRITE_DISCARD", "HIP_GL_MAP_RESOURCE_FLAGS_WRITE_DISCARD"), + ("cuGLCtxCreate", "hipGLCtxCreate"), + ("cuGLInit", "hipGLInit"), + ("cuGLMapBufferObject", "hipGLMapBufferObject"), + ("cuGLMapBufferObjectAsync", "hipGLMapBufferObjectAsync"), + ("cuGLRegisterBufferObject", "hipGLRegisterBufferObject"), + ("cuGLSetBufferObjectMapFlags", "hipGLSetBufferObjectMapFlags"), + ("cuGLUnmapBufferObject", "hipGLUnmapBufferObject"), + ("cuGLUnmapBufferObjectAsync", "hipGLUnmapBufferObjectAsync"), + ("cuGLUnregisterBufferObject", "hipGLUnregisterBufferObject"), + ("CU_D3D9_DEVICE_LIST_ALL", "HIP_D3D9_DEVICE_LIST_ALL"), + ("CU_D3D9_DEVICE_LIST_CURRENT_FRAME", "HIP_D3D9_DEVICE_LIST_CURRENT_FRAME"), + ("CU_D3D9_DEVICE_LIST_NEXT_FRAME", "HIP_D3D9_DEVICE_LIST_NEXT_FRAME"), + ("cuD3D9CtxCreate", "hipD3D9CtxCreate"), + ("cuD3D9CtxCreateOnDevice", "hipD3D9CtxCreateOnDevice"), + ("cuD3D9GetDevice", "hipD3D9GetDevice"), + ("cuD3D9GetDevices", "hipD3D9GetDevices"), + ("cuD3D9GetDirect3DDevice", "hipD3D9GetDirect3DDevice"), + ("cuGraphicsD3D9RegisterResource", "hipGraphicsD3D9RegisterResource"), + ("CU_D3D9_MAPRESOURCE_FLAGS_NONE", "HIP_D3D9_MAPRESOURCE_FLAGS_NONE"), + ("CU_D3D9_MAPRESOURCE_FLAGS_READONLY", "HIP_D3D9_MAPRESOURCE_FLAGS_READONLY"), + ("CU_D3D9_MAPRESOURCE_FLAGS_WRITEDISCARD", "HIP_D3D9_MAPRESOURCE_FLAGS_WRITEDISCARD"), + ("CU_D3D9_REGISTER_FLAGS_NONE", "HIP_D3D9_REGISTER_FLAGS_NONE"), + ("CU_D3D9_REGISTER_FLAGS_ARRAY", "HIP_D3D9_REGISTER_FLAGS_ARRAY"), + ("cuD3D9MapResources", "hipD3D9MapResources"), + ("cuD3D9RegisterResource", "hipD3D9RegisterResource"), + ("cuD3D9ResourceGetMappedArray", "hipD3D9ResourceGetMappedArray"), + ("cuD3D9ResourceGetMappedPitch", "hipD3D9ResourceGetMappedPitch"), + ("cuD3D9ResourceGetMappedPointer", "hipD3D9ResourceGetMappedPointer"), + ("cuD3D9ResourceGetMappedSize", "hipD3D9ResourceGetMappedSize"), + ("cuD3D9ResourceGetSurfaceDimensions", "hipD3D9ResourceGetSurfaceDimensions"), + ("cuD3D9ResourceSetMapFlags", "hipD3D9ResourceSetMapFlags"), + ("cuD3D9UnmapResources", "hipD3D9UnmapResources"), + ("cuD3D9UnregisterResource", "hipD3D9UnregisterResource"), + ("CU_D3D10_DEVICE_LIST_ALL", "HIP_D3D10_DEVICE_LIST_ALL"), + ("CU_D3D10_DEVICE_LIST_CURRENT_FRAME", "HIP_D3D10_DEVICE_LIST_CURRENT_FRAME"), + ("CU_D3D10_DEVICE_LIST_NEXT_FRAME", "HIP_D3D10_DEVICE_LIST_NEXT_FRAME"), + ("cuD3D10GetDevice", "hipD3D10GetDevice"), + ("cuD3D10GetDevices", "hipD3D10GetDevices"), + ("cuGraphicsD3D10RegisterResource", "hipGraphicsD3D10RegisterResource"), + ("CU_D3D10_MAPRESOURCE_FLAGS_NONE", "HIP_D3D10_MAPRESOURCE_FLAGS_NONE"), + ("CU_D3D10_MAPRESOURCE_FLAGS_READONLY", "HIP_D3D10_MAPRESOURCE_FLAGS_READONLY"), + ("CU_D3D10_MAPRESOURCE_FLAGS_WRITEDISCARD", "HIP_D3D10_MAPRESOURCE_FLAGS_WRITEDISCARD"), + ("CU_D3D10_REGISTER_FLAGS_NONE", "HIP_D3D10_REGISTER_FLAGS_NONE"), + ("CU_D3D10_REGISTER_FLAGS_ARRAY", "HIP_D3D10_REGISTER_FLAGS_ARRAY"), + ("cuD3D10CtxCreate", "hipD3D10CtxCreate"), + ("cuD3D10CtxCreateOnDevice", "hipD3D10CtxCreateOnDevice"), + ("cuD3D10GetDirect3DDevice", "hipD3D10GetDirect3DDevice"), + ("cuD3D10MapResources", "hipD3D10MapResources"), + ("cuD3D10RegisterResource", "hipD3D10RegisterResource"), + ("cuD3D10ResourceGetMappedArray", "hipD3D10ResourceGetMappedArray"), + ("cuD3D10ResourceGetMappedPitch", "hipD3D10ResourceGetMappedPitch"), + ("cuD3D10ResourceGetMappedPointer", "hipD3D10ResourceGetMappedPointer"), + ("cuD3D10ResourceGetMappedSize", "hipD3D10ResourceGetMappedSize"), + ("cuD3D10ResourceGetSurfaceDimensions", "hipD3D10ResourceGetSurfaceDimensions"), + ("cuD310ResourceSetMapFlags", "hipD3D10ResourceSetMapFlags"), + ("cuD3D10UnmapResources", "hipD3D10UnmapResources"), + ("cuD3D10UnregisterResource", "hipD3D10UnregisterResource"), + ("CU_D3D11_DEVICE_LIST_ALL", "HIP_D3D11_DEVICE_LIST_ALL"), + ("CU_D3D11_DEVICE_LIST_CURRENT_FRAME", "HIP_D3D11_DEVICE_LIST_CURRENT_FRAME"), + ("CU_D3D11_DEVICE_LIST_NEXT_FRAME", "HIP_D3D11_DEVICE_LIST_NEXT_FRAME"), + ("cuD3D11GetDevice", "hipD3D11GetDevice"), + ("cuD3D11GetDevices", "hipD3D11GetDevices"), + ("cuGraphicsD3D11RegisterResource", "hipGraphicsD3D11RegisterResource"), + ("cuD3D11CtxCreate", "hipD3D11CtxCreate"), + ("cuD3D11CtxCreateOnDevice", "hipD3D11CtxCreateOnDevice"), + ("cuD3D11GetDirect3DDevice", "hipD3D11GetDirect3DDevice"), + ("cuGraphicsVDPAURegisterOutputSurface", "hipGraphicsVDPAURegisterOutputSurface"), + ("cuGraphicsVDPAURegisterVideoSurface", "hipGraphicsVDPAURegisterVideoSurface"), + ("cuVDPAUGetDevice", "hipVDPAUGetDevice"), + ("cuVDPAUCtxCreate", "hipVDPAUCtxCreate"), + ("cuEGLStreamConsumerAcquireFrame", "hipEGLStreamConsumerAcquireFrame"), + ("cuEGLStreamConsumerConnect", "hipEGLStreamConsumerConnect"), + ("cuEGLStreamConsumerConnectWithFlags", "hipEGLStreamConsumerConnectWithFlags"), + ("cuEGLStreamConsumerDisconnect", "hipEGLStreamConsumerDisconnect"), + ("cuEGLStreamConsumerReleaseFrame", "hipEGLStreamConsumerReleaseFrame"), + ("cuEGLStreamProducerConnect", "hipEGLStreamProducerConnect"), + ("cuEGLStreamProducerDisconnect", "hipEGLStreamProducerDisconnect"), + ("cuEGLStreamProducerPresentFrame", "hipEGLStreamProducerPresentFrame"), + ("cuEGLStreamProducerReturnFrame", "hipEGLStreamProducerReturnFrame"), + ("cuGraphicsEGLRegisterImage", "hipGraphicsEGLRegisterImage"), + ("cuGraphicsResourceGetMappedEglFrame", "hipGraphicsResourceGetMappedEglFrame"), + ("cudaDataType_t", "hipDataType"), + ("cudaDataType", "hipDataType"), + ("CUDA_R_32F", "HIP_R_32F"), + ("CUDA_R_64F", "HIP_R_64F"), + ("CUDA_R_16F", "HIP_R_16F"), + ("CUDA_R_8I", "HIP_R_8I"), + ("CUDA_C_32F", "HIP_C_32F"), + ("CUDA_C_64F", "HIP_C_64F"), + ("CUDA_C_16F", "HIP_C_16F"), + ("CUDA_C_8I", "HIP_C_8I"), + ("CUDA_R_8U", "HIP_R_8U"), + ("CUDA_C_8U", "HIP_C_8U"), + ("CUDA_R_32I", "HIP_R_32I"), + ("CUDA_C_32I", "HIP_C_32I"), + ("CUDA_R_32U", "HIP_R_32U"), + ("CUDA_C_32U", "HIP_C_32U"), + ("CUDA_R_16BF", "HIP_R_16BF"), + ("CUDA_C_16BF", "HIP_C_16BF"), + ("CUDA_R_4I", "HIP_R_4I"), + ("CUDA_C_4I", "HIP_C_4I"), + ("CUDA_R_4U", "HIP_R_4U"), + ("CUDA_C_4U", "HIP_C_4U"), + ("CUDA_R_16I", "HIP_R_16I"), + ("CUDA_C_16I", "HIP_C_16I"), + ("CUDA_R_16U", "HIP_R_16U"), + ("CUDA_C_16U", "HIP_C_16U"), + ("CUDA_R_64I", "HIP_R_64I"), + ("CUDA_C_64I", "HIP_C_64I"), + ("CUDA_R_64U", "HIP_R_64U"), + ("CUDA_C_64U", "HIP_C_64U"), + ("CUDA_R_8F_E4M3", "HIP_R_8F_E4M3"), + ("CUDA_R_8F_E5M2", "HIP_R_8F_E5M2"), + ("CUDA_R_4F_E2M1", "HIP_R_4F_E2M1"), + ("MAJOR_VERSION", "hipLibraryMajorVersion"), + ("MINOR_VERSION", "hipLibraryMinorVersion"), + ("PATCH_LEVEL", "hipLibraryPatchVersion"), + ("cudaLaunchKernel", "hipLaunchKernel"), + ("cudaMemAllocationHandleType", "hipMemAllocationHandleType"), + ("cudaMemAllocationType", "hipMemAllocationType"), + ("cudaMemLocationType", "hipMemLocationType"), + ("cudaMemAttachGlobal", "hipMemAttachGlobal"), + ("cudaMemAttachHost", "hipMemAttachHost"), + ("cudaMemAttachSingle", "hipMemAttachSingle"), + ("cudaOccupancyDefault", "hipOccupancyDefault"), + ("cudaOccupancyDisableCachingOverride", "hipOccupancyDisableCachingOverride"), + ("cudaGetLastError", "hipGetLastError"), + ("cudaPeekAtLastError", "hipPeekAtLastError"), + ("cudaGetErrorName", "hipGetErrorName"), + ("cudaGetErrorString", "hipGetErrorString"), + ("cudaMemcpy3DParms", "hipMemcpy3DParms"), + ("cudaMemcpy3DPeerParms", "hipMemcpy3DPeerParms"), + ("cudaMemcpy", "hipMemcpy"), + ("cudaMemcpyToArray", "hipMemcpyToArray"), + ("cudaMemcpyToSymbol", "hipMemcpyToSymbol"), + ("cudaMemcpyToSymbolAsync", "hipMemcpyToSymbolAsync"), + ("cudaMemcpyAsync", "hipMemcpyAsync"), + ("cudaMemcpy2D", "hipMemcpy2D"), + ("cudaMemcpy2DAsync", "hipMemcpy2DAsync"), + ("cudaMemcpy2DToArray", "hipMemcpy2DToArray"), + ("cudaMemcpy2DArrayToArray", "hipMemcpy2DArrayToArray"), + ("cudaMemcpy2DFromArray", "hipMemcpy2DFromArray"), + ("cudaMemcpy2DFromArrayAsync", "hipMemcpy2DFromArrayAsync"), + ("cudaMemcpy2DToArrayAsync", "hipMemcpy2DToArrayAsync"), + ("cudaMemcpy3D", "hipMemcpy3D"), + ("cudaMemcpy3DAsync", "hipMemcpy3DAsync"), + ("cudaMemcpy3DPeer", "hipMemcpy3DPeer"), + ("cudaMemcpy3DPeerAsync", "hipMemcpy3DPeerAsync"), + ("cudaMemcpyArrayToArray", "hipMemcpyArrayToArray"), + ("cudaMemcpyFromArrayAsync", "hipMemcpyFromArrayAsync"), + ("cudaMemcpyFromSymbol", "hipMemcpyFromSymbol"), + ("cudaMemcpyFromSymbolAsync", "hipMemcpyFromSymbolAsync"), + ("cudaMemAdvise", "hipMemAdvise"), + ("cudaMemRangeGetAttribute", "hipMemRangeGetAttribute"), + ("cudaMemRangeGetAttributes", "hipMemRangeGetAttributes"), + ("cudaMemAdviseSetReadMostly", "hipMemAdviseSetReadMostly"), + ("cudaMemAdviseUnsetReadMostly", "hipMemAdviseUnsetReadMostly"), + ("cudaMemAdviseSetPreferredLocation", "hipMemAdviseSetPreferredLocation"), + ("cudaMemAdviseUnsetPreferredLocation", "hipMemAdviseUnsetPreferredLocation"), + ("cudaMemAdviseSetAccessedBy", "hipMemAdviseSetAccessedBy"), + ("cudaMemAdviseUnsetAccessedBy", "hipMemAdviseUnsetAccessedBy"), + ("cudaMemRangeAttributeReadMostly", "hipMemRangeAttributeReadMostly"), + ("cudaMemRangeAttributePreferredLocation", "hipMemRangeAttributePreferredLocation"), + ("cudaMemRangeAttributeAccessedBy", "hipMemRangeAttributeAccessedBy"), + ("cudaMemRangeAttributeLastPrefetchLocation", "hipMemRangeAttributeLastPrefetchLocation"), + ("cudaMemcpyHostToHost", "hipMemcpyHostToHost"), + ("cudaMemcpyHostToDevice", "hipMemcpyHostToDevice"), + ("cudaMemcpyDeviceToHost", "hipMemcpyDeviceToHost"), + ("cudaMemcpyDeviceToDevice", "hipMemcpyDeviceToDevice"), + ("cudaMemcpyDefault", "hipMemcpyDefault"), + ("cudaMemset", "hipMemset"), + ("cudaMemsetAsync", "hipMemsetAsync"), + ("cudaMemset2D", "hipMemset2D"), + ("cudaMemset2DAsync", "hipMemset2DAsync"), + ("cudaMemset3D", "hipMemset3D"), + ("cudaMemset3DAsync", "hipMemset3DAsync"), + ("cudaMemGetInfo", "hipMemGetInfo"), + ("cudaDeviceGetDefaultMemPool", "hipDeviceGetDefaultMemPool"), + ("cudaMemAccessDesc", "hipMemAccessDesc"), + ("cudaMemAccessFlagsProtReadWrite", "hipMemAccessFlagsProtReadWrite"), + ("cudaMemLocationTypeDevice", "hipMemLocationTypeDevice"), + ("cudaMemPoolAttrReleaseThreshold", "hipMemPoolAttrReleaseThreshold"), + ("cudaMemPoolAttrReservedMemCurrent", "hipMemPoolAttrReservedMemCurrent"), + ("cudaMemPoolAttrReservedMemHigh", "hipMemPoolAttrReservedMemHigh"), + ("cudaMemPoolAttrUsedMemCurrent", "hipMemPoolAttrUsedMemCurrent"), + ("cudaMemPoolAttrUsedMemHigh", "hipMemPoolAttrUsedMemHigh"), + ("cudaMemPoolGetAttribute", "hipMemPoolGetAttribute"), + ("cudaMemPoolReuseAllowInternalDependencies", "hipMemPoolReuseAllowInternalDependencies"), + ("cudaMemPoolReuseAllowOpportunistic", "hipMemPoolReuseAllowOpportunistic"), + ("cudaMemPoolReuseFollowEventDependencies", "hipMemPoolReuseFollowEventDependencies"), + ("cudaMemPoolSetAccess", "hipMemPoolSetAccess"), + ("cudaMemPoolSetAttribute", "hipMemPoolSetAttribute"), + ("cudaMemPoolTrimTo", "hipMemPoolTrimTo"), + ("cudaMemPool_t", "hipMemPool_t"), + ("cudaArrayGetInfo", "hipArrayGetInfo"), + ("cudaFreeMipmappedArray", "hipFreeMipmappedArray"), + ("cudaGetMipmappedArrayLevel", "hipGetMipmappedArrayLevel"), + ("cudaGetSymbolAddress", "hipGetSymbolAddress"), + ("cudaGetSymbolSize", "hipGetSymbolSize"), + ("cudaMemPrefetchAsync", "hipMemPrefetchAsync"), + ("cudaMallocHost", "hipHostMalloc"), + ("cudaMallocArray", "hipMallocArray"), + ("cudaMalloc", "hipMalloc"), + ("cudaMalloc3D", "hipMalloc3D"), + ("cudaMalloc3DArray", "hipMalloc3DArray"), + ("cudaMallocAsync", "hipMallocAsync"), + ("cudaMallocManaged", "hipMallocManaged"), + ("cudaMallocMipmappedArray", "hipMallocMipmappedArray"), + ("cudaMallocPitch", "hipMallocPitch"), + ("cudaFreeHost", "hipHostFree"), + ("cudaFreeArray", "hipFreeArray"), + ("cudaFree", "hipFree"), + ("cudaFreeAsync", "hipFreeAsync"), + ("cudaHostRegister", "hipHostRegister"), + ("cudaHostUnregister", "hipHostUnregister"), + ("cudaHostAlloc", "hipHostMalloc"), + ("cudaMemoryTypeHost", "hipMemoryTypeHost"), + ("cudaMemoryTypeDevice", "hipMemoryTypeDevice"), + ("cudaMemoryTypeUnregistered", "hipMemoryTypeUnregistered"), + ("cudaMemoryTypeManaged", "hipMemoryTypeManaged"), + ("make_cudaExtent", "make_hipExtent"), + ("make_cudaPitchedPtr", "make_hipPitchedPtr"), + ("make_cudaPos", "make_hipPos"), + ("cudaHostAllocDefault", "hipHostMallocDefault"), + ("cudaHostAllocPortable", "hipHostMallocPortable"), + ("cudaHostAllocMapped", "hipHostMallocMapped"), + ("cudaHostNodeParams", "hipHostNodeParams"), + ("cudaHostAllocWriteCombined", "hipHostMallocWriteCombined"), + ("cudaHostFn_t", "hipHostFn_t"), + ("cudaHostGetFlags", "hipHostGetFlags"), + ("cudaHostRegisterDefault", "hipHostRegisterDefault"), + ("cudaHostRegisterPortable", "hipHostRegisterPortable"), + ("cudaHostRegisterMapped", "hipHostRegisterMapped"), + ("cudaHostRegisterIoMemory", "hipHostRegisterIoMemory"), + ("cudaEventCreate", "hipEventCreate"), + ("cudaEventCreateWithFlags", "hipEventCreateWithFlags"), + ("cudaEventDestroy", "hipEventDestroy"), + ("cudaEventRecord", "hipEventRecord"), + ("cudaEventElapsedTime", "hipEventElapsedTime"), + ("cudaEventSynchronize", "hipEventSynchronize"), + ("cudaEventQuery", "hipEventQuery"), + ("cudaEventDefault", "hipEventDefault"), + ("cudaEventBlockingSync", "hipEventBlockingSync"), + ("cudaEventDisableTiming", "hipEventDisableTiming"), + ("cudaEventInterprocess", "hipEventInterprocess"), + ("cudaEventRecordDefault", "hipEventRecordDefault"), + ("cudaEventRecordExternal", "hipEventRecordExternal"), + ("cudaEventWaitDefault", "hipEventWaitDefault"), + ("cudaEventWaitExternal", "hipEventWaitExternal"), + ("cudaStreamCreate", "hipStreamCreate"), + ("cudaStreamCreateWithFlags", "hipStreamCreateWithFlags"), + ("cudaStreamCreateWithPriority", "hipStreamCreateWithPriority"), + ("cudaStreamDestroy", "hipStreamDestroy"), + ("cudaStreamWaitEvent", "hipStreamWaitEvent"), + ("cudaStreamSynchronize", "hipStreamSynchronize"), + ("cudaStreamGetFlags", "hipStreamGetFlags"), + ("cudaStreamQuery", "hipStreamQuery"), + ("cudaStreamAddCallback", "hipStreamAddCallback"), + ("cudaStreamAttachMemAsync", "hipStreamAttachMemAsync"), + ("cudaStreamGetPriority", "hipStreamGetPriority"), + ("cudaCpuDeviceId", "hipCpuDeviceId"), + ("cudaStreamDefault", "hipStreamDefault"), + ("cudaStreamNonBlocking", "hipStreamNonBlocking"), + ("cudaStreamGetCaptureInfo", "hipStreamGetCaptureInfo"), + ("cudaStreamGetCaptureInfo_v2", "hipStreamGetCaptureInfo_v2"), + ("cudaStreamCaptureStatus", "hipStreamCaptureStatus"), + ("cudaStreamCaptureStatusActive", "hipStreamCaptureStatusActive"), + ("cudaStreamCaptureStatusNone", "hipStreamCaptureStatusNone"), + ("cudaStreamCaptureStatusInvalidated", "hipStreamCaptureStatusInvalidated"), + ("cudaStreamCaptureMode", "hipStreamCaptureMode"), + ("cudaStreamCaptureModeGlobal", "hipStreamCaptureModeGlobal"), + ("cudaStreamCaptureModeRelaxed", "hipStreamCaptureModeRelaxed"), + ("cudaStreamCaptureModeThreadLocal", "hipStreamCaptureModeThreadLocal"), + ("cudaStreamBeginCapture", "hipStreamBeginCapture"), + ("cudaStreamEndCapture", "hipStreamEndCapture"), + ("cudaStreamSetCaptureDependencies", "hipStreamSetCaptureDependencies"), + ("cudaStreamUpdateCaptureDependencies", "hipStreamUpdateCaptureDependencies"), + ("cudaGraphNode_t", "hipGraphNode_t"), + ("cudaGraphInstantiate", "hipGraphInstantiate"), + ("cudaGraphInstantiateWithFlags", "hipGraphInstantiateWithFlags"), + ("cudaGraphInstantiateFlagAutoFreeOnLaunch", "hipGraphInstantiateFlagAutoFreeOnLaunch"), + ("cudaGraphDestroy", "hipGraphDestroy"), + ("cudaGraphExecDestroy", "hipGraphExecDestroy"), + ("cudaGraphLaunch", "hipGraphLaunch"), + ("cudaGraphGetNodes", "hipGraphGetNodes"), + ("cudaGraphDebugDotPrint", "hipGraphDebugDotPrint"), + ("cudaGraphDebugDotFlagsVerbose", "hipGraphDebugDotFlagsVerbose"), + ("cudaGraphRetainUserObject", "hipGraphRetainUserObject"), + ("cudaGraphUserObjectMove", "hipGraphUserObjectMove"), + ("cudaDeviceGetGraphMemAttribute", "hipDeviceGetGraphMemAttribute"), + ("cudaDeviceGraphMemTrim", "hipDeviceGraphMemTrim"), + ("cudaDeviceSetGraphMemAttribute", "hipDeviceSetGraphMemAttribute"), + ("cudaGraphAddChildGraphNode", "hipGraphAddChildGraphNode"), + ("cudaGraphAddDependencies", "hipGraphAddDependencies"), + ("cudaGraphAddEmptyNode", "hipGraphAddEmptyNode"), + ("cudaGraphAddEventRecordNode", "hipGraphAddEventRecordNode"), + ("cudaGraphAddEventWaitNode", "hipGraphAddEventWaitNode"), + ("cudaGraphAddExternalSemaphoresSignalNode", "hipGraphAddExternalSemaphoresSignalNode"), + ("cudaGraphAddExternalSemaphoresWaitNode", "hipGraphAddExternalSemaphoresWaitNode"), + ("cudaGraphAddHostNode", "hipGraphAddHostNode"), + ("cudaGraphAddKernelNode", "hipGraphAddKernelNode"), + ("cudaGraphAddMemAllocNode", "hipGraphAddMemAllocNode"), + ("cudaGraphAddMemFreeNode", "hipGraphAddMemFreeNode"), + ("cudaGraphAddMemcpyNode", "hipGraphAddMemcpyNode"), + ("cudaGraphAddMemcpyNode1D", "hipGraphAddMemcpyNode1D"), + ("cudaGraphAddMemcpyNodeFromSymbol", "hipGraphAddMemcpyNodeFromSymbol"), + ("cudaGraphAddMemcpyNodeToSymbol", "hipGraphAddMemcpyNodeToSymbol"), + ("cudaGraphAddMemsetNode", "hipGraphAddMemsetNode"), + ("cudaGraphAddNode", "hipGraphAddNode"), + ("cudaGraphChildGraphNodeGetGraph", "hipGraphChildGraphNodeGetGraph"), + ("cudaGraphClone", "hipGraphClone"), + ("cudaGraphCreate", "hipGraphCreate"), + ("cudaGraphDestroyNode", "hipGraphDestroyNode"), + ("cudaGraphEventRecordNodeGetEvent", "hipGraphEventRecordNodeGetEvent"), + ("cudaGraphEventRecordNodeSetEvent", "hipGraphEventRecordNodeSetEvent"), + ("cudaGraphEventWaitNodeGetEvent", "hipGraphEventWaitNodeGetEvent"), + ("cudaGraphEventWaitNodeSetEvent", "hipGraphEventWaitNodeSetEvent"), + ("cudaGraphExecChildGraphNodeSetParams", "hipGraphExecChildGraphNodeSetParams"), + ("cudaGraphExecEventRecordNodeSetEvent", "hipGraphExecEventRecordNodeSetEvent"), + ("cudaGraphExecEventWaitNodeSetEvent", "hipGraphExecEventWaitNodeSetEvent"), + ("cudaGraphExecExternalSemaphoresSignalNodeSetParams", "hipGraphExecExternalSemaphoresSignalNodeSetParams"), + ("cudaGraphExecExternalSemaphoresWaitNodeSetParams", "hipGraphExecExternalSemaphoresWaitNodeSetParams"), + ("cudaGraphExecGetFlags", "hipGraphExecGetFlags"), + ("cudaGraphExecHostNodeSetParams", "hipGraphExecHostNodeSetParams"), + ("cudaGraphExecKernelNodeSetParams", "hipGraphExecKernelNodeSetParams"), + ("cudaGraphExecMemcpyNodeSetParams", "hipGraphExecMemcpyNodeSetParams"), + ("cudaGraphExecMemcpyNodeSetParams1D", "hipGraphExecMemcpyNodeSetParams1D"), + ("cudaGraphExecMemcpyNodeSetParamsFromSymbol", "hipGraphExecMemcpyNodeSetParamsFromSymbol"), + ("cudaGraphExecMemcpyNodeSetParamsToSymbol", "hipGraphExecMemcpyNodeSetParamsToSymbol"), + ("cudaGraphExecMemsetNodeSetParams", "hipGraphExecMemsetNodeSetParams"), + ("cudaGraphExecNodeSetParams", "hipGraphExecNodeSetParams"), + ("cudaGraphExecUpdate", "hipGraphExecUpdate"), + ("cudaGraphExternalSemaphoresSignalNodeGetParams", "hipGraphExternalSemaphoresSignalNodeGetParams"), + ("cudaGraphExternalSemaphoresSignalNodeSetParams", "hipGraphExternalSemaphoresSignalNodeSetParams"), + ("cudaGraphExternalSemaphoresWaitNodeGetParams", "hipGraphExternalSemaphoresWaitNodeGetParams"), + ("cudaGraphExternalSemaphoresWaitNodeSetParams", "hipGraphExternalSemaphoresWaitNodeSetParams"), + ("cudaGraphGetEdges", "hipGraphGetEdges"), + ("cudaGraphGetRootNodes", "hipGraphGetRootNodes"), + ("cudaGraphHostNodeGetParams", "hipGraphHostNodeGetParams"), + ("cudaGraphHostNodeSetParams", "hipGraphHostNodeSetParams"), + ("cudaGraphInstantiateWithParams", "hipGraphInstantiateWithParams"), + ("cudaGraphKernelNodeCopyAttributes", "hipGraphKernelNodeCopyAttributes"), + ("cudaGraphKernelNodeGetAttribute", "hipGraphKernelNodeGetAttribute"), + ("cudaGraphKernelNodeGetParams", "hipGraphKernelNodeGetParams"), + ("cudaGraphKernelNodeSetAttribute", "hipGraphKernelNodeSetAttribute"), + ("cudaGraphKernelNodeSetParams", "hipGraphKernelNodeSetParams"), + ("cudaGraphMemAllocNodeGetParams", "hipGraphMemAllocNodeGetParams"), + ("cudaGraphMemFreeNodeGetParams", "hipGraphMemFreeNodeGetParams"), + ("cudaGraphMemcpyNodeGetParams", "hipGraphMemcpyNodeGetParams"), + ("cudaGraphMemcpyNodeSetParams", "hipGraphMemcpyNodeSetParams"), + ("cudaGraphMemcpyNodeSetParams1D", "hipGraphMemcpyNodeSetParams1D"), + ("cudaGraphMemcpyNodeSetParamsFromSymbol", "hipGraphMemcpyNodeSetParamsFromSymbol"), + ("cudaGraphMemcpyNodeSetParamsToSymbol", "hipGraphMemcpyNodeSetParamsToSymbol"), + ("cudaGraphMemsetNodeGetParams", "hipGraphMemsetNodeGetParams"), + ("cudaGraphMemsetNodeSetParams", "hipGraphMemsetNodeSetParams"), + ("cudaGraphNodeFindInClone", "hipGraphNodeFindInClone"), + ("cudaGraphNodeGetDependencies", "hipGraphNodeGetDependencies"), + ("cudaGraphNodeGetDependentNodes", "hipGraphNodeGetDependentNodes"), + ("cudaGraphNodeGetEnabled", "hipGraphNodeGetEnabled"), + ("cudaGraphNodeGetType", "hipGraphNodeGetType"), + ("cudaGraphNodeSetEnabled", "hipGraphNodeSetEnabled"), + ("cudaGraphNodeSetParams", "hipGraphNodeSetParams"), + ("cudaGraphReleaseUserObject", "hipGraphReleaseUserObject"), + ("cudaGraphRemoveDependencies", "hipGraphRemoveDependencies"), + ("cudaGraphUpload", "hipGraphUpload"), + ("cudaUserObjectRelease", "hipUserObjectRelease"), + ("cudaUserObjectRetain", "hipUserObjectRetain"), + ("cudaGraphDebugDotFlags", "hipGraphDebugDotFlags"), + ("cudaGraphDebugDotFlagsEventNodeParams", "hipGraphDebugDotFlagsEventNodeParams"), + ("cudaGraphDebugDotFlagsExtSemasSignalNodeParams", "hipGraphDebugDotFlagsExtSemasSignalNodeParams"), + ("cudaGraphDebugDotFlagsExtSemasWaitNodeParams", "hipGraphDebugDotFlagsExtSemasWaitNodeParams"), + ("cudaGraphDebugDotFlagsHandles", "hipGraphDebugDotFlagsHandles"), + ("cudaGraphDebugDotFlagsHostNodeParams", "hipGraphDebugDotFlagsHostNodeParams"), + ("cudaGraphDebugDotFlagsKernelNodeAttributes", "hipGraphDebugDotFlagsKernelNodeAttributes"), + ("cudaGraphDebugDotFlagsKernelNodeParams", "hipGraphDebugDotFlagsKernelNodeParams"), + ("cudaGraphDebugDotFlagsMemcpyNodeParams", "hipGraphDebugDotFlagsMemcpyNodeParams"), + ("cudaGraphDebugDotFlagsMemsetNodeParams", "hipGraphDebugDotFlagsMemsetNodeParams"), + ("cudaGraphDependencyType", "hipGraphDependencyType"), + ("cudaGraphDependencyTypeDefault", "hipGraphDependencyTypeDefault"), + ("cudaGraphDependencyTypeProgrammatic", "hipGraphDependencyTypeProgrammatic"), + ("cudaGraphDependencyType_enum", "hipGraphDependencyType"), + ("cudaGraphEdgeData", "hipGraphEdgeData"), + ("cudaGraphEdgeData_st", "hipGraphEdgeData"), + ("cudaGraphExecUpdateError", "hipGraphExecUpdateError"), + ("cudaGraphExecUpdateErrorFunctionChanged", "hipGraphExecUpdateErrorFunctionChanged"), + ("cudaGraphExecUpdateErrorNodeTypeChanged", "hipGraphExecUpdateErrorNodeTypeChanged"), + ("cudaGraphExecUpdateErrorNotSupported", "hipGraphExecUpdateErrorNotSupported"), + ("cudaGraphExecUpdateErrorParametersChanged", "hipGraphExecUpdateErrorParametersChanged"), + ("cudaGraphExecUpdateErrorTopologyChanged", "hipGraphExecUpdateErrorTopologyChanged"), + ("cudaGraphExecUpdateErrorUnsupportedFunctionChange", "hipGraphExecUpdateErrorUnsupportedFunctionChange"), + ("cudaGraphExecUpdateResult", "hipGraphExecUpdateResult"), + ("cudaGraphExecUpdateSuccess", "hipGraphExecUpdateSuccess"), + ("cudaGraphInstantiateError", "hipGraphInstantiateError"), + ("cudaGraphInstantiateFlagDeviceLaunch", "hipGraphInstantiateFlagDeviceLaunch"), + ("cudaGraphInstantiateFlagUpload", "hipGraphInstantiateFlagUpload"), + ("cudaGraphInstantiateFlagUseNodePriority", "hipGraphInstantiateFlagUseNodePriority"), + ("cudaGraphInstantiateFlags", "hipGraphInstantiateFlags"), + ("cudaGraphInstantiateInvalidStructure", "hipGraphInstantiateInvalidStructure"), + ("cudaGraphInstantiateMultipleDevicesNotSupported", "hipGraphInstantiateMultipleDevicesNotSupported"), + ("cudaGraphInstantiateNodeOperationNotSupported", "hipGraphInstantiateNodeOperationNotSupported"), + ("cudaGraphInstantiateParams", "hipGraphInstantiateParams"), + ("cudaGraphInstantiateParams_st", "hipGraphInstantiateParams"), + ("cudaGraphInstantiateResult", "hipGraphInstantiateResult"), + ("cudaGraphInstantiateSuccess", "hipGraphInstantiateSuccess"), + ("cudaGraphKernelNodePortDefault", "hipGraphKernelNodePortDefault"), + ("cudaGraphKernelNodePortLaunchCompletion", "hipGraphKernelNodePortLaunchCompletion"), + ("cudaGraphKernelNodePortProgrammatic", "hipGraphKernelNodePortProgrammatic"), + ("cudaGraphMemAttrReservedMemCurrent", "hipGraphMemAttrReservedMemCurrent"), + ("cudaGraphMemAttrReservedMemHigh", "hipGraphMemAttrReservedMemHigh"), + ("cudaGraphMemAttrUsedMemCurrent", "hipGraphMemAttrUsedMemCurrent"), + ("cudaGraphMemAttrUsedMemHigh", "hipGraphMemAttrUsedMemHigh"), + ("cudaGraphMemAttributeType", "hipGraphMemAttributeType"), + ("cudaGraphNodeParams", "hipGraphNodeParams"), + ("cudaGraphNodeType", "hipGraphNodeType"), + ("cudaGraphNodeTypeConditional", "hipGraphNodeTypeConditional"), + ("cudaGraphNodeTypeCount", "hipGraphNodeTypeCount"), + ("cudaGraphNodeTypeEmpty", "hipGraphNodeTypeEmpty"), + ("cudaGraphNodeTypeEventRecord", "hipGraphNodeTypeEventRecord"), + ("cudaGraphNodeTypeExtSemaphoreSignal", "hipGraphNodeTypeExtSemaphoreSignal"), + ("cudaGraphNodeTypeExtSemaphoreWait", "hipGraphNodeTypeExtSemaphoreWait"), + ("cudaGraphNodeTypeGraph", "hipGraphNodeTypeGraph"), + ("cudaGraphNodeTypeHost", "hipGraphNodeTypeHost"), + ("cudaGraphNodeTypeKernel", "hipGraphNodeTypeKernel"), + ("cudaGraphNodeTypeMemAlloc", "hipGraphNodeTypeMemAlloc"), + ("cudaGraphNodeTypeMemFree", "hipGraphNodeTypeMemFree"), + ("cudaGraphNodeTypeMemcpy", "hipGraphNodeTypeMemcpy"), + ("cudaGraphNodeTypeMemset", "hipGraphNodeTypeMemset"), + ("cudaGraphNodeTypeWaitEvent", "hipGraphNodeTypeWaitEvent"), + ("cudaUserObject_t", "hipUserObject_t"), + ("cudaUserObjectCreate", "hipUserObjectCreate"), + ("cudaUserObjectNoDestructorSync", "hipUserObjectNoDestructorSync"), + ("cudaThreadExchangeStreamCaptureMode", "hipThreadExchangeStreamCaptureMode"), + ("cudaStreamIsCapturing", "hipStreamIsCapturing"), + ("cudaDeviceSynchronize", "hipDeviceSynchronize"), + ("cudaDeviceReset", "hipDeviceReset"), + ("cudaSetDevice", "hipSetDevice"), + ("cudaGetDevice", "hipGetDevice"), + ("cudaGetDeviceCount", "hipGetDeviceCount"), + ("cudaChooseDevice", "hipChooseDevice"), + ("cudaThreadExit", "hipDeviceReset"), + ("cudaThreadGetCacheConfig", "hipDeviceGetCacheConfig"), + ("cudaThreadGetLimit", "hipThreadGetLimit"), + ("cudaThreadSetCacheConfig", "hipDeviceSetCacheConfig"), + ("cudaThreadSetLimit", "hipThreadSetLimit"), + ("cudaThreadSynchronize", "hipDeviceSynchronize"), + ("cudaDeviceGetAttribute", "hipDeviceGetAttribute"), + ("cudaDevAttrMaxThreadsPerBlock", "hipDeviceAttributeMaxThreadsPerBlock"), + ("cudaDevAttrMaxBlocksPerMultiprocessor", "hipDeviceAttributeMaxBlocksPerMultiprocessor"), + ("cudaDevAttrMaxBlockDimX", "hipDeviceAttributeMaxBlockDimX"), + ("cudaDevAttrMaxBlockDimY", "hipDeviceAttributeMaxBlockDimY"), + ("cudaDevAttrMaxBlockDimZ", "hipDeviceAttributeMaxBlockDimZ"), + ("cudaDevAttrMaxGridDimX", "hipDeviceAttributeMaxGridDimX"), + ("cudaDevAttrMaxGridDimY", "hipDeviceAttributeMaxGridDimY"), + ("cudaDevAttrMaxGridDimZ", "hipDeviceAttributeMaxGridDimZ"), + ("cudaDevAttrMaxSharedMemoryPerBlock", "hipDeviceAttributeMaxSharedMemoryPerBlock"), + ("cudaDevAttrMaxSharedMemoryPerBlockOptin", "hipDeviceAttributeMaxSharedMemoryPerBlock"), + ("cudaDevAttrTotalConstantMemory", "hipDeviceAttributeTotalConstantMemory"), + ("cudaDevAttrWarpSize", "hipDeviceAttributeWarpSize"), + ("cudaDevAttrMaxPitch", "hipDeviceAttributeMaxPitch"), + ("cudaDevAttrMaxRegistersPerBlock", "hipDeviceAttributeMaxRegistersPerBlock"), + ("cudaDevAttrClockRate", "hipDeviceAttributeClockRate"), + ("cudaDevAttrTextureAlignment", "hipDeviceAttributeTextureAlignment"), + ("cudaDevAttrGpuOverlap", "hipDeviceAttributeGpuOverlap"), + ("cudaDevAttrMultiProcessorCount", "hipDeviceAttributeMultiprocessorCount"), + ("cudaDevAttrKernelExecTimeout", "hipDeviceAttributeKernelExecTimeout"), + ("cudaDevAttrIntegrated", "hipDeviceAttributeIntegrated"), + ("cudaDevAttrReserved94", "hipDeviceAttributeCanUseStreamWaitValue"), + ("cudaDevAttrCooperativeLaunch", "hipDeviceAttributeCooperativeLaunch"), + ("cudaDevAttrCooperativeMultiDeviceLaunch", "hipDeviceAttributeCooperativeMultiDeviceLaunch"), + ("cudaDevAttrCanMapHostMemory", "hipDeviceAttributeCanMapHostMemory"), + ("cudaDevAttrComputeMode", "hipDeviceAttributeComputeMode"), + ("cudaDevAttrMaxTexture1DWidth", "hipDeviceAttributeMaxTexture1DWidth"), + ("cudaDevAttrMaxTexture2DWidth", "hipDeviceAttributeMaxTexture2DWidth"), + ("cudaDevAttrMaxTexture2DHeight", "hipDeviceAttributeMaxTexture2DHeight"), + ("cudaDevAttrMaxTexture3DWidth", "hipDeviceAttributeMaxTexture3DWidth"), + ("cudaDevAttrMaxTexture3DHeight", "hipDeviceAttributeMaxTexture3DHeight"), + ("cudaDevAttrMaxTexture3DDepth", "hipDeviceAttributeMaxTexture3DDepth"), + ("cudaDevAttrMaxTexture2DLayeredWidth", "hipDeviceAttributeMaxTexture2DLayeredWidth"), + ("cudaDevAttrMaxTexture2DLayeredHeight", "hipDeviceAttributeMaxTexture2DLayeredHeight"), + ("cudaDevAttrMaxTexture2DLayeredLayers", "hipDeviceAttributeMaxTexture2DLayeredLayers"), + ("cudaDevAttrSurfaceAlignment", "hipDeviceAttributeSurfaceAlignment"), + ("cudaDevAttrConcurrentKernels", "hipDeviceAttributeConcurrentKernels"), + ("cudaDevAttrEccEnabled", "hipDeviceAttributeEccEnabled"), + ("cudaDevAttrMemoryPoolsSupported", "hipDeviceAttributeMemoryPoolsSupported"), + ("cudaDevAttrPciBusId", "hipDeviceAttributePciBusId"), + ("cudaDevAttrPciDeviceId", "hipDeviceAttributePciDeviceId"), + ("cudaDevAttrTccDriver", "hipDeviceAttributeTccDriver"), + ("cudaDevAttrMemoryClockRate", "hipDeviceAttributeMemoryClockRate"), + ("cudaDevAttrGlobalMemoryBusWidth", "hipDeviceAttributeMemoryBusWidth"), + ("cudaDevAttrL2CacheSize", "hipDeviceAttributeL2CacheSize"), + ("cudaDevAttrMaxThreadsPerMultiProcessor", "hipDeviceAttributeMaxThreadsPerMultiProcessor"), + ("cudaDevAttrAsyncEngineCount", "hipDeviceAttributeAsyncEngineCount"), + ("cudaDevAttrUnifiedAddressing", "hipDeviceAttributeUnifiedAddressing"), + ("cudaDevAttrMaxTexture1DLayeredWidth", "hipDeviceAttributeMaxTexture1DLayeredWidth"), + ("cudaDevAttrMaxTexture1DLayeredLayers", "hipDeviceAttributeMaxTexture1DLayeredLayers"), + ("cudaDevAttrMaxTexture2DGatherWidth", "hipDeviceAttributeMaxTexture2DGatherWidth"), + ("cudaDevAttrMaxTexture2DGatherHeight", "hipDeviceAttributeMaxTexture2DGatherHeight"), + ("cudaDevAttrMaxTexture3DWidthAlt", "hipDeviceAttributeMaxTexture3DWidthAlternate"), + ("cudaDevAttrMaxTexture3DHeightAlt", "hipDeviceAttributeMaxTexture3DHeightAlternate"), + ("cudaDevAttrMaxTexture3DDepthAlt", "hipDeviceAttributeMaxTexture3DDepthAlternate"), + ("cudaDevAttrPciDomainId", "hipDeviceAttributePciDomainId"), + ("cudaDevAttrTexturePitchAlignment", "hipDeviceAttributeTexturePitchAlignment"), + ("cudaDevAttrMaxTextureCubemapWidth", "hipDeviceAttributeMaxTextureCubemapWidth"), + ("cudaDevAttrMaxTextureCubemapLayeredWidth", "hipDeviceAttributeMaxTextureCubemapLayeredWidth"), + ("cudaDevAttrMaxTextureCubemapLayeredLayers", "hipDeviceAttributeMaxTextureCubemapLayeredLayers"), + ("cudaDevAttrMaxSurface1DWidth", "hipDeviceAttributeMaxSurface1DWidth"), + ("cudaDevAttrMaxSurface2DWidth", "hipDeviceAttributeMaxSurface2DWidth"), + ("cudaDevAttrMaxSurface2DHeight", "hipDeviceAttributeMaxSurface2DHeight"), + ("cudaDevAttrMaxSurface3DWidth", "hipDeviceAttributeMaxSurface3DWidth"), + ("cudaDevAttrMaxSurface3DHeight", "hipDeviceAttributeMaxSurface3DHeight"), + ("cudaDevAttrMaxSurface3DDepth", "hipDeviceAttributeMaxSurface3DDepth"), + ("cudaDevAttrMaxSurface1DLayeredWidth", "hipDeviceAttributeMaxSurface1DLayeredWidth"), + ("cudaDevAttrMaxSurface1DLayeredLayers", "hipDeviceAttributeMaxSurface1DLayeredLayers"), + ("cudaDevAttrMaxSurface2DLayeredWidth", "hipDeviceAttributeMaxSurface2DLayeredWidth"), + ("cudaDevAttrMaxSurface2DLayeredHeight", "hipDeviceAttributeMaxSurface2DLayeredHeight"), + ("cudaDevAttrMaxSurface2DLayeredLayers", "hipDeviceAttributeMaxSurface2DLayeredLayers"), + ("cudaDevAttrMaxSurfaceCubemapWidth", "hipDeviceAttributeMaxSurfaceCubemapWidth"), + ("cudaDevAttrMaxSurfaceCubemapLayeredWidth", "hipDeviceAttributeMaxSurfaceCubemapLayeredWidth"), + ("cudaDevAttrMaxSurfaceCubemapLayeredLayers", "hipDeviceAttributeMaxSurfaceCubemapLayeredLayers"), + ("cudaDevAttrMaxTexture1DLinearWidth", "hipDeviceAttributeMaxTexture1DLinearWidth"), + ("cudaDevAttrMaxTexture2DLinearWidth", "hipDeviceAttributeMaxTexture2DLinearWidth"), + ("cudaDevAttrMaxTexture2DLinearHeight", "hipDeviceAttributeMaxTexture2DLinearHeight"), + ("cudaDevAttrMaxTexture2DLinearPitch", "hipDeviceAttributeMaxTexture2DLinearPitch"), + ("cudaDevAttrMaxTexture2DMipmappedWidth", "hipDeviceAttributeMaxTexture2DMipmappedWidth"), + ("cudaDevAttrMaxTexture2DMipmappedHeight", "hipDeviceAttributeMaxTexture2DMipmappedHeight"), + ("cudaDevAttrComputeCapabilityMajor", "hipDeviceAttributeComputeCapabilityMajor"), + ("cudaDevAttrComputeCapabilityMinor", "hipDeviceAttributeComputeCapabilityMinor"), + ("cudaDevAttrMaxTexture1DMipmappedWidth", "hipDeviceAttributeMaxTexture1DMipmappedWidth"), + ("cudaDevAttrStreamPrioritiesSupported", "hipDeviceAttributeStreamPrioritiesSupported"), + ("cudaDevAttrGlobalL1CacheSupported", "hipDeviceAttributeGlobalL1CacheSupported"), + ("cudaDevAttrLocalL1CacheSupported", "hipDeviceAttributeLocalL1CacheSupported"), + ("cudaDevAttrMaxSharedMemoryPerMultiprocessor", "hipDeviceAttributeMaxSharedMemoryPerMultiprocessor"), + ("cudaDevAttrHostRegisterSupported", "hipDeviceAttributeHostRegisterSupported"), + ("cudaDevAttrMaxRegistersPerMultiprocessor", "hipDeviceAttributeMaxRegistersPerMultiprocessor"), + ("cudaDevAttrManagedMemory", "hipDeviceAttributeManagedMemory"), + ("cudaDevAttrDirectManagedMemAccessFromHost", "hipDeviceAttributeDirectManagedMemAccessFromHost"), + ("cudaDevAttrIsMultiGpuBoard", "hipDeviceAttributeIsMultiGpuBoard"), + ("cudaDevAttrMultiGpuBoardGroupID", "hipDeviceAttributeMultiGpuBoardGroupID"), + ("cudaDevAttrHostNativeAtomicSupported", "hipDeviceAttributeHostNativeAtomicSupported"), + ("cudaDevAttrSingleToDoublePrecisionPerfRatio", "hipDeviceAttributeSingleToDoublePrecisionPerfRatio"), + ("cudaDevAttrPageableMemoryAccess", "hipDeviceAttributePageableMemoryAccess"), + ("cudaDevAttrPageableMemoryAccessUsesHostPageTables", "hipDeviceAttributePageableMemoryAccessUsesHostPageTables"), + ("cudaDevAttrConcurrentManagedAccess", "hipDeviceAttributeConcurrentManagedAccess"), + ("cudaDevAttrComputePreemptionSupported", "hipDeviceAttributeComputePreemptionSupported"), + ("cudaDevAttrCanUseHostPointerForRegisteredMem", "hipDeviceAttributeCanUseHostPointerForRegisteredMem"), + ("cudaPointerGetAttributes", "hipPointerGetAttributes"), + ("cudaHostGetDevicePointer", "hipHostGetDevicePointer"), + ("cudaGetDeviceProperties", "hipGetDeviceProperties"), + ("cudaDeviceGetPCIBusId", "hipDeviceGetPCIBusId"), + ("cudaDeviceGetByPCIBusId", "hipDeviceGetByPCIBusId"), + ("cudaDeviceGetStreamPriorityRange", "hipDeviceGetStreamPriorityRange"), + ("cudaSetValidDevices", "hipSetValidDevices"), + ("cudaDevP2PAttrPerformanceRank", "hipDeviceP2PAttributePerformanceRank"), + ("cudaDevP2PAttrAccessSupported", "hipDeviceP2PAttributeAccessSupported"), + ("cudaDevP2PAttrNativeAtomicSupported", "hipDeviceP2PAttributeNativeAtomicSupported"), + ("cudaDeviceGetP2PAttribute", "hipDeviceGetP2PAttribute"), + ("cudaComputeModeDefault", "hipComputeModeDefault"), + ("cudaComputeModeExclusive", "hipComputeModeExclusive"), + ("cudaComputeModeProhibited", "hipComputeModeProhibited"), + ("cudaComputeModeExclusiveProcess", "hipComputeModeExclusiveProcess"), + ("cudaGetDeviceFlags", "hipGetDeviceFlags"), + ("cudaSetDeviceFlags", "hipSetDeviceFlags"), + ("cudaDeviceScheduleAuto", "hipDeviceScheduleAuto"), + ("cudaDeviceScheduleSpin", "hipDeviceScheduleSpin"), + ("cudaDeviceScheduleYield", "hipDeviceScheduleYield"), + ("cudaDeviceBlockingSync", "hipDeviceScheduleBlockingSync"), + ("cudaDeviceScheduleBlockingSync", "hipDeviceScheduleBlockingSync"), + ("cudaDeviceScheduleMask", "hipDeviceScheduleMask"), + ("cudaDeviceMapHost", "hipDeviceMapHost"), + ("cudaDeviceLmemResizeToMax", "hipDeviceLmemResizeToMax"), + ("cudaDeviceMask", "hipDeviceMask"), + ("cudaDeviceSetCacheConfig", "hipDeviceSetCacheConfig"), + ("cudaDeviceGetCacheConfig", "hipDeviceGetCacheConfig"), + ("cudaFuncAttributes", "hipFuncAttributes"), + ("cudaFuncAttributeMaxDynamicSharedMemorySize", "hipFuncAttributeMaxDynamicSharedMemorySize"), + ("cudaFuncAttributePreferredSharedMemoryCarveout", "hipFuncAttributePreferredSharedMemoryCarveout"), + ("cudaFuncSetAttribute", "hipFuncSetAttribute"), + ("cudaFuncSetCacheConfig", "hipFuncSetCacheConfig"), + ("cudaFuncCachePreferNone", "hipFuncCachePreferNone"), + ("cudaFuncCachePreferShared", "hipFuncCachePreferShared"), + ("cudaFuncCachePreferL1", "hipFuncCachePreferL1"), + ("cudaFuncCachePreferEqual", "hipFuncCachePreferEqual"), + ("cudaFuncGetAttributes", "hipFuncGetAttributes"), + ("cudaFuncSetSharedMemConfig", "hipFuncSetSharedMemConfig"), + ("cudaGetParameterBuffer", "hipGetParameterBuffer"), + ("cudaSetDoubleForDevice", "hipSetDoubleForDevice"), + ("cudaSetDoubleForHost", "hipSetDoubleForHost"), + ("cudaConfigureCall", "hipConfigureCall"), + ("cudaLaunch", "hipLaunch"), + ("cudaLaunchCooperativeKernel", "hipLaunchCooperativeKernel"), + ("cudaLaunchHostFunc", "hipLaunchHostFunc"), + ("cudaSetupArgument", "hipSetupArgument"), + ("cudaDriverGetVersion", "hipDriverGetVersion"), + ("cudaRuntimeGetVersion", "hipRuntimeGetVersion"), + ("cudaOccupancyMaxPotentialBlockSize", "hipOccupancyMaxPotentialBlockSize"), + ("cudaErrorContextIsDestroyed", "hipErrorContextIsDestroyed"), + ("cudaDeviceSetLimit", "hipDeviceSetLimit"), + ("cudaMallocFromPoolAsync", "hipMallocFromPoolAsync"), + ("cudaDeviceGetMemPool", "hipDeviceGetMemPool"), + ("cudaDeviceSetMemPool", "hipDeviceSetMemPool"), + ("cudaMemPoolAttr", "hipMemPoolAttr"), + ("cudaMemPoolProps", "hipMemPoolProps"), + ("cudaMemAllocationTypePinned", "hipMemAllocationTypePinned"), + ("cudaMemHandleTypeNone", "hipMemHandleTypeNone"), + ("cudaMemHandleTypePosixFileDescriptor", "hipMemHandleTypePosixFileDescriptor"), + ("cudaMemLocation", "hipMemLocation"), + ("cudaMemPoolCreate", "hipMemPoolCreate"), + ("cudaMemPoolDestroy", "hipMemPoolDestroy"), + ("cudaCreateSurfaceObject", "hipCreateSurfaceObject"), + ("cudaDestroySurfaceObject", "hipDestroySurfaceObject"), + ("cudaGraphUpload", "hipGraphUpload"), + ("cudaOccupancyMaxPotentialBlockSizeWithFlags", "hipOccupancyMaxPotentialBlockSizeWithFlags"), + ("cudaOccupancyMaxActiveBlocksPerMultiprocessor", "hipOccupancyMaxActiveBlocksPerMultiprocessor"), + ("cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags", "hipOccupancyMaxActiveBlocksPerMultiprocessorWithFlags"), + ("cudaOccupancyMaxPotentialBlockSizeVariableSMem", "hipOccupancyMaxPotentialBlockSizeVariableSMem"), + ("cudaOccupancyMaxPotentialBlockSizeVariableSMemWithFlags", "hipOccupancyMaxPotentialBlockSizeVariableSMemWithFlags"), + ("cudaDeviceCanAccessPeer", "hipDeviceCanAccessPeer"), + ("cudaDeviceDisablePeerAccess", "hipDeviceDisablePeerAccess"), + ("cudaDeviceEnablePeerAccess", "hipDeviceEnablePeerAccess"), + ("cudaMemcpyPeerAsync", "hipMemcpyPeerAsync"), + ("cudaMemcpyPeer", "hipMemcpyPeer"), + ("cudaIpcMemLazyEnablePeerAccess", "hipIpcMemLazyEnablePeerAccess"), + ("cudaDeviceSetSharedMemConfig", "hipDeviceSetSharedMemConfig"), + ("cudaDeviceGetSharedMemConfig", "hipDeviceGetSharedMemConfig"), + ("cudaSharedMemBankSizeDefault", "hipSharedMemBankSizeDefault"), + ("cudaSharedMemBankSizeFourByte", "hipSharedMemBankSizeFourByte"), + ("cudaSharedMemBankSizeEightByte", "hipSharedMemBankSizeEightByte"), + ("cudaLimitStackSize", "hipLimitStackSize"), + ("cudaLimitPrintfFifoSize", "hipLimitPrintfFifoSize"), + ("cudaLimitMallocHeapSize", "hipLimitMallocHeapSize"), + ("cudaLimitDevRuntimeSyncDepth", "hipLimitDevRuntimeSyncDepth"), + ("cudaLimitDevRuntimePendingLaunchCount", "hipLimitDevRuntimePendingLaunchCount"), + ("cudaDeviceGetLimit", "hipDeviceGetLimit"), + ("cudaProfilerInitialize", "hipProfilerInitialize"), + ("cudaProfilerStart", "hipProfilerStart"), + ("cudaProfilerStop", "hipProfilerStop"), + ("cudaKeyValuePair", "hipKeyValuePair"), + ("cudaCSV", "hipCSV"), + ("cudaReadModeElementType", "hipReadModeElementType"), + ("cudaReadModeNormalizedFloat", "hipReadModeNormalizedFloat"), + ("cudaFilterModePoint", "hipFilterModePoint"), + ("cudaFilterModeLinear", "hipFilterModeLinear"), + ("cudaBindTexture", "hipBindTexture"), + ("cudaUnbindTexture", "hipUnbindTexture"), + ("cudaBindTexture2D", "hipBindTexture2D"), + ("cudaBindTextureToArray", "hipBindTextureToArray"), + ("cudaBindTextureToMipmappedArray", "hipBindTextureToMipmappedArray"), + ("cudaGetTextureAlignmentOffset", "hipGetTextureAlignmentOffset"), + ("cudaGetTextureReference", "hipGetTextureReference"), + ("cudaChannelFormatKindSigned", "hipChannelFormatKindSigned"), + ("cudaChannelFormatKindUnsigned", "hipChannelFormatKindUnsigned"), + ("cudaChannelFormatKindFloat", "hipChannelFormatKindFloat"), + ("cudaChannelFormatKindNone", "hipChannelFormatKindNone"), + ("cudaCreateChannelDesc", "hipCreateChannelDesc"), + ("cudaGetChannelDesc", "hipGetChannelDesc"), + ("cudaResourceTypeArray", "hipResourceTypeArray"), + ("cudaResourceTypeMipmappedArray", "hipResourceTypeMipmappedArray"), + ("cudaResourceTypeLinear", "hipResourceTypeLinear"), + ("cudaResourceTypePitch2D", "hipResourceTypePitch2D"), + ("cudaResViewFormatNone", "hipResViewFormatNone"), + ("cudaResViewFormatUnsignedChar1", "hipResViewFormatUnsignedChar1"), + ("cudaResViewFormatUnsignedChar2", "hipResViewFormatUnsignedChar2"), + ("cudaResViewFormatUnsignedChar4", "hipResViewFormatUnsignedChar4"), + ("cudaResViewFormatSignedChar1", "hipResViewFormatSignedChar1"), + ("cudaResViewFormatSignedChar2", "hipResViewFormatSignedChar2"), + ("cudaResViewFormatSignedChar4", "hipResViewFormatSignedChar4"), + ("cudaResViewFormatUnsignedShort1", "hipResViewFormatUnsignedShort1"), + ("cudaResViewFormatUnsignedShort2", "hipResViewFormatUnsignedShort2"), + ("cudaResViewFormatUnsignedShort4", "hipResViewFormatUnsignedShort4"), + ("cudaResViewFormatSignedShort1", "hipResViewFormatSignedShort1"), + ("cudaResViewFormatSignedShort2", "hipResViewFormatSignedShort2"), + ("cudaResViewFormatSignedShort4", "hipResViewFormatSignedShort4"), + ("cudaResViewFormatUnsignedInt1", "hipResViewFormatUnsignedInt1"), + ("cudaResViewFormatUnsignedInt2", "hipResViewFormatUnsignedInt2"), + ("cudaResViewFormatUnsignedInt4", "hipResViewFormatUnsignedInt4"), + ("cudaResViewFormatSignedInt1", "hipResViewFormatSignedInt1"), + ("cudaResViewFormatSignedInt2", "hipResViewFormatSignedInt2"), + ("cudaResViewFormatSignedInt4", "hipResViewFormatSignedInt4"), + ("cudaResViewFormatHalf1", "hipResViewFormatHalf1"), + ("cudaResViewFormatHalf2", "hipResViewFormatHalf2"), + ("cudaResViewFormatHalf4", "hipResViewFormatHalf4"), + ("cudaResViewFormatFloat1", "hipResViewFormatFloat1"), + ("cudaResViewFormatFloat2", "hipResViewFormatFloat2"), + ("cudaResViewFormatFloat4", "hipResViewFormatFloat4"), + ("cudaResViewFormatUnsignedBlockCompressed1", "hipResViewFormatUnsignedBlockCompressed1"), + ("cudaResViewFormatUnsignedBlockCompressed2", "hipResViewFormatUnsignedBlockCompressed2"), + ("cudaResViewFormatUnsignedBlockCompressed3", "hipResViewFormatUnsignedBlockCompressed3"), + ("cudaResViewFormatUnsignedBlockCompressed4", "hipResViewFormatUnsignedBlockCompressed4"), + ("cudaResViewFormatSignedBlockCompressed4", "hipResViewFormatSignedBlockCompressed4"), + ("cudaResViewFormatUnsignedBlockCompressed5", "hipResViewFormatUnsignedBlockCompressed5"), + ("cudaResViewFormatSignedBlockCompressed5", "hipResViewFormatSignedBlockCompressed5"), + ("cudaResViewFormatUnsignedBlockCompressed6H", "hipResViewFormatUnsignedBlockCompressed6H"), + ("cudaResViewFormatSignedBlockCompressed6H", "hipResViewFormatSignedBlockCompressed6H"), + ("cudaResViewFormatUnsignedBlockCompressed7", "hipResViewFormatUnsignedBlockCompressed7"), + ("cudaAddressModeWrap", "hipAddressModeWrap"), + ("cudaAddressModeClamp", "hipAddressModeClamp"), + ("cudaAddressModeMirror", "hipAddressModeMirror"), + ("cudaAddressModeBorder", "hipAddressModeBorder"), + ("cudaCreateTextureObject", "hipCreateTextureObject"), + ("cudaDestroyTextureObject", "hipDestroyTextureObject"), + ("cudaGetTextureObjectResourceDesc", "hipGetTextureObjectResourceDesc"), + ("cudaGetTextureObjectResourceViewDesc", "hipGetTextureObjectResourceViewDesc"), + ("cudaGetTextureObjectTextureDesc", "hipGetTextureObjectTextureDesc"), + ("cudaBindSurfaceToArray", "hipBindSurfaceToArray"), + ("cudaGetSurfaceReference", "hipGetSurfaceReference"), + ("cudaBoundaryModeZero", "hipBoundaryModeZero"), + ("cudaBoundaryModeClamp", "hipBoundaryModeClamp"), + ("cudaBoundaryModeTrap", "hipBoundaryModeTrap"), + ("cudaFormatModeForced", "hipFormatModeForced"), + ("cudaFormatModeAuto", "hipFormatModeAuto"), + ("cudaGetSurfaceObjectResourceDesc", "hipGetSurfaceObjectResourceDesc"), + ("cudaIpcCloseMemHandle", "hipIpcCloseMemHandle"), + ("cudaIpcGetEventHandle", "hipIpcGetEventHandle"), + ("cudaIpcGetMemHandle", "hipIpcGetMemHandle"), + ("cudaIpcOpenEventHandle", "hipIpcOpenEventHandle"), + ("cudaIpcOpenMemHandle", "hipIpcOpenMemHandle"), + ("cudaGLGetDevices", "hipGLGetDevices"), + ("cudaGraphicsGLRegisterBuffer", "hipGraphicsGLRegisterBuffer"), + ("cudaGraphicsGLRegisterImage", "hipGraphicsGLRegisterImage"), + ("cudaWGLGetDevice", "hipWGLGetDevice"), + ("cudaGraphicsMapResources", "hipGraphicsMapResources"), + ("cudaGraphicsResourceGetMappedMipmappedArray", "hipGraphicsResourceGetMappedMipmappedArray"), + ("cudaGraphicsResourceGetMappedPointer", "hipGraphicsResourceGetMappedPointer"), + ("cudaGraphicsResourceSetMapFlags", "hipGraphicsResourceSetMapFlags"), + ("cudaGraphicsSubResourceGetMappedArray", "hipGraphicsSubResourceGetMappedArray"), + ("cudaGraphicsUnmapResources", "hipGraphicsUnmapResources"), + ("cudaGraphicsUnregisterResource", "hipGraphicsUnregisterResource"), + ("cudaGraphicsCubeFacePositiveX", "hipGraphicsCubeFacePositiveX"), + ("cudaGraphicsCubeFaceNegativeX", "hipGraphicsCubeFaceNegativeX"), + ("cudaGraphicsCubeFacePositiveY", "hipGraphicsCubeFacePositiveY"), + ("cudaGraphicsCubeFaceNegativeY", "hipGraphicsCubeFaceNegativeY"), + ("cudaGraphicsCubeFacePositiveZ", "hipGraphicsCubeFacePositiveZ"), + ("cudaGraphicsCubeFaceNegativeZ", "hipGraphicsCubeFaceNegativeZ"), + ("cudaGraphicsMapFlagsNone", "hipGraphicsMapFlagsNone"), + ("cudaGraphicsMapFlagsReadOnly", "hipGraphicsMapFlagsReadOnly"), + ("cudaGraphicsMapFlagsWriteDiscard", "hipGraphicsMapFlagsWriteDiscard"), + ("cudaGraphicsRegisterFlagsNone", "hipGraphicsRegisterFlagsNone"), + ("cudaGraphicsRegisterFlagsReadOnly", "hipGraphicsRegisterFlagsReadOnly"), + ("cudaGraphicsRegisterFlagsWriteDiscard", "hipGraphicsRegisterFlagsWriteDiscard"), + ("cudaGraphicsRegisterFlagsSurfaceLoadStore", "hipGraphicsRegisterFlagsSurfaceLoadStore"), + ("cudaGraphicsRegisterFlagsTextureGather", "hipGraphicsRegisterFlagsTextureGather"), + ("cudaGLDeviceListAll", "HIP_GL_DEVICE_LIST_ALL"), + ("cudaGLDeviceListCurrentFrame", "HIP_GL_DEVICE_LIST_CURRENT_FRAME"), + ("cudaGLDeviceListNextFrame", "HIP_GL_DEVICE_LIST_NEXT_FRAME"), + ("cudaGLMapFlagsNone", "HIP_GL_MAP_RESOURCE_FLAGS_NONE"), + ("cudaGLMapFlagsReadOnly", "HIP_GL_MAP_RESOURCE_FLAGS_READ_ONLY"), + ("cudaGLMapFlagsWriteDiscard", "HIP_GL_MAP_RESOURCE_FLAGS_WRITE_DISCARD"), + ("cudaGLMapBufferObject", "hipGLMapBufferObject__"), + ("cudaGLMapBufferObjectAsync", "hipGLMapBufferObjectAsync__"), + ("cudaGLRegisterBufferObject", "hipGLRegisterBufferObject"), + ("cudaGLSetBufferObjectMapFlags", "hipGLSetBufferObjectMapFlags"), + ("cudaGLSetGLDevice", "hipGLSetGLDevice"), + ("cudaGLUnmapBufferObject", "hipGLUnmapBufferObject"), + ("cudaGLUnmapBufferObjectAsync", "hipGLUnmapBufferObjectAsync"), + ("cudaGLUnregisterBufferObject", "hipGLUnregisterBufferObject"), + ("cudaD3D9DeviceListAll", "HIP_D3D9_DEVICE_LIST_ALL"), + ("cudaD3D9DeviceListCurrentFrame", "HIP_D3D9_DEVICE_LIST_CURRENT_FRAME"), + ("cudaD3D9DeviceListNextFrame", "HIP_D3D9_DEVICE_LIST_NEXT_FRAME"), + ("cudaD3D9GetDevice", "hipD3D9GetDevice"), + ("cudaD3D9GetDevices", "hipD3D9GetDevices"), + ("cudaD3D9GetDirect3DDevice", "hipD3D9GetDirect3DDevice"), + ("cudaD3D9SetDirect3DDevice", "hipD3D9SetDirect3DDevice"), + ("cudaGraphicsD3D9RegisterResource", "hipGraphicsD3D9RegisterResource"), + ("cudaD3D9MapFlags", "hipD3D9MapFlags"), + ("cudaD3D9MapFlagsNone", "HIP_D3D9_MAPRESOURCE_FLAGS_NONE"), + ("cudaD3D9MapFlagsReadOnly", "HIP_D3D9_MAPRESOURCE_FLAGS_READONLY"), + ("cudaD3D9MapFlagsWriteDiscard", "HIP_D3D9_MAPRESOURCE_FLAGS_WRITEDISCARD"), + ("cudaD3D9RegisterFlagsNone", "HIP_D3D9_REGISTER_FLAGS_NONE"), + ("cudaD3D9RegisterFlagsArray", "HIP_D3D9_REGISTER_FLAGS_ARRAY"), + ("cudaD3D9MapResources", "hipD3D9MapResources"), + ("cudaD3D9RegisterResource", "hipD3D9RegisterResource"), + ("cudaD3D9ResourceGetMappedArray", "hipD3D9ResourceGetMappedArray"), + ("cudaD3D9ResourceGetMappedPitch", "hipD3D9ResourceGetMappedPitch"), + ("cudaD3D9ResourceGetMappedPointer", "hipD3D9ResourceGetMappedPointer"), + ("cudaD3D9ResourceGetMappedSize", "hipD3D9ResourceGetMappedSize"), + ("cudaD3D9ResourceGetSurfaceDimensions", "hipD3D9ResourceGetSurfaceDimensions"), + ("cudaD3D9ResourceSetMapFlags", "hipD3D9ResourceSetMapFlags"), + ("cudaD3D9UnmapResources", "hipD3D9UnmapResources"), + ("cudaD3D9UnregisterResource", "hipD3D9UnregisterResource"), + ("cudaD3D10DeviceListAll", "HIP_D3D10_DEVICE_LIST_ALL"), + ("cudaD3D10DeviceListCurrentFrame", "HIP_D3D10_DEVICE_LIST_CURRENT_FRAME"), + ("cudaD3D10DeviceListNextFrame", "HIP_D3D10_DEVICE_LIST_NEXT_FRAME"), + ("cudaD3D10GetDevice", "hipD3D10GetDevice"), + ("cudaD3D10GetDevices", "hipD3D10GetDevices"), + ("cudaGraphicsD3D10RegisterResource", "hipGraphicsD3D10RegisterResource"), + ("cudaD3D10MapFlagsNone", "HIP_D3D10_MAPRESOURCE_FLAGS_NONE"), + ("cudaD3D10MapFlagsReadOnly", "HIP_D3D10_MAPRESOURCE_FLAGS_READONLY"), + ("cudaD3D10MapFlagsWriteDiscard", "HIP_D3D10_MAPRESOURCE_FLAGS_WRITEDISCARD"), + ("cudaD3D10RegisterFlagsNone", "HIP_D3D10_REGISTER_FLAGS_NONE"), + ("cudaD3D10RegisterFlagsArray", "HIP_D3D10_REGISTER_FLAGS_ARRAY"), + ("cudaD3D10GetDirect3DDevice", "hipD3D10GetDirect3DDevice"), + ("cudaD3D10MapResources", "hipD3D10MapResources"), + ("cudaD3D10RegisterResource", "hipD3D10RegisterResource"), + ("cudaD3D10ResourceGetMappedArray", "hipD3D10ResourceGetMappedArray"), + ("cudaD3D10ResourceGetMappedPitch", "hipD3D10ResourceGetMappedPitch"), + ("cudaD3D10ResourceGetMappedPointer", "hipD3D10ResourceGetMappedPointer"), + ("cudaD3D10ResourceGetMappedSize", "hipD3D10ResourceGetMappedSize"), + ("cudaD3D10ResourceGetSurfaceDimensions", "hipD3D10ResourceGetSurfaceDimensions"), + ("cudaD3D10ResourceSetMapFlags", "hipD3D10ResourceSetMapFlags"), + ("cudaD3D10SetDirect3DDevice", "hipD3D10SetDirect3DDevice"), + ("cudaD3D10UnmapResources", "hipD3D10UnmapResources"), + ("cudaD3D10UnregisterResource", "hipD3D10UnregisterResource"), + ("cudaD3D11DeviceListAll", "HIP_D3D11_DEVICE_LIST_ALL"), + ("cudaD3D11DeviceListCurrentFrame", "HIP_D3D11_DEVICE_LIST_CURRENT_FRAME"), + ("cudaD3D11DeviceListNextFrame", "HIP_D3D11_DEVICE_LIST_NEXT_FRAME"), + ("cudaD3D11GetDevice", "hipD3D11GetDevice"), + ("cudaD3D11GetDevices", "hipD3D11GetDevices"), + ("cudaGraphicsD3D11RegisterResource", "hipGraphicsD3D11RegisterResource"), + ("cudaGraphicsVDPAURegisterOutputSurface", "hipGraphicsVDPAURegisterOutputSurface"), + ("cudaGraphicsVDPAURegisterVideoSurface", "hipGraphicsVDPAURegisterVideoSurface"), + ("cudaVDPAUGetDevice", "hipVDPAUGetDevice"), + ("cudaVDPAUSetVDPAUDevice", "hipVDPAUSetDevice"), + ("cudaEGLStreamConsumerAcquireFrame", "hipEGLStreamConsumerAcquireFrame"), + ("cudaEGLStreamConsumerConnect", "hipEGLStreamConsumerConnect"), + ("cudaEGLStreamConsumerConnectWithFlags", "hipEGLStreamConsumerConnectWithFlags"), + ("cudaEGLStreamConsumerReleaseFrame", "hipEGLStreamConsumerReleaseFrame"), + ("cudaEGLStreamProducerConnect", "hipEGLStreamProducerConnect"), + ("cudaEGLStreamProducerDisconnect", "hipEGLStreamProducerDisconnect"), + ("cudaEGLStreamProducerPresentFrame", "hipEGLStreamProducerPresentFrame"), + ("cudaEGLStreamProducerReturnFrame", "hipEGLStreamProducerReturnFrame"), + ("cudaGraphicsEGLRegisterImage", "hipGraphicsEGLRegisterImage"), + ("cudaGraphicsResourceGetMappedEglFrame", "hipGraphicsResourceGetMappedEglFrame"), + ("cublasInit", "hipblasInit"), + ("cublasShutdown", "hipblasShutdown"), + ("cublasGetVersion", "hipblasGetVersion"), + ("cublasGetError", "hipblasGetError"), + ("cublasAlloc", "hipblasAlloc"), + ("cublasFree", "hipblasFree"), + ("cublasSetKernelStream", "hipblasSetKernelStream"), + ("cublasGetAtomicsMode", "hipblasGetAtomicsMode"), + ("cublasSetAtomicsMode", "hipblasSetAtomicsMode"), + ("cublasGetMathMode", "hipblasGetMathMode"), + ("cublasSetMathMode", "hipblasSetMathMode"), + ("CUBLAS_OP_N", "HIPBLAS_OP_N"), + ("CUBLAS_OP_T", "HIPBLAS_OP_T"), + ("CUBLAS_OP_C", "HIPBLAS_OP_C"), + ("CUBLAS_STATUS_SUCCESS", "HIPBLAS_STATUS_SUCCESS"), + ("CUBLAS_STATUS_NOT_INITIALIZED", "HIPBLAS_STATUS_NOT_INITIALIZED"), + ("CUBLAS_STATUS_ALLOC_FAILED", "HIPBLAS_STATUS_ALLOC_FAILED"), + ("CUBLAS_STATUS_INVALID_VALUE", "HIPBLAS_STATUS_INVALID_VALUE"), + ("CUBLAS_STATUS_MAPPING_ERROR", "HIPBLAS_STATUS_MAPPING_ERROR"), + ("CUBLAS_STATUS_EXECUTION_FAILED", "HIPBLAS_STATUS_EXECUTION_FAILED"), + ("CUBLAS_STATUS_INTERNAL_ERROR", "HIPBLAS_STATUS_INTERNAL_ERROR"), + ("CUBLAS_STATUS_NOT_SUPPORTED", "HIPBLAS_STATUS_NOT_SUPPORTED"), + ("CUBLAS_STATUS_ARCH_MISMATCH", "HIPBLAS_STATUS_ARCH_MISMATCH"), + ("CUBLAS_FILL_MODE_LOWER", "HIPBLAS_FILL_MODE_LOWER"), + ("CUBLAS_FILL_MODE_UPPER", "HIPBLAS_FILL_MODE_UPPER"), + ("CUBLAS_DIAG_NON_UNIT", "HIPBLAS_DIAG_NON_UNIT"), + ("CUBLAS_DIAG_UNIT", "HIPBLAS_DIAG_UNIT"), + ("CUBLAS_SIDE_LEFT", "HIPBLAS_SIDE_LEFT"), + ("CUBLAS_SIDE_RIGHT", "HIPBLAS_SIDE_RIGHT"), + ("CUBLAS_POINTER_MODE_HOST", "HIPBLAS_POINTER_MODE_HOST"), + ("CUBLAS_POINTER_MODE_DEVICE", "HIPBLAS_POINTER_MODE_DEVICE"), + ("CUBLAS_ATOMICS_NOT_ALLOWED", "HIPBLAS_ATOMICS_NOT_ALLOWED"), + ("CUBLAS_ATOMICS_ALLOWED", "HIPBLAS_ATOMICS_ALLOWED"), + ("CUBLAS_DATA_FLOAT", "HIPBLAS_DATA_FLOAT"), + ("CUBLAS_DATA_DOUBLE", "HIPBLAS_DATA_DOUBLE"), + ("CUBLAS_DATA_HALF", "HIPBLAS_DATA_HALF"), + ("CUBLAS_DATA_INT8", "HIPBLAS_DATA_INT8"), + ("CUBLAS_GEMM_DEFAULT", "HIPBLAS_GEMM_DEFAULT"), + ("CUBLAS_GEMM_DEFAULT_TENSOR_OP", "HIPBLAS_GEMM_DEFAULT"), + ("cublasCreate", "hipblasCreate"), + ("cublasDestroy", "hipblasDestroy"), + ("cublasSetVector", "hipblasSetVector"), + ("cublasGetVector", "hipblasGetVector"), + ("cublasSetVectorAsync", "hipblasSetVectorAsync"), + ("cublasGetVectorAsync", "hipblasGetVectorAsync"), + ("cublasSetMatrix", "hipblasSetMatrix"), + ("cublasGetMatrix", "hipblasGetMatrix"), + ("cublasGetMatrixAsync", "hipblasGetMatrixAsync"), + ("cublasSetMatrixAsync", "hipblasSetMatrixAsync"), + ("cublasXerbla", "hipblasXerbla"), + ("cublasSnrm2", "hipblasSnrm2"), + ("cublasDnrm2", "hipblasDnrm2"), + ("cublasScnrm2", "hipblasScnrm2"), + ("cublasDznrm2", "hipblasDznrm2"), + ("cublasNrm2Ex", "hipblasNrm2Ex"), + ("cublasSdot", "hipblasSdot"), + ("cublasSdotBatched", "hipblasSdotBatched"), + ("cublasDdot", "hipblasDdot"), + ("cublasDdotBatched", "hipblasDdotBatched"), + ("cublasCdotu", "hipblasCdotu"), + ("cublasCdotc", "hipblasCdotc"), + ("cublasZdotu", "hipblasZdotu"), + ("cublasZdotc", "hipblasZdotc"), + ("cublasSscal", "hipblasSscal"), + ("cublasSscalBatched", "hipblasSscalBatched"), + ("cublasDscal", "hipblasDscal"), + ("cublasDscalBatched", "hipblasDscalBatched"), + ("cublasCscal", "hipblasCscal"), + ("cublasCsscal", "hipblasCsscal"), + ("cublasZscal", "hipblasZscal"), + ("cublasZdscal", "hipblasZdscal"), + ("cublasSaxpy", "hipblasSaxpy"), + ("cublasSaxpyBatched", "hipblasSaxpyBatched"), + ("cublasDaxpy", "hipblasDaxpy"), + ("cublasCaxpy", "hipblasCaxpy"), + ("cublasZaxpy", "hipblasZaxpy"), + ("cublasScopy", "hipblasScopy"), + ("cublasScopyBatched", "hipblasScopyBatched"), + ("cublasDcopy", "hipblasDcopy"), + ("cublasDcopyBatched", "hipblasDcopyBatched"), + ("cublasCcopy", "hipblasCcopy"), + ("cublasZcopy", "hipblasZcopy"), + ("cublasSswap", "hipblasSswap"), + ("cublasDswap", "hipblasDswap"), + ("cublasCswap", "hipblasCswap"), + ("cublasZswap", "hipblasZswap"), + ("cublasIsamax", "hipblasIsamax"), + ("cublasIdamax", "hipblasIdamax"), + ("cublasIcamax", "hipblasIcamax"), + ("cublasIzamax", "hipblasIzamax"), + ("cublasIsamin", "hipblasIsamin"), + ("cublasIdamin", "hipblasIdamin"), + ("cublasIcamin", "hipblasIcamin"), + ("cublasIzamin", "hipblasIzamin"), + ("cublasSasum", "hipblasSasum"), + ("cublasSasumBatched", "hipblasSasumBatched"), + ("cublasDasum", "hipblasDasum"), + ("cublasDasumBatched", "hipblasDasumBatched"), + ("cublasScasum", "hipblasScasum"), + ("cublasDzasum", "hipblasDzasum"), + ("cublasSrot", "hipblasSrot"), + ("cublasDrot", "hipblasDrot"), + ("cublasCrot", "hipblasCrot"), + ("cublasCsrot", "hipblasCsrot"), + ("cublasZrot", "hipblasZrot"), + ("cublasZdrot", "hipblasZdrot"), + ("cublasSrotg", "hipblasSrotg"), + ("cublasDrotg", "hipblasDrotg"), + ("cublasCrotg", "hipblasCrotg"), + ("cublasZrotg", "hipblasZrotg"), + ("cublasSrotm", "hipblasSrotm"), + ("cublasDrotm", "hipblasDrotm"), + ("cublasSrotmg", "hipblasSrotmg"), + ("cublasDrotmg", "hipblasDrotmg"), + ("cublasSgemv", "hipblasSgemv"), + ("cublasSgemvBatched", "hipblasSgemvBatched"), + ("cublasDgemv", "hipblasDgemv"), + ("cublasCgemv", "hipblasCgemv"), + ("cublasZgemv", "hipblasZgemv"), + ("cublasSgbmv", "hipblasSgbmv"), + ("cublasDgbmv", "hipblasDgbmv"), + ("cublasCgbmv", "hipblasCgbmv"), + ("cublasZgbmv", "hipblasZgbmv"), + ("cublasStrmv", "hipblasStrmv"), + ("cublasDtrmv", "hipblasDtrmv"), + ("cublasCtrmv", "hipblasCtrmv"), + ("cublasZtrmv", "hipblasZtrmv"), + ("cublasStbmv", "hipblasStbmv"), + ("cublasDtbmv", "hipblasDtbmv"), + ("cublasCtbmv", "hipblasCtbmv"), + ("cublasZtbmv", "hipblasZtbmv"), + ("cublasStpmv", "hipblasStpmv"), + ("cublasDtpmv", "hipblasDtpmv"), + ("cublasCtpmv", "hipblasCtpmv"), + ("cublasZtpmv", "hipblasZtpmv"), + ("cublasStrsv", "hipblasStrsv"), + ("cublasDtrsv", "hipblasDtrsv"), + ("cublasCtrsv", "hipblasCtrsv"), + ("cublasZtrsv", "hipblasZtrsv"), + ("cublasStpsv", "hipblasStpsv"), + ("cublasDtpsv", "hipblasDtpsv"), + ("cublasCtpsv", "hipblasCtpsv"), + ("cublasZtpsv", "hipblasZtpsv"), + ("cublasStbsv", "hipblasStbsv"), + ("cublasDtbsv", "hipblasDtbsv"), + ("cublasCtbsv", "hipblasCtbsv"), + ("cublasZtbsv", "hipblasZtbsv"), + ("cublasSsymv", "hipblasSsymv"), + ("cublasDsymv", "hipblasDsymv"), + ("cublasCsymv", "hipblasCsymv"), + ("cublasZsymv", "hipblasZsymv"), + ("cublasChemv", "hipblasChemv"), + ("cublasZhemv", "hipblasZhemv"), + ("cublasSsbmv", "hipblasSsbmv"), + ("cublasDsbmv", "hipblasDsbmv"), + ("cublasChbmv", "hipblasChbmv"), + ("cublasZhbmv", "hipblasZhbmv"), + ("cublasSspmv", "hipblasSspmv"), + ("cublasDspmv", "hipblasDspmv"), + ("cublasChpmv", "hipblasChpmv"), + ("cublasZhpmv", "hipblasZhpmv"), + ("cublasSger", "hipblasSger"), + ("cublasDger", "hipblasDger"), + ("cublasCgeru", "hipblasCgeru"), + ("cublasCgerc", "hipblasCgerc"), + ("cublasZgeru", "hipblasZgeru"), + ("cublasZgerc", "hipblasZgerc"), + ("cublasSsyr", "hipblasSsyr"), + ("cublasDsyr", "hipblasDsyr"), + ("cublasCher", "hipblasCher"), + ("cublasZher", "hipblasZher"), + ("cublasSspr", "hipblasSspr"), + ("cublasDspr", "hipblasDspr"), + ("cublasChpr", "hipblasChpr"), + ("cublasZhpr", "hipblasZhpr"), + ("cublasSsyr2", "hipblasSsyr2"), + ("cublasDsyr2", "hipblasDsyr2"), + ("cublasCher2", "hipblasCher2"), + ("cublasZher2", "hipblasZher2"), + ("cublasSspr2", "hipblasSspr2"), + ("cublasDspr2", "hipblasDspr2"), + ("cublasChpr2", "hipblasChpr2"), + ("cublasZhpr2", "hipblasZhpr2"), + ("cublasSgemmBatched", "hipblasSgemmBatched"), + ("cublasDgemmBatched", "hipblasDgemmBatched"), + ("cublasHgemmBatched", "hipblasHgemmBatched"), + ("cublasSgemmStridedBatched", "hipblasSgemmStridedBatched"), + ("cublasDgemmStridedBatched", "hipblasDgemmStridedBatched"), + ("cublasHgemmStridedBatched", "hipblasHgemmStridedBatched"), + ("cublasCgemmBatched", "hipblasCgemmBatched"), + ("cublasCgemm3mBatched", "hipblasCgemm3mBatched"), + ("cublasZgemmBatched", "hipblasZgemmBatched"), + ("cublasCgemmStridedBatched", "hipblasCgemmStridedBatched"), + ("cublasCgemm3mStridedBatched", "hipblasCgemm3mStridedBatched"), + ("cublasZgemmStridedBatched", "hipblasZgemmStridedBatched"), + ("cublasSgemm", "hipblasSgemm"), + ("cublasDgemm", "hipblasDgemm"), + ("cublasCgemm", "hipblasCgemm"), + ("cublasZgemm", "hipblasZgemm"), + ("cublasHgemm", "hipblasHgemm"), + ("cublasSsyrk", "hipblasSsyrk"), + ("cublasDsyrk", "hipblasDsyrk"), + ("cublasCsyrk", "hipblasCsyrk"), + ("cublasZsyrk", "hipblasZsyrk"), + ("cublasCherk", "hipblasCherk"), + ("cublasZherk", "hipblasZherk"), + ("cublasSsyr2k", "hipblasSsyr2k"), + ("cublasDsyr2k", "hipblasDsyr2k"), + ("cublasCsyr2k", "hipblasCsyr2k"), + ("cublasZsyr2k", "hipblasZsyr2k"), + ("cublasSsyrkx", "hipblasSsyrkx"), + ("cublasDsyrkx", "hipblasDsyrkx"), + ("cublasCsyrkx", "hipblasCsyrkx"), + ("cublasZsyrkx", "hipblasZsyrkx"), + ("cublasCher2k", "hipblasCher2k"), + ("cublasZher2k", "hipblasZher2k"), + ("cublasCherkx", "hipblasCherkx"), + ("cublasZherkx", "hipblasZherkx"), + ("cublasSsymm", "hipblasSsymm"), + ("cublasDsymm", "hipblasDsymm"), + ("cublasCsymm", "hipblasCsymm"), + ("cublasZsymm", "hipblasZsymm"), + ("cublasChemm", "hipblasChemm"), + ("cublasZhemm", "hipblasZhemm"), + ("cublasStrsm", "hipblasStrsm"), + ("cublasDtrsm", "hipblasDtrsm"), + ("cublasCtrsm", "hipblasCtrsm"), + ("cublasZtrsm", "hipblasZtrsm"), + ("cublasStrsmBatched", "hipblasStrsmBatched"), + ("cublasDtrsmBatched", "hipblasDtrsmBatched"), + ("cublasCtrsmBatched", "hipblasCtrsmBatched"), + ("cublasZtrsmBatched", "hipblasZtrsmBatched"), + ("cublasStrmm", "hipblasStrmm"), + ("cublasDtrmm", "hipblasDtrmm"), + ("cublasCtrmm", "hipblasCtrmm"), + ("cublasZtrmm", "hipblasZtrmm"), + ("cublasSgeam", "hipblasSgeam"), + ("cublasDgeam", "hipblasDgeam"), + ("cublasCgeam", "hipblasCgeam"), + ("cublasZgeam", "hipblasZgeam"), + ("cublasSgetrfBatched", "hipblasSgetrfBatched"), + ("cublasDgetrfBatched", "hipblasDgetrfBatched"), + ("cublasCgetrfBatched", "hipblasCgetrfBatched"), + ("cublasZgetrfBatched", "hipblasZgetrfBatched"), + ("cublasSgetriBatched", "hipblasSgetriBatched"), + ("cublasDgetriBatched", "hipblasDgetriBatched"), + ("cublasCgetriBatched", "hipblasCgetriBatched"), + ("cublasZgetriBatched", "hipblasZgetriBatched"), + ("cublasSgetrsBatched", "hipblasSgetrsBatched"), + ("cublasDgetrsBatched", "hipblasDgetrsBatched"), + ("cublasCgetrsBatched", "hipblasCgetrsBatched"), + ("cublasZgetrsBatched", "hipblasZgetrsBatched"), + ("cublasSmatinvBatched", "hipblasSmatinvBatched"), + ("cublasDmatinvBatched", "hipblasDmatinvBatched"), + ("cublasCmatinvBatched", "hipblasCmatinvBatched"), + ("cublasZmatinvBatched", "hipblasZmatinvBatched"), + ("cublasSgeqrfBatched", "hipblasSgeqrfBatched"), + ("cublasDgeqrfBatched", "hipblasDgeqrfBatched"), + ("cublasCgeqrfBatched", "hipblasCgeqrfBatched"), + ("cublasZgeqrfBatched", "hipblasZgeqrfBatched"), + ("cublasSgelsBatched", "hipblasSgelsBatched"), + ("cublasDgelsBatched", "hipblasDgelsBatched"), + ("cublasCgelsBatched", "hipblasCgelsBatched"), + ("cublasZgelsBatched", "hipblasZgelsBatched"), + ("cublasSdgmm", "hipblasSdgmm"), + ("cublasDdgmm", "hipblasDdgmm"), + ("cublasCdgmm", "hipblasCdgmm"), + ("cublasZdgmm", "hipblasZdgmm"), + ("cublasStpttr", "hipblasStpttr"), + ("cublasDtpttr", "hipblasDtpttr"), + ("cublasCtpttr", "hipblasCtpttr"), + ("cublasZtpttr", "hipblasZtpttr"), + ("cublasStrttp", "hipblasStrttp"), + ("cublasDtrttp", "hipblasDtrttp"), + ("cublasCtrttp", "hipblasCtrttp"), + ("cublasZtrttp", "hipblasZtrttp"), + ("cublasCreate_v2", "hipblasCreate_v2"), + ("cublasDestroy_v2", "hipblasDestroy_v2"), + ("cublasGetVersion_v2", "hipblasGetVersion_v2"), + ("cublasSetWorkspace", "hipblasSetWorkspace"), + ("cublasSetStream", "hipblasSetStream"), + ("cublasGetStream", "hipblasGetStream"), + ("cublasSetStream_v2", "hipblasSetStream_v2"), + ("cublasGetStream_v2", "hipblasGetStream_v2"), + ("cublasGetPointerMode", "hipblasGetPointerMode"), + ("cublasSetPointerMode", "hipblasSetPointerMode"), + ("cublasGetPointerMode_v2", "hipblasGetPointerMode_v2"), + ("cublasSetPointerMode_v2", "hipblasSetPointerMode_v2"), + ("cublasSgemv_v2", "hipblasSgemv_v2"), + ("cublasDgemv_v2", "hipblasDgemv_v2"), + ("cublasCgemv_v2", "hipblasCgemv_v2"), + ("cublasZgemv_v2", "hipblasZgemv_v2"), + ("cublasSgbmv_v2", "hipblasSgbmv_v2"), + ("cublasDgbmv_v2", "hipblasDgbmv_v2"), + ("cublasCgbmv_v2", "hipblasCgbmv_v2"), + ("cublasZgbmv_v2", "hipblasZgbmv_v2"), + ("cublasStrmv_v2", "hipblasStrmv_v2"), + ("cublasDtrmv_v2", "hipblasDtrmv_v2"), + ("cublasCtrmv_v2", "hipblasCtrmv_v2"), + ("cublasZtrmv_v2", "hipblasZtrmv_v2"), + ("cublasStbmv_v2", "hipblasStbmv_v2"), + ("cublasDtbmv_v2", "hipblasDtbmv_v2"), + ("cublasCtbmv_v2", "hipblasCtbmv_v2"), + ("cublasZtbmv_v2", "hipblasZtbmv_v2"), + ("cublasStpmv_v2", "hipblasStpmv_v2"), + ("cublasDtpmv_v2", "hipblasDtpmv_v2"), + ("cublasCtpmv_v2", "hipblasCtpmv_v2"), + ("cublasZtpmv_v2", "hipblasZtpmv_v2"), + ("cublasStrsv_v2", "hipblasStrsv_v2"), + ("cublasDtrsv_v2", "hipblasDtrsv_v2"), + ("cublasCtrsv_v2", "hipblasCtrsv_v2"), + ("cublasZtrsv_v2", "hipblasZtrsv_v2"), + ("cublasStpsv_v2", "hipblasStpsv_v2"), + ("cublasDtpsv_v2", "hipblasDtpsv_v2"), + ("cublasCtpsv_v2", "hipblasCtpsv_v2"), + ("cublasZtpsv_v2", "hipblasZtpsv_v2"), + ("cublasStbsv_v2", "hipblasStbsv_v2"), + ("cublasDtbsv_v2", "hipblasDtbsv_v2"), + ("cublasCtbsv_v2", "hipblasCtbsv_v2"), + ("cublasZtbsv_v2", "hipblasZtbsv_v2"), + ("cublasSsymv_v2", "hipblasSsymv_v2"), + ("cublasDsymv_v2", "hipblasDsymv_v2"), + ("cublasCsymv_v2", "hipblasCsymv_v2"), + ("cublasZsymv_v2", "hipblasZsymv_v2"), + ("cublasChemv_v2", "hipblasChemv_v2"), + ("cublasZhemv_v2", "hipblasZhemv_v2"), + ("cublasSsbmv_v2", "hipblasSsbmv_v2"), + ("cublasDsbmv_v2", "hipblasDsbmv_v2"), + ("cublasChbmv_v2", "hipblasChbmv_v2"), + ("cublasZhbmv_v2", "hipblasZhbmv_v2"), + ("cublasSspmv_v2", "hipblasSspmv_v2"), + ("cublasDspmv_v2", "hipblasDspmv_v2"), + ("cublasChpmv_v2", "hipblasChpmv_v2"), + ("cublasZhpmv_v2", "hipblasZhpmv_v2"), + ("cublasSger_v2", "hipblasSger_v2"), + ("cublasDger_v2", "hipblasDger_v2"), + ("cublasCgeru_v2", "hipblasCgeru_v2"), + ("cublasCgerc_v2", "hipblasCergc_v2"), + ("cublasZgeru_v2", "hipblasZgeru_v2"), + ("cublasZgerc_v2", "hipblasZgerc_v2"), + ("cublasSsyr_v2", "hipblasSsyr_v2"), + ("cublasDsyr_v2", "hipblasDsyr_v2"), + ("cublasCsyr_v2", "hipblasCsyr_v2"), + ("cublasZsyr_v2", "hipblasZsyr_v2"), + ("cublasCher_v2", "hipblasCher_v2"), + ("cublasZher_v2", "hipblasZher_v2"), + ("cublasSspr_v2", "hipblasSspr_v2"), + ("cublasDspr_v2", "hipblasDspr_v2"), + ("cublasChpr_v2", "hipblasChpr_v2"), + ("cublasZhpr_v2", "hipblasZhpr_v2"), + ("cublasSsyr2_v2", "hipblasSsyr2_v2"), + ("cublasDsyr2_v2", "hipblasDsyr2_v2"), + ("cublasCsyr2_v2", "hipblasCsyr2_v2"), + ("cublasZsyr2_v2", "hipblasZsyr2_v2"), + ("cublasCher2_v2", "hipblasCher2_v2"), + ("cublasZher2_v2", "hipblasZher2_v2"), + ("cublasSspr2_v2", "hipblasSspr2_v2"), + ("cublasDspr2_v2", "hipblasDspr2_v2"), + ("cublasChpr2_v2", "hipblasChpr2_v2"), + ("cublasZhpr2_v2", "hipblasZhpr2_v2"), + ("cublasSgemm_v2", "hipblasSgemm_v2"), + ("cublasDgemm_v2", "hipblasDgemm_v2"), + ("cublasCgemm_v2", "hipblasCgemm_v2"), + ("cublasCgemm3m", "hipblasCgemm3m"), + ("cublasCgemm3mEx", "hipblasCgemm3mEx"), + ("cublasZgemm_v2", "hipblasZgemm_v2"), + ("cublasZgemm3m", "hipblasZgemm3m"), + ("cublasSgemmEx", "hipblasSgemmEx"), + ("cublasGemmEx", "hipblasGemmEx"), + ("cublasGemmBatchedEx", "hipblasGemmBatchedEx"), + ("cublasGemmStridedBatchedEx", "hipblasGemmStridedBatchedEx"), + ("cublasCgemmEx", "hipblasCgemmEx"), + ("cublasUint8gemmBias", "hipblasUint8gemmBias"), + ("cublasSsyrk_v2", "hipblasSsyrk_v2"), + ("cublasDsyrk_v2", "hipblasDsyrk_v2"), + ("cublasCsyrk_v2", "hipblasCsyrk_v2"), + ("cublasZsyrk_v2", "hipblasZsyrk_v2"), + ("cublasCsyrkEx", "hipblasCsyrkEx"), + ("cublasCsyrk3mEx", "hipblasCsyrk3mEx"), + ("cublasCherk_v2", "hipblasCherk_v2"), + ("cublasCherkEx", "hipblasCherkEx"), + ("cublasCherk3mEx", "hipblasCherk3mEx"), + ("cublasZherk_v2", "hipblasZherk_v2"), + ("cublasSsyr2k_v2", "hipblasSsyr2k_v2"), + ("cublasDsyr2k_v2", "hipblasDsyr2k_v2"), + ("cublasCsyr2k_v2", "hipblasCsyr2k_v2"), + ("cublasZsyr2k_v2", "hipblasZsyr2k_v2"), + ("cublasCher2k_v2", "hipblasCher2k_v2"), + ("cublasZher2k_v2", "hipblasZher2k_v2"), + ("cublasSsymm_v2", "hipblasSsymm_v2"), + ("cublasDsymm_v2", "hipblasDsymm_v2"), + ("cublasCsymm_v2", "hipblasCsymm_v2"), + ("cublasZsymm_v2", "hipblasZsymm_v2"), + ("cublasChemm_v2", "hipblasChemm_v2"), + ("cublasZhemm_v2", "hipblasZhemm_v2"), + ("cublasStrsm_v2", "hipblasStrsm_v2"), + ("cublasDtrsm_v2", "hipblasDtrsm_v2"), + ("cublasCtrsm_v2", "hipblasCtrsm_v2"), + ("cublasZtrsm_v2", "hipblasZtrsm_v2"), + ("cublasStrmm_v2", "hipblasStrmm_v2"), + ("cublasDtrmm_v2", "hipblasDtrmm_v2"), + ("cublasCtrmm_v2", "hipblasCtrmm_v2"), + ("cublasZtrmm_v2", "hipblasZtrmm_v2"), + ("cublasSnrm2_v2", "hipblasSnrm2_v2"), + ("cublasDnrm2_v2", "hipblasDnrm2_v2"), + ("cublasScnrm2_v2", "hipblasScnrm2_v2"), + ("cublasDznrm2_v2", "hipblasDznrm2_v2"), + ("cublasDotEx", "hipblasDotEx"), + ("cublasDotcEx", "hipblasDotcEx"), + ("cublasSdot_v2", "hipblasSdot_v2"), + ("cublasDdot_v2", "hipblasDdot_v2"), + ("cublasCdotu_v2", "hipblasCdotu_v2"), + ("cublasCdotc_v2", "hipblasCdotc_v2"), + ("cublasZdotu_v2", "hipblasZdotu_v2"), + ("cublasZdotc_v2", "hipblasZdotc_v2"), + ("cublasScalEx", "hipblasScalEx"), + ("cublasSscal_v2", "hipblasSscal_v2"), + ("cublasDscal_v2", "hipblasDscal_v2"), + ("cublasCscal_v2", "hipblasCscal_v2"), + ("cublasCsscal_v2", "hipblasCsscal_v2"), + ("cublasZscal_v2", "hipblasZcsal_v2"), + ("cublasZdscal_v2", "hipblasZdscal_v2"), + ("cublasAxpyEx", "hipblasAxpyEx"), + ("cublasSaxpy_v2", "hipblasSaxpy_v2"), + ("cublasDaxpy_v2", "hipblasDaxpy_v2"), + ("cublasCaxpy_v2", "hipblasCaxpy_v2"), + ("cublasZaxpy_v2", "hipblasZaxpy_v2"), + ("cublasScopy_v2", "hipblasScopy_v2"), + ("cublasDcopy_v2", "hipblasDcopy_v2"), + ("cublasCcopy_v2", "hipblasCcopy_v2"), + ("cublasZcopy_v2", "hipblasZcopy_v2"), + ("cublasSswap_v2", "hipblasSswap_v2"), + ("cublasDswap_v2", "hipblasDswap_v2"), + ("cublasCswap_v2", "hipblasCswap_v2"), + ("cublasZswap_v2", "hipblasZswap_v2"), + ("cublasIsamax_v2", "hipblasIsamax_v2"), + ("cublasIdamax_v2", "hipblasIdamax_v2"), + ("cublasIcamax_v2", "hipblasIcamax_v2"), + ("cublasIzamax_v2", "hipblasIzamax_v2"), + ("cublasIsamin_v2", "hipblasIsamin_v2"), + ("cublasIdamin_v2", "hipblasIdamin_v2"), + ("cublasIcamin_v2", "hipblasIcamin_v2"), + ("cublasIzamin_v2", "hipblasIzamin_v2"), + ("cublasSasum_v2", "hipblasSasum_v2"), + ("cublasDasum_v2", "hipblasDasum_v2"), + ("cublasScasum_v2", "hipblasScasum_v2"), + ("cublasDzasum_v2", "hipblasDzasum_v2"), + ("cublasSrot_v2", "hipblasSrot_v2"), + ("cublasDrot_v2", "hipblasDrot_v2"), + ("cublasCrot_v2", "hipblasCrot_v2"), + ("cublasCsrot_v2", "hipblasCsrot_v2"), + ("cublasZrot_v2", "hipblasZrot_v2"), + ("cublasZdrot_v2", "hipblasZdrot_v2"), + ("cublasSrotg_v2", "hipblasSrotg_v2"), + ("cublasDrotg_v2", "hipblasDrotg_v2"), + ("cublasCrotg_v2", "hipblasCrotg_v2"), + ("cublasZrotg_v2", "hipblasZrotg_v2"), + ("cublasSrotm_v2", "hipblasSrotm_v2"), + ("cublasDrotm_v2", "hipblasDrotm_v2"), + ("cublasSrotmg_v2", "hipblasSrotmg_v2"), + ("cublasDrotmg_v2", "hipblasDrotmg_v2"), + ("cublasComputeType_t", "hipblasComputeType_t"), + ("CUBLAS_COMPUTE_32I", "HIPBLAS_COMPUTE_32I"), + ("CUBLAS_COMPUTE_32F", "HIPBLAS_COMPUTE_32F"), + ("CUBLAS_COMPUTE_32F_FAST_TF32", "HIPBLAS_COMPUTE_32F_FAST_TF32"), + ("CUBLAS_COMPUTE_64F", "HIPBLAS_COMPUTE_64F"), + ("cublasLtEpilogue_t", "hipblasLtEpilogue_t"), + ("CUBLASLT_EPILOGUE_DEFAULT", "HIPBLASLT_EPILOGUE_DEFAULT"), + ("CUBLASLT_EPILOGUE_RELU", "HIPBLASLT_EPILOGUE_RELU"), + ("CUBLASLT_EPILOGUE_BIAS", "HIPBLASLT_EPILOGUE_BIAS"), + ("CUBLASLT_EPILOGUE_RELU_BIAS", "HIPBLASLT_EPILOGUE_RELU_BIAS"), + ("CUBLASLT_EPILOGUE_GELU", "HIPBLASLT_EPILOGUE_GELU"), + ("CUBLASLT_EPILOGUE_GELU_BIAS", "HIPBLASLT_EPILOGUE_GELU_BIAS"), + ("cublasLtHandle_t", "hipblasLtHandle_t"), + ("cublasLtMatmulDesc_t", "hipblasLtMatmulDesc_t"), + ("cublasLtMatmulDescOpaque_t", "hipblasLtMatmulDescOpaque_t"), + ("cublasLtMatmulDescAttributes_t", "hipblasLtMatmulDescAttributes_t"), + ("CUBLASLT_MATMUL_DESC_TRANSA", "HIPBLASLT_MATMUL_DESC_TRANSA"), + ("CUBLASLT_MATMUL_DESC_TRANSB", "HIPBLASLT_MATMUL_DESC_TRANSB"), + ("CUBLASLT_MATMUL_DESC_EPILOGUE", "HIPBLASLT_MATMUL_DESC_EPILOGUE"), + ("CUBLASLT_MATMUL_DESC_BIAS_POINTER", "HIPBLASLT_MATMUL_DESC_BIAS_POINTER"), + ("CUBLASLT_MATMUL_DESC_A_SCALE_MODE", "HIPBLASLT_MATMUL_DESC_A_SCALE_MODE"), + ("CUBLASLT_MATMUL_DESC_B_SCALE_MODE", "HIPBLASLT_MATMUL_DESC_B_SCALE_MODE"), + ("CUBLASLT_MATMUL_DESC_A_SCALE_POINTER", "HIPBLASLT_MATMUL_DESC_A_SCALE_POINTER"), + ("CUBLASLT_MATMUL_DESC_B_SCALE_POINTER", "HIPBLASLT_MATMUL_DESC_B_SCALE_POINTER"), + ("CUBLASLT_MATMUL_DESC_D_SCALE_POINTER", "HIPBLASLT_MATMUL_DESC_D_SCALE_POINTER"), + ("CUBLASLT_MATMUL_DESC_AMAX_D_POINTER", "HIPBLASLT_MATMUL_DESC_AMAX_D_POINTER"), + ("CUBLASLT_MATMUL_DESC_BIAS_DATA_TYPE", "HIPBLASLT_MATMUL_DESC_BIAS_DATA_TYPE"), + ("CUBLASLT_MATMUL_DESC_POINTER_MODE", "HIPBLASLT_MATMUL_DESC_POINTER_MODE"), + ("CUBLASLT_MATMUL_MATRIX_SCALE_OUTER_VEC_32F", "HIPBLASLT_MATMUL_MATRIX_SCALE_OUTER_VEC_32F"), + ("CUBLASLT_MATMUL_MATRIX_SCALE_VEC32_UE8M0", "HIPBLASLT_MATMUL_MATRIX_SCALE_VEC32_UE8M0"), + ("CUBLASLT_MATMUL_MATRIX_SCALE_VEC16_UE4M3", "HIPBLASLT_MATMUL_MATRIX_SCALE_VEC16_UE4M3"), + ("CUBLASLT_POINTER_MODE_DEVICE", "HIPBLASLT_POINTER_MODE_DEVICE"), + ("CUBLASLT_POINTER_MODE_HOST", "HIPBLASLT_POINTER_MODE_HOST"), + ("cublasLtMatrixLayout_t", "hipblasLtMatrixLayout_t"), + ("cublasLtMatrixLayoutOpaque_t", "hipblasLtMatrixLayoutOpaque_t"), + ("cublasLtMatrixLayoutAttribute_t", "hipblasLtMatrixLayoutAttribute_t"), + ("cublasLtMatrixLayoutCreate", "hipblasLtMatrixLayoutCreate"), + ("cublasLtMatrixLayoutDestroy", "hipblasLtMatrixLayoutDestroy"), + ("cublasLtMatrixLayoutSetAttribute", "hipblasLtMatrixLayoutSetAttribute"), + ("CUBLASLT_MATRIX_LAYOUT_BATCH_COUNT", "HIPBLASLT_MATRIX_LAYOUT_BATCH_COUNT"), + ("CUBLASLT_MATRIX_LAYOUT_STRIDED_BATCH_OFFSET", "HIPBLASLT_MATRIX_LAYOUT_STRIDED_BATCH_OFFSET"), + ("cublasLtMatmulPreference_t", "hipblasLtMatmulPreference_t"), + ("cublasLtMatmulPreferenceOpaque_t", "hipblasLtMatmulPreferenceOpaque_t"), + ("cublasLtMatmulPreferenceAttributes_t", "hipblasLtMatmulPreferenceAttributes_t"), + ("CUBLASLT_MATMUL_PREF_SEARCH_MODE", "HIPBLASLT_MATMUL_PREF_SEARCH_MODE"), + ("CUBLASLT_MATMUL_PREF_MAX_WORKSPACE_BYTES", "HIPBLASLT_MATMUL_PREF_MAX_WORKSPACE_BYTES"), + ("cublasLtMatmulAlgo_t", "hipblasLtMatmulAlgo_t"), + ("cublasLtMatmulHeuristicResult_t", "hipblasLtMatmulHeuristicResult_t"), + ("cublasLtCreate", "hipblasLtCreate"), + ("cublasLtDestroy", "hipblasLtDestroy"), + ("cublasLtMatmulDescCreate", "hipblasLtMatmulDescCreate"), + ("cublasLtMatmulDescDestroy", "hipblasLtMatmulDescDestroy"), + ("cublasLtMatmulDescSetAttribute", "hipblasLtMatmulDescSetAttribute"), + ("cublasLtMatmulPreferenceCreate", "hipblasLtMatmulPreferenceCreate"), + ("cublasLtMatmulPreferenceDestroy", "hipblasLtMatmulPreferenceDestroy"), + ("cublasLtMatmulPreferenceSetAttribute", "hipblasLtMatmulPreferenceSetAttribute"), + ("cublasLtMatmulAlgoGetHeuristic", "hipblasLtMatmulAlgoGetHeuristic"), + ("cublasLtMatmul", "hipblasLtMatmul"), + ("CURAND_STATUS_SUCCESS", "HIPRAND_STATUS_SUCCESS"), + ("CURAND_STATUS_VERSION_MISMATCH", "HIPRAND_STATUS_VERSION_MISMATCH"), + ("CURAND_STATUS_NOT_INITIALIZED", "HIPRAND_STATUS_NOT_INITIALIZED"), + ("CURAND_STATUS_ALLOCATION_FAILED", "HIPRAND_STATUS_ALLOCATION_FAILED"), + ("CURAND_STATUS_TYPE_ERROR", "HIPRAND_STATUS_TYPE_ERROR"), + ("CURAND_STATUS_OUT_OF_RANGE", "HIPRAND_STATUS_OUT_OF_RANGE"), + ("CURAND_STATUS_LENGTH_NOT_MULTIPLE", "HIPRAND_STATUS_LENGTH_NOT_MULTIPLE"), + ("CURAND_STATUS_DOUBLE_PRECISION_REQUIRED", "HIPRAND_STATUS_DOUBLE_PRECISION_REQUIRED"), + ("CURAND_STATUS_LAUNCH_FAILURE", "HIPRAND_STATUS_LAUNCH_FAILURE"), + ("CURAND_STATUS_PREEXISTING_FAILURE", "HIPRAND_STATUS_PREEXISTING_FAILURE"), + ("CURAND_STATUS_INITIALIZATION_FAILED", "HIPRAND_STATUS_INITIALIZATION_FAILED"), + ("CURAND_STATUS_ARCH_MISMATCH", "HIPRAND_STATUS_ARCH_MISMATCH"), + ("CURAND_STATUS_INTERNAL_ERROR", "HIPRAND_STATUS_INTERNAL_ERROR"), + ("CURAND_RNG_TEST", "HIPRAND_RNG_TEST"), + ("mtgp32dc_params_fast_11213", "mtgp32dc_params_fast_11213"), + ("CURAND_RNG_PSEUDO_DEFAULT", "HIPRAND_RNG_PSEUDO_DEFAULT"), + ("CURAND_RNG_PSEUDO_XORWOW", "HIPRAND_RNG_PSEUDO_XORWOW"), + ("CURAND_RNG_PSEUDO_MRG32K3A", "HIPRAND_RNG_PSEUDO_MRG32K3A"), + ("CURAND_RNG_PSEUDO_MTGP32", "HIPRAND_RNG_PSEUDO_MTGP32"), + ("CURAND_RNG_PSEUDO_MT19937", "HIPRAND_RNG_PSEUDO_MT19937"), + ("CURAND_RNG_PSEUDO_PHILOX4_32_10", "HIPRAND_RNG_PSEUDO_PHILOX4_32_10"), + ("CURAND_RNG_QUASI_DEFAULT", "HIPRAND_RNG_QUASI_DEFAULT"), + ("CURAND_RNG_QUASI_SOBOL32", "HIPRAND_RNG_QUASI_SOBOL32"), + ("CURAND_RNG_QUASI_SCRAMBLED_SOBOL32", "HIPRAND_RNG_QUASI_SCRAMBLED_SOBOL32"), + ("CURAND_RNG_QUASI_SOBOL64", "HIPRAND_RNG_QUASI_SOBOL64"), + ("CURAND_RNG_QUASI_SCRAMBLED_SOBOL64", "HIPRAND_RNG_QUASI_SCRAMBLED_SOBOL64"), + ("curand_ORDERING_PSEUDO_BEST", "HIPRAND_ORDERING_PSEUDO_BEST"), + ("curand_ORDERING_PSEUDO_DEFAULT", "HIPRAND_ORDERING_PSEUDO_DEFAULT"), + ("curand_ORDERING_PSEUDO_SEEDED", "HIPRAND_ORDERING_PSEUDO_SEEDED"), + ("curand_ORDERING_QUASI_DEFAULT", "HIPRAND_ORDERING_QUASI_DEFAULT"), + ("curand_DIRECTION_VECTORS_32_JOEKUO6", "HIPRAND_DIRECTION_VECTORS_32_JOEKUO6"), + ("curand_SCRAMBLED_DIRECTION_VECTORS_32_JOEKUO6", "HIPRAND_SCRAMBLED_DIRECTION_VECTORS_32_JOEKUO6"), + ("curand_DIRECTION_VECTORS_64_JOEKUO6", "HIPRAND_DIRECTION_VECTORS_64_JOEKUO6"), + ("curand_SCRAMBLED_DIRECTION_VECTORS_64_JOEKUO6", "HIPRAND_SCRAMBLED_DIRECTION_VECTORS_64_JOEKUO6"), + ("curand_CHOOSE_BEST", "HIPRAND_CHOOSE_BEST"), + ("curand_ITR", "HIPRAND_ITR"), + ("curand_KNUTH", "HIPRAND_KNUTH"), + ("curand_HITR", "HIPRAND_HITR"), + ("curand_M1", "HIPRAND_M1"), + ("curand_M2", "HIPRAND_M2"), + ("curand_BINARY_SEARCH", "HIPRAND_BINARY_SEARCH"), + ("curand_DISCRETE_GAUSS", "HIPRAND_DISCRETE_GAUSS"), + ("curand_REJECTION", "HIPRAND_REJECTION"), + ("curand_DEVICE_API", "HIPRAND_DEVICE_API"), + ("curand_FAST_REJECTION", "HIPRAND_FAST_REJECTION"), + ("curand_3RD", "HIPRAND_3RD"), + ("curand_DEFINITION", "HIPRAND_DEFINITION"), + ("curand_POISSON", "HIPRAND_POISSON"), + ("curandCreateGenerator", "hiprandCreateGenerator"), + ("curandCreateGeneratorHost", "hiprandCreateGeneratorHost"), + ("curandCreatePoissonDistribution", "hiprandCreatePoissonDistribution"), + ("curandDestroyDistribution", "hiprandDestroyDistribution"), + ("curandDestroyGenerator", "hiprandDestroyGenerator"), + ("curandGenerate", "hiprandGenerate"), + ("curandGenerateLogNormal", "hiprandGenerateLogNormal"), + ("curandGenerateLogNormalDouble", "hiprandGenerateLogNormalDouble"), + ("curandGenerateLongLong", "hiprandGenerateLongLong"), + ("curandGenerateNormal", "hiprandGenerateNormal"), + ("curandGenerateNormalDouble", "hiprandGenerateNormalDouble"), + ("curandGeneratePoisson", "hiprandGeneratePoisson"), + ("curandGenerateSeeds", "hiprandGenerateSeeds"), + ("curandGenerateUniform", "hiprandGenerateUniform"), + ("curandGenerateUniformDouble", "hiprandGenerateUniformDouble"), + ("curandGetDirectionVectors32", "hiprandGetDirectionVectors32"), + ("curandGetDirectionVectors64", "hiprandGetDirectionVectors64"), + ("curandGetProperty", "hiprandGetProperty"), + ("curandGetScrambleConstants32", "hiprandGetScrambleConstants32"), + ("curandGetScrambleConstants64", "hiprandGetScrambleConstants64"), + ("curandGetVersion", "hiprandGetVersion"), + ("curandSetGeneratorOffset", "hiprandSetGeneratorOffset"), + ("curandSetGeneratorOrdering", "hiprandSetGeneratorOrdering"), + ("curandSetPseudoRandomGeneratorSeed", "hiprandSetPseudoRandomGeneratorSeed"), + ("curandSetQuasiRandomGeneratorDimensions", "hiprandSetQuasiRandomGeneratorDimensions"), + ("curandSetStream", "hiprandSetStream"), + ("curand", "hiprand"), + ("curand4", "hiprand4"), + ("curand_init", "hiprand_init"), + ("curand_log_normal", "hiprand_log_normal"), + ("curand_log_normal_double", "hiprand_log_normal_double"), + ("curand_log_normal2", "hiprand_log_normal2"), + ("curand_log_normal2_double", "hiprand_log_normal2_double"), + ("curand_log_normal4", "hiprand_log_normal4"), + ("curand_log_normal4_double", "hiprand_log_normal4_double"), + ("curand_mtgp32_single", "hiprand_mtgp32_single"), + ("curand_mtgp32_single_specific", "hiprand_mtgp32_single_specific"), + ("curand_mtgp32_specific", "hiprand_mtgp32_specific"), + ("curand_normal", "hiprand_normal"), + ("curandMakeMTGP32Constants", "hiprandMakeMTGP32Constants"), + ("curandMakeMTGP32KernelState", "hiprandMakeMTGP32KernelState"), + ("curand_normal_double", "hiprand_normal_double"), + ("curand_normal2", "hiprand_normal2"), + ("curand_normal2_double", "hiprand_normal2_double"), + ("curand_normal4", "hiprand_normal4"), + ("curand_normal4_double", "hiprand_normal4_double"), + ("curand_uniform", "hiprand_uniform"), + ("curand_uniform_double", "hiprand_uniform_double"), + ("curand_uniform2_double", "hiprand_uniform2_double"), + ("curand_uniform4", "hiprand_uniform4"), + ("curand_uniform4_double", "hiprand_uniform4_double"), + ("curand_discrete", "hiprand_discrete"), + ("curand_discrete4", "hiprand_discrete4"), + ("curand_poisson", "hiprand_poisson"), + ("curand_poisson4", "hiprand_poisson4"), + ("curand_Philox4x32_10", "hiprand_Philox4x32_10"), + ("mtgp32_kernel_params", "mtgp32_kernel_params_t"), + ("CUFFT_FORWARD", "HIPFFT_FORWARD"), + ("CUFFT_INVERSE", "HIPFFT_BACKWARD"), + ("CUFFT_COMPATIBILITY_DEFAULT", "HIPFFT_COMPATIBILITY_DEFAULT"), + ("cuComplex", "hipComplex"), + ("cuDoubleComplex", "hipDoubleComplex"), + ("cufftResult_t", "hipfftResult_t"), + ("cufftResult", "hipfftResult"), + ("CUFFT_SUCCESS", "HIPFFT_SUCCESS"), + ("CUFFT_INVALID_PLAN", "HIPFFT_INVALID_PLAN"), + ("CUFFT_ALLOC_FAILED", "HIPFFT_ALLOC_FAILED"), + ("CUFFT_INVALID_TYPE", "HIPFFT_INVALID_TYPE"), + ("CUFFT_INVALID_VALUE", "HIPFFT_INVALID_VALUE"), + ("CUFFT_INTERNAL_ERROR", "HIPFFT_INTERNAL_ERROR"), + ("CUFFT_EXEC_FAILED", "HIPFFT_EXEC_FAILED"), + ("CUFFT_SETUP_FAILED", "HIPFFT_SETUP_FAILED"), + ("CUFFT_INVALID_SIZE", "HIPFFT_INVALID_SIZE"), + ("CUFFT_UNALIGNED_DATA", "HIPFFT_UNALIGNED_DATA"), + ("CUFFT_INCOMPLETE_PARAMETER_LIST", "HIPFFT_INCOMPLETE_PARAMETER_LIST"), + ("CUFFT_INVALID_DEVICE", "HIPFFT_INVALID_DEVICE"), + ("CUFFT_PARSE_ERROR", "HIPFFT_PARSE_ERROR"), + ("CUFFT_NO_WORKSPACE", "HIPFFT_NO_WORKSPACE"), + ("CUFFT_NOT_IMPLEMENTED", "HIPFFT_NOT_IMPLEMENTED"), + ("CUFFT_LICENSE_ERROR", "HIPFFT_LICENSE_ERROR"), + ("CUFFT_NOT_SUPPORTED", "HIPFFT_NOT_SUPPORTED"), + ("cufftType_t", "hipfftType_t"), + ("cufftType", "hipfftType"), + ("CUFFT_R2C", "HIPFFT_R2C"), + ("CUFFT_C2R", "HIPFFT_C2R"), + ("CUFFT_C2C", "HIPFFT_C2C"), + ("CUFFT_D2Z", "HIPFFT_D2Z"), + ("CUFFT_Z2D", "HIPFFT_Z2D"), + ("CUFFT_Z2Z", "HIPFFT_Z2Z"), + ("cufftCompatibility_t", "hipfftCompatibility_t"), + ("cufftCompatibility", "hipfftCompatibility"), + ("CUFFT_COMPATIBILITY_FFTW_PADDING", "HIPFFT_COMPATIBILITY_FFTW_PADDING"), + ("cufftReal", "hipfftReal"), + ("cufftDoubleReal", "hipfftDoubleReal"), + ("cufftComplex", "hipfftComplex"), + ("cufftDoubleComplex", "hipfftDoubleComplex"), + ("cufftHandle", "hipfftHandle"), + ("cufftPlan1d", "hipfftPlan1d"), + ("cufftPlan2d", "hipfftPlan2d"), + ("cufftPlan3d", "hipfftPlan3d"), + ("cufftPlanMany", "hipfftPlanMany"), + ("cufftMakePlan1d", "hipfftMakePlan1d"), + ("cufftMakePlan2d", "hipfftMakePlan2d"), + ("cufftMakePlan3d", "hipfftMakePlan3d"), + ("cufftMakePlanMany", "hipfftMakePlanMany"), + ("cufftMakePlanMany64", "hipfftMakePlanMany64"), + ("cufftGetSizeMany64", "hipfftGetSizeMany64"), + ("cufftEstimate1d", "hipfftEstimate1d"), + ("cufftEstimate2d", "hipfftEstimate2d"), + ("cufftEstimate3d", "hipfftEstimate3d"), + ("cufftEstimateMany", "hipfftEstimateMany"), + ("cufftCreate", "hipfftCreate"), + ("cufftGetSize1d", "hipfftGetSize1d"), + ("cufftGetSize2d", "hipfftGetSize2d"), + ("cufftGetSize3d", "hipfftGetSize3d"), + ("cufftGetSizeMany", "hipfftGetSizeMany"), + ("cufftGetSize", "hipfftGetSize"), + ("cufftSetWorkArea", "hipfftSetWorkArea"), + ("cufftSetAutoAllocation", "hipfftSetAutoAllocation"), + ("cufftXtExec", "hipfftXtExec"), + ("cufftXtMakePlanMany", "hipfftXtMakePlanMany"), + ("cufftExecC2C", "hipfftExecC2C"), + ("cufftExecR2C", "hipfftExecR2C"), + ("cufftExecC2R", "hipfftExecC2R"), + ("cufftExecZ2Z", "hipfftExecZ2Z"), + ("cufftExecD2Z", "hipfftExecD2Z"), + ("cufftExecZ2D", "hipfftExecZ2D"), + ("cufftSetStream", "hipfftSetStream"), + ("cufftDestroy", "hipfftDestroy"), + ("cufftGetVersion", "hipfftGetVersion"), + ("cufftGetProperty", "hipfftGetProperty"), + ("nvrtcResult", "hiprtcResult"), + ("NVRTC_SUCCESS", "HIPRTC_SUCCESS"), + ("NVRTC_ERROR_OUT_OF_MEMORY", "HIPRTC_ERROR_OUT_OF_MEMORY"), + ("NVRTC_ERROR_PROGRAM_CREATION_FAILURE", "HIPRTC_ERROR_PROGRAM_CREATION_FAILURE"), + ("NVRTC_ERROR_INVALID_INPUT", "HIPRTC_ERROR_INVALID_INPUT"), + ("NVRTC_ERROR_INVALID_PROGRAM", "HIPRTC_ERROR_INVALID_PROGRAM"), + ("NVRTC_ERROR_COMPILATION", "HIPRTC_ERROR_COMPILATION"), + ("NVRTC_ERROR_BUILTIN_OPERATION_FAILURE", "HIPRTC_ERROR_BUILTIN_OPERATION_FAILURE"), + ("NVRTC_ERROR_NO_NAME_EXPRESSIONS_AFTER_COMPILATION", "HIPRTC_ERROR_NO_NAME_EXPRESSIONS_AFTER_COMPILATION"), + ("NVRTC_ERROR_NAME_EXPRESSION_NOT_VALID", "HIPRTC_ERROR_NAME_EXPRESSION_NOT_VALID"), + ("NVRTC_ERROR_INTERNAL_ERROR", "HIPRTC_ERROR_INTERNAL_ERROR"), + ("nvrtcGetErrorString", "hiprtcGetErrorString"), + ("nvrtcVersion", "hiprtcVersion"), + ("nvrtcProgram", "hiprtcProgram"), + ("nvrtcAddNameExpression", "hiprtcAddNameExpression"), + ("nvrtcCompileProgram", "hiprtcCompileProgram"), + ("nvrtcCreateProgram", "hiprtcCreateProgram"), + ("nvrtcDestroyProgram", "hiprtcDestroyProgram"), + ("nvrtcGetLoweredName", "hiprtcGetLoweredName"), + ("nvrtcGetProgramLog", "hiprtcGetProgramLog"), + ("nvrtcGetProgramLogSize", "hiprtcGetProgramLogSize"), + ("nvrtcGetPTX", "hiprtcGetCode"), + ("nvrtcGetPTXSize", "hiprtcGetCodeSize"), + ("nvrtcGetCUBIN", "hiprtcGetBitcode"), + ("nvrtcGetCUBINSize", "hiprtcGetBitcodeSize"), + ("thrust::cuda", "thrust::hip"), + ("cub::", "hipcub::"), + ("cub::ArgMax", "hipcub::ArgMax"), + ("cub::ArgMin", "hipcub::ArgMin"), + ("cub::BLOCK_SCAN_WARP_SCANS", "hipcub::BLOCK_SCAN_WARP_SCANS"), + ("cub::BLOCK_REDUCE_WARP_REDUCTIONS", "hipcub::BLOCK_REDUCE_WARP_REDUCTIONS"), + ("cub::BLOCK_STORE_WARP_TRANSPOSE", "hipcub::BLOCK_STORE_WARP_TRANSPOSE"), + ("cub::BLOCK_LOAD_DIRECT", "hipcub::BLOCK_LOAD_DIRECT"), + ("cub::BLOCK_STORE_DIRECT", "hipcub::BLOCK_STORE_DIRECT"), + ("cub::BLOCK_REDUCE_RAKING_COMMUTATIVE_ONLY", "hipcub::BLOCK_REDUCE_RAKING_COMMUTATIVE_ONLY"), + ("cub::BlockReduce", "hipcub::BlockReduce"), + ("cub::BlockScan", "hipcub::BlockScan"), + ("cub::BlockLoad", "hipcub::BlockLoad"), + ("cub::BlockStore", "hipcub::BlockStore"), + ("cub::BlockRakingLayout", "hipcub::BlockRakingLayout"), + ("cub::BlockRadixSort", "hipcub::BlockRadixSort"), + ("cub::Uninitialized", "hipcub::Uninitialized"), + ("cub::RowMajorTid", "hipcub::RowMajorTid"), + ("cub::CachingDeviceAllocator", "hipcub::CachingDeviceAllocator"), + ("cub::CountingInputIterator", "hipcub::CountingInputIterator"), + ("cub::DeviceRadixSort", "hipcub::DeviceRadixSort"), + ("cub::DeviceReduce", "hipcub::DeviceReduce"), + ("cub::DeviceRunLengthEncode", "hipcub::DeviceRunLengthEncode"), + ("cub::DeviceScan", "hipcub::DeviceScan"), + ("cub::DeviceSegmentedRadixSort", "hipcub::DeviceSegmentedRadixSort"), + ("cub::DeviceSegmentedReduce", "hipcub::DeviceSegmentedReduce"), + ("cub::DeviceSelect", "hipcub::DeviceSelect"), + ("cub::FpLimits", "hipcub::FpLimits"), + ("cub::KeyValuePair", "hipcub::KeyValuePair"), + ("cub::Max", "hipcub::Max"), + ("cub::Min", "hipcub::Min"), + ("cub::Sum", "hipcub::Sum"), + ("cub::Log2", "hipcub::Log2"), + ("cub::LaneId", "hipcub::LaneId"), + ("cub::WarpMask", "hipcub::WarpMask"), + ("cub::ShuffleIndex", "hipcub::ShuffleIndex"), + ("cub::ShuffleDown", "hipcub::ShuffleDown"), + ("cub::ArgIndexInputIterator", "hipcub::ArgIndexInputIterator"), + ("cub::TransformInputIterator", "hipcub::TransformInputIterator"), + ("cub::WarpReduce", "hipcub::WarpReduce"), + ("cub::CTA_SYNC", "hipcub::CTA_SYNC"), + ("nvtxMark", "roctxMark"), + ("nvtxMarkA", "roctxMarkA"), + ("nvtxRangePushA", "roctxRangePushA"), + ("nvtxRangePush", "roctxRangePush"), + ("nvtxRangePop", "roctxRangePop"), + ("nvtxRangeStartA", "roctxRangeStartA"), + ("nvtxRangeStart", "roctxRangeStart"), + ("nvtxRangeEnd", "roctxRangeStop"), + ("nvtxRangeId_t", "int"), + ("nvmlReturn_t", "rsmi_status_t"), + ("NVML_SUCCESS", "RSMI_STATUS_SUCCESS"), + ("NVML_P2P_CAPS_INDEX_READ", "RSMI_STATUS_SUCCESS"), + ("NVML_P2P_STATUS_OK", "RSMI_STATUS_SUCCESS"), + ("NVML_ERROR_INSUFFICIENT_SIZE", "RSMI_STATUS_INSUFFICIENT_SIZE"), + ("nvmlDevice_t", "uint32_t"), + ("nvmlGpuP2PStatus_t", "bool"), + ("nvmlProcessInfo_t", "rsmi_process_info_t"), + ("nvmlGpuP2PCapsIndex_t", "uint32_t"), +]) + +CUDA_SPECIAL_MAP = collections.OrderedDict([ + ("cusparseStatus_t", "hipsparseStatus_t"), + ("cusparseHandle_t", "hipsparseHandle_t"), + ("cuComplex", "hipComplex"), + ("cuDoubleComplex", "hipDoubleComplex"), + ("CUSPARSE_POINTER_MODE_HOST", "HIPSPARSE_POINTER_MODE_HOST"), + ("cusparseOperation_t", "hipsparseOperation_t"), + ("cusparseCreateMatDescr", "hipsparseCreateMatDescr"), + ("cusparseCreate", "hipsparseCreate"), + ("cusparseDestroyMatDescr", "hipsparseDestroyMatDescr"), + ("cusparseDestroy", "hipsparseDestroy"), + ("cusparseGetVersion", "hipsparseGetVersion"), + ("cusparseXcoo2csr", "hipsparseXcoo2csr"), + ("cusparseMatDescr_t", "hipsparseMatDescr_t"), + ("cusparseDiagType_t", "hipsparseDiagType_t"), + ("CUSPARSE_DIAG_TYPE_UNIT", "HIPSPARSE_DIAG_TYPE_UNIT"), + ("CUSPARSE_DIAG_TYPE_NON_UNIT", "HIPSPARSE_DIAG_TYPE_NON_UNIT"), + ("cusparseSetMatDiagType", "hipsparseSetMatDiagType"), + ("cusparseFillMode_t", "hipsparseFillMode_t"), + ("CUSPARSE_FILL_MODE_UPPER", "HIPSPARSE_FILL_MODE_UPPER"), + ("CUSPARSE_FILL_MODE_LOWER", "HIPSPARSE_FILL_MODE_LOWER"), + ("cusparseSetMatFillMode", "hipsparseSetMatFillMode"), + ("cusparseDirection_t", "hipsparseDirection_t"), + ("CUSPARSE_DIRECTION_ROW", "HIPSPARSE_DIRECTION_ROW"), + ("CUSPARSE_DIRECTION_COLUMN", "HIPSPARSE_DIRECTION_COLUMN"), + ("cusparseSolvePolicy_t", "hipsparseSolvePolicy_t"), + ("CUSPARSE_SOLVE_POLICY_NO_LEVEL", "HIPSPARSE_SOLVE_POLICY_NO_LEVEL"), + ("CUSPARSE_SOLVE_POLICY_USE_LEVEL", "HIPSPARSE_SOLVE_POLICY_USE_LEVEL"), + ("cusparseCreateBsrsv2Info", "hipsparseCreateBsrsv2Info"), + ("cusparseCreateBsrsm2Info", "hipsparseCreateBsrsm2Info"), + ("cusparseDestroyBsrsv2Info", "hipsparseDestroyBsrsv2Info"), + ("cusparseDestroyBsrsm2Info", "hipsparseDestroyBsrsm2Info"), + ("cusparseSbsrmm", "hipsparseSbsrmm"), + ("cusparseDbsrmm", "hipsparseDbsrmm"), + ("cusparseCbsrmm", "hipsparseCbsrmm"), + ("cusparseZbsrmm", "hipsparseZbsrmm"), + ("cusparseSbsrmv", "hipsparseSbsrmv"), + ("cusparseDbsrmv", "hipsparseDbsrmv"), + ("cusparseCbsrmv", "hipsparseCbsrmv"), + ("cusparseZbsrmv", "hipsparseZbsrmv"), + ("cusparseSbsrsv2_bufferSize", "hipsparseSbsrsv2_bufferSize"), + ("cusparseDbsrsv2_bufferSize", "hipsparseDbsrsv2_bufferSize"), + ("cusparseCbsrsv2_bufferSize", "hipsparseCbsrsv2_bufferSize"), + ("cusparseZbsrsv2_bufferSize", "hipsparseZbsrsv2_bufferSize"), + ("cusparseSbsrsv2_analysis", "hipsparseSbsrsv2_analysis"), + ("cusparseDbsrsv2_analysis", "hipsparseDbsrsv2_analysis"), + ("cusparseCbsrsv2_analysis", "hipsparseCbsrsv2_analysis"), + ("cusparseZbsrsv2_analysis", "hipsparseZbsrsv2_analysis"), + ("cusparseSbsrsv2_solve", "hipsparseSbsrsv2_solve"), + ("cusparseDbsrsv2_solve", "hipsparseDbsrsv2_solve"), + ("cusparseCbsrsv2_solve", "hipsparseCbsrsv2_solve"), + ("cusparseZbsrsv2_solve", "hipsparseZbsrsv2_solve"), + ("cusparseSbsrsm2_bufferSize", "hipsparseSbsrsm2_bufferSize"), + ("cusparseDbsrsm2_bufferSize", "hipsparseDbsrsm2_bufferSize"), + ("cusparseCbsrsm2_bufferSize", "hipsparseCbsrsm2_bufferSize"), + ("cusparseZbsrsm2_bufferSize", "hipsparseZbsrsm2_bufferSize"), + ("cusparseSbsrsm2_analysis", "hipsparseSbsrsm2_analysis"), + ("cusparseDbsrsm2_analysis", "hipsparseDbsrsm2_analysis"), + ("cusparseCbsrsm2_analysis", "hipsparseCbsrsm2_analysis"), + ("cusparseZbsrsm2_analysis", "hipsparseZbsrsm2_analysis"), + ("cusparseSbsrsm2_solve", "hipsparseSbsrsm2_solve"), + ("cusparseDbsrsm2_solve", "hipsparseDbsrsm2_solve"), + ("cusparseCbsrsm2_solve", "hipsparseCbsrsm2_solve"), + ("cusparseZbsrsm2_solve", "hipsparseZbsrsm2_solve"), + ("cusparseScsrmm2", "hipsparseScsrmm2"), + ("cusparseDcsrmm2", "hipsparseDcsrmm2"), + ("cusparseCcsrmm2", "hipsparseCcsrmm2"), + ("cusparseZcsrmm2", "hipsparseZcsrmm2"), + ("cusparseScsrmm", "hipsparseScsrmm"), + ("cusparseDcsrmm", "hipsparseDcsrmm"), + ("cusparseCcsrmm", "hipsparseCcsrmm"), + ("cusparseZcsrmm", "hipsparseZcsrmm"), + ("cusparseXcsrsort_bufferSizeExt", "hipsparseXcsrsort_bufferSizeExt"), + ("cusparseCreateCsrgemm2Info", "hipsparseCreateCsrgemm2Info"), + ("cusparseDestroyCsrgemm2Info", "hipsparseDestroyCsrgemm2Info"), + ("cusparseXcsrgemm2Nnz", "hipsparseXcsrgemm2Nnz"), + ("cusparseDcsrgemm2_bufferSizeExt", "hipsparseDcsrgemm2_bufferSizeExt"), + ("cusparseScsrgemm2_bufferSizeExt", "hipsparseScsrgemm2_bufferSizeExt"), + ("cusparseDcsrgemm2", "hipsparseDcsrgemm2"), + ("cusparseScsrgemm2", "hipsparseScsrgemm2"), + ("cusparseScsrgemm", "hipsparseScsrgemm"), + ("cusparseDcsrgemm", "hipsparseDcsrgemm"), + ("cusparseCcsrgemm", "hipsparseCcsrgemm"), + ("cusparseZcsrgemm", "hipsparseZcsrgemm"), + ("cusparseSetPointerMode", "hipsparseSetPointerMode"), + ("cusparseXcsrgeam2Nnz", "hipsparseXcsrgeam2Nnz"), + ("cusparseScsrgeam", "hipsparseScsrgeam"), + ("cusparseDcsrgeam", "hipsparseDcsrgeam"), + ("cusparseCcsrgeam", "hipsparseCcsrgeam"), + ("cusparseZcsrgeam", "hipsparseZcsrgeam"), + ("cusparseScsrgeam2_bufferSizeExt", "hipsparseScsrgeam2_bufferSizeExt"), + ("cusparseDcsrgeam2_bufferSizeExt", "hipsparseDcsrgeam2_bufferSizeExt"), + ("cusparseCcsrgeam2_bufferSizeExt", "hipsparseCcsrgeam2_bufferSizeExt"), + ("cusparseZcsrgeam2_bufferSizeExt", "hipsparseZcsrgeam2_bufferSizeExt"), + ("cusparseScsrgeam2", "hipsparseScsrgeam2"), + ("cusparseDcsrgeam2", "hipsparseDcsrgeam2"), + ("cusparseCcsrgeam2", "hipsparseCcsrgeam2"), + ("cusparseZcsrgeam2", "hipsparseZcsrgeam2"), + ("cusparseXcsrsort", "hipsparseXcsrsort"), + ("cusparseXbsrsm2_zeroPivot", "hipsparseXbsrsm2_zeroPivot"), + ("cusparseXbsrsv2_zeroPivot", "hipsparseXbsrsv2_zeroPivot"), + ("cusparseXcoosort_bufferSizeExt", "hipsparseXcoosort_bufferSizeExt"), + ("cusparseXcoosortByRow", "hipsparseXcoosortByRow"), + ("cusparseSetStream", "hipsparseSetStream"), + ("cusparseGetStream", "hipsparseGetStream"), + ("cusparseCreateIdentityPermutation", "hipsparseCreateIdentityPermutation"), + ("cusparseSetMatIndexBase", "hipsparseSetMatIndexBase"), + ("cusparseSetMatType", "hipsparseSetMatType"), + ("cusparseSgthr", "hipsparseSgthr"), + ("cusparseDgthr", "hipsparseDgthr"), + ("cusparseCgthr", "hipsparseCgthr"), + ("cusparseZgthr", "hipsparseZgthr"), + ("cusparseScsrmv", "hipsparseScsrmv"), + ("cusparseDcsrmv", "hipsparseDcsrmv"), + ("cusparseCcsrmv", "hipsparseCcsrmv"), + ("cusparseZcsrmv", "hipsparseZcsrmv"), + ("cusparseSpMV", "hipsparseSpMV"), + ("cusparseSpMV_bufferSize", "hipsparseSpMV_bufferSize"), + ("cusparseSpMM", "hipsparseSpMM"), + ("cusparseSpMM_bufferSize", "hipsparseSpMM_bufferSize"), + ("cusparseCreateCsrsv2Info", "hipsparseCreateCsrsv2Info"), + ("cusparseDestroyCsrsv2Info", "hipsparseDestroyCsrsv2Info"), + ("cusparseScsrsv2_bufferSize", "hipsparseScsrsv2_bufferSize"), + ("cusparseDcsrsv2_bufferSize", "hipsparseDcsrsv2_bufferSize"), + ("cusparseCcsrsv2_bufferSize", "hipsparseCcsrsv2_bufferSize"), + ("cusparseZcsrsv2_bufferSize", "hipsparseZcsrsv2_bufferSize"), + ("cusparseScsrsv2_analysis", "hipsparseScsrsv2_analysis"), + ("cusparseDcsrsv2_analysis", "hipsparseDcsrsv2_analysis"), + ("cusparseCcsrsv2_analysis", "hipsparseCcsrsv2_analysis"), + ("cusparseZcsrsv2_analysis", "hipsparseZcsrsv2_analysis"), + ("cusparseScsrsv2_solve", "hipsparseScsrsv2_solve"), + ("cusparseDcsrsv2_solve", "hipsparseDcsrsv2_solve"), + ("cusparseCcsrsv2_solve", "hipsparseCcsrsv2_solve"), + ("cusparseZcsrsv2_solve", "hipsparseZcsrsv2_solve"), + ("cusparseXcsrsv2_zeroPivot", "hipsparseXcsrsv2_zeroPivot"), + ("cusparseCreateCsrsm2Info", "hipsparseCreateCsrsm2Info"), + ("cusparseDestroyCsrsm2Info", "hipsparseDestroyCsrsm2Info"), + ("cusparseScsrsm2_bufferSizeExt", "hipsparseScsrsm2_bufferSizeExt"), + ("cusparseDcsrsm2_bufferSizeExt", "hipsparseDcsrsm2_bufferSizeExt"), + ("cusparseCcsrsm2_bufferSizeExt", "hipsparseCcsrsm2_bufferSizeExt"), + ("cusparseZcsrsm2_bufferSizeExt", "hipsparseZcsrsm2_bufferSizeExt"), + ("cusparseScsrsm2_analysis", "hipsparseScsrsm2_analysis"), + ("cusparseDcsrsm2_analysis", "hipsparseDcsrsm2_analysis"), + ("cusparseCcsrsm2_analysis", "hipsparseCcsrsm2_analysis"), + ("cusparseZcsrsm2_analysis", "hipsparseZcsrsm2_analysis"), + ("cusparseScsrsm2_solve", "hipsparseScsrsm2_solve"), + ("cusparseDcsrsm2_solve", "hipsparseDcsrsm2_solve"), + ("cusparseCcsrsm2_solve", "hipsparseCcsrsm2_solve"), + ("cusparseZcsrsm2_solve", "hipsparseZcsrsm2_solve"), + ("cusparseXcsrsm2_zeroPivot", "hipsparseXcsrsm2_zeroPivot"), + ("cusparseXcsrgeamNnz", "hipsparseXcsrgeamNnz"), + ("cusparseXcsrgemmNnz", "hipsparseXcsrgemmNnz"), + ("cusparseCcsrgemm2_bufferSizeExt", "hipsparseCcsrgemm2_bufferSizeExt"), + ("cusparseZcsrgemm2_bufferSizeExt", "hipsparseZcsrgemm2_bufferSizeExt"), + ("cusparseCcsrgemm2", "hipsparseCcsrgemm2"), + ("cusparseZcsrgemm2", "hipsparseZcsrgemm2"), + ("cusparseScsc2dense", "hipsparseScsc2dense"), + ("cusparseDcsc2dense", "hipsparseDcsc2dense"), + ("cusparseCcsc2dense", "hipsparseCcsc2dense"), + ("cusparseZcsc2dense", "hipsparseZcsc2dense"), + ("cusparseXcsr2coo", "hipsparseXcsr2coo"), + ("cusparseScsr2csc", "hipsparseScsr2csc"), + ("cusparseDcsr2csc", "hipsparseDcsr2csc"), + ("cusparseCcsr2csc", "hipsparseCcsr2csc"), + ("cusparseZcsr2csc", "hipsparseZcsr2csc"), + ("cusparseScsr2dense", "hipsparseScsr2dense"), + ("cusparseDcsr2dense", "hipsparseDcsr2dense"), + ("cusparseCcsr2dense", "hipsparseCcsr2dense"), + ("cusparseZcsr2dense", "hipsparseZcsr2dense"), + ("cusparseSnnz_compress", "hipsparseSnnz_compress"), + ("cusparseDnnz_compress", "hipsparseDnnz_compress"), + ("cusparseCnnz_compress", "hipsparseCnnz_compress"), + ("cusparseZnnz_compress", "hipsparseZnnz_compress"), + ("cusparseScsr2csr_compress", "hipsparseScsr2csr_compress"), + ("cusparseDcsr2csr_compress", "hipsparseDcsr2csr_compress"), + ("cusparseCcsr2csr_compress", "hipsparseCcsr2csr_compress"), + ("cusparseZcsr2csr_compress", "hipsparseZcsr2csr_compress"), + ("cusparseSdense2csc", "hipsparseSdense2csc"), + ("cusparseDdense2csc", "hipsparseDdense2csc"), + ("cusparseCdense2csc", "hipsparseCdense2csc"), + ("cusparseZdense2csc", "hipsparseZdense2csc"), + ("cusparseSdense2csr", "hipsparseSdense2csr"), + ("cusparseDdense2csr", "hipsparseDdense2csr"), + ("cusparseCdense2csr", "hipsparseCdense2csr"), + ("cusparseZdense2csr", "hipsparseZdense2csr"), + ("cusparseSnnz", "hipsparseSnnz"), + ("cusparseDnnz", "hipsparseDnnz"), + ("cusparseCnnz", "hipsparseCnnz"), + ("cusparseZnnz", "hipsparseZnnz"), + ("cusparseXcoosortByColumn", "hipsparseXcoosortByColumn"), + ("cusparseXcscsort_bufferSizeExt", "hipsparseXcscsort_bufferSizeExt"), + ("cusparseXcscsort", "hipsparseXcscsort"), + ("cusparseCreateCsrilu02Info", "hipsparseCreateCsrilu02Info"), + ("cusparseDestroyCsrilu02Info", "hipsparseDestroyCsrilu02Info"), + ("cusparseCreateBsrilu02Info", "hipsparseCreateBsrilu02Info"), + ("cusparseDestroyBsrilu02Info", "hipsparseDestroyBsrilu02Info"), + ("cusparseCreateCsric02Info", "hipsparseCreateCsric02Info"), + ("cusparseDestroyCsric02Info", "hipsparseDestroyCsric02Info"), + ("cusparseCreateBsric02Info", "hipsparseCreateBsric02Info"), + ("cusparseDestroyBsric02Info", "hipsparseDestroyBsric02Info"), + ("cusparseScsrilu02_numericBoost", "hipsparseScsrilu02_numericBoost"), + ("cusparseDcsrilu02_numericBoost", "hipsparseDcsrilu02_numericBoost"), + ("cusparseCcsrilu02_numericBoost", "hipsparseCcsrilu02_numericBoost"), + ("cusparseZcsrilu02_numericBoost", "hipsparseZcsrilu02_numericBoost"), + ("cusparseXcsrilu02_zeroPivot", "hipsparseXcsrilu02_zeroPivot"), + ("cusparseScsrilu02_bufferSize", "hipsparseScsrilu02_bufferSize"), + ("cusparseDcsrilu02_bufferSize", "hipsparseDcsrilu02_bufferSize"), + ("cusparseCcsrilu02_bufferSize", "hipsparseCcsrilu02_bufferSize"), + ("cusparseZcsrilu02_bufferSize", "hipsparseZcsrilu02_bufferSize"), + ("cusparseScsrilu02_analysis", "hipsparseScsrilu02_analysis"), + ("cusparseDcsrilu02_analysis", "hipsparseDcsrilu02_analysis"), + ("cusparseCcsrilu02_analysis", "hipsparseCcsrilu02_analysis"), + ("cusparseZcsrilu02_analysis", "hipsparseZcsrilu02_analysis"), + ("cusparseScsrilu02", "hipsparseScsrilu02"), + ("cusparseDcsrilu02", "hipsparseDcsrilu02"), + ("cusparseCcsrilu02", "hipsparseCcsrilu02"), + ("cusparseZcsrilu02", "hipsparseZcsrilu02"), + ("cusparseSbsrilu02_numericBoost", "hipsparseSbsrilu02_numericBoost"), + ("cusparseDbsrilu02_numericBoost", "hipsparseDbsrilu02_numericBoost"), + ("cusparseCbsrilu02_numericBoost", "hipsparseCbsrilu02_numericBoost"), + ("cusparseZbsrilu02_numericBoost", "hipsparseZbsrilu02_numericBoost"), + ("cusparseXbsrilu02_zeroPivot", "hipsparseXbsrilu02_zeroPivot"), + ("cusparseSbsrilu02_bufferSize", "hipsparseSbsrilu02_bufferSize"), + ("cusparseDbsrilu02_bufferSize", "hipsparseDbsrilu02_bufferSize"), + ("cusparseCbsrilu02_bufferSize", "hipsparseCbsrilu02_bufferSize"), + ("cusparseZbsrilu02_bufferSize", "hipsparseZbsrilu02_bufferSize"), + ("cusparseSbsrilu02_analysis", "hipsparseSbsrilu02_analysis"), + ("cusparseDbsrilu02_analysis", "hipsparseDbsrilu02_analysis"), + ("cusparseCbsrilu02_analysis", "hipsparseCbsrilu02_analysis"), + ("cusparseZbsrilu02_analysis", "hipsparseZbsrilu02_analysis"), + ("cusparseSbsrilu02", "hipsparseSbsrilu02"), + ("cusparseDbsrilu02", "hipsparseDbsrilu02"), + ("cusparseCbsrilu02", "hipsparseCbsrilu02"), + ("cusparseZbsrilu02", "hipsparseZbsrilu02"), + ("cusparseXcsric02_zeroPivot", "hipsparseXcsric02_zeroPivot"), + ("cusparseScsric02_bufferSize", "hipsparseScsric02_bufferSize"), + ("cusparseDcsric02_bufferSize", "hipsparseDcsric02_bufferSize"), + ("cusparseCcsric02_bufferSize", "hipsparseCcsric02_bufferSize"), + ("cusparseZcsric02_bufferSize", "hipsparseZcsric02_bufferSize"), + ("cusparseScsric02_analysis", "hipsparseScsric02_analysis"), + ("cusparseDcsric02_analysis", "hipsparseDcsric02_analysis"), + ("cusparseCcsric02_analysis", "hipsparseCcsric02_analysis"), + ("cusparseZcsric02_analysis", "hipsparseZcsric02_analysis"), + ("cusparseScsric02", "hipsparseScsric02"), + ("cusparseDcsric02", "hipsparseDcsric02"), + ("cusparseCcsric02", "hipsparseCcsric02"), + ("cusparseZcsric02", "hipsparseZcsric02"), + ("cusparseXbsric02_zeroPivot", "hipsparseXbsric02_zeroPivot"), + ("cusparseSbsric02_bufferSize", "hipsparseSbsric02_bufferSize"), + ("cusparseDbsric02_bufferSize", "hipsparseDbsric02_bufferSize"), + ("cusparseCbsric02_bufferSize", "hipsparseCbsric02_bufferSize"), + ("cusparseZbsric02_bufferSize", "hipsparseZbsric02_bufferSize"), + ("cusparseSbsric02_analysis", "hipsparseSbsric02_analysis"), + ("cusparseDbsric02_analysis", "hipsparseDbsric02_analysis"), + ("cusparseCbsric02_analysis", "hipsparseCbsric02_analysis"), + ("cusparseZbsric02_analysis", "hipsparseZbsric02_analysis"), + ("cusparseSbsric02", "hipsparseSbsric02"), + ("cusparseDbsric02", "hipsparseDbsric02"), + ("cusparseCbsric02", "hipsparseCbsric02"), + ("cusparseZbsric02", "hipsparseZbsric02"), + ("cusparseSgtsv2_bufferSizeExt", "hipsparseSgtsv2_bufferSizeExt"), + ("cusparseDgtsv2_bufferSizeExt", "hipsparseDgtsv2_bufferSizeExt"), + ("cusparseCgtsv2_bufferSizeExt", "hipsparseCgtsv2_bufferSizeExt"), + ("cusparseZgtsv2_bufferSizeExt", "hipsparseZgtsv2_bufferSizeExt"), + ("cusparseSgtsv2", "hipsparseSgtsv2"), + ("cusparseDgtsv2", "hipsparseDgtsv2"), + ("cusparseCgtsv2", "hipsparseCgtsv2"), + ("cusparseZgtsv2", "hipsparseZgtsv2"), + ("cusparseSgtsv2_nopivot_bufferSizeExt", "hipsparseSgtsv2_nopivot_bufferSizeExt"), + ("cusparseDgtsv2_nopivot_bufferSizeExt", "hipsparseDgtsv2_nopivot_bufferSizeExt"), + ("cusparseCgtsv2_nopivot_bufferSizeExt", "hipsparseCgtsv2_nopivot_bufferSizeExt"), + ("cusparseZgtsv2_nopivot_bufferSizeExt", "hipsparseZgtsv2_nopivot_bufferSizeExt"), + ("cusparseSgtsv2_nopivot", "hipsparseSgtsv2_nopivot"), + ("cusparseDgtsv2_nopivot", "hipsparseDgtsv2_nopivot"), + ("cusparseCgtsv2_nopivot", "hipsparseCgtsv2_nopivot"), + ("cusparseZgtsv2_nopivot", "hipsparseZgtsv2_nopivot"), + ("cusparseSgtsv2StridedBatch_bufferSizeExt", "hipsparseSgtsv2StridedBatch_bufferSizeExt"), + ("cusparseDgtsv2StridedBatch_bufferSizeExt", "hipsparseDgtsv2StridedBatch_bufferSizeExt"), + ("cusparseCgtsv2StridedBatch_bufferSizeExt", "hipsparseCgtsv2StridedBatch_bufferSizeExt"), + ("cusparseZgtsv2StridedBatch_bufferSizeExt", "hipsparseZgtsv2StridedBatch_bufferSizeExt"), + ("cusparseSgtsv2StridedBatch", "hipsparseSgtsv2StridedBatch"), + ("cusparseDgtsv2StridedBatch", "hipsparseDgtsv2StridedBatch"), + ("cusparseCgtsv2StridedBatch", "hipsparseCgtsv2StridedBatch"), + ("cusparseZgtsv2StridedBatch", "hipsparseZgtsv2StridedBatch"), + ("cusparseSgtsvInterleavedBatch_bufferSizeExt", "hipsparseSgtsvInterleavedBatch_bufferSizeExt"), + ("cusparseDgtsvInterleavedBatch_bufferSizeExt", "hipsparseDgtsvInterleavedBatch_bufferSizeExt"), + ("cusparseCgtsvInterleavedBatch_bufferSizeExt", "hipsparseCgtsvInterleavedBatch_bufferSizeExt"), + ("cusparseZgtsvInterleavedBatch_bufferSizeExt", "hipsparseZgtsvInterleavedBatch_bufferSizeExt"), + ("cusparseSgtsvInterleavedBatch", "hipsparseSgtsvInterleavedBatch"), + ("cusparseDgtsvInterleavedBatch", "hipsparseDgtsvInterleavedBatch"), + ("cusparseCgtsvInterleavedBatch", "hipsparseCgtsvInterleavedBatch"), + ("cusparseZgtsvInterleavedBatch", "hipsparseZgtsvInterleavedBatch"), + ("cusparseSgpsvInterleavedBatch_bufferSizeExt", "hipsparseSgpsvInterleavedBatch_bufferSizeExt"), + ("cusparseDgpsvInterleavedBatch_bufferSizeExt", "hipsparseDgpsvInterleavedBatch_bufferSizeExt"), + ("cusparseCgpsvInterleavedBatch_bufferSizeExt", "hipsparseCgpsvInterleavedBatch_bufferSizeExt"), + ("cusparseZgpsvInterleavedBatch_bufferSizeExt", "hipsparseZgpsvInterleavedBatch_bufferSizeExt"), + ("cusparseSgpsvInterleavedBatch", "hipsparseSgpsvInterleavedBatch"), + ("cusparseDgpsvInterleavedBatch", "hipsparseDgpsvInterleavedBatch"), + ("cusparseCgpsvInterleavedBatch", "hipsparseCgpsvInterleavedBatch"), + ("cusparseZgpsvInterleavedBatch", "hipsparseZgpsvInterleavedBatch"), + ("cusparseCreateSpVec", "hipsparseCreateSpVec"), + ("cusparseDestroySpVec", "hipsparseDestroySpVec"), + ("cusparseSpVecGet", "hipsparseSpVecGet"), + ("cusparseSpVecGetIndexBase", "hipsparseSpVecGetIndexBase"), + ("cusparseSpVecGetValues", "hipsparseSpVecGetValues"), + ("cusparseSpVecSetValues", "hipsparseSpVecSetValues"), + ("cusparseCreateCooAoS", "hipsparseCreateCooAoS"), + ("cusparseCooGet", "hipsparseCooGet"), + ("cusparseCooAoSGet", "hipsparseCooAoSGet"), + ("cusparseCsrGet", "hipsparseCsrGet"), + ("cusparseSpMatGetFormat", "hipsparseSpMatGetFormat"), + ("cusparseSpMatGetIndexBase", "hipsparseSpMatGetIndexBase"), + ("cusparseSpMatGetValues", "hipsparseSpMatGetValues"), + ("cusparseSpMatGetStridedBatch", "hipsparseSpMatGetStridedBatch"), + ("cusparseSpMatSetStridedBatch", "hipsparseSpMatSetStridedBatch"), + ("cusparseDnVecGet", "hipsparseDnVecGet"), + ("cusparseDnVecGetValues", "hipsparseDnVecGetValues"), + ("cusparseDnVecSetValues", "hipsparseDnVecSetValues"), + ("cusparseDnMatGet", "hipsparseDnMatGet"), + ("cusparseDnMatGetValues", "hipsparseDnMatGetValues"), + ("cusparseDnMatSetValues", "hipsparseDnMatSetValues"), + ("cusparseDnMatGetStridedBatch", "hipsparseDnMatGetStridedBatch"), + ("cusparseSpVV_bufferSize", "hipsparseSpVV_bufferSize"), + ("cusparseSpVV", "hipsparseSpVV"), + ("cusparseCsr2cscEx2_bufferSize", "hipsparseCsr2cscEx2_bufferSize"), + ("cusparseCsr2cscEx2", "hipsparseCsr2cscEx2"), + ("cusparseCreateDnMat", "hipsparseCreateDnMat"), + ("cusparseDnMatSetStridedBatch", "hipsparseDnMatSetStridedBatch"), + ("cusparseCsrSetStridedBatch", "hipsparseCsrSetStridedBatch"), + ("cusparseCreateDnVec", "hipsparseCreateDnVec"), + ("cusparseCreateCsr", "hipsparseCreateCsr"), + ("cusparseDestroyDnMat", "hipsparseDestroyDnMat"), + ("cusparseDestroyDnVec", "hipsparseDestroyDnVec"), + ("cusparseDestroySpMat", "hipsparseDestroySpMat"), + ("cusparseSpGEMM_destroyDescr", "hipsparseSpGEMM_destroyDescr"), + ("cusparseCreateCoo", "hipsparseCreateCoo"), + ("cusparseSpGEMM_createDescr", "hipsparseSpGEMM_createDescr"), + ("cusparseSpGEMM_copy", "hipsparseSpGEMM_copy"), + ("cusparseSDDMM_bufferSize", "hipsparseSDDMM_bufferSize"), + ("cusparseSDDMM_preprocess", "hipsparseSDDMM_preprocess"), + ("cusparseSDDMM", "hipsparseSDDMM"), + ("cusparseSpGEMM_compute", "hipsparseSpGEMM_compute"), + ("cusparseSpGEMM_workEstimation", "hipsparseSpGEMM_workEstimation"), + ("cusparseSpMatGetSize", "hipsparseSpMatGetSize"), + ("cusparseCsrSetPointers", "hipsparseCsrSetPointers"), + ("cusparseCreateCsc", "hipsparseCreateCsc"), + ("cusparseSpMatSetValues", "hipsparseSpMatSetValues"), + ("cusparseSpMatSetAttribute", "hipsparseSpMatSetAttribute"), + ("cusparseSpSM_createDescr", "hipsparseSpSM_createDescr"), + ("cusparseSpSM_destroyDescr", "hipsparseSpSM_destroyDescr"), + ("cusparseSpSM_bufferSize", "hipsparseSpSM_bufferSize"), + ("cusparseSpSM_analysis", "hipsparseSpSM_analysis"), + ("cusparseSpSM_solve", "hipsparseSpSM_solve"), + ("cusparseSpSV_createDescr", "hipsparseSpSV_createDescr"), + ("cusparseSpSV_destroyDescr", "hipsparseSpSV_destroyDescr"), + ("cusparseSpSV_bufferSize", "hipsparseSpSV_bufferSize"), + ("cusparseSpSV_analysis", "hipsparseSpSV_analysis"), + ("cusparseSpSV_solve", "hipsparseSpSV_solve"), + ("cusparseSparseToDense_bufferSize", "hipsparseSparseToDense_bufferSize"), + ("cusparseSparseToDense", "hipsparseSparseToDense"), + ("cusparseDenseToSparse_bufferSize", "hipsparseDenseToSparse_bufferSize"), + ("cusparseDenseToSparse_analysis", "hipsparseDenseToSparse_analysis"), + ("cusparseDenseToSparse_convert", "hipsparseDenseToSparse_convert"), + ("cusparseSpMVAlg_t", "hipsparseSpMVAlg_t"), + ("cusparseSpMMAlg_t", "hipsparseSpMMAlg_t"), + ("cusparseIndexType_t", "hipsparseIndexType_t"), + ("cusparseDnMatDescr_t", "hipsparseDnMatDescr_t"), + ("cusparseDnVecDescr_t", "hipsparseDnVecDescr_t"), + ("cusparseSpMatDescr_t", "hipsparseSpMatDescr_t"), + ("cusparseSpGEMMDescr_t", "hipsparseSpGEMMDescr_t"), + ("CUSPARSE_INDEX_32I", "HIPSPARSE_INDEX_32I"), + ("CUSPARSE_INDEX_64I", "HIPSPARSE_INDEX_64I"), + ("CUSPARSE_ORDER_COL", "HIPSPARSE_ORDER_COL"), + ("CUSPARSE_MV_ALG_DEFAULT", "HIPSPARSE_MV_ALG_DEFAULT"), + ("CUSPARSE_MM_ALG_DEFAULT", "HIPSPARSE_MM_ALG_DEFAULT"), + ("CUSPARSE_SPMM_COO_ALG1", "HIPSPARSE_SPMM_COO_ALG1"), + ("CUSPARSE_SPMM_COO_ALG2", "HIPSPARSE_SPMM_COO_ALG2"), + ("CUSPARSE_COOMM_ALG1", "HIPSPARSE_COOMM_ALG1"), + ("CUSPARSE_COOMM_ALG2", "HIPSPARSE_COOMM_ALG2"), + ("CUSPARSE_COOMM_ALG3", "HIPSPARSE_COOMM_ALG3"), + ("CUSPARSE_COOMV_ALG", "HIPSPARSE_COOMV_ALG"), + ("CUSPARSE_CSRMM_ALG1", "HIPSPARSE_CSRMM_ALG1"), + ("CUSPARSE_SPMM_CSR_ALG1", "HIPSPARSE_SPMM_CSR_ALG1"), + ("CUSPARSE_SPMM_CSR_ALG2", "HIPSPARSE_SPMM_CSR_ALG2"), + ("CUSPARSE_SPMM_CSR_ALG3", "HIPSPARSE_SPMM_CSR_ALG3"), + ("CUSPARSE_SPGEMM_DEFAULT", "HIPSPARSE_SPGEMM_DEFAULT"), + ("CUSPARSE_SDDMM_ALG_DEFAULT", "HIPSPARSE_SDDMM_ALG_DEFAULT"), + ("CUSPARSE_STATUS_SUCCESS", "HIPSPARSE_STATUS_SUCCESS"), + ("CUSPARSE_STATUS_NOT_INITIALIZED", "HIPSPARSE_STATUS_NOT_INITIALIZED"), + ("CUSPARSE_STATUS_ALLOC_FAILED", "HIPSPARSE_STATUS_ALLOC_FAILED"), + ("CUSPARSE_STATUS_INVALID_VALUE", "HIPSPARSE_STATUS_INVALID_VALUE"), + ("CUSPARSE_STATUS_MAPPING_ERROR", "HIPSPARSE_STATUS_MAPPING_ERROR"), + ("CUSPARSE_STATUS_EXECUTION_FAILED", "HIPSPARSE_STATUS_EXECUTION_FAILED"), + ("CUSPARSE_STATUS_INTERNAL_ERROR", "HIPSPARSE_STATUS_INTERNAL_ERROR"), + ("CUSPARSE_STATUS_MATRIX_TYPE_NOT_SUPPORTED", "HIPSPARSE_STATUS_MATRIX_TYPE_NOT_SUPPORTED"), + ("CUSPARSE_STATUS_ARCH_MISMATCH", "HIPSPARSE_STATUS_ARCH_MISMATCH"), + ("CUSPARSE_STATUS_ZERO_PIVOT", "HIPSPARSE_STATUS_ZERO_PIVOT"), + ("CUSPARSE_OPERATION_TRANSPOSE", "HIPSPARSE_OPERATION_TRANSPOSE"), + ("CUSPARSE_OPERATION_NON_TRANSPOSE", "HIPSPARSE_OPERATION_NON_TRANSPOSE"), + ("CUSPARSE_OPERATION_CONJUGATE_TRANSPOSE", "HIPSPARSE_OPERATION_CONJUGATE_TRANSPOSE"), + ("CUSPARSE_INDEX_BASE_ZERO", "HIPSPARSE_INDEX_BASE_ZERO"), + ("CUSPARSE_INDEX_BASE_ONE", "HIPSPARSE_INDEX_BASE_ONE"), + ("CUSPARSE_MATRIX_TYPE_GENERAL", "HIPSPARSE_MATRIX_TYPE_GENERAL"), + ("cusparseGetErrorName", "hipsparseGetErrorName"), + ("cusparseOrder_t", "hipsparseOrder_t"), + ("cusparseSpGEMMAlg_t", "hipsparseSpGEMMAlg_t"), + ("cusparseCsr2CscAlg_t", "hipsparseCsr2CscAlg_t"), + ("cusparseGetErrorString", "hipsparseGetErrorString"), + ("cusparseGather", "hipsparseGather"), + ("cusparseSparseToDenseAlg_t", "hipsparseSparseToDenseAlg_t"), + ("cusparseDenseToSparseAlg_t", "hipsparseDenseToSparseAlg_t"), + ("cusparseIndexBase_t", "hipsparseIndexBase_t"), + ("cusparseMatrixType_t", "hipsparseMatrixType_t"), + ("cusparsePointerMode_t", "hipsparsePointerMode_t"), + ("cusparseAction_t", "hipsparseAction_t"), + ("cusparseFormat_t", "hipsparseFormat_t"), + ("cusparseSpSMAlg_t", "hipsparseSpSMAlg_t"), + ("cusparseSpSVAlg_t", "hipsparseSpSVAlg_t"), + ("cusparseSpMatAttribute_t", "hipsparseSpMatAttribute_t"), + ("cusparseSpVecDescr_t", "hipsparseSpVecDescr_t"), + ("cusparseSpSMDescr_t", "hipsparseSpSMDescr_t"), + ("cusparseSpSVDescr_t", "hipsparseSpSVDescr_t"), + ("CUSPARSE_POINTER_MODE_DEVICE", "HIPSPARSE_POINTER_MODE_DEVICE"), + ("CUSPARSE_ACTION_SYMBOLIC", "HIPSPARSE_ACTION_SYMBOLIC"), + ("CUSPARSE_ACTION_NUMERIC", "HIPSPARSE_ACTION_NUMERIC"), + ("CUSPARSE_MATRIX_TYPE_SYMMETRIC", "HIPSPARSE_MATRIX_TYPE_SYMMETRIC"), + ("CUSPARSE_MATRIX_TYPE_HERMITIAN", "HIPSPARSE_MATRIX_TYPE_HERMITIAN"), + ("CUSPARSE_MATRIX_TYPE_TRIANGULAR", "HIPSPARSE_MATRIX_TYPE_TRIANGULAR"), + ("CUSPARSE_FORMAT_CSR", "HIPSPARSE_FORMAT_CSR"), + ("CUSPARSE_FORMAT_CSC", "HIPSPARSE_FORMAT_CSC"), + ("CUSPARSE_FORMAT_COO", "HIPSPARSE_FORMAT_COO"), + ("CUSPARSE_FORMAT_COO_AOS", "HIPSPARSE_FORMAT_COO_AOS"), + ("CUSPARSE_ORDER_ROW", "HIPSPARSE_ORDER_ROW"), + ("CUSPARSE_CSRMV_ALG1", "HIPSPARSE_CSRMV_ALG1"), + ("CUSPARSE_CSRMV_ALG2", "HIPSPARSE_CSRMV_ALG2"), + ("CUSPARSE_INDEX_16U", "HIPSPARSE_INDEX_16U"), + ("CUSPARSE_SPMAT_FILL_MODE", "HIPSPARSE_SPMAT_FILL_MODE"), + ("CUSPARSE_SPMAT_DIAG_TYPE", "HIPSPARSE_SPMAT_DIAG_TYPE"), + ("CUSPARSE_CSR2CSC_ALG1", "HIPSPARSE_CSR2CSC_ALG1"), + ("CUSPARSE_CSR2CSC_ALG2", "HIPSPARSE_CSR2CSC_ALG2"), + ("CUSPARSE_SPSM_ALG_DEFAULT", "HIPSPARSE_SPSM_ALG_DEFAULT"), + ("CUSPARSE_SPSV_ALG_DEFAULT", "HIPSPARSE_SPSV_ALG_DEFAULT"), + ("CUSPARSE_SPARSETODENSE_ALG_DEFAULT", "HIPSPARSE_SPARSETODENSE_ALG_DEFAULT"), + ("CUSPARSE_DENSETOSPARSE_ALG_DEFAULT", "HIPSPARSE_DENSETOSPARSE_ALG_DEFAULT"), + ("cuSPARSELt", "hipSPARSELt"), + ("AT_CUSPARSELT_ENABLED", "AT_HIPSPARSELT_ENABLED"), + ("CUSPARSELT_SPARSITY_50_PERCENT", "HIPSPARSELT_SPARSITY_50_PERCENT"), + ("cusparseComputeType", "hipsparseLtComputetype_t"), + ("CUSPARSE_COMPUTE_32F", "HIPSPARSELT_COMPUTE_32F"), + ("CUSPARSE_COMPUTE_16F", "HIPSPARSELT_COMPUTE_16F"), + ("CUSPARSE_COMPUTE_32I", "HIPSPARSELT_COMPUTE_32I"), + ("CUSPARSE_COMPUTE_TF32", "HIPSPARSELT_COMPUTE_TF32"), + ("CUSPARSELT_MATMUL_BIAS_POINTER", "HIPSPARSELT_MATMUL_BIAS_POINTER"), + ("CUSPARSELT_MATMUL_ALG_DEFAULT", "HIPSPARSELT_MATMUL_ALG_DEFAULT"), + ("CUSPARSELT_MATMUL_ALG_CONFIG_ID", "HIPSPARSELT_MATMUL_ALG_CONFIG_ID"), + ("CUSPARSELT_MATMUL_ALG_CONFIG_MAX_ID", "HIPSPARSELT_MATMUL_ALG_CONFIG_MAX_ID"), + ("CUSPARSELT_MATMUL_ALPHA_VECTOR_SCALING", "HIPSPARSELT_MATMUL_ALPHA_VECTOR_SCALING"), + ("CUSPARSELT_MATMUL_SPLIT_K", "HIPSPARSELT_MATMUL_SPLIT_K"), + ("CUSPARSELT_MATMUL_SPLIT_K_MODE", "HIPSPARSELT_MATMUL_SPLIT_K_MODE"), + ("cusparseLtHandle_t", "hipsparseLtHandle_t"), + ("cusparseLtMatDescriptor_t", "hipsparseLtMatDescriptor_t"), + ("cusparseLtInit", "hipsparseLtInit"), + ("cusparseLtStructuredDescriptorInit", "hipsparseLtStructuredDescriptorInit"), + ("cusparseLtSplitKMode_t", "hipsparseLtSplitKMode_t"), + ("cusparseLtSpMMACompressedSize2", "hipsparseLtSpMMACompressedSize2"), + ("cusparseLtSpMMACompress2", "hipsparseLtSpMMACompress2"), + ("cusparseLtMatmulDescriptor_t", "hipsparseLtMatmulDescriptor_t"), + ("cusparseLtMatmulPlan_t", "hipsparseLtMatmulPlan_t"), + ("cusparseLtMatmulAlgSelection_t", "hipsparseLtMatmulAlgSelection_t"), + ("cusparseLtDenseDescriptorInit", "hipsparseLtDenseDescriptorInit"), + ("cusparseLtMatmulDescriptorInit", "hipsparseLtMatmulDescriptorInit"), + ("cusparseLtMatmulDescSetAttribute", "hipsparseLtMatmulDescSetAttribute"), + ("cusparseLtMatmulAlgSelectionInit", "hipsparseLtMatmulAlgSelectionInit"), + ("cusparseLtMatmulAlgSetAttribute", "hipsparseLtMatmulAlgSetAttribute"), + ("cusparseLtMatmulPlanInit", "hipsparseLtMatmulPlanInit"), + ("cusparseLtMatmulGetWorkspace", "hipsparseLtMatmulGetWorkspace"), + ("cusparseLtMatmulSearch", "hipsparseLtMatmulSearch"), + ("cusparseLtMatmulAlgGetAttribute", "hipsparseLtMatmulAlgGetAttribute"), + ("cusparseLtMatmul", "hipsparseLtMatmul"), + ("cusparseLtMatDescriptorDestroy", "hipsparseLtMatDescriptorDestroy"), + ("cusparseLtMatmulPlanDestroy", "hipsparseLtMatmulPlanDestroy"), + ("cusolverEigMode_t", "hipsolverEigMode_t"), + ("cusolverEigType_t", "hipsolverEigType_t"), + ("CUSOLVER_EIG_MODE_VECTOR", "HIPSOLVER_EIG_MODE_VECTOR"), + ("CUSOLVER_EIG_MODE_NOVECTOR", "HIPSOLVER_EIG_MODE_NOVECTOR"), + ("CUSOLVER_EIG_TYPE_1", "HIPSOLVER_EIG_TYPE_1"), + ("CUSOLVER_EIG_TYPE_2", "HIPSOLVER_EIG_TYPE_2"), + ("CUSOLVER_EIG_TYPE_3", "HIPSOLVER_EIG_TYPE_3"), + ("syevjInfo_t", "hipsolverSyevjInfo_t"), + ("cusolverDnCreateSyevjInfo", "hipsolverDnCreateSyevjInfo"), + ("cusolverDnXsyevjSetSortEig", "hipsolverDnXsyevjSetSortEig"), + ("cusolverDnDestroySyevjInfo", "hipsolverDnDestroySyevjInfo"), + ("gesvdjInfo_t", "hipsolverGesvdjInfo_t"), + ("cusolverDnCreateGesvdjInfo", "hipsolverDnCreateGesvdjInfo"), + ("cusolverDnXgesvdjSetSortEig", "hipsolverDnXgesvdjSetSortEig"), + ("cusolverDnDestroyGesvdjInfo", "hipsolverDnDestroyGesvdjInfo"), + ("cusolverDnHandle_t", "hipsolverDnHandle_t"), + ("cusolverDnCreate", "hipsolverDnCreate"), + ("cusolverDnSetStream", "hipsolverDnSetStream"), + ("cusolverDnGetStream", "hipsolverDnGetStream"), + ("cusolverDnDestroy", "hipsolverDnDestroy"), + ("cusolverDnParams_t", "hipsolverDnParams_t"), + ("cusolverDnCgeqrf", "hipsolverDnCgeqrf"), + ("cusolverDnCgeqrf_bufferSize", "hipsolverDnCgeqrf_bufferSize"), + ("cusolverDnCgesvd", "hipsolverDnCgesvd"), + ("cusolverDnCgesvd_bufferSize", "hipsolverDnCgesvd_bufferSize"), + ("cusolverDnCgesvdj", "hipsolverDnCgesvdj"), + ("cusolverDnCgesvdjBatched", "hipsolverDnCgesvdjBatched"), + ("cusolverDnCgesvdjBatched_bufferSize", "hipsolverDnCgesvdjBatched_bufferSize"), + ("cusolverDnCgesvdj_bufferSize", "hipsolverDnCgesvdj_bufferSize"), + ("cusolverDnCgetrf", "hipsolverDnCgetrf"), + ("cusolverDnCgetrf_bufferSize", "hipsolverDnCgetrf_bufferSize"), + ("cusolverDnCgetrs", "hipsolverDnCgetrs"), + ("cusolverDnCheevd", "hipsolverDnCheevd"), + ("cusolverDnCheevd_bufferSize", "hipsolverDnCheevd_bufferSize"), + ("cusolverDnCheevj", "hipsolverDnCheevj"), + ("cusolverDnCheevjBatched", "hipsolverDnCheevjBatched"), + ("cusolverDnCheevjBatched_bufferSize", "hipsolverDnCheevjBatched_bufferSize"), + ("cusolverDnCheevj_bufferSize", "hipsolverDnCheevj_bufferSize"), + ("cusolverDnCpotrf", "hipsolverDnCpotrf"), + ("cusolverDnCpotrfBatched", "hipsolverDnCpotrfBatched"), + ("cusolverDnCpotrf_bufferSize", "hipsolverDnCpotrf_bufferSize"), + ("cusolverDnCpotrs", "hipsolverDnCpotrs"), + ("cusolverDnCpotrsBatched", "hipsolverDnCpotrsBatched"), + ("cusolverDnCungqr", "hipsolverDnCungqr"), + ("cusolverDnCungqr_bufferSize", "hipsolverDnCungqr_bufferSize"), + ("cusolverDnCunmqr", "hipsolverDnCunmqr"), + ("cusolverDnCunmqr_bufferSize", "hipsolverDnCunmqr_bufferSize"), + ("cusolverDnDgeqrf", "hipsolverDnDgeqrf"), + ("cusolverDnDgeqrf_bufferSize", "hipsolverDnDgeqrf_bufferSize"), + ("cusolverDnDgesvd", "hipsolverDnDgesvd"), + ("cusolverDnDgesvd_bufferSize", "hipsolverDnDgesvd_bufferSize"), + ("cusolverDnDgesvdj", "hipsolverDnDgesvdj"), + ("cusolverDnDgesvdjBatched", "hipsolverDnDgesvdjBatched"), + ("cusolverDnDgesvdjBatched_bufferSize", "hipsolverDnDgesvdjBatched_bufferSize"), + ("cusolverDnDgesvdj_bufferSize", "hipsolverDnDgesvdj_bufferSize"), + ("cusolverDnDgetrf", "hipsolverDnDgetrf"), + ("cusolverDnDgetrf_bufferSize", "hipsolverDnDgetrf_bufferSize"), + ("cusolverDnDgetrs", "hipsolverDnDgetrs"), + ("cusolverDnDorgqr", "hipsolverDnDorgqr"), + ("cusolverDnDorgqr_bufferSize", "hipsolverDnDorgqr_bufferSize"), + ("cusolverDnDormqr", "hipsolverDnDormqr"), + ("cusolverDnDormqr_bufferSize", "hipsolverDnDormqr_bufferSize"), + ("cusolverDnDpotrf", "hipsolverDnDpotrf"), + ("cusolverDnDpotrfBatched", "hipsolverDnDpotrfBatched"), + ("cusolverDnDpotrf_bufferSize", "hipsolverDnDpotrf_bufferSize"), + ("cusolverDnDpotrs", "hipsolverDnDpotrs"), + ("cusolverDnDpotrsBatched", "hipsolverDnDpotrsBatched"), + ("cusolverDnDsyevd", "hipsolverDnDsyevd"), + ("cusolverDnDsyevd_bufferSize", "hipsolverDnDsyevd_bufferSize"), + ("cusolverDnDsyevj", "hipsolverDnDsyevj"), + ("cusolverDnDsyevjBatched", "hipsolverDnDsyevjBatched"), + ("cusolverDnDsyevjBatched_bufferSize", "hipsolverDnDsyevjBatched_bufferSize"), + ("cusolverDnDsyevj_bufferSize", "hipsolverDnDsyevj_bufferSize"), + ("cusolverDnSgeqrf", "hipsolverDnSgeqrf"), + ("cusolverDnSgeqrf_bufferSize", "hipsolverDnSgeqrf_bufferSize"), + ("cusolverDnSgesvd", "hipsolverDnSgesvd"), + ("cusolverDnSgesvd_bufferSize", "hipsolverDnSgesvd_bufferSize"), + ("cusolverDnSgesvdj", "hipsolverDnSgesvdj"), + ("cusolverDnSgesvdjBatched", "hipsolverDnSgesvdjBatched"), + ("cusolverDnSgesvdjBatched_bufferSize", "hipsolverDnSgesvdjBatched_bufferSize"), + ("cusolverDnSgesvdj_bufferSize", "hipsolverDnSgesvdj_bufferSize"), + ("cusolverDnSgetrf", "hipsolverDnSgetrf"), + ("cusolverDnSgetrf_bufferSize", "hipsolverDnSgetrf_bufferSize"), + ("cusolverDnSgetrs", "hipsolverDnSgetrs"), + ("cusolverDnSorgqr", "hipsolverDnSorgqr"), + ("cusolverDnSorgqr_bufferSize", "hipsolverDnSorgqr_bufferSize"), + ("cusolverDnSormqr", "hipsolverDnSormqr"), + ("cusolverDnSormqr_bufferSize", "hipsolverDnSormqr_bufferSize"), + ("cusolverDnSpotrf", "hipsolverDnSpotrf"), + ("cusolverDnSpotrfBatched", "hipsolverDnSpotrfBatched"), + ("cusolverDnSpotrf_bufferSize", "hipsolverDnSpotrf_bufferSize"), + ("cusolverDnSpotrs", "hipsolverDnSpotrs"), + ("cusolverDnSpotrsBatched", "hipsolverDnSpotrsBatched"), + ("cusolverDnSsyevd", "hipsolverDnSsyevd"), + ("cusolverDnSsyevd_bufferSize", "hipsolverDnSsyevd_bufferSize"), + ("cusolverDnSsyevj", "hipsolverDnSsyevj"), + ("cusolverDnSsyevjBatched", "hipsolverDnSsyevjBatched"), + ("cusolverDnSsyevjBatched_bufferSize", "hipsolverDnSsyevjBatched_bufferSize"), + ("cusolverDnSsyevj_bufferSize", "hipsolverDnSsyevj_bufferSize"), + ("cusolverDnXgeqrf", "hipsolverDnXgeqrf"), + ("cusolverDnXgeqrf_bufferSize", "hipsolverDnXgeqrf_bufferSize"), + ("cusolverDnXpotrf", "hipsolverDnXpotrf"), + ("cusolverDnXpotrf_bufferSize", "hipsolverDnXpotrf_bufferSize"), + ("cusolverDnXpotrs", "hipsolverDnXpotrs"), + ("cusolverDnXsyevd", "hipsolverDnXsyevd"), + ("cusolverDnXsyevd_bufferSize", "hipsolverDnXsyevd_bufferSize"), + ("cusolverDnZgeqrf", "hipsolverDnZgeqrf"), + ("cusolverDnZgeqrf_bufferSize", "hipsolverDnZgeqrf_bufferSize"), + ("cusolverDnZgesvd", "hipsolverDnZgesvd"), + ("cusolverDnZgesvd_bufferSize", "hipsolverDnZgesvd_bufferSize"), + ("cusolverDnZgesvdj", "hipsolverDnZgesvdj"), + ("cusolverDnZgesvdjBatched", "hipsolverDnZgesvdjBatched"), + ("cusolverDnZgesvdjBatched_bufferSize", "hipsolverDnZgesvdjBatched_bufferSize"), + ("cusolverDnZgesvdj_bufferSize", "hipsolverDnZgesvdj_bufferSize"), + ("cusolverDnZgetrf", "hipsolverDnZgetrf"), + ("cusolverDnZgetrf_bufferSize", "hipsolverDnZgetrf_bufferSize"), + ("cusolverDnZgetrs", "hipsolverDnZgetrs"), + ("cusolverDnZheevd", "hipsolverDnZheevd"), + ("cusolverDnZheevd_bufferSize", "hipsolverDnZheevd_bufferSize"), + ("cusolverDnZheevj", "hipsolverDnZheevj"), + ("cusolverDnZheevjBatched", "hipsolverDnZheevjBatched"), + ("cusolverDnZheevjBatched_bufferSize", "hipsolverDnZheevjBatched_bufferSize"), + ("cusolverDnZheevj_bufferSize", "hipsolverDnZheevj_bufferSize"), + ("cusolverDnZpotrf", "hipsolverDnZpotrf"), + ("cusolverDnZpotrfBatched", "hipsolverDnZpotrfBatched"), + ("cusolverDnZpotrf_bufferSize", "hipsolverDnZpotrf_bufferSize"), + ("cusolverDnZpotrs", "hipsolverDnZpotrs"), + ("cusolverDnZpotrsBatched", "hipsolverDnZpotrsBatched"), + ("cusolverDnZungqr", "hipsolverDnZungqr"), + ("cusolverDnZungqr_bufferSize", "hipsolverDnZungqr_bufferSize"), + ("cusolverDnZunmqr", "hipsolverDnZunmqr"), + ("cusolverDnZunmqr_bufferSize", "hipsolverDnZunmqr_bufferSize"), + ("cusolverDnDsytrf_bufferSize", "hipsolverDnDsytrf_bufferSize"), + ("cusolverDnSsytrf_bufferSize", "hipsolverDnSsytrf_bufferSize"), + ("cusolverDnZsytrf_bufferSize", "hipsolverDnZsytrf_bufferSize"), + ("cusolverDnCsytrf_bufferSize", "hipsolverDnCsytrf_bufferSize"), + ("cusolverDnDsytrf", "hipsolverDnDsytrf"), + ("cusolverDnSsytrf", "hipsolverDnSsytrf"), + ("cusolverDnZsytrf", "hipsolverDnZsytrf"), + ("cusolverDnCsytrf", "hipsolverDnCsytrf"), + ("cusolverDnSgesvdaStridedBatched_bufferSize", "hipsolverDnSgesvdaStridedBatched_bufferSize"), + ("cusolverDnDgesvdaStridedBatched_bufferSize", "hipsolverDnDgesvdaStridedBatched_bufferSize"), + ("cusolverDnCgesvdaStridedBatched_bufferSize", "hipsolverDnCgesvdaStridedBatched_bufferSize"), + ("cusolverDnZgesvdaStridedBatched_bufferSize", "hipsolverDnZgesvdaStridedBatched_bufferSize"), + ("cusolverDnSgesvdaStridedBatched", "hipsolverDnSgesvdaStridedBatched"), + ("cusolverDnDgesvdaStridedBatched", "hipsolverDnDgesvdaStridedBatched"), + ("cusolverDnCgesvdaStridedBatched", "hipsolverDnCgesvdaStridedBatched"), + ("cusolverDnZgesvdaStridedBatched", "hipsolverDnZgesvdaStridedBatched"), + ("cusolverDnXgesvdjSetTolerance", "hipsolverDnXgesvdjSetTolerance"), + ("cusolverDnXgesvdjSetMaxSweeps", "hipsolverDnXgesvdjSetMaxSweeps"), + ("cusolverDnSgebrd_bufferSize", "hipsolverDnSgebrd_bufferSize"), + ("cusolverDnDgebrd_bufferSize", "hipsolverDnDgebrd_bufferSize"), + ("cusolverDnCgebrd_bufferSize", "hipsolverDnCgebrd_bufferSize"), + ("cusolverDnZgebrd_bufferSize", "hipsolverDnZgebrd_bufferSize"), + ("cusolverDnSgebrd", "hipsolverDnSgebrd"), + ("cusolverDnDgebrd", "hipsolverDnDgebrd"), + ("cusolverDnCgebrd", "hipsolverDnCgebrd"), + ("cusolverDnZgebrd", "hipsolverDnZgebrd"), + ("cusolverDnXgesvdjGetSweeps", "hipsolverDnXgesvdjGetSweeps"), + ("cusolverDnXsyevjSetTolerance", "hipsolverDnXsyevjSetTolerance"), + ("cusolverDnXsyevjSetMaxSweeps", "hipsolverDnXsyevjSetMaxSweeps"), + ("cusolverDnXsyevjGetResidual", "hipsolverDnXsyevjGetResidual"), + ("cusolverDnXgesvdjGetResidual", "hipsolverDnXgesvdjGetResidual"), + ("cusolverDnXsyevjGetSweeps", "hipsolverDnXsyevjGetSweeps"), +]) + +PYTORCH_SPECIFIC_MAPPINGS = collections.OrderedDict([ + ("USE_CUDA", "USE_ROCM"), + ("CUDA_VERSION", "TORCH_HIP_VERSION"), + ("gloo/cuda.h", "gloo/hip.h"), + ("gloo/cuda_allreduce_halving_doubling.h", "gloo/hip_allreduce_halving_doubling.h"), + ("gloo/cuda_allreduce_halving_doubling_pipelined.h", "gloo/hip_allreduce_halving_doubling_pipelined.h"), + ("gloo/cuda_allreduce_ring.h", "gloo/hip_allreduce_ring.h"), + ("gloo/cuda_allreduce_ring_chunked.h", "gloo/hip_allreduce_ring_chunked.h"), + ("gloo/cuda_broadcast_one_to_all.h", "gloo/hip_broadcast_one_to_all.h"), + ("gloo::CudaAllreduceHalvingDoublingPipelined", "gloo::HipAllreduceHalvingDoublingPipelined"), + ("gloo::CudaAllreduceRingChunked", "gloo::HipAllreduceRingChunked"), + ("gloo::CudaBroadcastOneToAll", "gloo::HipBroadcastOneToAll"), + ("gloo::CudaHostWorkspace", "gloo::HipHostWorkspace"), + ("gloo::CudaDeviceWorkspace", "gloo::HipDeviceWorkspace"), + ("CUDNN_RNN_RELU", "miopenRNNRELU"), + ("CUDNN_RNN_TANH", "miopenRNNTANH"), + ("CUDNN_LSTM", "miopenLSTM"), + ("CUDNN_GRU", "miopenGRU"), + ("cudnnRNNMode_t", "miopenRNNMode_t"), + ("magma_queue_create_from_cuda", "magma_queue_create_from_hip"), + # TODO: Remove these. They were necessary for Meta-internal builds. + ("cudnnHandle_t", "miopenHandle_t"), + ("cudnnCreate", "miopenCreate"), + ("cudnnDestroy", "miopenDestroy"), + ("cudnnSetStream", "miopenSetStream"), + ("cudnnTensorDescriptor_t ", "miopenTensorDescriptor_t "), + ("CUDNN_ENFORCE", "MIOPEN_ENFORCE"), + ("CUDNN_CHECK", "MIOPEN_CHECK"), + # NVSHMEM → rocSHMEM mappings (only symbols used in hipified files: + # NVSHMEMSymmetricMemory.cpp and nvshmem_team_manager.hpp). + ("NVSHMEM_TEAM_INVALID", "rocshmem::ROCSHMEM_TEAM_INVALID"), + ("NVSHMEM_TEAM_WORLD", "rocshmem::ROCSHMEM_TEAM_WORLD"), + ("NVSHMEMX_INIT_WITH_UNIQUEID", "rocshmem::ROCSHMEM_INIT_WITH_UNIQUEID"), + + ("nvshmem_malloc", "rocshmem::rocshmem_malloc"), + ("nvshmem_free", "rocshmem::rocshmem_free"), + ("nvshmem_ptr", "rocshmem::rocshmem_ptr"), + ("nvshmem_team_t", "rocshmem::rocshmem_team_t"), + ("nvshmem_team_split_strided", "rocshmem::rocshmem_team_split_strided"), + + ("nvshmemx_uniqueid_t", "rocshmem::rocshmem_uniqueid_t"), + ("nvshmemx_get_uniqueid", "rocshmem::rocshmem_get_uniqueid"), + ("nvshmemx_init_attr", "rocshmem::rocshmem_init_attr"), + ("nvshmemx_init_attr_t", "rocshmem::rocshmem_init_attr_t"), + ("nvshmemx_set_attr_uniqueid_args", "rocshmem::rocshmem_set_attr_uniqueid_args"), +]) + +C10_MAPPINGS = collections.OrderedDict([ + ("CUDA_VERSION", "TORCH_HIP_VERSION"), + ("CUDA_LAUNCH_BLOCKING=1", "AMD_SERIALIZE_KERNEL=3"), + ("CUDA_LAUNCH_BLOCKING", "AMD_SERIALIZE_KERNEL"), + ("c10/cuda/CUDAAlgorithm.h", "c10/hip/HIPAlgorithm.h"), + ("c10/cuda/CUDAAllocatorConfig.h", "c10/hip/HIPAllocatorConfig.h"), + ("c10/cuda/CUDACachingAllocator.h", "c10/hip/HIPCachingAllocator.h"), + ("c10/cuda/CUDADeviceAssertion.h", "c10/hip/HIPDeviceAssertion.h"), + ("c10/cuda/CUDADeviceAssertionHost.h", "c10/hip/HIPDeviceAssertionHost.h"), + ("c10/cuda/CUDAException.h", "c10/hip/HIPException.h"), + ("c10/cuda/CUDAFunctions.h", "c10/hip/HIPFunctions.h"), + ("c10/cuda/CUDAGraphsC10Utils.h", "c10/hip/HIPGraphsC10Utils.h"), + ("c10/cuda/CUDAGuard.h", "c10/hip/HIPGuard.h"), + ("c10/cuda/CUDAMacros.h", "c10/hip/HIPMacros.h"), + ("c10/cuda/CUDAMathCompat.h", "c10/hip/HIPMathCompat.h"), + ("c10/cuda/CUDAMiscFunctions.h", "c10/hip/HIPMiscFunctions.h"), + ("c10/cuda/CUDAStream.h", "c10/hip/HIPStream.h"), + ("c10/cuda/PeerToPeerAccess.h", "c10/hip/PeerToPeerAccess.h"), + ("c10/cuda/CUDAEvent.h", "c10/hip/HIPEvent.h"), + ("c10/cuda/impl/CUDAGuardImpl.h", "c10/hip/impl/HIPGuardImpl.h"), + ("c10/cuda/impl/CUDATest.h", "c10/hip/impl/HIPTest.h"), + ("CUDATest.hpp", "HIPTest.hpp"), + ("c10/cuda/impl/cuda_cmake_macros.h", "c10/hip/impl/hip_cmake_macros.h"), + # TODO: Remove these. They were necessary for Meta-internal builds. + ("c10::hip::c10_hip_check_implementation", "c10::cuda::c10_cuda_check_implementation"), +]) + +# TODO: Remove CAFFE2_SPECIFIC_MAPPINGS. They were necessary for Meta-internal builds. +# CAFFE2 mappings for simple filename patterns (no path separators) +# These work with the word-boundary regex approach +# NOTE: Removed broad "context_gpu" mapping to prevent double transformation. +# Use CAFFE2_PATH_MAPPINGS for specific path transformations instead. +CAFFE2_SPECIFIC_MAPPINGS = collections.OrderedDict([ + ("cuda_nccl_gpu", "hip/hip_nccl_gpu"), + ("mixed_utils", "hip/mixed_utils"), + ("operator_fallback_gpu", "hip/operator_fallback_gpu"), + ("spatial_batch_norm_op_impl", "hip/spatial_batch_norm_op_impl"), + ("recurrent_network_executor_gpu", "hip/recurrent_network_executor_gpu"), + ("generate_proposals_op_util_nms_gpu", "hip/generate_proposals_op_util_nms_gpu"), + ("max_pool_with_index_gpu", "hip/max_pool_with_index_gpu"), + ("THCCachingAllocator_gpu", "hip/THCCachingAllocator_gpu"), + ("top_k_heap_selection", "hip/top_k_heap_selection"), + ("top_k_radix_selection", "hip/top_k_radix_selection"), + ("GpuAtomics", "hip/GpuAtomics"), + ("GpuDefs", "hip/GpuDefs"), + ("GpuScanUtils", "hip/GpuScanUtils"), + ("GpuBitonicSort", "hip/GpuBitonicSort"), + # ("gather_op", "hip/gather_op"), # gather_op.h is device-agnostic, no path transform needed + ("HIP_CHECK", "CUDA_CHECK"), + # ("HIPContext", "CUDAContext"), + ("CUBLAS_ENFORCE", "HIPBLAS_ENFORCE"), + ("CaffeHipGetDevice", "CaffeCudaGetDevice"), +]) + +# TODO: Remove CAFFE2_PATH_MAPPINGS. They were necessary for Meta-internal builds. +# CAFFE2 path mappings (contain slashes - need special handling in hipify_python.py) +CAFFE2_PATH_MAPPINGS = collections.OrderedDict([ + ("math/reduce.cuh", "math/hip/reduce.cuh"), + ("operators/gather_op.cuh", "operators/hip/gather_op.cuh"), + ("sgd/adagrad_fused_op_gpu.cuh", "sgd/hip/adagrad_fused_op_gpu.cuh"), + ("operators/segment_reduction_op_gpu.cuh", "operators/hip/segment_reduction_op_gpu.cuh"), + ("caffe2/core/common_cudnn.h", "caffe2/core/hip/common_miopen.h"), + # Add specific mappings for common_gpu and context_gpu to prevent double transformation + ("caffe2/core/common_gpu.h", "caffe2/core/hip/common_gpu.h"), + ("caffe2/core/context_gpu.h", "caffe2/core/hip/context_gpu.h"), + ("hip/hip/", "hip/"), +]) + +CUDA_TO_HIP_MAPPINGS = [ + CUDA_IDENTIFIER_MAP, + CUDA_TYPE_NAME_MAP, + CUDA_INCLUDE_MAP, + CUDA_SPECIAL_MAP, + PYTORCH_SPECIFIC_MAPPINGS, + C10_MAPPINGS, + # TODO: Remove CAFFE2_SPECIFIC_MAPPINGS and CAFFE2_PATH_MAPPINGS. See above. + CAFFE2_SPECIFIC_MAPPINGS, + CAFFE2_PATH_MAPPINGS +] diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/hipify/hipify_python.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/hipify/hipify_python.py new file mode 100644 index 0000000000000000000000000000000000000000..3919d61bbaa0cd15740d1efbb33c1e2e7434fc56 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/hipify/hipify_python.py @@ -0,0 +1,1175 @@ +#!/usr/bin/env python3 +# mypy: allow-untyped-defs +""" The Python Hipify script. +## +# Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved. +# 2017-2018 Advanced Micro Devices, Inc. and +# Facebook Inc. All rights reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +""" +import argparse +import fnmatch +import re +import shutil +import sys +import os +import warnings + +from .cuda_to_hip_mappings import CUDA_TO_HIP_MAPPINGS +from .cuda_to_hip_mappings import MATH_TRANSPILATIONS +from .cuda_to_hip_mappings import CAFFE2_PATH_MAPPINGS + +from collections.abc import Iterator +from collections.abc import Mapping, Iterable +from enum import Enum +import functools +import hashlib + +def _deprecated(name): + warnings.warn(f"hipify version 2.0.0 no longer uses function {name}", FutureWarning, stacklevel=2) + +class CurrentState(Enum): + INITIALIZED = 1 + DONE = 2 + +class HipifyResult: + def __init__(self, current_state, hipified_path) -> None: + self.current_state = current_state + self.hipified_path = hipified_path + self.status = "" + + def __str__(self) -> str: + return (f"HipifyResult:: current_state: {self.current_state}, hipified_path : {self.hipified_path}, status: {self.status}") + +HipifyFinalResult = dict[str, HipifyResult] +HIPIFY_C_BREADCRUMB = "// !!! This is a file automatically generated by hipify!!!\n" +HIPIFY_FINAL_RESULT: HipifyFinalResult = {} + +# Hardcode the PyTorch template map +"""This dictionary provides the mapping from PyTorch kernel template types +to their actual types.""" +PYTORCH_TEMPLATE_MAP = {"Dtype": "scalar_t", "T": "scalar_t"} + +__all__ = ['InputError', 'openf', 'bcolors', 'GeneratedFileCleaner', 'match_extensions', 'matched_files_iter', + 'preprocess_file_and_save_result', 'compute_stats', 'add_dim3', 'processKernelLaunches', 'find_closure_group', + 'find_bracket_group', 'find_parentheses_group', 'replace_math_functions', 'hip_header_magic', 'replace_extern_shared', + 'get_hip_file_path', 'is_out_of_place', 'is_pytorch_file', 'is_cusparse_file', 'is_special_file', 'is_caffe2_gpu_file', + 'Trie', 'preprocessor', 'file_specific_replacement', 'file_add_header', + 'fix_static_global_kernels', 'extract_arguments', 'str2bool', 'CurrentState', 'HipifyResult', 'hipify'] + + +class InputError(Exception): + # Exception raised for errors in the input. + + def __init__(self, message) -> None: + super().__init__(message) + self.message = message + + def __str__(self) -> str: + return f"Input error: {self.message}" + + +def openf(filename, mode): + return open(filename, mode, errors='ignore') + + +# Color coding for printing +class bcolors: + HEADER = '\033[95m' + OKBLUE = '\033[94m' + OKGREEN = '\033[92m' + WARNING = '\033[93m' + FAIL = '\033[91m' + ENDC = '\033[0m' + BOLD = '\033[1m' + UNDERLINE = '\033[4m' + + +# To the programmer, the output of hipify most likely are intermediates. +# This class allows users of hipify to ask for a cleanup by running the +# hipify and compilation in a with instantiating this context manager class +# with keep_intermediates=False. +# The main usecase is the cpp_extensions, specifically the load method. +# It is a good idea to keep intermediates (in case of errors or to +# not recompile unchanged files), but in cases where you don't want to +# keep them (e.g. in the CI), this can be used to remove files. +class GeneratedFileCleaner: + """Context Manager to clean up generated files""" + def __init__(self, keep_intermediates=False) -> None: + self.keep_intermediates = keep_intermediates + self.files_to_clean = set() + self.dirs_to_clean = [] + + def __enter__(self): + return self + + def open(self, fn, *args, **kwargs): + if not os.path.exists(fn): + self.files_to_clean.add(os.path.abspath(fn)) + + return open(fn, *args, **kwargs) + + def makedirs(self, dn, exist_ok=False) -> None: + parent, n = os.path.split(dn) + if not n: + parent, n = os.path.split(parent) + if parent and n and not os.path.exists(parent): + self.makedirs(parent, exist_ok=True) + if not os.path.isdir(dn) or not exist_ok: + os.mkdir(dn) + self.dirs_to_clean.append(os.path.abspath(dn)) + + def __exit__(self, type, value, traceback): + if not self.keep_intermediates: + for f in self.files_to_clean: + os.unlink(f) + for d in self.dirs_to_clean[::-1]: + os.rmdir(d) + +# Follow UNIX convention for paths to use '/' instead of '\\' on Windows +def _to_unix_path(path: str) -> str: + return path.replace(os.sep, '/') + +def match_extensions(filename: str, extensions: Iterable) -> bool: + """Helper method to see if filename ends with certain extension""" + return any(filename.endswith(e) for e in extensions) + + +def _fnmatch(filepath, patterns): + return any(fnmatch.fnmatch(filepath, pattern) for pattern in patterns) + + +def matched_files_iter( + root_path: str, + includes: Iterable = (), + ignores: Iterable = (), + extensions: Iterable = (), + out_of_place_only: bool = False, + is_pytorch_extension: bool = False) -> Iterator[str]: + + exact_matches = set(includes) + + # This is a very rough heuristic; really, we want to avoid scanning + # any file which is not checked into source control, but this script + # needs to work even if you're in a Git or Hg checkout, so easier to + # just block the biggest time sinks that won't matter in the + # end. + for (abs_dirpath, dirs, filenames) in os.walk(root_path, topdown=True): + rel_dirpath = os.path.relpath(abs_dirpath, root_path) + if rel_dirpath == '.': + # Blah blah blah O(n) blah blah + if ".git" in dirs: + dirs.remove(".git") + if "build" in dirs: + dirs.remove("build") + if "third_party" in dirs: + dirs.remove("third_party") + dirs.append("third_party/nvfuser") + for filename in filenames: + filepath = _to_unix_path(os.path.join(abs_dirpath, filename)) + # We respect extensions, UNLESS you wrote the entire + # filename verbatim, in which case we always accept it + if ( + _fnmatch(filepath, includes) + and (not _fnmatch(filepath, ignores)) + and (match_extensions(filepath, extensions) or filepath in exact_matches) + ): + yield filepath + + +def preprocess_file_and_save_result( + output_directory: str, + filepath: str, + all_files: Iterable, + header_include_dirs: Iterable, + stats: dict[str, list], + hip_clang_launch: bool, + is_pytorch_extension: bool, + clean_ctx: GeneratedFileCleaner, + show_progress: bool) -> None: + fin_path = os.path.abspath(os.path.join(output_directory, filepath)) + hipify_result = HipifyResult(current_state=CurrentState.INITIALIZED, hipified_path=fin_path) + HIPIFY_FINAL_RESULT[fin_path] = hipify_result + result = preprocessor(output_directory, filepath, all_files, header_include_dirs, stats, + hip_clang_launch, is_pytorch_extension, clean_ctx, show_progress) + + # Show what happened + if show_progress and "ignored" not in result.status: + print( + fin_path, "->", + result.hipified_path, result.status, flush=True) + + HIPIFY_FINAL_RESULT[fin_path] = result + + +def compute_stats(stats) -> None: + unsupported_calls = {cuda_call for (cuda_call, _filepath) in stats["unsupported_calls"]} + + # Print the number of unsupported calls + print(f"Total number of unsupported CUDA function calls: {len(unsupported_calls):d}") + + # Print the list of unsupported calls + print(", ".join(unsupported_calls)) + + # Print the number of kernel launches + print(f"\nTotal number of replaced kernel launches: {len(stats['kernel_launches']):d}") + + +def add_dim3(kernel_string, cuda_kernel): + '''adds dim3() to the second and third arguments in the kernel launch''' + count = 0 + closure = 0 + kernel_string = kernel_string.replace("<<<", "").replace(">>>", "") + arg_locs: list[dict[str, int]] = [{} for _ in range(2)] + arg_locs[count]['start'] = 0 + for ind, c in enumerate(kernel_string): + if count > 1: + break + if c == "(": + closure += 1 + elif c == ")": + closure -= 1 + if (c == "," or ind == len(kernel_string) - 1) and closure == 0: + arg_locs[count]['end'] = ind + (c != ",") + count += 1 + if count < 2: + arg_locs[count]['start'] = ind + 1 + + first_arg_raw = kernel_string[arg_locs[0]['start']:arg_locs[0]['end'] + 1] + second_arg_raw = kernel_string[arg_locs[1]['start']:arg_locs[1]['end']] + + first_arg_clean = kernel_string[arg_locs[0]['start']:arg_locs[0]['end']].replace("\n", "").strip(" ") + second_arg_clean = kernel_string[arg_locs[1]['start']:arg_locs[1]['end']].replace("\n", "").strip(" ") + + first_arg_dim3 = f"dim3({first_arg_clean})" + second_arg_dim3 = f"dim3({second_arg_clean})" + + first_arg_raw_dim3 = first_arg_raw.replace(first_arg_clean, first_arg_dim3) + second_arg_raw_dim3 = second_arg_raw.replace(second_arg_clean, second_arg_dim3) + cuda_kernel = cuda_kernel.replace(first_arg_raw + second_arg_raw, first_arg_raw_dim3 + second_arg_raw_dim3) + return cuda_kernel + + +RE_KERNEL_LAUNCH = re.compile(r'([ ]+)(detail?)::[ ]+\\\n[ ]+') + + +def processKernelLaunches(string, stats): + """ Replace the CUDA style Kernel launches with the HIP style kernel launches.""" + # Concat the namespace with the kernel names. (Find cleaner way of doing this later). + string = RE_KERNEL_LAUNCH.sub(lambda inp: f"{inp.group(1)}{inp.group(2)}::", string) + + def grab_method_and_template(in_kernel): + # The positions for relevant kernel components. + pos = { + "kernel_launch": {"start": in_kernel["start"], "end": in_kernel["end"]}, + "kernel_name": {"start": -1, "end": -1}, + "template": {"start": -1, "end": -1} + } + + # Count for balancing template + count = {"<>": 0} + + # Status for whether we are parsing a certain item. + START = 0 + AT_TEMPLATE = 1 + AFTER_TEMPLATE = 2 + AT_KERNEL_NAME = 3 + + status = START + + # Parse the string character by character + for i in range(pos["kernel_launch"]["start"] - 1, -1, -1): + char = string[i] + + # Handle Templating Arguments + if status in (START, AT_TEMPLATE): + if char == ">": + if status == START: + status = AT_TEMPLATE + pos["template"]["end"] = i + count["<>"] += 1 + + if char == "<": + count["<>"] -= 1 + if count["<>"] == 0 and (status == AT_TEMPLATE): + pos["template"]["start"] = i + status = AFTER_TEMPLATE + + # Handle Kernel Name + if status != AT_TEMPLATE: + if string[i].isalnum() or string[i] in {'(', ')', '_', ':', '#'}: + if status != AT_KERNEL_NAME: + status = AT_KERNEL_NAME + pos["kernel_name"]["end"] = i + + # Case: Kernel name starts the string. + if i == 0: + pos["kernel_name"]["start"] = 0 + + # Finished + return [(pos["kernel_name"]), (pos["template"]), (pos["kernel_launch"])] + + else: + # Potential ending point if we're already traversing a kernel's name. + if status == AT_KERNEL_NAME: + pos["kernel_name"]["start"] = i + + # Finished + return [(pos["kernel_name"]), (pos["template"]), (pos["kernel_launch"])] + + def find_kernel_bounds(string): + """Finds the starting and ending points for all kernel launches in the string.""" + kernel_end = 0 + kernel_positions = [] + + # Continue until we cannot find any more kernels anymore. + while string.find("<<<", kernel_end) != -1: + # Get kernel starting position (starting from the previous ending point) + kernel_start = string.find("<<<", kernel_end) + + # Get kernel ending position (adjust end point past the >>>) + kernel_end = string.find(">>>", kernel_start) + 3 + if kernel_end <= 0: + raise InputError("no kernel end found") + + # Add to list of traversed kernels + kernel_positions.append({"start": kernel_start, "end": kernel_end, + "group": string[kernel_start: kernel_end]}) + + return kernel_positions + + # Replace comments and string literals from the code so that find_kernel_bounds does not + # wrongly capture kernels in comments and string literals. + # This function replaces them with "x" to keep positions. + def mask_comments(string): + in_comment = '' + prev_c = '' + new_string = '' + for c in string: + if in_comment == '': + # Outside comments + if c == '/' and prev_c == '/': + in_comment = '//' + elif c == '*' and prev_c == '/': + in_comment = '/*' + elif c == '"' and prev_c != '\\' and prev_c != "'": + in_comment = '"' + elif in_comment == '//': + # In // xxx + if c == '\r' or c == '\n': + in_comment = '' + elif in_comment == '/*': + # In /* xxx */ + if c == '/' and prev_c == '*': + in_comment = '' + elif in_comment == '"': + # In "" + if c == '"' and prev_c != '\\': + in_comment = '' + prev_c = c + if in_comment == '': + new_string += c + else: + new_string += 'x' + return new_string + + # Grab positional ranges of all kernel launches + get_kernel_positions = list(find_kernel_bounds(mask_comments(string))) + output_string = string + + # Replace each CUDA kernel with a HIP kernel. + for kernel in get_kernel_positions: + # Get kernel components + params = grab_method_and_template(kernel) + + # Find parenthesis after kernel launch + parenthesis = string.find("(", kernel["end"]) + + # Extract cuda kernel + cuda_kernel = string[params[0]["start"]:parenthesis + 1] + kernel_string = string[kernel['start']:kernel['end']] + end_param_index = 0 if params[1]['end'] == -1 else 1 + kernel_name_with_template = string[params[0]['start']:params[end_param_index]['end'] + 1] + cuda_kernel_dim3 = add_dim3(kernel_string, cuda_kernel) + # Keep number of kernel launch params consistent (grid dims, group dims, stream, dynamic shared size) + num_klp = len(extract_arguments(0, kernel["group"].replace("<<<", "(").replace(">>>", ")"))) + + hip_kernel = "hipLaunchKernelGGL(" + cuda_kernel_dim3[0:-1].replace( + ">>>", ", 0" * (4 - num_klp) + ">>>").replace("<<<", ", ").replace( + ">>>", ", ").replace(kernel_name_with_template, "(" + kernel_name_with_template + ")") + + # Replace cuda kernel with hip kernel + output_string = output_string.replace(cuda_kernel, hip_kernel) + + # Update the statistics + stats["kernel_launches"].append(hip_kernel) + + return output_string + + +def find_closure_group(input_string, start, group): + """Generalization for finding a balancing closure group + + if group = ["(", ")"], then finds the first balanced parentheses. + if group = ["{", "}"], then finds the first balanced bracket. + + Given an input string, a starting position in the input string, and the group type, + find_closure_group returns the positions of group[0] and group[1] as a tuple. + + Example: + >>> find_closure_group("(hi)", 0, ["(", ")"]) + (0, 3) + """ + + inside_parenthesis = False + parens = 0 + pos = start + p_start, p_end = -1, -1 + + while pos < len(input_string): + if input_string[pos] == group[0]: + if inside_parenthesis is False: + inside_parenthesis = True + parens = 1 + p_start = pos + else: + parens += 1 + elif input_string[pos] == group[1] and inside_parenthesis: + parens -= 1 + + if parens == 0: + p_end = pos + return p_start, p_end + + pos += 1 + return None, None + + +def find_bracket_group(input_string, start): + """Finds the first balanced parentheses.""" + return find_closure_group(input_string, start, group=["{", "}"]) + + +def find_parentheses_group(input_string, start): + """Finds the first balanced bracket.""" + return find_closure_group(input_string, start, group=["(", ")"]) + + +RE_ASSERT = re.compile(r"\bassert[ ]*\(") + + +def replace_math_functions(input_string): + """FIXME: Temporarily replace std:: invocations of math functions + with non-std:: versions to prevent linker errors NOTE: This + can lead to correctness issues when running tests, since the + correct version of the math function (exp/expf) might not get + called. Plan is to remove this function once HIP supports + std:: math function calls inside device code + + """ + output_string = input_string + for func in MATH_TRANSPILATIONS: + output_string = output_string.replace(fr'{func}(', f'{MATH_TRANSPILATIONS[func]}(') + + return output_string + + +RE_SYNCTHREADS = re.compile(r":?:?\b(__syncthreads)\b(\w*\()") + + +def hip_header_magic(input_string): + """If the file makes kernel builtin calls and does not include the cuda_runtime.h header, + then automatically add an #include to match the "magic" includes provided by NVCC. + TODO: + Update logic to ignore cases where the cuda_runtime.h is included by another file. + """ + + # Copy the input. + output_string = input_string + + # Check if one of the following headers is already included. + headers = ["hip/hip_runtime.h", "hip/hip_runtime_api.h"] + if any(re.search(fr'#include ("{ext}"|<{ext}>)', output_string) for ext in headers): + return output_string + + # Rough logic to detect if we're inside device code + hasDeviceLogic: int + hasDeviceLogic = "hipLaunchKernelGGL" in output_string + hasDeviceLogic += "__global__" in output_string + hasDeviceLogic += "__shared__" in output_string + hasDeviceLogic += RE_SYNCTHREADS.search(output_string) is not None + + # If device logic found, provide the necessary header. + if hasDeviceLogic: + output_string = '#include "hip/hip_runtime.h"\n' + input_string + + return output_string + + +RE_EXTERN_SHARED = re.compile(r"extern\s+([\w\(\)]+)?\s*__shared__\s+([\w:<>\s]+)\s+(\w+)\s*\[\s*\]\s*;") + + +def replace_extern_shared(input_string): + """ + Match 'extern __shared__ type foo[];' syntax and use HIP_DYNAMIC_SHARED() MACRO instead. + See: https://github.com/ROCm/hip/blob/master/docs/markdown/hip_kernel_language.md#__shared__ + Examples: + "extern __shared__ char smemChar[];" + => "HIP_DYNAMIC_SHARED( char, smemChar)" + "extern __shared__ unsigned char smem[];" + => "HIP_DYNAMIC_SHARED( unsigned char, my_smem)" + """ + output_string = input_string + output_string = RE_EXTERN_SHARED.sub( + lambda inp: f"HIP_DYNAMIC_SHARED({inp.group(1) or ''} {inp.group(2)}, {inp.group(3)})", output_string) + + return output_string + + +def get_hip_file_path(rel_filepath, is_pytorch_extension=False): + """ + Returns the new name of the hipified file + """ + # At the moment, some PyTorch source files are HIPified in place. The predicate + # is_out_of_place tells us if this is the case or not. + if os.path.isabs(rel_filepath): + raise AssertionError("rel_filepath must be a relative path") + if not is_pytorch_extension and not is_out_of_place(rel_filepath): + return rel_filepath + + dirpath, filename = os.path.split(rel_filepath) + root, ext = os.path.splitext(filename) + + # Here's the plan: + # + # In general, we need to disambiguate the HIPified filename so that + # it gets a different name from the original filename, so + # that we don't overwrite the original file + # + # There's a lot of different naming conventions across PyTorch, + # but the general recipe is to convert occurrences + # of cuda/gpu to hip, and add hip if there are no occurrences + # of cuda/gpu anywhere. + # + # Concretely, we do the following: + # + # - If there is a directory component named "cuda", replace + # it with "hip", AND + # + # - If the file name contains "CUDA", replace it with "HIP", AND + # + # - ALWAYS replace '.cu' with '.hip', because those files + # contain CUDA kernels that needs to be hipified and processed with + # hip compiler + # + # - If we are not hipifying a PyTorch extension, and the parent + # directory name did not change as a result of the above + # transformations, insert "hip" in the file path + # as the direct parent folder of the file + # + # - If we are hipifying a PyTorch extension, and the parent directory + # name as well as the filename (incl. extension) did not change as + # a result of the above transformations, insert "_hip" in the filename + # + # This isn't set in stone; we might adjust this to support other + # naming conventions. + + if ext == '.cu': + ext = '.hip' + + orig_filename = filename + orig_dirpath = dirpath + + dirpath = dirpath.replace('cuda', 'hip') + dirpath = dirpath.replace('CUDA', 'HIP') + dirpath = dirpath.replace('THC', 'THH') + + root = root.replace('cuda', 'hip') + root = root.replace('CUDA', 'HIP') + # Special case to handle caffe2/core/THCCachingAllocator + if dirpath != "caffe2/core": + root = root.replace('THC', 'THH') + + if not is_pytorch_extension and dirpath == orig_dirpath: + dirpath = os.path.join(dirpath, 'hip') + + if is_pytorch_extension and dirpath == orig_dirpath and (root + ext) == orig_filename: + root = root + "_hip" + + return os.path.join(dirpath, root + ext) + + +def is_out_of_place(rel_filepath) -> bool: + if os.path.isabs(rel_filepath): + raise AssertionError("rel_filepath must be a relative path") + if rel_filepath.startswith("torch/"): + return False + if rel_filepath.startswith("third_party/nvfuser/"): + return False + if rel_filepath.startswith("tools/autograd/templates/"): + return False + return True + + +# Keep this synchronized with includes/ignores in build_amd.py +def is_pytorch_file(rel_filepath) -> bool: + _deprecated("is_pytorch_file") + if os.path.isabs(rel_filepath): + raise AssertionError("rel_filepath must be a relative path") + if rel_filepath.startswith("aten/"): + if rel_filepath.startswith("aten/src/ATen/core/"): + return False + return True + if rel_filepath.startswith("torch/"): + return True + if rel_filepath.startswith("third_party/nvfuser/"): + return True + if rel_filepath.startswith("third_party/fbgemm/"): + return True + if rel_filepath.startswith("third_party/mslk/"): + return True + if rel_filepath.startswith("tools/autograd/templates/"): + return True + if rel_filepath.startswith("test/cpp/c10d/"): + return True + return False + + +def is_cusparse_file(rel_filepath): + _deprecated("is_cusparse_file") + if is_pytorch_file(rel_filepath): + return "sparse" in rel_filepath.lower() + return False + + +def is_special_file(rel_filepath) -> bool: + _deprecated("is_special_file") + if is_pytorch_file(rel_filepath): + if "sparse" in rel_filepath.lower(): + return True + elif "linalg" in rel_filepath.lower(): + if "batchlinearalgebralibblas" in rel_filepath.lower(): + return False # don't use "special" mappings for this specific linalg cublas file + return True + return False + + +def is_caffe2_gpu_file(rel_filepath): + _deprecated("is_caffe2_gpu_file") + if os.path.isabs(rel_filepath): + raise AssertionError("rel_filepath must be a relative path") + if rel_filepath.startswith("c10/cuda"): + return True + filename = os.path.basename(rel_filepath) + _, ext = os.path.splitext(filename) + + return ('gpu' in filename or ext in ['.cu', '.cuh']) and ('cudnn' not in filename) + + +class TrieNode: + """A Trie node whose children are represented as a directory of char: TrieNode. + A special char '' represents end of word + """ + + def __init__(self) -> None: + self.children = {} + + +class Trie: + """Creates a Trie out of a list of words. The trie can be exported to a Regex pattern. + The corresponding Regex should match much faster than a simple Regex union.""" + + def __init__(self) -> None: + """Initialize the trie with an empty root node.""" + self.root = TrieNode() + self._hash = hashlib.md5(usedforsecurity=False) + self._digest = self._hash.digest() + + def add(self, word) -> None: + """Add a word to the Trie. """ + self._hash.update(word.encode()) + self._digest = self._hash.digest() + node = self.root + + for char in word: + node.children.setdefault(char, TrieNode()) + node = node.children[char] + node.children[''] = True # Mark the end of the word + + def dump(self): + """Return the root node of Trie. """ + return self.root + + def quote(self, char): + """ Escape a char for regex. """ + return re.escape(char) + + def search(self, word): + """Search whether word is present in the Trie. + Returns True if yes, else return False""" + node = self.root + for char in word: + if char in node.children: + node = node.children[char] + else: + return False + + # make sure to check the end-of-word marker present + return '' in node.children + + @functools.lru_cache # noqa: B019 + def _pattern(self, root, digest): + """Convert a Trie into a regular expression pattern + + Memoized on the hash digest of the trie, which is built incrementally + during add(). + """ + node = root + + if "" in node.children and len(node.children.keys()) == 1: + return None + + alt = [] # store alternative patterns + cc = [] # store char to char classes + q = 0 # for node representing the end of word + for char in sorted(node.children.keys()): + if isinstance(node.children[char], TrieNode): + try: + recurse = self._pattern(node.children[char], self._digest) + alt.append(self.quote(char) + recurse) + except Exception: + cc.append(self.quote(char)) + else: + q = 1 + cconly = not len(alt) > 0 + + if len(cc) > 0: + if len(cc) == 1: + alt.append(cc[0]) + else: + alt.append('[' + ''.join(cc) + ']') + + if len(alt) == 1: + result = alt[0] + else: + result = "(?:" + "|".join(alt) + ")" + + if q: + if cconly: + result += "?" + else: + result = f"(?:{result})?" + return result + + def pattern(self): + """Export the Trie to a regex pattern.""" + return self._pattern(self.root, self._digest) + + def export_to_regex(self): + """Export the Trie to a regex pattern.""" + return self._pattern(self.root, self._digest) + +PYTORCH_TRIE = Trie() +PYTORCH_MAP: dict[str, object] = {} + +for mapping in CUDA_TO_HIP_MAPPINGS: + if not isinstance(mapping, Mapping): + raise TypeError("Expected each mapping in CUDA_TO_HIP_MAPPINGS to be a Mapping") + for src, dst in mapping.items(): + PYTORCH_TRIE.add(src) + PYTORCH_MAP[src] = dst + +RE_PYTORCH_PREPROCESSOR = re.compile(fr'(?<=\W)({PYTORCH_TRIE.export_to_regex()})(?=\W)') + +RE_QUOTE_HEADER = re.compile(r'#include "([^"]+)"') +RE_ANGLE_HEADER = re.compile(r'#include <([^>]+)>') +RE_THC_GENERIC_FILE = re.compile(r'#define THC_GENERIC_FILE "([^"]+)"') +RE_CU_SUFFIX = re.compile(r'\.cu\b') # be careful not to pick up .cuh + +""" +Returns a HipifyResult object with the following details: + "hipified_path" : absolute path of hipified source file + "status" : "ok" if hipified file was written out + "skipped" if an identical hipified file already existed or hipified file couldn't be written out + "ignored" if the source file was a hipified file itself or not meant to be hipified + "current_state" : CurrentState.INITIALIZED if source file is first ready to be hipified + CurrentState.DONE if source file is done with hipification process +""" + + +def preprocessor( + output_directory: str, + filepath: str, + all_files: Iterable, + header_include_dirs: Iterable, + stats: dict[str, list], + hip_clang_launch: bool, + is_pytorch_extension: bool, + clean_ctx: GeneratedFileCleaner, + show_progress: bool) -> HipifyResult: + """ Executes the CUDA -> HIP conversion on the specified file. """ + fin_path = os.path.abspath(os.path.join(output_directory, filepath)) + filepath = _to_unix_path(filepath) + hipify_result = HIPIFY_FINAL_RESULT[fin_path] + if filepath not in all_files: + hipify_result.hipified_path = None + hipify_result.status = "[ignored, not to be hipified]" + hipify_result.current_state = CurrentState.DONE + return hipify_result + + rel_filepath = _to_unix_path(os.path.relpath(filepath, output_directory)) + + with open(fin_path, encoding='utf-8') as fin: + if fin.readline() == HIPIFY_C_BREADCRUMB: + hipify_result.hipified_path = None + hipify_result.status = "[ignored, input is hipified output]" + hipify_result.current_state = CurrentState.DONE + return hipify_result + fin.seek(0) + output_source = fin.read() + + orig_output_source = output_source + + # get_hip_file_path needs a relative path to work correctly + fout_path = os.path.abspath(os.path.join(output_directory, get_hip_file_path(rel_filepath, is_pytorch_extension))) + if not os.path.exists(os.path.dirname(fout_path)): + clean_ctx.makedirs(os.path.dirname(fout_path)) + + # unsupported_calls statistics reporting is broken atm + def pt_repl(m): + return PYTORCH_MAP[m.group(0)] + + output_source = RE_PYTORCH_PREPROCESSOR.sub(pt_repl, output_source) + + # TODO: Remove CAFFE2_PATH_MAPPINGS. They were necessary for Meta-internal builds. + # Apply CAFFE2 path mappings (simple string replacement for paths containing slashes) + # Need to be careful to avoid double-transformations when source file has #ifdef blocks + # with HIP-specific paths already in them (e.g., caffe2/core/hip/context_gpu.h) + for cuda_path, hip_path in CAFFE2_PATH_MAPPINGS.items(): + # Use regex to ensure we don't match paths that already have been hipified + # We need to avoid transforming "caffe2/core/hip/context_gpu.h" when looking for "caffe2/core/context_gpu.h" + # The key insight: if hip_path contains /hip/ and cuda_path doesn't, we need to be careful + if "/hip/" in hip_path and "/hip/" not in cuda_path: + # Only replace cuda_path if it's not preceded by "/hip/" + # Use negative lookbehind to prevent matching already-hipified paths + # The pattern checks that the cuda_path is not immediately preceded by "/hip/" + pattern = r'(?', False), output_source) + output_source = RE_THC_GENERIC_FILE.sub(mk_repl('#define THC_GENERIC_FILE "{0}"'), output_source) + + # CMakeLists.txt rewrites + if filepath.endswith('CMakeLists.txt'): + output_source = output_source.replace('CUDA', 'HIP') + output_source = output_source.replace('THC', 'THH') + output_source = RE_CU_SUFFIX.sub('.hip', output_source) + + # Perform Kernel Launch Replacements + if not hip_clang_launch: + output_source = processKernelLaunches(output_source, stats) + + # Replace std:: with non-std:: versions + if (filepath.endswith((".cu", ".cuh"))) and "PowKernel" not in filepath: + output_source = replace_math_functions(output_source) + + # Include header if device code is contained. + output_source = hip_header_magic(output_source) + + # Replace the extern __shared__ + # NOTE: No longer needed after transition from hcc to hipclang. + # output_source = replace_extern_shared(output_source) + + # Don't write out identical hipified files for extensions if dirpath has not changed + if ( + is_pytorch_extension + and orig_output_source == output_source + and os.path.dirname(fin_path) == os.path.dirname(fout_path) + ): + hipify_result.hipified_path = fin_path + hipify_result.status = "[skipped, no changes]" + hipify_result.current_state = CurrentState.DONE + return hipify_result + + # Add hipify breadcrumb for C-style files to avoid re-hipification + if fin_path != fout_path and match_extensions(fin_path, (".cu", ".cuh", ".c", ".cc", ".cpp", ".h", ".hpp")): + output_source = HIPIFY_C_BREADCRUMB + output_source + + do_write = True + if os.path.exists(fout_path): + with open(fout_path, encoding='utf-8') as fout_old: + do_write = fout_old.read() != output_source + if do_write: + try: + with clean_ctx.open(fout_path, 'w', encoding='utf-8') as fout: + fout.write(output_source) + hipify_result.hipified_path = fout_path + hipify_result.status = "[ok]" + hipify_result.current_state = CurrentState.DONE + return hipify_result + except OSError as e: + print(f'{bcolors.WARNING}Failed to save {fout_path} with "{e.strerror}", leaving {fin_path} unchanged.{bcolors.ENDC}', + file=sys.stderr) + hipify_result.hipified_path = fin_path + hipify_result.status = "[skipped, no permissions]" + hipify_result.current_state = CurrentState.DONE + return hipify_result + else: + hipify_result.hipified_path = fout_path + hipify_result.status = "[skipped, already hipified]" + hipify_result.current_state = CurrentState.DONE + return hipify_result + +def file_specific_replacement(filepath, search_string, replace_string, strict=False) -> None: + with openf(filepath, "r+") as f: + contents = f.read() + if strict: + contents = re.sub(fr'\b({re.escape(search_string)})\b', lambda x: replace_string, contents) + else: + contents = contents.replace(search_string, replace_string) + f.seek(0) + f.write(contents) + f.truncate() + + +def file_add_header(filepath, header) -> None: + with openf(filepath, "r+") as f: + contents = f.read() + if header[0] != "<" and header[-1] != ">": + header = f'"{header}"' + contents = (f'#include {header} \n') + contents + f.seek(0) + f.write(contents) + f.truncate() + + +def fix_static_global_kernels(in_txt): + """Static global kernels in HIP results in a compilation error.""" + in_txt = in_txt.replace(" __global__ static", "__global__") + return in_txt + + +RE_INCLUDE = re.compile(r"#include .*\n") + + +def extract_arguments(start, string): + """ + Return the list of arguments in the upcoming function parameter closure. + Example: + string (input): '(blocks, threads, 0, THCState_getCurrentStream(state))' + arguments (output): [{'start': 1, 'end': 7}, {'start': 8, 'end': 16}, \ + {'start': 17, 'end': 19}, {'start': 20, 'end': 53}] + """ + + arguments = [] + closures = { + "<": 0, + "(": 0 + } + current_position = start + argument_start_pos = current_position + 1 + + # Search for final parenthesis + while current_position < len(string): + if string[current_position] == "(": + closures["("] += 1 + elif string[current_position] == ")": + closures["("] -= 1 + elif string[current_position] == "<": + closures["<"] += 1 + elif string[current_position] == ">" and string[current_position - 1] != "-" and closures["<"] > 0: + closures["<"] -= 1 + + # Finished all arguments + if closures["("] == 0 and closures["<"] == 0: + # Add final argument + arguments.append({"start": argument_start_pos, "end": current_position}) + break + + # Finished current argument + if closures["("] == 1 and closures["<"] == 0 and string[current_position] == ",": + arguments.append({"start": argument_start_pos, "end": current_position}) + argument_start_pos = current_position + 1 + + current_position += 1 + + return arguments + + +def str2bool(v : str) -> bool: + """ArgumentParser doesn't support type=bool. Thus, this helper method will convert + from possible string types to True / False.""" + if v.lower() in ('yes', 'true', 't', 'y', '1'): + return True + elif v.lower() in ('no', 'false', 'f', 'n', '0'): + return False + else: + raise argparse.ArgumentTypeError('Boolean value expected.') + + +def hipify( + project_directory: str, + show_detailed: bool = False, + extensions: Iterable = (".cu", ".cuh", ".c", ".cc", ".cpp", ".h", ".in", ".hpp"), + header_extensions: Iterable = (".cuh", ".h", ".hpp"), + output_directory: str = "", + header_include_dirs: Iterable = (), + includes: Iterable = ('*',), + extra_files: Iterable = (), + out_of_place_only: bool = False, + ignores: Iterable = (), + show_progress: bool = True, + hip_clang_launch: bool = False, + is_pytorch_extension: bool = False, + hipify_extra_files_only: bool = False, + clean_ctx: GeneratedFileCleaner | None = None +) -> HipifyFinalResult: + if project_directory == "": + project_directory = os.getcwd() + + # Verify the project directory exists. + if not os.path.exists(project_directory): + print("The project folder specified does not exist.") + sys.exit(1) + + # If no output directory, provide a default one. + if not output_directory: + project_directory.rstrip("/") + output_directory = project_directory + "_amd" + + if project_directory != output_directory: + includes = [include.replace(project_directory, output_directory) for include in includes] + ignores = [ignore.replace(project_directory, output_directory) for ignore in ignores] + + # Copy from project directory to output directory if not done already. + if not os.path.exists(output_directory): + shutil.copytree(project_directory, output_directory) + + includes = list(map(_to_unix_path, includes)) + ignores = list(map(_to_unix_path, ignores)) + + all_files = list(matched_files_iter(output_directory, includes=includes, + ignores=ignores, extensions=extensions, + out_of_place_only=out_of_place_only, + is_pytorch_extension=is_pytorch_extension)) + all_files_set = set(all_files) + + for f in extra_files: + if not os.path.isabs(f): + f = os.path.join(output_directory, f) + if f not in all_files_set: + all_files.append(f) + + # List all files in header_include_paths to ensure they are hipified + from pathlib import Path + for header_include_dir in header_include_dirs: + if os.path.isabs(header_include_dir): + header_include_dir_path = Path(header_include_dir) + else: + header_include_dir_path = Path(os.path.join(output_directory, header_include_dir)) + all_files.extend( + str(path) for path in header_include_dir_path.rglob('*') if path.is_file() + and _fnmatch(str(path), includes) + and (not _fnmatch(str(path), ignores)) + and match_extensions(path.name, header_extensions) + ) + + if clean_ctx is None: + clean_ctx = GeneratedFileCleaner(keep_intermediates=True) + + # Preprocessing statistics. + stats: dict[str, list] = {"unsupported_calls": [], "kernel_launches": []} + + for filepath in (all_files if not hipify_extra_files_only else extra_files): + preprocess_file_and_save_result(output_directory, filepath, all_files, header_include_dirs, + stats, hip_clang_launch, is_pytorch_extension, clean_ctx, show_progress) + + print(bcolors.OKGREEN + "Successfully preprocessed all matching files." + bcolors.ENDC, file=sys.stderr) + + # Show detailed summary + if show_detailed: + compute_stats(stats) + + return HIPIFY_FINAL_RESULT diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/hipify/version.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/hipify/version.py new file mode 100644 index 0000000000000000000000000000000000000000..afced14728f75ce3cd253465517ccc1032a62309 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/hipify/version.py @@ -0,0 +1 @@ +__version__ = '2.0.0' diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/hooks.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/hooks.py new file mode 100644 index 0000000000000000000000000000000000000000..1e3f6fb9ab09d755e9ed2154f91bb1184395d61c --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/hooks.py @@ -0,0 +1,257 @@ +# mypy: allow-untyped-defs +import torch +from collections import OrderedDict +import weakref +import warnings +from typing import Any + +__all__ = ["RemovableHandle", "unserializable_hook", "warn_if_has_hooks", "BackwardHook"] + +class RemovableHandle: + r""" + A handle which provides the capability to remove a hook. + + Args: + hooks_dict (dict): A dictionary of hooks, indexed by hook ``id``. + extra_dict (Union[dict, List[dict]]): An additional dictionary or list of + dictionaries whose keys will be deleted when the same keys are + removed from ``hooks_dict``. + """ + + id: int + next_id: int = 0 + + def __init__(self, hooks_dict: Any, *, extra_dict: Any = None) -> None: + self.hooks_dict_ref = weakref.ref(hooks_dict) + self.id = RemovableHandle.next_id + RemovableHandle.next_id += 1 + + self.extra_dict_ref: tuple = () + if isinstance(extra_dict, dict): + self.extra_dict_ref = (weakref.ref(extra_dict),) + elif isinstance(extra_dict, list): + self.extra_dict_ref = tuple(weakref.ref(d) for d in extra_dict) + + def remove(self) -> None: + hooks_dict = self.hooks_dict_ref() + if hooks_dict is not None and self.id in hooks_dict: + del hooks_dict[self.id] + + for ref in self.extra_dict_ref: + extra_dict = ref() + if extra_dict is not None and self.id in extra_dict: + del extra_dict[self.id] + + def __getstate__(self): + if self.extra_dict_ref is None: + return (self.hooks_dict_ref(), self.id) + else: + return (self.hooks_dict_ref(), self.id, tuple(ref() for ref in self.extra_dict_ref)) + + def __setstate__(self, state) -> None: + if state[0] is None: + # create a dead reference + self.hooks_dict_ref = weakref.ref(OrderedDict()) + else: + self.hooks_dict_ref = weakref.ref(state[0]) + self.id = state[1] + RemovableHandle.next_id = max(RemovableHandle.next_id, self.id + 1) + + if len(state) < 3 or state[2] is None: + self.extra_dict_ref = () + else: + self.extra_dict_ref = tuple(weakref.ref(d) for d in state[2]) + + def __enter__(self) -> "RemovableHandle": + return self + + def __exit__(self, type: Any, value: Any, tb: Any) -> None: + self.remove() + + +def unserializable_hook(f): + """ + Mark a function as an unserializable hook with this decorator. + + This suppresses warnings that would otherwise arise if you attempt + to serialize a tensor that has a hook. + """ + f.__torch_unserializable__ = True + return f + + +def warn_if_has_hooks(tensor) -> None: + if tensor._backward_hooks: + for k in tensor._backward_hooks: + hook = tensor._backward_hooks[k] + if not hasattr(hook, "__torch_unserializable__"): + warnings.warn(f"backward hook {repr(hook)} on tensor will not be " + "serialized. If this is expected, you can " + "decorate the function with @torch.utils.hooks.unserializable_hook " + "to suppress this warning", stacklevel=2) + +class BackwardHook: + """ + A wrapper class to implement nn.Module backward hooks. + + It handles: + - Ignoring non-Tensor inputs and replacing them by None before calling the user hook + - Generating the proper Node to capture a set of Tensor's gradients + - Linking the gradients captures for the outputs with the gradients captured for the input + - Calling the user hook once both output and input gradients are available + """ + + def __init__(self, module, user_hooks, user_pre_hooks) -> None: + self.user_hooks = user_hooks + self.user_pre_hooks = user_pre_hooks + self.module = module + + self.grad_outputs = None + self.n_outputs = -1 + self.output_tensors_index = None + self.n_inputs = -1 + self.input_tensors_index = None + + def _pack_with_none(self, indices, values, size): + res = [None] * size + for idx, val in zip(indices, values, strict=True): + res[idx] = val + + return tuple(res) + + def _unpack_none(self, indices, values): + res = [values[idx] for idx in indices] + + return tuple(res) + + def _set_user_hook(self, grad_fn) -> None: + def hook(grad_input, _): + if self.grad_outputs is None: + # This happens because the gradient in your nn.Module flows to + # the Module's input without " passing through the Module's + # output, e.g. when you're doing double backward. + return + res = self._pack_with_none(self.input_tensors_index, grad_input, self.n_inputs) + + for hook in self.user_hooks: + out = hook(self.module, res, self.grad_outputs) + + if out is None: + continue + + if len(out) != len(res): + raise RuntimeError("Backward hook returned an invalid number of grad_input, " + f"got {len(out)}, but expected {len(res)}") + + res = out + + self.grad_outputs = None + + return self._unpack_none(self.input_tensors_index, res) + + grad_fn.register_hook(hook) + + def _apply_on_tensors(self, fn, args): + # Can be used to apply the given function to the tensors contained in the + # args. Will return updated args and the tensors indices + tensors_idx = [] + tensors = [] + + requires_grad = False + for i, arg in enumerate(args): + if isinstance(arg, torch.Tensor): + tensors_idx.append(i) + tensors.append(arg) + requires_grad |= arg.requires_grad + + if not (requires_grad and torch.is_grad_enabled()): + return args, None + + new_tensors = torch.nn.modules._functions.BackwardHookFunction.apply(*tensors) + if len(new_tensors) == 0: + raise RuntimeError("Cannot set Module backward hook for a Module with no input Tensors.") + + grad_fns = [t.grad_fn for t in new_tensors if t.grad_fn is not None and t.grad_fn.name() == "BackwardHookFunctionBackward"] + if len(grad_fns) == 0: + raise RuntimeError("Error while setting up backward hooks. Please open " + "an issue with a code sample to reproduce this.") + + fn(grad_fns[0]) + + arg_list = list(args) + for idx, val in zip(tensors_idx, new_tensors, strict=True): + arg_list[idx] = val + + if type(args) is tuple: + out = tuple(arg_list) + else: + out = type(args)(*arg_list) + return out, tensors_idx + + def setup_input_hook(self, args): + def fn(grad_fn) -> None: + self._set_user_hook(grad_fn) + + res, input_idx = self._apply_on_tensors(fn, args) + self.n_inputs = len(args) + self.input_tensors_index = input_idx + return res + + def setup_output_hook(self, args): + def fn(grad_fn) -> None: + def hook(_, grad_output): + self.grad_outputs = self._pack_with_none(self.output_tensors_index, + grad_output, + self.n_outputs) + + if self.user_pre_hooks: + expected_len = len(self.grad_outputs) + for user_pre_hook in self.user_pre_hooks: + hook_grad_outputs = user_pre_hook(self.module, self.grad_outputs) + if hook_grad_outputs is None: + continue + + actual_len = len(hook_grad_outputs) + if actual_len != expected_len: + raise RuntimeError("Backward pre hook returned an invalid number of grad_output, " + f"got {actual_len}, but expected {expected_len}") + self.grad_outputs = hook_grad_outputs + + # We need to be able to clear self.grad_outputs but also return it + local_grad_outputs = self.grad_outputs + + # Special case if no input required gradients, this hook should call the user + # hook directly + if self.input_tensors_index is None: + warnings.warn("Full backward hook is firing when gradients are computed " + "with respect to module outputs since no inputs require gradients. See " + "https://docs.pytorch.org/docs/main/generated/torch.nn.Module.html#torch.nn.Module.register_full_backward_hook " # noqa: B950 + "for more details.", + stacklevel=5) + grad_inputs = self._pack_with_none([], [], self.n_inputs) + for user_hook in self.user_hooks: + res = user_hook(self.module, grad_inputs, self.grad_outputs) + if res is not None and not (isinstance(res, tuple) and all(el is None for el in res)): + raise RuntimeError("Backward hook for Modules where no input requires " + "gradient should always return None or None for all gradients.") + self.grad_outputs = None + + if local_grad_outputs is not None: + if self.output_tensors_index is None: + raise AssertionError("output_tensors_index should not be None when grad_outputs is not None") + return tuple(local_grad_outputs[i] for i in self.output_tensors_index) + + grad_fn.register_hook(hook) + + is_tuple = True + if not isinstance(args, tuple): + args = (args,) + is_tuple = False + + res, output_idx = self._apply_on_tensors(fn, args) + self.n_outputs = len(args) + self.output_tensors_index = output_idx + + if not is_tuple: + res = res[0] + return res diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/jit/__init__.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/jit/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/jit/log_extract.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/jit/log_extract.py new file mode 100644 index 0000000000000000000000000000000000000000..9e018457802f4aafd05ba6a8d10ef1c4953b1047 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/jit/log_extract.py @@ -0,0 +1,118 @@ +# mypy: allow-untyped-defs +from contextlib import contextmanager +from typing import Any, cast +import random +import torch +import time +from torch.utils.benchmark import Timer + +def extract_ir(filename: str) -> list[str]: + BEGIN = "" + END = "" + pfx = None + graphs = [] + with open(filename) as f: + split_strs = f.read().split(BEGIN) + for i, split_str in enumerate(split_strs): + if i == 0: + continue + end_loc = split_str.find(END) + if end_loc == -1: + continue + s = split_str[:end_loc] + pfx = split_strs[i - 1].splitlines()[-1] + lines = [x[len(pfx):] for x in s.splitlines(keepends=True)] + graphs.append(''.join(lines)) + + return graphs + + +def make_tensor_from_type(inp_type: torch._C.TensorType): + size = inp_type.sizes() + stride = inp_type.strides() + device = inp_type.device() + dtype = inp_type.dtype() + if size is None: + raise AssertionError("make_tensor_from_type: 'size' is None (inp_type.sizes() returned None)") + if stride is None: + raise AssertionError("make_tensor_from_type: 'stride' is None (inp_type.strides() returned None)") + if device is None: + raise AssertionError("make_tensor_from_type: 'device' is None (inp_type.device() returned None)") + if dtype is None: + raise AssertionError("make_tensor_from_type: 'dtype' is None (inp_type.dtype() returned None)") + return torch.empty_strided(size=size, stride=stride, device=device, dtype=dtype) + +def load_graph_and_inputs(ir: str) -> tuple[Any, list[Any]]: + graph = torch._C.parse_ir(ir, parse_tensor_constants=True) + graph.makeMultiOutputIntoTuple() + inputs = [] + for inp in graph.inputs(): + if isinstance(inp.type(), torch._C.FloatType): + inputs.append(random.uniform(.1, 100)) + elif isinstance(inp.type(), torch._C.IntType): + inputs.append(random.randint(1, 100)) + elif isinstance(inp.type(), torch._C.TensorType): + tensorType = cast(torch._C.TensorType, inp.type()) + inputs.append(make_tensor_from_type(tensorType)) + elif isinstance(inp.type(), torch._C.BoolType): + inputs.append(random.randint(0, 1) == 1) + else: + raise NotImplementedError(f"A default value is not implemented for type {inp.type()}") + + func = torch._C._create_function_from_graph("forward", graph) + torch._C._jit_pass_erase_shape_information(func.graph) + return (func, inputs) + +def time_cuda(fn, inputs, test_runs): + t = Timer(stmt="fn(*inputs)", globals={"fn": fn, "inputs" : inputs}) + times = t.blocked_autorange() + return times.median * 1000 # time in ms + +def time_cpu(fn, inputs, test_runs): + s = time.perf_counter() + for _ in range(test_runs): + fn(*inputs) + e = time.perf_counter() + return (e - s) / test_runs * 1000 # time in ms + +def run_test(ir, inputs, *, warmup_runs=10, test_runs=20) -> float: + graph, _ = load_graph_and_inputs(ir) + for _ in range(warmup_runs): + graph(*inputs) + + is_cpu = None + for input in inputs: + if isinstance(input, torch.Tensor): + is_cpu = input.device.type == "cpu" + break + if is_cpu is None: + raise AssertionError("No tensor found in inputs") + + out = time_cpu(graph, inputs, test_runs) if is_cpu else time_cuda(graph, inputs, test_runs) + return out + +@contextmanager +def no_fuser(*args, **kwargs): + old_optimize = torch._C._get_graph_executor_optimize(False) + try: + yield + finally: + torch._C._get_graph_executor_optimize(old_optimize) + +def run_baseline_no_fusion(ir, inputs) -> float: + with no_fuser(): + return run_test(ir, inputs) + + +def run_nnc(ir, inputs, dynamic) -> float: + try: + strat = [("DYNAMIC", 10)] if dynamic else [("STATIC", 10)] + old_strat = torch.jit.set_fusion_strategy(strat) + with torch.jit.fuser("fuser1"): + return run_test(ir, inputs) + finally: + torch.jit.set_fusion_strategy(old_strat) + +def run_nvfuser(ir, inputs) -> float: + with torch.jit.fuser("fuser2"): + return run_test(ir, inputs) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/mkldnn.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/mkldnn.py new file mode 100644 index 0000000000000000000000000000000000000000..11bb4e442b2960a601c3c6c66c5e326ac3c9c166 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/mkldnn.py @@ -0,0 +1,238 @@ +# mypy: allow-untyped-defs +import torch + + +class MkldnnLinear(torch.jit.ScriptModule): + def __init__(self, dense_module, dtype) -> None: + super().__init__() + self.register_buffer('weight', dense_module.weight.to_mkldnn(dtype)) + if dense_module.bias is not None: + # Bias can be fp32 or bf16 for OneDNN bf16 path, but for good accuracy, + # we use fp32 dtype. + self.register_buffer('bias', dense_module.bias.to_mkldnn()) + else: + # TODO: Remove this once ScriptModule supports registering None buffer + self.register_buffer( + 'bias', + torch.zeros([dense_module.weight.size(0)], dtype=torch.float).to_mkldnn()) + + @torch.jit.script_method + def __getstate__(self): + return (self.weight.to_dense(), self.bias.to_dense(), self.training) + + @torch.jit.script_method + def __setstate__(self, state): + self.weight = state[0].to_mkldnn() + self.bias = state[1].to_mkldnn() + self.training = state[2] + + @torch.jit.script_method + def forward(self, x): + x_mkldnn = x if x.is_mkldnn else x.to_mkldnn() + y_mkldnn = torch._C._nn.mkldnn_linear(x_mkldnn, self.weight, self.bias) + y = y_mkldnn if x.is_mkldnn else y_mkldnn.to_dense() + return y + + +class _MkldnnConvNd(torch.jit.ScriptModule): + """Common base of MkldnnConv1d and MkldnnConv2d.""" + + __constants__ = ['stride', 'padding', 'dilation', 'groups'] + + def __init__(self, dense_module) -> None: + super().__init__() + + self.stride = dense_module.stride + self.padding = dense_module.padding + self.dilation = dense_module.dilation + self.groups = dense_module.groups + + if dense_module.bias is not None: + self.register_buffer('bias', dense_module.bias.to_mkldnn()) + else: + # Bias can be fp32 or bf16 for OneDNN bf16 path, but for good accuracy, + # we use fp32 dtype. + # TODO: Remove this once ScriptModule supports registering None buffer + self.register_buffer( + 'bias', + torch.zeros([dense_module.weight.size(0)], dtype=torch.float).to_mkldnn()) + + @torch.jit.script_method + def __getstate__(self): + return (self.weight.to_dense(), self.bias.to_dense(), self.training) + + @torch.jit.script_method + def forward(self, x): + return torch.mkldnn_convolution( + x, + self.weight, + self.bias, + self.padding, + self.stride, + self.dilation, + self.groups) + + +class MkldnnConv1d(_MkldnnConvNd): + def __init__(self, dense_module, dtype) -> None: + super().__init__(dense_module) + + self.register_buffer('weight', dense_module.weight.to_mkldnn(dtype)) + + @torch.jit.script_method + def __setstate__(self, state): + self.weight = state[0].to_mkldnn() + self.bias = state[1].to_mkldnn() + self.training = state[2] + + +class MkldnnConv2d(_MkldnnConvNd): + def __init__(self, dense_module, dtype) -> None: + super().__init__(dense_module) + + self.register_buffer('weight', torch._C._nn.mkldnn_reorder_conv2d_weight( + dense_module.weight.to_mkldnn(dtype), + self.padding, + self.stride, + self.dilation, + self.groups)) + + @torch.jit.script_method + def __setstate__(self, state): + self.weight = torch._C._nn.mkldnn_reorder_conv2d_weight( + state[0].to_mkldnn(), + self.padding, + self.stride, + self.dilation, + self.groups) + self.bias = state[1].to_mkldnn() + self.training = state[2] + +class MkldnnConv3d(_MkldnnConvNd): + def __init__(self, dense_module, dtype) -> None: + super().__init__(dense_module) + + self.register_buffer('weight', torch._C._nn.mkldnn_reorder_conv3d_weight( + dense_module.weight.to_mkldnn(dtype), + self.padding, + self.stride, + self.dilation, + self.groups)) + + @torch.jit.script_method + def __setstate__(self, state): + self.weight = torch._C._nn.mkldnn_reorder_conv3d_weight( + state[0].to_mkldnn(), + self.padding, + self.stride, + self.dilation, + self.groups) + self.bias = state[1].to_mkldnn() + self.training = state[2] + + +class MkldnnBatchNorm(torch.jit.ScriptModule): + __constants__ = ['exponential_average_factor', 'eps'] + + def __init__(self, dense_module) -> None: + super().__init__() + + if dense_module.training: + raise AssertionError("Only support eval mode batchnorm for mkldnn path now") + if not dense_module.track_running_stats: + raise AssertionError("Only support track_running_stats=True for mkldnn path now") + if not dense_module.affine: + raise AssertionError("Only support affine=True for mkldnn path now") + + if dense_module.momentum is None: + self.exponential_average_factor = 0.0 + else: + self.exponential_average_factor = dense_module.momentum + self.eps = dense_module.eps + + self.register_buffer('weight', dense_module.weight.to_mkldnn()) + self.register_buffer('bias', dense_module.bias.to_mkldnn()) + self.register_buffer('running_mean', dense_module.running_mean.to_mkldnn()) + self.register_buffer('running_var', dense_module.running_var.to_mkldnn()) + + @torch.jit.script_method + def __getstate__(self): + weight = self.weight.to_dense() + bias = self.bias.to_dense() + running_mean = self.running_mean.to_dense() + running_var = self.running_var.to_dense() + return (weight, bias, running_mean, running_var, self.training) + + @torch.jit.script_method + def __setstate__(self, state): + self.weight = state[0].to_mkldnn() + self.bias = state[1].to_mkldnn() + self.running_mean = state[2].to_mkldnn() + self.running_var = state[3].to_mkldnn() + self.training = state[4] + + @torch.jit.script_method + def forward(self, x): + return torch.batch_norm( + x, + self.weight, + self.bias, + self.running_mean, + self.running_var, + False, # training + self.exponential_average_factor, + self.eps, + False, # cuda_enabled + ) + +class MkldnnPrelu(torch.jit.ScriptModule): + def __init__(self, dense_module, dtype) -> None: + super().__init__() + self.register_buffer('weight', dense_module.weight.to_mkldnn(dtype)) + + @torch.jit.script_method + def __getstate__(self): + return (self.weight.to_dense(), self.training) + + @torch.jit.script_method + def __setstate__(self, state): + self.weight = state[0].to_mkldnn() + self.training = state[1] + + @torch.jit.script_method + def forward(self, x): + x_mkldnn = x if x.is_mkldnn else x.to_mkldnn() + y_mkldnn = torch.prelu(x_mkldnn, self.weight) + y = y_mkldnn if x.is_mkldnn else y_mkldnn.to_dense() + return y + +def to_mkldnn(module, dtype=torch.float): + if dtype not in (torch.float, torch.bfloat16, torch.half): + raise AssertionError("MKLDNN only support float, bfloat16, and half path now") + + + def m_fn(m, d): + if isinstance(m, torch.nn.Linear): + return MkldnnLinear(m, d) + elif isinstance(m, torch.nn.Conv1d): + return MkldnnConv1d(m, d) + elif isinstance(m, torch.nn.Conv2d): + return MkldnnConv2d(m, d) + elif isinstance(m, torch.nn.Conv3d): + return MkldnnConv3d(m, d) + elif isinstance(m, (torch.nn.BatchNorm2d, torch.nn.BatchNorm3d)): + # For batchnorm bf16 path, OneDNN requires weight and bias need fp32 dtype. + # so it doesn't need dtype argument. + return MkldnnBatchNorm(m) + elif isinstance(m, torch.nn.PReLU): + return MkldnnPrelu(m, d) + else: + return m + + def m_fn_rec(m, d): + new_m = m_fn(m, d) + for name, sub_m in m.named_children(): + setattr(new_m, name, m_fn_rec(sub_m, d)) + return new_m + + return m_fn_rec(module, dtype) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/mobile_optimizer.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/mobile_optimizer.py new file mode 100644 index 0000000000000000000000000000000000000000..1ad0a65204a4733323e7ed29a51403aa47556bbd --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/mobile_optimizer.py @@ -0,0 +1,135 @@ +# mypy: allow-untyped-defs +"""This module contains utility method for mobile model optimization and lint.""" + +import torch +from enum import Enum +from torch._C import _MobileOptimizerType as MobileOptimizerType +from typing import AnyStr + +class LintCode(Enum): + BUNDLED_INPUT = 1 + REQUIRES_GRAD = 2 + DROPOUT = 3 + BATCHNORM = 4 + +def optimize_for_mobile( + script_module: torch.jit.ScriptModule, + optimization_blocklist: set[MobileOptimizerType] | None = None, + preserved_methods: list[AnyStr] | None = None, + backend: str = 'CPU') -> torch.jit.RecursiveScriptModule: + """ + Optimize a torch script module for mobile deployment. + + Args: + script_module: An instance of torch script module with type of ScriptModule. + optimization_blocklist: A set with type of MobileOptimizerType. When set is not passed, + optimization method will run all the optimizer pass; otherwise, optimizer + method will run the optimization pass that is not included inside optimization_blocklist. + preserved_methods: A list of methods that needed to be preserved when freeze_module pass is invoked + backend: Device type to use for running the result model ('CPU'(default), 'Vulkan' or 'Metal'). + Returns: + A new optimized torch script module + """ + if not isinstance(script_module, torch.jit.ScriptModule): + raise TypeError( + f'Got {type(script_module)}, but ScriptModule is expected.') + + if optimization_blocklist is None: + optimization_blocklist = set() + + if preserved_methods is None: + preserved_methods = [] + + # Convert potential byte arrays into strings (if there is any) to pass type checking + # Here we use a new name as assigning it back to preserved_methods will invoke + # mypy errors (i.e. List[AnyStr] = List[str]) + preserved_methods_str: list[str] = [str(method) for method in preserved_methods] + + bundled_inputs_attributes = _get_bundled_inputs_preserved_attributes(script_module, preserved_methods_str) + if all(hasattr(script_module, method) for method in bundled_inputs_attributes): + preserved_methods_str = list(set(preserved_methods_str + bundled_inputs_attributes)) + + non_exist_methods = [method for method in preserved_methods_str if not hasattr(script_module, method)] + if non_exist_methods: + raise AttributeError( + f"The following methods to preserve do not exist in script_module: {', '.join(non_exist_methods)}") + + backend = backend.lower() + if backend == 'cpu': + optimized_cpp_module = torch._C._jit_pass_optimize_for_mobile( + script_module._c, + optimization_blocklist, + preserved_methods_str) + elif backend == 'vulkan': + optimized_cpp_module = torch._C._jit_pass_vulkan_optimize_for_mobile( + script_module._c, + optimization_blocklist, + preserved_methods_str) + elif backend == 'metal': + optimized_cpp_module = torch._C._jit_pass_metal_optimize_for_mobile(script_module._c, preserved_methods_str) + else: + raise TypeError("Unknown backend, must be one of 'CPU', 'Vulkan' or 'Metal'") + + return torch.jit._recursive.wrap_cpp_module(optimized_cpp_module) + + +def generate_mobile_module_lints(script_module: torch.jit.ScriptModule): + """ + Generate a list of lints for a given torch script module. + + Args: + script_module: An instance of torch script module with type of ScriptModule. + + Returns: + lint_map: A list of dictionary that contains modules lints + """ + if not isinstance(script_module, torch.jit.ScriptModule): + raise TypeError( + f'Got {type(script_module)}, but ScriptModule is expected.') + + lint_list = [] + + if not hasattr(script_module, "_generate_bundled_inputs_for_forward"): + lint_list.append({"name": LintCode.BUNDLED_INPUT.name, "message": "No bundled input for forward, please add bundled inputs " + "before saving the module using torch.utils.bundled_inputs.augment_model_with_bundled_inputs."}) + + for name, param in script_module.named_parameters(): + if param.requires_grad: + lint_list.append({"name": LintCode.REQUIRES_GRAD.name, "message": f"Param {name} requires grad, " + "please set torch.no_grad() to reduce memory usage and improve computation speed during " + "inference phase."}) + + op_names = torch.jit.export_opnames(script_module) + for op_name in op_names: + if "dropout" in op_name: + lint_list.append({"name": LintCode.DROPOUT.name, + "message": f"Operator {op_name} exists, remember to call eval() before " + "saving the module.and call torch.utils.mobile_optimizer.optimize_for_mobile to drop dropout " + "operator."}) + if "batch_norm" in op_name: + lint_list.append({"name": LintCode.BATCHNORM.name, + "message": f"Operator {op_name} exists, remember to call eval() before " + "saving the module and call torch.utils.mobile_optimizer.optimize_for_mobile to drop batch_norm " + "operator."}) + + return lint_list + +def _get_bundled_inputs_preserved_attributes(script_module: torch.jit.ScriptModule, preserved_methods: list[str]) -> list[str]: + + bundled_inputs_attributes = [] + # Has bundled inputs for forward + if hasattr(script_module, 'get_all_bundled_inputs'): + bundled_inputs_attributes.append('get_all_bundled_inputs') + bundled_inputs_attributes.append('get_num_bundled_inputs') + + # Bundled inputs in module after the change that introduced bundled inputs for multiple functions + if hasattr(script_module, 'get_bundled_inputs_functions_and_info'): + bundled_inputs_attributes.append('get_bundled_inputs_functions_and_info') + all_info = script_module.get_bundled_inputs_functions_and_info() + for function_name in all_info: + if function_name not in preserved_methods: + bundled_inputs_attributes.append(function_name) + bundled_inputs_attributes.append("get_all_bundled_inputs_for_" + function_name) + bundled_inputs_attributes.append("_bundled_inputs_deflated_" + function_name) + + return bundled_inputs_attributes diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/model_dump/__init__.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/model_dump/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..16d1ab1c6dd1a2d422cae74eaa5b5888dd2fa175 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/model_dump/__init__.py @@ -0,0 +1,450 @@ +#!/usr/bin/env python3 +# mypy: allow-untyped-defs +""" +model_dump: a one-stop shop for TorchScript model inspection. + +The goal of this tool is to provide a simple way to extract lots of +useful information from a TorchScript model and make it easy for humans +to consume. It (mostly) replaces zipinfo, common uses of show_pickle, +and various ad-hoc analysis notebooks. + +The tool extracts information from the model and serializes it as JSON. +That JSON can then be rendered by an HTML+JS page, either by +loading the JSON over HTTP or producing a fully self-contained page +with all of the code and data burned-in. +""" + +# Maintainer notes follow. +""" +The implementation strategy has tension between 3 goals: +- Small file size. +- Fully self-contained. +- Easy, modern JS environment. +Using Preact and HTM achieves 1 and 2 with a decent result for 3. +However, the models I tested with result in ~1MB JSON output, +so even using something heavier like full React might be tolerable +if the build process can be worked out. + +One principle I have followed that I think is very beneficial +is to keep the JSON data as close as possible to the model +and do most of the rendering logic on the client. +This makes for easier development (just refresh, usually), +allows for more laziness and dynamism, and lets us add more +views of the same data without bloating the HTML file. + +Currently, this code doesn't actually load the model or even +depend on any part of PyTorch. I don't know if that's an important +feature to maintain, but it's probably worth preserving the ability +to run at least basic analysis on models that cannot be loaded. + +I think the easiest way to develop this code is to cd into model_dump and +run "python -m http.server", then load http://localhost:8000/skeleton.html +in the browser. In another terminal, run +"python -m torch.utils.model_dump --style=json FILE > \ + torch/utils/model_dump/model_info.json" +every time you update the Python code or model. +When you update JS, just refresh. + +Possible improvements: + - Fix various TODO comments in this file and the JS. + - Make the HTML much less janky, especially the auxiliary data panel. + - Make the auxiliary data panel start small, expand when + data is available, and have a button to clear/contract. + - Clean up the JS. There's a lot of copypasta because + I don't really know how to use Preact. + - Make the HTML render and work nicely inside a Jupyter notebook. + - Add the ability for JS to choose the URL to load the JSON based + on the page URL (query or hash). That way we could publish the + inlined skeleton once and have it load various JSON blobs. + - Add a button to expand all expandable sections so ctrl-F works well. + - Add hyperlinking from data to code, and code to code. + - Add hyperlinking from debug info to Diffusion. + - Make small tensor contents available. + - Do something nice for quantized models + (they probably don't work at all right now). +""" + +import argparse +import io +import itertools +import json +import os +import pickle +import pprint +import re +import sys +import urllib.parse +import zipfile +from pathlib import Path +import warnings + +import torch.utils.show_pickle + + +DEFAULT_EXTRA_FILE_SIZE_LIMIT = 16 * 1024 + +__all__ = ['get_storage_info', 'hierarchical_pickle', 'get_model_info', 'get_inline_skeleton', + 'burn_in_info', 'get_info_and_burn_skeleton'] + +def get_storage_info(storage): + if not isinstance(storage, torch.utils.show_pickle.FakeObject): + raise AssertionError(f"storage is not FakeObject: {type(storage)}") + if storage.module != "pers": + raise AssertionError(f"storage.module is not 'pers': {storage.module!r}") + if storage.name != "obj": + raise AssertionError(f"storage.name is not 'obj': {storage.name!r}") + if storage.state is not None: + raise AssertionError(f"storage.state is not None: {storage.state!r}") + if not isinstance(storage.args, tuple): + raise AssertionError(f"storage.args is not a tuple: {type(storage.args)}") + if len(storage.args) != 1: + raise AssertionError(f"len(storage.args) is not 1: {len(storage.args)}") + sa = storage.args[0] + if not isinstance(sa, tuple): + raise AssertionError(f"sa is not a tuple: {type(sa)}") + if len(sa) != 5: + raise AssertionError(f"len(sa) is not 5: {len(sa)}") + if sa[0] != "storage": + raise AssertionError(f"sa[0] is not 'storage': {sa[0]!r}") + if not isinstance(sa[1], torch.utils.show_pickle.FakeClass): + raise AssertionError(f"sa[1] is not FakeClass: {type(sa[1])}") + if sa[1].module != "torch": + raise AssertionError(f"sa[1].module is not 'torch': {sa[1].module!r}") + if not sa[1].name.endswith("Storage"): + raise AssertionError(f"sa[1].name does not end with 'Storage': {sa[1].name!r}") + storage_info = [sa[1].name.replace("Storage", "")] + list(sa[2:]) + return storage_info + + +def hierarchical_pickle(data): + if isinstance(data, (bool, int, float, str, type(None))): + return data + if isinstance(data, list): + return [hierarchical_pickle(d) for d in data] + if isinstance(data, tuple): + return { + "__tuple_values__": hierarchical_pickle(list(data)), + } + if isinstance(data, dict): + return { + "__is_dict__": True, + "keys": hierarchical_pickle(list(data.keys())), + "values": hierarchical_pickle(list(data.values())), + } + if isinstance(data, torch.utils.show_pickle.FakeObject): + typename = f"{data.module}.{data.name}" + if ( + typename.startswith(('__torch__.', 'torch.jit.LoweredWrapper.', 'torch.jit.LoweredModule.')) + ): + if data.args != (): + raise AssertionError("data.args is not ()") + return { + "__module_type__": typename, + "state": hierarchical_pickle(data.state), + } + if typename == "torch._utils._rebuild_tensor_v2": + if data.state is not None: + raise AssertionError("data.state is not None") + storage, offset, size, stride, requires_grad, *_ = data.args + storage_info = get_storage_info(storage) + return {"__tensor_v2__": [storage_info, offset, size, stride, requires_grad]} + if typename == "torch._utils._rebuild_qtensor": + if data.state is not None: + raise AssertionError("data.state is not None") + storage, offset, size, stride, quantizer, requires_grad, *_ = data.args + storage_info = get_storage_info(storage) + if not isinstance(quantizer, tuple): + raise AssertionError("quantizer is not a tuple") + if not isinstance(quantizer[0], torch.utils.show_pickle.FakeClass): + raise AssertionError("quantizer[0] is not a FakeClass") + if quantizer[0].module != "torch": + raise AssertionError("quantizer[0].module is not torch") + if quantizer[0].name == "per_tensor_affine": + if len(quantizer) != 3: + raise AssertionError("len(quantizer) is not 3") + if not isinstance(quantizer[1], float): + raise AssertionError("quantizer[1] is not a float") + if not isinstance(quantizer[2], int): + raise AssertionError("quantizer[2] is not an int") + quantizer_extra = list(quantizer[1:3]) + else: + quantizer_extra = [] + quantizer_json = [quantizer[0].name] + quantizer_extra + return {"__qtensor__": [storage_info, offset, size, stride, quantizer_json, requires_grad]} + if typename == "torch.jit._pickle.restore_type_tag": + if data.state is not None: + raise AssertionError("data.state is not None") + obj, typ = data.args + if not isinstance(typ, str): + raise AssertionError("typ is not a string") + return hierarchical_pickle(obj) + if re.fullmatch(r"torch\.jit\._pickle\.build_[a-z]+list", typename): + if data.state is not None: + raise AssertionError("data.state is not None") + ls, = data.args + if not isinstance(ls, list): + raise AssertionError("ls is not a list") + return hierarchical_pickle(ls) + if typename == "torch.device": + if data.state is not None: + raise AssertionError("data.state is not None") + name, = data.args + if not isinstance(name, str): + raise AssertionError("name is not a string") + # Just forget that it was a device and return the name. + return name + if typename == "builtin.UnicodeDecodeError": + if data.state is not None: + raise AssertionError("data.state is not None") + msg, = data.args + if not isinstance(msg, str): + raise AssertionError("msg is not a string") + # Hack: Pretend this is a module so we don't need custom serialization. + # Hack: Wrap the message in a tuple so it looks like a nice state object. + # TODO: Undo at least that second hack. We should support string states. + return { + "__module_type__": typename, + "state": hierarchical_pickle((msg,)), + } + raise Exception(f"Can't prepare fake object of type for JS: {typename}") # noqa: TRY002 + raise Exception(f"Can't prepare data of type for JS: {type(data)}") # noqa: TRY002 + + +def get_model_info( + path_or_file, + title=None, + extra_file_size_limit=DEFAULT_EXTRA_FILE_SIZE_LIMIT): + """Get JSON-friendly information about a model. + + The result is suitable for being saved as model_info.json, + or passed to burn_in_info. + """ + + if isinstance(path_or_file, os.PathLike): + default_title = os.fspath(path_or_file) + file_size = path_or_file.stat().st_size # type: ignore[attr-defined] + elif isinstance(path_or_file, str): + default_title = path_or_file + file_size = Path(path_or_file).stat().st_size + else: + default_title = "buffer" + path_or_file.seek(0, io.SEEK_END) + file_size = path_or_file.tell() + path_or_file.seek(0) + + title = title or default_title + + with zipfile.ZipFile(path_or_file) as zf: + path_prefix = None + zip_files = [] + # pyrefly: ignore [bad-assignment] + for zi in zf.infolist(): + prefix = re.sub("/.*", "", zi.filename) + if path_prefix is None: + path_prefix = prefix + elif prefix != path_prefix: + raise Exception(f"Mismatched prefixes: {path_prefix} != {prefix}") # noqa: TRY002 + zip_files.append( + { + "filename": zi.filename, + "compression": zi.compress_type, + "compressed_size": zi.compress_size, + "file_size": zi.file_size, + } + ) + if path_prefix is None: + raise AssertionError("path_prefix is None") + version = zf.read(path_prefix + "/version").decode("utf-8").strip() + + def get_pickle(name): + if path_prefix is None: + raise AssertionError("path_prefix is None") + with zf.open(path_prefix + f"/{name}.pkl") as handle: + raw = torch.utils.show_pickle.DumpUnpickler(handle, catch_invalid_utf8=True).load() + return hierarchical_pickle(raw) + + model_data = get_pickle("data") + constants = get_pickle("constants") + + # Intern strings that are likely to be reused. + # Pickle automatically detects shared structure, + # so reused strings are stored efficiently. + # However, JSON has no way of representing this, + # so we have to do it manually. + interned_strings : dict[str, int] = {} + + def intern(s): + if s not in interned_strings: + interned_strings[s] = len(interned_strings) + return interned_strings[s] + + code_files = {} + for zi in zf.infolist(): + if not zi.filename.endswith(".py"): + continue + with zf.open(zi) as handle: + raw_code = handle.read() + with zf.open(zi.filename + ".debug_pkl") as handle: + raw_debug = handle.read() + + # Parse debug info and add begin/end markers if not present + # to ensure that we cover the entire source code. + debug_info_t = pickle.loads(raw_debug) + text_table = None + + if (len(debug_info_t) == 3 and + isinstance(debug_info_t[0], str) and + debug_info_t[0] == 'FORMAT_WITH_STRING_TABLE'): + _, text_table, content = debug_info_t + + def parse_new_format(line): + # (0, (('', '', 0), 0, 0)) + num, ((text_indexes, fname_idx, offset), start, end), tag = line + text = ''.join(text_table[x] for x in text_indexes) # type: ignore[index] + fname = text_table[fname_idx] # type: ignore[index] + return num, ((text, fname, offset), start, end), tag + + debug_info_t = map(parse_new_format, content) + + debug_info = list(debug_info_t) + if not debug_info: + debug_info.append((0, (('', '', 0), 0, 0))) + if debug_info[-1][0] != len(raw_code): + debug_info.append((len(raw_code), (('', '', 0), 0, 0))) + + code_parts = [] + for di, di_next in itertools.pairwise(debug_info): + start, source_range, *_ = di + end = di_next[0] + if end <= start: + raise AssertionError("end is not greater than start") + source, s_start, s_end = source_range + s_text, s_file, s_line = source + # TODO: Handle this case better. TorchScript ranges are in bytes, + # but JS doesn't really handle byte strings. + # if bytes and chars are not equivalent for this string, + # zero out the ranges so we don't highlight the wrong thing. + if len(s_text) != len(s_text.encode("utf-8")): + s_start = 0 + s_end = 0 + text = raw_code[start:end] + code_parts.append([text.decode("utf-8"), intern(s_file), s_line, intern(s_text), s_start, s_end]) + code_files[zi.filename] = code_parts + + extra_files_json_pattern = re.compile(re.escape(path_prefix) + "/extra/.*\\.json") + extra_files_jsons = {} + for zi in zf.infolist(): + if not extra_files_json_pattern.fullmatch(zi.filename): + continue + if zi.file_size > extra_file_size_limit: + continue + with zf.open(zi) as handle: + try: + json_content = json.load(handle) + extra_files_jsons[zi.filename] = json_content + except json.JSONDecodeError: + extra_files_jsons[zi.filename] = "INVALID JSON" + + always_render_pickles = { + "bytecode.pkl", + } + extra_pickles = {} + for zi in zf.infolist(): + if not zi.filename.endswith(".pkl"): + continue + with zf.open(zi) as handle: + # TODO: handle errors here and just ignore the file? + # NOTE: For a lot of these files (like bytecode), + # we could get away with just unpickling, but this should be safer. + obj = torch.utils.show_pickle.DumpUnpickler(handle, catch_invalid_utf8=True).load() + buf = io.StringIO() + pprint.pprint(obj, buf) + contents = buf.getvalue() + # Checked the rendered length instead of the file size + # because pickles with shared structure can explode in size during rendering. + if os.path.basename(zi.filename) not in always_render_pickles and \ + len(contents) > extra_file_size_limit: + continue + extra_pickles[zi.filename] = contents + + return { + "model": { + "title": title, + "file_size": file_size, + "version": version, + "zip_files": zip_files, + "interned_strings": list(interned_strings), + "code_files": code_files, + "model_data": model_data, + "constants": constants, + "extra_files_jsons": extra_files_jsons, + "extra_pickles": extra_pickles, + } + } + + +def get_inline_skeleton(): + """Get a fully-inlined skeleton of the frontend. + + The returned HTML page has no external network dependencies for code. + It can load model_info.json over HTTP, or be passed to burn_in_info. + """ + + import importlib.resources + + # pyrefly: ignore [bad-argument-type] + skeleton = importlib.resources.read_text(__package__, "skeleton.html") + # pyrefly: ignore [bad-argument-type] + js_code = importlib.resources.read_text(__package__, "code.js") + for js_module in ["preact", "htm"]: + # pyrefly: ignore [bad-argument-type] + js_lib = importlib.resources.read_binary(__package__, f"{js_module}.mjs") + js_url = "data:application/javascript," + urllib.parse.quote(js_lib) + js_code = js_code.replace(f"https://unpkg.com/{js_module}?module", js_url) + skeleton = skeleton.replace(' src="./code.js">', ">\n" + js_code) + return skeleton + + +def burn_in_info(skeleton, info): + """Burn model info into the HTML skeleton. + + The result will render the hard-coded model info and + have no external network dependencies for code or data. + """ + + # Note that Python's json serializer does not escape slashes in strings. + # Since we're inlining this JSON directly into a script tag, a string + # containing "" would end the script prematurely and + # mess up our page. Unconditionally escape fixes that. + return skeleton.replace( + "BURNED_IN_MODEL_INFO = null", + "BURNED_IN_MODEL_INFO = " + json.dumps(info, sort_keys=True).replace("/", "\\/")) + + +def get_info_and_burn_skeleton(path_or_bytesio, **kwargs): + model_info = get_model_info(path_or_bytesio, **kwargs) + skeleton = get_inline_skeleton() + page = burn_in_info(skeleton, model_info) + return page + + +def main(argv, *, stdout=None) -> None: + warnings.warn("torch.utils.model_dump is deprecated and will be removed in a future PyTorch release.", stacklevel=2) + parser = argparse.ArgumentParser() + parser.add_argument("--style", choices=["json", "html"]) + parser.add_argument("--title") + parser.add_argument("model") + args = parser.parse_args(argv[1:]) + + info = get_model_info(args.model, title=args.title) + + output = stdout or sys.stdout + + if args.style == "json": + output.write(json.dumps(info, sort_keys=True) + "\n") + elif args.style == "html": + skeleton = get_inline_skeleton() + page = burn_in_info(skeleton, info) + output.write(page) + else: + raise Exception("Invalid style") # noqa: TRY002 diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/model_dump/__main__.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/model_dump/__main__.py new file mode 100644 index 0000000000000000000000000000000000000000..5d4bdac389bb1f270d74efb6c876258d46077110 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/model_dump/__main__.py @@ -0,0 +1,5 @@ +#!/usr/bin/env python3 +import sys +from . import main + +sys.exit(main(sys.argv)) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/model_dump/code.js b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/model_dump/code.js new file mode 100644 index 0000000000000000000000000000000000000000..173ddfb639d847159ee4fdf46691404bf1bbb7a3 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/model_dump/code.js @@ -0,0 +1,689 @@ +import { h, Component, render } from 'https://unpkg.com/preact?module'; +import htm from 'https://unpkg.com/htm?module'; + +const html = htm.bind(h); + +const BURNED_IN_MODEL_INFO = null; + +// https://stackoverflow.com/a/20732091 +function humanFileSize(size) { + if (size == 0) { return "0 B"; } + var i = Math.floor( Math.log(size) / Math.log(1024) ); + return (size / Math.pow(1024, i)).toFixed(2) * 1 + ' ' + ['B', 'kB', 'MB', 'GB', 'TB'][i]; +} + +function caret(down) { + return down ? "\u25BE" : "\u25B8"; +} + +class Blamer { + constructor() { + this.blame_on_click = false; + this.aux_content_pane = null; + } + + setAuxContentPane(pane) { + this.aux_content_pane = pane; + } + + readyBlame() { + this.blame_on_click = true; + } + + maybeBlame(arg) { + if (!this.blame_on_click) { + return; + } + this.blame_on_click = false; + if (!this.aux_content_pane) { + return; + } + this.aux_content_pane.doBlame(arg); + } +} + +let blame = new Blamer(); + +class Hider extends Component { + constructor() { + super(); + this.state = { shown: null }; + } + + componentDidMount() { + this.setState({ shown: this.props.shown === "true" }); + } + + render({name, children}, {shown}) { + let my_caret = html` this.click()} >${caret(shown)}`; + return html`
+

${my_caret} ${name}

+
${shown ? this.props.children : []}
`; + } + + click() { + this.setState({shown: !this.state.shown}); + } +} + +function ModelSizeSection({model: {file_size, zip_files}}) { + let store_size = 0; + let compr_size = 0; + for (const zi of zip_files) { + if (zi.compression === 0) { + // TODO: Maybe check that compressed_size === file_size. + store_size += zi.compressed_size; + } else { + compr_size += zi.compressed_size; + } + } + let zip_overhead = file_size - store_size - compr_size; + // TODO: Better formatting. Right-align this. + return html` + <${Hider} name="Model Size" shown=true> +
.
+      Model size: ${file_size} (${humanFileSize(file_size)})
+      Stored files: ${store_size} (${humanFileSize(store_size)})
+      Compressed files: ${compr_size} (${humanFileSize(compr_size)})
+      Zip overhead: ${zip_overhead} (${humanFileSize(zip_overhead)})
+    
`; +} + +function StructuredDataSection({name, data, shown}) { + return html` + <${Hider} name=${name} shown=${shown}> +
+ <${StructuredData} data=${data} indent="" prefix=""/> +
`; +} + +class StructuredData extends Component { + constructor() { + super(); + this.state = { shown: false }; + + this.INLINE_TYPES = new Set(["boolean", "number", "string"]) + this.IGNORED_STATE_KEYS = new Set(["training", "_is_full_backward_hook"]) + } + + click() { + this.setState({shown: !this.state.shown}); + } + + expando(data) { + if (data === null || this.INLINE_TYPES.has(typeof(data))) { + return false; + } + if (typeof(data) != "object") { + throw new Error("Not an object"); + } + if (Array.isArray(data)) { + // TODO: Maybe show simple lists and tuples on one line. + return true; + } + if (data.__tuple_values__) { + // TODO: Maybe show simple lists and tuples on one line. + return true; + } + if (data.__is_dict__) { + // TODO: Maybe show simple (empty?) dicts on one line. + return true; + } + if (data.__module_type__) { + return true; + } + if (data.__tensor_v2__) { + return false; + } + if (data.__qtensor__) { + return false; + } + throw new Error("Can't handle data type.", data); + } + + renderHeadline(data) { + if (data === null) { + return "None"; + } + if (typeof(data) == "boolean") { + const sd = String(data); + return sd.charAt(0).toUpperCase() + sd.slice(1); + } + if (typeof(data) == "number") { + return JSON.stringify(data); + } + if (typeof(data) == "string") { + return JSON.stringify(data); + } + if (typeof(data) != "object") { + throw new Error("Not an object"); + } + if (Array.isArray(data)) { + return "list(["; + } + if (data.__tuple_values__) { + return "tuple(("; + } + if (data.__is_dict__) { + return "dict({"; + } + if (data.__module_type__) { + return data.__module_type__ + "()"; + } + if (data.__tensor_v2__) { + const [storage, offset, size, stride, grad] = data.__tensor_v2__; + const [dtype, key, device, numel] = storage; + return this.renderTensor( + "tensor", dtype, key, device, numel, offset, size, stride, grad, []); + } + if (data.__qtensor__) { + const [storage, offset, size, stride, quantizer, grad] = data.__qtensor__; + const [dtype, key, device, numel] = storage; + let extra_parts = []; + if (quantizer[0] == "per_tensor_affine") { + extra_parts.push(`scale=${quantizer[1]}`); + extra_parts.push(`zero_point=${quantizer[2]}`); + } else { + extra_parts.push(`quantizer=${quantizer[0]}`); + } + return this.renderTensor( + "qtensor", dtype, key, device, numel, offset, size, stride, grad, extra_parts); + } + throw new Error("Can't handle data type.", data); + } + + renderTensor( + prefix, + dtype, + storage_key, + device, + storage_numel, + offset, + size, + stride, + grad, + extra_parts) { + let parts = [ + "(" + size.join(",") + ")", + dtype, + ]; + parts.push(...extra_parts); + if (device != "cpu") { + parts.push(device); + } + if (grad) { + parts.push("grad"); + } + // TODO: Check stride and indicate if the tensor is channels-last or non-contiguous + // TODO: Check size, stride, offset, and numel and indicate if + // the tensor doesn't use all data in storage. + // TODO: Maybe show key? + void(offset); + void(stride); + void(storage_key); + void(storage_numel); + return prefix + "(" + parts.join(", ") + ")"; + } + + renderBody(indent, data) { + if (data === null || this.INLINE_TYPES.has(typeof(data))) { + throw "Should not reach here." + } + if (typeof(data) != "object") { + throw new Error("Not an object"); + } + if (Array.isArray(data)) { + let new_indent = indent + "\u00A0\u00A0"; + let parts = []; + for (let idx = 0; idx < data.length; idx++) { + // Does it make sense to put explicit index numbers here? + parts.push(html`
<${StructuredData} prefix=${idx + ": "} indent=${new_indent} data=${data[idx]} />`); + } + return parts; + } + if (data.__tuple_values__) { + // Handled the same as lists. + return this.renderBody(indent, data.__tuple_values__); + } + if (data.__is_dict__) { + let new_indent = indent + "\u00A0\u00A0"; + let parts = []; + for (let idx = 0; idx < data.keys.length; idx++) { + if (typeof(data.keys[idx]) != "string") { + parts.push(html`
${new_indent}Non-string key`); + } else { + parts.push(html`
<${StructuredData} prefix=${data.keys[idx] + ": "} indent=${new_indent} data=${data.values[idx]} />`); + } + } + return parts; + } + if (data.__module_type__) { + const mstate = data.state; + if (mstate === null || typeof(mstate) != "object") { + throw new Error("Bad module state"); + } + let new_indent = indent + "\u00A0\u00A0"; + let parts = []; + if (mstate.__is_dict__) { + // TODO: Less copy/paste between this and normal dicts. + for (let idx = 0; idx < mstate.keys.length; idx++) { + if (typeof(mstate.keys[idx]) != "string") { + parts.push(html`
${new_indent}Non-string key`); + } else if (this.IGNORED_STATE_KEYS.has(mstate.keys[idx])) { + // Do nothing. + } else { + parts.push(html`
<${StructuredData} prefix=${mstate.keys[idx] + ": "} indent=${new_indent} data=${mstate.values[idx]} />`); + } + } + } else if (mstate.__tuple_values__) { + parts.push(html`
<${StructuredData} prefix="" indent=${new_indent} data=${mstate} />`); + } else if (mstate.__module_type__) { + // We normally wouldn't have the state of a module be another module, + // but we use "modules" to encode special values (like Unicode decode + // errors) that might be valid states. Just go with it. + parts.push(html`
<${StructuredData} prefix="" indent=${new_indent} data=${mstate} />`); + } else { + throw new Error("Bad module state"); + } + return parts; + } + if (data.__tensor_v2__) { + throw "Should not reach here." + } + if (data.__qtensor__) { + throw "Should not reach here." + } + throw new Error("Can't handle data type.", data); + } + + render({data, indent, prefix}, {shown}) { + const exp = this.expando(data) ? html` this.click()} >${caret(shown)} ` : ""; + const headline = this.renderHeadline(data); + const body = shown ? this.renderBody(indent, data) : ""; + return html`${indent}${exp}${prefix}${headline}${body}`; + } +} + +function ZipContentsSection({model: {zip_files}}) { + // TODO: Add human-readable sizes? + // TODO: Add sorting options? + // TODO: Add hierarchical collapsible tree? + return html` + <${Hider} name="Zip Contents" shown=false> + + + + + + + + + + + ${zip_files.map(zf => html` + + + + + `)} + +
ModeSizeCompressedName
${{0: "store", 8: "deflate"}[zf.compression] || zf.compression}${zf.file_size}${zf.compressed_size}${zf.filename}
`; +} + +function CodeSection({model: {code_files}}) { + return html` + <${Hider} name="Code" shown=false> +
+ ${Object.entries(code_files).map(([fn, code]) => html`<${OneCodeSection} + filename=${fn} code=${code} />`)} +
`; +} + +class OneCodeSection extends Component { + constructor() { + super(); + this.state = { shown: false }; + } + + click() { + const shown = !this.state.shown; + this.setState({shown: shown}); + } + + render({filename, code}, {shown}) { + const header = html` +

+ this.click()} >${caret(shown)} + ${filename}

+ `; + if (!shown) { + return header; + } + return html` + ${header} +
${code.map(c => this.renderBlock(c))}
+ `; + } + + renderBlock([text, ist_file, line, ist_s_text, s_start, s_end]) { + return html` blame.maybeBlame({ist_file, line, ist_s_text, s_start, s_end})} + >${text}`; + } +} + +function ExtraJsonSection({files}) { + return html` + <${Hider} name="Extra files (JSON)" shown=false> +
+

Use "Log Raw Model Info" for hierarchical view in browser console.

+ ${Object.entries(files).map(([fn, json]) => html`<${OneJsonSection} + filename=${fn} json=${json} />`)} +
`; +} + +class OneJsonSection extends Component { + constructor() { + super(); + this.state = { shown: false }; + } + + click() { + const shown = !this.state.shown; + this.setState({shown: shown}); + } + + render({filename, json}, {shown}) { + const header = html` +

+ this.click()} >${caret(shown)} + ${filename}

+ `; + if (!shown) { + return header; + } + return html` + ${header} +
${JSON.stringify(json, null, 2)}
+ `; + } +} + +function ExtraPicklesSection({files}) { + return html` + <${Hider} name="Extra Pickles" shown=false> +
+ ${Object.entries(files).map(([fn, content]) => html`<${OnePickleSection} + filename=${fn} content=${content} />`)} +
`; +} + +class OnePickleSection extends Component { + constructor() { + super(); + this.state = { shown: false }; + } + + click() { + const shown = !this.state.shown; + this.setState({shown: shown}); + } + + render({filename, content}, {shown}) { + const header = html` +

+ this.click()} >${caret(shown)} + ${filename}

+ `; + if (!shown) { + return header; + } + return html` + ${header} +
${content}
+ `; + } +} + +function assertStorageAreEqual(key, lhs, rhs) { + if (lhs.length !== rhs.length || + !lhs.every((val, idx) => val === rhs[idx])) { + throw new Error("Storage mismatch for key '" + key + "'"); + } +} + +function computeTensorMemory(numel, dtype) { + const sizes = { + "Byte": 1, + "Char": 1, + "Short": 2, + "Int": 4, + "Long": 8, + "Half": 2, + "Float": 4, + "Double": 8, + "ComplexHalf": 4, + "ComplexFloat": 8, + "ComplexDouble": 16, + "Bool": 1, + "QInt8": 1, + "QUInt8": 1, + "QInt32": 4, + "BFloat16": 2, + }; + let dtsize = sizes[dtype]; + if (!dtsize) { + throw new Error("Unrecognized dtype: " + dtype); + } + return numel * dtsize; +} + +// TODO: Maybe track by dtype as well. +// TODO: Maybe distinguish between visible size and storage size. +function getTensorStorages(data) { + if (data === null) { + return new Map(); + } + if (typeof(data) == "boolean") { + return new Map(); + } + if (typeof(data) == "number") { + return new Map(); + } + if (typeof(data) == "string") { + return new Map(); + } + if (typeof(data) != "object") { + throw new Error("Not an object"); + } + if (Array.isArray(data)) { + let result = new Map(); + for (const item of data) { + const tensors = getTensorStorages(item); + for (const [key, storage] of tensors.entries()) { + if (!result.has(key)) { + result.set(key, storage); + } else { + const old_storage = result.get(key); + assertStorageAreEqual(key, old_storage, storage); + } + } + } + return result; + } + if (data.__tuple_values__) { + return getTensorStorages(data.__tuple_values__); + } + if (data.__is_dict__) { + return getTensorStorages(data.values); + } + if (data.__module_type__) { + return getTensorStorages(data.state); + } + if (data.__tensor_v2__) { + const [storage, offset, size, stride, grad] = data.__tensor_v2__; + const [dtype, key, device, numel] = storage; + return new Map([[key, storage]]); + } + if (data.__qtensor__) { + const [storage, offset, size, stride, quantizer, grad] = data.__qtensor__; + const [dtype, key, device, numel] = storage; + return new Map([[key, storage]]); + } + throw new Error("Can't handle data type.", data); +} + +function getTensorMemoryByDevice(pickles) { + let all_tensors = []; + for (const [name, pickle] of pickles) { + const tensors = getTensorStorages(pickle); + all_tensors.push(...tensors.values()); + } + let result = {}; + for (const storage of all_tensors.values()) { + const [dtype, key, device, numel] = storage; + const size = computeTensorMemory(numel, dtype); + result[device] = (result[device] || 0) + size; + } + return result; +} + +// Make this a separate component so it is rendered lazily. +class OpenTensorMemorySection extends Component { + render({model: {model_data, constants}}) { + let sizes = getTensorMemoryByDevice(new Map([ + ["data", model_data], + ["constants", constants], + ])); + return html` + + + + + + + + + + ${Object.entries(sizes).map(([dev, size]) => html` + + + + `)} + +
DeviceBytesHuman
${dev}${size}${humanFileSize(size)}
`; + } +} + +function TensorMemorySection({model}) { + return html` + <${Hider} name="Tensor Memory" shown=false> + <${OpenTensorMemorySection} model=${model} />`; +} + +class AuxContentPane extends Component { + constructor() { + super(); + this.state = { + blame_info: null, + }; + } + + doBlame(arg) { + this.setState({...this.state, blame_info: arg}); + } + + render({model: {interned_strings}}, {blame_info}) { + let blame_content = ""; + if (blame_info) { + const {ist_file, line, ist_s_text, s_start, s_end} = blame_info; + let s_text = interned_strings[ist_s_text]; + if (s_start != 0 || s_end != s_text.length) { + let prefix = s_text.slice(0, s_start); + let main = s_text.slice(s_start, s_end); + let suffix = s_text.slice(s_end); + s_text = html`${prefix}${main}${suffix}`; + } + blame_content = html` +

${interned_strings[ist_file]}:${line}

+
${s_start}:${s_end}
+
${s_text}

+ `; + } + return html` + +
+ ${blame_content} + `; + } +} + +class App extends Component { + constructor() { + super(); + this.state = { + err: false, + model: null, + }; + } + + componentDidMount() { + const app = this; + if (BURNED_IN_MODEL_INFO !== null) { + app.setState({model: BURNED_IN_MODEL_INFO}); + } else { + fetch("./model_info.json").then(function(response) { + if (!response.ok) { + throw new Error("Response not ok."); + } + return response.json(); + }).then(function(body) { + app.setState({model: body}); + }).catch(function(error) { + console.log("Top-level error: ", error); + }); + } + } + + componentDidCatch(error) { + void(error); + this.setState({...this.state, err: true}); + } + + render(_, {err}) { + if (this.state.model === null) { + return html`

Loading...

`; + } + + const model = this.state.model.model; + + let error_msg = ""; + if (err) { + error_msg = html`

An error occurred. Check console

`; + } + + return html` + ${error_msg} +
+

TorchScript Model (version ${model.version}): ${model.title}

+ + <${ModelSizeSection} model=${model}/> + <${StructuredDataSection} name="Model Data" data=${model.model_data} shown=true/> + <${StructuredDataSection} name="Constants" data=${model.constants} shown=false/> + <${ZipContentsSection} model=${model}/> + <${CodeSection} model=${model}/> + <${ExtraJsonSection} files=${model.extra_files_jsons}/> + <${ExtraPicklesSection} files=${model.extra_pickles}/> + <${TensorMemorySection} model=${model}/> +
+
+ <${AuxContentPane} + err=${this.state.error} + model=${model} + ref=${(p) => blame.setAuxContentPane(p)}/> +
+ `; + } +} + +render(h(App), document.body); diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/model_dump/htm.mjs b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/model_dump/htm.mjs new file mode 100644 index 0000000000000000000000000000000000000000..06f25a13d8021ff4f43de442bbf0279f24735d6c --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/model_dump/htm.mjs @@ -0,0 +1,2 @@ +// HTM, Apache License +var n=function(t,s,r,e){var u;s[0]=0;for(var h=1;h=5&&((e||!n&&5===r)&&(h.push(r,0,e,s),r=6),n&&(h.push(r,n,0,s),r=6)),e=""},a=0;a"===t?(r=1,e=""):e=t+e[0]:u?t===u?u="":e+=t:'"'===t||"'"===t?u=t:">"===t?(p(),r=1):r&&("="===t?(r=5,s=e,e=""):"/"===t&&(r<5||">"===n[a][l+1])?(p(),3===r&&(h=h[0]),r=h,(h=h[0]).push(2,0,r),r=0):" "===t||"\t"===t||"\n"===t||"\r"===t?(p(),r=2):e+=t),3===r&&"!--"===e&&(r=4,h=h[0])}return p(),h}(s)),r),arguments,[])).length>1?r:r[0]} diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/model_dump/preact.mjs b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/model_dump/preact.mjs new file mode 100644 index 0000000000000000000000000000000000000000..8c85bd948c6772ca8d40fc8d6fab6a220d55a1ef --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/model_dump/preact.mjs @@ -0,0 +1,2 @@ +// Preact, MIT License +var n,l,u,i,t,o,r={},f=[],e=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function c(e,n){for(var t in n)e[t]=n[t];return e}function s(e){var n=e.parentNode;n&&n.removeChild(e)}function a(e,n,t){var _,l,o,r=arguments,i={};for(o in n)"key"==o?_=n[o]:"ref"==o?l=n[o]:i[o]=n[o];if(arguments.length>3)for(t=[t],o=3;o0?v(m.type,m.props,m.key,null,m.__v):m)){if(m.__=t,m.__b=t.__b+1,null===(h=P[p])||h&&m.key==h.key&&m.type===h.type)P[p]=void 0;else for(a=0;a3)for(t=[t],o=3;o + + + TorchScript Model + + + + + + + + diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/model_zoo.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/model_zoo.py new file mode 100644 index 0000000000000000000000000000000000000000..e0c6004e23ea806a2c83e12cd2998e0279e0b16f --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/model_zoo.py @@ -0,0 +1,2 @@ +# torchvision imports tqdm from here. +from torch.hub import tqdm, load_state_dict_from_url as load_url # noqa: F401 diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/module_tracker.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/module_tracker.py new file mode 100644 index 0000000000000000000000000000000000000000..7b5a8aad4dda9880c860850e42071a55ee7442e5 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/module_tracker.py @@ -0,0 +1,160 @@ +# mypy: allow-untyped-defs +import logging +import weakref +from typing import TYPE_CHECKING + +import torch +from torch.autograd.graph import register_multi_grad_hook +from torch.nn.modules.module import ( + register_module_forward_hook, + register_module_forward_pre_hook, +) +from torch.utils._pytree import tree_flatten + + +if TYPE_CHECKING: + from torch.utils.hooks import RemovableHandle + + +logger = logging.getLogger(__name__) + + +__all__ = ["ModuleTracker"] + + +class ModuleTracker: + """ + ``ModuleTracker`` is a context manager that tracks the nn.Module hierarchy during execution + so that other system can query which Module is currently being executed (or its backward is being + executed). + + You can access the ``parents`` attribute on this context manager to get the set of all the + Modules currently being executed via their fqn (fully qualified name, also used as the key within + the state_dict). + You can access the ``is_bw`` attribute to know if you are currently running in backward or not. + + Note that ``parents`` is never empty and always contains the "Global" key. The ``is_bw`` flag + will remain ``True`` after the forward until another Module is executed. If you need it to be + more accurate, please submit an issue requesting this. Adding a map from fqn to the module instance + is possible but not done yet, please submit an issue requesting this if you need it. + + Example usage + + .. code-block:: python + + mod = torch.nn.Linear(2, 2) + + with ModuleTracker() as tracker: + # Access anything during the forward pass + def my_linear(m1, m2, bias): + print(f"Current modules: {tracker.parents}") + return torch.mm(m1, m2.t()) + bias + + torch.nn.functional.linear = my_linear + + mod(torch.rand(2, 2)) + + """ + + parents: set[str] + """ + A Set containing the fqn for each module currently running their forward + """ + + def __init__(self) -> None: + self.parents = {"Global"} + self._known_modules: weakref.WeakKeyDictionary = weakref.WeakKeyDictionary() + self._seen_modules: weakref.WeakSet = weakref.WeakSet() + self._has_callback = False + self._hooks: list[RemovableHandle] = [] + + def _maybe_set_engine_callback(self) -> None: + # This assumes no concurrent calls to backward + if self._has_callback: + return + + def callback() -> None: + self.parents = {"Global"} + self._has_callback = False + + torch.autograd.Variable._execution_engine.queue_callback(callback) + self._has_callback = True + + @property + def is_bw(self): + """ + A boolean marking if this is currently running during the backward pass or not + """ + return torch._C._current_graph_task_id() != -1 + + def _get_mod_name(self, mod): + if mod not in self._known_modules: + self._known_modules[mod] = type(mod).__name__ + mod_name = self._known_modules[mod] + if mod not in self._seen_modules: + for name, submod in mod.named_children(): + self._known_modules[submod] = f"{mod_name}.{name}" + self._get_mod_name(submod) + self._seen_modules.add(mod) + return mod_name + + def _get_append_fn(self, name, is_bw): + def fn(*args) -> None: + if is_bw: + self._maybe_set_engine_callback() + if name in self.parents: + logger.info( + "The module hierarchy tracking seems to be broken as this Module was already entered. %s during %s", + name, + "backward" if is_bw else "forward", + ) + self.parents.add(name) + + return fn + + def _get_pop_fn(self, name, is_bw): + def fn(*args) -> None: + if name in self.parents: + self.parents.remove(name) + else: + logger.info( + "The Module hierarchy tracking is confused as we're exiting a Module that was never entered. %s during %s", + name, + "backward" if is_bw else "forward", + ) + + return fn + + def _fw_pre_hook(self, mod, input) -> None: + name = self._get_mod_name(mod) + self._get_append_fn(name, False)() + + args, _ = tree_flatten(input) + tensors = [a for a in args if isinstance(a, torch.Tensor) and a.requires_grad] + if tensors: + self._hooks.append( + register_multi_grad_hook(tensors, self._get_pop_fn(name, True)) + ) + + def _fw_post_hook(self, mod, input, output) -> None: + name = self._get_mod_name(mod) + self._get_pop_fn(name, False)() + + args, _ = tree_flatten(output) + tensors = [a for a in args if isinstance(a, torch.Tensor) and a.requires_grad] + if tensors: + self._hooks.append( + register_multi_grad_hook(tensors, self._get_append_fn(name, True)) + ) + + def __enter__(self): + self._fw_pre_handle = register_module_forward_pre_hook(self._fw_pre_hook) + self._fw_post_handle = register_module_forward_hook(self._fw_post_hook) + return self + + def __exit__(self, *args): + self._fw_pre_handle.remove() + self._fw_post_handle.remove() + for hook in self._hooks: + hook.remove() + self._hooks.clear() diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/serialization/__init__.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/serialization/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..d63bc18b69b138a026622de599aed656cc868c8e --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/serialization/__init__.py @@ -0,0 +1 @@ +from . import config diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/serialization/config.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/serialization/config.py new file mode 100644 index 0000000000000000000000000000000000000000..c3e6729c68583f7206d07df7bfa2666007a6bd67 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/serialization/config.py @@ -0,0 +1,25 @@ +import sys +from typing import Optional as _Optional, TYPE_CHECKING as _TYPE_CHECKING + + +if _TYPE_CHECKING: + from torch.serialization import LoadEndianness as _LoadEndianess + +from torch.utils._config_module import install_config_module as _install_config_module + + +class load: + mmap: bool = False + endianness: _Optional["_LoadEndianess"] = None + # MAP_PRIVATE = 2 + mmap_flags: int | None = None if sys.platform == "win32" else 2 + calculate_storage_offsets: bool = False + + +class save: + compute_crc32: bool = True + use_pinned_memory_for_d2h: bool = False + storage_alignment: int = 64 + + +_install_config_module(sys.modules[__name__]) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/show_pickle.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/show_pickle.py new file mode 100644 index 0000000000000000000000000000000000000000..269ba3fbda4230c71ff14fe0e97872f6a8c57e6d --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/show_pickle.py @@ -0,0 +1,151 @@ +#!/usr/bin/env python3 +# mypy: allow-untyped-defs +import sys +import pickle +import struct +import pprint +import zipfile +import fnmatch +from typing import Any, IO + +__all__ = ["FakeObject", "FakeClass", "DumpUnpickler", "main"] + +class FakeObject: + def __init__(self, module, name, args) -> None: + self.module = module + self.name = name + self.args = args + # NOTE: We don't distinguish between state never set and state set to None. + self.state = None + + def __repr__(self) -> str: + state_str = "" if self.state is None else f"(state={self.state!r})" + return f"{self.module}.{self.name}{self.args!r}{state_str}" + + def __setstate__(self, state): + self.state = state + + @staticmethod + def pp_format(printer, obj, stream, indent, allowance, context, level) -> None: + if not obj.args and obj.state is None: + stream.write(repr(obj)) + return + if obj.state is None: + stream.write(f"{obj.module}.{obj.name}") + printer._format(obj.args, stream, indent + 1, allowance + 1, context, level) + return + if not obj.args: + stream.write(f"{obj.module}.{obj.name}()(state=\n") + indent += printer._indent_per_level + stream.write(" " * indent) + printer._format(obj.state, stream, indent, allowance + 1, context, level + 1) + stream.write(")") + return + raise Exception("Need to implement") # noqa: TRY002 + + +class FakeClass: + def __init__(self, module, name) -> None: + self.module = module + self.name = name + self.__new__ = self.fake_new # type: ignore[assignment] + + def __repr__(self) -> str: + return f"{self.module}.{self.name}" + + def __call__(self, *args): + return FakeObject(self.module, self.name, args) + + def fake_new(self, *args): + return FakeObject(self.module, self.name, args[1:]) + + +class DumpUnpickler(pickle._Unpickler): # type: ignore[name-defined] + def __init__( + self, + file, + *, + catch_invalid_utf8=False, + **kwargs) -> None: + super().__init__(file, **kwargs) + self.catch_invalid_utf8 = catch_invalid_utf8 + + def find_class(self, module, name): + return FakeClass(module, name) + + def persistent_load(self, pid): + return FakeObject("pers", "obj", (pid,)) + + dispatch = dict(pickle._Unpickler.dispatch) # type: ignore[attr-defined] + + # Custom objects in TorchScript are able to return invalid UTF-8 strings + # from their pickle (__getstate__) functions. Install a custom loader + # for strings that catches the decode exception and replaces it with + # a sentinel object. + def load_binunicode(self) -> None: + strlen, = struct.unpack(" sys.maxsize: + raise Exception("String too long.") # noqa: TRY002 + str_bytes = self.read(strlen) # type: ignore[attr-defined] + obj: Any + try: + obj = str(str_bytes, "utf-8", "surrogatepass") + except UnicodeDecodeError as exn: + if not self.catch_invalid_utf8: + raise + obj = FakeObject("builtin", "UnicodeDecodeError", (str(exn),)) + self.append(obj) # type: ignore[attr-defined] + dispatch[pickle.BINUNICODE[0]] = load_binunicode # type: ignore[assignment] + + @classmethod + def dump(cls, in_stream, out_stream): + value = cls(in_stream).load() + pprint.pprint(value, stream=out_stream) + return value + + +def main(argv, output_stream=None) -> int | None: + if len(argv) != 2: + # Don't spam stderr if not using stdout. + if output_stream is not None: + raise Exception("Pass argv of length 2.") # noqa: TRY002 + sys.stderr.write("usage: show_pickle PICKLE_FILE\n") + sys.stderr.write(" PICKLE_FILE can be any of:\n") + sys.stderr.write(" path to a pickle file\n") + sys.stderr.write(" file.zip@member.pkl\n") + sys.stderr.write(" file.zip@*/pattern.*\n") + sys.stderr.write(" (shell glob pattern for members)\n") + sys.stderr.write(" (only first match will be shown)\n") + return 2 + + fname = argv[1] + handle: IO[bytes] + if "@" not in fname: + with open(fname, "rb") as handle: + DumpUnpickler.dump(handle, output_stream) + else: + zfname, mname = fname.split("@", 1) + with zipfile.ZipFile(zfname) as zf: + if "*" not in mname: + with zf.open(mname) as handle: + DumpUnpickler.dump(handle, output_stream) + else: + found = False + for info in zf.infolist(): + if fnmatch.fnmatch(info.filename, mname): + with zf.open(info) as handle: + DumpUnpickler.dump(handle, output_stream) + found = True + break + if not found: + raise Exception(f"Could not find member matching {mname} in {zfname}") # noqa: TRY002 + + +if __name__ == "__main__": + # This hack works on every version of Python I've tested. + # I've tested on the following versions: + # 3.7.4 + if True: + pprint.PrettyPrinter._dispatch[FakeObject.__repr__] = FakeObject.pp_format # type: ignore[attr-defined] + + sys.exit(main(sys.argv)) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/tensorboard/__init__.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/tensorboard/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..a9b2ac5edd05e16ef51e75f2ca68864b65da5d58 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/tensorboard/__init__.py @@ -0,0 +1,19 @@ +import tensorboard +from torch._vendor.packaging.version import Version + +if not hasattr(tensorboard, "__version__") or Version( + tensorboard.__version__ +) < Version("1.15"): + raise ImportError("TensorBoard logging requires TensorBoard version 1.15 or above") + +del Version +del tensorboard + +from .writer import FileWriter, SummaryWriter +from tensorboard.summary.writer.record_writer import RecordWriter + +__all__ = [ + "FileWriter", + "RecordWriter", + "SummaryWriter", +] diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/tensorboard/_convert_np.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/tensorboard/_convert_np.py new file mode 100644 index 0000000000000000000000000000000000000000..f0e8910580de16d9e7cf90f10d6327556e9a37a6 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/tensorboard/_convert_np.py @@ -0,0 +1,37 @@ +"""This module converts objects into numpy array.""" + +import numpy as np + +import torch + + +def make_np(x: torch.Tensor) -> np.ndarray: + """ + Convert an object into numpy array. + + Args: + x: An instance of torch tensor + + Returns: + numpy.array: Numpy array + """ + if isinstance(x, np.ndarray): + return x + if np.isscalar(x): + return np.array([x]) + if isinstance(x, torch.Tensor): + if x.device.type == "meta": + return np.random.randn(1) + return _prepare_pytorch(x) + raise NotImplementedError( + f"Got {type(x)}, but numpy array or torch tensor are expected." + ) + + +def _prepare_pytorch(x: torch.Tensor) -> np.ndarray: + if x.dtype == torch.bfloat16: + x = x.to(torch.float16) + # pyrefly: ignore [bad-assignment] + x = x.detach().cpu().numpy() + # pyrefly: ignore [bad-return] + return x diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/tensorboard/_embedding.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/tensorboard/_embedding.py new file mode 100644 index 0000000000000000000000000000000000000000..73413e219d0efbabe7d66747bd108ee5e8be4319 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/tensorboard/_embedding.py @@ -0,0 +1,87 @@ +# mypy: allow-untyped-defs +import math +import numpy as np +from ._convert_np import make_np +from ._utils import make_grid +from tensorboard.compat import tf +from tensorboard.plugins.projector.projector_config_pb2 import EmbeddingInfo + + +_HAS_GFILE_JOIN = hasattr(tf.io.gfile, "join") + + +def _gfile_join(a, b): + # The join API is different between tensorboard's TF stub and TF: + # https://github.com/tensorflow/tensorboard/issues/6080 + # We need to try both because `tf` may point to either the stub or the real TF. + if _HAS_GFILE_JOIN: + return tf.io.gfile.join(a, b) + else: + fs = tf.io.gfile.get_filesystem(a) + return fs.join(a, b) + + +def make_tsv(metadata, save_path, metadata_header=None) -> None: + if not metadata_header: + metadata = [str(x) for x in metadata] + else: + if len(metadata_header) != len( + metadata[0] + ): + raise AssertionError("len of header must be equal to the number of columns in metadata") + metadata = ["\t".join(str(e) for e in l) for l in [metadata_header] + metadata] + + metadata_bytes = tf.compat.as_bytes("\n".join(metadata) + "\n") + with tf.io.gfile.GFile(_gfile_join(save_path, "metadata.tsv"), "wb") as f: + f.write(metadata_bytes) + + +# https://github.com/tensorflow/tensorboard/issues/44 image label will be squared +def make_sprite(label_img, save_path) -> None: + from PIL import Image + from io import BytesIO + + # this ensures the sprite image has correct dimension as described in + # https://www.tensorflow.org/get_started/embedding_viz + nrow = math.ceil((label_img.size(0)) ** 0.5) + arranged_img_CHW = make_grid(make_np(label_img), ncols=nrow) + + # augment images so that #images equals nrow*nrow + arranged_augment_square_HWC = np.zeros( + (arranged_img_CHW.shape[2], arranged_img_CHW.shape[2], 3) + ) + arranged_img_HWC = arranged_img_CHW.transpose(1, 2, 0) # chw -> hwc + arranged_augment_square_HWC[: arranged_img_HWC.shape[0], :, :] = arranged_img_HWC + im = Image.fromarray(np.uint8((arranged_augment_square_HWC * 255).clip(0, 255))) + + with BytesIO() as buf: + im.save(buf, format="PNG") + im_bytes = buf.getvalue() + + with tf.io.gfile.GFile(_gfile_join(save_path, "sprite.png"), "wb") as f: + f.write(im_bytes) + + +def get_embedding_info(metadata, label_img, subdir, global_step, tag): + info = EmbeddingInfo() + info.tensor_name = f"{tag}:{str(global_step).zfill(5)}" + info.tensor_path = _gfile_join(subdir, "tensors.tsv") + if metadata is not None: + info.metadata_path = _gfile_join(subdir, "metadata.tsv") + if label_img is not None: + info.sprite.image_path = _gfile_join(subdir, "sprite.png") + info.sprite.single_image_dim.extend([label_img.size(3), label_img.size(2)]) + return info + + +def write_pbtxt(save_path, contents) -> None: + config_path = _gfile_join(save_path, "projector_config.pbtxt") + with tf.io.gfile.GFile(config_path, "wb") as f: + f.write(tf.compat.as_bytes(contents)) + + +def make_mat(matlist, save_path) -> None: + with tf.io.gfile.GFile(_gfile_join(save_path, "tensors.tsv"), "wb") as f: + for x in matlist: + x = [str(i.item()) for i in x] + f.write(tf.compat.as_bytes("\t".join(x) + "\n")) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/tensorboard/_onnx_graph.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/tensorboard/_onnx_graph.py new file mode 100644 index 0000000000000000000000000000000000000000..59d1d5b5f0a5cc0bf1d3694184b9727661d06093 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/tensorboard/_onnx_graph.py @@ -0,0 +1,60 @@ +# mypy: allow-untyped-defs +from tensorboard.compat.proto.graph_pb2 import GraphDef +from tensorboard.compat.proto.node_def_pb2 import NodeDef +from tensorboard.compat.proto.versions_pb2 import VersionDef +from tensorboard.compat.proto.attr_value_pb2 import AttrValue +from tensorboard.compat.proto.tensor_shape_pb2 import TensorShapeProto + + +def load_onnx_graph(fname): + import onnx + m = onnx.load(fname) # type: ignore[attr-defined] + g = m.graph + return parse(g) + + +def parse(graph): + nodes = [] + import itertools + + nodes_proto = list(itertools.chain(graph.input, graph.output)) + + for node in nodes_proto: + print(node.name) + shapeproto = TensorShapeProto( + dim=[ + TensorShapeProto.Dim(size=d.dim_value) + for d in node.type.tensor_type.shape.dim + ] + ) + nodes.append( + NodeDef( + name=node.name.encode(encoding="utf_8"), + op="Variable", + input=[], + attr={ + "dtype": AttrValue(type=node.type.tensor_type.elem_type), + "shape": AttrValue(shape=shapeproto), + }, + ) + ) + + for node in graph.node: + _attr = [" = ".join([str(f[1]) for f in s.ListFields()]) for s in node.attribute] + attr = ", ".join(_attr).encode(encoding="utf_8") + print(node.output[0]) + nodes.append( + NodeDef( + name=node.output[0].encode(encoding="utf_8"), + op=node.op_type, + input=node.input, + attr={"parameters": AttrValue(s=attr)}, + ) + ) + + # two pass token replacement, appends opname to object id + mapping = {} + for node in nodes: + mapping[node.name] = node.op + "_" + node.name + + return GraphDef(node=nodes, versions=VersionDef(producer=22)) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/tensorboard/_proto_graph.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/tensorboard/_proto_graph.py new file mode 100644 index 0000000000000000000000000000000000000000..8a9dc8536755c173f64bd5186af680d8438067ab --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/tensorboard/_proto_graph.py @@ -0,0 +1,55 @@ +import torch + +from collections.abc import Sequence +from tensorboard.compat.proto.node_def_pb2 import NodeDef +from tensorboard.compat.proto.attr_value_pb2 import AttrValue +from tensorboard.compat.proto.tensor_shape_pb2 import TensorShapeProto + + +def attr_value_proto(dtype: object, shape: Sequence[int] | None, s: str | None) -> dict[str, AttrValue]: + """Create a dict of objects matching a NodeDef's attr field. + + Follows https://github.com/tensorflow/tensorboard/blob/master/tensorboard/compat/proto/attr_value.proto + specifically designed for a NodeDef. The values have been reverse engineered from + standard TensorBoard logged data. + """ + attr = {} + if s is not None: + attr["attr"] = AttrValue(s=s.encode(encoding="utf_8")) + if shape is not None: + shapeproto = tensor_shape_proto(shape) + attr["_output_shapes"] = AttrValue(list=AttrValue.ListValue(shape=[shapeproto])) + return attr + + +def tensor_shape_proto(outputsize: Sequence[int]) -> TensorShapeProto: + """Create an object matching a tensor_shape field. + + Follows https://github.com/tensorflow/tensorboard/blob/master/tensorboard/compat/proto/tensor_shape.proto . + """ + return TensorShapeProto(dim=[TensorShapeProto.Dim(size=d) for d in outputsize]) + + +def node_proto( + name: str, + op: str = "UnSpecified", + input: list[str] | str | None = None, + dtype: torch.dtype | None = None, + shape: tuple[int, ...] | None = None, + outputsize: Sequence[int] | None = None, + attributes: str = "", +) -> NodeDef: + """Create an object matching a NodeDef. + + Follows https://github.com/tensorflow/tensorboard/blob/master/tensorboard/compat/proto/node_def.proto . + """ + if input is None: + input = [] + if not isinstance(input, list): + input = [input] + return NodeDef( + name=name.encode(encoding="utf_8"), + op=op, + input=input, + attr=attr_value_proto(dtype, outputsize, attributes), + ) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/tensorboard/_pytorch_graph.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/tensorboard/_pytorch_graph.py new file mode 100644 index 0000000000000000000000000000000000000000..e8f9fa11a8e7aca80af73a356768e8f1e71610fb --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/tensorboard/_pytorch_graph.py @@ -0,0 +1,378 @@ +# mypy: allow-untyped-defs +from collections import OrderedDict +import contextlib +from typing import Any + +from tensorboard.compat.proto.config_pb2 import RunMetadata +from tensorboard.compat.proto.graph_pb2 import GraphDef +from tensorboard.compat.proto.step_stats_pb2 import StepStats, DeviceStepStats +from tensorboard.compat.proto.versions_pb2 import VersionDef + +import torch +from ._proto_graph import node_proto + +methods_OP = [ + "attributeNames", + "hasMultipleOutputs", + "hasUses", + "inputs", + "kind", + "outputs", + "outputsSize", + "scopeName", +] +# Some additional methods to explure for methods_IO are +# +# 'unique' (type int) +# 'type' (type >) +# +# But the below are sufficient for now. +methods_IO = ["node", "offset", "debugName"] + +GETATTR_KIND = "prim::GetAttr" +CLASSTYPE_KIND = "ClassType" + + +class NodeBase: + def __init__( + self, + debugName=None, + inputs=None, + scope=None, + tensor_size=None, + op_type="UnSpecified", + attributes="", + ) -> None: + # TODO; Specify a __slots__ for this class or potentially + # used namedtuple instead + self.debugName = debugName + self.inputs = inputs + self.tensor_size = tensor_size + self.kind = op_type + self.attributes = attributes + self.scope = scope + + def __repr__(self) -> str: + repr = [] + repr.append(str(type(self))) + repr.extend( + m + ": " + str(getattr(self, m)) + str(type(getattr(self, m))) + for m in dir(self) + if "__" not in m + ) + return "\n".join(repr) + "\n\n" + + +class NodePy(NodeBase): + def __init__(self, node_cpp, valid_methods) -> None: + super().__init__(node_cpp) + valid_methods = valid_methods[:] + self.inputs = [] + + for m in valid_methods: + if m == "inputs" or m == "outputs": + list_of_node = list(getattr(node_cpp, m)()) + io_unique_names = [] + io_tensor_sizes = [] + for n in list_of_node: + io_unique_names.append(n.debugName()) + if n.isCompleteTensor(): + io_tensor_sizes.append(n.type().sizes()) + else: + io_tensor_sizes.append(None) + + setattr(self, m, io_unique_names) + setattr(self, m + "tensor_size", io_tensor_sizes) + + else: + setattr(self, m, getattr(node_cpp, m)()) + + +class NodePyIO(NodePy): + def __init__(self, node_cpp, input_or_output=None) -> None: + super().__init__(node_cpp, methods_IO) + try: + tensor_size = node_cpp.type().sizes() + except RuntimeError: + tensor_size = [ + 1, + ] # fail when constant model is used. + self.tensor_size = tensor_size + # Kind attribute string is purely descriptive and will be shown + # in detailed information for the node in TensorBoard's graph plugin. + # + # NodePyOP nodes get this from their kind() method. + self.kind = "Parameter" + if input_or_output: + self.input_or_output = input_or_output + self.kind = "IO Node" + + +class NodePyOP(NodePy): + def __init__(self, node_cpp) -> None: + super().__init__(node_cpp, methods_OP) + # Replace single quote which causes strange behavior in TensorBoard + # TODO: See if we can remove this in the future + self.attributes = str( + {k: _node_get(node_cpp, k) for k in node_cpp.attributeNames()} + ).replace("'", " ") + self.kind = node_cpp.kind() + + +class GraphPy: + """Helper class to convert torch.nn.Module to GraphDef proto and visualization with TensorBoard. + + GraphDef generation operates in two passes: + + In the first pass, all nodes are read and saved to two lists. + One list is for input/output nodes (nodes_io), which only have inbound + or outbound connections, but not both. Another list is for internal + operator nodes (nodes_op). The first pass also saves all scope name + appeared in the nodes in scope_name_appeared list for later processing. + + In the second pass, scope names are fully applied to all nodes. + debugNameToScopedName is a mapping from a node's ID to its fully qualified + scope name. e.g. Net1/Linear[0]/1. Unfortunately torch.jit doesn't have + totally correct scope output, so this is nontrivial. The function + populate_namespace_from_OP_to_IO and find_common_root are used to + assign scope name to a node based on the connection between nodes + in a heuristic kind of way. Bookkeeping is done with shallowest_scope_name + and scope_name_appeared. + """ + + def __init__(self) -> None: + self.nodes_op = [] + self.nodes_io = OrderedDict() + self.unique_name_to_scoped_name = {} + self.shallowest_scope_name = "default" + self.scope_name_appeared = [] + + def append(self, x) -> None: + if isinstance(x, NodePyIO): + self.nodes_io[x.debugName] = x + if isinstance(x, NodePyOP): + self.nodes_op.append(x) + + def printall(self) -> None: + print("all nodes") + for node in self.nodes_op: + print(node) + for key in self.nodes_io: + print(self.nodes_io[key]) + + def find_common_root(self) -> None: + for fullscope in self.scope_name_appeared: + if fullscope: + self.shallowest_scope_name = fullscope.split("/")[0] + + def populate_namespace_from_OP_to_IO(self) -> None: + for node in self.nodes_op: + for node_output, outputSize in zip(node.outputs, node.outputstensor_size, strict=True): + self.scope_name_appeared.append(node.scopeName) + self.nodes_io[node_output] = NodeBase( + node_output, + node.inputs, + node.scopeName, + outputSize, + op_type=node.kind, + attributes=node.attributes, + ) + + self.find_common_root() + + for node in self.nodes_op: + for input_node_id in node.inputs: + self.unique_name_to_scoped_name[input_node_id] = ( + node.scopeName + "/" + input_node_id + ) + + for key, node in self.nodes_io.items(): + if type(node) is NodeBase: + # pyrefly: ignore [unsupported-operation] + self.unique_name_to_scoped_name[key] = node.scope + "/" + node.debugName + if hasattr(node, "input_or_output"): + self.unique_name_to_scoped_name[key] = ( + node.input_or_output + "/" + node.debugName + ) + + if hasattr(node, "scope") and node.scope is not None: + self.unique_name_to_scoped_name[key] = node.scope + "/" + node.debugName + if node.scope == "" and self.shallowest_scope_name: + self.unique_name_to_scoped_name[node.debugName] = ( + + self.shallowest_scope_name + "/" + node.debugName + ) + + # replace name + for key, node in self.nodes_io.items(): + self.nodes_io[key].inputs = [ + self.unique_name_to_scoped_name[node_input_id] + for node_input_id in node.inputs + ] + if node.debugName in self.unique_name_to_scoped_name: + self.nodes_io[key].debugName = self.unique_name_to_scoped_name[ + node.debugName + ] + + def to_proto(self): + """Convert graph representation of GraphPy object to TensorBoard required format.""" + # TODO: compute correct memory usage and CPU time once + # PyTorch supports it + nodes = [ + node_proto( + v.debugName, + input=v.inputs, + outputsize=v.tensor_size, + op=v.kind, + attributes=v.attributes, + ) + for v in self.nodes_io.values() + ] + return nodes + + +def parse(graph, trace, args=None, omit_useless_nodes=True): + """Parse an optimized PyTorch model graph and produces a list of nodes and node stats. + + Useful for eventual conversion to TensorBoard protobuf format. + + Args: + graph (PyTorch module): The model graph to be parsed. + trace (PyTorch JIT TracedModule): The model trace to be parsed. + args (tuple): input tensor[s] for the model. + omit_useless_nodes (boolean): Whether to remove nodes from the graph. + """ + nodes_py = GraphPy() + for node in graph.inputs(): + if omit_useless_nodes: + if ( + len(node.uses()) == 0 + ): # number of user of the node (= number of outputs/ fanout) + continue + + if node.type().kind() != CLASSTYPE_KIND: + nodes_py.append(NodePyIO(node, "input")) + + attr_to_scope: dict[Any, str] = {} + for node in graph.nodes(): + if node.kind() == GETATTR_KIND: + attr_name = node.s("name") + attr_key = node.output().debugName() + parent = node.input().node() + if ( + parent.kind() == GETATTR_KIND + ): # If the parent node is not the top-level "self" node + parent_attr_key = parent.output().debugName() + parent_scope = attr_to_scope[parent_attr_key] + attr_scope = parent_scope.split("/")[-1] + attr_to_scope[attr_key] = f"{parent_scope}/{attr_scope}.{attr_name}" + else: + attr_to_scope[attr_key] = f"__module.{attr_name}" + # We don't need classtype nodes; scope will provide this information + if node.output().type().kind() != CLASSTYPE_KIND: + node_py = NodePyOP(node) + node_py.scopeName = attr_to_scope[attr_key] # type: ignore[attr-defined] + nodes_py.append(node_py) + else: + nodes_py.append(NodePyOP(node)) + + for i, node in enumerate(graph.outputs()): # Create sink nodes for output ops + node_pyio = NodePyIO(node, "output") + node_pyio.debugName = f"output.{i + 1}" + node_pyio.inputs = [node.debugName()] + nodes_py.append(node_pyio) + + def parse_traced_name(module): + if isinstance(module, torch.jit.TracedModule): + module_name = module._name + else: + module_name = getattr(module, "original_name", "Module") + return module_name + + alias_to_name = {} + base_name = parse_traced_name(trace) + for name, module in trace.named_modules(prefix="__module"): + mod_name = parse_traced_name(module) + attr_name = name.split(".")[-1] + alias_to_name[name] = f"{mod_name}[{attr_name}]" + + for node in nodes_py.nodes_op: + module_aliases = node.scopeName.split("/") + replacements = [ + alias_to_name[alias] if alias in alias_to_name else alias.split(".")[-1] + for alias in module_aliases + ] + node.scopeName = base_name + if any(replacements): + node.scopeName += "/" + "/".join(replacements) + + nodes_py.populate_namespace_from_OP_to_IO() + return nodes_py.to_proto() + + +def graph(model, args, verbose=False, use_strict_trace=True): + """ + Process a PyTorch model and produces a `GraphDef` proto that can be logged to TensorBoard. + + Args: + model (PyTorch module): The model to be parsed. + args (tuple): input tensor[s] for the model. + verbose (bool): Whether to print out verbose information while + processing. + use_strict_trace (bool): Whether to pass keyword argument `strict` to + `torch.jit.trace`. Pass False when you want the tracer to + record your mutable container types (list, dict) + """ + with _set_model_to_eval(model): + try: + trace = torch.jit.trace(model, args, strict=use_strict_trace) + graph = trace.graph + torch._C._jit_pass_inline(graph) + except RuntimeError as e: + print(e) + print("Error occurs, No graph saved") + raise e + + if verbose: + print(graph) + list_of_nodes = parse(graph, trace, args) + # We are hardcoding that this was run on CPU even though it might have actually + # run on GPU. Note this is what is shown in TensorBoard and has no bearing + # on actual execution. + # TODO: See if we can extract GPU vs CPU information from the PyTorch model + # and pass it correctly to TensorBoard. + # + # Definition of StepStats and DeviceStepStats can be found at + # https://github.com/tensorflow/tensorboard/blob/master/tensorboard/plugins/graph/tf_graph_common/proto.ts + # and + # https://github.com/tensorflow/tensorboard/blob/master/tensorboard/compat/proto/step_stats.proto + stepstats = RunMetadata( + step_stats=StepStats(dev_stats=[DeviceStepStats(device="/device:CPU:0")]) + ) + return GraphDef(node=list_of_nodes, versions=VersionDef(producer=22)), stepstats + # The producer version has been reverse engineered from standard + # TensorBoard logged data. + + +@contextlib.contextmanager +def _set_model_to_eval(model): + """Context manager to temporarily set the training mode of ``model`` to eval.""" + if not isinstance(model, torch.jit.ScriptFunction): + originally_training = model.training + model.train(False) + try: + yield + finally: + model.train(originally_training) + else: + # Do nothing for ScriptFunction + try: + yield + finally: + pass + + +def _node_get(node: torch._C.Node, key: str): + """Get attributes of a node which is polymorphic over return type.""" + sel = node.kindOf(key) + return getattr(node, sel)(key) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/tensorboard/_utils.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/tensorboard/_utils.py new file mode 100644 index 0000000000000000000000000000000000000000..0d1a0289f4230c9b131733695da082651b09a1c9 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/tensorboard/_utils.py @@ -0,0 +1,131 @@ +# mypy: allow-untyped-defs +import numpy as np +import numpy.typing as npt + + +# Functions for converting +def figure_to_image(figures, close=True): + """Render matplotlib figure to numpy format. + + Note that this requires the ``matplotlib`` package. + + Args: + figures (matplotlib.pyplot.figure or list of figures): figure or a list of figures + close (bool): Flag to automatically close the figure + + Returns: + numpy.array: image in [CHW] order + """ + import matplotlib.pyplot as plt + import matplotlib.backends.backend_agg as plt_backend_agg + + def render_to_rgb(figure): + canvas = plt_backend_agg.FigureCanvasAgg(figure) + canvas.draw() + data: npt.NDArray = np.frombuffer(canvas.buffer_rgba(), dtype=np.uint8) + w, h = figure.canvas.get_width_height() + image_hwc = data.reshape([h, w, 4])[:, :, 0:3] + image_chw = np.moveaxis(image_hwc, source=2, destination=0) + if close: + plt.close(figure) + return image_chw + + if isinstance(figures, list): + images = [render_to_rgb(figure) for figure in figures] + return np.stack(images) + else: + image = render_to_rgb(figures) + return image + + +def _prepare_video(V): + """ + Convert a 5D tensor into 4D tensor. + + Convesrion is done from [batchsize, time(frame), channel(color), height, width] (5D tensor) + to [time(frame), new_width, new_height, channel] (4D tensor). + + A batch of images are spread to a grid, which forms a frame. + e.g. Video with batchsize 16 will have a 4x4 grid. + """ + b, t, c, h, w = V.shape + + if V.dtype == np.uint8: + V = np.float32(V) / 255.0 + + def is_power2(num): + return num != 0 and ((num & (num - 1)) == 0) + + # pad to nearest power of 2, all at once + + if not is_power2(V.shape[0]): + + len_addition = int(2 ** V.shape[0].bit_length() - V.shape[0]) + V = np.concatenate((V, np.zeros(shape=(len_addition, t, c, h, w))), axis=0) + + n_rows = 2 ** ((b.bit_length() - 1) // 2) + + n_cols = V.shape[0] // n_rows + + V = np.reshape(V, (n_rows, n_cols, t, c, h, w)) + V = np.transpose(V, axes=(2, 0, 4, 1, 5, 3)) + V = np.reshape(V, (t, n_rows * h, n_cols * w, c)) + + return V + + +def make_grid(I, ncols=8): + # I: N1HW or N3HW + if not isinstance(I, np.ndarray): + raise AssertionError("plugin error, should pass numpy array here") + if I.shape[1] == 1: + I = np.concatenate([I, I, I], 1) + if I.ndim != 4 or I.shape[1] != 3: + raise AssertionError("Input should be a 4D numpy array with 3 channels") + nimg = I.shape[0] + H = I.shape[2] + W = I.shape[3] + ncols = min(nimg, ncols) + nrows = int(np.ceil(float(nimg) / ncols)) + canvas = np.zeros((3, H * nrows, W * ncols), dtype=I.dtype) + i = 0 + for y in range(nrows): + for x in range(ncols): + if i >= nimg: + break + canvas[:, y * H : (y + 1) * H, x * W : (x + 1) * W] = I[i] + i = i + 1 + return canvas + + # if modality == 'IMG': + # if x.dtype == np.uint8: + # x = x.astype(np.float32) / 255.0 + + +def convert_to_HWC(tensor, input_format): # tensor: numpy array + if len(set(input_format)) != len(input_format): + raise AssertionError(f"You can not use the same dimension shordhand twice. \ + input_format: {input_format}") + if len(tensor.shape) != len(input_format): + raise AssertionError(f"size of input tensor and input format are different. \ + tensor shape: {tensor.shape}, input_format: {input_format}") + input_format = input_format.upper() + + if len(input_format) == 4: + index = [input_format.find(c) for c in "NCHW"] + tensor_NCHW = tensor.transpose(index) + tensor_CHW = make_grid(tensor_NCHW) + return tensor_CHW.transpose(1, 2, 0) + + if len(input_format) == 3: + index = [input_format.find(c) for c in "HWC"] + tensor_HWC = tensor.transpose(index) + if tensor_HWC.shape[2] == 1: + tensor_HWC = np.concatenate([tensor_HWC, tensor_HWC, tensor_HWC], 2) + return tensor_HWC + + if len(input_format) == 2: + index = [input_format.find(c) for c in "HW"] + tensor = tensor.transpose(index) + tensor = np.stack([tensor, tensor, tensor], 2) + return tensor diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/tensorboard/summary.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/tensorboard/summary.py new file mode 100644 index 0000000000000000000000000000000000000000..f5d86875387bfe8032a5440208512fea801b79e4 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/tensorboard/summary.py @@ -0,0 +1,986 @@ +# mypy: allow-untyped-defs +import json +import logging +import struct + +from typing import Any + +import torch +import numpy as np + + +from google.protobuf import struct_pb2 + +from tensorboard.compat.proto.summary_pb2 import ( + HistogramProto, + Summary, + SummaryMetadata, +) +from tensorboard.compat.proto.tensor_pb2 import TensorProto +from tensorboard.compat.proto.tensor_shape_pb2 import TensorShapeProto +from tensorboard.plugins.custom_scalar import layout_pb2 +from tensorboard.plugins.pr_curve.plugin_data_pb2 import PrCurvePluginData +from tensorboard.plugins.text.plugin_data_pb2 import TextPluginData + +from ._convert_np import make_np +from ._utils import _prepare_video, convert_to_HWC + +__all__ = [ + "half_to_int", + "int_to_half", + "hparams", + "scalar", + "histogram_raw", + "histogram", + "make_histogram", + "image", + "image_boxes", + "draw_boxes", + "make_image", + "video", + "make_video", + "audio", + "custom_scalars", + "text", + "tensor_proto", + "pr_curve_raw", + "pr_curve", + "compute_curve", + "mesh", +] + +logger = logging.getLogger(__name__) + +def half_to_int(f: float) -> int: + """Casts a half-precision float value into an integer. + + Converts a half precision floating point value, such as `torch.half` or + `torch.bfloat16`, into an integer value which can be written into the + half_val field of a TensorProto for storage. + + To undo the effects of this conversion, use int_to_half(). + + """ + buf = struct.pack("f", f) + return struct.unpack("i", buf)[0] + +def int_to_half(i: int) -> float: + """Casts an integer value to a half-precision float. + + Converts an integer value obtained from half_to_int back into a floating + point value. + + """ + buf = struct.pack("i", i) + return struct.unpack("f", buf)[0] + +def _tensor_to_half_val(t: torch.Tensor) -> list[int]: + return [half_to_int(x) for x in t.flatten().tolist()] + +def _tensor_to_complex_val(t: torch.Tensor) -> list[float]: + return torch.view_as_real(t).flatten().tolist() + +def _tensor_to_list(t: torch.Tensor) -> list[Any]: + return t.flatten().tolist() + +# type maps: torch.Tensor type -> (protobuf type, protobuf val field) +_TENSOR_TYPE_MAP = { + torch.half: ("DT_HALF", "half_val", _tensor_to_half_val), + torch.float16: ("DT_HALF", "half_val", _tensor_to_half_val), + torch.bfloat16: ("DT_BFLOAT16", "half_val", _tensor_to_half_val), + torch.float32: ("DT_FLOAT", "float_val", _tensor_to_list), + torch.float: ("DT_FLOAT", "float_val", _tensor_to_list), + torch.float64: ("DT_DOUBLE", "double_val", _tensor_to_list), + torch.double: ("DT_DOUBLE", "double_val", _tensor_to_list), + torch.int8: ("DT_INT8", "int_val", _tensor_to_list), + torch.uint8: ("DT_UINT8", "int_val", _tensor_to_list), + torch.qint8: ("DT_UINT8", "int_val", _tensor_to_list), + torch.int16: ("DT_INT16", "int_val", _tensor_to_list), + torch.short: ("DT_INT16", "int_val", _tensor_to_list), + torch.int: ("DT_INT32", "int_val", _tensor_to_list), + torch.int32: ("DT_INT32", "int_val", _tensor_to_list), + torch.qint32: ("DT_INT32", "int_val", _tensor_to_list), + torch.int64: ("DT_INT64", "int64_val", _tensor_to_list), + torch.complex32: ("DT_COMPLEX32", "scomplex_val", _tensor_to_complex_val), + torch.chalf: ("DT_COMPLEX32", "scomplex_val", _tensor_to_complex_val), + torch.complex64: ("DT_COMPLEX64", "scomplex_val", _tensor_to_complex_val), + torch.cfloat: ("DT_COMPLEX64", "scomplex_val", _tensor_to_complex_val), + torch.bool: ("DT_BOOL", "bool_val", _tensor_to_list), + torch.complex128: ("DT_COMPLEX128", "dcomplex_val", _tensor_to_complex_val), + torch.cdouble: ("DT_COMPLEX128", "dcomplex_val", _tensor_to_complex_val), + torch.uint8: ("DT_UINT8", "uint32_val", _tensor_to_list), + torch.quint8: ("DT_UINT8", "uint32_val", _tensor_to_list), + torch.quint4x2: ("DT_UINT8", "uint32_val", _tensor_to_list), +} + + +def _calc_scale_factor(tensor) -> int: + converted = tensor.numpy() if not isinstance(tensor, np.ndarray) else tensor + return 1 if converted.dtype == np.uint8 else 255 + + +def _draw_single_box( + image, + xmin, + ymin, + xmax, + ymax, + display_str, + color="black", + color_text="black", + thickness=2, +): + from PIL import ImageDraw, ImageFont + + font = ImageFont.load_default() + draw = ImageDraw.Draw(image) + (left, right, top, bottom) = (xmin, xmax, ymin, ymax) + draw.line( + [(left, top), (left, bottom), (right, bottom), (right, top), (left, top)], + width=thickness, + fill=color, + ) + if display_str: + text_bottom = bottom + # Reverse list and print from bottom to top. + _left, _top, _right, _bottom = font.getbbox(display_str) + text_width, text_height = _right - _left, _bottom - _top + margin = np.ceil(0.05 * text_height) + draw.rectangle( + [ + (left, text_bottom - text_height - 2 * margin), + (left + text_width, text_bottom), + ], + fill=color, + ) + draw.text( + (left + margin, text_bottom - text_height - margin), + display_str, + fill=color_text, + font=font, + ) + return image + + +def hparams(hparam_dict=None, metric_dict=None, hparam_domain_discrete=None): + """Output three `Summary` protocol buffers needed by hparams plugin. + + `Experiment` keeps the metadata of an experiment, such as the name of the + hyperparameters and the name of the metrics. + `SessionStartInfo` keeps key-value pairs of the hyperparameters + `SessionEndInfo` describes status of the experiment e.g. STATUS_SUCCESS + + Args: + hparam_dict: A dictionary that contains names of the hyperparameters + and their values. + metric_dict: A dictionary that contains names of the metrics + and their values. + hparam_domain_discrete: (Optional[Dict[str, List[Any]]]) A dictionary that + contains names of the hyperparameters and all discrete values they can hold + + Returns: + The `Summary` protobufs for Experiment, SessionStartInfo and + SessionEndInfo + """ + import torch + from tensorboard.plugins.hparams.api_pb2 import ( + DataType, + Experiment, + HParamInfo, + MetricInfo, + MetricName, + Status, + ) + from tensorboard.plugins.hparams.metadata import ( + EXPERIMENT_TAG, + PLUGIN_DATA_VERSION, + PLUGIN_NAME, + SESSION_END_INFO_TAG, + SESSION_START_INFO_TAG, + ) + from tensorboard.plugins.hparams.plugin_data_pb2 import ( + HParamsPluginData, + SessionEndInfo, + SessionStartInfo, + ) + + # TODO: expose other parameters in the future. + # hp = HParamInfo(name='lr',display_name='learning rate', + # type=DataType.DATA_TYPE_FLOAT64, domain_interval=Interval(min_value=10, + # max_value=100)) + # mt = MetricInfo(name=MetricName(tag='accuracy'), display_name='accuracy', + # description='', dataset_type=DatasetType.DATASET_VALIDATION) + # exp = Experiment(name='123', description='456', time_created_secs=100.0, + # hparam_infos=[hp], metric_infos=[mt], user='tw') + + if not isinstance(hparam_dict, dict): + logger.warning("parameter: hparam_dict should be a dictionary, nothing logged.") + raise TypeError( + "parameter: hparam_dict should be a dictionary, nothing logged." + ) + if not isinstance(metric_dict, dict): + logger.warning("parameter: metric_dict should be a dictionary, nothing logged.") + raise TypeError( + "parameter: metric_dict should be a dictionary, nothing logged." + ) + + hparam_domain_discrete = hparam_domain_discrete or {} + if not isinstance(hparam_domain_discrete, dict): + raise TypeError( + "parameter: hparam_domain_discrete should be a dictionary, nothing logged." + ) + for k, v in hparam_domain_discrete.items(): + if ( + k not in hparam_dict + or not isinstance(v, list) + or not all(isinstance(d, type(hparam_dict[k])) for d in v) + ): + raise TypeError( + f"parameter: hparam_domain_discrete[{k}] should be a list of same type as hparam_dict[{k}]." + ) + hps = [] + + ssi = SessionStartInfo() + for k, v in hparam_dict.items(): + if v is None: + continue + if isinstance(v, (int, float)): + ssi.hparams[k].number_value = v + + if k in hparam_domain_discrete: + domain_discrete: struct_pb2.ListValue | None = struct_pb2.ListValue( + values=[ + struct_pb2.Value(number_value=d) + for d in hparam_domain_discrete[k] + ] + ) + else: + domain_discrete = None + + hps.append( + HParamInfo( + name=k, + type=DataType.Value("DATA_TYPE_FLOAT64"), + domain_discrete=domain_discrete, + ) + ) + continue + + if isinstance(v, str): + ssi.hparams[k].string_value = v + + if k in hparam_domain_discrete: + domain_discrete = struct_pb2.ListValue( + values=[ + struct_pb2.Value(string_value=d) + for d in hparam_domain_discrete[k] + ] + ) + else: + domain_discrete = None + + hps.append( + HParamInfo( + name=k, + type=DataType.Value("DATA_TYPE_STRING"), + domain_discrete=domain_discrete, + ) + ) + continue + + if isinstance(v, bool): + ssi.hparams[k].bool_value = v + + if k in hparam_domain_discrete: + domain_discrete = struct_pb2.ListValue( + values=[ + struct_pb2.Value(bool_value=d) + for d in hparam_domain_discrete[k] + ] + ) + else: + domain_discrete = None + + hps.append( + HParamInfo( + name=k, + type=DataType.Value("DATA_TYPE_BOOL"), + domain_discrete=domain_discrete, + ) + ) + continue + + if isinstance(v, torch.Tensor): + v = make_np(v)[0] + ssi.hparams[k].number_value = v + hps.append(HParamInfo(name=k, type=DataType.Value("DATA_TYPE_FLOAT64"))) + continue + raise ValueError( + "value should be one of int, float, str, bool, or torch.Tensor" + ) + + content = HParamsPluginData(session_start_info=ssi, version=PLUGIN_DATA_VERSION) + smd = SummaryMetadata( + plugin_data=SummaryMetadata.PluginData( + plugin_name=PLUGIN_NAME, content=content.SerializeToString() + ) + ) + ssi = Summary(value=[Summary.Value(tag=SESSION_START_INFO_TAG, metadata=smd)]) + + mts = [MetricInfo(name=MetricName(tag=k)) for k in metric_dict] + + exp = Experiment(hparam_infos=hps, metric_infos=mts) + + content = HParamsPluginData(experiment=exp, version=PLUGIN_DATA_VERSION) + smd = SummaryMetadata( + plugin_data=SummaryMetadata.PluginData( + plugin_name=PLUGIN_NAME, content=content.SerializeToString() + ) + ) + exp = Summary(value=[Summary.Value(tag=EXPERIMENT_TAG, metadata=smd)]) + + sei = SessionEndInfo(status=Status.Value("STATUS_SUCCESS")) + content = HParamsPluginData(session_end_info=sei, version=PLUGIN_DATA_VERSION) + smd = SummaryMetadata( + plugin_data=SummaryMetadata.PluginData( + plugin_name=PLUGIN_NAME, content=content.SerializeToString() + ) + ) + sei = Summary(value=[Summary.Value(tag=SESSION_END_INFO_TAG, metadata=smd)]) + + return exp, ssi, sei + + +def scalar(name, tensor, collections=None, new_style=False, double_precision=False): + """Output a `Summary` protocol buffer containing a single scalar value. + + The generated Summary has a Tensor.proto containing the input Tensor. + Args: + name: A name for the generated node. Will also serve as the series name in + TensorBoard. + tensor: A real numeric Tensor containing a single value. + collections: Optional list of graph collections keys. The new summary op is + added to these collections. Defaults to `[GraphKeys.SUMMARIES]`. + new_style: Whether to use new style (tensor field) or old style (simple_value + field). New style could lead to faster data loading. + Returns: + A scalar `Tensor` of type `string`. Which contains a `Summary` protobuf. + Raises: + ValueError: If tensor has the wrong shape or type. + """ + tensor = make_np(tensor).squeeze() + if tensor.ndim != 0: + raise AssertionError(f"Tensor should contain one element (0 dimensions). \ + Was given size: {tensor.size} and {tensor.ndim} dimensions.") + # python float is double precision in numpy + scalar = float(tensor) + if new_style: + tensor_proto = TensorProto(float_val=[scalar], dtype="DT_FLOAT") + if double_precision: + tensor_proto = TensorProto(double_val=[scalar], dtype="DT_DOUBLE") + + plugin_data = SummaryMetadata.PluginData(plugin_name="scalars") + smd = SummaryMetadata(plugin_data=plugin_data) + return Summary( + value=[ + Summary.Value( + tag=name, + tensor=tensor_proto, + metadata=smd, + ) + ] + ) + else: + return Summary(value=[Summary.Value(tag=name, simple_value=scalar)]) + + +def tensor_proto(tag, tensor): + """Outputs a `Summary` protocol buffer containing the full tensor. + The generated Summary has a Tensor.proto containing the input Tensor. + Args: + tag: A name for the generated node. Will also serve as the series name in + TensorBoard. + tensor: Tensor to be converted to protobuf + Returns: + A tensor protobuf in a `Summary` protobuf. + Raises: + ValueError: If tensor is too big to be converted to protobuf, or + tensor data type is not supported + """ + if tensor.numel() * tensor.itemsize >= (1 << 31): + raise ValueError( + "tensor is bigger than protocol buffer's hard limit of 2GB in size" + ) + + if tensor.dtype in _TENSOR_TYPE_MAP: + dtype, field_name, conversion_fn = _TENSOR_TYPE_MAP[tensor.dtype] + tensor_proto = TensorProto( + **{ + "dtype": dtype, + "tensor_shape": TensorShapeProto( + dim=[TensorShapeProto.Dim(size=x) for x in tensor.shape] + ), + field_name: conversion_fn(tensor), + }, + ) + else: + raise ValueError(f"{tag} has unsupported tensor dtype {tensor.dtype}") + + plugin_data = SummaryMetadata.PluginData(plugin_name="tensor") + smd = SummaryMetadata(plugin_data=plugin_data) + return Summary(value=[Summary.Value(tag=tag, metadata=smd, tensor=tensor_proto)]) + + +def histogram_raw(name, min, max, num, sum, sum_squares, bucket_limits, bucket_counts): + # pylint: disable=line-too-long + """Output a `Summary` protocol buffer with a histogram. + + The generated + [`Summary`](https://www.tensorflow.org/code/tensorflow/core/framework/summary.proto) + has one summary value containing a histogram for `values`. + Args: + name: A name for the generated node. Will also serve as a series name in + TensorBoard. + min: A float or int min value + max: A float or int max value + num: Int number of values + sum: Float or int sum of all values + sum_squares: Float or int sum of squares for all values + bucket_limits: A numeric `Tensor` with upper value per bucket + bucket_counts: A numeric `Tensor` with number of values per bucket + Returns: + A scalar `Tensor` of type `string`. The serialized `Summary` protocol + buffer. + """ + hist = HistogramProto( + min=min, + max=max, + num=num, + sum=sum, + sum_squares=sum_squares, + bucket_limit=bucket_limits, + bucket=bucket_counts, + ) + return Summary(value=[Summary.Value(tag=name, histo=hist)]) + + +def histogram(name, values, bins, max_bins=None): + # pylint: disable=line-too-long + """Output a `Summary` protocol buffer with a histogram. + + The generated + [`Summary`](https://www.tensorflow.org/code/tensorflow/core/framework/summary.proto) + has one summary value containing a histogram for `values`. + This op reports an `InvalidArgument` error if any value is not finite. + Args: + name: A name for the generated node. Will also serve as a series name in + TensorBoard. + values: A real numeric `Tensor`. Any shape. Values to use to + build the histogram. + Returns: + A scalar `Tensor` of type `string`. The serialized `Summary` protocol + buffer. + """ + values = make_np(values) + hist = make_histogram(values.astype(float), bins, max_bins) + return Summary(value=[Summary.Value(tag=name, histo=hist)]) + + +def make_histogram(values, bins, max_bins=None): + """Convert values into a histogram proto using logic from histogram.cc.""" + if values.size == 0: + raise ValueError("The input has no element.") + values = values.reshape(-1) + counts, limits = np.histogram(values, bins=bins) + num_bins = len(counts) + if max_bins is not None and num_bins > max_bins: + subsampling = num_bins // max_bins + subsampling_remainder = num_bins % subsampling + if subsampling_remainder != 0: + # pyrefly: ignore [no-matching-overload] + counts = np.pad( + counts, + pad_width=[[0, subsampling - subsampling_remainder]], + mode="constant", + constant_values=0, + ) + counts = counts.reshape(-1, subsampling).sum(axis=-1) + new_limits = np.empty((counts.size + 1,), limits.dtype) + new_limits[:-1] = limits[:-1:subsampling] + new_limits[-1] = limits[-1] + limits = new_limits + + # Find the first and the last bin defining the support of the histogram: + + cum_counts = np.cumsum(np.greater(counts, 0)) + start, end = np.searchsorted(cum_counts, [0, cum_counts[-1] - 1], side="right") + start = int(start) + end = int(end) + 1 + del cum_counts + + # TensorBoard only includes the right bin limits. To still have the leftmost limit + # included, we include an empty bin left. + # If start == 0, we need to add an empty one left, otherwise we can just include the bin left to the + # first nonzero-count bin: + counts = ( + counts[start - 1 : end] if start > 0 else np.concatenate([[0], counts[:end]]) + ) + limits = limits[start : end + 1] + + if counts.size == 0 or limits.size == 0: + raise ValueError("The histogram is empty, please file a bug report.") + + sum_sq = values.dot(values) + return HistogramProto( + min=values.min(), + max=values.max(), + num=len(values), + sum=values.sum(), + sum_squares=sum_sq, + bucket_limit=limits.tolist(), + bucket=counts.tolist(), + ) + + +def image(tag, tensor, rescale=1, dataformats="NCHW"): + """Output a `Summary` protocol buffer with images. + + The summary has up to `max_images` summary values containing images. The + images are built from `tensor` which must be 3-D with shape `[height, width, + channels]` and where `channels` can be: + * 1: `tensor` is interpreted as Grayscale. + * 3: `tensor` is interpreted as RGB. + * 4: `tensor` is interpreted as RGBA. + The `name` in the outputted Summary.Value protobufs is generated based on the + name, with a suffix depending on the max_outputs setting: + * If `max_outputs` is 1, the summary value tag is '*name*/image'. + * If `max_outputs` is greater than 1, the summary value tags are + generated sequentially as '*name*/image/0', '*name*/image/1', etc. + Args: + tag: A name for the generated node. Will also serve as a series name in + TensorBoard. + tensor: A 3-D `uint8` or `float32` `Tensor` of shape `[height, width, + channels]` where `channels` is 1, 3, or 4. + 'tensor' can either have values in [0, 1] (float32) or [0, 255] (uint8). + The image() function will scale the image values to [0, 255] by applying + a scale factor of either 1 (uint8) or 255 (float32). Out-of-range values + will be clipped. + Returns: + A scalar `Tensor` of type `string`. The serialized `Summary` protocol + buffer. + """ + tensor = make_np(tensor) + tensor = convert_to_HWC(tensor, dataformats) + # Do not assume that user passes in values in [0, 255], use data type to detect + scale_factor = _calc_scale_factor(tensor) + tensor = tensor.astype(np.float32) + tensor = (tensor * scale_factor).clip(0, 255).astype(np.uint8) + image = make_image(tensor, rescale=rescale) + return Summary(value=[Summary.Value(tag=tag, image=image)]) + + +def image_boxes( + tag, tensor_image, tensor_boxes, rescale=1, dataformats="CHW", labels=None +): + """Output a `Summary` protocol buffer with images.""" + tensor_image = make_np(tensor_image) + tensor_image = convert_to_HWC(tensor_image, dataformats) + tensor_boxes = make_np(tensor_boxes) + tensor_image = tensor_image.astype(np.float32) * _calc_scale_factor(tensor_image) + image = make_image( + tensor_image.clip(0, 255).astype(np.uint8), + rescale=rescale, + rois=tensor_boxes, + labels=labels, + ) + return Summary(value=[Summary.Value(tag=tag, image=image)]) + + +def draw_boxes(disp_image, boxes, labels=None): + # xyxy format + num_boxes = boxes.shape[0] + list_gt = range(num_boxes) + for i in list_gt: + disp_image = _draw_single_box( + disp_image, + boxes[i, 0], + boxes[i, 1], + boxes[i, 2], + boxes[i, 3], + display_str=None if labels is None else labels[i], + color="Red", + ) + return disp_image + + +def make_image(tensor, rescale=1, rois=None, labels=None): + """Convert a numpy representation of an image to Image protobuf.""" + from PIL import Image + + height, width, channel = tensor.shape + scaled_height = int(height * rescale) + scaled_width = int(width * rescale) + image = Image.fromarray(tensor) + if rois is not None: + image = draw_boxes(image, rois, labels=labels) + ANTIALIAS = Image.Resampling.LANCZOS + image = image.resize((scaled_width, scaled_height), ANTIALIAS) + import io + + output = io.BytesIO() + image.save(output, format="PNG") + image_string = output.getvalue() + output.close() + return Summary.Image( + height=height, + width=width, + colorspace=channel, + encoded_image_string=image_string, + ) + + +def video(tag, tensor, fps=4): + tensor = make_np(tensor) + tensor = _prepare_video(tensor) + # If user passes in uint8, then we don't need to rescale by 255 + scale_factor = _calc_scale_factor(tensor) + tensor = tensor.astype(np.float32) + tensor = (tensor * scale_factor).clip(0, 255).astype(np.uint8) + video = make_video(tensor, fps) + return Summary(value=[Summary.Value(tag=tag, image=video)]) + + +def make_video(tensor, fps): + try: + import moviepy # noqa: F401 + except ImportError: + print("add_video needs package moviepy") + return + try: + from moviepy import editor as mpy + except ImportError: + print( + "moviepy is installed, but can't import moviepy.editor.", + "Some packages could be missing [imageio, requests]", + ) + return + import tempfile + + _t, h, w, c = tensor.shape + + # encode sequence of images into gif string + clip = mpy.ImageSequenceClip(list(tensor), fps=fps) + + with tempfile.NamedTemporaryFile(suffix=".gif") as f: + filename = f.name + try: # newer version of moviepy use logger instead of progress_bar argument. + clip.write_gif(filename, verbose=False, logger=None) + except TypeError: + try: # older version of moviepy does not support progress_bar argument. + clip.write_gif(filename, verbose=False, progress_bar=False) + except TypeError: + clip.write_gif(filename, verbose=False) + + f.seek(0) + tensor_string = f.read() + + return Summary.Image( + height=h, width=w, colorspace=c, encoded_image_string=tensor_string + ) + + +def audio(tag, tensor, sample_rate=44100): + array = make_np(tensor) + array = array.squeeze() + if abs(array).max() > 1: + print("warning: audio amplitude out of range, auto clipped.") + array = array.clip(-1, 1) + if array.ndim != 1: + raise AssertionError("input tensor should be 1 dimensional.") + # pyrefly: ignore [no-matching-overload] + array = (array * np.iinfo(np.int16).max).astype(" 127: # weird, value > 127 breaks protobuf + num_thresholds = 127 + data = np.stack((tp, fp, tn, fn, precision, recall)) + pr_curve_plugin_data = PrCurvePluginData( + version=0, num_thresholds=num_thresholds + ).SerializeToString() + plugin_data = SummaryMetadata.PluginData( + plugin_name="pr_curves", content=pr_curve_plugin_data + ) + smd = SummaryMetadata(plugin_data=plugin_data) + tensor = TensorProto( + dtype="DT_FLOAT", + float_val=data.reshape(-1).tolist(), + tensor_shape=TensorShapeProto( + dim=[ + TensorShapeProto.Dim(size=data.shape[0]), + TensorShapeProto.Dim(size=data.shape[1]), + ] + ), + ) + return Summary(value=[Summary.Value(tag=tag, metadata=smd, tensor=tensor)]) + + +def pr_curve(tag, labels, predictions, num_thresholds=127, weights=None): + # weird, value > 127 breaks protobuf + num_thresholds = min(num_thresholds, 127) + data = compute_curve( + labels, predictions, num_thresholds=num_thresholds, weights=weights + ) + pr_curve_plugin_data = PrCurvePluginData( + version=0, num_thresholds=num_thresholds + ).SerializeToString() + plugin_data = SummaryMetadata.PluginData( + plugin_name="pr_curves", content=pr_curve_plugin_data + ) + smd = SummaryMetadata(plugin_data=plugin_data) + tensor = TensorProto( + dtype="DT_FLOAT", + float_val=data.reshape(-1).tolist(), + tensor_shape=TensorShapeProto( + dim=[ + TensorShapeProto.Dim(size=data.shape[0]), + TensorShapeProto.Dim(size=data.shape[1]), + ] + ), + ) + return Summary(value=[Summary.Value(tag=tag, metadata=smd, tensor=tensor)]) + + +# https://github.com/tensorflow/tensorboard/blob/master/tensorboard/plugins/pr_curve/summary.py +def compute_curve(labels, predictions, num_thresholds=None, weights=None): + _MINIMUM_COUNT = 1e-7 + + if weights is None: + weights = 1.0 + + # Compute bins of true positives and false positives. + # pyrefly: ignore [unsupported-operation] + bucket_indices = np.int32(np.floor(predictions * (num_thresholds - 1))) + float_labels = labels.astype(np.float64) + # pyrefly: ignore [unsupported-operation] + histogram_range = (0, num_thresholds - 1) + tp_buckets, _ = np.histogram( + bucket_indices, + # pyrefly: ignore [bad-argument-type] + bins=num_thresholds, + range=histogram_range, + weights=float_labels * weights, + ) + fp_buckets, _ = np.histogram( + bucket_indices, + # pyrefly: ignore [bad-argument-type] + bins=num_thresholds, + range=histogram_range, + weights=(1.0 - float_labels) * weights, + ) + + # Obtain the reverse cumulative sum. + tp = np.cumsum(tp_buckets[::-1])[::-1] + fp = np.cumsum(fp_buckets[::-1])[::-1] + tn = fp[0] - fp + fn = tp[0] - tp + precision = tp / np.maximum(_MINIMUM_COUNT, tp + fp) + recall = tp / np.maximum(_MINIMUM_COUNT, tp + fn) + return np.stack((tp, fp, tn, fn, precision, recall)) + + +def _get_tensor_summary( + name, display_name, description, tensor, content_type, components, json_config +): + """Create a tensor summary with summary metadata. + + Args: + name: Uniquely identifiable name of the summary op. Could be replaced by + combination of name and type to make it unique even outside of this + summary. + display_name: Will be used as the display name in TensorBoard. + Defaults to `name`. + description: A longform readable description of the summary data. Markdown + is supported. + tensor: Tensor to display in summary. + content_type: Type of content inside the Tensor. + components: Bitmask representing present parts (vertices, colors, etc.) that + belong to the summary. + json_config: A string, JSON-serialized dictionary of ThreeJS classes + configuration. + + Returns: + Tensor summary with metadata. + """ + import torch + from tensorboard.plugins.mesh import metadata + + tensor = torch.as_tensor(tensor) + + tensor_metadata = metadata.create_summary_metadata( + name, + display_name, + content_type, + components, + tensor.shape, + description, + json_config=json_config, + ) + + tensor = TensorProto( + dtype="DT_FLOAT", + float_val=tensor.reshape(-1).tolist(), + tensor_shape=TensorShapeProto( + dim=[ + TensorShapeProto.Dim(size=tensor.shape[0]), + TensorShapeProto.Dim(size=tensor.shape[1]), + TensorShapeProto.Dim(size=tensor.shape[2]), + ] + ), + ) + + tensor_summary = Summary.Value( + tag=metadata.get_instance_name(name, content_type), + tensor=tensor, + metadata=tensor_metadata, + ) + + return tensor_summary + + +def _get_json_config(config_dict): + """Parse and returns JSON string from python dictionary.""" + json_config = "{}" + if config_dict is not None: + json_config = json.dumps(config_dict, sort_keys=True) + return json_config + + +# https://github.com/tensorflow/tensorboard/blob/master/tensorboard/plugins/mesh/summary.py +def mesh( + tag, vertices, colors, faces, config_dict, display_name=None, description=None +): + """Output a merged `Summary` protocol buffer with a mesh/point cloud. + + Args: + tag: A name for this summary operation. + vertices: Tensor of shape `[dim_1, ..., dim_n, 3]` representing the 3D + coordinates of vertices. + faces: Tensor of shape `[dim_1, ..., dim_n, 3]` containing indices of + vertices within each triangle. + colors: Tensor of shape `[dim_1, ..., dim_n, 3]` containing colors for each + vertex. + display_name: If set, will be used as the display name in TensorBoard. + Defaults to `name`. + description: A longform readable description of the summary data. Markdown + is supported. + config_dict: Dictionary with ThreeJS classes names and configuration. + + Returns: + Merged summary for mesh/point cloud representation. + """ + from tensorboard.plugins.mesh import metadata + from tensorboard.plugins.mesh.plugin_data_pb2 import MeshPluginData + + json_config = _get_json_config(config_dict) + + summaries = [] + tensors = [ + (vertices, MeshPluginData.VERTEX), + (faces, MeshPluginData.FACE), + (colors, MeshPluginData.COLOR), + ] + tensors = [tensor for tensor in tensors if tensor[0] is not None] + components = metadata.get_components_bitmask( + [content_type for (tensor, content_type) in tensors] + ) + + for tensor, content_type in tensors: + summaries.append( + _get_tensor_summary( + tag, + display_name, + description, + tensor, + content_type, + components, + json_config, + ) + ) + + return Summary(value=summaries) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/tensorboard/writer.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/tensorboard/writer.py new file mode 100644 index 0000000000000000000000000000000000000000..2f1ccce77cf7211492898cbfe6bd48ab610d6ccb --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/tensorboard/writer.py @@ -0,0 +1,1216 @@ +# mypy: allow-untyped-defs +"""Provide an API for writing protocol buffers to event files to be consumed by TensorBoard for visualization.""" +from __future__ import annotations + +import os +import time +from typing import TYPE_CHECKING + +import torch + +if TYPE_CHECKING: + from matplotlib.figure import Figure +from tensorboard.compat import tf +from tensorboard.compat.proto import event_pb2 +from tensorboard.compat.proto.event_pb2 import Event, SessionLog +from tensorboard.plugins.projector.projector_config_pb2 import ProjectorConfig +from tensorboard.summary.writer.event_file_writer import EventFileWriter + +from ._convert_np import make_np +from ._embedding import get_embedding_info, make_mat, make_sprite, make_tsv, write_pbtxt +from ._onnx_graph import load_onnx_graph +from ._pytorch_graph import graph +from ._utils import figure_to_image +from .summary import ( + audio, + custom_scalars, + histogram, + histogram_raw, + hparams, + image, + image_boxes, + mesh, + pr_curve, + pr_curve_raw, + scalar, + tensor_proto, + text, + video, +) + +__all__ = ["FileWriter", "SummaryWriter"] + + +class FileWriter: + """Writes protocol buffers to event files to be consumed by TensorBoard. + + The `FileWriter` class provides a mechanism to create an event file in a + given directory and add summaries and events to it. The class updates the + file contents asynchronously. This allows a training program to call methods + to add data to the file directly from the training loop, without slowing down + training. + """ + + def __init__(self, log_dir, max_queue=10, flush_secs=120, filename_suffix="") -> None: + """Create a `FileWriter` and an event file. + + On construction the writer creates a new event file in `log_dir`. + The other arguments to the constructor control the asynchronous writes to + the event file. + + Args: + log_dir: A string. Directory where event file will be written. + max_queue: Integer. Size of the queue for pending events and + summaries before one of the 'add' calls forces a flush to disk. + Default is ten items. + flush_secs: Number. How often, in seconds, to flush the + pending events and summaries to disk. Default is every two minutes. + filename_suffix: A string. Suffix added to all event filenames + in the log_dir directory. More details on filename construction in + tensorboard.summary.writer.event_file_writer.EventFileWriter. + """ + # Sometimes PosixPath is passed in and we need to coerce it to + # a string in all cases + # TODO: See if we can remove this in the future if we are + # actually the ones passing in a PosixPath + log_dir = str(log_dir) + self.event_writer = EventFileWriter( + log_dir, max_queue, flush_secs, filename_suffix + ) + + def get_logdir(self): + """Return the directory where event file will be written.""" + return self.event_writer.get_logdir() + + def add_event(self, event, step=None, walltime=None) -> None: + """Add an event to the event file. + + Args: + event: An `Event` protocol buffer. + step: Number. Optional global step value for training process + to record with the event. + walltime: float. Optional walltime to override the default (current) + walltime (from time.time()) seconds after epoch + """ + event.wall_time = time.time() if walltime is None else walltime + if step is not None: + # Make sure step is converted from numpy or other formats + # since protobuf might not convert depending on version + event.step = int(step) + self.event_writer.add_event(event) + + def add_summary(self, summary, global_step=None, walltime=None) -> None: + """Add a `Summary` protocol buffer to the event file. + + This method wraps the provided summary in an `Event` protocol buffer + and adds it to the event file. + + Args: + summary: A `Summary` protocol buffer. + global_step: Number. Optional global step value for training process + to record with the summary. + walltime: float. Optional walltime to override the default (current) + walltime (from time.time()) seconds after epoch + """ + event = event_pb2.Event(summary=summary) + self.add_event(event, global_step, walltime) + + def add_graph(self, graph_profile, walltime=None) -> None: + """Add a `Graph` and step stats protocol buffer to the event file. + + Args: + graph_profile: A `Graph` and step stats protocol buffer. + walltime: float. Optional walltime to override the default (current) + walltime (from time.time()) seconds after epoch + """ + graph = graph_profile[0] + stepstats = graph_profile[1] + event = event_pb2.Event(graph_def=graph.SerializeToString()) + self.add_event(event, None, walltime) + + trm = event_pb2.TaggedRunMetadata( + tag="step1", run_metadata=stepstats.SerializeToString() + ) + event = event_pb2.Event(tagged_run_metadata=trm) + self.add_event(event, None, walltime) + + def add_onnx_graph(self, graph, walltime=None) -> None: + """Add a `Graph` protocol buffer to the event file. + + Args: + graph: A `Graph` protocol buffer. + walltime: float. Optional walltime to override the default (current) + _get_file_writerfrom time.time()) + """ + event = event_pb2.Event(graph_def=graph.SerializeToString()) + self.add_event(event, None, walltime) + + def flush(self) -> None: + """Flushes the event file to disk. + + Call this method to make sure that all pending events have been written to + disk. + """ + self.event_writer.flush() + + def close(self) -> None: + """Flushes the event file to disk and close the file. + + Call this method when you do not need the summary writer anymore. + """ + self.event_writer.close() + + def reopen(self) -> None: + """Reopens the EventFileWriter. + + Can be called after `close()` to add more events in the same directory. + The events will go into a new events file. + Does nothing if the EventFileWriter was not closed. + """ + self.event_writer.reopen() + + +class SummaryWriter: + """Writes entries directly to event files in the log_dir to be consumed by TensorBoard. + + The `SummaryWriter` class provides a high-level API to create an event file + in a given directory and add summaries and events to it. The class updates the + file contents asynchronously. This allows a training program to call methods + to add data to the file directly from the training loop, without slowing down + training. + """ + + def __init__( + self, + log_dir=None, + comment="", + purge_step=None, + max_queue=10, + flush_secs=120, + filename_suffix="", + ) -> None: + """Create a `SummaryWriter` that will write out events and summaries to the event file. + + Args: + log_dir (str): Save directory location. Default is + runs/**CURRENT_DATETIME_HOSTNAME**, which changes after each run. + Use hierarchical folder structure to compare + between runs easily. e.g. pass in 'runs/exp1', 'runs/exp2', etc. + for each new experiment to compare across them. + comment (str): Comment log_dir suffix appended to the default + ``log_dir``. If ``log_dir`` is assigned, this argument has no effect. + purge_step (int): + When logging crashes at step :math:`T+X` and restarts at step :math:`T`, + any events whose global_step larger or equal to :math:`T` will be + purged and hidden from TensorBoard. + Note that crashed and resumed experiments should have the same ``log_dir``. + max_queue (int): Size of the queue for pending events and + summaries before one of the 'add' calls forces a flush to disk. + Default is ten items. + flush_secs (int): How often, in seconds, to flush the + pending events and summaries to disk. Default is every two minutes. + filename_suffix (str): Suffix added to all event filenames in + the log_dir directory. More details on filename construction in + tensorboard.summary.writer.event_file_writer.EventFileWriter. + + Examples:: + + from torch.utils.tensorboard import SummaryWriter + + # create a summary writer with automatically generated folder name. + writer = SummaryWriter() + # folder location: runs/May04_22-14-54_s-MacBook-Pro.local/ + + # create a summary writer using the specified folder name. + writer = SummaryWriter("my_experiment") + # folder location: my_experiment + + # create a summary writer with comment appended. + writer = SummaryWriter(comment="LR_0.1_BATCH_16") + # folder location: runs/May04_22-14-54_s-MacBook-Pro.localLR_0.1_BATCH_16/ + + """ + torch._C._log_api_usage_once("tensorboard.create.summarywriter") + if not log_dir: + import socket + from datetime import datetime + + current_time = datetime.now().strftime("%b%d_%H-%M-%S") + log_dir = os.path.join( + "runs", current_time + "_" + socket.gethostname() + comment + ) + self.log_dir = log_dir + self.purge_step = purge_step + self.max_queue = max_queue + self.flush_secs = flush_secs + self.filename_suffix = filename_suffix + + # Initialize the file writers, but they can be cleared out on close + # and recreated later as needed. + self.file_writer = self.all_writers = None + self._get_file_writer() + + # Create default bins for histograms, see generate_testdata.py in tensorflow/tensorboard + v = 1e-12 + buckets = [] + neg_buckets = [] + while v < 1e20: + buckets.append(v) + neg_buckets.append(-v) + v *= 1.1 + self.default_bins = neg_buckets[::-1] + [0] + buckets + + def _get_file_writer(self): + """Return the default FileWriter instance. Recreates it if closed.""" + if self.all_writers is None or self.file_writer is None: + # pyrefly: ignore [bad-assignment] + self.file_writer = FileWriter( + self.log_dir, self.max_queue, self.flush_secs, self.filename_suffix + ) + # pyrefly: ignore [bad-assignment, missing-attribute] + self.all_writers = {self.file_writer.get_logdir(): self.file_writer} + if self.purge_step is not None: + most_recent_step = self.purge_step + # pyrefly: ignore [missing-attribute] + self.file_writer.add_event( + Event(step=most_recent_step, file_version="brain.Event:2") + ) + # pyrefly: ignore [missing-attribute] + self.file_writer.add_event( + Event( + step=most_recent_step, + session_log=SessionLog(status=SessionLog.START), + ) + ) + self.purge_step = None + return self.file_writer + + def get_logdir(self): + """Return the directory where event files will be written.""" + return self.log_dir + + def add_hparams( + self, + hparam_dict, + metric_dict, + hparam_domain_discrete=None, + run_name=None, + global_step=None, + ) -> None: + """Add a set of hyperparameters to be compared in TensorBoard. + + Args: + hparam_dict (dict): Each key-value pair in the dictionary is the + name of the hyper parameter and it's corresponding value. + The type of the value can be one of `bool`, `string`, `float`, + `int`, or `None`. + metric_dict (dict): Each key-value pair in the dictionary is the + name of the metric and it's corresponding value. Note that the key used + here should be unique in the tensorboard record. Otherwise the value + you added by ``add_scalar`` will be displayed in hparam plugin. In most + cases, this is unwanted. + hparam_domain_discrete: (Optional[Dict[str, List[Any]]]) A dictionary that + contains names of the hyperparameters and all discrete values they can hold + run_name (str): Name of the run, to be included as part of the logdir. + If unspecified, will use current timestamp. + global_step (int): Global step value to record + + Examples:: + + from torch.utils.tensorboard import SummaryWriter + with SummaryWriter() as w: + for i in range(5): + w.add_hparams({'lr': 0.1*i, 'bsize': i}, + {'hparam/accuracy': 10*i, 'hparam/loss': 10*i}) + + Expected result: + + .. image:: _static/img/tensorboard/add_hparam.png + :scale: 50 % + + """ + torch._C._log_api_usage_once("tensorboard.logging.add_hparams") + if type(hparam_dict) is not dict or type(metric_dict) is not dict: + raise TypeError("hparam_dict and metric_dict should be dictionary.") + exp, ssi, sei = hparams(hparam_dict, metric_dict, hparam_domain_discrete) + + if not run_name: + run_name = str(time.time()) + logdir = os.path.join(self._get_file_writer().get_logdir(), run_name) + with SummaryWriter(log_dir=logdir) as w_hp: + w_hp.file_writer.add_summary(exp, global_step) + w_hp.file_writer.add_summary(ssi, global_step) + w_hp.file_writer.add_summary(sei, global_step) + for k, v in metric_dict.items(): + w_hp.add_scalar(k, v, global_step) + + def add_scalar( + self, + tag, + scalar_value, + global_step=None, + walltime=None, + new_style=False, + double_precision=False, + ) -> None: + """Add scalar data to summary. + + Args: + tag (str): Data identifier + scalar_value (float or string/blobname): Value to save + global_step (int): Global step value to record + walltime (float): Optional override default walltime (time.time()) + with seconds after epoch of event + new_style (boolean): Whether to use new style (tensor field) or old + style (simple_value field). New style could lead to faster data loading. + Examples:: + + from torch.utils.tensorboard import SummaryWriter + writer = SummaryWriter() + x = range(100) + for i in x: + writer.add_scalar('y=2x', i * 2, i) + writer.close() + + Expected result: + + .. image:: _static/img/tensorboard/add_scalar.png + :scale: 50 % + + """ + torch._C._log_api_usage_once("tensorboard.logging.add_scalar") + + summary = scalar( + tag, scalar_value, new_style=new_style, double_precision=double_precision + ) + self._get_file_writer().add_summary(summary, global_step, walltime) + + def add_scalars(self, main_tag, tag_scalar_dict, global_step=None, walltime=None) -> None: + """Add many scalar data to summary. + + Args: + main_tag (str): The parent name for the tags + tag_scalar_dict (dict): Key-value pair storing the tag and corresponding values + global_step (int): Global step value to record + walltime (float): Optional override default walltime (time.time()) + seconds after epoch of event + + Examples:: + + from torch.utils.tensorboard import SummaryWriter + writer = SummaryWriter() + r = 5 + for i in range(100): + writer.add_scalars('run_14h', {'xsinx':i*np.sin(i/r), + 'xcosx':i*np.cos(i/r), + 'tanx': np.tan(i/r)}, i) + writer.close() + # This call adds three values to the same scalar plot with the tag + # 'run_14h' in TensorBoard's scalar section. + + Expected result: + + .. image:: _static/img/tensorboard/add_scalars.png + :scale: 50 % + + """ + torch._C._log_api_usage_once("tensorboard.logging.add_scalars") + walltime = time.time() if walltime is None else walltime + fw_logdir = self._get_file_writer().get_logdir() + for tag, scalar_value in tag_scalar_dict.items(): + fw_tag = fw_logdir + "/" + main_tag.replace("/", "_") + "_" + tag + if self.all_writers is None: + raise AssertionError("self.all_writers is None") + if fw_tag in self.all_writers: + fw = self.all_writers[fw_tag] + else: + fw = FileWriter( + fw_tag, self.max_queue, self.flush_secs, self.filename_suffix + ) + self.all_writers[fw_tag] = fw + fw.add_summary(scalar(main_tag, scalar_value), global_step, walltime) + + def add_tensor( + self, + tag, + tensor, + global_step=None, + walltime=None, + ) -> None: + """Add tensor data to summary. + + Args: + tag (str): Data identifier + tensor (torch.Tensor): tensor to save + global_step (int): Global step value to record + Examples:: + + from torch.utils.tensorboard import SummaryWriter + writer = SummaryWriter() + x = torch.tensor([1,2,3]) + writer.add_scalar('x', x) + writer.close() + + Expected result: + Summary::tensor::float_val [1,2,3] + ::tensor::shape [3] + ::tag 'x' + + """ + torch._C._log_api_usage_once("tensorboard.logging.add_tensor") + + summary = tensor_proto(tag, tensor) + self._get_file_writer().add_summary(summary, global_step, walltime) + + def add_histogram( + self, + tag, + values, + global_step=None, + bins="tensorflow", + walltime=None, + max_bins=None, + ) -> None: + """Add histogram to summary. + + Args: + tag (str): Data identifier + values (torch.Tensor, numpy.ndarray, or string/blobname): Values to build histogram + global_step (int): Global step value to record + bins (str): One of {'tensorflow','auto', 'fd', ...}. This determines how the bins are made. You can find + other options in: https://numpy.org/doc/stable/reference/generated/numpy.histogram.html + walltime (float): Optional override default walltime (time.time()) + seconds after epoch of event + + Examples:: + + from torch.utils.tensorboard import SummaryWriter + import numpy as np + writer = SummaryWriter() + for i in range(10): + x = np.random.random(1000) + writer.add_histogram('distribution centers', x + i, i) + writer.close() + + Expected result: + + .. image:: _static/img/tensorboard/add_histogram.png + :scale: 50 % + + """ + torch._C._log_api_usage_once("tensorboard.logging.add_histogram") + if isinstance(bins, str) and bins == "tensorflow": + bins = self.default_bins + self._get_file_writer().add_summary( + histogram(tag, values, bins, max_bins=max_bins), global_step, walltime + ) + + def add_histogram_raw( + self, + tag, + min, + max, + num, + sum, + sum_squares, + bucket_limits, + bucket_counts, + global_step=None, + walltime=None, + ) -> None: + """Add histogram with raw data. + + Args: + tag (str): Data identifier + min (float or int): Min value + max (float or int): Max value + num (int): Number of values + sum (float or int): Sum of all values + sum_squares (float or int): Sum of squares for all values + bucket_limits (torch.Tensor, numpy.ndarray): Upper value per bucket. + The number of elements of it should be the same as `bucket_counts`. + bucket_counts (torch.Tensor, numpy.ndarray): Number of values per bucket + global_step (int): Global step value to record + walltime (float): Optional override default walltime (time.time()) + seconds after epoch of event + see: https://github.com/tensorflow/tensorboard/blob/master/tensorboard/plugins/histogram/README.md + + Examples:: + + from torch.utils.tensorboard import SummaryWriter + import numpy as np + writer = SummaryWriter() + dummy_data = [] + for idx, value in enumerate(range(50)): + dummy_data += [idx + 0.001] * value + + bins = list(range(50+2)) + bins = np.array(bins) + values = np.array(dummy_data).astype(float).reshape(-1) + counts, limits = np.histogram(values, bins=bins) + sum_sq = values.dot(values) + writer.add_histogram_raw( + tag='histogram_with_raw_data', + min=values.min(), + max=values.max(), + num=len(values), + sum=values.sum(), + sum_squares=sum_sq, + bucket_limits=limits[1:].tolist(), + bucket_counts=counts.tolist(), + global_step=0) + writer.close() + + Expected result: + + .. image:: _static/img/tensorboard/add_histogram_raw.png + :scale: 50 % + + """ + torch._C._log_api_usage_once("tensorboard.logging.add_histogram_raw") + if len(bucket_limits) != len(bucket_counts): + raise ValueError( + "len(bucket_limits) != len(bucket_counts), see the document." + ) + self._get_file_writer().add_summary( + histogram_raw( + tag, min, max, num, sum, sum_squares, bucket_limits, bucket_counts + ), + global_step, + walltime, + ) + + def add_image( + self, tag, img_tensor, global_step=None, walltime=None, dataformats="CHW" + ) -> None: + """Add image data to summary. + + Note that this requires the ``pillow`` package. + + Args: + tag (str): Data identifier + img_tensor (torch.Tensor, numpy.ndarray, or string/blobname): Image data + global_step (int): Global step value to record + walltime (float): Optional override default walltime (time.time()) + seconds after epoch of event + dataformats (str): Image data format specification of the form + CHW, HWC, HW, WH, etc. + Shape: + img_tensor: Default is :math:`(3, H, W)`. You can use ``torchvision.utils.make_grid()`` to + convert a batch of tensor into 3xHxW format or call ``add_images`` and let us do the job. + Tensor with :math:`(1, H, W)`, :math:`(H, W)`, :math:`(H, W, 3)` is also suitable as long as + corresponding ``dataformats`` argument is passed, e.g. ``CHW``, ``HWC``, ``HW``. + + Examples:: + + from torch.utils.tensorboard import SummaryWriter + import numpy as np + img = np.zeros((3, 100, 100)) + img[0] = np.arange(0, 10000).reshape(100, 100) / 10000 + img[1] = 1 - np.arange(0, 10000).reshape(100, 100) / 10000 + + img_HWC = np.zeros((100, 100, 3)) + img_HWC[:, :, 0] = np.arange(0, 10000).reshape(100, 100) / 10000 + img_HWC[:, :, 1] = 1 - np.arange(0, 10000).reshape(100, 100) / 10000 + + writer = SummaryWriter() + writer.add_image('my_image', img, 0) + + # If you have non-default dimension setting, set the dataformats argument. + writer.add_image('my_image_HWC', img_HWC, 0, dataformats='HWC') + writer.close() + + Expected result: + + .. image:: _static/img/tensorboard/add_image.png + :scale: 50 % + + """ + torch._C._log_api_usage_once("tensorboard.logging.add_image") + self._get_file_writer().add_summary( + image(tag, img_tensor, dataformats=dataformats), global_step, walltime + ) + + def add_images( + self, tag, img_tensor, global_step=None, walltime=None, dataformats="NCHW" + ) -> None: + """Add batched image data to summary. + + Note that this requires the ``pillow`` package. + + Args: + tag (str): Data identifier + img_tensor (torch.Tensor, numpy.ndarray, or string/blobname): Image data + global_step (int): Global step value to record + walltime (float): Optional override default walltime (time.time()) + seconds after epoch of event + dataformats (str): Image data format specification of the form + NCHW, NHWC, CHW, HWC, HW, WH, etc. + Shape: + img_tensor: Default is :math:`(N, 3, H, W)`. If ``dataformats`` is specified, other shape will be + accepted. e.g. NCHW or NHWC. + + Examples:: + + from torch.utils.tensorboard import SummaryWriter + import numpy as np + + img_batch = np.zeros((16, 3, 100, 100)) + for i in range(16): + img_batch[i, 0] = np.arange(0, 10000).reshape(100, 100) / 10000 / 16 * i + img_batch[i, 1] = (1 - np.arange(0, 10000).reshape(100, 100) / 10000) / 16 * i + + writer = SummaryWriter() + writer.add_images('my_image_batch', img_batch, 0) + writer.close() + + Expected result: + + .. image:: _static/img/tensorboard/add_images.png + :scale: 30 % + + """ + torch._C._log_api_usage_once("tensorboard.logging.add_images") + self._get_file_writer().add_summary( + image(tag, img_tensor, dataformats=dataformats), global_step, walltime + ) + + def add_image_with_boxes( + self, + tag, + img_tensor, + box_tensor, + global_step=None, + walltime=None, + rescale=1, + dataformats="CHW", + labels=None, + ) -> None: + """Add image and draw bounding boxes on the image. + + Args: + tag (str): Data identifier + img_tensor (torch.Tensor, numpy.ndarray, or string/blobname): Image data + box_tensor (torch.Tensor, numpy.ndarray, or string/blobname): Box data (for detected objects) + box should be represented as [x1, y1, x2, y2]. + global_step (int): Global step value to record + walltime (float): Optional override default walltime (time.time()) + seconds after epoch of event + rescale (float): Optional scale override + dataformats (str): Image data format specification of the form + NCHW, NHWC, CHW, HWC, HW, WH, etc. + labels (list of string): The label to be shown for each bounding box. + Shape: + img_tensor: Default is :math:`(3, H, W)`. It can be specified with ``dataformats`` argument. + e.g. CHW or HWC + + box_tensor: (torch.Tensor, numpy.ndarray, or string/blobname): NX4, where N is the number of + boxes and each 4 elements in a row represents (xmin, ymin, xmax, ymax). + """ + torch._C._log_api_usage_once("tensorboard.logging.add_image_with_boxes") + if labels is not None: + if isinstance(labels, str): + labels = [labels] + if len(labels) != box_tensor.shape[0]: + labels = None + self._get_file_writer().add_summary( + image_boxes( + tag, + img_tensor, + box_tensor, + rescale=rescale, + dataformats=dataformats, + labels=labels, + ), + global_step, + walltime, + ) + + def add_figure( + self, + tag: str, + figure: Figure | list[Figure], + global_step: int | None = None, + close: bool = True, + walltime: float | None = None, + ) -> None: + """Render matplotlib figure into an image and add it to summary. + + Note that this requires the ``matplotlib`` package. + + Args: + tag: Data identifier + figure: Figure or a list of figures + global_step: Global step value to record + close: Flag to automatically close the figure + walltime: Optional override default walltime (time.time()) + seconds after epoch of event + """ + torch._C._log_api_usage_once("tensorboard.logging.add_figure") + if isinstance(figure, list): + self.add_image( + tag, + figure_to_image(figure, close), + global_step, + walltime, + dataformats="NCHW", + ) + else: + self.add_image( + tag, + figure_to_image(figure, close), + global_step, + walltime, + dataformats="CHW", + ) + + def add_video(self, tag, vid_tensor, global_step=None, fps=4, walltime=None) -> None: + """Add video data to summary. + + Note that this requires the ``moviepy`` package. + + Args: + tag (str): Data identifier + vid_tensor (torch.Tensor): Video data + global_step (int): Global step value to record + fps (float or int): Frames per second + walltime (float): Optional override default walltime (time.time()) + seconds after epoch of event + Shape: + vid_tensor: :math:`(N, T, C, H, W)`. The values should lie in [0, 255] for type `uint8` or [0, 1] for type `float`. + """ + torch._C._log_api_usage_once("tensorboard.logging.add_video") + self._get_file_writer().add_summary( + video(tag, vid_tensor, fps), global_step, walltime + ) + + def add_audio( + self, tag, snd_tensor, global_step=None, sample_rate=44100, walltime=None + ) -> None: + """Add audio data to summary. + + Args: + tag (str): Data identifier + snd_tensor (torch.Tensor): Sound data + global_step (int): Global step value to record + sample_rate (int): sample rate in Hz + walltime (float): Optional override default walltime (time.time()) + seconds after epoch of event + Shape: + snd_tensor: :math:`(1, L)`. The values should lie between [-1, 1]. + """ + torch._C._log_api_usage_once("tensorboard.logging.add_audio") + self._get_file_writer().add_summary( + audio(tag, snd_tensor, sample_rate=sample_rate), global_step, walltime + ) + + def add_text(self, tag, text_string, global_step=None, walltime=None) -> None: + """Add text data to summary. + + Args: + tag (str): Data identifier + text_string (str): String to save + global_step (int): Global step value to record + walltime (float): Optional override default walltime (time.time()) + seconds after epoch of event + Examples:: + + writer.add_text('lstm', 'This is an lstm', 0) + writer.add_text('rnn', 'This is an rnn', 10) + """ + torch._C._log_api_usage_once("tensorboard.logging.add_text") + self._get_file_writer().add_summary( + text(tag, text_string), global_step, walltime + ) + + def add_onnx_graph(self, prototxt) -> None: + torch._C._log_api_usage_once("tensorboard.logging.add_onnx_graph") + self._get_file_writer().add_onnx_graph(load_onnx_graph(prototxt)) + + def add_graph( + self, model, input_to_model=None, verbose=False, use_strict_trace=True + ) -> None: + """Add graph data to summary. + + Args: + model (torch.nn.Module): Model to draw. + input_to_model (torch.Tensor or list of torch.Tensor): A variable or a tuple of + variables to be fed. + verbose (bool): Whether to print graph structure in console. + use_strict_trace (bool): Whether to pass keyword argument `strict` to + `torch.jit.trace`. Pass False when you want the tracer to + record your mutable container types (list, dict) + """ + torch._C._log_api_usage_once("tensorboard.logging.add_graph") + # A valid PyTorch model should have a 'forward' method + self._get_file_writer().add_graph( + graph(model, input_to_model, verbose, use_strict_trace) + ) + + @staticmethod + def _encode(rawstr): + # I'd use urllib but, I'm unsure about the differences from python3 to python2, etc. + retval = rawstr + retval = retval.replace("%", f"%{ord('%'):02x}") + retval = retval.replace("/", f"%{ord('/'):02x}") + retval = retval.replace("\\", "%%%02x" % (ord("\\"))) # noqa: UP031 + return retval + + def add_embedding( + self, + mat, + metadata=None, + label_img=None, + global_step=None, + tag="default", + metadata_header=None, + ) -> None: + """Add embedding projector data to summary. + + Args: + mat (torch.Tensor or numpy.ndarray): A matrix which each row is the feature vector of the data point + metadata (list): A list of labels, each element will be converted to string + label_img (torch.Tensor): Images correspond to each data point + global_step (int): Global step value to record + tag (str): Name for the embedding + metadata_header (list): A list of headers for multi-column metadata. If given, each metadata must be + a list with values corresponding to headers. + Shape: + mat: :math:`(N, D)`, where N is number of data and D is feature dimension + + label_img: :math:`(N, C, H, W)` + + Examples:: + + import keyword + import torch + meta = [] + while len(meta)<100: + meta = meta+keyword.kwlist # get some strings + meta = meta[:100] + + for i, v in enumerate(meta): + meta[i] = v+str(i) + + label_img = torch.rand(100, 3, 10, 32) + for i in range(100): + label_img[i]*=i/100.0 + + writer.add_embedding(torch.randn(100, 5), metadata=meta, label_img=label_img) + writer.add_embedding(torch.randn(100, 5), label_img=label_img) + writer.add_embedding(torch.randn(100, 5), metadata=meta) + + .. note:: + Categorical (i.e. non-numeric) metadata cannot have more than 50 unique values if they are to be used for + coloring in the embedding projector. + + """ + torch._C._log_api_usage_once("tensorboard.logging.add_embedding") + mat = make_np(mat) + if global_step is None: + global_step = 0 + # clear pbtxt? + + # Maybe we should encode the tag so slashes don't trip us up? + # I don't think this will mess us up, but better safe than sorry. + subdir = f"{str(global_step).zfill(5)}/{self._encode(tag)}" + save_path = os.path.join(self._get_file_writer().get_logdir(), subdir) + + fs = tf.io.gfile + if fs.exists(save_path): + if fs.isdir(save_path): + print( + "warning: Embedding dir exists, did you set global_step for add_embedding()?" + ) + else: + raise NotADirectoryError( + f"Path: `{save_path}` exists, but is a file. Cannot proceed." + ) + else: + fs.makedirs(save_path) + + if metadata is not None: + if mat.shape[0] != len( + metadata + ): + raise AssertionError("#labels should equal with #data points") + make_tsv(metadata, save_path, metadata_header=metadata_header) + + if label_img is not None: + if mat.shape[0] != label_img.shape[0]: + raise AssertionError("#images should equal with #data points") + make_sprite(label_img, save_path) + + if mat.ndim != 2: + raise AssertionError("mat should be 2D, where mat.size(0) is the number of data points") + make_mat(mat, save_path) + + # Filesystem doesn't necessarily have append semantics, so we store an + # internal buffer to append to and re-write whole file after each + # embedding is added + if not hasattr(self, "_projector_config"): + self._projector_config = ProjectorConfig() + embedding_info = get_embedding_info( + metadata, label_img, subdir, global_step, tag + ) + self._projector_config.embeddings.extend([embedding_info]) + + + from google.protobuf import text_format + + config_pbtxt = text_format.MessageToString(self._projector_config) + write_pbtxt(self._get_file_writer().get_logdir(), config_pbtxt) + + def add_pr_curve( + self, + tag, + labels, + predictions, + global_step=None, + num_thresholds=127, + weights=None, + walltime=None, + ) -> None: + """Add precision recall curve. + + Plotting a precision-recall curve lets you understand your model's + performance under different threshold settings. With this function, + you provide the ground truth labeling (T/F) and prediction confidence + (usually the output of your model) for each target. The TensorBoard UI + will let you choose the threshold interactively. + + Args: + tag (str): Data identifier + labels (torch.Tensor, numpy.ndarray, or string/blobname): + Ground truth data. Binary label for each element. + predictions (torch.Tensor, numpy.ndarray, or string/blobname): + The probability that an element be classified as true. + Value should be in [0, 1] + global_step (int): Global step value to record + num_thresholds (int): Number of thresholds used to draw the curve. + walltime (float): Optional override default walltime (time.time()) + seconds after epoch of event + + Examples:: + + from torch.utils.tensorboard import SummaryWriter + import numpy as np + labels = np.random.randint(2, size=100) # binary label + predictions = np.random.rand(100) + writer = SummaryWriter() + writer.add_pr_curve('pr_curve', labels, predictions, 0) + writer.close() + + """ + torch._C._log_api_usage_once("tensorboard.logging.add_pr_curve") + labels, predictions = make_np(labels), make_np(predictions) + self._get_file_writer().add_summary( + pr_curve(tag, labels, predictions, num_thresholds, weights), + global_step, + walltime, + ) + + def add_pr_curve_raw( + self, + tag, + true_positive_counts, + false_positive_counts, + true_negative_counts, + false_negative_counts, + precision, + recall, + global_step=None, + num_thresholds=127, + weights=None, + walltime=None, + ) -> None: + """Add precision recall curve with raw data. + + Args: + tag (str): Data identifier + true_positive_counts (torch.Tensor, numpy.ndarray, or string/blobname): true positive counts + false_positive_counts (torch.Tensor, numpy.ndarray, or string/blobname): false positive counts + true_negative_counts (torch.Tensor, numpy.ndarray, or string/blobname): true negative counts + false_negative_counts (torch.Tensor, numpy.ndarray, or string/blobname): false negative counts + precision (torch.Tensor, numpy.ndarray, or string/blobname): precision + recall (torch.Tensor, numpy.ndarray, or string/blobname): recall + global_step (int): Global step value to record + num_thresholds (int): Number of thresholds used to draw the curve. + walltime (float): Optional override default walltime (time.time()) + seconds after epoch of event + see: https://github.com/tensorflow/tensorboard/blob/master/tensorboard/plugins/pr_curve/README.md + """ + torch._C._log_api_usage_once("tensorboard.logging.add_pr_curve_raw") + self._get_file_writer().add_summary( + pr_curve_raw( + tag, + true_positive_counts, + false_positive_counts, + true_negative_counts, + false_negative_counts, + precision, + recall, + num_thresholds, + weights, + ), + global_step, + walltime, + ) + + def add_custom_scalars_multilinechart( + self, tags, category="default", title="untitled" + ) -> None: + """Shorthand for creating multilinechart. Similar to ``add_custom_scalars()``, but the only necessary argument is *tags*. + + Args: + tags (list): list of tags that have been used in ``add_scalar()`` + + Examples:: + + writer.add_custom_scalars_multilinechart(['twse/0050', 'twse/2330']) + """ + torch._C._log_api_usage_once( + "tensorboard.logging.add_custom_scalars_multilinechart" + ) + layout = {category: {title: ["Multiline", tags]}} + self._get_file_writer().add_summary(custom_scalars(layout)) + + def add_custom_scalars_marginchart( + self, tags, category="default", title="untitled" + ) -> None: + """Shorthand for creating marginchart. + + Similar to ``add_custom_scalars()``, but the only necessary argument is *tags*, + which should have exactly 3 elements. + + Args: + tags (list): list of tags that have been used in ``add_scalar()`` + + Examples:: + + writer.add_custom_scalars_marginchart(['twse/0050', 'twse/2330', 'twse/2006']) + """ + torch._C._log_api_usage_once( + "tensorboard.logging.add_custom_scalars_marginchart" + ) + if len(tags) != 3: + raise AssertionError(f"Expected 3 tags, got {len(tags)}.") + layout = {category: {title: ["Margin", tags]}} + self._get_file_writer().add_summary(custom_scalars(layout)) + + def add_custom_scalars(self, layout) -> None: + """Create special chart by collecting charts tags in 'scalars'. + + NOTE: This function can only be called once for each SummaryWriter() object. + + Because it only provides metadata to tensorboard, the function can be called before or after the training loop. + + Args: + layout (dict): {categoryName: *charts*}, where *charts* is also a dictionary + {chartName: *ListOfProperties*}. The first element in *ListOfProperties* is the chart's type + (one of **Multiline** or **Margin**) and the second element should be a list containing the tags + you have used in add_scalar function, which will be collected into the new chart. + + Examples:: + + layout = {'Taiwan':{'twse':['Multiline',['twse/0050', 'twse/2330']]}, + 'USA':{ 'dow':['Margin', ['dow/aaa', 'dow/bbb', 'dow/ccc']], + 'nasdaq':['Margin', ['nasdaq/aaa', 'nasdaq/bbb', 'nasdaq/ccc']]}} + + writer.add_custom_scalars(layout) + """ + torch._C._log_api_usage_once("tensorboard.logging.add_custom_scalars") + self._get_file_writer().add_summary(custom_scalars(layout)) + + def add_mesh( + self, + tag, + vertices, + colors=None, + faces=None, + config_dict=None, + global_step=None, + walltime=None, + ) -> None: + """Add meshes or 3D point clouds to TensorBoard. + + The visualization is based on Three.js, + so it allows users to interact with the rendered object. Besides the basic definitions + such as vertices, faces, users can further provide camera parameter, lighting condition, etc. + Please check https://threejs.org/docs/index.html#manual/en/introduction/Creating-a-scene for + advanced usage. + + Args: + tag (str): Data identifier + vertices (torch.Tensor): List of the 3D coordinates of vertices. + colors (torch.Tensor): Colors for each vertex + faces (torch.Tensor): Indices of vertices within each triangle. (Optional) + config_dict: Dictionary with ThreeJS classes names and configuration. + global_step (int): Global step value to record + walltime (float): Optional override default walltime (time.time()) + seconds after epoch of event + + Shape: + vertices: :math:`(B, N, 3)`. (batch, number_of_vertices, channels) + + colors: :math:`(B, N, 3)`. The values should lie in [0, 255] for type `uint8` or [0, 1] for type `float`. + + faces: :math:`(B, N, 3)`. The values should lie in [0, number_of_vertices] for type `uint8`. + + Examples:: + + from torch.utils.tensorboard import SummaryWriter + vertices_tensor = torch.as_tensor([ + [1, 1, 1], + [-1, -1, 1], + [1, -1, -1], + [-1, 1, -1], + ], dtype=torch.float).unsqueeze(0) + colors_tensor = torch.as_tensor([ + [255, 0, 0], + [0, 255, 0], + [0, 0, 255], + [255, 0, 255], + ], dtype=torch.int).unsqueeze(0) + faces_tensor = torch.as_tensor([ + [0, 2, 3], + [0, 3, 1], + [0, 1, 2], + [1, 3, 2], + ], dtype=torch.int).unsqueeze(0) + + writer = SummaryWriter() + writer.add_mesh('my_mesh', vertices=vertices_tensor, colors=colors_tensor, faces=faces_tensor) + + writer.close() + """ + torch._C._log_api_usage_once("tensorboard.logging.add_mesh") + self._get_file_writer().add_summary( + mesh(tag, vertices, colors, faces, config_dict), global_step, walltime + ) + + def flush(self) -> None: + """Flushes the event file to disk. + + Call this method to make sure that all pending events have been written to + disk. + """ + if self.all_writers is None: + return + for writer in self.all_writers.values(): + writer.flush() + + def close(self) -> None: + if self.all_writers is None: + return # ignore double close + for writer in self.all_writers.values(): + writer.flush() + writer.close() + # pyrefly: ignore [bad-assignment] + self.file_writer = self.all_writers = None + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_val, exc_tb): + self.close() diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/throughput_benchmark.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/throughput_benchmark.py new file mode 100644 index 0000000000000000000000000000000000000000..d4b94e0b13a39fbe192f89e791c663b2ecf45ea2 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/throughput_benchmark.py @@ -0,0 +1,161 @@ +# mypy: allow-untyped-defs + +import torch._C + + +def format_time(time_us=None, time_ms=None, time_s=None) -> str: + """Define time formatting.""" + if sum([time_us is not None, time_ms is not None, time_s is not None]) != 1: + raise AssertionError("Expected only one of time_us, time_ms, time_s is given.") + + US_IN_SECOND = 1e6 + US_IN_MS = 1e3 + + if time_us is None: + if time_ms is not None: + time_us = time_ms * US_IN_MS + elif time_s is not None: + time_us = time_s * US_IN_SECOND + else: + raise AssertionError("Shouldn't reach here :)") + + if time_us >= US_IN_SECOND: + return f'{time_us / US_IN_SECOND:.3f}s' + if time_us >= US_IN_MS: + return f'{time_us / US_IN_MS:.3f}ms' + return f'{time_us:.3f}us' + + +class ExecutionStats: + def __init__(self, c_stats, benchmark_config) -> None: + self._c_stats = c_stats + self.benchmark_config = benchmark_config + + @property + def latency_avg_ms(self): + return self._c_stats.latency_avg_ms + + @property + def num_iters(self): + return self._c_stats.num_iters + + @property + def iters_per_second(self): + """Return total number of iterations per second across all calling threads.""" + return self.num_iters / self.total_time_seconds + + @property + def total_time_seconds(self): + return self.num_iters * ( + self.latency_avg_ms / 1000.0) / self.benchmark_config.num_calling_threads + + def __str__(self) -> str: + return '\n'.join([ + "Average latency per example: " + format_time(time_ms=self.latency_avg_ms), + f"Total number of iterations: {self.num_iters}", + f"Total number of iterations per second (across all threads): {self.iters_per_second:.2f}", + "Total time: " + format_time(time_s=self.total_time_seconds) + ]) + + +class ThroughputBenchmark: + """ + This class is a wrapper around a c++ component throughput_benchmark::ThroughputBenchmark. + + This wrapper on the throughput_benchmark::ThroughputBenchmark component is responsible + for executing a PyTorch module (nn.Module or ScriptModule) under an inference + server like load. It can emulate multiple calling threads to a single module + provided. In the future we plan to enhance this component to support inter and + intra-op parallelism as well as multiple models running in a single process. + + Please note that even though nn.Module is supported, it might incur an overhead + from the need to hold GIL every time we execute Python code or pass around + inputs as Python objects. As soon as you have a ScriptModule version of your + model for inference deployment it is better to switch to using it in this + benchmark. + + Example:: + + >>> # xdoctest: +SKIP("undefined vars") + >>> from torch.utils import ThroughputBenchmark + >>> bench = ThroughputBenchmark(my_module) + >>> # Pre-populate benchmark's data set with the inputs + >>> for input in inputs: + ... # Both args and kwargs work, same as any PyTorch Module / ScriptModule + ... bench.add_input(input[0], x2=input[1]) + >>> # Inputs supplied above are randomly used during the execution + >>> stats = bench.benchmark( + ... num_calling_threads=4, + ... num_warmup_iters = 100, + ... num_iters = 1000, + ... ) + >>> print("Avg latency (ms): {}".format(stats.latency_avg_ms)) + >>> print("Number of iterations: {}".format(stats.num_iters)) + """ + + def __init__(self, module) -> None: + if isinstance(module, torch.jit.ScriptModule): + self._benchmark = torch._C.ThroughputBenchmark(module._c) + else: + self._benchmark = torch._C.ThroughputBenchmark(module) + + def run_once(self, *args, **kwargs): + """ + Given input id (input_idx) run benchmark once and return prediction. + + This is useful for testing that benchmark actually runs the module you + want it to run. input_idx here is an index into inputs array populated + by calling add_input() method. + """ + return self._benchmark.run_once(*args, **kwargs) + + def add_input(self, *args, **kwargs) -> None: + """ + Store a single input to a module into the benchmark memory and keep it there. + + During the benchmark execution every thread is going to pick up a + random input from the all the inputs ever supplied to the benchmark via + this function. + """ + self._benchmark.add_input(*args, **kwargs) + + def benchmark( + self, + num_calling_threads=1, + num_warmup_iters=10, + num_iters=100, + profiler_output_path=""): + """ + Run a benchmark on the module. + + Args: + num_warmup_iters (int): Warmup iters are used to make sure we run a module + a few times before actually measuring things. This way we avoid cold + caches and any other similar problems. This is the number of warmup + iterations for each of the thread in separate + + num_iters (int): Number of iterations the benchmark should run with. + This number is separate from the warmup iterations. Also the number is + shared across all the threads. Once the num_iters iterations across all + the threads is reached, we will stop execution. Though total number of + iterations might be slightly larger. Which is reported as + stats.num_iters where stats is the result of this function + + profiler_output_path (str): Location to save Autograd Profiler trace. + If not empty, Autograd Profiler will be enabled for the main benchmark + execution (but not the warmup phase). The full trace will be saved + into the file path provided by this argument + + + This function returns BenchmarkExecutionStats object which is defined via pybind11. + It currently has two fields: + - num_iters - number of actual iterations the benchmark have made + - avg_latency_ms - average time it took to infer on one input example in milliseconds + """ + config = torch._C.BenchmarkConfig() + config.num_calling_threads = num_calling_threads + config.num_warmup_iters = num_warmup_iters + config.num_iters = num_iters + config.profiler_output_path = profiler_output_path + c_stats = self._benchmark.benchmark(config) + return ExecutionStats(c_stats, config) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/viz/__init__.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/viz/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/viz/_cycles.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/viz/_cycles.py new file mode 100644 index 0000000000000000000000000000000000000000..2f68cf75dee4d37bb8d3dead4bcecccd7048159b --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/viz/_cycles.py @@ -0,0 +1,505 @@ +# mypy: allow-untyped-defs +import gc +import sys +from typing import Any, NamedTuple +import types +import weakref +import json +from tempfile import NamedTemporaryFile +import torch +from torch.cuda._memory_viz import _frames_fmt, _block_extra +import atexit +import logging +logger = logging.getLogger(__name__) + +def observe_garbage(observer): + enabled = True + + def disable() -> None: + # when GC runs during exit, things like `sys` will already be unloaded + # so we have to disable the callback to avoid hitting errors. + nonlocal enabled + enabled = False + atexit.register(disable) + + def gc_callback(phase, info) -> None: + nonlocal enabled + if not enabled: + return + if phase == "start": + gc.set_debug(gc.DEBUG_SAVEALL) + elif phase == "stop": + orig_trace = sys.getprofile() + self_return = [False] + + def do_collect(*args, **kwargs): + nonlocal enabled + if not self_return[0]: + self_return[0] = True + else: + sys.setprofile(orig_trace) + enabled = False + try: + # things in gc.garbage have survived a collection + # so to free them we have to collect a generation greater than them + # but that might _also_ free other stuff and we don't want to miss + # that stuff. So we have to now force gc at the highest level here, + # report all of what we found, _then_ we can free it up. + if info['generation'] != 2: + gc.collect() + observer(gc.garbage) + gc.garbage.clear() + # we have to re-run GC to clean up the cycles + # we saved from before. + gc.set_debug(0) + before = torch.cuda.memory_allocated() + gc.collect() + after = torch.cuda.memory_allocated() + if before != after: + logger.warning("CUDA Memory changed during GC, %d bytes freed.", before - after) + finally: + enabled = True + if orig_trace is not None: + return orig_trace(*args, **kwargs) + sys.setprofile(do_collect) + + gc.callbacks.append(gc_callback) + + # provide a way to disarm the callback + def remove() -> None: + gc.callbacks.remove(gc_callback) + return remove + +# Function to visualize cycles adapted from refcycle: +# Copyright 2013 Mark Dickinson +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +def _get_cell_type(): + def f(x=None): + return lambda: x + return type(f().__closure__[0]) + +CellType = _get_cell_type() + +def annotated_references(obj): + """ + Return known information about references held by the given object. + + Returns a mapping from referents to lists of descriptions. Note that there + may be more than one edge leading to any particular referent; hence the + need for a list. Descriptions are currently strings. + + """ + references: dict[int, list[str]] = {} + + def add_reference(name, obj) -> None: + references.setdefault(id(obj), []).append(name) + + def add_attrs(*attrs) -> None: + for attr in attrs: + if hasattr(obj, attr): + add_reference(attr, getattr(obj, attr)) + + def add_cell_references() -> None: + try: + add_attrs("cell_contents") + except ValueError: + # if cell_contents is empty, + # accessing it raises ValueError + # in this case there is no object to + # annotate + pass + + def add_function_references() -> None: + add_attrs("__defaults__", + "__closure__", + "__globals__", + "__code__", + "__name__", + "__module__", + "__doc__" + "__qualname__", + "__annotations__", + "__kwdefaults__") + + + def add_sequence_references() -> None: + for position, item in enumerate(obj): + add_reference(f"[{position}]", item) + + def add_dict_references() -> None: + for key, value in obj.items(): + add_reference("key", key) + add_reference(f"[{repr(key)}]", value) + + def add_set_references() -> None: + for elt in obj: + add_reference("element", elt) + + def add_bound_method_references() -> None: + add_attrs("__self__", "__func__", "im_class") + + def add_weakref_references() -> None: + # For subclasses of weakref, we can't reliably distinguish the + # callback (if any) from other attributes. + if type(obj) is weakref.ref: + referents = gc.get_referents(obj) + if len(referents) == 1: + target = referents[0] + add_reference("__callback__", target) + + + def add_frame_references() -> None: + f_locals = obj.f_locals + add_attrs("f_back", "f_code", "f_builtins", "f_globals", "f_trace", "f_locals") + # Some badly-behaved code replaces the f_locals dict with + # something that doesn't support the full dict interface. So we + # only continue with the annotation if f_locals is a Python dict. + if type(f_locals) is dict: + for name, local in obj.f_locals.items(): + add_reference(f"local {name}", local) + + def add_getset_descriptor_references() -> None: + add_attrs("__objclass__", "__name__", "__doc__") + + type_based_references = { + tuple: add_sequence_references, + list: add_sequence_references, + dict: add_dict_references, + set: add_set_references, + frozenset: add_set_references, + types.FunctionType: add_function_references, + types.FrameType: add_frame_references, + CellType: add_cell_references, + types.MethodType: add_bound_method_references, + weakref.ref: add_weakref_references, + types.GetSetDescriptorType: add_getset_descriptor_references, + } + + for type_ in type(obj).__mro__: + if type_ in type_based_references: + type_based_references[type_]() + + add_attrs("__dict__", "__class__") + if isinstance(obj, type): + add_attrs("__mro__") + + return references + +############################################################################### +# Object annotations. + + +BASE_TYPES = (int, float, complex, type(None), str, bytes) +FRAME_FILENAME_LIMIT = 32 + +def object_annotation(obj): + """ + Return a string to be used for Graphviz nodes. + + The string should be short but as informative as possible. + """ + + def format_sequence(obj): + body = ','.join(repr(x) if isinstance(x, BASE_TYPES) else type(x).__name__ for x in obj[:8]) + if len(obj) > 8: + body = f'{body}, ...{len(obj) - 8}' + return body + + # For basic types, use the repr. + if isinstance(obj, BASE_TYPES): + return repr(obj) + if type(obj).__name__ == 'function': + return f"function\n{obj.__name__}" + elif isinstance(obj, types.MethodType): + try: + func_name = obj.__func__.__qualname__ + except AttributeError: + func_name = "" + return f"instancemethod\n{func_name}" + elif isinstance(obj, list): + return f"[{format_sequence(obj)}]" + elif isinstance(obj, tuple): + return f"({format_sequence(obj)})" + elif isinstance(obj, dict): + return f"dict[{len(obj)}]" + elif isinstance(obj, types.ModuleType): + return f"module\n{obj.__name__}" + elif isinstance(obj, type): + return f"type\n{obj.__name__}" + elif isinstance(obj, weakref.ref): + referent = obj() + if referent is None: + return "weakref (dead referent)" + else: + return f"weakref to id 0x{id(referent):x}" + elif isinstance(obj, types.FrameType): + filename = obj.f_code.co_filename + if len(filename) > FRAME_FILENAME_LIMIT: + filename = "..." + filename[-(FRAME_FILENAME_LIMIT - 3):] + return f"frame\n{filename}:{obj.f_lineno}" + elif is_cuda_tensor(obj): + return f"object\n{type(obj).__module__}.{type(obj).__name__} ({obj.shape})" + else: + return f"object\n{type(obj).__module__}.{type(obj).__name__}" + + + +class Node(NamedTuple): + label: str + context: str | None + root: bool + referrents: list[tuple[str, int]] + +def create_graph(objects, *, context=None, filter=None): + if context is None: + context = cuda_allocation_context() + if filter is None: + filter = is_cuda_tensor + + objects = [obj for obj in objects if not isinstance(obj, weakref.ProxyTypes)] + nodes = [Node(object_annotation(obj), context(obj), filter(obj), []) for obj in objects] + node_referrers: list[list[int]] = [[] for obj in objects] + + id_to_node = {id(obj): i for i, obj in enumerate(objects)} + for obj in objects: + fidx = id_to_node[id(obj)] + f = nodes[fidx] + references = annotated_references(obj) + for referrent in gc.get_referents(obj): + rid = id(referrent) + tidx = id_to_node.get(rid) + if tidx is None: + continue + labels = references.get(rid, ["?"]) + node_referrers[tidx].append(fidx) + for label in labels: + f.referrents.append((label, tidx)) + + to_search = [i for i, n in enumerate(nodes) if n.root] + to_keep = set() + while to_search: + idx = to_search.pop() + if idx in to_keep: + continue + to_keep.add(idx) + referrers = node_referrers[idx] + to_search.extend(referrers) + id_to_filtered_id: dict[int, int] = {} + filtered: list[Any] = [] + for i, n in enumerate(nodes): + if i in to_keep: + id_to_filtered_id[i] = len(id_to_filtered_id) + filtered.append(n) + for n in filtered: + n.referrents[:] = [(label, id_to_filtered_id[idx]) + for (label, idx) in n.referrents + if idx in id_to_filtered_id] + return filtered + +def escape(n): + return json.dumps(n) + + +def is_cuda_tensor(obj): + return ( + isinstance(obj, torch.Tensor) and + obj.device.type == "cuda" and + not isinstance(obj, torch._subclasses.FakeTensor) + ) + +def cuda_allocation_context(): + snapshot = torch.cuda.memory._snapshot() + addr_to_frame = {} + for seg in snapshot['segments']: + addr = seg['address'] + for blk in seg['blocks']: + if blk['state'] == 'active_allocated': + frames, _real_size = _block_extra(blk) + addr_to_frame[addr] = frames + addr += blk['size'] + + def object_context(obj): + if is_cuda_tensor(obj): + addr = obj.untyped_storage().data_ptr() + frames = addr_to_frame.get(addr) + if frames is not None: + return '\n'.join(_frames_fmt(frames, full_filename=True)) + return None + return object_context + +def to_dot(nodes): + lines = ["digraph GraphName {", "node [shape=rect];", 'rankdir=LR;'] + for i, n in enumerate(nodes): + lines.append(f'{i} [label={escape(n.label)}, color={"red" if n.root else "black"}];') + + for i, f in enumerate(nodes): + for label, j in f.referrents: + lines.append(f'{i} -> {j} [label = {escape(label)}]') + lines.append("}\n") + return '\n'.join(lines) + +_template = """ + + + + + + +
+
+
+
+
Mouse over tensor objects to see where they were allocated.
+
+
+ + + + +""" +_listener_template = """ +document.getElementById('node{id}').addEventListener('mouseover', function(event) {{ + document.getElementById("stacktrace").textContent = {stack} +}}) +""" +def to_html(nodes): + listeners = [] + for i, n in enumerate(nodes): + if n.context is None: + continue + s = _listener_template.format(id=str(i + 1), stack=escape(f'{n.label}:\n{n.context}')) + listeners.append(s) + dot = to_dot(nodes) + return _template.replace('$DOT', repr(dot)).replace('$LISTENERS', '\n'.join(listeners)) + +def observe_tensor_cycles(callback): + torch.cuda.memory._record_memory_history(max_entries=100000) + + def observer(garbage) -> None: + if garbage: + if not any(is_cuda_tensor(obj) for obj in garbage): + logger.info("No CUDA Tensors found in garbage") + return + callback(to_html(create_graph(garbage))) + return observe_garbage(observer) + + +def warn_tensor_cycles(): + """ + Install a warning that reports whenever a cycle that is holding CUDA memory is observed. + + The warning produces an .html file that visualizes the cycle, + and links it to the stack frame that allocated the CUDA tensor. + + Reference cycles are freed by the cycle collector rather than being cleaned up + when the objects in the cycle first become unreachable. If a cycle points to a tensor, + the CUDA memory for that tensor will not be freed until garbage collection runs. + Accumulation of CUDA allocations can lead to out of memory errors (OOMs), as well as + non-deterministic allocation behavior which is harder to debug. + """ + logger.info("Watching Python reference cycles for CUDA Tensors.") + + def write_and_log(html) -> None: + with NamedTemporaryFile('w', suffix='.html') as f: + f.write(html) + logger.warning('Reference cycle includes a CUDA Tensor see visualization of cycle %s', f.name) + return observe_tensor_cycles(write_and_log) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/weak.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/weak.py new file mode 100644 index 0000000000000000000000000000000000000000..fa22b2b3765e9f68dd37b3af32e764ce3c074e9d --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/utils/weak.py @@ -0,0 +1,367 @@ +# mypy: allow-untyped-defs +from __future__ import annotations + +import collections.abc as _collections_abc +import weakref +from collections.abc import Mapping, MutableMapping +from weakref import ref + +from torch import Tensor + + +WeakRef = ref + + +__all__ = [ + "TensorWeakRef", + "WeakIdRef", + "WeakIdKeyDictionary", + "WeakTensorKeyDictionary", +] + + +# TODO: make weakref properly thread safe following +# https://github.com/python/cpython/pull/125325 +class _IterationGuard: + # This context manager registers itself in the current iterators of the + # weak container, such as to delay all removals until the context manager + # exits. + # This technique should be relatively thread-safe (since sets are). + + def __init__(self, weakcontainer) -> None: + # Don't create cycles + self.weakcontainer = ref(weakcontainer) + + def __enter__(self): + w = self.weakcontainer() + if w is not None: + w._iterating.add(self) + return self + + def __exit__(self, e, t, b): + w = self.weakcontainer() + if w is not None: + s = w._iterating + s.remove(self) + if not s: + w._commit_removals() + + +# This file defines a variant of WeakKeyDictionary that overrides the hashing +# behavior of the key to use object identity, rather than the builtin +# __eq__/__hash__ functions. This is useful for Tensor weak keys, as their +# __eq__ implementation return a Tensor (elementwise equality), which means +# you can't use them directly with the WeakKeyDictionary in standard library. +# +# Our implementation strategy is to create a wrapper weak key object, which we +# use as a key in a stock Python dictionary. This is similar to how weakref +# implements WeakKeyDictionary, but instead of using weakref.ref as the +# wrapper, we use a custom wrapper that has different __eq__ and __hash__ +# behavior. Note that we subsequently store this weak key directly in an +# ORDINARY dictionary, since the newly constructed WeakIdKey's only use would +# be a dictionary so it would have no strong references. Ensuring that +# only live WeakIdKeys are in the map is handled by putting finalizers on the +# original key object. + + +# It is simpler to implement this with composition, but if we want to +# directly reuse the callback mechanism on weakref, we need the weakref +# and the key to be exactly the same object. Reusing the callback mechanism +# minimizes the divergence between our implementation and Lib/weakref.py +# +# NB: Prefer using this when working with weakrefs of Tensors; e.g., do +# WeakIdRef(tensor) rather than weakref.ref(tensor); it handles a number of +# easy to get wrong cases transparently for you. +class WeakIdRef(weakref.ref): + __slots__ = ["_id"] + + def __init__(self, key, callback=None) -> None: + # Unlike stock weakref, which preserves hash semantics of the + # original object but lazily defers hash calls until the first + # time the user attempts to hash the weakref, we can eagerly + # cache the id of the key as we know this is definitely the hash + # method + self._id = id(key) + super().__init__(key, callback) # type: ignore[call-arg] + + def __call__(self): + r = super().__call__() + # Special logic for Tensor PyObject resurrection + if hasattr(r, "_fix_weakref"): + r._fix_weakref() # type: ignore[union-attr] + return r + + def __hash__(self): + return self._id + + def __eq__(self, other): + # An attractive but wrong alternate implementation is to only test if + # the stored _ids match. This can lead to an ABA problem if you have: + # + # a1 = A() + # w1 = WeakIdRef(a1) + # del a1 + # a2 = A() # suppose it gets the same ID as a1 + # w2 = WeakIdRef(a2) + # print(w1 == w2) + # + # This should be False, as a1 and a2 are unrelated (and a1 is + # dead anyway) + a = self() + b = other() + if a is not None and b is not None: + return a is b + return self is other + + +# This is the same as WeakIdRef but equality is checked using hash() rather than id. +# This will be equivalent to the one above except for classes where hash is not their id. +class _WeakHashRef(weakref.ref): + __slots__ = ["_id"] + + def __init__(self, key, callback=None) -> None: + # Unlike stock weakref, which preserves hash semantics of the + # original object but lazily defers hash calls until the first + # time the user attempts to hash the weakref, we can eagerly + # cache the id of the key as we know this is definitely the hash + # method + self._id = hash(key) + super().__init__(key, callback) # type: ignore[call-arg] + + def __call__(self): + r = super().__call__() + # Special logic for Tensor PyObject resurrection + if hasattr(r, "_fix_weakref"): + r._fix_weakref() # type: ignore[union-attr] + return r + + def __hash__(self): + return self._id + + def __eq__(self, other): + # Use hash equality to determine ref equality. + # ScriptObject implements __hash__ to return the wrapped IValue's id, so + # this is equivalent to doing an identity comparison. + a = self() + b = other() + if a is not None and b is not None: + return hash(a) == hash(b) + return self is other + + +# This is directly adapted from cpython/Lib/weakref.py +class WeakIdKeyDictionary(MutableMapping): + def __init__(self, dict=None, ref_type=WeakIdRef) -> None: # CHANGED + self.data = {} + + self.ref_type = ref_type # CHANGED + + def remove(k, selfref=ref(self)) -> None: + self = selfref() + if self is not None: + if self._iterating: + self._pending_removals.append(k) + else: + try: + del self.data[k] + except KeyError: + pass + + self._remove = remove + # A list of dead weakrefs (keys to be removed) + self._pending_removals = [] + self._iterating = set() + self._dirty_len = False + if dict is not None: + self.update(dict) + + def _commit_removals(self) -> None: + # NOTE: We don't need to call this method before mutating the dict, + # because a dead weakref never compares equal to a live weakref, + # even if they happened to refer to equal objects. + # However, it means keys may already have been removed. + pop = self._pending_removals.pop + d = self.data + while True: + try: + key = pop() + except IndexError: + return + + try: + del d[key] + except KeyError: + pass + + def _scrub_removals(self) -> None: + d = self.data + self._pending_removals = [k for k in self._pending_removals if k in d] + self._dirty_len = False + + def __delitem__(self, key) -> None: + self._dirty_len = True + del self.data[self.ref_type(key)] # CHANGED + + def __getitem__(self, key): + return self.data[self.ref_type(key)] # CHANGED + + def __len__(self) -> int: + if self._dirty_len and self._pending_removals: + # self._pending_removals may still contain keys which were + # explicitly removed, we have to scrub them (see issue #21173). + self._scrub_removals() + return len(self.data) - len(self._pending_removals) + + def __repr__(self) -> str: + return f"<{self.__class__.__name__} at {id(self):#x}>" + + def __setitem__(self, key, value) -> None: + self.data[self.ref_type(key, self._remove)] = value # CHANGED + + def copy(self): + new = WeakIdKeyDictionary() + with _IterationGuard(self): + for key, value in self.data.items(): + o = key() + if o is not None: + new[o] = value + return new + + __copy__ = copy + + def __deepcopy__(self, memo): + from copy import deepcopy + + new = self.__class__() + with _IterationGuard(self): + for key, value in self.data.items(): + o = key() + if o is not None: + new[o] = deepcopy(value, memo) + return new + + def get(self, key, default=None): + return self.data.get(self.ref_type(key), default) # CHANGED + + def __contains__(self, key) -> bool: + try: + wr = self.ref_type(key) # CHANGED + except TypeError: + return False + return wr in self.data + + def items(self): + with _IterationGuard(self): + for wr, value in self.data.items(): + key = wr() + if key is not None: + yield key, value + + def keys(self): + with _IterationGuard(self): + for wr in self.data: + obj = wr() + if obj is not None: + yield obj + + __iter__ = keys + + def values(self): + with _IterationGuard(self): + for wr, value in self.data.items(): + if wr() is not None: + yield value + + def keyrefs(self): + """Return a list of weak references to the keys. + + The references are not guaranteed to be 'live' at the time + they are used, so the result of calling the references needs + to be checked before being used. This can be used to avoid + creating references that will cause the garbage collector to + keep the keys around longer than needed. + + """ + return list(self.data) + + def popitem(self): + self._dirty_len = True + while True: + key, value = self.data.popitem() + o = key() + if o is not None: + return o, value + + # pyrefly: ignore [bad-override] + def pop(self, key, *args): + self._dirty_len = True + + return self.data.pop(self.ref_type(key), *args) # CHANGED + + def setdefault(self, key, default=None): + return self.data.setdefault( + self.ref_type(key, self._remove), default + ) # CHANGED + + def update(self, dict=None, **kwargs) -> None: # type: ignore[override] + d = self.data + if dict is not None: + if not hasattr(dict, "items"): + dict = type({})(dict) + for key, value in dict.items(): + d[self.ref_type(key, self._remove)] = value # CHANGED + if kwargs: + self.update(kwargs) + + def __ior__(self, other): + self.update(other) + return self + + def __or__(self, other): + if isinstance(other, _collections_abc.Mapping): + c = self.copy() + c.update(other) + return c + return NotImplemented + + def __ror__(self, other): + if isinstance(other, _collections_abc.Mapping): + c = self.__class__() + c.update(other) + c.update(self) + return c + return NotImplemented + + # Default Mapping equality will tests keys for equality, but + # we want to test ids for equality + def __eq__(self, other): + if not isinstance(other, Mapping): + return NotImplemented + return {id(k): v for k, v in self.items()} == { + id(k): v for k, v in other.items() + } + + +# Convenience alias +WeakTensorKeyDictionary = WeakIdKeyDictionary + + +class TensorWeakRef: + """Wrapper around a weak ref of a Tensor that handles the _fix_weakref() call required when unwrapping a Tensor weakref.""" + + ref: WeakRef[Tensor] + + def __init__(self, tensor: Tensor) -> None: + if not isinstance(tensor, Tensor): + raise AssertionError(f"expected torch.Tensor, got {type(tensor)}.") + self.ref = weakref.ref(tensor) + + def __call__(self): + out = self.ref() + if out is None: + return out + if not isinstance(out, Tensor): + raise AssertionError(f"expected torch.Tensor, got {type(out)}.") + # TODO, add _fix_weakref type binding + out._fix_weakref() # type: ignore[attr-defined] + return out diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/version.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/version.py new file mode 100644 index 0000000000000000000000000000000000000000..0e30481414e080486881ca642c43937529522293 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/version.py @@ -0,0 +1,10 @@ +from typing import Optional + +__all__ = ['__version__', 'debug', 'cuda', 'git_version', 'hip', 'rocm', 'xpu'] +__version__ = '2.12.1' +debug = False +cuda: Optional[str] = '13.2' +git_version = '7269437d655783a26cba32aa88195b741ff496aa' +hip: Optional[str] = None +rocm: Optional[str] = None +xpu: Optional[str] = None diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/xpu/__init__.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/xpu/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..0c77d45201c09ebc980321327c581d808982a957 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/xpu/__init__.py @@ -0,0 +1,650 @@ +# mypy: allow-untyped-defs +r""" +This package introduces support for the XPU backend, specifically tailored for +Intel GPU optimization. + +This package is lazily initialized, so you can always import it, and use +:func:`is_available()` to determine if your system supports XPU. +""" + +from __future__ import annotations + +import threading +import traceback +from functools import lru_cache +from typing import Any, NewType, TYPE_CHECKING + +import torch +import torch._C +from torch._utils import _dummy_type, _LazySeedTracker + + +if TYPE_CHECKING: + from collections.abc import Callable + + from torch.types import Device + +from ._utils import _get_device_index +from .graphs import ( + graph, + graph_pool_handle, + is_current_stream_capturing, + make_graphed_callables, + XPUGraph, +) +from .streams import Event, Stream + + +_initialized = False +_tls = threading.local() +_initialization_lock = threading.Lock() +_queued_calls: list[ + tuple[Callable[[], None], list[str]] +] = [] # don't invoke these until initialization occurs +_is_in_bad_fork = getattr(torch._C, "_xpu_isInBadFork", lambda: False) +_lazy_seed_tracker = _LazySeedTracker() +default_generators: tuple[torch._C.Generator] = () # type: ignore[assignment] + + +def _is_compiled() -> bool: + r"""Return true if compile with XPU support.""" + return torch._C._has_xpu + + +if _is_compiled(): + _XpuDeviceProperties = torch._C._XpuDeviceProperties + _exchange_device = torch._C._xpu_exchangeDevice + _maybe_exchange_device = torch._C._xpu_maybeExchangeDevice +else: + # Define dummy if PyTorch was compiled without XPU + _XpuDeviceProperties = _dummy_type("_XpuDeviceProperties") # type: ignore[assignment, misc] + + def _exchange_device(device: int) -> int: + raise NotImplementedError("PyTorch was compiled without XPU support") + + def _maybe_exchange_device(device: int) -> int: + raise NotImplementedError("PyTorch was compiled without XPU support") + + +@lru_cache(maxsize=1) +def device_count() -> int: + r"""Return the number of XPU device available.""" + if not _is_compiled(): + return 0 + return torch._C._xpu_getDeviceCount() + + +def is_available() -> bool: + r"""Return a bool indicating if XPU is currently available.""" + # This function never throws. + return device_count() > 0 + + +def is_bf16_supported(including_emulation: bool = True) -> bool: + r"""Return a bool indicating if the current XPU device supports dtype bfloat16.""" + if not is_available(): + return False + return ( + including_emulation + or torch.xpu.get_device_properties().has_bfloat16_conversions + ) + + +def is_tf32_supported() -> bool: + r"""Return a bool indicating if the current XPU device supports dtype tf32.""" + if not is_available(): + return False + # On Intel Xe architecture and newer, TF32 operations can be accelerated + # through DPAS (Dot Product Accumulate Systolic) instructions. Therefore, + # TF32 support can be determined by checking whether the device supports + # subgroup matrix multiply-accumulate operations. + return torch.xpu.get_device_properties().has_subgroup_matrix_multiply_accumulate + + +def is_initialized(): + r"""Return whether PyTorch's XPU state has been initialized.""" + return _initialized and not _is_in_bad_fork() + + +def _lazy_call(callable, **kwargs) -> None: + if is_initialized(): + callable() + else: + global _lazy_seed_tracker + if kwargs.get("seed_all", False): + _lazy_seed_tracker.queue_seed_all(callable, traceback.format_stack()) + elif kwargs.get("seed", False): + _lazy_seed_tracker.queue_seed(callable, traceback.format_stack()) + else: + # Don't store the actual traceback to avoid memory cycle + _queued_calls.append((callable, traceback.format_stack())) + + +def init() -> None: + r"""Initialize PyTorch's XPU state. + This is a Python API about lazy initialization that avoids initializing + XPU until the first time it is accessed. Does nothing if the XPU state is + already initialized. + """ + _lazy_init() + + +def _lazy_init() -> None: + global _initialized, _queued_calls + if is_initialized() or hasattr(_tls, "is_initializing"): + return + with _initialization_lock: + # This test was was protected via GIL. Double-check whether XPU has + # already been initialized. + if is_initialized(): + return + # Stop promptly upon encountering a bad fork error. + if _is_in_bad_fork(): + raise RuntimeError( + "Cannot re-initialize XPU in forked subprocess. To use XPU with " + "multiprocessing, you must use the 'spawn' start method" + ) + if not _is_compiled(): + raise AssertionError("Torch not compiled with XPU enabled") + # This function inits XPU backend and detects bad fork processing. + torch._C._xpu_init() + # Some of the queued calls may reentrantly call _lazy_init(); We need to + # just return without initializing in that case. + _tls.is_initializing = True + + _queued_calls.extend(calls for calls in _lazy_seed_tracker.get_calls() if calls) + + try: + for queued_call, orig_traceback in _queued_calls: + try: + queued_call() + except Exception as e: + msg = ( + f"XPU call failed lazily at initialization with error: {str(e)}\n\n" + f"XPU call was originally invoked at:\n\n{''.join(orig_traceback)}" + ) + raise Exception(msg) from e # noqa: TRY002 + finally: + delattr(_tls, "is_initializing") + _initialized = True + + +class _DeviceGuard: + def __init__(self, index: int) -> None: + self.idx = index + self.prev_idx = -1 + + def __enter__(self): + self.prev_idx = torch.xpu._exchange_device(self.idx) + + def __exit__(self, type: Any, value: Any, traceback: Any): + self.idx = torch.xpu._maybe_exchange_device(self.prev_idx) + return False + + +class device: + r"""Context-manager that changes the selected device. + + Args: + device (torch.device or int or str): device index to select. It's a no-op if + this argument is a negative integer or ``None``. + """ + + def __init__(self, device: Any) -> None: + self.idx = _get_device_index(device, optional=True) + self.prev_idx = -1 + + def __enter__(self): + self.prev_idx = torch.xpu._exchange_device(self.idx) + + def __exit__(self, type: Any, value: Any, traceback: Any): + self.idx = torch.xpu._maybe_exchange_device(self.prev_idx) + return False + + +class device_of(device): + r"""Context-manager that changes the current device to that of given object. + + You can use both tensors and storages as arguments. If a given object is + not allocated on a XPU, this is a no-op. + + Args: + obj (Tensor or Storage): object allocated on the selected device. + """ + + def __init__(self, obj) -> None: + idx = obj.get_device() if obj.is_xpu else -1 + super().__init__(idx) + + +def set_device(device: Device) -> None: + r"""Set the current device. + + Args: + device (torch.device or int or str): selected device. This function is a + no-op if this argument is negative. + """ + _lazy_init() + device = _get_device_index(device) + if device >= 0: + torch._C._xpu_setDevice(device) + + +def get_device_name(device: Device = None) -> str: + r"""Get the name of a device. + + Args: + device (torch.device or int or str, optional): device for which to + return the name. This function is a no-op if this argument is a + negative integer. It uses the current device, given by :func:`~torch.xpu.current_device`, + if :attr:`device` is ``None`` (default). + + Returns: + str: the name of the device + """ + return get_device_properties(device).name + + +@lru_cache(None) +def get_device_capability(device: Device = None) -> dict[str, Any]: + r"""Get the xpu capability of a device. + + Args: + device (torch.device or int or str, optional): device for which to + return the device capability. This function is a no-op if this + argument is a negative integer. It uses the current device, given by + :func:`~torch.xpu.current_device`, if :attr:`device` is ``None`` + (default). + + Returns: + dict[str, Any]: the xpu capability dictionary of the device + """ + props = get_device_properties(device) + # Only keep attributes that are safe for dictionary serialization. + serializable_types = (int, float, bool, str, type(None), list, tuple, dict) + return { + key: value + for key in dir(props) + if not key.startswith("__") + and isinstance((value := getattr(props, key)), serializable_types) + } + + +def get_device_properties( + device: Device = None, +) -> _XpuDeviceProperties: + r"""Get the properties of a device. Returns _XpuDeviceProperties containing the following device properties: + + - ``name`` (str): device name. + - ``platform_name`` (str): SYCL platform name. + - ``vendor`` (str): device vendor. + - ``device_id`` (int): device identifier (product ID). + - ``driver_version`` (str): driver version. + - ``version`` (str): runtime version. + - ``max_compute_units`` (int): number of parallel compute units. + - ``gpu_eu_count`` (int): number of EUs (Execution Unit). + - ``max_work_group_size``: (int): maximum number of work-items permitted in a work-group. + - ``max_num_sub_groups`` (int): maximum number of sub-groups supported in a work-group. + - ``memory_clock_rate`` (int) maximum clock rate of device's global memory in MHz. + - ``memory_bus_width`` (int) maximum bus width between device and memory in bits. + - ``sub_group_sizes``: (list[int]): a list of supported sub-group sizes. + - ``local_mem_size`` (int): device local memory capacity that can be allocated per work-group in bytes. + - ``has_fp16`` (bool): whether float16 dtype is supported. + - ``has_fp64`` (bool): whether float64 dtype is supported. + - ``has_atomic64`` (bool): whether 64-bit atomic operations are supported. + - ``has_bfloat16_conversions`` (bool): whether bfloat16 conversions are supported. + - ``has_subgroup_matrix_multiply_accumulate`` (bool): whether DPAS (Dot Product Accumulate Systolic) is supported. + - ``has_subgroup_matrix_multiply_accumulate_tensor_float32`` (bool): whether DPAS with tf32 inputs is supported. + - ``has_subgroup_2d_block_io`` (bool): whether 2D block I/O for efficient matrix multiplication is supported. + - ``total_memory`` (int): device global memory in bytes. + - ``gpu_subslice_count`` (int): number of subslice. + - ``architecture`` (int): device architecture identifier (experimental). + - ``type`` (str): device type, e.g. 'cpu', 'gpu', accelerator', 'host', 'unknown'. + - ``uuid`` (Any): device UUID (Universal Unique ID), 16 bytes. + + Args: + device (torch.device or int or str): device for which to return the + properties of the device. + + Returns: + _XpuDeviceProperties: the properties of the device + """ + _lazy_init() + device = _get_device_index(device, optional=True) + return _get_device_properties(device) # type: ignore[name-defined] # noqa: F821 + + +def current_device() -> int: + r"""Return the index of a currently selected device.""" + _lazy_init() + return torch._C._xpu_getDevice() + + +def _get_device(device: int | str | torch.device) -> torch.device: + r"""Return the torch.device type object from the passed in device. + + Args: + device (torch.device or int or str): selected device. + """ + if isinstance(device, str): + device = torch.device(device) + elif isinstance(device, int): + device = torch.device("xpu", device) + return device + + +def can_device_access_peer(device: Device, peer: Device) -> bool: + r"""Query whether a device can access a peer device's memory. + + Args: + device (torch.device or int or str): selected device. + peer (torch.device or int or str): peer device to query access to. + + Returns: + bool: ``True`` if ``device`` can access ``peer``, ``False`` otherwise. + """ + _lazy_init() + device = _get_device_index(device, optional=True) + peer = _get_device_index(peer, optional=True) + return torch._C._xpu_canDeviceAccessPeer(device, peer) + + +class StreamContext: + r"""Context-manager that selects a given stream. + + All XPU kernels queued within its context will be enqueued on a selected + stream. + + Args: + Stream (Stream): selected stream. This manager is a no-op if it's + ``None``. + .. note:: Streams are per-device. + """ + + cur_stream: torch.xpu.Stream | None + + def __init__(self, stream: torch.xpu.Stream | None) -> None: + self.stream = stream + self.idx = _get_device_index(None, True) + if self.idx is None: + self.idx = -1 # pyrefly: ignore [bad-assignment] + + def __enter__(self): + cur_stream = self.stream + if cur_stream is None or self.idx == -1: + return + self.src_prev_stream = torch.xpu.current_stream(None) + + # If the stream is not on the current device, then set the current stream on the device + if self.src_prev_stream.device != cur_stream.device: + with device(cur_stream.device): + self.dst_prev_stream = torch.xpu.current_stream(cur_stream.device) + torch.xpu.set_stream(cur_stream) + + def __exit__(self, type: Any, value: Any, traceback: Any): + cur_stream = self.stream + if cur_stream is None or self.idx == -1: + return + + # Reset the stream on the original device and destination device + if self.src_prev_stream.device != cur_stream.device: + torch.xpu.set_stream(self.dst_prev_stream) + torch.xpu.set_stream(self.src_prev_stream) + + +def stream(stream: torch.xpu.Stream | None) -> StreamContext: + r"""Wrap around the Context-manager StreamContext that selects a given stream. + + Arguments: + stream (Stream): selected stream. This manager is a no-op if it's ``None``. + """ + return StreamContext(stream) + + +def _set_stream_by_id(stream_id, device_index, device_type) -> None: + r"""set stream specified by the stream id, device index and device type + + Args: stream_id (int): not visible to the user, used to assigned to the specific stream. + device_index (int): selected device index. + device_type (int): selected device type. + """ + torch._C._xpu_setStream( + stream_id=stream_id, + device_index=device_index, + device_type=device_type, + ) + + +def set_stream(stream: Stream) -> None: + r"""Set the current stream. This is a wrapper API to set the stream. + Usage of this function is discouraged in favor of the ``stream`` + context manager. + + Args: + stream (Stream): selected stream. This function is a no-op + if this argument is ``None``. + """ + if stream is None: + return + _lazy_init() + _set_stream_by_id( + stream_id=stream.stream_id, + device_index=stream.device_index, + device_type=stream.device_type, + ) + + +def current_stream(device: Device = None) -> Stream: + r"""Return the currently selected :class:`Stream` for a given device. + + Args: + device (torch.device or int, optional): selected device. Returns + the currently selected :class:`Stream` for the current device, given + by :func:`~torch.xpu.current_device`, if :attr:`device` is ``None`` + (default). + """ + _lazy_init() + streamdata = torch._C._xpu_getCurrentStream( + _get_device_index(device, optional=True) + ) + return Stream( + stream_id=streamdata[0], device_index=streamdata[1], device_type=streamdata[2] + ) + + +def get_stream_from_external(data_ptr: int, device: Device = None) -> Stream: + r"""Return a :class:`Stream` from an external SYCL queue. + + This function is used to wrap SYCL queue created in other libraries in order + to facilitate data exchange and multi-library interactions. + + .. note:: This function doesn't manage the queue life-cycle, it is the user + responsibility to keep the referenced queue alive while this returned stream is + being used. The different SYCL queue pointers will result in distinct + :class:`Stream` objects, even if the SYCL queues they dereference are equivalent. + + Args: + data_ptr(int): Integer representation of the `sycl::queue*` value passed externally. + device(torch.device or int, optional): the device where the queue was originally created. + It is the user responsibility to ensure the device is specified correctly. + """ + _lazy_init() + streamdata = torch._C._xpu_getStreamFromExternal( + data_ptr, _get_device_index(device, optional=True) + ) + return Stream( + stream_id=streamdata[0], device_index=streamdata[1], device_type=streamdata[2] + ) + + +def synchronize(device: Device = None) -> None: + r"""Wait for all kernels in all streams on a XPU device to complete. + + Args: + device (torch.device or int, optional): device for which to synchronize. + It uses the current device, given by :func:`~torch.xpu.current_device`, + if :attr:`device` is ``None`` (default). + """ + _lazy_init() + device = _get_device_index(device, optional=True) + return torch._C._xpu_synchronize(device) + + +def get_arch_list() -> list[str]: + r"""Return list XPU architectures this library was compiled for.""" + if not _is_compiled(): + return [] + arch_flags = torch._C._xpu_getArchFlags() + if arch_flags is None: + return [] + return arch_flags.split() + + +def get_gencode_flags() -> str: + r"""Return XPU AOT(ahead-of-time) build flags this library was compiled with.""" + arch_list = get_arch_list() + if len(arch_list) == 0: + return "" + return f"-device {','.join(arch for arch in arch_list)}" + + +def _get_generator(device: torch.device) -> torch._C.Generator: + r"""Return the XPU Generator object for the given device. + + Args: + device (torch.device): selected device. + """ + idx = device.index + if idx is None: + idx = current_device() + return torch.xpu.default_generators[idx] + + +def _set_rng_state_offset( + offset: int, device: int | str | torch.device = "xpu" +) -> None: + r"""Set the random number generator state offset of the specified GPU. + + Args: + offset (int): The desired offset + device (torch.device or int, optional): The device to set the RNG state. + Default: ``'xpu'`` (i.e., ``torch.device('xpu')``, the current XPU device). + """ + final_device = _get_device(device) + + def cb() -> None: + default_generator = _get_generator(final_device) + default_generator.set_offset(offset) + + _lazy_call(cb) + + +def _get_rng_state_offset(device: int | str | torch.device = "xpu") -> int: + r"""Return the random number generator state offset of the specified GPU. + + Args: + device (torch.device or int, optional): The device to return the RNG state offset of. + Default: ``'xpu'`` (i.e., ``torch.device('xpu')``, the current XPU device). + + .. warning:: + This function eagerly initializes XPU. + """ + _lazy_init() + final_device = _get_device(device) + default_generator = _get_generator(final_device) + return default_generator.get_offset() + + +# import here to avoid circular import +from .memory import ( + change_current_allocator, + empty_cache, + get_per_process_memory_fraction, + max_memory_allocated, + max_memory_reserved, + mem_get_info, + memory_allocated, + memory_reserved, + memory_snapshot, + memory_stats, + memory_stats_as_nested_dict, + MemPool, + reset_accumulated_memory_stats, + reset_peak_memory_stats, + set_per_process_memory_fraction, + use_mem_pool, + XPUPluggableAllocator, +) +from .random import ( + get_rng_state, + get_rng_state_all, + initial_seed, + manual_seed, + manual_seed_all, + seed, + seed_all, + set_rng_state, + set_rng_state_all, +) + + +_POOL_HANDLE = NewType("_POOL_HANDLE", tuple[int, int]) +__all__ = [ + "Event", + "Stream", + "StreamContext", + "XPUPluggableAllocator", + "XPUGraph", + "can_device_access_peer", + "change_current_allocator", + "current_device", + "current_stream", + "default_generators", + "device", + "device_of", + "device_count", + "empty_cache", + "get_arch_list", + "get_device_capability", + "get_device_name", + "get_device_properties", + "get_gencode_flags", + "get_per_process_memory_fraction", + "get_rng_state", + "get_rng_state_all", + "get_stream_from_external", + "graph", + "graph_pool_handle", + "init", + "initial_seed", + "is_available", + "is_bf16_supported", + "is_current_stream_capturing", + "is_initialized", + "is_tf32_supported", + "make_graphed_callables", + "manual_seed", + "manual_seed_all", + "max_memory_allocated", + "max_memory_reserved", + "mem_get_info", + "memory_allocated", + "memory_reserved", + "memory_snapshot", + "memory_stats", + "memory_stats_as_nested_dict", + "MemPool", + "use_mem_pool", + "reset_accumulated_memory_stats", + "reset_peak_memory_stats", + "seed", + "seed_all", + "set_device", + "set_per_process_memory_fraction", + "set_rng_state", + "set_rng_state_all", + "set_stream", + "stream", + "streams", + "synchronize", +] diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/xpu/_gpu_trace.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/xpu/_gpu_trace.py new file mode 100644 index 0000000000000000000000000000000000000000..7c3a8b9bf785bee0d46f657d0ea1754dea3c7dcc --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/xpu/_gpu_trace.py @@ -0,0 +1,69 @@ +from collections.abc import Callable + +from torch._utils import CallbackRegistry + + +EventCreationCallbacks: "CallbackRegistry[int]" = CallbackRegistry("XPU event creation") +EventDeletionCallbacks: "CallbackRegistry[int]" = CallbackRegistry("XPU event deletion") +EventRecordCallbacks: "CallbackRegistry[int, int]" = CallbackRegistry( + "XPU event record" +) +EventWaitCallbacks: "CallbackRegistry[int, int]" = CallbackRegistry("XPU event wait") +MemoryAllocationCallbacks: "CallbackRegistry[int]" = CallbackRegistry( + "XPU memory allocation" +) +MemoryDeallocationCallbacks: "CallbackRegistry[int]" = CallbackRegistry( + "XPU memory deallocation" +) +StreamCreationCallbacks: "CallbackRegistry[int]" = CallbackRegistry( + "XPU stream creation" +) +DeviceSynchronizationCallbacks: "CallbackRegistry[[]]" = CallbackRegistry( + "XPU device synchronization" +) +StreamSynchronizationCallbacks: "CallbackRegistry[int]" = CallbackRegistry( + "XPU stream synchronization" +) +EventSynchronizationCallbacks: "CallbackRegistry[int]" = CallbackRegistry( + "XPU event synchronization" +) + + +def register_callback_for_event_creation(cb: Callable[[int], None]) -> None: + EventCreationCallbacks.add_callback(cb) + + +def register_callback_for_event_deletion(cb: Callable[[int], None]) -> None: + EventDeletionCallbacks.add_callback(cb) + + +def register_callback_for_event_record(cb: Callable[[int, int], None]) -> None: + EventRecordCallbacks.add_callback(cb) + + +def register_callback_for_event_wait(cb: Callable[[int, int], None]) -> None: + EventWaitCallbacks.add_callback(cb) + + +def register_callback_for_memory_allocation(cb: Callable[[int], None]) -> None: + MemoryAllocationCallbacks.add_callback(cb) + + +def register_callback_for_memory_deallocation(cb: Callable[[int], None]) -> None: + MemoryDeallocationCallbacks.add_callback(cb) + + +def register_callback_for_stream_creation(cb: Callable[[int], None]) -> None: + StreamCreationCallbacks.add_callback(cb) + + +def register_callback_for_device_synchronization(cb: Callable[[], None]) -> None: + DeviceSynchronizationCallbacks.add_callback(cb) + + +def register_callback_for_stream_synchronization(cb: Callable[[int], None]) -> None: + StreamSynchronizationCallbacks.add_callback(cb) + + +def register_callback_for_event_synchronization(cb: Callable[[int], None]) -> None: + EventSynchronizationCallbacks.add_callback(cb) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/xpu/_utils.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/xpu/_utils.py new file mode 100644 index 0000000000000000000000000000000000000000..8f738267459a2791a4a33ca4bec74800a58f0b9a --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/xpu/_utils.py @@ -0,0 +1,39 @@ +from typing import Any + +import torch + +# The _get_device_index has been moved to torch.utils._get_device_index +from torch._utils import _get_device_index as _torch_get_device_index + + +def _get_device_index( + device: Any, optional: bool = False, allow_cpu: bool = False +) -> int: + r"""Get the device index from :attr:`device`, which can be a torch.device + object, a Python integer, or ``None``. + + If :attr:`device` is a torch.device object, returns the device index if it + is a XPU device. Note that for a XPU device without a specified index, + i.e., ``torch.device('xpu')``, this will return the current default XPU + device if :attr:`optional` is ``True``. If :attr:`allow_cpu` is ``True``, + CPU devices will be accepted and ``-1`` will be returned in this case. + + If :attr:`device` is a Python integer, it is returned as is. + + If :attr:`device` is ``None``, this will return the current default XPU + device if :attr:`optional` is ``True``. + """ + if isinstance(device, int): + return device + if isinstance(device, str): + device = torch.device(device) + if isinstance(device, torch.device): + if allow_cpu: + if device.type not in ["xpu", "cpu"]: + raise ValueError(f"Expected a xpu or cpu device, but got: {device}") + elif device.type != "xpu": + raise ValueError(f"Expected a xpu device, but got: {device}") + if not torch.jit.is_scripting(): + if isinstance(device, torch.xpu.device): + return device.idx + return _torch_get_device_index(device, optional, allow_cpu) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/xpu/graphs.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/xpu/graphs.py new file mode 100644 index 0000000000000000000000000000000000000000..51780050f59370ec172b1ee226f24e5dda6d104f --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/xpu/graphs.py @@ -0,0 +1,529 @@ +from __future__ import annotations + +import typing +from collections.abc import Callable +from typing import overload, TYPE_CHECKING, TypeAlias +from typing_extensions import ParamSpec, Self, TypeVar + +import torch +from torch import Tensor + + +if TYPE_CHECKING: + from torch.xpu import _POOL_HANDLE + +from .._utils import _dummy_type + + +__all__ = [ + "is_current_stream_capturing", + "graph_pool_handle", + "XPUGraph", + "graph", + "make_graphed_callables", +] + +_R = TypeVar("_R") +_P = ParamSpec("_P") + +if not hasattr(torch._C, "_XpuStreamBase"): + # Define dummy base classes + torch._C.__dict__["_XPUGraph"] = _dummy_type("_XPUGraph") + torch._C.__dict__["_xpu_graph_pool_handle"] = _dummy_type("_xpu_graph_pool_handle") + torch._C.__dict__["_xpu_isCurrentStreamCapturing"] = _dummy_type( + "_xpu_isCurrentStreamCapturing" + ) + +from torch._C import _xpu_graph_pool_handle, _xpu_isCurrentStreamCapturing, _XPUGraph + + +def is_current_stream_capturing() -> bool: + r"""Return True if XPU graph capture is underway on the current XPU stream, False otherwise. + + If a XPU context does not exist on the current device, returns False without initializing the context. + """ + return _xpu_isCurrentStreamCapturing() + + +def graph_pool_handle() -> _POOL_HANDLE: + r"""Return an opaque token representing the id of a graph memory pool.""" + return torch.xpu._POOL_HANDLE(_xpu_graph_pool_handle()) + + +class XPUGraph(_XPUGraph): + r"""Wrapper around a XPU graph. + + Arguments: + keep_graph (bool, optional): If ``keep_graph=False``, the + executable command graph will be instantiated on GPU at the end of + ``capture_end`` and the underlying modifiable command graph will be + destroyed. Note that the executable command graph will not be + instantiated at the end of ``capture_end`` in this + case. Instead, it will be instantiated via an explicit called + to ``instantiate`` or automatically on the first call to + ``replay`` if ``instantiate`` was not already called. Calling + ``instantiate`` manually before ``replay`` is recommended to + prevent increased latency on the first call to ``replay``. + + """ + + def __new__(cls, keep_graph: bool = False) -> Self: + return super().__new__(cls, keep_graph) + + def capture_begin(self, pool: _POOL_HANDLE | None = None) -> None: + r"""Begin capturing XPU work on the current xpu stream. + + Typically, you shouldn't call ``capture_begin`` yourself. + Use :class:`~torch.xpu.graph`, which call ``capture_begin`` internally. + + Arguments: + pool (optional): Token (returned by :func:`~torch.xpu.graph_pool_handle` or + :meth:`other_Graph_instance.pool()`) that hints this graph may share memory + with the indicated pool. + """ + super().capture_begin(pool=pool) + + def capture_end(self) -> None: + r"""End XPU graph capture on the current stream. + + After ``capture_end``, ``replay`` may be called on this instance. + + Typically, you shouldn't call ``capture_end`` yourself. + Use :class:`~torch.xpu.graph`, which call ``capture_end`` internally. + """ + super().capture_end() + + def instantiate(self) -> None: + r"""Instantiate the XPU graph. Will be called by + ``capture_end`` if ``keep_graph=False``, or by ``replay`` if + ``keep_graph=True`` and ``instantiate`` has not already been + explicitly called. Does not destroy the xpu modify command graph returned + by ``raw_xpu_graph``. + """ + super().instantiate() + + def replay(self) -> None: + r"""Replay the XPU work captured by this graph.""" + super().replay() + + def reset(self) -> None: + r"""Delete the graph currently held by this instance.""" + super().reset() + + def pool(self) -> _POOL_HANDLE: + r"""Return an opaque token representing the id of this graph's memory pool. + + This id can optionally be passed to another graph's ``capture_begin``, + which hints the other graph may share the same memory pool. + """ + return super().pool() + + def enable_debug_mode(self) -> None: + r"""Enable debugging mode for XPUGraph.debug_dump.""" + return super().enable_debug_mode() + + def debug_dump(self, debug_path: str) -> None: + r""" + Arguments: + debug_path (required): Path to dump the graph to. + + Calls a debugging function to dump the graph if the debugging is + enabled via XPUGraph.enable_debug_mode() + """ + return super().debug_dump(debug_path) + + def raw_xpu_graph(self) -> int: + r"""Returns the underlying xpuGraph_t. ``keep_graph`` must be True. + + XPU doesn't provide APIs to manipulate this object. + """ # noqa: B950 + return super().raw_xpu_graph() + + def raw_xpu_graph_exec(self) -> int: + r"""Returns the underlying xpuGraphExec_t. ``instantiate`` must have been called if ``keep_graph`` is True, or ``capture_end`` must have been called if ``keep_graph`` is False. If you call ``instantiate()`` after ``raw_xpu_graph_exec()``, the previously returned xpuGraphExec_t will be destroyed. It is your responsibility not to use this object after destruction. + + XPU doesn't provide APIs to manipulate this object. + """ # noqa: B950 + return super().raw_xpu_graph_exec() + + +class graph: + r"""Context-manager that captures XPU work into a :class:`torch.xpu.XPUGraph` object for later replay. + + Arguments: + xpu_graph (torch.xpu.XPUGraph): Graph object used for capture. + pool (optional): Opaque token (returned by a call to :func:`~torch.xpu.graph_pool_handle()` or + :meth:`other_Graph_instance.pool()`) hinting this graph's capture + may share memory from the specified pool. + stream (torch.xpu.Stream, optional): If supplied, will be set as the current stream in the context. + If not supplied, ``graph`` sets its own internal side stream as the current stream in the context. + + .. note:: + For effective memory sharing, if you pass a ``pool`` used by a previous capture and the previous capture + used an explicit ``stream`` argument, you should pass the same ``stream`` argument to this capture. + + """ # noqa: B950 + + default_capture_stream: torch.xpu.Stream | None = None + + def __init__( + self, + xpu_graph: XPUGraph, + pool: _POOL_HANDLE | None = None, + stream: torch.xpu.Stream | None = None, + ): + # Lazy-init of default_capture_stream helps avoid circular-import errors. + # Not thread safe, but graphs already have the general (explicitly documented) + # restriction that only one capture may be underway at a time in the process. + if self.__class__.default_capture_stream is None: + self.__class__.default_capture_stream = torch.xpu.Stream() + + self.pool: tuple[()] | tuple[_POOL_HANDLE] = () if pool is None else (pool,) + self.capture_stream = ( + stream if stream is not None else self.__class__.default_capture_stream + ) + if self.capture_stream is None: + raise AssertionError("capture_stream must not be None") + self.stream_ctx = self.capture_stream + self.xpu_graph = xpu_graph + + def __enter__(self) -> None: + # Free as much memory as we can for the graph + torch.xpu.synchronize() + + torch.xpu.empty_cache() + self.stream_ctx.__enter__() + + self.xpu_graph.capture_begin(*self.pool) + + def __exit__(self, *args: object) -> None: + self.xpu_graph.capture_end() + self.stream_ctx.__exit__(*args) + + +_ModuleOrCallable: TypeAlias = torch.nn.Module | Callable[..., object] + + +@overload +def make_graphed_callables( + callables: _ModuleOrCallable, + sample_args: tuple[Tensor, ...], + num_warmup_iters: int = 3, + allow_unused_input: bool = False, + pool: _POOL_HANDLE | None = None, +) -> _ModuleOrCallable: ... + + +@overload +def make_graphed_callables( + callables: tuple[_ModuleOrCallable, ...], + sample_args: tuple[tuple[Tensor, ...], ...], + num_warmup_iters: int = 3, + allow_unused_input: bool = False, + pool: _POOL_HANDLE | None = None, +) -> tuple[_ModuleOrCallable, ...]: ... + + +def make_graphed_callables( + callables: _ModuleOrCallable | tuple[_ModuleOrCallable, ...], + sample_args: tuple[Tensor, ...] | tuple[tuple[Tensor, ...], ...], + num_warmup_iters: int = 3, + allow_unused_input: bool = False, + pool: _POOL_HANDLE | None = None, +) -> _ModuleOrCallable | tuple[_ModuleOrCallable, ...]: + r"""Accept callables (functions or :class:`nn.Module`\ s) and returns graphed versions. + + Each graphed callable's forward pass runs its source callable's + forward XPU work as a XPU graph inside a single autograd node. + + The graphed callable's forward pass also appends + a backward node to the autograd graph. During backward, this node runs the + callable's backward work as a XPU graph. + + Therefore, each graphed callable should be a drop-in replacement for its source callable + in an autograd-enabled training loop. + + See :ref:`Partial-network capture` for detailed use and constraints. + + If you pass a tuple of several callables, their captures will use the same memory pool. + + Arguments: + callables (torch.nn.Module or Python function, or tuple of these): Callable or callables to graph. + If you pass a tuple of callables, their order in the tuple must be the same order they'll run + in the live workload. + sample_args (tuple of Tensors, or tuple of tuples of Tensors): Samples args for each callable. + If a single callable was passed, ``sample_args`` must be a single tuple of argument Tensors. + If a tuple of callables was passed, ``sample_args`` must be tuple of tuples of argument Tensors. + num_warmup_iters (int): The number of warmup iterations. Currently, ``DataDistributedParallel`` needs + 11 iterations for warm up. Default: ``3``. + allow_unused_input (bool): If False, specifying inputs that were not used when computing outputs + (and therefore their grad is always zero) is an error. Defaults to False. + pool (optional): Token (returned by :func:`~torch.xpu.graph_pool_handle` or + :meth:`other_Graph_instance.pool()`) that hints this graph may share memory + with the indicated pool. + .. note:: + The ``requires_grad`` state of each Tensor in ``sample_args`` must match the state + that's expected for the corresponding real input in the training loop. + + .. warning:: + This API is in beta and may change in future releases. + + .. warning:: + ``sample_args`` for each callable must contain only Tensors. Other types are not allowed. + + .. warning:: + Returned callables do not support higher order differentiation (e.g., double backward). + + .. warning:: + In any :class:`~torch.nn.Module` passed to :func:`~make_graphed_callables`, only parameters + may be trainable. Buffers must have ``requires_grad=False``. + + .. warning:: + After you pass a :class:`torch.nn.Module` through :func:`~make_graphed_callables`, + you may not add or remove any of that Module's parameters or buffers. + + .. warning:: + :class:`torch.nn.Module`\s passed to :func:`~torch.xpu.make_graphed_callables` must not have module hooks + registered on them at the time they are passed. However, registering hooks on modules *after* passing them + through :func:`~torch.xpu.make_graphed_callables` is allowed. + + .. warning:: + When running a graphed callable, you must pass its arguments in the same order and format + they appeared in that callable's ``sample_args``. + + .. warning:: + The automatic mixed precision is supported in :func:`~torch.xpu.make_graphed_callables` only with disabled + caching. The context manager `torch.amp.autocast()` must have `cache_enabled=False`. + """ + if torch.is_autocast_enabled() and torch.is_autocast_cache_enabled(): + raise RuntimeError( + "make_graphed_callables does not support the autocast caching. Please set `cache_enabled=False`." + ) + + just_one_callable = False + + _sample_args: tuple[tuple[Tensor, ...], ...] + if not isinstance(callables, tuple): + just_one_callable = True + callables = (callables,) + _sample_args = (typing.cast(tuple[Tensor, ...], sample_args),) + else: + _sample_args = typing.cast(tuple[tuple[Tensor, ...], ...], sample_args) + + flatten_sample_args = [] + + for c, args in zip(callables, _sample_args): + if isinstance(c, torch.nn.Module): + if not ( + len(c._backward_hooks) == 0 + and len(c._forward_hooks) == 0 + and len(c._forward_pre_hooks) == 0 + ): + raise RuntimeError( + "Modules must not have hooks registered at the time they are passed. However, registering hooks " + + "on modules after passing them through make_graphed_callables is allowed." + ) + if not all(b.requires_grad is False for b in c.buffers()): + raise RuntimeError( + "In any :class:`~torch.nn.Module` passed to " + + ":func:`~make_graphed_callables`, only parameters may be trainable. All buffers must have " + + "``requires_grad=False``." + ) + flatten_arg = torch.utils._pytree.arg_tree_leaves(*args) + flatten_sample_args.append(tuple(flatten_arg)) + if not all(isinstance(arg, torch.Tensor) for arg in flatten_arg): + raise TypeError( + "In the beta API, sample_args " + + "for each callable must contain only Tensors. Other types are not allowed." + ) + + # If a callable is an nn.Module, its graph's full input surface is the args the user explicitly + # passes to forward (ie, its sample_args) AND the module's parameter attributes. + per_callable_len_user_args = [len(args) for args in flatten_sample_args] + per_callable_module_params = [ + tuple(c.parameters()) if isinstance(c, torch.nn.Module) else () + for c in callables + ] + per_callable_static_input_surfaces = [ + flatten_sample_args[i] + per_callable_module_params[i] + for i in range(len(callables)) + ] + + fwd_graphs = [torch.xpu.XPUGraph() for _ in range(len(callables))] + bwd_graphs = [torch.xpu.XPUGraph() for _ in range(len(callables))] + + mempool = graph_pool_handle() if pool is None else pool + + # Warmup + torch.xpu.synchronize() + with torch.xpu.stream(torch.xpu.Stream()): + for func, args, static_input_surface in zip( + callables, _sample_args, per_callable_static_input_surfaces + ): + grad_inputs, outputs, outputs_grad = None, None, None + for _ in range(num_warmup_iters): + outputs = torch.utils._pytree.tree_leaves(func(*args)) + outputs_grad = tuple(o for o in outputs if o.requires_grad) + if len(outputs_grad) > 0: + grad_inputs = torch.autograd.grad( + outputs=outputs_grad, + inputs=tuple( + i for i in static_input_surface if i.requires_grad + ), + grad_outputs=tuple( + torch.empty_like(o) for o in outputs if o.requires_grad + ), + only_inputs=True, + allow_unused=allow_unused_input, + ) + for v in [outputs, outputs_grad, grad_inputs]: + del v + + torch.xpu.synchronize() + + # Capture forward graphs + per_callable_static_outputs = [] + per_callable_output_unflatten_spec = [] + for func, args, fwd_graph in zip(callables, _sample_args, fwd_graphs): + # each graph uses the same mempool + with torch.xpu.graph(fwd_graph, pool=mempool): + func_outputs = func(*args) + + flatten_outputs, spec = torch.utils._pytree.tree_flatten(func_outputs) + per_callable_static_outputs.append(tuple(flatten_outputs)) + per_callable_output_unflatten_spec.append(spec) + + # Capture backward graphs in reverse order + per_callable_static_grad_outputs = [] + per_callable_static_grad_inputs = [] + for static_input_surface, static_outputs, bwd_graph in zip( + reversed(per_callable_static_input_surfaces), + reversed(per_callable_static_outputs), + reversed(bwd_graphs), + ): + static_grad_outputs = tuple( + torch.empty_like(o) if o.requires_grad else None for o in static_outputs + ) + + outputs_grad = tuple(o for o in static_outputs if o.requires_grad) + grad_inputs = None + if len(outputs_grad) > 0: + with torch.xpu.graph(bwd_graph, pool=mempool): + grad_inputs = torch.autograd.grad( + outputs=outputs_grad, + inputs=tuple(i for i in static_input_surface if i.requires_grad), + grad_outputs=tuple(o for o in static_grad_outputs if o is not None), + only_inputs=True, + allow_unused=allow_unused_input, + ) + + static_grad_inputs = [] + grad_idx = 0 + for arg in static_input_surface: + if arg.requires_grad and grad_inputs is not None: + static_grad_inputs.append(grad_inputs[grad_idx]) + grad_idx += 1 + else: + static_grad_inputs.append(None) # type: ignore[arg-type] + static_grad_inputs = tuple(static_grad_inputs) # type: ignore[assignment] + + per_callable_static_grad_outputs.append(static_grad_outputs) + per_callable_static_grad_inputs.append(static_grad_inputs) + + # Reverses the most recent two lists + per_callable_static_grad_outputs.reverse() + per_callable_static_grad_inputs.reverse() + + def make_graphed_autograd_function( + fwd_graph: XPUGraph, + bwd_graph: XPUGraph, + module_params: tuple[torch.nn.Parameter, ...], + len_user_args: int, + output_unflatten_spec: torch.utils._pytree.TreeSpec, + static_input_surface: tuple[Tensor, ...], + static_outputs: tuple[Tensor, ...], + static_grad_outputs: tuple[Tensor | None, ...], + static_grad_inputs: tuple[Tensor, ...], + ) -> Callable[..., object]: + class Graphed(torch.autograd.Function): + @staticmethod + # pyrefly: ignore [bad-override] + def forward(ctx: object, *inputs: Tensor) -> tuple[Tensor, ...]: + # At this stage, only the user args may (potentially) be new tensors. + for i in range(len_user_args): + if static_input_surface[i].data_ptr() != inputs[i].data_ptr(): + static_input_surface[i].copy_(inputs[i]) + fwd_graph.replay() + if not isinstance(static_outputs, tuple): + raise RuntimeError("static_outputs must be a tuple") + return tuple(o.detach() for o in static_outputs) + + @staticmethod + @torch.autograd.function.once_differentiable + # pyrefly: ignore [bad-override] + def backward(ctx: object, *grads: Tensor) -> tuple[Tensor, ...]: + if len(grads) != len(static_grad_outputs): + raise RuntimeError( + f"Expected {len(static_grad_outputs)} gradients but got {len(grads)}" + ) + for g, grad in zip(static_grad_outputs, grads): + if g is not None: + if g.data_ptr() != grad.data_ptr(): + g.copy_(grad) + bwd_graph.replay() + + if not isinstance(static_grad_inputs, tuple): + raise RuntimeError("static_grad_inputs must be a tuple") + return tuple( + b.detach() if b is not None else b for b in static_grad_inputs + ) + + def functionalized(*user_args: object) -> object: + # Runs the new autograd function which replays the XPU graphs + flatten_user_args = torch.utils._pytree.arg_tree_leaves(*user_args) + out = Graphed.apply(*(tuple(flatten_user_args) + module_params)) + return torch.utils._pytree.tree_unflatten(out, output_unflatten_spec) + + return functionalized + + ret: list[_ModuleOrCallable] = [] + for i, func in enumerate(callables): + graphed = make_graphed_autograd_function( + fwd_graphs[i], + bwd_graphs[i], + per_callable_module_params[i], + per_callable_len_user_args[i], + per_callable_output_unflatten_spec[i], + per_callable_static_input_surfaces[i], + per_callable_static_outputs[i], + per_callable_static_grad_outputs[i], + per_callable_static_grad_inputs[i], + ) + + if isinstance(func, torch.nn.Module): + + def make_graphed_forward( + func: torch.nn.Module, + graph_training_state: bool, + graphed: Callable[_P, _R], + orig_fwd: Callable[_P, _R], + ) -> Callable[_P, _R]: + def new_fwd(*user_args: _P.args, **user_kwargs: _P.kwargs) -> _R: + if func.training == graph_training_state: + return graphed(*user_args, **user_kwargs) + else: + return orig_fwd(*user_args, **user_kwargs) + + return new_fwd + + func.forward = make_graphed_forward( + func, func.training, graphed, func.forward + ) + ret.append(func) + else: + ret.append(graphed) + + if just_one_callable: + return ret[0] + + return tuple(ret) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/xpu/memory.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/xpu/memory.py new file mode 100644 index 0000000000000000000000000000000000000000..04ca0dd9fc3977adcdc766260f555866ac1feef6 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/xpu/memory.py @@ -0,0 +1,643 @@ +import collections +import contextlib +import ctypes +import pickle +import sys +from typing import Any, Literal + +import torch +from torch._utils import _augment_memory_snapshot_stack_traces, _dummy_type +from torch.types import Device + +from . import _get_device_index, _is_compiled, _lazy_init, is_initialized + + +if not _is_compiled(): + # Define dummy base classes + torch._C.__dict__["_xpu_XPUAllocator"] = _dummy_type("_xpu_XPUAllocator") + torch._C.__dict__["_XPUMemPool"] = _dummy_type("_XPUMemPool") + torch._C.__dict__["_xpu_beginAllocateCurrentThreadToPool"] = _dummy_type( + "_xpu_beginAllocateCurrentThreadToPool" + ) + torch._C.__dict__["_xpu_endAllocateToPool"] = _dummy_type("_xpu_endAllocateToPool") + torch._C.__dict__["_xpu_releasePool"] = _dummy_type("_xpu_releasePool") + + +def empty_cache() -> None: + r"""Release all unoccupied cached memory currently held by the caching + allocator so that those can be used in other XPU application. + + .. note:: + :func:`~torch.xpu.empty_cache` doesn't increase the amount of XPU + memory available for PyTorch. However, it may help reduce fragmentation + of XPU memory in certain cases. + """ + if is_initialized(): + torch._C._xpu_emptyCache() + + +def reset_peak_memory_stats(device: Device = None) -> None: + r"""Reset the "peak" stats tracked by the XPU memory allocator. + + See :func:`~torch.xpu.memory_stats` for details. Peak stats correspond to the + `"peak"` key in each individual stat dict. + + Args: + device (torch.device or int or str, optional): selected device. Returns + statistic for the current device, given by :func:`~torch.xpu.current_device`, + if :attr:`device` is ``None`` (default). + """ + device = _get_device_index(device, optional=True) + return torch._C._xpu_resetPeakMemoryStats(device) + + +def reset_accumulated_memory_stats(device: Device = None) -> None: + r"""Reset the "accumulated" (historical) stats tracked by the XPU memory allocator. + + See :func:`~torch.xpu.memory_stats` for details. Accumulated stats correspond to + the `"allocated"` and `"freed"` keys in each individual stat dict. + + Args: + device (torch.device or int or str, optional): selected device. Returns + statistic for the current device, given by :func:`~torch.xpu.current_device`, + if :attr:`device` is ``None`` (default). + """ + device = _get_device_index(device, optional=True) + return torch._C._xpu_resetAccumulatedMemoryStats(device) + + +def memory_stats_as_nested_dict(device: Device = None) -> dict[str, Any]: + r"""Return the result of :func:`~torch.xpu.memory_stats` as a nested dictionary.""" + if not is_initialized(): + return {} + device = _get_device_index(device, optional=True) + return torch._C._xpu_memoryStats(device) + + +def memory_stats(device: Device = None) -> dict[str, Any]: + r"""Return a dictionary of XPU memory allocator statistics for a given device. + + The return value of this function is a dictionary of statistics, each of + which is a non-negative integer. + + Core statistics: + + - ``"allocated_bytes.{all,large_pool,small_pool}.{current,peak,allocated,freed}"``: + amount of allocated memory. + - ``"reserved_bytes.{all,large_pool,small_pool}.{current,peak,allocated,freed}"``: + amount of reserved memory. + - ``"active_bytes.{all,large_pool,small_pool}.{current,peak,allocated,freed}"``: + amount of active memory. + - ``"requested_bytes.{all,large_pool,small_pool}.{current,peak,allocated,freed}"``: + memory requested by client code, compare this with allocated_bytes to check if + allocation rounding adds too much overhead. + + For these core statistics, values are broken down as follows. + + Pool type: + + - ``all``: combined statistics across all memory pools. + - ``large_pool``: statistics for the large allocation pool (for size >= 1MB allocations). + - ``small_pool``: statistics for the small allocation pool (for size < 1MB allocations). + + Metric type: + + - ``current``: current value of this metric. + - ``peak``: maximum value of this metric. + - ``allocated``: historical total increase in this metric. + - ``freed``: historical total decrease in this metric. + + Args: + device (torch.device or int or str, optional): selected device. Returns + statistics for the current device, given by :func:`~torch.xpu.current_device`, + if :attr:`device` is ``None`` (default). + """ + result = [] + + def _recurse_add_to_result(prefix: str, obj: Any) -> None: + if isinstance(obj, dict): + if len(prefix) > 0: + prefix += "." + for k, v in obj.items(): + _recurse_add_to_result(prefix + k, v) + else: + result.append((prefix, obj)) + + stats = memory_stats_as_nested_dict(device=device) + _recurse_add_to_result("", stats) + result.sort() + + return collections.OrderedDict(result) + + +def memory_allocated(device: Device = None) -> int: + r"""Return the current GPU memory occupied by tensors in bytes for a given device. + + Args: + device (torch.device or int or str, optional): selected device. Returns + statistic for the current device, given by :func:`~torch.xpu.current_device`, + if :attr:`device` is ``None`` (default). + + .. note:: + This is likely less than the amount shown in `xpu-smi` since some + unused memory can be held by the caching allocator and some context + needs to be created on GPU. + """ + return memory_stats(device=device).get("allocated_bytes.all.current", 0) + + +def max_memory_allocated(device: Device = None) -> int: + r"""Return the maximum GPU memory occupied by tensors in bytes for a given device. + + By default, this returns the peak allocated memory since the beginning of + this program. :func:`~torch.xpu.reset_peak_memory_stats` can be used to + reset the starting point in tracking this metric. For example, these two + functions can measure the peak allocated memory usage of each iteration in a + training loop. + + Args: + device (torch.device or int or str, optional): selected device. Returns + statistic for the current device, given by :func:`~torch.xpu.current_device`, + if :attr:`device` is ``None`` (default). + """ + return memory_stats(device=device).get("allocated_bytes.all.peak", 0) + + +def memory_reserved(device: Device = None) -> int: + r"""Return the current GPU memory managed by the caching allocator in bytes for a given device. + + Args: + device (torch.device or int or str, optional): selected device. Returns + statistic for the current device, given by :func:`~torch.xpu.current_device`, + if :attr:`device` is ``None`` (default). + """ + return memory_stats(device=device).get("reserved_bytes.all.current", 0) + + +def max_memory_reserved(device: Device = None) -> int: + r"""Return the maximum GPU memory managed by the caching allocator in bytes for a given device. + + By default, this returns the peak cached memory since the beginning of this + program. :func:`~torch.xpu.reset_peak_memory_stats` can be used to reset + the starting point in tracking this metric. For example, these two functions + can measure the peak cached memory amount of each iteration in a training + loop. + + Args: + device (torch.device or int or str, optional): selected device. Returns + statistic for the current device, given by :func:`~torch.xpu.current_device`, + if :attr:`device` is ``None`` (default). + """ + return memory_stats(device=device).get("reserved_bytes.all.peak", 0) + + +def mem_get_info(device: Device = None) -> tuple[int, int]: + r"""Return the global free and total GPU memory for a given device. + + Args: + device (torch.device or int or str, optional): selected device. Returns + statistic for the current device, given by :func:`~torch.xpu.current_device`, + if :attr:`device` is ``None`` (default). + + Returns: + tuple[int, int]: a tuple of two integers (free_memory, total_memory) in bytes. + The first value is the free memory on the device (available across all processes and applications), + The second value is the device's total hardware memory capacity. + """ + _lazy_init() + device = _get_device_index(device, optional=True) + return torch._C._xpu_getMemoryInfo(device) + + +def get_per_process_memory_fraction(device: Device = None) -> float: + r""" + Retrieve the memory fraction currently set for a process on a given XPU device. + This fraction represents the portion of the total device memory that + the caching allocator is allowed to use. The allowed memory is calculated as: + + .. math:: \text{allowed\_memory} = \text{total\_memory} \times \text{fraction} + + Args: + device (torch.device or int or str, optional): selected device. It uses the current device, + given by :func:`~torch.xpu.current_device`, if :attr:`device` is ``None`` (default). + + Returns: + float: The memory fraction in the range 0.0 to 1.0. + """ + _lazy_init() + device = _get_device_index(device, optional=True) + return torch._C._xpu_getMemoryFraction(device) + + +def set_per_process_memory_fraction(fraction: float, device: Device = None) -> None: + r""" + Set the memory fraction for a single process on XPU device. + This function limits the amount of memory that the caching allocator can allocate + on the specified XPU device. The allowed memory is computed as: + + .. math:: \text{allowed\_memory} = \text{total\_memory} \times \text{fraction} + + If the process attempts to allocate more than this allowed memory, + an out-of-memory error will be raised by the allocator. + + Arguments: + fraction (float): Range: 0~1. Allowed memory equals total_memory * fraction. + device (torch.device or int or str, optional): selected device. It uses the current device, + given by :func:`~torch.xpu.current_device`, if :attr:`device` is ``None`` (default). + + .. note:: In general, the total available free memory is less than the total capacity. + """ + _lazy_init() + device = _get_device_index(device, optional=True) + if not isinstance(fraction, float): + raise TypeError("Invalid type for fraction argument, must be `float`") + torch._C._xpu_setMemoryFraction(fraction, device) + + +def memory_snapshot( + mempool_id: tuple[int, int] | None = None, +) -> list[dict[str, Any]]: + r""" + Return a snapshot of the XPU memory allocator state across all devices. + Provides detailed information for each memory segment managed by the allocator + including its size, owning pool, associated stream, call stack traces, and other relevant attributes. + + Arguments: + mempool_id (tuple[int, int] or None, optional): The memory pool id. If None, the default memory pool is used. + + Returns: + list[dict[str, Any]]: List of memory segments and their attributes. + """ + if not is_initialized(): + return [] + return torch._C._xpu_memorySnapshot(mempool_id)["segments"] + + +def _snapshot(device: Device = None, augment_with_fx_traces: bool = False): + """ + Capture a snapshot of the XPU memory state at the time this function is called. + + The returned snapshot is a dictionary with the following structure. + + .. code-block:: python + + class Snapshot(TypedDict): + segments: List[Segment] + device_traces: List[List[TraceEntry]] + + + class Segment(TypedDict): + # A Segment represents a contiguous memory region returned by the SYCL runtime. + # + # All reserved memory is composed of these segments. Segments are + # cached and reused by the allocator. When allocations are smaller + # than the segment, the segment may be split into multiple Blocks. + # + # Calling :func:`~torch.xpu.memory.empty_cache` releases segments that are entirely inactive. + address: int + total_size: int # total size of segment + stream: int + segment_type: Literal["small", "large"] # 'large' (>1MB) + allocated_size: int # size of memory in use + active_size: int # size of memory in use or in active_awaiting_free state + blocks: List[Block] + + + class Block(TypedDict): + # A sub-region of a Segment, either currently allocated or cached for reuse. + size: int + requested_size: int # Original requested size (may be smaller than `size`) + address: int + state: Literal[ + "active_allocated", # used by a tensor + "active_awaiting_free", # waiting for another stream synchronization, then become free + "inactive", # free for reuse + ] + frames: List[Frame] # stack trace from where the allocation occurred + + + class Frame(TypedDict): + filename: str + line: int + name: str + # Optional fields when `augment_with_fx_traces=True` and the frame + # corresponds to FX-generated code. + fx_node_op: str # FX node operation type (e.g., 'call_function', 'output') + fx_node_name: str # FX node name (e.g., 'linear', 'relu_1') + fx_original_trace: str # Original model source code stack trace + + + class TraceEntry(TypedDict): + # Trace entries are recorded only when :func:`~torch.xpu.memory._record_memory_history` is enabled. + action: Literal[ + "alloc" # memory allocated + "free_requested", # received a call to free memory + "free_completed", # memory reclaimed and reusable + "segment_alloc", # ask SYCL runtime for more memory + "segment_free", # called SYCL runtime to return memory to XPU + "segment_map", # ask SYCL runtime to map memory + "segment_unmap", # called SYCL runtime to unmap memory + "snapshot", # snapshot taken + "oom", # threw an OOM exception + ] + addr: int # not present for OOM + frames: List[Frame] + size: int + stream: int + device_free: int # only present for OOM, the amount of free memory reported by the device + + Arguments: + device (torch.device or int or str, optional): selected device. It uses the current device, + given by :func:`~torch.xpu.current_device`, if :attr:`device` is ``None`` (default). + augment_with_fx_traces (bool, optional): If True, augment stack trace frames with FX debug information + that maps generated FX code back to original model source code. This adds the FX-related + fields (fx_node_op, fx_node_name, fx_original_trace) to Frame objects. Default is ``False``. + + Returns: + The Snapshot dictionary object + """ + s = torch._C._xpu_memorySnapshot(None) + if augment_with_fx_traces: + s = _augment_memory_snapshot_stack_traces(s) # type: ignore[assignment, arg-type] + return s + + +def _dump_snapshot( + filename: str = "dump_snapshot.pickle", augment_with_fx_traces: bool = False +) -> None: + """ + Save a pickled version of the `torch.memory._snapshot()` dictionary to a file. + + This file can be opened by the interactive snapshot viewer at pytorch.org/memory_viz + + Snapshot file sizes scale with `max_entries` and stack trace depth per entry, + with several KB per entry. These can easily be in the GB range for longer running + workflows with large `max_entries`. + + Arguments: + filename (str, optional): Name of the file to create. Defaults to "dump_snapshot.pickle". + augment_with_fx_traces (bool, optional): If True, augment the snapshot with FX debug information + before dumping. This maps generated FX code stack traces back to original model + source code. Defaults to ``False``. + """ + s = _snapshot(augment_with_fx_traces=augment_with_fx_traces) + + with open(filename, "wb") as f: + pickle.dump(s, f) + + +def _record_memory_history( + enabled: Literal["state", "all"] | None = "all", + context: Literal["state", "alloc", "all"] | None = "all", + stacks: Literal["python", "all"] = "all", + max_entries: int = sys.maxsize, + clear_history: bool = False, + skip_actions: list[str] | None = None, +) -> None: + """ + Enable recording of stack traces associated with memory allocations, so you can + tell what allocated any piece of memory in :func:`~torch.xpu.memory._snapshot()`. + + In addition to keeping stack traces with each current allocation and free, + this will also enable recording of a history of all alloc/free events. + + Use :func:`~torch.xpu.memory._snapshot()` to retrieve this information, + and the tools in `_memory_viz.py` to visualize snapshots. + + Buffer behavior + --------------- + + This will store up to `max_entries` instances of `TraceEntry` when enabled. + Python trace collection defaults to `sys.maxsize`, meaning long-running + or indefinitely running jobs should set a reasonable limit to avoid excessive + memory use. Expect each entry to be several KB. + + Longer running workflows or those with smaller `max_entries` values will only + store the last accumulated `max_entries` entries, meaning new entries overwrite + older entries, reference to ring buffer behavior. + + Latency impact + -------------- + + The Python trace collection is fast (2us per trace), so you may consider + enabling this on production jobs if you anticipate ever having to debug + memory issues. + + C++ trace collection is also fast (~50ns/frame), which for many typical programs + works out to ~2us per trace, but can vary depending on stack depth. + + Arguments: + enabled (Literal["state", "all"], optional): + `None`, disable recording memory history. + `"state"`, keep information for currently allocated memory. + `"all"`, additionally keep a history of all alloc/free calls. + Defaults to "all". + context (Literal["state", "alloc", "all"], optional): + `None`, Do not record any tracebacks. + `"state"`, Record tracebacks for currently allocated memory. + `"alloc"`, additionally keep tracebacks for alloc calls. + `"all"`, additionally keep tracebacks for free calls. + Defaults to "all". + stacks (Literal["python", "all"], optional): + `"python"`, include Python, TorchScript, and inductor frames in tracebacks. + `"all"`, additionally include C++ frames. + Defaults to "all". + max_entries (int, optional): Keep a maximum of `max_entries` + alloc/free events in the recorded history recorded. + clear_history (bool, optional): Clear history when enabling, defaults to ``False``. + skip_actions (list[str], optional): List of action types to skip when recording + memory history. This can be used to reduce memory overhead by excluding + certain types of events from being recorded. Valid action types are: + + - `"alloc"`: Memory allocation events + - `"free_requested"`: Free requests (memory marked for freeing) + - `"free_completed"`: Completed free operations (memory actually freed) + - `"segment_alloc"`: Segment allocation from SYCL runtime + - `"segment_free"`: Segment freed back to XPU via SYCL runtime + - `"segment_map"`: Segment map events + - `"segment_unmap"`: Segment unmap events + - `"snapshot"`: Memory snapshot generation events + - `"oom"`: Out-of-memory exceptions + + For example, to skip recording free_requested events: + `skip_actions=["free_requested"]` + + Defaults to ``None`` (record all actions). + """ + torch._C._xpu_recordMemoryHistory( + enabled, + context, + stacks, + max_entries, + clear_history, + skip_actions if skip_actions is not None else [], + ) + + +class _XPUAllocator: + r"""Wrapper over internal XPU memory allocators.""" + + def __init__(self, allocator: torch._C._xpu_XPUAllocator): + self._allocator = allocator + + def allocator(self): + return self._allocator + + +class XPUPluggableAllocator(_XPUAllocator): + r""" + XPU memory allocator loaded dynamically from a shared library. + + This lets users provide custom allocation and free functions implemented + in a separate shared library. The allocator is registered and could become + available for use via :func:`~torch.xpu.memory.change_current_allocator`. + + Arguments: + path_to_lib_file (str): + Filesystem path to the shared library file containing the allocation + and free functions. + alloc_fn_name (str): + Name of the allocation function exported from the shared library. + The function must have the signature: + + ``void* alloc_fn(size_t size, int device, sycl::queue* queue);`` + + free_fn_name (str): + Name of the free function exported from the shared library. + The function must have the signature: + + ``void free_fn(void* ptr, size_t size, int device, sycl::queue* queue);`` + """ + + def __init__(self, path_to_lib_file: str, alloc_fn_name: str, free_fn_name: str): + allocator_lib = ctypes.CDLL(path_to_lib_file) + + alloc_fn_ptr = getattr(allocator_lib, alloc_fn_name) + free_fn_ptr = getattr(allocator_lib, free_fn_name) + + alloc_fn_addr = ctypes.cast(alloc_fn_ptr, ctypes.c_void_p).value + free_fn_addr = ctypes.cast(free_fn_ptr, ctypes.c_void_p).value + + if alloc_fn_addr is None or free_fn_addr is None: + raise RuntimeError( + "Failed to load allocator symbols from the shared library." + ) + + self._allocator = torch._C._xpu_customAllocator(alloc_fn_addr, free_fn_addr) + + +def change_current_allocator(allocator: _XPUAllocator) -> None: + r"""Change the currently used memory allocator to be the one provided. + + .. note:: + If the current allocator has already been used/initialized, this function will error. + + Arguments: + allocator (torch.xpu.memory._XPUAllocator): allocator to be set as the active one. + """ + torch._C._xpu_changeCurrentAllocator(allocator.allocator()) + + +def _get_current_allocator() -> _XPUAllocator: + r"""Return the allocator being currently used. + + Returns: + _XPUAllocator: the allocator being currently used. + """ + return _XPUAllocator(torch._C._xpu_getAllocator()) + + +class MemPool(torch._C._XPUMemPool): + r"""MemPool represents a pool of memory in a caching allocator. Currently, + it's just the ID of the pool object maintained in the XPUCachingAllocator. + + Args: + allocator(torch._C._xpu_XPUAllocator, optional): a + torch._C._xpu_XPUAllocator object that can be used to + define how memory gets allocated in the pool. If :attr:`allocator` + is ``None`` (default), memory allocation follows the default/ + current configuration of the XPUCachingAllocator. + use_on_oom(bool): a bool that indicates if this pool can be used + as a last resort if a memory allocation outside of the pool fails due + to Out Of Memory. This is ``False`` by default. + """ + + def __init__( + self, + allocator: torch._C._xpu_XPUAllocator | None = None, + use_on_oom: bool = False, + ): + super().__init__(allocator, True, use_on_oom) + + @property + def id(self) -> tuple[int, int]: + r"""Returns the ID of this pool as a tuple of two ints.""" + return super().id + + @property + def allocator(self) -> torch._C._xpu_XPUAllocator | None: + r"""Returns the allocator this MemPool routes allocations to.""" + return super().allocator + + def use_count(self) -> int: + r"""Returns the reference count of this pool.""" + return super().use_count() + + def snapshot(self): + r"""Return a snapshot of the XPU memory allocator pool state across all + devices. + + Interpreting the output of this function requires familiarity with the + memory allocator internals. + """ + snapshot = torch.xpu.memory_snapshot(self.id) + return snapshot + + +@contextlib.contextmanager +def use_mem_pool(pool: MemPool, device: "Device" = None): + r"""A context manager that routes allocations to a given pool. + + Args: + pool(torch.xpu.MemPool): a :class:`MemPool` object to be made active so that + allocations route to this pool. + device (torch.device or int, optional): selected device. Uses :class:`MemPool on + the current device, given by :func:`~torch.xpu.current_device`, + if :attr:`device` is ``None`` (default). + + .. note:: + This context manager makes only current thread's allocations route to + the given pool. If a new thread is spawned inside the context manager + (e.g. by calling backward) the allocations in that thread will not + route to the given pool. + """ + device_index = ( + torch.xpu.current_device() if device is None else _get_device_index(device) + ) + torch._C._xpu_beginAllocateCurrentThreadToPool(device_index, pool.id) + try: + yield + finally: + torch._C._xpu_endAllocateToPool(device_index, pool.id) + torch._C._xpu_releasePool(device_index, pool.id) + + +__all__ = [ + "MemPool", + "XPUPluggableAllocator", + "change_current_allocator", + "empty_cache", + "get_per_process_memory_fraction", + "max_memory_allocated", + "max_memory_reserved", + "mem_get_info", + "memory_allocated", + "memory_reserved", + "memory_snapshot", + "memory_stats", + "memory_stats_as_nested_dict", + "reset_accumulated_memory_stats", + "reset_peak_memory_stats", + "set_per_process_memory_fraction", + "use_mem_pool", +] diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/xpu/random.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/xpu/random.py new file mode 100644 index 0000000000000000000000000000000000000000..f58e49e29d1a93954353f6f24cb0696a37e17d23 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/xpu/random.py @@ -0,0 +1,176 @@ +# mypy: allow-untyped-defs +from collections.abc import Iterable + +import torch +from torch import Tensor + +from . import _lazy_call, _lazy_init, current_device, device_count, is_initialized + + +def get_rng_state(device: int | str | torch.device = "xpu") -> Tensor: + r"""Return the random number generator state of the specified GPU as a ByteTensor. + + Args: + device (torch.device or int, optional): The device to return the RNG state of. + Default: ``'xpu'`` (i.e., ``torch.device('xpu')``, the current XPU device). + + .. warning:: + This function eagerly initializes XPU. + """ + _lazy_init() + if isinstance(device, str): + device = torch.device(device) + elif isinstance(device, int): + device = torch.device("xpu", device) + idx = device.index + if idx is None: + idx = current_device() + default_generator = torch.xpu.default_generators[idx] + return default_generator.get_state() + + +def get_rng_state_all() -> list[Tensor]: + r"""Return a list of ByteTensor representing the random number states of all devices.""" + results = [get_rng_state(i) for i in range(device_count())] + return results + + +def set_rng_state(new_state: Tensor, device: int | str | torch.device = "xpu") -> None: + r"""Set the random number generator state of the specified GPU. + + Args: + new_state (torch.ByteTensor): The desired state + device (torch.device or int, optional): The device to set the RNG state. + Default: ``'xpu'`` (i.e., ``torch.device('xpu')``, the current XPU device). + """ + if not is_initialized(): + with torch._C._DisableFuncTorch(): + new_state = new_state.clone(memory_format=torch.contiguous_format) + + if isinstance(device, str): + device = torch.device(device) + elif isinstance(device, int): + device = torch.device("xpu", device) + + def cb() -> None: + idx = device.index + if idx is None: + idx = current_device() + default_generator = torch.xpu.default_generators[idx] + default_generator.set_state(new_state) + + _lazy_call(cb) + + +def set_rng_state_all(new_states: Iterable[Tensor]) -> None: + r"""Set the random number generator state of all devices. + + Args: + new_states (Iterable of torch.ByteTensor): The desired state for each device. + """ + for i, state in enumerate(new_states): + set_rng_state(state, i) + + +def manual_seed(seed: int) -> None: + r"""Set the seed for generating random numbers for the current GPU. + + It's safe to call this function if XPU is not available; in that case, it is silently ignored. + + Args: + seed (int): The desired seed. + + .. warning:: + If you are working with a multi-GPU model, this function is insufficient + to get determinism. To seed all GPUs, use :func:`manual_seed_all`. + """ + seed = int(seed) + + def cb() -> None: + idx = current_device() + default_generator = torch.xpu.default_generators[idx] + default_generator.manual_seed(seed) + + _lazy_call(cb, seed=True) + + +def manual_seed_all(seed: int) -> None: + r"""Set the seed for generating random numbers on all GPUs. + + It's safe to call this function if XPU is not available; in that case, it is silently ignored. + + Args: + seed (int): The desired seed. + """ + seed = int(seed) + + def cb() -> None: + for i in range(device_count()): + default_generator = torch.xpu.default_generators[i] + default_generator.manual_seed(seed) + + _lazy_call(cb, seed_all=True) + + +def seed() -> None: + r"""Set the seed for generating random numbers to a random number for the current GPU. + + It's safe to call this function if XPU is not available; in that case, it is silently ignored. + + .. warning:: + If you are working with a multi-GPU model, this function will only initialize + the seed on one GPU. To initialize all GPUs, use :func:`seed_all`. + """ + + def cb() -> None: + idx = current_device() + default_generator = torch.xpu.default_generators[idx] + default_generator.seed() + + _lazy_call(cb) + + +def seed_all() -> None: + r"""Set the seed for generating random numbers to a random number on all GPUs. + + It's safe to call this function if XPU is not available; in that case, it is silently ignored. + """ + + def cb() -> None: + random_seed = 0 + seeded = False + for i in range(device_count()): + default_generator = torch.xpu.default_generators[i] + if not seeded: + default_generator.seed() + random_seed = default_generator.initial_seed() + seeded = True + else: + default_generator.manual_seed(random_seed) + + _lazy_call(cb) + + +def initial_seed() -> int: + r"""Return the current random seed of the current GPU. + + .. warning:: + This function eagerly initializes XPU. + """ + _lazy_init() + idx = current_device() + default_generator = torch.xpu.default_generators[idx] + return default_generator.initial_seed() + + +__all__ = [ + "get_rng_state", + "get_rng_state_all", + "set_rng_state", + "set_rng_state_all", + "manual_seed", + "manual_seed_all", + "seed", + "seed_all", + "initial_seed", +] diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torch/xpu/streams.py b/outputs/audit_venv/lib/python3.11/site-packages/torch/xpu/streams.py new file mode 100644 index 0000000000000000000000000000000000000000..3e5068ee3b44b4427c21c15ac82cbdbfcb456372 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torch/xpu/streams.py @@ -0,0 +1,181 @@ +# mypy: allow-untyped-defs +# pylint: disable=useless-parent-delegation +from __future__ import annotations + +import ctypes + +import torch +from torch._utils import _dummy_type + + +if not hasattr(torch._C, "_XpuStreamBase"): + # Define dummy base classes + torch._C.__dict__["_XpuStreamBase"] = _dummy_type("_XpuStreamBase") + torch._C.__dict__["_XpuEventBase"] = _dummy_type("_XpuEventBase") + + +class Stream(torch._C._XpuStreamBase): + r"""Wrapper around a XPU stream. + + A XPU stream is a linear sequence of execution that belongs to a specific + device, independent from other streams. It supports with statement as a + context manager to ensure the operators within the with block are running + on the corresponding stream. + + Args: + device(torch.device or int, optional): a device on which to allocate + the stream. If :attr:`device` is ``None`` (default) or a negative + integer, this will use the current device. + priority(int, optional): priority of the stream, which can be positive, 0, or negative. + A lower number indicates a higher priority. By default, the priority is set to 0. + If the value falls outside of the allowed priority range, it will automatically be + mapped to the nearest valid priority (lowest for large positive numbers or + highest for large negative numbers). + """ + + def __new__(cls, device=None, priority=0, **kwargs): + # setting device manager is expensive, so we avoid it unless necessary + if device is None or ("stream_id" in kwargs and "device_index" in kwargs): + return super().__new__(cls, priority=priority, **kwargs) + else: + with torch.xpu.device(device): + return super().__new__(cls, priority=priority, **kwargs) + + def wait_event(self, event: Event | torch.Event) -> None: + r"""Make all future work submitted to the stream wait for an event. + + Args: + event (Event, torch.Event): an event to wait for. + """ + event.wait(self) + + def wait_stream(self, stream: Stream | torch.Stream) -> None: + r"""Synchronize with another stream. + + All future work submitted to this stream will wait until all kernels + submitted to a given stream at the time of call complete. + + Args: + stream (Stream, torch.Stream): a stream to synchronize. + """ + self.wait_event(stream.record_event()) + + def record_event(self, event: Event | torch.Event | None = None): + r"""Record an event. + + Args: + event (Event, torch.Event, optional): event to record. If not given, a new one + will be allocated. + + Returns: + Recorded event. + """ + if event is None: + event = Event() + event.record(self) + return event + + def query(self) -> bool: + r"""Check if all the work submitted has been completed. + + Returns: + A boolean indicating if all kernels in this stream are completed. + """ + return super().query() + + def synchronize(self) -> None: + r"""Wait for all the kernels in this stream to complete.""" + super().synchronize() + + @property + def _as_parameter_(self): + return ctypes.c_void_p(self.sycl_queue) + + def __eq__(self, o): + if isinstance(o, Stream): + return super().__eq__(o) + return False + + def __hash__(self): + return hash((self.sycl_queue, self.device)) + + def __repr__(self) -> str: + return f"torch.xpu.Stream(device={self.device} sycl_queue={self.sycl_queue:#x})" + + +class Event(torch._C._XpuEventBase): + r"""Wrapper around a XPU event. + + XPU events are synchronization markers that can be used to monitor the + device's progress, and to synchronize XPU streams. + + The underlying XPU events are lazily initialized when the event is first + recorded. After creation, only streams on the same device may record the + event. However, streams on any device can wait on the event. + + Args: + enable_timing (bool, optional): indicates if the event should measure time + (default: ``False``) + """ + + def __new__(cls, enable_timing=False): + return super().__new__(cls, enable_timing=enable_timing) + + def record(self, stream: Stream | torch.Stream | None = None) -> None: + r"""Record the event in a given stream. + + Args: + stream (Stream, torch.Stream, optional): Uses ``torch.xpu.current_stream()`` if no stream is specified. + The stream's device must match the event's device. + """ + if stream is None: + stream = torch.xpu.current_stream() + super().record(stream) + + def wait(self, stream: Stream | torch.Stream | None = None) -> None: + r"""Make all future work submitted to the given stream wait for this event. + + Args: + stream (Stream, torch.Stream, optional): Uses ``torch.xpu.current_stream()`` if no stream is specified. + """ + if stream is None: + stream = torch.xpu.current_stream() + super().wait(stream) + + def query(self) -> bool: + r"""Check if all work currently captured by event has completed. + + Returns: + A boolean indicating if all work currently captured by event has + completed. + """ + return super().query() + + def elapsed_time(self, end_event: Event): + r"""Return the time elapsed. + + Time reported in milliseconds after the event was recorded and + before the end_event was recorded. + + Args: + end_event (Event): the end event. + """ + return super().elapsed_time(end_event) + + def synchronize(self) -> None: + r"""Wait for the event to complete. + + Waits until the completion of all work currently captured in this event. + This prevents the CPU thread from proceeding until the event completes. + """ + super().synchronize() + + @property + def _as_parameter_(self): + return ctypes.c_void_p(self.sycl_event) + + def __repr__(self) -> str: + if self.sycl_event: + return f"torch.xpu.Event(sycl_event={self.sycl_event:#x})" + else: + return "torch.xpu.Event(uninitialized)" diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/__init__.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..2d5dbf0667a022caa07ec30bb10db5b4f83159dd --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/__init__.py @@ -0,0 +1,10 @@ +"""torchgen + +This module contains codegeneration utilities for PyTorch. It is used to +build PyTorch from source, but may also be used for out-of-tree projects +that extend PyTorch. + +Note well that we provide no BC guarantees for torchgen. If you're interested +in using torchgen and want the PyTorch team to be aware, please reach out +on GitHub. +""" diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/aoti/__init__.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/aoti/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/aoti/fallback_ops.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/aoti/fallback_ops.py new file mode 100644 index 0000000000000000000000000000000000000000..84d413d426d198e6751d63a54084f361838d9d52 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/aoti/fallback_ops.py @@ -0,0 +1,206 @@ +# Be extra careful when you edit this file, because it affects AOTInductor ABI compatibility. See +# https://github.com/pytorch/pytorch/blob/7e86a7c0155295539996e0cf422883571126073e/torchgen/gen.py#L2424-L2436 +# for details. +# +# The inductor_fallback_ops list is based on the fallback ops from torch/_inductor/lowering.py. +# +# Generally speaking, it is ok to add a new op to the list, but you need to run +# `python torchgen/gen.py --update-aoti-c-shim` in order to regenerate C shim header files. +# But it is NOT ok to remove an existing fallback op from the list, since that will break +# some existing AOTInductor-compiled models. +# +# A fallback op version defaults to 1. If you want to extend an existing fallback op by adding +# a new argument with a default value, while it is fine in the Python world, it will be BC-breaking +# when generating C shim. Thus you need to bump up the version number of that fallback op by +# updating the entry in the inductor_fallback_ops list, adding a new version number with a list +# of new arguments, and then run `python torchgen/gen.py --update-aoti-c-shim` to regenerate. + +inductor_fallback_ops: dict[str, dict[str, list[str]]] = { + "aten._adaptive_avg_pool2d_backward.default": {}, + "aten._adaptive_avg_pool2d.default": {}, + "aten._adaptive_avg_pool3d_backward.default": {}, + "aten._adaptive_avg_pool3d.default": {}, + "aten._addmm_activation.default": {}, + "aten._cdist_backward.default": {}, + "aten._cdist_forward.default": {}, + "aten._cudnn_rnn.default": {}, + "aten._dyn_quant_matmul_4bit.default": {}, + "aten._dyn_quant_pack_4bit_weight.default": {}, + "aten._efficient_attention_backward.default": {}, + "aten._efficient_attention_forward.default": {}, + "aten._efficientzerotensor.default": {}, + "aten._embedding_bag_dense_backward.default": {}, + "aten._embedding_bag_forward_only.default": {}, + "aten._embedding_bag_per_sample_weights_backward.default": {}, + "aten._embedding_bag.default": {}, + "aten._fft_c2c.default": {}, + "aten._fft_r2c.default": {}, + "aten._flash_attention_backward.default": {}, + "aten._flash_attention_forward.default": {"v2": ["block_table", "num_splits"]}, + "aten._flash_attention_forward_no_dropout_inplace.default": {"v2": ["num_splits"]}, + "aten._flash_attention_forward.quantized": {}, + "aten._fused_moving_avg_obs_fq_helper_functional.default": {}, + "aten._fused_moving_avg_obs_fq_helper.default": {}, + "aten._fused_rms_norm.default": {}, + "aten._grouped_mm.default": {}, + "aten._histogramdd_from_bin_cts.default": {}, + "aten._int_mm.out": {}, + "aten._pdist_backward.default": {}, + "aten._pdist_forward.default": {}, + "aten._scaled_dot_product_attention_math_for_mps.default": {"v2": ["enable_gqa"]}, + "aten._scaled_dot_product_cudnn_attention_backward.default": {}, + "aten._scaled_dot_product_cudnn_attention.default": {}, + "aten._scaled_dot_product_efficient_attention_backward.default": {}, + "aten._scaled_dot_product_efficient_attention.default": {}, + "aten._scaled_dot_product_flash_attention_backward.default": {}, + "aten._scaled_dot_product_flash_attention_for_cpu_backward.default": {}, + "aten._scaled_dot_product_flash_attention_for_cpu.default": {}, + "aten._scaled_dot_product_flash_attention.default": {}, + "aten._scaled_dot_product_flash_attention.quantized": {}, + "aten._scaled_dot_product_fused_attention_overrideable_backward.default": {}, + "aten._scaled_dot_product_fused_attention_overrideable.default": {}, + "aten._scaled_mm.default": {}, + "aten._scaled_grouped_mm.default": {}, + "aten._scaled_mm.out": {}, + "aten._segment_reduce_backward.default": {}, + "aten._thnn_fused_lstm_cell.default": {}, + "aten._to_sparse.default": {}, + "aten._trilinear.default": {}, + "aten._weight_int4pack_mm.default": {}, + "aten._weight_int8pack_mm.default": {}, + "aten.abs.default": {}, + "aten.adaptive_max_pool2d_backward.default": {}, + "aten.adaptive_max_pool2d.default": {}, + "aten.adaptive_max_pool3d_backward.default": {}, + "aten.adaptive_max_pool3d.default": {}, + "aten.add.Scalar": {}, + "aten.add.Tensor": {}, + "aten.addbmm.default": {}, + "aten.addmm.out": {}, + "aten.addmv.default": {}, + "aten.angle.default": {}, + "aten.avg_pool2d_backward.default": {}, + "aten.avg_pool2d.default": {}, + "aten.avg_pool3d_backward.default": {}, + "aten.avg_pool3d.default": {}, + "aten.baddbmm.out": {}, + "aten.bernoulli_.float": {}, + "aten.bernoulli_.Tensor": {}, + "aten.bmm.out": {}, + "aten.bucketize.Tensor": {}, + "aten.cat.default": {}, + "aten.cholesky_inverse.default": {}, + "aten.cholesky_solve.default": {}, + "aten.convolution_backward.default": {}, + "aten.convolution.default": {}, + "aten.cummax.default": {}, + "aten.cummin.default": {}, + "aten.cumprod.default": {}, + "aten.cumsum.default": {}, + "aten.exponential.default": {}, + "aten.fill_.Scalar": {}, + "aten.fractional_max_pool2d_backward.default": {}, + "aten.fractional_max_pool2d.default": {}, + "aten.fractional_max_pool3d_backward.default": {}, + "aten.fractional_max_pool3d.default": {}, + "aten.gcd.default": {}, + "aten.geqrf.default": {}, + "aten.grid_sampler_2d_backward.default": {}, + "aten.hann_window.default": {}, + "aten.histc.default": {}, + "aten.histogram.bin_ct": {}, + "aten.index_put.default": {}, + "aten.index_reduce.default": {}, + "aten.index.Tensor": {}, + "aten.kthvalue.default": {}, + "aten.logcumsumexp.default": {}, + "aten.lu_unpack.default": {}, + "aten.masked_scatter_backward.default": {}, + "aten.masked_scatter.default": {}, + "aten.masked_select.default": {}, + "aten.max_pool2d_with_indices_backward.default": {}, + "aten.max_pool2d_with_indices.default": {}, + "aten.max_pool3d_with_indices_backward.default": {}, + "aten.max_pool3d_with_indices.default": {}, + "aten.max_unpool2d.default": {}, + "aten.max_unpool3d.default": {}, + "aten.median.default": {}, + "aten.mm.out": {}, + "aten.mm.dtype_out": {}, + "aten.mode.default": {}, + "aten.mul.Scalar": {}, + "aten.mul.Tensor": {}, + "aten.nanmedian.default": {}, + "aten.narrow.default": {}, + "aten.native_dropout.default": {}, + "aten.nonzero.default": {}, + "aten.nonzero_static.default": {}, + "aten.normal_functional.default": {}, + "aten.ormqr.default": {}, + "aten.pad.default": {}, + "aten.permute.default": {}, + "aten.polar.default": {}, + "aten.pow.Scalar": {}, + "aten.pow.Tensor_Scalar": {}, + "aten.pow.Tensor_Tensor": {}, + "aten.rand.default": {}, + "aten.rand.generator": {}, + "aten.randint.default": {}, + "aten.randint.generator": {}, + "aten.randint.low_out": {}, + "aten.randint.low": {}, + "aten.randn.default": {}, + "aten.randn.generator": {}, + "aten.randperm.default": {}, + "aten.rand_like.default": {}, + "aten.rand_like.generator": {}, + "aten.randint_like.default": {}, + "aten.randint_like.low_dtype": {}, + "aten.randn_like.default": {}, + "aten.randn_like.generator": {}, + "aten.repeat_interleave.Tensor": {}, + "aten.replication_pad1d_backward.default": {}, + "aten.replication_pad2d_backward.default": {}, + "aten.reshape.default": {}, + "aten.resize_.default": {}, + "aten.resize_as_.default": {}, + "aten.scatter_reduce.two_out": {}, + "aten.scatter.src_out": {}, + "aten.scatter.value_out": {}, + "aten.searchsorted.Scalar": {}, + "aten.searchsorted.Tensor": {}, + "aten.segment_reduce.default": {}, + "aten.set_.source_Tensor": {}, + "aten.slice.Tensor": {}, + "aten.soft_margin_loss_backward.default": {}, + "aten.sort.default": {}, + "aten.sort.stable": {}, + "aten.squeeze.dim": {}, + "aten.to_sparse.default": {}, + "aten.topk.default": {}, + "aten.triangular_solve.default": {}, + "aten.uniform.default": {}, + "aten.upsample_bicubic2d_backward.default": {}, + "aten.upsample_linear1d_backward.default": {}, + "aten.upsample_trilinear3d_backward.default": {}, + "aten.view_as_complex.default": {}, + "aten.view_as_real.default": {}, + "aten.view.dtype": {}, + "aten._weight_int4pack_mm_with_scales_and_zeros.default": {}, +} + +# `python torchgen/gen.py --update-aoti-c-shim` will automatically generate +# c_shim_aten.{h/cpp} based on the list below. +# Operators in this list are intended to be used in torch/csrc/stable/ops.h +# Unlike other c_shims, operators in this file do not bypass the dispatcher. +# The same BC rules apply as inductor_fallback_ops. +aten_shimified_ops: dict[str, dict[str, list[str]]] = { + "aten.fill_.Scalar": {}, + "aten.pad.default": {}, + "aten.narrow.default": {}, + "aten.amax.default": {}, + "aten.new_empty.default": {}, + "aten.new_zeros.default": {}, + "aten.full.default": {}, + "aten.subtract.Tensor": {}, +} diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/__init__.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/autograd.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/autograd.py new file mode 100644 index 0000000000000000000000000000000000000000..23a5cd6b1b61e7c8f7ecd1abca310216583deea0 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/autograd.py @@ -0,0 +1,892 @@ +from __future__ import annotations + +import re +from dataclasses import dataclass +from typing import cast, TYPE_CHECKING + +from torchgen import local +from torchgen.api import cpp +from torchgen.api.types import BaseCType, Binding, NamedCType, tensorListT +from torchgen.model import ( + BaseTy, + BaseType, + FunctionSchema, + ListType, + NativeFunction, + NativeFunctionsViewGroup, + SchemaKind, + Type, +) +from torchgen.utils import IDENT_REGEX + + +if TYPE_CHECKING: + from collections.abc import Sequence + + +# Represents a saved attribute involved in backward calculation. +# Note that it can be a derived property of an input argument, e.g.: +# we could save `other.scalar_type()` instead of the entire `other` tensor. +@dataclass(frozen=True) +class SavedAttribute: + # The NamedCType holds the updated name and cpp type of the attribute + # for the name, Suffix is appended if it's derived property, e.g.: `other_scalar_type` + nctype: NamedCType + + # The expression to read the derived property at save time, e.g.: + # `other.scalar_type()`. + expr: str + + +# Represents a backward formula that calculates derivatives for one +# or more tensors. +@dataclass(frozen=True) +class Derivative: + # The formula string (legit C++ expression). + # Note that expressions against input arguments have been replaced with the + # corresponding saved attributes. + # E.g.: + # raw formula: `mul_tensor_backward(grad, self, other.scalar_type())` + # here: `mul_tensor_backward(grad, self, other_scalar_type)` + formula: str + + # The formula string before input argument replacement + original_formula: str + + # Names of the arguments for which this formula calculates derivatives. + var_names: tuple[str, ...] + + # Saved inputs that are referenced by the formula. + saved_inputs: tuple[SavedAttribute, ...] + + # Saved outputs that are referenced by the formula. + saved_outputs: tuple[SavedAttribute, ...] + + # Gradients that are referenced by name in the formula. + named_gradients: set[str] + + +# Represents a forward formula that calculates forward derivatives +# for one tensor. +@dataclass(frozen=True) +class ForwardDerivative: + # The formula string (legit C++ expression). + # Note that special keywords such as "linear" or "element_wise" have been + # replaced by the automatically generated formula. + formula: str + + # Name of the output arguments for which this formula calculates forward + # derivatives + var_names: tuple[str, ...] + + # Type of the output arguments for which this formula calculates forward + # derivatives + var_types: tuple[Type, ...] + + # Inputs for which the forward derivatives are required for this formula + required_inputs_fw_grad: tuple[str, ...] | None + + # Inputs for which the primal is required for this formula + required_inputs_primal: tuple[str, ...] | None + + # Flag to specify if this formula requires the original value of self + # This is only used by inplace operations + required_original_self_value: bool + + # If this formula is specified in derivatives.yaml or if we are reusing the + # out of place formula for inplace + is_reusing_outplace_formula: bool + + +# Represents differentiability info for a NativeFunction. +@dataclass(frozen=True) +class DifferentiabilityInfo: + # The base name read from derivatives.yaml. + name: str + + # The matching native function. + # + # There can be multiple NativeFunction having the same base name: + # - different overloads with different types of input arguments; + # - in-place/out/functional variants of the same function; + # + # We first use the schema string (under the 'name' key) in derivatives.yaml + # to find the NativeFunction having the same schema string. + # Then we find the in-place/out/functional variants of the matching function. + # Among these variants, we choose the one having the same name as the + # derivatives.yaml entry. If there is no exact match, then we choose the + # in-place variant. + # TODO: maybe the logic to search for all variants is no longer necessary? + func: NativeFunction + + # The name of the generated autograd function. + # It's set only if we will calculate a derivative, i.e. + # 'args_with_derivatives' is not empty. + op: str | None + + # The derivatives formulae for this function. + # Note that the length of this sequence is the number of differentiable inputs + derivatives: Sequence[Derivative] + + # The forward derivatives formulae for this function. + # Note that the length of this sequence is the number of differentiable outputs + forward_derivatives: Sequence[ForwardDerivative] + + # The union of 'saved_inputs' of all 'derivatives'. + all_saved_inputs: Sequence[SavedAttribute] + + # The union of 'saved_outputs' of all 'derivatives'. + all_saved_outputs: Sequence[SavedAttribute] + + # All named gradients that are available for use, in the same + # order as in the grads vector. + available_named_gradients: Sequence[str] + + # The named gradients that are used in any of the derivatives. + # Invariant: all(name in available_named_gradients for name in used_named_gradients) + used_named_gradients: set[str] + + # The function's input arguments for which it calculates derivatives. + # It's the union of 'var_names' of all 'derivatives', sorted by the + # argument order in the function schema. + args_with_derivatives: Sequence[Binding] + + # Names of arguments whose derivative formula is 'non_differentiable'. + non_differentiable_arg_names: Sequence[str] + + # Raw data read from derivatives.yaml. + output_differentiability: list[bool] | None + + # output_differentiability in derivatives.yaml can be a list of + # conditions that express if the output is differentiable. In this case, + # the number of conditions must match the number of outputs + # (NB: we only support one condition right now). + # output_differentiability gets populated with True for each condition, + # while output_differentiability_conditions gets populated with the conditions + output_differentiability_conditions: list[str] | None + + @property + def has_derivatives(self) -> bool: + return len(self.args_with_derivatives) > 0 + + # Generates a new DifferentiabilityInfo using the exact same set of derivative information, + # but with a new operator name. + # This is used when generating "copy" variants of view ops, + # which are able to use the exact same derivative formula as the original view op + # See Note [Codegen'd {view}_copy Operators] + def create_view_copy_from_view_derivative( + self, g: NativeFunctionsViewGroup + ) -> DifferentiabilityInfo | None: + if g.view_copy is None: + return None + f = g.view_copy + + name_split_by_period = self.name.split(".", maxsplit=2) + # Append a "_copy" to the base name of the operator (but keep the overload name the same) + view_copy_name = f"{name_split_by_period[0]}_copy." + ".".join( + name_split_by_period[1:] + ) + view_copy_op_name = None if self.op is None else f"{self.op}_copy" + + return DifferentiabilityInfo( + # Use the "_copy" version of name/func/op + name=view_copy_name, + func=f, + op=view_copy_op_name, + # But keep all derivative info the same + derivatives=self.derivatives, + forward_derivatives=self.forward_derivatives, + all_saved_inputs=self.all_saved_inputs, + all_saved_outputs=self.all_saved_outputs, + available_named_gradients=self.available_named_gradients, + used_named_gradients=self.used_named_gradients, + args_with_derivatives=self.args_with_derivatives, + non_differentiable_arg_names=self.non_differentiable_arg_names, + output_differentiability=self.output_differentiability, + output_differentiability_conditions=self.output_differentiability_conditions, + ) + + +def uses_ident(info: DifferentiabilityInfo | None, ident: str) -> bool: + if info is None: + return False + for derivative in info.derivatives: + formula = derivative.formula + if re.search(IDENT_REGEX.format(ident), formula): + return True + return False + + +def uses_retain_variables(info: DifferentiabilityInfo | None) -> bool: + return uses_ident(info, "retain_variables") + + +def uses_single_grad(info: DifferentiabilityInfo | None) -> bool: + return uses_ident(info, "grad") + + +# Represents a differentiable `Argument`. +# How is it different from the `Argument` type? +# - It's processed Arguments which are differentiable and only used in the +# context of the autograd codegen; +# - It can represent SelfArgument or regular Argument but not TensorOptionsArgument; +@dataclass(frozen=True) +class DifferentiableInput: + name: str + type: Type + + # TODO: only to keep it byte-for-byte compatible with the old codegen, should remove. + cpp_type: str + + +# Represents a differentiable `Return`. +# How it it different from the `Return` type? +# - The name in `Return` is optional. Here it is always populated using the same +# `cpp.return_names()` method. +# TODO: some cpp naming logic (e.g. resolving name conflict) might be irrelevant? +# - It's processed Returns which are differentiable, in compliance with the +# `output_differentiability` field defined in derivatives.yaml (if specified), +# and are only used in the context of the autograd codegen; +@dataclass(frozen=True) +class DifferentiableOutput: + name: str + type: Type + + # TODO: only to keep it byte-for-byte compatible with the old codegen, should remove. + cpp_type: str + + +@dataclass(frozen=True) +class NativeFunctionWithDifferentiabilityInfo: + func: NativeFunction + info: dict[str, DifferentiabilityInfo] | None + fw_derivatives: dict[str, Sequence[ForwardDerivative]] | None + + +# TODO: Update comment below since it is out of date. +def dispatch_strategy(fn: NativeFunctionWithDifferentiabilityInfo) -> str: + """How are we going to call the underlying implementation of a + declaration? There are two strategies: + - use_derived: we want to call the implementation on CPUDoubleType + (or a similar, derived Type instance). Because these derived + instances deal in Tensors, not Variables (it's a completely different + object, so it doesn't dispatch back to VariableType), code on + this dispatch path needs to wrap/unwrap tensors. If the + derived implementation takes and returns tensors, the + implementation is usually differentiable (although we also use + the derived dispatch path for non-differentiable functions + that we still want to dispatch on the derived Type instance; + e.g., size()) + - use_type: we want to call the implementation on Type, because + it is implemented concretely, and the functions it invokes will + get dispatched back to VariableType (which will ensure that they + are differentiable.) + """ + # fn is derived as long as any of its per-key differentiability infos + # has_derivatives. dispatch_strategy() is used to guard generation of fns in VariableType + # and ADInplaceOrViewType. We want to generate these functions as long as a + # derivative is defined for ANY dispatch key. + if fn.func.is_abstract or ( + fn.info is not None and any(info.has_derivatives for info in fn.info.values()) + ): + # If the function is abstract (not implemented on at::Type), we must + # call the implementation on the derived type with unpacked tensors. + + # If the function has a derivative specified and is concrete, we could + # call either implementation. We prefer the calling the derived + # type's implementation with unpacked tensors because it is more + # performant in some cases: any internal calls to other ATen functions + # won't have the history tracked. + + # If the function has a type dispatched argument (i.e. is a factory), + # we prefer calling the derived type's implementation both because it is + # more performant and to ensure factory functions return tensors with _version + # of 0 (probably not strictly necessary, but nice to have to keeps versions simple + # to understand. + + return "use_derived" + else: + # If the function is concrete (we don't have to override it) and we + # didn't declare it in derivatives.yaml, we'll assume that it is + # actually implemented out of differentiable functions. (This + # assumption might not hold, but then you'll see gradcheck fail.) + return "use_type" + + +def is_foreach_func(f: NativeFunction) -> bool: + return f.func.name.name.base.startswith("_foreach_") + + +# note(crcrpar): Most foreach functions can reference an out-place `torch` function whose schema kind +# is functional for their backward derivatives (and forward derivatives in the future), i.e., +# they would find such one in `functional_info_by_signature`. There however are some exceptions: +_foreach_with_inplace_ref = {"_foreach_zero_"} +_foreach_with_tensor_overload = { + "_foreach_add.Tensor", + "_foreach_mul.Tensor", + "_foreach_div.Tensor", +} +# The following do not support the alpha kwarg, which the nonforeach versions support. +_skip_argument_len_check = { + "_foreach_add.Scalar", + "_foreach_add_.Scalar", + "_foreach_add.ScalarList", + "_foreach_add_.ScalarList", + "_foreach_sub.Scalar", + "_foreach_sub_.Scalar", + "_foreach_sub.ScalarList", + "_foreach_sub_.ScalarList", +} + + +# Checks if `function_schema` is a native, non-foreach function which `f`, a foreach function +# reference to generate derivatives. +def is_reference_for_foreach( + f: NativeFunction, + function_schema: FunctionSchema, +) -> bool: + return ( + f.func.name.name.base.split("_foreach_")[-1] == function_schema.name.name.base + and ( + not function_schema.name.name.inplace + or str(f.func.name) in _foreach_with_inplace_ref + ) + and ( + str(f.func.name) in _skip_argument_len_check + or len(f.func.arguments.flat_non_out) + == len(function_schema.arguments.flat_non_out) + ) + and all( + ref_arg.type in (arg.type, getattr(arg.type, "elem", None)) + for arg, ref_arg in zip( + f.func.arguments.flat_non_out, + function_schema.arguments.flat_non_out, + ) + ) + ) + + +# TODO(crcrpar): Avoid hard coding "Default" ideally. +def gen_foreach_derivativeinfo( + foreach_function: NativeFunction, + functional_info_by_signature: dict[ + FunctionSchema, dict[str, DifferentiabilityInfo] + ], + non_functional_info_by_signature: dict[ + FunctionSchema, dict[str, DifferentiabilityInfo] + ], + dispatch_key: str = "Default", +) -> tuple[DifferentiabilityInfo | None, bool]: + """Generate DifferentiabilityInfo for out-place foreach function, return the existing one for in-place. + + The second return value indicates whether the info is generated in this function. + """ + ref_diff_info: DifferentiabilityInfo | None = None + + for function_schema, diff_info in functional_info_by_signature.items(): + if not is_reference_for_foreach(foreach_function, function_schema): + continue + ref_diff_info = diff_info[dispatch_key] + if ref_diff_info is not None: + break + # note(crcrpar): It seems like `zero`'s info isn't available in functional_info_by_signature + # while the info of `zero_` is in non_functional_info_by_signature + if ( + ref_diff_info is None + and foreach_function.func.kind() == SchemaKind.inplace + and str(foreach_function.func.name) in _foreach_with_inplace_ref + ): + for function_schema, diff_info in non_functional_info_by_signature.items(): + if not is_reference_for_foreach(foreach_function, function_schema): + continue + ref_diff_info = diff_info[dispatch_key] + if ref_diff_info is not None: + break + if ref_diff_info is None: + return None, False + + # non out-place uses the existing Derivative. + if foreach_function.func.kind() == SchemaKind.inplace: + return ref_diff_info, False + + map_refarg2foreacharg, map_name2arg = {}, {} + for i, (arg, ref_arg) in enumerate( + zip( + foreach_function.func.arguments.flat_non_out, + function_schema.arguments.flat_non_out, + ) + ): + map_refarg2foreacharg[ref_arg.name] = arg.name + map_name2arg[arg.name] = arg + + all_saved_inputs, all_saved_outputs, all_var_names = [], [], [] + modified_derivative_formulas = [] + for i, derivative in enumerate(ref_diff_info.derivatives): + modified_formula = derivative.formula.replace("grad", "grads[i]").replace( + "result", "result[i]" + ) + saved_inputs, saved_outputs = [], [] + # note(crcrpar): This context seems necessary to call `cpp.argument_type` + with local.parametrize( + use_const_ref_for_mutable_tensors=foreach_function.use_const_ref_for_mutable_tensors, + use_ilistref_for_tensor_lists=foreach_function.part_of_structured_group, + ): + for ref_input in derivative.saved_inputs: + ref_input_jit_name = ref_input.expr.split(".")[0] + mapped_name = map_refarg2foreacharg[ref_input_jit_name] + if isinstance(map_name2arg[mapped_name].type, ListType): + mapped_expr = mapped_name + "[i]" + else: + mapped_expr = mapped_name + new_expr = ref_input.expr.replace(ref_input_jit_name, mapped_expr) + modified_formula = modified_formula.replace( + cast(str, ref_input.nctype.name), new_expr + ) + + nctype = cpp.argument_type(map_name2arg[mapped_name], binds=mapped_name) + canonical_nctype = NamedCType( + nctype.name, nctype.type.remove_const_ref() + ) + saved_inputs.append( + SavedAttribute(nctype=canonical_nctype, expr=mapped_name) + ) + for ref_output in derivative.saved_outputs: + if ref_output.nctype.name == "result": + saved_outputs.append( + SavedAttribute( + nctype=NamedCType( + name="result", type=BaseCType(tensorListT) + ), + expr="result", + ) + ) + else: + raise RuntimeError("") + var_names = [map_refarg2foreacharg[var] for var in derivative.var_names] + all_var_names.extend(var_names) + all_saved_inputs.extend(saved_inputs) + all_saved_outputs.extend(saved_outputs) + modified_derivative = Derivative( + formula=modified_formula, + original_formula=derivative.formula, + var_names=tuple(var_names), + saved_inputs=tuple(saved_inputs), + saved_outputs=tuple(saved_outputs), + named_gradients=set(), + ) + modified_derivative_formulas.append(modified_derivative) + + with local.parametrize( + use_const_ref_for_mutable_tensors=foreach_function.use_const_ref_for_mutable_tensors, + use_ilistref_for_tensor_lists=foreach_function.part_of_structured_group, + ): + args_with_derivatives = [ + Binding( + name=arg.name, + nctype=cpp.argument_type(arg, binds=arg.name), + argument=arg, + default=None, + ) + for arg in foreach_function.func.arguments.flat_non_out + if arg.name in all_var_names + ] + + forward_derivatives: list[ForwardDerivative] = [] + fw_derivative: ForwardDerivative + for fw_derivative in ref_diff_info.forward_derivatives: + var_names: list[str] = list(fw_derivative.var_names) # type: ignore[no-redef] + var_types: list[Type] = list(fw_derivative.var_types) + required_inputs_fw_grad: list[str] = [] + required_inputs_primal: list[str] = [] + if fw_derivative.required_inputs_fw_grad is not None: + required_inputs_fw_grad = list(fw_derivative.required_inputs_fw_grad) + if fw_derivative.required_inputs_primal: + required_inputs_primal = list(fw_derivative.required_inputs_primal) + modified_formula = fw_derivative.formula + + # Foreach's result is TensorList + if "result" in modified_formula: + modified_formula = fw_derivative.formula.replace("result", "result[i]") + + for foreach_arg, ref_arg in zip( + foreach_function.func.arguments.flat_non_out, + ref_diff_info.func.func.arguments.flat_non_out, + ): + # Modify reference forward formula + if ( + isinstance(foreach_arg.type, ListType) + and not foreach_arg.type.is_tensor_like() + ): + # Assuming ScalarList + modified_formula = modified_formula.replace( + ref_arg.name, foreach_arg.name + "[i]" + ) + elif foreach_arg.type.is_tensor_like(): + # Assuming TensorList / Tensor + if not ( + isinstance(foreach_arg.type, ListType) + or ( + foreach_arg.type == BaseType(BaseTy.Tensor) + and str(foreach_function.func.name) + in _foreach_with_tensor_overload + ) + ): + raise AssertionError( + f"{foreach_function.func.name}, {foreach_arg.type}" + ) + for suffix in ("_p", "_t"): + curr_expr = ref_arg.name + suffix + if curr_expr in modified_formula: + new_expr = foreach_arg.name + suffix + modified_formula = modified_formula.replace(curr_expr, new_expr) + else: + # Assuming Scalar + if foreach_arg.name != ref_arg.name: + modified_formula = modified_formula.replace( + ref_arg.name, foreach_arg.name + ) + + # note(crcrpar): there should exist a cooler way... + for i, name in enumerate(var_names): + if name == ref_arg.name: + var_names[i] = foreach_arg.name + var_types[i] = foreach_arg.type + for i, name in enumerate(required_inputs_fw_grad): + if name == ref_arg.name: + required_inputs_fw_grad[i] = foreach_arg.name + for i, name in enumerate(required_inputs_primal): + if name == ref_arg.name: + required_inputs_primal[i] = foreach_arg.name + forward_derivatives.append( + ForwardDerivative( + formula=modified_formula, + var_names=tuple(var_names), + var_types=tuple(var_types), + required_inputs_fw_grad=tuple(required_inputs_fw_grad), + required_inputs_primal=tuple(required_inputs_primal), + required_original_self_value=fw_derivative.required_original_self_value, + is_reusing_outplace_formula=fw_derivative.is_reusing_outplace_formula, + ) + ) + + return ( + DifferentiabilityInfo( + name=foreach_function.func.name.name.base, + func=foreach_function, + op=f"Foreach{ref_diff_info.op}{foreach_function.func.name.overload_name}", + derivatives=modified_derivative_formulas, + forward_derivatives=forward_derivatives, + all_saved_inputs=tuple(set(all_saved_inputs)), + all_saved_outputs=tuple(set(all_saved_outputs)), + available_named_gradients=(), + used_named_gradients=set(), + args_with_derivatives=args_with_derivatives, + non_differentiable_arg_names=[], + output_differentiability=None, + output_differentiability_conditions=None, + ), + True, + ) + + +def match_differentiability_info( + native_functions: list[NativeFunction], + differentiability_infos: dict[FunctionSchema, dict[str, DifferentiabilityInfo]], +) -> list[NativeFunctionWithDifferentiabilityInfo]: + """Sets the "derivative" key on declarations to matching autograd function + In-place functions will use the out-of-place derivative definition if there + is no in-place specific derivative. + """ + + functional_info_by_signature = { + schema.signature(strip_default=True): info_dict + for schema, info_dict in differentiability_infos.items() + if schema.kind() == SchemaKind.functional + } + non_functional_info_by_signature = { + schema.signature(strip_default=True): info_dict + for schema, info_dict in differentiability_infos.items() + if schema.kind() != SchemaKind.functional + } + + def find_info( + f: NativeFunction, + ) -> tuple[dict[str, DifferentiabilityInfo] | None, bool]: + # Don't bother matching info to generated out= variants + if "generated" in f.tags and f.func.kind() == SchemaKind.out: + return None, False + + # (1) Check for an exact match + if f.func in differentiability_infos: + return differentiability_infos[f.func], True + + # (2) If no exact match, check if the out-of-place variant + # of this operator has a match. + # i.e mul() for mul_() or mul_out() + # note(crcrpar): Check foreach or not because in-place foreach functions use backward defined for the existing + # native functions instead of the out-place counterparts. + f_sig = f.func.signature(strip_default=True) + if f_sig in functional_info_by_signature and not is_foreach_func(f): + return functional_info_by_signature[f_sig], False + + # (3) Some operators have a derivative explicitly defined for the mutable + # variant, but get a code-generated out-of-place variant which does *not* + # come with a derivative formula. + # For the generated out-of-place variant, use the mutable variant's formula + # if it exists. + if "generated" in f.tags and f_sig in non_functional_info_by_signature: + info_dict = non_functional_info_by_signature[f_sig] + # See https://github.com/pytorch/pytorch/pull/76320/files#r874816389 + if any( + any("self" in str(input.nctype.name) for input in info.all_saved_inputs) + for info in info_dict.values() + ): + raise AssertionError( + f"Attempted to convert a derivative formula for a mutable operator " + f'to be used automatically by its functional variant ("{str(f.func)}"). ' + "This is not currently supported (we'd need to fix up the formula in the codegen)." + ) + return info_dict, False + + # (4) Generate derivative information of foreach functions if none is defined in `derivatives.yaml` + if is_foreach_func(f): + if f.func in differentiability_infos: + raise AssertionError( + f"Foreach function {f.func.name} already has differentiability info" + ) + diff_info, is_generated = gen_foreach_derivativeinfo( + f, + functional_info_by_signature, + non_functional_info_by_signature, + ) + if diff_info is None: + return None, False + # TODO(crcrpar): Avoid hard coding "Default" ideally. + diff_info_dict = {"Default": diff_info} + if is_generated: + differentiability_infos[f.func] = diff_info_dict + functional_info_by_signature[f.func] = diff_info_dict + return diff_info_dict, is_generated + + return None, False + + result: list[NativeFunctionWithDifferentiabilityInfo] = [] + for f in native_functions: + info_dict, is_exact_match = find_info(f) + + # Currently, the '.strides()' to 'strides_or_error' replacement does not support + # 'self' derivatives of an inplace function, so we must check for this case. + if f.func.kind() == SchemaKind.inplace and (info_dict is not None): + for info in info_dict.values(): + for derivative in info.derivatives: + if "self" in derivative.var_names: + for saved_input in derivative.saved_inputs: + if "strides_or_error" in saved_input.expr: + raise AssertionError( + "Calling '.strides()' in the 'self' derivative formula of an " + f"in-place function is not supported: {f.func}" + ) + + if not info_dict: + result.append( + NativeFunctionWithDifferentiabilityInfo( + func=f, info=None, fw_derivatives=None + ) + ) + continue + + fw_derivative_dict: dict[str, Sequence[ForwardDerivative]] = {} + for key, info in info_dict.items(): + if not info.forward_derivatives: + fw_derivative_dict[key] = [] + continue + + forward_derivatives = info.forward_derivatives + + # For functions that have a single def for out-of-place and inplace (like abs()) + if f.func.kind() == SchemaKind.inplace: + # For inplace functions there is a little bit of work to do: + # 1) Validate the formula and make sure the input that is modified in not used: + # - If there is a formula for the inplace variant of the function (is_exact_match == True) then + # we make sure that the original value of the input that is being modified inplace (self_p) is + # not used in the formula. Note that the formula can use "original_self_p" here and that would + # trigger a clone of the original input. + # - If we are reusing the out of place formula (is_exact_match == False) then we replace every + # occurrence of self_p and self_t by original_self_p and original_self_t. These will be + # populated by cloned version of the original input (either the clone done by the backward AD + # logic if self is also used in a backward formula or a special clone that we add). + # 2) At this point, there cannot be a self_p in the formula. + # 3) Change "result" into "self_p" as by design, in the inplace function codegen, the result is + # simply called self (as it is modified inplace). + # 4) Update the required primals data in case it used to contain "result" but should now contain + # "self" + # 5) If it is not an exact match, the user formula is not modifying the existing forward grad + # inplace as it should. So add some code that makes sure that we do so if the forward grad + # already exists. + + if len(info.forward_derivatives) != 1: + raise AssertionError( + "Only single output inplace should exist, " + f"got {len(info.forward_derivatives)}" + ) + fw_info = info.forward_derivatives[0] + formula = fw_info.formula + + def replace_self_with_original_self(formula: str, postfix: str) -> str: + def repl(m: re.Match[str]) -> str: + return f"{m.group(1)}original_self{postfix}{m.group(2)}" + + return re.sub(IDENT_REGEX.format(f"self{postfix}"), repl, formula) + + if re.search(IDENT_REGEX.format("self_p"), formula): + if is_exact_match: + # For manually defined formulas, don't allow the original value to be used + raise RuntimeError( + f'The formula for "{f.func.name}" is using the original value of self ' + "that is being modified inplace. This would lead to wrong forward gradients. " + 'Please use "result" in the formula only.' + ) + else: + # When the original formula is out of place, we save a clone of the primal + # value to be able to access this value if needed + # replace "self_p"/"self_t" from the formula by "original_self_p"/"original_self_t" + formula = replace_self_with_original_self(formula, "_p") + formula = replace_self_with_original_self(formula, "_t") + + # replace "result" from the formula by "self_p" + def repl(m: re.Match[str]) -> str: + return f"{m.group(1)}self_p{m.group(2)}" + + formula = re.sub(IDENT_REGEX.format("result"), repl, formula) + + required_primals = fw_info.required_inputs_primal + if re.search(IDENT_REGEX.format("self_p"), formula): + required_primals = ( + required_primals + ("self",) if required_primals else ("self",) + ) + + if not is_exact_match: + # NOTE [In-place forward AD formula Optimization] + # + # This optimization transforms the formula to directly do inplace, i.e. + # instead of self_t.copy_(self_t.op()) we do self_t.op_() when the following are met: + # + # 1) the formula satisfies the pattern: "self_t.op(*args)" + # 2) "op" in (1) needs to be the same as the op the derivative is for + # + # (2) may seem too strict, but currently the only ops that satisfy (1) also satisfy (2) + # If there is a need, we can relax (2) to allow any op that has an in-place variant + is_single_method_on_self_t = False + directly_do_inplace = False + op_name: str | None = None + between_parens: str | None = None + match = re.fullmatch(r"self_t.([\w]*)\((.*)\)", formula) + if match: + op_name, between_parens = match.group(1), match.group(2) + + # We want to... + # Match: self_t.op1(other_p.op2(arg)) + # Avoid: self_t.op1(args) + self_t.op2(args) + # Avoid: self_t.op1(other_p.op2(arg)) + self_t.op2(args) + def check_parens_nest_level_gt_zero(s: str) -> bool: + level = 1 + for ch in s: + if ch == ")": + level -= 1 + if level == 0: + return False + if ch == "(": + level += 1 + return True + + is_single_method_on_self_t = check_parens_nest_level_gt_zero( + between_parens + ) + directly_do_inplace = ( + is_single_method_on_self_t and op_name == info.name + ) + + if directly_do_inplace: + if op_name is None: + raise AssertionError("op_name must be non-None for inplace") + if between_parens is None: + raise AssertionError( + "between_parens must be non-None for inplace" + ) + formula = f"self_t_raw.defined() ? self_t_raw.{op_name}_({between_parens}) : {formula}" + else: + # Make sure that the forward grad is modified inplace when the original formula + # is out of place + formula = f"self_t_raw.defined() ? self_t_raw.copy_({formula}) : {formula}" + + required_original_self_value = bool( + re.search(IDENT_REGEX.format("original_self_p"), formula) + ) or bool(re.search(IDENT_REGEX.format("original_self_t"), formula)) + + forward_derivatives = [ + ForwardDerivative( + formula=formula, + var_names=("self",), + var_types=fw_info.var_types, + required_inputs_fw_grad=fw_info.required_inputs_fw_grad, + required_inputs_primal=required_primals, + required_original_self_value=required_original_self_value, + is_reusing_outplace_formula=not is_exact_match, + ), + ] + + fw_derivative_dict[key] = forward_derivatives + + result.append( + NativeFunctionWithDifferentiabilityInfo( + func=f, info=info_dict, fw_derivatives=fw_derivative_dict + ) + ) + + return result + + +def is_differentiable( + name: str, type: Type, info: DifferentiabilityInfo | None +) -> bool: + return type.is_tensor_like() and ( + info is None or name not in info.non_differentiable_arg_names + ) + + +def gen_differentiable_outputs( + fn: NativeFunctionWithDifferentiabilityInfo, key: str = "Default" +) -> list[DifferentiableOutput]: + f = fn.func + info = fn.info[key] if fn.info else None + outputs: list[DifferentiableOutput] = [ + DifferentiableOutput( + name=name, + type=ret.type, + cpp_type=cpp.return_type(ret, symint=True).cpp_type(), + ) + for name, ret in zip(cpp.return_names(f), f.func.returns) + ] + output_differentiability = info.output_differentiability if info else None + if output_differentiability is not None: + if len(output_differentiability) != len(outputs): + raise RuntimeError( + f"The length of output_differentiability ({len(output_differentiability)}), " + f"does not match the number of outputs ({len(outputs)})." + ) + differentiable_outputs: list[DifferentiableOutput] = [] + if False in output_differentiability and f.func.kind() == SchemaKind.inplace: + raise RuntimeError( + "output_differentiability=False for inplace operation (version_counter won't get updated)" + ) + for differentiable, output in zip(output_differentiability, outputs): + if differentiable: + differentiable_outputs.append(output) + return differentiable_outputs + candidate_differentiable_outputs = list( + filter(lambda r: is_differentiable(r.name, r.type, info), outputs) + ) + if uses_single_grad(info): + return candidate_differentiable_outputs[:1] + else: + return candidate_differentiable_outputs diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/cpp.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/cpp.py new file mode 100644 index 0000000000000000000000000000000000000000..f2ac560246f304fa0b5dfad0bea6fb2d1c37a7ff --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/cpp.py @@ -0,0 +1,475 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING +from typing_extensions import assert_never + +from torchgen import local +from torchgen.api.types import ( + ArgName, + ArrayCType, + ArrayRefCType, + BaseCType, + BaseTypeToCppMapping, + Binding, + boolT, + ConstRefCType, + CType, + dimnameListT, + intArrayRefT, + iTensorListRefT, + ListCType, + longT, + MutRefCType, + NamedCType, + OptionalCType, + optionalIntArrayRefT, + optionalSymIntArrayRefT, + scalarT, + SpecialArgName, + symIntArrayRefT, + SymIntT, + tensorListT, + tensorOptionsT, + tensorT, + TupleCType, + VectorCType, + voidT, +) +from torchgen.model import ( + Argument, + Arguments, + BaseTy, + BaseType, + FunctionSchema, + ListType, + NativeFunction, + OptionalType, + Return, + SelfArgument, + TensorOptionsArguments, + Type, +) + + +if TYPE_CHECKING: + from collections.abc import Sequence + + +# This file describes the translation of JIT schema to the public C++ +# API, which is what people use when they call functions like at::add. +# +# Prominent characteristics of the C++ API: +# +# - dtype, layout, device and pin_memory are collected into +# a single C++ type TensorOptions (the native functions API +# also has this, but tensor options is really most relevant +# for the C++ API; it makes calling kwarg factory functions +# pleasant) +# +# - defaulting lives here (in fact, the dispatcher is completely +# oblivious of defaults!) +# +# BTW: policy on name collisions: we try not to have types with +# collisions, but functions are fair game to collide + + +def name( + func: FunctionSchema, + *, + faithful_name_for_out_overloads: bool = False, + symint_overload: bool = False, +) -> str: + name = str(func.name.name) + if symint_overload: + name += "_symint" + if func.is_out_fn(): + if faithful_name_for_out_overloads: + name += "_outf" + else: + name += "_out" + + return name + + +# Translation of "value types" in JIT schema to C++ API type. Value +# types look the same no matter if they are argument types or return +# types. Returns None if the type in question is not a value type. +def valuetype_type( + t: Type, + *, + binds: ArgName, + mutable: bool = True, + symint: bool = False, +) -> NamedCType | None: + if isinstance(t, BaseType): + if t.name in (BaseTy.Tensor, BaseTy.Scalar): + return None + elif str(t) == "SymInt": + if symint: + return NamedCType(binds, BaseCType(SymIntT)) + else: + return NamedCType(binds, BaseCType(longT)) + # All other BaseType currently map directly to BaseCppTypes. + return NamedCType(binds, BaseCType(BaseTypeToCppMapping[t.name])) + elif isinstance(t, OptionalType): + elem = valuetype_type(t.elem, binds=binds, mutable=mutable, symint=symint) + if elem is None: + return None + return NamedCType(binds, OptionalCType(elem.type)) + elif isinstance(t, ListType): + if str(t.elem) == "bool": + if t.size is None: + raise AssertionError("bool ListType must have a size") + return NamedCType(binds, ArrayCType(BaseCType(boolT), t.size)) + else: + return None + else: + raise AssertionError(f"unrecognized type {repr(t)}") + + +# Translation of types occurring in JIT arguments to a C++ argument type. +# If remove_non_owning_ref_types is set, we'll guarantee that the output CType is not a non-owning reference type. +# For example, we'll return std::vector instead of IntArrayRef. +# See Note [translation from C++ reference to value types] +def argumenttype_type( + t: Type, + *, + mutable: bool, + binds: ArgName, + remove_non_owning_ref_types: bool = False, + symint: bool = False, +) -> NamedCType: + # If it's a value type, do the value type translation + r = valuetype_type( + t, + binds=binds, + mutable=mutable, + symint=symint, + ) + if r is not None: + return r + + if isinstance(t, BaseType): + if t.name == BaseTy.Tensor: + if mutable and not local.use_const_ref_for_mutable_tensors(): + return NamedCType(binds, MutRefCType(BaseCType(tensorT))) + else: + return NamedCType(binds, ConstRefCType(BaseCType(tensorT))) + elif t.name == BaseTy.Scalar: + return NamedCType(binds, ConstRefCType(BaseCType(scalarT))) + else: + raise AssertionError(f"base type should have been value type {t}") + elif isinstance(t, OptionalType): + if str(t.elem) == "Tensor": + if mutable and not local.use_const_ref_for_mutable_tensors(): + return NamedCType( + binds, MutRefCType(BaseCType(tensorT)) + ) # TODO: fix this discrepancy + else: + return NamedCType( + binds, ConstRefCType(OptionalCType(BaseCType(tensorT))) + ) + elif str(t.elem) == "Scalar": + return NamedCType(binds, ConstRefCType(OptionalCType(BaseCType(scalarT)))) + elif isinstance(t.elem, ListType) and str(t.elem.elem) == "int": + return NamedCType(binds, BaseCType(optionalIntArrayRefT)) + elif isinstance(t.elem, ListType) and str(t.elem.elem) == "SymInt": + if symint: + return NamedCType(binds, BaseCType(optionalSymIntArrayRefT)) + else: + return NamedCType(binds, BaseCType(optionalIntArrayRefT)) + elem = argumenttype_type(t.elem, mutable=mutable, binds=binds, symint=symint) + return NamedCType(binds, OptionalCType(elem.type)) + elif isinstance(t, ListType): + # TODO: remove these special cases, ArrayRef fallthrough works fine + if str(t.elem) == "int": + if remove_non_owning_ref_types: + return NamedCType(binds, VectorCType(BaseCType(longT))) + else: + return NamedCType(binds, BaseCType(intArrayRefT)) + if str(t.elem) == "SymInt": + if remove_non_owning_ref_types: + if symint: + return NamedCType(binds, VectorCType(BaseCType(SymIntT))) + else: + return NamedCType(binds, VectorCType(BaseCType(longT))) + else: + if symint: + return NamedCType(binds, BaseCType(symIntArrayRefT)) + else: + return NamedCType(binds, BaseCType(intArrayRefT)) + if str(t.elem) == "Tensor": + if local.use_ilistref_for_tensor_lists(): + return NamedCType(binds, ConstRefCType(BaseCType(iTensorListRefT))) + else: + return NamedCType(binds, BaseCType(tensorListT)) + elif str(t.elem) == "Scalar": + return NamedCType(binds, ArrayRefCType(BaseCType(scalarT))) + elif str(t.elem) == "Dimname": + return NamedCType(binds, BaseCType(dimnameListT)) + elif str(t.elem) == "Tensor?": + return NamedCType( + binds, ConstRefCType(ListCType(OptionalCType(BaseCType(tensorT)))) + ) + elem = argumenttype_type(t.elem, mutable=mutable, binds=binds, symint=symint) + return NamedCType(binds, ArrayRefCType(elem.type)) + else: + raise AssertionError(f"unrecognized type {repr(t)}") + + +# Translate a JIT argument into its C++ type +def argument_type(a: Argument, *, binds: ArgName, symint: bool = False) -> NamedCType: + return argumenttype_type(a.type, mutable=a.is_write, symint=symint, binds=binds) + + +# Translation of a (non-multi) return type from JIT to C++ +# N.B: returntype_type returns a CType, not a NamedCType. +# This is mostly because of the mismatch between return types and return names. +# e.g. a function with a return type of 'void' has 0 return names, +# and a function with a return type of 'std::tuple' has >1 return name. +def returntype_type(t: Type, *, mutable: bool, symint: bool = False) -> CType: + # placeholder is ignored + # NB: symint is ALWAYS respected for return types. So symint argument + # here is IGNORED + r = valuetype_type(t, binds="__placeholder__", mutable=mutable, symint=True) + if r is not None: + return r.type + + if isinstance(t, BaseType): + if t.name == BaseTy.Tensor: + if mutable: + if local.use_const_ref_for_mutable_tensors(): + return ConstRefCType(BaseCType(tensorT)) + else: + return MutRefCType(BaseCType(tensorT)) + else: + # Note [Tensor Copy Returns] + # Currently, we use "Argument.is_write" to determine + # whether or not Tensor return types should be copies or references. + # If that ever changes, take a look at other locations of this note! + return BaseCType(tensorT) + elif t.name == BaseTy.Scalar: + return BaseCType(scalarT) + elif isinstance(t, ListType): + if mutable: + raise AssertionError( + "Native functions should never return a mutable tensor list. " + "They should return void." + ) + elem = returntype_type(t.elem, mutable=False) + if t.size is not None: + raise AssertionError(f"fixed size list returns not supported: {t}") + return VectorCType(elem) + elif isinstance(t, OptionalType): + elem = returntype_type(t.elem, mutable=mutable) + if str(t.elem) == "Tensor": + return OptionalCType(elem) + + raise AssertionError(f"unrecognized return type {t}") + + +# Translation of a single return to its C++ type +def return_type(r: Return, *, symint: bool = False) -> CType: + return returntype_type(r.type, mutable=r.is_write, symint=symint) + + +# Translation of a full (possibly multi) return from JIT to its C++ type +def returns_type(rs: Sequence[Return], *, symint: bool = False) -> CType: + if len(rs) == 0: + return BaseCType(voidT) + elif len(rs) == 1: + return return_type(rs[0], symint=symint) + else: + return TupleCType([return_type(r, symint=symint) for r in rs]) + + +def return_names(f: NativeFunction, *, fallback_name: str = "result") -> Sequence[str]: + returns: list[str] = [] + for i, r in enumerate(f.func.returns): + # If we have an inplace function, the return argument is + # implicitly named self. + # TODO: Consider incorporating this into the data model + if f.func.name.name.inplace: + if i != 0: + raise AssertionError("illegal inplace function with multiple returns") + name = "self" + # If we are out function, the name is the name of the + # corresponding output function (r.name will get recorded + # in field_name later.) + elif f.func.is_out_fn(): + name = f.func.arguments.out[i].name + # If the return argument is explicitly named... + elif r.name: + name_conflict = any( + r.name == a.name for a in f.func.schema_order_arguments() + ) + if name_conflict and not f.func.is_out_fn(): + name = f"{r.name}_return" + else: + name = r.name + # If there is no explicit name and no fallback name was passed in, we just name the output result, + # unless it's a multi-return, in which case it's result0, + # result1, etc (zero-indexed) + else: + name = fallback_name if len(f.func.returns) == 1 else f"{fallback_name}{i}" + returns.append(name) + return returns + + +JIT_TO_CPP_DEFAULT = { + "False": "false", + "True": "true", + "None": "::std::nullopt", # UGH this one is type directed + "Mean": "at::Reduction::Mean", + "[]": "{}", + "contiguous_format": "c10::MemoryFormat::Contiguous", + "long": "at::kLong", +} + + +# Convert a JIT default into C++ expression representing the default +def default_expr(d: str, t: Type, *, symint: bool) -> str: + if d == "None" and str(t) == "Tensor?": + return "{}" + if isinstance(t, BaseType) and t.name is BaseTy.str: + # Schema allows single quotes but C++ needs double + if len(d) >= 2 and d[0] == "'" and d[-1] == "'": + s = "" + i = 1 + while i + 1 < len(d): + if d[i] != "\\": + if d[i] == '"': + s += '\\"' + else: + s += d[i] + i += 1 + else: + if d[i + 1] == "'": + s += "'" + else: + s += d[i : i + 2] + i += 2 + + return f'"{s}"' + + if isinstance(t, OptionalType): + if d == "None": + return "::std::nullopt" + + return default_expr(d, t.elem, symint=symint) + + if isinstance(t, ListType): + if d.startswith("[") and d.endswith("]"): + return "{" + d[1:-1] + "}" + elif symint and d.isdigit() and str(t.elem) == "SymInt": + return f"c10::SymInt({d})" + elif t.size is None: + # NOTE: Sized lists can have scalar defaults + raise ValueError(f"Expected a list default '[...]' but found: '{d}'") + + return JIT_TO_CPP_DEFAULT.get(d, d) + + +# Convert an argument into its C++ API form + + +def argument( + a: Argument | TensorOptionsArguments | SelfArgument, + *, + cpp_no_default_args: set[str], + method: bool, + faithful: bool, + symint: bool = False, + has_tensor_options: bool, +) -> list[Binding]: + def sub_argument( + a: Argument | TensorOptionsArguments | SelfArgument, + ) -> list[Binding]: + return argument( + a, + cpp_no_default_args=cpp_no_default_args, + method=method, + faithful=faithful, + symint=symint, + has_tensor_options=has_tensor_options, + ) + + if isinstance(a, Argument): + binds: ArgName + if a.name == "memory_format" and has_tensor_options: + binds = SpecialArgName.possibly_redundant_memory_format + else: + binds = a.name + default: str | None = None + if a.name not in cpp_no_default_args and a.default is not None: + default = default_expr(a.default, a.type, symint=symint) + return [ + Binding( + nctype=argument_type(a, binds=binds, symint=symint), + name=a.name, + default=default, + argument=a, + ) + ] + elif isinstance(a, TensorOptionsArguments): + if faithful: + return ( + sub_argument(a.dtype) + + sub_argument(a.layout) + + sub_argument(a.device) + + sub_argument(a.pin_memory) + ) + else: + default = None + # Enforced by NativeFunction.__post_init__ + if "options" in cpp_no_default_args: + raise AssertionError("'options' should not be in cpp_no_default_args") + if all(x.default == "None" for x in a.all()): + default = "{}" + elif a.dtype.default == "long": + default = "at::kLong" # TODO: this is wrong + return [ + Binding( + nctype=NamedCType("options", BaseCType(tensorOptionsT)), + name="options", + default=default, + argument=a, + ) + ] + elif isinstance(a, SelfArgument): + if method: + # Caller is responsible for installing implicit this in context! + return [] + else: + return sub_argument(a.argument) + else: + assert_never(a) + + +def arguments( + arguments: Arguments, + *, + faithful: bool, + symint: bool = False, + method: bool, + cpp_no_default_args: set[str], +) -> list[Binding]: + args: list[Argument | TensorOptionsArguments | SelfArgument] = [] + if faithful: + args.extend(arguments.non_out) + args.extend(arguments.out) + else: + args.extend(arguments.out) + args.extend(arguments.non_out) + return [ + r.no_default() if faithful else r + for a in args + for r in argument( + a, + faithful=faithful, + symint=symint, + method=method, + has_tensor_options=arguments.tensor_options is not None, + cpp_no_default_args=cpp_no_default_args, + ) + ] diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/dispatcher.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/dispatcher.py new file mode 100644 index 0000000000000000000000000000000000000000..fcca7a60fec1829c5783197055733467fcdd63fe --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/dispatcher.py @@ -0,0 +1,125 @@ +from __future__ import annotations + +import itertools +from typing import TYPE_CHECKING +from typing_extensions import assert_never + +from torchgen.api import cpp +from torchgen.api.types import ArgName, Binding, CType, NamedCType +from torchgen.model import ( + Argument, + FunctionSchema, + Return, + SelfArgument, + TensorOptionsArguments, + Type, +) +from torchgen.utils import concatMap + + +if TYPE_CHECKING: + from collections.abc import Sequence + + +# This file describes the translation of JIT schema to the dispatcher +# API, the *unboxed* calling convention by which invocations through +# the dispatcher are made. Historically, the dispatcher API matched +# the C++ API, but with the establishment of the boxed API, we've +# made changes to the dispatcher API to so that the unboxed API +# better aligns with the boxed API. The dispatcher API hooks heavily +# into our template based boxing/unboxing machinery, so changes +# to this convention will usually need template updates too. +# +# Prominent characteristics of the dispatcher API: +# +# - dtype, layout, device and pin_memory are represented as separate +# arguments. +# + + +def name(func: FunctionSchema) -> str: + return cpp.name(func) + + +def argumenttype_type( + t: Type, + *, + mutable: bool, + binds: ArgName, + remove_non_owning_ref_types: bool = False, + symint: bool = True, +) -> NamedCType: + # This is a faux amis. If it makes sense in the future to add + # more special cases here, or invert things so cpp.argument_type + # calls this, or just completely inline the function, please do + # it. + return cpp.argumenttype_type( + t, + mutable=mutable, + binds=binds, + symint=symint, + remove_non_owning_ref_types=remove_non_owning_ref_types, + ) + + +def argument_type( + a: Argument, + *, + binds: ArgName, + remove_non_owning_ref_types: bool = False, + symint: bool = True, +) -> NamedCType: + return argumenttype_type( + a.type, + mutable=a.is_write, + binds=binds, + remove_non_owning_ref_types=remove_non_owning_ref_types, + symint=symint, + ) + + +def returns_type(rs: Sequence[Return], *, symint: bool = True) -> CType: + # At present, there is no difference. But there could be! + return cpp.returns_type(rs, symint=symint) + + +def jit_arguments(func: FunctionSchema) -> list[Argument]: + def to_argument( + a: Argument | TensorOptionsArguments | SelfArgument, + ) -> list[Argument]: + if isinstance(a, Argument): + return [a] + elif isinstance(a, SelfArgument): + return [a.argument] + elif isinstance(a, TensorOptionsArguments): + return [a.dtype, a.layout, a.device, a.pin_memory] + else: + assert_never(a) + + return list( + concatMap( + to_argument, + itertools.chain( + func.arguments.positional, func.arguments.kwarg_only, func.arguments.out + ), + ) + ) + + +def argument( + a: Argument, *, remove_non_owning_ref_types: bool = False, symint: bool = True +) -> Binding: + return Binding( + nctype=argument_type( + a, + binds=a.name, + remove_non_owning_ref_types=remove_non_owning_ref_types, + symint=symint, + ), + name=a.name, + argument=a, + ) + + +def arguments(func: FunctionSchema, *, symint: bool = True) -> list[Binding]: + return [argument(a, symint=symint) for a in jit_arguments(func)] diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/functionalization.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/functionalization.py new file mode 100644 index 0000000000000000000000000000000000000000..0d097e28a04a93df5b6ea9cef0c5abe41ef55509 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/functionalization.py @@ -0,0 +1,222 @@ +from __future__ import annotations + +from torchgen.api import dispatcher +from torchgen.api.types import ( + BaseCppType, + BaseCType, + Binding, + boolT, + ConstRefCType, + CType, + longT, + NamedCType, + tensorT, +) +from torchgen.model import ( + Argument, + BaseTy, + BaseType, + FunctionSchema, + NativeFunction, + NativeFunctionsViewGroup, +) + + +# This file describes the translation of JIT schema to API's used +# when creating `ViewMeta` specializations that are used by the functionalization pass. +# These API's mostly follow the dispatcher API, with one difference: +# - While the forward function just directly calls into the at::_ops API +# (following the dispatcher convention), the logic here for the reverse function +# is responsible for generating both the call-site, and the declarations +# (which are implemented manually in the at::functionalization::impl namespace). + +# Define some specific lambda input arguments. +base_binding = Binding( + name="base", + nctype=NamedCType(name="base", type=ConstRefCType(BaseCType(tensorT))), + argument=Argument( + name="base", type=BaseType(BaseTy.Tensor), default=None, annotation=None + ), + default=None, +) + +has_symbolic_inputs_binding = Binding( + name="has_symbolic_inputs", + nctype=NamedCType(name="has_symbolic_inputs", type=BaseCType(boolT)), + argument=Argument( + name="has_symbolic_inputs", + type=BaseType(BaseTy.bool), + default=None, + annotation=None, + ), + default=None, +) +mutated_view_binding = Binding( + name="mutated_view", + nctype=NamedCType(name="mutated_view", type=ConstRefCType(BaseCType(tensorT))), + argument=Argument( + name="base", type=BaseType(BaseTy.Tensor), default=None, annotation=None + ), + default=None, +) +out_index_binding = Binding( + name="out_index", + nctype=NamedCType(name="out_index", type=BaseCType(longT)), + argument=Argument( + name="out_index", type=BaseType(BaseTy.int), default=None, annotation=None + ), + default=None, +) +reapply_views_binding = Binding( + name="reapply_views", + nctype=NamedCType(name="reapply_views", type=BaseCType(boolT)), + argument=Argument( + name="reapply_views", type=BaseType(BaseTy.bool), default=None, annotation=None + ), + default=None, +) + +InverseReturnModeT = BaseCppType("at::functionalization", "InverseReturnMode") +inverse_return_mode_binding = Binding( + name="inverse_return_mode", + nctype=NamedCType(name="inverse_return_mode", type=BaseCType(InverseReturnModeT)), + argument=Argument( + name="inverse_return_mode", + # NB: not actually a bool but it doesn't matter because this isn't used + type=BaseType(BaseTy.bool), + default=None, + annotation=None, + ), + default=None, +) + + +# Name of the `ViewMeta` specialization class created. +def classname(func: FunctionSchema, with_namespace: bool = False) -> str: + namespace = "at::functionalization::" if with_namespace else "" + return f"{namespace}{func.name.unambiguous_name()}_ViewMeta" + + +# Name of the operation called inside the `forward`/`reverse` implementations. +def name( + g: NativeFunctionsViewGroup, + *, + is_reverse: bool, + include_namespace: bool, + reapply_views: bool | None = None, +) -> str: + if reapply_views is None: + # reapply_views is only important for the fwd lambda, + # since we always plumb the runtime "reapply_views" argument into the reverse function. + if not is_reverse: + raise AssertionError("reapply_views can only be None for reverse") + if is_reverse: + return reverse_name(g.view, include_namespace) + # in the forward case, we just directly call into the at::_ops API (so we always need the namespace) + if not include_namespace: + raise AssertionError("include_namespace must be True for forward") + if g.view_copy is None: + raise AssertionError("view_copy must be non-None for forward") + api_name = ( + g.view.func.name.unambiguous_name() + if reapply_views + else g.view_copy.func.name.unambiguous_name() + ) + return f"at::_ops::{api_name}::call" + + +def reverse_name(f: NativeFunction, include_namespace: bool) -> str: + # for the reverse: we plumb the "reapply_views" flag into that function and support + # both copy and non-copy variants. (We could avoid doing that, but that would require + # writing out twice as many view inverse functions). + api_name = f.func.name.unambiguous_name() + # in the reverse case, we codegen both the call-sites (which need the full namespace) and the declarations (which don't) + if include_namespace: + return f"at::functionalization::FunctionalInverses::{api_name}_inverse" + else: + return f"{api_name}_inverse" + + +def returns_type(func: FunctionSchema) -> CType: + # Assertion: all view ops return tensor-like outputs + if len(func.returns) < 1: + raise AssertionError("Expected at least one return value") + for ret in func.returns: + if not ret.type.is_tensor_like(): + raise AssertionError(f"Expected tensor-like return type, got {ret.type}") + # However, the return type of the lambda is always an individual tensor. + # For multi-tensor outputs, each tensor needs to be tracked individually. + return BaseCType(tensorT) + + +# Checks whether `func` might return more than one value. +def is_multi_output(func: FunctionSchema) -> bool: + return len(func.returns) > 1 or ( + len(func.returns) == 1 and func.returns[0].type.is_list_like() is not None + ) + + +# `ViewMeta` specialization constructor parameters. +def base_ctor_arguments(func: FunctionSchema) -> list[Binding]: + # All specializations are parematerized by `has_symbolic_inputs` flag. + arguments = [has_symbolic_inputs_binding] + + # If `func` might return more than 1 value, we also parameterize this specialization + # with the output index. + if is_multi_output(func): + arguments.append(out_index_binding) + + return arguments + + +# `ViewMeta` specialized class' constructor arguments. +# +# Values needed specifically by this specialization, that the base class does not need. +# Same as the class' attributes, but non-owning. +def extra_ctor_arguments(func: FunctionSchema) -> list[Binding]: + return attributes(func, owning=False) + + +# `ViewMeta` specialized class' non-static member data. +# +# Essential data for calling the instance's `forward` and `reverse functions. You can +# think of them as values that should be captured from the functionalization kernel. +def attributes(func: FunctionSchema, owning: bool = True) -> list[Binding]: + args = func.arguments.flat_all + if args[0].type != BaseType(BaseTy.Tensor): + raise AssertionError(f"Expected first arg to be Tensor, got {args[0].type}") + return [ + reapply_views_binding, + inverse_return_mode_binding, + *[dispatcher.argument(a, remove_non_owning_ref_types=owning) for a in args[1:]], + ] + + +def op_arguments(func: FunctionSchema, is_reverse: bool) -> list[Binding]: + args = func.arguments.flat_all + if args[0].type != BaseType(BaseTy.Tensor): + raise AssertionError(f"Expected first arg to be Tensor, got {args[0].type}") + non_self_args = args[1:] + # The forward lambda calls the at::_ops API, while the reverse lambda calls the view inverse API. + # Both of these follow the dispatcher API. + non_self_bindings = [dispatcher.argument(a) for a in non_self_args] + if not is_reverse: + # the forward lambda swaps out the original tensor argument with the lambd arg "base" + return [base_binding] + non_self_bindings + else: + # the reverse lambda does the same, but with an additional "mutated_view" arg + # additionally, we have a calling convention: for view ops that return multiple tensor outputs + # their corresponding view_inverse function takes in an additional index argument. + if is_multi_output(func): + return [ + base_binding, + mutated_view_binding, + inverse_return_mode_binding, + out_index_binding, + ] + non_self_bindings + else: + return [ + base_binding, + mutated_view_binding, + inverse_return_mode_binding, + ] + non_self_bindings diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/lazy.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/lazy.py new file mode 100644 index 0000000000000000000000000000000000000000..eff973ae11de99dfe2dea98bcfa7a85d25c99682 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/lazy.py @@ -0,0 +1,470 @@ +from __future__ import annotations + +from typing import Any + +from torchgen.api.types import ( + BaseCppType, + BaseCType, + boolT, + CType, + deviceT, + doubleT, + generatorT, + layoutT, + ListCType, + longT, + memoryFormatT, + NamedCType, + OptionalCType, + scalarT, + scalarTypeT, + stringT, + SymIntT, + VectorCType, +) +from torchgen.model import ( + Argument, + BaseTy, + BaseType, + FunctionSchema, + ListType, + OperatorName, + OptionalType, + Return, + TensorOptionsArguments, + Type, +) + + +_valueT: BaseCppType | None = None + + +# A ValueT is an IR type which represents the computation of a Tensor. In other +# words, a PyTorch user will do operations on lazy tensors, and each output lazy +# tensor internally tracks a ValueT representing the IR node that would have +# actually produced the value of this tensor for real. +# +# This is configurable because different lazy tensor backends (LTC vs XLA) will +# have different IR representations. (Though, arguably, after unification they +# shouldn't!) +def getValueT() -> BaseCppType: + global _valueT + if not _valueT: + raise NotImplementedError( + "The value type needs to be set with setValueT() in run_gen_lazy_tensor()" + ) + + return _valueT + + +def setValueT(val: BaseCppType) -> None: + global _valueT + _valueT = val + + +# this is a bad hack. I need to refactor the data model to represent each arg in the schema as an object, +# making it easier to represent special properties of an arg. +tensorListValueT = BaseCppType("torch::lazy", "Value") + + +def process_ir_type( + typ: Type, properties: LazyIrProperties, *, symint: bool +) -> BaseCType | VectorCType | OptionalCType | ListCType: + """ + This function takes a type from NativeFunctions and converts it for use with + lazy tensor codegen. + + Type conversion for lazy currently consists of + (1) changing at::Tensors into lazy::Values + (2) wrapping everything in a BaseCType + (3) making cpp-reference types into cpp-value types (e.g. vector instead of IntArrayRef) + + (1) converts at::Tensors to lazy::Values (which wrap lazy::Nodes, with which Lazy IR represents tensors.) + There is special handling for Optional[Tensor] or list[Tensor], etc- hence 'tensor-like' + + This is incomplete- there are assertions in places that it's expected to need to add + more types as the codegen is used with more operators. + """ + if isinstance(typ, BaseType): + if typ.name == BaseTy.Tensor: + return BaseCType(getValueT()) + elif typ.name == BaseTy.Scalar: + if properties.TreatScalarsAsConstants: + return BaseCType(scalarT) + # at::scalar has special handling, + # and is wrapped in an lazy::Value just like at::tensor + return BaseCType(getValueT()) + elif typ.name == BaseTy.ScalarType: + return BaseCType(scalarTypeT) + elif typ.name == BaseTy.int: + return BaseCType(longT) + elif typ.name == BaseTy.SymInt: + if symint: + return BaseCType(getValueT()) + else: + return BaseCType(longT) + elif typ.name == BaseTy.bool: + return BaseCType(boolT) + elif typ.name == BaseTy.float: + return BaseCType(doubleT) + elif typ.name == BaseTy.str: + return BaseCType(stringT) + elif typ.name == BaseTy.Device: + return BaseCType(deviceT) + elif typ.name == BaseTy.Generator: + return BaseCType(generatorT) + elif typ.name == BaseTy.Layout: + return BaseCType(layoutT) + elif typ.name == BaseTy.MemoryFormat: + return BaseCType(memoryFormatT) + else: + raise AssertionError(f"TODO add support for type {repr(typ)}") + elif isinstance(typ, OptionalType): + return OptionalCType(process_ir_type(typ.elem, properties, symint=symint)) + elif isinstance(typ, ListType): + if str(typ.elem) == "Tensor?": + # TODO(whc) is this actually correct? or should it use a Vector like above + return ListCType(OptionalCType(BaseCType(getValueT()))) + elif str(typ.elem) == "Tensor": + # this is a TensorList which comes in from GetTensorList as a Value + return BaseCType(tensorListValueT) + elif typ.elem == BaseType(BaseTy.SymInt): + # TODO: return a value type. The problem here is analogous to + # the problem with tensorListValueT: if you have SymInt[] you + # cannot conveniently save the list of Value directly, as nodes + # expect to save values as a vector for ALL arguments. So you + # need a separate IR node that represents all of the size nodes + # assembled into a list. I'm not an LTC dev so I don't want to + # figure it out right now. Y'all figure it out... + return VectorCType(BaseCType(longT)) + + else: + return VectorCType(process_ir_type(typ.elem, properties, symint=symint)) + else: + raise AssertionError(f"unrecognized type {repr(typ)}") + + +# TODO: Determining this based off of CType is bad; this should be computed +# from Type directly; then the same logic as process_ir_type can be used +# +# Invariant: passed typ should be an *owning* CType (e.g., we will report +# that ArrayRef is NOT a value type) +def isValueType(typ: CType, properties: LazyIrProperties | None = None) -> bool: + """ + Given a type, determine if it is a Value-like type. This is equivalent to + being Tensor-like, but assumes the type has already been transformed. + """ + if isinstance(typ, BaseCType): + # I am regretting my naming conventions, but now we are wrapping at::scalar in + # lazy value, while preserving other 'scalar' types as scalars in the IR + treat_scalars_as_constants = properties and properties.TreatScalarsAsConstants + return ( + typ.type == getValueT() + or (typ.type == scalarT and not treat_scalars_as_constants) + or typ.type == SymIntT + ) + elif typ == VectorCType(BaseCType(SymIntT)): + # TODO: report True for this + return False + elif isinstance(typ, (OptionalCType, ListCType, VectorCType)): + return isValueType(typ.elem, properties) + return False + + +def isSymIntType(typ: Type) -> bool: + return isinstance(typ, BaseType) and typ.name == BaseTy.SymInt + + +def isWrappedScalarType(typ: Type) -> bool: + """ + Given a type, determine if it is a c10::scalar which we will wrap in a lazy Value. + Since we literally change the type from scalarT to valueT, information is lost. + This function helps build a list of wrapped scalars to save that information + """ + if isinstance(typ, BaseType): + # I am regretting my naming conventions, but now we are wrapping at::scalar in + # lazy value, while preserving other 'scalar' types as scalars in the IR + return typ.name == BaseTy.Scalar + elif isinstance(typ, (OptionalType, ListType)): + return isWrappedScalarType(typ.elem) + return False + + +# TODO: dedupe with Type.is_generator_like +def isGeneratorType(typ: Type) -> bool: + if isinstance(typ, BaseType): + return typ.name == BaseTy.Generator + elif isinstance(typ, (OptionalType)): + return isGeneratorType(typ.elem) + return False + + +# This class caches a few derived properties computed from an Argument +# and LazyIrProperties +class LazyArgument: + name: str + orig_type: Type + lazy_type_: CType | None + is_wrapped_scalar: bool + is_generator: bool + # TODO: this is lies, it is false for symint list + is_symint_or_list: bool + + # Whether or not we are treating this as symint or not + symint: bool + + # true if this argument is or contains a lazy IR value + is_lazy_value: bool + + def __init__( + self, arg: Argument, properties: LazyIrProperties, *, symint: bool + ) -> None: + self.name = arg.name + self.orig_type = arg.type + self.symint = symint + self.is_optional = isinstance(arg.type, OptionalType) + self.is_generator = isGeneratorType(arg.type) + self.lazy_type_ = process_ir_type(arg.type, properties, symint=symint) + self.is_wrapped_scalar = isWrappedScalarType(arg.type) + self.is_symint_or_list = symint and ( + isSymIntType(arg.type) + or (isinstance(arg.type, OptionalType) and isSymIntType(arg.type.elem)) + # TODO: lists of symints are not currently treated as value types + # or (isinstance(arg.type, ListType) and isSymIntType(arg.type.elem)) + ) + + self.is_lazy_value = isValueType(self.lazy_type, properties) + + @property + def lazy_type(self) -> CType: + if self.lazy_type_ is None: + raise AssertionError( + f"Attempted to access lazy_type for invalid argument {self.name}" + ) + return self.lazy_type_ + + +class LazyIrProperties: + """Collection of properties for an IR node + + The property groups are listed below. Each group is mutually + exclusive, meaning that only one property from each group can be True + at any one time. The properties can be accessed as if they were normal + attributes. The mutual exclusivity is automatically handled. + """ + + Properties: tuple[tuple[str, ...], ...] = ( + ( + "ShapePrecompute", # Assume shape has been precomputed + "ShapeCompute", # Need to compute the shape on construction + "ShapeCache", # Utilize the shape cache to defer computation + ), + ( + "Lower", # Codegen full lower function + "LowerDeclOnly", # Codegen only lower function declaration + ), + ( + "CanBeReused", # Codegen full reuse function + "CanBeReusedDeclOnly", # Codegen only reuse function declaration + ), + ( + "CreateFn", # Codegen full create function + "CreateFnDeclOnly", # Codegen only create function declaration + ), + ( + "TreatScalarsAsConstants", # Treat Scalars as constants instead of handling like values + ), + ) + + def __init__(self, *default_properties: str) -> None: + properties: dict[tuple[str, ...], str | None] = dict.fromkeys( + LazyIrProperties.Properties + ) + self.__dict__["properties"] = properties + for p in default_properties: + setattr(self, p, True) + + def __getattr__(self, key: str) -> Any: + properties = self.__dict__["properties"] + for values in LazyIrProperties.Properties: + if key in values: + return properties[values] == key + + return self.__getattribute__(key) + + def __setattr__(self, key: str, value: Any) -> Any: + properties = self.__dict__["properties"] + for values in LazyIrProperties.Properties: + if key in values: + properties[values] = key if value else None + return value + + raise KeyError(f"Invalid property: {key}") + + +# Inspired by a FunctionSchema object, a LazyIrSchema holds the schema of a Lazy IR node. +# Unlike a FunctionSchema, it has no round-trippable string form (relating to the YAML), +# but carries type information from a native FunctionSchema modified for use with IR nodes, +# and preserving original argument names. +# +# TODO: This is not idiomatic with how other torchgen APIs transform on schema. +class LazyIrSchema: + # The name of the operator this function schema describes. + name: OperatorName + + positional_args: tuple[LazyArgument, ...] + keyword_args: tuple[LazyArgument, ...] + + # TODO: Need to handle collisions with argument names at some point + returns: tuple[Return, ...] + + # if this schema has a Generator arg, list its orig ctype/name but don't + # build a LazyArgument since lazy IR doesn't support it + generator_arg: NamedCType | None = None + + # original function schema + func: FunctionSchema + + # Whether or not we are code-genning for SymInt or not + symint: bool + + properties: LazyIrProperties = LazyIrProperties( + # default properties + "ShapePrecompute", + "Lower", + "CanBeReused", + ) + opkind: str | None = None + + def __init__( + self, + func: FunctionSchema, + properties: LazyIrProperties | None = None, + *, + symint: bool, + ) -> None: + if properties: + self.properties = properties + + self.func = func + self.symint = symint + positional_args: list[LazyArgument] = [] + for arg_field in ["pre_self_positional", "self_arg", "post_self_positional"]: + if arg_field == "self_arg" and func.arguments.self_arg is not None: + arg = func.arguments.self_arg.argument + positional_args.append( + LazyArgument(arg, self.properties, symint=symint) + ) + elif getattr(func.arguments, arg_field) is not None: + positional_args.extend( + LazyArgument(arg, self.properties, symint=symint) + for arg in getattr(func.arguments, arg_field) + ) + self.positional_args = tuple(positional_args) + + keyword_args: list[LazyArgument] = [] + for arg_field in [ + "pre_tensor_options_kwarg_only", + "tensor_options", + "post_tensor_options_kwarg_only", + "out", + ]: + curr_args = getattr(func.arguments, arg_field) + if curr_args is not None: + if isinstance(curr_args, TensorOptionsArguments): + curr_args = curr_args.all() + for arg in curr_args: + if isGeneratorType(arg.type): + if self.generator_arg is not None: + raise AssertionError( + "We expect there is only one generator arg" + ) + self.generator_arg = NamedCType( + arg.name, + arg.type, # type:ignore[arg-type] + ) + keyword_args.extend( + LazyArgument(arg, self.properties, symint=symint) + for arg in curr_args + ) + self.keyword_args = tuple(keyword_args) + self.name = func.name + self.returns = func.returns + + @property + def node_name(self) -> str: + """ + Return camel-case version of op in node. + + Note: This function also appends any `overload_name` in the operation. + For example, if the op is `bitwise_and.Tensor`, the returned name + will be `BitwiseAndTensor`. + """ + op_name = f"{self.name.name}_{self.name.overload_name}".lower() + return "".join(word.capitalize() or "" for word in op_name.split("_")) + + @property + def aten_name(self) -> str: + return str(self.name.name) + + @property + def base_name(self) -> str: + return f"{self.name.name.base}" + + def filtered_args( + self, + positional: bool = True, + keyword: bool = True, + values: bool = True, + scalars: bool = True, + generator: bool = True, + ) -> list[LazyArgument]: + # This function maintains the sorted order of arguments but provides different filtered views. + # Some parts of the code care about kwargs vs args (TS lowerings), + # other parts care about whether they need to wrap the arg in a lazy value or leave it alone. + # Generators are special cased, as they are needed for fallback/shape-inference but not supported + # in TS lowerings and therefore also omitted from lazy IR. + args: list[LazyArgument] = [] + if positional: + args.extend(self.positional_args) + if keyword: + args.extend(self.keyword_args) + + if values and scalars and generator: + return args + elif values and scalars: + return [a for a in args if not a.is_generator] + elif values: + return [a for a in args if a.is_lazy_value] + elif scalars: + return [ + a + for a in args + if not a.is_lazy_value and (generator or not a.is_generator) + ] + + return [] + + @property + def positional_values(self) -> list[LazyArgument]: + return self.filtered_args( + positional=True, keyword=False, values=True, scalars=False + ) + + @property + def positional_scalars(self) -> list[LazyArgument]: + return self.filtered_args( + positional=True, keyword=False, values=False, scalars=True + ) + + @property + def keyword_values(self) -> list[LazyArgument]: + return self.filtered_args( + positional=False, keyword=True, values=True, scalars=False + ) + + @property + def keyword_scalars(self) -> list[LazyArgument]: + return self.filtered_args( + positional=False, keyword=True, values=False, scalars=True + ) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/meta.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/meta.py new file mode 100644 index 0000000000000000000000000000000000000000..2e99d151faeaccea7ca47f372fd26f9985ce7249 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/meta.py @@ -0,0 +1,13 @@ +from torchgen.model import NativeFunctionsGroup + + +# Follows dispatcher calling convention, but: +# - Mutable arguments not allowed. Meta functions are always +# written in functional form. Look at FunctionSchema.signature() +# - No tensor returns; instead we return a TensorMeta describing +# the tensor in question + + +def name(g: NativeFunctionsGroup) -> str: + # use the overload name from the functional version + return str(g.functional.func.name).replace(".", "_") diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/native.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/native.py new file mode 100644 index 0000000000000000000000000000000000000000..632216704d2d47606b977d487335ca196e2e1842 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/native.py @@ -0,0 +1,159 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING +from typing_extensions import assert_never + +from torchgen import local +from torchgen.api import cpp +from torchgen.api.types import ( + ArgName, + BaseCType, + Binding, + boolT, + ConstRefCType, + CType, + deviceT, + layoutT, + ListCType, + MutRefCType, + NamedCType, + OptionalCType, + scalarT, + scalarTypeT, + tensorT, +) +from torchgen.model import ( + Argument, + FunctionSchema, + Return, + SelfArgument, + TensorOptionsArguments, + Type, +) + + +if TYPE_CHECKING: + from collections.abc import Sequence + + +# This file describes the translation of JIT schema to the native functions API. +# This looks a lot like the C++ API (which makes historical sense, because the +# idea was you wrote native functions to implement functions in the C++ API), +# but over time we have evolved the C++ API without actually changing our +# native:: kernels. The intention is to make native API and dispatcher API +# line up as closely as possible, since this results in the least overhead +# (no translation is needed from dispatcher API to native API). +# +# NB: this is symint aware, you will get the non-SymInt variant for some +# dispatch entries and SymInt for others. + + +def name(func: FunctionSchema) -> str: + name = str(func.name.name) + # TODO: delete this! + if func.is_out_fn(): + name += "_out" + if func.name.overload_name: + name += f"_{func.name.overload_name}" + return name + + +def argumenttype_type( + t: Type, *, mutable: bool, binds: ArgName, symint: bool +) -> NamedCType: + if str(t) == "Tensor?": + tensor_type: OptionalCType = OptionalCType(BaseCType(tensorT)) + if mutable and not local.use_const_ref_for_mutable_tensors(): + return NamedCType(binds, MutRefCType(tensor_type)) + else: + return NamedCType(binds, ConstRefCType(tensor_type)) + elif str(t) == "Tensor?[]": + return NamedCType( + binds, ConstRefCType(ListCType(OptionalCType(BaseCType(tensorT)))) + ) + elif str(t) == "Scalar": + return NamedCType(binds, ConstRefCType(BaseCType(scalarT))) + elif str(t) == "Scalar?": + return NamedCType(binds, ConstRefCType(OptionalCType(BaseCType(scalarT)))) + return cpp.argumenttype_type(t, mutable=mutable, binds=binds, symint=symint) + + +def returns_type(rs: Sequence[Return], *, symint: bool) -> CType: + return cpp.returns_type(rs, symint=symint) + + +def argument_type(a: Argument, *, binds: ArgName, symint: bool) -> NamedCType: + return argumenttype_type(a.type, mutable=a.is_write, binds=binds, symint=symint) + + +def argument( + a: Argument | SelfArgument | TensorOptionsArguments, + *, + is_out: bool, + symint: bool, +) -> list[Binding]: + # Ideally, we NEVER default native functions. However, there are a number + # of functions that call native:: directly and rely on the defaulting + # existing. So for BC, we generate defaults for non-out variants (but not + # for out variants, where it is impossible to generate an appropriate + # default) + should_default = not is_out + if isinstance(a, Argument): + default: str | None = None + if should_default and a.default is not None: + default = cpp.default_expr(a.default, a.type, symint=symint) + return [ + Binding( + nctype=argument_type(a, binds=a.name, symint=symint), + name=a.name, + default=default, + argument=a, + ) + ] + elif isinstance(a, SelfArgument): + # Erase SelfArgument from the distinction + return argument(a.argument, is_out=is_out, symint=symint) + elif isinstance(a, TensorOptionsArguments): + default = None + if should_default: + default = "{}" + # TODO: Not sure why the arguments assigned here are for + # TensorOptionsArguments and not the constituent pieces. It seems + # to matter + return [ + Binding( + nctype=NamedCType("dtype", OptionalCType(BaseCType(scalarTypeT))), + name="dtype", + default=default, + argument=a, + ), + Binding( + nctype=NamedCType("layout", OptionalCType(BaseCType(layoutT))), + name="layout", + default=default, + argument=a, + ), + Binding( + nctype=NamedCType("device", OptionalCType(BaseCType(deviceT))), + name="device", + default=default, + argument=a, + ), + Binding( + nctype=NamedCType("pin_memory", OptionalCType(BaseCType(boolT))), + name="pin_memory", + default=default, + argument=a, + ), + ] + else: + assert_never(a) + + +def arguments(func: FunctionSchema, *, symint: bool) -> list[Binding]: + args: list[Argument | TensorOptionsArguments | SelfArgument] = [] + args.extend(func.arguments.non_out) + args.extend(func.arguments.out) + return [ + r for arg in args for r in argument(arg, symint=symint, is_out=func.is_out_fn()) + ] diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/python.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/python.py new file mode 100644 index 0000000000000000000000000000000000000000..254d7c1ee9b438758aa8ab02af5632da6eee0d5b --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/python.py @@ -0,0 +1,1553 @@ +from __future__ import annotations + +from dataclasses import dataclass +from typing import TYPE_CHECKING + +from torchgen.api import cpp +from torchgen.api.types import Binding, CppSignature, CppSignatureGroup +from torchgen.gen import pythonify_default +from torchgen.model import ( + Argument, + BaseTy, + BaseType, + FunctionSchema, + ListType, + NativeFunction, + OptionalType, + Return, + Type, + Variant, +) + + +if TYPE_CHECKING: + from collections.abc import Iterable, Sequence + + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # +# +# Data Models +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # +# +# [Notes] python binding codegen +# +# The Python binding codegen produces code that takes the input list of +# PyObjects, finds the matching ATen C++ function using PythonArgParser, +# converts the PyObjects into C++ types and calls the ATen C++ function: +# +# +--------+ parsing +------------------------+ binding +-----------------------+ +# | PyObjs | ---------> | PythonArgParser Output | ---------> | Cpp Function Dispatch | +# +--------+ +------------------------+ +-----------------------+ +# +# The following examples demonstrate the data models the Python binding +# codegen needs to deal with and the tasks it needs to accomplish. It +# helps understand the purpose of the new data types we introduced below. +# +# - Function Schema (source of truth) +# +# aten::empty.names(int[] size, *, Dimname[]? names, +# ScalarType? dtype=None, Layout? layout=None, +# Device? device=None, bool? pin_memory=None, +# MemoryFormat? memory_format=None) -> Tensor +# +# - Python Signature +# +# It's used to generate input schema string for PythonArgParser. +# Note: TensorOptions fields are reordered and the additional +# 'requires_grad' field is added: +# +# empty(IntArrayRef size, *, DimnameList? names, +# MemoryFormat? memory_format=None, ScalarType dtype=None, +# Layout layout=torch.strided, Device device=None, +# bool pin_memory=False, bool requires_grad=False) +# +# - C++ Signature +# +# It's used to generate C++ lambda formals & dispatch call. +# Note: the scattered TensorOptions fields are packed into 'options'. +# +# auto dispatch_empty = +# [](IntArrayRef size, std::optional names, +# const TensorOptions & options, +# std::optional memory_format) -> Tensor { +# pybind11::gil_scoped_release no_gil; +# return torch::empty(size, names, options, memory_format); +# }; +# +# - Binding between Python Arguments and C++ Arguments +# +# Given a set of Python Arguments in scope, we need produce the +# binding expressions that translate the Python API into C++ API: +# +# Python Args Cpp Args Binding Exprs +# ----------------------------------------------------------------- +# 0: size size '_r.intlist(0)' +# 1: names names 'names' [special init] +# 2: memory_format -------+ +# 3: dtype -----+-|--> options 'options' [special packing] +# 4: layout / | +# 5: device / +--> memory_format '_r.memoryformatOptional(2)' +# 6: pin_memory / +# 7: requires_grad -+ +# +# So the full dispatch expression would look like: +# +# dispatch_empty(_r.intlist(0), names, options, +# _r.memoryformatOptional(2)) +# +# Where does 'names' come from? It involves special local init: +# +# auto __names = _r.toDimnameListOptional(1); +# std::optional names = +# __names ? std::make_optional(DimnameList(__names.value())) +# : std::nullopt; +# +# Where does 'options' come from? It involves special local init +# for TensorOptions. Note that Python side has the additional +# 'requires_grad' field: +# +# const auto options = TensorOptions() +# .dtype(_r.scalartype(3)) +# .device(_r.device(5)) +# .layout(_r.layoutOptional(4)) +# .requires_grad(_r.toBool(7)) +# .pinned_memory(_r.toBool(6)); +# +# In some other cases one Python Argument can map to multiple C++ +# Arguments. For example: +# +# aten::max.names_dim(Tensor self, Dimname dim, bool keepdim=False) +# -> (Tensor values, Tensor indices) +# +# Python Args Cpp Args Binding Exprs +# --------------------------------------------------------------------- +# +----> max 'out[0]' +# /-----> max_values 'out[1] +# 0: input / self '_r.tensor(0)' +# 1: dim / dim '_r.dimname(1)' +# 2: keepdim / keepdim '_r.toBool(2)' +# 3: out -----+ [local init] out '_r.tensorlist_n<2>(3)' +# +# As demonstrated above, the binding can involve reordering, +# packing, unpacking and special local inits. +# +# +# Let's look at a concrete example: +# +# static PythonArgParser parser({ +# "abs(Tensor input, *, Tensor out=None)", +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# ^ +# +--- Python Schema, represented by PythonSignature and PythonArgument +# +# }, /*traceable=*/true); +# +# ParsedArgs<2> parsed_args; +# auto _r = parser.parse(nullptr, args, kwargs, parsed_args); +# +# ... +# +# if (_r.isNone(1)) { +# ~~~~~~~~~~~~ <--- Scattered PythonArgParser output (arg name = 'out') +# represented by PythonArgParserOutputExpr +# +# // aten::abs(Tensor self) -> Tensor +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# ^ +# +--- NativeFunction schema, base version +# +# auto dispatch_abs = [](const Tensor & self) -> Tensor { +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# ^ +# +--- dispatch_lambda_args / dispatch_lambda_return_str +# generated from NativeFunction / CppSignature +# (deprecated PythonSignature is special) +# arguments are represented by DispatchLambdaArgument +# +# pybind11::gil_scoped_release no_gil; +# return self.abs(); +# ~~~~~~~~~~~ <--- cpp_dispatch_target / cpp_dispatch_exprs +# generated from NativeFunction / CppSignature +# }; +# return wrap(dispatch_abs(_r.tensor(0))); +# ~~~~~~~~~~~~~ +# ^ +# +--- dispatch_lambda_exprs +# binding PythonArgParserOutputExpr (python args) +# and DispatchLambdaArgument (c++ args) +# +# } else { +# // aten::abs.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# ^ +# +--- NativeFunction schema, out-variant +# +# auto dispatch_abs_out = [](Tensor out, const Tensor & self) -> Tensor { +# pybind11::gil_scoped_release no_gil; +# return at::abs_out(out, self); +# }; +# return wrap(dispatch_abs_out(_r.tensor(1), _r.tensor(0))); +# } +# +# +# [Notes] python interface codegen +# The python dataclasses below are used used to generate both python binding code +# and pyi type hint signatures. +# In theory these two should look very similar, but there are number of differences +# in how pyi signatures vs. python_arg_parser signatures are generated. +# These differences have been encapsulated in signature_str() vs. signature_str_pyi() +# to display the full signatures, and argument_str() vs argument_str_pyi() to display arguments. +# For examples, only pyi signatures include return types. + + +def format_function_signature( + name: str, arguments: Iterable[str] = (), return_type: str | None = None +) -> str: + if not isinstance(arguments, (list, tuple)): + arguments = tuple(arguments) + return_type = f" -> {return_type}" if return_type is not None else "" + + sig = f"def {name}({', '.join(arguments)}){return_type}: ..." + if len(sig) <= 80 or len(arguments) == 0 or tuple(arguments) == ("self",): + return sig + + lines = [ + f"def {name}(", + *(f" {arg}," for arg in arguments), + f"){return_type}: ...", + ] + sig = "\n".join(lines) + if all(len(line) <= 80 for line in lines): + return sig + # ruff format bug for compound statements: https://github.com/astral-sh/ruff/issues/18658 + # use `skip` instead of `on` + `off` + return sig.removesuffix(" ...") + " # fmt: skip\n ..." + + +@dataclass(frozen=True) +class PythonReturns: + returns: tuple[Return, ...] + + +@dataclass(frozen=True) +class PythonArgument: + name: str + type: Type + default: str | None + + # Used to generate the default init expr for some PythonArgParser outputs, e.g.: + # + # _r.layoutWithDefault(3, layout_from_backend(self.options().backend()))) + # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + # ^ + # +--- default_init str + default_init: str | None + + # Compute argument formal for python argument parsing. + # Needs to be consistent with torch/csrc/utils/python_arg_parser.h. + def argument_str(self, *, method: bool = False, symint: bool = True) -> str: + type_str = ( + argument_type_str(self.type, symint=symint) + .replace("const ", "") + .replace(" &", "") + ) + + name = self.name + # s/self/input/ outside method bindings + # [old codegen] TODO: remove this? doesn't rename in codegen, it's just + # for the parse string + if name == "self" and type_str in ["Tensor", "Number"] and not method: + name = "input" + + # add default + if self.default is not None: + default = { + "nullptr": "None", + "::std::nullopt": "None", + "std::nullopt": "None", + "{}": "None", + }.get(self.default, self.default) + return f"{type_str} {name}={default}" + else: + return f"{type_str} {name}" + + def argument_str_pyi( + self, *, method: bool = False, deprecated: bool = False + ) -> str: + type_str = argument_type_str_pyi(self.type) + + name = self.name + # s/self/input/ outside method bindings + # [old codegen] TODO: remove this? doesn't rename in codegen, it's just + # for the parse string + if name == "self" and type_str == "Tensor" and not method and not deprecated: + name = "input" + + if name == "from": # from is a Python keyword... + name += "_" + + # pyi merges the _out and functional variants into the same signature, with an optional out arg + if name == "out" and not deprecated: + type_str = f"{type_str} | None".replace(" | None | None", " | None") + + # pyi deprecated signatures don't get defaults for their out arg + treat_as_no_default = ( + deprecated + and isinstance(self, PythonOutArgument) + and self.default == "None" + ) + + # add default + if self.default is not None and not treat_as_no_default: + if ( + isinstance(self.type, ListType) + and self.type.elem == BaseType(BaseTy.int) + and self.default.startswith("{") + and self.default.endswith("}") + ): + default = ( + "(" + ", ".join(map(str.strip, self.default[1:-1].split(","))) + ")" + ) + else: + default = { + "nullptr": "None", + "::std::nullopt": "None", + "std::nullopt": "None", + "{}": "None", + "c10::MemoryFormat::Contiguous": "contiguous_format", + "QScheme::PER_TENSOR_AFFINE": "per_tensor_affine", + }.get(self.default, self.default) + return f"{name}: {type_str} = {default}" + else: + return f"{name}: {type_str}" + + +@dataclass(frozen=True) +class PythonOutArgument(PythonArgument): + # In Python signature multiple output fields are packed into one 'out' argument. + # When binding to C++, it's first binded to a local 'out' variable: + # 'auto out = _r.tensorlist_n<2>(2);', + # then binded to scattered C++ output arguments as 'out[0]', 'out[1]', and etc. + # TODO: maybe don't need keep scattered out fields for python signature? + outputs: tuple[PythonArgument, ...] + + @staticmethod + def from_outputs(outputs: tuple[PythonArgument, ...]) -> PythonOutArgument | None: + if not outputs: + return None + + size = len(outputs) + if size == 1: + return PythonOutArgument( + name=outputs[0].name, + type=outputs[0].type, + default="None", + default_init=None, + outputs=outputs, + ) + elif size > 1: + if any(not a.type.is_tensor_like() for a in outputs): + raise RuntimeError(f"Unsupported output type: {outputs}") + return PythonOutArgument( + name="out", + # TODO: shouldn't this be OptionalType[ListType[...]], since it defaults to None? + type=ListType(BaseType(BaseTy.Tensor), size), + default="None", + default_init=None, + outputs=outputs, + ) + raise AssertionError(r"Unexpected PythonOutArgument size") + + +@dataclass(frozen=True) +class PythonSignature: + # Base operator name, without inplace/outplace suffix. + name: str + + # Positional arguments. + # TODO: create a dedicated SelfArgument type for 'self'? + input_args: tuple[PythonArgument, ...] + + # Keyword arguments excluding the 'out' argument and scattered kwargs belonging + # to TensorOptions (dtype, layout, device, pin_memory, requires_grad, etc). + input_kwargs: tuple[PythonArgument, ...] + + output_args: PythonOutArgument | None + + # Return types, which are only used by pyi + returns: PythonReturns + + # These are scattered kwargs arguments belonging to TensorOptions. + # When binding to C++, they are packed into a TensorOptions object 'options'. + # It's possible that the C++ signature doesn't take TensorOptions object (e.g. + # for out variant), in which case they will be used as scattered fields without + # being packed into 'options'. + # TODO: maybe create a PythonTensorOptionsArgument? + tensor_options_args: tuple[PythonArgument, ...] + + # method or function signature? + method: bool + + @property + def deprecated(self) -> bool: + return False + + def arguments( + self, *, skip_outputs: bool = False, skip_tensor_options: bool = False + ) -> tuple[PythonArgument | PythonOutArgument, ...]: + result: list[PythonArgument | PythonOutArgument] = [] + result.extend(self.input_args) + result.extend(self.input_kwargs) + if self.output_args is not None and not skip_outputs: + result.append(self.output_args) + if not skip_tensor_options: + result.extend(self.tensor_options_args) + return tuple(result) + + def arguments_count(self) -> int: + return len(self.arguments()) + + def output_idx(self) -> int: + return len(self.input_args) + len(self.input_kwargs) + + # [old codegen] Compute the Python function signature for argument parsing, + # as specified in torch/csrc/utils/python_arg_parser.h. WARNING: + # this is NOT the same type signature as specified by PEP 484 + # as understood by mypy; our format was independently developed + # and has some quirks to make it more suitable specifically + # for error parsing. + # + # For a translation to mypy-valid type signatures, see + # signature_str_pyi(). + def signature_str(self, *, skip_outputs: bool = False, symint: bool = True) -> str: + args = self.arguments(skip_outputs=skip_outputs) + schema_formals: list[str] = [ + a.argument_str(method=self.method, symint=symint) for a in args + ] + positional_argc = len(self.input_args) + if len(schema_formals) > positional_argc: + schema_formals.insert(positional_argc, "*") + + return f"{self.name}({', '.join(schema_formals)})" + + def signature_str_pyi(self, *, skip_outputs: bool = False) -> str: + args = self.arguments(skip_outputs=skip_outputs) + schema_formals: list[str] = [ + a.argument_str_pyi(method=self.method) for a in args + ] + positional_argc = len(self.input_args) + if len(schema_formals) > positional_argc: + schema_formals.insert(positional_argc, "*") + + # only pyi signatures include returns + returns_str = returns_str_pyi(self) + # pyi also includes self (with no typing/defaults) for methods + if self.method: + schema_formals.insert(0, "self") + return format_function_signature(self.name, schema_formals, returns_str) + + def signature_str_pyi_vararg(self, *, skip_outputs: bool = False) -> str | None: + # only pyi uses vararg signatures + args = self.arguments(skip_outputs=skip_outputs) + schema_formals: list[str] = [ + a.argument_str_pyi(method=self.method) for a in args + ] + # vararg only applies to pyi signatures. vararg variants are not generated for all signatures + num_args = self.arguments_count() + if num_args == 0: + return None + + num_positionalargs = len(self.input_args) + + vararg_type = args[0].type + if not ( + isinstance(vararg_type, ListType) + and str(vararg_type.elem) in ["int", "SymInt"] + and num_positionalargs == 1 + ): + return None + + # Below are the major changes in vararg vs. regular pyi signatures + # vararg signatures also omit the asterix + if not isinstance(vararg_type, ListType): + raise AssertionError(f"Expected ListType, got {type(vararg_type)}") + schema_formals[0] = ( + "*" + args[0].name + ": " + argument_type_str_pyi(vararg_type.elem) + ) + + returns_str = returns_str_pyi(self) + # pyi also includes self (with no typing/defaults) for methods + if self.method: + schema_formals.insert(0, "self") + return format_function_signature(self.name, schema_formals, returns_str) + + +# The deprecated python signature involves some special logic, so create a +# dedicated data model to store these extra properties. +@dataclass(frozen=True) +class PythonSignatureDeprecated(PythonSignature): + # Schema for the deprecated function + deprecated_schema: FunctionSchema + + # The deprecated signature might miss some arguments that the corresponding + # C++ signature expects. We need store the constant default values to pass in. + # For example: + # [deprecate signature]: addmm(Scalar beta, Tensor self, Tensor mat1, Tensor mat2) + # [func schema]: aten::addmm(Tensor self, Tensor mat1, Tensor mat2, *, Scalar beta=1, Scalar alpha=1) -> Tensor + # [func call]: self.addmm(mat1, mat2, beta, 1) + # We store ['self', 'mat1', 'mat2', 'beta', '1'] in this case. + deprecated_args_exprs: tuple[str, ...] + + @property + def deprecated(self) -> bool: + return True + + def signature_str(self, *, skip_outputs: bool = False, symint: bool = True) -> str: + return ( + PythonSignature.signature_str( + self, skip_outputs=skip_outputs, symint=symint + ) + + "|deprecated" + ) + + def signature_str_pyi(self, *, skip_outputs: bool = False) -> str: + args = self.arguments(skip_outputs=skip_outputs) + schema_formals: list[str] = [ + a.argument_str_pyi(method=self.method, deprecated=True) for a in args + ] + positional_argc = len(self.input_args) + if len(schema_formals) > positional_argc: + schema_formals.insert(positional_argc, "*") + + returns_str = returns_str_pyi(self) + return format_function_signature(self.name, schema_formals, returns_str) + + def signature_str_pyi_vararg(self, *, skip_outputs: bool = False) -> str | None: + # the codegen doesn't include vararg variants for deprecated signatures + return None + + +# This struct is used to hold the PythonSignature and its corresponding +# NativeFunction BEFORE grouping base and out-variant functions. +# Why not store NativeFunction in PythonSignature or construct PythonSignature +# from NativeFunction? Because they are not 1-1 mapped. +# One native function could have both deprecated and non-deprecated python +# signatures - NativeFunction doesn't contain information to construct the +# deprecated python signature. +# One python signature is used to handle both the base and the out-variant +# function - see 'PythonSignatureGroup'. +@dataclass(frozen=True) +class PythonSignatureNativeFunctionPair: + signature: PythonSignature + function: NativeFunction + + +# We merge pairs of functions with signatures that are equivalent mod +# output arguments, and use a single entry in the python_arg_parser sig +# list for both (output arguments become optional). +@dataclass(frozen=True) +class PythonSignatureGroup: + # The signature used for Python argument parsing. The outplace signature + # is preferred if exists, because it can be used to parse inputs for both + # the out-place variant and the base version (with output omitted). + signature: PythonSignature + + # The regular ATen declaration (e.g. conv2d) + base: NativeFunction + + # The out variant (e.g. conv2d_out) + outplace: NativeFunction | None + + @classmethod + def from_pairs( + cls, + functional: PythonSignatureNativeFunctionPair, + out: PythonSignatureNativeFunctionPair | None, + ) -> PythonSignatureGroup: + if out is None: + return PythonSignatureGroup( + signature=functional.signature, + base=functional.function, + outplace=None, + ) + + # prefer the signature with optional out=... arguments because it's the + # superset that can be used to parse input for both base and outplace. + signature_kwargs = out.signature.__dict__.copy() + + # Out overloads in C++ don't have TensorOptions arguments, + # so take these from the functional variant + signature_kwargs["tensor_options_args"] = ( + functional.signature.tensor_options_args + ) + + return PythonSignatureGroup( + signature=type(out.signature)(**signature_kwargs), + base=functional.function, + outplace=out.function, + ) + + +# C++ function dispatch is wrapped in a lambda function. The lambda function +# has almost the same signature as the C++ function, only with some small +# variants - see details below. +# This data model is used to represent arguments of the lambda function +# signature. +@dataclass(frozen=True) +class DispatchLambdaArgument: + name: str + type_str: str + is_out_arg: bool + + +# To pass PyObjects arguments to C++ function (via the lambda wrapper), +# we need first convert PyObjects into simple C++ objects. This work +# is done by PythonArgParser. +# This data model is used to represent the output of PythonArgParser. +# It has 1-1 mapping with PythonArgument in PythonSignature. +@dataclass(frozen=True) +class PythonArgParserOutputExpr: + # argument name + name: str + + # RHS expression to reference PythonArgParser output. + expr: str + + # In some special cases we need create different expr, e.g.: + # '_r.isNone(1)' instead of '_r.tensor(1)'. + index: int + + # The python argument it maps to. + argument: PythonArgument + + @property + def is_none_expr(self) -> str: + return f"_r.isNone({self.index})" + + +# To pass PythonArgParser output to the lambda wrapper, we need bind +# PythonArgParserOutputExpr to DispatchLambdaArgument. +# They are not always 1-1 mapped, e.g. scattered TensorOptions fields +# need be packed into a TensorOptions object, which is the argument +# that the lambda function wrapper takes. +@dataclass(frozen=True) +class DispatchLambdaArgumentExprs: + # The exprs that provide the binding for lambda arguments, e.g.: + # + # 'self' -> '_r.tensor(0)' + # 'min' -> 'out[0]' / 'min_indices' -> 'out[1]' + # 'options' -> 'options' + # + # It has 1-1 mapping with DispatchLambdaArgument. + exprs: Sequence[str] + + # Special local inits, which might introduce new variables that + # the 'exprs' above reference, e.g.: + # + # 'auto out = _r.tensorlist_n<2>(2);' + # + inits: Sequence[str] + + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # +# +# Helper Functions +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # + + +def _cpp_signature(f: NativeFunction, *, method: bool = False) -> CppSignature: + return CppSignatureGroup.from_native_function(f, method=method).signature + + +def has_tensor_options(f: NativeFunction) -> bool: + return f.func.arguments.tensor_options is not None + + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # +# +# Python Signature +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # + + +# 'simple_type' was introduced by the old codegen, which is slightly +# different from the python schema type, e.g.: doesn't have '?' suffix +# for optional Tensor/TensorList; doesn't have '[size]' suffix for list type. +def argument_type_str( + t: Type, *, simple_type: bool = False, symint: bool = True +) -> str: + if isinstance(t, BaseType): + if t.name == BaseTy.int: + return "int64_t" + elif t.name == BaseTy.float: + return "double" + elif t.name == BaseTy.str: + return "c10::string_view" + elif t.name in [ + BaseTy.Tensor, + BaseTy.bool, + BaseTy.QScheme, + BaseTy.Scalar, + BaseTy.ScalarType, + BaseTy.Generator, + BaseTy.Storage, + BaseTy.Layout, + BaseTy.Device, + BaseTy.DeviceIndex, + BaseTy.MemoryFormat, + BaseTy.Dimname, + BaseTy.Stream, + BaseTy.SymInt, + ]: + # These python schema type names line up with their function schema names + return t.name.name + + elif isinstance(t, OptionalType): + elem = argument_type_str(t.elem, simple_type=simple_type, symint=symint) + return f"{elem}?" + elif isinstance(t, ListType): + size = t.size if not simple_type else None + if str(t.elem) == "bool": + if t.size is None: + raise AssertionError("bool ListType must have a size") + return f"::std::array" + elif str(t.elem) == "int": + return f"IntArrayRef[{size}]" if size is not None else "IntArrayRef" + elif str(t.elem) == "SymInt": + if symint: + return ( + f"SymIntArrayRef[{size}]" if size is not None else "SymIntArrayRef" + ) + else: + return f"IntArrayRef[{size}]" if size is not None else "IntArrayRef" + elif str(t.elem) == "Tensor": + return f"TensorList[{size}]" if size is not None else "TensorList" + elif str(t.elem) == "Scalar": + return f"ScalarList[{size}]" if size is not None else "ScalarList" + elif str(t.elem) == "Tensor?": + if simple_type: + return "c10::List<::std::optional>" + else: + return "const c10::List<::std::optional> &" + elif str(t.elem) == "Dimname": + return f"DimnameList[{size}]" if size is not None else "DimnameList" + elem = argument_type_str(t.elem, simple_type=simple_type, symint=symint) + return f"ArrayRef<{elem}>" + + raise RuntimeError(f"unrecognized type {repr(t)}") + + +def argument_type_size(t: Type) -> int | None: + l = t.is_list_like() + if l is not None and str(l.elem) != "bool": + return l.size + else: + return None + + +def argument(a: Argument) -> PythonArgument: + return PythonArgument( + name=a.name, + type=a.type, + # TODO: directly translate a.default to python default + default=( + str(pythonify_default(cpp.default_expr(a.default, a.type, symint=False))) + if a.default is not None + else None + ), + default_init=None, + ) + + +# Generates a PythonSignature that can be used for either .pyi or PythonArgParser codegen +def signature( + f: NativeFunction, *, method: bool = False, pyi: bool = False +) -> PythonSignature: + return signature_from_schema( + f.func, category_override=f.category_override, method=method, pyi=pyi + ) + + +def signature_from_schema( + func: FunctionSchema, + *, + category_override: str | None, + method: bool = False, + pyi: bool = False, +) -> PythonSignature: + args: list[Argument] = [] + args.extend(func.arguments.pre_self_positional) + # Skip SelfArgument if this is method. + if not method and func.arguments.self_arg is not None: + args.append(func.arguments.self_arg.argument) + args.extend(func.arguments.post_self_positional) + args.extend(func.arguments.pre_tensor_options_kwarg_only) + # Skip TensorOptionsArguments. Python side TensorOptions + # arguments are created based on different rules - see below. + args.extend(func.arguments.post_tensor_options_kwarg_only) + args.extend(func.arguments.out) + + input_arg_set = {a.name for a in func.arguments.flat_positional} + kwarg_only_set = {a.name for a in func.arguments.flat_kwarg_only} + out_arg_set = {a.name for a in func.arguments.out} + + input_args = tuple(map(argument, filter(lambda a: a.name in input_arg_set, args))) + input_kwargs = tuple( + map(argument, filter(lambda a: a.name in kwarg_only_set, args)) + ) + outputs = tuple(map(argument, filter(lambda a: a.name in out_arg_set, args))) + + # Reintroduce the scattered fields of TensorOptions for Python. + # Compared to the cpp counterpart, the python arguments have new property + # (default_init) and a new argument 'requires_grad', which require some + # special handlings. + # [old codegen] TODO: because these aren't guaranteed to be 100% faithful + # to the original versions in the yaml, this recreation is a potential + # source of drift between eager and JIT. Pull this logic out to a shared place. + + has_tensor_input_arg = any( + a.type.is_tensor_like() for a in func.arguments.flat_non_out + ) + if any(a.name == "requires_grad" for a in func.schema_order_arguments()): + raise ValueError( + "argument named requires_grad is reserved, should not explicitly add it in the schema" + ) + + # [old codegen] this probably won't work if one of the returns is not a tensor, + # but it will produce a compile-time error that is obvious. + has_tensor_return = any(r.type.is_tensor_like() for r in func.returns) + + name: str = cpp.name(func) + is_factory_function = category_override == "factory" or ( + has_tensor_return and not has_tensor_input_arg + ) + is_like_or_new_function = ( + category_override in ("new", "like") + or name.startswith("new_") + or name.endswith("_like") + ) + is_dummy_function = category_override == "dummy" + + tensor_options_args: list[PythonArgument] = [] + if (is_factory_function or is_like_or_new_function) and not is_dummy_function: + + def topt_default_init(name: str) -> str | None: + topt_args = func.arguments.tensor_options + if topt_args is None: + return None + a = getattr(topt_args, name) + if a.default is None or a.default == "None": + return None + return cpp.default_expr(a.default, a.type, symint=False) + + tensor_options_args.append( + PythonArgument( + name="dtype", + type=OptionalType(BaseType(BaseTy.ScalarType)), + default="None", + default_init=( + None if is_like_or_new_function else topt_default_init("dtype") + ), + ) + ) + tensor_options_args.append( + PythonArgument( + name="layout", + type=OptionalType(BaseType(BaseTy.Layout)), + default="None", + default_init=( + None if is_like_or_new_function else topt_default_init("layout") + ), + ) + ) + tensor_options_args.append( + PythonArgument( + name="device", + type=OptionalType(BaseType(BaseTy.Device)), + default="None", + default_init=( + None + if is_like_or_new_function + else ( + topt_default_init("device") + or "torch::tensors::get_default_device()" + ) + ), + ) + ) + tensor_options_args.append( + PythonArgument( + name="pin_memory", + type=OptionalType(BaseType(BaseTy.bool)), + default="False", + default_init=None, + ) + ) + tensor_options_args.append( + PythonArgument( + name="requires_grad", + type=OptionalType(BaseType(BaseTy.bool)), + default="False", + default_init=None, + ) + ) + + returns = PythonReturns(returns=func.returns) + + return PythonSignature( + name=str(func.name.name), + input_args=input_args, + input_kwargs=input_kwargs, + output_args=PythonOutArgument.from_outputs(outputs), + tensor_options_args=tuple(tensor_options_args), + returns=returns, + method=method, + ) + + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # +# +# Python Interface +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # + + +def structseq_fieldnames(returns: tuple[Return, ...]) -> list[str]: + if len(returns) <= 1 or all(r.name is None for r in returns): + return [] + else: + if any(r.name is None for r in returns): + # When building on Windows, `PyStructSequence_UnnamedField` could not be + # resolved by the linker for some reason, which cause error in building: + # + # python_nn_functions.cpp.obj : error LNK2001: unresolved external symbol + # PyStructSequence_UnnamedField + # + # Thus, at this point in time, we do not support unnamed + # fields in structseq; you must either name all fields, + # or none of them. + raise ValueError("Unnamed field is not supported by codegen") + + return [str(r.name) for r in returns] + + +def argument_type_str_pyi(t: Type) -> str: + add_optional = False + if isinstance(t, OptionalType): + t = t.elem + add_optional = True + + ret = "" + if isinstance(t, BaseType): + if t.name in [BaseTy.int, BaseTy.DeviceIndex]: + ret = "_int" + if t.name == BaseTy.SymInt: + ret = "_int | SymInt" + elif t.name == BaseTy.float: + ret = "_float" + elif t.name == BaseTy.str: + ret = "str" + elif t.name == BaseTy.Scalar: + ret = "Number | _complex" + elif t.name == BaseTy.ScalarType: + ret = "_dtype" + elif t.name == BaseTy.bool: + ret = "_bool" + elif t.name == BaseTy.QScheme: + ret = "_qscheme" + elif t.name == BaseTy.Layout: + ret = "_layout" + elif t.name == BaseTy.Device: + ret = "DeviceLikeType | None" + elif t.name == BaseTy.MemoryFormat: + ret = "memory_format" + elif t.name == BaseTy.Dimname: + ret = "str | EllipsisType | None" + elif t.name == BaseTy.Storage: + ret = "Storage | UntypedStorage" + elif t.name in [BaseTy.Tensor, BaseTy.Generator, BaseTy.Stream]: + # These python schema type names line up with their function schema names + ret = t.name.name + + elif isinstance(t, ListType): + if str(t.elem) == "int": + ret = "_int | _size" if t.size is not None else "_size" + elif t.is_tensor_like(): + # Tensor?[] translates to tuple[Tensor | None, ...] | list[Tensor | None] | None + # Tensor[] translates to tuple[Tensor, ...] | list[Tensor] + if isinstance(t.elem, OptionalType): + add_optional = True + elem_str = "Tensor | None" + else: + elem_str = "Tensor" + ret = ( + f"Tensor | tuple[{elem_str}, ...] | list[{elem_str}]" + if t.size is not None + else f"tuple[{elem_str}, ...] | list[{elem_str}]" + ) + elif str(t.elem) == "float": + ret = "Sequence[_float]" + elif str(t.elem) == "SymInt" and t.size is not None: + elem = argument_type_str_pyi(t.elem) + ret = f"{elem} | Sequence[{elem}]" + else: + elem = argument_type_str_pyi(t.elem) + ret = f"Sequence[{elem}]" + + else: + raise RuntimeError(f"unrecognized type {repr(t)}") + + if add_optional: + ret = f"{ret} | None".replace(" | None | None", " | None") + + return ret + + +def return_type_str_pyi(t: Type) -> str: + # Where arguments are open to accepting Union, return types should return + # concrete types + + if isinstance(t, OptionalType): + inner = return_type_str_pyi(t.elem) + return f"{inner} | None".replace(" | None | None", " | None") + + if isinstance(t, BaseType): + if t.name == BaseTy.Device: + return "_device" + elif t.name == BaseTy.Dimname: + return "str | None" + else: + return argument_type_str_pyi(t) + + if isinstance(t, ListType): + inner = return_type_str_pyi(t.elem) + return f"tuple[{inner}, ...]" + + return argument_type_str_pyi(t) + + +def returns_structseq_pyi(signature: PythonSignature) -> tuple[str, str] | None: + python_returns = [return_type_str_pyi(r.type) for r in signature.returns.returns] + structseq_name = signature.name + field_names = structseq_fieldnames(signature.returns.returns) + if field_names: + # These types are structseq objects which act like named NamedTuples, but + # the constructor acts like the constructor of tuple. Using typing.NamedTuple + # does not allow us to override __init__. + seq_type = f"tuple[{', '.join(python_returns)}]" + structseq_def_lines = [ + f"class {structseq_name}({seq_type}): # fmt: skip", + ] + for name, ret_type in zip(field_names, python_returns): + structseq_def_lines.extend( + [ + " @property", + f" def {name}(self) -> {ret_type}: ...", + ] + ) + structseq_def_lines.extend( + [ + " def __new__(", + " cls,", + f" sequence: {seq_type},", + " ) -> Self: # fmt: skip", + " ...", + f" n_fields: Final[_int] = {len(field_names)}", + f" n_sequence_fields: Final[_int] = {len(field_names)}", + " n_unnamed_fields: Final[_int] = 0", + " def __init_subclass__(cls) -> NoReturn: ... # prohibit subclassing", + "", # add an extra newline + ] + ) + structseq_def = "\n".join(structseq_def_lines) + # Example: + # structseq_def = ( + # "class max(tuple[Tensor, Tensor]): # fmt: skip\n" + # " @property\n" + # " def values(self) -> Tensor: ...\n" + # " @property\n" + # " def indices(self) -> Tensor: ...\n" + # " def __new__(\n" + # " cls,\n" + # " sequence: tuple[Tensor, Tensor],\n" + # " ) -> Self: # fmt: skip\n" + # " ...\n" + # " n_fields: Final[_int] = 2", + # " n_sequence_fields: Final[_int] = 2", + # " n_unnamed_fields: Final[_int] = 0", + # " def __init_subclass__(cls) -> NoReturn: ... # prohibit subclassing", + # ) + return structseq_name, structseq_def + return None + + +def returns_str_pyi(signature: PythonSignature) -> str: + field_names = structseq_fieldnames(signature.returns.returns) + if field_names: + return f"torch.return_types.{signature.name}" + + python_returns = [return_type_str_pyi(r.type) for r in signature.returns.returns] + if len(python_returns) > 1: + return "tuple[" + ", ".join(python_returns) + "]" + if len(python_returns) == 1: + return python_returns[0] + return "None" + + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # +# +# C++ Function Dispatch +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # +# This section provides APIs to generate the code that does C++ function +# dispatch. The C++ function call is wrapped by a lambda function. +# For example: +# +# // aten::selu_(Tensor(a!) self) -> Tensor(a!) +# auto dispatch_selu_ = [](Tensor self) -> Tensor { +# pybind11::gil_scoped_release no_gil; +# return at::selu_(self); +# }; +# +# The lambda function's signature follows the C++ signature in common +# cases, e.g.: +# +# // aten::add.Tensor(Tensor self, Tensor other, *, Scalar alpha=1) -> Tensor +# [](const Tensor & self, const Tensor & other, Scalar alpha) -> Tensor +# +# For out variant the 'out' argument's type is changed from 'Tensor &' +# to 'Tensor'. It's because when calling the lambda it passes in the +# PythonArgParser output '_r.tensor(3)', which is stack allocated object +# and needs to pass by value. Also see comments in 'dispatch_lambda_return_str()'. +# +# // aten::add.out(Tensor self, Tensor other, *, Scalar alpha=1, Tensor(a!) out) -> Tensor(a!) +# [](Tensor out, const Tensor & self, const Tensor & other, Scalar alpha) -> Tensor +# +# For multi-output case it can keep using reference type because the +# PythonArgParser output has been unpacked to local variables, e.g.: +# +# // aten::max.names_dim_max(Tensor self, Dimname dim, bool keepdim=False, *, +# // Tensor(a!) max, Tensor(b!) max_values) -> (Tensor(a!) values, Tensor(b!) indices) +# [](Tensor & max, Tensor & max_values, const Tensor & self, Dimname dim, bool keepdim) -> std::tuple +# +# For deprecated python signature, it should follow deprecated python arg order. +# TODO: This is to keep same byte-for-byte result as the old codegen - maybe unnecessary? + + +def dispatch_lambda_args( + ps: PythonSignature, f: NativeFunction, symint: bool = True +) -> tuple[DispatchLambdaArgument, ...]: + if isinstance(ps, PythonSignatureDeprecated): + schema = ps.deprecated_schema + else: + schema = f.func + + # Start with cpp arguments - dispatch lambda signature always include 'self' + cpp_args = cpp.arguments( + arguments=schema.arguments, + faithful=False, + symint=symint, + method=False, + cpp_no_default_args=f.cpp_no_default_args, + ) + out_args: set[str] = {a.name for a in schema.arguments.out} + + # Convert from cpp argument to lambda argument + def dispatch_lambda_arg(cpp_arg: Binding) -> DispatchLambdaArgument: + type_str = cpp_arg.type + is_out_arg = cpp_arg.name in out_args + if ps.method and cpp_arg.name == "self": + # For method's 'self', we can use 'const Tensor &' and simply ignore mutability! + type_str = "const at::Tensor &" + else: + # For other cases we need prevent dangling refs to temps (unless it's + # unpacked scattered output) + # The reason is explained in the comments above and in 'dispatch_lambda_return_str()'. + # TODO: avoid this special handling? + ensure_temp_safe = len(out_args) <= 1 or not is_out_arg + if ensure_temp_safe: + type_str = { + "at::Tensor &": "at::Tensor", + }.get(type_str, type_str) + return DispatchLambdaArgument( + name=cpp_arg.name, + type_str=type_str, + is_out_arg=is_out_arg, + ) + + return tuple(map(dispatch_lambda_arg, cpp_args)) + + +# [old codegen] XXX: if you got here because of an assertion failure, it doesn't mean +# it's enough to just extend the list here. Before you do this, make sure +# to add an appropriate wrap() overload in torch/csrc/autograd/utils/wrap_outputs.h. +SUPPORTED_RETURN_TYPES = { + "at::Tensor", + "::std::tuple", + "::std::tuple", + "::std::tuple", + "::std::tuple", + "::std::tuple", + "::std::tuple", + "::std::tuple", + "::std::tuple", + "::std::tuple", + "::std::tuple", + "::std::tuple>", + "::std::vector", + # Needed for flash attention forw/backward + "::std::tuple", + "at::Scalar", + "bool", + "int64_t", + "void*", + "void", + "at::QScheme", + "double", + "at::IntArrayRef", + "at::ScalarType", + "at::Stream", +} + + +def dispatch_lambda_return_str(f: NativeFunction) -> str: + # [old codegen] Remove type annotation (e.g. 'Tensor' rather than 'Tensor &') + # because the dispatch lambdas take mutable arguments *by value*, not + # by reference. If you then return a reference to such an argument, you + # will now have a pointer to a dangling stack entry. Not good. + # + # You want: + # + # auto dispatch_selu_ = [](Tensor self) -> Tensor { ...; return at::selu_(self); }; + # ^^^^^^ + # + # *not* + # + # auto dispatch_selu_ = [](Tensor self) -> Tensor& { ...; return at::selu_(self); }; + # ^^^^^^^ + # + # (NB: We can't make dispatch_selu_ take Tensor&, because the enclosing + # codegen looks like dispatch_selu_(_r.tensor(0)), and you can't take a + # mutable reference to temporary. Maybe we could assign it to a + # variable itself.) + returns_without_annotation = tuple( + Return(r.name, r.type, None) for r in f.func.returns + ) + return_str = cpp.returns_type(returns_without_annotation, symint=True).cpp_type() + if return_str not in SUPPORTED_RETURN_TYPES: + raise RuntimeError(f"{f.func.name} returns unsupported type {return_str}") + return return_str + + +def cpp_dispatch_target(f: NativeFunction) -> str: + symint = f.func.has_symint() + name = cpp.name(f.func, symint_overload=symint) + if Variant.method in f.variants: + return f"self.{name}" + if Variant.function in f.variants: + if has_tensor_options(f) or f.func.name.name.base.endswith("_like"): + namespace = "torch" + else: + namespace = "at" + return f"{namespace}::{name}" + raise RuntimeError(f"could not dispatch, neither function nor method: {f.func}") + + +def cpp_dispatch_exprs( + f: NativeFunction, + *, + python_signature: PythonSignature | None = None, +) -> tuple[str, ...]: + cpp_args: Sequence[Binding] = _cpp_signature(f, method=False).arguments() + + exprs: tuple[str, ...] = () + if not isinstance(python_signature, PythonSignatureDeprecated): + # By default the exprs are consistent with the C++ signature. + exprs = tuple(a.name for a in cpp_args) + else: + # For deprecated python signature we may need fill in some constants. + exprs = tuple( + filter( + lambda n: n != "out" or f.func.is_out_fn(), + python_signature.deprecated_args_exprs, + ) + ) + + if Variant.method in f.variants: + exprs = tuple(filter("self".__ne__, exprs)) + + return exprs + + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # +# +# Python / C++ Args Binding +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # + + +# We explicitly enumerate the PythonArgParser unpacking methods for all +# supported types. This might be more verbose than necessary, partially +# because of the irregularity of unpacking method naming, partially +# because we want to mimic the old codegen behavior - to reject +# unexpected and/or unsupported cases which the old codegen rejects. +# For certain cases it is intentionally more restrictive than necessary, +# e.g.: it doesn't accepts doublelist with definite size. +def arg_parser_unpack_method( + t: Type, default: str | None, default_init: str | None, *, symint: bool = True +) -> str: + has_default_init = default_init is not None + if has_default_init and str(t) not in ( + "ScalarType?", + "ScalarType", + "Device", + "Device?", + "Layout", + "Layout?", + "bool", + "bool?", + ): + raise RuntimeError(f"type '{t}' does not supported unpacking with default") + + if isinstance(t, BaseType): + if t.name in [ + BaseTy.Tensor, + BaseTy.Stream, + BaseTy.Storage, + BaseTy.Scalar, + BaseTy.Dimname, + ]: + # These unpack methods line up with their schema names + return t.name.name.lower() + elif t.name == BaseTy.ScalarType: + return "scalartypeWithDefault" if has_default_init else "scalartype" + elif t.name == BaseTy.Device: + return "deviceWithDefault" if has_default_init else "device" + elif t.name == BaseTy.DeviceIndex: + return "toInt64" + elif t.name == BaseTy.int: + return "toInt64" + elif t.name == BaseTy.SymInt: + return "toSymInt" if symint else "toInt64" + elif t.name == BaseTy.bool: + return "toBoolWithDefault" if has_default_init else "toBool" + elif t.name == BaseTy.float: + return "toDouble" + elif t.name == BaseTy.str: + return "stringView" + elif t.name == BaseTy.Layout: + return "layoutWithDefault" if has_default_init else "layout" + elif t.name == BaseTy.MemoryFormat: + return "memoryformat" + + elif isinstance(t, OptionalType): + if str(t.elem) == "Tensor": + return "optionalTensor" + elif str(t.elem) == "Generator": + return "generator" + elif str(t.elem) == "Dimname[]": + return "toDimnameListOptional" + elif not has_default_init and default in ( + None, + "None", + "::std::nullopt", + "std::nullopt", + ): + # If default is None: append 'Optional' to elem's unpacking method + return ( + arg_parser_unpack_method(t.elem, None, None, symint=symint) + "Optional" + ) + else: + # Otherwise, load as underlying type with default + return arg_parser_unpack_method( + t.elem, default, default_init, symint=symint + ) + + elif isinstance(t, ListType): + if str(t.elem) == "Tensor": + # accept and use definite size + return f"tensorlist_n<{t.size}>" if t.size is not None else "tensorlist" + elif str(t.elem) == "Tensor?": + return "list_of_optional_tensors" + elif str(t.elem) == "Dimname": + # accept definite size + return "dimnamelist" + elif str(t.elem) == "int": + # accept definite size + return "intlist" + elif str(t.elem) == "float": + return "doublelist" + elif str(t.elem) == "SymInt": + # accept definite size + return "symintlist" if symint else "intlist" + elif str(t.elem) == "Scalar": + return "scalarlist" + raise RuntimeError(f"type '{t}' is not supported by PythonArgParser") + + +# Return RHS expression for python argument using PythonArgParser output. +# e.g. for arg name 'foo', arg type 'bool', arg_index = 2, returns '_r.toBool(2)' +def arg_parser_output_expr( + arg_index: int, a: PythonArgument, *, symint: bool = True +) -> PythonArgParserOutputExpr: + has_default = a.default_init is not None + unpack_method = arg_parser_unpack_method( + t=a.type, default=a.default, default_init=a.default_init, symint=symint + ) + default = f", {a.default_init}" if has_default else "" + expr = f"_r.{unpack_method}({arg_index}{default})" + + return PythonArgParserOutputExpr( + name=a.name, + expr=expr, + index=arg_index, + argument=a, + ) + + +# Returns a map with key = arg_name and value = PythonArgParserOutputExpr. +def arg_parser_output_exprs( + ps: PythonSignature, f: NativeFunction, *, symint: bool = True +) -> dict[str, PythonArgParserOutputExpr]: + return { + e.name: e + for i, a in enumerate(ps.arguments()) + for e in (arg_parser_output_expr(i, a, symint=symint),) + } + + +# argument name to type for scattered tensor options fields +TENSOR_OPTIONS_FIELDS = { + "dtype": "ScalarType?", + "device": "Device?", + "layout": "Layout?", + "pin_memory": "bool?", + "requires_grad": "bool?", +} + + +# bind arg parser outputs (python args) with dispatch lambda arguments (c++ args). +def dispatch_lambda_exprs( + ps: PythonSignature, f: NativeFunction, *, symint: bool = True +) -> DispatchLambdaArgumentExprs: + # This method is to bind 'arg_parser_outputs' and 'lambda_args' by producing + # 'inits' and 'lambda_args_exprs' for each lambda argument using arg parser + # outputs. + arg_parser_outputs = arg_parser_output_exprs(ps, f, symint=symint) + lambda_args = dispatch_lambda_args(ps, f, symint=symint) + inits: list[str] = [] + lambda_args_exprs: dict[str, str] = {} + + has_toptions = has_tensor_options(f) + + # 1. special inits/unpacking to provide binding exprs for lambda arguments. + for a in ps.arguments(skip_tensor_options=True): + name = a.name + arg_parser_expr = arg_parser_outputs[a.name].expr + + if has_toptions and name == "self": + # TODO: why this needs to be special case? + inits.extend( + [ + f"auto self = {arg_parser_expr};", + ] + ) + lambda_args_exprs[name] = name + elif ( + isinstance(a, PythonOutArgument) + and len(a.outputs) > 1 + and f.func.is_out_fn() + ): + inits.extend( + [ + f"auto out = {arg_parser_expr};", + ] + ) + for i, out_arg in enumerate(a.outputs): + lambda_args_exprs[out_arg.name] = f"out[{i}]" + elif str(a.type) == "Dimname[]?": + # [old codegen] + # TODO: make this part of something more general, or get rid of it. + # optional> are special. The PythonArgParser returns an + # optional>, which cannot be implicitly converted to + # optional>. One needs to unwrap the optional and rewrap. + inits.extend( + [ + f"auto __{name} = {arg_parser_expr};", + f"::std::optional {name} = __{name} ? ::std::make_optional(DimnameList(__{name}.value())) : ::std::nullopt;", # noqa: B950 + ] + ) + lambda_args_exprs[name] = name + else: + # default case - directly using PythonArgParser output expr + lambda_args_exprs[name] = arg_parser_expr + + # method's self is passed directly to python binding, rather than parsed + if ps.method: + lambda_args_exprs["self"] = "self" + + # 2. special packing/checking for TensorOptions. + tensor_options_args_names = [a.name for a in ps.tensor_options_args] + if has_toptions: + if f.func.is_out_fn(): + raise RuntimeError(f"{f.func}: tensor options with output arg") + for a in ps.tensor_options_args: + if a.name not in TENSOR_OPTIONS_FIELDS: + raise RuntimeError( + f"{f.func}: unrecognized tensor options field '{a.name}' in python binding arguments" + ) + if str(a.type) != TENSOR_OPTIONS_FIELDS.get(a.name): + raise RuntimeError( + f"{f.func}: unrecognized type '{str(a.type)}' for tensor options field '{a.name}'" + ) + if not all(a in tensor_options_args_names for a in TENSOR_OPTIONS_FIELDS): + raise RuntimeError( + f"{f.func}: incomplete tensor options args: {tensor_options_args_names}" + ) + + inits.append( + f"""\ +const auto options = TensorOptions() + .dtype({arg_parser_outputs["dtype"].expr}) + .device({arg_parser_outputs["device"].expr}) + .layout({arg_parser_outputs["layout"].expr}) + .requires_grad({arg_parser_outputs["requires_grad"].expr}) + .pinned_memory({arg_parser_outputs["pin_memory"].expr}); +torch::utils::maybe_initialize_device(options); +""" + ) + lambda_args_exprs["options"] = "options" + + # 3. special case - access scattered TensorOptions fields without packing + # TODO: maybe move to the generator side as it's not related to binding. + if not has_toptions and tensor_options_args_names: + if "dtype" in tensor_options_args_names: + # we're an output-arg variant, check these args against output tensor + if not f.func.is_out_fn(): + raise RuntimeError( + f"{f.func}: dtype in tensor_options_args without output arg, {ps} {ps.arguments}" + ) + if not all(a in tensor_options_args_names for a in ("layout", "device")): + raise RuntimeError( + f"{f.func}: incomplete tensor options for output check" + ) + + inits.append( + f"""\ +check_out_type_matches({arg_parser_outputs["out"].expr}, {arg_parser_outputs["dtype"].expr}, + {arg_parser_outputs["dtype"].is_none_expr}, {arg_parser_outputs["layout"].expr}, + {arg_parser_outputs["device"].expr}, {arg_parser_outputs["device"].is_none_expr}); +""" + ) + # we'll set requires_grad on outgoing tensor + if "requires_grad" not in tensor_options_args_names: + raise RuntimeError( + f'{f.func}: expected "requires_grad" in tensor_options_args absent, but found [{tensor_options_args_names}]' + ) + + return DispatchLambdaArgumentExprs( + exprs=tuple(lambda_args_exprs[a.name] for a in lambda_args), + inits=inits, + ) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/structured.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/structured.py new file mode 100644 index 0000000000000000000000000000000000000000..a0e14e5b69e6421fce5ddd247958876061d72b2c --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/structured.py @@ -0,0 +1,158 @@ +from __future__ import annotations + +from typing_extensions import assert_never + +from torchgen.api import cpp +from torchgen.api.types import ( + ArgName, + ArrayRefCType, + BaseCType, + Binding, + ConstRefCType, + dimnameListT, + intArrayRefT, + iOptTensorListRefT, + iTensorListRefT, + NamedCType, + OptionalCType, + optionalIntArrayRefT, + optionalScalarRefT, + optionalTensorRefT, + scalarT, + tensorT, +) +from torchgen.model import ( + Argument, + BaseTy, + BaseType, + ListType, + NativeFunctionsGroup, + OptionalType, + SelfArgument, + TensorOptionsArguments, + Type, +) + + +# This file describes the translation of JIT schema to the structured functions API. +# This is similar to native API, but a number of historical problems with native +# API have been fixed. + + +# Translation of types occurring in JIT arguments to a C++ argument type. +# NB: For now, mutable doesn't do anything; but it could if we make +# some more nominal types +def argumenttype_type(t: Type, *, mutable: bool, binds: ArgName) -> NamedCType: + # If it's a value type, do the value type translation + # NB: structured kernels ALWAYS have symint off, since they involve actual + # kernels that require real ints. The one exception is the + # CompositeExplicitAutograd and the meta function (which could + # hypothetically be SymInt), but for simplicity we plan for these to just + # be handled in Python + r = cpp.valuetype_type(t, symint=False, binds=binds, mutable=mutable) + if r is not None: + return r + + if isinstance(t, BaseType): + if t.name == BaseTy.Tensor: + return NamedCType(binds, ConstRefCType(BaseCType(tensorT))) + elif t.name == BaseTy.Scalar: + return NamedCType(binds, ConstRefCType(BaseCType(scalarT))) + else: + raise AssertionError(f"base type should have been value type {t}") + elif isinstance(t, OptionalType): + if t.elem == BaseType(BaseTy.Tensor): + return NamedCType(binds, BaseCType(optionalTensorRefT)) + elif t.elem == BaseType(BaseTy.Scalar): + return NamedCType(binds, BaseCType(optionalScalarRefT)) + elif isinstance(t.elem, ListType) and str(t.elem.elem) == "int": + return NamedCType(binds, BaseCType(optionalIntArrayRefT)) + elem = argumenttype_type(t.elem, mutable=mutable, binds=binds) + return NamedCType(binds, OptionalCType(elem.type)) + elif isinstance(t, ListType): + if t.elem == BaseType(BaseTy.Tensor): + return NamedCType(binds, ConstRefCType(BaseCType(iTensorListRefT))) + elif t.elem == OptionalType(BaseType(BaseTy.Tensor)): + return NamedCType(binds, BaseCType(iOptTensorListRefT)) + # TODO: delete these special cases; see torchgen.api.cpp--these + # must be changed in tandem, but there are problems; see + # https://github.com/pytorch/pytorch/pull/51485 + elif str(t.elem) == "int": + return NamedCType(binds, BaseCType(intArrayRefT)) + elif str(t.elem) == "Dimname": + return NamedCType(binds, BaseCType(dimnameListT)) + elem = argumenttype_type(t.elem, mutable=mutable, binds=binds) + return NamedCType(binds, ArrayRefCType(elem.type)) + else: + raise AssertionError(f"unrecognized type {repr(t)}") + + +def argument_type(a: Argument, *, binds: ArgName) -> NamedCType: + return argumenttype_type(a.type, mutable=a.is_write, binds=binds) + + +# returns_type intentionally omitted, because structured kernels never "return"; +# instead, they always indirectly report their outputs (in the case of a meta +# function, by calling set_output; in the case of an impl function, by writing +# directly into the provided out argument). + + +# Structured kernels are never defaulted +def argument(a: Argument | SelfArgument | TensorOptionsArguments) -> list[Binding]: + if isinstance(a, Argument): + return [ + Binding( + nctype=argument_type(a, binds=a.name), + name=a.name, + default=None, + argument=a, + ) + ] + elif isinstance(a, SelfArgument): + return argument(a.argument) + elif isinstance(a, TensorOptionsArguments): + raise AssertionError("structured kernels don't support TensorOptions yet") + else: + assert_never(a) + + +def impl_arguments(g: NativeFunctionsGroup) -> list[Binding]: + args: list[Argument | TensorOptionsArguments | SelfArgument] = [] + + if g.out.precomputed: + # A list of parameters for the impl function with + # certain parameters replaced with precomputed counterparts + # as specified in native_functions.yaml. + non_out_args_replaced: list[ + Argument | TensorOptionsArguments | SelfArgument + ] = [] + for a in g.out.func.arguments.non_out: + if isinstance(a, Argument) and a.name in g.out.precomputed.replace: + # If a is in precompute.replace, append the parameters + # that should replace it onto non_out_args_replaced. + non_out_args_replaced.extend(g.out.precomputed.replace[a.name]) + else: + # If not, push a as it is. + non_out_args_replaced.append(a) + + args.extend(non_out_args_replaced) + # g.out.precomputed.add is the list of parameters that are added + # without replacement after the non out args and just before the out args + args.extend(g.out.precomputed.add) + else: + args.extend(g.out.func.arguments.non_out) + + args.extend(g.out.func.arguments.out) + return [r for arg in args for r in argument(arg)] + + +def meta_arguments(g: NativeFunctionsGroup) -> list[Binding]: + args: list[Argument | TensorOptionsArguments | SelfArgument] = [] + args.extend(g.functional.func.arguments.non_out) + return [r for arg in args for r in argument(arg)] + + +def out_arguments(g: NativeFunctionsGroup) -> list[Binding]: + args: list[Argument | TensorOptionsArguments | SelfArgument] = [] + args.extend(g.out.func.arguments.out) + return [r for arg in args for r in argument(arg)] diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/translate.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/translate.py new file mode 100644 index 0000000000000000000000000000000000000000..f98ce09bbfafb875a619ea01eae7b6f82d76ef71 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/translate.py @@ -0,0 +1,437 @@ +from __future__ import annotations + +from typing import NoReturn, TYPE_CHECKING + +from torchgen.api.types import ( + ArrayRefCType, + BaseCType, + Binding, + boolT, + ConstRefCType, + deviceT, + Expr, + intArrayRefT, + iOptTensorListRefT, + layoutT, + ListCType, + longT, + memoryFormatT, + MutRefCType, + NamedCType, + opmath_t, + OptionalCType, + optionalIntArrayRefT, + optionalScalarRefT, + optionalSymIntArrayRefT, + optionalTensorRefT, + scalar_t, + scalarT, + scalarTypeT, + SpecialArgName, + symIntArrayRefT, + SymIntT, + tensorOptionsT, + tensorT, + VectorCType, +) + + +if TYPE_CHECKING: + from collections.abc import Sequence + + +# This file implements a small program synthesis engine that implements +# conversions between one API to another. +# +# The key data type in this file in NamedCType, short for Named C++ semantic type. A NamedCType +# represents a C++ type, plus semantic information about what it represents. +# For example, consider the argument "bool pin_memory"; its normal C++ type is +# "bool", but its C++ semantic type also keeps track that this represents a +# "pin_memory"; you can't just use a random other boolean in a context where you +# need a "pin_memory"! +# +# The translator takes a list of needed NamedCTypes, and then figures out how +# to construct expressions with these NamedCTypes from the given bindings. Many +# of these expressions are trivial (I need a Tensor other; there's a Tensor +# other scope); others are more nontrivial and may require packing/unpacking. +# Some examples of non-trivial action: +# +# - Need the "dtype" binding? Well, maybe "dtype" isn't available +# in the context, instead, "options" is, and you need to extract +# it from there. (Gather) +# +# - Need the "context" binding? Well, maybe "context" isn't available +# in the context, and you need to construct it from "dtype", "device", +# etc. (Scatter) +# +# - Need the "memory_format" binding? Well, actually, it's available +# from both "memory_format" and "options", so you had better make sure +# they are consistent. (Join) + +options_ctype = NamedCType("options", ConstRefCType(BaseCType(tensorOptionsT))) + +out_tensor_ctype = NamedCType("out", ConstRefCType(BaseCType(tensorT))) + +longVec_ctype = VectorCType(BaseCType(longT)) +longSymVec_ctype = VectorCType(BaseCType(SymIntT)) +optionalLongVec_ctype = OptionalCType(VectorCType(BaseCType(longT))) +optionalScalar_ctype = OptionalCType(BaseCType(scalarT)) +optionalTensor_ctype = OptionalCType(BaseCType(tensorT)) + + +class UnsatError(RuntimeError): + pass + + +# Given a set of in-scope bindings and a set of target bindings, synthesize +# a list of expressions that uses only the in-scope bindings (bindings) that +# have all of the types of goals. You may want to use this function if +# you're generating code for a function like: +# +# void f({args}) { +# g({exprs}); // g is a different API +# } +# +# and you need to generate "exprs". +# +# Typically, a list of Bindings is convenient to get (you usually call something +# like arguments() to get them); but technically you only need less information: +# for 'bindings' an (un-ordered) list of Exprs is sufficient; similarly, for +# 'goals', an (ordered) list of NamedCType goals is sufficient. If you are doing +# something more complicated, e.g., tracking the set of bindings in a context, +# you may find using these smaller types more convenient. +def translate( + bindings: Sequence[Expr | Binding], + goals: Sequence[NamedCType | Binding], + *, + method: bool = False, + allow_expensive_conversions: bool = False, +) -> list[Expr]: + binding_exprs: list[Expr] = [] + for b in bindings: + if isinstance(b, Binding): + binding_exprs.append( + Expr( + expr=b.name, + type=b.nctype, + ) + ) + else: + binding_exprs.append(b) + + goal_ctypes: list[NamedCType] = [] + for g in goals: + if isinstance(g, Binding): + goal_ctypes.append(g.nctype) + else: + goal_ctypes.append(g) + + # Add all the bindings to the context + ctx: dict[NamedCType, str] = {} + for b in binding_exprs: + ctx[b.type] = b.expr + + # While we're at it, do some simple forward inference, looking through + # constructors. + # + # NB: When should you do forward inference versus backward inference? + # The general idea: + # + # - Backward inference WHEN the goal gets smaller + # - Forward inference WHEN the hypothesis gets smaller + # + # This helps ensure termination: backward inference starts with a goal + # and tries to make it simpler and simpler until it's trivial; if the + # goal can grow in size, we blow up to a really huge goal size. + # Similarly, with forward inference we take hypotheses and decompose + # them into simpler hypotheses; if hypotheses could expand in size, + # we also have potential nontermination. (In the code below, forward + # inference is only ever carried out at a single step, but you could + # imagine repeated application of forward inference being profitable.) + # + # A good starting point in the literature for exploring more about proof + # search are these lecture notes + # https://www.cs.cmu.edu/~fp/courses/oregon-m10/04-focusing.pdf + # + # TODO: My kingdom for a pattern matcher + # https://www.python.org/dev/peps/pep-0634/ + # + # TODO: This could get us in recomputation trouble if b.expr is nontrivial. + # Fix this by implementing some sort of sharing so that if multiple + # goals share the same expression, we only compute it once. This seems + # to matter in practice as compiler is often unwilling to CSE nontrivial + # expressions like scalar.to() + t = b.type + if ( + isinstance(t, ConstRefCType) + and isinstance(t.elem, OptionalCType) + and isinstance(t.elem.elem, BaseCType) + and str(t.elem.elem.type) == "at::Tensor" + ): + ctx[NamedCType(t.elem.elem.name, ConstRefCType(BaseCType(tensorT)))] = ( + f"({b.expr}.has_value() ? *{b.expr} : at::Tensor())" + ) + + if t.type == ConstRefCType(OptionalCType(BaseCType(tensorT))): + ctx[NamedCType(t.name, BaseCType(optionalTensorRefT))] = ( + f"(({b.expr}.has_value() && (*{b.expr}).defined()) ? at::OptionalTensorRef(*{b.expr}) : at::OptionalTensorRef())" + ) + + if t.type == ConstRefCType(BaseCType(scalarT)): + ctx[NamedCType(t.name, BaseCType(opmath_t))] = f"({b.expr}).to()" + + if t.type == ConstRefCType(OptionalCType(BaseCType(scalarT))): + ctx[NamedCType(t.name, BaseCType(optionalScalarRefT))] = ( + f"({b.expr}.has_value() ? at::OptionalScalarRef(&({b.expr}.value())) : at::OptionalScalarRef())" + ) + + if t.type == BaseCType(scalar_t): + ctx[NamedCType(t.name, BaseCType(opmath_t))] = ( + f"static_cast({b.expr})" + ) + + # [Note: IOptTensorListRef] + if t.type == ConstRefCType(ListCType(OptionalCType(BaseCType(tensorT)))): + ctx[NamedCType(t.name, BaseCType(iOptTensorListRefT))] = ( + f"at::IOptTensorListRef({b.expr})" + ) + + # Add implicit bindings if the generated code is inside a Tensor method + if method: + ctx[NamedCType("self", MutRefCType(BaseCType(tensorT)))] = ( + "const_cast(*this)" + ) + ctx[NamedCType("self", ConstRefCType(BaseCType(tensorT)))] = ( + "const_cast(*this)" + ) + # This is better! Byte-for-byte compat + # ctx[NamedCType("self", ConstRefCType(BaseCType(tensorT)))] = "*this" + + def unsat(goal: NamedCType) -> NoReturn: + ctx_desc = "\n".join( + f" {t.cpp_type()} {t.name}; // {e}" for t, e in ctx.items() + ) + raise UnsatError( + f""" +Failed to synthesize the expression "{goal.cpp_type()} {goal.name}". +When I failed, the following bindings were available in the context: + +{ctx_desc} + +This probably means there is a missing rule in the rules of torchgen.api.translate. +Check this module for more information. +""" + ) + + # A shitty backtracking search implementation. It's shitty because it + # does backtracking via stack (bad idea!) and for the most part tries to + # avoid backtracking. In particular, if + # direct=True, we won't try to do any fancy synthesis, just trivial + # conversions (e.g., "T a" is OK for "const T& a"). So all of the + # existing rules in this function simply try to solve immediately, + # and bail if things don't work out. + def solve(goal: NamedCType, *, direct: bool) -> str: + def direct_solve(goal: NamedCType) -> str: + return solve(goal, direct=True) + + if goal in ctx: + # Trivial + return ctx[goal] + + # const & is satisfied with mutable & + if isinstance(goal.type, ConstRefCType): + try: + # WARNING: not strictly decreasing; be careful not + # to add a direct conversion that goes satisfies + # mutable& with const& + return solve( + NamedCType(goal.name, MutRefCType(goal.type.elem)), direct=direct + ) + except UnsatError: + pass + + # mutable & is satisfied with value + if isinstance(goal.type, MutRefCType): + try: + return solve(NamedCType(goal.name, goal.type.elem), direct=direct) + except UnsatError: + pass + + # TODO: These are referentially equal, shouldn't have to do this; + # ensuring we don't use type synonym IntArrayRef in codegen would + # help + if goal.type == ArrayRefCType(BaseCType(longT)): + return solve(NamedCType(goal.name, BaseCType(intArrayRefT)), direct=direct) + + if direct: + unsat(goal) + + # For now, all of these rules are mutually exclusive. + if goal == NamedCType("memory_format", OptionalCType(BaseCType(memoryFormatT))): + memory_format = direct_solve( + NamedCType( + SpecialArgName.possibly_redundant_memory_format, + OptionalCType(BaseCType(memoryFormatT)), + ) + ) + # No need to join "memory_format" and "options" if the target API takes "options" directly. + # Otherwise it will cause the redundant memory_format error. + if options_ctype in goal_ctypes: + return memory_format + try: + options = direct_solve(options_ctype) + return f"c10::impl::check_tensor_options_and_extract_memory_format({options}, {memory_format})" + except UnsatError: + return memory_format + elif goal == NamedCType("options", BaseCType(tensorOptionsT)): + dtype = direct_solve( + NamedCType("dtype", OptionalCType(BaseCType(scalarTypeT))) + ) + pin_memory = direct_solve( + NamedCType("pin_memory", OptionalCType(BaseCType(boolT))) + ) + device = direct_solve( + NamedCType("device", OptionalCType(BaseCType(deviceT))) + ) + layout = direct_solve( + NamedCType("layout", OptionalCType(BaseCType(layoutT))) + ) + return f"TensorOptions().dtype({dtype}).layout({layout}).device({device}).pinned_memory({pin_memory})" + + elif goal == NamedCType("dtype", OptionalCType(BaseCType(scalarTypeT))): + try: + options = direct_solve(options_ctype) + return f"c10::optTypeMetaToScalarType({options}.dtype_opt())" + except UnsatError: + out_tensor = direct_solve(out_tensor_ctype) + return f"{out_tensor}.scalar_type()" + + elif goal == NamedCType("layout", OptionalCType(BaseCType(layoutT))): + try: + options = direct_solve(options_ctype) + return f"{options}.layout_opt()" + except UnsatError: + out_tensor = direct_solve(out_tensor_ctype) + return f"{out_tensor}.layout()" + + elif goal == NamedCType("device", OptionalCType(BaseCType(deviceT))): + try: + options = direct_solve(options_ctype) + return f"{options}.device_opt()" + except UnsatError: + out_tensor = direct_solve(out_tensor_ctype) + return f"{out_tensor}.device()" + + elif goal == NamedCType("pin_memory", OptionalCType(BaseCType(boolT))): + try: + options = direct_solve(options_ctype) + return f"{options}.pinned_memory_opt()" + except UnsatError: + # If we're calling a factory op from its out= variant, + # We don't actually care about the value of pin_memory. + out_tensor = direct_solve(out_tensor_ctype) + return "::std::nullopt" + + # We can always do translations from value types to reference types, like vector -> IntArrayRef + elif goal.type == BaseCType(intArrayRefT): + try: + return direct_solve(NamedCType(goal.name, longVec_ctype)) + except UnsatError: + # We can also go SymIntArrayRef -> IntArrayRef + symIntArrayRef_type = direct_solve( + NamedCType(goal.name, BaseCType(symIntArrayRefT)) + ) + return f"C10_AS_INTARRAYREF_SLOW({symIntArrayRef_type})" + elif goal.type == BaseCType(symIntArrayRefT): + try: + r = direct_solve(NamedCType(goal.name, BaseCType(intArrayRefT))) + return f"c10::fromIntArrayRefSlow({r})" + except UnsatError: + return direct_solve(NamedCType(goal.name, longSymVec_ctype)) + elif goal.type == BaseCType(SymIntT): + return direct_solve(NamedCType(goal.name, BaseCType(longT))) + elif goal.type == OptionalCType(BaseCType(SymIntT)): + argname = direct_solve( + NamedCType(goal.name, OptionalCType(BaseCType(longT))) + ) + return f"{argname}.has_value() ? ::std::make_optional(c10::SymInt(*{argname})) : ::std::nullopt" + elif goal.type == BaseCType(longT): + symInt_type = direct_solve(NamedCType(goal.name, BaseCType(SymIntT))) + return f"{symInt_type}.guard_int(__FILE__, __LINE__)" + elif goal.type == OptionalCType(BaseCType(longT)): + argname = direct_solve( + NamedCType(goal.name, OptionalCType(BaseCType(SymIntT))) + ) + return f"{argname}.has_value() ? ::std::make_optional({argname}->guard_int(__FILE__, __LINE__)) : ::std::nullopt" + elif goal.type == BaseCType(optionalIntArrayRefT): + try: + return direct_solve(NamedCType(goal.name, optionalLongVec_ctype)) + except UnsatError: + argname = direct_solve( + NamedCType(goal.name, BaseCType(optionalSymIntArrayRefT)) + ) + return f"{argname}.has_value() ? ::std::make_optional(C10_AS_INTARRAYREF_SLOW(*{argname})) : ::std::nullopt" + elif goal.type == BaseCType(optionalSymIntArrayRefT): + # TODO: You might also want to solve this from longSymVec_ctype or + # an optional version of it + argname = direct_solve( + NamedCType(goal.name, BaseCType(optionalIntArrayRefT)) + ) + return f"{argname}.has_value() ? ::std::make_optional(c10::fromIntArrayRefSlow(*{argname})) : ::std::nullopt" + elif goal.type == BaseCType(optionalScalarRefT): + return direct_solve(NamedCType(goal.name, optionalScalar_ctype)) + elif goal.type == BaseCType(optionalTensorRefT): + return direct_solve(NamedCType(goal.name, optionalTensor_ctype)) + + # Note [translation from C++ reference to value types] + # The below cases are all for when we have an argument with a reference type, + # and a corresponding goal with a value type. + # These are needed when we populate the inputs to a lambda capture and we need + # to guarantee the lifetime of each captured argument. + # We guard it with an explicit kwarg because converting to a value type is expensive + # (O(n)) to convert from IntArrayRef to vector), + # so the caller of translate() should be explicit that they need it. + if allow_expensive_conversions: + if goal.type == VectorCType(BaseCType(longT)): + intArrayRef_ctype = NamedCType(goal.name, BaseCType(intArrayRefT)) + argname = direct_solve(intArrayRef_ctype) + return f"{argname}.vec()" + if goal.type == VectorCType(BaseCType(SymIntT)): + symIntArrayRef_ctype = NamedCType(goal.name, BaseCType(symIntArrayRefT)) + argname = direct_solve(symIntArrayRef_ctype) + return f"{argname}.vec()" + elif goal.type == OptionalCType(VectorCType(BaseCType(longT))): + optionalIntArrayRef_ctype = NamedCType( + goal.name, BaseCType(optionalIntArrayRefT) + ) + argname = direct_solve(optionalIntArrayRef_ctype) + return f"{argname}.has_value() ? ::std::make_optional({argname}->vec()) : ::std::nullopt" + elif goal.type == OptionalCType(BaseCType(scalarT)): + optionalScalarRef_ctype = NamedCType( + goal.name, BaseCType(optionalScalarRefT) + ) + argname = direct_solve(optionalScalarRef_ctype) + return f"{argname}.has_value() ? ::std::make_optional({argname}) : ::std::nullopt" + elif goal.type == OptionalCType(BaseCType(scalarT)): + optionalTensorRef_ctype = NamedCType( + goal.name, BaseCType(optionalTensorRefT) + ) + argname = direct_solve(optionalTensorRef_ctype) + return f"{argname}.has_value() ? ::std::make_optional({argname}) : ::std::nullopt" + # Technically, we also need to handle cases of C++ containers holding reference types. + # But there currently aren't any ops that require lambda capture codegen + # With arguments like ::std::vector. + # If that changes, we'll have to add the translation here. + + # We allow const casting on tensors, since const-correctness is a bit broken for at::Tensor. + # We could probably generalize this to non-tensor types too. + if goal.type == MutRefCType(BaseCType(tensorT)): + const_ref_tensor_ctype = NamedCType( + goal.name, ConstRefCType(BaseCType(tensorT)) + ) + argname = direct_solve(const_ref_tensor_ctype) + return f"const_cast({argname})" + + unsat(goal) + + return [Expr(solve(g, direct=False), g) for g in goal_ctypes] diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/types/__init__.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/types/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..4e98bb8df493f2375b514e6c6aeb897cebe8ec7d --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/types/__init__.py @@ -0,0 +1,5 @@ +from torchgen.api.types.types import * +from torchgen.api.types.types_base import * + + +from torchgen.api.types.signatures import * # usort: skip diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/types/signatures.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/types/signatures.py new file mode 100644 index 0000000000000000000000000000000000000000..2eb6e926fc3a327287b73793e223b6d6f0b8d39c --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/types/signatures.py @@ -0,0 +1,358 @@ +from __future__ import annotations + +from dataclasses import dataclass +from typing import TYPE_CHECKING + +from torchgen.api.types.types_base import Binding, CType, Expr + + +if TYPE_CHECKING: + from collections.abc import Iterator, Sequence + + from torchgen.model import ( + BackendIndex, + FunctionSchema, + NativeFunction, + NativeFunctionsGroup, + NativeFunctionsViewGroup, + ) + + +@dataclass(frozen=True) +class CppSignature: + """ + A CppSignature represents a single overload in the C++ API. For + any given function schema, there may be multiple CppSignatures + corresponding to it, based on how we desugar to C++. See also + CppSignatureGroup. + """ + + # The schema this signature is derived from + func: FunctionSchema + + # Is this a C++ signature for a method, i.e. Tensor::my_op(...)? + method: bool + + # Is this a faithful C++ signature (i.e. following the JIT schema) or a convenience API + # (i.e. with a potential TensorOptions argument and out arguments in the front) + faithful: bool + + # Is this a symint C++ signature. For BC reasons, functions that take + # SymInts still present as int64_t in C++, and the SymInt variant is + # offered at a different overload name + # + # NB: If a function RETURNS a SymInt, this is ALWAYS false + symint: bool + + # The set of C++ arguments which should not have defaults applied to them + cpp_no_default_args: set[str] + + # Is this a fallback C++ binding? Fallback bindings are enabled by + # manual_cpp_binding: True and are alternate, non-public API that + # lets manual C++ binding implementers access the binding that would + # have been automatically generated + fallback_binding: bool = False + + # Return the unpacked argument structure of this signature, + # discarding information about which arguments are semantically + # related to each other. + def arguments(self) -> Sequence[Binding]: + return cpp.arguments( + self.func.arguments, + faithful=self.faithful, + symint=self.symint, + method=self.method, + cpp_no_default_args=self.cpp_no_default_args, + ) + + def name(self, *, suppress_symint_suffix: bool = False) -> str: + n = cpp.name( + self.func, + faithful_name_for_out_overloads=self.faithful, + symint_overload=False if suppress_symint_suffix else self.symint, + ) + if self.fallback_binding: + n = f"__dispatch_{n}" + return n + + # Render the C++ declaration for this signature + def decl( + self, + *, + name: str | None = None, + prefix: str = "", + is_redispatching_fn: bool = False, + suppress_symint_suffix: bool = False, + ) -> str: + returns_type = cpp.returns_type( + self.func.returns, symint=self.symint + ).cpp_type() + cpp_args = [a.decl() for a in self.arguments()] + if is_redispatching_fn: + cpp_args = ["c10::DispatchKeySet dispatchKeySet"] + cpp_args + cpp_args_str = ", ".join(cpp_args) + if name is None: + name = prefix + self.name(suppress_symint_suffix=suppress_symint_suffix) + return f"{returns_type} {name}({cpp_args_str})" + + # Render the C++ definition for this signature, not including + # the body (with curly braces) + def defn( + self, + *, + name: str | None = None, + prefix: str = "", + is_redispatching_fn: bool = False, + ) -> str: + returns_type = cpp.returns_type( + self.func.returns, symint=self.symint + ).cpp_type() + cpp_args = [a.defn() for a in self.arguments()] + if is_redispatching_fn: + cpp_args = ["c10::DispatchKeySet dispatchKeySet"] + cpp_args + cpp_args_str = ", ".join(cpp_args) + if name is None: + name = prefix + self.name() + return f"{returns_type} {name}({cpp_args_str})" + + def ptr_type(self) -> str: + args_types_str = ", ".join(a.type for a in self.arguments()) + return f"{cpp.returns_type(self.func.returns, symint=self.symint).cpp_type()} (*)({args_types_str})" + + # Return the C++ function type, e.g., something like int(bool) + def type(self) -> str: + args_types_str = ", ".join(a.type for a in self.arguments()) + return f"{cpp.returns_type(self.func.returns, symint=self.symint).cpp_type()} ({args_types_str})" + + +# Represents group of all CppSignatures associated with a +# FunctionSchema. Right now, that's the regular, user-visible +# signature, as well as a "faithful" signature which doesn't +# have grouping. +@dataclass(frozen=True) +class CppSignatureGroup: + func: FunctionSchema + signature: CppSignature + faithful_signature: CppSignature | None + symint_signature: CppSignature | None + symint_faithful_signature: CppSignature | None + + def most_faithful_signature(self) -> CppSignature: + if self.faithful_signature: + return self.faithful_signature + else: + return self.signature + + def signatures(self, *, symint: bool = True) -> Iterator[CppSignature]: + yield self.signature + if self.faithful_signature: + yield self.faithful_signature + if symint: + if self.symint_signature: + yield self.symint_signature + if self.symint_faithful_signature: + yield self.symint_faithful_signature + + @staticmethod + def from_native_function( + f: NativeFunction, *, method: bool, fallback_binding: bool = False + ) -> CppSignatureGroup: + func = f.func + + def make_sig(*, faithful: bool, symint: bool) -> CppSignature: + return CppSignature( + func=func, + faithful=faithful, + symint=symint, + method=method, + fallback_binding=fallback_binding, + cpp_no_default_args=f.cpp_no_default_args, + ) + + def make_sigs(*, symint: bool) -> tuple[CppSignature, CppSignature | None]: + faithful_signature: CppSignature | None = None + if func.arguments.tensor_options is not None or len(func.arguments.out) > 0: + faithful_signature = make_sig(faithful=True, symint=symint) + signature = make_sig(faithful=False, symint=symint) + return signature, faithful_signature + + signature, faithful_signature = make_sigs(symint=False) + symint_signature: CppSignature | None = None + symint_faithful_signature: CppSignature | None = None + if func.has_symint(): + symint_signature, symint_faithful_signature = make_sigs(symint=True) + + return CppSignatureGroup( + func=func, + signature=signature, + faithful_signature=faithful_signature, + symint_signature=symint_signature, + symint_faithful_signature=symint_faithful_signature, + ) + + +@dataclass(frozen=True) +class DispatcherSignature: + # The schema this signature is derived from + func: FunctionSchema + + # Allows you to prepend an arbitrary prefix to the signature name. + # This is useful for parts of the codegen that generate wrappers around kernels, + # and need to avoid naming collisions. + prefix: str = "" + + symint: bool = True + + def arguments(self) -> list[Binding]: + return dispatcher.arguments(self.func, symint=self.symint) + + def name(self) -> str: + return self.prefix + dispatcher.name(self.func) + + def decl(self, name: str | None = None) -> str: + args_str = ", ".join(a.decl() for a in self.arguments()) + if name is None: + name = self.name() + return f"{self.returns_type().cpp_type()} {name}({args_str})" + + def defn( + self, name: str | None = None, *, is_redispatching_fn: bool = False + ) -> str: + args = [a.defn() for a in self.arguments()] + if is_redispatching_fn: + args = ["c10::DispatchKeySet dispatchKeySet"] + args + args_str = ", ".join(args) + if name is None: + name = self.name() + return f"{self.returns_type().cpp_type()} {name}({args_str})" + + def exprs(self) -> list[Expr]: + return [Expr(a.name, a.nctype) for a in self.arguments()] + + def returns_type(self) -> CType: + return dispatcher.returns_type(self.func.returns, symint=self.symint) + + def ptr_type(self) -> str: + dispatcher_args_types_str = ", ".join(a.type for a in self.arguments()) + return f"{self.returns_type().cpp_type()} (*)({dispatcher_args_types_str})" + + # Return the C++ function type, e.g., something like int(bool) + def type(self) -> str: + dispatcher_args_types_str = ", ".join(a.type for a in self.arguments()) + return f"{self.returns_type().cpp_type()} ({dispatcher_args_types_str})" + + @staticmethod + def from_schema( + func: FunctionSchema, *, prefix: str = "", symint: bool = True + ) -> DispatcherSignature: + return DispatcherSignature(func, prefix, symint) + + +@dataclass(frozen=True) +class NativeSignature: + # The schema this signature is derived from + func: FunctionSchema + + symint: bool + + prefix: str = "" + + def name(self) -> str: + return self.prefix + native.name(self.func) + + def decl(self, name: str | None = None) -> str: + args_str = ", ".join(a.decl() for a in self.arguments()) + if name is None: + name = self.name() + return f"{native.returns_type(self.func.returns, symint=self.symint).cpp_type()} {name}({args_str})" + + def defn(self, name: str | None = None) -> str: + args_str = ", ".join(a.defn() for a in self.arguments()) + if name is None: + name = self.name() + return f"{native.returns_type(self.func.returns, symint=self.symint).cpp_type()} {name}({args_str})" + + def ptr_type(self) -> str: + # don't include defaults in type signature! + args_str = ", ".join(a.defn() for a in self.arguments()) + return f"{native.returns_type(self.func.returns, symint=self.symint).cpp_type()} (*)({args_str})" + + def arguments(self) -> list[Binding]: + return native.arguments(self.func, symint=self.symint) + + def returns_type(self) -> CType: + return native.returns_type(self.func.returns, symint=self.symint) + + def dispatcher_exprs(self) -> list[Expr]: + return translate.translate( + self.arguments(), dispatcher.arguments(self.func), method=False + ) + + +@dataclass(frozen=True) +class ViewInverseSignature: + g: NativeFunctionsViewGroup + + def name(self) -> str: + return functionalization.reverse_name(self.g.view, include_namespace=False) + + def decl(self) -> str: + return_type = functionalization.returns_type(self.g.view.func) + decls = [ + a.decl() + for a in functionalization.op_arguments(self.g.view.func, is_reverse=True) + ] + return f"static {return_type.cpp_type()} {self.name()}({', '.join(decls)});" + + +@dataclass(frozen=True) +class StructuredImplSignature: + g: NativeFunctionsGroup + name: str + + def defn(self, name: str | None = None) -> str: + args_str = ", ".join(a.defn() for a in self.arguments()) + return f"TORCH_IMPL_FUNC({self.name})({args_str})" + + def arguments(self) -> list[Binding]: + return structured.impl_arguments(self.g) + + +# Helper functions + + +def kernel_signature( + f: NativeFunction, backend_index: BackendIndex, *, prefix: str = "" +) -> NativeSignature | DispatcherSignature: + # Note [External Backends Follow Dispatcher API] + # Kernel signatures for in-tree backends follow the "native" API, + # while kernels for out-of-tree backends follow the dispatcher API. + # See the comments in `native.py` for details, but historically there have been + # some small differences in schema convention between them and the Dispatcher API. + # Any differences that require translating between the two will results in a runtime cost, + # so we'd like to keep the differences as small as possible. + # With external backends, we'd like to enforce that they write their kernels with schemas + # that match the Dispatcher API directly, if they can. + meta = backend_index.get_kernel(f) + symint = meta is not None and meta.supports_symint() + if symint: + if not f.func.has_symint(): + raise AssertionError( + f"attempted to define symint kernel for {backend_index.dispatch_key} " + "without SymInt in schema" + ) + if backend_index.external: + return DispatcherSignature.from_schema(f.func, prefix=prefix, symint=symint) + else: + return NativeSignature(f.func, prefix=prefix, symint=symint) + + +# Functions only, no types +from torchgen.api import ( + cpp, + dispatcher, + functionalization, + native, + structured, + translate, +) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/types/types.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/types/types.py new file mode 100644 index 0000000000000000000000000000000000000000..41c05653fffdf3d04fc7078e7df142124ed96e00 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/types/types.py @@ -0,0 +1,183 @@ +""" +Where should I add a new type? `types_base.py` vs `types.py` + +This file defines data model classes for torchgen typing system, as well as some base types such as int32_t. + +`types.py` defines ATen Tensor type and some c10 types, along with signatures that use these types. + +The difference between these two files, is `types_base.py` should be implementation-agnostic, meaning it shouldn't +contain any type definition that is tight to a specific C++ library (e.g., ATen), so that it can be easily reused +if we want to generate code for another C++ library. + +Add new types to `types.py` if these types are ATen/c10 related. +Add new types to `types_base.py` if they are basic and not attached to ATen/c10. +""" + +from __future__ import annotations + +from dataclasses import dataclass + +from torchgen.api.types.types_base import ( + BaseCppType, + BaseCType, + boolT, + byteT, + charT, + CType, + doubleT, + floatT, + int32T, + longT, + shortT, +) +from torchgen.model import BaseTy, ScalarType + + +TENSOR_LIST_LIKE_CTYPES = [ + "at::TensorList", + "const c10::List<::std::optional> &", + "const at::ITensorListRef &", +] + + +halfT = BaseCppType("at", "Half") +complexHalfT = BaseCppType( + "c10", "complex" +) # stuffing template param here is an abuse +complexFloatT = BaseCppType("c10", "complex") +complexDoubleT = BaseCppType("c10", "complex") +bfloat16T = BaseCppType("at", "BFloat16") +float8_e5m2T = BaseCppType("at", "Float8_e5m2") +float8_e5m2fnuzT = BaseCppType("at", "Float8_e5m2fnuz") +float8_e4m3fnT = BaseCppType("at", "Float8_e4m3fn") +float8_e4m3fnuzT = BaseCppType("at", "Float8_e4m3fnuz") +float8_e8m0fnuT = BaseCppType("at", "Float8_e8m0fnu") +stringT = BaseCppType("c10", "string_view") +generatorT = BaseCppType("at", "Generator") +scalarTypeT = BaseCppType("at", "ScalarType") +tensorT = BaseCppType("at", "Tensor") +optionalTensorRefT = BaseCppType("at", "OptionalTensorRef") +tensorListT = BaseCppType("at", "TensorList") +iTensorListRefT = BaseCppType("at", "ITensorListRef") +iOptTensorListRefT = BaseCppType("at", "IOptTensorListRef") +dimnameT = BaseCppType("at", "Dimname") +dimnameListT = BaseCppType("at", "DimnameList") +dimVectorT = BaseCppType("at", "DimVector") +layoutT = BaseCppType("at", "Layout") +deviceT = BaseCppType("at", "Device") +deviceIndexT = BaseCppType("at", "DeviceIndex") +scalarT = BaseCppType("at", "Scalar") +optionalScalarRefT = BaseCppType("at", "OptionalScalarRef") +memoryFormatT = BaseCppType("at", "MemoryFormat") +qschemeT = BaseCppType("at", "QScheme") +storageT = BaseCppType("at", "Storage") +streamT = BaseCppType("at", "Stream") +intArrayRefT = BaseCppType("at", "IntArrayRef") +optionalIntArrayRefT = BaseCppType("at", "OptionalIntArrayRef") +optionalSymIntArrayRefT = BaseCppType("at", "OptionalSymIntArrayRef") +tensorOptionsT = BaseCppType("at", "TensorOptions") +typeAndSizeT = BaseCppType("torch::autograd::generated", "TypeAndSize") +tensorGeometryT = BaseCppType("at", "TensorGeometry") +SymIntT = BaseCppType("c10", "SymInt") +SymBoolT = BaseCppType("c10", "SymBool") +symIntArrayRefT = BaseCppType("c10", "SymIntArrayRef") + +# Types representing template parameters. Technically, we probably shouldn't +# represent them this way in codegen, but it was pretty convenient. +scalar_t = BaseCppType("", "scalar_t") +opmath_t = BaseCppType("", "opmath_t") + +ScalarTypeToCppMapping: dict[ScalarType, BaseCppType] = { + ScalarType.Byte: byteT, + ScalarType.Char: charT, + ScalarType.Short: shortT, + ScalarType.Int: int32T, + ScalarType.Long: longT, + ScalarType.Half: halfT, + ScalarType.Float: floatT, + ScalarType.Double: doubleT, + ScalarType.ComplexHalf: complexHalfT, + ScalarType.ComplexFloat: complexFloatT, + ScalarType.ComplexDouble: complexDoubleT, + ScalarType.Bool: boolT, + ScalarType.Float8_e5m2: float8_e5m2T, + ScalarType.Float8_e5m2fnuz: float8_e5m2fnuzT, + ScalarType.Float8_e4m3fn: float8_e4m3fnT, + ScalarType.Float8_e4m3fnuz: float8_e4m3fnuzT, + ScalarType.Float8_e8m0fnu: float8_e8m0fnuT, +} + +BaseTypeToCppMapping: dict[BaseTy, BaseCppType] = { + BaseTy.int: longT, + BaseTy.float: doubleT, + BaseTy.bool: boolT, + BaseTy.str: stringT, + BaseTy.Generator: generatorT, + BaseTy.ScalarType: scalarTypeT, + BaseTy.Tensor: tensorT, + BaseTy.Dimname: dimnameT, + BaseTy.DimVector: dimVectorT, + BaseTy.Layout: layoutT, + BaseTy.Device: deviceT, + BaseTy.DeviceIndex: deviceIndexT, + BaseTy.Scalar: scalarT, + BaseTy.MemoryFormat: memoryFormatT, + BaseTy.QScheme: qschemeT, + BaseTy.Storage: storageT, + BaseTy.Stream: streamT, + BaseTy.SymInt: SymIntT, + BaseTy.SymBool: SymBoolT, +} + +# CTypes encode C++ type structure as needed for translation. + + +@dataclass(frozen=True) +class OptionalCType(CType): + elem: CType + + def cpp_type(self, *, strip_ref: bool = False) -> str: + # Do not pass `strip_ref` recursively. + return f"::std::optional<{self.elem.cpp_type()}>" + + def remove_const_ref(self) -> CType: + return OptionalCType(self.elem.remove_const_ref()) + + +@dataclass(frozen=True) +class ListCType(CType): + elem: CType + + def cpp_type(self, *, strip_ref: bool = False) -> str: + # Do not pass `strip_ref` recursively. + return f"c10::List<{self.elem.cpp_type()}>" + + def remove_const_ref(self) -> CType: + return ListCType(self.elem.remove_const_ref()) + + +@dataclass(frozen=True) +class ArrayRefCType(CType): + elem: CType + + def cpp_type(self, *, strip_ref: bool = False) -> str: + # Do not pass `strip_ref` recursively. + return f"at::ArrayRef<{self.elem.cpp_type()}>" + + def remove_const_ref(self) -> CType: + return ArrayRefCType(self.elem.remove_const_ref()) + + +@dataclass(frozen=True) +class VectorizedCType(CType): + # This template is explicitly specialized, so the only valid + # elems are those we have specializations for (e.g., float, double, ...) + # scalar_t is also a common argument here (when we are codegen in + # a templated context) + elem: BaseCType + + def cpp_type(self, *, strip_ref: bool = False) -> str: + return f"at::vec::Vectorized<{self.elem.cpp_type()}>" + + def remove_const_ref(self) -> CType: + return self diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/types/types_base.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/types/types_base.py new file mode 100644 index 0000000000000000000000000000000000000000..322ae1c39c1ede4a5080b93dbf01ed30589b427c --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/types/types_base.py @@ -0,0 +1,238 @@ +""" +Where should I add a new type? `types_base.py` vs `types.py` + +This file defines data model classes for torchgen typing system, as well as some base types such as int32_t. + +`types.py` defines ATen Tensor type and some c10 types, along with signatures that use these types. + +The difference between these two files, is `types_base.py` should be implementation-agnostic, meaning it shouldn't +contain any type definition that is tight to a specific C++ library (e.g., ATen), so that it can be easily reused +if we want to generate code for another C++ library. + +Add new types to `types.py` if these types are ATen/c10 related. +Add new types to `types_base.py` if they are basic and not attached to ATen/c10. +""" + +from __future__ import annotations + +from abc import ABC, abstractmethod +from dataclasses import dataclass +from enum import auto, Enum +from typing import TYPE_CHECKING + + +if TYPE_CHECKING: + from torchgen.model import Argument, SelfArgument, TensorOptionsArguments + + +# An ArgName is just the str name of the argument in schema; +# but in some special circumstances, we may add a little extra +# context. The Enum SpecialArgName covers all of these cases; +# grep for their construction sites to see when they can occur. + + +class SpecialArgName(Enum): + possibly_redundant_memory_format = auto() + + +ArgName = str | SpecialArgName + + +# This class shouldn't be created directly; instead, use/create one of the singletons below. +@dataclass(frozen=True) +class BaseCppType: + ns: str | None + name: str + + def __str__(self) -> str: + if self.ns is None or self.ns == "": + return self.name + return f"{self.ns}::{self.name}" + + +# The set of all non-templated, valid, fully-qualified names of C++ types that are used in the codegen. +# Templated types get their own dataclass, mainly to make namespace parsing easier. +byteT = BaseCppType("", "uint8_t") +charT = BaseCppType("", "int8_t") +shortT = BaseCppType("", "int16_t") +# It would be more symmetric for this to be called intT, but it easy to mix +# this up with JIT int (which is int64_t in C++), so we intentionally don't +# define intT to make it obvious when you've stuffed it up +int32T = BaseCppType("", "int32_t") +longT = BaseCppType("", "int64_t") +doubleT = BaseCppType("", "double") +floatT = BaseCppType("", "float") +boolT = BaseCppType("", "bool") +voidT = BaseCppType("", "void") + + +class CType(ABC): + @abstractmethod + def cpp_type(self, *, strip_ref: bool = False) -> str: + raise NotImplementedError + + @abstractmethod + def remove_const_ref(self) -> CType: + return self + + +@dataclass(frozen=True) +class BaseCType(CType): + type: BaseCppType + + def cpp_type(self, *, strip_ref: bool = False) -> str: + return str(self.type) + + def remove_const_ref(self) -> CType: + return self + + +@dataclass(frozen=True) +class ConstRefCType(CType): + elem: CType + + def cpp_type(self, *, strip_ref: bool = False) -> str: + if strip_ref: + return self.elem.cpp_type(strip_ref=strip_ref) + return f"const {self.elem.cpp_type()} &" + + def remove_const_ref(self) -> CType: + return self.elem.remove_const_ref() + + +@dataclass(frozen=True) +class VectorCType(CType): + elem: CType + + def cpp_type(self, *, strip_ref: bool = False) -> str: + # Do not pass `strip_ref` recursively. + return f"::std::vector<{self.elem.cpp_type()}>" + + def remove_const_ref(self) -> CType: + return VectorCType(self.elem.remove_const_ref()) + + +@dataclass(frozen=True) +class ArrayCType(CType): + elem: CType + size: int + + def cpp_type(self, *, strip_ref: bool = False) -> str: + # Do not pass `strip_ref` recursively. + return f"::std::array<{self.elem.cpp_type()},{self.size}>" + + def remove_const_ref(self) -> CType: + return ArrayCType(self.elem.remove_const_ref(), self.size) + + +@dataclass(frozen=True) +class TupleCType(CType): + elems: list[CType] + + def cpp_type(self, *, strip_ref: bool = False) -> str: + # Do not pass `strip_ref` recursively. + return f"::std::tuple<{','.join([e.cpp_type() for e in self.elems])}>" + + def remove_const_ref(self) -> CType: + return TupleCType([e.remove_const_ref() for e in self.elems]) + + +@dataclass(frozen=True) +class MutRefCType(CType): + elem: CType + + def cpp_type(self, *, strip_ref: bool = False) -> str: + if strip_ref: + return self.elem.cpp_type(strip_ref=strip_ref) + return f"{self.elem.cpp_type()} &" + + def remove_const_ref(self) -> CType: + return self.elem.remove_const_ref() + + +# A NamedCType is short for Named C++ semantic type. A NamedCType represents a C++ type, plus +# semantic information about what it represents. For example, consider the +# argument "bool pin_memory"; its normal C++ type is "bool", but its C++ +# semantic type also keeps track that this represents a "pin_memory"; you can't +# just use a random other boolean in a context where you need a "pin_memory"! +# + + +@dataclass(frozen=True) +class NamedCType: + name: ArgName + type: CType + + def cpp_type(self, *, strip_ref: bool = False) -> str: + return self.type.cpp_type(strip_ref=strip_ref) + + def remove_const_ref(self) -> NamedCType: + return NamedCType(self.name, self.type.remove_const_ref()) + + def with_name(self, name: str) -> NamedCType: + return NamedCType(name, self.type) + + +# A binding represents any C++ binding site for a formal parameter. +# We don't distinguish between binding sites for different APIs; +# instead, all of the important distinctions are encoded in CType, +# which you can use to figure out if a given Binding is appropriate +# for use in another context. (See torchgen.api.translate) + + +@dataclass(frozen=True) +class Binding: + name: str + nctype: NamedCType + argument: Argument | TensorOptionsArguments | SelfArgument + # TODO: maybe don't represent default here + default: str | None = None + + def rename(self, name: str) -> Binding: + return Binding( + name=name, + nctype=self.nctype, + argument=self.argument, + default=self.default, + ) + + @property + def type(self) -> str: + return self.nctype.cpp_type() + + def no_default(self) -> Binding: + return Binding( + name=self.name, + nctype=self.nctype, + default=None, + argument=self.argument, + ) + + def decl(self, *, func_ptr_cast: bool = False) -> str: + mb_default = "" + if self.default is not None: + mb_default = f"={self.default}" + + # casting only needs to know the type + if func_ptr_cast: + return f"{self.type}" + else: + return f"{self.type} {self.name}{mb_default}" + + def defn(self) -> str: + return f"{self.type} {self.name}" + + def with_name(self, name: str) -> Binding: + return Binding( + name=name, nctype=self.nctype, argument=self.argument, default=self.default + ) + + +# An Expr is a C++ expression. It has a C++ string representing its syntax, +# as well as a CType saying what it provides. + + +@dataclass(frozen=True) +class Expr: + expr: str + type: NamedCType diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/ufunc.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/ufunc.py new file mode 100644 index 0000000000000000000000000000000000000000..0ced02fc6d11a5923ef6d0e0086142c34ee31b17 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/ufunc.py @@ -0,0 +1,211 @@ +from __future__ import annotations + +from dataclasses import dataclass + +import torchgen.api.types as api_types +from torchgen.api import cpp, structured +from torchgen.api.types import ( + ArgName, + BaseCppType, + BaseCType, + Binding, + ConstRefCType, + CType, + NamedCType, + scalarT, +) +from torchgen.model import ( + Argument, + BaseTy, + BaseType, + DispatchKey, + FunctionSchema, + NativeFunctionsGroup, + Type, +) + + +def schema_kernel_name(func: FunctionSchema, dispatch_key: DispatchKey) -> str: + if not func.is_out_fn(): + raise AssertionError("ufunc.kernel_name should only be invoked on out schemas") + return f"ufunc_{func.name.name}_{dispatch_key}" + + +def kernel_name(g: NativeFunctionsGroup, dispatch_key: DispatchKey) -> str: + return schema_kernel_name(g.out.func, dispatch_key) + + +# Tensors are omitted (as they are stored in TensorIterator), everything else is +# passed along (technically, we can pass tensors along too, it just wastes +# argument registers) +# +# NB: used for CPU only +def dispatchstub_type(t: Type, *, binds: ArgName) -> NamedCType | None: + # Dispatch stubs are always plain ints + r = cpp.valuetype_type(t, binds=binds, symint=False) + if r is not None: + return r + + if t == BaseType(BaseTy.Scalar): + return NamedCType(binds, ConstRefCType(BaseCType(scalarT))) + elif t == BaseType(BaseTy.Tensor): + return None + else: + raise AssertionError(f"unrecognized type {repr(t)}") + + +def opmath_type(scalar_t: BaseCppType) -> BaseCppType: + if scalar_t == api_types.scalar_t: + return api_types.opmath_t + raise NotImplementedError + + +# NB: Tensors in constructor are stored in opmath_t, not scalar_t +# because Tensor in constructor = its a scalar tensor partially applied = +# it can be higher precision and we want to compute in that higher precision +# +# NB: CUDA only +def ufunctor_ctor_type(t: Type, *, binds: ArgName, scalar_t: BaseCppType) -> NamedCType: + r = cpp.valuetype_type(t, binds=binds, symint=False) + if r is not None: + return r + + if t == BaseType(BaseTy.Scalar): + return NamedCType(binds, BaseCType(opmath_type(scalar_t))) + elif t == BaseType(BaseTy.Tensor): + return NamedCType(binds, BaseCType(opmath_type(scalar_t))) + else: + raise AssertionError(f"unrecognized type {repr(t)}") + + +# Only Tensors ever get passed directly to operator() +# +# NB: CUDA only +# (Actually, this works for CPU too) +def ufunctor_apply_type( + t: Type, *, binds: ArgName, scalar_t: BaseCppType +) -> NamedCType: + if t == BaseType(BaseTy.Tensor): + return NamedCType(binds, BaseCType(scalar_t)) + else: + raise AssertionError(f"unrecognized type {repr(t)}") + + +# The actual ufunc template function the user writes. Everything here +# is done in the computation type. compute_t is opmath_t in CUDA and scalar_t +# in CPU +def ufunc_type(t: Type, *, binds: ArgName, compute_t: CType) -> NamedCType: + r = cpp.valuetype_type(t, binds=binds, symint=False) + if r is not None: + return r + + if t == BaseType(BaseTy.Scalar): + return NamedCType(binds, compute_t) + elif t == BaseType(BaseTy.Tensor): + return NamedCType(binds, compute_t) + else: + raise AssertionError(f"unrecognized type {repr(t)}") + + +def ufunctor_ctor_argument(a: Argument, scalar_t: BaseCppType) -> Binding: + return Binding( + nctype=ufunctor_ctor_type(a.type, binds=a.name, scalar_t=scalar_t), + name=a.name, + default=None, + argument=a, + ) + + +def ufunctor_apply_argument(a: Argument, scalar_t: BaseCppType) -> Binding: + return Binding( + nctype=ufunctor_apply_type(a.type, binds=a.name, scalar_t=scalar_t), + name=a.name, + default=None, + argument=a, + ) + + +def ufunc_argument(a: Argument, compute_t: CType) -> Binding: + return Binding( + nctype=ufunc_type(a.type, binds=a.name, compute_t=compute_t), + name=a.name, + default=None, + argument=a, + ) + + +@dataclass(frozen=True) +class UfunctorBindings: + ctor: list[Binding] + apply: list[Binding] + + +# ufunctors are a CUDA-only concept representing functors that take some of +# their arguments on a host-side constructor, and the rest in the device-side +# apply. E.g., +# +# template +# struct CUDAFunctorOnSelf_add { +# using opmath_t = at::opmath_type; +# opmath_t other_; +# opmath_t alpha_; +# CUDAFunctorOnSelf_add(opmath_t other, opmath_t alpha) : other_(other), alpha_(alpha) {} +# __device__ scalar_t operator()(scalar_t self) { +# return ufunc::add(static_cast(self), other_, alpha_); +# } +# }; +# +# The ctor refers to the constructor CUDAFunctorOnSelf_add, while apply refers +# to the operator() definition +def ufunctor_arguments( + g: NativeFunctionsGroup, *, scalar_tensor_idx: int | None, scalar_t: BaseCppType +) -> UfunctorBindings: + ctor = [] + apply = [] + for a in g.functional.func.arguments.flat_non_out: + if a.type.is_tensor_like(): + if scalar_tensor_idx == 0: + # put it in the ctor anyway + ctor.append(ufunctor_ctor_argument(a, scalar_t=scalar_t)) + scalar_tensor_idx = None + else: + if scalar_tensor_idx is not None: + scalar_tensor_idx -= 1 + apply.append(ufunctor_apply_argument(a, scalar_t=scalar_t)) + else: + ctor.append(ufunctor_ctor_argument(a, scalar_t=scalar_t)) + if scalar_tensor_idx is not None: + raise AssertionError("scalar_tensor_idx should be None at end of processing") + return UfunctorBindings(ctor=ctor, apply=apply) + + +# ufuncs are the inner loop template functions that you wrote in ufunc/add.h +# which do the actual computation in question. E.g., +# +# template +# C10_HOST_DEVICE T add(T self, T other, T alpha) __ubsan_ignore_undefined__ { +# return self + alpha * other; +# } +# +# In this file, we refer to T as compute_t which is bound by caller +def ufunc_arguments(g: NativeFunctionsGroup, *, compute_t: CType) -> list[Binding]: + return [ + ufunc_argument(a, compute_t=compute_t) + for a in g.functional.func.arguments.flat_non_out + ] + + +# Stubs are the DispatchStub trampolines that CPU kernels use to get to their +# vectorized versions. E.g., +# +# using structured_binary_fn_alpha = void(*)(TensorIteratorBase&, const Scalar& alpha); +# DECLARE_DISPATCH(structured_binary_fn_alpha, add_stub); +def stub_arguments(g: NativeFunctionsGroup) -> list[Binding]: + # stubs drop all tensor arguments (they are implicit in the TensorIterator + # argument and keep everything else) + return [ + r + for a in g.out.func.arguments.flat_non_out + if not a.type.is_tensor_like() + for r in structured.argument(a) + ] diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/unboxing.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/unboxing.py new file mode 100644 index 0000000000000000000000000000000000000000..edb48ec5d172a7063b4003536506ed33f0f293fa --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/api/unboxing.py @@ -0,0 +1,241 @@ +from __future__ import annotations + +from torchgen.api import cpp +from torchgen.api.types import Binding, CppSignatureGroup, CType +from torchgen.model import ( + Argument, + BaseTy, + BaseType, + ListType, + NativeFunction, + OptionalType, + Type, +) + + +# This file generates the code for unboxing wrappers, i.e., the glue logic to unbox a boxed operator and convert the +# ivalues from stack to correct arguments to the unboxed kernel, based on corresponding JIT schema. This codegen is +# an alternative way to generate unboxing wrappers similar to the existing C++ metaprogramming approach but gets the +# job done statically. These generated unboxing wrappers will be useful under the scenario where we need to register +# a fixed set of operators known at compile time and thus can save some time in runtime initialization phase. +# +# Here's an example on how the codegen works: +# +# - Function Schema (source of truth) +# +# aten::empty.names(int[] size, *, Dimname[]? names, +# ScalarType? dtype=None, Layout? layout=None, +# Device? device=None, bool? pin_memory=None, +# MemoryFormat? memory_format=None) -> Tensor +# - Argument Conversion +# Generates C++ code to convert an ivalue (from stack) to its underlying C++ type. +# - int[] size +# ```cpp +# const c10::List size_list_in = (std::move(peek(stack, 0, 7))).toList(); +# +# std::vector size_vec; +# for (c10::IValue size_elem: size_list_in) { +# int64_t size_base = size_elem.to(); +# size_vec.push_back(size_base); +# } +# at::ArrayRef size_list_out(size_vec); +# ~~~~~~~~~~~~~ <-- The converted argument from ivalues in the stack. +# Will be passed to unboxed kernel. +# ``` +# - Dimname[]? names +# ```cpp +# ::std::optional names_opt = (std::move(peek(stack, 1, 7))).toOptional(); +# ::std::optional> names_opt_out; +# if (names_opt.has_value()) { +# ~~~~~~~~~~~ <-- Unwrapping optional shell +# const c10::IValue names_opt_in = names_opt.value(); +# const c10::List names_list_in = names_opt_in.toList(); +# +# std::vector names_vec; +# for (c10::IValue names_elem: names_list_in) { +# ~~~~~~~~~~~~~~~~~~~~~~~~~ <-- Unrolling list, then convert elements one by one. +# at::Dimname names_base = names_elem.to(); +# names_vec.push_back(names_base); +# } +# at::ArrayRef names_list_out(names_vec); +# +# names_opt_out = ::std::optional>(names_list_out); +# } else { +# names_opt_out = ::std::optional>(); +# } +# ``` +# - ScalarType? dtype (similarly for the rest of the arguments) +# ```cpp +# ::std::optional dtype_opt = (std::move(peek(stack, 2, 7))).toOptional(); +# ::std::optional dtype_opt_out; +# if (dtype_opt.has_value()) { +# const c10::IValue dtype_opt_in = dtype_opt.value(); +# at::ScalarType dtype_base = dtype_opt_in.to(); +# ~~~~~~~~~~~~~~~~~~~~ <-- For base types, convert ivalue to it +# directly using ".to()" API. +# dtype_opt_out = ::std::optional(dtype_base); +# } else { +# dtype_opt_out = ::std::optional(); +# } +# ``` +# +# - Unboxed Kernel Call +# ```cpp +# auto result_ = torch::empty( +# size_list_out, +# names_opt_out, +# options, +# memory_format_opt_out +# ); +# ``` +# +# - Push Result Back to Stack +# ```cpp +# drop(stack, 7); +# pack(stack, std::move(result_)); +# ``` +connector = "\n\t" + + +# Return unboxing function name for a NativeFunction +def name(f: NativeFunction) -> str: + return f.func.name.unambiguous_name() + + +# Convert all the arguments in a NativeFunction to C++ code +def convert_arguments(f: NativeFunction) -> tuple[list[Binding], list[str]]: + # we need the 'self' argument so method needs to be False + args = ( + CppSignatureGroup.from_native_function(f, method=False) + .most_faithful_signature() + .arguments() + ) + code_list = [ + f"c10::IValue {args[i].name} = std::move(peek(stack, {i}, {len(args)}));" + for i in range(len(args)) + ] + [""] + binding_list = [] + for arg in args: + # expecting only Argument + if not isinstance(arg.argument, Argument): + raise Exception( # noqa: TRY002 + f"Unexpected argument type, expecting `Argument` but got {arg}" + ) + argument: Argument = arg.argument + unboxed_name, _, code, decl = argumenttype_ivalue_convert( + argument.type, + argument.name, + mutable=argument.is_write, + ) + code_list.extend(decl) + code_list.extend(code) + binding_list.append(arg.with_name(unboxed_name)) + return binding_list, code_list + + +# Takes in the type, name and mutability corresponding to an argument, and generates a tuple of: +# (1) the C++ code necessary to unbox the argument +# (2) A Binding corresponding to the newly created unboxed variable, including variable name and its CType +def argumenttype_ivalue_convert( + t: Type, arg_name: str, *, mutable: bool = False +) -> tuple[str, CType, list[str], list[str]]: + # Unboxing is for mobile, which doesn't care about SymInts + ctype = cpp.argumenttype_type( + t=t, mutable=mutable, binds=arg_name, symint=False + ).type + + if isinstance(t, BaseType): + out_name = f"{arg_name}_base" + code, decl = _gen_code_base_type( + arg_name=arg_name, out_name=out_name, ctype=ctype + ) + elif isinstance(t, OptionalType): + out_name = f"{arg_name}_opt_out" + code, decl = _gen_code_optional_type( + arg_name=arg_name, + out_name=out_name, + t=t, + ctype=ctype, + ) + elif isinstance(t, ListType): + out_name = f"{arg_name}_list_out" + code, decl = _gen_code_list_type( + arg_name=arg_name, + out_name=out_name, + t=t, + ctype=ctype, + ) + else: + raise Exception(f"Cannot handle type {t}. arg_name: {arg_name}") # noqa: TRY002 + return out_name, ctype, code, decl + + +def _gen_code_base_type( + arg_name: str, out_name: str, ctype: CType +) -> tuple[list[str], list[str]]: + return [ + f"{ctype.cpp_type(strip_ref=True)} {out_name} = {arg_name}.to<{ctype.cpp_type(strip_ref=True)}>();" + ], [] + + +def _gen_code_optional_type( + arg_name: str, out_name: str, t: OptionalType, ctype: CType +) -> tuple[list[str], list[str]]: + in_name = f"{arg_name}_opt_in" + res_name, _, res_code, decl = argumenttype_ivalue_convert(t.elem, in_name) + return ( + f""" +auto {arg_name}_opt = {arg_name}.toOptional(); +{ctype.cpp_type(strip_ref=True)} {out_name}; +if ({arg_name}_opt.has_value()) {{ + const c10::IValue {in_name} = {arg_name}_opt.value(); + {connector.join(res_code)} + {out_name} = {ctype.cpp_type(strip_ref=True)}({res_name}); +}} else {{ + {out_name} = {ctype.cpp_type(strip_ref=True)}(); +}} + """.split("\n"), + decl, + ) + + +def _gen_code_list_type( + arg_name: str, out_name: str, t: ListType, ctype: CType +) -> tuple[list[str], list[str]]: + in_name = f"{arg_name}_list_in" + elem_name = f"{arg_name}_elem" + code = [f"const c10::List {in_name} = {arg_name}.toList();"] + res_name, res_ctype, res_code, decl = argumenttype_ivalue_convert(t.elem, elem_name) + # handle list type with size, e.g., bool[4] + if isinstance(t.elem, BaseType) and t.elem.name == BaseTy.bool and t.size: + code.extend( + f""" +{ctype.cpp_type(strip_ref=True)} {out_name} = as_array<{res_ctype.cpp_type(strip_ref=True)}, {t.size}>({in_name}); + """.split("\n") + ) + # we have to use c10::List for optional element. e.g., Tensor?[] -> c10::List<::std::optional> + elif isinstance(t.elem, OptionalType): + code.extend( + f""" +{ctype.cpp_type(strip_ref=True)} {out_name}; +for (c10::IValue {elem_name}: {in_name}) {{ + {connector.join(res_code)} + {out_name}.push_back({res_name}); +}} + """.split("\n") + ) + else: + # use ArrayRef as default. + vec_name = arg_name + "_vec" + # need to bring vector instantiation out of scope so that ArrayRef has valid data + decl.append(f"std::vector<{res_ctype.cpp_type(strip_ref=True)}> {vec_name};") + code.extend( + f""" +for (c10::IValue {elem_name}: {in_name}) {{ + {connector.join(res_code)} + {vec_name}.push_back({res_name}); +}} +{ctype.cpp_type(strip_ref=True)} {out_name}({vec_name}); + """.split("\n") + ) + return code, decl diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/code_template.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/code_template.py new file mode 100644 index 0000000000000000000000000000000000000000..8fcae32c79f53a2c4536987f7236cae00d87312e --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/code_template.py @@ -0,0 +1,109 @@ +from __future__ import annotations + +import itertools +import re +import textwrap +from typing import TYPE_CHECKING + + +if TYPE_CHECKING: + from collections.abc import Mapping, Sequence + + +# match $identifier or ${identifier} and replace with value in env +# If this identifier is at the beginning of whitespace on a line +# and its value is a list then it is treated as +# block substitution by indenting to that depth and putting each element +# of the list on its own line +# if the identifier is on a line starting with non-whitespace and a list +# then it is comma separated ${,foo} will insert a comma before the list +# if this list is not empty and ${foo,} will insert one after. + + +class CodeTemplate: + substitution_str = r"(^[^\n\S]*)?\$([^\d\W]\w*|\{,?[^\d\W]\w*\,?})" + substitution = re.compile(substitution_str, re.MULTILINE) + + pattern: str + filename: str + + @staticmethod + def from_file(filename: str) -> CodeTemplate: + with open(filename) as f: + return CodeTemplate(f.read(), filename) + + def __init__(self, pattern: str, filename: str = "") -> None: + self.pattern = pattern + self.filename = filename + + def substitute( + self, env: Mapping[str, object] | None = None, **kwargs: object + ) -> str: + if env is None: + env = {} + + def lookup(v: str) -> object: + if env is None: + raise AssertionError("env must be non-None") + return kwargs[v] if v in kwargs else env[v] + + def indent_lines(indent: str, v: Sequence[object]) -> str: + content = "\n".join( + itertools.chain.from_iterable(str(e).splitlines() for e in v) + ) + content = textwrap.indent(content, prefix=indent) + # Remove trailing whitespace on each line + return "\n".join(map(str.rstrip, content.splitlines())).rstrip() + + def replace(match: re.Match[str]) -> str: + indent = match.group(1) + key = match.group(2) + comma_before = "" + comma_after = "" + if key[0] == "{": + key = key[1:-1] + if key[0] == ",": + comma_before = ", " + key = key[1:] + if key[-1] == ",": + comma_after = ", " + key = key[:-1] + v = lookup(key) + if indent is not None: + if not isinstance(v, list): + v = [v] + return indent_lines(indent, v) + elif isinstance(v, list): + middle = ", ".join([str(x) for x in v]) + if len(v) == 0: + return middle + return comma_before + middle + comma_after + else: + return str(v) + + return self.substitution.sub(replace, self.pattern) + + +if __name__ == "__main__": + c = CodeTemplate( + """\ + int foo($args) { + + $bar + $bar + $a+$b + } + int commatest(int a${,stuff}) + int notest(int a${,empty,}) + """ + ) + print( + c.substitute( + args=["hi", 8], + bar=["what", 7], + a=3, + b=4, + stuff=["things...", "others"], + empty=[], + ) + ) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/context.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/context.py new file mode 100644 index 0000000000000000000000000000000000000000..a99d7119c656f27fabe4accdd2096d997416f4b6 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/context.py @@ -0,0 +1,134 @@ +from __future__ import annotations + +import contextlib +import functools +from typing import Any, TYPE_CHECKING, TypeVar + +import torchgen.local as local +from torchgen.model import ( + BackendIndex, + DispatchKey, + NativeFunction, + NativeFunctionsGroup, + NativeFunctionsViewGroup, +) +from torchgen.utils import context, S, T + + +if TYPE_CHECKING: + from collections.abc import Callable, Iterator + + +# Helper functions for defining generators on things in the model + +F = TypeVar( + "F", + NativeFunction, + NativeFunctionsGroup, + NativeFunctionsViewGroup, + NativeFunction | NativeFunctionsGroup, + NativeFunction | NativeFunctionsViewGroup, +) + +F2 = TypeVar( + "F2", + NativeFunction, + NativeFunctionsGroup, + NativeFunction | None, + bool, + str, +) + +F3 = TypeVar("F3", tuple[NativeFunction, Any], list[NativeFunction]) + + +@contextlib.contextmanager +def native_function_manager( + g: NativeFunctionsGroup | NativeFunctionsViewGroup | NativeFunction, +) -> Iterator[None]: + if isinstance(g, NativeFunctionsGroup): + # By default, we associate all errors with structured native functions + # with the out variant. In some cases, it might be better to have + # a more specific place to hang things; if so, use + # native_function_manager again on the inside + f = g.out + elif isinstance(g, NativeFunctionsViewGroup): + # We associate errors with the view operator + f = g.view + else: + f = g + with context(lambda: f"in native_functions.yaml line {f.loc}:\n {f.func}"): + with local.parametrize( + use_const_ref_for_mutable_tensors=f.use_const_ref_for_mutable_tensors, + use_ilistref_for_tensor_lists=f.part_of_structured_group, + ): + yield + + +# Given a function that operates on NativeFunction, wrap it into a new function +# that sets some appropriate context managers for that native function. +# YOU MUST WRAP FUNCTIONS IN THIS for calls to api modules to be sound +# (you will get an error if we try to access the local variables without having +# set them). +def with_native_function(func: Callable[[F], T]) -> Callable[[F], T]: + @functools.wraps(func) + def wrapper(f: F) -> T: + with native_function_manager(f): + return func(f) + + return wrapper + + +def with_native_function_and(func: Callable[[F, F2], T]) -> Callable[[F, F2], T]: + @functools.wraps(func) + def wrapper(f: F, f2: F2) -> T: + # The first native_function is assumed to be the one with the appropriate context. + with native_function_manager(f): + return func(f, f2) + + return wrapper + + +def method_with_native_function(func: Callable[[S, F], T]) -> Callable[[S, F], T]: + @functools.wraps(func) + def wrapper(slf: S, f: F) -> T: + with native_function_manager(f): + return func(slf, f) + + return wrapper + + +def method_with_nested_native_function( + func: Callable[[S, F3], T], +) -> Callable[[S, F3], T]: + @functools.wraps(func) + def wrapper(slf: S, f: F3) -> T: + with native_function_manager(f[0]): + return func(slf, f) + + return wrapper + + +# Convenience decorator for functions that explicitly take in a BackendIndex, +# instead of indirectly taking one in as a closure +def with_native_function_and_index( + func: Callable[[F, BackendIndex], T], +) -> Callable[[F, BackendIndex], T]: + @functools.wraps(func) + def wrapper(f: F, backend_index: BackendIndex) -> T: + with native_function_manager(f): + return func(f, backend_index) + + return wrapper + + +# Convenience decorator for functions that explicitly take in a Dict of BackendIndices +def with_native_function_and_indices( + func: Callable[[F, dict[DispatchKey, BackendIndex]], T], +) -> Callable[[F, dict[DispatchKey, BackendIndex]], T]: + @functools.wraps(func) + def wrapper(f: F, backend_indices: dict[DispatchKey, BackendIndex]) -> T: + with native_function_manager(f): + return func(f, backend_indices) + + return wrapper diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/dest/__init__.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/dest/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..8f08a743ae2dc766530fd8f93be9ebb8b7733f21 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/dest/__init__.py @@ -0,0 +1,19 @@ +from torchgen.dest.lazy_ir import ( + generate_non_native_lazy_ir_nodes as generate_non_native_lazy_ir_nodes, + GenLazyIR as GenLazyIR, + GenLazyNativeFuncDefinition as GenLazyNativeFuncDefinition, + GenLazyShapeInferenceDefinition as GenLazyShapeInferenceDefinition, +) +from torchgen.dest.native_functions import ( + compute_native_function_declaration as compute_native_function_declaration, +) +from torchgen.dest.register_dispatch_key import ( + gen_registration_headers as gen_registration_headers, + gen_registration_helpers as gen_registration_helpers, + RegisterDispatchKey as RegisterDispatchKey, +) +from torchgen.dest.ufunc import ( + compute_ufunc_cpu as compute_ufunc_cpu, + compute_ufunc_cpu_kernel as compute_ufunc_cpu_kernel, + compute_ufunc_cuda as compute_ufunc_cuda, +) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/dest/lazy_ir.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/dest/lazy_ir.py new file mode 100644 index 0000000000000000000000000000000000000000..b0e41a0deadcb7d411c29eb00bfdd61c3f6b2695 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/dest/lazy_ir.py @@ -0,0 +1,718 @@ +from __future__ import annotations + +import itertools +from abc import ABC +from dataclasses import dataclass +from typing import Any + +import torchgen.api.dispatcher as dispatcher +from torchgen.api.lazy import ( + getValueT, + isValueType, + LazyArgument, + LazyIrProperties, + LazyIrSchema, + tensorListValueT, +) +from torchgen.api.translate import translate +from torchgen.api.types import ( + BaseCType, + Binding, + deviceT, + DispatcherSignature, + kernel_signature, + NativeSignature, + OptionalCType, + VectorCType, +) +from torchgen.context import method_with_native_function +from torchgen.dest.lazy_ts_lowering import ts_lowering_body +from torchgen.model import ( + Argument, + BackendIndex, + BackendMetadata, + BaseTy, + BaseType, + FunctionSchema, + ListType, + NativeFunction, + NativeFunctionsGroup, +) + + +def node_ctor_arg_rvalue_string(arg: LazyArgument) -> str: + """ + Given a LazyArgument, + generate a c++ string for materializing an rvalue of that arg for passing into + a lazy Node constructor. + """ + + # TODO: Matching on CType seems wrong; should be matching on Type + if isValueType(arg.lazy_type): + if isinstance(arg.lazy_type, BaseCType): + if arg.is_wrapped_scalar: + return f"node_{arg.name}" + elif arg.lazy_type.type is tensorListValueT: + return f"lazy_{arg.name}_tensorlist" + elif arg.is_symint_or_list: + return f"GetSymIntValue({arg.name})" + return f"lazy_{arg.name}->GetIrValue()" + elif isinstance(arg.lazy_type, OptionalCType): + if arg.is_symint_or_list: + # TODO: I don't understand when you should put lazy_ in the name + # or not + return f"{arg.name} ? std::make_optional(GetSymIntValue(*{arg.name})) : ::std::nullopt" + elif arg.is_wrapped_scalar: + return f"node_{arg.name}" + return ( + f"lazy_{arg.name} ? " + f"std::make_optional(lazy_{arg.name}->GetIrValue()) : " + "::std::nullopt" + ) + else: + raise AssertionError( + f"TODO not sure if there are other valid types to handle here ({arg.lazy_type})" + ) + else: + # NB: this is here because right now we aren't treating SymInt[] as a + # value type; when we do this needs to move above + # NB: we cannot test arg.lazy_type as we've already specified it is an + # int64_t and so we cannot distinguish between SymInt and int64_t + if isinstance(arg.orig_type, ListType) and arg.orig_type.elem == BaseType( + BaseTy.SymInt + ): + if arg.symint: + return f"GetSymIntArrayRefValue({arg.name})" + else: + return f"std::vector({arg.name}.begin(), {arg.name}.end())" + elif isinstance(arg.lazy_type, VectorCType) and isinstance( + arg.lazy_type.elem, BaseCType + ): + return f"std::vector<{arg.lazy_type.elem.type}>({arg.name}.begin(), {arg.name}.end())" + elif ( + isinstance(arg.lazy_type, OptionalCType) + and isinstance(arg.lazy_type.elem, VectorCType) + and isinstance(arg.lazy_type.elem.elem, BaseCType) + ): + return f"torch::lazy::ToOptionalVector<{arg.lazy_type.elem.elem.type}>({arg.name})" + else: + return f"{arg.name}" + + +def node_ctor_inputs(schema: LazyIrSchema) -> str: + """ + Produce a formatted string with the arguments as passed into the constructor of a node class. + """ + node_ctor_values = [ + node_ctor_arg_rvalue_string(arg) for arg in schema.filtered_args() + ] + return ", ".join(node_ctor_values) + + +def gen_fallback_code( + schema: LazyIrSchema, + sig: DispatcherSignature | NativeSignature, + overload_name: str, +) -> str: + """ + Generate code that falls back to eager conditioned on a predicate + """ + dispatcher_sig = DispatcherSignature.from_schema(schema.func) + exprs = translate(sig.arguments(), dispatcher_sig.arguments()) + fallback_args = ",\n ".join([a.expr for a in exprs]) + if len(overload_name): + aten_op_str = f"ATEN_OP2({schema.aten_name}, {overload_name})" + else: + aten_op_str = f"ATEN_OP({schema.aten_name})" + return f""" + if (force_eager_fallback({aten_symbol(schema)})) {{ + return at::native::call_fallback_fn_symint<<c_eager_fallback, {aten_op_str}>::call( + {fallback_args} + ); + }} +""" + + +def aten_symbol(schema: LazyIrSchema) -> str: + missing_interned_strings = { + "sigmoid_backward", + } + if schema.aten_name in missing_interned_strings: + return f'c10::Symbol::fromQualString("aten::{schema.aten_name}")' + + if not schema.aten_name.startswith("at::"): + return f"at::aten::{schema.aten_name}" + else: + return schema.aten_name + + +# converts all tensor-like arguments to meta tensors. Returns: +# (1) a string containing all of the logic that does the conversions. +# (2) a context, to be used by translate(), with all of the relevant bindings. +def convert_to_meta_tensors(sig: DispatcherSignature) -> tuple[str, list[Binding]]: + context: list[Binding] = [] + unwrapped_tensor_args: list[str] = [] + for arg in sig.arguments(): + if isinstance(arg.argument, Argument) and arg.argument.type.is_tensor_like(): + unwrapped_name = f"{arg.name}_meta" + unwrapped_tensor_args.append( + f"auto {unwrapped_name} = to_meta({arg.name});" + ) + context.append(arg.with_name(unwrapped_name)) + else: + context.append(arg) + unwrap_tensor_args_str = "\n ".join(unwrapped_tensor_args) + return unwrap_tensor_args_str, context + + +@dataclass(frozen=True) +class GenLazyIR(ABC): + backend_index: BackendIndex + backend_name: str + node_base: str + use_lazy_shape: bool + + @method_with_native_function + def __call__(self, f: NativeFunctionsGroup | NativeFunction) -> list[str]: + func = f.functional.func if isinstance(f, NativeFunctionsGroup) else f.func + metadata = self.backend_index.get_kernel( + f.functional if isinstance(f, NativeFunctionsGroup) else f + ) + schema = LazyIrSchema( + func, symint=metadata is not None and metadata.supports_symint() + ) + return self.gen(schema) + + # there is no lowering functionality generated unless this IR base class is subclassed and + # implemented as a backend-specific node + def lowering_function(self, schema: LazyIrSchema) -> str: + return "" + + def create_function(self, schema: LazyIrSchema, node_ctor_args: str) -> str: + return "" + + def can_be_reused_function(self, schema: LazyIrSchema, node_ctor_args: str) -> str: + return f"""bool CanBeReused({node_ctor_args}) const {{ + return false; + }}""" + + def node_base_ctor_call(self, schema: LazyIrSchema) -> str: + value_args = schema.filtered_args(values=True, scalars=False) + # backends can customize the way the node base class constructor is called, + # as long as all of its arguments can be generated from information available from the schema + base_ctor_value_args_list = [] + for arg in value_args: + if isinstance(arg.lazy_type, (BaseCType, VectorCType)): + base_ctor_value_args_list.append(f"{arg.name}") + elif isinstance(arg.lazy_type, OptionalCType): + base_ctor_value_args_list.append(f"{arg.name}.value_or(kNullValue)") + else: + raise AssertionError( + f"Unsupported type ({arg.lazy_type}) - add support if necessary" + ) + base_ctor_value_args = ", ".join(base_ctor_value_args_list) + + scalar_args = schema.filtered_args(values=False, scalars=True) + + # Shape construction. + # Conditionally build shape depending on specified shape property + if schema.properties.ShapePrecompute: + shape_ctor_arg = "std::move(shapes)," + elif schema.properties.ShapeCompute: + shape_args = [a.name for a in value_args] + shape_args.extend(a.name for a in scalar_args) + shape_ctor_arg = f"compute_shape_{schema.name}({', '.join(shape_args)})," + elif schema.properties.ShapeCache: + shape_args = [f"operand({i})" for i in range(len(value_args))] + shape_args.extend(a.name for a in scalar_args) + shape_ctor_arg = f"[&](){{ return compute_shape_{schema.name}({', '.join(shape_args)})[0]; }}," + else: + shape_ctor_arg = "" + + scalar_hashes = ", ".join(f"{a.name}" for a in scalar_args) + + return f"""{self.node_base}( + {schema.node_name}::ClassOpKind(), + OpList{{{base_ctor_value_args}}}, + {shape_ctor_arg} + /* num_outputs */ {len(schema.returns)}, + torch::lazy::MHash({scalar_hashes}))""" + + def gen(self, schema: LazyIrSchema) -> list[str]: + opkind = schema.opkind or aten_symbol(schema) + + # for now, we just want one IR class decl and soon after also the method defs + # and we use the functional version not out/inplace. + all_args = schema.filtered_args() + scalar_args = schema.filtered_args(values=False, scalars=True) + + ctor_args = [f"const {i.lazy_type.cpp_type()}& {i.name}" for i in all_args] + reuse_ctor_args = ", ".join(ctor_args) + if self.use_lazy_shape and schema.properties.ShapePrecompute: + ctor_args.append("std::vector&& shapes") + node_ctor_args = ", ".join(ctor_args) + + scalar_initializers = ",\n ".join( + [ + # This code is just special casing the mapping from string_view -> strings + f"{a.name}({a.name}.has_value() ? ::std::make_optional(std::string(*{a.name})) : ::std::nullopt)" + if a.lazy_type.cpp_type() == "::std::optional" + else f"{a.name}({a.name})" + for a in scalar_args + ] + ) + if len(scalar_initializers): + scalar_initializers = f",\n {scalar_initializers}" + scalar_decls = "\n ".join( + [ + f"std::string {a.name};" + if a.lazy_type.cpp_type() == "c10::string_view" + else f"::std::optional {a.name};" + if a.lazy_type.cpp_type() == "::std::optional" + else f"{a.lazy_type.cpp_type()} {a.name};" + for a in scalar_args + ] + ) + optional_values = [ + arg.name + for arg in schema.filtered_args(values=True, scalars=False) + if isinstance(arg.lazy_type, OptionalCType) + ] + has_optional_decls = "\n ".join( + [f"bool has_{value}: 1;" for value in optional_values] + ) + has_optional_defs = "\n ".join( + [f"has_{value} = !!{value};" for value in optional_values] + ) + members_to_string = [] + for arg in scalar_args: + if isinstance(arg.lazy_type, OptionalCType): + value = f"{arg.name}.value()" + if arg.is_generator: + value = '"torch.Generator()"' + members_to_string.append( + f"""if ({arg.name}.has_value()) {{ + ss << ", {arg.name}=" << {value}; + }} else {{ + ss << ", {arg.name}=null"; + }}""" + ) + else: + members_to_string.append(f'ss << ", {arg.name}=" << {arg.name};') + members_to_string_str = "\n ".join(members_to_string) + + return [ + f"""\ +class {schema.node_name} : public {self.node_base} {{ + public: + static torch::lazy::OpKind ClassOpKind() {{ + return torch::lazy::OpKind({opkind}); + }} + + {schema.node_name}({node_ctor_args}) + : {self.node_base_ctor_call(schema)}{scalar_initializers} + {{ + {has_optional_defs} + }} + + std::string ToString() const override {{ + std::stringstream ss; + ss << {self.node_base}::ToString(); + {members_to_string_str} + return ss.str(); + }} + + {self.create_function(schema, reuse_ctor_args)} + + {self.can_be_reused_function(schema, reuse_ctor_args)} + + {self.lowering_function(schema)} + + {scalar_decls} + {has_optional_decls} + +}}; + +""", + ] + + +@dataclass(frozen=True) +class GenTSLazyIR(GenLazyIR): + def lowering_function(self, schema: LazyIrSchema) -> str: + signature = """ + torch::lazy::TSOpVector Lower( + std::shared_ptr function, + torch::lazy::TSLoweringContext* loctx) const override""" + + if schema.properties.LowerDeclOnly: + return f"{signature};" + elif schema.properties.Lower: + return f"""{signature} {{ + {ts_lowering_body(schema)} + }} + """ + else: + return "" + + def create_function(self, schema: LazyIrSchema, node_ctor_args: str) -> str: + signature = f"static NodePtr Create({node_ctor_args})" + if schema.properties.CreateFnDeclOnly: + return f"{signature};" + elif not schema.properties.CreateFn: + return "" + return f"""{signature} {{ + return ReuseOrMakeNode<{schema.node_name}>(data); + }}""" + + def can_be_reused_function(self, schema: LazyIrSchema, node_ctor_args: str) -> str: + signature = f"bool CanBeReused({node_ctor_args}) const" + if schema.properties.CanBeReusedDeclOnly: + return f"{signature};" + elif not schema.properties.CanBeReused: + return "" + value_comparison = [] + for arg in itertools.chain(schema.positional_values, schema.keyword_values): + if isinstance(arg.lazy_type, OptionalCType): + value_comparison.append( + f"nullable_operand(i++) == {arg.name}.value_or(kNullValue)" + ) + else: + value_comparison.append(f"operand(i++) == {arg.name}") + for arg in itertools.chain(schema.positional_scalars, schema.keyword_scalars): + if isinstance(arg.lazy_type, OptionalCType): + value_comparison.append( + f"((!this->{arg.name}&&!{arg.name}) || (this->{arg.name}&&{arg.name} && *(this->{arg.name}) == *{arg.name}))" + ) + else: + value_comparison.append(f"this->{arg.name} == {arg.name}") + value_comparison_str = " &&\n ".join(value_comparison) + + return f"""{signature} {{ + size_t i = 0; + return ({value_comparison_str}); + }}""" + + +@dataclass(frozen=True) +class GenLazyNativeFuncDefinition: + class_method_name: str + backend_index: BackendIndex + tensor_class: str + gen_forced_fallback_code: bool + backend_namespace: str + get_tensorlist: str + get_tensor_or_wrap_number: str + try_get_tensor: str + metrics_counter: str + create_tensor: str + create_from_first_tensor: bool + create_aten_from_ltc_tensor: str + tuple_aten_from_ltc_tensors: str + lazy_tensor_ptr: str + get_device_fn: str + + def lazy_tensor_decls(self, func: NativeFunction, schema: LazyIrSchema) -> str: + value_args = schema.filtered_args(values=True, scalars=False) + # Generates lazy_{name} variables for LazyTensors wrapping input tensors + lazy_tensor_decls: list[str] = [] + for arg in value_args: + if arg.is_wrapped_scalar: + if isinstance(arg.lazy_type, OptionalCType): + lazy_tensor_decls.append( + f"""auto node_{arg.name} = {arg.name} ? + std::make_optional(torch::lazy::LazyGraphExecutor::Get()-> + GetIrValueForScalarFromCodegen(*{arg.name}, *common_device)): + ::std::nullopt;""" + ) + else: + lazy_tensor_decls.append( + f"""auto node_{arg.name} = torch::lazy::LazyGraphExecutor::Get()-> + GetIrValueForScalarFromCodegen({arg.name}, *common_device);""" + ) + elif arg.is_symint_or_list: + continue # values are extracted in isValueType + elif isinstance(arg.lazy_type, BaseCType): + if arg.lazy_type.type is tensorListValueT: + lazy_tensor_decls.append( + f"auto lazy_{arg.name}_tensorlist = " + f"{self.backend_namespace}::{self.get_tensorlist}({arg.name});" + ) + else: + lazy_tensor_decls.append( + f"{self.lazy_tensor_ptr} lazy_{arg.name} = " + f"{self.backend_namespace}::{self.get_tensor_or_wrap_number}({arg.name}, *common_device);" + ) + elif isinstance(arg.lazy_type, OptionalCType): + if arg.lazy_type.elem != BaseCType(getValueT()): + raise AssertionError( + f"Expected OptionalCType elem to be {BaseCType(getValueT())}, " + f"got {arg.lazy_type.elem}" + ) + # TODO(alanwaketan): Maybe we want to apply GetLtcTensorOrCreateForWrappedNumber here, but hold it + # until we encounter a real world example. + lazy_tensor_decls.append( + f"{self.lazy_tensor_ptr} lazy_{arg.name} = " + f"{self.backend_namespace}::{self.try_get_tensor}({arg.name}.value_or(at::Tensor()));" + ) + else: + raise AssertionError( + f"TODO not sure if there are other valid types to handle here ({arg.lazy_type})" + ) + return ("\n ").join(lazy_tensor_decls) + + def force_eager_fallback( + self, + func: NativeFunction, + schema: LazyIrSchema, + metadata: BackendMetadata, + sig: DispatcherSignature | NativeSignature, + ) -> str: + if self.gen_forced_fallback_code: + return gen_fallback_code( + schema, sig, overload_name=func.func.name.overload_name + ) + return "" + + def metrics(self, func: NativeFunction, schema: LazyIrSchema) -> str: + return f"{self.metrics_counter};" + + def get_device(self, func: NativeFunction, schema: LazyIrSchema) -> str: + value_args = schema.filtered_args(values=True, scalars=False) + scalar_args = schema.filtered_args(values=False, scalars=True) + value_types_names = [f"{a.name}" for a in value_args if not a.is_wrapped_scalar] + optional_device = OptionalCType(BaseCType(deviceT)) + optional_devices = [ + a.name for a in scalar_args if a.lazy_type == optional_device + ] + if len(value_types_names) == 0 and len(optional_devices) == 0: + raise AssertionError("Expected at least one Value or Device type") + get_device_str = ( + f"{self.get_device_fn}({', '.join(value_types_names + optional_devices)})" + ) + return f"""auto common_device = {get_device_str}; + TORCH_INTERNAL_ASSERT(common_device); + """ + + def shape_inference(self, func: NativeFunction, schema: LazyIrSchema) -> str: + metadata = self.backend_index.get_kernel(func) + if metadata is None: + raise AssertionError(f"No kernel metadata found for {func.func.name}") + all_args = schema.filtered_args() + returns_length = len(schema.returns) + # call the meta kernel if it exists, to compute output shape/dtype for our IR + # Note [Generated LTC Shape Functions] + # LTC uses meta tensors from core to do shape inference when possible, and otherwise + # we generate a shape function declaration that needs to be manually implemented. + # How do we detect which ops are eligible to use meta tensors? + # In general we should be able to use meta tensors not just on structured operators, + # but also on composite operators that are implemented in terms of structured kernels. + # We don't currently have a way of knowing at codegen time which ops are implemented that way. + # This is the case for all view and view_copy operators however, so we're going to + # use them specifically for all of the view_copy ops (instead of manually writing shape rules for all of them). + is_view_copy_op = "view_copy" in func.tags + is_structured = func.structured or func.structured_delegate is not None + if is_structured or is_view_copy_op: + meta_out = """ +std::vector shapes{torch::lazy::Shape(out_meta.scalar_type(), out_meta.sizes().vec())};""" + if returns_length > 1: + + def this_shape(i: int) -> str: + return f"torch::lazy::Shape(std::get<{i}>(out_meta).scalar_type(), std::get<{i}>(out_meta).sizes().vec())" + + shapes_str = ",".join([this_shape(i) for i in range(returns_length)]) + meta_out = "std::vector shapes{" + shapes_str + "};" + + # Convert tensor args to the meta device and call it. + # (We can't pass in the input tensors directly, because they are "functional wrappers". + # If any of the meta kernels call a tensor op and redispatch, we don't want to hit the functionalize kernels.) + # Even at::meta:: functions might redispatch, e.g. if they call into view ops. + dispatcher_sig = DispatcherSignature.from_schema(func.func) + meta_conversion_str, meta_call_ctx = convert_to_meta_tensors(dispatcher_sig) + meta_call_args = [ + e.expr + for e in translate( + meta_call_ctx, dispatcher_sig.arguments(), method=False + ) + ] + if is_view_copy_op: + # view_copy ops always have a CompositeExplicitAutogradNonFunctional kernel + if not func.has_composite_explicit_autograd_non_functional_kernel: + raise AssertionError( + f"view_copy op {func.func.name} must have " + "CompositeExplicitAutogradNonFunctional kernel" + ) + dispatch_ns = "compositeexplicitautogradnonfunctional" + else: + dispatch_ns = "meta" + aten_name = schema.aten_name + # TODO: this is trolling + if func.func.has_symint() and metadata.supports_symint(): + aten_name += "_symint" + shape_str = f"""\ + {meta_conversion_str} + auto out_meta = at::{dispatch_ns}::{aten_name}({", ".join(meta_call_args)}); + {meta_out}""" + else: + shape_sig = ComputeShapeSignature( + metadata.kernel, func, symint=metadata.supports_symint() + ) + shape_str = f""" + auto shapes = {shape_sig.shape_call};""" + + shape_str += f""" + TORCH_INTERNAL_ASSERT(shapes.size() == {returns_length});""" + + # Calculating which dimensions are symbolic + func_schema_str = "aten::" + str(func.func) + shape_str += f""" + if(torch::lazy::symbolicShapeEnabled()){{ + std::vector inputs = {{ {", ".join(str(a.name) for a in all_args)} }}; + const char* schema_str = "{func_schema_str}"; + applySymbolicShapesOnLT(schema_str, inputs, shapes); + }} + """ + return shape_str + + def build_ir_node(self, func: NativeFunction, schema: LazyIrSchema) -> str: + node_ctor_input_str = node_ctor_inputs(schema) + return f"""torch::lazy::NodePtr node = torch::lazy::ReuseNode<{schema.node_name}>({node_ctor_input_str}); + if (!node) {{ + {self.shape_inference(func, schema)} + node = torch::lazy::MakeNode<{schema.node_name}>({node_ctor_input_str}, std::move(shapes)); + CacheNode(node); + }} + """ + + def create_lazy_tensor(self, first_tensor_name: str | None = None) -> str: + # xla uses an instance method for tensor creation, for the time being + if self.create_from_first_tensor: + # TODO(whc) remove this if XLA switches to using static method for creation + if first_tensor_name is None: + raise AssertionError("Requires first tensor to create lazy tensor") + return f"{first_tensor_name}.{self.create_tensor}" + return f"{self.backend_namespace}::{self.create_tensor}" + + def return_aten_tensor(self, func: NativeFunction, schema: LazyIrSchema) -> str: + returns_length = len(schema.returns) + value_args = schema.filtered_args(values=True, scalars=False) + value_types_names = [f"{a.name}" for a in value_args if not a.is_wrapped_scalar] + first_tensor_name = value_types_names[0] if len(value_types_names) > 0 else None + bridge_str = f"""auto result = {self.create_aten_from_ltc_tensor}( + {self.create_lazy_tensor(first_tensor_name)}(std::move(node), *common_device));""" + + if returns_length > 1: + if len(value_types_names) == 0: + raise AssertionError( + "Code below assumes there is at least one tensor arg" + ) + bridge_str = f"""std::vector<{self.lazy_tensor_ptr}> lazy_tensors; + for (int i = 0; i < {returns_length}; i++) {{ + lazy_tensors.push_back({self.create_lazy_tensor(first_tensor_name)}({getValueT()}(node, i), *common_device)); + }} + auto result = {self.tuple_aten_from_ltc_tensors}<{returns_length}>(lazy_tensors);""" + + if schema.name.name.inplace or func.func.is_out_fn(): + if returns_length != 1: + raise AssertionError( + "We assumed there was no such case where an op is an in-place variant " + f"and has tuple outputs, but got tuple of len {returns_length}." + ) + bridge_str = f"""lazy_{first_tensor_name}->SetInPlaceIrValue(node); + auto& result = {first_tensor_name};""" + + bridge_str += """ + return result;""" + return bridge_str + + @method_with_native_function + def __call__(self, func: NativeFunction) -> list[str]: + sig = kernel_signature(func, self.backend_index) + metadata = self.backend_index.get_kernel(func) + if metadata is None: + raise AssertionError(f"No kernel metadata found for {func.func.name}") + schema = LazyIrSchema(func.func, symint=metadata.supports_symint()) + return [ + f"""\ + {sig.decl(name=f"{self.class_method_name}::{metadata.kernel}")} {{ + {self.force_eager_fallback(func, schema, metadata, sig)} + {self.metrics(func, schema)} + {self.get_device(func, schema)} + {self.lazy_tensor_decls(func, schema)} + {self.build_ir_node(func, schema)} + {self.return_aten_tensor(func, schema)} + }}\n + """ + ] + + +class ComputeShapeSignature: + """ + Here we use the base name as the suffix of the signature to avoid generating for in-place variants. + """ + + def __init__(self, kernel_name: str, f: NativeFunction, *, symint: bool) -> None: + self.__schema = LazyIrSchema(f.func, symint=symint) + self.__dispatch_args = ", ".join( + [a.decl() for a in dispatcher.arguments(f.func, symint=symint)] + ) + self.__call_args = ", ".join( + [f"{arg.name}" for arg in self.__schema.filtered_args(generator=True)] + ) + self.__kernel_name = kernel_name + + def __decl_suffix(self) -> str: + return f"{self.__kernel_name}({self.__dispatch_args})" + + def __call_suffix(self) -> str: + return f"{self.__kernel_name}({self.__call_args})" + + @property + def shape_decl(self) -> str: + return f"TORCH_API std::vector compute_shape_{self.__decl_suffix()}" + + @property + def shape_call(self) -> str: + return f"torch::lazy::compute_shape_{self.__call_suffix()}" + + +@dataclass(frozen=True) +class GenLazyShapeInferenceDefinition: + backend_index: BackendIndex + tensor_class: str + + @method_with_native_function + def __call__(self, f: NativeFunction) -> list[str]: + metadata = self.backend_index.get_kernel(f) + if metadata is None: + raise AssertionError(f"No kernel metadata found for {f.func.name}") + + # See Note [Generated LTC Shape Functions] + is_view_copy_op = "view_copy" in f.tags + is_structured = f.structured or f.structured_delegate is not None + if is_structured or is_view_copy_op: + return [] + else: + shape_sig = ComputeShapeSignature( + metadata.kernel, f, symint=metadata.supports_symint() + ) + return ["\n".join([f"{shape_sig.shape_decl};"])] + + +def generate_non_native_lazy_ir_nodes( + non_native: list[dict[str, Any]], gen_lazy_ir: GenLazyIR +) -> list[str]: + """Generate the non-native lazy IR node classes""" + nodes = [] + for op in non_native: + # Set default properties for Non-Native IRs + properties = LazyIrProperties("ShapeCache", "CanBeReused", "LowerDeclOnly") + for p in op.get("properties", []): + setattr(properties, p, True) + + # non-native is assumed to want symint bindings if you wrote symint + schema = LazyIrSchema(FunctionSchema.parse(op["func"]), properties, symint=True) + schema.opkind = op.get("opkind") + nodes.append(gen_lazy_ir.gen(schema)[0]) + + return nodes diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/dest/lazy_ts_lowering.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/dest/lazy_ts_lowering.py new file mode 100644 index 0000000000000000000000000000000000000000..70161216d8e7c95e194b0d89b345e0da886ef989 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/dest/lazy_ts_lowering.py @@ -0,0 +1,48 @@ +from torchgen.api.lazy import LazyArgument, LazyIrSchema +from torchgen.api.types import OptionalCType + + +def ts_lowering_body(schema: LazyIrSchema) -> str: + # for now, we just want one IR class decl and soon after also the method defs + # and we use the functional version not out/inplace. + emplace_arguments = [] + + def get_value(arg: LazyArgument) -> str: + if isinstance(arg.lazy_type, OptionalCType): + return f"has_{arg.name} ? loctx->GetOutputOp(operand(i++)) : nullptr" + return "loctx->GetOutputOp(operand(i++))" + + for arg in schema.positional_args: + if arg.is_lazy_value: + emplace_arguments.append(get_value(arg)) + continue + emplace_arguments.append(f'"{arg.name}", {arg.name}') + + emplace_arguments_str = "\n ".join( + [f"arguments.emplace_back({a});" for a in emplace_arguments] + ) + emplace_kwarg_values = [ + f'"{arg.name}", {get_value(arg)}' for arg in schema.keyword_values + ] + emplace_kwarg_scalars = [ + f'"{arg.name}", {arg.name}' for arg in schema.keyword_scalars + ] + emplace_kwarguments = "\n ".join( + [ + f"kwarguments.emplace_back({a});" + for a in emplace_kwarg_values + emplace_kwarg_scalars + ] + ) + return f"""\ + std::vector arguments; + std::vector kwarguments; + arguments.reserve({len(emplace_arguments)}); + kwarguments.reserve({len(emplace_kwarg_values + emplace_kwarg_scalars)}); + size_t i = 0; + {emplace_arguments_str} + {emplace_kwarguments} + torch::lazy::TSOpVector {schema.aten_name}_out = torch::lazy::LowerTSBuiltin(function, op().op, arguments, kwarguments); + TORCH_CHECK_EQ({schema.aten_name}_out.size(), {len(schema.returns)}); + + return {schema.aten_name}_out; +""" diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/dest/native_functions.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/dest/native_functions.py new file mode 100644 index 0000000000000000000000000000000000000000..05e252d09f9c16888dec66045a92b8aefa19b667 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/dest/native_functions.py @@ -0,0 +1,84 @@ +from __future__ import annotations + +import torchgen.api.meta as meta +import torchgen.api.structured as structured +from torchgen.api.types import kernel_signature +from torchgen.context import with_native_function_and_index +from torchgen.model import BackendIndex, NativeFunction, NativeFunctionsGroup +from torchgen.utils import mapMaybe + + +def torch_api_key_word_prefix(bankend_index: BackendIndex) -> str: + if bankend_index.external: + return "" + + # Although Intel GPU ATen library is out-of-tree, it still utilizes torchgen to produce structured + # kernels. Regarding these produced structured kernels, they should be visible for the Intel GPU ATen + # library. Therefore, we need to add "TORCH_XPU_API" prefix to these structured kernels, + # rather than "TORCH_API". Because the semantic of "TORCH_API" is "hidden" for out-of-tree backends. + # For other in-tree backends like cpu and cuda, they still use "TORCH_API" prefix with "visible" semantic. + device_torch_api_key_word_mapping = { + "XPU": "TORCH_XPU_API", + } + + return ( + device_torch_api_key_word_mapping.get( + bankend_index.dispatch_key.name, "TORCH_API" + ) + + " " + ) + + +@with_native_function_and_index +def gen_unstructured(f: NativeFunction, backend_index: BackendIndex) -> str | None: + sig = kernel_signature(f, backend_index) + metadata = backend_index.get_kernel(f) + if metadata is None: + return None + if "legacy::" in metadata.kernel: + return None + else: + prefix = "static" if backend_index.external else "TORCH_API" + return f"{prefix} {sig.decl(name=metadata.kernel)};" + + +@with_native_function_and_index +def gen_structured(g: NativeFunctionsGroup, backend_index: BackendIndex) -> list[str]: + meta_name = meta.name(g) + out_args = structured.impl_arguments(g) + metadata = backend_index.get_kernel(g) + if metadata is None: + return [] + prefix = torch_api_key_word_prefix(backend_index) + return [ + f"""\ +struct {prefix}structured_{metadata.kernel} : public at::meta::structured_{meta_name} {{ +void impl({", ".join(a.decl() for a in out_args)}); +}}; +""" + ] + + +# Generates NativeFunctions.h, a list of forward declarations of all +# actual kernel definitions we keep in aten/src/ATen/native/ +@with_native_function_and_index +def compute_native_function_declaration( + g: NativeFunctionsGroup | NativeFunction, backend_index: BackendIndex +) -> list[str]: + metadata = backend_index.get_kernel(g) + if isinstance(g, NativeFunctionsGroup): + if metadata is not None and metadata.structured: + if backend_index.external: + # Structured hasn't been tested with external backends yet. + raise AssertionError( + "Structured external backend functions are not implemented yet." + ) + else: + return gen_structured(g, backend_index) + else: + return list( + mapMaybe(lambda f: gen_unstructured(f, backend_index), g.functions()) + ) + else: + x = gen_unstructured(g, backend_index) + return [] if x is None else [x] diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/dest/register_dispatch_key.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/dest/register_dispatch_key.py new file mode 100644 index 0000000000000000000000000000000000000000..55694fb602f51e50e66ede5002e79ab72560bdfa --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/dest/register_dispatch_key.py @@ -0,0 +1,1035 @@ +from __future__ import annotations + +import itertools +import textwrap +from dataclasses import dataclass +from typing import Literal, TYPE_CHECKING +from typing_extensions import assert_never + +import torchgen.api.cpp as cpp +import torchgen.api.meta as meta +import torchgen.api.structured as structured +from torchgen.api.translate import translate +from torchgen.api.types import ( + BaseCType, + Binding, + ConstRefCType, + CppSignature, + CppSignatureGroup, + DispatcherSignature, + Expr, + kernel_signature, + MutRefCType, + NamedCType, + NativeSignature, + tensorT, +) +from torchgen.context import method_with_native_function, native_function_manager +from torchgen.model import ( + Argument, + BackendIndex, + DeviceCheckType, + DispatchKey, + gets_generated_out_inplace_wrapper, + is_cuda_dispatch_key, + NativeFunction, + NativeFunctionsGroup, + SchemaKind, + TensorOptionsArguments, +) +from torchgen.utils import mapMaybe, Target + + +if TYPE_CHECKING: + from torchgen.selective_build.selector import SelectiveBuilder + + +def gen_registration_headers( + backend_index: BackendIndex, + per_operator_headers: bool, + rocm: bool, +) -> list[str]: + if per_operator_headers: + headers = ["#include "] + else: + headers = ["#include "] + + if backend_index.dispatch_key in (DispatchKey.CPU, DispatchKey.Meta): + headers.append("#include ") + elif backend_index.dispatch_key == DispatchKey.CUDA: + if rocm: + headers.append("#include ") + else: + headers.append("#include ") + elif backend_index.dispatch_key == DispatchKey.MPS: + headers.append("#include ") + elif backend_index.dispatch_key == DispatchKey.XPU: + # XPU specific, this header resides in third_party/torch-xpu-ops + headers.append("#include ") + elif backend_index.dispatch_key == DispatchKey.MTIA: + headers.append("#include ") + elif per_operator_headers: + headers += [ + "#include ", + "#include ", + "#include ", + "#include ", + ] + else: + headers.append("#include ") + + headers.append("#include ") + return headers + + +def gen_empty_impl_names( + backend_index: BackendIndex, +) -> tuple[str | None, str | None]: + empty_impl = None + empty_strided_impl = None + + if backend_index.dispatch_key in ( + DispatchKey.Meta, + DispatchKey.CPU, + DispatchKey.CUDA, + DispatchKey.MPS, + DispatchKey.XPU, + DispatchKey.MTIA, + ): + dispatch = str(backend_index.dispatch_key).lower() + empty_impl = f"at::detail::empty_{dispatch}" + empty_strided_impl = f"at::detail::empty_strided_{dispatch}" + elif backend_index.dispatch_key in ( + DispatchKey.CompositeExplicitAutogradNonFunctional, + DispatchKey.QuantizedCPU, + DispatchKey.QuantizedCUDA, + DispatchKey.XPU, + ): + empty_impl = "at::empty" + empty_strided_impl = "at::empty_strided" + + return empty_impl, empty_strided_impl + + +def gen_create_out_helper(backend_index: BackendIndex) -> list[str]: + if backend_index.dispatch_key == DispatchKey.Meta: + empty_options = "options.device(at::kMeta)" + else: + empty_options = "options" + + empty_impl, empty_strided_impl = gen_empty_impl_names(backend_index) + if empty_impl is None: + return [] + + return [ + f""" +Tensor create_out(IntArrayRef sizes, IntArrayRef strides, const TensorOptions &options) {{ + if (strides.empty()) {{ + return {empty_impl}(sizes, {empty_options}); + }} else {{ + return {empty_strided_impl}(sizes, strides, {empty_options}); + }} +}} +""" + ] + + +def gen_maybe_create_proxy_helper(backend_index: BackendIndex) -> list[str]: + _, empty_strided_impl = gen_empty_impl_names(backend_index) + return ( + [] + if empty_strided_impl is None + else [ + f""" +std::optional maybe_create_proxy(const Tensor &out, IntArrayRef sizes, IntArrayRef strides, const TensorOptions &options) {{ + if (out.strides() != strides) {{ + return {empty_strided_impl}(sizes, strides, options); + }} + return std::nullopt; +}} +""" + ] + ) + + +def gen_resize_out_helper(backend_index: BackendIndex) -> list[str]: + if backend_index.dispatch_key == DispatchKey.CompositeExplicitAutogradNonFunctional: + # The function isn't used by this key (since only functional ops have a kernel for this key), + # so we need to not include it to avoid a defined-but-not-used error. + return [] + return [ + """ +void resize_out(const Tensor &out, IntArrayRef sizes, IntArrayRef strides, const TensorOptions &options) { + TORCH_CHECK(options.dtype() == out.dtype(), + "Expected out tensor to have dtype ", options.dtype(), ", but got ", out.dtype(), " instead"); + TORCH_CHECK(options.device() == out.device(), + "Expected out tensor to have device ", options.device(), ", but got ", out.device(), " instead"); + const bool resized = at::native::resize_output(out, sizes); + // Only restride if a resize occurred; otherwise we ignore the (advisory) + // strides from the meta function and directly use the output tensor's + // preexisting strides + if (resized) { + if (!strides.empty()) { + TORCH_INTERNAL_ASSERT(!options.memory_format_opt().has_value()); + // TODO: avoid the redispatch here + out.as_strided_(sizes, strides); + } else if (options.memory_format_opt().has_value()) { + out.unsafeGetTensorImpl()->empty_tensor_restride(*options.memory_format_opt()); + } + } +} +""" + ] + + +def gen_check_inplace_helper(backend_index: BackendIndex) -> list[str]: + return [ + """ +void check_inplace(const Tensor &self, IntArrayRef sizes, const TensorOptions &options) { + // These checks are needed on those operators that: + // 1) don't use 'TensorIterator' (e.g. 'addmm' and 'baddbmm') + // 2) have particular typing rules (e.g. 'cumsum' and 'cumprod') + // For other operators (e.g. 'add'), 'TensorIterator' already checks + // these things separately. + TORCH_CHECK(options.dtype() == self.dtype(), + "Bad in-place call: ", + "input tensor dtype ", self.dtype(), " and output tensor dtype ", options.dtype(), " should match"); + TORCH_CHECK(options.device() == self.device(), + "Bad in-place call: ", + "input tensor device ", self.device(), " and output tensor device ", options.device(), " should match"); + TORCH_CHECK(sizes == self.sizes(), + "Bad in-place call: ", + "input tensor size ", self.sizes(), " and output tensor size ", sizes, " should match"); +} +""" + ] + + +def gen_registration_helpers(backend_index: BackendIndex) -> list[str]: + return [ + 'C10_DIAGNOSTIC_PUSH_AND_IGNORED_IF_DEFINED("-Wunused-function")', + *gen_create_out_helper(backend_index), + *gen_resize_out_helper(backend_index), + *gen_check_inplace_helper(backend_index), + *gen_maybe_create_proxy_helper(backend_index), + "C10_DIAGNOSTIC_POP()", + ] + + +# Generates Register{dispatch}.cpp (e.g., RegisterCPU.cpp). +# +# - The primary function of this file is to register all of the +# implementations for the given dispatch key to the dispatcher, +# so they are available for use in PyTorch. If dispatch is +# None, we generate schema (def) registrations and catchall +# registrations. +# - The secondary function of this file is to generate a wrapper +# around functions. In CPUType these wrappers do nothing +# (and should be removed), but in other cases they handle +# DeviceGuard. A small extra benefit of wrappers is they +# are not overloaded, so they can be used in the registration +# API without having to disambiguate which overload you want +# (as would be the case if you directly registered native:: +# functions). +# - The tertiary function of this file is to generate *static* +# cpp API bindings which can be used to bypass dispatcher +# directly to kernels, but with user-friendly cpp-style API +@dataclass(frozen=True) +class RegisterDispatchKey: + backend_index: BackendIndex + + target: Literal[ + Target.ANONYMOUS_DEFINITION, + Target.NAMESPACED_DEFINITION, + Target.NAMESPACED_DECLARATION, + Target.REGISTRATION, + ] + + # Selector object to determine which operators to generate + # registration code for. + selector: SelectiveBuilder + + # Whether or not we are actually code-genning for ROCm + rocm: bool + + # Whether or not to generate symint registrations or not. External users + # of codegen who don't care about symints can set this to false to get + # non-SymInt codegen + symint: bool + + # The class that all unstructured native functions live under. This is used to improve + # compiler error messages when a kernel writer adds a native function with the wrong signature. + # This is only used in unstructured kernels, since structured kernels already live in a class. + # Finally, this field is currently Optional because it is only used by external backends. + # It would be nice if we can add the same logic to in-tree kernels too, but that requires updating + # all of the existing kernel signatures scattered across aten/src/ATen/native. + class_method_name: str | None + + # Only set to true in lightweight dispatch. If lightweight dispatch is enabled we are registering + # operators into JIT op registry, thus we need to avoid generating code to register into the dispatcher. + skip_dispatcher_op_registration: bool + + @staticmethod + def gen_device_check( + type: DeviceCheckType, args: list[Argument], method_name: str + ) -> str: + if type == DeviceCheckType.NoCheck: + return " // No device check\n" + + device_check = "std::optional common_device = std::nullopt;\n" + device_check += "(void)common_device; // Suppress unused variable warning\n" + for arg in args: + # Only tensor like arguments are eligible + if arg.type.is_tensor_like(): + device_check += f""" + c10::impl::check_and_update_common_device(common_device, {arg.name}, "{method_name}", "{arg.name}");""" + return device_check + + @method_with_native_function + def __call__(self, f: NativeFunctionsGroup | NativeFunction) -> list[str]: + if isinstance(f, NativeFunctionsGroup): + g: NativeFunctionsGroup = f + # Note: We call gen_structured() if the operator is marked structured, regardless of the backend. + # gen_structured() has special logic to handle auto-generated kernels. + if g.structured: + return self.gen_structured(g) + else: + return list( + mapMaybe(lambda f: self.gen_unstructured(f, g), g.functions()) + ) + elif isinstance(f, NativeFunction): + r = self.gen_unstructured(f) + return [] if r is None else [r] + else: + assert_never(f) + + def wrapper_kernel_sig( + self, f: NativeFunction + ) -> NativeSignature | DispatcherSignature: + # The prefix is just to ensure uniqueness. The Dispatcher API doesn't guarantee unique kernel names. + return DispatcherSignature.from_schema( + f.func, + prefix=f"wrapper_{self.backend_index.dispatch_key}_{f.func.name.overload_name}_", + symint=self.symint, + ) + + def gen_out_inplace_wrapper( + self, f: NativeFunction, g: NativeFunctionsGroup | None + ) -> str | None: + if g is None: + return None + k = f.func.kind() + if k is SchemaKind.inplace: + copy_op = "at::_copy_from" + elif k is SchemaKind.out: + copy_op = "at::_copy_from_and_resize" + else: + raise AssertionError("gen_out_inplace_wrapper called on a functional op") + + sig = self.wrapper_kernel_sig(f) + name = sig.name() + + func_res = f"{name}_tmp" + return_names = cpp.return_names(f) + if len(return_names) > 1: + updates = "\n ".join( + f"{copy_op}(std::get<{i}>({func_res}), {ret_name});" + for i, ret_name in enumerate(return_names) + ) + returns = f"{sig.returns_type().cpp_type()}({', '.join(return_names)})" + elif len(return_names) == 1: + ret_name = return_names[0] + updates = f"{copy_op}({func_res}, {ret_name});" + returns = ret_name + else: + if len(f.func.arguments.out) != 1: + raise AssertionError( + f"Expected exactly 1 out argument, got {len(f.func.arguments.out)}" + ) + returns = "" + out_arg = f.func.arguments.out[0] + if out_arg.type.is_list_like(): + updates = f"""\ + for (int64_t i = 0; i < {func_res}.size(); ++i) {{ + {copy_op}({func_res}[i], {out_arg.name}[i]); + }}""" + else: + updates = f"{copy_op}({func_res}, {out_arg.name});" + + functional_sig = self.wrapper_kernel_sig(g.functional) + wrapper_name = sig.name() + + return f"""\ +{sig.defn(name=wrapper_name)} {{ + auto {func_res} = {functional_sig.name()}({", ".join(e.expr for e in translate(sig.arguments(), functional_sig.arguments()))}); + {updates} + return {returns}; +}} +""" + + def gen_structured(self, g: NativeFunctionsGroup) -> list[str]: + metadata = self.backend_index.get_kernel(g) + if self.backend_index.dispatch_key == DispatchKey.Meta: + if self.backend_index.has_kernel(g.out): + raise AssertionError( + "Do not explicitly specify Meta dispatch key on structured " + "functions, they will be automatically generated for you" + ) + elif ( + self.backend_index.dispatch_key + == DispatchKey.CompositeExplicitAutogradNonFunctional + ): + if self.backend_index.has_kernel(g.out): + raise AssertionError( + "Do not explicitly specify CompositeExplicitAutograd dispatch key on " + "structured functions, they will be automatically generated for you" + ) + elif metadata is None or not metadata.structured: + return list(mapMaybe(lambda f: self.gen_unstructured(f, g), g.functions())) + structured_gen = StructuredRegisterDispatchKey( + self.backend_index, + self.target, + self.selector, + self.rocm, + self.symint, + self.class_method_name, + self.skip_dispatcher_op_registration, + g, + ) + return list(mapMaybe(structured_gen.gen_one, g.functions())) + + def gen_unstructured( + self, f: NativeFunction, g: NativeFunctionsGroup | None = None + ) -> str | None: + with native_function_manager(f): + inplace_meta = False + gets_out_inplace_wrapper = False + if not self.backend_index.has_kernel(f): + if ( + self.backend_index.dispatch_key == DispatchKey.Meta + and f.func.kind() is SchemaKind.inplace + and + # Defer to composites for meta implementation + not f.has_composite_kernel + and + # Inplace list operations are not supported + len(f.func.returns) == 1 + ): + inplace_meta = True + elif ( + not self.backend_index.use_out_as_primary + and g is not None + and gets_generated_out_inplace_wrapper(f, g, self.backend_index) + ): + # We want to generate inplace/out wrappers, that don't have a kernel for the backend. + gets_out_inplace_wrapper = True + else: + return None + if f.manual_kernel_registration: + return None + + if ( + self.target is Target.REGISTRATION + and not self.selector.is_native_function_selected(f) + ): + return None + + sig = self.wrapper_kernel_sig(f) + + name = sig.name() + returns_type = sig.returns_type().cpp_type() + args = sig.arguments() + args_str = ", ".join(a.defn() for a in args) + + # See Note [Direct dispatch bindings] + cpp_sig_group = CppSignatureGroup.from_native_function( + f, method=False, fallback_binding=False + ) + + # TODO: dedupe this with the structured codegen + if self.target is Target.NAMESPACED_DECLARATION: + result = "" + for cpp_sig in cpp_sig_group.signatures(symint=self.symint): + result += f"TORCH_API {cpp_sig.decl()};\n" + return result + elif self.target is Target.NAMESPACED_DEFINITION: + + def generate_defn(cpp_sig: CppSignature) -> str: + return f""" +{cpp_sig.defn()} {{ +return {sig.name()}({", ".join(e.expr for e in translate(cpp_sig.arguments(), sig.arguments()))}); +}} +""" + + result = "" + for cpp_sig in cpp_sig_group.signatures(symint=self.symint): + result += generate_defn(cpp_sig) + return result + + elif self.target is Target.ANONYMOUS_DEFINITION: + # short circuit for inplace_meta + if inplace_meta: + if f.func.arguments.self_arg is None: + raise AssertionError( + "Expected self_arg to be non-None for inplace_meta" + ) + self_arg_name = f.func.arguments.self_arg.argument.name + # TODO: handle in place on tensor list + return f""" +{returns_type} {name}({args_str}) {{ + TORCH_CHECK_NOT_IMPLEMENTED({self_arg_name}.is_meta(), + "Cannot inplace into non-meta tensor with meta tensor argument"); + return {self_arg_name}; +}} +""" + + # short circuit for generated inplace/out wrappers + if gets_out_inplace_wrapper: + return self.gen_out_inplace_wrapper(f, g) + + metadata = self.backend_index.get_kernel(f) + if metadata is None: + return None + if self.class_method_name is None: + impl_name = f"{metadata.cpp_namespace}::{metadata.kernel}" + else: + impl_name = f"{metadata.cpp_namespace}::{self.class_method_name}::{metadata.kernel}" + + kernel_sig = kernel_signature(f, self.backend_index) + + args_exprs_str = ", ".join( + e.expr + for e in translate( + sig.arguments(), kernel_sig.arguments(), method=False + ) + ) + + device_check = " // No device check\n" + # Backends that require device guards presumably also require device checks. + if self.backend_index.device_guard: + device_check_args = itertools.chain( + f.func.arguments.out, f.func.arguments.flat_positional + ) + device_check = RegisterDispatchKey.gen_device_check( + f.device_check, list(device_check_args), name + ) + + device_guard = "// DeviceGuard omitted" # default + if f.device_guard and self.backend_index.device_guard: + has_tensor_options = any( + isinstance(a, TensorOptionsArguments) + for a in f.func.arguments.non_out + ) + if has_tensor_options: + # kernel is creating a tensor + device_guard = """ + const DeviceGuard device_guard(device_or_default(device));""" + + # CUDA requires special handling + if is_cuda_dispatch_key(self.backend_index.dispatch_key): + device_guard = f"globalContext().lazyInitDevice(c10::DeviceType::CUDA);\n{device_guard}" + else: + # kernel is operating on existing tensors + + # There is precedence for which argument we use to do + # device guard. This describes the precedence order. + self_arg = ( + [f.func.arguments.self_arg.argument] + if f.func.arguments.self_arg is not None + else [] + ) + candidate_args = itertools.chain( + self_arg, + f.func.arguments.out, + f.func.arguments.flat_positional, + ) + + # Only tensor like arguments are eligible + device_of = next( + ( + f"{a.name}" + for a in candidate_args + if a.type.is_tensor_like() + ), + None, + ) + if device_of is not None: + device_guard = f"const OptionalDeviceGuard device_guard(device_of({device_of}));" + + return f"""\ +namespace {{ + +{returns_type} {name}({args_str}) {{ + {device_check} + + {device_guard} + return {impl_name}({args_exprs_str}); +}} + +}} // anonymous namespace +""" + + elif self.target is Target.REGISTRATION: + if f.manual_kernel_registration or self.skip_dispatcher_op_registration: + return None + else: + payload = f"TORCH_FN({name})" + return f'm.impl("{f.func.name}",\n{payload});\n' + else: + assert_never(self.target) + + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # +# +# STRUCTURED +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # + + +@dataclass(frozen=True) +class StructuredRegisterDispatchKey(RegisterDispatchKey): + g: NativeFunctionsGroup + + def gen_class_set_output_functions( + self, k: SchemaKind, parent_class: str, generate_super: bool + ) -> str: + if generate_super: + set_output_super = f"{parent_class}::set_output_raw_strided(output_idx, sizes, strides, options, names);" + else: + set_output_super = "" + + def gen_set_output_function(name: str, maybe_create_proxy: bool) -> str: + return f""" +void set_output_{name}( + int64_t output_idx, IntArrayRef sizes, IntArrayRef strides, + TensorOptions options, DimnameList names +) override {{ +{textwrap.indent(self.gen_class_set_output_body(k, maybe_create_proxy), " ")} + if (!names.empty()) {{ + namedinference::propagate_names(outputs_[output_idx], names); + }} + // super must happen after, so that downstream can use maybe_get_output + // to retrieve the output +{textwrap.indent(set_output_super, " ")} +}} +""" + + return f""" +{gen_set_output_function("strided", maybe_create_proxy=True)} +{gen_set_output_function("raw_strided", maybe_create_proxy=False)} +""" + + def gen_class_set_output_body(self, k: SchemaKind, maybe_create_proxy: bool) -> str: + if self.backend_index.dispatch_key in [ + DispatchKey.CUDA, + DispatchKey.MPS, + DispatchKey.XPU, + DispatchKey.CompositeExplicitAutogradNonFunctional, + ]: + maybe_set_guard = """ +auto current_device = guard_.current_device(); +if (C10_UNLIKELY(current_device.has_value())) { + TORCH_INTERNAL_ASSERT(*current_device == options.device(), + "structured kernels don't support multi-device outputs"); +} else { + guard_.reset_device(options.device()); +} +""" + maybe_set_guard_line = maybe_set_guard + "\n" + else: + maybe_set_guard_line = maybe_set_guard = "" + + if maybe_create_proxy: + create_proxy = """ +auto maybe_proxy = maybe_create_proxy(out, sizes, strides, options); +if (C10_UNLIKELY(maybe_proxy.has_value())) { + proxy_outputs_[output_idx] = std::move(maybe_proxy).value(); +} +""" + else: + create_proxy = "" + + if k is SchemaKind.functional: + if self.backend_index.dispatch_key not in ( + DispatchKey.Meta, + DispatchKey.CPU, + DispatchKey.CUDA, + DispatchKey.MPS, + DispatchKey.XPU, + DispatchKey.MTIA, + DispatchKey.CompositeExplicitAutogradNonFunctional, + ): + raise AssertionError( + f"Unexpected dispatch key {self.backend_index.dispatch_key} " + "for functional schema" + ) + return f"""{maybe_set_guard_line} +outputs_[output_idx] = create_out(sizes, strides, options);""" + elif k is SchemaKind.inplace: + return f"""{maybe_set_guard_line} +const auto& out = outputs_[output_idx].get(); +check_inplace(out, sizes, options); +{create_proxy}""" + elif k is SchemaKind.out: + return f"""{maybe_set_guard_line} +const auto& out = outputs_[output_idx].get(); +resize_out(out, sizes, strides, options); +{create_proxy}""" + elif k is SchemaKind.mutable or k is SchemaKind.scratch: + raise AssertionError( + f"{k} structured operators are currently not supported" + ) + else: + assert_never(k) + + # returns the definition of a ctor, as well as how to construct + # this class to a variable named op + def gen_class_ctor(self, k: SchemaKind, class_name: str, returns: int) -> str: + if k is SchemaKind.functional: + return "" + elif k is SchemaKind.inplace: + # TODO: Make sure out argument is guaranteed to be self + return f"{class_name}(Tensor& self) : outputs_{{std::ref(self)}} {{}}" + elif k is SchemaKind.out: + out_args = ", ".join(f"Tensor& out{i}" for i in range(returns)) + out_refs = ", ".join(f"std::ref(out{i})" for i in range(returns)) + return f"{class_name}({out_args}) : outputs_{{ {out_refs} }} {{}}" + elif k is SchemaKind.mutable or k is SchemaKind.scratch: + raise AssertionError( + f"{k} structured operators are currently not supported" + ) + else: + assert_never(k) + + def gen_class( + self, + f: NativeFunction, + k: SchemaKind, + *, + class_name: str, + parent_class: str, + generate_super: bool, + ) -> str: + if k is SchemaKind.functional: + output_type = "Tensor" + output_value = "outputs_[output_idx]" + proxy_field = "" + elif k is SchemaKind.inplace: + output_type = "std::reference_wrapper" + output_value = "proxy_outputs_[output_idx].has_value() ? *proxy_outputs_[output_idx] : outputs_[output_idx].get()" + proxy_field = f"std::array<::std::optional, {len(f.func.returns)}> proxy_outputs_;" + elif k is SchemaKind.out: + output_type = "std::reference_wrapper" + output_value = "proxy_outputs_[output_idx].has_value() ? *proxy_outputs_[output_idx] : outputs_[output_idx].get()" + proxy_field = f"std::array<::std::optional, {len(f.func.returns)}> proxy_outputs_;" + else: + raise RuntimeError(f"Unsupported SchemaKind {k}") + + if self.backend_index.dispatch_key == DispatchKey.CUDA: + guard_field = "c10::cuda::OptionalCUDAGuard guard_;" + elif ( + self.backend_index.dispatch_key + == DispatchKey.CompositeExplicitAutogradNonFunctional + ): + guard_field = "c10::OptionalDeviceGuard guard_;" + elif self.backend_index.dispatch_key == DispatchKey.MPS: + # TODO: Move to OptionalMPSGuard. + guard_field = "c10::OptionalDeviceGuard guard_;" + elif self.backend_index.dispatch_key == DispatchKey.XPU: + guard_field = "c10::OptionalDeviceGuard guard_;" + elif self.backend_index.dispatch_key == DispatchKey.MTIA: + guard_field = "c10::OptionalDeviceGuard guard_;" + else: + guard_field = "" + + indent = " " * 4 + class_ctor_str = self.gen_class_ctor(k, class_name, len(f.func.returns)) + lines = ( + f"struct {class_name} final : public {parent_class} {{", + f"{textwrap.indent(class_ctor_str, indent)}", + f"{textwrap.indent(self.gen_class_set_output_functions(k, parent_class, generate_super), indent)}", + " const Tensor& maybe_get_output(int64_t output_idx) override {", + f" return {output_value};\n", # type: ignore[possibly-undefined] # TODO: audit + " }", + # type: ignore[possibly-undefined] # TODO: audit + f" std::array<{output_type}, {len(f.func.returns)}> outputs_;", + f"{textwrap.indent(proxy_field, indent)}", # type: ignore[possibly-undefined] # TODO: audit + f"{textwrap.indent(guard_field, indent)}", + "};", + ) + return "\n".join(line for line in lines if line) + + @method_with_native_function + def gen_one(self, f: NativeFunction) -> str | None: + if f.manual_kernel_registration: + raise AssertionError( + f"Function {f.func.name} has manual_kernel_registration=True" + ) + + if ( + self.target is Target.REGISTRATION + and not self.selector.is_native_function_selected(f) + ): + return None + + # TODO: Now, there is something interesting going on here. In the code below, + # we generate CompositeExplicitAutogradNonFunctional implementations of functional and inplace + # based on the out implementation. But in fact, out is definable by + # functional too (just not very efficiently), and this is honestly the + # MORE likely situation for a backend implementer. How do we pick? + # Well, taking a page from Haskell type classes and default methods, + # we could conceivably register a circular definition (out in terms + # of functional, and functional in terms of out) and just require + # someone to implement one or the other. We'd have to do a little bit + # of work to not register one of these "weak" definitions unless there + # is a strong definition somewhere in the DAG! So it's not implemented yet. + if ( + self.backend_index.dispatch_key + == DispatchKey.CompositeExplicitAutogradNonFunctional + and f.func.kind() is SchemaKind.out + ): + # Never generate a default implementation for out, that's what you + # have to define as a backend implementer + return None + + # Note [Direct dispatch bindings] + # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + # Signature of the non-dispatched function we'll expose in a header + # (e.g., at::cpu::add). We don't generate methods (TODO: do this + # when CPUTensor class is a thing); nor do we generate fallback + # bindings for manual_cpp_binding functions. + cpp_sig_group = CppSignatureGroup.from_native_function( + f, method=False, fallback_binding=False + ) + + # Signature of the wrapper function we'll register to the dispatcher + kern = self.backend_index.get_kernel(f) + sig = NativeSignature( + f.func, + prefix=f"wrapper_{self.backend_index.dispatch_key}_", + symint=kern is not None and kern.supports_symint(), + ) + + if self.target is Target.NAMESPACED_DECLARATION: + result = "" + for cpp_sig in cpp_sig_group.signatures(symint=self.symint): + result += f"TORCH_API {cpp_sig.decl()};\n" + return result + + elif self.target is Target.NAMESPACED_DEFINITION: + + def generate_defn(cpp_sig: CppSignature) -> str: + return f""" +{cpp_sig.defn()} {{ +return {sig.name()}({", ".join(e.expr for e in translate(cpp_sig.arguments(), sig.arguments()))}); +}} +""" + + result = "" + for cpp_sig in cpp_sig_group.signatures(symint=self.symint): + result += generate_defn(cpp_sig) + return result + + elif self.target is Target.ANONYMOUS_DEFINITION: + k = f.func.kind() + + # Construct the body of the wrapper function with signature sig + sig_body = [] + # We'll use context to keep track of any variables we've brought + # into scope while generating code + context: list[Binding | Expr] = list(sig.arguments()) + + # Initialize the class corresponding to this structured + # operator; feeding it the output argument(s) if it is known + if self.backend_index.dispatch_key is DispatchKey.Meta: + class_name = f"structured_{meta.name(self.g)}_meta_{k.name}" + parent_class = f"at::meta::structured_{meta.name(self.g)}" + elif ( + self.backend_index.dispatch_key + is DispatchKey.CompositeExplicitAutogradNonFunctional + ): + # TODO: dedup this branch + class_name = f"structured_{meta.name(self.g)}_default_backend_{k.name}" + parent_class = f"at::meta::structured_{meta.name(self.g)}" + else: + metadata = self.backend_index.get_kernel(self.g) + if metadata is None: + raise AssertionError( + f"No kernel metadata found for {self.g.functional.func.name}" + ) + class_name = f"structured_{metadata.kernel}_{k.name}" + parent_class = f"{metadata.cpp_namespace}::structured_{metadata.kernel}" + + if self.backend_index.device_guard: + device_check_args = itertools.chain( + f.func.arguments.out, f.func.arguments.flat_positional + ) + sig_body.append( + RegisterDispatchKey.gen_device_check( + f.device_check, list(device_check_args), sig.name() + ) + ) + + if k is SchemaKind.functional: + sig_body.append(f"{class_name} op;") + elif k is SchemaKind.inplace: + sig_body.append(f"{class_name} op(self);") + elif k is SchemaKind.out: + out_args_str = ", ".join(a.name for a in f.func.arguments.out) + sig_body.append(f"{class_name} op({out_args_str});") + + # Translate the input native arguments into structured + # arguments for the meta call + meta_exprs = ", ".join( + e.expr + for e in translate( + context, structured.meta_arguments(self.g), method=False + ) + ) + + if self.g.out.precomputed: + # If this function group has precomputed elements, the meta function + # returns a struct containing them which must be saved so that it + # can be unpacked when generating code to call the impl. + sig_body.append(f"auto precompute = op.meta({meta_exprs});") + + # Put all of the contents of the precompute struct into the context + # so that translate will be able to return the correct args for the + # call to the impl. + precomputed_values = [ + *self.g.out.precomputed.replace.values(), + self.g.out.precomputed.add, + ] + for precomputed_elems in precomputed_values: + context.extend( + Expr( + expr=f"precompute.{arg.name}", + type=structured.argument_type(arg, binds=arg.name), + ) + for arg in precomputed_elems + ) + + # Add a use of the precompute struct so FB internal compilers don't + # complain that there is an unused variable. + sig_body.append("(void)precompute;") + else: + sig_body.append(f"op.meta({meta_exprs});") + + # After running meta, op.outputs_ is guaranteed to be valid; + # add it to the context + out_args = structured.out_arguments(self.g) + for i, out_arg in enumerate(out_args): + if ConstRefCType(BaseCType(tensorT)) != out_arg.nctype.type: + raise AssertionError( + f"Expected out_arg type to be ConstRefCType(BaseCType(tensorT)), " + f"got {out_arg.nctype.type}" + ) + + if k is SchemaKind.out: + expr = f"op.maybe_get_output({i})" + else: + expr = f"op.outputs_[{i}]" + + context.append( + Expr( + expr=expr, + # TODO: Stop hardcoding that the output type is a Tensor. Note + # that for the codegen here this is fine because outputs_ is + # hardcoded to be tensor already + type=NamedCType( + out_arg.nctype.name, MutRefCType(BaseCType(tensorT)) + ), + ) + ) + + # With the expanded context, do the impl call (if not a meta + # function) + if ( + self.backend_index.dispatch_key + == DispatchKey.CompositeExplicitAutogradNonFunctional + ): + # TODO: https://github.com/pytorch/pytorch/issues/53023 + out_sig_group = CppSignatureGroup.from_native_function( + self.g.out, method=False, fallback_binding=f.manual_cpp_binding + ) + out_sig = out_sig_group.most_faithful_signature() + api_name = out_sig.name() + out_exprs = ", ".join( + e.expr + for e in translate(context, out_sig.arguments(), method=False) + ) + # TODO: I think this means structured won't work with method + # only functions (but maybe you're saved by faithful? iunno.) + # NB: Originally I wrote this as an at::redispatch call, but + # I got in trouble because that meant I needed a DispatchKeySet + # in the wrapper function, which meant I needed a DispatchKeySet + # in the DispatchKeyFunctions declarations, but the defined API + # there does NOT permit a dispatch key set. I think you can + # probably unwind this by calling some function to do the TLS + # fetch and get the DispatchKeySet when you don't have it, but + # I didn't do it for this version + sig_body.append(f"at::{api_name}({out_exprs});") + elif self.backend_index.dispatch_key != DispatchKey.Meta: + impl_exprs = ", ".join( + e.expr + for e in translate( + context, structured.impl_arguments(self.g), method=False + ) + ) + sig_body.append(f"op.impl({impl_exprs});") + + # Go over each output, and check if there is a proxy created for it. + # If so, copy it over to the original output. + if k is SchemaKind.out or k is SchemaKind.inplace: + for i in range(len(f.func.returns)): + sig_body.append( + f"if (op.proxy_outputs_[{i}].has_value()) op.outputs_[{i}].get().copy_(*op.proxy_outputs_[{i}]);" + ) + + # Destructively return the final tensors + # TODO: Do this in translate instead + if k is SchemaKind.functional: + if len(f.func.returns) == 1: + ret_expr = "std::move(op.outputs_[0])" # small optimization + else: + moved = ", ".join( + f"std::move(op.outputs_[{i}])" + for i in range(len(f.func.returns)) + ) + ret_expr = f"std::make_tuple({moved})" + elif k is SchemaKind.inplace: + ret_expr = "self" + elif k is SchemaKind.out: + if len(f.func.returns) == 1: + ret_expr = f.func.arguments.out[0].name + else: + refs = ", ".join(a.name for a in f.func.arguments.out) + ret_expr = f"std::forward_as_tuple({refs})" + sig_body.append(f"return {ret_expr};") # type: ignore[possibly-undefined] # TODO: audit + + sig_body_str = "\n".join(sig_body) + + # For an overview of what this template code looks like, see + # https://github.com/pytorch/rfcs/pull/9 + return f"""\ +{ + self.gen_class( + f, + k, + class_name=class_name, + parent_class=parent_class, + generate_super=self.g.out.structured_inherits is not None, + ) + } + +{sig.defn()} {{ +{sig_body_str} +}} +""" + + elif self.target is Target.REGISTRATION: + return f'm.impl("{f.func.name}", TORCH_FN({sig.name()}));' + else: + assert_never(self.target) + # Silence mypy's "Missing return statement" error + return None diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/dest/ufunc.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/dest/ufunc.py new file mode 100644 index 0000000000000000000000000000000000000000..82ba5352e586d509cd8a26fc6c63ed249e5e35c8 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/dest/ufunc.py @@ -0,0 +1,561 @@ +from __future__ import annotations + +from dataclasses import dataclass +from typing import TYPE_CHECKING + +import torchgen.api.ufunc as ufunc +from torchgen.api.translate import translate +from torchgen.api.types import ( + BaseCType, + Binding, + CType, + Expr, + NamedCType, + opmath_t, + scalar_t, + StructuredImplSignature, + VectorizedCType, +) +from torchgen.context import with_native_function +from torchgen.model import ( + Argument, + BaseTy, + BaseType, + DispatchKey, + NativeFunctionsGroup, + ScalarType, + UfuncKey, +) +from torchgen.utils import OrderedSet + + +if TYPE_CHECKING: + from collections.abc import Sequence + + from torchgen.api.ufunc import UfunctorBindings + + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # +# +# CUDA STUFF +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # + +# NB: not bothering to generate dispatch stub forward declaration in header, +# we can just paste it wherever necessary + +# TODO: use BackendIndex +# dispatch_key: DispatchKey # only CPU/CUDA right now + + +# Represents functors for implementing CUDA ufuncs. +# Functors are templated by scalar_t because when USERS instantiate functors +# they are templated. A functor looks something like this: +# +# template +# struct CUDAFunctorOnSelf_add { +# using opmath_t = at::opmath_type; +# opmath_t other_; +# opmath_t alpha_; +# CUDAFunctorOnSelf_add(opmath_t other, opmath_t alpha) +# : other_(other), alpha_(alpha) {} +# __device__ scalar_t operator()(scalar_t self) { +# return ufunc::add(static_cast(self), other_, alpha_); +# } +# }; +# +@dataclass(frozen=True) +class UfunctorSignature: + g: NativeFunctionsGroup + scalar_tensor_idx: int | None + name: str + + def arguments(self) -> UfunctorBindings: + return ufunc.ufunctor_arguments( + self.g, scalar_tensor_idx=self.scalar_tensor_idx, scalar_t=scalar_t + ) + + def fields(self) -> list[Binding]: + # fields are renamed to have a trailing underscore, as is conventional + return [b.rename(f"{b.name}_") for b in self.arguments().ctor] + + def returns_type(self) -> CType: + # TODO: don't hardcode; return type will be inferred based on tags on + # the native function + return BaseCType(scalar_t) + + def decl_fields(self) -> str: + return "\n".join(f"{f.type} {f.name};" for f in self.fields()) + + def inline_defn_ctor(self) -> str: + args_str = ", ".join(a.decl() for a in self.arguments().ctor) + # NB: hypothetically could do this with translate but the + # transition here is very regular + init_str = ", ".join(f"{a.name}_({a.name})" for a in self.arguments().ctor) + return f"{self.name}({args_str}) : {init_str} {{}}" + + def decl_apply(self) -> str: + args_str = ", ".join(a.decl() for a in self.arguments().apply) + return f"{self.returns_type().cpp_type()} operator()({args_str}) const" + + +@dataclass(frozen=True) +class UfuncSignature: + g: NativeFunctionsGroup + name: str + compute_t: CType + + def arguments(self) -> list[Binding]: + return ufunc.ufunc_arguments(self.g, compute_t=self.compute_t) + + def call(self, ctx: Sequence[Binding | Expr]) -> str: + return f"{self.name}({', '.join(a.expr for a in translate(ctx, self.arguments()))})" + + +# steps: +# 1. take the functional signature +# 2. use api.ufunc to convert it to template signature. this establishes +# the type of the template function +# 3. use api.ufunc (II) to generate a split struct / operator() signature. +# this establish context in which we call the template signature +# +# StructuredImplSignature context +# ~> functor constructor sig +# +# Functor constructor context +# ~> functor fields sig +# +# Functor apply context (functor fields + functor apply sig) +# ~> template sig +# + + +def eligible_for_binary_scalar_specialization(g: NativeFunctionsGroup) -> bool: + num_tensors = sum( + 1 for a in g.functional.func.arguments.flat_non_out if a.type.is_tensor_like() + ) + return num_tensors == 2 + + +def compute_ufunc_cuda_functors( + g: NativeFunctionsGroup, +) -> tuple[dict[ScalarType, dict[UfuncKey, UfunctorSignature]], str]: + # First, build the functors. + ufunctor_sigs: dict[ScalarType, dict[UfuncKey, UfunctorSignature]] = {} + ufunctors: list[str] = [] + loops = g.out.ufunc_inner_loop + scalar_tensor_idx_lookup = { + UfuncKey.CUDAFunctorOnSelf: 1, + UfuncKey.CUDAFunctorOnOther: 0, + UfuncKey.CUDAFunctor: None, + } + if eligible_for_binary_scalar_specialization(g): + keys = [ + UfuncKey.CUDAFunctorOnSelf, + UfuncKey.CUDAFunctorOnOther, + UfuncKey.CUDAFunctor, + ] + else: + keys = [UfuncKey.CUDAFunctor] + for k in [UfuncKey.CUDAFunctorOnSelf, UfuncKey.CUDAFunctorOnOther]: + if k in loops: + raise AssertionError(f"cannot use {k} on non-binary function") + for k in keys: + # If the key was directly defined, skip functor codegen; we assume the + # user already done it for us + if k in loops: + ufunctor_sig = UfunctorSignature( + g, scalar_tensor_idx=scalar_tensor_idx_lookup[k], name=loops[k].name + ) + for dtype in loops[k].supported_dtypes: + ufunctor_sigs.setdefault(dtype, {})[k] = ufunctor_sig + continue + + # Note [ScalarOnly and Generic must match names for CUDA] + # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + # Otherwise, look in ANY of the generic entries. For simplicity of + # codegen, both ScalarOnly and Generic are defined, the ufunc name + # must match (if they didn't match, we'd have to generate distinct + # functors per dtype, which is awful, so we're not going to do it unless + # someone really forces us to) + ufunc_name = None + supported_dtypes: OrderedSet[ScalarType] = OrderedSet() + for lk in [UfuncKey.ScalarOnly, UfuncKey.Generic]: + if lk not in loops: + continue + if ufunc_name is None: + ufunc_name = loops[lk].name + else: + # See Note [ScalarOnly and Generic must match names for CUDA] + if ufunc_name != loops[lk].name: + raise AssertionError( + "ScalarOnly and Generic must have same ufunc name" + ) + supported_dtypes |= loops[lk].supported_dtypes + if ufunc_name is None: + raise AssertionError("ufunc_name must be non-None") + + name = f"{k}_{ufunc_name}" + ufunctor_sig = UfunctorSignature( + g, scalar_tensor_idx=scalar_tensor_idx_lookup[k], name=name + ) + for dtype in supported_dtypes: + ufunctor_sigs.setdefault(dtype, {})[k] = ufunctor_sig + + ufunc_sig = UfuncSignature( + g, name=f"ufunc::{ufunc_name}", compute_t=BaseCType(opmath_t) + ) + apply_ctx = ufunctor_sig.fields() + ufunctor_sig.arguments().apply + ufunctors.append( + f""" +template +struct {ufunctor_sig.name} {{ + using opmath_t = at::opmath_type; + {ufunctor_sig.decl_fields()} + {ufunctor_sig.inline_defn_ctor()} + __device__ {ufunctor_sig.decl_apply()} {{ + return {ufunc_sig.call(apply_ctx)}; + }} +}}; +""" + ) + + return ufunctor_sigs, "\n".join(ufunctors) + + +@dataclass(frozen=True) +class BinaryScalarSpecializationConfig: + scalar_idx: int + ctor_tensor: str + ufunc_key: UfuncKey + + +BinaryScalarSpecializationConfigs = [ + BinaryScalarSpecializationConfig( + scalar_idx=0, + ctor_tensor="self", + ufunc_key=UfuncKey.CUDAFunctorOnOther, + ), + BinaryScalarSpecializationConfig( + scalar_idx=1, + ctor_tensor="other", + ufunc_key=UfuncKey.CUDAFunctorOnSelf, + ), +] + + +def compute_ufunc_cuda_dtype_body( + g: NativeFunctionsGroup, + dtype: ScalarType, + inner_loops: dict[UfuncKey, UfunctorSignature], + parent_ctx: Sequence[Binding], +) -> str: + body = "using opmath_t = at::opmath_type;" + body += "if (false) {}\n" # for ease of codegen + for config in BinaryScalarSpecializationConfigs: + if config.ufunc_key not in inner_loops: + continue + ufunctor_sig = inner_loops[config.ufunc_key] + scalar_idx = config.scalar_idx + 1 + # Make a copy and at the same time widen the type (not permissible + # without copy; we don't want to mutate the input argument anyway) + ctx: list[Expr | Binding] = list(parent_ctx) + ctx.append( + Expr( + expr=f"iter.scalar_value({scalar_idx})", + type=NamedCType(config.ctor_tensor, BaseCType(opmath_t)), + ) + ) + ufunctor_ctor_exprs_str = ", ".join( + a.expr for a in translate(ctx, ufunctor_sig.arguments().ctor) + ) + + # NB: ufunctor must be allocated before iter.remove_operand is called, + # as it relies on iter + body += f"""\ +else if (iter.is_cpu_scalar({scalar_idx})) {{ + {ufunctor_sig.name} ufunctor({ufunctor_ctor_exprs_str}); + iter.remove_operand({scalar_idx}); + gpu_kernel(iter, ufunctor); +}}""" + + ufunctor_sig = inner_loops[UfuncKey.CUDAFunctor] + ufunctor_ctor_exprs_str = ", ".join( + a.expr for a in translate(parent_ctx, ufunctor_sig.arguments().ctor) + ) + body += f""" +else {{ + gpu_kernel(iter, {ufunctor_sig.name}({ufunctor_ctor_exprs_str})); +}} + """ + return body + + +@with_native_function +def compute_ufunc_cuda(g: NativeFunctionsGroup) -> str: + # First, build the functors, indexing them by dtype + ufunctor_sigs, ufunctors = compute_ufunc_cuda_functors(g) + + # Next, build the conditionals + sig = StructuredImplSignature(g, ufunc.kernel_name(g, DispatchKey.CUDA)) + dtype_cases = [] + for dtype, inner_ufunc_sigs in ufunctor_sigs.items(): + dtype_cases.append( + f""" +AT_DISPATCH_CASE(at::ScalarType::{dtype}, + [&]() {{ + {compute_ufunc_cuda_dtype_body(g, dtype, inner_ufunc_sigs, sig.arguments())} + }} +) +""" + ) + + dtype_cases_str = "\n".join(dtype_cases) + + stub_sig = StubSignature(g) + + return f""" +{ufunctors} + +{stub_sig.type_defn()}; +{stub_sig.dispatch_decl()} + +{stub_sig.kernel_defn()} {{ + AT_DISPATCH_SWITCH(iter.common_dtype(), "{sig.name}", + {dtype_cases_str} + ); +}} +REGISTER_DISPATCH({stub_sig.name}, &{stub_sig.kernel_name}) + +{sig.defn()} {{ + {stub_sig.direct_call(sig.arguments())}; +}} +""" + + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # +# +# CPU STUFF +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # + + +@dataclass(frozen=True) +class StubSignature: + g: NativeFunctionsGroup + + @property + def name(self) -> str: + return f"{str(self.g.functional.func.name.name)}_stub" + + @property + def kernel_name(self) -> str: + return f"{str(self.g.functional.func.name.name)}_kernel" + + @property + def type_name(self) -> str: + return f"{str(self.g.functional.func.name.name)}_fn" + + def arguments(self) -> list[Binding]: + return ufunc.stub_arguments(self.g) + + def type(self) -> str: + cpp_args = self.arguments() + return f"void(*)(TensorIteratorBase&, {', '.join(a.type for a in cpp_args)})" + + def dispatch_decl(self) -> str: + return f"DECLARE_DISPATCH({self.type_name}, {self.name})" + + def dispatch_defn(self) -> str: + return f"DEFINE_DISPATCH({self.name})" + + def kernel_defn(self) -> str: + return f"void {self.kernel_name}(TensorIteratorBase& iter, {', '.join(a.defn() for a in self.arguments())})" + + def type_defn(self) -> str: + return f"using {self.type_name} = {self.type()}" + + # must be called from context where this is TensorIteratorBase* + def call(self, ctx: Sequence[Binding]) -> str: + return f"{self.name}(device_type(), *this, {', '.join(a.expr for a in translate(ctx, self.arguments()))})" + + # used in CUDA to skip the unnecessary dynamic dispatch + def direct_call(self, ctx: Sequence[Binding]) -> str: + return f"{self.kernel_name}(*this, {', '.join(a.expr for a in translate(ctx, self.arguments()))})" + + +@with_native_function +def compute_ufunc_cpu(g: NativeFunctionsGroup) -> str: + stub_sig = StubSignature(g) + sig = StructuredImplSignature(g, ufunc.kernel_name(g, DispatchKey.CPU)) + + return f""" +{stub_sig.type_defn()}; +{stub_sig.dispatch_decl()} +{stub_sig.dispatch_defn()}; + +{sig.defn()} {{ + {stub_sig.call(sig.arguments())}; +}} +""" + + +def compute_ufunc_cpu_dtype_body( + g: NativeFunctionsGroup, + dtype: ScalarType, + inner_loops: dict[UfuncKey, UfuncSignature], + parent_ctx: Sequence[Binding], +) -> str: + if UfuncKey.CPUScalar not in inner_loops: + raise AssertionError(f"{dtype}, {inner_loops.keys()}") + if not inner_loops.keys() <= {UfuncKey.CPUScalar, UfuncKey.CPUVector}: + raise AssertionError( + f"inner_loops keys must be subset of CPUScalar/CPUVector, got {inner_loops.keys()}" + ) + scalar_loop = inner_loops[UfuncKey.CPUScalar] + vec_loop = None + if UfuncKey.CPUVector in inner_loops: + vec_loop = inner_loops[UfuncKey.CPUVector] + + # NB: We DON'T use translate here, because translate is + # incapable of CSE'ing the scalar accesses in case it is also + # used by Vectorized; also, the unpacking here is very simple + # and only affects Scalar; everything else is implicitly captured + # by the lambda + + # Setup scalar in scope + body = [] + ctx = [] + for b in parent_ctx: + if isinstance(b.argument, Argument) and b.argument.type != BaseType( + BaseTy.Scalar + ): + continue + body.append(f"auto _s_{b.name} = {b.name}.to();") + ctx.append(Expr(f"_s_{b.name}", NamedCType(b.nctype.name, BaseCType(scalar_t)))) + if vec_loop is not None: + for b in parent_ctx: + if isinstance(b.argument, Argument) and b.argument.type != BaseType( + BaseTy.Scalar + ): + continue + body.append( + f"auto _v_{b.name} = at::vec::Vectorized(_s_{b.name});" + ) + ctx.append( + Expr( + f"_v_{b.name}", + NamedCType(b.nctype.name, VectorizedCType(BaseCType(scalar_t))), + ) + ) + + # Setup lambda signature + # NB: simplified version of ufunctor_arguments + scalar_bindings = [] + vec_bindings = [] + for a in g.functional.func.arguments.flat_non_out: + if not a.type.is_tensor_like(): + continue + if a.type != BaseType(BaseTy.Tensor): + raise AssertionError(f"Expected Tensor type, got {a.type}") + scalar_bindings.append( + Binding( + name=a.name, + nctype=NamedCType(a.name, BaseCType(scalar_t)), + argument=a, + ) + ) + if vec_loop is not None: + vec_bindings.append( + Binding( + name=a.name, + nctype=NamedCType(a.name, VectorizedCType(BaseCType(scalar_t))), + argument=a, + ) + ) + + def with_ctx(b: Sequence[Binding]) -> list[Expr | Binding]: + r: list[Expr | Binding] = [] + r.extend(ctx) + r.extend(b) + return r + + body_str = "\n".join(body) + if vec_loop is not None: + return f""" +{body_str} +cpu_kernel_vec(iter, + [=]({", ".join(b.decl() for b in scalar_bindings)}) {{ return {scalar_loop.call(with_ctx(scalar_bindings))}; }}, + [=]({", ".join(b.decl() for b in vec_bindings)}) {{ return {vec_loop.call(with_ctx(vec_bindings))}; }} +); +""" + else: + return f""" +{body_str} +cpu_kernel(iter, + [=]({", ".join(b.decl() for b in scalar_bindings)}) {{ return {scalar_loop.call(with_ctx(scalar_bindings))}; }} +); +""" + + +@with_native_function +def compute_ufunc_cpu_kernel(g: NativeFunctionsGroup) -> str: + stub_sig = StubSignature(g) + + # Reindex the ufunc by dtypes; processing generic/scalaronly as well + loops = g.out.ufunc_inner_loop + ufunc_sigs: dict[ScalarType, dict[UfuncKey, UfuncSignature]] = {} + for k in [UfuncKey.CPUScalar, UfuncKey.CPUVector]: + lks = [] + # ORDER MATTERS: this specifies overriding precedence + if k in loops: # should happen rarely + lks.append(k) + if UfuncKey.ScalarOnly in loops and k is UfuncKey.CPUScalar: + lks.append(UfuncKey.ScalarOnly) + if UfuncKey.Generic in loops: + lks.append(UfuncKey.Generic) + # TODO: don't hardcode ufunc:: namespace here, should be centralized smh + for lk in lks: + for dtype in loops[lk].supported_dtypes: + compute_t: CType + if k is UfuncKey.CPUScalar: + compute_t = BaseCType(scalar_t) + elif k is UfuncKey.CPUVector: + compute_t = VectorizedCType(BaseCType(scalar_t)) + else: + raise AssertionError + inner_ufunc_sigs = ufunc_sigs.setdefault(dtype, {}) + if k not in inner_ufunc_sigs: + inner_ufunc_sigs[k] = UfuncSignature( + g, name=f"ufunc::{loops[lk].name}", compute_t=compute_t + ) + + # Build the conditionals + dtype_cases = [] + for dtype, inner_ufunc_sigs in ufunc_sigs.items(): + dtype_cases.append( + f""" +AT_DISPATCH_CASE(at::ScalarType::{dtype}, + [&]() {{ + {compute_ufunc_cpu_dtype_body(g, dtype, inner_ufunc_sigs, stub_sig.arguments())} + }} +) +""" + ) + + dtype_cases_str = "\n".join(dtype_cases) + return f""" +namespace {{ + +{stub_sig.kernel_defn()} {{ + AT_DISPATCH_SWITCH(iter.common_dtype(), "{stub_sig.name}", + {dtype_cases_str} + ); +}} + +}} // anonymous namespace + +{stub_sig.type_defn()}; +{stub_sig.dispatch_decl()} +REGISTER_DISPATCH({stub_sig.name}, &{stub_sig.kernel_name}) +""" diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/gen.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/gen.py new file mode 100644 index 0000000000000000000000000000000000000000..10f727b9dfba0c14f02b2cce430ff3f3ba9a260b --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/gen.py @@ -0,0 +1,3088 @@ +from __future__ import annotations + +import argparse +import functools +import json +import keyword +import os +from collections import defaultdict, namedtuple, OrderedDict +from dataclasses import dataclass, field +from pathlib import Path +from typing import Any, Literal, TYPE_CHECKING, TypeVar +from typing_extensions import assert_never + +import yaml + +import torchgen.api.dispatcher as dispatcher +import torchgen.api.meta as meta +import torchgen.api.native as native +import torchgen.api.structured as structured +import torchgen.dest as dest +from torchgen.api import cpp +from torchgen.api.translate import translate +from torchgen.api.types import ( + Binding, + CppSignature, + CppSignatureGroup, + DispatcherSignature, + NamedCType, + NativeSignature, + SpecialArgName, +) +from torchgen.context import ( + method_with_native_function, + native_function_manager, + with_native_function, + with_native_function_and_indices, +) +from torchgen.gen_aoti_c_shim import ( + gen_aoti_c_shim_files, + gen_static_dispatch_backend_call_signature, +) +from torchgen.gen_functionalization_type import ( + gen_functionalization_definition, + gen_functionalization_registration, + gen_functionalization_view_inverse_declaration, + gen_functionalization_view_meta_classes_decl, + gen_functionalization_view_meta_classes_impl, + GenCompositeViewCopyKernel, +) +from torchgen.gen_vmap_plumbing import gen_all_vmap_plumbing +from torchgen.model import ( + Argument, + BackendIndex, + BackendMetadata, + BaseOperatorName, + DEFAULT_KERNEL_NAMESPACE, + dispatch_device_map, + DispatchKey, + FRAGMENT_NAMESPACES, + FunctionSchema, + is_cuda_dispatch_key, + is_generic_dispatch_key, + is_ufunc_dispatch_key, + is_xpu_dispatch_key, + Location, + NativeFunction, + NativeFunctionsGroup, + NativeFunctionsViewGroup, + OperatorName, + OptionalType, + SchemaKind, + SelfArgument, + STRUCTURED_DISPATCH_KEYS, + TensorOptionsArguments, + Type, + Variant, + ViewSchemaKind, +) +from torchgen.native_function_generation import ( + add_generated_native_functions, + gen_composite_functional_kernel, + gen_composite_out_kernel, + pre_group_native_functions, +) +from torchgen.selective_build.selector import SelectiveBuilder +from torchgen.utils import ( + concatMap, + context, + FileManager, + make_file_manager, + mapMaybe, + NamespaceHelper, + Target, +) +from torchgen.yaml_utils import YamlDumper, YamlLoader + + +if TYPE_CHECKING: + from collections.abc import Callable, Sequence + + +T = TypeVar("T") + +# Welcome to the ATen code generator v2! The ATen code generator is +# responsible for parsing native_functions.yaml and then generating +# various generated files (e.g., TypeDefault.cpp) based on the operators +# defined in this file. This means that the code generator knows how to +# parse function schema, and then translate this into various C++ types +# and boilerplate code. +# +# Some things to know about this file when you modify it: +# +# - This file has STRICT mypy typechecking. Typecheck it with +# `mypy --config mypy-strict.ini` in the root source directory +# +# - Most of the heavy lifting lives in external modules: +# - 'model' has the data model for native_functions.yaml. The classes +# in those file represent what you see when you look at +# a native_functions.yaml +# - 'api' has conversions for how to translate JIT schema into +# the various C++ APIs that the codegen interacts with. There +# are in fact THREE different C++ APIs: the public C++ API, +# the dispatcher API, and the legacy dispatcher API. See each +# of these respective files for more information + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # +# +# HELPER FUNCTIONS +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # + + +# A custom loader for YAML to let us also keep track of line numbers +# of each entry in the YAML file +class LineLoader(YamlLoader): + def construct_mapping(self, node, deep=False): # type: ignore[no-untyped-def] + mapping = super().construct_mapping(node, deep=deep) # type: ignore[no-untyped-call] + # Add 1 so line numbering starts at 1 + mapping["__line__"] = node.start_mark.line + 1 + return mapping + + +# Parse native_functions.yaml into a sequence of NativeFunctions and Backend Indices. +ParsedYaml = namedtuple("ParsedYaml", ["native_functions", "backend_indices"]) + + +_GLOBAL_PARSE_NATIVE_YAML_CACHE: dict[str, ParsedYaml] = {} +_GLOBAL_PARSE_TAGS_YAML_CACHE: dict[str, set[str]] = {} + + +def file_manager_from_dispatch_key( + dispatch_key: DispatchKey, + device_fms: dict[str, FileManager], + default_fm: FileManager, +) -> FileManager: + fm = device_fms.get( + next( + ( + device + for check, device in dispatch_device_map.items() + if check(dispatch_key) + ), + "", + ), + default_fm, + ) + return fm + + +def parse_native_yaml_struct( + es: object, + valid_tags: set[str], + ignore_keys: set[DispatchKey] | None = None, + path: str = "", + skip_native_fns_gen: bool = False, +) -> ParsedYaml: + if not isinstance(es, list): + raise AssertionError(f"Expected 'es' to be a list, but got {type(es)}") + rs: list[NativeFunction] = [] + bs: dict[DispatchKey, dict[OperatorName, BackendMetadata]] = defaultdict(dict) + for e in es: + if not isinstance(e, dict): + raise AssertionError(f"Expected to be dict: {e}") + if not isinstance(e.get("__line__"), int): + raise AssertionError(f"Expected '__line__' to be int: {e}") + loc = Location(path, e["__line__"]) + funcs = e.get("func") + if funcs is None: + raise AssertionError(f"Missed 'func' in {e}") + with context(lambda: f"in {loc}:\n {funcs}"): + func, m = NativeFunction.from_yaml(e, loc, valid_tags, ignore_keys) + rs.append(func) + BackendIndex.grow_index(bs, m) + error_check_native_functions(rs) + # Default dict is to prevent the codegen from barfing when we have a dispatch key that has no kernels yet. + indices: dict[DispatchKey, BackendIndex] = defaultdict( + lambda: BackendIndex( + dispatch_key=DispatchKey.Undefined, + use_out_as_primary=True, + external=False, + device_guard=False, + # I'm actually not sure about this; undefined could be hit on + # empty TensorList, hypothetically that could have sizes in it + index={}, + ) + ) + if not skip_native_fns_gen: + add_generated_native_functions(rs, bs) + for k, v in bs.items(): + # All structured in-tree operators are implemented in terms of their out operator. + indices[k] = BackendIndex( + dispatch_key=k, + use_out_as_primary=True, + external=False, + # Only cuda-like devices in tree require device guards + device_guard=is_cuda_dispatch_key(k) or is_xpu_dispatch_key(k), + index=v, + ) + return ParsedYaml(rs, indices) + + +def parse_tags_yaml_struct(es: object, path: str = "") -> set[str]: + if not isinstance(es, list): + raise AssertionError(f"Expected 'es' to be a list, but got {type(es)}") + rs: set[str] = set() + for e in es: + if not isinstance(e.get("__line__"), int): + raise AssertionError(f"Expected '__line__' to be int: {e}") + loc = Location(path, e["__line__"]) + tags = e.get("tag") + with context(lambda: f"in {loc}:\n {tags}"): + e_i = e.copy() + name = e_i.pop("tag") + desc = e_i.pop("desc", "") + # ensure that each tag has a non-empty description + if desc == "": + raise AssertionError(f"Tag '{name}' must have a non-empty description") + rs.add(name) + return rs + + +@functools.cache +def parse_tags_yaml(path: str) -> set[str]: + global _GLOBAL_PARSE_TAGS_YAML_CACHE + if path not in _GLOBAL_PARSE_TAGS_YAML_CACHE: + with open(path) as f: + es = yaml.load(f, Loader=LineLoader) + _GLOBAL_PARSE_TAGS_YAML_CACHE[path] = parse_tags_yaml_struct(es, path=path) + + return _GLOBAL_PARSE_TAGS_YAML_CACHE[path] + + +def parse_native_yaml( + path: str, + tags_yaml_path: str, + ignore_keys: set[DispatchKey] | None = None, + *, + skip_native_fns_gen: bool = False, + loaded_yaml: object | None = None, +) -> ParsedYaml: + global _GLOBAL_PARSE_NATIVE_YAML_CACHE + if path not in _GLOBAL_PARSE_NATIVE_YAML_CACHE: + valid_tags = parse_tags_yaml(tags_yaml_path) + + # if a loaded yaml is provided, use that instead of reading from path + if loaded_yaml is None: + with open(path) as f: + es = yaml.load(f, Loader=LineLoader) + else: + es = loaded_yaml + + _GLOBAL_PARSE_NATIVE_YAML_CACHE[path] = parse_native_yaml_struct( + es, + valid_tags, + ignore_keys, + path=path, + skip_native_fns_gen=skip_native_fns_gen, + ) + + return _GLOBAL_PARSE_NATIVE_YAML_CACHE[path] + + +# Some assertions are already performed during parsing, but those are only within a single NativeFunction. +# Assertions here are meant to be performed across NativeFunctions. +def error_check_native_functions(funcs: Sequence[NativeFunction]) -> None: + func_map: dict[OperatorName, NativeFunction] = {} + base_func_map: dict[BaseOperatorName, list[NativeFunction]] = defaultdict(list) + for f in funcs: + func_map[f.func.name] = f + base_func_map[f.func.name.name].append(f) + for f in funcs: + if f.structured_delegate is not None: + delegate_func = func_map.get(f.structured_delegate) + if delegate_func is None: + raise AssertionError( + f"{f.func.name} is marked as a structured_delegate pointing to " + f"{f.structured_delegate}, but {f.structured_delegate} is missing." + ) + if not delegate_func.structured: + raise AssertionError( + f"{f.func.name} is marked as a structured_delegate pointing to " + f"{f.structured_delegate}, but {f.structured_delegate} is not marked as structured. " + f"Consider adding 'structured=True' to the delegated operator" + ) + + # Check for reserved Python keywords + PYTHON_RESERVED_KEYWORDS = set(keyword.kwlist) + # List of pre-existing operators that are known to have reserved keywords + # Exclusion list is used to suppress the assertion for these operators + EXCLUSION_LIST = { + ("_has_compatible_shallow_copy_type", "from"), + ("random_.from", "from"), + ("uniform_", "from"), + } + + for arg in f.func.arguments.flat_all: + if arg.name in PYTHON_RESERVED_KEYWORDS: + if (str(f.func.name), arg.name) not in EXCLUSION_LIST: + raise AssertionError( + f"Argument name '{arg.name}' in function '{f.func.name}' is a reserved Python keyword." + ) + # See Note [resize_ in Functionalization] + # resize_() is technically an inplace view op (and therefore needs the tag), + # but it would be overkill to add a true "view" variant of resize. + # Instead, resize_() gets special treatment in functionalization, + # and we have a resize() op that is non-aliasing + functional. + if ( + "inplace_view" in f.tags + and str(f.func.name) != "resize_" + and str(f.func.name) != "resize_as_" + and str(f.func.name.name) != "set_" + ): + base_name = f.func.name.name + if not base_name.inplace: + raise AssertionError( + f"{f.func.name} is marked with tag: inplace_view, but it doesn't follow the naming " + "convention for inplace ops - the codegen expects the base name to have a trailing underscore." + ) + out_of_place_base_name = BaseOperatorName( + base_name.base, False, base_name.dunder_method + ) + if len(base_func_map[out_of_place_base_name]) == 0: + raise AssertionError( + f"{f.func.name} is marked with tag: inplace_view. The codegen expects there to be a corresponding " + f"out-of-place view op with the name '{base_name}' and matching schema, but it didn't find one." + ) + + +def cpp_string(s: str) -> str: + """Convert a python string into a c++ string literal""" + s = s.replace("\\", "\\\\") + s = s.replace('"', '\\"') + s = s.replace("\a", "\\a") + s = s.replace("\b", "\\b") + s = s.replace("\f", "\\f") + s = s.replace("\n", "\\n") + s = s.replace("\v", "\\v") + s = s.replace("\t", "\\t") + return f'"{s}"' + + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # +# +# C++ CODE GENERATION +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # + +# Most functions in this section are curried: they consist of a function +# that takes some parameters (e.g., what is to be generated) which itself +# returns a function that actually maps NativeFunction to the code +# to be generated. This pattern makes it convenient to use map, concatMap +# and similar functional combinators. + + +def static_dispatch_keys(backends: list[BackendIndex]) -> list[DispatchKey]: + if len(backends) == 0: + return [] + else: + return [backend.dispatch_key for backend in backends] + [ + DispatchKey.CompositeImplicitAutograd, + DispatchKey.CompositeImplicitAutogradNestedTensor, + DispatchKey.CompositeExplicitAutograd, + DispatchKey.CompositeExplicitAutogradNonFunctional, + ] + + +def get_static_dispatch_backend( + f: NativeFunction, backend_index: BackendIndex +) -> DispatchKey | None: + if f.structured_delegate is not None or backend_index.has_kernel(f): + # TODO: for ops with structured_delegate it should check the dispatch table of + # the out variant instead. For now, these structured ops all have CPU/CUDA kernels + # so we always dispatch to the `backend`, but this could be wrong when we + # migrate math/default_backend ops to use structured delegate. + return backend_index.dispatch_key + elif f.has_composite_explicit_autograd_kernel: + return DispatchKey.CompositeExplicitAutograd + elif f.has_composite_explicit_autograd_non_functional_kernel: + return DispatchKey.CompositeExplicitAutogradNonFunctional + elif f.has_composite_implicit_autograd_kernel: + return DispatchKey.CompositeImplicitAutograd + elif f.has_composite_implicit_autograd_nested_tensor_kernel: + return DispatchKey.CompositeImplicitAutogradNestedTensor + return None + + +def static_dispatch_ops_header( + f: NativeFunction, backend_index: list[BackendIndex] +) -> str | None: + if backend_index is None or f.manual_kernel_registration: + return None + + output = [] + for index in backend_index: + dispatch_key = get_static_dispatch_backend(f, index) + if dispatch_key is not None: + output.append( + f"#include " + ) + return "\n".join(output) + + +def static_dispatch_extra_headers(backends: list[BackendIndex]) -> list[str]: + return [ + f"#include " + for dispatch_key in static_dispatch_keys(backends) + ] + + +# Translates arguments of `sig` to CppSignature bindings. +# Note that we have a special case for `memory_format` argument and this case is not covered by +# tools.codegen.api.translate() yet as its application is limited to static dispatch. +def translate_args( + sig: CppSignature | DispatcherSignature, + cpp_sig: CppSignature, +) -> str: + # Adds SpecialArgName.possibly_redundant_memory_format NamedCType for memory_format bindings + def add_spl_memory_format_binding(input_bindings: list[Binding]) -> list[Binding]: + output_bindings: list[Binding] = [] + for binding in input_bindings: + if binding.name == "memory_format": + spl_mem_format_binding = Binding( + nctype=NamedCType( + SpecialArgName.possibly_redundant_memory_format, + binding.nctype.type, + ), + name=binding.name, + default=binding.default, + argument=binding.argument, + ) + output_bindings.append(spl_mem_format_binding) + else: + output_bindings.append(binding) + return output_bindings + + src_bindings = list(sig.arguments()) + goal_bindings = list(cpp_sig.arguments()) + # When last argument of CPP signature has SpecialArgName.possibly_redundant_memory_format NCType, + # get memory_format bindings of dispatcher signature to have the same NCType as well + for arg in goal_bindings: + if arg.nctype.name == SpecialArgName.possibly_redundant_memory_format: + src_bindings = add_spl_memory_format_binding(src_bindings) + break + exprs = translate(src_bindings, goal_bindings) + return ", ".join(a.expr for a in exprs) + + +def generate_static_dispatch_backend_call( + sig: CppSignature | DispatcherSignature, + f: NativeFunction, + backend_index: BackendIndex, +) -> str: + cpp_sig = gen_static_dispatch_backend_call_signature(sig, f) + name = cpp_sig.name() + exprs = translate_args(sig, cpp_sig) + backend_metadata = backend_index.get_kernel(f) + kernel_ns = ( + backend_metadata.cpp_namespace + if backend_metadata and backend_metadata.cpp_namespace + else DEFAULT_KERNEL_NAMESPACE + ) + ns = kernel_ns.replace("::native", "") + return f"return {ns}::{backend_index.dispatch_key.lower()}::{name}({exprs});" + + +def generate_static_dispatch_fallback_call( + sig: CppSignature | DispatcherSignature, + f: NativeFunction, + backend_indices: list[BackendIndex], +) -> str: + cpp_sigs = CppSignatureGroup.from_native_function( + f, method=False, fallback_binding=False + ) + if sig.symint and f.func.has_symint(): + cpp_sig = cpp_sigs.symint_signature + else: + cpp_sig = cpp_sigs.signature + if cpp_sig is None: + raise AssertionError("Expected cpp_sig to be non-None") + name = cpp_sig.name() + exprs = translate_args(sig, cpp_sig) + ns = DEFAULT_KERNEL_NAMESPACE.replace("::native", "") + if f.has_composite_explicit_autograd_kernel: + return f"return {ns}::{DispatchKey.CompositeExplicitAutograd.lower()}::{name}({exprs});" + elif f.has_composite_explicit_autograd_non_functional_kernel: + return f"return {ns}::{DispatchKey.CompositeExplicitAutogradNonFunctional.lower()}::{name}({exprs});" + elif f.has_composite_implicit_autograd_kernel: + return f"return {ns}::{DispatchKey.CompositeImplicitAutograd.lower()}::{name}({exprs});" + elif f.has_composite_implicit_autograd_nested_tensor_kernel: + return f"return {ns}::{DispatchKey.CompositeImplicitAutogradNestedTensor.lower()}::{name}({exprs});" + else: + return f"""TORCH_CHECK(false, "Static dispatch does not support {name} for\ +{", ".join([str(index.dispatch_key) for index in backend_indices])} ");""" + + +def static_dispatch( + sig: CppSignature | DispatcherSignature, + f: NativeFunction, + backend_indices: list[BackendIndex], +) -> str: + """ + For a given `NativeFunction`, find out the corresponding backend and dispatch to it. If more than one + backends exist, fallback to static dispatch by determining dispatch key from inputs. + Arguments: + sig: A CppSignature or DispatcherSignature for this native function we want to use. + f: NativeFunction to generate static dispatch. + backend_indices: All available backends. + Return: + C++ code to call backend-specific functions, e.g., "return at::cpu::add(self, other, scale);" + """ + if len(backend_indices) == 0 or f.manual_kernel_registration: + return "" + + keys = [ + b + for b in backend_indices + if b.has_kernel(f) + or ( + f.structured_delegate is not None + and b.dispatch_key in STRUCTURED_DISPATCH_KEYS + ) + ] + if len(keys) == 1: + return generate_static_dispatch_backend_call(sig, f, keys[0]) + elif len(keys) == 0: + return generate_static_dispatch_fallback_call(sig, f, backend_indices) + + native_tensor_args = [ + a.name + for a in sig.arguments() + if isinstance(a.argument, SelfArgument) + or isinstance(a.argument, Argument) + and a.argument.type.is_tensor_like() + ] + tensor_args = ", ".join(native_tensor_args) + tensor_opts = f.func.arguments.tensor_options + + stmts = [] + subexprs: list[str] = [] + if tensor_opts is not None: + subexprs.append( + "DispatchKeySet(c10::computeDispatchKey(dtype, layout, device))" + ) + if tensor_args != "": + subexprs.append(f"c10::detail::multi_dispatch_key_set({tensor_args})") + stmts.append(f"""DispatchKeySet _dk_set = {" | ".join(subexprs)};""") + stmts.append("DispatchKey _dk = c10::highestPriorityBackendTypeId(_dk_set);") + + dispatch_code = [] + for index in keys: + dispatch_code.append(f"""case DispatchKey::{index.dispatch_key}:""") + dispatch_code.append( + f"""\t{generate_static_dispatch_backend_call(sig, f, index)};""" + ) + + fallback = generate_static_dispatch_fallback_call(sig, f, backend_indices) + connector = "\n\t\t" + + return f""" + {connector.join(stmts)} + switch (_dk) {{ + {connector.join(dispatch_code)} + default: + {fallback} + }} + """ + + +# Generates RegisterSchema.cpp. Depending on the selector, either +# all schemas are registered, or only some are (in the case of +# selective build) +@dataclass(frozen=True) +class RegisterSchema: + selector: SelectiveBuilder + known_tags: dict[str, int] = field(default_factory=dict) + + @method_with_native_function + def __call__(self, f: NativeFunction) -> str | None: + if not self.selector.is_native_function_selected(f): + return None + tags = "{" + ", ".join(f"at::Tag::{tag}" for tag in sorted(f.tags)) + "}" + if tags == "{}": + return f"m.def({cpp_string(str(f.func))}, {{}});\n" + maybe_tags = "" + if tags not in self.known_tags: + idx = len(self.known_tags) + self.known_tags[tags] = idx + maybe_tags = f"const std::vector tags_{idx} = {tags};\n" + return f"{maybe_tags}m.def({cpp_string(str(f.func))}, tags_{self.known_tags[tags]});\n" + + +# Generates Operators.h and Operators.cpp. +# These provide macros that, given an operator and overload name, allow users +# to access an "un-overloaded" function version of the operator. This +# is useful for extension writers who want to (1) want to decltype the operator +# and (2) don't want to worry about method-only operators. +@dataclass(frozen=True) +class ComputeOperators: + target: Literal[Target.DECLARATION, Target.DEFINITION] + static_dispatch_backend_indices: list[BackendIndex] + + @method_with_native_function + def __call__(self, f: NativeFunction) -> str: + sig = DispatcherSignature.from_schema(f.func) + name = f.func.name.unambiguous_name() + + if self.target is Target.DECLARATION: + # Note [The ATen Operators API] + # The ATen Operators API lives in the at::_ops namespace, and contains compile-time + # metadata about each operator + entry points into the Dispatcher. + # The C++ function, method, and redispatch API's are all implemented as wrappers + # into various bits of the structs defined here. + # + # Important characteristics about the Operators API: + # (1) It follows the Dispatcher API. + # This is kind of necessary to avoid overhead. + # For example: if it followed the C++ API, then all of the faithful C++ factory functions + # would need to wrap their arguments into TensorOptions only to unwrap them again. + # (2) Overload names are disambiguated. + # This is helpful for pytorch extenders who would like to decltype() an aten operator, + # that has overloads, e.g. decltype(at::_ops::mul_Tensor::call) + # (3) No argument defaulting is allowed. + # This is more of an implementation detail to avoid #include cycles, + # since TensorBody.h (which defines the Tensor class) needs to include this file. + # (4) manual_cpp_bindings and faithful names are not included in the API. + # This applies to stuff like __dispatch__is_complex(), and add_outf(). + # These aren't "real aten ops", they're just additional functions provided by the C++ API. + # They're implemented as wrappers in Functions.h that call into the actual operators + # defined here, i.e. at::_ops::is_complex::call() and at::_ops::add_out::call(). + # This means that ATEN_OP(is_complex) will not fastpath, and will go through the dispatcher. + return f""" +struct TORCH_API {name} {{ + using schema = {sig.type()}; + using ptr_schema = schema*; + // See Note [static constexpr char* members for windows NVCC] + static constexpr const char* name = "aten::{f.func.name.name}"; + static constexpr const char* overload_name = "{f.func.name.overload_name}"; + static constexpr const char* schema_str = {cpp_string(str(f.func))}; + static {sig.defn(name="call", is_redispatching_fn=False)}; + static {sig.defn(name="redispatch", is_redispatching_fn=True)}; +}};""" + + elif self.target is Target.DEFINITION: + defns = f""" +// aten::{f.func} +static C10_NOINLINE c10::TypedOperatorHandle<{name}::schema> create_{name}_typed_handle() {{ + return c10::Dispatcher::singleton() + .findSchemaOrThrow({name}::name, {name}::overload_name) + .typed<{name}::schema>(); +}} +""" + for is_redispatching_fn in [False, True]: + if is_redispatching_fn: + dispatcher_exprs_str = ", ".join( + ["dispatchKeySet"] + [a.name for a in sig.arguments()] + ) + method_base = "redispatch" + else: + dispatcher_exprs_str = ", ".join([a.name for a in sig.arguments()]) + method_base = "call" + + dispatcher_call = method_base + method_name = f"{name}::{method_base}" + + fn_body = f""" + static auto op = create_{name}_typed_handle(); + return op.{dispatcher_call}({dispatcher_exprs_str});""" + + if ( + not is_redispatching_fn + and len(self.static_dispatch_backend_indices) > 0 + ): + # call() should go through static dispatch + fn_body = static_dispatch( + sig, f, backend_indices=self.static_dispatch_backend_indices + ) + defns += f""" +// aten::{f.func} +{sig.defn(name=method_name, is_redispatching_fn=is_redispatching_fn)} {{ + {fn_body} +}} +""" + return defns + else: + assert_never(self.target) + + +# Generates Functions.h, which provides the functional public C++ API, +# and the scaffolding to call into the dispatcher from these functions. +@dataclass(frozen=True) +class ComputeFunction: + @method_with_native_function + def __call__(self, f: NativeFunction) -> str | None: + sig_group = CppSignatureGroup.from_native_function( + f, method=False, fallback_binding=f.manual_cpp_binding + ) + has_symint = f.func.has_symint() + + result = "" + for sig in sig_group.signatures(): + # See Note [The ATen Operators API] + target_sig = DispatcherSignature.from_schema(f.func) + exprs = translate(sig.arguments(), target_sig.arguments()) + exprs_str = ", ".join([e.expr for e in exprs]) + + if sig.symint: + intlike_t = "c10::SymInt" + else: + intlike_t = "int64_t" + + if Variant.function in f.variants: + result += f""" +// aten::{f.func} +inline {sig.decl()} {{ + return at::_ops::{f.func.name.unambiguous_name()}::call({exprs_str}); +}}""" + + # The template function can be used from template situations + # where you want to switch between the symint or not version + # depending on a template argument + # + # NB: we ALWAYS generate this even for methods. But we put it in + # this header so it can take advantage of per-op headers + if has_symint: + result += f""" +namespace symint {{ + template >> + {sig.decl(suppress_symint_suffix=True)} {{ + return at::_ops::{f.func.name.unambiguous_name()}::call({exprs_str}); + }} +}} +""" + return result + + +# Generates TensorBody.h. This file provides the object-oriented (method-based) +# public C++ API, and the scaffolding to call into the dispatcher from these functions. +@dataclass(frozen=True) +class ComputeTensorMethod: + target: Literal[Target.DECLARATION, Target.DEFINITION] + static_dispatch_backend_indices: list[BackendIndex] + + @method_with_native_function + def __call__(self, f: NativeFunction) -> str | None: + if Variant.method not in f.variants: + return None + + if f.func.is_out_fn(): + raise AssertionError(f"Method variant cannot be an out function: {f.func}") + if f.func.arguments.self_arg is None: + raise AssertionError(f"Method variant must have self_arg: {f.func}") + + sig_group = CppSignatureGroup.from_native_function( + f, method=True, fallback_binding=f.manual_cpp_binding + ) + + if self.target is Target.DECLARATION: + result = "" + for sig in sig_group.signatures(): + result += f"{sig.decl()} const;\n" + return result + + if self.target is not Target.DEFINITION: + assert_never(self.target) + + result = "" + + for sig in sig_group.signatures(): + target_sig = DispatcherSignature.from_schema(f.func) + exprs = translate(sig.arguments(), target_sig.arguments(), method=True) + exprs_str = ", ".join([e.expr for e in exprs]) + + result += f""" +// aten::{f.func} +inline {sig.defn(prefix="Tensor::")} const {{ + return at::_ops::{f.func.name.unambiguous_name()}::call({exprs_str}); +}} +""" + + return result + + +# Generates RedispatchFunctions.h. +# This is similar to the C++ API defined in Functions.h, but provides access +# to the dispatcher's redispatch API. +@dataclass(frozen=True) +class ComputeRedispatchFunction: + @method_with_native_function + def __call__(self, f: NativeFunction) -> str | None: + # We unconditionally generate function variants of the redispatch API. + # This is mainly because we can namespace functions separately, but not methods, + sig_group = CppSignatureGroup.from_native_function( + f, method=False, fallback_binding=f.manual_cpp_binding + ) + + result = "" + for sig in sig_group.signatures(): + target_sig = DispatcherSignature.from_schema(f.func) + exprs = translate(sig.arguments(), target_sig.arguments()) + exprs_str = ", ".join(["dispatchKeySet"] + [a.expr for a in exprs]) + + result += f""" +// aten::{f.func} +inline {sig.decl(is_redispatching_fn=True)} {{ + return at::_ops::{f.func.name.unambiguous_name()}::redispatch({exprs_str}); +}} +""" + + return result + + +# Generates ATenOpList.cpp, a runtime accessible list of all aten +# operators. +# TODO: This was historically used to help some JIT interop code +# figure out whether or not to treat aten namespace'd operators +# one way or another, we should reevaluate if this is actually needed. +@with_native_function +def compute_aten_op(f: NativeFunction) -> str: + return f'{{"aten::{f.func.name.name}", "{f.func.name.overload_name}"}},' + + +# Generates MetaFunctions.h +def compute_meta_function_declaration(g: NativeFunctionsGroup) -> str | None: + if not g.structured: + return None + with native_function_manager(g.out): + name = meta.name(g) + args = structured.meta_arguments(g) + args_str = ", ".join(a.decl() for a in args) + parent_class = g.out.structured_inherits + if parent_class is None: + parent_class = "at::impl::MetaBase" + meta_return = "void" + precomputed = g.out.precomputed if g.structured else None + + if precomputed: + # Generate the template declaration with one bool parameter for each + # precomputed element. Each parameter is true if the corresponding (in + # terms of position) precomputed element has been set. + precomputed_values = [*precomputed.replace.values(), precomputed.add] + precomputed_elements = [ + elem for replace_list in precomputed_values for elem in replace_list + ] + precomputed_template_parameters = [ + elem.name.upper() for elem in precomputed_elements + ] + precomputed_template_params_str = ", ".join( + f"bool {param} = false" for param in precomputed_template_parameters + ) + precompute_template_decl = f"template <{precomputed_template_params_str}>" + + # Generate a string containing declarations of all precomputed elements. + precomputed_elements_with_cpp_types = [ + structured.argument_type(elem, binds=elem.name) + for elem in precomputed_elements + ] + + precomputed_elements_decl = ";\n".join( + f"{elem.cpp_type(strip_ref=True)} {elem.name}" + for elem in precomputed_elements_with_cpp_types + ) + + # Generate "setter" methods for each precomputed element. Each method will return + # a new instance of precompute_out with the template parameter that corresponds to + # the member set by the method to true (to indicate that it has been set). + setter_methods = [] + for i, elem in enumerate(precomputed_elements): + # Generate the signature. The return type will be the same + # as the type of `this` but with the template parameter + # corresponding to the element set by this method set to true. + # The assert generated below will ensure that this template + # parameter is false on the type of `this`. + return_ty_templates = ", ".join( + precomputed_template_parameters[:i] + + ["true"] + + precomputed_template_parameters[i + 1 :] + ) + return_ty = f"precompute_out<{return_ty_templates}>" + elem_cpp_ty = precomputed_elements_with_cpp_types[i].cpp_type( + strip_ref=True + ) + signature = f"{return_ty} set_{elem.name}({elem_cpp_ty} value)" + + # Generate an assert which checks that the + # template parameter corresponding to the precomputed + # element that is set by this method is false on the + # class corresponding to the object that `this` points to. + # This ensures that each element can be set only once. + assert_msg = f'"{elem.name} already set"' + assert_stmt = f"static_assert({precomputed_template_parameters[i]} == false, {assert_msg});" + + # Generate the new object construction block. All state + # except the element that this method sets is copied from the + # object that `this` points to. The value for the element that + # the method sets is taken from a method parameter. + construction_stmts = [] + construction_stmts.append(f"{return_ty} ret;") + + for j, elem in enumerate(precomputed_elements): + if i == j: + construction_stmts.append(f"ret.{elem.name} = value;") + else: + construction_stmts.append( + f"ret.{elem.name} = this->{elem.name};" + ) + + construction_stmts.append("return ret;") + construction_block = "\n".join(construction_stmts) + + setter_methods.append( + f""" + {signature} {{ + {assert_stmt} + {construction_block} + }} + """ + ) + setter_methods_decl = "\n".join(setter_methods) + + # Meta should return an instance of the struct containing the precomputed elements. + meta_return_template_params = ", ".join( + ["true"] * len(precomputed_template_parameters) + ) + # This typedef (actually a using statement) is needed so that TORCH_META_FUNC can reuse the return + # type (which has a variable number of template parameters). + meta_return_typedef = f"using meta_return_ty = precompute_out <{meta_return_template_params}>;" + meta_return = "meta_return_ty" + precomputed_decl = f""" + {precompute_template_decl} + struct TORCH_API precompute_out {{ + {setter_methods_decl} + {precomputed_elements_decl}; + }};""" + else: + meta_return_typedef = "" + precomputed_decl = "" + + return f"""\ +struct TORCH_API structured_{name} : public {parent_class} {{ + {precomputed_decl} + {meta_return_typedef} + {meta_return} meta({args_str}); +}}; +""" + + +def needs_backend_select(f: NativeFunction, selector: SelectiveBuilder) -> bool: + name = str(f.func.name.name) + if name.endswith("_like") or name.startswith("new_"): + return False + if f.func.arguments.tensor_options is None: + return False + return selector.is_native_function_selected(f) + + +# Generates RegisterBackendSelect.cpp, a series of kernels which provide +# specialized computation of dispatch key for operator signatures which cannot +# be easily done automatically using templating. +@dataclass(frozen=True) +class ComputeBackendSelect: + target: Literal[Target.DEFINITION, Target.REGISTRATION] + + # Selector object to determine which operators to generate + # registration code for. + selector: SelectiveBuilder + + @method_with_native_function + def __call__(self, f: NativeFunction) -> str | None: + if not needs_backend_select(f, self.selector): + return None + + name = native.name(f.func) + # BackendSelect can go to Meta, so it must preserve symints + native_sig = NativeSignature(f.func, symint=True) + + native_tensor_args = [ + a + for a in native_sig.arguments() + if isinstance(a.argument, Argument) and a.argument.type.is_tensor_like() + ] + + dispatcher_sig = DispatcherSignature.from_schema(f.func) + + sig: NativeSignature | DispatcherSignature + sig = dispatcher_sig + dispatcher_exprs = dispatcher_sig.exprs() + dispatch_key = "c10::computeDispatchKey(dtype, layout, device)" + + if self.target is Target.DEFINITION: + # I don't think there's actually a good reason to generate + # these two cases differently + # The first case could probably be improved though- it calls computeDispatchKeySet(), + # which looks at TLS dispatch keys- there should not be any by the time we reach backend select. + if native_tensor_args: + if not f.func.arguments.has_tensor_arg(): + raise AssertionError( + f"Expected function to have tensor args: {f.func}" + ) + tensor_args = ", ".join(a.name for a in native_tensor_args) + compute_dk = f"""\ +DispatchKeySet _dk_set = c10::DispatchKeySet({dispatch_key}) | c10::detail::multi_dispatch_key_set({tensor_args}); +DispatchKeySet _dk_mask = c10::DispatchKeySet(DispatchKeySet::FULL_AFTER, DispatchKey::BackendSelect); +DispatchKeySet _dk = c10::impl::computeDispatchKeySet(_dk_set, _dk_mask);""" + else: + if f.func.arguments.has_tensor_arg(): + raise AssertionError( + f"Expected function to not have tensor args: {f.func}" + ) + compute_dk = ( + f"DispatchKeySet _dk = c10::DispatchKeySet({dispatch_key});" + ) + return f"""\ +// aten::{f.func} +C10_ALWAYS_INLINE +{sig.defn(name)} {{ + {compute_dk} + return at::_ops::{f.func.name.unambiguous_name()}::redispatch( + _dk, {", ".join(a.expr for a in dispatcher_exprs)}); +}} +""" + elif self.target is Target.REGISTRATION: + return f"""m.impl("aten::{f.func.name}", TORCH_FN({name}));""" + else: + assert_never(self.target) + + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # +# +# YAML CODE GENERATION +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # + + +def format_yaml(data: object) -> str: + # Ignore alias in Dumper + YamlDumper.ignore_aliases = lambda self, data: True # type: ignore[assignment] + + # Support serializing OrderedDict + def dict_representer(dumper: Any, data: Any) -> Any: + return dumper.represent_dict(data.items()) + + YamlDumper.add_representer(OrderedDict, dict_representer) # type: ignore[no-untyped-call] + # Some yaml parsers (e.g. Haskell's) don't understand line breaks. + # width=1e9 turns off optional line breaks and improves + # the portability of the outputted yaml. + return yaml.dump(data, default_flow_style=False, Dumper=YamlDumper, width=1e9) # type: ignore[no-any-return, call-overload] + + +# For some reason, some defaults we write to YAML are written as native +# YAML objects, rather than doing them uniformly as strings. This +# function detects those cases and converts them into native Python +# objects. +def pythonify_default(s: str) -> object: + if s == "true": + return True + elif s == "false": + return False + + try: + return int(s) + except ValueError: + try: + return float(s) + except ValueError: + return s + + +# What is a dynamic type? Over time, the semantic meaning of +# dynamic type has degraded to meaninglessness (in the old days, +# it captured dtype-ness of types, but that has gone away with +# the removal of TH). These days, it's mostly the same thing as +# the C++ API argument type, except that Tensor and Tensor? +# arguments simply present as Tensor. +# +# TODO: Get rid of dynamic_type, after getting tools/autograd +# to use the new codegen framework +def dynamic_type(t: Type) -> str: + if isinstance(t, OptionalType): + return dynamic_type(t.elem) + # Note we don't use t.is_tensor_like() here because it would + # also include Tensor[] + if str(t) == "Tensor": + return "at::Tensor" + # This is a legacy concept, so never report SymInt + return cpp.argumenttype_type( + t, mutable=False, binds="__placeholder__", symint=False + ).cpp_type() + + +def compute_method_of_yaml(variants: set[Variant]) -> list[str]: + # This is written out explicitly to ensure that Tensor and + # namespace are put into the list in the right order + method_of = ["Type"] + if Variant.method in variants: + method_of.append("Tensor") + if Variant.function in variants: + method_of.append("namespace") + return method_of + + +def compute_returns_yaml( + f: NativeFunction, +) -> tuple[list[dict[str, str]], dict[str, str]]: + # Note [name and field_name] + # ~~~~~~~~~~~~~~~~~~~~~~~~~~ + # To understand name_to_field_name, we must first talk about this + # schema: + # + # lstsq.X(Tensor self, Tensor A, *, Tensor(a!) X, Tensor(b!) qr) -> (Tensor(a!) solution, Tensor(b!) QR) + # + # There is something very odd about this schema: it is an out + # variant of the function (that is to say, it will convert into + # at::lstsq_out() in the C++ API), but the names of the output + # return arguments don't match the keyword argument names of + # the inputs. It TURNS OUT that in this situation, the historical + # Declarations.yaml we want to output is this (abbreviated to + # only show relevant fields): + # + # arguments: + # ... + # - field_name: solution + # name: X + # - field_name: QR + # name: qr + # ... + # + # returns: + # - field_name: solution + # name: X + # - field_name: QR + # name: qr + # + # The name of the return fields is stored in 'field_name', and the + # name of the arguments is stored in 'name'. So when we process + # arguments, we need a way to get at the corresponding return. At + # the moment, this is most conveniently done by constructing a + # mapping from name (the argument concept) to field_name (the + # return concept) while processing return arguments, since we don't + # directly maintain this correspondence in the modeling of function + # schema itself. + # + # See also https://github.com/pytorch/pytorch/issues/43114 + name_to_field_name: dict[str, str] = {} + + # Compute the returns field of the YAML entry + names = cpp.return_names(f) + returns = [] + for i, (r, name) in enumerate(zip(f.func.returns, names)): + ret = { + "dynamic_type": dynamic_type(r.type), + "name": name, + # legacy, report ints + "type": cpp.return_type(r, symint=False).cpp_type(), + } + + if r.name: + # See Note [name and field_name] + ret["field_name"] = r.name + if f.func.is_out_fn(): + name_to_field_name[f.func.arguments.out[i].name] = r.name + + returns.append(ret) + + return returns, name_to_field_name + + +# arguments in yaml roughly corresponds to the public C++ API +def compute_cpp_argument_yaml( + cpp_a: Binding, + *, + schema_order: bool, + kwarg_only_set: set[str], + out_arg_set: set[str], + name_to_field_name: dict[str, str], +) -> object: + if isinstance(cpp_a.argument, TensorOptionsArguments): + arg: dict[str, object] = { + "annotation": None, + "dynamic_type": "at::TensorOptions", + "is_nullable": False, + "name": cpp_a.name, + "type": cpp_a.type, + "kwarg_only": True, + } + if cpp_a.default is not None: + arg["default"] = cpp_a.default + return arg + elif isinstance(cpp_a.argument, SelfArgument): + raise AssertionError + elif isinstance(cpp_a.argument, Argument): + return compute_argument_yaml( + cpp_a.argument, + schema_order=schema_order, + kwarg_only_set=kwarg_only_set, + out_arg_set=out_arg_set, + name_to_field_name=name_to_field_name, + ) + + +def compute_argument_yaml( + a: Argument, + *, + schema_order: bool, + kwarg_only_set: set[str], + out_arg_set: set[str], + name_to_field_name: dict[str, str], +) -> object: + arg: dict[str, object] = { + "annotation": str(a.annotation) if a.annotation else None, + "dynamic_type": dynamic_type(a.type), + "is_nullable": a.type.is_nullable(), + "name": a.name, + # legacy, report ints + "type": cpp.argument_type(a, binds="__placeholder__", symint=False).cpp_type(), + } + if a.default is not None: + arg["default"] = pythonify_default( + cpp.default_expr(a.default, a.type, symint=False) + ) + if a.name in kwarg_only_set: + arg["kwarg_only"] = True + if a.name in out_arg_set: + arg["output"] = True + arg["allocate"] = True + # See Note [name and field_name] + if a.name in name_to_field_name: + arg["field_name"] = name_to_field_name[a.name] + # Historically, booleans don't get their size recorded, because it + # is already built into the cpp type (e.g., std::array) + l = a.type.is_list_like() + if l is not None and l.size is not None and str(l.elem) != "bool": + arg["size"] = l.size + return arg + + +@with_native_function +def compute_declaration_yaml(f: NativeFunction) -> object: + returns, name_to_field_name = compute_returns_yaml(f) + + # These sets are used to conveniently test if an argument is a + # kwarg-only or out argument + kwarg_only_set = {a.name for a in f.func.arguments.flat_kwarg_only} + out_arg_set = {a.name for a in f.func.arguments.out} + + sig_group = CppSignatureGroup.from_native_function( + f, method=False, fallback_binding=False + ) + cpp_args = sig_group.signature.arguments() + arguments = [ + compute_cpp_argument_yaml( + cpp_a, + schema_order=False, + kwarg_only_set=kwarg_only_set, + out_arg_set=out_arg_set, + name_to_field_name=name_to_field_name, + ) + for cpp_a in cpp_args + ] + + schema_order_jit_arguments = list(f.func.schema_order_arguments()) + + schema_order_arguments = [ + compute_argument_yaml( + a, + schema_order=True, + kwarg_only_set=kwarg_only_set, + out_arg_set=out_arg_set, + name_to_field_name=name_to_field_name, + ) + for a in schema_order_jit_arguments + ] + + cpp_schema_order_types = [ + # NB: method here doesn't matter + r.type + for a in schema_order_jit_arguments + for r in cpp.argument( + a, + method=False, + cpp_no_default_args=set(), + faithful=False, + symint=False, + has_tensor_options=False, + ) + ] + + # legacy, report ints + cpp_returns = cpp.returns_type(f.func.returns, symint=False).cpp_type() + schema_order_cpp_signature = f"{cpp_returns} ({', '.join(cpp_schema_order_types)})" + + is_factory_method = ( + any(isinstance(a.argument, TensorOptionsArguments) for a in cpp_args) + and Variant.method not in f.variants + ) + + return OrderedDict( + [ + ("name", cpp.name(f.func)), + ("operator_name", str(f.func.name.name)), + ("overload_name", str(f.func.name.overload_name)), + ("manual_kernel_registration", f.manual_kernel_registration), + ( + "category_override", + f.category_override if f.category_override is not None else "", + ), + ("schema_string", f"aten::{f.func}"), + ("arguments", arguments), + ("schema_order_cpp_signature", schema_order_cpp_signature), + ("schema_order_arguments", schema_order_arguments), + ("method_of", compute_method_of_yaml(f.variants)), + ("mode", "native"), + ("python_module", "" if f.python_module is None else f.python_module), + ("returns", returns), + ("inplace", f.func.name.name.inplace), + ("is_factory_method", is_factory_method), + ("abstract", f.is_abstract), + ("device_guard", f.device_guard), + ("with_gil", False), + ("deprecated", False), + ("has_math_kernel", f.has_composite_implicit_autograd_kernel), + ] + ) + + +# See Note [Auto generated composite kernels] +def has_autogenerated_composite_kernel(f: NativeFunction) -> bool: + return (f.structured or f.structured_delegate is not None) and ( + f.func.kind() == SchemaKind.functional or f.func.kind() == SchemaKind.inplace + ) + + +@with_native_function_and_indices +def compute_registration_declarations( + f: NativeFunction, backend_indices: dict[DispatchKey, BackendIndex] +) -> str: + name = dispatcher.name(f.func) + returns_type = dispatcher.returns_type(f.func.returns).cpp_type() + args = dispatcher.arguments(f.func) + args_str = ", ".join(a.no_default().decl() for a in args) + comment_data: dict[str, str] = { + "schema": f"aten::{f.func}", + # TODO: What exactly is the semantics of the 'dispatch' field? + "dispatch": str( + {k for k, v in backend_indices.items() if v.has_kernel(f)} + != {DispatchKey.CompositeImplicitAutograd} + and {k for k, v in backend_indices.items() if v.has_kernel(f)} + != { + DispatchKey.CompositeImplicitAutograd, + DispatchKey.CompositeImplicitAutogradNestedTensor, + } + ), + "default": str(f.has_composite_kernel or has_autogenerated_composite_kernel(f)), + } + return f"""{returns_type} {name}({args_str}); // {json.dumps(comment_data)} +""" + + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # +# +# RUN IT ALL +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # + + +def get_custom_build_selector( + provided_op_registration_allowlist: list[str] | None, + op_selection_yaml_path: str | None, +) -> SelectiveBuilder: + if ( + provided_op_registration_allowlist is not None + and op_selection_yaml_path is not None + ): + raise AssertionError( + "Both provided_op_registration_allowlist and op_selection_yaml_path " + "can NOT be provided at the same time." + ) + + op_registration_allowlist: set[str] | None = None + if provided_op_registration_allowlist is not None: + op_registration_allowlist = set(provided_op_registration_allowlist) + + if op_registration_allowlist is not None: + selector = SelectiveBuilder.from_legacy_op_registration_allow_list( + op_registration_allowlist, + True, + False, + ) + elif op_selection_yaml_path is not None: + selector = SelectiveBuilder.from_yaml_path(op_selection_yaml_path) + else: + selector = SelectiveBuilder.get_nop_selector() + + return selector + + +def get_grouped_by_view_native_functions( + native_functions: Sequence[NativeFunction], +) -> Sequence[NativeFunction | NativeFunctionsViewGroup]: + def maybe_create_view_group( + d: dict[ViewSchemaKind | SchemaKind, NativeFunction], + ) -> list[NativeFunction | NativeFunctionsViewGroup]: + funcs: list[NativeFunction | NativeFunctionsViewGroup] = [] + if ViewSchemaKind.aliasing in d: + view = d.pop(ViewSchemaKind.aliasing) + view_inplace = d.pop(ViewSchemaKind.aliasing_inplace, None) + view_copy = d.pop(SchemaKind.functional, None) + + funcs.append( + NativeFunctionsViewGroup( + view=view, + view_copy=view_copy, + view_inplace=view_inplace, + ) + ) + # Take the remaining functions that weren't part of the view group + # and emit them separately + funcs.extend(d.values()) + return funcs + + grouped_by_views: dict[ + FunctionSchema, dict[SchemaKind | ViewSchemaKind, NativeFunction] + ] = defaultdict(dict) + for f in native_functions: + schema = f.func.view_signature() + view_kind: ViewSchemaKind = f.view_schema_kind + # We need to group up ops relevant to the same "view", consisting of: + # view op (ViewSchemaKind.aliasing) + # view_inplace op (ViewSchemaKind.aliasing_inplace) + # view_copy op (SchemaKind.functional) + if view_kind == ViewSchemaKind.non_aliasing: + kind = f.func.kind() + if kind in grouped_by_views[schema]: + raise AssertionError( + f"Duplicate schema kind {kind} in {grouped_by_views[schema].keys()}" + ) + grouped_by_views[schema][kind] = f + else: + if view_kind in grouped_by_views[schema]: + raise AssertionError( + f"{view_kind} already in {grouped_by_views[schema].keys()}" + ) + grouped_by_views[schema][view_kind] = f + + return list(concatMap(maybe_create_view_group, grouped_by_views.values())) + + +def get_grouped_native_functions( + native_functions: Sequence[NativeFunction], +) -> Sequence[NativeFunction | NativeFunctionsGroup]: + def flatten_pre_group( + d: dict[SchemaKind, NativeFunction], + ) -> Sequence[NativeFunction | NativeFunctionsGroup]: + r = NativeFunctionsGroup.from_dict(d) + if r is None: + # Invariant: any NativeFunctions that are code-generated + # should have been grouped into NativeFunctionsGroup objects + if any("generated" in f.tags for f in d.values()): + raise AssertionError( + "Generated NativeFunctions should have been grouped into " + f"NativeFunctionsGroup objects: {list(d.values())}" + ) + return list(d.values()) + else: + return [r] + + # TODO: how come ValuesView isn't a Sequence lol + pre_grouped_native_functions = pre_group_native_functions(native_functions) + return list( + concatMap(flatten_pre_group, list(pre_grouped_native_functions.values())) + ) + + +def get_ns_grouped_kernels( + *, + grouped_native_functions: Sequence[NativeFunction | NativeFunctionsGroup], + backend_indices: dict[DispatchKey, BackendIndex], + native_function_decl_gen: Callable[ + [NativeFunctionsGroup | NativeFunction, BackendIndex], list[str] + ] = dest.compute_native_function_declaration, +) -> dict[str, list[str]]: + ns_grouped_kernels: dict[str, list[str]] = defaultdict(list) + for f in grouped_native_functions: + native_function_namespaces = set() + dispatch_keys = set() + for dispatch_key, backend_idx in backend_indices.items(): + backend_metadata = backend_idx.get_kernel(f) + if backend_metadata: + namespace = backend_metadata.cpp_namespace + dispatch_keys.add(dispatch_key) + native_function_namespaces.add(namespace) + else: + namespace = DEFAULT_KERNEL_NAMESPACE + if len(native_function_namespaces) > 1: + raise AssertionError( + f"Codegen only supports one namespace per operator, " + f"got {native_function_namespaces} from {dispatch_keys}" + ) + ns_grouped_kernels[namespace].extend( + native_function_decl_gen(f, backend_idx) + ) + return ns_grouped_kernels + + +def get_native_function_declarations_from_ns_grouped_kernels( + *, + ns_grouped_kernels: dict[str, list[str]], +) -> list[str]: + declarations: list[str] = [] + newline = "\n" + for namespace, kernels in ns_grouped_kernels.items(): + ns_helper = NamespaceHelper( + namespace_str=namespace, + entity_name="", + max_level=4, + ) + # Convert to a set first to remove duplicate kernel names. Backends are + # allowed to repeat kernel names; only generate the declaration once! + ordered_kernels = list(OrderedDict.fromkeys(kernels)) + declarations.extend( + f""" +{ns_helper.prologue} +{newline.join(ordered_kernels)} +{ns_helper.epilogue} + """.split(newline) + ) + return declarations + + +# Return native function declarations grouped by their namespaces. +def get_native_function_declarations( + *, + grouped_native_functions: Sequence[NativeFunction | NativeFunctionsGroup], + backend_indices: dict[DispatchKey, BackendIndex], + native_function_decl_gen: Callable[ + [NativeFunctionsGroup | NativeFunction, BackendIndex], list[str] + ] = dest.compute_native_function_declaration, +) -> list[str]: + """ + Generate kernel declarations, in `NativeFunction(s).h`. + :param grouped_native_functions: a sequence of `NativeFunction` or `NativeFunctionGroup`. + :param backend_indices: kernel collections grouped by dispatch key. + :param native_function_decl_gen: callable to generate kernel declaration for each `NativeFunction`. + :return: a list of string, from the string with all declarations, grouped by namespaces, split by newline. + """ + + ns_grouped_kernels = get_ns_grouped_kernels( + grouped_native_functions=grouped_native_functions, + backend_indices=backend_indices, + native_function_decl_gen=native_function_decl_gen, + ) + return get_native_function_declarations_from_ns_grouped_kernels( + ns_grouped_kernels=ns_grouped_kernels + ) + + +def get_kernel_namespace( + *, f: NativeFunction | NativeFunctionsGroup, backend_idx: BackendIndex +) -> str: + backend_metadata = backend_idx.get_kernel(f) + if backend_metadata and "::native" not in backend_metadata.cpp_namespace: + func_name = ( + f.func.name if isinstance(f, NativeFunction) else f.functional.func.name + ) + raise AssertionError( + f"The kernel for function {func_name} " + f"with dispatch key {backend_idx.dispatch_key} " + f"has a namespace {backend_metadata.cpp_namespace} and it's not ending with '::native'." + ) + return ( + backend_metadata.cpp_namespace if backend_metadata else DEFAULT_KERNEL_NAMESPACE + ) + + +# Return native function definitions grouped by dispatch key and custom namespace. +# Used in RegisterDispatchKey.cpp and etc. +def get_native_function_definitions( + *, + fm: FileManager, + grouped_native_functions: Sequence[NativeFunction | NativeFunctionsGroup], + dispatch_key: DispatchKey, + backend_idx: BackendIndex, + selector: SelectiveBuilder, + rocm: bool, + symint: bool, + skip_dispatcher_op_registration: bool, + gen_dispatch_helpers: bool, +) -> list[str]: + definitions: list[str] = [] + ns_definitions: dict[str, list[str]] = defaultdict(list) + anonymous_definitions: dict[str, list[str]] = defaultdict(list) + registrations: dict[str, dict[str, list[str]]] = defaultdict(dict) + newline = "\n" + ns_gen = dest.RegisterDispatchKey( + backend_idx, + Target.NAMESPACED_DEFINITION, + selector, + rocm=rocm, + symint=symint, + class_method_name=None, + skip_dispatcher_op_registration=skip_dispatcher_op_registration, + ) + anonymous_gen = dest.RegisterDispatchKey( + backend_idx, + Target.ANONYMOUS_DEFINITION, + selector, + rocm=rocm, + symint=symint, + class_method_name=None, + skip_dispatcher_op_registration=skip_dispatcher_op_registration, + ) + reg_gen = dest.RegisterDispatchKey( + backend_idx, + Target.REGISTRATION, + selector, + rocm=rocm, + symint=symint, + class_method_name=None, + skip_dispatcher_op_registration=skip_dispatcher_op_registration, + ) + for f in grouped_native_functions: + kernel_namespace = get_kernel_namespace(f=f, backend_idx=backend_idx).replace( + "::native", "" + ) + + ns_definitions[kernel_namespace].extend( + ns_gen(f), + ) + anonymous_definitions[kernel_namespace].extend( + anonymous_gen(f), + ) + namespace = ( + f.namespace if isinstance(f, NativeFunction) else f.functional.namespace + ) + if namespace not in registrations[kernel_namespace]: + registrations[kernel_namespace] = defaultdict(list) + registrations[kernel_namespace][namespace].extend( + reg_gen(f), + ) + + for kernel_namespace in ns_definitions: + if len(ns_definitions[kernel_namespace]) == 0: + continue + ns_helper = NamespaceHelper(namespace_str=kernel_namespace) + registration_body = "" + for namespace in registrations[kernel_namespace]: + if not registrations[kernel_namespace][namespace]: + continue + registration_body += f""" +TORCH_LIBRARY_IMPL({namespace}, {dispatch_key}, m) {{ + {newline.join(registrations[kernel_namespace][namespace])} +}}""" + definitions.extend( + fm.substitute_with_template( + "RegisterDispatchDefinitions.ini", + lambda: { + "ns_prologue": ns_helper.prologue, + "ns_epilogue": ns_helper.epilogue, + "dispatch_anonymous_definitions": anonymous_definitions[ + kernel_namespace + ], + "static_init_dispatch_registrations": "" + if skip_dispatcher_op_registration + else registration_body, + "deferred_dispatch_registrations": "", + "dispatch_namespace": dispatch_key.lower(), + "dispatch_namespaced_definitions": ns_definitions[kernel_namespace], + }, + ).split(newline) + ) + + return definitions + + +# Return native function declarations grouped by dispatch key and custom namespace. +# Used in CPUFunctions_inl.h and etc. +def get_namespaced_declaration( + *, + grouped_native_functions: Sequence[NativeFunction | NativeFunctionsGroup], + dispatch_key: DispatchKey, + backend_idx: BackendIndex, + selector: SelectiveBuilder, + rocm: bool, + symint: bool, +) -> list[str]: + declarations: list[str] = [] + ns_grouped_kernels: dict[str, list[str]] = defaultdict(list) + newline = "\n" + func = dest.RegisterDispatchKey( + backend_idx, + Target.NAMESPACED_DECLARATION, + selector, + rocm=rocm, + class_method_name=None, + skip_dispatcher_op_registration=False, + symint=symint, + ) + for f in grouped_native_functions: + namespace = get_kernel_namespace(f=f, backend_idx=backend_idx).replace( + "native", dispatch_key.lower() + ) + + ns_grouped_kernels[namespace].extend( + func(f), + ) + + for namespace, kernels in ns_grouped_kernels.items(): + if len(kernels) == 0: + continue + ns_helper = NamespaceHelper( + namespace_str=namespace, entity_name="", max_level=3 + ) + ordered_kernels = list(OrderedDict.fromkeys(kernels)) + declarations.extend( + f""" +{ns_helper.prologue} +{newline.join(ordered_kernels)} +{ns_helper.epilogue} + """.split(newline) + ) + return declarations + + +# Return native function schema registration code for aten and other namespaces. +def get_native_function_schema_registrations( + *, + native_functions: Sequence[NativeFunction], + schema_selector: SelectiveBuilder, +) -> tuple[list[str], str]: + ns_native_functions: dict[str, list[NativeFunction]] = defaultdict(list) + for native_function in native_functions: + ns_native_functions[native_function.namespace].append(native_function) + schema_registrations = "" + aten_schema_registrations = [] + custom_namespace = None + for namespace, funcs in ns_native_functions.items(): + schema_registrations_body = list( + mapMaybe(RegisterSchema(schema_selector), funcs) + ) + # NB: we have to separate aten namespace registration from other namespaces, + # because in the template we hardcoded an operator for ATen already. + if namespace == "aten": + aten_schema_registrations = schema_registrations_body + else: + custom_namespace = namespace + tab = "\t" + # if the namespace is predefined, we should use define a library fragment + # instead of a new library + torch_library_macro = ( + "TORCH_LIBRARY_FRAGMENT" + if namespace in FRAGMENT_NAMESPACES + else "TORCH_LIBRARY" + ) + schema_registrations += f""" +{torch_library_macro}({custom_namespace}, m) {{ + {tab.join(schema_registrations_body)} +}};""" + return (aten_schema_registrations, schema_registrations) + + +def gen_aggregated_headers( + *, + native_functions: Sequence[NativeFunction], + grouped_native_functions: Sequence[NativeFunction | NativeFunctionsGroup], + structured_native_functions: Sequence[NativeFunctionsGroup], + static_dispatch_idx: list[BackendIndex], + selector: SelectiveBuilder, + backend_indices: dict[DispatchKey, BackendIndex], + cpu_fm: FileManager, + device_fms: dict[str, FileManager], + functions_keys: set[DispatchKey], + dispatch_keys: Sequence[DispatchKey], + rocm: bool, +) -> None: + # Buck doesn't support dynamic output files, so we aggregate all operator + # headers into a single file + cpu_fm.write( + "NativeMetaFunctions.h", + lambda: { + "NativeMetaFunctions_includes": [], + "NativeMetaFunctions_declarations": list( + mapMaybe(compute_meta_function_declaration, structured_native_functions) + ), + }, + ) + method_native_functions = [ + fn for fn in native_functions if Variant.method in fn.variants + ] + non_method_native_functions = [ + fn for fn in native_functions if fn not in method_native_functions + ] + cpu_fm.write( + "MethodOperators.h", + lambda: { + "MethodOperators_includes": [], + "MethodOperators_declarations": list( + mapMaybe( + ComputeOperators( + Target.DECLARATION, + static_dispatch_backend_indices=static_dispatch_idx, + ), + method_native_functions, + ) + ), + }, + ) + cpu_fm.write( + "Operators.h", + lambda: { + "Operators_includes": ["#include "], + "Operators_declarations": list( + mapMaybe( + ComputeOperators( + Target.DECLARATION, + static_dispatch_backend_indices=static_dispatch_idx, + ), + non_method_native_functions, + ) + ), + }, + ) + cpu_fm.write( + "Functions.h", + lambda: { + "static_dispatch_extra_headers": static_dispatch_extra_headers( + static_dispatch_idx + ), + "Functions_includes": ["#include "], + "Functions_declarations": list( + mapMaybe( + ComputeFunction(), + native_functions, + ) + ), + }, + ) + declarations = get_native_function_declarations( + grouped_native_functions=grouped_native_functions, + backend_indices=backend_indices, + ) + cpu_fm.write( + "NativeFunctions.h", + lambda: { + "NativeFunctions_includes": ["#include "], + "NativeFunctions_declarations": declarations, + }, + ) + + for dispatch_key in dispatch_keys: + fm = file_manager_from_dispatch_key(dispatch_key, device_fms, cpu_fm) + if dispatch_key in functions_keys: + inl_headers = f"#include " + + fm.write_with_template( + f"{dispatch_key}Functions.h", + "DispatchKeyFunctions.h", + lambda: { + "dispatch_key": str(dispatch_key), + "inline_headers": inl_headers, + }, + ) + fm.write_with_template( + f"{dispatch_key}Functions_inl.h", + "DispatchKeyFunctions_inl.h", + lambda: { + "DispatchKeyFunctions_inl_includes": [], + "dispatch_namespace": dispatch_key.lower(), + "dispatch_namespaced_declarations": get_namespaced_declaration( + grouped_native_functions=grouped_native_functions, + dispatch_key=dispatch_key, + backend_idx=backend_indices[dispatch_key], + selector=selector, + rocm=rocm, + symint=True, + ), + }, + ) + + del fm + + +def gen_per_operator_headers( + *, + native_functions: Sequence[NativeFunction], + grouped_native_functions: Sequence[NativeFunction | NativeFunctionsGroup], + static_dispatch_idx: list[BackendIndex], + selector: SelectiveBuilder, + backend_indices: dict[DispatchKey, BackendIndex], + cpu_fm: FileManager, + device_fms: dict[str, FileManager], + ops_fm: FileManager, + functions_keys: set[DispatchKey], + dispatch_keys: Sequence[DispatchKey], + rocm: bool, +) -> None: + # For CMake builds, split operator declarations into separate headers in + # the ATen/ops folder to split up header dependencies + functions_by_root_name: dict[str, list[NativeFunction]] = defaultdict(list) + for fn in native_functions: + functions_by_root_name[fn.root_name].append(fn) + + grouped_functions_by_root_name: dict[ + str, list[NativeFunction | NativeFunctionsGroup] + ] = defaultdict(list) + for group in grouped_native_functions: + name = group.root_name + grouped_functions_by_root_name[name].append(group) + + for name, functions in functions_by_root_name.items(): + ops_fm.write_with_template( + f"{name}_ops.h", + "Operator.h", + lambda: { + "declarations": list( + mapMaybe( + ComputeOperators( + Target.DECLARATION, + static_dispatch_backend_indices=static_dispatch_idx, + ), + functions, + ) + ), + }, + ) + + ops_fm.write_with_template( + f"{name}.h", + "Function.h", + lambda: { + "static_dispatch_ops_headers": list( + mapMaybe( + lambda fn: static_dispatch_ops_header( + fn, backend_index=static_dispatch_idx + ), + functions, + ) + ), + "operator_includes": f"#include ", + "function_definitions": list( + mapMaybe( + ComputeFunction(), + functions, + ) + ), + }, + ) + + grouped_functions = grouped_functions_by_root_name.get(name, []) + structured_functions = [ + fn + for fn in grouped_functions + if isinstance(fn, NativeFunctionsGroup) and fn.structured + ] + is_structured = len(structured_functions) > 0 + + if is_structured: + ops_fm.write_with_template( + f"{name}_meta.h", + "NativeMetaFunction.h", + lambda: { + "meta_function_declarations": list( + mapMaybe( + compute_meta_function_declaration, structured_functions + ) + ), + }, + ) + declarations = get_native_function_declarations( + grouped_native_functions=grouped_functions, + backend_indices=backend_indices, + native_function_decl_gen=dest.compute_native_function_declaration, + ) + ops_fm.write_with_template( + f"{name}_native.h", + "NativeFunction.h", + lambda: { + "extra_includes": ( + f"#include " if is_structured else [] + ), + "native_function_declarations": declarations, + }, + ) + + for category, suffix in [ + ("Functions", ""), + ("Operators", "_ops"), + ("NativeMetaFunctions", "_meta"), + ("NativeFunctions", "_native"), + ]: + cpu_fm.write( + f"{category}.h", + lambda: { + f"{category}_includes": [ + f"#include " + for name in sorted(functions_by_root_name.keys()) + ], + f"{category}_declarations": [], + }, + ) + + for dispatch_key in dispatch_keys: + if dispatch_key not in functions_keys: + continue + + dispatch_namespace = dispatch_key.lower() + dispatch_names = [] + + for name, functions in functions_by_root_name.items(): + grouped_functions = grouped_functions_by_root_name.get(name, []) + declarations = list( + concatMap( + dest.RegisterDispatchKey( + backend_indices[dispatch_key], + Target.NAMESPACED_DECLARATION, + selector, + rocm=rocm, + symint=True, + class_method_name=None, + skip_dispatcher_op_registration=False, + ), + grouped_functions, + ) + ) + + if len(declarations) == 0: + continue + + dispatch_names.append(name) + ops_fm.write_with_template( + f"{name}_{dispatch_namespace}_dispatch.h", + "DispatchKeyFunction.h", + lambda: { + "dispatch_namespace": dispatch_namespace, + "dispatch_namespaced_declarations": declarations, + }, + ) + + fm = file_manager_from_dispatch_key(dispatch_key, device_fms, cpu_fm) + inl_headers = f"#include " + + fm.write_with_template( + f"{dispatch_key}Functions.h", + "DispatchKeyFunctions.h", + lambda: { + "dispatch_key": str(dispatch_key), + "inline_headers": inl_headers, + }, + ) + fm.write_with_template( + f"{dispatch_key}Functions_inl.h", + "DispatchKeyFunctions_inl.h", + lambda: { + "dispatch_namespace": dispatch_namespace, + "DispatchKeyFunctions_inl_includes": [ + f"#include " + for name in sorted(dispatch_names) + ], + "dispatch_namespaced_declarations": [], + }, + ) + del fm + + cpu_fm.write( + "MethodOperators.h", + lambda: { + "MethodOperators_includes": sorted( + f"#include " + for name, functions in functions_by_root_name.items() + if any(Variant.method in fn.variants for fn in functions) + ), + "MethodOperators_declarations": [], + }, + ) + + +def gen_headers( + *, + native_functions: Sequence[NativeFunction], + valid_tags: set[str], + grouped_native_functions: Sequence[NativeFunction | NativeFunctionsGroup], + structured_native_functions: Sequence[NativeFunctionsGroup], + static_dispatch_idx: list[BackendIndex], + selector: SelectiveBuilder, + backend_indices: dict[DispatchKey, BackendIndex], + headeronly_fm: FileManager, + core_fm: FileManager, + cpu_fm: FileManager, + device_fms: dict[str, FileManager], + ops_fm: FileManager, + dispatch_keys: Sequence[DispatchKey], + functions_keys: set[DispatchKey], + rocm: bool, + per_operator_headers: bool, +) -> None: + if per_operator_headers: + gen_per_operator_headers( + native_functions=native_functions, + grouped_native_functions=grouped_native_functions, + static_dispatch_idx=static_dispatch_idx, + selector=selector, + backend_indices=backend_indices, + cpu_fm=cpu_fm, + device_fms=device_fms, + ops_fm=ops_fm, + dispatch_keys=dispatch_keys, + functions_keys=functions_keys, + rocm=rocm, + ) + else: + gen_aggregated_headers( + native_functions=native_functions, + grouped_native_functions=grouped_native_functions, + structured_native_functions=structured_native_functions, + static_dispatch_idx=static_dispatch_idx, + selector=selector, + backend_indices=backend_indices, + cpu_fm=cpu_fm, + device_fms=device_fms, + dispatch_keys=dispatch_keys, + functions_keys=functions_keys, + rocm=rocm, + ) + + core_fm.write( + "TensorBody.h", + lambda: { + "tensor_method_declarations": list( + mapMaybe( + ComputeTensorMethod( + target=Target.DECLARATION, + static_dispatch_backend_indices=static_dispatch_idx, + ), + native_functions, + ) + ), + "tensor_method_definitions": list( + mapMaybe( + ComputeTensorMethod( + target=Target.DEFINITION, + static_dispatch_backend_indices=static_dispatch_idx, + ), + native_functions, + ) + ), + }, + ) + + cpu_fm.write( + "RedispatchFunctions.h", + lambda: { + "function_redispatch_definitions": list( + mapMaybe(ComputeRedispatchFunction(), native_functions) + ), + }, + ) + + cpu_fm.write( + "RegistrationDeclarations.h", + lambda: { + "registration_declarations": [ + compute_registration_declarations(f, backend_indices) + for f in native_functions + ], + }, + ) + + cpu_fm.write( + "VmapGeneratedPlumbing.h", lambda: gen_all_vmap_plumbing(native_functions) + ) + + def gen_aten_interned_strings() -> dict[str, str]: + attrs: set[str] = set() # All function argument names + names = set() # All ATen function names + for func in native_functions: + names.add(str(func.func.name.name)) + # Some operators don't have a functional variant but we still create a + # symbol without the underscore + names.add(func.func.name.name.base) + + attrs.update(arg.name for arg in func.func.schema_order_arguments()) + + # These are keywords in C++, so aren't valid symbol names + # https://en.cppreference.com/w/cpp/language/operator_alternative + names -= { + "and", + "and_eq", + "bitand", + "bitor", + "compl", + "not", + "not_eq", + "or", + "or_eq", + "xor", + "xor_eq", + } + + return { + "aten_symbols": " \\\n".join( + [f"_(aten, {name})" for name in sorted(names)] + ), + "attr_symbols": " \\\n".join( + [f"_(attr, {name})" for name in sorted(attrs)] + ), + } + + core_fm.write("aten_interned_strings.h", gen_aten_interned_strings) + + def gen_tags_enum() -> dict[str, str]: + return {"enum_of_valid_tags": (",\n".join(sorted(valid_tags)))} + + headeronly_fm.write("enum_tag.h", gen_tags_enum) + + +def gen_source_files( + *, + native_functions: Sequence[NativeFunction], + grouped_native_functions: Sequence[NativeFunction | NativeFunctionsGroup], + structured_native_functions: Sequence[NativeFunctionsGroup], + view_groups: Sequence[NativeFunctionsViewGroup], + selector: SelectiveBuilder, + static_dispatch_idx: list[BackendIndex], + backend_indices: dict[DispatchKey, BackendIndex], + aoti_fm: FileManager, + core_fm: FileManager, + cpu_vec_fm: FileManager, + cpu_fm: FileManager, + device_fms: dict[str, FileManager], + dispatch_keys: Sequence[DispatchKey], + functions_keys: set[DispatchKey], + rocm: bool, + force_schema_registration: bool, + per_operator_headers: bool, + skip_dispatcher_op_registration: bool, + update_aoti_c_shim: bool, + aoti_backends: set[DispatchKey | None], + extend_aoti_c_shim: bool, +) -> None: + extra_cuda_headers = """\ +#include +#include +#include +#include """ + if rocm: + extra_cuda_headers = """\ +#include +#include +#include +#include """ + + for dispatch_key in dispatch_keys: + fm = file_manager_from_dispatch_key(dispatch_key, device_fms, cpu_fm) + if per_operator_headers: + + def operator_headers() -> list[str]: + headers = [] + for g in grouped_native_functions: + is_registered = False + if backend_index.has_kernel(g): + is_registered = True + # The above has_kernel test on a group will only test for + # the existence of out dispatch, because that's how + # structured kernels work. But sometimes functions can be + # grouped but not be structured, and then you need to check + # each individual piece, as they may have manual dispatch + # entries. + elif isinstance(g, NativeFunctionsGroup) and any( + backend_index.has_kernel(fn) for fn in g.functions() + ): + is_registered = True + # TODO: this condition is a bit questionable + # (It has to do with the fact that structured kernels get generated kernels + # to the Meta + CompositeExplicitAutogradNonFunctional keys). + elif g.structured and dispatch_key in ( + DispatchKey.Meta, + DispatchKey.CompositeExplicitAutogradNonFunctional, + ): + is_registered = True + if not is_registered: + continue + + headers.append(f"#include ") + if ( + dispatch_key + == DispatchKey.CompositeExplicitAutogradNonFunctional + ): + headers.append(f"#include ") + if dispatch_key in functions_keys: + headers.append( + f"#include " + ) + + return sorted(set(headers)) + + else: + + def operator_headers() -> list[str]: + headers = ["#include "] + if dispatch_key == DispatchKey.CompositeExplicitAutogradNonFunctional: + headers.append("#include ") + if dispatch_key in functions_keys: + headers.append(f"#include ") + return headers + + backend_index = backend_indices[dispatch_key] + ns_grouped_native_functions = defaultdict(list) + for grouped_native_function in grouped_native_functions: + namespace = ( + grouped_native_function.namespace + if isinstance(grouped_native_function, NativeFunction) + else grouped_native_function.functional.namespace + ) + ns_grouped_native_functions[namespace].append(grouped_native_function) + + dispatch_namespace = str(dispatch_key).lower() + + # CompositeImplicitAutogradNestdTensor does not currently user the helpers generated + # compilation will fail when `-Werror=unused-function` flag is set + gen_dispatch_helpers: bool = ( + dispatch_key != DispatchKey.CompositeImplicitAutogradNestedTensor + ) + + register_dispatch_key_base_env = { + "extra_cuda_headers": extra_cuda_headers + if is_cuda_dispatch_key(dispatch_key) + else "", + "external_backend_headers": "", + "dispatch_headers": dest.gen_registration_headers( + backend_index, per_operator_headers, rocm + ), + # ops_headers *could* be sharded, but doesn't seem necessary? + "ops_headers": operator_headers(), + "dispatch_helpers": ( + dest.gen_registration_helpers(backend_index) + if gen_dispatch_helpers + else [] + ), + } + + def register_dispatch_key_env_callable( + gnf: NativeFunction | NativeFunctionsGroup, + ) -> dict[str, list[str]]: + return { + "dispatch_definitions": get_native_function_definitions( + fm=fm, # noqa: F821 + grouped_native_functions=[gnf], + dispatch_key=dispatch_key, + backend_idx=backend_index, + selector=selector, + rocm=rocm, + symint=True, + skip_dispatcher_op_registration=skip_dispatcher_op_registration, + gen_dispatch_helpers=gen_dispatch_helpers, + ) + } + + fm.write_sharded_with_template( + f"Register{dispatch_key}.cpp", + "RegisterDispatchKey.cpp", + grouped_native_functions, + key_fn=lambda x: x.root_name, + env_callable=register_dispatch_key_env_callable, + num_shards=4 if dispatch_key == DispatchKey.CPU else 1, + base_env=register_dispatch_key_base_env, + sharded_keys={"dispatch_definitions"}, + ) + + for g in structured_native_functions: + if not g.out.ufunc_inner_loop or not is_ufunc_dispatch_key(dispatch_key): + continue + name = g.functional.func.name.name + if dispatch_key is DispatchKey.CPU: + if fm is not cpu_fm: + raise AssertionError("Expected fm to be cpu_fm for DispatchKey.CPU") + fm.write_with_template( + f"UfuncCPU_{name}.cpp", + "UfuncCPU.cpp", + lambda: { + "meta_declaration": compute_meta_function_declaration(g), + "native_declaration": dest.compute_native_function_declaration( + g, backend_indices[dispatch_key] + ), + "native_definitions": dest.compute_ufunc_cpu(g), + }, + ) + cpu_vec_fm.write_with_template( + f"UfuncCPUKernel_{name}.cpp", + "UfuncCPUKernel.cpp", + lambda: { + "name": name, + "native_definitions": dest.compute_ufunc_cpu_kernel(g), + }, + ) + elif dispatch_key is DispatchKey.CUDA: + cuda_headers = "#include " + if rocm: + cuda_headers = "#include " + fm.write_with_template( + f"UfuncCUDA_{name}.cu", + "UfuncCUDA.cu", + lambda: { + "name": name, + "cuda_headers": cuda_headers, + "meta_declaration": compute_meta_function_declaration(g), + "native_declaration": dest.compute_native_function_declaration( + g, backend_indices[dispatch_key] + ), + "native_definitions": dest.compute_ufunc_cuda(g), + }, + ) + else: + raise AssertionError(f"unrecognized {dispatch_key} for ufunc") + + del fm + + gen_aoti_c_shim_files( + aoti_fm=aoti_fm, + aoti_backends=aoti_backends, + native_functions=native_functions, + backend_indices=backend_indices, + structured_native_functions=structured_native_functions, + extra_cuda_headers=extra_cuda_headers, + update_aoti_c_shim=update_aoti_c_shim, + extend_aoti_c_shim=extend_aoti_c_shim, + ) + + # BackendSelect is generated specially + def gen_backend_select() -> dict[str, list[str]]: + relevant_fns = [ + fn for fn in native_functions if needs_backend_select(fn, selector) + ] + return { + "ops_headers": [ + f"#include " for fn in relevant_fns + ], + "backend_select_method_definitions": list( + mapMaybe( + ComputeBackendSelect(Target.DEFINITION, selector), relevant_fns + ) + ), + "backend_select_function_registrations": list( + mapMaybe( + ComputeBackendSelect(Target.REGISTRATION, selector), relevant_fns + ) + ), + } + + cpu_fm.write("RegisterBackendSelect.cpp", gen_backend_select) + + schema_selector = selector + if force_schema_registration: + schema_selector = SelectiveBuilder.get_nop_selector() + + ( + aten_schema_registrations, + schema_registrations, + ) = get_native_function_schema_registrations( + native_functions=native_functions, schema_selector=schema_selector + ) + cpu_fm.write( + "RegisterSchema.cpp", + lambda: { + "aten_schema_registrations": [] + if skip_dispatcher_op_registration + else aten_schema_registrations, + "schema_registrations": [] + if skip_dispatcher_op_registration + else schema_registrations, + }, + ) + + def key_func( + fn: NativeFunction | NativeFunctionsGroup | NativeFunctionsViewGroup, + ) -> str: + return fn.root_name + + cpu_fm.write_sharded( + "Operators.cpp", + native_functions, + key_fn=key_func, + env_callable=lambda fn: { + "operator_headers": [f"#include "], + "definitions": [ + ComputeOperators( + Target.DEFINITION, + static_dispatch_backend_indices=static_dispatch_idx, + )(fn) + ], + }, + base_env={ + "static_dispatch_extra_headers": static_dispatch_extra_headers( + static_dispatch_idx + ), + }, + num_shards=5, + sharded_keys={ + "operator_headers", + "definitions", + "static_dispatch_extra_headers", + }, + ) + + cpu_fm.write("Functions.cpp", dict) + + core_fm.write("TensorMethods.cpp", dict) + + core_fm.write( + "ATenOpList.cpp", + lambda: { + "aten_ops": list(mapMaybe(compute_aten_op, native_functions)), + }, + ) + + def gen_op_headers( + g: NativeFunction | NativeFunctionsGroup | NativeFunctionsViewGroup, + ) -> list[str]: + if isinstance(g, NativeFunctionsViewGroup): + # view ops always get a functionalization kernel + headers = [ + f"#include ", + f"#include ", + ] + if g.view_copy is not None: + headers += [ + f"#include ", + f"#include ", + ] + return headers + elif isinstance(g, NativeFunctionsGroup): + headers = [ + f"#include ", + f"#include ", + f"#include ", + f"#include ", + ] + if g.inplace is not None: + headers += [ + f"#include ", + f"#include ", + ] + if g.mutable is not None: + headers += [ + f"#include ", + f"#include ", + ] + return headers + else: + return [ + f"#include ", + f"#include ", + ] + + def functionalization_env_callable( + g: NativeFunction | NativeFunctionsGroup | NativeFunctionsViewGroup, + ) -> dict[str, list[str]]: + return { + "ops_headers": gen_op_headers(g), + "func_definitions": gen_functionalization_definition( + selector, + g, + ), + "func_registrations": gen_functionalization_registration( + selector, + g, + backend_indices[DispatchKey.CompositeImplicitAutograd], + ), + } + + all_groups: list[ + NativeFunction | NativeFunctionsGroup | NativeFunctionsViewGroup + ] = list(structured_native_functions) + list( + view_groups # type: ignore[assignment, arg-type, operator] + ) + # Note: all operators that functionalization needs to handle (mutable and aliasing ops) should be grouped properly. + # The only reason we really need to deal with direct NativeFunctions here (instead of the groups) is because: + # (1) We can provide better error checking (error out if someone introduces a mutable op that doesn't obey the grouping logic) + # (2) functionalization needs to manually register CompositeImplicitAutograd kernels, which might not be grouped. + # Although this could go away long-term if we add a dedicated dispatch key for decompositions. + structured_map: dict[OperatorName, NativeFunction] = { + f.func.name: f + for f in concatMap(lambda g: list(g.functions()), structured_native_functions) + } + view_map: dict[OperatorName, NativeFunction] = { + f.func.name: f for f in concatMap(lambda g: list(g.functions()), view_groups) + } + all_groups.extend( + f + for f in native_functions + if f.func.name not in structured_map and f.func.name not in view_map + ) + + cpu_fm.write_sharded( + "RegisterFunctionalization.cpp", + all_groups, + key_fn=key_func, + env_callable=functionalization_env_callable, + num_shards=4, + sharded_keys={ + "ops_headers", + "func_definitions", + "func_registrations", + "func_add_back_views_definitions", + "func_add_back_views_registrations", + }, + ) + + cpu_fm.write( + "FunctionalInverses.h", + lambda: { + "view_inverse_declarations": list( + mapMaybe( + lambda g: gen_functionalization_view_inverse_declaration( + selector, g + ), + view_groups, + ) + ) + }, + ) + + cpu_fm.write( + "ViewMetaClasses.h", + lambda: { + "view_meta_declarations": list( + concatMap( + lambda g: gen_functionalization_view_meta_classes_decl(selector, g), + view_groups, + ) + ) + }, + ) + + cpu_fm.write( + "ViewMetaClasses.cpp", + lambda: { + "view_meta_implementations": list( + concatMap( + lambda g: gen_functionalization_view_meta_classes_impl(selector, g), + view_groups, + ) + ), + "op_headers": list(concatMap(gen_op_headers, view_groups)), + }, + ) + + # Note [view_copy NativeFunctions] + # Every view operator in native_functions.yaml that is not CompositeImplicitAutograd + # needs to have a corresponding non-aliasing {view}_copy variant. + # Backends that use functionalization and don't know how to handle aliasing ops + # are expected to implement kernels for these {view}_copy kernels instead. + # The code for {view}_copy operators in core is pretty boilerplate-heavy however, + # so we codegen the following: + # (1) A CompositeExplicitAutogradNonFunctional kernel for every {view}_copy operator. + # These are never explicitly invoked by the functionalization pass, + # but they could theoretically be called from user code (I added these kernels for completeness, + # since the ops are part of the public API). + # (2) A derivative formula for every {view}_copy operator + # {view}_copy operators can reuse the same derivative formulas as their {view} op counterparts, + # so rather than stamping all of the entries out in derivatives.yaml, + # we codegen them in. + # This is similar to how autograd codegen doesn't require inplace ops to have a derivatives.yaml entry. + cpu_fm.write( + "CompositeViewCopyKernels.cpp", + lambda: { + "ops_headers": [ + "\n".join( + f"#include \n" + # NB: this include is important as it ensures we + # set the visibility on generated view_copy kernels + # correctly + f"#include " + for f in ( + [g.view] if g.view_copy is None else [g.view, g.view_copy] + ) + ) + for g in view_groups + ] + + [ + "\n".join( + f"#include \n" + # NB: this include is also important for correct visibility + f"#include " + for f in [g.inplace, g.mutable, g.functional] + if f is not None and "generated" not in f.tags + ) + for g in structured_native_functions + ], + "CompositeViewCopyKernel_Definitions": list( + mapMaybe( + GenCompositeViewCopyKernel( + backend_indices[ + DispatchKey.CompositeExplicitAutogradNonFunctional + ] + ), + view_groups, + ) + ), + "GeneratedCompositeFunctional_Definitions": list( + mapMaybe( + gen_composite_functional_kernel, + structured_native_functions, + ) + ), + "GeneratedCompositeOut_Definitions": list( + mapMaybe( + gen_composite_out_kernel, + structured_native_functions, + ) + ), + }, + ) + + +def gen_declarations_yaml( + cpu_fm: FileManager, native_functions: Sequence[NativeFunction] +) -> None: + cpu_fm.write( + "Declarations.yaml", + lambda: format_yaml([compute_declaration_yaml(f) for f in native_functions]), + ) + + +def get_torchgen_root() -> Path: + """ + If you're depending on torchgen out-of-tree, you can use the root to figure + out the path to native_functions.yaml + """ + return Path(__file__).parent.resolve() + + +def main() -> None: + parser = argparse.ArgumentParser(description="Generate ATen source files") + parser.add_argument( + "-s", + "--source-path", + help="path to source directory for ATen", + default="aten/src/ATen", + ) + parser.add_argument( + "-o", + "--output-dependencies", + help="output a list of dependencies into the given file and exit", + ) + parser.add_argument( + "--dry-run", + action="store_true", + help="run without writing any files (still updates outputs)", + ) + parser.add_argument( + "--per-operator-headers", + action="store_true", + help="generate separate headers per operator in ATen/ops", + ) + parser.add_argument( + "-d", + "--install-dir", + "--install_dir", + help="output directory", + default="build/aten/src/ATen", + ) + parser.add_argument( + "--aoti-install-dir", + "--aoti_install_dir", + help="output directory for AOTInductor shim", + default="torch/csrc/inductor/aoti_torch/generated", + ) + parser.add_argument( + "--headeronly-install-dir", + "--headeronly_install_dir", + help="output directory for header-only generated files (e.g. enum_tag.h). " + "Defaults to `/core` when --install-dir is set, otherwise " + "`build/torch/headeronly/core`.", + default=None, + ) + parser.add_argument( + "--rocm", + action="store_true", + help="reinterpret CUDA as ROCm/HIP and adjust filepaths accordingly", + ) + parser.add_argument( + "--mps", + action="store_true", + help="Generate MPS registration code when set", + ) + parser.add_argument( + "--xpu", + action="store_true", + help="Generate XPU registration code when set", + ) + parser.add_argument( + "--mtia", + action="store_true", + help="Generate MTIA registration code when set", + ) + + # TODO: --op-registration-whitelist will be removed when all call-sites + # for gen.py are moved over to using the operator YAML file for mobile + # custom build. + parser.add_argument( + "--op-registration-whitelist", + "--op_registration_whitelist", + nargs="*", + help="filter op registrations by the whitelist (if set); " + "each item is `namespace`::`operator name` without overload name; " + "e.g.: aten::empty aten::conv2d ...", + ) + parser.add_argument( + "--op-selection-yaml-path", + "--op_selection_yaml_path", + help="Provide a path to the operator selection (for custom build) YAML " + "that contains the information about the set of selected operators " + "and their categories (training, ...). Each operator is either a " + "full operator name with overload or just a bare operator name. " + "The operator names also contain the namespace prefix (e.g. aten::)", + ) + parser.add_argument( + "--backend-whitelist", + "--backend_whitelist", + nargs="*", + help="filter dispatch backend by the whitelist (if set), " + "e.g.: CPU CUDA QuantizedCPU ...", + ) + parser.add_argument( + "--static-dispatch-backend", + "--static_dispatch_backend", + nargs="*", + help="generate static dispatch code for the specific backend (if set)", + ) + parser.add_argument( + "--skip-dispatcher-op-registration", + "--skip_dispatcher_op_registration", + action="store_true", + help="Avoid registering operators into the dispatcher.", + ) + parser.add_argument( + "--force-schema-registration", + "--force_schema_registration", + action="store_true", + help="force it to generate schema-only registrations for all ops, including" + "those that are not listed on --op-registration-whitelist", + ) + parser.add_argument( + "--generate", + type=str, + nargs="*", + choices=["headers", "sources", "declarations_yaml"], + default=["headers", "sources", "declarations_yaml"], + help="Generate only a subset of files", + ) + parser.add_argument( + "--update-aoti-c-shim", + action="store_true", + help="Update AOTInductor C shim after adding an entry to inductor_fallback_ops in torchgen/aoti/fallback_ops.py. " + "WARNING: Do not use this unless you are sure what you are doing!!!", + ) + parser.add_argument( + "--extend-aoti-c-shim", + action="store_true", + help="This Flag indicates the generation of c shims for out-of-tree ATen ops," + "which is an extension to the In-tree ATen op c shims. This flag needs to be combined with" + "---source-path=" + "--aoti-install-dir=/extend" + " default is torch/csrc/inductor/aoti_torch/generated/extend" + "WARNING: Do not use this unless you are sure what you are doing!!!", + ) + + options = parser.parse_args() + + selector = get_custom_build_selector( + options.op_registration_whitelist, + options.op_selection_yaml_path, + ) + + native_yaml_path = os.path.join(options.source_path, "native/native_functions.yaml") + tags_yaml_path = os.path.join(options.source_path, "native/tags.yaml") + + from torchgen.model import dispatch_keys + + # Only a limited set of dispatch keys get CPUFunctions.h headers generated + # for them; this is the set + functions_keys = { + DispatchKey.CPU, + DispatchKey.CUDA, + DispatchKey.CompositeImplicitAutograd, + DispatchKey.CompositeImplicitAutogradNestedTensor, + DispatchKey.CompositeExplicitAutograd, + DispatchKey.CompositeExplicitAutogradNonFunctional, + DispatchKey.Meta, + DispatchKey.MTIA, + } + + aoti_backends = { + DispatchKey.CPU, + DispatchKey.CUDA, + # None will generate the aten shim based on aten_shimified_ops + # which does not bypass the dispatcher + None, + } + + # TODO: stop generating CUDA kernels for non-CUDA builds + ignore_keys = set() + + MPS_KEYS = {DispatchKey.MPS, DispatchKey.SparseMPS, DispatchKey.SparseCsrMPS} + if options.mps or options.update_aoti_c_shim: + functions_keys.update(MPS_KEYS) + aoti_backends.add(DispatchKey.MPS) + else: + ignore_keys.update(MPS_KEYS) + dispatch_keys[:] = [k for k in dispatch_keys if k not in MPS_KEYS] + + if options.xpu or options.update_aoti_c_shim: + functions_keys.add(DispatchKey.XPU) + aoti_backends.add(DispatchKey.XPU) + else: + ignore_keys.add(DispatchKey.XPU) + + if DispatchKey.XPU in dispatch_keys: + del dispatch_keys[dispatch_keys.index(DispatchKey.XPU)] + + if not options.mtia: + ignore_keys.add(DispatchKey.MTIA) + + if DispatchKey.MTIA in dispatch_keys: + del dispatch_keys[dispatch_keys.index(DispatchKey.MTIA)] + + if options.backend_whitelist: + dispatch_keys = [ + k + for k in dispatch_keys + if is_generic_dispatch_key(k) or str(k) in options.backend_whitelist + ] + + parsed_yaml = parse_native_yaml(native_yaml_path, tags_yaml_path, ignore_keys) + valid_tags = _GLOBAL_PARSE_TAGS_YAML_CACHE[tags_yaml_path] + native_functions, backend_indices = ( + parsed_yaml.native_functions, + parsed_yaml.backend_indices, + ) + + grouped_native_functions = get_grouped_native_functions(native_functions) + + structured_native_functions = [ + g for g in grouped_native_functions if isinstance(g, NativeFunctionsGroup) + ] + native_functions_with_view_groups = get_grouped_by_view_native_functions( + native_functions + ) + view_groups = [ + g + for g in native_functions_with_view_groups + if isinstance(g, NativeFunctionsViewGroup) + ] + + # NB: It is mandatory to NOT use os.path.join here, as the install directory + # will eventually be ingested by cmake, which does not respect Windows style + # path slashes. If you switch this to use os.path.join, you'll get an error + # like: + # + # Syntax error in cmake code when parsing string + # + # C:/Jenkins/workspace/pytorch-builds/pytorch-win-ws2016-cuda9-cudnn7-py3-build/build/aten/src/ATen\core/TensorMethods.h + # + # Invalid character escape '\c'. + core_install_dir = f"{options.install_dir}/core" + Path(core_install_dir).mkdir(parents=True, exist_ok=True) + ops_install_dir = f"{options.install_dir}/ops" + Path(ops_install_dir).mkdir(parents=True, exist_ok=True) + + aoti_install_dir = f"{options.aoti_install_dir}" + Path(aoti_install_dir).mkdir(parents=True, exist_ok=True) + + if options.headeronly_install_dir is not None: + headeronly_install_dir = options.headeronly_install_dir + elif options.install_dir is not None: + headeronly_install_dir = f"{options.install_dir}/core" + else: + headeronly_install_dir = "build/torch/headeronly/core" + Path(headeronly_install_dir).mkdir(parents=True, exist_ok=True) + + core_fm = make_file_manager(options=options, install_dir=core_install_dir) + cpu_fm = make_file_manager(options=options) + cpu_vec_fm = make_file_manager(options=options) + cuda_fm = make_file_manager(options=options) + ops_fm = make_file_manager(options=options, install_dir=ops_install_dir) + aoti_fm = make_file_manager(options=options, install_dir=aoti_install_dir) + headeronly_fm = make_file_manager( + options=options, install_dir=headeronly_install_dir + ) + device_fms = {"cuda": cuda_fm} + if options.xpu: + device_fms["xpu"] = make_file_manager(options=options) + + static_dispatch_idx: list[BackendIndex] = [] + if options.static_dispatch_backend: + static_dispatch_idx = [ + backend_indices[DispatchKey.parse(key)] + for key in options.static_dispatch_backend + ] + for key in options.static_dispatch_backend: + dp_key = DispatchKey.parse(key) + if dp_key not in functions_keys: + functions_keys.add(dp_key) + + if "sources" in options.generate: + gen_source_files( + native_functions=native_functions, + grouped_native_functions=grouped_native_functions, + structured_native_functions=structured_native_functions, + view_groups=view_groups, + selector=selector, + static_dispatch_idx=static_dispatch_idx, + backend_indices=backend_indices, + aoti_fm=aoti_fm, + core_fm=core_fm, + cpu_vec_fm=cpu_vec_fm, + cpu_fm=cpu_fm, + device_fms=device_fms, + dispatch_keys=dispatch_keys, + functions_keys=functions_keys, + rocm=options.rocm, + force_schema_registration=options.force_schema_registration, + per_operator_headers=options.per_operator_headers, + skip_dispatcher_op_registration=options.skip_dispatcher_op_registration, + update_aoti_c_shim=options.update_aoti_c_shim, + aoti_backends=aoti_backends, + extend_aoti_c_shim=options.extend_aoti_c_shim, + ) + + if "headers" in options.generate: + gen_headers( + native_functions=native_functions, + valid_tags=valid_tags, + grouped_native_functions=grouped_native_functions, + structured_native_functions=structured_native_functions, + static_dispatch_idx=static_dispatch_idx, + selector=selector, + backend_indices=backend_indices, + headeronly_fm=headeronly_fm, + core_fm=core_fm, + cpu_fm=cpu_fm, + device_fms=device_fms, + ops_fm=ops_fm, + dispatch_keys=dispatch_keys, + functions_keys=functions_keys, + rocm=options.rocm, + per_operator_headers=options.per_operator_headers, + ) + + if "declarations_yaml" in options.generate: + gen_declarations_yaml(native_functions=native_functions, cpu_fm=cpu_fm) + + if options.output_dependencies: + depfile_path = Path(options.output_dependencies).resolve() + depfile_name = depfile_path.name + depfile_stem = depfile_path.stem + + for fm, prefix in [ + (cpu_fm, ""), + (cpu_vec_fm, "cpu_vec_"), + (core_fm, "core_"), + (ops_fm, "ops_"), + ] + [(device_fm, f"{device}_") for device, device_fm in device_fms.items()]: + varname = prefix + depfile_stem + path = depfile_path.parent / (prefix + depfile_name) + fm.write_outputs(varname, str(path)) + + +if __name__ == "__main__": + main() diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/gen_aoti_c_shim.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/gen_aoti_c_shim.py new file mode 100644 index 0000000000000000000000000000000000000000..dde6a6c8eda987cdc32c3c486ee5ffe59f89c8dc --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/gen_aoti_c_shim.py @@ -0,0 +1,783 @@ +from __future__ import annotations + +import difflib +import os +import textwrap +from dataclasses import dataclass +from typing import TYPE_CHECKING + +from torchgen.aoti.fallback_ops import aten_shimified_ops, inductor_fallback_ops +from torchgen.api.types import DispatcherSignature +from torchgen.api.types.signatures import CppSignature, CppSignatureGroup +from torchgen.context import method_with_native_function +from torchgen.model import ( + Argument, + BackendIndex, + BaseTy, + BaseType, + DispatchKey, + FunctionSchema, + is_cuda_dispatch_key, + ListType, + NativeFunction, + NativeFunctionsGroup, + OperatorName, + OptionalType, + Type, + Variant, +) +from torchgen.utils import FileManager, mapMaybe + + +if TYPE_CHECKING: + from collections.abc import Sequence + + +base_type_to_c_type = { + BaseTy.Tensor: "AtenTensorHandle", + BaseTy.bool: "int32_t", # Use int to pass bool + BaseTy.int: "int64_t", + BaseTy.SymInt: "int64_t", # Inductor-generated code won't see a SymInt + BaseTy.Scalar: "double", # Use double to pass both integer and floating point + BaseTy.float: "double", # TODO: how about other floating point types? + BaseTy.str: "const char*", + BaseTy.DeviceIndex: "int32_t", + BaseTy.Layout: "int32_t", # Represent enum as int + BaseTy.MemoryFormat: "int32_t", # Represent enum as int + BaseTy.ScalarType: "int32_t", # Represent enum as int + BaseTy.Generator: "AtenGeneratorHandle", +} + +base_type_to_aten_type = { + BaseTy.Tensor: "at::Tensor", + BaseTy.bool: "bool", + BaseTy.int: "int64_t", + BaseTy.SymInt: "c10::SymInt", + BaseTy.Scalar: "c10::Scalar", + BaseTy.float: "double", + BaseTy.str: "::std::string_view", + BaseTy.DeviceIndex: "c10::DeviceIndex", + BaseTy.Layout: "c10::Layout", + BaseTy.MemoryFormat: "c10::MemoryFormat", + BaseTy.ScalarType: "c10::ScalarType", + BaseTy.Generator: "at::Generator", +} + +base_type_to_callsite_expr = { + BaseTy.Tensor: "resolve_tensor_dispatch_flags", + BaseTy.bool: "", + BaseTy.int: "", + BaseTy.SymInt: "", + BaseTy.Scalar: "", + BaseTy.float: "", + BaseTy.str: "", + BaseTy.DeviceIndex: "static_cast", + BaseTy.Layout: "static_cast", + BaseTy.MemoryFormat: "static_cast", + BaseTy.ScalarType: "static_cast", + BaseTy.Generator: "*generator_handle_to_generator_pointer", +} + + +# convert args to C types, names in declarations, and expressions in function bodies +def convert_arg_type_and_name( + typ: Type, + name: str, + is_write: bool = False, +) -> tuple[list[str], list[str], list[str], list[str]]: + if isinstance(typ, BaseType): + if typ.name in base_type_to_c_type: + if typ.name == BaseTy.Tensor and is_write: + # For output tensors, our normal call to resolve_tensor_dispatch_flags + # results in an rvalue tensor, which can't be passed to at::Tensor&. + # Override this case specifically. + callsite_expr = [f"*tensor_handle_to_tensor_pointer({name})"] + else: + callsite_expr = [ + f"{base_type_to_callsite_expr[typ.name]}({name})" + if base_type_to_callsite_expr[typ.name] + else name + ] + + return ( + [base_type_to_c_type[typ.name]], + [name], + [base_type_to_aten_type[typ.name]], + callsite_expr, + ) + elif typ.name == BaseTy.Device: + return ( + ["int32_t", "int32_t"], + [name, name + "_index_"], + ["c10::Device"], + [ + f"c10::Device(static_cast({name}), static_cast({name}_index_))" + ], + ) + else: + # TODO: BaseTy.Dimname, etc. + raise NotImplementedError(f"TODO: add support for arg type {repr(typ)}") + elif isinstance(typ, OptionalType): + c_types, names, aten_types, callsite_exprs = convert_arg_type_and_name( + typ.elem, name + ) + j = 0 # index for names + new_aten_types = [] + new_callsite_exprs = [] + for aten_type in aten_types: + # Use pointer to denote optional type + c_types[j] = c_types[j] + "*" + if aten_type.startswith("c10::ArrayRef<"): + # ArrayRef is passed as pointer + size, but no need to add "*" to the size argument + new_aten_types.append(f"::std::optional<{aten_type}>") + base_type = aten_type[len("c10::ArrayRef<") : -1] + new_callsite_exprs.append( + f"pointer_to_optional_list<{base_type}>({names[j]}, {names[j + 1]})" + ) + j += 2 + elif aten_type == "c10::Device": + # Device is passed as device_type + device_index + new_aten_types.append("::std::optional") + new_callsite_exprs.append( + f"pointer_to_optional_device({names[j]}, {names[j + 1]})" + ) + j += 2 + elif aten_type == "at::Tensor": + new_aten_types.append(f"::std::optional<{aten_type}>") + new_callsite_exprs.append(f"resolve_tensor_dispatch_flags({names[j]})") + j += 1 + else: + new_aten_types.append(f"::std::optional<{aten_type}>") + new_callsite_exprs.append( + f"pointer_to_optional<{aten_type}>({names[j]})" + ) + j += 1 + + return ( + c_types, + names, + new_aten_types, + new_callsite_exprs, + ) + elif isinstance(typ, ListType): + # Need to explicitly pass the list as pointer + length + c_types, names, aten_types, _ = convert_arg_type_and_name(typ.elem, name) + if len(c_types) != 1: + raise AssertionError(f"ListType with unsupported element type {repr(typ)}") + + # The list content should never be modified + c_types[0] = f"const {c_types[0]}*" + c_types.append("int64_t") + name = names[0] + names.append(name + "_len_") + + atype = aten_types[0] + callsite_exprs = [] + if atype == "bool": + # no converter from std::vector to c10::ArrayRef + # construct std::array instead + if typ.size is None: + raise AssertionError("bool ListType must have a size") + callsite_exprs.append(f"pointer_to_list<{typ.size}>({name})") + elif atype == "at::Tensor" and not is_write: + callsite_exprs.append( + f"resolve_tensor_list_dispatch_flags({name}, {name}_len_)" + ) + elif atype == "::std::optional": + # convert from std::vector<::std::optional> to c10::List<::std::optional> + callsite_exprs.append( + f"c10::List<{atype}>(c10::ArrayRef<{atype}>(resolve_tensor_list_dispatch_flags({name}, {name}_len_)))" + ) + else: + callsite_exprs.append(f"pointer_to_list<{atype}>({name}, {name}_len_)") + + aten_types = [f"c10::ArrayRef<{t}>" for t in aten_types] + return ( + c_types, + names, + aten_types, + callsite_exprs, + ) + raise NotImplementedError(f"Argument type {repr(typ)} not supported!") + + +def zip_type_and_name(types: list[str], names: list[str]) -> list[str]: + return [typ + " " + name for typ, name in zip(types, names)] + + +# Generate argument declarations and callsite expressions +def gen_arguments( + flat_arguments: Sequence[Argument], skipped_args: set[str] +) -> tuple[list[str], list[str]]: + types: list[str] = [] + new_names: list[str] = [] + callsite_exprs: list[str] = [] + for arg in flat_arguments: + if arg.name in skipped_args: + # Pass the arg's schema default when available (e.g. "false" for + # a bool arg with default=False), so non-optional args with defaults + # can be versioned too. Fall back to std::nullopt for optional args + # with no default (matches historical behavior). + if arg.default is not None: + from torchgen.api.cpp import default_expr + + callsite_exprs.append(default_expr(arg.default, arg.type, symint=False)) + else: + callsite_exprs.append("std::nullopt") + continue + new_types, names, _, new_callsite_exprs = convert_arg_type_and_name( + arg.type, arg.name, arg.is_write + ) + types.extend(new_types) + new_names.extend(names) + callsite_exprs.extend(new_callsite_exprs) + return zip_type_and_name(types, new_names), callsite_exprs + + +# Return values are passed out as pointer arguments because all the C shim functions +# are expected to return AOTITorchError. +# Generate returns as declarations and callsite expressions +def gen_returns(schema: FunctionSchema) -> tuple[list[str], list[str]]: + types = [] + names = [] + for idx, ret in enumerate(schema.returns): + names.append(f"ret{idx}") + if isinstance(ret.type, BaseType) and ret.type.name in base_type_to_c_type: + types.append(base_type_to_c_type[ret.type.name] + "*") + else: + raise NotImplementedError( + f"TODO: add support for return type {repr(ret.type)}" + ) + + def convert_return(typ: BaseType, val: str) -> str: + if typ.name == BaseTy.Tensor: + return f"new_tensor_handle(std::move({val}))" + elif typ.name == BaseTy.SymInt: + return f"{val}.expect_int()" + elif typ.name == BaseTy.Scalar: + return f"{val}.toDouble()" + else: + return val + + ret_pointer_can_be_null = False + unambiguous_name = schema.name.unambiguous_name() + for name in ( + "_functional_sym_constrain_range", + "_scaled_dot_product_cudnn_attention", + "_scaled_dot_product_efficient_attention_backward", + "_scaled_dot_product_efficient_attention", + "_scaled_dot_product_flash_attention", + "_scaled_dot_product_fused_attention_overrideable", + "_thhn_fused_lstm_cell_backward_impl", + "convolution_backward", + "grid_sampler_2d_backward", + "grid_sampler_3d_backward", + "linear_backward", + ): + if name in unambiguous_name: + ret_pointer_can_be_null = True + break + + callsite_exprs: list[str] = [] + for idx, ret in enumerate(schema.returns): + tmp = "tmp_result" if len(names) == 1 else f"std::get<{idx}>(tmp_result)" + if not isinstance(ret.type, BaseType): + raise AssertionError(f"Expected BaseType for return, got {type(ret.type)}") + rval = convert_return(ret.type, tmp) + if ret_pointer_can_be_null: + callsite_exprs.append(f"if ({names[idx]}) {{ *{names[idx]} = {rval}; }}") + else: + callsite_exprs.append(f"*{names[idx]} = {rval};") + + return zip_type_and_name(types, names), callsite_exprs + + +# gen.py generates header first and then src, so caching the result here to avoid duplicate work +declaration_definition_cache: dict[tuple[str, str, str], tuple[str, str]] = {} + + +def gen_declaration_and_definition( + schema: FunctionSchema, + device: str, + backend_call: str, + version_info: dict[str, list[str]], +) -> tuple[str, str]: + base_name = schema.name.unambiguous_name() + + global declaration_definition_cache + if (base_name, device, backend_call) in declaration_definition_cache: + return declaration_definition_cache[(base_name, device, backend_call)] + + # Check the validity of version_info. The format should look like + # {"v2" : ["new_arg1"], "v3": ["new_arg2, new_arg3"]}. + indexed_version_info: dict[int, list[str]] = {1: []} + for ver_str, new_args in sorted(version_info.items()): + if not ver_str.startswith("v"): + raise AssertionError( + f"Version number for {base_name} is {ver_str}, not starting with 'v'" + ) + try: + ver_id = int(ver_str[1:]) + except ValueError as e: + raise AssertionError( + f"Version number for {base_name} is {ver_str}, not a valid integer after 'v'" + ) from e + if ver_id in indexed_version_info: + raise AssertionError(f"{ver_str} for {base_name} has already been defined") + indexed_version_info[ver_id] = new_args + + declarations: list[str] = [] + definitions: list[str] = [] + skipped_args: set[str] = set() + + for ver_id, new_args in sorted(indexed_version_info.items(), reverse=True): + # Iterate in the reverse order, so the latest version of an op will get generated first + # with all the arguments included, while a set of to-be-trimmed args is carried down + # to generate earlier version of the op. + func_name = base_name if ver_id == 1 else f"{base_name}_v{ver_id}" + if schema.is_out_fn(): + # out_variant has out arguments in the front, and it's ok to ignore return values + # because C shim functions only return AOTITorchError + args, callsite_exprs = gen_arguments( + [*schema.arguments.out, *schema.arguments.flat_non_out], skipped_args + ) + ret_assignments: list[str] = [] + else: + args, callsite_exprs = gen_arguments( + schema.arguments.flat_all, skipped_args + ) + # ignore return values for inplace ops + ret_declarations, ret_assignments = ( + ([], []) if schema.name.name.inplace else gen_returns(schema) + ) + args.extend(ret_declarations) + + declaration = textwrap.dedent( + f"AOTITorchError aoti_torch_{device}_{func_name}({', '.join(args)})" + ) + + tmp_result = "auto tmp_result = " if ret_assignments else "" + indent = "\t\t" + ret_assignments_str = ( + "\n".join(indent + r for r in ret_assignments) if ret_assignments else "" + ) + definition = ( + textwrap.dedent(f""" + {declaration} {{ + AOTI_TORCH_CONVERT_EXCEPTION_TO_ERROR_CODE({{ + {tmp_result}{backend_call}( + {", ".join(callsite_exprs)} + ); + """) + + ret_assignments_str + + textwrap.dedent(""" + }); + } + """) + ) + skipped_args.update(new_args) + declarations.append(f"AOTI_TORCH_EXPORT {declaration};") + definitions.append(definition) + + declaration_definition_cache[(base_name, device, backend_call)] = ( + "\n".join(declarations), + "\n".join(definitions), + ) + return declaration_definition_cache[(base_name, device, backend_call)] + + +def gen_static_dispatch_backend_call_signature( + sig: CppSignature | DispatcherSignature, + f: NativeFunction, +) -> CppSignature: + sig = DispatcherSignature.from_schema(f.func) + cpp_sigs = CppSignatureGroup.from_native_function( + f, method=False, fallback_binding=False + ) + if sig.symint and f.func.has_symint(): + cpp_sig = cpp_sigs.symint_signature + else: + cpp_sig = cpp_sigs.signature + if cpp_sig is None: + raise AssertionError(f"No cpp signature found for {f.func.name}") + return cpp_sig + + +def gen_static_dispatch_backend_call( + f: NativeFunction, + backend_index: BackendIndex | None = None, +) -> str: + sig = DispatcherSignature.from_schema(f.func) + cpp_sig = gen_static_dispatch_backend_call_signature(sig, f) + + if backend_index is None: + # Check if this is a symint function and if the function only has method variants + if sig.symint and f.func.has_symint(): + has_function_variant = Variant.function in f.variants + + if not has_function_variant: + # Functions with both function and method variants can use the at::{*}_symint version + # (e.g., narrow -> at::narrow_symint), BUT + # Method-only functions with symint parameters should use at::symint:: namespace + # Remove the _symint suffix since at::symint:: namespace uses the base name + # (e.g., new_empty -> at::symint::new_empty) + base_name = cpp_sig.name() + base_name = base_name.removesuffix("_symint") # Remove "_symint" suffix + return f"at::symint::{base_name}" + + return f"at::{cpp_sig.name()}" + else: + return f"at::{backend_index.dispatch_key.lower()}::{cpp_sig.name()}" + + +def get_backend_index_for_aoti( + func: NativeFunction, + func_group_mapping: dict[OperatorName, NativeFunctionsGroup], + dispatch_key: DispatchKey | None, + backend_indices: dict[DispatchKey, BackendIndex], + extend_aoti_c_shim: bool, +) -> BackendIndex | None: + backend_index = None + + if dispatch_key is None: + return backend_index + + if backend_indices[dispatch_key].has_kernel(func) or ( + func.structured_delegate is not None + and func.structured_delegate in func_group_mapping + and backend_indices[dispatch_key].has_kernel( + func_group_mapping[func.structured_delegate] + ) + ): + backend_index = backend_indices[dispatch_key] + else: + # for the extend out-of-tree kernels, we don't need to + # duplicatly create C shim wrappers for other dispatch keys + if extend_aoti_c_shim: + return backend_index + + elif backend_indices[DispatchKey.CompositeExplicitAutograd].has_kernel(func): + # We need to create C shim wrappers for CompositeExplicitAutograd kernels + backend_index = backend_indices[DispatchKey.CompositeExplicitAutograd] + elif backend_indices[ + DispatchKey.CompositeExplicitAutogradNonFunctional + ].has_kernel(func): + # We need to create C shim wrappers for CompositeExplicitAutogradNonFunctional kernels + backend_index = backend_indices[ + DispatchKey.CompositeExplicitAutogradNonFunctional + ] + elif backend_indices[DispatchKey.CompositeImplicitAutograd].has_kernel(func): + backend_index = backend_indices[DispatchKey.CompositeImplicitAutograd] + + return backend_index + + +def get_header_for_aoti( + func: NativeFunction, + func_group_mapping: dict[OperatorName, NativeFunctionsGroup], + dispatch_key: DispatchKey | None, + backend_indices: dict[DispatchKey, BackendIndex], + extend_aoti_c_shim: bool, +) -> str | None: + backend_index = get_backend_index_for_aoti( + func, func_group_mapping, dispatch_key, backend_indices, extend_aoti_c_shim + ) + if backend_index is None: + if dispatch_key is None: + return f"#include " + return None + + return f"#include " + + +def get_fallback_op_name(func: NativeFunction) -> str: + return ( + f"{func.namespace}.{func.func.name.name}.{func.func.name.overload_name}" + if func.func.name.overload_name + else f"{func.namespace}.{func.func.name.name}.default" + ) + + +def gen_c_shim( + func: NativeFunction, + version_info: dict[str, list[str]], + func_group_mapping: dict[OperatorName, NativeFunctionsGroup], + dispatch_key: DispatchKey | None, + backend_indices: dict[DispatchKey, BackendIndex], + header: bool, + extend_aoti_c_shim: bool, +) -> str | None: + backend_index = get_backend_index_for_aoti( + func, func_group_mapping, dispatch_key, backend_indices, extend_aoti_c_shim + ) + if backend_index is None and dispatch_key is not None: + return None + + schema = func.func + device = "aten" if dispatch_key is None else dispatch_key.lower() + backend_call = gen_static_dispatch_backend_call( + func, + backend_index, + ) + + try: + if header: + declaration, _ = gen_declaration_and_definition( + schema, device, backend_call, version_info + ) + return declaration + else: + _, definition = gen_declaration_and_definition( + schema, device, backend_call, version_info + ) + return definition + + except NotImplementedError: + return None + + +@dataclass(frozen=True) +class ShimGenerator: + inductor_fallback_ops: dict[str, dict[str, list[str]]] + func_group_mapping: dict[OperatorName, NativeFunctionsGroup] + dispatch_key: DispatchKey | None + backend_indices: dict[DispatchKey, BackendIndex] + header: bool # True to generate .h and False to generate .cpp + extend_aoti_c_shim: bool + + @method_with_native_function + def __call__( + self, + func: NativeFunction, + ) -> str | None: + version_info = self.inductor_fallback_ops[get_fallback_op_name(func)] + result = gen_c_shim( + func, + version_info, + self.func_group_mapping, + self.dispatch_key, + self.backend_indices, + self.header, + self.extend_aoti_c_shim, + ) + return result + + +def gen_aoti_c_shim( + native_functions: Sequence[NativeFunction], + inductor_fallback_ops: dict[str, dict[str, list[str]]], + func_group_mapping: dict[OperatorName, NativeFunctionsGroup], + dispatch_key: DispatchKey | None, + backend_indices: dict[DispatchKey, BackendIndex], + header: bool, + extend_aoti_c_shim: bool, + includes: str = "", +) -> str: + body = "\n".join( + list( + mapMaybe( + ShimGenerator( + inductor_fallback_ops, + func_group_mapping, + dispatch_key, + backend_indices, + header, + extend_aoti_c_shim, + ), + native_functions, + ) + ) + ) + device = "aten" if dispatch_key is None else dispatch_key.lower() + include_device_functions = ( + "#include " + if dispatch_key is None + else f"#include " + ) + aten_warning = ( + ( + "\n\n// This file corresponds to the aten_shimified_ops list in torchgen/aoti/fallback_ops.py\n" + ) + if dispatch_key is None + else "" + ) + warning = """ + +// WARNING: THIS FILE IS AUTOGENERATED BY torchgen. DO NOT MODIFY BY HAND. +// See https://github.com/pytorch/pytorch/blob/7e86a7c0155295539996e0cf422883571126073e/torchgen/gen.py#L2424-L2436 for details""" + + if header: + return ( + warning + + aten_warning + + textwrap.dedent(""" + + #pragma once + + #include + + #ifdef __cplusplus + extern "C" { + #endif + + """) + + body + + textwrap.dedent(""" + + #ifdef __cplusplus + } // extern "C" + #endif + """) + ) + else: + return ( + warning + + aten_warning + + textwrap.dedent(f""" + + #include + #include + + #ifndef AT_PER_OPERATOR_HEADERS + {include_device_functions} + #include + #include + #include + #else + """) + + includes + + textwrap.dedent(""" + #endif // AT_PER_OPERATOR_HEADERS + + using namespace torch::aot_inductor; + + """) + + body + ) + + +def gen_aoti_c_shim_files( + aoti_fm: FileManager, + aoti_backends: set[DispatchKey | None], + native_functions: Sequence[NativeFunction], + backend_indices: dict[DispatchKey, BackendIndex], + structured_native_functions: Sequence[NativeFunctionsGroup], + extra_cuda_headers: str, + extend_aoti_c_shim: bool, + update_aoti_c_shim: bool, +) -> None: + structured_func_group_dict = {} + for func_group in structured_native_functions: + for func in func_group.functions(): + if func.structured_delegate is not None: + structured_func_group_dict[func.structured_delegate] = func_group + break + + for dispatch_key in aoti_backends: + # Use aten_shimified_ops for the aten backend, inductor_fallback_ops for others + fallback_ops_dict = ( + aten_shimified_ops if dispatch_key is None else inductor_fallback_ops + ) + fallbacks = {} + for func in native_functions: + op_name = get_fallback_op_name(func) + if op_name in fallback_ops_dict: + fallbacks[op_name] = func + fallback_native_functions = tuple( + value for _, value in sorted(fallbacks.items()) + ) + + # Use "aten" as the device name when dispatch_key is Generic + device_name = "aten" if dispatch_key is None else dispatch_key.lower() + + # header files were checked in for ABI-compatibility checking + header_file_name = f"c_shim_{device_name}.h" + new_header = gen_aoti_c_shim( + fallback_native_functions, + fallback_ops_dict, + structured_func_group_dict, + dispatch_key, + backend_indices, + header=True, + extend_aoti_c_shim=extend_aoti_c_shim, + includes="", + ) + if update_aoti_c_shim: + aoti_fm.write( + header_file_name, + lambda: new_header, + ) + else: + try: + with open( + os.path.join(aoti_fm.install_dir, header_file_name) + ) as old_file: + old_header = old_file.read() + + if old_header != new_header: + diff = "\n".join( + difflib.unified_diff( + old_header.splitlines(), + new_header.splitlines(), + fromfile="expected", + tofile="actual", + lineterm="", + ) + ) + + raise RuntimeError(f""" +The generated AOTInductor C shim header files have unexpectedly changed. This +indicates an AOTInductor fallback operator ABI backward compatibility breakage!!! +Only in a limited number of situations, this is allowed: + +1. You added a fallback op to the inductor_fallback_ops list in torchgen/aoti/fallback_ops.py. +If that's the case, run `python torchgen/gen.py --update-aoti-c-shim` to add a new entry to +existing C shim header files. + +2. You added a new default argument to an existing fallback op. This is clearly a BC breaking +change in the AOTInductor land. You need to annotate the new default argument in +torchgen/aoti/fallback_ops.py, and then run `python torchgen/gen.py --update-aoti-c-shim` to +update the C shim header files by creating different versions of the fallback op. See +https://github.com/pytorch/pytorch/pull/154848 as an example. + +{diff} + """) + except FileNotFoundError: + print( + f"{os.path.join(aoti_fm.install_dir, header_file_name)} not found" + ) + + # cpp files are always generated on-the-fly + def headers_for_aoti() -> str: + headers = [] + for func in fallback_native_functions: + header = get_header_for_aoti( + func, + structured_func_group_dict, + dispatch_key, + backend_indices, + extend_aoti_c_shim=extend_aoti_c_shim, + ) + if header is not None: + headers.append(header) + return "\n".join(sorted(set(headers))) + + extra_headers = ( + extra_cuda_headers + if dispatch_key is not None and is_cuda_dispatch_key(dispatch_key) + else "" + ) + + aoti_fm.write( + f"c_shim_{device_name}.cpp", + lambda: gen_aoti_c_shim( + fallback_native_functions, + fallback_ops_dict, + structured_func_group_dict, + dispatch_key, + backend_indices, + header=False, + extend_aoti_c_shim=extend_aoti_c_shim, + includes=headers_for_aoti() + "\n" + extra_headers, + ), + ) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/gen_backend_stubs.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/gen_backend_stubs.py new file mode 100644 index 0000000000000000000000000000000000000000..efe63a80249eb4226001a686c65e59e47740c1aa --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/gen_backend_stubs.py @@ -0,0 +1,635 @@ +from __future__ import annotations + +import argparse +import os +import re +from collections import Counter, defaultdict, namedtuple +from pathlib import Path +from typing import TYPE_CHECKING + +import yaml + +import torchgen.api.dispatcher as dispatcher +import torchgen.dest as dest +from torchgen.api.types import DispatcherSignature +from torchgen.code_template import CodeTemplate +from torchgen.context import native_function_manager +from torchgen.gen import get_grouped_native_functions, parse_native_yaml +from torchgen.model import ( + BackendIndex, + BackendMetadata, + DispatchKey, + NativeFunction, + NativeFunctionsGroup, + OperatorName, +) +from torchgen.selective_build.selector import SelectiveBuilder +from torchgen.utils import concatMap, context, FileManager, NamespaceHelper, Target +from torchgen.yaml_utils import YamlLoader + + +if TYPE_CHECKING: + from collections.abc import Sequence + + +# Parses the external backend's yaml, and adds a new BackendIndex for the backend's dispatch key. +# Returns a Tuple of (backend_key, autograd_key, cpp_namespace, updated BackendIndex mapping) +ParsedExternalYaml = namedtuple( + "ParsedExternalYaml", + ["backend_key", "autograd_key", "class_name", "cpp_namespace", "backend_indices"], +) + + +def parse_backend_yaml( + backend_yaml_path: str, + grouped_native_functions: Sequence[NativeFunction | NativeFunctionsGroup], + backend_indices: dict[DispatchKey, BackendIndex], +) -> ParsedExternalYaml: + native_functions_map: dict[OperatorName, NativeFunction] = { + f.func.name: f + for f in concatMap( + lambda f: [f] if isinstance(f, NativeFunction) else list(f.functions()), + grouped_native_functions, + ) + } + + with open(backend_yaml_path) as f: + yaml_values = yaml.load(f, Loader=YamlLoader) + if not isinstance(yaml_values, dict): + raise AssertionError( + f"Expected yaml_values to be a dict, got {type(yaml_values)}" + ) + + valid_keys = [ + "backend", + "class_name", + "cpp_namespace", + "extra_headers", + "supported", + "autograd", + "full_codegen", + "non_native", + "ir_gen", + "symint", + ] + + backend = yaml_values.pop("backend", None) + if backend is None: + raise AssertionError('You must provide a value for "backend"') + + class_name = yaml_values.pop("class_name", None) + + cpp_namespace = yaml_values.pop("cpp_namespace", None) + if cpp_namespace is None: + raise AssertionError('You must provide a value for "cpp_namespace"') + + # Mostly just defaulting to false to stick with LazyTensor convention. + use_out_as_primary = yaml_values.pop("use_out_as_primary", False) + if not isinstance(use_out_as_primary, bool): + raise AssertionError( + f"You must provide either True or False for use_out_as_primary. Provided: {use_out_as_primary}" + ) + + use_device_guard = yaml_values.pop("device_guard", False) + if not isinstance(use_device_guard, bool): + raise AssertionError( + f"You must provide either True or False for device_guard. Provided: {use_device_guard}" + ) + + supported = yaml_values.pop("supported", []) + if supported is None: + supported = [] # Allow an empty list of supported ops + if not isinstance(supported, list): + raise AssertionError( + f'expected "supported" to be a list, but got: {supported} (of type {type(supported)})' + ) + + symint = yaml_values.pop("symint", []) + if symint is None: + symint = [] # Allow an empty list of symint ops + if not isinstance(symint, list): + raise AssertionError( + f'expected "symint" to be a list, but got: {symint} (of type {type(symint)})' + ) + symint_set = set(symint) + + supported_autograd = yaml_values.pop("autograd", []) + if not isinstance(supported_autograd, list): + raise AssertionError( + f'expected "autograd" to be a list, but got: {supported_autograd}' + ) + + # full_codegen is ignored by parse_backend_yaml, and re-parsed in gen_lazy_tensor.py + full_codegen = yaml_values.pop("full_codegen", []) + supported.extend(full_codegen) + + # non_native is ignored by parse_backend_yaml, and re-parsed in gen_lazy_tensor.py + yaml_values.pop("non_native", {}) + + # ir_gen is ignored by parse_backend_yaml, and re-parsed in gen_lazy_tensor.py + yaml_values.pop("ir_gen", {}) + + if len(yaml_values.keys()) != 0: + raise AssertionError( + f"{backend_yaml_path} contains unexpected keys: {', '.join(yaml_values.keys())}. " + f"Only the following keys are supported: {', '.join(valid_keys)}" + ) + + def create_backend_index( + backend_ops: list[str], + symint_ops: set[str], + dispatch_key: DispatchKey, + *, + use_out_as_primary: bool, + use_device_guard: bool, + ) -> BackendIndex: + metadata: dict[OperatorName, BackendMetadata] = {} + for op in backend_ops: + op_name = OperatorName.parse(op) + if op_name not in native_functions_map: + raise AssertionError(f"Found an invalid operator name: {op_name}") + # See Note [External Backends Follow Dispatcher API] + kernel_name = dispatcher.name(native_functions_map[op_name].func) + if op in symint_ops: + kernel_name += "_symint" + # TODO: allow structured external backends later. + m = BackendMetadata( + kernel=kernel_name, structured=False, cpp_namespace=cpp_namespace + ) + metadata[op_name] = m + return BackendIndex( + dispatch_key=dispatch_key, + use_out_as_primary=use_out_as_primary, + external=True, + device_guard=use_device_guard, + index=metadata, + ) + + backend_key: DispatchKey | None = None + if len(supported) > 0: + with context( + lambda: f'The provided value for "backend" must be a valid DispatchKey, but got {backend}.' + ): + backend_key = DispatchKey.parse(backend) + + backend_idx = create_backend_index( + supported, + symint_set, + backend_key, + use_out_as_primary=use_out_as_primary, + use_device_guard=use_device_guard, + ) + if backend_key in backend_indices: + raise AssertionError(f"Duplicate backend key: {backend_key}") + backend_indices[backend_key] = backend_idx + + autograd_key: DispatchKey | None = None + if len(supported_autograd) > 0: + with context( + lambda: f'The "autograd" key was specified, which indicates that you would like to override \ +the behavior of autograd for some operators on your backend. However "Autograd{backend}" is not a valid DispatchKey.' + ): + autograd_key = DispatchKey.parse(f"Autograd{backend}") + + autograd_idx = create_backend_index( + supported_autograd, + symint_set, + autograd_key, + use_out_as_primary=use_out_as_primary, + use_device_guard=use_device_guard, + ) + if autograd_key in backend_indices: + raise AssertionError(f"Duplicate autograd key: {autograd_key}") + backend_indices[autograd_key] = autograd_idx + + for g in grouped_native_functions: + if isinstance(g, NativeFunction): + forward_kernels = ( + [] + if backend_key is None + else [ + m + for m in [backend_indices[backend_key].get_kernel(g)] + if m is not None + ] + ) + backward_kernels = ( + [] + if autograd_key is None + else [ + m + for m in [backend_indices[autograd_key].get_kernel(g)] + if m is not None + ] + ) + else: + forward_kernels = ( + [] + if backend_key is None + else [ + m + for m in [ + backend_indices[backend_key].get_kernel(f) + for f in g.functions() + ] + if m is not None + ] + ) + backward_kernels = ( + [] + if autograd_key is None + else [ + m + for m in [ + backend_indices[autograd_key].get_kernel(f) + for f in g.functions() + ] + if m is not None + ] + ) + + forward_kernels = [f for f in forward_kernels if f is not None] + backward_kernels = [f for f in backward_kernels if f is not None] + if not (len(forward_kernels) == 0 or len(backward_kernels) == 0): + raise AssertionError( + f"Currently, all variants of an op must either be registered to a backend key, " + f"or to a backend's autograd key. They cannot be mix and matched. " + f"If this is something you need, feel free to create an issue! " + f'{forward_kernels[0].kernel} is listed under "supported", ' + f'but {backward_kernels[0].kernel} is listed under "autograd".' + ) + + return ParsedExternalYaml( + backend_key, autograd_key, class_name, cpp_namespace, backend_indices + ) + + +def error_on_missing_kernels( + native_functions: Sequence[NativeFunction], + backend_indices: dict[DispatchKey, BackendIndex], + backend_key: DispatchKey, + autograd_key: DispatchKey | None, + class_name: str, + kernel_defn_file_path: str, + full_codegen: list[OperatorName] | None = None, +) -> None: + try: + with open(kernel_defn_file_path) as f: + backend_defns = f.read() + except OSError as e: + raise AssertionError( + f"Unable to read from the specified impl_path file: {kernel_defn_file_path}" + ) from e + + if full_codegen is None: + full_codegen = [] + + indices = [backend_indices[backend_key].index] + ( + [] if autograd_key is None else [backend_indices[autograd_key].index] + ) + # Quick mapping from each OperatorName used by the external backend + # to its backend kernel name + expected_backend_op_names: dict[OperatorName, str] = dict( + list( + concatMap( + lambda index: [ + (op_name, metadata.kernel) for op_name, metadata in index.items() + ], + indices, + ) + ) + ) + expected_backend_native_funcs: list[NativeFunction] = [ + f + for f in native_functions + if f.func.name in expected_backend_op_names and f.func.name not in full_codegen + ] + expected_backend_kernel_name_counts: dict[str, list[NativeFunction]] = defaultdict( + list + ) + for native_f in expected_backend_native_funcs: + expected_backend_kernel_name_counts[ + expected_backend_op_names[native_f.func.name] + ].append(native_f) + + # This just looks for lines containing "foo(", and assumes that the kernel foo has been implemented. + # It might cause false negatives (we won't catch all cases), but that's ok - if we catch a missing kernel + # here, then we get a nicer error message. If we miss it, you get a linker error. + kernel_defn_regex = rf"(.*){class_name}::\s*([\w\d]*)\(" + actual_backend_kernel_name_counts = Counter( + # A bit unwieldy (this could probably be moved into regex), + # but we don't want to include kernel names that come from function calls, + # like "return torch_xla::XLANativeFunctions::empty_strided_symint(...)". + # Easy check is to ignore any lines with colons before the class name. + [ + y + for (x, y) in re.findall(kernel_defn_regex, backend_defns) + if not x.endswith(":") + ] + ) + + missing_kernels_err_msg = "" + for expected_name, funcs in expected_backend_kernel_name_counts.items(): + expected_overload_count = len(funcs) + actual_overload_count = actual_backend_kernel_name_counts[expected_name] + if expected_overload_count != actual_overload_count: + + def create_decl(f: NativeFunction) -> str: + with native_function_manager(f): + return DispatcherSignature.from_schema(f.func).decl() + + expected_schemas_str = "\n".join([create_decl(f) for f in funcs]) + missing_kernels_err_msg += f""" +{class_name} is missing a kernel definition for {expected_name}. We found {actual_overload_count} kernel(s) with that name, +but expected {expected_overload_count} kernel(s). The expected function schemas for the missing operator are: +{expected_schemas_str} + +""" + if missing_kernels_err_msg != "": + raise AssertionError(missing_kernels_err_msg) + + +def main() -> None: + parser = argparse.ArgumentParser(description="Generate backend stub files") + parser.add_argument( + "-s", + "--source-yaml", + "--source_yaml", + help="path to source yaml file containing operator external definitions", + ) + parser.add_argument("-o", "--output-dir", "--output_dir", help="output directory") + parser.add_argument( + "--dry-run", "--dry_run", type=bool, default=False, help="output directory" + ) + parser.add_argument( + "--impl-path", + "--impl_path", + type=str, + default=None, + help="path to the source C++ file containing kernel definitions", + ) + options = parser.parse_args() + + run(options.source_yaml, options.output_dir, options.dry_run, options.impl_path) + + +def gen_dispatchkey_nativefunc_headers( + fm: FileManager, + class_name: str, + cpp_namespace: str, + backend_indices: dict[DispatchKey, BackendIndex], + grouped_native_functions: Sequence[NativeFunction | NativeFunctionsGroup], + backend_dispatch_key: DispatchKey, + autograd_dispatch_key: DispatchKey | None, + backend_name: str = "", +) -> None: + if class_name is None: + raise AssertionError("class_name must not be None") + generated_comment = ( + "Autogenerated file by gen_backend_stubs.py. Do not edit directly!" + ) + + # Convert to a set first to remove duplicate kernel names. + # Backends are allowed to repeat kernel names; only generate the declaration once! + # Sort for deterministic output. + backend_declarations = sorted( + set( + concatMap( + lambda f: dest.compute_native_function_declaration( + f, backend_indices[backend_dispatch_key] + ), + grouped_native_functions, + ) + ) + ) + autograd_declarations = sorted( + set( + concatMap( + lambda f: [] + if autograd_dispatch_key is None + else dest.compute_native_function_declaration( + f, backend_indices[autograd_dispatch_key] + ), + grouped_native_functions, + ) + ) + ) + + ns_helper = NamespaceHelper(cpp_namespace) + fm.write_with_template( + f"{backend_dispatch_key}NativeFunctions.h", + "DispatchKeyNativeFunctions.h", + lambda: { + "generated_comment": generated_comment, + "namespace_prologue": ns_helper.prologue, + "class_name": class_name, + "namespace_epilogue": ns_helper.epilogue, + "dispatch_declarations": backend_declarations + autograd_declarations, + "BackendName": backend_name, + "DispatchKey": backend_dispatch_key, + }, + ) + + +def gen_dispatcher_registrations( + fm: FileManager, + output_dir: str, + class_name: str, + backend_indices: dict[DispatchKey, BackendIndex], + grouped_native_functions: Sequence[NativeFunction | NativeFunctionsGroup], + backend_dispatch_key: DispatchKey, + dispatch_key: DispatchKey, + selector: SelectiveBuilder, + # build_in_tree is true for lazy TS backend and affects include paths, not used for external backends + build_in_tree: bool = False, + per_operator_headers: bool = False, + backend_name: str = "", + eager_registration: bool = True, +) -> None: + headers = [ + f"{output_dir}/{backend_dispatch_key}NativeFunctions.h", + ] + if build_in_tree: + external_backend_headers_str = "\n".join(f"#include <{h}>" for h in headers) + else: + external_backend_headers_str = "\n".join(f'#include "{h}"' for h in headers) + + if class_name is None: + raise AssertionError("class_name must not be None") + backend_index = backend_indices[dispatch_key] + + dispatch_registrations_body = list( + concatMap( + dest.RegisterDispatchKey( + backend_index, + Target.REGISTRATION, + selector, + rocm=False, + symint=True, + class_method_name=f"{class_name}", + skip_dispatcher_op_registration=False, + ), + grouped_native_functions, + ) + ) + newline = "\n" + ns_helper = NamespaceHelper(namespace_str="at") + deferred_dispatch_registrations = "" + static_init_dispatch_registrations = "" + if eager_registration: + static_template = CodeTemplate( + """\ +TORCH_LIBRARY_IMPL(aten, $dispatch_key, m) { + $dispatch_registrations_body +}""" + ) + static_init_dispatch_registrations = static_template.substitute( + dispatch_key=dispatch_key, + dispatch_registrations_body=dispatch_registrations_body, + ) + else: + deferred_template = CodeTemplate( + """\ +TORCH_API void Register${backend_name}${dispatch_key}NativeFunctions(); +TORCH_API void Register${backend_name}${dispatch_key}NativeFunctions() { + static auto m = MAKE_TORCH_LIBRARY_IMPL(aten, $dispatch_key); + $dispatch_registrations_body +}""" + ) + deferred_dispatch_registrations = deferred_template.substitute( + backend_name=backend_name, + dispatch_key=dispatch_key, + dispatch_registrations_body=dispatch_registrations_body, + ) + + fm.write_with_template( + f"Register{dispatch_key}.cpp", + "RegisterDispatchKey.cpp", + lambda: { + "extra_cuda_headers": "", + "external_backend_headers": external_backend_headers_str, + "ops_headers": "#include " + if not per_operator_headers + else "", + "DispatchKey": dispatch_key, + "dispatch_namespace": dispatch_key.lower(), + "dispatch_headers": dest.gen_registration_headers( + backend_index, per_operator_headers=per_operator_headers, rocm=False + ), + "dispatch_helpers": dest.gen_registration_helpers(backend_index), + "dispatch_definitions": fm.substitute_with_template( + "RegisterDispatchDefinitions.ini", + lambda: { + "ns_prologue": ns_helper.prologue, + "ns_epilogue": ns_helper.epilogue, + "static_init_dispatch_registrations": static_init_dispatch_registrations, + "deferred_dispatch_registrations": deferred_dispatch_registrations, + "dispatch_namespace": dispatch_key.lower(), + "dispatch_namespaced_definitions": "", + "dispatch_anonymous_definitions": list( + concatMap( + dest.RegisterDispatchKey( + backend_index, + Target.ANONYMOUS_DEFINITION, + selector, + rocm=False, + symint=True, + class_method_name=f"{class_name}", + skip_dispatcher_op_registration=False, + ), + grouped_native_functions, + ) + ), + }, + ).split(newline), + }, + ) + + +def run( + source_yaml: str, output_dir: str, dry_run: bool, impl_path: str | None = None +) -> None: + # Assumes that this file lives at torchgen/gen_backend_stubs.py + root = Path(__file__).absolute().parent.parent + common_dir = os.path.join(root, "aten/src") # Assumes root is pytorch_root + if not os.path.exists(common_dir): # This file is out-of-tree. + common_dir = os.path.join(root, "torchgen/packaged") + + template_dir = os.path.join(common_dir, "ATen/templates") + + def make_file_manager(install_dir: str) -> FileManager: + return FileManager( + install_dir=install_dir, template_dir=template_dir, dry_run=dry_run + ) + + fm = make_file_manager(output_dir) + + native_yaml_path = os.path.join(common_dir, "ATen/native/native_functions.yaml") + tags_yaml_path = os.path.join(common_dir, "ATen/native/tags.yaml") + parsed_yaml = parse_native_yaml(native_yaml_path, tags_yaml_path) + native_functions, backend_indices = ( + parsed_yaml.native_functions, + parsed_yaml.backend_indices, + ) + grouped_native_functions = get_grouped_native_functions(native_functions) + parsed_backend_yaml = parse_backend_yaml( + source_yaml, grouped_native_functions, backend_indices + ) + backend_key = parsed_backend_yaml.backend_key + autograd_key = parsed_backend_yaml.autograd_key + cpp_namespace = parsed_backend_yaml.cpp_namespace + class_name = parsed_backend_yaml.class_name + backend_indices = parsed_backend_yaml.backend_indices + + selector = SelectiveBuilder.get_nop_selector() + + if backend_key is None: + # This could be useful if a backend wants to quickly set up a noop yaml file but doesn't have any kernels ready yet. + return + + if class_name is None: + # class_name is an optional argument to backend yaml file. + # if specified it allows an external backend to override + # the name of the class that all generated kernel definitions live under. + # if not specified, its value is given as native_function_class_name. + class_name = backend_indices[backend_key].native_function_class_name() + if class_name is None: + raise AssertionError("class_name must not be None") + + if impl_path is not None: + error_on_missing_kernels( + native_functions, + backend_indices, + backend_key, + autograd_key, + class_name, + impl_path, + ) + + gen_dispatchkey_nativefunc_headers( + fm, + class_name, + cpp_namespace, + backend_indices, + grouped_native_functions, + backend_key, + autograd_key, + ) + + for dispatch_key in ( + [backend_key] if autograd_key is None else [backend_key, autograd_key] + ): + gen_dispatcher_registrations( + fm, + output_dir, + class_name, + backend_indices, + grouped_native_functions, + backend_key, + dispatch_key, + selector, + ) + + +if __name__ == "__main__": + main() diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/gen_functionalization_type.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/gen_functionalization_type.py new file mode 100644 index 0000000000000000000000000000000000000000..251ba64248a3c2120a286f8553528518b472aa1b --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/gen_functionalization_type.py @@ -0,0 +1,1227 @@ +from __future__ import annotations + +from dataclasses import dataclass +from typing import TYPE_CHECKING + +from torchgen.api import cpp, dispatcher, functionalization +from torchgen.api.translate import translate +from torchgen.api.types import ( + BaseCType, + Binding, + CType, + DispatcherSignature, + iTensorListRefT, + NativeSignature, + OptionalCType, + optionalSymIntArrayRefT, + symIntArrayRefT, + SymIntT, + tensorListT, + tensorT, + VectorCType, + ViewInverseSignature, +) +from torchgen.context import ( + method_with_native_function, + native_function_manager, + with_native_function, + with_native_function_and, +) +from torchgen.model import ( + Argument, + BackendIndex, + BaseTy, + BaseType, + FunctionSchema, + ListType, + NativeFunction, + NativeFunctionsGroup, + NativeFunctionsViewGroup, + OperatorName, + Return, + SchemaKind, + SelfArgument, + TensorOptionsArguments, +) +from torchgen.native_function_generation import ( + INPLACE_OPS_THAT_DONT_GET_GROUPED_PROPERLY, + MUTABLE_OPS_THAT_CANNOT_GET_AN_OUT_VARIANT, + OUT_OPS_THAT_DONT_GET_GROUPED_PROPERLY, +) +from torchgen.utils import concatMap, dataclass_repr, FileManager + + +if TYPE_CHECKING: + from collections.abc import Callable + + from torchgen.selective_build.selector import SelectiveBuilder + + +# Note: [Mutable Ops Not Using Functionalization] +# Ops in this list currently do not work with functionalization and should be fixed. +MUTABLE_OPS_NOT_USING_FUNCTIONALIZATION = ( + OUT_OPS_THAT_DONT_GET_GROUPED_PROPERLY + + MUTABLE_OPS_THAT_CANNOT_GET_AN_OUT_VARIANT + + INPLACE_OPS_THAT_DONT_GET_GROUPED_PROPERLY + + [ + # It will be BC-breaking, but we should fix their schemas. + # should be inplace? + "record_stream", + # See Note [resize_ in Functionalization] + "resize_", + "resize_as_", + # This function is used as for testing purposes only. + "_fill_mem_eff_dropout_mask_", + # Inference-only op called behind a custom op graph break. + "_flash_attention_forward_no_dropout_inplace", + ] +) + +# Eager cumulative out variants compute in the out dtype when dtype is omitted. +# Functionalization normally lowers mutable ops through their functional variants, +# so these need to thread the out dtype explicitly to preserve eager semantics. +CUMULATIVE_OUT_OPS_PRESERVING_OUT_DTYPE = { + OperatorName.parse("cumsum.out"), + OperatorName.parse("cumprod.out"), + OperatorName.parse("cumsum.dimname_out"), + OperatorName.parse("cumprod.dimname_out"), +} + +# This file contains codegen that relates to the functionalization pass. +# It includes: +# - gen_functionalization_definition +# Generates dispatcher kernel definitions for the functionalization pass. +# - gen_functionalization_registration +# Generates dispatcher kernel registrations for the functionalization pass. +# - gen_functionalization_view_inverse_declaration +# Generates a declaration for an "inverse view", for every view op +# that is needed in functionalization. We manually implement their definitions. +# - gen_composite_view_copy_kernel +# Generates view_copy() composite kernels for all view_copy operators. + + +# Generates the body of the default composite C++ kernel for a {view}_copy NativeFunction +# See Note [view_copy NativeFunctions] +@dataclass(frozen=True) +class GenCompositeViewCopyKernel: + backend_index: BackendIndex + + @method_with_native_function + def __call__(self, g: NativeFunctionsViewGroup) -> str | None: + if g.view_copy is None: + return None + elif g.view_copy.func.name.name.base != f"{g.view.func.name.name}_copy": + # If the view_copy doesn't match the standard naming scheme of _copy, + # assume it already exists and doesn't need to be generated. + # Example: slice_inverse() with the copy variant named slice_scatter() + # instead of slice_inverse_copy() + return None + + metadata = self.backend_index.get_kernel(g.view_copy) + if metadata is None: + raise AssertionError( + f"Expected metadata for view_copy kernel: {g.view_copy}" + ) + + # We can make view_copy work in more cases by using reshape() + # when a normal view call would ordinarily fail. + # This also makes LTC more efficient, because they don't need to include + # clone() calls in their graph (which is normally needed by reshape). + if str(g.view_copy.func.name) == "view_copy": + if metadata.kernel != "view_copy_symint": + raise AssertionError( + f"Expected kernel 'view_copy_symint', got '{metadata.kernel}'" + ) + return """\ +at::Tensor view_copy_symint(const at::Tensor & self, at::SymIntArrayRef size) { + c10::SymDimVector shape = infer_size_dv(size, self.sym_numel()); + if (!at::detail::computeStride(self.sym_sizes(), self.sym_strides(), shape).has_value()) { + return self.reshape_symint(size); + } else { + auto output = at::_ops::view::call(self, size); + return output.clone(/*memory_format=*/at::MemoryFormat::Contiguous); + } +} +""" + # view_copy is a native signature, since we're generating an at::native:: kernel + # Functionalization always operates on symints though + view_copy_sig = NativeSignature( + g.view_copy.func, symint=metadata.supports_symint() + ) + + # view is a dispatcher signature, since we're calling into the at::_ops API + view_sig = DispatcherSignature(g.view.func) + + view_api_name = g.view.func.name.unambiguous_name() + exprs = ", ".join( + [e.expr for e in translate(view_copy_sig.arguments(), view_sig.arguments())] + ) + + # view ops today always return either a Tensor or a list of Tensors + if len(g.view.func.returns) != 1: + raise AssertionError(f"Expected 1 return, got {len(g.view.func.returns)}") + if not ( + g.view.func.returns[0].type == BaseType(BaseTy.Tensor) + or g.view.func.returns[0].type == ListType(BaseType(BaseTy.Tensor), None) + ): + raise AssertionError( + f"Expected Tensor or Tensor[] return type, got {g.view.func.returns[0].type}" + ) + + if g.view.func.returns[0].type == BaseType(BaseTy.Tensor): + return_cloned_output = """\ + return output.clone(/*memory_format=*/at::MemoryFormat::Contiguous);""" + else: + # If the return type is a list, we need to clone each tensor in the list. + return_cloned_output = f"""\ + {view_copy_sig.returns_type().cpp_type()} out_clone; + for (const auto i : c10::irange(output.size())) {{ + out_clone.push_back(output[i].clone(/*memory_format=*/at::MemoryFormat::Contiguous)); + }} + return out_clone;""" + + # The default generated composite kernel for {view}_copy() operators just clones + # the input tensor, and runs the underlying view on the clone. + return f""" +{view_copy_sig.defn(name=metadata.kernel)} {{ + auto output = at::_ops::{view_api_name}::call({exprs}); + {return_cloned_output} +}} +""" + + +def return_str(rets: tuple[Return, ...], names: list[str]) -> str: + if len(rets) != len(names): + raise AssertionError(f"Expected {len(rets)} names, got {len(names)}") + if len(rets) == 0: + return "" + elif len(rets) == 1: + return f"return {names[0]};" + else: + return f"return {dispatcher.returns_type(rets).cpp_type()}({', '.join(names)});" + + +def modifies_arguments(f: NativeFunction) -> bool: + return any( + a.annotation is not None and a.annotation.is_write + for a in f.func.arguments.flat_all + ) + + +def wrapper_name(func: FunctionSchema) -> str: + if func.name.overload_name: + return f"{cpp.name(func)}_{func.name.overload_name}" + else: + return cpp.name(func) + + +def is_tensor_like(a: Argument | TensorOptionsArguments | SelfArgument) -> bool: + return isinstance(a, SelfArgument) or ( + isinstance(a, Argument) and a.type.is_tensor_like() + ) + + +# We need to wrap / unwrap various arguments from the op in the functionalization kernels. +# Some op schemas include non-owning types though (like TensorList), +# and when we unwrap them we expect to get out an owning type!. +# We also return a lambda that tells you how to convert the non-owning type argument into the owning type. +def get_owning_type(t: CType) -> tuple[CType, Callable[[str], str]]: + if t == BaseCType(tensorListT): + return VectorCType(BaseCType(tensorT)), lambda x: f"{x}.vec()" + if t == BaseCType(iTensorListRefT): + return VectorCType(BaseCType(tensorT)), lambda x: f"{{{x}.begin(), {x}.end()}}" + # There are technically other non-owning types out there (like IntArrayRef), + # but functionalization only actually cares about the ones involving tensors. + return t, lambda x: x + + +# unwraps all tensor-like arguments, returning: +# (1) a string containing all of the logic that does the unwrapping +# (2) a context, to be used by translate(), with all of the relevant bindings. +def unwrap_tensor_args( + sig: DispatcherSignature, *, is_view_op: bool +) -> tuple[str, list[Binding]]: + context: list[Binding] = [] + unwrapped_tensor_args: list[str] = [] + for arg in sig.arguments(): + if is_tensor_like(arg.argument): + # for tensor inputs, we want to unwrap them before passing them into the redispatch calls. + unwrapped_name = f"{arg.name}_" + # For most ops, the functionalization needs to sync any pending updates on the input tensors + # before calling the operator, since otherwise the operator will act on stale data. + # For view ops though, we can continue to defer syncing until the tensor is used by + # a non-view operator. + maybe_sync_input = ( + "" if is_view_op else f"at::functionalization::impl::sync({arg.name});" + ) + unwrapped_type, conversion_fn = get_owning_type( + arg.nctype.remove_const_ref().type + ) + unwrapped_tensor_args.append( + f""" + {unwrapped_type.cpp_type()} {unwrapped_name}; + if (at::functionalization::impl::isFunctionalTensor({arg.name})) {{ + {maybe_sync_input} + {unwrapped_name} = at::functionalization::impl::from_functional_tensor({arg.name}); + }} else {{ + {unwrapped_name} = {conversion_fn(arg.name)}; + }}""" + ) + context.append(arg.with_name(unwrapped_name)) + else: + # for non-tensor inputs, we want to pass them directly into the redispatch calls. + context.append(arg) + unwrap_tensor_args_str = "\n ".join(unwrapped_tensor_args) + return unwrap_tensor_args_str, context + + +# converts all tensor-like arguments to meta tensors, which are used to compute stride info. Returns: +# (1) a string containing all of the logic that does the conversions. +# (2) a context, to be used by translate(), with all of the relevant bindings. +def convert_to_meta_tensors(sig: DispatcherSignature) -> tuple[str, list[Binding]]: + context: list[Binding] = [] + unwrapped_tensor_args: list[str] = [] + for arg in sig.arguments(): + if is_tensor_like(arg.argument): + # for tensor inputs, we want to unwrap them before passing them into the redispatch calls. + a_ = arg.name + unwrapped_name = f"{arg.name}_meta" + unwrapped_tensor_args.append(f"auto {unwrapped_name} = to_meta({a_});") + context.append(arg.with_name(unwrapped_name)) + else: + # for non-tensor inputs, we want to pass them directly into the redispatch calls. + context.append(arg) + unwrap_tensor_args_str = "\n ".join(unwrapped_tensor_args) + return unwrap_tensor_args_str, context + + +# The functionalization codegen currently expects view op schemas to have this form: +# foo(Tensor(a), ...) -> Tensor(a) (e.g. transpose) +# foo(Tensor(a!), ...) -> Tensor(a!) (e.g. transpose_) +def assert_view_op_properties(func: FunctionSchema) -> None: + def is_alias(a: Argument) -> bool: + return a.annotation is not None + + args = func.arguments.flat_non_out + # The first argument is a tensor with an alias semantics (annotations) + if not (len(args) > 0 and args[0].type == BaseType(BaseTy.Tensor)): + raise AssertionError( + f"In the functionalization codegen, we expect the first argument of every view operator to be a tensor, " + f"but found an argument of type {str(args[0].type)} for operator: {str(func.name)}." + ) + # No other arguments have aliasing semantics + if not (is_alias(args[0]) and not any(is_alias(a) for a in args[1:])): + raise AssertionError( + "In the functionalization codegen, we expect the first argument of every view " + "operator to alias the output. View operators with multiple aliasing inputs " + "aren't supported yet. Found an operator that doesn't satisfy this constraint" + ) + + +# One-liner expression for checking if an expression expr of type type has any +# symbolic values. +def emit_expr_has_symbolic_values(expr: str, type: CType) -> str: + if type == BaseCType(SymIntT): + return f"{expr}.is_symbolic()" + + if isinstance(type, OptionalCType): + innerexpr = f"(*{expr})" + return f"{expr}.has_value() ? {emit_expr_has_symbolic_values(innerexpr, type.elem)} : false" + + if type == BaseCType(optionalSymIntArrayRefT): + return emit_expr_has_symbolic_values( + expr, OptionalCType(BaseCType(symIntArrayRefT)) + ) + + if type in (BaseCType(symIntArrayRefT), VectorCType(BaseCType(SymIntT))): + argname = "arg" + lambda_check = emit_expr_has_symbolic_values(argname, BaseCType(SymIntT)) + return ( + "std::any_of(" + f"{expr}.begin(), {expr}.end(), " + f"[=](auto& {argname}) {{ return {lambda_check}; }})" + ) + + raise ValueError( + "unsupported type for has_symbolic_values check. " + "It should be a SymInt or a collection of those. " + f"Got: {type.cpp_type()}" + ) + + +# Detects whether any of the SymInt arguments are, in fact, symbolic values. +# This is used in the constructor of ViewMeta. +def emit_has_symbolic_inputs(sig: DispatcherSignature) -> tuple[str, str]: + name = "has_symbolic_inputs" + statements = [ + f"{name} = {name} | ({emit_expr_has_symbolic_values(binding.name, binding.nctype.type)});" + for binding in sig.arguments() + if ( + isinstance(binding.argument, Argument) + and binding.argument.type.is_symint_like() + ) + ] + body = "\n ".join(statements) + return ( + name, + f""" + bool {name} = false; + {body}""", + ) + + +# Generates the Functionalization kernel for: +# - ops that create aliases (e.g. transpose()) +# - ops that are views AND mutations (e.g. transpose_()) +def emit_view_functionalization_body( + g: NativeFunctionsViewGroup, *, view_inplace: bool +) -> str: + if view_inplace: + # This op is both an inplace op AND a view op. + # See Note [Functionalization Pass - Inplace View Ops] for details. + # I currently have the view meta call into the out-of-place variant of the view, to avoid + # having to define an extra ~20 inplace {view}_inverse_ functions. + # Most view ops don't have NativeFunctionGroup's both, because we don't define out= variants for view ops. + # I'm assuming that every inplace-view op has a corresponding out-of-place view op, + # with the same name but the trailing underscore removed. + # This is currently asserted at parse time in gen.py (see error_check_native_functions). + if g.view_inplace is None: + raise AssertionError( + "Expected view_inplace to be non-None for inplace view" + ) + f = g.view_inplace + else: + f = g.view + + if g.view_copy is None: + raise AssertionError("Expected view_copy to be non-None") + with native_function_manager(f): + call_sig = DispatcherSignature.from_schema(g.view_copy.func) + + spec = ViewMetaSpecialization(g, f=f) + + # the "view_copy" op name that the functionalization kernels need to call + api_name = g.view_copy.func.name.unambiguous_name() + # Sometimes the functionalization pass needs to no-op (e.g. if it was passed non-functional tensors) + # "no-op"ing in this context is just redispatching to the original op. + noop_api_name = f.func.name.unambiguous_name() + + dispatcher_sig = DispatcherSignature.from_schema(f.func) + assert_view_op_properties(f.func) + view_tensor_name = dispatcher_sig.arguments()[0].name + + return_type = dispatcher_sig.returns_type().remove_const_ref().cpp_type() + + unwrap_tensor_args_str, unwrapped_args_ctx = unwrap_tensor_args( + dispatcher_sig, is_view_op=True + ) + view_redispatch_args = [ + e.expr + for e in translate(unwrapped_args_ctx, call_sig.arguments(), method=False) + ] + + # The meta API call should use the same arguments, but convert all tensors to meta tensors first. + meta_conversion_str, meta_call_ctx = convert_to_meta_tensors(dispatcher_sig) + meta_call_args = [ + e.expr for e in translate(meta_call_ctx, call_sig.arguments(), method=False) + ] + + ( + symbolic_inputs_varname, + symbolic_inputs_check, + ) = emit_has_symbolic_inputs(call_sig) + + if "inplace_view" in f.tags: + # See Note [Functionalization Pass - Inplace View Ops] for more details + return f""" + {dispatcher_sig.defn(name=wrapper_name(f.func), is_redispatching_fn=True)} {{ + if (!at::functionalization::impl::isFunctionalTensor({view_tensor_name})) {{ + // functionalization is re-entrant, but will no-op if it wasn't passed a FunctionalTensorWrapper. + {unwrap_tensor_args_str} + at::AutoDispatchSkipFunctionalize guard; + return at::_ops::{noop_api_name}::call({", ".join(view_redispatch_args)}); + }} + auto reapply_views = at::functionalization::impl::getFunctionalizationReapplyViewsTLS(); + auto inverse_return_mode = ( + reapply_views ? at::functionalization::InverseReturnMode::ViewOrScatterInverse + : at::functionalization::InverseReturnMode::NeverView + ); + {symbolic_inputs_check} + auto view_meta = {spec.new()}; + auto compute_reference_meta = + {view_tensor_name}.key_set().has_backend(c10::BackendComponent::XLABit) || + {view_tensor_name}.key_set().has_backend(c10::BackendComponent::LazyBit); + {return_type} reference_tensor_output; + if (compute_reference_meta && !disable_meta_reference()) {{ + {meta_conversion_str} + at::AutoDispatchSkipFunctionalize func_guard; + c10::impl::ExcludeDispatchKeyGuard guard(exclude_keys_for_meta_dispatch); + reference_tensor_output = at::_ops::{noop_api_name}::call({", ".join(meta_call_args)}); + }} + // This function adds the above view meta to the current tensor and replays them off the base, + // mutating the size/stride info of the current FunctionalTensorWrapper. + // Because of this, we need to make sure to run the reference shape function above, + // BEFORE doing this (otherwise we'll end up running the reference function using the wrong sizes/strides) + at::functionalization::impl::mutate_view_meta({view_tensor_name}, view_meta); + // See Note [Propagating strides in the functionalization pass] + // XLA/LTC don't implement the logic to propagate strides correctly, so we need to rely + // on a reference implementation here (instead of relying on the output from the forward lambda + // having the correct stride info) + if (compute_reference_meta && !disable_meta_reference()) {{ + at::functionalization::impl::set_sizes_strides_offset({view_tensor_name}, reference_tensor_output); + }} + return {view_tensor_name}; + }} +""" + + else: + return f""" + {dispatcher_sig.defn(name=wrapper_name(f.func), is_redispatching_fn=True)} {{ + {unwrap_tensor_args_str} + if (!at::functionalization::impl::isFunctionalTensor({view_tensor_name})) {{ + // functionalization is re-entrant, but will no-op if it wasn't passed a FunctionalTensorWrapper. + at::AutoDispatchSkipFunctionalize guard; + return at::_ops::{noop_api_name}::call({", ".join(view_redispatch_args)}); + }} + auto reapply_views = at::functionalization::impl::getFunctionalizationReapplyViewsTLS(); + auto inverse_return_mode = ( + reapply_views ? at::functionalization::InverseReturnMode::ViewOrScatterInverse + : at::functionalization::InverseReturnMode::NeverView + ); + auto compute_reference_meta = + {view_tensor_name}.key_set().has_backend(c10::BackendComponent::XLABit) || + {view_tensor_name}.key_set().has_backend(c10::BackendComponent::LazyBit); + {return_type} reference_tensor_output; + if (compute_reference_meta && !disable_meta_reference()) {{ + {meta_conversion_str} + at::AutoDispatchSkipFunctionalize func_guard; + c10::impl::ExcludeDispatchKeyGuard guard(exclude_keys_for_meta_dispatch); + reference_tensor_output = at::_ops::{noop_api_name}::call({", ".join(meta_call_args)}); + }} + {return_type} tmp_output; + {{ + at::AutoDispatchSkipFunctionalize guard; + if (reapply_views) {{ + tmp_output = at::_ops::{noop_api_name}::call({", ".join(view_redispatch_args)}); + }} else {{ + tmp_output = at::_ops::{api_name}::call({", ".join(view_redispatch_args)}); + }} + }} + {symbolic_inputs_check} + auto view_meta = {spec.new()}; + auto out = at::functionalization::impl::create_functional_tensor_with_view_meta(tmp_output, {view_tensor_name}, view_meta); + // See Note [Propagating strides in the functionalization pass] + if (compute_reference_meta && !disable_meta_reference()) {{ + at::functionalization::impl::set_sizes_strides_offset(out, reference_tensor_output); + }} + return out; + }} +""" + + +def maybe_create_output(f: NativeFunction, var_name: str) -> str: + if len(f.func.returns) == 0: + return "" + return_type = dispatcher.returns_type(f.func.returns).remove_const_ref().cpp_type() + return f"{return_type} {var_name} = " + + +# Given a NativeFunction, and a variable name corresponding to the output of redispatching on the function, +# this returns two lists of names, consisting of: +# - the names of returns corresponding to the original (mutable) inputs of the outer function +# - the names of returns corresponding to the (immutable) outputs of the inner redispatched function +def get_mutable_redispatch_return_names( + f: NativeFunction, inner_return_var: str +) -> tuple[list[str], list[str]]: + aliased_returns = [] + non_aliased_returns = [] + for i, name in enumerate(f.func.aliased_return_names()): + if name is not None: + aliased_returns.append(name) + else: + non_aliased_returns.append( + inner_return_var + if len(f.func.returns) == 1 + else f"std::get<{i}>({inner_return_var})" + ) + return aliased_returns, non_aliased_returns + + +# When functionalization "no-op's" and redispatches on a mutable operator, we need to take care so that: +# - For fresh outputs, we return the result of the redispatch (without wrapping outputs) +# - For outputs that were aliased to inputs, we return the inputs directly (since some of them might have been wrapped) +def return_from_mutable_noop_redispatch( + f: NativeFunction, inner_return_var: str +) -> str: + aliased, non_aliased = get_mutable_redispatch_return_names(f, inner_return_var) + # Just get all of the return names, and immediately return them + return return_str(f.func.returns, aliased + non_aliased) + + +def wrap_propagate_mutations_and_return( + f: NativeFunction, functional_op: NativeFunction, inner_return_var: str +) -> str: + mutable_arg_names = f.func.arguments.mutable_arg_names() + ( + aliased_outer_rets, + non_aliased_outer_rets, + ) = get_mutable_redispatch_return_names(f, inner_return_var) + _, non_aliased_inner_rets = get_mutable_redispatch_return_names( + functional_op, inner_return_var + ) + # The outer function may have a mix of aliased and non-aliased outputs, + # But the inner functional op that we're transforming to should only have non-aliased outputs + if len(mutable_arg_names) + len(non_aliased_outer_rets) != len( + non_aliased_inner_rets + ): + raise AssertionError( + f"Expected {len(mutable_arg_names)} + {len(non_aliased_outer_rets)} == {len(non_aliased_inner_rets)}" + ) + + # First, take all of the newly created outputs from the inner call and wrap them into functional tensors + updates = [] + non_aliased_wrapped_ret_names = [] + for i, inner_ret in enumerate( + non_aliased_inner_rets[: len(non_aliased_outer_rets)] + ): + ret_name = f"output_{i}" + updates.append( + f"""\ + auto output_{i} = at::functionalization::impl::to_functional_tensor({inner_ret});""" + ) + non_aliased_wrapped_ret_names.append(ret_name) + + # Next, take all of the mutated outputs from the inner call corresponding to mutated inputs, + # and propagate the mutations + for outer_arg, inner_ret in zip( + mutable_arg_names, non_aliased_inner_rets[len(non_aliased_outer_rets) :] + ): + updates.append( + f"""\ + auto {outer_arg}_inner = at::functionalization::impl::from_functional_tensor({outer_arg}); + at::functionalization::impl::replace_({outer_arg}, {inner_ret}); + at::functionalization::impl::commit_update({outer_arg}); + at::functionalization::impl::sync({outer_arg}); + auto {outer_arg}_inner_updated = at::functionalization::impl::from_functional_tensor({outer_arg}); + at::functionalization::impl::propagate_xla_data_direct({outer_arg}_inner, {outer_arg}_inner_updated);""" + ) + + # Finally, we return: + # - Any mutable arguments that also returns + # - Any immutable returns that were created wrapping the output from the inner call + returns_str = return_str( + f.func.returns, aliased_outer_rets + non_aliased_wrapped_ret_names + ) + updates_str = "\n".join(updates) + return f"""\ +{updates_str} + {returns_str}""" + + +def maybe_replace_cumulative_out_dtype_exprs( + f: NativeFunction, + functional_sig: DispatcherSignature, + functional_exprs: list[str], +) -> list[str]: + if ( + f.func.kind() != SchemaKind.out + or f.func.name not in CUMULATIVE_OUT_OPS_PRESERVING_OUT_DTYPE + ): + return functional_exprs + + if len(f.func.arguments.out) != 1: + raise AssertionError( + f"Expected a single out argument for cumulative out op: {f.func.name}" + ) + + dtype_arg_idx = next( + (i for i, arg in enumerate(functional_sig.arguments()) if arg.name == "dtype"), + None, + ) + if dtype_arg_idx is None: + raise AssertionError( + f"Expected dtype argument for cumulative out op: {f.func.name}" + ) + + adjusted_exprs = functional_exprs.copy() + dtype_expr = adjusted_exprs[dtype_arg_idx] + adjusted_exprs[dtype_arg_idx] = ( + f"{dtype_expr}.has_value() ? {dtype_expr} : " + f"std::optional({f.func.arguments.out[0].name}_.scalar_type())" + ) + return adjusted_exprs + + +# Generates the Functionalization kernel for: +# - mutation ops (inplace and out= ops) +@with_native_function_and +def emit_inplace_functionalization_body( + f: NativeFunction, g: NativeFunctionsGroup +) -> str: + # mutation case + if not modifies_arguments(f): + raise AssertionError(f"Expected function to modify arguments: {f.func}") + + dispatcher_sig = DispatcherSignature.from_schema(f.func) + + unwrap_tensor_args_str, unwrapped_args_ctx = unwrap_tensor_args( + dispatcher_sig, is_view_op=False + ) + + mutated_names = [ + a.name + for a in f.func.arguments.flat_all + if a.type.is_tensor_like() and a.annotation is not None + ] + non_mutated_names = [ + a.name + for a in f.func.arguments.flat_all + if a.type.is_tensor_like() and a.annotation is None + ] + non_mutated_tensor_names = [ + a.name + for a in f.func.arguments.flat_all + if a.type == BaseType(BaseTy.Tensor) and a.annotation is None + ] + # all mutable inputs must be functional tensors in order to participate in functionalization + check_all_mutated_args_are_functional = " && ".join( + ["true"] + + [ + f"at::functionalization::impl::isFunctionalTensor({a})" + for a in mutated_names + ] + ) + check_any_non_mutated_args_are_functional = " || ".join( + ["false"] + + [ + f"at::functionalization::impl::isFunctionalTensor({a})" + for a in non_mutated_names + ] + ) + + check_any_non_mutated_tensors_are_xla = " || ".join( + ["false"] + + [ + f"{a}.device().type() == c10::DeviceType::XLA" + for a in non_mutated_tensor_names + ] + ) + # These are used in the cases where we don't functionalize and redispatch to the inplace op + # case 1: we hit an inplace op that doesn't have an out-of-place equivalent + # case 2: we hit an inplace ops but our inputs are not functional tensors (in which case our kernel just no-ops) + inplace_exprs = [ + e.expr + for e in translate(unwrapped_args_ctx, dispatcher_sig.arguments(), method=False) + ] + + # call the out-of-place variant of the op + return_type = ( + dispatcher.returns_type(g.functional.func.returns).remove_const_ref().cpp_type() + ) + functional_sig = DispatcherSignature.from_schema(g.functional.func) + functional_exprs = [ + e.expr + for e in translate(unwrapped_args_ctx, functional_sig.arguments(), method=False) + ] + functional_exprs = maybe_replace_cumulative_out_dtype_exprs( + f, functional_sig, functional_exprs + ) + + meta_conversion_str, meta_call_ctx = convert_to_meta_tensors(dispatcher_sig) + # We don't want to run the inplace meta func for ops like .set_(), because: + # (1) they're unnecessary: inplace meta checks are only useful for ops like add_(), + # where broadcasting will work for the out-of-place case but should fail on the inplace call + # (2) They'll also fail without adding extra infra: we'd need to convert the input storage argument + # into a meta storage + any_storage_args = any( + a.type == BaseType(BaseTy.Storage) for a in f.func.arguments.flat_all + ) + + return f""" + {dispatcher_sig.defn(name=wrapper_name(f.func), is_redispatching_fn=True)} {{ + if ({str(not any_storage_args and f.func.kind() == SchemaKind.inplace).lower()} && !disable_meta_reference()) {{ + // Before converting the mutable op to its functional variant, run meta tensors through the original op. + // This will help us catch shape errors that apply to inplace ops that wouldn't apply to their functional variants. + // (We can only do this for inplace ops today though, because they technically all support meta tensors). + {meta_conversion_str} + at::AutoDispatchSkipFunctionalize func_guard; + c10::impl::ExcludeDispatchKeyGuard guard(exclude_keys_for_meta_dispatch); + at::_ops::{f.func.name.unambiguous_name()}::call({", ".join(a.name for a in meta_call_ctx)}); + }} + {unwrap_tensor_args_str} + if (!({check_all_mutated_args_are_functional})) {{ + // We want to disable this check if there are any XLA tensors. + // cpu_tensor.copy_(xla_tensor) is valid code. + if (!({check_any_non_mutated_tensors_are_xla}) && ({check_any_non_mutated_args_are_functional})) {{ + // case 1: trying to mutate a non functional tensor with a functional tensor is an error + TORCH_INTERNAL_ASSERT(false, + "mutating a non-functional tensor with a functional tensor is not allowed.", + " Please ensure that all of your inputs are wrapped inside of a functionalize() call."); + }} else {{ + // case 2: arguments are not functional tensors, so we no-op and redispatch. + at::AutoDispatchSkipFunctionalize guard; + {maybe_create_output(f, "tmp_output")}at::_ops::{f.func.name.unambiguous_name()}::call({", ".join(inplace_exprs)}); + {return_from_mutable_noop_redispatch(f, "tmp_output")} + }} + }} else {{ + {return_type} tmp_output; + {{ + at::AutoDispatchSkipFunctionalize guard; + tmp_output = at::_ops::{g.functional.func.name.unambiguous_name()}::call({", ".join(functional_exprs)}); + }} + {wrap_propagate_mutations_and_return(f, g.functional, "tmp_output")} + }} + }}""" + + +# The below functions generate RegisterFunctionalization.cpp +# These files provide the kernels that run the functionalization pass, which can be opted into +# per backend (e.g. XLA or Vulkan), or as a composable transform (functionalize() in functorch). + + +# See Note [Functionalization Pass: View Inverses]. +def gen_functionalization_view_inverse_declaration( + selector: SelectiveBuilder, g: NativeFunctionsViewGroup +) -> str | None: + # For every (non-composite) view op, we need a corresponding "inverse view" function. + # This generates the declarations so we get a good compiler error when someone adds a new view. + @with_native_function + def emit_decl_helper(g: NativeFunctionsViewGroup) -> str | None: + if g.view.has_composite_implicit_autograd_kernel: + return None + view_inverse_sig = ViewInverseSignature(g) + return view_inverse_sig.decl() + + return emit_decl_helper(g) + + +# Helper class for generating `ViewMeta` specializations. +@dataclass +class ViewMetaSpecialization: + g: NativeFunctionsViewGroup + f: NativeFunction + + @property + def is_multi_output(self) -> bool: + return functionalization.is_multi_output(self.f.func) + + @property + def is_as_strided(self) -> bool: + return str(self.f.func.name) == "as_strided" + + @property + def out_index(self) -> str: + if self.is_multi_output: + return functionalization.out_index_binding.name + return "0" + + @property + def classname(self) -> str: + return functionalization.classname(self.f.func) + + def decl(self) -> list[str]: + base_ctor_arguments = functionalization.base_ctor_arguments(self.f.func) + extra_ctor_arguments = functionalization.extra_ctor_arguments(self.f.func) + attributes = functionalization.attributes(self.f.func) + + # List of types for declaring the `SerializableTuple` type. + serializable_tuple_args = ",\n".join( + f" {binding.type} /* {binding.name} */" + for binding in (base_ctor_arguments + attributes) + ) + + # Arguments used for forwarding the tuple elements to the constructor. + destructure_tuple_args = ", ".join( + f"std::get<{i}>(tpl)" + for i in range(len(base_ctor_arguments) + len(extra_ctor_arguments)) + ) + + # List of constructor parameters + ctor_parameters = ", ".join( + binding.decl() for binding in (base_ctor_arguments + extra_ctor_arguments) + ) + + # Call the base class `ViewMeta` constructor. + # + # Both of `is_multi_output` and `is_as_strided` are known values, given the + # operation schema. + is_multi_output_str = str(self.is_multi_output).lower() + is_as_strided_str = str(self.is_as_strided).lower() + + base_ctor_bindings = ", ".join( + [ + # `has_symbolic_inputs` is always taken as parameter. + functionalization.has_symbolic_inputs_binding.name, + f"/*is_multi_output=*/{is_multi_output_str}", + f"/*is_as_strided=*/{is_as_strided_str}", + # `out_index` is know if the operation returns only one value. Otherwise, + # we also take it as parameter. + f"/*out_index=*/{self.out_index}", + ] + ) + + # Assignments of `extra_ctor_arguments` to their corresponding fields. + # These are extra fields to-be-declared in this specialization. + # + # We need to set `allow_expensive_conversions`, since we are storing owned versions + # of the non-owning arguments. + ctor_assignments = ",\n".join( + f" {e.type.name}({e.expr})" + for e in translate( + extra_ctor_arguments, + attributes, + method=False, + allow_expensive_conversions=True, + ) + ) + + # List of arguments for constructing the `SerializableTuple` from an instance. + tuple_arguments = ", ".join( + binding.name for binding in (base_ctor_arguments + attributes) + ) + + # List of field declarations. + attr_declarations = "\n".join(f" {binding.decl()};" for binding in attributes) + + # Override `to_out_index` if this operation returns more than 1 value. + to_out_index_decl = "" + if self.is_multi_output: + to_out_index_decl = ( + " std::shared_ptr to_out_index(int64_t out_idx) override;" + ) + + return [ + f""" +struct TORCH_API {self.classname} : public ViewMeta {{ + FUNCTIONALIZATION_VIEWMETA_NAME({self.classname}) + FUNCTIONALIZATION_VIEWMETA_SERIALIZABLE_TUPLE(\n{serializable_tuple_args}); + + {self.classname}(const SerializableTuple& tpl) + : {self.classname}({destructure_tuple_args}) {{}} + + {self.classname}({ctor_parameters}) + : at::functionalization::ViewMeta({base_ctor_bindings}), +{ctor_assignments} {{}} + + Tensor forward(const Tensor& base) override; + Tensor reverse(const Tensor& base, const Tensor& mutated_view) override; +{to_out_index_decl} + + SerializableTuple to_serializable_tuple() {{ + return std::make_tuple({tuple_arguments}); + }} + +{attr_declarations} +}}; +""" + ] + + # Generate a call to the actual operation. + def opcall(self, is_reverse: bool, reapply_views: bool) -> str: + opname = functionalization.name( + self.g, + is_reverse=is_reverse, + include_namespace=True, + reapply_views=reapply_views, + ) + + # Expected arguments for the operation. + if self.g.view_copy is None: + raise AssertionError("Expected view_copy to be non-None") + op_arguments = functionalization.op_arguments(self.g.view_copy.func, is_reverse) + + # The context is composed by the constructor arguments (which are also + # the field variables stored in the instance), and the `base` tensor. + context = [functionalization.base_binding] + context += functionalization.base_ctor_arguments(self.f.func) + context += functionalization.attributes(self.f.func) + + # If we are generating the call for the reverse function, we also have + # access to `mutated_view` argument. + if is_reverse: + context.append(functionalization.mutated_view_binding) + + arguments = ", ".join( + [e.expr for e in translate(context, op_arguments, method=False)] + ) + + # Index the result if this operation returns multiple values. + maybe_index = "" + if not is_reverse and self.is_multi_output: + maybe_index = f"[{self.out_index}]" + + return f"{opname}({arguments}){maybe_index}" + + def impl(self) -> list[str]: + functions = [ + f""" +at::Tensor {self.classname}::forward(const at::Tensor& base) {{ + if (reapply_views) {{ + return {self.opcall(is_reverse=False, reapply_views=True)}; + }} else {{ + return {self.opcall(is_reverse=False, reapply_views=False)}; + }} +}}""", + f""" +at::Tensor {self.classname}::reverse(const at::Tensor& base, const Tensor& mutated_view) {{ + return {self.opcall(is_reverse=True, reapply_views=True)}; +}}""", + ] + + # If this operation returns multiple values, also generate a `to_out_index` + # implementation. + if self.is_multi_output: + functions.append(f""" +std::shared_ptr {self.classname}::to_out_index(int64_t out_index) {{ + return {self.new("out_index")}; +}} +""") + + return functions + + # Create the Python binding for this specialized class. + def binding(self) -> list[str]: + name = functionalization.classname(self.f.func, with_namespace=True) + return [f" create_binding_with_pickle<{name}>(functionalization);"] + + # Generate an instantiation of this specialized class. + def new(self, out_index: str = "0") -> str: + name = functionalization.classname(self.f.func, with_namespace=True) + ctor_arguments = functionalization.base_ctor_arguments( + self.f.func + ) + functionalization.extra_ctor_arguments(self.f.func) + # Replace the `out_index` parameter with the given `out_index`. + arguments = ", ".join( + binding.name if binding.name != "out_index" else out_index + for binding in ctor_arguments + ) + return f"std::make_shared<{name}>({arguments})" + + # Run the function `run` for both: `view` and `view_inplace` functions. + @staticmethod + def map( + g: NativeFunctionsViewGroup, run: Callable[[ViewMetaSpecialization], list[str]] + ) -> list[str]: + def maybe_run(f: NativeFunction | None) -> list[str]: + if f is None: + return [] + with native_function_manager(f): + return run(ViewMetaSpecialization(g, f)) + + return list(concatMap(maybe_run, (g.view, g.view_inplace))) + + +def gen_functionalization_view_meta_classes_base( + selector: SelectiveBuilder, + g: NativeFunctionsViewGroup, + run: Callable[[ViewMetaSpecialization], list[str]], +) -> list[str]: + if not selector.include_all_operators: + return [] + + if g.composite: + return [] + + return ViewMetaSpecialization.map(g, run) + + +def gen_functionalization_view_meta_classes_decl( + selector: SelectiveBuilder, g: NativeFunctionsViewGroup +) -> list[str]: + return gen_functionalization_view_meta_classes_base( + selector, g, ViewMetaSpecialization.decl + ) + + +def gen_functionalization_view_meta_classes_impl( + selector: SelectiveBuilder, g: NativeFunctionsViewGroup +) -> list[str]: + return gen_functionalization_view_meta_classes_base( + selector, g, ViewMetaSpecialization.impl + ) + + +def gen_functionalization_view_meta_classes_binding( + selector: SelectiveBuilder, g: NativeFunctionsViewGroup +) -> list[str]: + return gen_functionalization_view_meta_classes_base( + selector, g, ViewMetaSpecialization.binding + ) + + +# Generates the Python bindings for the `ViewMeta` specialized classes. +def gen_functionalization_view_meta_classes( + native_functions_path: str, + tags_path: str, + selector: SelectiveBuilder, + install_dir: str, + template_dir: str, +) -> None: + from torchgen.gen import get_grouped_by_view_native_functions, parse_native_yaml + + # Parse the native_functions.yaml. + # Then, group them into `NativeFunctionsViewGroup`. + # + # This is the same steps we do in gen.py (ATen codegen). + native_functions = parse_native_yaml( + native_functions_path, tags_path + ).native_functions + native_functions_with_view_groups = get_grouped_by_view_native_functions( + native_functions + ) + view_groups = [ + g + for g in native_functions_with_view_groups + if isinstance(g, NativeFunctionsViewGroup) + ] + + fm = FileManager(install_dir=install_dir, template_dir=template_dir, dry_run=False) + fm.write( + "ViewMetaClassesPythonBinding.cpp", + lambda: { + "view_meta_bindings": list( + concatMap( + lambda g: gen_functionalization_view_meta_classes_binding( + selector, g + ), + view_groups, + ) + ), + }, + ) + + +def gen_functionalization_registration( + selector: SelectiveBuilder, + g: NativeFunction | NativeFunctionsGroup | NativeFunctionsViewGroup, + composite_implicit_autograd_index: BackendIndex, +) -> list[str]: + @with_native_function + def emit_registration_helper(f: NativeFunction) -> str: + if f.has_composite_implicit_autograd_kernel: + metadata = composite_implicit_autograd_index.get_kernel(f) + if metadata is None: + raise AssertionError( + f"Expected metadata for composite implicit autograd kernel: {f.func}" + ) + native_api_name = metadata.kernel + sig = NativeSignature(f.func, symint=metadata.supports_symint()) + # Note [Composite view ops in the functionalization pass] + # We don't need to worry about implemententing functionalization kernels for views with + # CompositeImplicitAutograd kernels, because we can just decompose them into their base operators. + # We can't just opt the entire Functionalization dispatch key into the composite keyset though, + # because we don't want to decompose non-view ops that are composite, like `at::ones`. + registration_str = ( + f"static_cast<{sig.ptr_type()}>(at::native::{native_api_name})" + ) + else: + # non-composite view ops (and inplace ops) get a normal registration. + registration_str = f"TORCH_FN(functionalization::{wrapper_name(f.func)})" + return f'm.impl("{f.func.name}", {registration_str});' + + # Don't generate kernels in mobile build + if not selector.include_all_operators: + return [] + + if isinstance(g, NativeFunctionsViewGroup): + # functionalization needs to register kernels for view + view_inplace ops + # See Note [Functionalization <> torch.Tensor constructor] + if str(g.view.func.name) == "lift_fresh": + return [] + view_str = [] + view_str.append(emit_registration_helper(g.view)) + if g.view_inplace is not None: + if not g.view_inplace.is_view_op: + raise AssertionError( + f"Expected view_inplace to be a view op: {g.view_inplace.func}" + ) + view_str.append(emit_registration_helper(g.view_inplace)) + return view_str + + elif isinstance(g, NativeFunctionsGroup): + # Gets a hand-written functionalization kernel + if g.inplace is not None and str(g.inplace.func.name) == "set_.source_Tensor": + fns = [] + else: + fns = list(g.functions()) + else: + if str(g.func.name) in MUTABLE_OPS_NOT_USING_FUNCTIONALIZATION: + return [] + fns = [g] + + registrations = [] + for f in fns: + if f.has_composite_implicit_autograd_kernel: + continue + if str(f.func.name) == "lift": + # See Note [Functionalization <> torch.Tensor constructor] + return [] + if str(f.func.name) == "resize_": + # See Note [resize_ in Functionalization] + return [] + if str(f.func.name.name) != "set_": + if f.is_view_op: + raise AssertionError(f"Unexpected view op: {f.func}") + # functionalization needs to generate and register kernels for inplace ops. + # We *also* need to directly register CompositeImplicitAUtograd kernels + # so that they decompose properly before functioanlization. + if modifies_arguments(f): + registrations.append(emit_registration_helper(f)) + return registrations + + +def gen_functionalization_definition( + selector: SelectiveBuilder, + # Note: Ideally this code should never have to look at NativeFunction + # (and instead only need to operate on grouped NativeFunctions). + # The only reason currently is because we need to emit direct dispatch registrations + # For CompositeImplicitAutograd operators, which are potentially ungrouped. + g: NativeFunction | NativeFunctionsGroup | NativeFunctionsViewGroup, +) -> list[str]: + # Don't generate kernels in mobile build + if not selector.include_all_operators: + return [] + + if isinstance(g, NativeFunctionsViewGroup): + # Case 1: emit view -> view_copy kernels for the functionalization pass + view_defs = [] + if not g.composite: + # invariant: NativeFunctionsViewGroup's always have a view_copy operator + # if the view is not composite (implicit autograd) + if g.view_copy is None: + raise AssertionError( + f"Expected view_copy to be non-None: {dataclass_repr(g, indent=1)}" + ) + view_defs.append(emit_view_functionalization_body(g, view_inplace=False)) + if g.view_inplace is not None: + view_defs.append(emit_view_functionalization_body(g, view_inplace=True)) + return view_defs + elif isinstance(g, NativeFunction): + # Invariant: all mutable operators that we need to handle in functionalization + # should have been properly grouped up. + # TODO: The below ops all have "problematic" schemas that prevent them from + # getting functionalized. Instead of bending over backwards to get things to work, + # I think we should either: + # (1) fix their schemas (BC-breaking) + # (2) hand-write their functionalization kernels + if ( + str(g.func.name) not in MUTABLE_OPS_NOT_USING_FUNCTIONALIZATION + and str(g.func.name.name) not in MUTABLE_OPS_NOT_USING_FUNCTIONALIZATION + ): + if not ( + g.has_composite_implicit_autograd_kernel or not modifies_arguments(g) + ): + raise AssertionError( + f"Expected composite implicit autograd kernel or non-modifying function: {g.func}" + ) + return [] + else: + # Case 2: emit inplace -> out-of-place kernels for the functionalization pass + mutation_defs = [] + mutation_defs.append(emit_inplace_functionalization_body(g.out, g)) + if g.inplace is not None: + mutation_defs.append(emit_inplace_functionalization_body(g.inplace, g)) + if g.mutable is not None: + mutation_defs.append(emit_inplace_functionalization_body(g.mutable, g)) + return mutation_defs + return [] diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/gen_lazy_tensor.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/gen_lazy_tensor.py new file mode 100644 index 0000000000000000000000000000000000000000..5cacf4002dba9036023795ebe88c417fdb60e4fd --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/gen_lazy_tensor.py @@ -0,0 +1,593 @@ +from __future__ import annotations + +import argparse +import os +from collections import namedtuple +from pathlib import Path +from typing import Any, TYPE_CHECKING + +import yaml + +import torchgen.dest as dest +from torchgen.api.lazy import setValueT +from torchgen.api.types import BaseCppType +from torchgen.dest.lazy_ir import GenLazyIR, GenLazyNativeFuncDefinition, GenTSLazyIR +from torchgen.gen import get_grouped_native_functions, parse_native_yaml +from torchgen.gen_backend_stubs import ( + error_on_missing_kernels, + gen_dispatcher_registrations, + gen_dispatchkey_nativefunc_headers, + parse_backend_yaml, +) +from torchgen.model import NativeFunction, NativeFunctionsGroup, OperatorName +from torchgen.selective_build.selector import SelectiveBuilder +from torchgen.utils import FileManager, NamespaceHelper +from torchgen.yaml_utils import YamlLoader + + +if TYPE_CHECKING: + from collections.abc import Callable, Iterable, Iterator, Sequence + + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # +# +# Lazy Tensor Codegen +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # +# Overview +# ~~~~~~~~ +# +# This codegen script builds on existing data models and helpers used +# by all ATen backends, and adds new functionality specific to lazy +# tensor backends. +# +# Inputs: +# - _native_functions.yaml: controls which operators are +# supported by the backend. +# +# Outputs: +# (for all backends) +# Ir.h defines Lazy IR classes to be constructed during tracing +# - opt-in: also generate 'lowering' methods for the TorchScript backend only +# NativeFunctions.cpp defines implementations of native functions which perform lazy tracing +# - opt-in: 'full_codegen' section of backend yaml; 'supported' section omits these implementations +# NativeFunctions.h declares implementations of native functions for both 'supported' and 'full_codegen' +# ops +# +# Register.cpp registers all op implementations with the dispatcher +# RegisterAutograd.cpp registers all autograd implementations with the dispatcher +# +# Validation Helpers: +# - Shape Inference: errs if any ops in backend yaml require shape inference not provided by meta kernels or +# implementations in torch/csrc/lazy/core/shape_inference.* +# - native function impls: errs if any 'supported' ops do not have an implementation defined in the backend +# (non-codegen) implementation file +# +# +# About the Data Model +# ~~~~~~~~~~~~~~~~~~~~ +# +# Modeled after ATen codegen, the first step is to parse yaml and build a data model for the operators +# we care about. In this case, the _native_functions yaml defines a subset of the core operators +# (defined in more detail in the main native_functions.yaml), which will be supported by your backend. +# Backends can list ops in two categories: +# - `supported` ops require hand-implementations but still get codegenned declarations and registrations +# - `full_codegen` ops get implementations (and IR classes) generated too +# +# Each native function is modeled as an object with a schema, and each schema has objects representing their +# arguments. Much of the codegen is manipulation of the arguments and their types. For example, lazy tensor +# backends need to transform 'at::Tensor' arguments into 'lazy::Value' objects, as well as replacing reference +# types (stringref) with actual string objects, and this is done by manipulating the data model objects. +# - see api/lazy.py for the lazy data model +# +# Once the data model is set up, the rest of this script processes a number of templates for output CPP file +# and fills in the template values using helpers in `dest/lazy_ir.py` and `dest/lazy_ts_lowering.py`. These +# helpers mostly iterate over functions and their arguments, outputting different c++ snippets. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # + + +# Parses the external backend's yaml, and adds a new BackendIndex for the backend's dispatch key. +# Returns a Tuple of (backend_key, autograd_key, cpp_namespace, updated BackendIndex mapping, full_codegen) +ParsedExternalYaml = namedtuple( + "ParsedExternalYaml", + ["backend_key", "autograd_key", "cpp_namespace", "backend_indices", "full_codegen"], +) + + +def parse_native_functions_keys( + backend_yaml_path: str, + grouped_native_functions: Sequence[NativeFunction | NativeFunctionsGroup], +) -> tuple[list[OperatorName], list[Any], list[OperatorName]]: + with open(backend_yaml_path) as f: + yaml_values = yaml.load(f, Loader=YamlLoader) + if not isinstance(yaml_values, dict): + raise AssertionError(f"Expected dict from YAML, got {type(yaml_values)}") + + full_codegen = yaml_values.pop("full_codegen", []) + non_native = yaml_values.pop("non_native", []) + ir_gen = yaml_values.pop("ir_gen", []) + if not isinstance(full_codegen, list): + raise AssertionError( + f"Expected full_codegen to be list, got {type(full_codegen)}" + ) + if not isinstance(non_native, list): + raise AssertionError(f"Expected non_native to be list, got {type(non_native)}") + if not isinstance(ir_gen, list): + raise AssertionError(f"Expected ir_gen to be list, got {type(ir_gen)}") + full_codegen_opnames = [OperatorName.parse(name) for name in full_codegen] + ir_gen_opnames = [OperatorName.parse(name) for name in ir_gen] + return full_codegen_opnames, non_native, ir_gen_opnames + + +def validate_shape_inference_header( + shape_inference_hdr: str, expected_shape_infr_decls: list[str] +) -> None: + try: + with open(shape_inference_hdr) as f: + shape_infr_decls = f.read() + shape_infr_decl_lines = set(shape_infr_decls.split("\n")) + except OSError as e: + raise AssertionError( + f"Unable to read from the specified shape_inference_hdr file: {shape_inference_hdr}" + ) from e + + # TODO(whc) add a check for shape inference functions that have meta kernels implement and should be retired. + + missing_decls = [ + decl for decl in expected_shape_infr_decls if decl not in shape_infr_decl_lines + ] + if missing_decls: + raise Exception( # noqa: TRY002 + f"""Missing shape inference function.\n +Please add declare this function in {shape_inference_hdr}:\n +and implement it in the corresponding shape_inference.cpp file.\n +{os.linesep.join(missing_decls)}""" + ) + + +# Some helper functions for the codegen. +def get_ltc_helper_fns() -> str: + return """\ +at::Tensor to_meta(const at::Tensor& tensor) { + // undefined tensors can't be converted to the meta device, since they don't have sizes/strides + if (!tensor.defined()) return tensor; + auto out = at::native::empty_strided_meta_symint(tensor.sym_sizes(), tensor.sym_strides(), \ +/*dtype=*/tensor.scalar_type(), /*layout=*/tensor.layout(), \ +/*device=*/c10::Device(c10::kMeta), /*pin_memory=*/std::nullopt); + // needs to handle wrapped numbers, so dtype promotion works properly. + if (tensor.unsafeGetTensorImpl()->is_wrapped_number()) { + out.unsafeGetTensorImpl()->set_wrapped_number(true); + } + return out; +} +std::optional to_meta(const std::optional& tensor) { + if (tensor.has_value()) { + return to_meta(*tensor); + } + return std::nullopt; +} + +std::vector to_meta(at::ITensorListRef t_list) { + std::vector outs; + outs.reserve(t_list.size()); + for (const auto& tensor : t_list) { + outs.push_back(to_meta(tensor)); + } + return outs; +} +""" + + +class default_args: + node_base: str = "Node" + node_base_hdr: str | None = None + shape_inference_hdr: str = "torch/csrc/lazy/core/shape_inference.h" + tensor_class: str = "torch::lazy::LazyTensor" + tensor_class_hdr: str = "torch/csrc/lazy/core/tensor.h" + lazy_ir_generator: type[GenLazyIR] = GenLazyIR + native_func_definition_generator: type[GenLazyNativeFuncDefinition] = ( + GenLazyNativeFuncDefinition + ) + backend_name: str = "TorchScript" + + +def main() -> None: + parser = argparse.ArgumentParser(description="Generate Lazy Tensor backend files") + parser.add_argument( + "-s", + "--source-yaml", + "--source_yaml", + help="path to source yaml file containing operator external definitions", + ) + parser.add_argument("-o", "--output-dir", "--output_dir", help="output directory") + parser.add_argument( + "--dry-run", "--dry_run", type=bool, default=False, help="output directory" + ) + parser.add_argument( + "--impl-path", + "--impl_path", + type=str, + default=None, + help="path to the source C++ file containing kernel definitions", + ) + parser.add_argument( + "--gen-ts-lowerings", + "--gen_ts_lowerings", + action="store_true", + help="Generate TorchScript lowerings in addition to Lazy IR and NativeFunctions", + ) + parser.add_argument( + "--node-base", + "--node_base", + type=str, + default=default_args.node_base, + help="Name of backend specific custom Lazy IR Node base class", + ) + parser.add_argument( + "--node-base-hdr", + "--node_base_hdr", + type=str, + default=default_args.node_base_hdr, + help="Path to header file defining custom Lazy IR Node base class", + ) + parser.add_argument( + "--shape-inference-hdr", + "--shape_inference_hdr", + type=str, + default=default_args.shape_inference_hdr, + help="Path to header file defining custom Lazy shape inference functions", + ) + parser.add_argument( + "--tensor-class", + "--tensor_class", + type=str, + default=default_args.tensor_class, + help="Name of backend specific custom Lazy Tensor class", + ) + parser.add_argument( + "--tensor-class-hdr", + "--tensor_class_hdr", + type=str, + default=default_args.tensor_class_hdr, + help="Path to header file defining custom Lazy Tensor class", + ) + parser.add_argument( + "--backend-name", + "--backend_name", + type=str, + default=default_args.backend_name, + help="Name of the backend to generate", + ) + options = parser.parse_args() + + # Assumes that this file lives at PYTORCH_ROOT/torchgen/gen_backend_stubs.py + torch_root = Path(__file__).absolute().parents[2] + aten_path = str(torch_root / "aten" / "src" / "ATen") + lazy_ir_generator: type[GenLazyIR] = default_args.lazy_ir_generator + if options.gen_ts_lowerings: + lazy_ir_generator = GenTSLazyIR + native_func_definition_generator: type[GenLazyNativeFuncDefinition] = ( + default_args.native_func_definition_generator + ) + + run_gen_lazy_tensor( + aten_path, + options.source_yaml, + options.output_dir, + options.dry_run, + options.impl_path, + options.node_base, + options.node_base_hdr, + options.tensor_class, + options.tensor_class_hdr, + options.shape_inference_hdr, + lazy_ir_generator, + native_func_definition_generator, + options.backend_name, + ) + + +def run_gen_lazy_tensor( + aten_path: str, + source_yaml: str, + output_dir: str, + dry_run: bool, + impl_path: str | None, + node_base: str = default_args.node_base, + node_base_hdr: str | None = default_args.node_base_hdr, + tensor_class: str = default_args.tensor_class, + tensor_class_hdr: str = default_args.tensor_class_hdr, + shape_inference_hdr: str = default_args.shape_inference_hdr, + lazy_ir_generator: type[GenLazyIR] = default_args.lazy_ir_generator, + native_func_definition_generator: type[ + GenLazyNativeFuncDefinition + ] = default_args.native_func_definition_generator, + # build_in_tree is true for TS backend and affects include paths + build_in_tree: bool = False, + # per_operator_headers changes whether ATen/Functions.h or individual operator headers are used + # it must match how ATen was built + per_operator_headers: bool = False, + backend_name: str = default_args.backend_name, + gen_forced_fallback_code: bool = False, + use_lazy_shape: bool = True, + # the following arguments are temporary customization points for xla backend migration. + # do not rely on them otherwise, they should be removed once migration is complete + backend_namespace: str = "torch::lazy", + get_tensorlist: str = "GetTensorList", + get_tensor_or_wrap_number: str = "GetLtcTensorOrCreateForWrappedNumber", + try_get_tensor: str = "TryGetLtcTensor", + metrics_counter: str = 'TORCH_LAZY_FN_COUNTER("lazy::")', + create_tensor: str = "LazyTensor::Create", + create_from_first_tensor: bool = False, + create_aten_from_ltc_tensor: str = "torch::lazy::CreateAtenFromLtcTensor", + tuple_aten_from_ltc_tensors: str = "torch::lazy::TupleAtenFromLtcTensors", + lazy_value_class: str = "torch::lazy::Value", + lazy_tensor_ptr: str = "LazyTensorPtr", + get_device_fn: str = "torch::lazy::GetBackendDevice", +) -> None: + lv_tokens = lazy_value_class.split("::") + lv_class = lv_tokens[-1] + lv_ns = "::".join(lv_tokens[:-1]) + setValueT(BaseCppType(lv_ns, lv_class)) + template_dir = os.path.join(aten_path, "templates") + + def make_file_manager(install_dir: str) -> FileManager: + return FileManager( + install_dir=install_dir, template_dir=template_dir, dry_run=dry_run + ) + + fm = make_file_manager(output_dir) + + native_yaml_path = os.path.join(aten_path, "native/native_functions.yaml") + tags_yaml_path = os.path.join(aten_path, "native/tags.yaml") + parsed_yaml = parse_native_yaml(native_yaml_path, tags_yaml_path) + native_functions, backend_indices = ( + parsed_yaml.native_functions, + parsed_yaml.backend_indices, + ) + grouped_native_functions = get_grouped_native_functions(native_functions) + + def sort_native_function(f: NativeFunctionsGroup | NativeFunction) -> str: + """ + We sort the native function because of the note in concat_map_codegen. + TODO(alanwaketan): Remove this sorting hack once all ops are grouped properly. + """ + func = f.functional.func if isinstance(f, NativeFunctionsGroup) else f.func + return str(func.name.name) + + grouped_native_functions = sorted( + grouped_native_functions, key=sort_native_function + ) + + parsed_backend_yaml = parse_backend_yaml( + source_yaml, grouped_native_functions, backend_indices + ) + backend_key = parsed_backend_yaml.backend_key + autograd_key = parsed_backend_yaml.autograd_key + cpp_namespace = parsed_backend_yaml.cpp_namespace + backend_indices = parsed_backend_yaml.backend_indices + # the following 3 keys are all processed differently + # for full_codegen, we generate IR, kernels, etc + # for ir_gen, we generate only IR + # non_native is used to register kernels not declared in + # native_functions.yaml + full_codegen, non_native, ir_gen = parse_native_functions_keys( + source_yaml, grouped_native_functions + ) + + def concat_map_codegen( + func: Callable[[NativeFunction], Sequence[str]], + xs: Iterable[NativeFunctionsGroup | NativeFunction], + ops_list: list[OperatorName] = full_codegen, + ) -> Iterator[str]: + """ + We code-gen for the functional variant, which is all we need for IR classes/lowerings/shape inferences, but we + only code-gen additional entries for the inplace variant for the native functions. + """ + + for x in xs: + fs = list(x.functions()) if isinstance(x, NativeFunctionsGroup) else [x] + for f in fs: + if f.func.name in ops_list: + yield from func(f) + + selector = SelectiveBuilder.get_nop_selector() + + if backend_key is None: + raise AssertionError("backend_key must be non-None") + class_name = backend_indices[backend_key].native_function_class_name() + + if impl_path is not None: + error_on_missing_kernels( + native_functions, + backend_indices, + backend_key, + autograd_key, + class_name, + impl_path, + full_codegen, + ) + + """ Validate Shape Inference Definitions + + Generated lazy native functions all perform shape inference, by first using a meta:: kernel + if available for that op, and otherwise using a 'compute_shape_{op}' function instead. The generator + knows the call signature for compute_shape_{op} because it matches the nativefunction (and meta::) signature, + so it just has to check whether the op is structured and generate a call for one or the other. It's up to the dev + to supply the missing compute_shape_{op} function, but the codegen at least warns you about this and provides + the expected signature which can be copy-pasted into shape_inference.h. + + compute_shape_{op} functions are handwritten and should be replaced over time as ops get ported + to structured kernels. + + See torch/csrc/lazy/core/shape_inference.cpp #READ THIS! for more information. + """ + if shape_inference_hdr is not None: + expected_shape_infr_decls = list( + concat_map_codegen( + dest.GenLazyShapeInferenceDefinition( + backend_indices[backend_key], tensor_class + ), + grouped_native_functions, + ) + ) + + validate_shape_inference_header(shape_inference_hdr, expected_shape_infr_decls) + if class_name is None: + raise AssertionError("class_name must be non-None") + + # Generate nativefunction declarations + # Note, eager registrations is set to False for the lazy TS backend as another LTC backend + # may want to register their own lazy kernels instead of registering the TS ones. + # The registration will lazily happen when init_ts_backend is called. + gen_dispatchkey_nativefunc_headers( + fm, + class_name, + cpp_namespace, + backend_indices, + grouped_native_functions, + backend_key, + autograd_key, + backend_name, + ) + + # Generate Dispatcher registrations which hook up the nativefunctions + for dispatch_key in ( + [backend_key] if autograd_key is None else [backend_key, autograd_key] + ): + gen_dispatcher_registrations( + fm, + output_dir, + class_name, + backend_indices, + grouped_native_functions, + backend_key, + dispatch_key, + selector, + build_in_tree=build_in_tree, + per_operator_headers=per_operator_headers, + backend_name=backend_name, + eager_registration=False, + ) + + # Generate native function impls that build IR nodes + ns_helper = NamespaceHelper(cpp_namespace) + fm.write_with_template( + f"{backend_key}NativeFunctions.cpp", + "DispatchKeyNativeFunctions.cpp", + lambda: { + "includes": [ + f"#include <{path}>" + for path in [ + tensor_class_hdr, + shape_inference_hdr, + "ATen/Functions.h", + "ATen/native/TensorConversions.h", + "ATen/NativeFunctions.h", + "ATen/CompositeExplicitAutogradNonFunctionalFunctions.h", + "ATen/MetaFunctions.h", + "ATen/Operators.h", + "ATen/native/CPUFallback.h", + "torch/csrc/lazy/core/ir_builder.h", + "torch/csrc/lazy/core/lazy_graph_executor.h", + "torch/csrc/lazy/core/metrics.h", + "torch/csrc/lazy/core/shape.h", + f"{output_dir}/{backend_key}NativeFunctions.h", + f"{output_dir}/LazyIr.h", + ] + + ( + ["torch/csrc/lazy/ts_backend/ts_eager_fallback.h"] + if gen_forced_fallback_code + else [] + ) + ], + "helper_fns": get_ltc_helper_fns(), + "native_functions_include": "", + "namespace_prologue": ns_helper.prologue, + "namespace_epilogue": ns_helper.epilogue, + "native_function_definitions": list( + concat_map_codegen( + native_func_definition_generator( + f"{backend_key}NativeFunctions", + backend_indices[backend_key], + tensor_class, + gen_forced_fallback_code, + backend_namespace, + get_tensorlist, + get_tensor_or_wrap_number, + try_get_tensor, + metrics_counter, + create_tensor, + create_from_first_tensor, + create_aten_from_ltc_tensor, + tuple_aten_from_ltc_tensors, + lazy_tensor_ptr, + get_device_fn, + ), + grouped_native_functions, + ) + ), + }, + ) + # Generate IR node classes + lazy_ir_obj = lazy_ir_generator( + backend_indices[backend_key], backend_name, node_base, use_lazy_shape + ) + + fm.write_with_template( + "LazyIr.h", + "LazyIr.h", + lambda: { + "lazy_ir_sysinc": [ + f"#include <{path}>" + for path in [ + "ATen/core/Formatting.h", + "c10/core/ScalarType.h", + "torch/csrc/lazy/core/hash.h", + "torch/csrc/lazy/core/ir.h", + "torch/csrc/lazy/core/shape.h", + "optional", + "vector", + ] + ], + "lazy_ir_inc": [f'#include "{node_base_hdr}"'] + if node_base_hdr is not None + else [], + "ir_declarations": list( + concat_map_codegen( + lazy_ir_obj, grouped_native_functions, full_codegen + ir_gen + ) + ), + "namespace_prologue": ns_helper.prologue, + "namespace_epilogue": ns_helper.epilogue, + }, + ) + + # Generate Non Native IR Node classes + fm.write_with_template( + "LazyNonNativeIr.h", + "LazyNonNativeIr.h", + lambda: { + "lazy_non_native_ir_inc": [ + f"#include <{path}>" + for path in [ + "torch/csrc/lazy/core/ir.h", + "torch/csrc/lazy/core/ir_builder.h", + "torch/csrc/lazy/core/internal_ops/ltc_ops.h", + "torch/csrc/lazy/core/shape_inference.h", + ] + + ([node_base_hdr] if node_base_hdr else []) + if path + ], + "non_native_ir_nodes": dest.generate_non_native_lazy_ir_nodes( + non_native, lazy_ir_obj + ), + "namespace_prologue": ns_helper.prologue, + "namespace_epilogue": ns_helper.epilogue, + }, + ) + + +if __name__ == "__main__": + main() diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/gen_schema_utils.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/gen_schema_utils.py new file mode 100644 index 0000000000000000000000000000000000000000..45ffffba2e07b8f6eaf6d6a549c05bcf4bce2da0 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/gen_schema_utils.py @@ -0,0 +1,98 @@ +from typing import Any + +from torchgen.model import ( + Annotation, + Argument, + Arguments, + BaseOperatorName, + BaseTy, + BaseType, + CustomClassType, + FunctionSchema, + ListType, + OperatorName, + Return, +) + + +# Note: These aren't actually used in torchgen, they're some utilities for generating a schema +# from real arguments. For example, this is used to generate HigherOrderOperators' schema since +# their schemas can vary for different instances of the same HOP. + + +class TypeGen: + convert_to_base_ty = { + int: BaseTy.int, + float: BaseTy.float, + str: BaseTy.str, + bool: BaseTy.bool, + } + + @staticmethod + def from_example(obj: Any) -> BaseType | ListType | CustomClassType: + import torch + + if isinstance(obj, torch.fx.GraphModule): + return BaseType(BaseTy.GraphModule) + elif isinstance(obj, torch.Tensor): + return BaseType(BaseTy.Tensor) + elif isinstance(obj, torch.SymInt): + return BaseType(BaseTy.SymInt) + elif isinstance(obj, torch.SymBool): + return BaseType(BaseTy.SymBool) + elif isinstance(obj, torch.ScriptObject): + return CustomClassType(obj._type().name()) # type: ignore[attr-defined] + elif isinstance(obj, (list, tuple)): + if len(obj) == 0: + raise AssertionError("list/tuple must be non-empty") + all_base_tys = [TypeGen.from_example(x) for x in obj] + if len(set(all_base_tys)) > 1: + raise RuntimeError( + f"Cannot generate schema for a sequence of args of heterogeneous types: {all_base_tys}. " + "Consider unpacking the argument and give proper names to them if possible " + "instead of using *args." + ) + return ListType(all_base_tys[0], len(obj)) + tp = type(obj) + if tp not in TypeGen.convert_to_base_ty: + raise RuntimeError(f"unsupported type {tp}") + return BaseType(TypeGen.convert_to_base_ty[tp]) + + +class ReturnGen: + @staticmethod + def from_example( + name: str | None, obj: Any, annotation: Annotation | None + ) -> Return: + return Return(name, TypeGen.from_example(obj), annotation) + + +class ArgumentGen: + @staticmethod + def from_example( + name: str, obj: Any, default: str | None, annotation: Annotation | None + ) -> Argument: + return Argument( + name, TypeGen.from_example(obj), default=default, annotation=annotation + ) + + +class FunctionSchemaGen: + @staticmethod + def from_example( + op_name: str, + example_inputs: tuple[tuple[str, Any], ...], + example_outputs: tuple[Any, ...], + ) -> FunctionSchema: + args = [] + for name, inp in example_inputs: + args.append(ArgumentGen.from_example(name, inp, None, None)) + # ignore the annotations and other attributes for now, we could add more when needed. + arguments = Arguments( + tuple(), None, tuple(args), tuple(), None, tuple(), tuple() + ) + returns = tuple( + ReturnGen.from_example(None, out, None) for out in example_outputs + ) + op_name = OperatorName(BaseOperatorName(op_name, False, False, False), "") + return FunctionSchema(op_name, arguments, returns) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/gen_vmap_plumbing.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/gen_vmap_plumbing.py new file mode 100644 index 0000000000000000000000000000000000000000..16582db2db877dd264b4beeb2da45621becdea2c --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/gen_vmap_plumbing.py @@ -0,0 +1,277 @@ +from __future__ import annotations + +import textwrap +from dataclasses import dataclass +from typing import TYPE_CHECKING + +from torchgen.api.translate import translate +from torchgen.api.types import DispatcherSignature +from torchgen.context import method_with_native_function +from torchgen.model import ( + Argument, + BaseTy, + BaseType, + FunctionSchema, + ListType, + NativeFunction, + OptionalType, + Return, + SchemaKind, + Type, +) +from torchgen.utils import mapMaybe + + +if TYPE_CHECKING: + from collections.abc import Sequence + + +def is_tensor(typ: Type) -> bool: + return isinstance(typ, BaseType) and typ.name == BaseTy.Tensor + + +def is_optional_tensor(typ: Type) -> bool: + return isinstance(typ, OptionalType) and is_tensor(typ.elem) + + +def is_tensor_list(typ: Type) -> bool: + return isinstance(typ, ListType) and is_tensor(typ.elem) + + +def unwrap_tensor(name: str, cur_level_var: str) -> list[str]: + result = f"""\ + auto [{name}_value, {name}_bdim] = unwrapTensorAtLevel({name}, {cur_level_var});""" + return textwrap.dedent(result).split("\n") + + +def unwrap_optional_tensor(name: str, cur_level_var: str) -> list[str]: + result = f"""\ + std::optional {name}_value; + std::optional {name}_bdim; + if ({name}) {{ + std::tie({name}_value, {name}_bdim) = unwrapTensorAtLevel({name}.value(), {cur_level_var}); + }}""" + return textwrap.dedent(result).split("\n") + + +def gen_unwraps( + flat_arguments: Sequence[Argument], cur_level_var: str +) -> tuple[str, list[str]]: + arg_names = [a.name for a in flat_arguments] + arg_types = [a.type for a in flat_arguments] + + tensors = [name for typ, name in zip(arg_types, arg_names) if is_tensor(typ)] + optional_tensors = [ + name for typ, name in zip(arg_types, arg_names) if is_optional_tensor(typ) + ] + + unwraps = [] + for tensor in tensors: + unwraps += unwrap_tensor(tensor, cur_level_var) + + for opt_tensor in optional_tensors: + unwraps += unwrap_optional_tensor(opt_tensor, cur_level_var) + unwrap_code = "\n".join(unwraps) + + unwrapped_arg_list = [] + for arg in arg_names: + if arg in tensors or arg in optional_tensors: + unwrapped_arg_list += [f"{arg}_value", f"{arg}_bdim"] + else: + unwrapped_arg_list.append(arg) + return unwrap_code, unwrapped_arg_list + + +def gen_case_where_all_bdims_are_none( + outer_sig: DispatcherSignature, schema: FunctionSchema, cur_level_var: str +) -> str: + conditions = [] + flat_args = schema.arguments.flat_all + for arg in flat_args: + if not arg.type.is_tensor_like(): + continue + conditions.append(f"!isBatchedAtLevel({arg.name}, {cur_level_var})") + + sig = DispatcherSignature.from_schema(schema) + translated_args = ", ".join( + e.expr for e in translate(outer_sig.arguments(), sig.arguments()) + ) + return f"""\ +if ({" && ".join(conditions)}) {{ + return at::_ops::{sig.func.name.unambiguous_name()}::call({translated_args}); +}}""" + + +def gen_returns( + returns: tuple[Return, ...], cur_level_var: str, results_var: str +) -> str: + idx = 0 + wrapped_returns = [] + for ret in returns: + if is_tensor(ret.type): + wrapped_returns.append( + f"makeBatched(std::get<{idx}>({results_var}), std::get<{idx + 1}>({results_var}), {cur_level_var})" + ) + idx += 2 + elif is_tensor_list(ret.type): + wrapped_returns.append( + f"makeBatchedVector(std::get<{idx}>({results_var}), std::get<{idx + 1}>({results_var}), {cur_level_var})" + ) + idx += 2 + else: + wrapped_returns.append(f"std::get<{idx}>({results_var})") + idx += 1 + if len(wrapped_returns) == 1: + result = f"return {wrapped_returns[0]};" + else: + result = f"return std::make_tuple({', '.join(wrapped_returns)});" + return result + + +def accepts_at_least_one_tensor_input(schema: FunctionSchema) -> bool: + return any(a.type.is_tensor_like() for a in schema.arguments.flat_all) + + +def is_mutated_arg(argument: Argument) -> bool: + return argument.annotation is not None and argument.annotation.is_write + + +def gen_vmap_inplace_plumbing(native_function: NativeFunction) -> str | None: + # Assumptions: + # - only one argument is being modified in-place + # - the argument that is being modified in-place is the first argument + # - all returns are either Tensor, tuple of Tensor, or TensorList + schema = native_function.func + sig = DispatcherSignature.from_schema(schema) + returns = schema.returns + + # Check assumptions. If these are invalid we return None + # and punt the work to handle them to the future. + if schema.kind() != SchemaKind.inplace: + raise AssertionError(f"Expected inplace schema, got {schema.kind()}") + if not is_mutated_arg(schema.arguments.flat_all[0]): + return None + if len([arg for arg in schema.arguments.flat_all if is_mutated_arg(arg)]) != 1: + return None + + # Only support cases where all returns are Tensors or vector + if len(returns) == 0: + return None + if not all(is_tensor(ret.type) or is_tensor_list(ret.type) for ret in returns): + return None + if not accepts_at_least_one_tensor_input(schema): + return None + + cur_level_var = "cur_level" + + unwraps, unwrapped_arg_list = gen_unwraps(schema.arguments.flat_all, cur_level_var) + bdims_all_none_case = gen_case_where_all_bdims_are_none(sig, schema, cur_level_var) + + return f"""\ +template +{sig.decl(name=schema.name.unambiguous_name() + "_generated_plumbing")} {{ + c10::impl::ExcludeDispatchKeyGuard guard(DispatchKey::FuncTorchBatched); + auto maybe_layer = maybeCurrentDynamicLayer(); + vmap_check_escaped(maybe_layer, "gen_vmap_inplace_plumbing"); + int64_t {cur_level_var} = maybe_layer->layerId(); +{textwrap.indent(bdims_all_none_case, " ")} +{textwrap.indent(unwraps, " ")} + batch_rule({", ".join(unwrapped_arg_list)}); + return {schema.arguments.flat_all[0].name}; +}}""" + + +def gen_vmap_plumbing_no_returns(native_function: NativeFunction) -> str: + schema = native_function.func + sig = DispatcherSignature.from_schema(schema) + cur_level_var = "cur_level" + + unwraps, unwrapped_arg_list = gen_unwraps(schema.arguments.flat_all, cur_level_var) + bdims_all_none_case = gen_case_where_all_bdims_are_none(sig, schema, cur_level_var) + + return f"""\ +template +{sig.decl(name=schema.name.unambiguous_name() + "_generated_plumbing")} {{ + c10::impl::ExcludeDispatchKeyGuard guard(DispatchKey::FuncTorchBatched); + auto maybe_layer = maybeCurrentDynamicLayer(); + vmap_check_escaped(maybe_layer, "gen_vmap_plumbing_no_returns"); + int64_t {cur_level_var} = maybe_layer->layerId(); +{textwrap.indent(bdims_all_none_case, " ")} +{textwrap.indent(unwraps, " ")} + batch_rule({", ".join(unwrapped_arg_list)}); +}}""" + + +def gen_vmap_plumbing(native_function: NativeFunction) -> str | None: + schema = native_function.func + sig = DispatcherSignature.from_schema(schema) + returns = schema.returns + + # Only support cases where all returns are Tensors or vector + if not accepts_at_least_one_tensor_input(schema): + return None + if len(returns) == 0: + return gen_vmap_plumbing_no_returns(native_function) + return_symint_overrides = [ + "_scaled_dot_product_flash_attention", + "_scaled_dot_product_cudnn_attention", + "_scaled_dot_product_flash_attention_quantized", + ] + if ( + not all(ret.type.is_tensor_like() for ret in returns) + and schema.name.unambiguous_name() not in return_symint_overrides + ): + return None + # in-place views need special handling + if "inplace_view" in native_function.tags: + return None + + if schema.kind() == SchemaKind.inplace: + return gen_vmap_inplace_plumbing(native_function) + + # Don't support these (mutable, out, scratch) + if schema.kind() != SchemaKind.functional: + return None + + results_var = "results" + cur_level_var = "cur_level" + + unwraps, unwrapped_arg_list = gen_unwraps(schema.arguments.flat_all, cur_level_var) + bdims_all_none_case = gen_case_where_all_bdims_are_none(sig, schema, cur_level_var) + + wrapped_returns = gen_returns(returns, cur_level_var, results_var) + return f"""\ +template +{sig.decl(name=schema.name.unambiguous_name() + "_generated_plumbing")} {{ + c10::impl::ExcludeDispatchKeyGuard guard(DispatchKey::FuncTorchBatched); + auto maybe_layer = maybeCurrentDynamicLayer(); + vmap_check_escaped(maybe_layer, "gen_vmap_plumbing"); + int64_t {cur_level_var} = maybe_layer->layerId(); +{textwrap.indent(bdims_all_none_case, " ")} +{textwrap.indent(unwraps, " ")} + auto {results_var} = batch_rule({", ".join(unwrapped_arg_list)}); + {wrapped_returns} +}}""" + + +@dataclass(frozen=True) +class ComputeBatchRulePlumbing: + @method_with_native_function + def __call__(self, f: NativeFunction) -> str | None: + result = gen_vmap_plumbing(f) + return result + + +def gen_all_vmap_plumbing(native_functions: Sequence[NativeFunction]) -> str: + body = "\n".join(list(mapMaybe(ComputeBatchRulePlumbing(), native_functions))) + return f""" +#pragma once +#include +#include + +namespace at {{ namespace functorch {{ + +{body} + +}}}} // namespace at::functorch +""" diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/local.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/local.py new file mode 100644 index 0000000000000000000000000000000000000000..d2f9965970009b10977bdb69849dea20d483b007 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/local.py @@ -0,0 +1,64 @@ +from __future__ import annotations + +import threading +from contextlib import contextmanager +from typing import TYPE_CHECKING + + +if TYPE_CHECKING: + from collections.abc import Iterator + + +# Simple dynamic scoping implementation. The name "parametrize" comes +# from Racket. +# +# WARNING WARNING: LOOKING TO EDIT THIS FILE? Think carefully about +# why you need to add a toggle to the global behavior of code +# generation. The parameters here should really only be used +# for "temporary" situations, where we need to temporarily change +# the codegen in some cases because we cannot conveniently update +# all call sites, and are slated to be eliminated once all call +# sites are eliminated. If you don't have a plan for how to get there, +# DON'T add a new entry here. + + +class Locals(threading.local): + use_const_ref_for_mutable_tensors: bool | None = None + use_ilistref_for_tensor_lists: bool | None = None + + +_locals = Locals() + + +def use_const_ref_for_mutable_tensors() -> bool: + if _locals.use_const_ref_for_mutable_tensors is None: + raise AssertionError( + "need to initialize local.use_const_ref_for_mutable_tensors with " + "local.parametrize" + ) + return _locals.use_const_ref_for_mutable_tensors + + +def use_ilistref_for_tensor_lists() -> bool: + if _locals.use_ilistref_for_tensor_lists is None: + raise AssertionError( + "need to initialize local.use_ilistref_for_tensor_lists with local.parametrize" + ) + return _locals.use_ilistref_for_tensor_lists + + +@contextmanager +def parametrize( + *, use_const_ref_for_mutable_tensors: bool, use_ilistref_for_tensor_lists: bool +) -> Iterator[None]: + old_use_const_ref_for_mutable_tensors = _locals.use_const_ref_for_mutable_tensors + old_use_ilistref_for_tensor_lists = _locals.use_ilistref_for_tensor_lists + try: + _locals.use_const_ref_for_mutable_tensors = use_const_ref_for_mutable_tensors + _locals.use_ilistref_for_tensor_lists = use_ilistref_for_tensor_lists + yield + finally: + _locals.use_const_ref_for_mutable_tensors = ( + old_use_const_ref_for_mutable_tensors + ) + _locals.use_ilistref_for_tensor_lists = old_use_ilistref_for_tensor_lists diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/model.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/model.py new file mode 100644 index 0000000000000000000000000000000000000000..54aeaab9fb9d5bfd8036677d040847e97e1ec60a --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/model.py @@ -0,0 +1,3086 @@ +from __future__ import annotations + +import dataclasses +import itertools +import re +from dataclasses import dataclass +from enum import auto, Enum +from typing import TYPE_CHECKING +from typing_extensions import assert_never + +from torchgen.utils import NamespaceHelper, OrderedSet + + +if TYPE_CHECKING: + from collections.abc import Callable, Iterator, Sequence + + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # +# +# DATA MODEL +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # +# +# Some general principles for our data model. +# +# - Stop using C++ data types as the internal data representation +# format. Instead, the internal data structures are centered +# around JIT schema representation. This avoid a big problem +# with the old codegen where we read in all the types from +# native_functions.yaml and then immediately had to retranslate +# them into C++ types. +# +# - More semantic data representation. Instead of representing +# everything as dicts and strings, we define dataclasses for +# every interesting entity the code generation has to deal with. +# These dataclasses have strong semantic invariants: for example, +# we generally require them to roundtrip losslessly into the +# form they were parsed from. These structures are immutable +# and you're expected to populate information once during +# construction. + + +# Represent a source location; used for better error reporting +@dataclass(frozen=True) +class Location: + file: str + line: int + + def __str__(self) -> str: + return f"{self.file}:{self.line}" + + +# Valid values of the 'variants' field in native_functions.yaml +class Variant(Enum): + function = auto() + method = auto() + + +# Default kernel namespace +DEFAULT_KERNEL_NAMESPACE = "at::native" + +# NOTE: Keep the list in sync with `DispatchKey` in c10/core/DispatchKey.h +BACKEND_COMPONENTS = [ + "CPU", + "CUDA", + "HIP", + "XLA", + "MTIA", + "MPS", + "IPU", + "XPU", + "HPU", + "VE", + "Lazy", + "Meta", + "PrivateUse1", + "PrivateUse2", + "PrivateUse3", +] +FUNCTIONALITY_KEYS = [ + "", + "Quantized", + "Sparse", + "SparseCsr", + "NestedTensor", + "Autograd", +] + +# This list guards dispatches that can be used in derivatives.yaml +# For now we omit AutogradFunctionality and AutogradOther +AUTOGRAD_KEYS = ["AutogradNestedTensor"] + [ + "Autograd" + component for component in BACKEND_COMPONENTS +] + +FRAGMENT_NAMESPACES = {"quantized", "quantized_decomposed"} + + +# This doesn't have to be in sync with the header, it only needs to contain +# entries that we actually use in the codegen or want pyi entries for +class DispatchKey(Enum): + Undefined = 0 + CatchAll = Undefined + + FPGA = auto() + MAIA = auto() + Vulkan = auto() + Metal = auto() + MKLDNN = auto() + OpenGL = auto() + OpenCL = auto() + IDEEP = auto() + CustomRNGKeyId = auto() + MkldnnCPU = auto() + Sparse = auto() + SparseCsr = auto() + NestedTensor = auto() + Dense = auto() + + PythonTLSSnapshot = auto() + PreDispatch = auto() + PythonDispatcher = auto() + Python = auto() + FuncTorchDynamicLayerBackMode = auto() + ZeroTensor = auto() + Conjugate = auto() + Negative = auto() + BackendSelect = auto() + Named = auto() + AutogradOther = auto() + AutogradFunctionality = auto() + AutogradNestedTensor = auto() + Tracer = auto() + Autocast = auto() + AutocastCPU = auto() + AutocastCUDA = auto() + Batched = auto() + VmapMode = auto() + FuncTorchGradWrapper = auto() + FuncTorchBatched = auto() + BatchedNestedTensor = auto() + FuncTorchVmapMode = auto() + FuncTorchDynamicLayerFrontMode = auto() + Functionalize = auto() + TESTING_ONLY_GenericWrapper = auto() + TESTING_ONLY_GenericMode = auto() + + ADInplaceOrView = auto() + Autograd = auto() + CompositeImplicitAutograd = auto() + CompositeImplicitAutogradNestedTensor = auto() + CompositeExplicitAutograd = auto() + CompositeExplicitAutogradNonFunctional = auto() + FuncTorchBatchedDecomposition = auto() + + # BEGIN autogenerated + CPU = auto() + CUDA = auto() + HIP = auto() + XLA = auto() + MTIA = auto() + MPS = auto() + IPU = auto() + XPU = auto() + HPU = auto() + VE = auto() + Lazy = auto() + Meta = auto() + PrivateUse1 = auto() + PrivateUse2 = auto() + PrivateUse3 = auto() + QuantizedCPU = auto() + QuantizedCUDA = auto() + QuantizedHIP = auto() + QuantizedXLA = auto() + QuantizedMTIA = auto() + QuantizedMPS = auto() + QuantizedIPU = auto() + QuantizedXPU = auto() + QuantizedHPU = auto() + QuantizedVE = auto() + QuantizedLazy = auto() + QuantizedMeta = auto() + QuantizedPrivateUse1 = auto() + QuantizedPrivateUse2 = auto() + QuantizedPrivateUse3 = auto() + SparseCPU = auto() + SparseCUDA = auto() + SparseHIP = auto() + SparseXLA = auto() + SparseMTIA = auto() + SparseMPS = auto() + SparseIPU = auto() + SparseXPU = auto() + SparseHPU = auto() + SparseVE = auto() + SparseLazy = auto() + SparseMeta = auto() + SparsePrivateUse1 = auto() + SparsePrivateUse2 = auto() + SparsePrivateUse3 = auto() + SparseCsrCPU = auto() + SparseCsrCUDA = auto() + SparseCsrHIP = auto() + SparseCsrXLA = auto() + SparseCsrMTIA = auto() + SparseCsrMPS = auto() + SparseCsrIPU = auto() + SparseCsrXPU = auto() + SparseCsrHPU = auto() + SparseCsrVE = auto() + SparseCsrLazy = auto() + SparseCsrMeta = auto() + SparseCsrPrivateUse1 = auto() + SparseCsrPrivateUse2 = auto() + SparseCsrPrivateUse3 = auto() + NestedTensorCPU = auto() + NestedTensorCUDA = auto() + NestedTensorHIP = auto() + NestedTensorXLA = auto() + NestedTensorMTIA = auto() + NestedTensorMPS = auto() + NestedTensorIPU = auto() + NestedTensorXPU = auto() + NestedTensorHPU = auto() + NestedTensorVE = auto() + NestedTensorLazy = auto() + NestedTensorMeta = auto() + NestedTensorPrivateUse1 = auto() + NestedTensorPrivateUse2 = auto() + NestedTensorPrivateUse3 = auto() + AutogradCPU = auto() + AutogradCUDA = auto() + AutogradHIP = auto() + AutogradXLA = auto() + AutogradMTIA = auto() + AutogradMPS = auto() + AutogradIPU = auto() + AutogradXPU = auto() + AutogradHPU = auto() + AutogradVE = auto() + AutogradLazy = auto() + AutogradMeta = auto() + AutogradPrivateUse1 = auto() + AutogradPrivateUse2 = auto() + AutogradPrivateUse3 = auto() + # END autogenerated + + def __str__(self) -> str: + return self.name + + def lower(self) -> str: + return str(self).lower() + + @staticmethod + def parse(value: str) -> DispatchKey: + for k, v in DispatchKey.__members__.items(): + if k == value: + return v + raise AssertionError(f"unknown dispatch key {value}") + + +class _TorchDispatchModeKey(Enum): + FAKE = auto() + PROXY = auto() + FUNCTIONAL = auto() + + +def codegen_per_backend_entries() -> str: + r: list[str] = [] + for fk in FUNCTIONALITY_KEYS: + r.extend(f" {fk}{bc} = auto()" for bc in BACKEND_COMPONENTS) + return "\n".join(r) + + +for fk in FUNCTIONALITY_KEYS: + for bc in BACKEND_COMPONENTS: + if not hasattr(DispatchKey, fk + bc): + r = codegen_per_backend_entries() + print(r) + raise RuntimeError( + f"Missing {fk}{bc} from DispatchKey enum. Here is the autogenerated list we expect to have:\n\n{r}" + ) + + +STRUCTURED_DISPATCH_KEYS = { + DispatchKey.MPS, + DispatchKey.CUDA, + DispatchKey.CPU, + DispatchKey.XPU, + DispatchKey.MTIA, +} +UFUNC_DISPATCH_KEYS = {DispatchKey.CUDA, DispatchKey.CPU} + +# Set of supported dispatch keys +dispatch_keys = [ + DispatchKey.CPU, + DispatchKey.SparseCPU, + DispatchKey.SparseCsrCPU, + DispatchKey.MkldnnCPU, + DispatchKey.CUDA, + DispatchKey.MPS, + DispatchKey.XPU, + DispatchKey.SparseXPU, + DispatchKey.SparseCsrXPU, + DispatchKey.SparseCUDA, + DispatchKey.SparseCsrCUDA, + DispatchKey.SparseMPS, + DispatchKey.SparseCsrMPS, + DispatchKey.QuantizedCPU, + DispatchKey.QuantizedCUDA, + DispatchKey.CompositeImplicitAutograd, + DispatchKey.CompositeImplicitAutogradNestedTensor, + DispatchKey.CompositeExplicitAutograd, + DispatchKey.CompositeExplicitAutogradNonFunctional, + DispatchKey.NestedTensorCPU, + DispatchKey.NestedTensorCUDA, + DispatchKey.NestedTensorXPU, + DispatchKey.NestedTensorHPU, + # Meta is a magic key: it is automatically generated for structured + # kernels + DispatchKey.Meta, + DispatchKey.SparseMeta, + DispatchKey.SparseCsrMeta, + DispatchKey.QuantizedMeta, + DispatchKey.NestedTensorMeta, + DispatchKey.ZeroTensor, + DispatchKey.MTIA, +] + + +# Dispatch keys that "support all backends". These codegen slightly differently +# then backend specific keys. +def is_generic_dispatch_key(dk: DispatchKey) -> bool: + return dk in { + DispatchKey.CompositeExplicitAutograd, + DispatchKey.CompositeExplicitAutogradNonFunctional, + DispatchKey.CompositeImplicitAutograd, + DispatchKey.CompositeImplicitAutogradNestedTensor, + } + + +# CUDA specific dispatch keys +def is_cuda_dispatch_key(dk: DispatchKey) -> bool: + return dk in { + DispatchKey.CUDA, + DispatchKey.QuantizedCUDA, + DispatchKey.SparseCUDA, + DispatchKey.SparseCsrCUDA, + DispatchKey.NestedTensorCUDA, + DispatchKey.AutogradCUDA, + } + + +# XPU specific dispatcy keys +def is_xpu_dispatch_key(dk: DispatchKey) -> bool: + return dk in { + DispatchKey.XPU, + DispatchKey.QuantizedXPU, + DispatchKey.SparseXPU, + DispatchKey.SparseCsrXPU, + DispatchKey.NestedTensorXPU, + DispatchKey.AutogradXPU, + } + + +# Structured kernel generation is only supported for certain key types; +# otherwise use old-style +def is_structured_dispatch_key(dk: DispatchKey) -> bool: + return dk in STRUCTURED_DISPATCH_KEYS + + +def is_ufunc_dispatch_key(dk: DispatchKey) -> bool: + # For now, ufunc dispatch keys coincide with structured keys + return dk in UFUNC_DISPATCH_KEYS + + +dispatch_device_map = {is_cuda_dispatch_key: "cuda", is_xpu_dispatch_key: "xpu"} + + +# This is oddly named ScalarType and not DType for symmetry with C++ +class ScalarType(Enum): + Byte = auto() + Char = auto() + Short = auto() + Int = auto() + Long = auto() + Half = auto() + Float = auto() + Double = auto() + ComplexHalf = auto() + ComplexFloat = auto() + ComplexDouble = auto() + Bool = auto() + BFloat16 = auto() + Float8_e5m2 = auto() + Float8_e5m2fnuz = auto() + Float8_e4m3fn = auto() + Float8_e4m3fnuz = auto() + Float8_e8m0fnu = auto() + + def __str__(self) -> str: + return self.name + + @staticmethod + def maybe_parse(value: str) -> ScalarType | None: + for k, v in ScalarType.__members__.items(): + if k == value: + return v + return None + + @staticmethod + def parse(value: str) -> ScalarType: + mb_r = ScalarType.maybe_parse(value) + if mb_r is None: + raise AssertionError(f"unknown dtype {value}") + return mb_r + + @staticmethod + def parse_set(values: str) -> OrderedSet[ScalarType]: + dtypes: OrderedSet[ScalarType] = OrderedSet() + for value in values.split(", "): + if value in DTYPE_CLASSES: + dtypes.update(DTYPE_CLASSES[value]) + else: + dtypes.add(ScalarType.parse(value)) + return dtypes + + +DTYPE_CLASSES: dict[str, OrderedSet[ScalarType]] = {} +# NB: Integral doesn't include boolean +DTYPE_CLASSES["Integral"] = OrderedSet( + [ + ScalarType.Byte, + ScalarType.Char, + ScalarType.Int, + ScalarType.Long, + ScalarType.Short, + ] +) +# NB: Floating doesn't include low precision types +DTYPE_CLASSES["Floating"] = OrderedSet([ScalarType.Float, ScalarType.Double]) +DTYPE_CLASSES["Complex"] = OrderedSet( + [ScalarType.ComplexFloat, ScalarType.ComplexDouble] +) +DTYPE_CLASSES["All"] = DTYPE_CLASSES["Integral"] | DTYPE_CLASSES["Floating"] +DTYPE_CLASSES["AllAndComplex"] = DTYPE_CLASSES["All"] | DTYPE_CLASSES["Complex"] +DTYPE_CLASSES["FloatingAndComplex"] = ( + DTYPE_CLASSES["Floating"] | DTYPE_CLASSES["Complex"] +) + + +# Represents the valid entries for ufunc_inner_loop in native_functions.yaml. +# NB: if you add a new UfuncKey, you will teach torchgen.dest.ufunc how +# to process it. Most logic will ignore keys they don't understand, so your +# new key will get silently ignored until you hook in logic to deal with it. +class UfuncKey(Enum): + # These are low level keys that represent exactly one particular + # instantiation of the kernel produced by codegen + CUDAFunctor = auto() + CUDAFunctorOnOther = auto() + CUDAFunctorOnSelf = auto() + + CPUScalar = auto() + CPUVector = auto() + + # These are the ones users will usually specify, and + # implicitly "fill in" the low level keys + ScalarOnly = auto() # CUDA*, CPUScalar + Generic = auto() # CUDA*, CPU* + + def __str__(self) -> str: + return self.name + + @staticmethod + def parse(value: str) -> UfuncKey: + for k, v in UfuncKey.__members__.items(): + if k == value: + return v + raise AssertionError(f"unknown ufunc key {value}") + + +class DeviceCheckType(Enum): + NoCheck = 0 + ExactSame = 1 + + +class ViewSchemaKind(Enum): + aliasing = auto() + aliasing_inplace = auto() + non_aliasing = auto() + + +# The basic input to the code generation is native_functions.yaml. +# The name "native", BTW, comes from the distinction between native +# functions and legacy TH functions. The legacy TH functions are gone, +# but the "native" descriptor has stuck. +# +# NativeFunction models a single entry in native_functions.yaml. Its +# fields roughly correspond to what you would see in the YAML itself, +# but after canonicalization and parsing has occurred. +# +# You can see some of the overall design patterns for how we setup +# dataclasses in this class, but we will defer a complete discussion +# of this at FunctionSchema. +@dataclass(frozen=True) +class NativeFunction: + # The namespace for this operator. For example, if we have "at::add" + # then the namespace would be "at". This enables ops to be registered + # through the same DSL with a custom namespace. If not specified, the + # default namespace would be "at". + namespace: str + + # The function schema of the operator in question. This schema + # has been parsed; see FunctionSchema for more about its structure. + # (This type is quoted as we are forward referencing a type + # defined later in the file. I opted for this ordering of the + # classes for expository clarity.) + func: FunctionSchema + + # Whether or not to generate mutable tensor arguments like regular + # ones + use_const_ref_for_mutable_tensors: bool + + # Whether or not to omit automatic generation of a DeviceGuard + device_guard: bool + + # How to emit automatic generation of device check + device_check: DeviceCheckType + + # What python module to put the function in + python_module: str | None + + # TODO: figure out what this does + category_override: str | None + + # If no variants are specified in native_functions.yaml, this is + # assumed to be {'function'}. + variants: set[Variant] + + # Whether or not we should skip generating registrations for + # this kernel. This is a bit of a double-edged sword, as manual + # registrations don't participate in codegen-based selective build! + manual_kernel_registration: bool + + # Whether or not to skip generating TensorMethod/Functions bindings + # for this kernel. Technically, this doesn't actually skip generating + # the binding; instead, the binding gets generated to __dispatch_{funcname} + # so you can make use of the normal binding if you need it. + manual_cpp_binding: bool + + # The location in the YAML file were this native function entry was + # defined. This is for conveniently reporting error messages! + loc: Location + + # A list of operators that are expected to be auto-generated for this NativeFunction. + # Note: This list isn't actually directly used by the codegen to generate anything. + # Instead, the codegen figures out what operators to generate purely based off of + # function schema, and uses the autogen declarations to error check. + # We expect every NativeFunction that gets auto-generated be explicitly called out + # in native_functions.yaml + autogen: list[OperatorName] + + # If non-empty, this kernel is subject to ufunc codegen. + # Sorted by ufunc_key + ufunc_inner_loop: dict[UfuncKey, UfuncInnerLoop] + + # Whether or not this out functions is a "structured kernel". Structured + # kernels are defined a little differently from normal kernels; in + # particular, their shape checking logic is defined separately from + # the kernel. Only out functions can be structured; other functions + # delegate to the out function using the structured_delegate keyword. + # Every structured kernel must have at least an out and a functional + # variant. + structured: bool + + # Whether or not this non-out function is a structured kernel, defined + # in terms of the out kernel referenced by the string here. + structured_delegate: OperatorName | None + + # Only valid for structured kernels. Specifies alternative of what + # to inherit from when defining the meta class for the structured + # operator. This will usually be TensorIteratorBase. This also + # changes the semantics of set_output to call the parent class. + structured_inherits: str | None + + # Structured kernels can declare elements as "precomputed". These elements + # are returned by the meta function in one struct and passed to the impl + # function in lieu of certain kernel arguments that these precomputed + # elements supersede. Information about the names and types of these + # precomputed elements and how they correspond to kernel arguments is stored + # in this member, if applicable. + precomputed: Precompute | None + + # Argument names whose default should be excluded from the C++ interface. + # Intended for resolving overload ambiguities between signatures. + cpp_no_default_args: set[str] + + # Note [Abstract ATen methods] + # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + # An abstract ATen method is one whose dispatch differs between + # types. These are implemented in derived types (with a + # standard (throwing) definition in Type). A concrete ATen + # method is one which has the same dispatch for all types; + # we just implement it in the base Type. This is exposed + # in Declarations.yaml via a field named 'abstract'. + is_abstract: bool + + # Whether or not the NativeFunction contains a backend-agnostic kernel + has_composite_implicit_autograd_kernel: bool + has_composite_implicit_autograd_nested_tensor_kernel: bool + has_composite_explicit_autograd_kernel: bool + has_composite_explicit_autograd_non_functional_kernel: bool + + # Tags are used to describe semantic information about (groups of) operators, + # That aren't easily inferable directly from the operator's schema. + tags: set[str] + + # NB: The benefit of defining a dataclass is that we automatically get + # a constructor defined for all the fields we specify. No need + # to explicitly write it out. + + # We parse both the NativeFunction + backend-specific information about it, which it stored in a corresponding BackendIndex. + @staticmethod + def from_yaml( + ei: dict[str, object], + loc: Location, + valid_tags: set[str], + ignore_keys: set[DispatchKey] | None = None, + ) -> tuple[NativeFunction, dict[DispatchKey, dict[OperatorName, BackendMetadata]]]: + """ + Parse a NativeFunction from a dictionary as directly parsed + from native_functions.yaml + """ + e = ei.copy() + + funcs = e.pop("func") + if not isinstance(funcs, str): + raise AssertionError(f"not a str: {funcs}") + # only support one level of namespace. E.g., aten::add + namespace_helper = NamespaceHelper.from_namespaced_entity( + namespaced_entity=funcs, max_level=1 + ) + namespace = namespace_helper.get_cpp_namespace(default="aten") + func = FunctionSchema.parse(namespace_helper.entity_name) + + cpp_no_default_args_list = e.pop("cpp_no_default_args", []) + if not isinstance(cpp_no_default_args_list, list): + raise AssertionError( + f"cpp_no_default_args is not a list: {cpp_no_default_args_list}" + ) + cpp_no_default_args = set(cpp_no_default_args_list) + + use_const_ref_for_mutable_tensors = e.pop( + "use_const_ref_for_mutable_tensors", False + ) + if not isinstance(use_const_ref_for_mutable_tensors, bool): + raise AssertionError( + f"use_const_ref_for_mutable_tensors is not a bool: {use_const_ref_for_mutable_tensors}" + ) + + if use_const_ref_for_mutable_tensors: + if func.arguments.out: + raise AssertionError( + "see https://github.com/pytorch/pytorch/issues/145522" + ) + + variants_s = e.pop("variants", "function") + if not isinstance(variants_s, str): + raise AssertionError(f"variants is not a str: {variants_s}") + variants: set[Variant] = set() + for v in variants_s.split(", "): + if v == "function": + variants.add(Variant.function) + elif v == "method": + variants.add(Variant.method) + else: + raise AssertionError(f"illegal variant {v}") + + manual_kernel_registration = e.pop("manual_kernel_registration", False) + if not isinstance(manual_kernel_registration, bool): + raise AssertionError(f"not a bool: {manual_kernel_registration}") + + manual_cpp_binding = e.pop("manual_cpp_binding", False) + if not isinstance(manual_cpp_binding, bool): + raise AssertionError(f"not a bool: {manual_cpp_binding}") + + device_guard = e.pop("device_guard", True) + if not isinstance(device_guard, bool): + raise AssertionError(f"not a bool: {device_guard}") + + device_check_s = e.pop("device_check", None) + if not (device_check_s is None or isinstance(device_check_s, str)): + raise AssertionError(f"not a str: {device_check_s}") + if not ( + device_check_s is None or device_check_s in DeviceCheckType.__members__ + ): + raise AssertionError(f"illegal device_check: {device_check_s}") + device_check: DeviceCheckType + if device_check_s is None: + device_check = DeviceCheckType.ExactSame + else: + device_check = DeviceCheckType[device_check_s] + + structured = e.pop("structured", False) + if not isinstance(structured, bool): + raise AssertionError(f"not a bool: {structured}") + + structured_delegate_s = e.pop("structured_delegate", None) + if not ( + structured_delegate_s is None or isinstance(structured_delegate_s, str) + ): + raise AssertionError(f"not a str: {structured_delegate_s}") + if structured_delegate_s is not None and "::" in structured_delegate_s: + raise AssertionError( + "namespace is not supported in structured delegate," + " using the same namespace as the native function" + ) + structured_delegate: OperatorName | None = None + if structured_delegate_s is not None: + structured_delegate = OperatorName.parse(structured_delegate_s) + + structured_inherits = e.pop("structured_inherits", None) + if not (structured_inherits is None or isinstance(structured_inherits, str)): + raise AssertionError(f"not a str: {structured_inherits}") + if structured_inherits is not None and "::" in structured_inherits: + raise AssertionError( + "namespace is not supported in structured inherits," + " using the same namespace as the native function" + ) + + python_module = e.pop("python_module", None) + if not (python_module is None or isinstance(python_module, str)): + raise AssertionError(f"not a str: {python_module}") + if python_module is not None and Variant.method in variants: + raise AssertionError("functions in modules cannot be methods") + + category_override = e.pop("category_override", None) + if not (category_override is None or isinstance(category_override, str)): + raise AssertionError(f"not a str: {category_override}") + + precomputed_dict = e.pop("precomputed", None) + if precomputed_dict is not None and structured is not True: + raise AssertionError( + f"precomputed requires structured=True, got structured={structured}" + ) + precomputed = Precompute.parse(precomputed_dict) if precomputed_dict else None + + tags_inp = e.pop("tags", []) + if isinstance(tags_inp, str): + tags_inp = [tags_inp] + if not isinstance(tags_inp, list): + raise AssertionError(f"tags is not a list: {tags_inp}") + + # All aten ops generated by torchgen receive the pt2_compliant tag. + if namespace == "aten" and "pt2_compliant_tag" in valid_tags: + tags_inp.append("pt2_compliant_tag") + + tags: set[str] = set() + for t in tags_inp: + if len(valid_tags) == 0: + raise AssertionError("valid_tags is empty") + # TODO: verify that the tag is valid and has an entry in tags.yaml + if t in valid_tags: + tags.add(t) + else: + raise AssertionError(f"illegal tag {t}") + + from torchgen.api import cpp + + raw_dispatch = e.pop("dispatch", None) + if not (raw_dispatch is None or isinstance(raw_dispatch, dict)): + raise AssertionError(f"dispatch is not a dict: {e}") + dispatch: dict[DispatchKey, BackendMetadata] = {} + num_dispatch_keys: int = 0 + if raw_dispatch is not None: + if manual_kernel_registration: + raise AssertionError( + "cannot specify both manual_kernel_registration and dispatch; with " + "manual registration, dispatch has no effect!" + ) + redundant_composite_implicit_autograd = False + for ks, v in raw_dispatch.items(): + if ks == "__line__": + continue # not worth tracking line numbers for dispatch entries + if not isinstance(ks, str): + raise AssertionError( + f"illegal dispatch key '{ks}' in {raw_dispatch}" + ) + if not isinstance(v, str): + raise AssertionError( + f"illegal dispatch value '{v}' in {raw_dispatch}" + ) + for k in ks.split(","): + dispatch_key = DispatchKey.parse(k.strip()) + num_dispatch_keys += 1 + + if ignore_keys and dispatch_key in ignore_keys: + continue + if dispatch_key not in dispatch_keys: + raise AssertionError( + f"Dispatch key {dispatch_key} of kernel {v} " + "is not a supported dispatch key." + ) + # We only allow at most 3 levels of namespace for kernels. + # We will append "native" to a custom kernel namespace. + namespace_helper = NamespaceHelper.from_namespaced_entity( + v, max_level=3 + ) + kernel_namespace = namespace_helper.get_cpp_namespace(default="at") + # Why is 'structured' included? External backends (e.g. + # XLA) opt into which ops are structured independently + # of which in-tree ops are structured + dispatch[dispatch_key] = BackendMetadata( + kernel=namespace_helper.entity_name, + structured=structured + and is_structured_dispatch_key(dispatch_key), + cpp_namespace=(kernel_namespace + "::native"), + ) + if ( + dispatch_key is DispatchKey.CompositeImplicitAutograd + and v == cpp.name(func) + ): + redundant_composite_implicit_autograd = True + + # We count the number of dispatch keys which have not been ignored to prevent a dispatch table + # in which all backend keys are ignored but necessarily kept, remaining compositeimplicit, + # from being treated as redundant. + if num_dispatch_keys == 1 and redundant_composite_implicit_autograd: + raise AssertionError( + "unnecessary dispatch table for this function; just delete the dispatch " + "key entirely" + ) + # if a function is a structured delegate, deleting the dispatch + # table is NOT semantics preserving + if not ( + structured_delegate + or dispatch.keys() != {DispatchKey.CompositeImplicitAutograd} + or dispatch[DispatchKey.CompositeImplicitAutograd].supports_symint() + or num_dispatch_keys != 1 + ): + raise AssertionError( + f"unexpected name for singleton CompositeImplicitAutograd dispatch entry: expected {cpp.name(func)} " + f"but got {dispatch[DispatchKey.CompositeImplicitAutograd]}. Rename your implementation to the expected " + "name, then delete the dispatch table" + ) + elif not structured and structured_delegate is None: + name = str(func.name.name) + if ( + name.startswith("new_") + or name.endswith("_like") + # TODO: maybe it's better to test the return + or ( + func.arguments.tensor_options + and not func.arguments.has_tensor_arg() + ) + ): + raise AssertionError( + f"expected {name} to have a CompositeExplicitAutograd " + "dispatch entry, but there was no dispatch table. Factory functions " + "should not have implicit dispatch as they should not be decomposed " + "for __torch_dispatch__" + ) + dispatch[DispatchKey.CompositeImplicitAutograd] = BackendMetadata( + cpp.name(func), structured=False, cpp_namespace=DEFAULT_KERNEL_NAMESPACE + ) + + composites_in_dispatch = [ + d + for d in dispatch + if d == DispatchKey.CompositeExplicitAutograd + or d == DispatchKey.CompositeExplicitAutogradNonFunctional + or d == DispatchKey.CompositeImplicitAutograd + or d == DispatchKey.CompositeImplicitAutogradNestedTensor + ] + + if not ( + len(composites_in_dispatch) <= 1 + or ( + len(composites_in_dispatch) == 2 + and ( + DispatchKey.CompositeExplicitAutogradNonFunctional + not in composites_in_dispatch + ) + and ( + DispatchKey.CompositeImplicitAutogradNestedTensor + in composites_in_dispatch + ) + ) + ): + raise AssertionError( + "cannot specify more than one of CompositeExplicitAutograd, CompositeExplicitAutogradNonFunctional, " + "or CompositeImplicitAutograd on a single kernel; each " + "strictly subsumes the other. If you wanted to provide an explicit autograd " + "implementation, specify CompositeExplicitAutograd; otherwise specify CompositeImplicitAutograd only" + ) + + autogen_str = e.pop("autogen", "") + if not isinstance(autogen_str, str): + raise AssertionError(f"autogen is not a str: {autogen_str}") + autogen = ( + [] + if autogen_str == "" + else [OperatorName.parse(x) for x in autogen_str.split(", ")] + ) + + raw_ufunc_inner_loop = e.pop("ufunc_inner_loop", {}) + ufunc_inner_loop = {} + if isinstance(raw_ufunc_inner_loop, str): + ufunc_inner_loop[UfuncKey.Generic] = UfuncInnerLoop.parse( + raw_ufunc_inner_loop, UfuncKey.Generic + ) + elif isinstance(raw_ufunc_inner_loop, dict): + for k, vo in raw_ufunc_inner_loop.items(): + if k == "__line__": + continue + if not isinstance(k, str): + raise AssertionError(f"ufunc_inner_loop key is not a str: {k}") + if not isinstance(vo, str): + raise AssertionError(f"ufunc_inner_loop value is not a str: {vo}") + ufunc_key = UfuncKey.parse(k) + ufunc_inner_loop[ufunc_key] = UfuncInnerLoop.parse(vo, ufunc_key) + else: + raise AssertionError( + f"ufunc_inner_loop not str or dict: {raw_ufunc_inner_loop}" + ) + # Program the BackendIndex for the implicit dispatch entry from ufunc + if ufunc_inner_loop: + if not structured: + raise AssertionError("ufunc must be structured") + + # Delay import ufunc here to avoid circular import issue + # See: https://github.com/pytorch/pytorch/issues/81294 + import torchgen.api.ufunc as ufunc + + for dispatch_key in UFUNC_DISPATCH_KEYS: + if dispatch_key in dispatch: + raise AssertionError( + f"ufunc should not have explicit dispatch entry for {dispatch_key}" + ) + dispatch[dispatch_key] = BackendMetadata( + kernel=ufunc.schema_kernel_name(func, dispatch_key), + structured=True, + cpp_namespace=DEFAULT_KERNEL_NAMESPACE, + ) + + if structured_delegate: + # Structured functions MUST have a dispatch table + is_abstract = True + else: + is_abstract = ( + dispatch.keys() != {DispatchKey.CompositeImplicitAutograd} + and dispatch.keys() + != {DispatchKey.CompositeImplicitAutogradNestedTensor} + and dispatch.keys() + != { + DispatchKey.CompositeImplicitAutograd, + DispatchKey.CompositeImplicitAutogradNestedTensor, + } + ) + + has_composite_implicit_autograd_kernel = ( + DispatchKey.CompositeImplicitAutograd in dispatch + ) + has_composite_implicit_autograd_nested_tensor_kernel = ( + DispatchKey.CompositeImplicitAutogradNestedTensor in dispatch + ) + has_composite_explicit_autograd_kernel = ( + DispatchKey.CompositeExplicitAutograd in dispatch + ) + has_composite_explicit_autograd_non_functional_kernel = ( + DispatchKey.CompositeExplicitAutogradNonFunctional in dispatch + ) + + # We aren't going to store dispatch metadata inline in NativeFunctions; + # instead it is separately indexed by backend (so other backends can + # add more dispatch entries after the fact). Reindex the individual + # metadata by OperatorName! + backend_metadata = {k: {func.name: v} for k, v in dispatch.items()} + + # don't care if it exists or not; make it easier to use this function + # with other yaml parsers that aren't setting __line__ in the dict + e.pop("__line__", None) + if e: + raise AssertionError(f"leftover entries: {e}") + + # Asserts that we can't do in post_init, because they rely on backend-specific info + if structured_delegate is not None: + for key in STRUCTURED_DISPATCH_KEYS: + if key in dispatch: + raise AssertionError( + f"if structured_delegate, then must not have {key} in dispatch dictionary " + "(it is delegated!)" + ) + + return ( + NativeFunction( + func=func, + use_const_ref_for_mutable_tensors=use_const_ref_for_mutable_tensors, + variants=variants, + structured=structured, + structured_delegate=structured_delegate, + structured_inherits=structured_inherits, + precomputed=precomputed, + autogen=autogen, + ufunc_inner_loop=ufunc_inner_loop, + manual_kernel_registration=manual_kernel_registration, + manual_cpp_binding=manual_cpp_binding, + python_module=python_module, + category_override=category_override, + device_guard=device_guard, + device_check=device_check, + loc=loc, + cpp_no_default_args=cpp_no_default_args, + is_abstract=is_abstract, + has_composite_implicit_autograd_kernel=has_composite_implicit_autograd_kernel, + has_composite_implicit_autograd_nested_tensor_kernel=has_composite_implicit_autograd_nested_tensor_kernel, + has_composite_explicit_autograd_kernel=has_composite_explicit_autograd_kernel, + has_composite_explicit_autograd_non_functional_kernel=has_composite_explicit_autograd_non_functional_kernel, + tags=tags, + namespace=namespace, + ), + backend_metadata, + ) + + def validate_unstructured(self) -> None: + # TODO: probably better to accumulate these errors and report them all + # at once + if self.structured: + raise AssertionError( + "This function is structured, but there was " + "no valid functional variant of it." + ) + if not self.structured_delegate: + raise AssertionError( + "This function delegates to another structured out function, " + "but no valid function was found (the delegate may not exist, or it has the wrong type)" + ) + + # __post_init__ functions in dataclasses can be used to do extra + # validation after construction. + # + # Notice that we don't do any type validation here. In fact, we + # rely exclusively on mypy to check if you've done types correctly! + # Validation is for nontrivial invariants that cannot be (conveniently) + # encoded in the type system. + def __post_init__(self) -> None: + if self.func.arguments.out: + if self.variants != {Variant.function}: + raise AssertionError( + "Native functions with out arguments MUST " + "be declared with only function variant; e.g., variants: function; " + "otherwise you will tickle a Python argument binding bug " + "(which usually manifests itself as the result variable being undefined.)" + ) + if self.structured: + if self.func.kind() != SchemaKind.out: + raise AssertionError( + "Put structured field on the out= " + "variant of a function; did you mean structured_delegate?" + ) + if not self.device_guard: + raise AssertionError( + "device_guard: False is not respected by structured kernels" + ) + if self.structured_delegate: + if self.func.kind() == SchemaKind.out: + raise AssertionError( + "structured_delegate field not allowed " + "on out= functions; did you mean structured?" + ) + if not self.device_guard: + raise AssertionError( + "device_guard: False is not respected by structured kernels" + ) + # Technically, with the asserts above, this assert is impossible to + # happen + if self.structured and self.structured_delegate: + raise AssertionError( + "Cannot have both structured and structured_delegate on function" + ) + defaulted_arguments = { + a.name for a in self.func.schema_order_arguments() if a.default is not None + } + invalid_args = set.difference(self.cpp_no_default_args, defaulted_arguments) + if len(invalid_args) != 0: + raise AssertionError(f"Invalid cpp_no_default_args: {invalid_args}") + if self.structured_inherits is not None: + if not self.structured: + raise AssertionError( + "structured_inherits must also imply structured: True" + ) + if str(self.func.name).startswith("_foreach"): + if self.device_check != DeviceCheckType.NoCheck: + raise AssertionError( + "foreach kernels fall back to slow path when tensor are on different devices, " + "device_check not allowed to be enabled" + ) + + # NB: if your function accidentally has rand/dropout/... in its name + # but is not actually random, feel free to amend this to special case + if ( + "rand" in str(self.func.name) + or ( + ( + "dropout" in str(self.func.name) + or any( + "dropout" in arg.name for arg in self.func.arguments.flat_all + ) + ) + # Backwards of dropout is typically deterministic + and "backward" not in str(self.func.name) + and str(self.func.name.name) != "_cudnn_init_dropout_state" + ) + or self.func.arguments.has_generator_arg() + ): + if "nondeterministic_seeded" not in self.tags: + raise AssertionError( + f"nondeterministic_seeded tag missing for {self.func.name}" + ) + + @property + def has_composite_kernel(self) -> bool: + return ( + self.has_composite_implicit_autograd_kernel + or self.has_composite_explicit_autograd_kernel + or self.has_composite_explicit_autograd_non_functional_kernel + ) or ( + self.has_composite_implicit_autograd_kernel + and self.has_composite_implicit_autograd_nested_tensor_kernel + ) + + @property + def is_view_op(self) -> bool: + rets = self.func.returns + is_non_mutating_view = len(rets) > 0 and any( + r.annotation is not None and not r.annotation.is_write for r in rets + ) + # See Note [resize_ in Functionalization] for more dtails + is_inplace_view = ( + "inplace_view" in self.tags + and str(self.func.name) != "resize_" + and str(self.func.name) != "resize_as_" + ) + is_wildcard_view = any( + inp.annotation is not None and "*" in inp.annotation.alias_set_after + for inp in self.func.schema_order_arguments() + ) + return is_non_mutating_view or is_inplace_view or is_wildcard_view + + @property + def view_schema_kind(self) -> ViewSchemaKind: + if self.is_view_op and self.func.name.name.inplace: + if "inplace_view" not in self.tags: + raise AssertionError(f"inplace_view tag missing for {self.func.name}") + return ViewSchemaKind.aliasing_inplace + if self.is_view_op: + return ViewSchemaKind.aliasing + else: + return ViewSchemaKind.non_aliasing + + @property + def root_name(self) -> str: + return self.func.name.name.base + + @property + def part_of_structured_group(self) -> bool: + return self.structured or self.structured_delegate is not None + + +class SchemaKind(Enum): + functional = auto() + inplace = auto() + out = auto() + mutable = auto() + scratch = auto() + + +# A structured kernel is guaranteed to have a functional and out variant, and +# optionally an inplace variant. +# +# NB: we create NativeFunctionsGroup *even if* the function is not +# actually annotated structured. Test the structured boolean to see if it +# actually is structured or not. +@dataclass(frozen=True) +class NativeFunctionsGroup: + functional: NativeFunction + inplace: NativeFunction | None + mutable: NativeFunction | None + out: NativeFunction + + @property + def structured(self) -> bool: + # Whether or not the operator has a meta() function. This information is backend-agnostic. + return self.out.structured + + def __post_init__(self) -> None: + test_sig: FunctionSchema = self.functional.func.signature() + for f in self.functions(): + if test_sig != f.func.signature(): + raise AssertionError( + "NativeFunctionsGroup constructed from two NativeFunctions " + f"that don't have matching signatures: {test_sig} != {f.func.signature()}" + ) + + if self.structured != f.part_of_structured_group: + raise AssertionError( + "NativeFunctionsGroup constructed from structured and unstructured " + f"functions: {self.out.func.name} and {f.func.name}" + ) + if self.functional.func.kind() != SchemaKind.functional: + raise AssertionError( + f"functional.func.kind() is {self.functional.func.kind()}, expected SchemaKind.functional" + ) + if self.out.func.kind() != SchemaKind.out: + raise AssertionError( + f"out.func.kind() is {self.out.func.kind()}, expected SchemaKind.out" + ) + if self.functional.namespace != self.out.namespace: + raise AssertionError( + f"functional.namespace ({self.functional.namespace}) != out.namespace ({self.out.namespace})" + ) + if self.inplace is not None: + if self.inplace.func.kind() != SchemaKind.inplace: + raise AssertionError( + f"inplace.func.kind() is {self.inplace.func.kind()}, expected SchemaKind.inplace" + ) + if self.inplace.namespace != self.functional.namespace: + raise AssertionError( + f"inplace.namespace ({self.inplace.namespace}) != functional.namespace ({self.functional.namespace})" + ) + + if self.mutable is not None: + if self.mutable.func.kind() != SchemaKind.mutable: + raise AssertionError( + f"mutable.func.kind() is {self.mutable.func.kind()}, expected SchemaKind.mutable" + ) + if self.mutable.namespace != self.functional.namespace: + raise AssertionError( + f"mutable.namespace ({self.mutable.namespace}) != functional.namespace ({self.functional.namespace})" + ) + # See Note [Overload Ambiguity With Functional Variants] + if not self.functional.func.name.name.functional_overload: + raise AssertionError( + "functional.func.name.name.functional_overload must be True when mutable is not None" + ) + + if self.structured: + # For now, structured composite kernels are not supported (need some + # design work to figure out how to make the composite case work) + if ( + self.out.has_composite_implicit_autograd_kernel + or self.out.has_composite_implicit_autograd_nested_tensor_kernel + ): + raise AssertionError("structured composite kernels are not supported") + + if self.functional.structured_delegate != self.out.func.name: + raise AssertionError( + f"{self.functional.func.name} delegates to {self.functional.structured_delegate} " + f"but its actual delegate is {self.out.func.name}" + ) + if self.inplace is not None: + if self.inplace.structured_delegate != self.out.func.name: + raise AssertionError( + f"{self.inplace.func.name} delegates to {self.inplace.structured_delegate} " + f"but its actual delegate is {self.out.func.name}" + ) + + generated_fns = sorted( + [str(f.func.name) for f in self.functions() if "generated" in f.tags] + ) + generated_fns_str = ", ".join(str(x) for x in generated_fns) + expected_generated_fns: set[str] = set() + for f in self.functions(): + expected_generated_fns.update(str(op) for op in f.autogen) + expected_generated_fns_str = ", ".join( + str(x) for x in sorted(expected_generated_fns) + ) + if len(expected_generated_fns) == 0 and len(generated_fns) > 0: + raise RuntimeError( + f"The codegen expects to be able to generate '{generated_fns_str}'." + " In order to generate them however, we expect them to be called out explicitly in the yaml." + f" Please add an 'autogen: {generated_fns_str}' line to the entry for {str(f.func.name)}" + ) + if expected_generated_fns_str != generated_fns_str: + raise RuntimeError( + f"The codegen expects to be able to generate '{generated_fns_str}'." + f" To do so, it expects a line: 'autogen: {generated_fns_str}'." + f" Instead, it found 'autogen: {expected_generated_fns_str}'" + ) + + def signature(self) -> FunctionSchema: + return self.out.func.signature() + + def functions(self) -> Iterator[NativeFunction]: + yield self.functional + yield self.out + if self.inplace is not None: + yield self.inplace + if self.mutable is not None: + yield self.mutable + + @property + def root_name(self) -> str: + return self.functional.root_name + + @staticmethod + def from_dict(d: dict[SchemaKind, NativeFunction]) -> NativeFunctionsGroup | None: + if not d: + raise AssertionError("from_dict called with empty dict") + if len(d) == 1: + return None + d = dict(d) # non-destructive updates please + functional = d.pop(SchemaKind.functional, None) + inplace = d.pop(SchemaKind.inplace, None) + mutable = d.pop(SchemaKind.mutable, None) + out = d.pop(SchemaKind.out, None) + if d: + raise AssertionError(f"unexpected keys in dict: {d}") + if functional is None: + raise AssertionError("functional variant is required") + # There are a few operators which only have functional/inplace variants; + # these don't count as structured for our purposes here + if out is None: + return None + # assuming all variants have the same namespace + return NativeFunctionsGroup( + functional=functional, + inplace=inplace, + mutable=mutable, + out=out, + ) + + +@dataclass(frozen=True) +class BackendMetadata: + # The name of the backend kernel, for a given operator + # for in-tree backends. These names come directly from the 'dispatch" field + # in native_functions.yaml. The dispatch entry is optional; in that + # case, that is equivalent to having written: + # + # dispatch: + # CompositeImplicitAutograd: $operator_name + kernel: str + # Whether or not the operator has a structured kernel implemented, for this particular backend. + # For in-tree backends, they all have the same value for structured- this is listed + # in native_functions.yaml. + # However, external backends like XLA can indendently toggle which ops are structured. + structured: bool + + # The namespace for kernels, default value: DEFAULT_KERNEL_NAMESPACE + cpp_namespace: str + + def supports_symint(self) -> bool: + return "_symint" in self.kernel + + +@dataclass(frozen=True) +class UfuncInnerLoop: + name: str + supported_dtypes: OrderedSet[ScalarType] + # key is stored here because it affects the semantics of name, + # so its helpful to have them together for further processing + ufunc_key: UfuncKey + + @staticmethod + def parse(value: str, ufunc_key: UfuncKey) -> UfuncInnerLoop: + name, supported_dtypes_str = value.split(" ", 1) + if supported_dtypes_str[0] != "(": + raise AssertionError( + f"expected '(' at start of supported_dtypes, got: {supported_dtypes_str}" + ) + if supported_dtypes_str[-1] != ")": + raise AssertionError( + f"expected ')' at end of supported_dtypes, got: {supported_dtypes_str}" + ) + supported_dtypes: OrderedSet[ScalarType] = OrderedSet() + for k in supported_dtypes_str[1:-1].split(", "): + supported_dtypes |= ScalarType.parse_set(k) + return UfuncInnerLoop( + name=name, supported_dtypes=supported_dtypes, ufunc_key=ufunc_key + ) + + +# BackendIndex represents a backend. +# The BackendIndex encodes per-operator information that is potentially different +# for each backend. The most obvious example is the name of the kernel +# (the 'dispatch' entry in native_functions.yaml). +# However, there can be other examples of different backends having different information. +# External backends can choose to opt their kernels to be structured independently from in-tree backends, +# which means that this information isn't inherently tied to a NativeFunction- it's different per backend. +@dataclass(frozen=True) +class BackendIndex: + dispatch_key: DispatchKey + # Mainly important for structured kernels, this determines which variant in the operator group is used to implement the others. + # All in-tree ops use out kernels, while XLA uses functional kernels. + use_out_as_primary: bool + # Whether the backend requires a device guard, and device checks. + # For in-tree backends, this is currently just CUDA/HIP + # For out-of-tree backends, this is currently just Intel XPU + device_guard: bool + # Whether the backend is in-tree (CPU/CUDA) or out-of-tree (XLA) + external: bool + # Other backend-specific information that is on a per-operator basis + index: dict[OperatorName, BackendMetadata] + + @staticmethod + def grow_index( + parent_index: dict[DispatchKey, dict[OperatorName, BackendMetadata]], + child_index: dict[DispatchKey, dict[OperatorName, BackendMetadata]], + ) -> None: + for k, v in child_index.items(): + for op_name, metadata in v.items(): + if op_name in parent_index[k]: + raise AssertionError( + f"duplicate operator {op_name} for dispatch key {k}" + ) + parent_index[k][op_name] = metadata + + def primary(self, g: NativeFunctionsGroup) -> NativeFunction: + if self.use_out_as_primary: + return g.out + else: + return g.functional + + def has_kernel(self, g: NativeFunction | NativeFunctionsGroup) -> bool: + m = self.get_kernel(g) + return m is not None + + def get_kernel( + self, g: NativeFunction | NativeFunctionsGroup + ) -> BackendMetadata | None: + if isinstance(g, NativeFunction): + f = g + elif isinstance(g, NativeFunctionsGroup): + f = self.primary(g) + else: + assert_never(g) + if f.func.name not in self.index: + return None + return self.index[f.func.name] + + def native_function_class_name(self) -> str | None: + if self.external: + return f"{str(self.dispatch_key)}NativeFunctions" + else: + # TODO: This discrepancy isn't required; we could also generated + # a class for in-tree kernels. It'll just require carefully + # updating every kernel definition + callsite of every in-tree aten kernel. + return None + + +# The function schema is undoubtedly the most important data structure +# in all of the codegen, as it defines the type signature for operators, +# and most of the code generation we do is type directed (e.g., look at +# the types, decide what to do. Think about how we code generate +# C++ function stubs!) +# +# We will also see in this class the general structure for how we model +# data in this code generation. A few notable properties to point out +# ahead of time: +# +# - These dataclasses are a *lossless* representation of the strings +# they are parsed from. In fact, we assert that given the +# information stored in the dataclass, we can exactly reconstruct +# the string we parsed from (and assert this inside the parse +# definition). There are a few reasons for this: +# +# - If you find that it is difficult to reconstruct the string +# given a dataclass, that is a clue that you are data +# representation is wrong. +# +# - It helps ensure that all relevant information is present +# in the dataclass, so that downstream users aren't tempted +# to reparse the original string to get some information +# that was omitted. +# +# - It forces you to represent the data in-memory in the same way +# it is recorded textually, which makes the dataclasses easier +# to understand for someone who is familiar with the +# textual format. (As a tradeoff, it means you have to model +# the syntax, even when it is inconvenient. But maybe that means +# the syntax is bad!) If you don't understand the internal +# representation, go look at the printing code to see how +# it maps onto the surface syntax! +# +# - It makes it easy to test the parsing code, as parsing code +# that is inconsistent with the string code will fail early +# and loudly. (As a tradeoff, it makes the parsing code a bit +# brittle (in particular, with trivial whitespace changes you +# are likely to trigger an assert error). +# +# In general, try to make the __str__ code as simple as possible +# (even at the cost of more complex parsing logic.) Additionally, +# try to minimize redundancy in data representation. (Precomputed +# fields are OK though: they are defined as a simple function on +# the canonical representation in question.) +# +# - These dataclasses are all frozen; once constructed their +# values never change. This makes it easy to tell where any +# given data came from: just look to the constructor. As a +# tradeoff, you can't easily "decorate" a schema with extra +# information from a post-facto analysis. We impose this +# restriction to make these structures more understandable. +# +@dataclass(frozen=True) +class FunctionSchema: + # The name of the operator this function schema describes. + name: OperatorName + + arguments: Arguments + + # TODO: Need to handle collisions with argument names at some point + returns: tuple[Return, ...] + + @property + def is_mutable(self) -> bool: + def is_write(arg: Argument) -> bool: + if arg.annotation is None: + return False + return arg.annotation.is_write + + # Corresponds to torch._C._FunctionSchema.is_mutable + # See aten/src/ATen/core/function_schema.h (keep these in sync) + return any(is_write(a) for a in self.arguments.flat_all) + + def schema_order_arguments(self) -> Iterator[Argument]: + return itertools.chain( + self.arguments.flat_positional, + self.arguments.flat_kwarg_only, + self.arguments.out, + ) + + decl_re = re.compile(r"(?P[^\(]+)\((?P.*)\) -> (?P.*)") + + @staticmethod + def parse(func: str) -> FunctionSchema: + # We should probably get a proper parser here + decls = FunctionSchema.decl_re.findall(func) + if len(decls) != 1: + raise AssertionError(f"Invalid function schema: {func}") + ops, args, return_decl = decls[0] + name = OperatorName.parse(ops) + arguments = Arguments.parse(args) + returns = parse_returns(return_decl) + r = FunctionSchema(name=name, arguments=arguments, returns=returns) + if str(r) != func: + raise AssertionError(f"{str(r)} != {func}") + return r + + def returns_are_aliased(self) -> bool: + # We assert earlier that schemas can't have a mix of aliased and non-aliased returns + return any( + r + for r in self.returns + if r.annotation is not None and r.annotation.is_write + ) + + def __post_init__(self) -> None: + for arg, ret in zip(self.arguments.out, self.returns): + if arg.annotation != ret.annotation: + raise AssertionError( + "Out arguments must have matching return Tensor; furthermore, " + f"the ith-argument needs to correspond to the ith return. " + f"arg.annotation={arg.annotation}, ret.annotation={ret.annotation}" + ) + # We also enforce that if you have any mutable, positional args, then they are not returned. + # This makes it easier to group these functions properly with their functional/out= counterparts. + for a in self.arguments.post_self_positional_mutable: + if any(a.annotation == r.annotation for r in self.returns): + raise AssertionError( + f"If you have a schema with mutable positional args, we expect them to not be returned. schema: {str(self)}" + ) + # Invariant: we expect out arguments to appear as keyword arguments in the schema. + # This means that all mutable returns should be aliased to a keyword argument + # (except for "self", which we explicitly don't treat as an out argument because of its use in methods) + # See Note [is_out_fn] + out_and_self = list(self.arguments.out) + [ + arg for arg in self.arguments.flat_positional if arg.name == "self" + ] + mutable_returns = [ + ret + for ret in self.returns + if ret.annotation is not None and ret.annotation.is_write + ] + immutable_returns = [ + ret + for ret in self.returns + if ret.annotation is None or not ret.annotation.is_write + ] + # Some assertions: We don't want any functions with a return type of "-> (Tensor(a!), Tensor)", + # because: + # (1) It's more annoying to handle properly + # (2) It's unnecessary - you can't method-chain on the first (mutated) output because it's part of a tuple. + # Instead, we expect the (a!) argument to not be returned. + if not (len(mutable_returns) == 0 or len(immutable_returns) == 0): + raise AssertionError( + f"NativeFunctions must have either only mutable returns, or only immutable returns. Found: {str(self)}" + ) + for ret in mutable_returns: + if not any(ret.annotation == arg.annotation for arg in out_and_self): + raise AssertionError( + 'All mutable returns must be aliased either to a keyword argument, or to "self". ' + "Did you forget to mark an out argument as keyword-only?" + ) + if self.arguments.out: + # out= ops that return their mutable inputs are only really useful for method chaining. + # And method chaining is only really useful if the thing you're returning is a plain Tensor. + # So ideally, we'd enforce that out= ops with a single plain mutable tensor should return the tensor, + # and all other types of out= op schemas should return void. + # There are a bunch of existing out= ops that return tuples of tensors though, so we're stuck with allowing that. + if any(a.type != BaseType(BaseTy.Tensor) for a in self.arguments.out): + if len(self.returns) != 0: + raise AssertionError( + "out= ops that accept tensor lists as out arguments " + "are expected to have no return type (since you can't do method chaining on them)" + ) + else: + # mutable keyword arguments whose name has _scratch_ prefix are + # scratch tensors for memory planning and should not be returned + non_scratch_out_args = len( + [ + arg + for arg in self.arguments.out + if not arg.name.startswith("_scratch_") + ] + ) + if non_scratch_out_args != len(self.returns): + raise AssertionError( + f"Must return as many arguments as there are out arguments, or no return at all. " + f"Got {non_scratch_out_args} non-scratch out args and {len(self.returns)} returns" + ) + + if self.name.name.inplace: + self_a = self.arguments.self_arg + if not ( + self_a + and self_a.argument.annotation + and self_a.argument.annotation.is_write + ): + raise AssertionError( + f"Inplace op {self.name} must have a self argument with a mutable annotation" + ) + if self_a.argument.type == BaseType(BaseTy.Tensor): + # All inplace ops with an ordinary `Tensor self` argument should return self, + # to allow for method chaining. + if not ( + len(self.returns) == 1 + and self.returns[0].annotation == self_a.argument.annotation + ): + raise AssertionError( + f"Inplace op {self.name} with Tensor self must return self" + ) + else: + # You can't method chain on non-tensor self arguments though (like a list[Tensor]) + # so in all other cases we expect the return type to be none. + if len(self.returns) != 0: + raise AssertionError( + f"Inplace op {self.name} with non-Tensor self must have no returns" + ) + + if self.arguments.tensor_options is not None: + if self.kind() != SchemaKind.functional: + raise AssertionError( + "Found an operator that is not functional or out variant, but has tensor options arguments." + "This is not allowed- tensor options arguments are only allowed for factory functions." + f"schema: {str(self)}" + ) + if self.is_functional_fn(): + if self.kind() != SchemaKind.functional: + raise AssertionError( + "Found an operator that is not functional, but its overload contains the string 'functional'." + "This is a special keyword in the codegen, please use a different overload name." + f"schema: {str(self)}" + ) + + def is_functional_fn(self) -> bool: + return "functional" in self.name.overload_name + + def is_out_fn(self) -> bool: + # Note [is_out_fn] + # + # out functions are the variants which take an explicit out= argument + # to populate into. We need to know if a schema corresponds to an + # out function for several reasons: + # + # - They codegen differently in C++ API + # - codegen to at::add_out rather than at::add + # - out argument is moved to front of C++ argument list + # + # out functions are DEFINED to be any function with a keyword-only + # argument that is mutable. In principle, this could lead to a + # false positive if you define a function that mutates a + # kwarg only argument, but this isn't the "true" output of this + # function. A more robust definition that would work in this + # case would also look at: + # + # - The output types. Out functions take in the arguments + # they mutate and then return them again; this is sort + # of "definitionally" what makes something an out function. + # Historically, we DO check this for consistency. + # - Correspondence with pure variant. An out function + # should have a signature equivalent to its pure variant, + # but just with extra kwargs for the output elements. This + # is difficult to actually check for and historically + # we only do this check in tools/ + return bool(self.arguments.out) + + def kind(self) -> SchemaKind: + """ + What kind of schema is this? A functional schema is one + that returns a newly allocated output; an inplace schema + modifies the self argument inplace; an out schema writes + the result into an explicitly provided out argument. + """ + is_out = bool(self.arguments.out) + is_scratch = bool( + [arg for arg in self.arguments.out if arg.name.startswith("_scratch_")] + ) + is_inplace = self.name.name.inplace + is_mutable = any( + a.annotation is not None and a.annotation.is_write + for a in self.arguments.post_self_positional + ) + if is_out and is_inplace: + raise AssertionError("A schema cannot be both out= and inplace") + # out= and inplace schemas can also have post_self_positional mutable args, + # but we give precedence to out= and inplace when deciding the schema kind. + # Tradeoff: we probably don't want to have to teach codegen that looks at inplace ops + # to also worry about mutable post_self_positional arguments, + # but it seems like a much bigger lift to classify them has having a new schema kind. + # The number of ops that fit in this strange category is small enough that + # we can probably manually write code for them instead of forcing the codegen to handle them. + if is_inplace: + return SchemaKind.inplace + elif is_scratch: + if not is_out: + raise AssertionError( + "invariant: all scratch operators are expected to be out= operators too" + ) + return SchemaKind.scratch + elif is_out: + if is_scratch: + raise AssertionError( + "We should not categorize a scratch op as an out variant. Check if the order of if statements are expected!" + ) + return SchemaKind.out + elif is_mutable: + return SchemaKind.mutable + else: + return SchemaKind.functional + + # For every return: + # - If the return aliases an input, we return the input name + # - Otherwise, we return None. + # If return names were enforced to be consistent with aliasing information, then we wouldn't need this. + def aliased_return_names(self) -> list[str | None]: + outs: list[str | None] = [] + for r in self.returns: + aliased_args = [ + a + for a in self.arguments.flat_all + if a.annotation is not None and a.annotation == r.annotation + ] + if len(aliased_args) == 0: + outs.append(None) + elif len(aliased_args) == 1: + outs.append(aliased_args[0].name) + else: + aliased_names = ", ".join(a.name for a in aliased_args) + raise AssertionError( + f"Found a return ({r.name})that aliases multiple inputs ({aliased_names})" + ) + return outs + + def signature( + self, + *, + strip_default: bool = False, + strip_view_copy_name: bool = False, + keep_return_names: bool = False, + ) -> FunctionSchema: + """ + Certain schemas are 'related', in that they are simply + inplace/out/functional versions of the same function. This method + factors these schemas into the "core" functional signature which + is equal across all versions. + + Here is what normalization happens to the schema to convert + it to a signature: + - The overload name is stripped (name is retained, since + it expresses semantic content about what the function does) + - Inplace is set False + - Out arguments are stripped + - Mutable post_self_positional args are converted to returns + - Mutability annotations are stripped (this is sound + because you cannot overload on mutability annotation) + - Return names are stripped since they are not overloadable and + some variants have return names but some not + - TensorOptions are dropped + because out= variants of factory functions don't include them + (and we want to be able to pair up factory functions with their out variants) + + Finally, we want to be able to pair up related "view" and their + corresponding "view_copy" operators. We do this by optionally + stripping the trailing "_copy" from the base name. + + Example of a mutable op before and after: + + f.func (Mutable operator): + _fused_moving_avg_obs_fq_helper(Tensor self, Tensor observer_on, Tensor fake_quant_on, Tensor(a!) running_min, Tensor(b!) running_max, Tensor(c!) scale, Tensor(d!) zero_point, float averaging_const, int quant_min, int quant_max, int ch_axis, bool per_row_fake_quant=False, bool symmetric_quant=False) -> (Tensor output, Tensor mask) # noqa: B950 + + f.func (Corresponding functional operator): + _fused_moving_avg_obs_fq_helper.functional(Tensor self, Tensor observer_on, Tensor fake_quant_on, Tensor running_min, Tensor running_max, Tensor scale, Tensor zero_point, float averaging_const, int quant_min, int quant_max, int ch_axis, bool per_row_fake_quant=False, bool symmetric_quant=False) -> (Tensor output, Tensor mask, Tensor running_min_out, Tensor running_max_out, Tensor scale_out, Tensor zero_point_out) # noqa: B950 + + f.func.signature() output: + _fused_moving_avg_obs_fq_helper(Tensor self, Tensor observer_on, Tensor fake_quant_on, Tensor running_min, Tensor running_max, Tensor scale, Tensor zero_point, float averaging_const, int quant_min, int quant_max, int ch_axis, bool per_row_fake_quant=False, bool symmetric_quant=False) -> (Tensor, Tensor, Tensor, Tensor, Tensor, Tensor) # noqa: B950 + """ + + def strip_ret_annotation(r: Return) -> Return: + return Return( + name=r.name if keep_return_names else None, + type=r.type, + annotation=None, + ) + + base_name = self.name.name.base + if strip_view_copy_name: + if base_name.endswith("_copy"): + base_name = base_name.replace("_copy", "") + elif base_name.endswith("_scatter"): + base_name = base_name.replace("scatter", "inverse") + + # find mutable inputs that are not originally returned, and convert them to returns + returns_from_mutable_inputs = tuple( + # When we're grouping functions we strip the return names, + # but when we're generating the actual functional variants then we follow + # a convention for what to name the returns + Return( + name=f"{a.name}_out" if keep_return_names else None, + type=a.type, + annotation=None, + ) + for a in itertools.chain( + # Order is important here (otherwise e.g. inplace with mutable args + # and out= with mutable args won't have the same signature) + ( + [self.arguments.self_arg.argument] + if self.arguments.self_arg is not None + else [] + ), + self.arguments.out, + self.arguments.post_self_positional, + ) + if a.annotation is not None + and a.annotation.is_write + and not any(a.annotation == r.annotation for r in self.returns) + ) + original_returns = tuple(map(strip_ret_annotation, self.returns)) + # Ordering is important here. We expect the "mutable input" returns to come last. + returns = original_returns + returns_from_mutable_inputs + + args_sig = self.arguments.signature(strip_default=strip_default) + # See Note [bernoulli.p schema] + if str(self.name) == "bernoulli.p": + args_sig = Arguments.parse(str(args_sig).replace("float p", "float p=0.5")) + + return FunctionSchema( + name=OperatorName( + name=BaseOperatorName( + base=base_name, + inplace=False, + dunder_method=self.name.name.dunder_method, + ), + overload_name="", # stripped + ), + arguments=args_sig, + returns=returns, + ) + + def view_signature(self) -> FunctionSchema: + return self.signature(strip_view_copy_name=True) + + def with_name(self, name: OperatorName) -> FunctionSchema: + return FunctionSchema( + name=name, + arguments=self.arguments, + returns=self.returns, + ) + + @property + def modifies_arguments(self) -> bool: + return self.kind() in [SchemaKind.inplace, SchemaKind.out, SchemaKind.mutable] + + def has_symint(self) -> bool: + return self.arguments.has_symint_arg() + + def __str__(self) -> str: + all_arguments_str = str(self.arguments) + if len(self.returns) == 1: + returns = str(self.returns[0]) # omit parentheses + else: + returns = "(" + ", ".join(map(str, self.returns)) + ")" + return f"{self.name}({all_arguments_str}) -> {returns}" + + +# Here is the rest of the data model, described more briefly. + + +# Simplified version for what actually shows up in built-ins. +# Look at alias_info.h for expanded syntax. If you need the structure, +# you also need to make this structure recursive so it can be lined +# up with the type components too. For primitives this isn't really +# necessary +@dataclass(frozen=True) +class Annotation: + # Typically only has one element. Not actually a set so + # we can conveniently assume it is canonically ordered + alias_set: tuple[str, ...] + is_write: bool + alias_set_after: tuple[str, ...] + + @staticmethod + def parse(ann: str) -> Annotation: + # TODO: implement a proper parser if this gets more ugly + # Regex Explanation: + # Example: "a! -> a|b" + # Group #1: alias before optional '|', required. Matches the first + # character 'a' in the example + # Group #2: optional alias set after optional '|', matches empty string + # in the example + # Group #3: optional "is write" flag, matches '!' in the example. + # Group #4: optional section containing arrow, matches " -> a|b" in the + # example. + # Group #5: optional alias after set, supports wildcard, matches "a|b" + # in the example. + # Group #6: optional sub-section of alias after set, matches "|b" in the + # example. + m = re.match(r"^([a-z])(\|[a-z])*(!?)( -> (\*|[a-z](\|[a-z])*))?$", ann) + + if m is None: + raise AssertionError(f"unrecognized alias annotation {ann}") + before_alias = m.group(1) + (m.group(2) if m.group(2) else "") + alias_set = tuple(before_alias.split("|")) + is_write = m.group(3) == "!" + if is_write and len(alias_set) > 1: + raise AssertionError( + f"alias set larger than 1 is not mutable, got {ann} instead." + ) + after_set = tuple(m.group(5).split("|")) if m.group(5) else () + if len(before_alias) > 1 and len(after_set) > 1: + raise AssertionError( + f"before alias set and after alias set cannot be larger than 1 at the same time, got {ann} instead." + ) + r = Annotation( + alias_set=alias_set, is_write=is_write, alias_set_after=after_set + ) + if str(r) != ann: + raise AssertionError(f"{r} != {ann}") + return r + + def __str__(self) -> str: + alias_set = "|".join(self.alias_set) + if self.is_write: + alias_set = f"{alias_set}!" + alias_set_after = "|".join(self.alias_set_after) + if alias_set_after: + alias_set = f"{alias_set} -> {alias_set_after}" + return alias_set + + +# The base class for the type system. This is also loosely modeled +# off of jit_type.h, but we've simplified the hierarchy to focus +# in on the aspects of the type system that matter for code generation +# (for example, there's no SingleElementType subclass anymore). +# You never actually construct a Type; usually it's going to be one +# of the subclasses. If Python had ADTs this would be one! +@dataclass(frozen=True) +class Type: + @staticmethod + def parse(t: str) -> Type: + r = Type._parse(t) + if str(r) != t: + raise AssertionError(f"{r} != {t}") + return r + + @staticmethod + def _parse(t: str) -> Type: + m = re.match(r"^(.+)\?$", t) + if m is not None: + return OptionalType(Type.parse(m.group(1))) + m = re.match(r"^(.+)\[([0-9]+)?\]$", t) + if m is not None: + size = int(m.group(2)) if m.group(2) is not None else None + return ListType(elem=Type.parse(m.group(1)), size=size) + + # '__torch__.torch.classes.' is the prefix for custom class + m = re.match(r"^__torch__\.torch\.classes\.([a-zA-Z0-9_.]+)$", t) + if m is not None: + return CustomClassType(m.group(1)) + try: + return BaseType(BaseTy[t]) + except KeyError as e: + raise RuntimeError(f"unrecognized type {t}") from e + + def __str__(self) -> str: + raise NotImplementedError + + # WARNING: These concepts are not very well-defined. For example, + # is "int?" nullable? How about "int?[]". They are defined + # so we can conveniently generate legacy Declarations.yaml but + # really we should probably just remove these at some point + + def is_base_ty_like(self, base_ty: BaseTy) -> bool: + raise NotImplementedError + + def is_tensor_like(self) -> bool: + return self.is_base_ty_like(BaseTy.Tensor) + + def is_generator_like(self) -> bool: + return self.is_base_ty_like(BaseTy.Generator) + + def is_symint_like(self) -> bool: + return self.is_base_ty_like(BaseTy.SymInt) + + def is_nullable(self) -> bool: + raise NotImplementedError + + def is_list_like(self) -> ListType | None: + raise NotImplementedError + + +# Base types are simple, atomic types with no further structure +class BaseTy(Enum): + Generator = auto() + ScalarType = auto() + Tensor = auto() + int = auto() + Dimname = auto() + DimVector = auto() + float = auto() + str = auto() + bool = auto() + Layout = auto() + Device = auto() + DeviceIndex = auto() + Scalar = auto() + MemoryFormat = auto() + QScheme = auto() + Storage = auto() + Stream = auto() + SymInt = auto() + SymBool = auto() + GraphModule = auto() + + +@dataclass(frozen=True) +class BaseType(Type): + name: BaseTy + + def __str__(self) -> str: + return f"{self.name.name}" + + def is_base_ty_like(self, base_ty: BaseTy) -> bool: + return self.name == base_ty + + def is_nullable(self) -> bool: + return False + + def is_list_like(self) -> ListType | None: + return None + + def is_symint_like(self) -> bool: + return self.name == BaseTy.SymInt + + +# Optional types may be specified, or may also be validly given None +@dataclass(frozen=True) +class OptionalType(Type): + elem: Type + + def __str__(self) -> str: + return f"{self.elem}?" + + def is_base_ty_like(self, base_ty: BaseTy) -> bool: + return self.elem.is_base_ty_like(base_ty) + + def is_symint_like(self) -> bool: + return self.elem.is_symint_like() + + def is_nullable(self) -> bool: + return True + + def is_list_like(self) -> ListType | None: + return self.elem.is_list_like() + + +# A type representing a PyTorch custom class +@dataclass(frozen=True) +class CustomClassType(Type): + class_name: str + + def __str__(self) -> str: + """ + Return the class name will prefix __torch__.torch.classes + """ + return f"__torch__.torch.classes.{self.class_name}" + + def is_base_ty_like(self, base_ty: BaseTy) -> bool: + return False + + def is_symint_like(self) -> bool: + return False + + def is_nullable(self) -> bool: + """ + Assume a custom class is not nullable. + """ + return False + + def is_list_like(self) -> ListType | None: + return None + + +# List types specify that we may have multiples of an element. We +# also support explicit sizes on list types, but these have +# some nontrivial semantics! (However, for C++ API purposes, explicit +# sizes are mostly erased from the type system.) +# +# DANGER WILL ROBINSON: C++ elaboration depends on elem type; e.g., +# int[] elaborates differently than bool[3]! +@dataclass(frozen=True) +class ListType(Type): + elem: Type + size: int | None + + def __str__(self) -> str: + size = f"{self.size}" if self.size else "" + return f"{self.elem}[{size}]" + + def is_base_ty_like(self, base_ty: BaseTy) -> bool: + return self.elem.is_base_ty_like(base_ty) + + def is_symint_like(self) -> bool: + return self.elem.is_symint_like() + + def is_nullable(self) -> bool: + return self.elem.is_nullable() + + def is_list_like(self) -> ListType | None: + return self + + +@dataclass(frozen=True) +class Argument: + # NB: I didn't put kwarg_only as a boolean field here, unlike + # c10::Argument, so that printing works correctly + + name: str + type: Type + default: str | None + + # The semantics of the annotation field are a little strange. + # + # Alias annotations parametrize Tensors (since Tensors are the only things + # that can alias.) This motivates why I write Tensor(a!)? (and not, for + # example, Tensor?(a!)), because the (a!) describes aliasing on the tensor, + # which may be optional (i.e., the alias annotation should bind first to + # Tensor, before the optional postfix annotation). + # + # However, despite being a property of Tensor, we (and c10::Argument) + # store the annotation at the top level of the Argument, rather than + # inside the embedded Tensor type. In the C++ version of this + # class, we then go through great lengths to mimic the type + # structure in the annotation structure so we can correlate + # annotations with types. + # + # Now, it turns out, in all applications in code generation, the + # structure of annotated types is very simple. So we just hard + # code it here. But if we ever do get anything more complex, this + # model will have to change! + annotation: Annotation | None + + @property + def alias_info(self) -> Annotation | None: + return self.annotation + + @staticmethod + def parse(arg: str) -> Argument: + name: str + default: str | None + if " " not in arg: + raise AssertionError(f"illegal argument '{arg}'") + if "=" in arg: + if arg.count("=") != 1: + raise AssertionError(f"illegal argument with default value: '{arg}'") + type_and_annot_and_name, default = arg.split("=") + type_and_annot, name = type_and_annot_and_name.rsplit(" ", 1) + name_and_default = f"{name}={default}" + else: + type_and_annot, name_and_default = arg.rsplit(" ", 1) + name = name_and_default + default = None + # TODO: deduplicate annotation matching with Return + match = re.match(r"Tensor\((.+)\)(.*)", type_and_annot) + annotation: Annotation | None + if match: + # If you update this, make sure the __str__ still works too + if match.group(2) not in ["", "?", "[]"]: + raise AssertionError( + f"unrecognized alias analysis form with Tensor: {match.group(2)}" + ) + type_s = "Tensor" + match.group(2) + annotation = Annotation.parse(match.group(1)) + else: + type_s = type_and_annot + annotation = None + type = Type.parse(type_s) + r = Argument( + name=name, + type=type, + default=default, + annotation=annotation, + ) + if str(r) != arg: + raise AssertionError(f"{str(r)} != {arg}") + return r + + @property + def is_write(self) -> bool: + return self.annotation is not None and self.annotation.is_write + + def __str__(self) -> str: + type = f"{self.type}" + if self.annotation: + if type not in ["Tensor", "Tensor?", "Tensor[]"]: + raise AssertionError(f"annotation on non-Tensor type: {type}") + type = type.replace("Tensor", f"Tensor({self.annotation})") + if self.name is None: + return type + else: + mb_default = "" + if self.default: + mb_default = f"={self.default}" + return f"{type} {self.name}{mb_default}" + + +@dataclass(frozen=True) +class Return: + name: str | None + type: Type + annotation: Annotation | None + + @property + def alias_info(self) -> Annotation | None: + return self.annotation + + @staticmethod + def parse(arg: str) -> Return: + name: str | None + if " " in arg: + type_and_annot, name = arg.rsplit(" ", 1) + else: + type_and_annot = arg + name = None + match = re.match(r"Tensor\((.+)\)(.*)", type_and_annot) + annotation: Annotation | None + if match: + # If you update this, make sure the __str__ still works too + if match.group(2) not in ["", "?", "[]"]: + raise AssertionError( + f"unrecognized alias analysis form with Tensor: {match.group(2)}" + ) + type_s = "Tensor" + match.group(2) + annotation = Annotation.parse(match.group(1)) + else: + type_s = type_and_annot + annotation = None + type = Type.parse(type_s) + r = Return( + name=name, + type=type, + annotation=annotation, + ) + if str(r) != arg: + raise AssertionError(f"{str(r)} != {arg}") + return r + + @property + def is_write(self) -> bool: + return self.annotation is not None and self.annotation.is_write + + def __str__(self) -> str: + type = f"{self.type}" + if self.annotation: + if type not in ["Tensor", "Tensor?", "Tensor[]"]: + raise AssertionError(f"annotation on non-Tensor type: {type}") + type = type.replace("Tensor", f"Tensor({self.annotation})") + if self.name is None: + return type + else: + return f"{type} {self.name}" + + +# Represents the self argument for functions that may be methods +@dataclass(frozen=True) +class SelfArgument: + argument: Argument + + +# Bundle of arguments that represent a TensorOptions. This is mostly +# relevant for the public C++ API but we bake it into the core data +# model because other APIs often have to interact with it +@dataclass(frozen=True) +class TensorOptionsArguments: + dtype: Argument + layout: Argument + device: Argument + pin_memory: Argument + + def all(self) -> Sequence[Argument]: + return [self.dtype, self.layout, self.device, self.pin_memory] + + +@dataclass(frozen=True) +class Arguments: + # pre_self_positional is usually empty, but is notably non-empty + # for where.self, where the condition argument comes before the + # self argument + pre_self_positional: tuple[Argument, ...] + self_arg: SelfArgument | None + post_self_positional: tuple[Argument, ...] + + pre_tensor_options_kwarg_only: tuple[Argument, ...] + tensor_options: TensorOptionsArguments | None + # post_tensor_options is typically memory format, which should be + # part of tensor options but isn't right now, and is usually + # placed after the tensor options arguments + post_tensor_options_kwarg_only: tuple[Argument, ...] + + # Unlike in the previous codegen, we have factored out 'out' arguments + # in the canonical representation, removing them from kwarg + # arguments. This choice is justified by numerous downstream + # transformations which treat out arguments specially; additionally, + # you can see that canonicity is not violated! + out: tuple[Argument, ...] # these are also kwarg-only + + @property + def flat_non_out(self) -> Sequence[Argument]: + ret: list[Argument] = [] + ret.extend(self.flat_positional) + ret.extend(self.flat_kwarg_only) + return ret + + @property + def flat_positional(self) -> Sequence[Argument]: + ret: list[Argument] = [] + ret.extend(self.pre_self_positional) + if self.self_arg is not None: + ret.append(self.self_arg.argument) + ret.extend(self.post_self_positional) + return ret + + @property + def post_self_positional_mutable(self) -> Sequence[Argument]: + return [a for a in self.post_self_positional if a.is_write] + + # NB: doesn't contain out arguments + @property + def flat_kwarg_only(self) -> Sequence[Argument]: + ret: list[Argument] = [] + ret.extend(self.pre_tensor_options_kwarg_only) + if self.tensor_options is not None: + ret.extend(self.tensor_options.all()) + ret.extend(self.post_tensor_options_kwarg_only) + return ret + + @property + def flat_all(self) -> Sequence[Argument]: + ret: list[Argument] = [] + ret.extend(self.flat_positional) + ret.extend(self.flat_kwarg_only) + ret.extend(self.out) + return ret + + @property + def non_out( + self, + ) -> Sequence[Argument | SelfArgument | TensorOptionsArguments]: + ret: list[Argument | SelfArgument | TensorOptionsArguments] = [] + ret.extend(self.positional) + ret.extend(self.kwarg_only) + return ret + + @property + def positional(self) -> Sequence[Argument | SelfArgument]: + ret: list[Argument | SelfArgument] = [] + ret.extend(self.pre_self_positional) + if self.self_arg is not None: + ret.append(self.self_arg) + ret.extend(self.post_self_positional) + return ret + + @property + def kwarg_only(self) -> Sequence[Argument | TensorOptionsArguments]: + ret: list[Argument | TensorOptionsArguments] = [] + ret.extend(self.pre_tensor_options_kwarg_only) + if self.tensor_options is not None: + ret.append(self.tensor_options) + ret.extend(self.post_tensor_options_kwarg_only) + return ret + + @property + def all(self) -> Sequence[Argument | SelfArgument | TensorOptionsArguments]: + ret: list[Argument | SelfArgument | TensorOptionsArguments] = [] + ret.extend(self.positional) + ret.extend(self.kwarg_only) + ret.extend(self.out) + return ret + + def mutable_arg_names(self) -> list[str]: + return [ + a.name + for a in self.flat_all + if a.annotation is not None and a.annotation.is_write + ] + + def has_tensor_arg(self) -> bool: + return any(a.type.is_tensor_like() for a in self.flat_non_out) + + def has_symint_arg(self) -> bool: + return any(a.type.is_symint_like() for a in self.flat_non_out) + + def has_generator_arg(self) -> bool: + return any(a.type.is_generator_like() for a in self.flat_non_out) + + def signature(self, *, strip_default: bool = False) -> Arguments: + # dataclasses.replace could be used here, but it is less + # type safe so for now I've opted to type everything out + def strip_arg_annotation(a: Argument) -> Argument: + return Argument( + name=a.name, + type=a.type, + default=a.default if not strip_default else None, + annotation=None, + ) + + return Arguments( + pre_self_positional=tuple( + map(strip_arg_annotation, self.pre_self_positional) + ), + self_arg=( + SelfArgument(strip_arg_annotation(self.self_arg.argument)) + if self.self_arg is not None + else None + ), + post_self_positional=tuple( + map(strip_arg_annotation, self.post_self_positional) + ), + # Since TensorOptions are dropped, the post_tensor_options_kwargs are + # converted to pre_tensor_options_kwargs + pre_tensor_options_kwarg_only=tuple( + map(strip_arg_annotation, self.pre_tensor_options_kwarg_only) + ) + + tuple(map(strip_arg_annotation, self.post_tensor_options_kwarg_only)), + # TensorOptions are dropped in signature, + # so we can pair factory functions with their out= variants. + tensor_options=None, + post_tensor_options_kwarg_only=(), + # out arguments are dropped in signature + out=(), + ) + + def remove_self_annotation(self) -> Arguments: + if self.self_arg is None: + raise AssertionError("remove_self_annotation called but self_arg is None") + return dataclasses.replace( + self, + self_arg=SelfArgument( + dataclasses.replace(self.self_arg.argument, annotation=None) + ), + ) + + def with_out_args(self, outs: list[Argument]) -> Arguments: + if len(self.out) != 0: + raise AssertionError( + f"with_out_args called but self.out is not empty: {self.out}" + ) + return dataclasses.replace( + self, + out=tuple(outs), + ) + + @staticmethod + def _preparse(args: str) -> tuple[list[Argument], list[Argument], list[Argument]]: + positional: list[Argument] = [] + kwarg_only: list[Argument] = [] + out: list[Argument] = [] + arguments_acc = positional + + # TODO: Use a real parser here; this will get bamboozled + # by signatures that contain things like std::array (note the space) + for arg in args.split(", "): + if not arg: + continue + if arg == "*": + if arguments_acc is not positional: + raise AssertionError( + "invalid syntax: kwarg-only specifier * can only occur once" + ) + arguments_acc = kwarg_only + continue + parg = Argument.parse(arg) + # Currently, we rely directly on the invariant that there are NO + # kwarg-only mutating arguments. If you want to relax this, + # we will need a more semantic way of matching that takes + # into account return arguments. In that case, you will have + # to manage out computation a level up, in FunctionSchema. See Note + # [is_out_fn] + if parg.annotation is not None and parg.annotation.is_write: + if arguments_acc is positional: + pass # do nothing + elif arguments_acc is kwarg_only: + arguments_acc = out + else: + if arguments_acc is out: + raise AssertionError( + f"non-mutable argument '{parg.name}' cannot follow mutable out arguments" + ) + arguments_acc.append(parg) + + return positional, kwarg_only, out + + @staticmethod + def parse(args: str) -> Arguments: + """ + Input: 'int x, int y, int z' + """ + + # We do this in two phases. First we parse into three + # main categories: positional, kwarg_only, out. + # Then, we reparse positional and kwarg_only to separate + # out the self argument and tensor options arguments. + + positional, kwarg_only, out = Arguments._preparse(args) + + # Split self argument + self_ix = None + for i, a in enumerate(positional): + if a.name == "self": + self_ix = i + break + pre_self_positional: list[Argument] + self_arg: SelfArgument | None + post_self_positional: list[Argument] + if self_ix is not None: + pre_self_positional = positional[:self_ix] + self_arg = SelfArgument(positional[self_ix]) + post_self_positional = positional[self_ix + 1 :] + else: + pre_self_positional = [] + self_arg = None + post_self_positional = positional + + # Group tensor options arguments + pre_tensor_options_kwarg_only: list[Argument] = [] + tensor_options: TensorOptionsArguments | None = None + post_tensor_options_kwarg_only: list[Argument] = [] + kwarg_only_acc = pre_tensor_options_kwarg_only + + def pred(name: str, ty: Type) -> Callable[[Argument], bool]: + return lambda a: a.name == name and a.type in [ty, OptionalType(ty)] + + predicates = [ # order matters + pred("dtype", Type.parse("ScalarType")), + pred("layout", Type.parse("Layout")), + pred("device", Type.parse("Device")), + pred("pin_memory", Type.parse("bool")), + ] + + i = 0 + while i < len(kwarg_only): + # If there is enough space... + if i <= len(kwarg_only) - len(predicates): + # And the next len(predicates) arguments look like TensorOptions arguments + if all( + p(a) + for p, a in zip(predicates, kwarg_only[i : i + len(predicates)]) + ): + if kwarg_only_acc is not pre_tensor_options_kwarg_only: + raise AssertionError( + "tensor options arguments can only appear once" + ) + # Group them together as one argument + tensor_options = TensorOptionsArguments( + dtype=kwarg_only[i], + layout=kwarg_only[i + 1], + device=kwarg_only[i + 2], + pin_memory=kwarg_only[i + 3], + ) + i += len(predicates) + kwarg_only_acc = post_tensor_options_kwarg_only + continue + kwarg_only_acc.append(kwarg_only[i]) + i += 1 + + return Arguments( + pre_self_positional=tuple(pre_self_positional), + self_arg=self_arg, + post_self_positional=tuple(post_self_positional), + pre_tensor_options_kwarg_only=tuple(pre_tensor_options_kwarg_only), + tensor_options=tensor_options, + post_tensor_options_kwarg_only=tuple(post_tensor_options_kwarg_only), + out=tuple(out), + ) + + def __str__(self) -> str: + all_arguments: list[str] = [] + all_arguments.extend(map(str, self.flat_positional)) + if self.flat_kwarg_only or self.out: + all_arguments.append("*") + all_arguments.extend(map(str, self.flat_kwarg_only)) + all_arguments.extend(map(str, self.out)) + return ", ".join(all_arguments) + + def __post_init__(self) -> None: + # TODO: These invariants are weirdly asymmetric? + # TODO: Fancier types? + if self.self_arg is None: + if self.pre_self_positional: + raise AssertionError( + "pre_self_positional is non-empty but self_arg is None" + ) + if self.tensor_options is None: + if self.post_tensor_options_kwarg_only: + raise AssertionError( + "post_tensor_options_kwarg_only is non-empty but tensor_options is None" + ) + + # We don't allow any of the following to have argument annotations, + # to keep things simple. + mutable_pre_self_positionals = [ + a + for a in self.pre_self_positional + if a.annotation is not None and a.annotation.is_write + ] + if len(mutable_pre_self_positionals) != 0: + raise AssertionError( + f"mutable pre_self_positional arguments are not currently supported in the schema: {mutable_pre_self_positionals}" + ) + + +# Names that validly are __iXXX__ indicating inplace operations. +# Taken from https://www.python.org/dev/peps/pep-0203/#new-methods +# NB: PyTorch hasn't actually implemented all of these +AUGMENTED_ASSIGNMENT_NAMES = [ + "add", + "sub", + "mul", + "div", + "mod", + "pow", + "lshift", + "rshift", + "and", + "xor", + "or", +] + + +# A BaseOperatorName is what we think of the operator name, without +# the overload name. Unusually, we don't represent this as just a +# string; instead, we directly represent a few important semantic +# bits of information we derive from the string: namely whether +# or not it's inplace (add_) and whether or not it's a double-underscore +# method (__add__) +@dataclass(frozen=True) +class BaseOperatorName: + base: str + inplace: bool + dunder_method: bool + # Note [Overload Ambiguity With Functional Variants] + # A handful of operators have both a "mutable" and a "functional" variant. + # (native_batch_norm is a good example, although this isn't the case today). + # For those operators, the mutable and functional variant take in the same set of + # arguments, but have different alias annotations. + # this makes it ambiguous when you try to resolve an OverloadPacket into an overload, + # given a set of input arguments. + # + # So instead of making the "functional" variant in this case a real overload, e.g: + # native_batch_norm (mutable variant) + # native_batch_norm.functional (functional variant) + # we make it a new base operator, + # native_batch_norm_functional (functional variant) + # + # In an ideal world, we would probably invert this so the operators were: + # native_batch_norm.mutable (mutable variant) + # native_batch_norm (functional variant) + # + # Doing that is BC-breaking though, so we're stuck with the above modeling. + functional_overload: bool = False + + # NB: We don't officially support namespace in FunctionSchema, we treat this prefix + # as part of the base operator name, for __str__() to consume. + # The canonical input (from the rest of the infra) will not contain namespace, but + # we have a usecase in ExecuTorch where we want to support BaseOperatorName with namespace. + namespace: str | None = None + + @staticmethod + def parse(op: str) -> BaseOperatorName: + if op == "": + raise AssertionError("operator name cannot be empty") + if op.endswith("_out"): + raise AssertionError( + "_out suffix is reserved and not permitted for operator names; " + "did you mean to specify an out overload name instead?" + ) + # Extract namespace out. Base operator name may or may not contain namespace. + # E.g., aten::__lshift__ is a valid base operator name, __lshift__ is also valid. + # We want to split the namespace out from the base operator name. + match = re.match(r"^(?:(.*)::)?(.*)$", op) + namespace = match.group(1) if match else "" + op_without_ns = match.group(2) if match else op + m = re.match(r"^__([^_]+)__$", op_without_ns) + if m is not None: + dunder_method = True + base = m.group(1) + if any(base == f"i{n}" for n in AUGMENTED_ASSIGNMENT_NAMES): + inplace = True + base = base[1:] + else: + inplace = False + # temporary, this is not intrinsically true but + # has been historically true for dunder methods + # we support (but, if we ever got, say, __int__, this would + # be wrong!) + if base[0] == "i": + raise AssertionError( + f"unexpected dunder method starting with 'i': {op}" + ) + else: + dunder_method = False + base = op_without_ns + if base[-1] == "_": + inplace = True + base = base[:-1] + else: + inplace = False + + # See Note [Overload Ambiguity With Functional Variants] + functional_suffix = "_functional" + if base.endswith(functional_suffix): + functional_overload = True + base = base[: -len(functional_suffix)] + # This seems complicated and unnecessary, so banning dunder methods + # for now on ops that have a functional + mutable variant (like native_batch_norm). + if dunder_method or inplace: + raise AssertionError( + f"functional overload cannot be a dunder method or inplace: {op}" + ) + else: + functional_overload = False + + r = BaseOperatorName( + base=base, + inplace=inplace, + dunder_method=dunder_method, + functional_overload=functional_overload, + namespace=namespace, + ) + if str(r) != op: + raise AssertionError(f"{str(r)} != {op}") + return r + + def __str__(self) -> str: + namespace_prefix = f"{self.namespace}::" if self.namespace else "" + if self.dunder_method: + i = "i" if self.inplace else "" + return f"{namespace_prefix}__{i}{self.base}__" + else: + i = ( + "_" + if self.inplace + else "_functional" + if self.functional_overload + else "" + ) + return f"{namespace_prefix}{self.base}{i}" + + +# Operator name is the base operator name along with the (typically not +# user visible) overload string. +@dataclass(frozen=True) +class OperatorName: + name: BaseOperatorName + overload_name: str + + @staticmethod + def parse(op_name: str) -> OperatorName: + if "." in op_name: + name, overload_name = op_name.split(".", 1) + else: + name = op_name + overload_name = "" + r = OperatorName(name=BaseOperatorName.parse(name), overload_name=overload_name) + if str(r) != op_name: + raise AssertionError(f"{str(r)} != {op_name}") + return r + + def __str__(self) -> str: + if self.overload_name: + return f"{self.name}.{self.overload_name}" + else: + return f"{self.name}" + + # NB: This must be synchronized with the naming scheme in + # aten/src/ATen/templates/Operators.h + # Given a function schema "aten::op.overload(...)", + # If there is no overload name, this returns f"{op}" + # If there is an overload name, this returns f"{op}_{overload}" + def unambiguous_name(self) -> str: + if self.overload_name: + return f"{self.name}_{self.overload_name}" + else: + return f"{self.name}" + + def remove_inplace(self) -> OperatorName: + return OperatorName( + name=BaseOperatorName( + base=self.name.base, + inplace=False, + dunder_method=self.name.dunder_method, + ), + overload_name=self.overload_name, + ) + + def with_overload(self, overload: str) -> OperatorName: + return OperatorName( + name=BaseOperatorName( + base=self.name.base, + inplace=False, + dunder_method=self.name.dunder_method, + ), + overload_name=overload, + ) + + +def gets_generated_out_inplace_wrapper( + f: NativeFunction, g: NativeFunctionsGroup, b: BackendIndex +) -> bool: + return ( + f.func.kind() is not SchemaKind.functional + and not b.has_kernel(f) + and b.has_kernel(g.functional) + ) + + +# NativeFunction objects that are views (f.is_view_op returns True) +# are added into a `NativeFunctionsViewGroup`, which we can use to +# easily access the generated (optional) view_copy NativeFunction. +# It's convenient to group them together, so we pair them up in NativeFunctionsViewGroup. +# See Note [Codegen'd {view}_copy Operators] +# +# One property of this representation is that in order for a view-like op to be part of +# a NativeFunctionsViewGroup, the "aliasing" version of that view op must exist. +# There's one case where that doesn't happen: we have a non-aliasing `narrow_copy.out` op, +# but don't have corresponding aliasing `narrow.out` op. +# This means that `narrow_copy.out` won't appear as a NativeFunctionsViewGroup. +@dataclass(frozen=True) +class NativeFunctionsViewGroup: + view: NativeFunction + # Note: the {view}_copy operator is optional because we currently don't generate copy variants + # for all view ops. Notably, we don't generate them for CompositeImplicitAutograd views + # (we already get them "for free" through decomposition) + view_copy: NativeFunction | None + # view_inplace ops are also optional, but every view_inplace op should have out-of-place variant. + view_inplace: NativeFunction | None + + def __post_init__(self) -> None: + if not self.view.is_view_op: + raise AssertionError(f"view is not a view op: {self.view.func.name}") + if self.view_copy is None: + if gets_generated_view_copy(self.view): + raise AssertionError( + f"{str(self.view.func.name)} appears to be a new operator that aliases its inputs." + " The codegen expects you to add a corresponding operator to native_functions.yaml:" + f" {get_view_copy_name(self.view)!s}." + " See Note [view_copy NativeFunctions] for details." + ) + else: + if not self.view_copy.func.name.name.base.endswith(("_copy", "_scatter")): + raise AssertionError( + f"view_copy name must end with '_copy' or '_scatter': {self.view_copy.func.name}" + ) + if self.view.func.signature() != self.view_copy.func.signature( + strip_view_copy_name=True, + ): + view_sig = self.view.func.signature() + view_copy_sig = self.view_copy.func.signature(strip_view_copy_name=True) + raise AssertionError( + f"view and view_copy signatures don't match: {view_sig} != {view_copy_sig}" + ) + if "view_copy" not in self.view_copy.tags: + raise AssertionError( + f"{str(self.view_copy.func.name), str(self.view.tags)} appears to be a view_copy operator. The codegen expects" + " view_copy operators to be annotated with the 'view_copy' tag in native_functions.yaml." + " See Note [view_copy NativeFunction] for details." + ) + if self.view_inplace is not None: + if self.view.func.signature() != self.view_inplace.func.signature(): + view_sig = self.view.func.signature() + view_inplace_sig = self.view_inplace.func.signature() + raise AssertionError( + f"view and view_inplace signatures don't match: {view_sig} != {view_inplace_sig}" + ) + + if self.view.has_composite_implicit_autograd_kernel: + if self.view_inplace is not None: + if not self.view_inplace.has_composite_implicit_autograd_kernel: + raise AssertionError( + f"{str(self.view.func.name)} and {str(self.view_inplace.func.name)} must either" + " both have CompositeImplicitAutograd kernels, or both not have composite kernels." + ) + if self.view.has_composite_implicit_autograd_nested_tensor_kernel: + if self.view_inplace is not None: + if not self.view_inplace.has_composite_implicit_autograd_nested_tensor_kernel: + raise AssertionError( + f"{str(self.view.func.name)} and {str(self.view_inplace.func.name)} must either" + " both have CompositeImplicitAutogradNestedTensor kernels, or both not have composite kernels." + ) + + def functions(self, *, include_copy: bool = True) -> Iterator[NativeFunction]: + yield self.view + if self.view_inplace is not None: + yield self.view_inplace + if self.view_copy is not None and include_copy: + yield self.view_copy + + @property + def root_name(self) -> str: + return self.view.root_name + + @property + def composite(self) -> bool: + # We currently assert that the "group" is consistent. + # If the view op is composite, then its view_inplace op is too. + return self.view.has_composite_implicit_autograd_kernel + + +def gets_generated_view_copy(f: NativeFunction) -> bool: + # Only aliasing (view) operators get a copy variant. + if not f.is_view_op: + return False + # We don't need to bother generating copy variants for CompositeImplicitAutograd ops, + # because we can let them decompose into base view ops. + if f.has_composite_implicit_autograd_kernel: + return False + # We also don't need to generate copy variants for inplace views. + if "inplace_view" in f.tags: + return False + # Assume ops ending in _inverse have manually-defined copy variants + # (e.g. slice_inverse() has the copy variant slice_scatter()). + # We -could- probably generate these as well, but the codegen will be + # slightly different, and hand-writing these few kernels keeps codegen + # complexity lower. + if f.func.name.name.base.endswith("_inverse"): + return False + return True + + +# Given a NativeFunction that corresponds to a view op, +# returns the OperatorName of the corresponding "copy" variant of the op. +def get_view_copy_name(f: NativeFunction) -> OperatorName: + # Right now, when asking for a view op's corresponding "view_copy" name + # we assert for sanity that the op is allowed to have a generated view_copy variant. + # (We can do this because "gets_generated_view_copy()" tell us which ops get a generated view_copy op). + # However, narrow_copy() already exists as an op directly in native_functions.yaml. + # I'm hardcoding narrow_copy here for now to maintain the assert, + # But we could also just get rid of the assert. + list_of_ops_with_explicit_view_copy_operators = ["narrow"] + if str(f.func.name) not in list_of_ops_with_explicit_view_copy_operators: + if not gets_generated_view_copy(f): + raise AssertionError( + f"{f.func.name} does not have a generated view_copy variant" + ) + + base_name = f"{f.func.name.name.base}_copy" + view_copy_name = OperatorName( + name=BaseOperatorName( + base=base_name, inplace=False, dunder_method=f.func.name.name.dunder_method + ), + overload_name=f.func.name.overload_name, + ) + return view_copy_name + + +# Helper functions for parsing argument lists (both inputs and returns) + + +def parse_returns(return_decl: str) -> tuple[Return, ...]: + """ + Input: '()' + Output: [] + """ + if return_decl == "()": + return () + if return_decl[0] == "(" and return_decl[-1] == ")": + return_decl = return_decl[1:-1] + return tuple(Return.parse(arg) for arg in return_decl.split(", ")) + + +# A Precompute instance consists of a map from kernel argument name +# to the list of Argument instances that should replace that +# kernel argument in the impl function. +@dataclass(frozen=True) +class Precompute: + # A map from kernel argument name -> a list of precomputed + # elements that replaces/supersedes it. + replace: dict[str, list[Argument]] + # List of precomputed args added without replacement + add: list[Argument] + + @staticmethod + def parse(src: object) -> Precompute: + if not isinstance(src, list): + raise AssertionError(f"precomputed must be a list, got {type(src)}") + + # src is a list of strings of the format: + # {kernel param name} -> {replacement decl}[, {replacement decl}, ...] + # [{add decl}[, {add decl}, ...]] + # The last line is optional and contains the precomputed parameters that are + # added without replacement. + # The other lines are parsed to get the names of which precomputed elements + # should replace which kernel arguments. + add_args = [] + if " -> " not in src[-1]: + add_list = src[-1].split(",") + add_args = [Argument.parse(name.strip()) for name in add_list] + src = src[:-1] + + replace = {} + for raw_replace_item in src: + if not isinstance(raw_replace_item, str): + raise AssertionError( + f"precomputed item must be a str, got {type(raw_replace_item)}" + ) + if " -> " not in raw_replace_item: + raise AssertionError( + f"precomputed parameters without replacement are allowed only in the last line, got: {raw_replace_item}" + ) + + arg, with_list_raw = raw_replace_item.split(" -> ") + if " " in arg: + raise AssertionError( + f"illegal kernel param name '{arg}' in precomputed parameters" + ) + with_list = with_list_raw.split(",") + with_list_args = [Argument.parse(name.strip()) for name in with_list] + replace[arg] = with_list_args + + r = Precompute(replace=replace, add=add_args) + if r.to_list() != src: + raise AssertionError(f"r.to_list() != src: {r.to_list()} != {src}") + return r + + def __post_init__(self) -> None: + # the template parameters are upper so if these are the + # same then it is ambiguous + for a in self.add: + if a.name.upper() == a.name: + raise AssertionError( + f"precomputed argument name must not be all uppercase: {a.name}" + ) + for args in self.replace.values(): + for a in args: + if a.name.upper() == a.name: + raise AssertionError( + f"precomputed argument name must not be all uppercase: {a.name}" + ) + + def to_list(self) -> list[str]: + replace_list = [] + for kernel_param, replacement_params in self.replace.items(): + replacements = ", ".join(str(param) for param in replacement_params) + replace_list.append(f"{kernel_param} -> {replacements}") + + return replace_list diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/native_function_generation.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/native_function_generation.py new file mode 100644 index 0000000000000000000000000000000000000000..107802f60051e92e82031d75f56b2ad6d5db674a --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/native_function_generation.py @@ -0,0 +1,662 @@ +from __future__ import annotations + +import string +from collections import defaultdict +from typing import TYPE_CHECKING + +import torchgen.api.dispatcher as dispatcher +from torchgen.api.translate import translate +from torchgen.api.types import Binding, DispatcherSignature, Expr +from torchgen.context import with_native_function +from torchgen.model import ( + Annotation, + Argument, + BackendIndex, + BackendMetadata, + BaseOperatorName, + BaseTy, + BaseType, + DEFAULT_KERNEL_NAMESPACE, + DeviceCheckType, + DispatchKey, + FunctionSchema, + NativeFunction, + NativeFunctionsGroup, + OperatorName, + Return, + SchemaKind, + Variant, +) +from torchgen.utils import concatMap + + +if TYPE_CHECKING: + from collections.abc import Sequence + + +# See Note: [Out ops with functional variants that don't get grouped properly] +OUT_OPS_THAT_DONT_GET_GROUPED_PROPERLY = [ + # This has a functional variant, but it's currently marked private. + # This function should be marked private as well (*_backward ops aren't exposed to python anyway). + "adaptive_avg_pool3d_backward.grad_input", + # There's a functional variant, _slow_conv2d_backward.output_mask, that isn't grouped properly. + # Maybe we can kill this operator in favor of convolution_backward? + "_slow_conv2d_backward.grad_input", +] + + +# See Note: [Mutable ops that cannot get an out variant] +MUTABLE_OPS_THAT_CANNOT_GET_AN_OUT_VARIANT = [ + # should be out=? + "_cummax_helper", + # should be out=? + "_cummin_helper", +] + +# All of these operators don't have any tensor like returns +FUNCTIONAL_OPS_THAT_CANNOT_GET_AN_OUT_VARIANT = [ + "_assert_async", # no return + "_assert_async.msg", # no return + "_assert_tensor_metadata", # no return + "_cslt_sparse_mm_search", # returns an int + "_assert_scalar", # no return + "_dimI", # returns an int + "_dimV", # returns an int + "_has_same_storage_numel", # returns a boolean + "_linalg_check_errors", # no return + "_local_scalar_dense", # returns a Scalar + "_nested_tensor_from_mask_left_aligned", # returns a boolean + "_nnz", # returns an int + "_use_cudnn_ctc_loss", # returns a boolean + "_use_cudnn_ctc_loss.Tensor", # returns a boolean + "_use_miopen_ctc_loss", # returns a boolean + "_use_miopen_ctc_loss.Tensor", # returns a boolean + "_validate_compressed_sparse_indices", # no return + "allclose", # returns a boolean + "dense_dim", # returns an int + "equal", # returns a boolean + "is_coalesced", # returns an boolean + "is_pinned", # returns a boolean + "is_same_size", # returns a boolean + "is_set_to", # returns a boolean + "q_per_channel_axis", # returns an int + "q_scale", # returns a float + "q_zero_point", # returns an int + "qscheme", # returns a QScheme + "record_stream", # no return + "sparse_dim", # returns an int + "sym_constrain_range", # no return + "sym_constrain_range_for_size", # no return + "_nested_tensor_storage_offsets", # returns a vector of ints + "_chunk_grad_outputs_efficient_attention", # returns a bool + "_fused_sdp_choice", # returns an int + "_print", # no return + "_sink_tokens", # no return + "_nested_get_ragged_idx", # returns an int +] + +INPLACE_OPS_THAT_DONT_GET_GROUPED_PROPERLY = [ + # polygamma and polygamma.out both exist, but have a + # pre-self arg (while polygamma_ does not) + # We should either fix this schema so it can be grouped properly, + # or allow the codegen to generate new functional/out= NativeFunctions for this op + # (which would require changing its overload name to prevent overload ambiguity). + "polygamma_" +] + + +# Groups "similar" NativeFunctions together +# example add.Tensor, add_.Tensor, add.out +# "similar" NativeFunctions are all expected to have an identical `signature()`, +# But have differing SchemaKinds. +def pre_group_native_functions( + native_functions: Sequence[NativeFunction], +) -> dict[FunctionSchema, dict[SchemaKind, NativeFunction]]: + pre_grouped_native_functions: dict[ + FunctionSchema, dict[SchemaKind, NativeFunction] + ] = defaultdict(dict) + for f in native_functions: + d = pre_grouped_native_functions[f.func.signature()] + if f.func.kind() in d: + raise AssertionError(f"Duplicate schema kind {f.func.kind()} for {f.func}") + d[f.func.kind()] = f + return pre_grouped_native_functions + + +# Returns the out variant overload name given a base function overload name +def get_expected_out_variant_overload_name(overload_name: str | None) -> str: + return "out" if not overload_name else f"{overload_name}_out" + + +# Helper function: given an inplace FunctionSchema, generate its corresponding out= variant +# Example before: +# _add_relu_.Scalar(Tensor(a!) self, Scalar other, Scalar alpha=1) -> Tensor(a!) +# Example after: +# _add_relu.Scalar_out(Tensor self, Scalar other, Scalar alpha=1, *, Tensor(a!) out) +def self_to_out_signature(func: FunctionSchema) -> FunctionSchema: + # Generating an out= schema from an inplace schema. + if func.kind() != SchemaKind.inplace: + raise AssertionError(f"Expected inplace schema, got {func.kind()}") + if func.arguments.self_arg is None: + raise AssertionError("Expected self_arg to be non-None") + # The new out= schema has: + # - a new out argument with the same type as "func" (but with a mutable annotation) + # - The returns (if any) now alias the out= argument instead of "func" + # - an "out" overload name + return FunctionSchema( + name=func.name.remove_inplace().with_overload( + get_expected_out_variant_overload_name(func.name.overload_name) + ), + arguments=func.arguments.remove_self_annotation().with_out_args( + [ + Argument( + name="out", + type=func.arguments.self_arg.argument.type, + default=None, + annotation=func.arguments.self_arg.argument.annotation, + ) + ] + ), + returns=func.returns, + ) + + +# Helper function: given a functional FunctionSchema, generate its corresponding out= variant +# Example before: +# _to_copy(Tensor self, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, +# bool? pin_memory=None, bool non_blocking=False, MemoryFormat? memory_format=None) -> Tensor +# Example after: +# _to_copy._out(Tensor self, *, bool non_blocking=False, MemoryFormat? memory_format=None, +# Tensor(a!) out) -> Tensor(a!) +def functional_to_out_signature(func: FunctionSchema) -> FunctionSchema: + # Generating an out= schema from a functional schema. + if func.kind() != SchemaKind.functional: + raise AssertionError(f"Expected functional schema, got {func.kind()}") + + new_returns, new_out_args = generate_out_args_from_schema(func) + # The new out= schema has: + # - one or more new out argument(s) with the same type as returns (but with a mutable annotation) + # - The returns now alias the out= arguments + # - an "_out" overload name + return FunctionSchema( + name=func.name.with_overload( + get_expected_out_variant_overload_name(func.name.overload_name) + ), + arguments=func.arguments.signature().with_out_args( + new_out_args, + ), + returns=tuple(new_returns), + ) + + +# Helper function: given a function schema, generate corresponding out arguments, also the updated return annotations. +def generate_out_args_from_schema( + func: FunctionSchema, +) -> tuple[list[Return], list[Argument]]: + # More of a sanity check - our existing restrictions on schemas should enforce that + # mutable schema kinds never return their mutable arguments. + if any(r.annotation is not None and r.annotation.is_write for r in func.returns): + raise AssertionError("Mutable schema kinds should not return mutable arguments") + + tensorlike_rets = [r for r in func.returns if r.type.is_tensor_like()] + if len(tensorlike_rets) == 0: + raise AssertionError("Expected at least one tensor-like return") + + used_annotations = concatMap( + lambda a: [] if a.annotation is None else a.annotation.alias_set, + func.arguments.flat_all, + ) + valid_annotations = [x for x in string.ascii_lowercase if x not in used_annotations] + + all_rets_are_tensors = all(r.type == BaseType(BaseTy.Tensor) for r in func.returns) + + new_out_args: list[Argument] = [] + # The end result of new_returns is that: + # - If every return is a plain tensor, then the new returns == the old returns, but with the out= alias annotations added. + # - Otherwise, none of the out arguments show up in the returns (and we're only left with non-tensor-like returns, if any). + new_returns: list[Return] = [] + for i, r in enumerate(func.returns): + if r.type.is_tensor_like(): + new_out = Argument( + name="out" if len(func.returns) == 1 else f"out{i}", + type=r.type, + default=None, + annotation=Annotation.parse(f"{valid_annotations[i]}!"), + ) + new_out_args.append(new_out) + if all_rets_are_tensors: + # The convention for out= schemas is that they only return their out arguments + # if the return is a plain Tensor (or if it's a tuple of plain Tensors) + new_ret = Return( + name=None, type=new_out.type, annotation=new_out.annotation + ) + new_returns.append(new_ret) + else: + new_returns.append(r) + return new_returns, new_out_args + + +# Helper function: given a mutable FunctionSchema, generate its corresponding out= variant +# Example before: +# _fused_moving_avg_obs_fq_helper(Tensor self, Tensor observer_on, Tensor fake_quant_on, Tensor(a!) running_min, Tensor(b!) running_max, Tensor(c!) scale, Tensor(d!) zero_point, float averaging_const, int quant_min, int quant_max, int ch_axis, bool per_row_fake_quant=False, bool symmetric_quant=False) -> (Tensor output, Tensor mask) # noqa: B950 +# Example after: +# _fused_moving_avg_obs_fq_helper._out(Tensor self, Tensor observer_on, Tensor fake_quant_on, Tensor(a!) running_min, Tensor(b!) running_max, Tensor(c!) scale, Tensor(d!) zero_point, float averaging_const, int quant_min, int quant_max, int ch_axis, bool per_row_fake_quant=False, bool symmetric_quant=False, *, Tensor(e!) out0, Tensor(f!) out1) -> (Tensor(e!), Tensor(f!)) # noqa: B950 +def mutable_to_out_signature(func: FunctionSchema) -> FunctionSchema: + # Generating an out= schema from a mutable schema. + if func.kind() != SchemaKind.mutable: + raise AssertionError(f"Expected mutable schema, got {func.kind()}") + # The new out= schema has: + # - Any non-aliased tensor-like returns are converted to mutable, aliased out= arguments + # (if the argument is a tensor then we also return it for method chaining, + # otherwise we return nothing) + # - an "out" overload name + # + # Note that: + # (1) This also means that we can *only* generate an out= variant from a mutable schema + # if the mutable schema has at least one tensor-like non-aliasing return. + # (2) The generated out= variant still has mutable positional arguments, + # but if necessary we could probably add another out= variant that also + # functionalizes the mutable arguments (a functional_out variant) + + new_returns, new_out_args = generate_out_args_from_schema(func) + + return FunctionSchema( + name=func.name.remove_inplace().with_overload( + get_expected_out_variant_overload_name(func.name.overload_name) + ), + arguments=func.arguments.with_out_args(new_out_args), + returns=tuple(new_returns), + ) + + +# This function, given function of one SchemaKind, as well as a target SchemaKind, +# generates a new NativeFunction with the same properties, but using the target SchemaKind. +# We only actually generate functions for either functional or out= SchemaKinds. +# This function returns a tuple, with: +# - The generated NativeFunction +# - a dictionary of `BackendIndex` objects, describing which dispatch keys +# we will generate kernels for, for the new NativeFunction. +# Details are in the function, but we only generate composite kernels (in some cases) today. +def generate_function( + f: NativeFunction, k: SchemaKind +) -> tuple[NativeFunction, dict[DispatchKey, dict[OperatorName, BackendMetadata]]]: + from torchgen.api import cpp + + if k == SchemaKind.functional: + if f.func.kind() == SchemaKind.functional: + raise AssertionError("Cannot generate functional from functional schema") + # The new "functional" NativeFunction has: + # - any mutable arguments have been converted into (immutable) returns. + # (if a mutable argument was not also a return, it gets converted to one) + # - "_functional" appended to the base name, ONLY IF this op has a mutable variant. + # See Note [Overload Ambiguity With Functional Variants] + # The default grouping logic in signature() actually already does this, + # so we can piggy-back off it (but we still want return names) + func = f.func.signature(keep_return_names=True).with_name( + OperatorName( + name=BaseOperatorName( + base=f.func.name.name.base, + inplace=False, + dunder_method=f.func.name.name.dunder_method, + # See Note [Overload Ambiguity With Functional Variants] + functional_overload=f.func.kind() == SchemaKind.mutable, + ), + overload_name=f.func.name.overload_name, + ) + ) + elif k == SchemaKind.out: + # We generate out= ops mostly just so that we can pair up NativeFunctions into groups easily, + # but at least today, there is no good reason to actually use them. + # we'll generate a dispatcher entry for them, but won't actually register any kernels for them. + if f.func.kind() == SchemaKind.inplace: + func = self_to_out_signature(f.func) + elif f.func.kind() == SchemaKind.mutable: + func = mutable_to_out_signature(f.func) + elif f.func.kind() == SchemaKind.functional: + func = functional_to_out_signature(f.func) + else: + raise AssertionError( + "We only bother generating out= functions from either inplace or mutable or functional variants" + ) + else: + raise AssertionError( + "We currently only generate either functional or out= NativeFunctions" + ) + + # Generated kernel naming convention for out: _. The reason for this is to + # disambiguate operator with the same name but different overload name, e.g., `randn.names_out` and + # `randn.generator_with_names_out`. + kernel_name = ( + func.name.unambiguous_name() + if func.kind() == SchemaKind.out + else cpp.name(func) + ) + if f.func.has_symint(): + kernel_name += "_symint" + backend_metadata = { + DispatchKey.CompositeExplicitAutograd: { + func.name: BackendMetadata( + kernel=kernel_name, + structured=False, + cpp_namespace=DEFAULT_KERNEL_NAMESPACE, + ) + } + } + tags = {"generated"} | set( + f.tags & {"nondeterministic_seeded", "view_copy", "pt2_compliant_tag"} + ) + + return ( + NativeFunction( + func=func, + use_const_ref_for_mutable_tensors=f.use_const_ref_for_mutable_tensors, + # These generated fn's aren't meant to be user friendly- don't generate methods. + variants={Variant.function}, + structured=False, + structured_delegate=None, + structured_inherits=None, + precomputed=None, + autogen=[], + ufunc_inner_loop={}, + manual_kernel_registration=False, + manual_cpp_binding=False, + python_module=None, + category_override=None, + device_guard=False, + device_check=DeviceCheckType.NoCheck, + loc=f.loc, + cpp_no_default_args=set(), + is_abstract=f.is_abstract, + has_composite_implicit_autograd_kernel=False, + has_composite_implicit_autograd_nested_tensor_kernel=False, + has_composite_explicit_autograd_kernel=True, + has_composite_explicit_autograd_non_functional_kernel=False, + # Every generated NativeFunction gets a "generated" tag, so it's easy to tell + # which NativeFunction objects did not come directly from native_functions.yaml. + tags=tags, + namespace=f.namespace, + ), + backend_metadata, + ) + + +# This function is responsible for adding generated NativeFunctions which don't appear +# explicitly in the codegen. +# You can inspect the full list of NativeFunctions yourself with the torchgen package, by running +# torchgen.parse_native_yaml("aten/src/ATen/native/native_functions.yaml", "aten/src/ATen/native/tags.yaml") +# (Maybe we should make a friendly API for this) +# +# Note: this function *mutates* its two inputs, +# adding the new NativeFunctions / BackendMetadata to them +def add_generated_native_functions( + rs: list[NativeFunction], + indices: dict[DispatchKey, dict[OperatorName, BackendMetadata]], +) -> None: + # The main code for generating new NativeFunctions + # First we group of NativeFunctions by schema kind, + # then we detect which ones are missing and generate them. + pre_grouped_native_functions = pre_group_native_functions(rs) + for d in pre_grouped_native_functions.values(): + has_functional = SchemaKind.functional in d + has_inplace = SchemaKind.inplace in d + has_mutable = SchemaKind.mutable in d + has_out = SchemaKind.out in d + is_core = any("core" in variant.tags for variant in d.values()) + + # We automatically generate a few native functions that don't exist in the yaml, for a few reasons: + # (1) If an operator has an inplace/out= variant but no functional variant, we can generate + # a simple functional variant that the functionalization pass can consume. + # (2) If an operator has an inplace or functional but no out= variant, we generate an out= + # variant, mostly so we can easily pair up functions into NativeFunctionsGroup, + # while maintaining the constraint that the out= variant is "required". + if has_mutable or has_inplace or has_out or has_functional: + # Don't bother generating functions trio's for native functions that bypass the dispatcher. + are_manual = all(f.manual_cpp_binding for f in d.values()) + # Don't bother generating functional + out= variants for view operators + # set_ is technically an inplace_view, but for now it is treated + # as a normal inplace op in the codegen + has_view_ops = any( + f.is_view_op and str(f.func.name.name) != "set_" for f in d.values() + ) + # Don't generate the other variants for non-core CompositeImplicitAutograd operators. + # We could probably do this, but the main benefit of generating the function triplets + # is for transforms that need them, and transforms don't need to act directly + # on CompositeImplicitAutograd operators (since we let them decompose). + are_composite_implicit = all( + f.has_composite_implicit_autograd_kernel for f in d.values() + ) + if are_manual or has_view_ops or are_composite_implicit and not is_core: + continue + if has_out and len(d.values()) == 1: + # Note: [Out ops with functional variants that don't get grouped properly] + # In theory we could validly have an out= operator in native_functions.yaml + # that has no other variants. + # But today, all of the operators where that's the case actually do have + # functional variants, that we are just unable to pair up properly. + # I think banning this all together is probably safer + # (you can always add a functional variant yourself if you want to add a new out= operator). + # + # We should probably fix the existing cases; this check is to prevent us from adding more over time. + if ( + str(d[SchemaKind.out].func.name) + not in OUT_OPS_THAT_DONT_GET_GROUPED_PROPERLY + ): + raise AssertionError( + f"Found an out= operator that we could not find any other variants of: {str(d[SchemaKind.out].func)}" + ) + continue + + # Some inplace ops that have problematic schemas (that we should fix), which prevent us + # from generating out= and functional variants + if ( + has_inplace + and str(d[SchemaKind.inplace].func.name) + in INPLACE_OPS_THAT_DONT_GET_GROUPED_PROPERLY + ): + continue + + base_fn = ( + d[SchemaKind.mutable] + if has_mutable + else d[SchemaKind.inplace] + if has_inplace + else d[SchemaKind.out] + if has_out + else d[SchemaKind.functional] + ) + + # Note: [Mutable ops that cannot get an out variant] + # We can only generate an out= variant if either: + # - the original function has tensor-like returns (since we can convert them to out kwargs) + # - or it's inplace (since we can convert `self` to an out kwarg) + # There are only two functions that don't fit this criteria today though, + # and they both look like they should be fixed to be out= variants, + # so if feels safer to ban this schema all-together + base_fn_valid = base_fn.func.kind() == SchemaKind.inplace or any( + r.type.is_tensor_like() for r in base_fn.func.returns + ) + # Note: [Loosen the assertion that all functional should have out variant] + # By design all functional operators should have our variants. The needs_out check + # is loosening this requirement, changing it to only generate out variant if there's + # an `autogen` block in the native function, in the long run it should be removed. + # FIXME: Remove this after figuring out CI job failures related to min, max, mean + needs_out = any("out" in str(op_name) for op_name in base_fn.autogen) + gets_out_variant = not has_out and base_fn_valid and needs_out + if not has_out and not base_fn_valid: + if ( + str(base_fn.func.name) + not in MUTABLE_OPS_THAT_CANNOT_GET_AN_OUT_VARIANT + and str(base_fn.func.name) + not in FUNCTIONAL_OPS_THAT_CANNOT_GET_AN_OUT_VARIANT + ): + raise AssertionError( + f"""Found an operator that we could not generate an out= variant for: {str(base_fn.func)}. +This type of operators don't have tensor-like return, making it difficult to generate a proper out= variant. If +out= variant is not needed, please add the function name into FUNCTIONAL_OPS_THAT_CANNOT_GET_AN_OUT_VARIANT list.""" + ) + + # Generate an out= variant + if gets_out_variant: + fn, metadata = generate_function(base_fn, SchemaKind.out) + d[SchemaKind.out] = fn + BackendIndex.grow_index(indices, metadata) + rs.append(fn) + + # Generate a functional variant, but only do it if the operator got an out= variant + # (Functional variants are only useful if we can group up the variants, + # which we can only do if they have an out= variant) + if not has_functional and (has_out or gets_out_variant): + fn, metadata = generate_function(base_fn, SchemaKind.functional) + d[SchemaKind.functional] = fn + BackendIndex.grow_index(indices, metadata) + rs.append(fn) + + +def return_str(rets: tuple[Return, ...], names: list[str]) -> str: + if len(rets) != len(names): + raise AssertionError( + f"Returns and names length mismatch: {len(rets)} vs {len(names)}" + ) + if len(rets) == 0: + return "" + elif len(rets) == 1: + return f"return {names[0]};" + else: + return f"return {dispatcher.returns_type(rets).cpp_type()}({', '.join(names)});" + + +# Given a function, and the name of a variable corresponding to the output of that function, +# gather up all of the individual returns that are not aliased +def gather_nonaliased_inner_rets(func: FunctionSchema, out_var: str) -> list[str]: + aliased_rets = func.aliased_return_names() + non_aliased_names = [] + is_out_var_a_tuple = len(func.returns) > 1 + for i, r in enumerate(aliased_rets): + if r is None: + non_aliased_names.append( + f"std::get<{i}>({out_var})" if is_out_var_a_tuple else out_var + ) + return non_aliased_names + + +# Generates functional kernels in terms of their inplace.mutable counterparts. +# We only do this for "generated" NativeFunctions +@with_native_function +def gen_composite_functional_kernel(g: NativeFunctionsGroup) -> str | None: + # We should only be generating these for code-generated NativeFunctions + if "generated" not in g.functional.tags: + return None + # And we always write the kernel for a generated op in terms of a non-generated op. + if g.inplace is not None and "generated" not in g.inplace.tags: + target_f = g.inplace + elif g.mutable is not None and "generated" not in g.mutable.tags: + target_f = g.mutable + else: + # We should be guaranteed to have a valid inplace/mutable variant to call into. + # See Note: [Mutable Ops Not Using Functionalization] + raise AssertionError(str(g.functional.func)) + + sig = DispatcherSignature(g.functional.func) + target_sig = DispatcherSignature(target_f.func) + + context: list[Binding | Expr] = [] + clone_mutable_inputs = [] + cloned_return_names = [] + # We can't just directly pass all of the arguments from the functional op into the mutating op. + # We need to check for which inputs to the mutating operator are mutable, + # and clone those inputs first. + for a_curr, a_tgt in zip( + dispatcher.jit_arguments(g.functional.func), + dispatcher.jit_arguments(target_f.func), + ): + if a_tgt.annotation is not None and a_tgt.annotation.is_write: + clone_mutable_inputs.append( + f"auto {a_curr.name}_clone = clone_arg({a_curr.name});" + ) + context.append( + Expr( + expr=f"{a_curr.name}_clone", + type=dispatcher.argument_type(a_curr, binds=a_curr.name), + ) + ) + # Invariant: mutable arguments on the inner mutable op are always returns on the functional op. + cloned_return_names.append(f"{a_curr.name}_clone") + else: + context.append(dispatcher.argument(a_curr)) + exprs = ", ".join([e.expr for e in translate(context, target_sig.arguments())]) + + out_name = "output" + maybe_assign = f"auto {out_name} = " if len(target_f.func.returns) > 0 else "" + inner_return_names = gather_nonaliased_inner_rets(target_f.func, out_name) + ret_str = return_str( + g.functional.func.returns, inner_return_names + cloned_return_names + ) + + clone_mutable_inputs_str = "\n".join(clone_mutable_inputs) + return f""" +{sig.defn(name=sig.name() + ("_symint" if g.out.func.has_symint() else ""))} {{ + {clone_mutable_inputs_str} + {maybe_assign}at::_ops::{target_f.func.name.unambiguous_name()}::call({exprs}); + {ret_str} +}} +""" + + +# Generates out= kernels in terms of their functional counterparts. +# We only do this for "generated" NativeFunctions +@with_native_function +def gen_composite_out_kernel(g: NativeFunctionsGroup) -> str | None: + # We should only be generating these for code-generated NativeFunctions + if "generated" not in g.out.tags: + return None + # And we always write the kernel for the out= op in terms of the functional. + # Note that the functional op might have also been generated, but we don't have to + # worry about cycles, because the generated functional kernels are always implemented + # in terms of non-generated kernels (see gen_composite_functional_kernel). + + sig = DispatcherSignature(g.out.func) + target_sig = DispatcherSignature(g.functional.func) + + exprs = ", ".join( + [e.expr for e in translate(sig.arguments(), target_sig.arguments())] + ) + + copy_outs = [] + out_name = "tmp_output" + for i, out_arg in enumerate(g.out.func.arguments.out): + functional_return_name = ( + out_name + if len(g.functional.func.returns) == 1 + else f"std::get<{i}>({out_name})" + ) + copy_outs.append( + f"""\ + resize_out_helper({out_arg.name}, {functional_return_name}); + copy_arg({out_arg.name}, {functional_return_name});""" + ) + + rets = [] + # For each return arg in the calling (out=) operator, + # If it corresponds to an aliased input, return the input. + # Otherwise, return the corresponding output from calling the functional operator. + for i, ret_name in enumerate(g.out.func.aliased_return_names()): + if ret_name is not None: + rets.append(ret_name) + else: + functional_return_name = ( + out_name + if len(g.functional.func.returns) == 1 + else f"std::get<{i}>({out_name})" + ) + rets.append(functional_return_name) + + copy_outs_str = "\n".join(copy_outs) + + # Kernel name needs to follow the naming convention defined in `generate_function()` + return f""" +{sig.defn(name=g.out.func.name.unambiguous_name() + ("_symint" if g.out.func.has_symint() else ""))} {{ + auto {out_name} = at::_ops::{g.functional.func.name.unambiguous_name()}::call({exprs}); + {copy_outs_str} + {return_str(g.out.func.returns, rets)} +}} +""" diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/operator_versions/__init__.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/operator_versions/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/operator_versions/gen_mobile_upgraders.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/operator_versions/gen_mobile_upgraders.py new file mode 100644 index 0000000000000000000000000000000000000000..0521e49f772973eaf7fb926b55a9c63cb1108327 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/operator_versions/gen_mobile_upgraders.py @@ -0,0 +1,390 @@ +#!/usr/bin/env python3 + +from __future__ import annotations + +import os +from enum import Enum +from operator import itemgetter +from pathlib import Path +from typing import Any + +import torch +from torch.jit.generate_bytecode import generate_upgraders_bytecode +from torchgen.code_template import CodeTemplate +from torchgen.operator_versions.gen_mobile_upgraders_constant import ( + MOBILE_UPGRADERS_HEADER_DESCRIPTION, +) + + +class ByteCode(Enum): + instructions = 1 + constants = 2 + types = 3 + operators = 4 + register_size = 5 + + +EXCLUDED_OP_SET = [ + "aten::full.names", + "aten::full.out", + "aten::full", +] + +EXCLUE_UPGRADER_SET = ["full_0_4", "full_out_0_4"] + +ONE_INSTRUCTION = CodeTemplate( + """ + Instruction{OpCode::${operator_name}, ${X}, ${N}},""" +) + +INSTRUCTION_LIST = CodeTemplate( + """std::vector({ + ${instruction_list} + }), // instructions list""" +) + +ONE_CONSTANT = CodeTemplate( + """ + c10::IValue(${constant}),""" +) + +CONSTANT_LIST = CodeTemplate( + """std::vector({ + ${constant_list} + }), // constants list""" +) + +CONSTANTS_LIST_EMPTY = """std::vector(), // constants list""" + +ONE_TYPE = CodeTemplate("""c10::parseType("${type_str}"),""") + +TYPE_LIST = CodeTemplate( + """std::vector({ + ${type_list} + }), // types list""" +) + +TYPE_LIST_EMPTY = """std::vector(), // types list""" + +ONE_OPERATOTR_STRING = CodeTemplate( + """ + OperatorString({"${operator_name}", "${overload_name}", ${num_of_args}}),""" +) + +OPERATOR_STRING_LIST = CodeTemplate( + """ + std::vector({ + ${operator_string_list} + }), // operators list""" +) + +ONE_UPGRADER_FUNCTION = CodeTemplate( + """ + mobile::Function::registerFunc( + "${upgrader_name}", + ${instruction_list}, + ${constant_list}, + ${type_list}, + ${register_size} + )""" +) + +ONE_UPGRADER_SRC = CodeTemplate( + """ + ByteCodeFunctionWithOperator({ + ${bytecode_function}, + ${operator_string_list} + }),""" +) + + +ONE_UPGRADER_IN_VERSION_MAP = CodeTemplate( + """Upgrader({${upgrader_min_version}, ${upgrader_max_version}, "${upgrader_name}", ${bytecode_func_index}})""" +) # noqa: E501 + +ONE_OPERATOR_IN_VERSION_MAP = CodeTemplate( + """ + {std::string("${operator_name}"), + std::vector({ + ${upgrader_list_in_version_map} + })},""" +) + + +OPERATOR_VERSION_MAP = CodeTemplate( + """ +const std::unordered_map> +getOperatorVersionMapForMobile() { + static std::unordered_map> + operatorVersionMapForMobile({ + ${operator_list_in_version_map} + }); + return operatorVersionMapForMobile; +} +""" +) + + +UPGRADER_CPP_SRC = CodeTemplate( + MOBILE_UPGRADERS_HEADER_DESCRIPTION + + """ +#include +#include +#include + +namespace torch { +namespace jit { + +// clang-format off + +// From operator_versions_map +${operator_version_map} + +const std::vector& getUpgraderBytecodeList() { + auto generate_upgrader_bytecode_list = []() { + std::vector upgrader_function_list({ + ${upgrader_bytecode} + }); + for (const auto& upgrader_function : upgrader_function_list) { + for (const auto& op : upgrader_function.operators) { + upgrader_function.function.append_operator( + op.name, + op.overload_name, + op.num_specified_args); + } + } + return upgrader_function_list; + }; + static std::vector upgraderBytecodeList = + generate_upgrader_bytecode_list(); + return upgraderBytecodeList; +} + +// clang-format on + +} // namespace jit +} // namespace torch +""" +) + +UPGRADER_MOBILE_FILE_NAME = "upgrader_mobile.cpp" + +UPGRADER_ELEMENT = CodeTemplate( + """\ +Upgrader({${min_version}, ${max_version}, ${operator_name}, ${index}}), +""" +) + +PER_OPERATOR_UPGRADER_LIST = CodeTemplate( + """\ +{ + std::string(${operator_name}), + std::vector({${upgrader_list}}); +} +""" +) + + +def construct_instruction(instruction_list_from_yaml: list[Any]) -> str: + instruction_list_part = [ + ONE_INSTRUCTION.substitute( + operator_name=instruction[0], + X=instruction[1], + N=instruction[2], + ) + for instruction in instruction_list_from_yaml + ] + return INSTRUCTION_LIST.substitute( + instruction_list="".join(instruction_list_part).lstrip("\n") + ) + + +def construct_constants(constants_list_from_yaml: list[Any]) -> str: + constants_list_part = [] + for constant_from_yaml in constants_list_from_yaml: + convert_constant = None + if isinstance(constant_from_yaml, str): + # Add quotes if it's string + convert_constant = f'"{constant_from_yaml}"' + elif isinstance(constant_from_yaml, bool): + convert_constant = "true" if constant_from_yaml else "false" + elif constant_from_yaml is None: + convert_constant = "" + elif isinstance(constant_from_yaml, int): + convert_constant = str(constant_from_yaml) + else: + raise ValueError( + f"The type of {constant_from_yaml} is {type(constant_from_yaml)}. " + "Please add change in construct_constants function in gen_mobile_upgraders.py." + ) + constants_list_part.append(ONE_CONSTANT.substitute(constant=convert_constant)) + if len(constants_list_part) == 0: + return CONSTANTS_LIST_EMPTY + return CONSTANT_LIST.substitute( + constant_list="".join(constants_list_part).lstrip("\n") + ) + + +def construct_operators(operator_list_from_yaml: list[Any]) -> str: + operator_list_part = [ + ONE_OPERATOTR_STRING.substitute( + operator_name=operator[0], + overload_name=operator[1], + num_of_args=operator[2], + ) + for operator in operator_list_from_yaml + ] + return OPERATOR_STRING_LIST.substitute( + operator_string_list="".join(operator_list_part).lstrip("\n") + ) + + +def construct_types(types_tr_list_from_yaml: list[Any]) -> str: + types_tr_list_part = [ + ONE_TYPE.substitute(type_str=types_tr) for types_tr in types_tr_list_from_yaml + ] + if len(types_tr_list_part) == 0: + return TYPE_LIST_EMPTY + return TYPE_LIST.substitute(type_list="".join(types_tr_list_part).lstrip("\n")) + + +def construct_register_size(register_size_from_yaml: int) -> str: + if not isinstance(register_size_from_yaml, int): + raise ValueError( + f"Input register size is {register_size_from_yaml} and" + "it's type is {type(register_size_from_yaml)}. An int type is expected." + ) + return str(register_size_from_yaml) + + +def construct_version_maps( + upgrader_bytecode_function_to_index_map: dict[str, Any], +) -> str: + version_map = torch._C._get_operator_version_map() + sorted_version_map_ = sorted(version_map.items(), key=itemgetter(0)) # type: ignore[no-any-return] + sorted_version_map = dict(sorted_version_map_) + + operator_list_in_version_map_part = [] + for op_name in sorted_version_map: + upgraders_in_version_map_part = [] + # TODO: remove the skip after these two operators schemas are fixed + if op_name in EXCLUDED_OP_SET: + continue + upgrader_ranges = torch._C._get_upgrader_ranges(op_name) + upgrader_entries = sorted_version_map[op_name] + if len(upgrader_ranges) != len(upgrader_entries): + raise AssertionError( + f"upgrader_ranges and upgrader_entries length mismatch for {op_name}: " + f"{len(upgrader_ranges)} != {len(upgrader_entries)}" + ) + for idx, upgrader_entry in enumerate(upgrader_entries): + upgrader_name = upgrader_entry.upgrader_name + bytecode_function_index = upgrader_bytecode_function_to_index_map[ + upgrader_name + ] + upgraders_in_version_map_part.append( + ONE_UPGRADER_IN_VERSION_MAP.substitute( + upgrader_min_version=upgrader_ranges[idx].min_version, + upgrader_max_version=upgrader_ranges[idx].max_version, + upgrader_name=upgrader_name, + bytecode_func_index=bytecode_function_index, + ) + ) + operator_list_in_version_map_part.append( + ONE_OPERATOR_IN_VERSION_MAP.substitute( + operator_name=op_name, + upgrader_list_in_version_map="".join(upgraders_in_version_map_part), + ) + ) + return OPERATOR_VERSION_MAP.substitute( + operator_list_in_version_map="".join(operator_list_in_version_map_part).lstrip( + "\n" + ) + ) + + +def get_upgrader_bytecode_function_to_index_map( + upgrader_dict: list[dict[str, Any]], +) -> dict[str, Any]: + upgrader_bytecode_function_to_index_map = {} + index = 0 + for upgrader_bytecode in upgrader_dict: + for upgrader_name in upgrader_bytecode: + if upgrader_name in EXCLUE_UPGRADER_SET: + continue + upgrader_bytecode_function_to_index_map[upgrader_name] = index + index += 1 + return upgrader_bytecode_function_to_index_map + + +def write_cpp(cpp_path: str, upgrader_dict: list[dict[str, Any]]) -> None: + upgrader_bytecode_function_to_index_map = ( + get_upgrader_bytecode_function_to_index_map(upgrader_dict) + ) + version_map_src = construct_version_maps(upgrader_bytecode_function_to_index_map) + all_upgrader_src_string = [] + for upgrader_bytecode in upgrader_dict: + for upgrader_name, bytecode in upgrader_bytecode.items(): + # TODO: remove the skip after these two operators schemas are fixed + if upgrader_name in EXCLUE_UPGRADER_SET: + continue + instruction_list_str = "" + constant_list_str = "" + type_list_str = "" + register_size_str = "" + operator_list_str = "" + for table_name, contents in bytecode.items(): + element = ByteCode[table_name] + if element is ByteCode.instructions: + instruction_list_str = construct_instruction(contents) + elif element is ByteCode.constants: + constant_list_str = construct_constants(contents) + elif element is ByteCode.operators: + operator_list_str = construct_operators(contents) + elif element is ByteCode.types: + type_list_str = construct_types(contents) + elif element is ByteCode.register_size: + register_size_str = construct_register_size(contents) + + one_upgrader_function_string = ONE_UPGRADER_FUNCTION.substitute( + upgrader_name=upgrader_name, + instruction_list=instruction_list_str, + constant_list=constant_list_str, + type_list=type_list_str, + register_size=register_size_str, + ) + one_upgrader_src_string = ONE_UPGRADER_SRC.substitute( + bytecode_function=one_upgrader_function_string.lstrip("\n"), + operator_string_list=operator_list_str.lstrip("\n"), + ) + all_upgrader_src_string.append(one_upgrader_src_string) + + upgrader_file_content = UPGRADER_CPP_SRC.substitute( + operator_version_map=version_map_src, + upgrader_bytecode="".join(all_upgrader_src_string).lstrip("\n"), + ) + print("writing file to : ", cpp_path + "/" + UPGRADER_MOBILE_FILE_NAME) + with open(os.path.join(cpp_path, UPGRADER_MOBILE_FILE_NAME), "wb") as out_file: + out_file.write(upgrader_file_content.encode("utf-8")) + + +def sort_upgrader(upgrader_list: list[dict[str, Any]]) -> list[dict[str, Any]]: + sorted_upgrader_list = sorted( + upgrader_list, key=lambda one_upgrader: next(iter(one_upgrader)) + ) + return sorted_upgrader_list + + +def main() -> None: + upgrader_list = generate_upgraders_bytecode() + sorted_upgrader_list = sort_upgrader(upgrader_list) + for up in sorted_upgrader_list: + print("after sort upgrader : ", next(iter(up))) + + pytorch_dir = Path(__file__).resolve().parents[2] + upgrader_path = pytorch_dir / "torch" / "csrc" / "jit" / "mobile" + write_cpp(str(upgrader_path), sorted_upgrader_list) + + +if __name__ == "__main__": + main() diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/operator_versions/gen_mobile_upgraders_constant.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/operator_versions/gen_mobile_upgraders_constant.py new file mode 100644 index 0000000000000000000000000000000000000000..04b5ad887e54153115eeca7b6686d7c2de8dfc06 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/operator_versions/gen_mobile_upgraders_constant.py @@ -0,0 +1,7 @@ +MOBILE_UPGRADERS_HEADER_DESCRIPTION = """/** + * @generated + * This is an auto-generated file. Please do not modify it by hand. + * To re-generate, please run: + * cd ~/pytorch && python torchgen/operator_versions/gen_mobile_upgraders.py + */ +""" diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/native/native_functions.yaml b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/native/native_functions.yaml new file mode 100644 index 0000000000000000000000000000000000000000..9e39eda0368fe01b747f61a33454881d72ec3430 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/native/native_functions.yaml @@ -0,0 +1,16269 @@ +# See README.md in this directory for more guidance + +# *********NB: _cast_* operators are DEPRECATED and will be removed +# eventually. These were previously used before TorchScript IR supported +# representing ScalarType's. They are now superseded by usage of +# `aten::to()`. The ops remain here for backward compatibility purposes. + +# DEPRECATED. DO NOT USE +- func: _cast_Byte(Tensor self, bool non_blocking=False) -> Tensor + variants: function + +# DEPRECATED. DO NOT USE +- func: _cast_Char(Tensor self, bool non_blocking=False) -> Tensor + variants: function + +# DEPRECATED. DO NOT USE +- func: _cast_Double(Tensor self, bool non_blocking=False) -> Tensor + variants: function + +# DEPRECATED. DO NOT USE +- func: _cast_Float(Tensor self, bool non_blocking=False) -> Tensor + variants: function + +# DEPRECATED. DO NOT USE +- func: _cast_Int(Tensor self, bool non_blocking=False) -> Tensor + variants: function + +# DEPRECATED. DO NOT USE +- func: _cast_Long(Tensor self, bool non_blocking=False) -> Tensor + variants: function + +# DEPRECATED. DO NOT USE +- func: _cast_Short(Tensor self, bool non_blocking=False) -> Tensor + variants: function + +# DEPRECATED. DO NOT USE +- func: _cast_Half(Tensor self, bool non_blocking=False) -> Tensor + variants: function + +# Computes the gradient of current tensor w.r.t. graph leaves. +- func: _backward(Tensor self, Tensor[] inputs, Tensor? gradient=None, bool? retain_graph=None, bool create_graph=False) -> () + manual_cpp_binding: True + variants: method + +# DEPRECATED. Sets the tensor data held by this `Variable` to be the same as +# `new_data`. It requires that `new_data` and `Variable` have compatible tensor +# type, by checking `_has_compatible_shallow_copy_type(this, new_data)`. +# +# This function is deprecated because it doesn't really make sense in a world +# where Variables *are* Tensors (as opposed to them containing tensors, which +# is what the previous interpretation was.) +- func: set_data(Tensor(a!) self, Tensor new_data) -> () + manual_cpp_binding: True + variants: method + +- func: data(Tensor self) -> Tensor + manual_cpp_binding: True + variants: method + +# True if this `Variable` is a leaf and thus does not have a `grad_fn`. +- func: is_leaf(Tensor self) -> bool + manual_cpp_binding: True + variants: method + +# Returns the output index of this variable from the forward operation that +# produced it. Conversely, it returns the input index of the gradient `Node` to +# which this `Variable` is connected (because in the gradient computation, +# inputs and outputs switch meaning). For example: +# +# y0, y1, y2 = f(x) +# assert y0.output_nr == 0 +# assert y1.output_nr == 1 +# assert y2.output_nr == 2 +# +- func: output_nr(Tensor self) -> int + manual_cpp_binding: True + variants: method + +- func: _version(Tensor self) -> int + manual_cpp_binding: True + variants: method + +- func: requires_grad_(Tensor(a!) self, bool requires_grad=True) -> Tensor(a!) + manual_cpp_binding: True + variants: method + +# Enables .grad attribute for non-leaf Tensors. +- func: retain_grad(Tensor(a!) self) -> () + manual_cpp_binding: True + variants: method + +- func: retains_grad(Tensor self) -> bool + manual_cpp_binding: True + variants: method + +- func: _fw_primal(Tensor(a) self, int level) -> Tensor(a) + variants: method + dispatch: + CompositeExplicitAutograd: _fw_primal + +- func: _make_dual(Tensor(a) primal, Tensor tangent, int level) -> Tensor(a) + variants: function + dispatch: + CompositeExplicitAutograd: _make_dual + +- func: _unpack_dual(Tensor(a) dual, int level) -> (Tensor(a) primal, Tensor tangent) + variants: function + +# NOTE: [_new_zeros_with_same_feature_meta] +# This function creates a new tensor with the layout and TensorOptions +# of `other` but also takes into account the batch dimensions of `self` +# +# This function has a couple extra constraints because it is also used for `jvp` +# in functorch. +# - is used for forward AD because there is the restriction +# that the primal and tangent must have the same layout +# - We cannot assume that `self` and `other` have the same sizes or even dim +# because in the inplace over view case, `other` is the base tensor, and +# `self` is the forward grad with respect to the view, which can have an +# entirely different shape +# - takes the number of batch dims for `self` because we also handle +# some batching logic. We handle that here instead of a batching rule because +# we'd like to avoid calling as_strided in the batching rule (as to enable +# nested vmap in functorch). +# - needs to be CompositeExplicitAutograd for jvp support in functorch. +# functorch currently relies on TensorWrapper which does not have storage +# CompositeExplicitAutograd makes sure the TensorWrapper is unwrapped. +# - this function may eventually take on another int argument to store the +# the number of batch dims for other once we support that use case +- func: _new_zeros_with_same_feature_meta(Tensor self, Tensor other, *, int self_num_batch_dims=0) -> Tensor + variants: function + dispatch: + CompositeExplicitAutograd: _new_zeros_with_same_feature_meta + autogen: _new_zeros_with_same_feature_meta.out + +# This function compares the storage numel of self with that of other, where +# storage numel is computed as: `other.storage().nbytes() / other.itemsize()`. +# We create this function for composite compliance purposes. The batching rule +# always returns true because vmapped as_strided does not support accessing +# storage locations not indexable by the input tensor. +# See the note above for more information. +- func: _has_same_storage_numel(Tensor self, Tensor other) -> bool + variants: function + dispatch: + CompositeExplicitAutograd: _has_same_storage_numel + +- func: rename_(Tensor(a!) self, Dimname[]? names) -> Tensor(a!) + variants: method + tags: inplace_view + +- func: rename(Tensor(a) self, Dimname[]? names) -> Tensor(a) + variants: method + +- func: align_to(Tensor(a) self, Dimname[] names) -> Tensor(a) + variants: method + +- func: align_to.ellipsis_idx(Tensor(a) self, Dimname[] order, int ellipsis_idx) -> Tensor(a) + variants: method + +- func: align_as(Tensor self, Tensor other) -> Tensor + variants: method + +- func: align_tensors(Tensor[] tensors) -> Tensor[] + +# Not assert because it's a keyword; not Assert because FX already +# took that syntax +# TODO: need to specify this is side-effectful somehow +- func: _assert_async(Tensor self) -> () + dispatch: + CPU: _assert_async_cpu + CUDA: _assert_async_cuda + +- func: _assert_async.msg(Tensor self, str assert_msg) -> () + dispatch: + CPU: _assert_async_msg_cpu + CUDA: _assert_async_msg_cuda + +- func: _assert_scalar(Scalar self, str assert_msg) -> () + dispatch: + CompositeExplicitAutograd: _assert_scalar + +- func: _functional_assert_scalar(Scalar self, str assert_msg, Tensor dep_token) -> Tensor + dispatch: + CompositeExplicitAutograd: _functional_assert_scalar + +- func: _functional_assert_async.msg(Tensor self, str assert_msg, Tensor dep_token) -> Tensor + dispatch: + CPU: _functional_assert_async_msg_cpu + +- func: _assert_tensor_metadata(Tensor a, SymInt[]? size=None, SymInt[]? stride=None, ScalarType? dtype=None, *, Device? device=None, Layout? layout=None) -> () + dispatch: + CompositeExplicitAutograd: _assert_tensor_metadata + Meta: _assert_tensor_metadata_meta_symint + +- func: _print(str s) -> () + dispatch: + CompositeExplicitAutograd: _print + +- func: sym_constrain_range(Scalar size, *, int? min=None, int? max=None) -> () + dispatch: + CompositeExplicitAutograd: sym_constrain_range + +- func: sym_constrain_range_for_size(Scalar size, *, int? min=None, int? max=None) -> () + dispatch: + CompositeExplicitAutograd: sym_constrain_range_for_size + +- func: _functional_sym_constrain_range(Scalar size, int? min, int? max, Tensor dep_token) -> Tensor + dispatch: + CompositeExplicitAutograd: _functional_sym_constrain_range + +- func: _functional_sym_constrain_range_for_size(Scalar size, int? min, int? max, Tensor dep_token) -> Tensor + dispatch: + CompositeExplicitAutograd: _functional_sym_constrain_range_for_size + +- func: _make_dep_token(*, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor + dispatch: + CPU: _make_dep_token_cpu + +- func: refine_names(Tensor(a) self, Dimname[] names) -> Tensor(a) + variants: method + +- func: _use_cudnn_ctc_loss(Tensor log_probs, Tensor targets, int[] input_lengths, int[] target_lengths, int blank) -> bool + device_check: NoCheck # Tensor arguments allowed to be on different devices, see also _cudnn_ctc_loss + dispatch: + CUDA: _use_cudnn_ctc_loss + +- func: _use_cudnn_ctc_loss.Tensor(Tensor log_probs, Tensor targets, Tensor input_lengths, Tensor target_lengths, int blank) -> bool + device_check: NoCheck # Tensor arguments allowed to be on different devices, see also _cudnn_ctc_loss + dispatch: + CUDA: _use_cudnn_ctc_loss_tensor + +- func: _cudnn_ctc_loss(Tensor log_probs, Tensor targets, int[] input_lengths, int[] target_lengths, int blank, bool deterministic, bool zero_infinity) -> (Tensor, Tensor) + device_check: NoCheck # log_probs is expected to be on CUDA while targets is expected to be on CPU + dispatch: + CUDA: _cudnn_ctc_loss + autogen: _cudnn_ctc_loss.out + +- func: _cudnn_ctc_loss.Tensor(Tensor log_probs, Tensor targets, Tensor input_lengths, Tensor target_lengths, int blank, bool deterministic, bool zero_infinity) -> (Tensor, Tensor) + device_check: NoCheck # log_probs is expected to be on CUDA while targets is expected to be on CPU + dispatch: + CUDA: _cudnn_ctc_loss_tensor + +- func: _use_cudnn_rnn_flatten_weight() -> bool + +- func: _cudnn_rnn_flatten_weight(Tensor[] weight_arr, int weight_stride0, SymInt input_size, int mode, SymInt hidden_size, SymInt proj_size, int num_layers, bool batch_first, bool bidirectional) -> Tensor + dispatch: + CUDA: _cudnn_rnn_flatten_weight + autogen: _cudnn_rnn_flatten_weight.out + +- func: _cudnn_rnn(Tensor input, Tensor[] weight, int weight_stride0, Tensor? weight_buf, Tensor hx, Tensor? cx, int mode, SymInt hidden_size, SymInt proj_size, int num_layers, bool batch_first, float dropout, bool train, bool bidirectional, SymInt[] batch_sizes, Tensor? dropout_state) -> (Tensor, Tensor, Tensor, Tensor, Tensor) + # rnn_tanh may or may not redispatch to _cudnn_rnn based on algorithm and build. Thus it might hit dispatch or kernel device check. + # Disable dispatch time device check for consistent behavior. + device_check: NoCheck + dispatch: + CUDA: _cudnn_rnn + autogen: _cudnn_rnn.out + tags: nondeterministic_seeded + +- func: _cudnn_rnn_backward(Tensor input, Tensor[] weight, int weight_stride0, Tensor weight_buf, Tensor hx, Tensor? cx, Tensor output, Tensor? grad_output, Tensor? grad_hy, Tensor? grad_cy, int mode, SymInt hidden_size, SymInt proj_size, int num_layers, bool batch_first, float dropout, bool train, bool bidirectional, SymInt[] batch_sizes, Tensor? dropout_state, Tensor reserve, bool[4] output_mask) -> (Tensor, Tensor, Tensor, Tensor[]) + dispatch: + CUDA: _cudnn_rnn_backward + autogen: _cudnn_rnn_backward.out + +- func: _cudnn_init_dropout_state(float dropout, bool train, int dropout_seed, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False) -> Tensor + dispatch: + CUDA: _cudnn_init_dropout_state + autogen: _cudnn_init_dropout_state.out + tags: nondeterministic_seeded + +- func: _debug_has_internal_overlap(Tensor self) -> int + variants: function + +- func: _fused_dropout(Tensor self, float p, Generator? generator=None) -> (Tensor, Tensor) + variants: function + dispatch: + CUDA: fused_dropout_cuda + tags: nondeterministic_seeded + autogen: _fused_dropout.out + +- func: _masked_scale(Tensor self, Tensor mask, float scale) -> Tensor + variants: function + dispatch: + CUDA: masked_scale_cuda + autogen: _masked_scale.out + +- func: native_dropout(Tensor input, float p, bool? train) -> (Tensor, Tensor) + variants: function + dispatch: + CPU: native_dropout_cpu + CUDA: native_dropout_cuda + MPS: native_dropout_mps + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: native_dropout_nested + tags: [nondeterministic_seeded, core] + autogen: native_dropout.out + +- func: native_dropout_backward(Tensor grad_output, Tensor mask, float scale) -> Tensor + dispatch: + CPU, NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: native_dropout_backward + CUDA: native_dropout_backward_cuda + MPS: native_dropout_backward_mps + autogen: native_dropout_backward.out + tags: pointwise + +- func: _sobol_engine_draw(Tensor quasi, int n, Tensor sobolstate, int dimension, int num_generated, ScalarType? dtype) -> (Tensor, Tensor) + +- func: _sobol_engine_ff_(Tensor(a!) self, int n, Tensor sobolstate, int dimension, int num_generated) -> Tensor(a!) + +- func: _sobol_engine_scramble_(Tensor(a!) self, Tensor ltm, int dimension) -> Tensor(a!) + +- func: _sobol_engine_initialize_state_(Tensor(a!) self, int dimension) -> Tensor(a!) + +- func: _reshape_from_tensor(Tensor self, Tensor shape) -> Tensor + +- func: _shape_as_tensor(Tensor self) -> Tensor + +- func: dropout(Tensor input, float p, bool train) -> Tensor + tags: [nondeterministic_seeded, maybe_aliasing_or_mutating] + +- func: dropout_(Tensor(a!) self, float p, bool train) -> Tensor(a!) + tags: nondeterministic_seeded + +- func: feature_dropout(Tensor input, float p, bool train) -> Tensor + tags: [nondeterministic_seeded, maybe_aliasing_or_mutating] + +- func: feature_dropout_(Tensor(a!) self, float p, bool train) -> Tensor(a!) + tags: nondeterministic_seeded + +- func: alpha_dropout(Tensor input, float p, bool train) -> Tensor + tags: [nondeterministic_seeded, maybe_aliasing_or_mutating] + +- func: alpha_dropout_(Tensor(a!) self, float p, bool train) -> Tensor(a!) + tags: nondeterministic_seeded + +- func: feature_alpha_dropout(Tensor input, float p, bool train) -> Tensor + tags: [nondeterministic_seeded, maybe_aliasing_or_mutating] + +- func: feature_alpha_dropout_(Tensor(a!) self, float p, bool train) -> Tensor(a!) + tags: nondeterministic_seeded + +- func: abs(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CompositeExplicitAutograd: abs + SparseCPU, SparseCUDA, SparseMPS: abs_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMPS, SparseCsrMeta: abs_sparse_csr + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_abs + tags: [core, pointwise] + +- func: abs_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CompositeExplicitAutograd: abs_ + SparseCPU, SparseCUDA, SparseMPS: abs_sparse_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMPS, SparseCsrMeta: abs_sparse_csr_ + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_abs_ + +- func: abs.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA, MPS, MTIA: abs_out + SparseCPU, SparseCUDA, SparseMPS: abs_sparse_out + SparseCsrCPU, SparseCsrCUDA, SparseCsrMPS, SparseCsrMeta: abs_sparse_csr_out + tags: pointwise + +# Note [Adding an alias] +# To add an alias do the following: +# +# 1) Copy the original functions native_functions.yaml entry, but replace the +# original function's name with their own and delete any dispatch +# keys for the aliases. Specifying a dispatch key will prevent +# autograd from recording the operations the alias performs, which +# will stop it from "inheriting" the original operation's autograd behavior. +# 2) Implement the corresponding functions and have them redispatch to the +# original function. +# 3) Add docstrings to the new function that reference the original function, +# and document the method as usual (if it exists.) +# (See torch/_torch_docs.py and docs/source/torch.rst if adding a function, +# torch/_tensor_docs.py and docs/source/tensors.rst if adding a method, +# or module-specific doc bindings (like torch/linalg/__init__.py) if +# adding an alias in a namespace.) +# 4) Update torch/overrides.py consistent with the original function. +# 5) Update the alias_map in torch/csrc/jit/passes/normalize_ops.cpp. +# 6) Add aliases argument to existing OpInfo/UnaryUfuncInfo or create new OpInfo/UnaryUfuncInfo entry +# in op_db list in torch/testing/_internal/common_methods_invocations.py +# +# See torch.absolute, an alias for torch.abs, as an example. +# Absolute, alias for abs + +- func: absolute(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + +- func: absolute_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + +- func: absolute.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + +- func: angle(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CPU, CUDA, MPS: angle + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: angle_sparse_csr + tags: pointwise + +- func: angle.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA, MPS: angle_out + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: angle_sparse_csr_out + tags: pointwise + +- func: view_as_real(Tensor(a) self) -> Tensor(a) + variants: function + dispatch: + CPU, CUDA, MPS, Meta: view_as_real + SparseCPU, SparseCUDA, SparseMPS: view_as_real_sparse + +- func: view_as_complex(Tensor(a) self) -> Tensor(a) + variants: function + dispatch: + CPU, CUDA, MPS, Meta: view_as_complex + SparseCPU, SparseCUDA, SparseMPS: view_as_complex_sparse + +- func: sgn(Tensor self) -> Tensor + variants: function, method + structured_delegate: sgn.out + dispatch: + SparseCPU, SparseCUDA, SparseMPS: sgn_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: sgn_sparse_csr + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_sgn + tags: pointwise + +- func: sgn_(Tensor(a!) self) -> Tensor(a!) + variants: method + structured_delegate: sgn.out + dispatch: + SparseCPU, SparseCUDA, SparseMPS: sgn_sparse_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: sgn_sparse_csr_ + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_sgn_ + tags: pointwise + +- func: sgn.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA: sgn_out + MPS: sgn_out_mps + SparseCPU, SparseCUDA, SparseMPS: sgn_sparse_out + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: sgn_sparse_csr_out + tags: pointwise + +- func: chalf(Tensor self, *, MemoryFormat? memory_format=None) -> Tensor + variants: method + +- func: real(Tensor(a) self) -> Tensor(a) + device_check: NoCheck # TensorIterator + variants: function + +- func: imag(Tensor(a) self) -> Tensor(a) + device_check: NoCheck # TensorIterator + variants: function + +- func: _conj(Tensor(a) self) -> Tensor(a) + variants: function, method + dispatch: + CompositeExplicitAutograd: _conj + +- func: conj(Tensor(a) self) -> Tensor(a) + variants: function, method + manual_cpp_binding: True + +- func: _conj_physical(Tensor self) -> Tensor + variants: function, method + dispatch: + CompositeExplicitAutograd: _conj_physical + SparseCsrCPU, SparseCsrCUDA, SparseCsrMPS, SparseCsrMeta: conj_physical_sparse_csr + autogen: _conj_physical.out + tags: pointwise + +- func: conj_physical(Tensor self) -> Tensor + variants: function, method + tags: [pointwise, maybe_aliasing_or_mutating] + +- func: conj_physical.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, CUDA: conj_physical_out + MPS: conj_physical_out_mps + SparseCPU, SparseCUDA, SparseMPS: conj_physical_out_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMPS, SparseCsrMeta: conj_physical_sparse_csr_out + tags: pointwise + +- func: conj_physical_(Tensor(a!) self) -> Tensor(a!) + variants: function, method + dispatch: + CompositeExplicitAutograd: conj_physical_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: conj_physical_sparse_csr_ + tags: pointwise + +- func: resolve_conj(Tensor(a) self) -> Tensor(a) + variants: function, method + +- func: resolve_neg(Tensor(a) self) -> Tensor(a) + variants: function, method + +- func: _neg_view(Tensor(a) self) -> Tensor(a) + variants: function, method + dispatch: + CompositeExplicitAutograd: _neg_view + +- func: acos(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + structured_delegate: acos.out + tags: [core, pointwise] + +- func: acos_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: function, method + structured_delegate: acos.out + tags: pointwise + +- func: acos.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: acos_out + tags: pointwise + +# arccos, alias of acos +- func: arccos(Tensor self) -> Tensor + variants: function, method + +- func: arccos_(Tensor(a!) self) -> Tensor(a!) + variants: function, method + +- func: arccos.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + +- func: avg_pool1d(Tensor self, int[1] kernel_size, int[1] stride=[], int[1] padding=0, bool ceil_mode=False, bool count_include_pad=True) -> Tensor + tags: core + autogen: avg_pool1d.out + +- func: adaptive_avg_pool1d(Tensor self, int[1] output_size) -> Tensor + tags: core + autogen: adaptive_avg_pool1d.out + +# Return: (Tensor output, Tensor indices) +- func: adaptive_max_pool1d(Tensor self, int[1] output_size) -> (Tensor, Tensor) + +- func: add.Tensor(Tensor self, Tensor other, *, Scalar alpha=1) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: add.out + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS, SparseMeta: add_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: add_sparse_csr + MkldnnCPU: mkldnn_add + ZeroTensor: add_zerotensor + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_add_Tensor + tags: [core, pointwise] + +- func: add_.Tensor(Tensor(a!) self, Tensor other, *, Scalar alpha=1) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + structured_delegate: add.out + dispatch: + SparseCPU, SparseCUDA, SparseMPS, SparseMeta: add_sparse_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: add_sparse_csr_ + MkldnnCPU: mkldnn_add_ + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_add__Tensor + tags: pointwise + +- func: add.out(Tensor self, Tensor other, *, Scalar alpha=1, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + ufunc_inner_loop: + Generic: add (AllAndComplex, BFloat16, Half, ComplexHalf) + ScalarOnly: add (Bool) + dispatch: + SparseCPU, SparseMeta: add_out_sparse_cpu + SparseCUDA: add_out_sparse_cuda + SparseMPS: add_out_sparse_mps + SparseCsrCPU, SparseCsrMeta: add_out_sparse_compressed_cpu + SparseCsrCUDA: add_out_sparse_compressed_cuda + MkldnnCPU: mkldnn_add_out + MPS: add_out_mps + MTIA: add_out_mtia + tags: pointwise + +- func: _add_relu.Tensor(Tensor self, Tensor other, *, Scalar alpha=1) -> Tensor + variants: function + dispatch: + CPU: add_relu + +- func: _add_relu_.Tensor(Tensor(a!) self, Tensor other, *, Scalar alpha=1) -> Tensor(a!) + variants: function + dispatch: + CPU: add_relu_ + +- func: _add_relu.out(Tensor self, Tensor other, *, Scalar alpha=1, Tensor(a!) out) -> Tensor(a!) + variants: function + dispatch: + CPU: add_relu_out + +- func: _add_relu.Scalar(Tensor self, Scalar other, Scalar alpha=1) -> Tensor + variants: function + dispatch: + CPU: add_relu + +- func: _add_relu_.Scalar(Tensor(a!) self, Scalar other, Scalar alpha=1) -> Tensor(a!) + variants: function + dispatch: + CPU: add_relu_ + autogen: _add_relu.Scalar_out + +# For C++ only, until we have conversion from C++ numbers to Tensor +- func: add.Scalar(Tensor self, Scalar other, Scalar alpha=1) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CompositeExplicitAutograd: add + tags: [core, pointwise] + +- func: add_.Scalar(Tensor(a!) self, Scalar other, Scalar alpha=1) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + dispatch: + CompositeExplicitAutograd: add_ + autogen: add.Scalar_out + tags: pointwise + +- func: addmv(Tensor self, Tensor mat, Tensor vec, *, Scalar beta=1, Scalar alpha=1) -> Tensor + structured_delegate: addmv.out + variants: function, method + +- func: addmv_(Tensor(a!) self, Tensor mat, Tensor vec, *, Scalar beta=1, Scalar alpha=1) -> Tensor(a!) + structured_delegate: addmv.out + variants: function, method + +- func: addmv.out(Tensor self, Tensor mat, Tensor vec, *, Scalar beta=1, Scalar alpha=1, Tensor(a!) out) -> Tensor(a!) + structured: True + dispatch: + CPU: addmv_out_cpu + CUDA: addmv_out_cuda + MPS: addmv_out_mps + XPU: addmv_out_xpu + SparseCsrCPU: addmv_out_sparse_compressed + SparseCsrCUDA: addmv_out_sparse_compressed_cuda + +- func: addr(Tensor self, Tensor vec1, Tensor vec2, *, Scalar beta=1, Scalar alpha=1) -> Tensor + variants: function, method + dispatch: + CPU, CUDA: addr + MPS: addr_mps + CompositeExplicitAutograd: math_addr + +- func: addr_(Tensor(a!) self, Tensor vec1, Tensor vec2, *, Scalar beta=1, Scalar alpha=1) -> Tensor(a!) + variants: method + dispatch: + CompositeExplicitAutograd: addr_ + +- func: addr.out(Tensor self, Tensor vec1, Tensor vec2, *, Scalar beta=1, Scalar alpha=1, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, CUDA: addr_out + MPS: addr_out_mps + CompositeExplicitAutograd: math_addr_out + +- func: affine_grid_generator(Tensor theta, SymInt[] size, bool align_corners) -> Tensor + variants: function + dispatch: + CompositeExplicitAutograd: affine_grid_generator + autogen: affine_grid_generator.out + +- func: affine_grid_generator_backward(Tensor grad, SymInt[] size, bool align_corners) -> Tensor + variants: function + +- func: _is_all_true(Tensor self) -> Tensor + variants: function, method + dispatch: + CompositeExplicitAutograd: _is_all_true + +- func: _is_any_true(Tensor self) -> Tensor + variants: function, method + dispatch: + CompositeExplicitAutograd: _is_any_true + +# Note: this function is only for testing. +- func: _test_check_tensor(Tensor self) -> Tensor + variants: function + +# Note; this function is only for testing +- func: _test_functorch_fallback(Tensor self, Tensor other) -> Tensor + variants: function + dispatch: + CPU: _test_functorch_fallback + autogen: _test_functorch_fallback.out + +- func: all.dim(Tensor self, int dim, bool keepdim=False) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: all.out + variants: function, method + dispatch: + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_all + tags: reduction + + +- func: all.dims(Tensor self, int[]? dim=None, bool keepdim=False) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: all.dims_out + variants: function, method + cpp_no_default_args: ['dim'] + dispatch: + CompositeExplicitAutograd: all_dims_default + tags: reduction + +- func: all.out(Tensor self, int dim, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + dispatch: + CPU, CUDA: all_out + MPS: all_out_mps + MTIA: all_out_mtia + tags: reduction + +- func: all.dims_out(Tensor self, int[]? dim=None, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + dispatch: + CPU, CUDA: all_dims_out + CompositeExplicitAutograd: all_dims_out_default + cpp_no_default_args: ['dim'] + tags: reduction + +- func: all.dimname(Tensor self, Dimname dim, bool keepdim=False) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + tags: reduction + +- func: all.dimname_out(Tensor self, Dimname dim, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + tags: reduction + +- func: allclose(Tensor self, Tensor other, float rtol=1e-05, float atol=1e-08, bool equal_nan=False) -> bool + variants: function, method + tags: data_dependent_output + dispatch: + CompositeExplicitAutograd: allclose + +- func: any.dim(Tensor self, int dim, bool keepdim=False) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: any.out + variants: function, method + tags: [core, reduction] + +- func: any.dims(Tensor self, int[]? dim=None, bool keepdim=False) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: any.dims_out + variants: function, method + cpp_no_default_args: ['dim'] + tags: [core, reduction] + dispatch: + CompositeExplicitAutograd: any_dims_default + +- func: any.out(Tensor self, int dim, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + dispatch: + CPU, CUDA: any_out + MPS: any_out_mps + tags: reduction + +- func: any.dims_out(Tensor self, int[]? dim=None, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + dispatch: + CPU, CUDA: any_dims_out + CompositeExplicitAutograd: any_dims_out_default + cpp_no_default_args: ['dim'] + tags: reduction + +- func: any.dimname(Tensor self, Dimname dim, bool keepdim=False) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + tags: reduction + +- func: any.dimname_out(Tensor self, Dimname dim, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + tags: reduction + +- func: arange(Scalar end, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CompositeExplicitAutograd: arange + +- func: arange.start(Scalar start, Scalar end, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CompositeExplicitAutograd: arange + +# This operator should be named `arange.start_out` if following the naming convention. However that +# name is already taken. Disabled because of CI job failures. +# FIXME: enable this +#- func: arange.start_out_(Scalar start, Scalar end, *, Tensor(a!) out) -> Tensor(a!) +# dispatch: +# CompositeExplicitAutograd: arange_start_out + +- func: arange.start_step(Scalar start, Scalar end, Scalar step=1, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CompositeExplicitAutograd: arange + cpp_no_default_args: ['step'] + tags: core + +- func: arange.out(Scalar end, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: arange_out + +- func: arange.start_out(Scalar start, Scalar end, Scalar step=1, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, Meta: arange_out + CUDA: arange_cuda_out + MPS: arange_mps_out + MTIA: arange_mtia_out + cpp_no_default_args: ['step'] + +# This function is a temporary hack to allow tracing of arange like constructs with dynamic +# bounds on arange. Normal arange is not traceable because it does not take any tensor inputs; +# if the range you need is based on another tensor, calling this function directly will +# preserve tracing. Get rid of this when arange can directly take tensors for bounds +# (so that it can be traced directly). +- func: _dim_arange(Tensor like, int dim) -> Tensor + +- func: argmax(Tensor self, int? dim=None, bool keepdim=False) -> Tensor + structured_delegate: argmax.out + device_check: NoCheck # TensorIterator + variants: function, method + tags: [core, reduction] + +- func: argmax.out(Tensor self, int? dim=None, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!) + structured: True + dispatch: + CPU, CUDA: argmax_out + MPS: argmax_out_mps + tags: reduction + +- func: argmin(Tensor self, int? dim=None, bool keepdim=False) -> Tensor + structured_delegate: argmin.out + device_check: NoCheck # TensorIterator + variants: function, method + tags: [core, reduction] + +- func: argmin.out(Tensor self, int? dim=None, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!) + structured: True + dispatch: + CPU, CUDA: argmin_out + MPS: argmin_out_mps + tags: reduction + +- func: acosh(Tensor self) -> Tensor + variants: function, method + structured_delegate: acosh.out + tags: [core, pointwise] + +- func: acosh_(Tensor(a!) self) -> Tensor(a!) + variants: function, method + structured_delegate: acosh.out + tags: pointwise + +- func: acosh.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA: acosh_out + MPS: acosh_out_mps + tags: pointwise +# arccosh, alias for acosh + +- func: arccosh(Tensor self) -> Tensor + variants: function, method + +- func: arccosh_(Tensor(a!) self) -> Tensor(a!) + variants: function, method + +- func: arccosh.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + +- func: asinh(Tensor self) -> Tensor + variants: function, method + structured_delegate: asinh.out + dispatch: + SparseCPU, SparseCUDA, SparseMPS: asinh_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: asinh_sparse_csr + tags: [core, pointwise] + +- func: asinh_(Tensor(a!) self) -> Tensor(a!) + variants: function, method + structured_delegate: asinh.out + dispatch: + SparseCPU, SparseCUDA, SparseMPS: asinh_sparse_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: asinh_sparse_csr_ + tags: pointwise + +- func: asinh.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA: asinh_out + MPS: asinh_out_mps + SparseCPU, SparseCUDA, SparseMPS: asinh_sparse_out + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: asinh_sparse_csr_out + tags: pointwise + +# arcsinh, alias for asinh +- func: arcsinh(Tensor self) -> Tensor + variants: function, method + +- func: arcsinh_(Tensor(a!) self) -> Tensor(a!) + variants: function, method + +- func: arcsinh.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + +- func: atanh(Tensor self) -> Tensor + structured_delegate: atanh.out + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: atanh_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: atanh_sparse_csr + tags: [core, pointwise] + +- func: atanh_(Tensor(a!) self) -> Tensor(a!) + structured_delegate: atanh.out + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: atanh_sparse_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: atanh_sparse_csr_ + tags: pointwise + +- func: atanh.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA: atanh_out + MPS: atanh_out_mps + SparseCPU, SparseCUDA, SparseMPS: atanh_sparse_out + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: atanh_sparse_csr_out + tags: pointwise +# arctanh, alias for atanh + +- func: arctanh(Tensor self) -> Tensor + variants: function, method + +- func: arctanh_(Tensor(a!) self) -> Tensor(a!) + variants: function, method + +- func: arctanh.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + +- func: as_strided(Tensor(a) self, SymInt[] size, SymInt[] stride, SymInt? storage_offset=None) -> Tensor(a) + variants: function, method + dispatch: + ZeroTensor, CPU, CUDA, MTIA, MPS: as_strided_tensorimpl + Meta: as_strided_tensorimpl_meta_symint + QuantizedCPU, QuantizedCUDA: as_strided_qtensorimpl + device_check: NoCheck + device_guard: False + tags: core + +- func: as_strided_(Tensor(a!) self, SymInt[] size, SymInt[] stride, SymInt? storage_offset=None) -> Tensor(a!) + use_const_ref_for_mutable_tensors: True + variants: function, method + device_check: NoCheck + device_guard: False + tags: inplace_view + dispatch: + CompositeExplicitAutogradNonFunctional: as_strided__symint + +- func: asin(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + structured_delegate: asin.out + dispatch: + SparseCPU, SparseCUDA, SparseMPS: asin_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: asin_sparse_csr + tags: [core, pointwise] + +- func: asin_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: function, method + structured_delegate: asin.out + dispatch: + SparseCPU, SparseCUDA, SparseMPS: asin_sparse_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: asin_sparse_csr_ + tags: pointwise + +- func: asin.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: asin_out + SparseCPU, SparseCUDA, SparseMPS: asin_sparse_out + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: asin_sparse_csr_out + tags: pointwise + +# arcsin, alias of asin +- func: arcsin(Tensor self) -> Tensor + variants: function, method + +- func: arcsin_(Tensor(a!) self) -> Tensor(a!) + variants: function, method + +- func: arcsin.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + +- func: atan(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: atan.out + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: atan_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: atan_sparse_csr + tags: [core, pointwise] + +- func: atan_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: atan.out + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: atan_sparse_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: atan_sparse_csr_ + tags: pointwise + +- func: atan.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: atan_out + SparseCPU, SparseCUDA, SparseMPS: atan_sparse_out + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: atan_sparse_csr_out + tags: pointwise + +# arctan, alias of atan +- func: arctan(Tensor self) -> Tensor + variants: function, method + +- func: arctan_(Tensor(a!) self) -> Tensor(a!) + variants: function, method + +- func: arctan.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + +- func: atleast_1d(Tensor self) -> Tensor + variants: function + tags: maybe_aliasing_or_mutating + +- func: atleast_1d.Sequence(Tensor[] tensors) -> Tensor[] + +- func: atleast_2d(Tensor self) -> Tensor + variants: function + tags: maybe_aliasing_or_mutating + +- func: atleast_2d.Sequence(Tensor[] tensors) -> Tensor[] + variants: function + +- func: atleast_3d(Tensor self) -> Tensor + variants: function + tags: maybe_aliasing_or_mutating + +- func: atleast_3d.Sequence(Tensor[] tensors) -> Tensor[] + variants: function + +- func: baddbmm(Tensor self, Tensor batch1, Tensor batch2, *, Scalar beta=1, Scalar alpha=1) -> Tensor + variants: function, method + structured_delegate: baddbmm.out + +- func: baddbmm_(Tensor(a!) self, Tensor batch1, Tensor batch2, *, Scalar beta=1, Scalar alpha=1) -> Tensor(a!) + variants: method + structured_delegate: baddbmm.out + +- func: baddbmm.out(Tensor self, Tensor batch1, Tensor batch2, *, Scalar beta=1, Scalar alpha=1, Tensor(a!) out) -> Tensor(a!) + structured: True + variants: function + dispatch: + CPU: baddbmm_out_cpu + CUDA: baddbmm_out_cuda + MPS: baddbmm_out_mps + XPU: baddbmm_out_xpu + MTIA: baddbmm_out_mtia + SparseCsrCUDA: baddbmm_out_sparse_csr_cuda + +- func: baddbmm.dtype(Tensor self, Tensor batch1, Tensor batch2, ScalarType out_dtype, *, Scalar beta=1, Scalar alpha=1) -> Tensor + variants: function + dispatch: + CUDA: _baddbmm_dtype_cuda + XPU: _baddbmm_dtype_xpu + +- func: baddbmm.dtype_out(Tensor self, Tensor batch1, Tensor batch2, ScalarType out_dtype, *, Scalar beta=1, Scalar alpha=1, Tensor(a!) out) -> Tensor(a!) + variants: function + dispatch: + CUDA: _baddbmm_out_dtype_cuda + XPU: _baddbmm_out_dtype_xpu + +- func: bartlett_window(int window_length, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CompositeExplicitAutograd: bartlett_window + autogen: bartlett_window.out + +- func: bartlett_window.periodic(int window_length, bool periodic, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CompositeExplicitAutograd: bartlett_window + autogen: bartlett_window.periodic_out + +- func: batch_norm(Tensor input, Tensor? weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, float momentum, float eps, bool cudnn_enabled) -> Tensor + tags: maybe_aliasing_or_mutating + +- func: quantized_batch_norm(Tensor input, Tensor? weight, Tensor? bias, Tensor mean, Tensor var, float eps, float output_scale, int output_zero_point) -> Tensor + dispatch: + QuantizedCPU: quantized_batch_norm + autogen: quantized_batch_norm.out + +- func: _batch_norm_impl_index(Tensor input, Tensor? weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, float momentum, float eps, bool cudnn_enabled) -> (Tensor, Tensor, Tensor, Tensor, int) + tags: maybe_aliasing_or_mutating + +- func: _batch_norm_impl_index_backward(int impl_index, Tensor input, Tensor grad_output, Tensor? weight, Tensor? running_mean, Tensor? running_var, Tensor? save_mean, Tensor? save_var_transform, bool train, float eps, bool[3] output_mask, Tensor reservedSpace) -> (Tensor, Tensor, Tensor) + +# Sample bernoulli with values in `self` as probability. +- func: bernoulli(Tensor self, *, Generator? generator=None) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CompositeExplicitAutograd: bernoulli + tags: nondeterministic_seeded + +- func: bernoulli.out(Tensor self, *, Generator? generator=None, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: function + tags: nondeterministic_seeded + dispatch: + CPU, CUDA: bernoulli_out + MPS: bernoulli_out_mps + +- func: bernoulli_.Tensor(Tensor(a!) self, Tensor p, *, Generator? generator=None) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + tags: nondeterministic_seeded + dispatch: + CPU, CUDA: bernoulli_ + MPS: bernoulli_mps_ + autogen: bernoulli.Tensor, bernoulli.Tensor_out + +- func: bernoulli_.float(Tensor(a!) self, float p=0.5, *, Generator? generator=None) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + tags: nondeterministic_seeded + dispatch: + CPU, CUDA: bernoulli_ + MPS: bernoulli_mps_ + autogen: bernoulli.float_out + +# Note [bernoulli.p schema] +# We should probably just fix the overload ambiguity by appending a _functional to the C++ API name (BC breaking) +# This out-of-place version isn't used explicitly, but needed by jit. +# There is no default valid on `p` here because it would introduce ambiguity +# with `bernoulli(Tensor self, *, Generator? generator=None)` declaration. +- func: bernoulli.p(Tensor self, float p, *, Generator? generator=None) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + tags: nondeterministic_seeded + dispatch: + CompositeExplicitAutogradNonFunctional: bernoulli + +- func: bilinear(Tensor input1, Tensor input2, Tensor weight, Tensor? bias=None) -> Tensor + +- func: binary_cross_entropy(Tensor self, Tensor target, Tensor? weight=None, int reduction=Mean) -> Tensor + device_check: NoCheck # TensorIterator + python_module: nn + variants: function + dispatch: + CPU: binary_cross_entropy_cpu + CUDA: binary_cross_entropy_cuda + MPS: binary_cross_entropy_mps + +- func: binary_cross_entropy.out(Tensor self, Tensor target, Tensor? weight=None, int reduction=Mean, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + python_module: nn + variants: function + dispatch: + CPU: binary_cross_entropy_out_cpu + CUDA: binary_cross_entropy_out_cuda + MPS: binary_cross_entropy_out_mps + +- func: binary_cross_entropy_backward(Tensor grad_output, Tensor self, Tensor target, Tensor? weight=None, int reduction=Mean) -> Tensor + python_module: nn + variants: function + dispatch: + CPU: binary_cross_entropy_backward_cpu + CUDA: binary_cross_entropy_backward_cuda + MPS: binary_cross_entropy_backward_mps + +- func: binary_cross_entropy_backward.grad_input(Tensor grad_output, Tensor self, Tensor target, Tensor? weight=None, int reduction=Mean, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + variants: function + dispatch: + CPU: binary_cross_entropy_backward_out_cpu + CUDA: binary_cross_entropy_backward_out_cuda + MPS: binary_cross_entropy_backward_out_mps + +- func: binary_cross_entropy_with_logits(Tensor self, Tensor target, Tensor? weight=None, Tensor? pos_weight=None, int reduction=Mean) -> Tensor + device_check: NoCheck # TensorIterator + variants: function + dispatch: + CompositeExplicitAutograd: binary_cross_entropy_with_logits + autogen: binary_cross_entropy_with_logits.out + +- func: bincount(Tensor self, Tensor? weights=None, SymInt minlength=0) -> Tensor + variants: function, method + dispatch: + CPU: _bincount_cpu + CUDA: _bincount_cuda + MPS: _bincount_mps + tags: dynamic_output_shape + autogen: bincount.out + +- func: bitwise_not(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: bitwise_not.out + variants: function, method + tags: [core, pointwise] + +- func: bitwise_not_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: bitwise_not.out + variants: method + tags: pointwise + +- func: bitwise_not.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS, MTIA: bitwise_not_out + tags: pointwise + +- func: copysign.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: copysign_out + tags: pointwise + +- func: copysign.Tensor(Tensor self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + structured_delegate: copysign.out + tags: pointwise + +- func: copysign_.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + structured_delegate: copysign.out + +- func: copysign.Scalar(Tensor self, Scalar other) -> Tensor + variants: function, method + dispatch: + CompositeExplicitAutograd: copysign + tags: pointwise + +- func: copysign_.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + variants: method + dispatch: + CompositeExplicitAutograd: copysign_ + +- func: copysign.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: copysign_out + tags: pointwise + +- func: _lazy_clone(Tensor self) -> Tensor + # Like clone, but the copy takes place lazily, only if either the + # input or the output are written. + variants: function, method + dispatch: + CompositeExplicitAutograd: _lazy_clone + +- func: logical_not(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CompositeExplicitAutograd: logical_not + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_logical_not + tags: [core, pointwise] + +- func: logical_not_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + dispatch: + CompositeExplicitAutograd: logical_not_ + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_logical_not_ + tags: pointwise + +- func: logical_not.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA, MTIA: logical_not_out + MPS: logical_not_out_mps + tags: pointwise + +- func: logical_xor(Tensor self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CompositeExplicitAutograd: logical_xor + tags: [core, pointwise] + +- func: logical_xor_(Tensor(a!) self, Tensor other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + dispatch: + CompositeExplicitAutograd: logical_xor_ + tags: pointwise + +- func: logical_xor.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA, MTIA: logical_xor_out + MPS: logical_xor_out_mps + tags: pointwise + +- func: logical_and(Tensor self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CompositeExplicitAutograd: logical_and + tags: [core, pointwise] + +- func: logical_and_(Tensor(a!) self, Tensor other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + dispatch: + CompositeExplicitAutograd: logical_and_ + tags: pointwise + +- func: logical_and.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA, MTIA: logical_and_out + MPS: logical_and_out_mps + tags: pointwise + +- func: logical_or(Tensor self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CompositeExplicitAutograd: logical_or + tags: [core, pointwise] + +- func: logical_or_(Tensor(a!) self, Tensor other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + dispatch: + CompositeExplicitAutograd: logical_or_ + tags: pointwise + +- func: logical_or.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA, MTIA: logical_or_out + MPS: logical_or_out_mps + tags: pointwise + +- func: blackman_window(int window_length, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CompositeExplicitAutograd: blackman_window + autogen: blackman_window.out + +- func: blackman_window.periodic(int window_length, bool periodic, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CompositeExplicitAutograd: blackman_window + autogen: blackman_window.periodic_out + +- func: bmm(Tensor self, Tensor mat2) -> Tensor + structured_delegate: bmm.out + variants: function, method + dispatch: + SparseCPU: bmm_sparse_cpu + SparseCUDA: bmm_sparse_cuda + SparseMPS: bmm_sparse_mps + NestedTensorCPU: bmm_nested + NestedTensorCUDA: bmm_nested_cuda + tags: core + +- func: bmm.out(Tensor self, Tensor mat2, *, Tensor(a!) out) -> Tensor(a!) + structured: True + variants: function + dispatch: + CPU: bmm_out_cpu + CUDA: bmm_out_cuda + MPS: bmm_out_mps + XPU: bmm_out_xpu + MTIA: bmm_out_mtia + SparseCPU: bmm_out_sparse_cpu + SparseCUDA: bmm_out_sparse_cuda + SparseMPS: bmm_out_sparse_mps + SparseCsrCUDA: bmm_out_sparse_csr_cuda + +- func: bmm.dtype(Tensor self, Tensor mat2, ScalarType out_dtype) -> Tensor + variants: function + dispatch: + CUDA: _bmm_dtype_cuda + XPU: _bmm_dtype_xpu + +- func: bmm.dtype_out(Tensor self, Tensor mat2, ScalarType out_dtype, *, Tensor(a!) out) -> Tensor(a!) + variants: function + dispatch: + CUDA: _bmm_out_dtype_cuda + XPU: _bmm_out_dtype_xpu + +- func: broadcast_tensors(Tensor[] tensors) -> Tensor[] + device_check: NoCheck + device_guard: False + +- func: broadcast_to(Tensor(a) self, SymInt[] size) -> Tensor(a) + variants: function, method + dispatch: + CompositeImplicitAutograd: broadcast_to_symint + +- func: _sparse_broadcast_to(Tensor(a) self, int[] size) -> Tensor(a) + variants: function + dispatch: + SparseCPU, SparseCUDA, SparseMPS: sparse_broadcast_to + +- func: cat(Tensor[] tensors, int dim=0) -> Tensor + structured_delegate: cat.out + dispatch: + SparseCPU, SparseCUDA, SparseMPS: cat_sparse + QuantizedCPU: cat_quantized_cpu + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: cat_nested + tags: core + +- func: cat.out(Tensor[] tensors, int dim=0, *, Tensor(a!) out) -> Tensor(a!) + structured: True + precomputed: + - dim -> int dim, int valid, bool all_contiguous, bool all_same_dtype, bool all_same_sizes_and_stride, MemoryFormat memory_format + dispatch: + CPU: cat_out_cpu + CUDA: cat_out_cuda + MPS: cat_out_mps + QuantizedCPU: cat_out_quantized_cpu + +- func: cat.names(Tensor[] tensors, Dimname dim) -> Tensor + +- func: cat.names_out(Tensor[] tensors, Dimname dim, *, Tensor(a!) out) -> Tensor(a!) + +# alias for torch.cat +- func: concat(Tensor[] tensors, int dim=0) -> Tensor + +- func: concat.out(Tensor[] tensors, int dim=0, *, Tensor(a!) out) -> Tensor(a!) + +- func: concat.names(Tensor[] tensors, Dimname dim) -> Tensor + +- func: concat.names_out(Tensor[] tensors, Dimname dim, *, Tensor(a!) out) -> Tensor(a!) + +# alias for torch.cat +- func: concatenate(Tensor[] tensors, int dim=0) -> Tensor + +- func: concatenate.out(Tensor[] tensors, int dim=0, *, Tensor(a!) out) -> Tensor(a!) + +- func: concatenate.names(Tensor[] tensors, Dimname dim) -> Tensor + +- func: concatenate.names_out(Tensor[] tensors, Dimname dim, *, Tensor(a!) out) -> Tensor(a!) + +- func: block_diag(Tensor[] tensors) -> Tensor + variants: function + dispatch: + CompositeExplicitAutograd: block_diag + autogen: block_diag.out + +- func: ceil(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: ceil.out + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: ceil_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: ceil_sparse_csr + tags: [core, pointwise] + +- func: ceil_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: ceil.out + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: ceil_sparse_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: ceil_sparse_csr_ + tags: pointwise + +- func: ceil.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: ceil_out + SparseCPU, SparseCUDA, SparseMPS: ceil_sparse_out + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: ceil_sparse_csr_out + tags: pointwise + +# alias for torch.linalg.multi_dot +- func: chain_matmul(Tensor[] matrices) -> Tensor + variants: function + +# alias for torch.linalg.multi_dot +- func: chain_matmul.out(Tensor[] matrices, *, Tensor(a!) out) -> Tensor(a!) + +- func: unsafe_chunk(Tensor self, int chunks, int dim=0) -> Tensor[] + variants: function, method + device_check: NoCheck + device_guard: False + tags: maybe_aliasing_or_mutating + +- func: chunk(Tensor(a -> *) self, int chunks, int dim=0) -> Tensor(a)[] + variants: function, method + device_check: NoCheck + device_guard: False + dispatch: + CompositeImplicitAutograd: chunk + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: chunk_nested_tensor + +- func: tensor_split.sections(Tensor(a -> *) self, SymInt sections, int dim=0) -> Tensor(a)[] + variants: function, method + dispatch: + CompositeImplicitAutograd: tensor_split_sections_symint + +- func: tensor_split.indices(Tensor(a -> *) self, SymInt[] indices, int dim=0) -> Tensor(a)[] + variants: function, method + dispatch: + CompositeImplicitAutograd: tensor_split_indices_symint + +- func: tensor_split.tensor_indices_or_sections(Tensor(a -> *) self, Tensor tensor_indices_or_sections, int dim=0) -> Tensor(a)[] + variants: function, method + +- func: clamp(Tensor self, Scalar? min=None, Scalar? max=None) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + cpp_no_default_args: ['min'] + structured_delegate: clamp.out + dispatch: + QuantizedCPU: clamp_quantized_cpu + tags: [core, pointwise] + +- func: clamp.Tensor(Tensor self, Tensor? min=None, Tensor? max=None) -> Tensor + variants: function, method + structured_delegate: clamp.Tensor_out + tags: [core, pointwise] + +- func: clamp_(Tensor(a!) self, Scalar? min=None, Scalar? max=None) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: function, method + cpp_no_default_args: ['min'] + structured_delegate: clamp.out + tags: pointwise + +- func: clamp_.Tensor(Tensor(a!) self, Tensor? min=None, Tensor? max=None) -> Tensor(a!) + variants: function, method + structured_delegate: clamp.Tensor_out + tags: pointwise + +- func: clamp.out(Tensor self, Scalar? min=None, Scalar? max=None, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + cpp_no_default_args: ['min'] + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MTIA, MPS: clamp_out + tags: pointwise + +- func: clamp.Tensor_out(Tensor self, Tensor? min=None, Tensor? max=None, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: clamp_Tensor_out + tags: pointwise + +- func: clamp_max(Tensor self, Scalar max) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + structured_delegate: clamp_max.out + tags: pointwise + +- func: clamp_max.Tensor(Tensor self, Tensor max) -> Tensor + variants: function, method + structured_delegate: clamp_max.Tensor_out + tags: pointwise + +- func: clamp_max_(Tensor(a!) self, Scalar max) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: function, method + structured_delegate: clamp_max.out + tags: pointwise + +- func: clamp_max_.Tensor(Tensor(a!) self, Tensor max) -> Tensor(a!) + variants: function, method + structured_delegate: clamp_max.Tensor_out + tags: pointwise + +- func: clamp_max.out(Tensor self, Scalar max, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MTIA, MPS: clamp_max_out + tags: pointwise + +- func: clamp_max.Tensor_out(Tensor self, Tensor max, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: clamp_max_Tensor_out + tags: pointwise + +- func: clamp_min(Tensor self, Scalar min) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + structured_delegate: clamp_min.out + tags: pointwise + +- func: clamp_min.Tensor(Tensor self, Tensor min) -> Tensor + variants: function, method + structured_delegate: clamp_min.Tensor_out + tags: pointwise + +- func: clamp_min_(Tensor(a!) self, Scalar min) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: function, method + structured_delegate: clamp_min.out + tags: pointwise + +- func: clamp_min_.Tensor(Tensor(a!) self, Tensor min) -> Tensor(a!) + variants: function, method + structured_delegate: clamp_min.Tensor_out + tags: pointwise + +- func: clamp_min.out(Tensor self, Scalar min, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MTIA, MPS: clamp_min_out + tags: pointwise + +- func: clamp_min.Tensor_out(Tensor self, Tensor min, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: clamp_min_Tensor_out + tags: pointwise + +# clip is an alias for clamp +- func: clip(Tensor self, Scalar? min=None, Scalar? max=None) -> Tensor + cpp_no_default_args: ['min'] + variants: function, method + tags: pointwise + +- func: clip.Tensor(Tensor self, Tensor? min=None, Tensor? max=None) -> Tensor + variants: function, method + tags: pointwise + +- func: clip_(Tensor(a!) self, Scalar? min=None, Scalar? max=None) -> Tensor(a!) + cpp_no_default_args: ['min'] + variants: function, method + tags: pointwise + +- func: clip_.Tensor(Tensor(a!) self, Tensor? min=None, Tensor? max=None) -> Tensor(a!) + variants: function, method + tags: pointwise + +- func: clip.out(Tensor self, Scalar? min=None, Scalar? max=None, *, Tensor(a!) out) -> Tensor(a!) + cpp_no_default_args: ['min'] + tags: pointwise + +- func: clip.Tensor_out(Tensor self, Tensor? min=None, Tensor? max=None, *, Tensor(a!) out) -> Tensor(a!) + +- func: cudnn_is_acceptable(Tensor self) -> bool + device_check: NoCheck + device_guard: False + +- func: complex(Tensor real, Tensor imag) -> Tensor + variants: function + dispatch: + CompositeExplicitAutograd: complex + +- func: complex.out(Tensor real, Tensor imag, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, CUDA, MPS: complex_out + +- func: polar(Tensor abs, Tensor angle) -> Tensor + variants: function + dispatch: + CompositeExplicitAutograd: polar + +- func: polar.out(Tensor abs, Tensor angle, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, CUDA, MPS: polar_out + +- func: constant_pad_nd(Tensor self, SymInt[] pad, Scalar value=0) -> Tensor + variants: function + dispatch: + CompositeExplicitAutograd: constant_pad_nd + MPS: constant_pad_nd_mps + autogen: constant_pad_nd.out + tags: core + +- func: contiguous(Tensor(a) self, *, MemoryFormat memory_format=contiguous_format) -> Tensor(a) + variants: method + manual_cpp_binding: True + +- func: convolution(Tensor input, Tensor weight, Tensor? bias, SymInt[] stride, SymInt[] padding, SymInt[] dilation, bool transposed, SymInt[] output_padding, SymInt groups) -> Tensor + dispatch: + CompositeExplicitAutograd: convolution + autogen: convolution.out + tags: core + +- func: convolution_backward(Tensor grad_output, Tensor input, Tensor weight, SymInt[]? bias_sizes, SymInt[] stride, SymInt[] padding, SymInt[] dilation, bool transposed, SymInt[] output_padding, SymInt groups, bool[3] output_mask) -> (Tensor, Tensor, Tensor) + dispatch: + CompositeExplicitAutograd, CUDA: convolution_backward + autogen: convolution_backward.out + tags: core + +- func: convolution_overrideable(Tensor input, Tensor weight, Tensor? bias, SymInt[] stride, SymInt[] padding, SymInt[] dilation, bool transposed, SymInt[] output_padding, SymInt groups) -> Tensor + dispatch: + CompositeExplicitAutograd: convolution_overrideable + autogen: convolution_overrideable.out + +- func: convolution_backward_overrideable(Tensor grad_output, Tensor input, Tensor weight, SymInt[] stride, SymInt[] padding, SymInt[] dilation, bool transposed, SymInt[] output_padding, SymInt groups, bool[3] output_mask) -> (Tensor grad_input, Tensor grad_weight, Tensor grad_bias) + dispatch: + CompositeExplicitAutograd: convolution_backward_overrideable + autogen: convolution_backward_overrideable.out + +- func: _convolution(Tensor input, Tensor weight, Tensor? bias, SymInt[] stride, SymInt[] padding, SymInt[] dilation, bool transposed, SymInt[] output_padding, SymInt groups, bool benchmark, bool deterministic, bool cudnn_enabled, bool allow_tf32) -> Tensor + dispatch: + CompositeExplicitAutograd: _convolution + autogen: _convolution.out + +- func: _convolution.deprecated(Tensor input, Tensor weight, Tensor? bias, SymInt[] stride, SymInt[] padding, SymInt[] dilation, bool transposed, int[] output_padding, SymInt groups, bool benchmark, bool deterministic, bool cudnn_enabled) -> Tensor + +- func: _convolution_mode(Tensor input, Tensor weight, Tensor? bias, SymInt[] stride, str padding, SymInt[] dilation, SymInt groups) -> Tensor + dispatch: + CompositeImplicitAutograd: _convolution_mode_symint + +- func: _convolution_double_backward(Tensor? ggI, Tensor? ggW, Tensor? ggb, Tensor gO, Tensor weight, Tensor self, SymInt[] stride, SymInt[] padding, SymInt[] dilation, bool transposed, SymInt[] output_padding, SymInt groups, bool[3] output_mask) -> (Tensor, Tensor, Tensor) + +- func: conv1d(Tensor input, Tensor weight, Tensor? bias=None, SymInt[1] stride=1, SymInt[1] padding=0, SymInt[1] dilation=1, SymInt groups=1) -> Tensor + dispatch: + CompositeImplicitAutograd: conv1d_symint + +- func: conv2d(Tensor input, Tensor weight, Tensor? bias=None, SymInt[2] stride=1, SymInt[2] padding=0, SymInt[2] dilation=1, SymInt groups=1) -> Tensor + dispatch: + CompositeImplicitAutograd: conv2d_symint + +- func: conv3d(Tensor input, Tensor weight, Tensor? bias=None, SymInt[3] stride=1, SymInt[3] padding=0, SymInt[3] dilation=1, SymInt groups=1) -> Tensor + dispatch: + CompositeImplicitAutograd: conv3d_symint + +- func: conv1d.padding(Tensor input, Tensor weight, Tensor? bias=None, SymInt[1] stride=1, str padding="valid", SymInt[1] dilation=1, SymInt groups=1) -> Tensor + cpp_no_default_args: ['bias', 'stride', 'padding'] + dispatch: + CompositeImplicitAutograd: conv1d_padding_symint + +- func: conv2d.padding(Tensor input, Tensor weight, Tensor? bias=None, SymInt[2] stride=1, str padding="valid", SymInt[2] dilation=1, SymInt groups=1) -> Tensor + cpp_no_default_args: ['bias', 'stride', 'padding'] + dispatch: + CompositeImplicitAutograd: conv2d_padding_symint + +- func: conv3d.padding(Tensor input, Tensor weight, Tensor? bias=None, SymInt[3] stride=1, str padding="valid", SymInt[3] dilation=1, SymInt groups=1) -> Tensor + cpp_no_default_args: ['bias', 'stride', 'padding'] + dispatch: + CompositeImplicitAutograd: conv3d_padding_symint + +- func: conv_tbc(Tensor self, Tensor weight, Tensor bias, int pad=0) -> Tensor + dispatch: + CompositeExplicitAutograd: conv_tbc + autogen: conv_tbc.out + +- func: conv_tbc_backward(Tensor self, Tensor input, Tensor weight, Tensor bias, int pad) -> (Tensor, Tensor, Tensor) + +# NB: we inherit the goofy argument order from PyTorch torch.nn.functional +- func: conv_transpose1d(Tensor input, Tensor weight, Tensor? bias=None, SymInt[1] stride=1, SymInt[1] padding=0, SymInt[1] output_padding=0, SymInt groups=1, SymInt[1] dilation=1) -> Tensor + dispatch: + CompositeImplicitAutograd: conv_transpose1d_symint + +- func: conv_transpose2d.input(Tensor input, Tensor weight, Tensor? bias=None, SymInt[2] stride=1, SymInt[2] padding=0, SymInt[2] output_padding=0, SymInt groups=1, SymInt[2] dilation=1) -> Tensor + dispatch: + CompositeImplicitAutograd: conv_transpose2d_symint + +- func: conv_transpose3d.input(Tensor input, Tensor weight, Tensor? bias=None, SymInt[3] stride=1, SymInt[3] padding=0, SymInt[3] output_padding=0, SymInt groups=1, SymInt[3] dilation=1) -> Tensor + dispatch: + CompositeImplicitAutograd: conv_transpose3d_symint + +- func: copy(Tensor self, Tensor src, bool non_blocking=False) -> Tensor + variants: function + dispatch: + Meta: copy_meta + CompositeExplicitAutogradNonFunctional: copy + tags: core + +- func: copy_(Tensor(a!) self, Tensor src, bool non_blocking=False) -> Tensor(a!) + variants: method + device_check: NoCheck + device_guard: False + dispatch: + MkldnnCPU: copy_mkldnn_ + SparseCPU, SparseCUDA, SparseMPS: copy_sparse_wrapper_ + CompositeExplicitAutograd: copy_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: copy_sparse_compressed_ + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: copy_nested_ + autogen: copy.out + +- func: _copy_from(Tensor self, Tensor dst, bool non_blocking=False) -> Tensor + dispatch: + MPS: _copy_from_mps + autogen: _copy_from.out + +# We need this to be able to properly copy from a CPU to an XLA tensor with different sizes. +# See https://github.com/pytorch/xla/issues/2881 +- func: _copy_from_and_resize(Tensor self, Tensor dst) -> Tensor + dispatch: + MPS: _copy_from_and_resize_mps + autogen: _copy_from_and_resize.out + +- func: cos(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + structured_delegate: cos.out + dispatch: + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_cos + tags: [core, pointwise] + +- func: cos_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: function, method + structured_delegate: cos.out + tags: pointwise + +- func: cos.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS, MTIA: cos_out + tags: pointwise + +- func: cosh(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + structured_delegate: cosh.out + tags: [core, pointwise] + +- func: cosh_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: function, method + structured_delegate: cosh.out + tags: pointwise + +- func: cosh.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: cosh_out + tags: pointwise + +- func: cosine_embedding_loss(Tensor input1, Tensor input2, Tensor target, float margin=0.0, int reduction=Mean) -> Tensor + +- func: count_nonzero.dim_IntList(Tensor self, int[] dim) -> Tensor + variants: function, method + dispatch: + CPU: count_nonzero_cpu + CUDA: count_nonzero_cuda + MPS: count_nonzero_mps + autogen: count_nonzero.dim_IntList_out + tags: reduction + +- func: count_nonzero(Tensor self, int? dim=None) -> Tensor + variants: function, method + dispatch: + CompositeExplicitAutograd: count_nonzero + autogen: count_nonzero.out + tags: reduction + +- func: cov(Tensor self, *, int correction=1, Tensor? fweights=None, Tensor? aweights=None) -> Tensor + variants: function, method + +- func: corrcoef(Tensor self) -> Tensor + variants: function, method + +- func: cudnn_affine_grid_generator(Tensor theta, int N, int C, int H, int W) -> Tensor grid + dispatch: + CUDA: cudnn_affine_grid_generator_forward + autogen: cudnn_affine_grid_generator.out + +# TODO: Why do I have to call this grad?! +- func: cudnn_affine_grid_generator_backward(Tensor grad, int N, int C, int H, int W) -> Tensor grad_theta + dispatch: + CUDA: cudnn_affine_grid_generator_backward + autogen: cudnn_affine_grid_generator_backward.out + +- func: cudnn_batch_norm(Tensor input, Tensor weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, float exponential_average_factor, float epsilon) -> (Tensor, Tensor, Tensor, Tensor) + dispatch: + CUDA: cudnn_batch_norm + +- func: cudnn_batch_norm.out(Tensor input, Tensor weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, float exponential_average_factor, float epsilon, *, Tensor(a!) out0, Tensor(b!) out1, Tensor(c!) out2, Tensor(d!) out3) -> (Tensor(a!), Tensor(b!), Tensor(c!), Tensor(d!)) + dispatch: + CUDA: cudnn_batch_norm_out + +# NB: You can only use this if you used cudnn_batch_norm training=True +- func: cudnn_batch_norm_backward(Tensor input, Tensor grad_output, Tensor weight, Tensor? running_mean, Tensor? running_var, Tensor? save_mean, Tensor? save_var, float epsilon, Tensor reserveSpace) -> (Tensor, Tensor, Tensor) + dispatch: + CUDA: cudnn_batch_norm_backward + autogen: cudnn_batch_norm_backward.out + +- func: cudnn_convolution(Tensor self, Tensor weight, SymInt[] padding, SymInt[] stride, SymInt[] dilation, SymInt groups, bool benchmark, bool deterministic, bool allow_tf32) -> Tensor + dispatch: + CUDA: cudnn_convolution + +- func: cudnn_convolution.out(Tensor self, Tensor weight, SymInt[] padding, SymInt[] stride, SymInt[] dilation, SymInt groups, bool benchmark, bool deterministic, bool allow_tf32, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CUDA: cudnn_convolution_out + +- func: cudnn_convolution_transpose(Tensor self, Tensor weight, SymInt[] padding, SymInt[] output_padding, SymInt[] stride, SymInt[] dilation, SymInt groups, bool benchmark, bool deterministic, bool allow_tf32) -> Tensor + dispatch: + CUDA: cudnn_convolution_transpose + autogen: cudnn_convolution_transpose.out + +- func: _mps_convolution_transpose(Tensor self, Tensor weight, SymInt[] padding, SymInt[] output_padding, SymInt[] stride, SymInt[] dilation, SymInt groups) -> Tensor + dispatch: + MPS: _mps_convolution_transpose + autogen: _mps_convolution_transpose.out + +- func: mps_convolution_transpose_backward(Tensor self, Tensor grad_output, Tensor weight, SymInt[] padding, SymInt[] output_padding, SymInt[] stride, SymInt[] dilation, SymInt groups, bool[2] output_mask) -> (Tensor, Tensor) + dispatch: + MPS: mps_convolution_transpose_backward + autogen: mps_convolution_transpose_backward.out + +- func: cudnn_convolution_relu(Tensor self, Tensor weight, Tensor? bias, SymInt[] stride, SymInt[] padding, SymInt[] dilation, SymInt groups) -> Tensor + dispatch: + CUDA: cudnn_convolution_relu + autogen: cudnn_convolution_relu.out + +- func: cudnn_convolution_add_relu(Tensor self, Tensor weight, Tensor z, Scalar? alpha, Tensor? bias, SymInt[] stride, SymInt[] padding, SymInt[] dilation, SymInt groups) -> Tensor + dispatch: + CUDA: cudnn_convolution_add_relu + autogen: cudnn_convolution_add_relu.out + +# NB: input is special cased in a way I don't quite understand +- func: cudnn_grid_sampler(Tensor self, Tensor grid) -> Tensor output + dispatch: + CUDA: cudnn_grid_sampler_forward + autogen: cudnn_grid_sampler.out + +- func: cudnn_grid_sampler_backward(Tensor self, Tensor grid, Tensor grad_output) -> (Tensor grad_self, Tensor grad_grid) + dispatch: + CUDA: cudnn_grid_sampler_backward + autogen: cudnn_grid_sampler_backward.out + +- func: cummax(Tensor self, int dim) -> (Tensor values, Tensor indices) + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CompositeExplicitAutograd: cummax + +- func: cummax.out(Tensor self, int dim, *, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices) + device_check: NoCheck # TensorIterator + dispatch: + CompositeExplicitAutograd: cummax_out + +- func: cummax.dimname(Tensor self, Dimname dim) -> (Tensor values, Tensor indices) + device_check: NoCheck # TensorIterator + variants: function, method + +- func: cummax.dimname_out(Tensor self, Dimname dim, *, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices) + device_check: NoCheck # TensorIterator + +- func: _cummax_helper(Tensor self, Tensor(a!) values, Tensor(b!) indices, int dim) -> () + variants: function + dispatch: + CPU: cummax_helper_cpu + CUDA: cummax_helper_cuda + MPS: cummax_helper_mps + +- func: cummin(Tensor self, int dim) -> (Tensor values, Tensor indices) + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CompositeExplicitAutograd: cummin + +- func: cummin.out(Tensor self, int dim, *, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices) + device_check: NoCheck # TensorIterator + dispatch: + CompositeExplicitAutograd: cummin_out + +- func: cummin.dimname(Tensor self, Dimname dim) -> (Tensor values, Tensor indices) + device_check: NoCheck # TensorIterator + variants: function, method + +- func: cummin.dimname_out(Tensor self, Dimname dim, *, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices) + device_check: NoCheck # TensorIterator + +- func: _cummin_helper(Tensor self, Tensor(a!) values, Tensor(b!) indices, int dim) -> () + variants: function + dispatch: + CPU: cummin_helper_cpu + CUDA: cummin_helper_cuda + MPS: cummin_helper_mps + +- func: cummaxmin_backward(Tensor grad, Tensor input, Tensor indices, int dim) -> Tensor + variants: function + device_check: NoCheck + device_guard: False + +- func: cumprod(Tensor self, int dim, *, ScalarType? dtype=None) -> Tensor + structured_delegate: cumprod.out + device_check: NoCheck # TensorIterator + variants: function, method + +- func: cumprod_(Tensor(a!) self, int dim, *, ScalarType? dtype=None) -> Tensor(a!) + structured_delegate: cumprod.out + variants: method + +- func: cumprod.out(Tensor self, int dim, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!) + structured: True + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA: cumprod_out + MPS: cumprod_out_mps + +- func: cumprod.dimname(Tensor self, Dimname dim, *, ScalarType? dtype=None) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + +- func: cumprod_.dimname(Tensor(a!) self, Dimname dim, *, ScalarType? dtype=None) -> Tensor(a!) + variants: method + +- func: cumprod.dimname_out(Tensor self, Dimname dim, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + +- func: cumprod_backward(Tensor grad, Tensor input, int dim, Tensor output) -> Tensor + variants: function + device_check: NoCheck + device_guard: False + +- func: cumsum(Tensor self, int dim, *, ScalarType? dtype=None) -> Tensor + structured_delegate: cumsum.out + device_check: NoCheck # TensorIterator + variants: function, method + tags: core + +- func: cumsum_(Tensor(a!) self, int dim, *, ScalarType? dtype=None) -> Tensor(a!) + structured_delegate: cumsum.out + variants: method + +- func: cumsum.out(Tensor self, int dim, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!) + structured: True + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA: cumsum_out + MPS: cumsum_out_mps + +- func: cumsum.dimname(Tensor self, Dimname dim, *, ScalarType? dtype=None) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + +- func: cumsum_.dimname(Tensor(a!) self, Dimname dim, *, ScalarType? dtype=None) -> Tensor(a!) + variants: method + +- func: cumsum.dimname_out(Tensor self, Dimname dim, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + +- func: cumulative_trapezoid.x(Tensor y, Tensor x, *, int dim=-1) -> Tensor + +- func: cumulative_trapezoid.dx(Tensor y, *, Scalar dx=1, int dim=-1) -> Tensor + +- func: ctc_loss.IntList(Tensor log_probs, Tensor targets, int[] input_lengths, int[] target_lengths, int blank=0, int reduction=Mean, bool zero_infinity=False) -> Tensor + +# convenience function that converts to intlists for you +- func: ctc_loss.Tensor(Tensor log_probs, Tensor targets, Tensor input_lengths, Tensor target_lengths, int blank=0, int reduction=Mean, bool zero_infinity=False) -> Tensor + +- func: _ctc_loss(Tensor log_probs, Tensor targets, int[] input_lengths, int[] target_lengths, int blank=0, bool zero_infinity=False) -> (Tensor, Tensor) + dispatch: + CPU: ctc_loss_cpu + CUDA: ctc_loss_gpu + Meta: ctc_loss_meta + autogen: _ctc_loss.out + tags: dynamic_output_shape # the shape of second output is data dependent + +- func: _ctc_loss.Tensor(Tensor log_probs, Tensor targets, Tensor input_lengths, Tensor target_lengths, int blank=0, bool zero_infinity=False) -> (Tensor, Tensor) + dispatch: + CPU, CUDA: ctc_loss_tensor + autogen: _ctc_loss.Tensor_out + tags: dynamic_output_shape # the shape of second output is data dependent + +- func: _ctc_loss_backward(Tensor grad, Tensor log_probs, Tensor targets, int[] input_lengths, int[] target_lengths, Tensor neg_log_likelihood, Tensor log_alpha, int blank, bool zero_infinity=False) -> Tensor + dispatch: + CPU: ctc_loss_backward_cpu + CUDA: ctc_loss_backward_gpu + autogen: _ctc_loss_backward.out + +- func: _ctc_loss_backward.Tensor(Tensor grad, Tensor log_probs, Tensor targets, Tensor input_lengths, Tensor target_lengths, Tensor neg_log_likelihood, Tensor log_alpha, int blank, bool zero_infinity=False) -> Tensor + dispatch: + CPU, CUDA: ctc_loss_backward_tensor + +- func: diag_embed(Tensor self, int offset=0, int dim1=-2, int dim2=-1) -> Tensor + variants: function, method + dispatch: + CompositeExplicitAutogradNonFunctional: diag_embed + autogen: diag_embed.out + +- func: diagflat(Tensor self, int offset=0) -> Tensor + variants: function, method + +- func: diagonal(Tensor(a) self, int offset=0, int dim1=0, int dim2=1) -> Tensor(a) + variants: function, method + dispatch: + CompositeExplicitAutograd: diagonal + tags: core + +- func: linalg_diagonal(Tensor(a) A, *, int offset=0, int dim1=-2, int dim2=-1) -> Tensor(a) + python_module: linalg + variants: function + +- func: diagonal.Dimname(Tensor(a) self, *, Dimname outdim, Dimname dim1, Dimname dim2, int offset=0) -> Tensor(a) + variants: function, method + +- func: diagonal_backward(Tensor grad_output, SymInt[] input_sizes, int offset, int dim1, int dim2) -> Tensor + variants: function + device_check: NoCheck + device_guard: False + dispatch: + CompositeExplicitAutograd: diagonal_backward_symint + autogen: diagonal_backward.out + +- func: fill_diagonal_(Tensor(a!) self, Scalar fill_value, bool wrap=False) -> Tensor(a!) + variants: method + +- func: diff(Tensor self, int n=1, int dim=-1, Tensor? prepend=None, Tensor? append=None) -> Tensor + variants: function, method + +- func: diff.out(Tensor self, int n=1, int dim=-1, Tensor? prepend=None, Tensor? append=None, *, Tensor(a!) out) -> Tensor(a!) + variants: function + +- func: gradient.scalarint(Tensor self, *, Scalar? spacing=None, int? dim=None, int edge_order=1) -> Tensor[] + variants: function + +- func: gradient.scalararray(Tensor self, *, Scalar spacing, int[] dim, int edge_order=1) -> Tensor[] + variants: function + +- func: gradient.array(Tensor self, *, int[] dim, int edge_order=1) -> Tensor[] + variants: function + +- func: gradient.scalarrayint(Tensor self, *, Scalar[] spacing, int? dim=None, int edge_order=1) -> Tensor[] + variants: function + +- func: gradient.scalarrayarray(Tensor self, *, Scalar[] spacing, int[] dim, int edge_order=1) -> Tensor[] + variants: function + +- func: gradient.tensorarrayint(Tensor self, *, Tensor[] spacing, int? dim=None, int edge_order=1) -> Tensor[] + variants: function + +- func: gradient.tensorarray(Tensor self, *, Tensor[] spacing, int[] dim, int edge_order=1) -> Tensor[] + variants: function + +- func: div.Tensor(Tensor self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + structured_delegate: div.out + dispatch: + SparseCPU, SparseCUDA, SparseMPS: div_sparse + ZeroTensor: div_zerotensor + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_div_Tensor + tags: [core, pointwise] + +- func: div_.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + structured_delegate: div.out + dispatch: + SparseCPU, SparseCUDA, SparseMPS: div_sparse_ + tags: pointwise + +- func: div.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS, MTIA: div_out + SparseCPU, SparseCUDA, SparseMPS: div_out_sparse_zerodim + tags: pointwise + +- func: div.Tensor_mode(Tensor self, Tensor other, *, str? rounding_mode) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + structured_delegate: div.out_mode + dispatch: + SparseCPU, SparseCUDA, SparseMPS: div_sparse + tags: [core, pointwise] + +- func: div_.Tensor_mode(Tensor(a!) self, Tensor other, *, str? rounding_mode) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + structured_delegate: div.out_mode + dispatch: + SparseCPU, SparseCUDA, SparseMPS: div_sparse_ + tags: pointwise + +- func: div.out_mode(Tensor self, Tensor other, *, str? rounding_mode, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: div_out_mode + SparseCPU, SparseCUDA, SparseMPS: div_out_sparse_zerodim + tags: pointwise + +# For C++ only, until we have conversion from C++ numbers to Tensor +- func: div.Scalar(Tensor self, Scalar other) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CompositeExplicitAutograd: div + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_div_Scalar + tags: [core, pointwise] + +- func: div_.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + dispatch: + CompositeExplicitAutograd: div_ + autogen: div.Scalar_out + tags: pointwise + +- func: div.Scalar_mode(Tensor self, Scalar other, *, str? rounding_mode) -> Tensor + variants: function, method + dispatch: + CompositeExplicitAutograd: div + tags: [core, pointwise] + +- func: div_.Scalar_mode(Tensor(a!) self, Scalar other, *, str? rounding_mode) -> Tensor(a!) + variants: method + dispatch: + CompositeExplicitAutograd: div_ + autogen: div.Scalar_mode_out + tags: pointwise + +# divide, alias for div +- func: divide.Tensor(Tensor self, Tensor other) -> Tensor + variants: function, method + +- func: divide_.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + variants: method + +- func: divide.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + +- func: divide.Scalar(Tensor self, Scalar other) -> Tensor + variants: function, method + +- func: divide_.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + variants: method + +- func: divide.Tensor_mode(Tensor self, Tensor other, *, str? rounding_mode) -> Tensor + variants: function, method + +- func: divide_.Tensor_mode(Tensor(a!) self, Tensor other, *, str? rounding_mode) -> Tensor(a!) + variants: method + +- func: divide.out_mode(Tensor self, Tensor other, *, str? rounding_mode, Tensor(a!) out) -> Tensor(a!) + +- func: divide.Scalar_mode(Tensor self, Scalar other, *, str? rounding_mode) -> Tensor + variants: function, method + +- func: divide_.Scalar_mode(Tensor(a!) self, Scalar other, *, str? rounding_mode) -> Tensor(a!) + variants: method + + # true_divide, an alias for div +- func: true_divide.Tensor(Tensor self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + tags: pointwise + +- func: true_divide_.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + +- func: true_divide.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + +- func: true_divide.Scalar(Tensor self, Scalar other) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + +- func: true_divide_.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + +- func: dot(Tensor self, Tensor tensor) -> Tensor + variants: function, method + dispatch: + CPU: dot + CUDA: dot_cuda + MPS: dot_mps + +- func: dot.out(Tensor self, Tensor tensor, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: dot_out + +- func: vdot(Tensor self, Tensor other) -> Tensor + variants: function, method + dispatch: + CPU: vdot + CUDA: vdot_cuda + MPS: vdot_mps + +- func: vdot.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: vdot_out + +- func: einsum(str equation, Tensor[] tensors, *, int[]? path=None) -> Tensor + +- func: embedding(Tensor weight, Tensor indices, SymInt padding_idx=-1, bool scale_grad_by_freq=False, bool sparse=False) -> Tensor + dispatch: + CompositeExplicitAutograd: embedding_symint + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_embedding + autogen: embedding.out + tags: core + +- func: embedding_backward(Tensor grad, Tensor indices, SymInt num_weights, SymInt padding_idx, bool scale_grad_by_freq, bool sparse) -> Tensor + dispatch: + CompositeImplicitAutograd: embedding_backward_symint + +- func: embedding_dense_backward(Tensor grad_output, Tensor indices, SymInt num_weights, SymInt padding_idx, bool scale_grad_by_freq) -> Tensor + dispatch: + CPU: embedding_dense_backward_cpu + CUDA: embedding_dense_backward_cuda + MPS: embedding_dense_backward_mps + autogen: embedding_dense_backward.out + tags: core + +- func: embedding_renorm_(Tensor(a!) self, Tensor indices, float max_norm, float norm_type) -> Tensor(a!) + dispatch: + CPU: embedding_renorm_cpu_ + CUDA: embedding_renorm_cuda_ + autogen: embedding_renorm, embedding_renorm.out + +- func: embedding_sparse_backward(Tensor grad, Tensor indices, int num_weights, int padding_idx, bool scale_grad_by_freq) -> Tensor + +# NOTE [ embedding_bag Native Functions ] +# The `_embedding_bag.*` variants assume that input tensors except for `weight`, +# e.g. `indices` and `offsets` (and `offset2bag`), are contiguous. +# We really only need to enforce this for `_embedding_bag` (the forward) because +# the backward inputs are the same as forward ones. +# The above `embedding_bag` wrapper is created to achieve this, e.g., +# applying indices = indices.contiguous(). +# The backward functions apply a check that these input tensors are contiguous. + + +- func: _embedding_bag_forward_only(Tensor weight, Tensor indices, Tensor offsets, bool scale_grad_by_freq=False, int mode=0, bool sparse=False, Tensor? per_sample_weights=None, bool include_last_offset=False, int padding_idx=-1) -> (Tensor, Tensor, Tensor, Tensor) + dispatch: + CPU: _embedding_bag_forward_only_cpu + CUDA: _embedding_bag_forward_only_cuda + MPS: _embedding_bag_forward_only_mps + autogen: _embedding_bag_forward_only.out + +- func: _rowwise_prune(Tensor weight, Tensor mask, ScalarType compressed_indices_dtype) -> (Tensor, Tensor) + +# row_stack is the alias of vstack +- func: row_stack(Tensor[] tensors) -> Tensor + +- func: row_stack.out(Tensor[] tensors, *, Tensor(a!) out) -> Tensor(a!) + +- func: embedding_bag(Tensor weight, Tensor indices, Tensor offsets, bool scale_grad_by_freq=False, int mode=0, bool sparse=False, Tensor? per_sample_weights=None, bool include_last_offset=False) -> (Tensor, Tensor, Tensor, Tensor) + +# To keep backward and forward compatibility, and to avoid ambiguity with the +# original signature above, scale_grad_by_freq, mode, sparse, +# per_sample_weights, and include_last_offset parameters do not have default +# values. Once the original signature is removed, default values can be added. +- func: embedding_bag.padding_idx(Tensor weight, Tensor indices, Tensor offsets, bool scale_grad_by_freq, int mode, bool sparse, Tensor? per_sample_weights, bool include_last_offset, int? padding_idx) -> (Tensor, Tensor, Tensor, Tensor) + +- func: _embedding_bag(Tensor weight, Tensor indices, Tensor offsets, bool scale_grad_by_freq=False, int mode=0, bool sparse=False, Tensor? per_sample_weights=None, bool include_last_offset=False, int padding_idx=-1) -> (Tensor, Tensor, Tensor, Tensor) + dispatch: + CPU: _embedding_bag_cpu + CUDA: _embedding_bag_cuda + MPS: _embedding_bag_mps + autogen: _embedding_bag.out + tags: core + +- func: _embedding_bag_backward(Tensor grad, Tensor indices, Tensor offsets, Tensor offset2bag, Tensor bag_size, Tensor maximum_indices, SymInt num_weights, bool scale_grad_by_freq, int mode, bool sparse, Tensor? per_sample_weights, int padding_idx=-1) -> Tensor + dispatch: + CPU, CUDA, MPS: _embedding_bag_backward_symint + +- func: _embedding_bag_sparse_backward(Tensor grad, Tensor indices, Tensor offsets, Tensor offset2bag, Tensor bag_size, SymInt num_weights, bool scale_grad_by_freq, int mode, Tensor? per_sample_weights, int padding_idx=-1) -> Tensor + dispatch: + CompositeImplicitAutograd: _embedding_bag_sparse_backward_symint + +- func: _embedding_bag_dense_backward(Tensor grad, Tensor indices, Tensor offset2bag, Tensor bag_size, Tensor maximum_indices, SymInt num_weights, bool scale_grad_by_freq, int mode, Tensor? per_sample_weights, int padding_idx=-1) -> Tensor + dispatch: + CPU: _embedding_bag_dense_backward_cpu + CUDA: _embedding_bag_dense_backward_cuda + MPS: _embedding_bag_dense_backward_mps + autogen: _embedding_bag_dense_backward.out + +- func: _embedding_bag_per_sample_weights_backward(Tensor grad, Tensor weight, Tensor indices, Tensor offsets, Tensor offset2bag, int mode, int padding_idx=-1) -> Tensor + dispatch: + CPU: _embedding_bag_per_sample_weights_backward_cpu + CUDA: _embedding_bag_per_sample_weights_backward_cuda + MPS: _embedding_bag_per_sample_weights_backward_mps + autogen: _embedding_bag_per_sample_weights_backward.out + +- func: empty.names(int[] size, *, Dimname[]? names, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor + device_check: NoCheck + device_guard: False + dispatch: + CompositeExplicitAutograd: empty_names + autogen: empty.names_out + +- func: empty.memory_format(SymInt[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor + dispatch: + CPU: empty_cpu + CUDA: empty_cuda + MPS: empty_mps + Meta: empty_meta_symint + MkldnnCPU: empty_mkldnn + SparseCPU, SparseCUDA, SparseMPS: empty_sparse + SparseMeta: empty_sparse_symint + SparseCsrCPU, SparseCsrCUDA: empty_sparse_compressed + SparseCsrMeta: empty_sparse_compressed_symint + QuantizedCPU, QuantizedCUDA, QuantizedMeta: empty_unknown_quantized + tags: core + +- func: empty_permuted(SymInt[] size, int[] physical_layout, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CompositeExplicitAutograd: empty_permuted_symint + autogen: empty_permuted.out + +# We do not make new_empty a composite that calls into new_empty_strided, as the strided version +# is significantly more difficult to implement by different backends +- func: new_empty(Tensor self, SymInt[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + variants: method + dispatch: + CompositeExplicitAutograd: new_empty_symint + autogen: new_empty.out + +- func: new_empty_strided(Tensor self, SymInt[] size, SymInt[] stride, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + variants: method + dispatch: + CompositeExplicitAutogradNonFunctional: new_empty_strided_symint + autogen: new_empty_strided.out + +- func: new_full(Tensor self, SymInt[] size, Scalar fill_value, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + variants: method + dispatch: + # NB: Although this composite mutates on the inside, it is + # non-differentiable so NonFunctional doesn't apply + CompositeExplicitAutograd: new_full + autogen: new_full.out + +- func: new_zeros(Tensor self, SymInt[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + variants: method + dispatch: + # NB: Although this composite mutates on the inside, it is + # non-differentiable so NonFunctional doesn't apply + CompositeExplicitAutograd: new_zeros + autogen: new_zeros.out + +- func: new_ones(Tensor self, SymInt[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + variants: method + dispatch: + # NB: Although this composite mutates on the inside, it is + # non-differentiable so NonFunctional doesn't apply + CompositeExplicitAutograd: new_ones + autogen: new_ones.out + +# other overrides are to provide a more helpful error message that dtype is required +- func: _empty_affine_quantized(SymInt[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, float scale=1, int zero_point=0, MemoryFormat? memory_format=contiguous_format) -> Tensor + dispatch: + CPU: empty_affine_quantized_other_backends_stub + QuantizedCPU, QuantizedCUDA: empty_affine_quantized + autogen: _empty_affine_quantized.out + +# it's a factory function receiving a tensor argument, thus overriding explicitly +# other overrides are to provide a more helpful error message that dtype is required +- func: _empty_per_channel_affine_quantized(SymInt[] size, *, Tensor scales, Tensor zero_points, int axis, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=contiguous_format) -> Tensor + category_override: factory + dispatch: + CPU: empty_per_channel_affine_quantized_other_backends_stub + QuantizedCPU, QuantizedCUDA: empty_per_channel_affine_quantized + autogen: _empty_per_channel_affine_quantized.out + +- func: resize_(Tensor(a!) self, SymInt[] size, *, MemoryFormat? memory_format=None) -> Tensor(a!) + use_const_ref_for_mutable_tensors: True + variants: method + device_check: NoCheck + device_guard: False + tags: [core, inplace_view] + dispatch: + Meta: resize__symint + CPU: resize_ + CUDA: resize_cuda_ + MPS: resize_mps_ + QuantizedCPU: quantized_resize_cpu_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: resize_sparse_csr_ + autogen: resize, resize.out + +# This is a utility function to enable users to resize out tensor while registering kernels for out variants. +# Eventually, we can consider exposing `resize_output` as a public API to ship it with python op registration +# to make it easy to register out variants for ops. +- func: _resize_output_(Tensor(a!) self, SymInt[] size, Device device) -> Tensor(a!) + use_const_ref_for_mutable_tensors: True + variants: function + dispatch: + Meta: _resize_output_ + autogen: _resize_output, _resize_output.out + +- func: empty_quantized(int[] size, Tensor qtensor, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor + category_override: factory + variants: function + dispatch: + QuantizedCPU, QuantizedCUDA: empty_quantized + autogen: empty_quantized.out + +- func: empty.out(SymInt[] size, *, MemoryFormat? memory_format=None, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck + device_guard: False + +- func: empty_like(Tensor self, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor + device_check: NoCheck + device_guard: False + dispatch: + CompositeExplicitAutograd: empty_like + QuantizedCPU, QuantizedCUDA: empty_like_quantized + SparseCPU, SparseCUDA, SparseMPS, SparseMeta: empty_like_sparse_coo + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: empty_like_sparse_csr + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: empty_like_nested + autogen: empty_like.out + +- func: empty_strided(SymInt[] size, SymInt[] stride, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CPU: empty_strided_cpu + CUDA: empty_strided_cuda + MPS: empty_strided_mps + Meta: empty_strided_meta_symint + QuantizedCPU, QuantizedCUDA: empty_strided_unknown_quantized + autogen: empty_strided.out + tags: core + +- func: erf(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: erf.out + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: erf_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: erf_sparse_csr + tags: [core, pointwise] + +- func: erf_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: erf.out + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: erf_sparse_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: erf_sparse_csr_ + tags: pointwise + +- func: erf.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS, MTIA: erf_out + SparseCPU, SparseCUDA, SparseMPS: erf_sparse_out + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: erf_sparse_csr_out + tags: pointwise + +- func: erfc(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: erfc.out + variants: function, method + tags: pointwise + +- func: erfc_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: erfc.out + variants: function, method + tags: pointwise + +- func: erfc.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: erfc_out + tags: pointwise + +- func: exp(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: exp.out + variants: function, method + tags: [core, pointwise] + +- func: exp_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: exp.out + variants: function, method + tags: pointwise + +- func: exp.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS, MTIA: exp_out + tags: pointwise + +- func: exp2(Tensor self) -> Tensor + structured_delegate: exp2.out + variants: function, method + tags: pointwise + +- func: exp2_(Tensor(a!) self) -> Tensor(a!) + structured_delegate: exp2.out + variants: function, method + tags: pointwise + +- func: exp2.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: exp2_out + tags: pointwise + +- func: expm1(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: expm1.out + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: expm1_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: expm1_sparse_csr + tags: [core, pointwise] + +- func: expm1_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: expm1.out + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: expm1_sparse_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: expm1_sparse_csr_ + tags: pointwise + +- func: expm1.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: expm1_out + SparseCPU, SparseCUDA, SparseMPS: expm1_sparse_out + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: expm1_sparse_csr_out + tags: pointwise + +- func: expand(Tensor(a) self, SymInt[] size, *, bool implicit=False) -> Tensor(a) + variants: method # This is method-only to match the previous tensor API. In the future we could make this a function too. + device_check: NoCheck + device_guard: False + dispatch: + CompositeExplicitAutograd: expand + tags: core + +- func: expand_as(Tensor(a) self, Tensor other) -> Tensor(a) + variants: method # This is method-only to match the previous tensor API. In the future we could make this a function too. + device_check: NoCheck + device_guard: False + +# decomposes to eye.m +- func: eye(SymInt n, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CompositeExplicitAutograd: eye + +- func: eye.m(SymInt n, SymInt m, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CompositeExplicitAutograd: eye + +- func: eye.out(SymInt n, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, Meta: eye_out_cpu + CUDA: eye_out_cuda + MPS: eye_out_mps + +- func: eye.m_out(SymInt n, SymInt m, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, Meta: eye_out_cpu + CUDA: eye_out_cuda + MPS: eye_out_mps + +- func: flatten.using_ints(Tensor(a) self, int start_dim=0, int end_dim=-1) -> Tensor(a) + variants: function, method + +- func: flatten.named_out_dim(Tensor(a) self, int start_dim, int end_dim, Dimname out_dim) -> Tensor(a) + variants: function, method + +- func: flatten.using_names(Tensor(a) self, Dimname start_dim, Dimname end_dim, Dimname out_dim) -> Tensor(a) + variants: function, method + +- func: flatten.DimnameList(Tensor(a) self, Dimname[] dims, Dimname out_dim) -> Tensor(a) + variants: function, method + +- func: unflatten.int(Tensor(a) self, int dim, SymInt[] sizes) -> Tensor(a) + variants: function, method + dispatch: + CompositeImplicitAutograd: unflatten_symint + +- func: unflatten.Dimname(Tensor(a) self, Dimname dim, SymInt[] sizes, Dimname[] names) -> Tensor(a) + variants: function, method + dispatch: + CompositeImplicitAutograd: unflatten_dimname_symint + +- func: fill.Scalar(Tensor self, Scalar value) -> Tensor + variants: function + dispatch: + CompositeExplicitAutograd: fill + tags: core + +- func: fill.Tensor(Tensor self, Tensor value) -> Tensor + variants: function + dispatch: + CompositeExplicitAutograd: fill + +- func: fill_.Scalar(Tensor(a!) self, Scalar value) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CPU, CUDA, MPS: fill_ + QuantizedCPU, QuantizedCUDA: fill_quantized_ + Meta: fill_meta_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: fill_sparse_csr_ + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: fill_nested_ + autogen: fill.Scalar_out + +- func: fill_.Tensor(Tensor(a!) self, Tensor value) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CPU, CUDA, MPS: fill_ + QuantizedCPU, QuantizedCUDA: fill_quantized_ + Meta: fill_meta_ + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: fill_nested_ + autogen: fill.Tensor_out + +- func: floor(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: floor.out + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: floor_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: floor_sparse_csr + tags: [core, pointwise] + +- func: floor_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: floor.out + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: floor_sparse_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: floor_sparse_csr_ + tags: pointwise + +- func: floor.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: floor_out + SparseCPU, SparseCUDA, SparseMPS: floor_sparse_out + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: floor_sparse_csr_out + tags: pointwise + +- func: floor_divide(Tensor self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CPU, CUDA, MPS, MTIA: floor_divide + SparseCPU, SparseCUDA, SparseMPS: floor_divide_sparse + +- func: floor_divide_.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + dispatch: + CPU, CUDA, MPS: floor_divide_ + SparseCPU, SparseCUDA, SparseMPS: floor_divide_sparse_ + +- func: floor_divide.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA, MPS, MTIA: floor_divide_out + SparseCPU, SparseCUDA, SparseMPS: floor_divide_out_sparse_zerodim + +- func: floor_divide.Scalar(Tensor self, Scalar other) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CompositeExplicitAutograd: floor_divide + +- func: floor_divide_.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + dispatch: + CompositeExplicitAutograd: floor_divide_ + autogen: floor_divide.Scalar_out + +- func: frac(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: frac.out + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: frac_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: frac_sparse_csr + tags: pointwise + +- func: frac_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: frac.out + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: frac_sparse_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: frac_sparse_csr_ + tags: pointwise + +- func: frac.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA: frac_out + MPS: frac_out_mps + SparseCPU, SparseCUDA, SparseMPS: frac_sparse_out + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: frac_sparse_csr_out + tags: pointwise + +- func: full.names(int[] size, Scalar fill_value, *, Dimname[]? names, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + device_check: NoCheck + device_guard: False + dispatch: + CompositeExplicitAutograd: full + autogen: full.names_out + +- func: full(SymInt[] size, Scalar fill_value, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CompositeExplicitAutograd: full + tags: core + +- func: full.out(SymInt[] size, Scalar fill_value, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: full_out + +- func: full_like(Tensor self, Scalar fill_value, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor + dispatch: + # NB: Although this composite mutates on the inside, it is + # non-differentiable so NonFunctional doesn't apply + CompositeExplicitAutograd: full_like + autogen: full_like.out + tags: core + +- func: from_file(str filename, bool? shared=None, int? size=0, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CPU: from_file + autogen: from_file.out + +- func: gcd.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: gcd_out + tags: pointwise + +- func: gcd(Tensor self, Tensor other) -> Tensor + structured_delegate: gcd.out + variants: function, method + tags: pointwise + +- func: gcd_(Tensor(a!) self, Tensor other) -> Tensor(a!) + structured_delegate: gcd.out + variants: function, method + +- func: lcm.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA: lcm_out + tags: pointwise + +- func: lcm(Tensor self, Tensor other) -> Tensor + structured_delegate: lcm.out + variants: function, method + tags: pointwise + +- func: lcm_(Tensor(a!) self, Tensor other) -> Tensor(a!) + structured_delegate: lcm.out + variants: function, method + +# NOTE [ grid_sampler Native Functions ] +# `grid_sampler` is _supposed to_ do all the shape checking and then dispatch to +# one of `cudnn_grid_sampler`, `grid_sampler_2d`, or `grid_sampler_3d`, each of +# which has the corresponding backward defined as native functions as well. +# However, we do shape checking everywhere for now since each of the mentioned +# functions can be called directly, which will lead to crashes otherwise. +# See https://github.com/pytorch/pytorch/issues/73187 for more information. +# +# There is also _grid_sampler_2d_backward_cpu_fallback which is an +# implementation detail of grid_sampler_2d and is only exposed here for testing +# purposes. +# +# Additionally, arguments `padding_mode` and `interpolation_mode` are cast to +# enums defined in `native/GridSampler.h`. `cudnn_grid_sampler` doesn't take in +# `interpolation_mode` because it only supports Bilinear interpolation mode. +# Nor does it take in `align_corners` because it only supports the mode +# `align_corners = True`. +- func: grid_sampler(Tensor input, Tensor grid, int interpolation_mode, int padding_mode, bool align_corners) -> Tensor + +- func: grid_sampler_2d(Tensor input, Tensor grid, int interpolation_mode, int padding_mode, bool align_corners) -> Tensor + dispatch: + CPU, QuantizedCPU: grid_sampler_2d_cpu + CUDA: grid_sampler_2d_cuda + MPS: grid_sampler_2d_mps + autogen: grid_sampler_2d.out + tags: core + +# `grid_sampler_2d_backward` takes in `output_mask` to optimize performance for +# the case where `input` doesn't require gradient. Gradient for `grid` is always +# computed (only `output_mask[0]` is checked by the implementations). +- func: grid_sampler_2d_backward(Tensor grad_output, Tensor input, Tensor grid, int interpolation_mode, int padding_mode, bool align_corners, bool[2] output_mask) -> (Tensor, Tensor) + dispatch: + CPU: grid_sampler_2d_backward_cpu + CUDA: grid_sampler_2d_backward_cuda + autogen: grid_sampler_2d_backward.out + +# See NOTE [ grid_sample CPU fallback ] +- func: _grid_sampler_2d_cpu_fallback(Tensor input, Tensor grid, int interpolation_mode, int padding_mode, bool align_corners) -> Tensor + dispatch: + CompositeExplicitAutograd: _grid_sampler_2d_cpu_fallback + autogen: _grid_sampler_2d_cpu_fallback.out + +- func: _grid_sampler_2d_cpu_fallback_backward(Tensor grad_output, Tensor input, Tensor grid, int interpolation_mode, int padding_mode, bool align_corners) -> (Tensor, Tensor) + dispatch: + CompositeExplicitAutograd: _grid_sampler_2d_cpu_fallback_backward + +- func: grid_sampler_3d(Tensor input, Tensor grid, int interpolation_mode, int padding_mode, bool align_corners) -> Tensor + dispatch: + CPU: grid_sampler_3d_cpu + CUDA: grid_sampler_3d_cuda + MPS: grid_sampler_3d_mps + autogen: grid_sampler_3d.out + +# `grid_sampler_3d_backward` takes in `output_mask` to optimize performance for +# the case where `input` doesn't require gradient. Gradient for `grid` is always +# computed (only `output_mask[0]` is checked by the implementations). +- func: grid_sampler_3d_backward(Tensor grad_output, Tensor input, Tensor grid, int interpolation_mode, int padding_mode, bool align_corners, bool[2] output_mask) -> (Tensor, Tensor) + dispatch: + CPU: grid_sampler_3d_backward_cpu + CUDA: grid_sampler_3d_backward_cuda + autogen: grid_sampler_3d_backward.out + +- func: hann_window(int window_length, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CompositeExplicitAutograd: hann_window + autogen: hann_window.out + +- func: hann_window.periodic(int window_length, bool periodic, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CompositeExplicitAutograd: hann_window + autogen: hann_window.periodic_out + +- func: hamming_window(int window_length, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CompositeExplicitAutograd: hamming_window + autogen: hamming_window.out + +- func: hamming_window.periodic(int window_length, bool periodic, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CompositeExplicitAutograd: hamming_window + autogen: hamming_window.periodic_out + +- func: hamming_window.periodic_alpha(int window_length, bool periodic, float alpha, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CompositeExplicitAutograd: hamming_window + autogen: hamming_window.periodic_alpha_out + +- func: hamming_window.periodic_alpha_beta(int window_length, bool periodic, float alpha, float beta, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CompositeExplicitAutograd: hamming_window + autogen: hamming_window.periodic_alpha_beta_out + +- func: kaiser_window(int window_length, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CompositeExplicitAutograd: kaiser_window + autogen: kaiser_window.out + +- func: kaiser_window.periodic(int window_length, bool periodic, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CompositeExplicitAutograd: kaiser_window + autogen: kaiser_window.periodic_out + +- func: kaiser_window.beta(int window_length, bool periodic, float beta, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CompositeExplicitAutograd: kaiser_window + autogen: kaiser_window.beta_out + +- func: hinge_embedding_loss(Tensor self, Tensor target, float margin=1.0, int reduction=Mean) -> Tensor + +- func: group_norm(Tensor input, int num_groups, Tensor? weight=None, Tensor? bias=None, float eps=1e-05, bool cudnn_enabled=True) -> Tensor + +- func: native_group_norm(Tensor input, Tensor? weight, Tensor? bias, SymInt N, SymInt C, SymInt HxW, int group, float eps) -> (Tensor, Tensor, Tensor) + dispatch: + CPU, CUDA: native_group_norm + CompositeExplicitAutograd: math_group_norm + autogen: native_group_norm.out + tags: core + +- func: native_group_norm_backward(Tensor grad_out, Tensor input, Tensor mean, Tensor rstd, Tensor? weight, SymInt N, SymInt C, SymInt HxW, int group, bool[3] output_mask) -> (Tensor, Tensor, Tensor) + dispatch: + CPU, CUDA: native_group_norm_backward + autogen: native_group_norm_backward.out + tags: core + +# Real to complex forward FFT +- func: _fft_r2c(Tensor self, int[] dim, int normalization, bool onesided) -> Tensor + variants: function + dispatch: + CPU: _fft_r2c_mkl + CUDA: _fft_r2c_cufft + MPS: _fft_r2c_mps + tags: core + +- func: _fft_r2c.out(Tensor self, int[] dim, int normalization, bool onesided, *, Tensor(a!) out) -> Tensor(a!) + variants: function + dispatch: + CPU: _fft_r2c_mkl_out + CUDA: _fft_r2c_cufft_out + MPS: _fft_r2c_mps_out + +# Complex to real inverse FFT +- func: _fft_c2r(Tensor self, int[] dim, int normalization, SymInt last_dim_size) -> Tensor + variants: function + dispatch: + CPU: _fft_c2r_mkl + CUDA: _fft_c2r_cufft + MPS: _fft_c2r_mps + tags: core + +- func: _fft_c2r.out(Tensor self, int[] dim, int normalization, SymInt last_dim_size, *, Tensor(a!) out) -> Tensor(a!) + variants: function + dispatch: + CPU: _fft_c2r_mkl_out + CUDA: _fft_c2r_cufft_out + MPS: _fft_c2r_mps_out + +# Standard complex to complex FFT (forward or backward) +- func: _fft_c2c(Tensor self, SymInt[] dim, int normalization, bool forward) -> Tensor + variants: function + dispatch: + CPU: _fft_c2c_mkl + CUDA: _fft_c2c_cufft + MPS: _fft_c2c_mps + +- func: _fft_c2c.out(Tensor self, SymInt[] dim, int normalization, bool forward, *, Tensor(a!) out) -> Tensor(a!) + variants: function + dispatch: + CPU: _fft_c2c_mkl_out + CUDA: _fft_c2c_cufft_out + MPS: _fft_c2c_mps_out + +- func: _validate_compressed_sparse_indices(bool is_crow, Tensor compressed_idx, Tensor plain_idx, int cdim, int dim, int nnz) -> () + device_check: NoCheck + variants: function + dispatch: + CPU: _validate_compressed_sparse_indices_cpu + CUDA: _validate_compressed_sparse_indices_cuda + +- func: _cufft_get_plan_cache_size(DeviceIndex device_index) -> int + +- func: _cufft_get_plan_cache_max_size(DeviceIndex device_index) -> int + +- func: _cufft_set_plan_cache_max_size(DeviceIndex device_index, int max_size) -> () + +- func: _cufft_clear_plan_cache(DeviceIndex device_index) -> () + +- func: index.Tensor(Tensor self, Tensor?[] indices) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: index.Tensor_out + variants: function, method + dispatch: + QuantizedCPU: quantized_index + tags: [core, dynamic_output_shape] + # NB: This function is special-cased in tools/autograd/gen_variable_type.py + # NB: The following functions are declared in aten/src/ATen/templates/TensorBody.h and defined in aten/src/ATen/TensorIndexing.cpp: + # - Tensor Tensor::index(ArrayRef indices) + # - Tensor Tensor::index(std::initializer_list indices) + +- func: index.Tensor_out(Tensor self, Tensor?[] indices, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck + structured: True + structured_inherits: TensorIteratorBase + precomputed: + - indices -> DimVector sizes, DimVector strides + dispatch: + CPU, CUDA, MPS: index_out + +# Used by inductor to signal indexing without bounds checks +# Note that we don't support boolean indexing, to avoid dynamic output shapes +- func: _unsafe_index.Tensor(Tensor self, Tensor?[] indices) -> Tensor + variants: function + dispatch: + CompositeExplicitAutograd: _unsafe_index + +# Used by inductor to generate masked loads +# Note that we don't support boolean indexing, to avoid dynamic output shapes +- func: _unsafe_masked_index(Tensor self, Tensor mask, Tensor?[] indices, Scalar fill) -> Tensor + variants: function + dispatch: + CompositeExplicitAutograd: _unsafe_masked_index + +- func: _unsafe_masked_index_put_accumulate(Tensor self, Tensor mask, Tensor?[] indices, Tensor values) -> Tensor + variants: function + dispatch: + CompositeExplicitAutograd: _unsafe_masked_index_put_accumulate + +- func: index_copy.out(Tensor self, int dim, Tensor index, Tensor source, *, Tensor(a!) out) -> Tensor(a!) + structured: True + variants: function + precomputed: + - dim -> int dim + dispatch: + CPU, CUDA: index_copy_out + MPS: index_copy_out_mps + +- func: index_copy_(Tensor(a!) self, int dim, Tensor index, Tensor source) -> Tensor(a!) + variants: method + structured_delegate: index_copy.out + +- func: index_copy(Tensor self, int dim, Tensor index, Tensor source) -> Tensor + variants: function, method + structured_delegate: index_copy.out + +- func: index_copy_.dimname(Tensor(a!) self, Dimname dim, Tensor index, Tensor source) -> Tensor(a!) + variants: method + +- func: index_copy.dimname(Tensor self, Dimname dim, Tensor index, Tensor source) -> Tensor + variants: function, method + +- func: index_put_(Tensor(a!) self, Tensor?[] indices, Tensor values, bool accumulate=False) -> Tensor(a!) + device_check: NoCheck # delegate to _index_put_impl_, which leverages TensorIterator + variants: function, method + dispatch: + CompositeExplicitAutograd: index_put_ + autogen: index_put.out + # NB: The following functions are declared in aten/src/ATen/templates/TensorBody.h and defined in aten/src/ATen/TensorIndexing.cpp: + # - Tensor & Tensor::index_put_(ArrayRef indices, Tensor const & rhs) + # - Tensor & Tensor::index_put_(ArrayRef indices, Scalar v) + # - Tensor & Tensor::index_put_(std::initializer_list indices, Tensor const & rhs) + # - Tensor & Tensor::index_put_(std::initializer_list indices, Scalar v) + +- func: index_put(Tensor self, Tensor?[] indices, Tensor values, bool accumulate=False) -> Tensor + device_check: NoCheck # delegate to _index_put_impl_ after clone, which leverages TensorIterator + variants: function, method + dispatch: + CompositeExplicitAutograd: index_put + tags: core + +- func: _unsafe_index_put(Tensor self, Tensor?[] indices, Tensor values, bool accumulate=False) -> Tensor + device_check: NoCheck # delegate to _index_put_impl_ after clone, which leverages TensorIterator + variants: function + dispatch: + CompositeExplicitAutograd: _unsafe_index_put + +- func: _index_put_impl_(Tensor(a!) self, Tensor?[] indices, Tensor values, bool accumulate=False, bool unsafe=False) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: function + dispatch: + CPU, CUDA, MPS: _index_put_impl_ + QuantizedCPU: _index_put_impl_quantized_cpu_ + QuantizedCUDA: _index_put_impl_quantized_cuda_ + autogen: _index_put_impl, _index_put_impl.out + +- func: instance_norm(Tensor input, Tensor? weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool use_input_stats, float momentum, float eps, bool cudnn_enabled) -> Tensor + variants: function + +- func: isclose(Tensor self, Tensor other, float rtol=1e-05, float atol=1e-08, bool equal_nan=False) -> Tensor + variants: function, method + +- func: isin.Tensor_Tensor_out(Tensor elements, Tensor test_elements, *, bool assume_unique=False, bool invert=False, Tensor(a!) out) -> Tensor(a!) + variants: function + structured: True + dispatch: + CPU, CUDA: isin_Tensor_Tensor_out + MPS: isin_Tensor_Tensor_out_mps + +- func: isin.Tensor_Tensor(Tensor elements, Tensor test_elements, *, bool assume_unique=False, bool invert=False) -> Tensor + variants: function + structured_delegate: isin.Tensor_Tensor_out + +- func: isin.Tensor_Scalar_out(Tensor elements, Scalar test_element, *, bool assume_unique=False, bool invert=False, Tensor(a!) out) -> Tensor(a!) + variants: function + structured: True + dispatch: + CPU, CUDA, MPS: isin_Tensor_Scalar_out + +- func: isin.Tensor_Scalar(Tensor elements, Scalar test_element, *, bool assume_unique=False, bool invert=False) -> Tensor + variants: function + structured_delegate: isin.Tensor_Scalar_out + +- func: isin.Scalar_Tensor_out(Scalar element, Tensor test_elements, *, bool assume_unique=False, bool invert=False, Tensor(a!) out) -> Tensor(a!) + variants: function + structured: True + dispatch: + CPU, CUDA: isin_Scalar_Tensor_out + MPS: isin_Scalar_Tensor_out_mps + +- func: isin.Scalar_Tensor(Scalar element, Tensor test_elements, *, bool assume_unique=False, bool invert=False) -> Tensor + variants: function + structured_delegate: isin.Scalar_Tensor_out + +- func: isnan(Tensor self) -> Tensor + variants: function, method + device_check: NoCheck + device_guard: False + dispatch: + CPU, CUDA, MPS, MTIA: isnan + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_isnan + SparseCPU, SparseCUDA, SparseMPS: isnan_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: isnan_sparse_csr + autogen: isnan.out + tags: [core, pointwise] + +- func: is_distributed(Tensor self) -> bool + variants: function, method + device_check: NoCheck + device_guard: False + +- func: is_floating_point(Tensor self) -> bool + variants: function, method + device_check: NoCheck + device_guard: False + manual_cpp_binding: True + +- func: is_complex(Tensor self) -> bool + variants: function, method + device_check: NoCheck + device_guard: False + manual_cpp_binding: True + +- func: is_conj(Tensor self) -> bool + variants: function, method + device_guard: False + manual_cpp_binding: True + +- func: _is_zerotensor(Tensor self) -> bool + variants: function, method + device_guard: False + manual_cpp_binding: True + +- func: is_neg(Tensor self) -> bool + variants: function, method + device_guard: False + manual_cpp_binding: True + +- func: isreal(Tensor self) -> Tensor + variants: function, method + +- func: is_nonzero(Tensor self) -> bool + variants: function, method + device_check: NoCheck + device_guard: False + +- func: is_same_size(Tensor self, Tensor other) -> bool + variants: function, method + device_check: NoCheck + device_guard: False + dispatch: + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: nested_is_same_size + CompositeExplicitAutograd: is_same_size + +- func: is_signed(Tensor self) -> bool + variants: function, method + device_check: NoCheck + device_guard: False + manual_cpp_binding: True + +- func: is_inference(Tensor self) -> bool + variants: function, method + device_check: NoCheck + device_guard: False + manual_cpp_binding: True + +- func: numel(Tensor self) -> int + variants: method + device_check: NoCheck + device_guard: False + manual_cpp_binding: True + +- func: dim(Tensor self) -> int + variants: method + device_check: NoCheck + device_guard: False + manual_cpp_binding: True + +- func: get_device(Tensor self) -> int + variants: method + device_check: NoCheck + device_guard: False + manual_cpp_binding: True + +- func: storage_offset(Tensor self) -> int + variants: method + device_check: NoCheck + device_guard: False + manual_cpp_binding: True + +- func: is_contiguous(Tensor self) -> bool + variants: method + device_check: NoCheck + device_guard: False + manual_cpp_binding: True + +- func: is_contiguous.memory_format(Tensor self, MemoryFormat memory_format) -> bool + variants: method + device_check: NoCheck + device_guard: False + manual_cpp_binding: True + +- func: kl_div(Tensor self, Tensor target, int reduction=Mean, *, bool log_target=False) -> Tensor + +- func: kron(Tensor self, Tensor other) -> Tensor + variants: function, method + +- func: kron.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + +- func: kthvalue(Tensor self, SymInt k, int dim=-1, bool keepdim=False) -> (Tensor values, Tensor indices) + variants: function, method + dispatch: + CompositeExplicitAutograd: kthvalue + +- func: kthvalue.values(Tensor self, SymInt k, int dim=-1, bool keepdim=False, *, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices) + dispatch: + CPU: kthvalue_out_cpu + CUDA: kthvalue_out_cuda + MPS: kthvalue_out_mps + +- func: kthvalue.dimname(Tensor self, SymInt k, Dimname dim, bool keepdim=False) -> (Tensor values, Tensor indices) + variants: function, method + +- func: kthvalue.dimname_out(Tensor self, SymInt k, Dimname dim, bool keepdim=False, *, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices) + +- func: layer_norm(Tensor input, SymInt[] normalized_shape, Tensor? weight=None, Tensor? bias=None, float eps=1e-05, bool cudnn_enable=True) -> Tensor + dispatch: + CompositeImplicitAutograd: layer_norm_symint + +- func: native_layer_norm(Tensor input, SymInt[] normalized_shape, Tensor? weight, Tensor? bias, float eps) -> (Tensor, Tensor, Tensor) + dispatch: + CPU: layer_norm_cpu + CUDA: layer_norm_cuda + MPS: layer_norm_mps + CompositeExplicitAutograd: math_native_layer_norm + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: nested_layer_norm + autogen: native_layer_norm.out + tags: core + +- func: native_layer_norm_backward(Tensor grad_out, Tensor input, SymInt[] normalized_shape, Tensor mean, Tensor rstd, Tensor? weight, Tensor? bias, bool[3] output_mask) -> (Tensor, Tensor, Tensor) + dispatch: + CPU: layer_norm_backward_cpu + CUDA: layer_norm_backward_cuda + MPS: layer_norm_backward_mps + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: layer_norm_backward_nested + autogen: native_layer_norm_backward.out + tags: core + +- func: rms_norm(Tensor input, SymInt[] normalized_shape, Tensor? weight=None, float? eps=None) -> Tensor + dispatch: + CompositeImplicitAutograd: rms_norm_symint + +- func: _fused_rms_norm(Tensor input, int[] normalized_shape, Tensor? weight, float? eps) -> (Tensor, Tensor) + dispatch: + CUDA: _fused_rms_norm_cuda + MPS: _fused_rms_norm_mps + XPU: _fused_rms_norm_xpu + CompositeImplicitAutograd: rms_norm_composite + +- func: _fused_rms_norm_backward(Tensor grad_out, Tensor input, int[] normalized_shape, Tensor rstd, Tensor? weight, bool[2] output_mask) -> (Tensor, Tensor) + dispatch: + CUDA: _fused_rms_norm_backward_cuda + XPU: _fused_rms_norm_backward_xpu + +- func: nan_to_num(Tensor self, float? nan=None, float? posinf=None, float? neginf=None) -> Tensor + variants: function, method + dispatch: + CompositeExplicitAutograd: nan_to_num + SparseCPU, SparseCUDA, SparseMPS: nan_to_num_sparse + tags: pointwise + +- func: nan_to_num_(Tensor(a!) self, float? nan=None, float? posinf=None, float? neginf=None) -> Tensor(a!) + variants: function, method + dispatch: + CompositeExplicitAutograd: nan_to_num_ + SparseCPU, SparseCUDA, SparseMPS: nan_to_num_sparse_ + tags: pointwise + +- func: nan_to_num.out(Tensor self, float? nan=None, float? posinf=None, float? neginf=None, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, CUDA, MTIA: nan_to_num_out + MPS: nan_to_num_out_mps + SparseCPU, SparseCUDA, SparseMPS: nan_to_num_sparse_out + tags: pointwise + +- func: linear(Tensor input, Tensor weight, Tensor? bias=None) -> Tensor + python_module: nn + dispatch: + CompositeImplicitAutograd: linear + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: nested_linear + MPS: _mps_linear + +- func: linear_backward(Tensor self, Tensor grad_output, Tensor weight, bool[3] output_mask) -> (Tensor, Tensor, Tensor) + dispatch: + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: nested_linear_backward + MPS: mps_linear_backward + autogen: linear_backward.out + +- func: linear.out(Tensor input, Tensor weight, Tensor? bias=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + dispatch: + CompositeExplicitAutograd: linear_out + +- func: mkldnn_linear(Tensor self, Tensor weight, Tensor? bias=None) -> Tensor + python_module: nn + dispatch: + MkldnnCPU: mkldnn_linear + autogen: mkldnn_linear.out + +- func: mkldnn_linear_backward_input(int[] input_size, Tensor grad_output, Tensor weight) -> Tensor + dispatch: + MkldnnCPU: mkldnn_linear_backward_input + autogen: mkldnn_linear_backward_input.out + +- func: mkldnn_linear_backward_weights(Tensor grad_output, Tensor input, Tensor weight, bool bias_defined) -> (Tensor, Tensor) + dispatch: + MkldnnCPU: mkldnn_linear_backward_weights + autogen: mkldnn_linear_backward_weights.out + +- func: mkldnn_linear_backward(Tensor self, Tensor grad_output, Tensor weight, bool[3] output_mask) -> (Tensor, Tensor, Tensor) + dispatch: + MkldnnCPU: mkldnn_linear_backward + autogen: mkldnn_linear_backward.out + +- func: _cslt_compress(Tensor input) -> Tensor + dispatch: + CUDA: _cslt_compress + +- func: _cslt_sparse_mm(Tensor compressed_A, Tensor dense_B, Tensor? bias=None, Tensor? alpha=None, ScalarType? out_dtype=None, bool transpose_result=False, int alg_id=0, int split_k=1, int split_k_mode=-1) -> Tensor + dispatch: + CUDA: _cslt_sparse_mm + tags: needs_fixed_stride_order + +- func: _cslt_sparse_mm_search(Tensor compressed_A, Tensor dense_B, Tensor? bias=None, Tensor? alpha=None, ScalarType? out_dtype=None, bool transpose_result=False) -> int + dispatch: + CUDA: _cslt_sparse_mm_search + +- func: _sparse_semi_structured_tile(Tensor input, str algorithm="", bool use_cutlass=True) -> (Tensor, Tensor, Tensor, Tensor, Tensor) + dispatch: + CUDA: _sparse_semi_structured_tile + +- func: _sparse_semi_structured_apply(Tensor input, Tensor thread_masks) -> (Tensor, Tensor) + dispatch: + CUDA: _sparse_semi_structured_apply + +- func: _sparse_semi_structured_apply_dense(Tensor input, Tensor thread_masks) -> Tensor + dispatch: + CUDA: _sparse_semi_structured_apply_dense + +# DEPRECATED: Use torch.__sparse_semi_structured_mm/torch._sparse_semi_structured_addmm instead +- func: _sparse_semi_structured_linear(Tensor input, Tensor weight, Tensor meta, *, Tensor? bias=None, str? activation=None, ScalarType? out_dtype=None) -> Tensor + dispatch: + CUDA: _sparse_semi_structured_linear + +- func: _sparse_semi_structured_mm(Tensor mat1, Tensor mat1_meta, Tensor mat2, *, ScalarType? out_dtype=None) -> Tensor + dispatch: + CUDA: _sparse_semi_structured_mm + +- func: _sparse_semi_structured_addmm(Tensor input, Tensor mat1, Tensor mat1_meta, Tensor mat2, *, Scalar alpha=1, Scalar beta=1, ScalarType? out_dtype=None) -> Tensor + dispatch: + CUDA: _sparse_semi_structured_addmm + +- func: _mixed_dtypes_linear(Tensor input, Tensor weight, Tensor scale, *, Tensor? bias=None, str? activation=None) -> Tensor + dispatch: + CUDA: _mixed_dtypes_linear + +- func: fbgemm_linear_int8_weight_fp32_activation(Tensor input, Tensor weight, Tensor packed, Tensor col_offsets, Scalar weight_scale, Scalar weight_zero_point, Tensor bias) -> Tensor + +- func: fbgemm_linear_int8_weight(Tensor input, Tensor weight, Tensor packed, Tensor col_offsets, Scalar weight_scale, Scalar weight_zero_point, Tensor bias) -> Tensor + +- func: fbgemm_linear_quantize_weight(Tensor input) -> (Tensor, Tensor, float, int) + +- func: fbgemm_pack_gemm_matrix_fp16(Tensor input) -> Tensor + +- func: _wrapped_linear_prepack(Tensor weight, Tensor weight_scale, Tensor weight_zero_point, Tensor bias) -> Tensor + +- func: _wrapped_quantized_linear_prepacked(Tensor input, Tensor input_scale, Tensor input_zero_point, Tensor packed_weight, Tensor output_scale, Tensor output_zero_point, int out_channel) -> Tensor + +- func: fbgemm_linear_fp16_weight_fp32_activation(Tensor input, Tensor packed_weight, Tensor? bias) -> Tensor + +- func: fbgemm_linear_fp16_weight_fp32_activation.out(Tensor input, Tensor packed_weight, Tensor? bias, Tensor(a!) output) -> Tensor + +- func: fbgemm_linear_fp16_weight(Tensor input, Tensor packed_weight, Tensor bias) -> Tensor + +- func: fbgemm_linear_fp16_weight.out(Tensor input, Tensor packed_weight, Tensor bias, Tensor(a!) output) -> Tensor + +- func: fbgemm_pack_quantized_matrix(Tensor input) -> Tensor + +- func: fbgemm_pack_quantized_matrix.KN(Tensor input, int K, int N) -> Tensor + +- func: ldexp.Tensor(Tensor self, Tensor other) -> Tensor + variants: function, method + tags: pointwise + dispatch: + CompositeExplicitAutograd: ldexp + +- func: ldexp_(Tensor(a!) self, Tensor other) -> Tensor(a!) + variants: function, method + tags: pointwise + dispatch: + CompositeExplicitAutograd: ldexp_ + +- func: ldexp.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + tags: pointwise + dispatch: + CompositeExplicitAutograd: ldexp_out + +- func: linspace(Scalar start, Scalar end, int steps, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CompositeExplicitAutograd: linspace + +- func: linspace.Tensor_Tensor(Tensor start, Tensor end, int steps, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + category_override: factory + dispatch: + CompositeExplicitAutograd: linspace + +- func: linspace.Tensor_Scalar(Tensor start, Scalar end, int steps, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + category_override: factory + dispatch: + CompositeExplicitAutograd: linspace + +- func: linspace.Scalar_Tensor(Scalar start, Tensor end, int steps, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + category_override: factory + dispatch: + CompositeExplicitAutograd: linspace + +- func: linspace.out(Scalar start, Scalar end, int steps, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, Meta: linspace_out + CUDA: linspace_cuda_out + MPS: linspace_out_mps + +- func: linspace.Tensor_Tensor_out(Tensor start, Tensor end, int steps, *, Tensor(a!) out) -> Tensor(a!) + category_override: factory + dispatch: + CompositeExplicitAutograd: linspace_out + +- func: linspace.Tensor_Scalar_out(Tensor start, Scalar end, int steps, *, Tensor(a!) out) -> Tensor(a!) + category_override: factory + dispatch: + CompositeExplicitAutograd: linspace_out + +- func: linspace.Scalar_Tensor_out(Scalar start, Tensor end, int steps, *, Tensor(a!) out) -> Tensor(a!) + category_override: factory + dispatch: + CompositeExplicitAutograd: linspace_out + +- func: log(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: log.out + variants: function, method + tags: [core, pointwise] + +- func: log_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: log.out + variants: function, method + tags: pointwise + +- func: log.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS, MTIA: log_out + tags: pointwise + +- func: log10(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: log10.out + variants: function, method + tags: [core, pointwise] + +- func: log10_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: log10.out + variants: function, method + tags: pointwise + +- func: log10.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: log10_out + tags: pointwise + +- func: log1p(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: log1p.out + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: log1p_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: log1p_sparse_csr + tags: [core, pointwise] + +- func: log1p_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: log1p.out + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: log1p_sparse_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: log1p_sparse_csr_ + tags: pointwise + +- func: log1p.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: log1p_out + SparseCPU, SparseCUDA, SparseMPS: log1p_sparse_out + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: log1p_sparse_csr_out + tags: pointwise + +- func: log2(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: log2.out + variants: function, method + tags: [core, pointwise] + +- func: log2_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: log2.out + variants: function, method + tags: pointwise + +- func: log2.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS, MTIA: log2_out + tags: pointwise + +- func: logaddexp.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: logaddexp_out + tags: pointwise + +- func: logaddexp(Tensor self, Tensor other) -> Tensor + variants: method, function + structured_delegate: logaddexp.out + tags: pointwise + +- func: logaddexp2.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: logaddexp2_out + tags: pointwise + +- func: logaddexp2(Tensor self, Tensor other) -> Tensor + variants: method, function + structured_delegate: logaddexp2.out + tags: pointwise + +- func: xlogy.Tensor(Tensor self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: xlogy.OutTensor + variants: function, method + tags: pointwise + +- func: xlogy.Scalar_Self(Scalar self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + variants: function + dispatch: + CompositeExplicitAutograd: xlogy + tags: pointwise + +- func: xlogy.Scalar_Other(Tensor self, Scalar other) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CompositeExplicitAutograd: xlogy + tags: pointwise + +# xlogy: inplace variant +- func: xlogy_.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: function, method + structured_delegate: xlogy.OutTensor + tags: pointwise + +- func: xlogy_.Scalar_Other(Tensor(a!) self, Scalar other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CompositeExplicitAutograd: xlogy_ + +# xlogy: out variant +- func: xlogy.OutTensor(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + variants: function + dispatch: + CPU, CUDA, MPS: xlogy_out + tags: pointwise + +- func: xlogy.OutScalar_Self(Scalar self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: function + dispatch: + CompositeExplicitAutograd: xlogy_out + tags: pointwise + +- func: xlogy.OutScalar_Other(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: function + dispatch: + CompositeExplicitAutograd: xlogy_out + tags: pointwise + +- func: logspace(Scalar start, Scalar end, int steps, float base=10.0, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CompositeExplicitAutograd: logspace + +- func: logspace.Tensor_Tensor(Tensor start, Tensor end, int steps, float base=10.0, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + category_override: factory + dispatch: + CompositeExplicitAutograd: logspace + +- func: logspace.Tensor_Scalar(Tensor start, Scalar end, int steps, float base=10.0, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + category_override: factory + dispatch: + CompositeExplicitAutograd: logspace + +- func: logspace.Scalar_Tensor(Scalar start, Tensor end, int steps, float base=10.0, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + category_override: factory + dispatch: + CompositeExplicitAutograd: logspace + +- func: logspace.out(Scalar start, Scalar end, int steps, float base=10.0, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, Meta: logspace_out + CUDA: logspace_cuda_out + +- func: logspace.Tensor_Tensor_out(Tensor start, Tensor end, int steps, float base=10.0, *, Tensor(a!) out) -> Tensor(a!) + category_override: factory + dispatch: + CompositeExplicitAutograd: logspace_out + +- func: logspace.Tensor_Scalar_out(Tensor start, Scalar end, int steps, float base=10.0, *, Tensor(a!) out) -> Tensor(a!) + category_override: factory + dispatch: + CompositeExplicitAutograd: logspace_out + +- func: logspace.Scalar_Tensor_out(Scalar start, Tensor end, int steps, float base=10.0, *, Tensor(a!) out) -> Tensor(a!) + category_override: factory + dispatch: + CompositeExplicitAutograd: logspace_out + +# log_softmax allows positional dtype, unlike most operators, because kwonly is BC-breaking when loading jit models. +- func: log_softmax.int(Tensor self, int dim, ScalarType? dtype=None) -> Tensor + variants: function, method + +- func: log_softmax.int_out(Tensor self, int dim, ScalarType? dtype=None, *, Tensor(a!) out) -> Tensor(a!) + variants: function + dispatch: + CompositeExplicitAutograd: log_softmax_out + +- func: log_softmax.Dimname(Tensor self, Dimname dim, *, ScalarType? dtype=None) -> Tensor + variants: function, method + +- func: _log_softmax(Tensor self, int dim, bool half_to_float) -> Tensor + structured_delegate: _log_softmax.out + tags: core + +- func: _log_softmax.out(Tensor self, int dim, bool half_to_float, *, Tensor(a!) out) -> Tensor(a!) + structured: True + dispatch: + CPU: log_softmax_cpu_out + CUDA: log_softmax_cuda_out + MTIA: log_softmax_mtia_out + MPS: log_softmax_mps_out + +- func: _log_softmax_backward_data(Tensor grad_output, Tensor output, int dim, ScalarType input_dtype) -> Tensor + structured_delegate: _log_softmax_backward_data.out + +- func: _log_softmax_backward_data.out(Tensor grad_output, Tensor output, int dim, ScalarType input_dtype, *, Tensor(a!) out) -> Tensor(a!) + structured: True + dispatch: + CPU: log_softmax_backward_cpu_out + CUDA: log_softmax_backward_cuda_out + MTIA: log_softmax_backward_mtia_out + MPS: log_softmax_backward_mps_out + +- func: _logcumsumexp(Tensor self, int dim) -> Tensor + dispatch: + CPU: _logcumsumexp_cpu + CUDA: _logcumsumexp_cuda + MPS: _logcumsumexp_mps + +- func: _logcumsumexp.out(Tensor self, int dim, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU: _logcumsumexp_out_cpu + CUDA: _logcumsumexp_out_cuda + MPS: _logcumsumexp_out_mps + +- func: logcumsumexp(Tensor self, int dim) -> Tensor + variants: function, method + dispatch: + CompositeExplicitAutograd: logcumsumexp + +- func: logcumsumexp.out(Tensor self, int dim, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: logcumsumexp_out + +- func: logcumsumexp.dimname(Tensor self, Dimname dim) -> Tensor + variants: function, method + +- func: logcumsumexp.dimname_out(Tensor self, Dimname dim, *, Tensor(a!) out) -> Tensor(a!) + +- func: logsumexp(Tensor self, int[1] dim, bool keepdim=False) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CompositeExplicitAutograd: logsumexp + tags: reduction + +- func: logsumexp.out(Tensor self, int[1] dim, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + dispatch: + # calls squeeze + CompositeExplicitAutogradNonFunctional: logsumexp_out + tags: reduction + +- func: logsumexp.names(Tensor self, Dimname[1] dim, bool keepdim=False) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + tags: reduction + +- func: logsumexp.names_out(Tensor self, Dimname[1] dim, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + tags: reduction + +- func: margin_ranking_loss(Tensor input1, Tensor input2, Tensor target, float margin=0.0, int reduction=Mean) -> Tensor + +- func: matmul(Tensor self, Tensor other) -> Tensor + variants: function, method + dispatch: + CompositeImplicitAutograd: matmul + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: matmul_nested + +- func: matmul_backward(Tensor grad, Tensor self, Tensor other, bool[2] mask) -> (Tensor, Tensor) + dispatch: + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: matmul_backward_nested + autogen: matmul_backward.out + +- func: matmul.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeImplicitAutograd: matmul_out + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: matmul_out_nested + +# Alias to linalg.matrix_power +- func: matrix_power(Tensor self, int n) -> Tensor + variants: function, method + +# Alias to linalg.matrix_power +- func: matrix_power.out(Tensor self, int n, *, Tensor(a!) out) -> Tensor(a!) + +# Alias to linalg.matrix_exp +- func: matrix_exp(Tensor self) -> Tensor + variants: function, method + +# This function should be deprecated in favor of differential_analytic_matrix_function in FunctionsManual.cpp +- func: matrix_exp_backward(Tensor self, Tensor grad) -> Tensor + +# DEPRECATED: Use torch.aminmax instead +- func: _aminmax(Tensor self) -> (Tensor, Tensor) + dispatch: + CPU, CUDA: _aminmax_all + autogen: _aminmax.out + +# DEPRECATED: Use torch.aminmax instead +- func: _aminmax.dim(Tensor self, int dim, bool keepdim=False) -> (Tensor, Tensor) + dispatch: + CPU, CUDA: _aminmax + autogen: _aminmax.dim_out + +- func: aminmax(Tensor self, *, int? dim=None, bool keepdim=False) -> (Tensor min, Tensor max) + device_check: NoCheck # TensorIterator + structured_delegate: aminmax.out + variants: function, method + tags: reduction + +- func: aminmax.out(Tensor self, *, int? dim=None, bool keepdim=False, Tensor(a!) min, Tensor(b!) max) -> (Tensor(a!) min, Tensor(b!) max) + device_check: NoCheck # TensorIterator + structured: True + dispatch: + CPU, CUDA: aminmax_out + MPS: aminmax_out_mps + tags: reduction + +- func: _compute_linear_combination(Tensor input, Tensor coefficients) -> Tensor + dispatch: + CPU, CUDA: _compute_linear_combination + +- func: _compute_linear_combination.out(Tensor input, Tensor coefficients, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, CUDA: _compute_linear_combination_out + +- func: max.dim(Tensor self, int dim, bool keepdim=False) -> (Tensor values, Tensor indices) + device_check: NoCheck # TensorIterator + structured_delegate: max.dim_max + variants: function, method + dispatch: + QuantizedCPU, QuantizedCUDA: qmax + tags: [core, reduction] + +- func: max.dim_max(Tensor self, int dim, bool keepdim=False, *, Tensor(a!) max, Tensor(b!) max_values) -> (Tensor(a!) values, Tensor(b!) indices) + device_check: NoCheck # TensorIterator + structured: True + precomputed: + - dim -> int dim + dispatch: + CPU, CUDA, MTIA: max_out + MPS: max_out_mps + tags: reduction + +- func: max.names_dim(Tensor self, Dimname dim, bool keepdim=False) -> (Tensor values, Tensor indices) + device_check: NoCheck # TensorIterator + variants: function, method + tags: reduction + +- func: max.names_dim_max(Tensor self, Dimname dim, bool keepdim=False, *, Tensor(a!) max, Tensor(b!) max_values) -> (Tensor(a!) values, Tensor(b!) indices) + device_check: NoCheck # TensorIterator + tags: reduction + +- func: value_selecting_reduction_backward(Tensor grad, int dim, Tensor indices, SymInt[] sizes, bool keepdim) -> Tensor + variants: function + device_check: NoCheck + device_guard: False + dispatch: + CompositeImplicitAutograd: value_selecting_reduction_backward_symint + NestedTensorCPU, NestedTensorCUDA: value_selecting_reduction_backward_nested_symint + +- func: amax(Tensor self, int[1] dim=[], bool keepdim=False) -> Tensor + variants: function, method + structured_delegate: amax.out + tags: [core, reduction] + +- func: amax.out(Tensor self, int[1] dim=[], bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!) + structured: True + dispatch: + CPU, CUDA: amax_out + MPS: amax_out_mps + tags: reduction + +# Return: (Tensor output, Tensor indices) +- func: max_pool1d_with_indices(Tensor self, int[1] kernel_size, int[1] stride=[], int[1] padding=0, int[1] dilation=1, bool ceil_mode=False) -> (Tensor, Tensor) + +- func: max_pool1d(Tensor self, int[1] kernel_size, int[1] stride=[], int[1] padding=0, int[1] dilation=1, bool ceil_mode=False) -> Tensor + +- func: max_pool2d(Tensor self, int[2] kernel_size, int[2] stride=[], int[2] padding=0, int[2] dilation=1, bool ceil_mode=False) -> Tensor + dispatch: + CompositeImplicitAutograd: max_pool2d + MPS: mps_max_pool2d + +- func: max_pool2d_backward(Tensor grad_output, Tensor self, int[2] kernel_size, int[2] stride=[], int[2] padding=0, int[2] dilation=1, bool ceil_mode=False) -> Tensor + dispatch: + MPS: mps_max_pool2d_backward + autogen: max_pool2d_backward.out + +- func: mkldnn_max_pool2d(Tensor self, int[2] kernel_size, int[2] stride=[], int[2] padding=0, int[2] dilation=1, bool ceil_mode=False) -> Tensor + dispatch: + MkldnnCPU: mkldnn_max_pool2d + autogen: mkldnn_max_pool2d.out + +- func: mkldnn_max_pool2d_backward(Tensor grad_output, Tensor output, Tensor input, int[2] kernel_size, int[2] stride=[], int[2] padding=0, int[2] dilation=1, bool ceil_mode=False) -> Tensor + dispatch: + MkldnnCPU: mkldnn_max_pool2d_backward + autogen: mkldnn_max_pool2d_backward.out + +- func: mkldnn_max_pool3d(Tensor self, int[3] kernel_size, int[3] stride=[], int[3] padding=0, int[3] dilation=1, bool ceil_mode=False) -> Tensor + dispatch: + MkldnnCPU: mkldnn_max_pool3d + autogen: mkldnn_max_pool3d.out + +- func: mkldnn_max_pool3d_backward(Tensor grad_output, Tensor output, Tensor input, int[3] kernel_size, int[3] stride=[], int[3] padding=0, int[3] dilation=1, bool ceil_mode=False) -> Tensor + dispatch: + MkldnnCPU: mkldnn_max_pool3d_backward + autogen: mkldnn_max_pool3d_backward.out + +- func: quantized_max_pool1d(Tensor self, int[1] kernel_size, int[1] stride=[], int[1] padding=0, int[1] dilation=1, bool ceil_mode=False) -> Tensor + dispatch: + QuantizedCPU: quantized_max_pool1d + autogen: quantized_max_pool1d.out + +- func: quantized_max_pool2d(Tensor self, int[2] kernel_size, int[2] stride=[], int[2] padding=0, int[2] dilation=1, bool ceil_mode=False) -> Tensor + dispatch: + QuantizedCPU: quantized_max_pool2d + QuantizedCUDA: quantized_max_pool2d_cudnn + autogen: quantized_max_pool2d.out + +- func: quantized_max_pool3d(Tensor self, int[3] kernel_size, int[3] stride=[], int[3] padding=0, int[3] dilation=1, bool ceil_mode=False) -> Tensor + dispatch: + QuantizedCPU: quantized_max_pool3d + autogen: quantized_max_pool3d.out + +- func: max_pool3d(Tensor self, int[3] kernel_size, int[3] stride=[], int[3] padding=0, int[3] dilation=1, bool ceil_mode=False) -> Tensor + +# The CPU and GPU dispatch variants are named weirdly here because otherwise there +# are namespacing issues in C++ +- func: mean(Tensor self, *, ScalarType? dtype=None) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CompositeExplicitAutograd: mean + tags: [core, reduction] + +# For normal naming convention this should be `mean.out`. However since we already have `mean.out` we have to rename this. +- func: mean.dtype_out(Tensor self, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + dispatch: + CompositeExplicitAutograd: mean_dtype_out + tags: reduction + +- func: mean.dim(Tensor self, int[1]? dim, bool keepdim=False, *, ScalarType? dtype=None) -> Tensor + structured_delegate: mean.out + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + QuantizedCPU: mean_quantized_cpu + tags: [core, reduction] + +- func: mean.out(Tensor self, int[1]? dim, bool keepdim=False, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!) + structured: True + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA: mean_out + MPS: mean_out_mps + QuantizedCPU: mean_out_quantized_cpu + tags: reduction + +- func: mean.names_dim(Tensor self, Dimname[1] dim, bool keepdim=False, *, ScalarType? dtype=None) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + tags: reduction + +- func: mean.names_out(Tensor self, Dimname[1] dim, bool keepdim=False, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + tags: reduction + +- func: nanmean(Tensor self, int[1]? dim=None, bool keepdim=False, *, ScalarType? dtype=None) -> Tensor + device_check: NoCheck # Composite + variants: function, method + +- func: nanmean.out(Tensor self, int[1]? dim=None, bool keepdim=False, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # Composite + +- func: median(Tensor self) -> Tensor + variants: function, method + dispatch: + CPU: median_cpu + CUDA: median_cuda + MPS: median_mps + autogen: median.out + +- func: median.dim(Tensor self, int dim, bool keepdim=False) -> (Tensor values, Tensor indices) + variants: function, method + dispatch: + CompositeExplicitAutograd: median + +- func: median.dim_values(Tensor self, int dim, bool keepdim=False, *, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices) + dispatch: + CPU: median_out_cpu + CUDA: median_out_cuda + MPS: median_out_mps + +- func: median.names_dim(Tensor self, Dimname dim, bool keepdim=False) -> (Tensor values, Tensor indices) + variants: function, method + +- func: median.names_dim_values(Tensor self, Dimname dim, bool keepdim=False, *, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices) + +- func: nanmedian(Tensor self) -> Tensor + variants: function, method + dispatch: + CPU: nanmedian_cpu + CUDA: nanmedian_cuda + MPS: nanmedian_mps + autogen: nanmedian.out + +- func: nanmedian.dim(Tensor self, int dim, bool keepdim=False) -> (Tensor values, Tensor indices) + variants: function, method + dispatch: + CompositeExplicitAutograd: nanmedian + +- func: nanmedian.dim_values(Tensor self, int dim, bool keepdim=False, *, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices) + dispatch: + CPU: nanmedian_out_cpu + CUDA: nanmedian_out_cuda + MPS: nanmedian_out_mps + +- func: nanmedian.names_dim(Tensor self, Dimname dim, bool keepdim=False) -> (Tensor values, Tensor indices) + variants: function, method + +- func: nanmedian.names_dim_values(Tensor self, Dimname dim, bool keepdim=False, *, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices) + +- func: min.dim(Tensor self, int dim, bool keepdim=False) -> (Tensor values, Tensor indices) + device_check: NoCheck # TensorIterator + structured_delegate: min.dim_min + variants: function, method + dispatch: + QuantizedCPU, QuantizedCUDA: qmin + tags: [core, reduction] + +- func: min.dim_min(Tensor self, int dim, bool keepdim=False, *, Tensor(a!) min, Tensor(b!) min_indices) -> (Tensor(a!) values, Tensor(b!) indices) + device_check: NoCheck # TensorIterator + structured: True + precomputed: + - dim -> int dim + dispatch: + CPU, CUDA, MTIA: min_out + MPS: min_out_mps + tags: reduction + +- func: min.names_dim(Tensor self, Dimname dim, bool keepdim=False) -> (Tensor values, Tensor indices) + device_check: NoCheck # TensorIterator + variants: function, method + tags: reduction + +- func: min.names_dim_min(Tensor self, Dimname dim, bool keepdim=False, *, Tensor(a!) min, Tensor(b!) min_indices) -> (Tensor(a!) values, Tensor(b!) indices) + device_check: NoCheck # TensorIterator + tags: reduction + +- func: amin(Tensor self, int[1] dim=[], bool keepdim=False) -> Tensor + variants: function, method + structured_delegate: amin.out + tags: [core, reduction] + +- func: amin.out(Tensor self, int[1] dim=[], bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!) + structured: True + dispatch: + CPU, CUDA: amin_out + MPS: amin_out_mps + tags: reduction + +# TODO: Add this function to MPS dispatch key so that we avoid declaring it in +# native_functions.yaml +# https://github.com/pytorch/pytorch/issues/77394 +- func: _mps_convolution(Tensor self, Tensor weight, Tensor? bias, SymInt[] padding, SymInt[] stride, SymInt[] dilation, SymInt groups) -> Tensor + dispatch: + MPS: _mps_convolution + autogen: _mps_convolution.out + +- func: mps_convolution_backward(Tensor self, Tensor grad_output, Tensor weight, SymInt[] padding, SymInt[] stride, SymInt[] dilation, SymInt groups, bool[3] output_mask) -> (Tensor, Tensor, Tensor) + dispatch: + MPS: mps_convolution_backward + autogen: mps_convolution_backward.out + +- func: mkldnn_convolution(Tensor self, Tensor weight, Tensor? bias, SymInt[] padding, SymInt[] stride, SymInt[] dilation, SymInt groups) -> Tensor + dispatch: + CompositeExplicitAutograd: mkldnn_convolution + autogen: mkldnn_convolution.out + +- func: mkldnn_rnn_layer(Tensor input, Tensor weight0, Tensor weight1, Tensor weight2, Tensor weight3, Tensor hx_, Tensor cx_, bool reverse, int[] batch_sizes, int mode, int hidden_size, int num_layers, bool has_biases, bool bidirectional, bool batch_first, bool train) -> (Tensor, Tensor, Tensor, Tensor) + dispatch: + CPU: mkldnn_rnn_layer + MkldnnCPU: mkldnn_rnn_layer + autogen: mkldnn_rnn_layer.out + +- func: mkldnn_rnn_layer_backward(Tensor input, Tensor weight1, Tensor weight2, Tensor weight3, Tensor weight4, Tensor hx_, Tensor cx_tmp, Tensor output, Tensor hy_, Tensor cy_, Tensor? grad_output, Tensor? grad_hy, Tensor? grad_cy, bool reverse, int mode, int hidden_size, int num_layers, bool has_biases, bool train, bool bidirectional, int[] batch_sizes, bool batch_first, Tensor workspace) -> (Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor) + dispatch: + CPU: mkldnn_rnn_layer_backward + autogen: mkldnn_rnn_layer_backward.out + +- func: miopen_batch_norm(Tensor input, Tensor weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, float exponential_average_factor, float epsilon) -> (Tensor, Tensor, Tensor) + dispatch: + CUDA: miopen_batch_norm + autogen: miopen_batch_norm.out + +- func: miopen_batch_norm_backward(Tensor input, Tensor grad_output, Tensor weight, Tensor? running_mean, Tensor? running_var, Tensor? save_mean, Tensor? save_var, float epsilon) -> (Tensor, Tensor, Tensor) + dispatch: + CUDA: miopen_batch_norm_backward + autogen: miopen_batch_norm_backward.out + +- func: miopen_convolution(Tensor self, Tensor weight, Tensor? bias, SymInt[] padding, SymInt[] stride, SymInt[] dilation, SymInt groups, bool benchmark, bool deterministic) -> Tensor + dispatch: + CUDA: miopen_convolution + autogen: miopen_convolution.out + +- func: miopen_convolution_transpose(Tensor self, Tensor weight, Tensor? bias, SymInt[] padding, SymInt[] output_padding, SymInt[] stride, SymInt[] dilation, SymInt groups, bool benchmark, bool deterministic) -> Tensor + dispatch: + CUDA: miopen_convolution_transpose + autogen: miopen_convolution_transpose.out + +- func: miopen_depthwise_convolution(Tensor self, Tensor weight, Tensor? bias, SymInt[] padding, SymInt[] stride, SymInt[] dilation, SymInt groups, bool benchmark, bool deterministic) -> Tensor + dispatch: + CUDA: miopen_depthwise_convolution + autogen: miopen_depthwise_convolution.out + +- func: miopen_convolution_relu(Tensor self, Tensor weight, Tensor? bias, SymInt[] stride, SymInt[] padding, SymInt[] dilation, SymInt groups) -> Tensor + dispatch: + CUDA: miopen_convolution_relu + +- func: miopen_convolution_add_relu(Tensor self, Tensor weight, Tensor z, Scalar? alpha, Tensor? bias, SymInt[] stride, SymInt[] padding, SymInt[] dilation, SymInt groups) -> Tensor + dispatch: + CUDA: miopen_convolution_add_relu + +- func: miopen_rnn(Tensor input, Tensor[] weight, int weight_stride0, Tensor hx, Tensor? cx, int mode, int hidden_size, int num_layers, bool batch_first, float dropout, bool train, bool bidirectional, int[] batch_sizes, Tensor? dropout_state) -> (Tensor, Tensor, Tensor, Tensor, Tensor) + dispatch: + CUDA: miopen_rnn + autogen: miopen_rnn.out + tags: nondeterministic_seeded + + +- func: miopen_rnn_backward(Tensor input, Tensor[] weight, int weight_stride0, Tensor weight_buf, Tensor hx, Tensor? cx, Tensor output, Tensor? grad_output, Tensor? grad_hy, Tensor? grad_cy, int mode, int hidden_size, int num_layers, bool batch_first, float dropout, bool train, bool bidirectional, int[] batch_sizes, Tensor? dropout_state, Tensor reserve, bool[4] output_mask) -> (Tensor, Tensor, Tensor, Tensor[]) + dispatch: + CUDA: miopen_rnn_backward + autogen: miopen_rnn_backward.out + +- func: _use_miopen_ctc_loss(Tensor log_probs, Tensor targets, int[] input_lengths, int[] target_lengths, int blank) -> bool + device_check: NoCheck # Tensor arguments allowed to be on different devices, see also miopen_ctc_loss + dispatch: + CUDA: _use_miopen_ctc_loss + +- func: _use_miopen_ctc_loss.Tensor(Tensor log_probs, Tensor targets, Tensor input_lengths, Tensor target_lengths, int blank) -> bool + device_check: NoCheck # Tensor arguments allowed to be on different devices, see also miopen_ctc_loss + dispatch: + CUDA: _use_miopen_ctc_loss_tensor + +- func: miopen_ctc_loss(Tensor log_probs, Tensor targets, int[] input_lengths, int[] target_lengths, int blank, bool deterministic, bool zero_infinity) -> (Tensor, Tensor) + device_check: NoCheck # log_probs is expected to be on CUDA while targets is expected to be on CPU + dispatch: + CUDA: miopen_ctc_loss + autogen: miopen_ctc_loss.out + +- func: miopen_ctc_loss.Tensor(Tensor log_probs, Tensor targets, Tensor input_lengths, Tensor target_lengths, int blank, bool deterministic, bool zero_infinity) -> (Tensor, Tensor) + device_check: NoCheck # log_probs is expected to be on CUDA while targets is expected to be on CPU + dispatch: + CUDA: miopen_ctc_loss_tensor + +- func: mm(Tensor self, Tensor mat2) -> Tensor + structured_delegate: mm.out + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: _sparse_mm + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: _sparse_csr_mm + tags: core + +- func: mm.out(Tensor self, Tensor mat2, *, Tensor(a!) out) -> Tensor(a!) + structured: True + dispatch: + CPU: mm_out_cpu + CUDA: mm_out_cuda + MTIA: mm_out_mtia + MPS: mm_out_mps + XPU: mm_out_xpu + SparseCPU, SparseCUDA, SparseMPS: _sparse_mm_out + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: _sparse_csr_mm_out + +- func: mm.dtype(Tensor self, Tensor mat2, ScalarType out_dtype) -> Tensor + dispatch: + CUDA: _mm_dtype_cuda + XPU: _mm_dtype_xpu + +- func: mm.dtype_out(Tensor self, Tensor mat2, ScalarType out_dtype, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CUDA: _mm_dtype_out_cuda + XPU: _mm_dtype_out_xpu + +- func: _int_mm(Tensor self, Tensor mat2) -> Tensor + dispatch: + CPU: _int_mm_cpu + CUDA: _int_mm_cuda + XPU: _int_mm_xpu + +- func: _int_mm.out(Tensor self, Tensor mat2, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU: _int_mm_out_cpu + CUDA: _int_mm_out_cuda + XPU: _int_mm_out_xpu + +- func: _convert_weight_to_int4pack(Tensor self, int innerKTiles) -> Tensor + dispatch: + CUDA: _convert_weight_to_int4pack_cuda + MPS: _convert_weight_to_int4pack_mps + +- func: _weight_int4pack_mm(Tensor self, Tensor mat2, int qGroupSize, Tensor qScaleAndZeros) -> Tensor + dispatch: + MPS: _weight_int4pack_mm_mps + CUDA: _weight_int4pack_mm_cuda + +- func: _weight_int4pack_mm_with_scales_and_zeros(Tensor self, Tensor mat2, int qGroupSize, Tensor qScale, Tensor qZeros) -> Tensor + dispatch: + XPU: _weight_int4pack_mm_xpu + +# Split int4 pack weight between cpu and other devices due to +# https://github.com/pytorch/ao/issues/1117#issuecomment-2451252756. +- func: _convert_weight_to_int4pack_for_cpu(Tensor self, int innerKTiles) -> Tensor + dispatch: + CPU: _convert_weight_to_int4pack_cpu + +- func: _weight_int4pack_mm_for_cpu(Tensor self, Tensor mat2, int qGroupSize, Tensor qScaleAndZeros) -> Tensor + dispatch: + CPU: _weight_int4pack_mm_cpu + +- func: _dyn_quant_pack_4bit_weight(Tensor weights, Tensor scales_zeros, Tensor? bias, int block_size, int in_features, int out_features) -> Tensor + dispatch: + CPU: _dyn_quant_pack_4bit_weight_cpu + +- func: _dyn_quant_matmul_4bit(Tensor inp, Tensor packed_weights, int block_size, int in_features, int out_features) -> Tensor + dispatch: + CPU: _dyn_quant_matmul_4bit_cpu + +- func: _weight_int8pack_mm(Tensor self, Tensor mat2, Tensor scales) -> Tensor + dispatch: + CPU: _weight_int8pack_mm_cpu + CUDA: _weight_int8pack_mm_cuda + MPS: _weight_int8pack_mm_mps + XPU: _weight_int8pack_mm_xpu + +- func: _sparse_mm(Tensor sparse, Tensor dense) -> Tensor + python_module: sparse + +- func: _sparse_mm.reduce(Tensor sparse, Tensor dense, str reduce) -> Tensor + python_module: sparse + +- func: _sparse_sparse_matmul(Tensor self, Tensor other) -> Tensor + dispatch: + SparseCPU: sparse_sparse_matmul_cpu + SparseCUDA: sparse_sparse_matmul_cuda + SparseMPS: sparse_sparse_matmul_mps + autogen: _sparse_sparse_matmul.out + +- func: mode(Tensor self, int dim=-1, bool keepdim=False) -> (Tensor values, Tensor indices) + variants: function, method + dispatch: + CPU, CUDA: mode + +- func: mode.values(Tensor self, int dim=-1, bool keepdim=False, *, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices) + dispatch: + CompositeExplicitAutograd: mode_out + +- func: mode.dimname(Tensor self, Dimname dim, bool keepdim=False) -> (Tensor values, Tensor indices) + variants: function, method + +- func: mode.dimname_out(Tensor self, Dimname dim, bool keepdim=False, *, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices) + +- func: mul.Tensor(Tensor self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: mul.out + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: mul_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: mul_sparse_csr + MkldnnCPU: mkldnn_mul + ZeroTensor: mul_zerotensor + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_mul_Tensor + tags: [core, pointwise] + +- func: mul_.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: mul.out + variants: method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: mul_sparse_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: mul_sparse_csr_ + MkldnnCPU: mkldnn_mul_ + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_mul__Tensor + tags: pointwise + +- func: mul.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS, MTIA: mul_out + SparseCPU: mul_out_sparse_cpu + SparseCUDA: mul_out_sparse_cuda + SparseMPS: mul_out_sparse_mps + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: mul_out_sparse_csr + MkldnnCPU: mkldnn_mul_out + tags: pointwise + # For C++ only, until we have conversion from C++ numbers to Tensor + +- func: mul.Scalar(Tensor self, Scalar other) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CompositeExplicitAutograd: mul + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: mul_scalar_sparse_csr + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_mul_Scalar + tags: [core, pointwise] + +- func: mul_.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + dispatch: + CompositeExplicitAutograd: mul_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: mul__scalar_sparse_csr + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_mul__Scalar + autogen: mul.Scalar_out + tags: pointwise +# multiply, alias for mul + +- func: multiply.Tensor(Tensor self, Tensor other) -> Tensor + variants: function, method + +- func: multiply_.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + variants: method + +- func: multiply.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + +- func: multiply.Scalar(Tensor self, Scalar other) -> Tensor + variants: function, method + +- func: multiply_.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + variants: method + +- func: mv(Tensor self, Tensor vec) -> Tensor + variants: function, method + dispatch: + CompositeExplicitAutograd: mv + SparseCPU, SparseCUDA, SparseMPS: mv_sparse + +- func: mv.out(Tensor self, Tensor vec, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: mv_out + +- func: mvlgamma.out(Tensor self, int p, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, CUDA, MPS: mvlgamma_out + tags: pointwise + +- func: mvlgamma(Tensor self, int p) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CompositeExplicitAutograd: mvlgamma + tags: pointwise + +- func: mvlgamma_(Tensor(a!) self, int p) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + dispatch: + CompositeExplicitAutograd: mvlgamma_ + tags: pointwise + +- func: narrow_copy(Tensor self, int dim, SymInt start, SymInt length) -> Tensor + variants: function, method + dispatch: + CPU: narrow_copy_dense_cpu + SparseCPU, SparseCUDA, SparseMPS: narrow_copy_sparse + CompositeExplicitAutogradNonFunctional: narrow_copy_dense_symint + tags: view_copy + +- func: narrow_copy.out(Tensor self, int dim, SymInt start, SymInt length, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU: narrow_copy_dense_cpu_out + +- func: narrow(Tensor(a) self, int dim, SymInt start, SymInt length) -> Tensor(a) + variants: function, method + device_check: NoCheck + device_guard: False + dispatch: + CompositeImplicitAutograd: narrow_symint + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: narrow_nested_symint + +- func: narrow.Tensor(Tensor(a) self, int dim, Tensor start, SymInt length) -> Tensor(a) + variants: function, method + device_check: NoCheck + device_guard: False + dispatch: + CompositeImplicitAutograd: narrow_tensor_symint + +- func: native_batch_norm(Tensor input, Tensor? weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, float momentum, float eps) -> (Tensor, Tensor, Tensor) + dispatch: + CPU: batch_norm_cpu + CUDA: batch_norm_cuda + MPS: batch_norm_mps + MkldnnCPU: mkldnn_batch_norm + +- func: native_batch_norm.out(Tensor input, Tensor? weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, float momentum, float eps, *, Tensor(a!) out, Tensor(b!) save_mean, Tensor(c!) save_invstd) -> (Tensor(a!), Tensor(b!), Tensor(c!)) + dispatch: + CUDA: batch_norm_cuda_out + MPS: batch_norm_mps_out + CPU: batch_norm_cpu_out + +# TODO: In 2 weeks, we should make native_batch_norm composite implicit so that this correct schema percolates correctly through our dispatching +- func: _native_batch_norm_legit(Tensor input, Tensor? weight, Tensor? bias, Tensor(a!) running_mean, Tensor(b!) running_var, bool training, float momentum, float eps) -> (Tensor, Tensor, Tensor) + dispatch: + CPU: _batch_norm_legit_cpu + CUDA: _batch_norm_legit_cuda + MPS: _batch_norm_legit_mps + MkldnnCPU: _mkldnn_batch_norm_legit + autogen: _native_batch_norm_legit_functional + tags: core + +# HACK: identical to _native_batch_norm_legit, but training is known to be False, +# So we known that running stats will not be mutated. +# The real fix here is batch norm consolidation. +- func: _native_batch_norm_legit_no_training(Tensor input, Tensor? weight, Tensor? bias, Tensor running_mean, Tensor running_var, float momentum, float eps) -> (Tensor, Tensor, Tensor) + dispatch: + CompositeExplicitAutograd: _batch_norm_legit_no_training + autogen: _native_batch_norm_legit_no_training.out + tags: core + +- func: _native_batch_norm_legit.out(Tensor input, Tensor? weight, Tensor? bias, Tensor(a!) running_mean, Tensor(b!) running_var, bool training, float momentum, float eps, *, Tensor(d!) out, Tensor(e!) save_mean, Tensor(f!) save_invstd) -> (Tensor(d!), Tensor(e!), Tensor(f!)) + dispatch: + CPU: _batch_norm_legit_cpu_out + CUDA: _batch_norm_legit_cuda_out + MPS: _batch_norm_legit_mps_out + +- func: _native_batch_norm_legit.no_stats(Tensor input, Tensor? weight, Tensor? bias, bool training, float momentum, float eps) -> (Tensor, Tensor, Tensor) + dispatch: + CPU: _batch_norm_legit_no_stats_cpu + CUDA: _batch_norm_legit_no_stats_cuda + MPS: _batch_norm_legit_no_stats_mps + MkldnnCPU: _mkldnn_batch_norm_legit_no_stats + tags: core + +- func: _native_batch_norm_legit.no_stats_out(Tensor input, Tensor? weight, Tensor? bias, bool training, float momentum, float eps, *, Tensor(a!) out, Tensor(b!) save_mean, Tensor(c!) save_invstd) -> (Tensor(a!), Tensor(b!), Tensor(c!)) + dispatch: + CPU: _batch_norm_legit_no_stats_cpu_out + CUDA: _batch_norm_legit_no_stats_cuda_out + MPS: _batch_norm_legit_no_stats_mps_out + +- func: batch_norm_stats(Tensor input, float eps) -> (Tensor, Tensor) + dispatch: + CUDA: batch_norm_stats_cuda + autogen: batch_norm_stats.out + +- func: batch_norm_elemt(Tensor input, Tensor? weight, Tensor? bias, Tensor mean, Tensor invstd, float eps) -> Tensor + dispatch: + CUDA: batch_norm_elemt_cuda + +- func: batch_norm_elemt.out(Tensor input, Tensor? weight, Tensor? bias, Tensor mean, Tensor invstd, float eps, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CUDA: batch_norm_elemt_cuda_out + +# for backward compatibility +- func: batch_norm_gather_stats(Tensor input, Tensor mean, Tensor invstd, Tensor? running_mean, Tensor? running_var, float momentum, float eps, int count) -> (Tensor, Tensor) + dispatch: + CUDA: batch_norm_gather_stats_cuda + autogen: batch_norm_gather_stats.out + +- func: batch_norm_gather_stats_with_counts(Tensor input, Tensor mean, Tensor invstd, Tensor? running_mean, Tensor? running_var, float momentum, float eps, Tensor counts) -> (Tensor, Tensor) + dispatch: + CUDA: batch_norm_gather_stats_with_counts_cuda + autogen: batch_norm_gather_stats_with_counts.out + +- func: native_batch_norm_backward(Tensor grad_out, Tensor input, Tensor? weight, Tensor? running_mean, Tensor? running_var, Tensor? save_mean, Tensor? save_invstd, bool train, float eps, bool[3] output_mask) -> (Tensor, Tensor, Tensor) + dispatch: + CPU: batch_norm_backward_cpu + CUDA: batch_norm_backward_cuda + MPS: batch_norm_backward_mps + MkldnnCPU: mkldnn_batch_norm_backward + autogen: native_batch_norm_backward.out + +- func: batch_norm_backward_reduce(Tensor grad_out, Tensor input, Tensor mean, Tensor invstd, Tensor? weight, bool input_g, bool weight_g, bool bias_g) -> (Tensor, Tensor, Tensor, Tensor) + dispatch: + CUDA: batch_norm_backward_reduce_cuda + autogen: batch_norm_backward_reduce.out + +- func: batch_norm_backward_elemt(Tensor grad_out, Tensor input, Tensor mean, Tensor invstd, Tensor? weight, Tensor sum_dy, Tensor sum_dy_xmu, Tensor count) -> Tensor + dispatch: + CUDA: batch_norm_backward_elemt_cuda + autogen: batch_norm_backward_elemt.out + +- func: batch_norm_update_stats(Tensor input, Tensor? running_mean, Tensor? running_var, float momentum) -> (Tensor, Tensor) + dispatch: + CPU: batch_norm_update_stats_cpu + CUDA: batch_norm_update_stats_cuda + autogen: batch_norm_update_stats.out + +- func: is_vulkan_available() -> bool + +- func: _nnpack_available() -> bool + +- func: _nnpack_spatial_convolution(Tensor input, Tensor weight, Tensor? bias, SymInt[2] padding, SymInt[2] stride=1) -> Tensor + variants: function + dispatch: + CompositeExplicitAutograd: _nnpack_spatial_convolution + autogen: _nnpack_spatial_convolution.out + +- func: ones.names(int[] size, *, Dimname[]? names, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + device_check: NoCheck + device_guard: False + dispatch: + CompositeExplicitAutograd: ones + autogen: ones.names_out + +- func: ones(SymInt[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CompositeExplicitAutograd: ones + +- func: ones.out(SymInt[] size, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: ones_out + +- func: ones_like(Tensor self, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor + dispatch: + # NB: Although this composite mutates on the inside, it is + # non-differentiable so NonFunctional doesn't apply + CompositeExplicitAutograd: ones_like + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: ones_like + autogen: ones_like.out + +- func: pairwise_distance(Tensor x1, Tensor x2, float p=2, float eps=1e-06, bool keepdim=False) -> Tensor + +- func: cdist(Tensor x1, Tensor x2, float p=2, int? compute_mode=None) -> Tensor + +- func: _euclidean_dist(Tensor x1, Tensor x2) -> Tensor + dispatch: + CompositeExplicitAutograd: _euclidean_dist + autogen: _euclidean_dist.out + +- func: _cdist_forward(Tensor x1, Tensor x2, float p, int? compute_mode) -> Tensor + dispatch: + CPU, CUDA: _cdist_forward + MTIA: _cdist_forward_mtia + MPS: _cdist_forward_mps + autogen: _cdist_forward.out + tags: core + +- func: _cdist_backward(Tensor grad, Tensor x1, Tensor x2, float p, Tensor cdist) -> Tensor + dispatch: + CPU, CUDA: _cdist_backward + autogen: _cdist_backward.out + +- func: pdist(Tensor self, float p=2) -> Tensor + +- func: _pdist_forward(Tensor self, float p=2) -> Tensor + dispatch: + CPU, CUDA: _pdist_forward + autogen: _pdist_forward.out + tags: core + +- func: _pdist_backward(Tensor grad, Tensor self, float p, Tensor pdist) -> Tensor + dispatch: + CPU, CUDA: _pdist_backward + autogen: _pdist_backward.out + +- func: cosine_similarity(Tensor x1, Tensor x2, int dim=1, float eps=1e-08) -> Tensor + variants: function + +- func: permute(Tensor(a) self, int[] dims) -> Tensor(a) + variants: function, method + dispatch: + CompositeExplicitAutograd: permute + MPS: permute_mps + SparseCPU, SparseCUDA, SparseMPS: permute_sparse_coo + tags: core + +- func: movedim.intlist(Tensor(a) self, int[] source, int[] destination) -> Tensor(a) + variants: function, method + +- func: movedim.int(Tensor(a) self, int source, int destination) -> Tensor(a) + variants: function, method + +# moveaxis, alias for movedim +- func: moveaxis.intlist(Tensor(a) self, int[] source, int[] destination) -> Tensor(a) + variants: function, method + +- func: moveaxis.int(Tensor(a) self, int source, int destination) -> Tensor(a) + variants: function, method + +# Only exposed from C++ -- in Python, +# we expose it as an attribute `T`, not a function. +# +# I'd like to name this "T" in C++ too, but +# calling a native function "T" causes undefined +# behavior on Windows, for reasons I don't understand +# (maybe related to capital letter collation somehow...) +- func: numpy_T(Tensor(a) self) -> Tensor(a) + variants: method + +# Exposed on Python as an attribute 'H' +- func: matrix_H(Tensor(a) self) -> Tensor(a) + variants: method + +# Exposed on Python as an attribute 'mT' +- func: mT(Tensor(a) self) -> Tensor(a) + variants: method + +# Exposed on Python as an attribute 'mH' +- func: mH(Tensor(a) self) -> Tensor(a) + variants: method + +- func: adjoint(Tensor(a) self) -> Tensor(a) + variants: function, method + +- func: pixel_shuffle(Tensor self, int upscale_factor) -> Tensor + dispatch: + CPU: pixel_shuffle_cpu + MPS: pixel_shuffle_mps + CompositeExplicitAutogradNonFunctional: math_pixel_shuffle + autogen: pixel_shuffle.out + +- func: pixel_unshuffle(Tensor self, int downscale_factor) -> Tensor + dispatch: + CPU: pixel_unshuffle_cpu + MPS: pixel_unshuffle_mps + CompositeExplicitAutogradNonFunctional: math_pixel_unshuffle + autogen: pixel_unshuffle.out + +- func: channel_shuffle(Tensor self, SymInt groups) -> Tensor + dispatch: + CPU, CUDA: channel_shuffle + QuantizedCPU: channel_shuffle_quantized_cpu + autogen: channel_shuffle.out + +- func: native_channel_shuffle(Tensor self, SymInt groups) -> Tensor + dispatch: + CPU: channel_shuffle_cpu + CompositeImplicitAutograd: math_channel_shuffle + +- func: is_pinned(Tensor self, Device? device=None) -> bool + variants: method + dispatch: + # the NestedTensor keys are necessary because NestedTensor has been removed + # from the CompositeExplicitAutograd keyset see Note [NestedTensor Not Included in Backend Keys] + CompositeExplicitAutograd, NestedTensorCPU: is_pinned + SparseCsrCPU: is_pinned_sparse_compressed + SparseCPU: is_pinned_sparse_coo + +# TODO: add a copy kwarg that guarantees that the tensor is put into fresh +# pinned memory +- func: pin_memory(Tensor(a) self, Device? device=None) -> Tensor(a) + variants: method + +# Unlike pin_memory, this is guaranteed to give a new non-aliasing tensor +- func: _pin_memory(Tensor self, Device? device=None) -> Tensor + dispatch: + CompositeExplicitAutograd: _pin_memory + NestedTensorCPU: _pin_memory_nested + SparseCPU: _pin_memory_sparse_coo + SparseCsrCPU: _pin_memory_sparse_compressed + autogen: _pin_memory.out + +- func: pinverse(Tensor self, float rcond=1e-15) -> Tensor + variants: function, method + +- func: poisson_nll_loss(Tensor input, Tensor target, bool log_input, bool full, float eps, int reduction) -> Tensor + variants: function + +- func: rad2deg(Tensor self) -> Tensor + variants: function, method + dispatch: + CompositeExplicitAutograd: rad2deg + SparseCPU, SparseCUDA, SparseMPS: rad2deg_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: rad2deg_sparse_csr + tags: pointwise + +- func: rad2deg_(Tensor(a!) self) -> Tensor(a!) + variants: function, method + dispatch: + CompositeExplicitAutograd: rad2deg_ + SparseCPU, SparseCUDA, SparseMPS: rad2deg_sparse_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: rad2deg_sparse_csr_ + tags: pointwise + +- func: rad2deg.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: rad2deg_out + SparseCPU, SparseCUDA, SparseMPS: rad2deg_sparse_out + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: rad2deg_sparse_csr_out + tags: pointwise + +- func: deg2rad(Tensor self) -> Tensor + variants: function, method + dispatch: + CompositeExplicitAutograd: deg2rad + SparseCPU, SparseCUDA, SparseMPS: deg2rad_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: deg2rad_sparse_csr + tags: pointwise + +- func: deg2rad_(Tensor(a!) self) -> Tensor(a!) + variants: function, method + dispatch: + CompositeExplicitAutograd: deg2rad_ + SparseCPU, SparseCUDA, SparseMPS: deg2rad_sparse_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: deg2rad_sparse_csr_ + tags: pointwise + +- func: deg2rad.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: deg2rad_out + SparseCPU, SparseCUDA, SparseMPS: deg2rad_sparse_out + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: deg2rad_sparse_csr_out + tags: pointwise + +- func: scalar_tensor(Scalar s, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CompositeExplicitAutograd: scalar_tensor + autogen: scalar_tensor.out + tags: core + +- func: rand.names(SymInt[] size, *, Dimname[]? names, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + device_check: NoCheck + device_guard: False + dispatch: + CompositeExplicitAutograd: rand + autogen: rand.names_out + tags: nondeterministic_seeded + +- func: rand.generator_with_names(SymInt[] size, *, Generator? generator, Dimname[]? names, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + device_check: NoCheck + device_guard: False + tags: nondeterministic_seeded + dispatch: + CompositeExplicitAutograd: rand + autogen: rand.generator_with_names_out + +- func: rand(SymInt[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + tags: [core, nondeterministic_seeded] + dispatch: + CompositeExplicitAutograd: rand + +- func: rand.generator(SymInt[] size, *, Generator? generator, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + tags: nondeterministic_seeded + dispatch: + CompositeExplicitAutograd: rand + +- func: rand.out(SymInt[] size, *, Tensor(a!) out) -> Tensor(a!) + tags: nondeterministic_seeded + dispatch: + CompositeExplicitAutograd: rand_out + +- func: rand.generator_out(SymInt[] size, *, Generator? generator, Tensor(a!) out) -> Tensor(a!) + tags: nondeterministic_seeded + +- func: rand_like(Tensor self, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor + tags: nondeterministic_seeded + dispatch: + # NB: Although this composite mutates on the inside, it is + # non-differentiable so NonFunctional doesn't apply + CompositeExplicitAutograd: rand_like + autogen: rand_like.out + +- func: rand_like.generator(Tensor self, *, Generator? generator, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor + tags: nondeterministic_seeded + dispatch: + CompositeExplicitAutograd: rand_like + autogen: rand_like.generator_out + +- func: randint(SymInt high, SymInt[] size, *, ScalarType? dtype=long, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + tags: nondeterministic_seeded + dispatch: + CompositeExplicitAutograd: randint + +- func: randint.generator(SymInt high, SymInt[] size, *, Generator? generator, ScalarType? dtype=long, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + tags: nondeterministic_seeded + dispatch: + CompositeExplicitAutograd: randint + +- func: randint.low(SymInt low, SymInt high, SymInt[] size, *, ScalarType? dtype=long, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + tags: nondeterministic_seeded + dispatch: + CompositeExplicitAutograd: randint + +- func: randint.low_generator(SymInt low, SymInt high, SymInt[] size, *, Generator? generator, ScalarType? dtype=long, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + tags: nondeterministic_seeded + dispatch: + CompositeExplicitAutograd: randint + +- func: randint.out(SymInt high, SymInt[] size, *, Tensor(a!) out) -> Tensor(a!) + tags: nondeterministic_seeded + dispatch: + CompositeExplicitAutograd: randint_out + +- func: randint.generator_out(SymInt high, SymInt[] size, *, Generator? generator, Tensor(a!) out) -> Tensor(a!) + tags: nondeterministic_seeded + dispatch: + CompositeExplicitAutograd: randint_out + +- func: randint.low_out(SymInt low, SymInt high, SymInt[] size, *, Tensor(a!) out) -> Tensor(a!) + tags: nondeterministic_seeded + dispatch: + CompositeExplicitAutograd: randint_out + +- func: randint.low_generator_out(SymInt low, SymInt high, SymInt[] size, *, Generator? generator, Tensor(a!) out) -> Tensor(a!) + tags: nondeterministic_seeded + dispatch: + CompositeExplicitAutograd: randint_out + +- func: randint_like(Tensor self, SymInt high, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor + tags: nondeterministic_seeded + dispatch: + # NB: Although this composite mutates on the inside, it is + # non-differentiable so NonFunctional doesn't apply + CompositeExplicitAutograd: randint_like + autogen: randint_like.out + +- func: randint_like.generator(Tensor self, SymInt high, *, Generator? generator, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor + tags: nondeterministic_seeded + dispatch: + # NB: Although this composite mutates on the inside, it is + # non-differentiable so NonFunctional doesn't apply + CompositeExplicitAutograd: randint_like + autogen: randint_like.generator_out + +- func: randint_like.Tensor(Tensor self, Tensor high, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor + tags: nondeterministic_seeded + dispatch: + # NB: Although this composite mutates on the inside, it is + # non-differentiable so NonFunctional doesn't apply + CompositeExplicitAutograd: randint_like + autogen: randint_like.Tensor_out + +- func: randint_like.Tensor_generator(Tensor self, Tensor high, *, Generator? generator, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor + tags: nondeterministic_seeded + dispatch: + # NB: Although this composite mutates on the inside, it is + # non-differentiable so NonFunctional doesn't apply + CompositeExplicitAutograd: randint_like + autogen: randint_like.Tensor_generator_out + +- func: randint_like.low_dtype(Tensor self, SymInt low, SymInt high, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor + tags: nondeterministic_seeded + dispatch: + # NB: Although this composite mutates on the inside, it is + # non-differentiable so NonFunctional doesn't apply + CompositeExplicitAutograd: randint_like + autogen: randint_like.low_dtype_out + +- func: randint_like.low_generator_dtype(Tensor self, SymInt low, SymInt high, *, Generator? generator, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor + tags: nondeterministic_seeded + dispatch: + # NB: Although this composite mutates on the inside, it is + # non-differentiable so NonFunctional doesn't apply + CompositeExplicitAutograd: randint_like + autogen: randint_like.low_generator_dtype_out + +- func: randn(SymInt[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + tags: [core, nondeterministic_seeded] + dispatch: + CompositeExplicitAutograd: randn + +- func: randn.generator(SymInt[] size, *, Generator? generator, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + tags: nondeterministic_seeded + dispatch: + CompositeExplicitAutograd: randn + +- func: randn.names(SymInt[] size, *, Dimname[]? names, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + tags: nondeterministic_seeded + device_check: NoCheck + device_guard: False + dispatch: + CompositeExplicitAutograd: randn + autogen: randn.names_out + +- func: randn.generator_with_names(SymInt[] size, *, Generator? generator, Dimname[]? names, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + tags: nondeterministic_seeded + device_check: NoCheck + device_guard: False + dispatch: + CompositeExplicitAutograd: randn + autogen: randn.generator_with_names_out + +- func: randn.out(SymInt[] size, *, Tensor(a!) out) -> Tensor(a!) + tags: nondeterministic_seeded + +- func: randn.generator_out(SymInt[] size, *, Generator? generator, Tensor(a!) out) -> Tensor(a!) + tags: nondeterministic_seeded + +- func: randn_like(Tensor self, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor + tags: nondeterministic_seeded + dispatch: + # NB: Although this composite mutates on the inside, it is + # non-differentiable so NonFunctional doesn't apply + CompositeExplicitAutograd, CompositeImplicitAutogradNestedTensor: randn_like + autogen: randn_like.out + +- func: randn_like.generator(Tensor self, *, Generator? generator, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor + tags: nondeterministic_seeded + dispatch: + # NB: Although this composite mutates on the inside, it is + # non-differentiable so NonFunctional doesn't apply + CompositeExplicitAutograd, CompositeImplicitAutogradNestedTensor: randn_like + autogen: randn_like.generator_out + +- func: randperm(SymInt n, *, ScalarType? dtype=long, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + tags: [core, nondeterministic_seeded] + dispatch: + CompositeExplicitAutograd: randperm + +- func: randperm.generator(SymInt n, *, Generator? generator, ScalarType? dtype=long, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + tags: nondeterministic_seeded + dispatch: + CompositeExplicitAutograd: randperm + +- func: randperm.out(SymInt n, *, Tensor(a!) out) -> Tensor(a!) + tags: nondeterministic_seeded + dispatch: + CompositeExplicitAutograd: randperm_out + +- func: randperm.generator_out(SymInt n, *, Generator? generator, Tensor(a!) out) -> Tensor(a!) + tags: nondeterministic_seeded + dispatch: + CPU: randperm_out_cpu + CUDA: randperm_out_cuda + MPS: randperm_out_mps + +- func: range.step(Scalar start, Scalar end, Scalar step=1, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CompositeExplicitAutograd: range + +- func: range(Scalar start, Scalar end, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CompositeExplicitAutograd: range + +- func: range.out_(Scalar start, Scalar end, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: range_out_no_step + +- func: range.out(Scalar start, Scalar end, Scalar step=1, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, Meta: range_out + CUDA: range_cuda_out + MPS: range_mps_out + cpp_no_default_args: ['step'] + +- func: ravel(Tensor(a) self) -> Tensor(a) + variants: function, method + +- func: reciprocal(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: reciprocal.out + variants: function, method + tags: [core, pointwise] + +- func: reciprocal_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: reciprocal.out + variants: function, method + tags: pointwise + +- func: reciprocal.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS, MTIA: reciprocal_out + tags: pointwise + +- func: neg(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: neg.out + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: neg_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: neg_sparse_csr + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_neg + tags: [core, pointwise] + +- func: neg_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: neg.out + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: neg_sparse_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: neg_sparse_csr_ + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_neg_ + tags: pointwise + +- func: neg.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS, MTIA: neg_out + SparseCPU, SparseCUDA, SparseMPS: neg_out_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: neg_sparse_csr_out + tags: pointwise +# Alias for neg + +- func: negative(Tensor self) -> Tensor + variants: function, method + +- func: negative_(Tensor(a!) self) -> Tensor(a!) + variants: function, method + +- func: negative.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + +- func: repeat(Tensor self, SymInt[] repeats) -> Tensor + variants: method # This is method-only to match the previous tensor API. In the future we could make this a function too. + dispatch: + CompositeExplicitAutograd: repeat + MPS: repeat_mps + autogen: repeat.out + tags: core + +- func: repeat_interleave.Tensor(Tensor repeats, *, SymInt? output_size=None) -> Tensor + variants: function + dispatch: + CPU: repeat_interleave_cpu + CUDA: repeat_interleave_cuda + MPS: repeat_interleave_mps + tags: dynamic_output_shape + autogen: repeat_interleave.Tensor_out + +- func: repeat_interleave.self_Tensor(Tensor self, Tensor repeats, int? dim=None, *, SymInt? output_size=None) -> Tensor + variants: function, method + dispatch: + CompositeImplicitAutograd: repeat_interleave_symint + +- func: repeat_interleave.self_int(Tensor self, SymInt repeats, int? dim=None, *, SymInt? output_size=None) -> Tensor + variants: function, method + dispatch: + CompositeImplicitAutograd: repeat_interleave_symint + +- func: reshape(Tensor(a) self, SymInt[] shape) -> Tensor(a) + variants: function, method + device_check: NoCheck + device_guard: False + dispatch: + CompositeImplicitAutograd: reshape_symint + CompositeImplicitAutogradNestedTensor: reshape_nested_symint + +- func: _reshape_copy(Tensor self, SymInt[] size) -> Tensor + variants: function + dispatch: + CompositeExplicitAutograd: _reshape_copy_symint + +# NOTE [ _reshape_alias ] is meant to be used in the implementation of reshape. +# They are not user-facing, hence the leading underscore. Please don't use it +# anywhere else. +- func: _reshape_alias(Tensor(a) self, SymInt[] size, SymInt[] stride) -> Tensor(a) + variants: function, method + device_check: NoCheck + device_guard: False + dispatch: + CPU, CUDA, Meta, QuantizedCPU, QuantizedCUDA, ZeroTensor, MPS, MTIA: _reshape_alias + # We don't need to support mkldnn since this is handled explicitly by the reshape operator. + +- func: _mkldnn_reshape(Tensor self, int[] shape) -> Tensor + device_check: NoCheck + device_guard: False + dispatch: + MkldnnCPU: mkldnn_reshape + autogen: _mkldnn_reshape.out + +- func: reshape_as(Tensor(a) self, Tensor other) -> Tensor(a) + variants: method + device_check: NoCheck + device_guard: False + dispatch: + CompositeImplicitAutograd: reshape_as + CompositeImplicitAutogradNestedTensor: reshape_as_nested + +- func: round(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: round.out + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: round_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: round_sparse_csr + tags: [core, pointwise] + +- func: round_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: round.out + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: round_sparse_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: round_sparse_csr_ + tags: pointwise + +- func: round.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: round_out + SparseCPU, SparseCUDA, SparseMPS: round_sparse_out + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: round_sparse_csr_out + tags: pointwise + +- func: round.decimals(Tensor self, *, int decimals) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: round.decimals_out + variants: function, method + tags: pointwise + +- func: round_.decimals(Tensor(a!) self, *, int decimals) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: round.decimals_out + variants: function, method + tags: pointwise + +- func: round.decimals_out(Tensor self, *, int decimals, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: round_decimals_out + tags: pointwise + +- func: rrelu(Tensor self, Scalar lower=0.125, Scalar upper=0.3333333333333333, bool training=False, Generator? generator=None) -> Tensor + device_check: NoCheck # TensorIterator + tags: [pointwise, nondeterministic_seeded] + +- func: rrelu_(Tensor(a!) self, Scalar lower=0.125, Scalar upper=0.3333333333333333, bool training=False, Generator? generator=None) -> Tensor(a!) + tags: nondeterministic_seeded + device_check: NoCheck # TensorIterator + +- func: relu(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CPU, CUDA: relu + MPS: relu_mps + MTIA: relu_mtia + MkldnnCPU: mkldnn_relu + QuantizedCPU: relu_quantized_cpu + QuantizedCUDA: relu_quantized_cuda + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_relu + SparseCPU, SparseCUDA, SparseMPS: relu_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: relu_sparse_csr + tags: [core, pointwise] + +- func: relu_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CPU, CUDA: relu_ + MPS: relu_mps_ + MTIA: relu_mtia_ + MkldnnCPU: mkldnn_relu_ + QuantizedCPU: relu_quantized_cpu_ + QuantizedCUDA: relu_quantized_cuda_ + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_relu_ + SparseCPU, SparseCUDA, SparseMPS: relu_sparse_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: relu_sparse_csr_ + autogen: relu.out + tags: pointwise + +- func: relu6(Tensor self) -> Tensor + python_module: nn + tags: pointwise + +- func: relu6_(Tensor(a!) self) -> Tensor(a!) + python_module: nn + +- func: prelu(Tensor self, Tensor weight) -> Tensor + variants: function, method + autogen: prelu.out + +- func: _prelu_kernel(Tensor self, Tensor weight) -> Tensor + dispatch: + CPU, CUDA: _prelu_kernel + QuantizedCPU: _prelu_kernel_quantized_cpu + MkldnnCPU: mkldnn_prelu + MPS: prelu_mps + +- func: _prelu_kernel_backward(Tensor grad_output, Tensor self, Tensor weight) -> (Tensor, Tensor) + dispatch: + CPU, CUDA: _prelu_kernel_backward + MkldnnCPU: mkldnn_prelu_backward + MPS: prelu_backward_mps + +- func: gelu.out(Tensor self, *, str approximate='none', Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + device_check: NoCheck # TensorIterator + python_module: nn + dispatch: + CPU: gelu_out_cpu + CUDA: gelu_out_cuda + MPS: gelu_out_mps + +- func: gelu_(Tensor(a!) self, *, str approximate='none') -> Tensor(a!) + structured_delegate: gelu.out + device_check: NoCheck # TensorIterator + python_module: nn + dispatch: + QuantizedCPU: gelu_quantized_cpu_ + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_gelu_ + +- func: gelu(Tensor self, *, str approximate='none') -> Tensor + structured_delegate: gelu.out + device_check: NoCheck # TensorIterator + python_module: nn + dispatch: + MkldnnCPU: mkldnn_gelu + QuantizedCPU: gelu_quantized_cpu + QuantizedCUDA: gelu_quantized_cuda + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_gelu + tags: [core, pointwise] + +- func: gelu_backward.grad_input(Tensor grad_output, Tensor self, *, str approximate='none', Tensor(a!) grad_input) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + python_module: nn + dispatch: + CPU: gelu_backward_out_cpu + CUDA: gelu_backward_out_cuda + MPS: gelu_backward_out_mps + +- func: gelu_backward(Tensor grad_output, Tensor self, *, str approximate='none') -> Tensor + structured_delegate: gelu_backward.grad_input + python_module: nn + dispatch: + MkldnnCPU: mkldnn_gelu_backward + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: gelu_backwards_nested + tags: pointwise + +- func: infinitely_differentiable_gelu_backward(Tensor grad, Tensor self) -> Tensor + variants: function + python_module: nn + device_check: NoCheck + device_guard: False + +- func: hardshrink.out(Tensor self, Scalar lambd=0.5, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA, MPS: hardshrink_out + +- func: hardshrink(Tensor self, Scalar lambd=0.5) -> Tensor + structured_delegate: hardshrink.out + device_check: NoCheck # TensorIterator + variants: function, method + tags: pointwise + +- func: hardshrink_backward.grad_input(Tensor grad_out, Tensor self, Scalar lambd, *, Tensor(a!) grad_input) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: hardshrink_backward_out + +- func: hardshrink_backward(Tensor grad_out, Tensor self, Scalar lambd) -> Tensor + structured_delegate: hardshrink_backward.grad_input + variants: function, method + +- func: rsqrt(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: rsqrt.out + variants: function, method + tags: [core, pointwise] + +- func: rsqrt_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: rsqrt.out + variants: function, method + tags: pointwise + +- func: rsqrt.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS, MTIA: rsqrt_out + tags: pointwise + +- func: select.Dimname(Tensor(a) self, Dimname dim, int index) -> Tensor(a) + variants: function, method + device_check: NoCheck + device_guard: False + +- func: select.int(Tensor(a) self, int dim, SymInt index) -> Tensor(a) + variants: function, method + device_check: NoCheck + device_guard: False + dispatch: + CompositeExplicitAutograd: select_symint + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: select_sparse_csr + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: select_nested + tags: core + +- func: select_backward(Tensor grad_output, SymInt[] input_sizes, int dim, SymInt index) -> Tensor + variants: function + device_check: NoCheck + device_guard: False + dispatch: + CompositeExplicitAutogradNonFunctional: select_backward_symint + autogen: select_backward.out + +- func: _nested_select_backward(Tensor grad_output, Tensor self, int dim, SymInt index) -> Tensor + variants: function + device_check: NoCheck + device_guard: False + dispatch: + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: _nested_select_backward_symint + +- func: selu(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + tags: pointwise + +- func: selu_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + tags: pointwise + +- func: celu(Tensor self, Scalar alpha=1.0) -> Tensor + device_check: NoCheck # TensorIterator + dispatch: + CompositeExplicitAutograd: celu + tags: pointwise + +- func: celu_(Tensor(a!) self, Scalar alpha=1.0) -> Tensor(a!) + device_check: NoCheck # TensorIterator + dispatch: + CompositeExplicitAutograd: celu_ + autogen: celu.out + tags: pointwise + +- func: silu(Tensor self) -> Tensor + structured_delegate: silu.out + python_module: nn + dispatch: + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_silu + tags: pointwise + +- func: silu_(Tensor(a!) self) -> Tensor(a!) + structured_delegate: silu.out + python_module: nn + dispatch: + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_silu_ + tags: pointwise + +- func: silu.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + python_module: nn + dispatch: + CPU, CUDA, MPS, MTIA: silu_out + tags: pointwise + +- func: silu_backward.grad_input(Tensor grad_output, Tensor self, *, Tensor(a!) grad_input) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + python_module: nn + dispatch: + CPU, CUDA, MPS: silu_backward_out + tags: pointwise + +- func: silu_backward(Tensor grad_output, Tensor self) -> Tensor + structured_delegate: silu_backward.grad_input + python_module: nn + dispatch: + CompositeImplicitAutograd: math_silu_backward + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: silu_backward_nested + tags: pointwise + +- func: mish(Tensor self) -> Tensor + structured_delegate: mish.out + python_module: nn + tags: pointwise + +- func: mish_(Tensor(a!) self) -> Tensor(a!) + structured_delegate: mish.out + python_module: nn + +- func: mish.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + python_module: nn + dispatch: + CPU, CUDA: mish_out + MPS: mish_out_mps + +- func: mish_backward(Tensor grad_output, Tensor self) -> Tensor + python_module: nn + dispatch: + CPU, CUDA: mish_backward + MPS: mish_backward_mps + CompositeImplicitAutograd: math_mish_backward + +- func: sigmoid(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: sigmoid.out + variants: function, method + dispatch: + QuantizedCPU: sigmoid_quantized_cpu + MkldnnCPU: mkldnn_sigmoid + tags: [core, pointwise] + +- func: sigmoid_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: sigmoid.out + variants: function, method + dispatch: + MkldnnCPU: mkldnn_sigmoid_ + tags: pointwise + +- func: sigmoid.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: sigmoid_out + tags: pointwise + +- func: logit(Tensor self, float? eps=None) -> Tensor + variants: function, method + dispatch: + CPU, CUDA, MTIA: logit + MPS: logit_mps + tags: pointwise + +- func: logit_(Tensor(a!) self, float? eps=None) -> Tensor(a!) + variants: function, method + dispatch: + CPU, CUDA: logit_ + tags: pointwise + +- func: logit.out(Tensor self, float? eps=None, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, CUDA: logit_out + MPS: logit_out_mps + tags: pointwise + +- func: sin(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: sin.out + variants: function, method + dispatch: + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: sin_sparse_csr + SparseCPU, SparseCUDA, SparseMPS: sin_sparse + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_sin + tags: [core, pointwise] + +- func: sin_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: sin.out + variants: function, method + dispatch: + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: sin_sparse_csr_ + SparseCPU, SparseCUDA, SparseMPS: sin_sparse_ + tags: pointwise + +- func: sin.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS, MTIA: sin_out + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: sin_sparse_csr_out + SparseCPU, SparseCUDA, SparseMPS: sin_sparse_out + tags: pointwise + +- func: sinc(Tensor self) -> Tensor + structured_delegate: sinc.out + variants: function, method + tags: pointwise + +- func: sinc_(Tensor(a!) self) -> Tensor(a!) + structured_delegate: sinc.out + variants: function, method + tags: pointwise + +- func: sinc.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: sinc_out + tags: pointwise + +- func: sinh(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: sinh.out + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: sinh_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: sinh_sparse_csr + tags: [core, pointwise] + +- func: sinh_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: sinh.out + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: sinh_sparse_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: sinh_sparse_csr_ + tags: pointwise + +- func: sinh.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: sinh_out + SparseCPU, SparseCUDA, SparseMPS: sinh_sparse_out + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: sinh_sparse_csr_out + +# Returns a copy of this `Variable` that is detached from its autograd graph. +# This method is OK to call if the `Variable` is a view. +# +# NOTE: Previously, if we change the tensor metadata (e.g. sizes / strides / +# storage / storage_offset) of a tensor created from `detach()`, those metadata +# in the original tensor will also be updated. However, the new behavior is that +# those metadata changes to the detached tensor will not update the original tensor +# anymore, and in the `detach()` function we need to set `allow_tensor_metadata_change_` +# to false to make such changes explicitly illegal, in order to prevent users from +# changing metadata of the detached tensor and expecting the original tensor to also +# be updated. + tags: pointwise +- func: detach(Tensor(a) self) -> Tensor(a) + variants: function, method + dispatch: + CompositeExplicitAutograd: detach + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: detach + +# Like `detach()`, but modifies this `Variable` in-place. This method may +# only be called on non-view `Variable`s. You can use `is_view()` to check +# this. If this `Variable` is a view, throws an `std::runtime_error()`. +- func: detach_(Tensor(a!) self) -> Tensor(a!) + variants: function, method + tags: inplace_view + dispatch: + CompositeExplicitAutograd: detach_ + +- func: size.int(Tensor self, int dim) -> int + variants: function + device_check: NoCheck + device_guard: False + manual_cpp_binding: True + +- func: size.Dimname(Tensor self, Dimname dim) -> int + variants: function, method + device_check: NoCheck + device_guard: False + +- func: sym_size.int(Tensor self, int dim) -> SymInt + variants: function + device_check: NoCheck + device_guard: False + tags: core + manual_cpp_binding: True + +- func: sym_is_contiguous(Tensor self, MemoryFormat memory_format=contiguous_format) -> SymBool + variants: function + device_check: NoCheck + device_guard: False + tags: core + manual_cpp_binding: True + +- func: sym_numel(Tensor self) -> SymInt + variants: function + device_check: NoCheck + device_guard: False + tags: core + manual_cpp_binding: True + +- func: sym_storage_offset(Tensor self) -> SymInt + variants: function + device_check: NoCheck + device_guard: False + tags: core + manual_cpp_binding: True + +- func: slice.Tensor(Tensor(a) self, int dim=0, SymInt? start=None, SymInt? end=None, SymInt step=1) -> Tensor(a) + variants: function, method + device_check: NoCheck + device_guard: False + dispatch: + CompositeExplicitAutograd: slice + tags: core + +# NOTE: The implementation of split_with_sizes bypasses the dispatcher to call this; undo +# that if adding specific implementations here! + +- func: slice_backward(Tensor grad_output, SymInt[] input_sizes, int dim, SymInt start, SymInt end, SymInt step) -> Tensor + variants: function + device_check: NoCheck + device_guard: False + dispatch: + CompositeExplicitAutograd: slice_backward + autogen: slice_backward.out + +# NB: This op exists to back the implementation of reverse view_funcs for various views (chunk, +# slice.Tensor, split_with_sizes, et al.). Currently, these are only used during fake-ification +# of PT2 graph input subclass instances that are views. This means: +# * This op shouldn't really show up in eager mode (so e.g. XLA shouldn't have to implement it) +# * This op shouldn't show up in a PT2 graph (so a PT2 backend shouldn't have to implement it) +# * A subclass will have to implement this to work in PT2 if a subclass view is used as a graph +# input AND the view utilizes this op in its inverse. The idea is that slice_inverse() is +# easier to implement for a subclass than as_strided() +- func: slice_inverse(Tensor(a) self, Tensor src, int dim=0, SymInt? start=None, SymInt? end=None, SymInt step=1) -> Tensor(a) + variants: function, method + device_check: NoCheck + device_guard: False + dispatch: + CompositeExplicitAutograd: slice_inverse_symint + +- func: slice_scatter(Tensor self, Tensor src, int dim=0, SymInt? start=None, SymInt? end=None, SymInt step=1) -> Tensor + variants: function, method + device_check: NoCheck + device_guard: False + dispatch: + CompositeExplicitAutogradNonFunctional: slice_scatter + autogen: slice_scatter.out + tags: [core, view_copy] + +- func: select_scatter(Tensor self, Tensor src, int dim, SymInt index) -> Tensor + variants: function, method + device_check: NoCheck + device_guard: False + dispatch: + CompositeExplicitAutogradNonFunctional: select_scatter_symint + autogen: select_scatter.out + tags: core + +- func: diagonal_scatter(Tensor self, Tensor src, int offset=0, int dim1=0, int dim2=1) -> Tensor + variants: function, method + device_check: NoCheck + device_guard: False + dispatch: + CompositeExplicitAutogradNonFunctional: diagonal_scatter + autogen: diagonal_scatter.out + +- func: as_strided_scatter(Tensor self, Tensor src, SymInt[] size, SymInt[] stride, SymInt? storage_offset=None) -> Tensor + variants: function, method + device_check: NoCheck + device_guard: False + dispatch: + CompositeExplicitAutogradNonFunctional: as_strided_scatter_symint + autogen: as_strided_scatter.out + +- func: smm(Tensor self, Tensor mat2) -> Tensor + variants: function, method + +# softmax allows positional dtype, unlike most operators, because kwonly is BC-breaking when loading jit models. +- func: softmax.int(Tensor self, int dim, ScalarType? dtype=None) -> Tensor + variants: function, method + +- func: softmax.int_out(Tensor self, int dim, ScalarType? dtype=None, *, Tensor(a!) out) -> Tensor(a!) + variants: function + dispatch: + CompositeExplicitAutograd: softmax_out + +- func: softmax.Dimname(Tensor self, Dimname dim, *, ScalarType? dtype=None) -> Tensor + variants: function, method + +- func: _softmax(Tensor self, int dim, bool half_to_float) -> Tensor + structured_delegate: _softmax.out + dispatch: + MkldnnCPU: mkldnn_softmax + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: softmax_nested + tags: core + +- func: _softmax.out(Tensor self, int dim, bool half_to_float, *, Tensor(a!) out) -> Tensor(a!) + structured: True + dispatch: + CPU: softmax_cpu_out + CUDA: softmax_cuda_out + MPS: softmax_mps_out + +- func: _softmax_backward_data(Tensor grad_output, Tensor output, int dim, ScalarType input_dtype) -> Tensor + structured_delegate: _softmax_backward_data.out + dispatch: + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: nested_softmax_backward + +- func: _softmax_backward_data.out(Tensor grad_output, Tensor output, int dim, ScalarType input_dtype, *, Tensor(a!) grad_input) -> Tensor(a!) + structured: True + dispatch: + CPU: softmax_backward_cpu_out + CUDA: softmax_backward_cuda_out + MPS: softmax_backward_mps_out + +- func: unsafe_split.Tensor(Tensor self, SymInt split_size, int dim=0) -> Tensor[] + variants: function, method + device_check: NoCheck + device_guard: False + dispatch: + CompositeExplicitAutograd: unsafe_split + autogen: unsafe_split.Tensor_out + +- func: split.Tensor(Tensor(a -> *) self, SymInt split_size, int dim=0) -> Tensor(a)[] + variants: function, method + device_check: NoCheck + device_guard: False + dispatch: + CompositeExplicitAutograd: split + +- func: split.sizes(Tensor(a -> *) self, SymInt[] split_size, int dim=0) -> Tensor(a)[] + variants: function, method + device_guard: False + dispatch: + CompositeImplicitAutograd: split_symint + +- func: unsafe_split_with_sizes(Tensor self, SymInt[] split_sizes, int dim=0) -> Tensor[] + variants: function, method + device_check: NoCheck + device_guard: False + dispatch: + CompositeExplicitAutograd: unsafe_split_with_sizes + autogen: unsafe_split_with_sizes.out + +- func: split_with_sizes(Tensor(a -> *) self, SymInt[] split_sizes, int dim=0) -> Tensor(a)[] + variants: function, method + device_check: NoCheck + device_guard: False + dispatch: + CompositeExplicitAutograd: split_with_sizes + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: split_with_sizes_nested + tags: core + +- func: hsplit.int(Tensor(a -> *) self, int sections) -> Tensor(a)[] + variants: function, method + +- func: hsplit.array(Tensor(a -> *) self, int[] indices) -> Tensor(a)[] + variants: function, method + +- func: vsplit.int(Tensor(a -> *) self, int sections) -> Tensor(a)[] + variants: function, method + +- func: vsplit.array(Tensor(a -> *) self, int[] indices) -> Tensor(a)[] + variants: function, method + +- func: dsplit.int(Tensor(a -> *) self, int sections) -> Tensor(a)[] + variants: function, method + +- func: dsplit.array(Tensor(a -> *) self, int[] indices) -> Tensor(a)[] + variants: function, method + +- func: squeeze(Tensor(a) self) -> Tensor(a) + variants: function, method + device_check: NoCheck + device_guard: False + dispatch: + CompositeExplicitAutograd: squeeze + QuantizedCPU, QuantizedCUDA: squeeze_quantized + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: squeeze_nested + +- func: squeeze.dim(Tensor(a) self, int dim) -> Tensor(a) + variants: function, method + device_check: NoCheck + device_guard: False + dispatch: + CompositeExplicitAutograd: squeeze + QuantizedCPU, QuantizedCUDA: squeeze_quantized + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: squeeze_dim_nested + tags: core + +- func: squeeze.dimname(Tensor(a) self, Dimname dim) -> Tensor(a) + variants: function, method + device_check: NoCheck + device_guard: False + + +- func: squeeze.dims(Tensor(a) self, int[] dim) -> Tensor(a) + variants: function, method + device_check: NoCheck + device_guard: False + dispatch: + CompositeExplicitAutograd: squeeze + QuantizedCPU, QuantizedCUDA: squeeze_quantized + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: squeeze_dim_nested + tags: core + +- func: squeeze_(Tensor(a!) self) -> Tensor(a!) + variants: method + device_check: NoCheck + device_guard: False + tags: inplace_view + dispatch: + CompositeExplicitAutograd: squeeze_ + +- func: squeeze_.dim(Tensor(a!) self, int dim) -> Tensor(a!) + variants: method + device_check: NoCheck + device_guard: False + tags: inplace_view + dispatch: + CompositeExplicitAutograd: squeeze_ + +- func: squeeze_.dims(Tensor(a!) self, int[] dim) -> Tensor(a!) + variants: method + device_check: NoCheck + device_guard: False + tags: inplace_view + dispatch: + CompositeExplicitAutograd: squeeze_ + +- func: squeeze_.dimname(Tensor(a!) self, Dimname dim) -> Tensor(a!) + variants: method + device_check: NoCheck + device_guard: False + tags: inplace_view + +- func: sspaddmm(Tensor self, Tensor mat1, Tensor mat2, *, Scalar beta=1, Scalar alpha=1) -> Tensor + variants: function, method + +- func: sspaddmm.out(Tensor self, Tensor mat1, Tensor mat2, *, Scalar beta=1, Scalar alpha=1, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU: _sspaddmm_out_only_sparse + CUDA: _sspaddmm_out_only_sparse_cuda + SparseCPU: _sspaddmm_out_cpu + SparseCUDA: _sspaddmm_out_cuda + +- func: _chunk_cat(Tensor[] tensors, int dim, int num_chunks) -> Tensor + dispatch: + CompositeExplicitAutograd: _chunk_cat + CUDA: _chunk_cat_cuda + +- func: _chunk_cat.out(Tensor[] tensors, int dim, int num_chunks, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: _chunk_cat_out + CUDA: _chunk_cat_out_cuda + +- func: stack(Tensor[] tensors, int dim=0) -> Tensor + dispatch: + CompositeExplicitAutograd: stack + +- func: stack.out(Tensor[] tensors, int dim=0, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: stack_out + +- func: _stack(Tensor[] tensors, int dim=0) -> Tensor + dispatch: # match the backends supported by _cat + CPU: _stack_cpu + CompositeExplicitAutograd: _stack + +- func: _stack.out(Tensor[] tensors, int dim=0, *, Tensor(a!) out) -> Tensor(a!) + dispatch: # match the backends supported by _cat_out + CPU: _stack_out_cpu + CompositeExplicitAutograd: _stack_out + +- func: hstack(Tensor[] tensors) -> Tensor + +- func: hstack.out(Tensor[] tensors, *, Tensor(a!) out) -> Tensor(a!) + +- func: vstack(Tensor[] tensors) -> Tensor + +- func: vstack.out(Tensor[] tensors, *, Tensor(a!) out) -> Tensor(a!) + +- func: dstack(Tensor[] tensors) -> Tensor + +- func: dstack.out(Tensor[] tensors, *, Tensor(a!) out) -> Tensor(a!) + +# Overload without center & pad mode, needed for forward-compatibility +- func: stft(Tensor self, int n_fft, int? hop_length=None, int? win_length=None, Tensor? window=None, bool normalized=False, bool? onesided=None, bool? return_complex=None, bool? align_to_window=None) -> Tensor + variants: function, method + cpp_no_default_args: ['hop_length', 'win_length', 'window', 'normalized'] + +- func: stft.center(Tensor self, int n_fft, int? hop_length=None, int? win_length=None, Tensor? window=None, bool center=True, str pad_mode="reflect", bool normalized=False, bool? onesided=None, bool? return_complex=None, bool? align_to_window=None) -> Tensor + variants: function, method + +- func: istft(Tensor self, int n_fft, int? hop_length=None, int? win_length=None, Tensor? window=None, bool center=True, bool normalized=False, bool? onesided=None, int? length=None, bool return_complex=False) -> Tensor + variants: function, method + +- func: stride.int(Tensor self, int dim) -> int + variants: function + device_check: NoCheck + device_guard: False + manual_cpp_binding: True + +- func: stride.Dimname(Tensor self, Dimname dim) -> int + variants: function, method + device_check: NoCheck + device_guard: False + +- func: sym_stride.int(Tensor self, int dim) -> SymInt + variants: function + device_check: NoCheck + device_guard: False + tags: core + manual_cpp_binding: True + +- func: sum(Tensor self, *, ScalarType? dtype=None) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CompositeExplicitAutograd: sum + SparseCPU, SparseCUDA, SparseMPS, SparseMeta: sum_coo + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: sum_csr + autogen: sum.out + tags: reduction + +- func: sum.dim_IntList(Tensor self, int[1]? dim, bool keepdim=False, *, ScalarType? dtype=None) -> Tensor + # TODO: Align the signature of sum.dim_IntList and _sparse_csr_sum.dim_dtype + structured_delegate: sum.IntList_out + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + NestedTensorCPU: NestedTensor_sum_dim_CPU + SparseCPU, SparseCUDA, SparseMPS: sum_sparse_coo + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: sum_sparse_compressed + tags: [core, reduction] + +- func: sum.dim_DimnameList(Tensor self, Dimname[1] dim, bool keepdim=False, *, ScalarType? dtype=None) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + tags: reduction + +- func: sum.IntList_out(Tensor self, int[1]? dim, bool keepdim=False, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!) + structured: True + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA: sum_out + MPS: sum_out_mps + tags: reduction + +- func: sum.DimnameList_out(Tensor self, Dimname[1] dim, bool keepdim=False, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + tags: reduction + +# TODO: this function will be replaced once nested expand semantics have been settled on +- func: _nested_sum_backward(Tensor grad, Tensor self, int[1]? dim, bool keepdim=False) -> Tensor + dispatch: + NestedTensorCPU: _nested_sum_backward_cpu + +- func: nansum(Tensor self, int[1]? dim=None, bool keepdim=False, *, ScalarType? dtype=None) -> Tensor + variants: function, method + dispatch: + CPU, CUDA: nansum + MPS: nansum_mps + tags: reduction + +- func: nansum.out(Tensor self, int[1]? dim=None, bool keepdim=False, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, CUDA: nansum_out + MPS: nansum_out_mps + tags: reduction + +- func: hash_tensor(Tensor self, int[1] dim=[], *, bool keepdim=False, int mode=0) -> Tensor + variants: function, method + structured_delegate: hash_tensor.out + +- func: hash_tensor.out(Tensor self, int[1] dim=[], *, bool keepdim=False, int mode=0, Tensor(a!) out) -> Tensor(a!) + structured: True + dispatch: + CPU, CUDA: hash_tensor_out + +- func: sum_to_size(Tensor self, SymInt[] size) -> Tensor + variants: method + device_check: NoCheck + device_guard: False + dispatch: + CompositeImplicitAutograd: sum_to_size_symint + +- func: sqrt(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: sqrt.out + variants: function, method + dispatch: + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_sqrt + SparseCPU, SparseCUDA, SparseMPS: sqrt_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: sqrt_sparse_csr + tags: [core, pointwise] + +- func: sqrt_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: sqrt.out + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: sqrt_sparse_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: sqrt_sparse_csr_ + tags: pointwise + +- func: sqrt.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS, MTIA: sqrt_out + SparseCPU, SparseCUDA, SparseMPS: sqrt_sparse_out + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: sqrt_sparse_csr_out + tags: pointwise + +- func: square(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + tags: pointwise + +- func: square_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: function, method + tags: pointwise + +- func: square.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + tags: pointwise + +- func: std(Tensor self, bool unbiased=True) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + cpp_no_default_args: ["unbiased"] + tags: reduction + +- func: std.dim(Tensor self, int[1]? dim, bool unbiased=True, bool keepdim=False) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + cpp_no_default_args: ["unbiased"] + tags: reduction + +- func: std.correction(Tensor self, int[1]? dim=None, *, Scalar? correction=None, bool keepdim=False) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CPU, CUDA: std + MPS: std_mps + QuantizedCPU: std_quantized_cpu + tags: reduction + +- func: std_mean(Tensor self, bool unbiased=True) -> (Tensor, Tensor) + device_check: NoCheck # TensorIterator + variants: function + cpp_no_default_args: ["unbiased"] + tags: reduction + +- func: std_mean.dim(Tensor self, int[1]? dim, bool unbiased=True, bool keepdim=False) -> (Tensor, Tensor) + device_check: NoCheck # TensorIterator + variants: function + cpp_no_default_args: ["unbiased"] + tags: reduction + +- func: std_mean.correction(Tensor self, int[1]? dim=None, *, Scalar? correction=None, bool keepdim=False) -> (Tensor, Tensor) + device_check: NoCheck # TensorIterator + variants: function + dispatch: + CPU, CUDA: std_mean + MPS: std_mean_mps + autogen: std_mean.correction_out + tags: reduction + +- func: std_mean.names_dim(Tensor self, Dimname[1] dim, bool unbiased=True, bool keepdim=False) -> (Tensor, Tensor) + device_check: NoCheck # TensorIterator + variants: function + cpp_no_default_args: ["unbiased"] + tags: reduction + +- func: std_mean.correction_names(Tensor self, Dimname[1] dim, *, Scalar? correction=None, bool keepdim=False) -> (Tensor, Tensor) + device_check: NoCheck # TensorIterator + variants: function + tags: reduction + +- func: std.out(Tensor self, int[1]? dim, bool unbiased=True, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + cpp_no_default_args: ["unbiased"] + tags: reduction + +- func: std.correction_out(Tensor self, int[1]? dim=None, *, Scalar? correction=None, bool keepdim=False, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA: std_out + QuantizedCPU: std_out_quantized_cpu + tags: reduction + +- func: std.names_dim(Tensor self, Dimname[1] dim, bool unbiased=True, bool keepdim=False) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + cpp_no_default_args: ["unbiased"] + tags: reduction + +- func: std.names_out(Tensor self, Dimname[1] dim, bool unbiased=True, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + cpp_no_default_args: ["unbiased"] + tags: reduction + +- func: std.correction_names(Tensor self, Dimname[1] dim, *, Scalar? correction=None, bool keepdim=False) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + tags: reduction + +- func: std.correction_names_out(Tensor self, Dimname[1] dim, *, Scalar? correction=None, bool keepdim=False, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: function + tags: reduction + +- func: prod(Tensor self, *, ScalarType? dtype=None) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CPU, CUDA: prod + MPS: prod_mps + autogen: prod.out + tags: [core, reduction] + +- func: prod.dim_int(Tensor self, int dim, bool keepdim=False, *, ScalarType? dtype=None) -> Tensor + structured_delegate: prod.int_out + device_check: NoCheck # TensorIterator + variants: function, method + tags: [core, reduction] + +- func: prod.int_out(Tensor self, int dim, bool keepdim=False, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!) + structured: True + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA: prod_out + MPS: prod_out_mps + tags: reduction + +- func: prod.dim_Dimname(Tensor self, Dimname dim, bool keepdim=False, *, ScalarType? dtype=None) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + tags: reduction + +- func: prod.Dimname_out(Tensor self, Dimname dim, bool keepdim=False, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + tags: reduction + +- func: t(Tensor(a) self) -> Tensor(a) + device_check: NoCheck + device_guard: False + variants: function, method + dispatch: + CompositeExplicitAutograd: t + +- func: t_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck + device_guard: False + variants: method + tags: inplace_view + dispatch: + CompositeExplicitAutograd: t_ + +- func: tan(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: tan.out + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: tan_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: tan_sparse_csr + tags: [core, pointwise] + +- func: tan_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: tan.out + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: tan_sparse_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: tan_sparse_csr_ + tags: pointwise + +- func: tan.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: tan_out + SparseCPU, SparseCUDA, SparseMPS: tan_sparse_out + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: tan_sparse_csr_out + tags: pointwise + +- func: tanh(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: tanh.out + variants: function, method + dispatch: + QuantizedCPU: tanh_quantized_cpu + MkldnnCPU: mkldnn_tanh + SparseCPU, SparseCUDA, SparseMPS: tanh_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: tanh_sparse_csr + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_tanh + tags: [core, pointwise] + +- func: tanh_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: tanh.out + variants: function, method + dispatch: + MkldnnCPU: mkldnn_tanh_ + SparseCPU, SparseCUDA, SparseMPS: tanh_sparse_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: tanh_sparse_csr_ + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_tanh_ + tags: pointwise + +- func: tanh.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS, MTIA: tanh_out + SparseCPU, SparseCUDA, SparseMPS: tanh_sparse_out + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: tanh_sparse_csr_out + tags: pointwise + +- func: tensordot(Tensor self, Tensor other, int[] dims_self, int[] dims_other) -> Tensor + variants: function + +- func: tensordot.out(Tensor self, Tensor other, int[] dims_self, int[] dims_other, *, Tensor(a!) out) -> Tensor(a!) + variants: function + +# TODO: namespace threshold in 'nn' +- func: threshold(Tensor self, Scalar threshold, Scalar value) -> Tensor + device_check: NoCheck # TensorIterator + variants: function + structured_delegate: threshold.out + dispatch: + QuantizedCPU: threshold_quantized_cpu + tags: pointwise + +- func: threshold_(Tensor(a!) self, Scalar threshold, Scalar value) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: function + structured_delegate: threshold.out + +- func: threshold.out(Tensor self, Scalar threshold, Scalar value, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA: threshold_out + MPS: threshold_out_mps + +- func: threshold_backward.grad_input(Tensor grad_output, Tensor self, Scalar threshold, *, Tensor(a!) grad_input) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA: threshold_backward_out + MPS: threshold_backward_out_mps + SparseCPU, SparseCUDA: threshold_backward_sparse_out + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: threshold_backward_sparse_compressed_out + +- func: threshold_backward(Tensor grad_output, Tensor self, Scalar threshold) -> Tensor + variants: function + structured_delegate: threshold_backward.grad_input + dispatch: + MkldnnCPU: mkldnn_relu_backward + SparseCPU, SparseCUDA: threshold_backward_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: threshold_backward_sparse_compressed + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: threshold_backwards_nested + tags: pointwise + +- func: tile(Tensor self, SymInt[] dims) -> Tensor + variants: function, method + dispatch: + CompositeImplicitAutograd: tile_symint + +- func: transpose.int(Tensor(a) self, int dim0, int dim1) -> Tensor(a) + variants: function, method + device_check: NoCheck + device_guard: False + dispatch: + CompositeExplicitAutograd: transpose + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: transpose_nested + +- func: transpose.Dimname(Tensor(a) self, Dimname dim0, Dimname dim1) -> Tensor(a) + variants: function, method + device_check: NoCheck + device_guard: False + +- func: _mkldnn_transpose(Tensor self, int dim0, int dim1) -> Tensor + device_check: NoCheck + device_guard: False + dispatch: + MkldnnCPU: mkldnn_transpose + +- func: transpose_(Tensor(a!) self, int dim0, int dim1) -> Tensor(a!) + variants: method + device_check: NoCheck + device_guard: False + tags: inplace_view + dispatch: + CompositeExplicitAutograd: transpose_ + +- func: _mkldnn_transpose_(Tensor(a!) self, int dim0, int dim1) -> Tensor(a!) + device_check: NoCheck + device_guard: False + dispatch: + MkldnnCPU: mkldnn_transpose_ + autogen: _mkldnn_transpose.out + +- func: one_hot(Tensor self, int num_classes=-1) -> Tensor + python_module: nn + variants: function + tags: dynamic_output_shape + +- func: flip(Tensor self, int[] dims) -> Tensor + variants: function, method + dispatch: + CPU, QuantizedCPU, CUDA, QuantizedCUDA: flip + MPS: flip_mps + autogen: flip.out + tags: core + +- func: fliplr(Tensor self) -> Tensor + variants: function, method + +- func: flipud(Tensor self) -> Tensor + variants: function, method + +- func: roll(Tensor self, SymInt[1] shifts, int[1] dims=[]) -> Tensor + variants: function, method + dispatch: + CPU, MPS: roll + CUDA: roll_cuda + autogen: roll.out + +# default int[] value [0,1] should not add space after comma, since codegen parser uses ', ' to split args + +- func: rot90(Tensor self, int k=1, int[] dims=[0,1]) -> Tensor + variants: function, method + dispatch: + CompositeExplicitAutograd: rot90 + autogen: rot90.out + +- func: trapezoid.x(Tensor y, Tensor x, *, int dim=-1) -> Tensor + +- func: trapezoid.dx(Tensor y, *, Scalar dx=1, int dim=-1) -> Tensor + +- func: trapz.x(Tensor y, Tensor x, *, int dim=-1) -> Tensor + +- func: trapz.dx(Tensor y, *, float dx=1, int dim=-1) -> Tensor + +# Fused implementation detail for transformers. Adds in-projection bias to QKV and divides Q by sqrt(D/num_heads). +- func: _transform_bias_rescale_qkv(Tensor qkv, Tensor qkv_bias, int num_heads) -> (Tensor, Tensor, Tensor) + dispatch: + CPU, NestedTensorCPU: transform_bias_rescale_qkv_cpu + CUDA, NestedTensorCUDA: transform_bias_rescale_qkv_cuda + autogen: _transform_bias_rescale_qkv.out + +- func: _nested_tensor_from_mask(Tensor t, Tensor mask, bool mask_check=True) -> Tensor + dispatch: + CPU, CUDA: NestedTensor_nested_tensor_from_mask + autogen: _nested_tensor_from_mask.out + +- func: _nested_tensor_from_mask_left_aligned(Tensor t, Tensor mask) -> bool + dispatch: + CPU, CUDA: NestedTensor_nested_tensor_from_mask_left_aligned + +- func: _nested_from_padded(Tensor padded, Tensor cpu_nested_shape_example, bool fuse_transform_0213=False) -> Tensor + device_check: NoCheck # cpu_nested_shape_example will always be on CPU + dispatch: + CPU: nested_from_padded_generic + CUDA: nested_from_padded_cuda + autogen: _nested_from_padded.out + +# These private functions are temporary. They will be updated/deleted when nested tensors switch to using SymInts for their metadata representation +- func: _nested_tensor_size(Tensor self) -> Tensor + variants: method + dispatch: + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: _nested_tensor_size + autogen: _nested_tensor_size.out + +- func: _nested_tensor_strides(Tensor self) -> Tensor + variants: method + dispatch: + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: _nested_tensor_strides + autogen: _nested_tensor_strides.out + +- func: _nested_tensor_storage_offsets(Tensor self) -> Tensor + variants: method + dispatch: + NestedTensorCPU, NestedTensorCUDA, NestedTensorMeta: _nested_tensor_storage_offsets + autogen: _nested_tensor_storage_offsets.out + +# _nested_from_padded is not usable from Python, so +# _nested_from_padded_and_nested_example is available for testing. +- func: _nested_from_padded_and_nested_example(Tensor padded, Tensor nt_example) -> Tensor + dispatch: + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_from_padded_and_nested_example + autogen: _nested_from_padded_and_nested_example.out + +# The input arguments' types to this functions are temporary. When nested tensors switch to using SymInts for their metadata representation +# this will need to be updated +- func: _nested_view_from_buffer(Tensor(a) self, Tensor nested_size, Tensor nested_strides, Tensor offsets) -> Tensor(a) + variants: function + device_check: NoCheck + dispatch: + CPU, CUDA: _nested_view_from_buffer + +- func: _nested_view_from_buffer_copy(Tensor self, Tensor nested_size, Tensor nested_strides, Tensor offsets) -> Tensor + variants: function + device_check: NoCheck + tags: view_copy + dispatch: + CompositeExplicitAutogradNonFunctional: _nested_view_from_buffer_copy + autogen: _nested_view_from_buffer_copy.out + +- func: _nested_view_from_jagged(Tensor(a) self, Tensor offsets, Tensor dummy, Tensor? lengths=None, int ragged_idx=1, Tensor? min_seqlen=None, Tensor? max_seqlen=None) -> Tensor(a) + variants: function + device_check: NoCheck + dispatch: {} + +- func: _nested_view_from_jagged_copy(Tensor self, Tensor offsets, Tensor dummy, Tensor? lengths=None, int ragged_idx=1, Tensor? min_seqlen=None, Tensor? max_seqlen=None) -> Tensor + variants: function + device_check: NoCheck + tags: view_copy + dispatch: + CompositeExplicitAutogradNonFunctional: _nested_view_from_jagged_copy + autogen: _nested_view_from_jagged_copy.out + +- func: _nested_get_values(Tensor(a) self) -> Tensor(a) + variants: function + device_check: NoCheck + dispatch: {} + +- func: _nested_get_values_copy(Tensor self) -> Tensor + variants: function + device_check: NoCheck + tags: view_copy + dispatch: + CompositeExplicitAutogradNonFunctional: _nested_get_values_copy + autogen: _nested_get_values_copy.out + +- func: _nested_get_offsets(Tensor self) -> Tensor + variants: function + device_check: NoCheck + dispatch: {} + +# returns undefined Tensor if no lengths present +- func: _nested_get_lengths(Tensor self) -> Tensor + variants: function + device_check: NoCheck + dispatch: {} + +- func: _nested_get_ragged_idx(Tensor self) -> int + variants: function + device_check: NoCheck + dispatch: {} + +- func: _nested_get_min_seqlen(Tensor self) -> Tensor + variants: function + device_check: NoCheck + dispatch: {} + +- func: _nested_get_max_seqlen(Tensor self) -> Tensor + variants: function + device_check: NoCheck + dispatch: {} + +- func: _nested_get_jagged_dummy(Tensor any) -> Tensor + category_override: dummy + dispatch: {} + +- func: _nested_compute_contiguous_strides_offsets(Tensor nested_size) -> (Tensor, Tensor) + variants: function + device_check: NoCheck + dispatch: + CPU, CUDA: _nested_compute_contiguous_strides_offsets + +- func: _trilinear(Tensor i1, Tensor i2, Tensor i3, int[] expand1, int[] expand2, int[] expand3, int[] sumdim, int unroll_dim=1) -> Tensor + dispatch: + # calls unsqueeze + CompositeExplicitAutogradNonFunctional: _trilinear + autogen: _trilinear.out + +- func: triplet_margin_loss(Tensor anchor, Tensor positive, Tensor negative, float margin=1.0, float p=2, float eps=1e-06, bool swap=False, int reduction=Mean) -> Tensor + +- func: trunc(Tensor self) -> Tensor + structured_delegate: trunc.out + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: trunc_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMPS, SparseCsrMeta: trunc_sparse_csr + tags: [core, pointwise] + +- func: trunc_(Tensor(a!) self) -> Tensor(a!) + structured_delegate: trunc.out + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: trunc_sparse_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMPS, SparseCsrMeta: trunc_sparse_csr_ + tags: pointwise + +- func: trunc.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA, MPS: trunc_out + SparseCPU, SparseCUDA, SparseMPS: trunc_sparse_out + SparseCsrCPU, SparseCsrCUDA, SparseCsrMPS, SparseCsrMeta: trunc_sparse_csr_out + tags: pointwise +# Alias for trunc + +- func: fix(Tensor self) -> Tensor + variants: function, method + +- func: fix_(Tensor(a!) self) -> Tensor(a!) + variants: function, method + +- func: fix.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + +- func: type_as(Tensor self, Tensor other) -> Tensor + variants: method + +- func: _has_compatible_shallow_copy_type(Tensor self, Tensor from) -> bool + variants: function + +- func: _unique(Tensor self, bool sorted=True, bool return_inverse=False) -> (Tensor, Tensor) + variants: function + dispatch: + CPU: _unique_cpu + CUDA: _unique_cuda + MPS: _unique_mps + autogen: _unique.out + +- func: unique_dim(Tensor self, int dim, bool sorted=True, bool return_inverse=False, bool return_counts=False) -> (Tensor, Tensor, Tensor) + variants: function + dispatch: + CPU: unique_dim_cpu + CUDA: unique_dim_cuda + MPS: unique_dim_mps + tags: dynamic_output_shape + autogen: unique_dim.out + +- func: unique_consecutive(Tensor self, bool return_inverse=False, bool return_counts=False, int? dim=None) -> (Tensor, Tensor, Tensor) + variants: function + dispatch: + CPU: unique_consecutive_cpu + CUDA: unique_consecutive_cuda + MPS: unique_consecutive_mps + tags: dynamic_output_shape + autogen: unique_consecutive.out + +- func: unique_dim_consecutive(Tensor self, int dim, bool return_inverse=False, bool return_counts=False) -> (Tensor, Tensor, Tensor) + variants: function + dispatch: + CPU: unique_dim_consecutive_cpu + CUDA: unique_dim_consecutive_cuda + MPS: unique_dim_consecutive_mps + tags: dynamic_output_shape + autogen: unique_dim_consecutive.out + +# _unique and _unique_dim are fragile and modifying them easily cause internal break +# the below operator is a temporary hack for adding return_counts support +# Please don't rely on these two operators, they will be removed soon + +- func: _unique2(Tensor self, bool sorted=True, bool return_inverse=False, bool return_counts=False) -> (Tensor, Tensor, Tensor) + variants: function + dispatch: + CPU: _unique2_cpu + CUDA: _unique2_cuda + MPS: _unique2_mps + tags: dynamic_output_shape + autogen: _unique2.out + +- func: _unsafe_view(Tensor self, SymInt[] size) -> Tensor + dispatch: + CompositeExplicitAutograd: _unsafe_view + autogen: _unsafe_view.out + +- func: unsqueeze(Tensor(a) self, int dim) -> Tensor(a) + variants: function, method + device_check: NoCheck + device_guard: False + dispatch: + CompositeExplicitAutograd: unsqueeze + SparseCPU, SparseCUDA, SparseMPS: unsqueeze_sparse + QuantizedCPU, QuantizedCUDA: unsqueeze_quantized + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: unsqueeze_nested + tags: core + +- func: unsqueeze_(Tensor(a!) self, int dim) -> Tensor(a!) + variants: method + device_check: NoCheck + device_guard: False + tags: inplace_view + dispatch: + CompositeExplicitAutograd: unsqueeze_ + +- func: vander(Tensor x, int? N=None, bool increasing=False) -> Tensor + +- func: var(Tensor self, bool unbiased=True) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + cpp_no_default_args: ["unbiased"] + tags: reduction + +- func: var.dim(Tensor self, int[1]? dim, bool unbiased=True, bool keepdim=False) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + tags: [core, reduction] + cpp_no_default_args: ["unbiased"] + +- func: var.correction(Tensor self, int[1]? dim=None, *, Scalar? correction=None, bool keepdim=False) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CPU, CUDA: var + MPS: var_mps + tags: [core, reduction] + +- func: var.out(Tensor self, int[1]? dim, bool unbiased=True, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + cpp_no_default_args: ["unbiased"] + tags: reduction + +- func: var.correction_out(Tensor self, int[1]? dim=None, *, Scalar? correction=None, bool keepdim=False, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA: var_out + tags: reduction + +- func: var.names_dim(Tensor self, Dimname[1] dim, bool unbiased=True, bool keepdim=False) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + cpp_no_default_args: ["unbiased"] + tags: reduction + +- func: var.names_out(Tensor self, Dimname[1] dim, bool unbiased=True, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + cpp_no_default_args: ["unbiased"] + tags: reduction + +- func: var.correction_names(Tensor self, Dimname[1] dim, *, Scalar? correction=None, bool keepdim=False) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + tags: reduction + +- func: var.correction_names_out(Tensor self, Dimname[1] dim, *, Scalar? correction=None, bool keepdim=False, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: function + tags: reduction + +- func: var_mean(Tensor self, bool unbiased=True) -> (Tensor, Tensor) + device_check: NoCheck # TensorIterator + variants: function + cpp_no_default_args: ["unbiased"] + tags: reduction + +- func: var_mean.dim(Tensor self, int[1]? dim, bool unbiased=True, bool keepdim=False) -> (Tensor, Tensor) + device_check: NoCheck # TensorIterator + variants: function + cpp_no_default_args: ["unbiased"] + tags: reduction + +- func: var_mean.correction(Tensor self, int[1]? dim=None, *, Scalar? correction=None, bool keepdim=False) -> (Tensor, Tensor) + device_check: NoCheck # TensorIterator + variants: function + dispatch: + CPU, CUDA: var_mean + MPS: var_mean_mps + autogen: var_mean.correction_out + tags: reduction + +- func: var_mean.names_dim(Tensor self, Dimname[1] dim, bool unbiased=True, bool keepdim=False) -> (Tensor, Tensor) + device_check: NoCheck # TensorIterator + variants: function + cpp_no_default_args: ["unbiased"] + tags: reduction + +- func: var_mean.correction_names(Tensor self, Dimname[1] dim, *, Scalar? correction=None, bool keepdim=False) -> (Tensor, Tensor) + device_check: NoCheck # TensorIterator + variants: function + tags: reduction + +- func: view_as(Tensor(a) self, Tensor other) -> Tensor(a) + variants: method + device_check: NoCheck + device_guard: False + +- func: where.self(Tensor condition, Tensor self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CPU, CUDA, MPS, MTIA: where + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_where + tags: [core, pointwise] + +- func: where.self_out(Tensor condition, Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA, MPS, MTIA: where_self_out + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_where_out + +- func: where.ScalarSelf(Tensor condition, Scalar self, Tensor other) -> Tensor + variants: function + +- func: where.ScalarOther(Tensor condition, Tensor self, Scalar other) -> Tensor + variants: function, method + +- func: where.Scalar(Tensor condition, Scalar self, Scalar other) -> Tensor + variants: function + +- func: where(Tensor condition) -> Tensor[] + device_check: NoCheck # TensorIterator + variants: function + +- func: norm_except_dim(Tensor v, int pow=2, int dim=0) -> Tensor + variants: function + +# VariableType::_weight_norm does not want to be given a gap in the autograd graph, +# so we don't define "dispatch" variants for it. +- func: _weight_norm(Tensor v, Tensor g, int dim=0) -> Tensor + variants: function + +- func: _weight_norm_interface(Tensor v, Tensor g, int dim=0) -> (Tensor, Tensor) + variants: function + dispatch: + CPU: weight_norm_cpu + CUDA: weight_norm_cuda + MPS: weight_norm_mps + autogen: _weight_norm_interface.out + +- func: _weight_norm_interface_backward(Tensor grad_w, Tensor saved_v, Tensor saved_g, Tensor saved_norms, int dim) -> (Tensor, Tensor) + variants: function + dispatch: + CPU: weight_norm_backward_cpu + CUDA: weight_norm_backward_cuda + MPS: weight_norm_backward_mps + autogen: _weight_norm_interface_backward.out + +- func: _weight_norm_differentiable_backward(Tensor grad_w, Tensor saved_v, Tensor saved_g, Tensor saved_norms, int dim) -> (Tensor, Tensor) + variants: function + +- func: zeros.names(int[] size, *, Dimname[]? names, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + device_check: NoCheck + device_guard: False + dispatch: + CompositeExplicitAutograd: zeros + autogen: zeros.names_out + +- func: _efficientzerotensor(SymInt[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CPU: _efficientzerotensor + CUDA: _efficientzerotensor_cuda + MPS: _efficientzerotensor_mps + Meta: _efficientzerotensor_meta_symint + autogen: _efficientzerotensor.out + +- func: zeros(SymInt[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CompositeExplicitAutograd: zeros_symint + +- func: zeros.out(SymInt[] size, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: zeros_out + SparseCPU, SparseCUDA, SparseMPS, SparseMeta: zeros_sparse_out + +- func: zeros_like(Tensor self, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, MemoryFormat? memory_format=None) -> Tensor + dispatch: + # NB: Although this composite mutates on the inside, it is + # non-differentiable so NonFunctional doesn't apply + CompositeExplicitAutograd, CompositeImplicitAutogradNestedTensor: zeros_like + autogen: zeros_like.out + +- func: _standard_gamma_grad(Tensor self, Tensor output) -> Tensor + variants: function + dispatch: + CPU: _standard_gamma_grad_cpu + CUDA: _standard_gamma_grad_cuda + MPS: _standard_gamma_grad_mps + autogen: _standard_gamma_grad.out + +- func: _standard_gamma(Tensor self, Generator? generator=None) -> Tensor + variants: function + dispatch: + CPU: _s_gamma_cpu + CUDA: _s_gamma_cuda + MPS: _s_gamma_mps + tags: nondeterministic_seeded + autogen: _standard_gamma.out + +- func: _philox_key_split(Tensor key, int num_splits) -> Tensor + variants: function + dispatch: + CUDA: _philox_key_split_cuda + +- func: _philox_key_fold_in(Tensor key, int data) -> Tensor + variants: function + dispatch: + CUDA: _philox_key_fold_in_cuda + +- func: _philox_normal_(Tensor(a!) self, Tensor key, float mean=0, float std=1) -> Tensor(a!) + variants: function, method + dispatch: + CUDA: _philox_normal_cuda_ + autogen: _philox_normal, _philox_normal.out + +- func: _philox_uniform_(Tensor(a!) self, Tensor key, float low=0, float high=1) -> Tensor(a!) + variants: function, method + dispatch: + CUDA: _philox_uniform_cuda_ + autogen: _philox_uniform, _philox_uniform.out + +- func: _dirichlet_grad(Tensor x, Tensor alpha, Tensor total) -> Tensor + dispatch: + CPU: _dirichlet_grad_cpu + CUDA: _dirichlet_grad_cuda + autogen: _dirichlet_grad.out + +- func: _sample_dirichlet(Tensor self, Generator? generator=None) -> Tensor + tags: nondeterministic_seeded + variants: function + dispatch: + CPU: _s_dirichlet_cpu + CUDA: _s_dirichlet_cuda + autogen: _sample_dirichlet.out + +- func: poisson(Tensor self, Generator? generator=None) -> Tensor + device_check: NoCheck # TensorIterator + dispatch: + CPU: _s_poisson_cpu + CUDA: _s_poisson_cuda + tags: nondeterministic_seeded + autogen: poisson.out + +- func: binomial(Tensor count, Tensor prob, Generator? generator=None) -> Tensor + device_check: NoCheck # TensorIterator + dispatch: + CPU: _s_binomial_cpu + CUDA: _s_binomial_cuda + tags: nondeterministic_seeded + autogen: binomial.out + +# When more variants get ported to native, this dispatch will get more +# complicated + +- func: native_norm(Tensor self, Scalar p=2) -> Tensor + dispatch: + SparseCPU, SparseCUDA, SparseMPS: norm_sparse + autogen: native_norm.out + +- func: native_norm.ScalarOpt_dim_dtype(Tensor self, Scalar? p, int[1] dim, bool keepdim, ScalarType? dtype) -> Tensor + dispatch: + SparseCPU, SparseCUDA, SparseMPS: norm_sparse + autogen: native_norm.ScalarOpt_dim_dtype_out + +- func: _batch_norm_with_update(Tensor input, Tensor? weight, Tensor? bias, Tensor(a!) running_mean, Tensor(b!) running_var, float momentum, float eps) -> (Tensor, Tensor, Tensor, Tensor) + dispatch: + CPU: _batch_norm_with_update_cpu + CUDA: _batch_norm_with_update_cuda + MPS: _batch_norm_with_update_mps + MkldnnCPU: _batch_norm_with_update_mkldnn + autogen: _batch_norm_with_update_functional + +- func: _batch_norm_with_update.out(Tensor input, Tensor? weight, Tensor? bias, Tensor(a!) running_mean, Tensor(b!) running_var, float momentum, float eps, *, Tensor(d!) out, Tensor(e!) save_mean, Tensor(f!) save_invstd, Tensor(g!) reserve) -> (Tensor(d!), Tensor(e!), Tensor(f!), Tensor(g!)) + dispatch: + CPU: _batch_norm_with_update_cpu_out + CUDA: _batch_norm_with_update_cuda_out + MPS: _batch_norm_with_update_mps_out + +- func: _batch_norm_no_update(Tensor input, Tensor? weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, float momentum, float eps) -> (Tensor, Tensor, Tensor, Tensor) + dispatch: + CompositeExplicitAutograd: _batch_norm_no_update + autogen: _batch_norm_no_update.out + +- func: batch_norm_backward(Tensor grad_out, Tensor input, Tensor weight, Tensor? running_mean, Tensor? running_var, Tensor? save_mean, Tensor? save_var, bool update, float eps, bool[3] output_mask, Tensor reserve) -> (Tensor, Tensor, Tensor) + dispatch: + CPU: _new_batch_norm_backward_cpu + CUDA: _new_batch_norm_backward_cuda + MPS: _new_batch_norm_backward_mps + MkldnnCPU: _new_batch_norm_backward_mkldnn + +# TODO: reduce signatures down to one when optional args is available +- func: _sparse_sum(Tensor self) -> Tensor + +- func: _sparse_sum.dtype(Tensor self, *, ScalarType dtype) -> Tensor + +- func: _sparse_sum.dim(Tensor self, int[1] dim) -> Tensor + dispatch: + CompositeExplicitAutograd: _sparse_sum + autogen: _sparse_sum.dim_out + +- func: _sparse_sum.dim_dtype(Tensor self, int[1] dim, *, ScalarType dtype) -> Tensor + +- func: _sparse_sum_backward(Tensor grad, Tensor self, int[] dim) -> Tensor + dispatch: + SparseCPU: _sparse_sum_backward_cpu + SparseCUDA: _sparse_sum_backward_cuda + SparseMPS: _sparse_sum_backward_mps + autogen: _sparse_sum_backward.out + +- func: _sparse_csr_sum.dim_dtype(Tensor self, int[1] dim, bool keepdim=False, *, ScalarType? dtype=None) -> Tensor + dispatch: + SparseCsrCPU: _sparse_csr_sum_cpu + SparseCsrCUDA: _sparse_csr_sum_cuda + autogen: _sparse_csr_sum.dim_dtype_out + +- func: _sparse_csr_prod.dim_dtype(Tensor self, int[1] dim, bool keepdim=False, *, ScalarType? dtype=None) -> Tensor + dispatch: + SparseCsrCPU: _sparse_csr_prod_cpu + SparseCsrCUDA: _sparse_csr_prod_cuda + autogen: _sparse_csr_prod.dim_dtype_out + +- func: _sparse_softmax.int(Tensor self, int dim, ScalarType? dtype=None) -> Tensor + python_module: sparse + variants: function + +- func: _sparse_softmax.Dimname(Tensor self, Dimname dim, *, ScalarType? dtype=None) -> Tensor + python_module: sparse + variants: function + +- func: _sparse_softmax(Tensor self, int dim, bool half_to_float) -> Tensor + python_module: sparse + dispatch: + SparseCPU: softmax_sparse_cpu + SparseCUDA: softmax_sparse_cuda + SparseMPS: softmax_sparse_mps + autogen: _sparse_softmax.out + +- func: _sparse_softmax_backward_data(Tensor grad_output, Tensor output, int dim, Tensor self) -> Tensor + dispatch: + SparseCPU: softmax_backward_sparse_cpu + SparseCUDA: softmax_backward_sparse_cuda + SparseMPS: softmax_backward_sparse_mps + autogen: _sparse_softmax_backward_data.out + +- func: _sparse_log_softmax.int(Tensor self, int dim, ScalarType? dtype=None) -> Tensor + python_module: sparse + variants: function + +- func: _sparse_log_softmax.Dimname(Tensor self, Dimname dim, *, ScalarType? dtype=None) -> Tensor + python_module: sparse + variants: function + +- func: _sparse_log_softmax(Tensor self, int dim, bool half_to_float) -> Tensor + python_module: sparse + dispatch: + SparseCPU: log_softmax_sparse_cpu + SparseCUDA: log_softmax_sparse_cuda + SparseMPS: log_softmax_sparse_mps + autogen: _sparse_log_softmax.out + +- func: _sparse_log_softmax_backward_data(Tensor grad_output, Tensor output, int dim, Tensor self) -> Tensor + dispatch: + SparseCPU: log_softmax_backward_sparse_cpu + SparseCUDA: log_softmax_backward_sparse_cuda + SparseMPS: log_softmax_backward_sparse_mps + autogen: _sparse_log_softmax_backward_data.out + +- func: _spdiags(Tensor diagonals, Tensor offsets, int[] shape, Layout? layout=None) -> Tensor + python_module: sparse + dispatch: + CPU: spdiags + autogen: _spdiags.out + +- func: norm.ScalarOpt_dtype(Tensor self, Scalar? p, *, ScalarType dtype) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CompositeExplicitAutograd: norm + autogen: norm.ScalarOpt_dtype_out + tags: reduction + +- func: norm.Scalar(Tensor self, Scalar p=2) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CompositeExplicitAutograd: norm + autogen: norm.Scalar_out + tags: reduction + +- func: norm.ScalarOpt_dim_dtype(Tensor self, Scalar? p, int[1] dim, bool keepdim, *, ScalarType dtype) -> Tensor + structured_delegate: norm.dtype_out + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: sparse_dtype_norm + tags: reduction + +- func: norm.ScalarOpt_dim(Tensor self, Scalar? p, int[1] dim, bool keepdim=False) -> Tensor + structured_delegate: norm.out + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: sparse_norm + tags: reduction + +- func: norm.dtype_out(Tensor self, Scalar? p, int[1] dim, bool keepdim, *, ScalarType dtype, Tensor(a!) out) -> Tensor(a!) + structured: True + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA, MPS: norm_dtype_out + tags: reduction + +- func: norm.out(Tensor self, Scalar? p, int[1] dim, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!) + structured: True + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA, MPS: norm_out + tags: reduction + +# These four redispatch in their implementation, so OK to be CompositeImplicitAutograd +- func: norm.names_ScalarOpt_dim_dtype(Tensor self, Scalar? p, Dimname[1] dim, bool keepdim, *, ScalarType dtype) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + tags: reduction + +- func: norm.names_ScalarOpt_dim(Tensor self, Scalar? p, Dimname[1] dim, bool keepdim=False) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + tags: reduction + +- func: norm.names_dtype_out(Tensor self, Scalar? p, Dimname[1] dim, bool keepdim, *, ScalarType dtype, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + tags: reduction + +- func: norm.names_out(Tensor self, Scalar? p, Dimname[1] dim, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + tags: reduction + +- func: frexp.Tensor(Tensor self) -> (Tensor mantissa, Tensor exponent) + variants: method, function + dispatch: + CompositeExplicitAutograd: frexp + tags: pointwise + +- func: frexp.Tensor_out(Tensor self, *, Tensor(a!) mantissa, Tensor(b!) exponent) -> (Tensor(a!) mantissa, Tensor(b!) exponent) + dispatch: + CPU, CUDA: frexp_out + tags: pointwise + +# Deprecated (v.1.12) +- func: frobenius_norm.dim(Tensor self, int[1] dim, bool keepdim=False) -> Tensor + variants: function + +# Deprecated (v.1.12) +- func: frobenius_norm.out(Tensor self, int[1] dim, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!) + variants: function + +# Deprecated (v.1.12) +- func: nuclear_norm(Tensor self, bool keepdim=False) -> Tensor + variants: function + +# Deprecated (v.1.12) +- func: nuclear_norm.out(Tensor self, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!) + variants: function + +# Deprecated (v.1.12) +- func: nuclear_norm.dim(Tensor self, int[2] dim, bool keepdim=False) -> Tensor + variants: function + +# Deprecated (v.1.12) +- func: nuclear_norm.dim_out(Tensor self, int[2] dim, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!) + variants: function + +- func: clone(Tensor self, *, MemoryFormat? memory_format=None) -> Tensor + variants: function, method + dispatch: + CompositeExplicitAutograd: clone + SparseCPU, SparseCUDA, SparseMPS: clone_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: clone_sparse_compressed + MkldnnCPU: mkldnn_clone + QuantizedCPU, QuantizedCUDA: quantized_clone + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: clone_nested + autogen: clone.out + tags: [core, pointwise] + +- func: positive(Tensor(a) self) -> Tensor(a) + variants: function, method + tags: pointwise + +- func: resize_as_(Tensor(a!) self, Tensor the_template, *, MemoryFormat? memory_format=None) -> Tensor(a!) + use_const_ref_for_mutable_tensors: True + variants: function, method + dispatch: + CompositeExplicitAutograd: resize_as_ + autogen: resize_as, resize_as.out + tags: inplace_view + +- func: resize_as_sparse_(Tensor(a!) self, Tensor the_template) -> Tensor(a!) + use_const_ref_for_mutable_tensors: True + variants: function, method + dispatch: + SparseCPU, SparseCUDA: resize_as_sparse_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: resize_as_sparse_compressed_ + autogen: resize_as_sparse, resize_as_sparse.out + +- func: zero_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method, function + dispatch: + CPU, CUDA, MPS: zero_ + Meta: zero_meta_ + SparseCPU, SparseCUDA, SparseMPS, SparseMeta: zero_sparse_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: zero_sparse_csr_ + MkldnnCPU: mkldnn_zero_ + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: zero_nested_ + autogen: zero, zero.out + +- func: sub.out(Tensor self, Tensor other, *, Scalar alpha=1, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA: sub_out + MPS: sub_out_mps + MTIA: sub_out_mtia + SparseCPU, SparseCUDA, SparseMPS: sub_out_sparse + tags: pointwise + +- func: sub.Tensor(Tensor self, Tensor other, *, Scalar alpha=1) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + structured_delegate: sub.out + dispatch: + SparseCPU, SparseCUDA, SparseMPS: sub_sparse + ZeroTensor: sub_zerotensor + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_sub_Tensor + tags: [core, pointwise] + +- func: sub_.Tensor(Tensor(a!) self, Tensor other, *, Scalar alpha=1) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + structured_delegate: sub.out + dispatch: + SparseCPU, SparseCUDA, SparseMPS: sub_sparse_ + tags: pointwise +# For C++ only, until we have conversion from C++ numbers to Tensor + +- func: sub.Scalar(Tensor self, Scalar other, Scalar alpha=1) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CompositeExplicitAutograd: sub + tags: [core, pointwise] + +- func: sub_.Scalar(Tensor(a!) self, Scalar other, Scalar alpha=1) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + dispatch: + CompositeExplicitAutograd: sub_ + autogen: sub.Scalar_out + tags: pointwise +# subtract, alias for sub + +- func: subtract.out(Tensor self, Tensor other, *, Scalar alpha=1, Tensor(a!) out) -> Tensor(a!) + +- func: subtract.Tensor(Tensor self, Tensor other, *, Scalar alpha=1) -> Tensor + variants: function, method + +- func: subtract_.Tensor(Tensor(a!) self, Tensor other, *, Scalar alpha=1) -> Tensor(a!) + variants: method + +# For C++ only, until we have conversion from C++ numbers to Tensor +- func: subtract.Scalar(Tensor self, Scalar other, Scalar alpha=1) -> Tensor + variants: function, method + +- func: subtract_.Scalar(Tensor(a!) self, Scalar other, Scalar alpha=1) -> Tensor(a!) + variants: method + +- func: rsub.Tensor(Tensor self, Tensor other, *, Scalar alpha=1) -> Tensor + device_check: NoCheck # TensorIterator + variants: function + dispatch: + CPU, CUDA, MPS, MTIA: rsub + autogen: rsub.Tensor_out + +- func: heaviside.out(Tensor self, Tensor values, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA: heaviside_out + tags: pointwise + +- func: heaviside(Tensor self, Tensor values) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + structured_delegate: heaviside.out + tags: pointwise + +- func: heaviside_(Tensor(a!) self, Tensor values) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + structured_delegate: heaviside.out + +# For C++ only, until we have conversion from C++ numbers to Tensor +- func: rsub.Scalar(Tensor self, Scalar other, Scalar alpha=1) -> Tensor + device_check: NoCheck # TensorIterator + variants: function + dispatch: + CompositeExplicitAutograd: rsub + autogen: rsub.Scalar_out + +# Functionally the same as addmm, but we give it a different derivative formula +# that doesn't propagate gradients to non-present entries on sparse. + tags: pointwise +- func: _sparse_addmm(Tensor self, Tensor mat1, Tensor mat2, *, Scalar beta=1, Scalar alpha=1) -> Tensor + python_module: sparse + dispatch: + CompositeExplicitAutograd: _sparse_addmm + autogen: _sparse_addmm.out + +- func: sparse_sampled_addmm.out(Tensor self, Tensor mat1, Tensor mat2, *, Scalar beta=1, Scalar alpha=1, Tensor(a!) out) -> Tensor(a!) + python_module: sparse + dispatch: + SparseCsrCUDA: sparse_sampled_addmm_out_sparse_csr_cuda + SparseCsrCPU: sparse_sampled_addmm_out_sparse_csr_cpu + +- func: sparse_sampled_addmm(Tensor self, Tensor mat1, Tensor mat2, *, Scalar beta=1, Scalar alpha=1) -> Tensor + python_module: sparse + dispatch: + SparseCsrCUDA: sparse_sampled_addmm_sparse_csr_cuda + SparseCsrCPU: sparse_sampled_addmm_sparse_csr_cpu + +- func: _sparse_mm_reduce_impl(Tensor self, Tensor other, str reduce) -> (Tensor, Tensor) + python_module: sparse + dispatch: + SparseCsrCPU: _sparse_mm_reduce_impl_sparse_csr_cpu + +- func: _sparse_mm_reduce_impl_backward(Tensor self, Tensor grad_out, Tensor weight, str reduce, Tensor arg_out, bool[2] output_mask) -> (Tensor, Tensor) + python_module: sparse + dispatch: + SparseCsrCPU: _sparse_mm_reduce_impl_backward_sparse_csr_cpu + +- func: addmm.out(Tensor self, Tensor mat1, Tensor mat2, *, Scalar beta=1, Scalar alpha=1, Tensor(a!) out) -> Tensor(a!) + structured: True + dispatch: + CPU: addmm_out_cpu + CUDA: addmm_out_cuda + MPS: addmm_out_mps + XPU: addmm_out_xpu + MTIA: addmm_out_mtia + SparseCPU: addmm_out_sparse_dense_cpu + SparseCUDA: addmm_out_sparse_dense_cuda + SparseMPS: addmm_out_sparse_dense_mps + SparseCsrCPU: addmm_out_sparse_compressed_cpu + SparseCsrCUDA: addmm_out_sparse_compressed_cuda + +- func: addmm(Tensor self, Tensor mat1, Tensor mat2, *, Scalar beta=1, Scalar alpha=1) -> Tensor + structured_delegate: addmm.out + variants: function, method + dispatch: + SparseCPU: addmm_sparse_dense_cpu + SparseCUDA: addmm_sparse_dense_cuda + SparseMPS: addmm_sparse_dense_mps + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: addmm_sparse_compressed_dense + tags: core + +- func: addmm.dtype(Tensor self, Tensor mat1, Tensor mat2, ScalarType out_dtype, *, Scalar beta=1, Scalar alpha=1) -> Tensor + dispatch: + CUDA: _addmm_dtype_cuda + XPU: _addmm_dtype_xpu + +- func: addmm.dtype_out(Tensor self, Tensor mat1, Tensor mat2, ScalarType out_dtype, *, Scalar beta=1, Scalar alpha=1, Tensor(a!) out) -> Tensor(a!) + dispatch: + CUDA: _addmm_dtype_out_cuda + XPU: _addmm_dtype_out_xpu + +- func: addmm_(Tensor(a!) self, Tensor mat1, Tensor mat2, *, Scalar beta=1, Scalar alpha=1) -> Tensor(a!) + structured_delegate: addmm.out + variants: method + dispatch: + # Warning! For whatever reason, the inplace sparse addmm is NON + # broadcasting + SparseCPU: s_addmm_sparse_dense_cpu_ + SparseCUDA: s_addmm_sparse_dense_cuda_ + +- func: _addmm_activation.out(Tensor self, Tensor mat1, Tensor mat2, *, Scalar beta=1, Scalar alpha=1, bool use_gelu=False, Tensor(a!) out) -> Tensor(a!) + structured: True + dispatch: + CPU: addmm_activation_out_cpu + CUDA: addmm_activation_out_cuda + XPU: addmm_activation_out_xpu + +- func: _addmm_activation(Tensor self, Tensor mat1, Tensor mat2, *, Scalar beta=1, Scalar alpha=1, bool use_gelu=False) -> Tensor + structured_delegate: _addmm_activation.out + variants: function, method + +- func: _scaled_mm(Tensor self, Tensor mat2, Tensor scale_a, Tensor scale_b, Tensor? bias=None, Tensor? scale_result=None, ScalarType? out_dtype=None, bool use_fast_accum=False) -> Tensor + variants: function + dispatch: + CPU: _scaled_mm_cpu + CUDA: _scaled_mm_cuda + XPU: _scaled_mm_xpu + tags: needs_exact_strides + + +- func: _scaled_mm.out(Tensor self, Tensor mat2, Tensor scale_a, Tensor scale_b, Tensor? bias=None, Tensor? scale_result=None, ScalarType? out_dtype=None, bool use_fast_accum=False, *, Tensor(a!) out) -> Tensor(a!) + variants: function + dispatch: + CPU: _scaled_mm_out_cpu + CUDA: _scaled_mm_out_cuda + XPU: _scaled_mm_out_xpu + tags: needs_exact_strides + +- func: _scaled_mm_v2(Tensor self, Tensor mat2, Tensor[] scale_a, int[] recipe_a, int[] swizzle_a, Tensor[] scale_b, int[] recipe_b, int[] swizzle_b, Tensor? bias, ScalarType? out_dtype, int[] contraction_dim=[], bool use_fast_accum=False) -> Tensor + variants: function + dispatch: + CPU: _scaled_mm_cpu_v2 + CUDA: _scaled_mm_cuda_v2 + XPU: _scaled_mm_xpu_v2 + tags: needs_exact_strides + +- func: _scaled_mm_v2.out(Tensor self, Tensor mat2, Tensor[] scale_a, int[] recipe_a, int[] swizzle_a, Tensor[] scale_b, int[] recipe_b, int[] swizzle_b, Tensor? bias, ScalarType? out_dtype, int[] contraction_dim=[], bool use_fast_accum=False, *, Tensor(a!) out) -> Tensor(a!) + variants: function + dispatch: + CPU: _scaled_mm_cpu_v2_out + CUDA: _scaled_mm_cuda_v2_out + XPU: _scaled_mm_xpu_v2_out + tags: needs_exact_strides + + +- func: _scaled_grouped_mm(Tensor self, Tensor mat2, Tensor scale_a, Tensor scale_b, Tensor? offs=None, Tensor? bias=None, Tensor? scale_result=None, ScalarType? out_dtype=None, bool use_fast_accum=False) -> Tensor + variants: function + dispatch: + CUDA: _scaled_grouped_mm_cuda + tags: needs_exact_strides + +- func: _scaled_grouped_mm_v2(Tensor self, Tensor mat2, Tensor[] scale_a, int[] recipe_a, int[] swizzle_a, Tensor[] scale_b, int[] recipe_b, int[] swizzle_b, Tensor? offs=None, Tensor? bias=None, ScalarType? out_dtype=None, int[] contraction_dim=[], bool use_fast_accum=False) -> Tensor + variants: function + dispatch: + CUDA: _scaled_grouped_mm_cuda_v2 + tags: needs_exact_strides + +- func: _grouped_mm(Tensor self, Tensor mat2, Tensor? offs=None, Tensor? bias=None, ScalarType? out_dtype=None) -> Tensor + variants: function + dispatch: + CompositeExplicitAutograd: _grouped_mm + CUDA: _grouped_mm_cuda + +# NOTE [ Sparse: autograd and API ] +# +# +# Sparse Tensor Constructors +# ~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# The API entry points to sparse tensor construction should be +# `sparse_coo tensor` and `_sparse_coo_tensor_unsafe`. Depending on whether the +# indices and values tensors are given, they eventually dispatch to either +# `sparse_coo_tensor_with_dims` or `sparse_coo_tensor_with_dims_and_tensors`. +# +# The autograd support for ctor is implement on `sparse_coo_tensor_with_dims_and_tensors`. +# +# The API methods `sparse_coo tensor` and `_sparse_coo_tensor_unsafe` +# **must not** have specific type dispatches because otherwise codegen will +# consider them as abstract methods (see Note [Abstract ATen methods]), dispatch +# using **Tensor** type, and thus lose autograd tracking on the actual method +# they dispatch to, e.g., `sparse_coo_tensor_with_dims_and_tensors`. +# +# +# Sparse Methods API Design +# ~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Goals: 1. Flexible API for users to write custom sparse ops +# 2. ctor and member accessor with autograd support +# +# To achieve 1, we need to provide a set of *dangerous* APIs (dangerous in the +# sense that misusing them will break sparse tensor invariant and may out in +# unexpected behavior, e.g., crash). These methods are all prefixed with +# underscore "_" to indicate that they should be used with care. We provide: +# +# + `_indices()`: returns the *raw* indices within the sparse tensor (not just +# sharing storage). Any inplace operation will change the +# actual indices, including t_, set_, as_strided_, resize_, +# etc. +# + `_values()`: returns the *raw* values within the sparse tensor. Similar +# semantics as `_indices()` +# + `_nnz()`: returns the number of non-zero entries. This will always be +# determined by the shapes of indices and values. +# + `_coalesced_(bool)`: inplace sets whether the tensor is coalesced, and +# returns itself. +# +# These methods are very useful in writing new operations, e.g., a custom +# autograd Function. +# +# We also provide other public *safe* APIs: +# + `indices()`: returns a **view** of the indices tensor if the sparse tensor +# is **coalesced**. +# + `values()`: returns a **view** of the values tensor if the containing +# sparse tensor is **coalesced**. +# + `sparse_dim()`: number of sparse dimensions +# + `dense_dim()`: number of dense dimensions +# + `is_coalesced()`: whether the sparse tensor is coalesced +# +# `_indices()` and `_values()` should returns the raw indices and values dense +# tensors within a sparse tensor. They can be quite unsafe with inplace +# operations like `t_()`, and exposes uncoalesced indices and values. The public +# recommended API is `indices()` and `values()`, both of which first check that +# the tensor is coalesced and return views on those tensors. +# +# +# Autograd Support +# ~~~~~~~~~~~~~~~~ +# +# Autograd is supported on `values()` and sparse tensor ctor with indices and +# values tensors. E.g., `torch.sparse_coo_tensor(i, v).values().sum()` is +# differentiable w.r.t. `v`. +# +# NB: The `values()` and `_values()` operators are special in that they are +# layout-aware, i.e., the output depends not just on the data it represents, but +# also on the input layout details (in this case, the `indices` tensor). See +# NOTE [ as_strided Backward and layout-aware/agnostic autograd ] in Functions.cpp +# for discussion on layout-aware vs layout-agnostic autograd. Since PyTorch ops +# operate in the layout-agnostic mode, similar to `as_strided`, backward of +# these two operators need to consider them in a layout-agnostic way: +# + `values()`: +# Input is coalesced. +# We just pretend having `input.indices()` as an additional argument +# `input_indices`, then forward is similar to +# `input.to(kStrided).index_select(input_indices)` regardless of the layout. +# Note that `values()` normally is layout-aware even if we constrain +# ourselves on sparse inputs since it may include all zeros values entries +# as "present" entries. +# + `_values()`: +# Input may be uncoalesced. +# It is not straightforward to construct a layout-agnostic version because +# duplicate indices entries may exist and additional parameterization is +# needed to distribute the value into different values entries. Furthermore, +# this op is intended to provide ways to write custom sparse ops, rather +# than being used in autograd graph, so it is marked as *non-differentiable* +# in derivatives.yaml. +# +# Before reading the following, see NOTE [ Autograd Variable Views ] in +# variable.h for details on views that are tracked by autograd, and views that +# are not. +# +# Moreover, these methods return tensors that share storage with inputs, so we +# mark these methods as view ops to support autograd history tracking. +# The sparse tensor ctor output should technically be view of both input indices +# and values tensors, but currently we only support setting as view of a single +# Variable, so it is only view of the values tensor. +# TODO: clone indices in sparse tensor ctor. +# +# For other methods that return outputs that share storage with inputs, i.e., +# `indices()` and `_indices()`. We mark their outputs as non-differentiable, so +# the view relation is not tracked by autograd, but the version counter is still +# shared. In other words, their outputs are non-differentiable views of the +# sparse tensor. +# FIXME: would be nicer if TensorOptions was optional based; not adding default arguments for options given +# the default would never make sense. + +- func: _sparse_compressed_tensor_with_dims(int nnz, int dense_dim, int[] size, int[] blocksize, ScalarType index_dtype, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False) -> Tensor + dispatch: + CompositeExplicitAutograd: sparse_compressed_tensor_with_dims + +- func: sparse_compressed_tensor.comp_plain_value_size(Tensor compressed_indices, Tensor plain_indices, Tensor values, SymInt[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False) -> Tensor + dispatch: + CompositeExplicitAutograd: sparse_compressed_tensor + +- func: sparse_csr_tensor.crow_col_value_size(Tensor crow_indices, Tensor col_indices, Tensor values, int[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False) -> Tensor +- func: sparse_csc_tensor.ccol_row_value_size(Tensor ccol_indices, Tensor row_indices, Tensor values, int[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False) -> Tensor +- func: sparse_bsr_tensor.crow_col_value_size(Tensor crow_indices, Tensor col_indices, Tensor values, int[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False) -> Tensor +- func: sparse_bsc_tensor.ccol_row_value_size(Tensor ccol_indices, Tensor row_indices, Tensor values, int[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False) -> Tensor + +- func: sparse_compressed_tensor.comp_plain_value(Tensor compressed_indices, Tensor plain_indices, Tensor values, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False) -> Tensor + dispatch: + CompositeExplicitAutograd: sparse_compressed_tensor +- func: sparse_csr_tensor.crow_col_value(Tensor crow_indices, Tensor col_indices, Tensor values, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False) -> Tensor +- func: sparse_csc_tensor.ccol_row_value(Tensor ccol_indices, Tensor row_indices, Tensor values, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False) -> Tensor +- func: sparse_bsr_tensor.crow_col_value(Tensor crow_indices, Tensor col_indices, Tensor values, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False) -> Tensor +- func: sparse_bsc_tensor.ccol_row_value(Tensor ccol_indices, Tensor row_indices, Tensor values, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False) -> Tensor + +- func: _sparse_compressed_tensor_unsafe(Tensor compressed_indices, Tensor plain_indices, Tensor values, SymInt[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CompositeImplicitAutograd: _sparse_compressed_tensor_unsafe_symint + +- func: _sparse_csr_tensor_unsafe(Tensor crow_indices, Tensor col_indices, Tensor values, int[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor +- func: _sparse_csc_tensor_unsafe(Tensor ccol_indices, Tensor row_indices, Tensor values, int[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor +- func: _sparse_bsr_tensor_unsafe(Tensor crow_indices, Tensor col_indices, Tensor values, int[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor +- func: _sparse_bsc_tensor_unsafe(Tensor ccol_indices, Tensor row_indices, Tensor values, int[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + +- func: sparse_coo_tensor.size(int[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False) -> Tensor + dispatch: + CompositeExplicitAutograd: sparse_coo_tensor + autogen: sparse_coo_tensor.size_out + +- func: sparse_coo_tensor.indices(Tensor indices, Tensor values, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, bool? is_coalesced=None) -> Tensor + +- func: sparse_coo_tensor.indices_size(Tensor indices, Tensor values, int[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, bool? is_coalesced=None) -> Tensor + +- func: _sparse_coo_tensor_unsafe(Tensor indices, Tensor values, SymInt[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, bool? is_coalesced=None) -> Tensor + dispatch: + CompositeImplicitAutograd: _sparse_coo_tensor_unsafe_symint + +- func: _validate_sparse_coo_tensor_args(Tensor indices, Tensor values, int[] size, bool? is_coalesced=None, bool? check_pinning=None) -> () + +- func: _validate_sparse_compressed_tensor_args(Tensor compressed_indices, Tensor plain_indices, Tensor values, int[] size, Layout layout, bool? check_pinning=None) -> () +- func: _validate_sparse_csr_tensor_args(Tensor crow_indices, Tensor col_indices, Tensor values, int[] size, bool? check_pinning=None) -> () +- func: _validate_sparse_csc_tensor_args(Tensor ccol_indices, Tensor row_indices, Tensor values, int[] size, bool? check_pinning=None) -> () +- func: _validate_sparse_bsr_tensor_args(Tensor crow_indices, Tensor col_indices, Tensor values, int[] size, bool? check_pinning=None) -> () +- func: _validate_sparse_bsc_tensor_args(Tensor ccol_indices, Tensor row_indices, Tensor values, int[] size, bool? check_pinning=None) -> () + +- func: _sparse_coo_tensor_with_dims(int sparse_dim, int dense_dim, int[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False) -> Tensor + dispatch: + SparseCPU, SparseCUDA, SparseMeta, SparseMPS, Meta: new_with_dims_sparse + autogen: _sparse_coo_tensor_with_dims.out + +- func: _sparse_coo_tensor_with_dims_and_tensors(int sparse_dim, int dense_dim, SymInt[] size, Tensor indices, Tensor values, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? is_coalesced=None) -> Tensor + dispatch: + SparseCPU, SparseCUDA, SparseMeta, SparseMPS, Meta: new_with_dims_and_tensor_sparse_symint + autogen: _sparse_coo_tensor_with_dims_and_tensors.out + +- func: sparse_resize_(Tensor(a!) self, int[] size, int sparse_dim, int dense_dim) -> Tensor(a!) + use_const_ref_for_mutable_tensors: True + variants: method + dispatch: + SparseCPU, SparseCUDA, SparseMPS, SparseMeta: sparse_resize_ + autogen: sparse_resize, sparse_resize.out + +- func: sparse_resize_and_clear_(Tensor(a!) self, int[] size, int sparse_dim, int dense_dim) -> Tensor(a!) + use_const_ref_for_mutable_tensors: True + variants: method + dispatch: + SparseCPU, SparseCUDA, SparseMPS, SparseMeta: sparse_resize_and_clear_ + autogen: sparse_resize_and_clear, sparse_resize_and_clear.out + +- func: sparse_mask(Tensor self, Tensor mask) -> Tensor + variants: method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: sparse_mask + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: sparse_mask_sparse_compressed + autogen: sparse_mask.out + +- func: _sparse_mask_projection(Tensor self, Tensor mask, bool accumulate_matches=False) -> Tensor + variants: method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: sparse_mask_projection + autogen: _sparse_mask_projection.out + +- func: _to_cpu(Tensor[] tensors) -> Tensor[] + variants: function + +- func: to_dense(Tensor self, ScalarType? dtype=None, *, bool? masked_grad=None) -> Tensor + variants: method + +# Special case of to_dense with custom derivative +- func: _to_dense(Tensor self, ScalarType? dtype=None, bool? masked_grad=None) -> Tensor + variants: method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: sparse_to_dense + SparseCsrCPU, SparseCsrCUDA, SparseCsrMPS, SparseCsrMeta: sparse_compressed_to_dense + MkldnnCPU: mkldnn_to_dense + autogen: _to_dense.out + +- func: to_dense_backward(Tensor grad, Tensor input, bool? masked_grad=None) -> Tensor + +- func: sparse_dim(Tensor self) -> int + variants: method + dispatch: + SparseCPU, SparseCUDA, SparseMPS, SparseMeta: sparse_dim_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMPS, SparseCsrMeta: sparse_dim_sparse_csr + CompositeExplicitAutograd: sparse_dim_default + device_check: NoCheck + device_guard: False + +# legacy method +- func: _dimI(Tensor self) -> int + variants: method + dispatch: + SparseCPU, SparseCUDA: sparse_dim_sparse + device_check: NoCheck + device_guard: False + +- func: dense_dim(Tensor self) -> int + variants: method + dispatch: + SparseCPU, SparseCUDA, SparseMPS, SparseMeta: dense_dim_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMPS, SparseCsrMeta: dense_dim_sparse_csr + CompositeExplicitAutograd: dense_dim_default + device_check: NoCheck + device_guard: False + +# legacy method +- func: _dimV(Tensor self) -> int + variants: method + dispatch: + SparseCPU, SparseCUDA, SparseMeta: dense_dim_sparse + device_check: NoCheck + device_guard: False + +- func: _nnz(Tensor self) -> int + variants: method + dispatch: + SparseCPU, SparseCUDA, SparseMPS, SparseMeta: _nnz_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMPS, SparseCsrMeta: _nnz_sparse_csr + device_check: NoCheck + device_guard: False + +# NOTE: [ coalesce autograd ] +# coalesce returns self directly for already coalesced sparse tensors. +# This means coalesce cannot have a derivative registered, otherwise it creates +# circular references in the autograd graph (see gh-52874). +# Instead, the derivative is registered on the slow-path "_coalesce" +- func: coalesce(Tensor(a) self) -> Tensor(a) + variants: method + +- func: _coalesce(Tensor self) -> Tensor + dispatch: + SparseCPU: _coalesce_sparse_cpu + SparseCUDA: _coalesce_sparse_cuda + SparseMPS: _coalesce_sparse_mps + autogen: _coalesce.out + +- func: is_coalesced(Tensor self) -> bool + variants: method + dispatch: + SparseCPU, SparseCUDA, SparseMPS, SparseMeta: is_coalesced_sparse + CompositeExplicitAutograd: is_coalesced_default + device_check: NoCheck + device_guard: False + +- func: _indices(Tensor(a) self) -> Tensor(a) + variants: method + dispatch: + SparseCPU, SparseCUDA, SparseMPS, SparseMeta: _indices_sparse + device_check: NoCheck + device_guard: False + +- func: _values(Tensor(a) self) -> Tensor(a) + variants: method + dispatch: + SparseCPU, SparseCUDA, SparseMPS, SparseMeta: _values_sparse + device_check: NoCheck + device_guard: False + +# This method doesn't do any check but only directly sets the flag. So it can be +# a bit unsafe. Similar to _indices and _values, this is useful for implementing +# custom sparse operations in Python/C++ extension. +- func: _coalesced_(Tensor(a!) self, bool coalesced) -> Tensor(a!) + variants: method + dispatch: + SparseCPU, SparseCUDA, SparseMPS, SparseMeta: _coalesced_sparse_ + device_check: NoCheck + device_guard: False + autogen: _coalesced, _coalesced.out + +- func: indices(Tensor(a) self) -> Tensor(a) + variants: method + dispatch: + SparseCPU, SparseCUDA, SparseMPS, SparseMeta: indices_sparse + CompositeExplicitAutograd: indices_default + device_check: NoCheck + device_guard: False + +- func: values(Tensor(a) self) -> Tensor(a) + variants: method + dispatch: + SparseCPU, SparseCUDA, SparseMPS, SparseMeta: values_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: values_sparse_csr + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: values_nested + CompositeExplicitAutograd: values_default + device_check: NoCheck + device_guard: False + +- func: crow_indices(Tensor(a) self) -> Tensor(a) + variants: method + dispatch: + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: crow_indices_sparse_csr + CompositeExplicitAutograd: crow_indices_default + device_check: NoCheck + device_guard: False + +- func: col_indices(Tensor(a) self) -> Tensor(a) + variants: method + dispatch: + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: col_indices_sparse_csr + CompositeExplicitAutograd: col_indices_default + device_check: NoCheck + device_guard: False + +- func: ccol_indices(Tensor(a) self) -> Tensor(a) + variants: method + dispatch: + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: ccol_indices_sparse_csr + CompositeExplicitAutograd: ccol_indices_default + device_check: NoCheck + device_guard: False + +- func: row_indices(Tensor(a) self) -> Tensor(a) + variants: method + dispatch: + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: row_indices_sparse_csr + CompositeExplicitAutograd: row_indices_default + device_check: NoCheck + device_guard: False + +- func: hspmm.out(Tensor mat1, Tensor mat2, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + SparseCPU: hspmm_out_sparse_cpu + SparseCUDA: hspmm_out_sparse_cuda + +- func: hspmm(Tensor mat1, Tensor mat2) -> Tensor + dispatch: + SparseCPU: hspmm_sparse_cpu + SparseCUDA: hspmm_sparse_cuda + +- func: copy_sparse_to_sparse_(Tensor(a!) self, Tensor src, bool non_blocking=False) -> Tensor(a!) + device_check: NoCheck # Allows copy into different device + variants: function + dispatch: + SparseCPU, SparseCUDA, SparseMPS, SparseMeta: copy_sparse_ + autogen: copy_sparse_to_sparse, copy_sparse_to_sparse.out + +# By adding the AutogradNestedTensor this makes this function CompositeImplicit-like for nested tensors +- func: unbind.int(Tensor(a -> *) self, int dim=0) -> Tensor(a)[] + variants: function, method + dispatch: + CompositeExplicitAutograd: unbind + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_unbind + +- func: unbind.Dimname(Tensor(a -> *) self, Dimname dim) -> Tensor(a)[] + variants: function, method + +- func: to_sparse.sparse_dim(Tensor self, int sparse_dim) -> Tensor + variants: method + +# Special case of to_sparse.sparse_dim with custom derivative +- func: _to_sparse.sparse_dim(Tensor self, int sparse_dim) -> Tensor + variants: method + dispatch: + CPU, CUDA, MPS: dense_to_sparse + SparseCPU, SparseCUDA, SparseMPS: sparse_coo_to_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta, SparseCsrMPS: sparse_compressed_to_sparse + autogen: _to_sparse.sparse_dim_out + +- func: to_sparse(Tensor self, *, Layout? layout=None, int[2]? blocksize=None, int? dense_dim=None) -> Tensor + variants: method + +# Special case of to_sparse with custom derivative +- func: _to_sparse(Tensor self, *, Layout? layout=None, int[2]? blocksize=None, int? dense_dim=None) -> Tensor + variants: method + dispatch: + CPU, CUDA, MPS: dense_to_sparse + SparseCPU, SparseCUDA, SparseMPS: sparse_coo_to_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: sparse_compressed_to_sparse + autogen: _to_sparse.out + +- func: to_sparse_csr(Tensor self, int? dense_dim=None) -> Tensor + variants: method + +# Special case of to_sparse_csr with custom derivative +- func: _to_sparse_csr(Tensor self, int? dense_dim=None) -> Tensor + variants: method + dispatch: + CPU, CUDA: dense_to_sparse_csr + SparseCPU, SparseCUDA: coo_to_sparse_csr + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: sparse_compressed_to_sparse_csr + autogen: _to_sparse_csr.out + +- func: to_sparse_csc(Tensor self, int? dense_dim=None) -> Tensor + variants: method + +# Special case of to_sparse_csc with custom derivative +- func: _to_sparse_csc(Tensor self, int? dense_dim=None) -> Tensor + variants: method + dispatch: + CPU, CUDA: dense_to_sparse_csc + SparseCPU, SparseCUDA: coo_to_sparse_csc + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: sparse_compressed_to_sparse_csc + autogen: _to_sparse_csc.out + +- func: to_sparse_bsr(Tensor self, int[2] blocksize, int? dense_dim=None) -> Tensor + variants: method + +# Special case of to_sparse_bsr with custom derivative +- func: _to_sparse_bsr(Tensor self, int[2] blocksize, int? dense_dim=None) -> Tensor + variants: method + dispatch: + CPU, CUDA: dense_to_sparse_bsr + SparseCPU, SparseCUDA: coo_to_sparse_bsr + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: sparse_compressed_to_sparse_bsr + autogen: _to_sparse_bsr.out + +- func: to_sparse_bsc(Tensor self, int[2] blocksize, int? dense_dim=None) -> Tensor + variants: method + +# Special case of to_sparse_bsc with custom derivative +- func: _to_sparse_bsc(Tensor self, int[2] blocksize, int? dense_dim=None) -> Tensor + variants: method + dispatch: + CPU, CUDA: dense_to_sparse_bsc + SparseCPU, SparseCUDA: coo_to_sparse_bsc + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: sparse_compressed_to_sparse_bsc + autogen: _to_sparse_bsc.out + +- func: _to_sparse_semi_structured(Tensor dense) -> (Tensor, Tensor) + variants: function + dispatch: + CUDA: _to_sparse_semi_structured + +- func: to_mkldnn(Tensor self, ScalarType? dtype=None) -> Tensor + variants: method + dispatch: + CPU: dense_to_mkldnn + autogen: to_mkldnn.out + +- func: mkldnn_reorder_conv2d_weight(Tensor self, SymInt[2] padding=0, SymInt[2] stride=1, SymInt[2] dilation=1, SymInt groups=1, SymInt[]? input_size=None) -> Tensor + variants: function + python_module: nn + dispatch: + MkldnnCPU: mkldnn_reorder_conv2d_weight + autogen: mkldnn_reorder_conv2d_weight.out + +- func: mkldnn_reorder_conv3d_weight(Tensor self, SymInt[3] padding=0, SymInt[3] stride=1, SymInt[3] dilation=1, SymInt groups=1, SymInt[]? input_size=None) -> Tensor + variants: function + python_module: nn + dispatch: + MkldnnCPU: mkldnn_reorder_conv3d_weight + autogen: mkldnn_reorder_conv3d_weight.out + +- func: to_mkldnn_backward(Tensor grad, Tensor input) -> Tensor + +- func: quantize_per_tensor_dynamic(Tensor self, ScalarType dtype, bool reduce_range) -> Tensor + variants: function + dispatch: + CPU, CUDA: quantize_per_tensor_dynamic + autogen: quantize_per_tensor_dynamic.out + +- func: quantize_per_tensor(Tensor self, float scale, int zero_point, ScalarType dtype) -> Tensor + variants: function + dispatch: + CPU, CUDA: quantize_per_tensor + autogen: quantize_per_tensor.out + +- func: quantize_per_tensor.tensor_qparams(Tensor self, Tensor scale, Tensor zero_point, ScalarType dtype) -> Tensor + variants: function + dispatch: + CPU, CUDA: quantize_per_tensor_tensor_qparams + autogen: quantize_per_tensor.tensor_qparams_out + +- func: quantize_per_tensor.tensors(Tensor[] tensors, Tensor scales, Tensor zero_points, ScalarType dtype) -> Tensor[] + variants: function + dispatch: + CPU: quantize_per_tensor_list_cpu + autogen: quantize_per_tensor.tensors_out + +- func: quantize_per_channel(Tensor self, Tensor scales, Tensor zero_points, int axis, ScalarType dtype) -> Tensor + variants: function + dispatch: + CPU, CUDA: quantize_per_channel + autogen: quantize_per_channel.out + +- func: dequantize.self(Tensor self) -> Tensor + variants: function, method + dispatch: + CPU, CUDA: dequantize_cpu_or_cuda + QuantizedCPU, QuantizedCUDA: dequantize_quantized + autogen: dequantize.self_out + +- func: dequantize.tensors(Tensor[] tensors) -> Tensor[] + variants: function + dispatch: + QuantizedCPU: dequantize_tensors_quantized_cpu + autogen: dequantize.tensors_out + +- func: q_scale(Tensor self) -> float + variants: function, method + dispatch: + QuantizedCPU, QuantizedCUDA: q_scale_quant + +- func: q_zero_point(Tensor self) -> int + variants: function, method + dispatch: + QuantizedCPU, QuantizedCUDA: q_zero_point_quant + +- func: q_per_channel_scales(Tensor self) -> Tensor + variants: function, method + dispatch: + QuantizedCPU, QuantizedCUDA: q_per_channel_scales + autogen: q_per_channel_scales.out + +- func: q_per_channel_zero_points(Tensor self) -> Tensor + variants: function, method + dispatch: + QuantizedCPU, QuantizedCUDA: q_per_channel_zero_points + autogen: q_per_channel_zero_points.out + +- func: q_per_channel_axis(Tensor self) -> int + variants: function, method + dispatch: + QuantizedCPU, QuantizedCUDA: q_per_channel_axis + +- func: int_repr(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + QuantizedCPU: int_repr_quantized_cpu + QuantizedCUDA: int_repr_quantized_cuda + autogen: int_repr.out + +- func: _make_per_tensor_quantized_tensor(Tensor self, float scale, int zero_point) -> Tensor + dispatch: + CPU: make_per_tensor_quantized_tensor_cpu + CUDA: make_per_tensor_quantized_tensor_cuda + autogen: _make_per_tensor_quantized_tensor.out + +- func: _make_per_channel_quantized_tensor(Tensor self, Tensor scale, Tensor zero_point, int axis) -> Tensor + dispatch: + CPU: make_per_channel_quantized_tensor_cpu + CUDA: make_per_channel_quantized_tensor_cuda + autogen: _make_per_channel_quantized_tensor.out + +- func: qscheme(Tensor self) -> QScheme + variants: method + dispatch: + QuantizedCPU, QuantizedCUDA: qscheme_quant + +- func: fake_quantize_per_tensor_affine(Tensor self, float scale, int zero_point, int quant_min, int quant_max) -> Tensor + device_check: NoCheck # TensorIterator + variants: function + +- func: fake_quantize_per_tensor_affine.tensor_qparams(Tensor self, Tensor scale, Tensor zero_point, int quant_min, int quant_max) -> Tensor + device_check: NoCheck # TensorIterator + variants: function + +- func: fake_quantize_per_tensor_affine_cachemask(Tensor self, float scale, int zero_point, int quant_min, int quant_max) -> (Tensor output, Tensor mask) + variants: function + dispatch: + CPU, CUDA: fake_quantize_per_tensor_affine_cachemask + autogen: fake_quantize_per_tensor_affine_cachemask.out + +- func: _fake_quantize_per_tensor_affine_cachemask_tensor_qparams(Tensor self, Tensor scale, Tensor zero_point, Tensor fake_quant_enabled, int quant_min, int quant_max) -> (Tensor output, Tensor mask) + variants: function + dispatch: + CPU, CUDA: _fake_quantize_per_tensor_affine_cachemask_tensor_qparams + autogen: _fake_quantize_per_tensor_affine_cachemask_tensor_qparams.out + +- func: fake_quantize_per_tensor_affine_cachemask_backward(Tensor grad, Tensor mask) -> Tensor + variants: function + +- func: _fake_quantize_learnable_per_tensor_affine(Tensor self, Tensor scale, Tensor zero_point, int quant_min, int quant_max, float grad_factor=1.0) -> Tensor + variants: function + dispatch: + CPU, CUDA: _fake_quantize_learnable_per_tensor_affine + autogen: _fake_quantize_learnable_per_tensor_affine.out + +- func: _fake_quantize_learnable_per_tensor_affine_backward(Tensor grad, Tensor self, Tensor scale, Tensor zero_point, int quant_min, int quant_max, float grad_factor=1.0) -> (Tensor, Tensor, Tensor) + variants: function + dispatch: + CPU, CUDA: _fake_quantize_learnable_per_tensor_affine_backward + +- func: fake_quantize_per_channel_affine(Tensor self, Tensor scale, Tensor zero_point, int axis, int quant_min, int quant_max) -> Tensor + device_check: NoCheck # TensorIterator + variants: function + +- func: fake_quantize_per_channel_affine_cachemask(Tensor self, Tensor scale, Tensor zero_point, int axis, int quant_min, int quant_max) -> (Tensor output, Tensor mask) + variants: function + dispatch: + CPU, CUDA: fake_quantize_per_channel_affine_cachemask + autogen: fake_quantize_per_channel_affine_cachemask.out + +- func: fake_quantize_per_channel_affine_cachemask_backward(Tensor grad, Tensor mask) -> Tensor + variants: function + +- func: _fake_quantize_learnable_per_channel_affine(Tensor self, Tensor scale, Tensor zero_point, int axis, int quant_min, int quant_max, float grad_factor=1.0) -> Tensor + variants: function + dispatch: + CPU, CUDA: _fake_quantize_learnable_per_channel_affine + autogen: _fake_quantize_learnable_per_channel_affine.out + +- func: _fake_quantize_learnable_per_channel_affine_backward(Tensor grad, Tensor self, Tensor scale, Tensor zero_point, int axis, int quant_min, int quant_max, float grad_factor=1.0) -> (Tensor, Tensor, Tensor) + variants: function + dispatch: + CPU, CUDA: _fake_quantize_learnable_per_channel_affine_backward + +- func: fused_moving_avg_obs_fake_quant(Tensor self, Tensor observer_on, Tensor fake_quant_on, Tensor(a!) running_min, Tensor(b!) running_max, Tensor(c!) scale, Tensor(d!) zero_point, float averaging_const, int quant_min, int quant_max, int ch_axis, bool per_row_fake_quant=False, bool symmetric_quant=False) -> Tensor + variants: function + +- func: _fused_moving_avg_obs_fq_helper(Tensor self, Tensor observer_on, Tensor fake_quant_on, Tensor(a!) running_min, Tensor(b!) running_max, Tensor(c!) scale, Tensor(d!) zero_point, float averaging_const, int quant_min, int quant_max, int ch_axis, bool per_row_fake_quant=False, bool symmetric_quant=False) -> (Tensor output, Tensor mask) + dispatch: + CPU: fused_moving_avg_obs_fake_quant_cpu + CUDA: fused_moving_avg_obs_fake_quant_cuda + autogen: _fused_moving_avg_obs_fq_helper_functional, _fused_moving_avg_obs_fq_helper.out + +- func: _choose_qparams_per_tensor(Tensor self, bool reduce_range=False) -> (float, int) + variants: function + +- func: _saturate_weight_to_fp16(Tensor weight) -> Tensor + variants: function + +- func: choose_qparams_optimized(Tensor input, int numel, int n_bins, float ratio, int bit_width) -> (Tensor, Tensor) + variants: function + +- func: _autocast_to_reduced_precision(Tensor(a) self, bool cuda_enabled, bool cpu_enabled, ScalarType cuda_dtype, ScalarType cpu_dtype) -> Tensor(a) + variants: method + device_guard: False + +- func: _autocast_to_full_precision(Tensor(a) self, bool cuda_enabled, bool cpu_enabled) -> Tensor(a) + variants: method + device_guard: False + +- func: _to_copy(Tensor self, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, bool non_blocking=False, MemoryFormat? memory_format=None) -> Tensor + device_check: NoCheck + device_guard: False + dispatch: + CompositeExplicitAutograd: _to_copy + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: _to_copy_nested + autogen: _to_copy.out + tags: core + +# to(Device) must not exist because all constructors of Device also works for +# TensorOptions. Otherwise, an ambiguity error is thrown. +# See NOTE [ TensorOptions Constructors ]. +- func: to.dtype_layout(Tensor(a) self, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, bool non_blocking=False, bool copy=False, MemoryFormat? memory_format=None) -> Tensor(a) + variants: method + device_check: NoCheck + device_guard: False + +- func: to.device(Tensor(a) self, Device device, ScalarType dtype, bool non_blocking=False, bool copy=False, MemoryFormat? memory_format=None) -> Tensor(a) + variants: method + device_check: NoCheck + device_guard: False + +- func: to.dtype(Tensor(a) self, ScalarType dtype, bool non_blocking=False, bool copy=False, MemoryFormat? memory_format=None) -> Tensor(a) + variants: method + device_check: NoCheck + device_guard: False + +- func: to.other(Tensor(a) self, Tensor other, bool non_blocking=False, bool copy=False, MemoryFormat? memory_format=None) -> Tensor(a) + variants: method + device_check: NoCheck + device_guard: False + +- func: meshgrid(Tensor[] tensors) -> Tensor[] + +# TODO: Two weeks after this lands, combine these two overloads, +# making "indexing" optional. These are temporarily distinct for +# forward-compatibility reasons. +- func: meshgrid.indexing(Tensor[] tensors, *, str indexing) -> Tensor[] + +- func: cartesian_prod(Tensor[] tensors) -> Tensor + variants: function + tags: maybe_aliasing_or_mutating + +- func: combinations(Tensor self, int r=2, bool with_replacement=False) -> Tensor + variants: function + +- func: item(Tensor self) -> Scalar + tags: data_dependent_output + variants: method + +- func: result_type.Tensor(Tensor tensor, Tensor other) -> ScalarType + variants: function + +- func: result_type.Scalar(Tensor tensor, Scalar other) -> ScalarType + variants: function + +- func: result_type.Scalar_Tensor(Scalar scalar, Tensor tensor) -> ScalarType + variants: function + +- func: result_type.Scalar_Scalar(Scalar scalar1, Scalar scalar2) -> ScalarType + +- func: can_cast(ScalarType from_, ScalarType to) -> bool + variants: function + +- func: promote_types(ScalarType type1, ScalarType type2) -> ScalarType + variants: function + +# NB: Does NOT check precondition that numel == 1 +- func: _local_scalar_dense(Tensor self) -> Scalar + tags: [core, data_dependent_output] + dispatch: + CPU: _local_scalar_dense_cpu + CUDA: _local_scalar_dense_cuda + MPS: _local_scalar_dense_mps + variants: function + +# MPS LSTM implementation + +- func: _lstm_mps(Tensor input, Tensor[] hx, Tensor[] params, bool has_biases, int num_layers, float dropout, bool train, bool bidirectional, bool batch_first) -> (Tensor, Tensor, Tensor, Tensor, Tensor, Tensor) + dispatch: + MPS: _lstm_mps + autogen: _lstm_mps.out + tags: nondeterministic_seeded + +- func: lstm_mps_backward(Tensor? grad_y, Tensor? grad_hy, Tensor? grad_cy, Tensor z_state, Tensor cell_state_fwd, Tensor input, Tensor layersOutputs, Tensor[] hx, Tensor[] params, bool has_biases, int num_layers, float dropout, bool train, bool bidirectional, bool batch_first) -> (Tensor, Tensor[], Tensor[]) + dispatch: + MPS: lstm_mps_backward + autogen: lstm_mps_backward.out + + +# Fused RNN kernels +- func: _thnn_fused_lstm_cell(Tensor input_gates, Tensor hidden_gates, Tensor cx, Tensor? input_bias=None, Tensor? hidden_bias=None) -> (Tensor, Tensor, Tensor) + dispatch: + CUDA: _thnn_fused_lstm_cell_cuda + autogen: _thnn_fused_lstm_cell.out + +# NB: The composite version of this function below is a simple wrapper that duplicates some of the outputs +# It is necessary to avoid triggering TensorImpl use count checks in debug mode +# NB: this is function is NOT differentiable +- func: _thnn_fused_lstm_cell_backward_impl(Tensor? grad_hy, Tensor? grad_cy, Tensor cx, Tensor cy, Tensor workspace, bool has_bias) -> (Tensor, Tensor, Tensor) + dispatch: + CUDA: _thnn_fused_lstm_cell_backward_impl_cuda + autogen: _thnn_fused_lstm_cell_backward_impl.out + +- func: _thnn_fused_lstm_cell_backward(Tensor? grad_hy, Tensor? grad_cy, Tensor cx, Tensor cy, Tensor workspace, bool has_bias) -> (Tensor, Tensor, Tensor, Tensor, Tensor) + +- func: _thnn_differentiable_lstm_cell_backward(Tensor? grad_hy, Tensor? grad_cy, Tensor input_gates, Tensor hidden_gates, Tensor? input_bias, Tensor? hidden_bias, Tensor cx, Tensor cy) -> (Tensor, Tensor, Tensor, Tensor, Tensor) + +- func: _thnn_fused_gru_cell(Tensor input_gates, Tensor hidden_gates, Tensor hx, Tensor? input_bias=None, Tensor? hidden_bias=None) -> (Tensor, Tensor) + dispatch: + CUDA: _thnn_fused_gru_cell_cuda + autogen: _thnn_fused_gru_cell.out + +- func: _thnn_fused_gru_cell_backward(Tensor grad_hy, Tensor workspace, bool has_bias) -> (Tensor, Tensor, Tensor, Tensor, Tensor) + dispatch: + CUDA: _thnn_fused_gru_cell_backward_cuda + autogen: _thnn_fused_gru_cell_backward.out + +- func: _thnn_differentiable_gru_cell_backward(Tensor grad_hy, Tensor input_gates, Tensor hidden_gates, Tensor hx, Tensor? input_bias, Tensor? hidden_bias) -> (Tensor, Tensor, Tensor, Tensor, Tensor) + +# RNN cells and layers +- func: lstm.input(Tensor input, Tensor[] hx, Tensor[] params, bool has_biases, int num_layers, float dropout, bool train, bool bidirectional, bool batch_first) -> (Tensor, Tensor, Tensor) + tags: nondeterministic_seeded + +- func: lstm.data(Tensor data, Tensor batch_sizes, Tensor[] hx, Tensor[] params, bool has_biases, int num_layers, float dropout, bool train, bool bidirectional) -> (Tensor, Tensor, Tensor) + tags: nondeterministic_seeded + +- func: gru.input(Tensor input, Tensor hx, Tensor[] params, bool has_biases, int num_layers, float dropout, bool train, bool bidirectional, bool batch_first) -> (Tensor, Tensor) + tags: nondeterministic_seeded + +- func: gru.data(Tensor data, Tensor batch_sizes, Tensor hx, Tensor[] params, bool has_biases, int num_layers, float dropout, bool train, bool bidirectional) -> (Tensor, Tensor) + tags: nondeterministic_seeded + +- func: rnn_tanh.input(Tensor input, Tensor hx, Tensor[] params, bool has_biases, int num_layers, float dropout, bool train, bool bidirectional, bool batch_first) -> (Tensor, Tensor) + tags: nondeterministic_seeded + +- func: rnn_tanh.data(Tensor data, Tensor batch_sizes, Tensor hx, Tensor[] params, bool has_biases, int num_layers, float dropout, bool train, bool bidirectional) -> (Tensor, Tensor) + tags: nondeterministic_seeded + +- func: rnn_relu.input(Tensor input, Tensor hx, Tensor[] params, bool has_biases, int num_layers, float dropout, bool train, bool bidirectional, bool batch_first) -> (Tensor, Tensor) + tags: nondeterministic_seeded + +- func: rnn_relu.data(Tensor data, Tensor batch_sizes, Tensor hx, Tensor[] params, bool has_biases, int num_layers, float dropout, bool train, bool bidirectional) -> (Tensor, Tensor) + tags: nondeterministic_seeded + +- func: lstm_cell(Tensor input, Tensor[] hx, Tensor w_ih, Tensor w_hh, Tensor? b_ih=None, Tensor? b_hh=None) -> (Tensor, Tensor) + +- func: gru_cell(Tensor input, Tensor hx, Tensor w_ih, Tensor w_hh, Tensor? b_ih=None, Tensor? b_hh=None) -> Tensor + +- func: rnn_tanh_cell(Tensor input, Tensor hx, Tensor w_ih, Tensor w_hh, Tensor? b_ih=None, Tensor? b_hh=None) -> Tensor + +- func: rnn_relu_cell(Tensor input, Tensor hx, Tensor w_ih, Tensor w_hh, Tensor? b_ih=None, Tensor? b_hh=None) -> Tensor + +# Quantized RNN layer registration has been moved to C10 dispatch in `RNN.cpp` + +# Quantized RNN layers +# - func: quantized_lstm(Tensor input, Tensor[] hx, Tensor[] params, bool has_biases, int num_layers, float dropout, bool train, bool bidirectional, bool batch_first, *, ScalarType? dtype=None, bool use_dynamic=False) -> (Tensor, Tensor, Tensor) + + +# - func: quantized_lstm.data(Tensor data, Tensor batch_sizes, Tensor[] hx, Tensor[] params, bool has_biases, int num_layers, float dropout, bool train, bool bidirectional, *, ScalarType? dtype=None, bool use_dynamic=False) -> (Tensor, Tensor, Tensor) + + +# Quantized GRU layers + +# - func: quantized_gru.input(Tensor input, Tensor hx, Tensor[] params, bool has_biases, int num_layers, float dropout, bool train, bool bidirectional, bool batch_first) -> (Tensor, Tensor) +# + +# - func: quantized_gru.data(Tensor data, Tensor batch_sizes, Tensor hx, Tensor[] params, bool has_biases, int num_layers, float dropout, bool train, bool bidirectional) -> (Tensor, Tensor) +# + +# Quantized RNN cells +- func: quantized_lstm_cell(Tensor input, Tensor[] hx, Tensor w_ih, Tensor w_hh, Tensor b_ih, Tensor b_hh, Tensor packed_ih, Tensor packed_hh, Tensor col_offsets_ih, Tensor col_offsets_hh, Scalar scale_ih, Scalar scale_hh, Scalar zero_point_ih, Scalar zero_point_hh) -> (Tensor, Tensor) + +- func: quantized_gru_cell(Tensor input, Tensor hx, Tensor w_ih, Tensor w_hh, Tensor b_ih, Tensor b_hh, Tensor packed_ih, Tensor packed_hh, Tensor col_offsets_ih, Tensor col_offsets_hh, Scalar scale_ih, Scalar scale_hh, Scalar zero_point_ih, Scalar zero_point_hh) -> Tensor + +- func: quantized_rnn_relu_cell(Tensor input, Tensor hx, Tensor w_ih, Tensor w_hh, Tensor b_ih, Tensor b_hh, Tensor packed_ih, Tensor packed_hh, Tensor col_offsets_ih, Tensor col_offsets_hh, Scalar scale_ih, Scalar scale_hh, Scalar zero_point_ih, Scalar zero_point_hh) -> Tensor + +- func: quantized_rnn_tanh_cell(Tensor input, Tensor hx, Tensor w_ih, Tensor w_hh, Tensor b_ih, Tensor b_hh, Tensor packed_ih, Tensor packed_hh, Tensor col_offsets_ih, Tensor col_offsets_hh, Scalar scale_ih, Scalar scale_hh, Scalar zero_point_ih, Scalar zero_point_hh) -> Tensor + +# PackedSequence utilities +- func: _pack_padded_sequence(Tensor input, Tensor lengths, bool batch_first) -> (Tensor, Tensor) + dispatch: + CompositeExplicitAutograd: _pack_padded_sequence + autogen: _pack_padded_sequence.out + +- func: _pack_padded_sequence_backward(Tensor grad, SymInt[] input_size, Tensor batch_sizes, bool batch_first) -> Tensor + dispatch: + CompositeImplicitAutograd: _pack_padded_sequence_backward_symint + +- func: _pad_packed_sequence(Tensor data, Tensor batch_sizes, bool batch_first, Scalar padding_value, int total_length) -> (Tensor, Tensor) + +# wrappers for legacy TH methods + +- func: set_.source_Storage(Tensor(a!) self, Storage source) -> Tensor(a!) + variants: method + device_check: NoCheck + device_guard: False + dispatch: + CPU, CUDA, Meta, MPS: set_ + autogen: set.source_Storage, set.source_Storage_out + tags: inplace_view + +- func: set_.source_Storage_storage_offset(Tensor(a!) self, Storage source, SymInt storage_offset, SymInt[] size, SymInt[] stride=[]) -> Tensor(a!) + variants: method + device_check: NoCheck + device_guard: False + dispatch: + CPU: set_storage_cpu_ + Meta: set_storage_meta__symint + CUDA: set_storage_cuda_ + MPS: set_storage_mps_ + QuantizedCPU, QuantizedCUDA: set_storage_quantized_ + autogen: set.source_Storage_storage_offset, set.source_Storage_storage_offset_out + tags: inplace_view + +- func: set_.source_Tensor_storage_offset(Tensor(a!) self, Tensor source, SymInt storage_offset, SymInt[] size, SymInt[] stride=[]) -> Tensor(a!) + variants: method + device_check: NoCheck + device_guard: False + dispatch: + CompositeImplicitAutograd: set__symint + tags: inplace_view + +- func: set_.source_Tensor(Tensor(a!) self, Tensor source) -> Tensor(a!) + variants: method + device_check: NoCheck + device_guard: False + dispatch: + CPU, CUDA, Meta, MPS: set_tensor_ + autogen: set.source_Tensor, set.source_Tensor_out + tags: inplace_view + +- func: set_(Tensor(a!) self) -> Tensor(a!) + variants: method + dispatch: + CPU: set_cpu_ + CUDA: set_cuda_ + Meta: set_meta_ + MPS: set_mps_ + autogen: set, set.out + tags: inplace_view + +# Not making it CompositeImplicitAutograd because lift +# should be a primitive w.r.t. functorch + +# TODO: this should have a view annotation +# TODO: shouldn't be a method +- func: lift(Tensor self) -> Tensor + dispatch: + CompositeExplicitAutograd: lift + autogen: lift.out + +# lift_fresh is called with an argument that is guaranteed to be +# fresh (i.e., newly allocated). This is ONLY called from a +# torch.tensor call; if you FX trace a lift_fresh, you are obligated +# to convert this into a lift_fresh_copy (because FX will violate the +# freshness invariant when tracing). +- func: lift_fresh(Tensor(a) self) -> Tensor(a) + dispatch: + CompositeExplicitAutograd: lift_fresh + +# Like lift, but it clones the input. +- func: lift_fresh_copy(Tensor self) -> Tensor + tags: view_copy + dispatch: + CompositeExplicitAutogradNonFunctional: lift_fresh_copy + autogen: lift_fresh_copy.out + +- func: is_set_to(Tensor self, Tensor tensor) -> bool + variants: method + device_check: NoCheck + device_guard: False + dispatch: + CPU, CUDA, MPS: is_set_to + +- func: masked_fill_.Scalar(Tensor(a!) self, Tensor mask, Scalar value) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + dispatch: + CPU: masked_fill__cpu + CUDA: masked_fill__cuda + QuantizedCPU: masked_fill__quantized_cpu + QuantizedCUDA: masked_fill__quantized_cuda + MPS: masked_fill__mps + autogen: masked_fill.Scalar_out + +- func: masked_fill.Scalar(Tensor self, Tensor mask, Scalar value) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CompositeExplicitAutograd: masked_fill + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_masked_fill + tags: pointwise + +- func: masked_fill_.Tensor(Tensor(a!) self, Tensor mask, Tensor value) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + dispatch: + CPU: masked_fill__cpu + CUDA: masked_fill__cuda + QuantizedCPU: masked_fill__quantized_cpu + QuantizedCUDA: masked_fill__quantized_cuda + MPS: masked_fill__mps + autogen: masked_fill.Tensor_out + +- func: masked_fill.Tensor(Tensor self, Tensor mask, Tensor value) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CompositeExplicitAutograd: masked_fill + +- func: masked_scatter_(Tensor(a!) self, Tensor mask, Tensor source) -> Tensor(a!) + variants: method + dispatch: + CPU: masked_scatter__cpu + CUDA: masked_scatter__cuda + MPS: masked_scatter__mps + autogen: masked_scatter.out + +- func: masked_scatter(Tensor self, Tensor mask, Tensor source) -> Tensor + variants: function, method + dispatch: + CompositeExplicitAutograd: masked_scatter + tags: core + +- func: masked_scatter_backward(Tensor grad_output, Tensor mask, SymInt[] sizes) -> Tensor + dispatch: + CompositeExplicitAutograd: masked_scatter_backward_symint + +- func: _masked_softmax(Tensor self, Tensor mask, int? dim=None, int? mask_type=None) -> Tensor + dispatch: + CUDA: masked_softmax_cuda + CPU: masked_softmax_cpu + autogen: _masked_softmax.out + +- func: _masked_softmax_backward(Tensor grad_output, Tensor output, Tensor mask, int? dim=None) -> Tensor + dispatch: + CUDA: masked_softmax_backward_cuda + CPU: masked_softmax_backward_cpu + autogen: _masked_softmax_backward.out + +- func: view(Tensor(a) self, SymInt[] size) -> Tensor(a) + variants: method + device_check: NoCheck + device_guard: False + dispatch: + ZeroTensor, Meta, CPU, CUDA, QuantizedCPU, QuantizedCUDA, MPS, MTIA: view + MkldnnCPU: mkldnn_view + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: view_nested + tags: core + +# Warning: If you want to change the name or overload name of this +# operator, you might also want to change the `isBlockListedSchema` +# function in `torch/csrc/jit/frontend/schema_catching.cpp`. +# The name and overload name of this operator is hardcoded in that +# function in order to workaround a bug: +# https://github.com/pytorch/pytorch/issues/47964 +- func: view.dtype(Tensor(a) self, ScalarType dtype) -> Tensor(a) + variants: method + device_check: NoCheck + device_guard: False + dispatch: + CompositeExplicitAutograd: view_dtype + +- func: put_(Tensor(a!) self, Tensor index, Tensor source, bool accumulate=False) -> Tensor(a!) + variants: method + dispatch: + CPU, CUDA: put_ + autogen: put.out + +- func: put(Tensor self, Tensor index, Tensor source, bool accumulate=False) -> Tensor + variants: function, method + dispatch: + CompositeExplicitAutograd: put + +- func: index_add.out(Tensor self, int dim, Tensor index, Tensor source, *, Scalar alpha=1, Tensor(a!) out) -> Tensor(a!) + structured: True + variants: function + precomputed: + - dim -> int dim + dispatch: + CPU: index_add_cpu_out + CUDA: index_add_cuda_out + MPS: index_add_mps_out + +- func: index_add_(Tensor(a!) self, int dim, Tensor index, Tensor source, *, Scalar alpha=1) -> Tensor(a!) + structured_delegate: index_add.out + variants: method + +- func: index_add(Tensor self, int dim, Tensor index, Tensor source, *, Scalar alpha=1) -> Tensor + structured_delegate: index_add.out + variants: function, method + +- func: index_add.dimname(Tensor self, Dimname dim, Tensor index, Tensor source, *, Scalar alpha=1) -> Tensor + variants: function, method + +- func: index_reduce.out(Tensor self, int dim, Tensor index, Tensor source, str reduce, *, bool include_self=True, Tensor(a!) out) -> Tensor(a!) + structured: True + variants: function + precomputed: + - dim -> int dim + dispatch: + CPU: index_reduce_cpu_out + CUDA: index_reduce_cuda_out + MPS: index_reduce_mps_out + +- func: index_reduce_(Tensor(a!) self, int dim, Tensor index, Tensor source, str reduce, *, bool include_self=True) -> Tensor(a!) + structured_delegate: index_reduce.out + variants: method + +- func: index_reduce(Tensor self, int dim, Tensor index, Tensor source, str reduce, *, bool include_self=True) -> Tensor + structured_delegate: index_reduce.out + variants: function, method + +- func: index_fill_.int_Scalar(Tensor(a!) self, int dim, Tensor index, Scalar value) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + dispatch: + CPU, CUDA, MPS: index_fill_ + autogen: index_fill.int_Scalar_out + +- func: index_fill.int_Scalar(Tensor self, int dim, Tensor index, Scalar value) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CompositeExplicitAutograd: index_fill + +- func: index_fill_.int_Tensor(Tensor(a!) self, int dim, Tensor index, Tensor value) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + dispatch: + CPU, CUDA, MPS: index_fill_ + autogen: index_fill.int_Tensor_out + +- func: index_fill.int_Tensor(Tensor self, int dim, Tensor index, Tensor value) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + dispatch: + CompositeExplicitAutograd: index_fill + +- func: index_fill_.Dimname_Scalar(Tensor(a!) self, Dimname dim, Tensor index, Scalar value) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + +- func: index_fill_.Dimname_Tensor(Tensor(a!) self, Dimname dim, Tensor index, Tensor value) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + +- func: index_fill.Dimname_Scalar(Tensor self, Dimname dim, Tensor index, Scalar value) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + +- func: index_fill.Dimname_Tensor(Tensor self, Dimname dim, Tensor index, Tensor value) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + +- func: scatter.src(Tensor self, int dim, Tensor index, Tensor src) -> Tensor + structured_delegate: scatter.src_out + variants: function, method + tags: core + +- func: scatter_.src(Tensor(a!) self, int dim, Tensor index, Tensor src) -> Tensor(a!) + structured_delegate: scatter.src_out + variants: method + +- func: scatter.src_out(Tensor self, int dim, Tensor index, Tensor src, *, Tensor(a!) out) -> Tensor(a!) + structured: True + variants: function + dispatch: + CPU, CUDA: scatter_src_out + MPS: scatter_src_out_mps + +- func: scatter.value(Tensor self, int dim, Tensor index, Scalar value) -> Tensor + structured_delegate: scatter.value_out + variants: function, method + tags: core + +- func: scatter_.value(Tensor(a!) self, int dim, Tensor index, Scalar value) -> Tensor(a!) + structured_delegate: scatter.value_out + variants: method + +- func: scatter.value_out(Tensor self, int dim, Tensor index, Scalar value, *, Tensor(a!) out) -> Tensor(a!) + structured: True + variants: function + dispatch: + CPU, CUDA: scatter_value_out + MPS: scatter_value_out_mps + +- func: scatter.reduce(Tensor self, int dim, Tensor index, Tensor src, *, str reduce) -> Tensor + structured_delegate: scatter.reduce_out + variants: function, method + +- func: scatter_.reduce(Tensor(a!) self, int dim, Tensor index, Tensor src, *, str reduce) -> Tensor(a!) + structured_delegate: scatter.reduce_out + variants: method + +- func: scatter.reduce_out(Tensor self, int dim, Tensor index, Tensor src, *, str reduce, Tensor(a!) out) -> Tensor(a!) + structured: True + variants: function + dispatch: + CPU, CUDA: scatter_reduce_out + MPS: scatter_reduce_out_mps + +- func: scatter.value_reduce(Tensor self, int dim, Tensor index, Scalar value, *, str reduce) -> Tensor + structured_delegate: scatter.value_reduce_out + variants: function, method + +- func: scatter_.value_reduce(Tensor(a!) self, int dim, Tensor index, Scalar value, *, str reduce) -> Tensor(a!) + structured_delegate: scatter.value_reduce_out + variants: method + +- func: scatter.value_reduce_out(Tensor self, int dim, Tensor index, Scalar value, *, str reduce, Tensor(a!) out) -> Tensor(a!) + structured: True + variants: function + dispatch: + CPU, CUDA: scatter_value_reduce_out + MPS: scatter_value_reduce_out_mps + +- func: scatter.dimname_src(Tensor self, Dimname dim, Tensor index, Tensor src) -> Tensor + variants: function, method + +- func: scatter.dimname_value(Tensor self, Dimname dim, Tensor index, Scalar value) -> Tensor + variants: function, method + +- func: scatter_add(Tensor self, int dim, Tensor index, Tensor src) -> Tensor + structured_delegate: scatter_add.out + variants: function, method + tags: core + +- func: scatter_add_(Tensor(a!) self, int dim, Tensor index, Tensor src) -> Tensor(a!) + structured_delegate: scatter_add.out + variants: method + +- func: scatter_add.out(Tensor self, int dim, Tensor index, Tensor src, *, Tensor(a!) out) -> Tensor(a!) + structured: True + variants: function + dispatch: + CPU, CUDA: scatter_add + MPS: scatter_add_mps_out + +- func: scatter_add.dimname(Tensor self, Dimname dim, Tensor index, Tensor src) -> Tensor + variants: function, method + +- func: scatter_reduce.two(Tensor self, int dim, Tensor index, Tensor src, str reduce, *, bool include_self=True) -> Tensor + structured_delegate: scatter_reduce.two_out + variants: function, method + tags: core + +- func: scatter_reduce_.two(Tensor(a!) self, int dim, Tensor index, Tensor src, str reduce, *, bool include_self=True) -> Tensor(a!) + structured_delegate: scatter_reduce.two_out + variants: method + +- func: scatter_reduce.two_out(Tensor self, int dim, Tensor index, Tensor src, str reduce, *, bool include_self=True, Tensor(a!) out) -> Tensor(a!) + structured: True + variants: function + dispatch: + CPU, CUDA, MPS: scatter_reduce_two + +- func: eq_.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + structured_delegate: eq.Scalar_out + device_check: NoCheck # TensorIterator + variants: method + +- func: eq_.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + structured_delegate: eq.Tensor_out + device_check: NoCheck # TensorIterator + variants: method + +- func: bitwise_and.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + variants: function + dispatch: + CPU, CUDA, MTIA: bitwise_and_out + MPS: bitwise_and_out_mps + tags: pointwise + +- func: bitwise_and.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: function + dispatch: + CompositeExplicitAutograd: bitwise_and_out + tags: pointwise + +- func: bitwise_and.Scalar(Tensor self, Scalar other) -> Tensor + device_check: NoCheck # TensorIterator + variants: method, function + dispatch: + CompositeExplicitAutograd: bitwise_and + tags: [core, pointwise] + +- func: bitwise_and.Scalar_Tensor(Scalar self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + variants: function + dispatch: + CompositeExplicitAutograd: bitwise_and + autogen: bitwise_and.Scalar_Tensor_out + tags: pointwise + +- func: bitwise_and.Tensor(Tensor self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + variants: method, function + structured_delegate: bitwise_and.Tensor_out + tags: [core, pointwise] + +- func: bitwise_and_.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + dispatch: + CompositeExplicitAutograd: bitwise_and_ + tags: pointwise + +- func: bitwise_and_.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + structured_delegate: bitwise_and.Tensor_out + tags: pointwise + +- func: __and__.Scalar(Tensor self, Scalar other) -> Tensor + device_check: NoCheck # TensorIterator + variants: method, function + +- func: __and__.Tensor(Tensor self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + variants: method, function + +- func: __iand__.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + +- func: __iand__.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + +- func: bitwise_or.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + variants: function + dispatch: + CPU, CUDA, MTIA: bitwise_or_out + MPS: bitwise_or_out_mps + tags: pointwise + +- func: bitwise_or.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: function + dispatch: + CompositeExplicitAutograd: bitwise_or_out + tags: pointwise + +- func: bitwise_or.Scalar(Tensor self, Scalar other) -> Tensor + device_check: NoCheck # TensorIterator + variants: method, function + dispatch: + CompositeExplicitAutograd: bitwise_or + tags: [core, pointwise] + +- func: bitwise_or.Scalar_Tensor(Scalar self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + variants: function + dispatch: + CompositeExplicitAutograd: bitwise_or + autogen: bitwise_or.Scalar_Tensor_out + tags: pointwise + +- func: bitwise_or.Tensor(Tensor self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + variants: method, function + structured_delegate: bitwise_or.Tensor_out + tags: [core, pointwise] + +- func: bitwise_or_.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + dispatch: + CompositeExplicitAutograd: bitwise_or_ + tags: pointwise + +- func: bitwise_or_.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + structured_delegate: bitwise_or.Tensor_out + tags: pointwise + +- func: __or__.Scalar(Tensor self, Scalar other) -> Tensor + device_check: NoCheck # TensorIterator + variants: method, function + +- func: __or__.Tensor(Tensor self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + variants: method, function + +- func: __ior__.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + +- func: __ior__.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + +- func: bitwise_xor.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + variants: function + dispatch: + CPU, CUDA: bitwise_xor_out + MPS: bitwise_xor_out_mps + tags: pointwise + +- func: bitwise_xor.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: function + dispatch: + CompositeExplicitAutograd: bitwise_xor_out + tags: pointwise + +- func: bitwise_xor.Scalar(Tensor self, Scalar other) -> Tensor + device_check: NoCheck # TensorIterator + variants: method, function + dispatch: + CompositeExplicitAutograd: bitwise_xor + tags: [core, pointwise] + +- func: bitwise_xor.Scalar_Tensor(Scalar self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + variants: function + dispatch: + CompositeExplicitAutograd: bitwise_xor + autogen: bitwise_xor.Scalar_Tensor_out + tags: pointwise + +- func: bitwise_xor.Tensor(Tensor self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + variants: method, function + structured_delegate: bitwise_xor.Tensor_out + tags: [core, pointwise] + +- func: bitwise_xor_.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + dispatch: + CompositeExplicitAutograd: bitwise_xor_ + tags: pointwise + +- func: bitwise_xor_.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + structured_delegate: bitwise_xor.Tensor_out + tags: pointwise + +- func: __xor__.Scalar(Tensor self, Scalar other) -> Tensor + device_check: NoCheck # TensorIterator + variants: method, function + tags: pointwise + +- func: __xor__.Tensor(Tensor self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + variants: method, function + tags: pointwise + +- func: __ixor__.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + tags: pointwise + +- func: __ixor__.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + tags: pointwise + +- func: __lshift__.Scalar(Tensor self, Scalar other) -> Tensor + device_check: NoCheck # TensorIterator + variants: method, function + dispatch: + CPU, CUDA, MPS, MTIA: __lshift__ + tags: pointwise + +- func: __lshift__.Tensor(Tensor self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + variants: method, function + dispatch: + CPU, CUDA, MPS, MTIA: __lshift__ + tags: pointwise + +- func: __ilshift__.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + dispatch: + CPU, CUDA, MPS: __ilshift__ + autogen: __lshift__.Scalar_out + tags: pointwise + +- func: __ilshift__.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + dispatch: + CPU, CUDA, MPS: __ilshift__ + autogen: __lshift__.Tensor_out + tags: pointwise + +- func: bitwise_left_shift.Tensor(Tensor self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + structured_delegate: bitwise_left_shift.Tensor_out + tags: pointwise + +- func: bitwise_left_shift_.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + structured_delegate: bitwise_left_shift.Tensor_out + tags: pointwise + +- func: bitwise_left_shift.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: bitwise_left_shift_out + tags: pointwise + +- func: bitwise_left_shift.Tensor_Scalar(Tensor self, Scalar other) -> Tensor + device_check: NoCheck # TensorIterator + variants: method, function + dispatch: + CompositeExplicitAutograd: bitwise_left_shift + tags: pointwise + +- func: bitwise_left_shift_.Tensor_Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + dispatch: + CompositeExplicitAutograd: bitwise_left_shift_ + tags: pointwise + +- func: bitwise_left_shift.Tensor_Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: function + dispatch: + CompositeExplicitAutograd: bitwise_left_shift_out + tags: pointwise + +- func: bitwise_left_shift.Scalar_Tensor(Scalar self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + variants: function + dispatch: + CompositeExplicitAutograd: bitwise_left_shift + autogen: bitwise_left_shift.Scalar_Tensor_out + tags: pointwise + +- func: __rshift__.Scalar(Tensor self, Scalar other) -> Tensor + device_check: NoCheck # TensorIterator + variants: method, function + dispatch: + CPU, CUDA, MPS, MTIA: __rshift__ + tags: pointwise + +- func: __rshift__.Tensor(Tensor self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + variants: method, function + dispatch: + CPU, CUDA, MPS, MTIA: __rshift__ + tags: pointwise + +- func: __irshift__.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + dispatch: + CPU, CUDA, MPS: __irshift__ + autogen: __rshift__.Scalar_out + +- func: __irshift__.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + dispatch: + CPU, CUDA, MPS: __irshift__ + autogen: __rshift__.Tensor_out + +- func: bitwise_right_shift.Tensor(Tensor self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + variants: function, method + structured_delegate: bitwise_right_shift.Tensor_out + tags: pointwise + +- func: bitwise_right_shift_.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + structured_delegate: bitwise_right_shift.Tensor_out + tags: pointwise + +- func: bitwise_right_shift.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: bitwise_right_shift_out + tags: pointwise + +- func: bitwise_right_shift.Tensor_Scalar(Tensor self, Scalar other) -> Tensor + device_check: NoCheck # TensorIterator + variants: method, function + dispatch: + CompositeExplicitAutograd: bitwise_right_shift + tags: pointwise + +- func: bitwise_right_shift_.Tensor_Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + dispatch: + CompositeExplicitAutograd: bitwise_right_shift_ + tags: pointwise + +- func: bitwise_right_shift.Tensor_Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: function + dispatch: + CompositeExplicitAutograd: bitwise_right_shift_out + tags: pointwise + +- func: bitwise_right_shift.Scalar_Tensor(Scalar self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + variants: function + dispatch: + CompositeExplicitAutograd: bitwise_right_shift + autogen: bitwise_right_shift.Scalar_Tensor_out + tags: pointwise + +- func: tril_(Tensor(a!) self, SymInt diagonal=0) -> Tensor(a!) + structured_delegate: tril.out + variants: method + +- func: triu_(Tensor(a!) self, SymInt diagonal=0) -> Tensor(a!) + structured_delegate: triu.out + variants: method + +- func: digamma_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: digamma.out + variants: method + tags: pointwise + +- func: lerp_.Scalar(Tensor(a!) self, Tensor end, Scalar weight) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + structured_delegate: lerp.Scalar_out + tags: pointwise + +- func: lerp_.Tensor(Tensor(a!) self, Tensor end, Tensor weight) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + structured_delegate: lerp.Tensor_out + tags: pointwise + +- func: addbmm_(Tensor(a!) self, Tensor batch1, Tensor batch2, *, Scalar beta=1, Scalar alpha=1) -> Tensor(a!) + variants: method + dispatch: + CPU, CUDA, XPU: addbmm_ + MPS: addbmm_mps_ + +- func: addbmm.out(Tensor self, Tensor batch1, Tensor batch2, *, Scalar beta=1, Scalar alpha=1, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, CUDA, XPU: addbmm_out + MPS: addbmm_out_mps + +- func: addbmm(Tensor self, Tensor batch1, Tensor batch2, *, Scalar beta=1, Scalar alpha=1) -> Tensor + variants: method, function + dispatch: + CPU, CUDA, XPU: addbmm + MPS: addbmm_mps + +- func: random_.from(Tensor(a!) self, int from, int? to, *, Generator? generator=None) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + tags: nondeterministic_seeded + dispatch: + CPU, CUDA: random_ + Meta: random_meta_ + MPS: random_mps_ + autogen: random.from, random.from_out + +- func: random_.to(Tensor(a!) self, int to, *, Generator? generator=None) -> Tensor(a!) + device_check: NoCheck # TensorIterator + tags: nondeterministic_seeded + variants: method + dispatch: + CPU, CUDA: random_ + Meta: random_meta_ + MPS: random_mps_ + autogen: random.to, random.to_out + +- func: random_(Tensor(a!) self, *, Generator? generator=None) -> Tensor(a!) + device_check: NoCheck # TensorIterator + tags: nondeterministic_seeded + variants: method + dispatch: + CPU, CUDA: random_ + MPS: random_mps_ + Meta: random_meta_ + autogen: random, random.out + +- func: uniform_(Tensor(a!) self, float from=0, float to=1, *, Generator? generator=None) -> Tensor(a!) + device_check: NoCheck # TensorIterator + tags: nondeterministic_seeded + variants: method + dispatch: + CPU, CUDA: uniform_ + MPS: uniform_mps_ + Meta: uniform_meta_ + autogen: uniform, uniform.out + +- func: cauchy_(Tensor(a!) self, float median=0, float sigma=1, *, Generator? generator=None) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + tags: nondeterministic_seeded + dispatch: + CPU, CUDA: cauchy_ + MPS: cauchy_mps_ + autogen: cauchy, cauchy.out + +- func: log_normal_(Tensor(a!) self, float mean=1, float std=2, *, Generator? generator=None) -> Tensor(a!) + device_check: NoCheck # TensorIterator + tags: nondeterministic_seeded + variants: method + dispatch: + CPU, CUDA: log_normal_ + MPS: log_normal_mps_ + autogen: log_normal, log_normal.out + +- func: exponential_(Tensor(a!) self, float lambd=1, *, Generator? generator=None) -> Tensor(a!) + device_check: NoCheck # TensorIterator + tags: nondeterministic_seeded + variants: method + dispatch: + CPU, CUDA: exponential_ + MPS: exponential_mps_ + autogen: exponential, exponential.out + +- func: geometric_(Tensor(a!) self, float p, *, Generator? generator=None) -> Tensor(a!) + device_check: NoCheck # TensorIterator + tags: nondeterministic_seeded + variants: method + dispatch: + CPU, CUDA: geometric_ + MPS: geometric_mps_ + + # wrappers for TH functions + autogen: geometric, geometric.out + +- func: diag.out(Tensor self, int diagonal=0, *, Tensor(a!) out) -> Tensor(a!) + +- func: diag(Tensor self, int diagonal=0) -> Tensor + variants: method, function + +- func: cross.out(Tensor self, Tensor other, int? dim=None, *, Tensor(a!) out) -> Tensor(a!) + +- func: cross(Tensor self, Tensor other, int? dim=None) -> Tensor + variants: method, function + +- func: triu.out(Tensor self, SymInt diagonal=0, *, Tensor(a!) out) -> Tensor(a!) + structured: True + dispatch: + CPU: triu_cpu + CUDA: triu_cuda + MPS: triu_mps_out + +- func: triu(Tensor self, SymInt diagonal=0) -> Tensor + structured_delegate: triu.out + variants: method, function + +- func: tril.out(Tensor self, SymInt diagonal=0, *, Tensor(a!) out) -> Tensor(a!) + structured: True + dispatch: + CPU: tril_cpu + CUDA: tril_cuda + MPS: tril_mps_out + +- func: tril(Tensor self, SymInt diagonal=0) -> Tensor + structured_delegate: tril.out + variants: method, function + +- func: tril_indices(int row, int col, int offset=0, *, ScalarType? dtype=long, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CPU: tril_indices_cpu + CUDA: tril_indices_cuda + MPS: tril_indices_mps + autogen: tril_indices.out + +- func: triu_indices(int row, int col, int offset=0, *, ScalarType? dtype=long, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CPU: triu_indices_cpu + CUDA: triu_indices_cuda + MPS: triu_indices_mps + autogen: triu_indices.out + +- func: trace(Tensor self) -> Tensor + variants: method, function + dispatch: + CPU: trace_cpu + CUDA: trace_cuda + MPS: trace_mps + autogen: trace.out + +- func: trace_backward(Tensor grad, SymInt[] sizes) -> Tensor + variants: function + device_check: NoCheck + device_guard: False + dispatch: + CompositeImplicitAutograd: trace_backward_symint + +- func: ne.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA, MTIA: ne_Scalar_out + MPS: ne_scalar_out_mps + QuantizedCPU: ne_out_quantized_cpu + tags: pointwise + +- func: ne.Scalar(Tensor self, Scalar other) -> Tensor + structured_delegate: ne.Scalar_out + device_check: NoCheck # TensorIterator + variants: method, function + dispatch: + QuantizedCPU: ne_quantized_cpu + tags: [core, pointwise] + +- func: ne.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA, MTIA: ne_Tensor_out + MPS: ne_tensor_out_mps + QuantizedCPU: ne_out_quantized_cpu + tags: pointwise + +- func: ne.Tensor(Tensor self, Tensor other) -> Tensor + structured_delegate: ne.Tensor_out + device_check: NoCheck # TensorIterator + variants: method, function + dispatch: + QuantizedCPU: ne_quantized_cpu + tags: [core, pointwise] + +- func: ne_.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + structured_delegate: ne.Scalar_out + device_check: NoCheck # TensorIterator + variants: method + +- func: ne_.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + structured_delegate: ne.Tensor_out + device_check: NoCheck # TensorIterator + variants: method + +# not_equal, alias for torch.ne +- func: not_equal.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!) + +- func: not_equal.Scalar(Tensor self, Scalar other) -> Tensor + variants: method, function + +- func: not_equal.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + +- func: not_equal.Tensor(Tensor self, Tensor other) -> Tensor + variants: method, function + +- func: not_equal_.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + variants: method + +- func: not_equal_.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + variants: method + +- func: eq.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA, MTIA: eq_Scalar_out + MPS: eq_scalar_out_mps + QuantizedCPU: eq_out_quantized_cpu + tags: pointwise + +- func: eq.Scalar(Tensor self, Scalar other) -> Tensor + structured_delegate: eq.Scalar_out + device_check: NoCheck # TensorIterator + variants: method, function + dispatch: + QuantizedCPU: eq_quantized_cpu + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: eq_scalar_nested + tags: [core, pointwise] + +- func: eq.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA, MTIA: eq_Tensor_out + MPS: eq_tensor_out_mps + QuantizedCPU: eq_out_quantized_cpu + tags: pointwise + +- func: eq.Tensor(Tensor self, Tensor other) -> Tensor + structured_delegate: eq.Tensor_out + device_check: NoCheck # TensorIterator + variants: method, function + dispatch: + QuantizedCPU: eq_quantized_cpu + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: eq_tensor_nested + tags: [core, pointwise] + +- func: ge.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA, MTIA: ge_Scalar_out + MPS: ge_scalar_out_mps + QuantizedCPU: ge_out_quantized_cpu + tags: pointwise + +- func: ge.Scalar(Tensor self, Scalar other) -> Tensor + structured_delegate: ge.Scalar_out + device_check: NoCheck # TensorIterator + variants: method, function + dispatch: + QuantizedCPU: ge_quantized_cpu + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: ge_scalar_nested + tags: [core, pointwise] + +- func: ge.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA, MTIA: ge_Tensor_out + MPS: ge_tensor_out_mps + QuantizedCPU: ge_out_quantized_cpu + tags: pointwise + +- func: ge.Tensor(Tensor self, Tensor other) -> Tensor + structured_delegate: ge.Tensor_out + device_check: NoCheck # TensorIterator + variants: method, function + dispatch: + QuantizedCPU: ge_quantized_cpu + tags: [core, pointwise] + +- func: ge_.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + structured_delegate: ge.Scalar_out + device_check: NoCheck # TensorIterator + variants: method + +- func: ge_.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + structured_delegate: ge.Tensor_out + device_check: NoCheck # TensorIterator + variants: method + +# greater_equal, alias for torch.ge +- func: greater_equal.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!) + +- func: greater_equal.Scalar(Tensor self, Scalar other) -> Tensor + variants: method, function + +- func: greater_equal.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + +- func: greater_equal.Tensor(Tensor self, Tensor other) -> Tensor + variants: method, function + +- func: greater_equal_.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + variants: method + +- func: greater_equal_.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + variants: method + +- func: le.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA, MTIA: le_Scalar_out + MPS: le_scalar_out_mps + QuantizedCPU: le_out_quantized_cpu + tags: pointwise + +- func: le.Scalar(Tensor self, Scalar other) -> Tensor + structured_delegate: le.Scalar_out + device_check: NoCheck # TensorIterator + variants: method, function + dispatch: + QuantizedCPU: le_quantized_cpu + tags: [core, pointwise] + +- func: le.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA, MTIA: le_Tensor_out + MPS: le_tensor_out_mps + QuantizedCPU: le_out_quantized_cpu + tags: pointwise + +- func: le.Tensor(Tensor self, Tensor other) -> Tensor + structured_delegate: le.Tensor_out + device_check: NoCheck # TensorIterator + variants: method, function + dispatch: + QuantizedCPU: le_quantized_cpu + tags: [core, pointwise] + +- func: le_.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + structured_delegate: le.Scalar_out + device_check: NoCheck # TensorIterator + variants: method + +- func: le_.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + structured_delegate: le.Tensor_out + device_check: NoCheck # TensorIterator + variants: method + +# less_equal, alias for torch.le +- func: less_equal.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!) + +- func: less_equal.Scalar(Tensor self, Scalar other) -> Tensor + variants: method, function + +- func: less_equal.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + +- func: less_equal.Tensor(Tensor self, Tensor other) -> Tensor + variants: method, function + +- func: less_equal_.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + variants: method + +- func: less_equal_.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + variants: method + +- func: gt.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA,MTIA: gt_Scalar_out + MPS: gt_scalar_out_mps + QuantizedCPU: gt_out_quantized_cpu + tags: pointwise + +- func: gt.Scalar(Tensor self, Scalar other) -> Tensor + structured_delegate: gt.Scalar_out + device_check: NoCheck # TensorIterator + variants: method, function + dispatch: + QuantizedCPU: gt_quantized_cpu + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: gt_scalar_nested + tags: [core, pointwise] + +- func: gt.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA, MTIA: gt_Tensor_out + MPS: gt_tensor_out_mps + QuantizedCPU: gt_out_quantized_cpu + tags: pointwise + +- func: gt.Tensor(Tensor self, Tensor other) -> Tensor + structured_delegate: gt.Tensor_out + device_check: NoCheck # TensorIterator + variants: method, function + dispatch: + QuantizedCPU: gt_quantized_cpu + tags: [core, pointwise] + +- func: gt_.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + structured_delegate: gt.Scalar_out + device_check: NoCheck # TensorIterator + variants: method + +- func: gt_.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + structured_delegate: gt.Tensor_out + device_check: NoCheck # TensorIterator + variants: method + +# greater, alias for torch.gt +- func: greater.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!) + +- func: greater.Scalar(Tensor self, Scalar other) -> Tensor + variants: method, function + +- func: greater.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + +- func: greater.Tensor(Tensor self, Tensor other) -> Tensor + variants: method, function + +- func: greater_.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + variants: method + +- func: greater_.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + variants: method + +- func: lt.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA, MTIA: lt_Scalar_out + MPS: lt_scalar_out_mps + QuantizedCPU: lt_out_quantized_cpu + tags: pointwise + +- func: lt.Scalar(Tensor self, Scalar other) -> Tensor + structured_delegate: lt.Scalar_out + device_check: NoCheck # TensorIterator + variants: method, function + dispatch: + QuantizedCPU: lt_quantized_cpu + tags: [core, pointwise] + +- func: lt.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA, MTIA: lt_Tensor_out + MPS: lt_tensor_out_mps + QuantizedCPU: lt_out_quantized_cpu + tags: pointwise + +- func: lt.Tensor(Tensor self, Tensor other) -> Tensor + structured_delegate: lt.Tensor_out + device_check: NoCheck # TensorIterator + variants: method, function + dispatch: + QuantizedCPU: lt_quantized_cpu + tags: [core, pointwise] + +- func: lt_.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + structured_delegate: lt.Scalar_out + device_check: NoCheck # TensorIterator + variants: method + +- func: lt_.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + structured_delegate: lt.Tensor_out + device_check: NoCheck # TensorIterator + variants: method + +# less, alias for torch.lt +- func: less.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!) + +- func: less.Scalar(Tensor self, Scalar other) -> Tensor + variants: method, function + +- func: less.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + +- func: less.Tensor(Tensor self, Tensor other) -> Tensor + variants: method, function + +- func: less_.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + variants: method + +- func: less_.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + variants: method + +- func: take.out(Tensor self, Tensor index, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, CUDA: take_out + +- func: take(Tensor self, Tensor index) -> Tensor + variants: method, function + dispatch: + CPU, CUDA: take + +- func: take_along_dim.out(Tensor self, Tensor indices, int? dim=None, *, Tensor(a!) out) -> Tensor(a!) + +- func: take_along_dim(Tensor self, Tensor indices, int? dim=None) -> Tensor + variants: method, function + +- func: index_select.out(Tensor self, int dim, Tensor index, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, QuantizedCPU: index_select_out_cpu_ + CUDA, QuantizedCUDA: index_select_out_cuda + MPS: index_select_out_mps + +- func: index_select(Tensor self, int dim, Tensor index) -> Tensor + variants: method, function + dispatch: + CPU: index_select_cpu_ + QuantizedCPU: index_select_quantized_cpu_ + CUDA: index_select_cuda + QuantizedCUDA: index_select_quantized_cuda + SparseCPU: index_select_sparse_cpu + SparseCUDA: index_select_sparse_cuda + SparseMPS: index_select_sparse_mps + MPS: index_select_mps + tags: core + +- func: index_select.dimname_out(Tensor self, Dimname dim, Tensor index, *, Tensor(a!) out) -> Tensor(a!) + +- func: index_select.dimname(Tensor self, Dimname dim, Tensor index) -> Tensor + variants: method, function + +- func: index_select_backward(Tensor grad, SymInt[] self_sizes, int dim, Tensor index) -> Tensor + variants: function + device_check: NoCheck + device_guard: False + dispatch: + CompositeImplicitAutograd: index_select_backward_symint + +- func: masked_select.out(Tensor self, Tensor mask, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU: masked_select_out_cpu + CUDA: masked_select_out_cuda + MPS: masked_select_out_mps + tags: dynamic_output_shape + +- func: masked_select(Tensor self, Tensor mask) -> Tensor + variants: method, function + dispatch: + CPU: masked_select_cpu + CUDA: masked_select_cuda + MPS: masked_select_mps + tags: dynamic_output_shape + +- func: masked_select_backward(Tensor grad, Tensor input, Tensor mask) -> Tensor + variants: function + device_check: NoCheck + device_guard: False + +- func: nonzero.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU: nonzero_out_cpu + CUDA: nonzero_out_cuda + MPS: nonzero_out_mps + tags: dynamic_output_shape + +- func: nonzero(Tensor self) -> Tensor + variants: method, function + dispatch: + CPU: nonzero_cpu + CUDA: nonzero_cuda + MPS: nonzero_mps + tags: [dynamic_output_shape, core] + +- func: nonzero_static.out(Tensor self, *, SymInt size, int fill_value=-1, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU: nonzero_static_out_cpu + CUDA: nonzero_static_out_cuda + MPS: nonzero_static_out_mps + +- func: nonzero_static(Tensor self, *, SymInt size, int fill_value=-1) -> Tensor + variants: method, function + dispatch: + CPU: nonzero_static_cpu + CUDA: nonzero_static_cuda + MPS: nonzero_static_mps + +- func: nonzero_numpy(Tensor self) -> Tensor[] + variants: method, function + +- func: argwhere(Tensor self) -> Tensor + variants: method, function + tags: dynamic_output_shape + +- func: gather.out(Tensor self, int dim, Tensor index, *, bool sparse_grad=False, Tensor(a!) out) -> Tensor(a!) + structured: True + dispatch: + CPU, CUDA: gather_out + MPS: gather_out_mps + +- func: gather(Tensor self, int dim, Tensor index, *, bool sparse_grad=False) -> Tensor + variants: method, function + structured_delegate: gather.out + tags: core + +- func: gather_backward(Tensor grad, Tensor self, int dim, Tensor index, bool sparse_grad) -> Tensor + variants: function + device_check: NoCheck + device_guard: False + +- func: gather.dimname_out(Tensor self, Dimname dim, Tensor index, *, bool sparse_grad=False, Tensor(a!) out) -> Tensor(a!) + +- func: gather.dimname(Tensor self, Dimname dim, Tensor index, *, bool sparse_grad=False) -> Tensor + variants: method, function + +- func: _gather_sparse_backward(Tensor self, int dim, Tensor index, Tensor grad) -> Tensor + +- func: addcmul.out(Tensor self, Tensor tensor1, Tensor tensor2, *, Scalar value=1, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA, MTIA: addcmul_out + MPS: addcmul_out_mps + tags: pointwise + +- func: addcmul(Tensor self, Tensor tensor1, Tensor tensor2, *, Scalar value=1) -> Tensor + structured_delegate: addcmul.out + device_check: NoCheck # TensorIterator + variants: method, function + tags: pointwise + +- func: addcmul_(Tensor(a!) self, Tensor tensor1, Tensor tensor2, *, Scalar value=1) -> Tensor(a!) + structured_delegate: addcmul.out + device_check: NoCheck # TensorIterator + variants: method + tags: pointwise + +- func: addcdiv.out(Tensor self, Tensor tensor1, Tensor tensor2, *, Scalar value=1, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA, MTIA: addcdiv_out + MPS: addcdiv_out_mps + tags: pointwise + +- func: addcdiv(Tensor self, Tensor tensor1, Tensor tensor2, *, Scalar value=1) -> Tensor + structured_delegate: addcdiv.out + device_check: NoCheck # TensorIterator + variants: method, function + tags: pointwise + +- func: addcdiv_(Tensor(a!) self, Tensor tensor1, Tensor tensor2, *, Scalar value=1) -> Tensor(a!) + structured_delegate: addcdiv.out + device_check: NoCheck # TensorIterator + variants: method + tags: pointwise + +- func: cross_entropy_loss(Tensor self, Tensor target, Tensor? weight=None, int reduction=Mean, SymInt ignore_index=-100, float label_smoothing=0.0) -> Tensor + python_module: nn + dispatch: + CompositeImplicitAutograd: cross_entropy_loss_symint + +- func: triangular_solve.X(Tensor self, Tensor A, bool upper=True, bool transpose=False, bool unitriangular=False, *, Tensor(a!) X, Tensor(b!) M) -> (Tensor(a!) solution, Tensor(b!) cloned_coefficient) + structured: True + dispatch: + CPU, CUDA: triangular_solve_out + MPS: triangular_solve_mps_out + SparseCsrCPU: triangular_solve_out_sparse_csr_cpu + SparseCsrCUDA: triangular_solve_out_sparse_csr_cuda + +- func: triangular_solve(Tensor self, Tensor A, bool upper=True, bool transpose=False, bool unitriangular=False) -> (Tensor solution, Tensor cloned_coefficient) + structured_delegate: triangular_solve.X + variants: method, function + +- func: _linalg_check_errors(Tensor info, str api_name, *, bool is_matrix) -> () + dispatch: + CompositeExplicitAutograd: _linalg_check_errors + +- func: linalg_solve_triangular.out(Tensor self, Tensor B, *, bool upper, bool left=True, bool unitriangular=False, Tensor(a!) out) -> Tensor(a!) + python_module: linalg + dispatch: + CPU, CUDA: linalg_solve_triangular_out + MPS: linalg_solve_triangular_mps_out + +- func: linalg_solve_triangular(Tensor self, Tensor B, *, bool upper, bool left=True, bool unitriangular=False) -> Tensor + python_module: linalg + variants: function + dispatch: + CPU, CUDA: linalg_solve_triangular + MPS: linalg_solve_triangular_mps + +- func: linalg_vander(Tensor x, *, SymInt? N=None) -> Tensor + python_module: linalg + dispatch: + CompositeImplicitAutograd: linalg_vander_symint + +- func: svd.U(Tensor self, bool some=True, bool compute_uv=True, *, Tensor(a!) U, Tensor(b!) S, Tensor(c!) V) -> (Tensor(a!) U, Tensor(b!) S, Tensor(c!) V) + +- func: svd(Tensor self, bool some=True, bool compute_uv=True) -> (Tensor U, Tensor S, Tensor V) + variants: method, function + +# swapaxes, alias for transpose +- func: swapaxes(Tensor(a) self, int axis0, int axis1) -> Tensor(a) + variants: function, method + device_check: NoCheck + device_guard: False + +- func: swapaxes_(Tensor(a!) self, int axis0, int axis1) -> Tensor(a!) + variants: method + device_check: NoCheck + device_guard: False + tags: inplace_view + +# swapdims, alias for transpose +- func: swapdims(Tensor(a) self, int dim0, int dim1) -> Tensor(a) + variants: function, method + device_check: NoCheck + device_guard: False + +- func: swapdims_(Tensor(a!) self, int dim0, int dim1) -> Tensor(a!) + variants: method + device_check: NoCheck + device_guard: False + tags: inplace_view + +- func: cholesky.out(Tensor self, bool upper=False, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, CUDA, MPS: cholesky_out + +- func: cholesky(Tensor self, bool upper=False) -> Tensor + variants: method, function + dispatch: + CPU, CUDA, MPS: cholesky + +- func: cholesky_solve.out(Tensor self, Tensor input2, bool upper=False, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: cholesky_solve_out + +- func: cholesky_solve(Tensor self, Tensor input2, bool upper=False) -> Tensor + variants: method, function + dispatch: + CompositeExplicitAutograd: cholesky_solve + +- func: _cholesky_solve_helper(Tensor self, Tensor A, bool upper) -> Tensor + variants: function + dispatch: + CPU: _cholesky_solve_helper_cpu + CUDA: _cholesky_solve_helper_cuda + MPS: _cholesky_solve_helper_mps + autogen: _cholesky_solve_helper.out + +- func: cholesky_inverse(Tensor self, bool upper=False) -> Tensor + variants: method, function + dispatch: + CPU, CUDA, MPS: cholesky_inverse + +- func: cholesky_inverse.out(Tensor self, bool upper=False, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, CUDA, MPS: cholesky_inverse_out + +- func: qr.Q(Tensor self, bool some=True, *, Tensor(a!) Q, Tensor(b!) R) -> (Tensor(a!) Q, Tensor(b!) R) + +- func: qr(Tensor self, bool some=True) -> (Tensor Q, Tensor R) + variants: method, function + +- func: geqrf.a(Tensor self, *, Tensor(a!) a, Tensor(b!) tau) -> (Tensor(a!) a, Tensor(b!) tau) + dispatch: + CPU, CUDA: geqrf_out + +- func: geqrf(Tensor self) -> (Tensor a, Tensor tau) + variants: method, function + dispatch: + CPU, CUDA: geqrf + +# orgqr, alias for linalg_householder_product +- func: orgqr(Tensor self, Tensor input2) -> Tensor + variants: method, function + +- func: orgqr.out(Tensor self, Tensor input2, *, Tensor(a!) out) -> Tensor(a!) + +- func: ormqr.out(Tensor self, Tensor input2, Tensor input3, bool left=True, bool transpose=False, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, CUDA: ormqr_out + +- func: ormqr(Tensor self, Tensor input2, Tensor input3, bool left=True, bool transpose=False) -> Tensor + variants: method, function + dispatch: + CPU, CUDA: ormqr + +- func: _lu_with_info(Tensor self, bool pivot=True, bool check_errors=True) -> (Tensor LU, Tensor pivots, Tensor info) + variants: function + +- func: lu_solve.out(Tensor self, Tensor LU_data, Tensor LU_pivots, *, Tensor(a!) out) -> Tensor(a!) + +- func: lu_solve(Tensor self, Tensor LU_data, Tensor LU_pivots) -> Tensor + variants: method, function + +# lu_unpack +- func: lu_unpack(Tensor LU_data, Tensor LU_pivots, bool unpack_data=True, bool unpack_pivots=True) -> (Tensor P, Tensor L, Tensor U) + structured_delegate: lu_unpack.out + variants: function + +- func: lu_unpack.out(Tensor LU_data, Tensor LU_pivots, bool unpack_data=True, bool unpack_pivots=True, *, Tensor(a!) P, Tensor(b!) L, Tensor(c!) U) -> (Tensor(a!) P, Tensor(b!) L, Tensor(c!) U) + variants: function + structured: True + dispatch: + CPU, CUDA, MPS: lu_unpack_out + +# TODO: remove dispatch section when porting TH CUDA to ATen +- func: multinomial.out(Tensor self, SymInt num_samples, bool replacement=False, *, Generator? generator=None, Tensor(a!) out) -> Tensor(a!) + tags: nondeterministic_seeded + dispatch: + CPU, CUDA: multinomial_out + MPS: multinomial_out_mps + +- func: multinomial(Tensor self, SymInt num_samples, bool replacement=False, *, Generator? generator=None) -> Tensor + variants: method, function + dispatch: + CPU, CUDA: multinomial + MPS: multinomial_mps + tags: nondeterministic_seeded + +- func: lgamma.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: lgamma_out + tags: pointwise + +- func: lgamma_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: lgamma.out + variants: method + tags: pointwise + +- func: lgamma(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: lgamma.out + variants: method, function + tags: pointwise + +- func: digamma.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: digamma_out + tags: pointwise + +- func: digamma(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: digamma.out + variants: method, function + tags: pointwise + +- func: polygamma.out(int n, Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: polygamma_out + tags: pointwise + +- func: polygamma(int n, Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: polygamma.out + variants: method, function + tags: pointwise + +- func: polygamma_(Tensor(a!) self, int n) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + dispatch: + CompositeExplicitAutograd: polygamma_ + tags: pointwise + +- func: erfinv(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: erfinv.out + variants: method, function + dispatch: + SparseCPU, SparseCUDA, SparseMPS: erfinv_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: erfinv_sparse_csr + tags: pointwise + +- func: erfinv_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: erfinv.out + variants: method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: erfinv_sparse_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: erfinv_sparse_csr_ + tags: pointwise + +- func: erfinv.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: erfinv_out + SparseCPU, SparseCUDA, SparseMPS: erfinv_sparse_out + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: erfinv_sparse_csr_out + tags: pointwise + +- func: i0(Tensor self) -> Tensor + structured_delegate: i0.out + variants: function, method + tags: pointwise + +- func: i0_(Tensor(a!) self) -> Tensor(a!) + structured_delegate: i0.out + variants: function, method + tags: pointwise + +- func: i0.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: i0_out + tags: pointwise + +- func: sign(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: sign.out + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: sign_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: sign_sparse_csr + tags: [core, pointwise] + +- func: sign_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: sign.out + variants: method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: sign_sparse_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: sign_sparse_csr_ + tags: pointwise + +- func: sign.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA: sign_out + MPS: sign_out_mps + SparseCPU, SparseCUDA, SparseMPS: sign_sparse_out + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: sign_sparse_csr_out + tags: pointwise + +- func: signbit(Tensor self) -> Tensor + variants: function, method + structured_delegate: signbit.out + dispatch: + SparseCPU, SparseCUDA, SparseMPS: signbit_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: signbit_sparse_csr + tags: pointwise + +- func: signbit.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU: signbit_out + CUDA: signbit_out + MPS: signbit_out_mps + SparseCPU, SparseCUDA, SparseMPS: signbit_sparse_out + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: signbit_sparse_csr_out + tags: pointwise + +- func: dist(Tensor self, Tensor other, Scalar p=2) -> Tensor + device_check: NoCheck # TensorIterator + variants: method, function + dispatch: + CompositeExplicitAutograd: dist + autogen: dist.out + +- func: atan2.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: atan2_out + tags: [core, pointwise] + +- func: atan2_(Tensor(a!) self, Tensor other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: atan2.out + variants: method + tags: pointwise + +- func: atan2(Tensor self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: atan2.out + variants: method, function + tags: [core, pointwise] +# arctan2, alias of atan2 + +- func: arctan2(Tensor self, Tensor other) -> Tensor + variants: method, function + +- func: arctan2.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + +- func: arctan2_(Tensor(a!) self, Tensor other) -> Tensor(a!) + variants: method + +- func: lerp.Scalar_out(Tensor self, Tensor end, Scalar weight, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: lerp_Scalar + tags: pointwise + +- func: lerp.Tensor_out(Tensor self, Tensor end, Tensor weight, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: lerp_Tensor + tags: pointwise + +- func: lerp.Scalar(Tensor self, Tensor end, Scalar weight) -> Tensor + device_check: NoCheck # TensorIterator + variants: method, function + structured_delegate: lerp.Scalar_out + tags: pointwise + +- func: lerp.Tensor(Tensor self, Tensor end, Tensor weight) -> Tensor + device_check: NoCheck # TensorIterator + variants: method, function + structured_delegate: lerp.Tensor_out + tags: pointwise + +- func: histc.out(Tensor self, int bins=100, Scalar min=0, Scalar max=0, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, MPS: histogram_histc_out + CUDA: _histc_out_cuda + +- func: histc(Tensor self, int bins=100, Scalar min=0, Scalar max=0) -> Tensor + variants: method, function + dispatch: + CPU, MPS: histogram_histc + CUDA: _histc_cuda + +- func: histogram.bins_tensor_out(Tensor self, Tensor bins, *, Tensor? weight=None, bool density=False, Tensor(a!) hist, Tensor(b!) bin_edges) -> (Tensor(a!) hist, Tensor(b!) bin_edges) + dispatch: + CPU, MPS: histogram_out + +- func: histogram.bins_tensor(Tensor self, Tensor bins, *, Tensor? weight=None, bool density=False) -> (Tensor hist, Tensor bin_edges) + variants: method, function + dispatch: + CPU, MPS: histogram + +- func: histogram.bin_ct_out(Tensor self, int bins=100, *, float[]? range=None, Tensor? weight=None, bool density=False, Tensor(a!) hist, Tensor(b!) bin_edges) -> (Tensor(a!) hist, Tensor(b!) bin_edges) + dispatch: + CPU, MPS: histogram_out + +- func: histogram.bin_ct(Tensor self, int bins=100, *, float[]? range=None, Tensor? weight=None, bool density=False) -> (Tensor hist, Tensor bin_edges) + variants: method, function + dispatch: + CPU, MPS: histogram + +- func: _histogramdd_bin_edges(Tensor self, int[] bins, *, float[]? range=None, Tensor? weight=None, bool density=False) -> Tensor[] + dispatch: + CPU, MPS: histogramdd_bin_edges + autogen: _histogramdd_bin_edges.out + +- func: _histogramdd_from_bin_cts(Tensor self, int[] bins, *, float[]? range=None, Tensor? weight=None, bool density=False) -> Tensor + dispatch: + CPU, MPS: _histogramdd + autogen: _histogramdd_from_bin_cts.out + +- func: _histogramdd_from_bin_tensors(Tensor self, Tensor[] bins, *, Tensor? weight=None, bool density=False) -> Tensor + dispatch: + CPU, MPS: _histogramdd + autogen: _histogramdd_from_bin_tensors.out + +- func: histogramdd(Tensor self, int[] bins, float[]? range=None, Tensor? weight=None, bool density=False) -> (Tensor hist, Tensor[] bin_edges) + +- func: histogramdd.int_bins(Tensor self, int bins, float[]? range=None, Tensor? weight=None, bool density=False) -> (Tensor hist, Tensor[] bin_edges) + +- func: histogramdd.TensorList_bins(Tensor self, Tensor[] bins, float[]? range=None, Tensor? weight=None, bool density=False) -> (Tensor hist, Tensor[] bin_edges) + +- func: fmod.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + dispatch: + CompositeExplicitAutograd: fmod_out + tags: pointwise + +- func: fmod.Scalar(Tensor self, Scalar other) -> Tensor + device_check: NoCheck # TensorIterator + variants: method, function + dispatch: + CompositeExplicitAutograd: fmod + tags: [core, pointwise] + +- func: fmod_.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + dispatch: + CompositeExplicitAutograd: fmod_ + tags: pointwise + +- func: fmod.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS, MTIA: fmod_out + tags: pointwise + +- func: fmod.Tensor(Tensor self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: fmod.Tensor_out + variants: method, function + tags: [core, pointwise] + +- func: fmod_.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + structured_delegate: fmod.Tensor_out + tags: pointwise + +- func: hypot.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: hypot_out + tags: pointwise + +- func: hypot(Tensor self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: hypot.out + variants: method, function + tags: pointwise + +- func: hypot_(Tensor(a!) self, Tensor other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: hypot.out + variants: method + tags: pointwise + +- func: igamma.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: igamma_out + tags: pointwise + +- func: igamma(Tensor self, Tensor other) -> Tensor + structured_delegate: igamma.out + variants: method, function + tags: pointwise + +- func: igamma_(Tensor(a!) self, Tensor other) -> Tensor(a!) + structured_delegate: igamma.out + variants: method + tags: pointwise + +- func: igammac.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: igammac_out + tags: pointwise + +- func: igammac(Tensor self, Tensor other) -> Tensor + structured_delegate: igammac.out + variants: method, function + tags: pointwise + +- func: igammac_(Tensor(a!) self, Tensor other) -> Tensor(a!) + structured_delegate: igammac.out + variants: method + tags: pointwise + +- func: nextafter.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: nextafter_out + tags: pointwise + +- func: nextafter(Tensor self, Tensor other) -> Tensor + structured_delegate: nextafter.out + variants: method, function + tags: pointwise + +- func: nextafter_(Tensor(a!) self, Tensor other) -> Tensor(a!) + structured_delegate: nextafter.out + variants: method + tags: pointwise + +- func: remainder.Scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: remainder_out + tags: pointwise + +- func: remainder.Scalar(Tensor self, Scalar other) -> Tensor + variants: method, function + dispatch: + CompositeExplicitAutograd: remainder + tags: [core, pointwise] + +- func: remainder_.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + variants: method + dispatch: + CompositeExplicitAutograd: remainder_ + tags: pointwise + +- func: remainder.Tensor_out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS, MTIA: remainder_out + tags: pointwise + +- func: remainder.Tensor(Tensor self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: remainder.Tensor_out + variants: method, function + tags: [core, pointwise] + +- func: remainder_.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: remainder.Tensor_out + variants: method + tags: pointwise + +- func: remainder.Scalar_Tensor(Scalar self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + variants: function + dispatch: + CPU, CUDA, MPS: remainder + autogen: remainder.Scalar_Tensor_out + tags: pointwise + +- func: min(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + variants: method, function + dispatch: + CPU, CUDA: min + MPS: min_mps + QuantizedCPU: min_quantized_cpu + tags: [reduction] + +- func: min.unary_out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA: min_unary_out + QuantizedCPU: min_quantized_unary_out + tags: [reduction] + +- func: fmin(Tensor self, Tensor other) -> Tensor + structured_delegate: fmin.out + device_check: NoCheck # TensorIterator + variants: method, function + tags: pointwise + +- func: fmin.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA, MPS: fmin_out + tags: pointwise + +- func: max(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + variants: method, function + dispatch: + CPU, CUDA: max + MPS: max_mps + QuantizedCPU: max_quantized_cpu + tags: [reduction] + +- func: fmax(Tensor self, Tensor other) -> Tensor + structured_delegate: fmax.out + device_check: NoCheck # TensorIterator + variants: method, function + tags: pointwise + +- func: fmax.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA, MPS: fmax_out + tags: pointwise + +- func: maximum(Tensor self, Tensor other) -> Tensor + structured_delegate: maximum.out + device_check: NoCheck # TensorIterator + variants: method, function + tags: [core, pointwise] + +- func: maximum.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA, MTIA, MPS: maximum_out + tags: pointwise + +# binary max, alias of maximum +# NOTE: max is not an alias for maximum, since there is also unary max +- func: max.other(Tensor self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + variants: method, function + tags: pointwise + +- func: max.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + tags: pointwise + +- func: max.unary_out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA: max_unary_out + QuantizedCPU: max_quantized_unary_out + tags: [reduction] + +- func: minimum(Tensor self, Tensor other) -> Tensor + structured_delegate: minimum.out + device_check: NoCheck # TensorIterator + variants: method, function + tags: [core, pointwise] + +- func: minimum.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + device_check: NoCheck # TensorIterator + dispatch: + CPU, CUDA, MTIA, MPS: minimum_out + tags: pointwise + +# binary min, alias for minimum +# NOTE: min is not an alias for minimum, since there is also unary min +- func: min.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + tags: pointwise + +- func: min.other(Tensor self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + variants: method, function + tags: pointwise + +- func: quantile(Tensor self, Tensor q, int? dim=None, bool keepdim=False, *, str interpolation='linear') -> Tensor + variants: method, function + +- func: quantile.out(Tensor self, Tensor q, int? dim=None, bool keepdim=False, *, str interpolation='linear', Tensor(a!) out) -> Tensor(a!) + +- func: quantile.scalar(Tensor self, float q, int? dim=None, bool keepdim=False, *, str interpolation='linear') -> Tensor + variants: method, function + +- func: quantile.scalar_out(Tensor self, float q, int? dim=None, bool keepdim=False, *, str interpolation='linear', Tensor(a!) out) -> Tensor(a!) + +- func: nanquantile(Tensor self, Tensor q, int? dim=None, bool keepdim=False, *, str interpolation='linear') -> Tensor + variants: method, function + +- func: nanquantile.out(Tensor self, Tensor q, int? dim=None, bool keepdim=False, *, str interpolation='linear', Tensor(a!) out) -> Tensor(a!) + +- func: nanquantile.scalar(Tensor self, float q, int? dim=None, bool keepdim=False, *, str interpolation='linear') -> Tensor + variants: method, function + +- func: nanquantile.scalar_out(Tensor self, float q, int? dim=None, bool keepdim=False, *, str interpolation='linear', Tensor(a!) out) -> Tensor(a!) + +- func: sort.values(Tensor self, int dim=-1, bool descending=False, *, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices) + device_check: NoCheck # TensorIterator + dispatch: + CompositeExplicitAutograd: sort_out + +- func: sort.values_stable(Tensor self, *, bool? stable, int dim=-1, bool descending=False, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices) + structured: True + dispatch: + CPU, CUDA: sort_stable_out + MPS: sort_stable_out_mps + +- func: sort(Tensor self, int dim=-1, bool descending=False) -> (Tensor values, Tensor indices) + device_check: NoCheck # TensorIterator + variants: method, function + dispatch: + CompositeExplicitAutograd: sort + tags: core + +- func: sort.stable(Tensor self, *, bool? stable, int dim=-1, bool descending=False) -> (Tensor values, Tensor indices) + structured_delegate: sort.values_stable + variants: method, function + dispatch: + QuantizedCPU: sort_quantized_cpu_stable + +- func: sort.dimname_values(Tensor self, Dimname dim, bool descending=False, *, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices) + +- func: sort.dimname_values_stable(Tensor self, *, bool? stable, Dimname dim, bool descending=False, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices) + +- func: sort.dimname(Tensor self, Dimname dim, bool descending=False) -> (Tensor values, Tensor indices) + variants: method, function + +- func: sort.dimname_stable(Tensor self, *, bool? stable, Dimname dim, bool descending=False) -> (Tensor values, Tensor indices) + variants: method, function + +- func: msort.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + +- func: msort(Tensor self) -> Tensor + variants: method, function + +- func: argsort(Tensor self, int dim=-1, bool descending=False) -> Tensor + device_check: NoCheck # TensorIterator + variants: method, function + +- func: argsort.stable(Tensor self, *, bool stable, int dim=-1, bool descending=False) -> Tensor + device_check: NoCheck # TensorIterator + variants: method, function + +- func: argsort.stable_out(Tensor self, *, bool stable, int dim=-1, bool descending=False, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: function + +- func: argsort.dimname(Tensor self, Dimname dim, bool descending=False) -> Tensor + variants: method, function + +- func: topk.values(Tensor self, SymInt k, int dim=-1, bool largest=True, bool sorted=True, *, Tensor(a!) values, Tensor(b!) indices) -> (Tensor(a!) values, Tensor(b!) indices) + structured: True + dispatch: + CPU: topk_out_cpu + CUDA: topk_out_cuda + MPS: topk_out_mps + +- func: topk(Tensor self, SymInt k, int dim=-1, bool largest=True, bool sorted=True) -> (Tensor values, Tensor indices) + variants: method, function + structured_delegate: topk.values + dispatch: + QuantizedCPU: topk_quantized_cpu + tags: core + +- func: all(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: all.all_out + variants: method, function + tags: reduction + +- func: all.all_out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck + structured: True + dispatch: + CPU, CUDA: all_all_out + MTIA: all_all_out_mtia + MPS: all_all_out_mps + tags: reduction + +- func: any(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: any.all_out + variants: method, function + dispatch: + SparseCPU, SparseCUDA, SparseMPS: any_sparse + tags: [core, reduction] + +- func: any.all_out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck + structured: True + dispatch: + CPU, CUDA: any_all_out + MPS: any_all_out_mps + tags: reduction + +- func: renorm.out(Tensor self, Scalar p, int dim, Scalar maxnorm, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + dispatch: + CPU, CUDA: renorm_out + MPS: renorm_out_mps + +- func: renorm(Tensor self, Scalar p, int dim, Scalar maxnorm) -> Tensor + device_check: NoCheck # TensorIterator + variants: method, function + structured_delegate: renorm.out + +- func: renorm_(Tensor(a!) self, Scalar p, int dim, Scalar maxnorm) -> Tensor(a!) + device_check: NoCheck # TensorIterator + variants: method + structured_delegate: renorm.out + +- func: unfold(Tensor(a) self, int dimension, int size, int step) -> Tensor(a) + variants: method + device_check: NoCheck + device_guard: False + dispatch: + CPU, CUDA, Meta, MPS, MTIA: unfold + QuantizedCPU, QuantizedCUDA: unfold + +- func: unfold_backward(Tensor grad_in, SymInt[] input_sizes, int dim, int size, int step) -> Tensor + variants: function + dispatch: + CPU, CUDA, MPS: unfold_backward + autogen: unfold_backward.out + +- func: equal(Tensor self, Tensor other) -> bool + tags: [data_dependent_output, pointwise] + variants: method, function + dispatch: + CPU: cpu_equal + CUDA: cuda_equal + MPS: mps_equal + QuantizedCPU: equal_quantized_cpu + +- func: pow.Tensor_Tensor_out(Tensor self, Tensor exponent, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA: pow_Tensor_Tensor_out + MPS: pow_tensor_tensor_out_mps + tags: pointwise + +- func: pow.Tensor_Tensor(Tensor self, Tensor exponent) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: pow.Tensor_Tensor_out + variants: method, function + tags: [core, pointwise] + +- func: pow.Scalar_out(Scalar self, Tensor exponent, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + dispatch: + CPU, CUDA: pow_Scalar_out + MPS: pow_Scalar_out_mps + tags: pointwise + +- func: pow.Scalar(Scalar self, Tensor exponent) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: pow.Scalar_out + tags: [core, pointwise] + +- func: pow.Tensor_Scalar_out(Tensor self, Scalar exponent, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: pow_Tensor_Scalar_out + SparseCPU, SparseCUDA, SparseMPS: pow_out_sparse_scalar + tags: pointwise + +- func: pow.Tensor_Scalar(Tensor self, Scalar exponent) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: pow.Tensor_Scalar_out + variants: function, method + dispatch: + SparseCPU, SparseCUDA, SparseMPS: pow_sparse_scalar + tags: [core, pointwise] + +- func: pow_.Scalar(Tensor(a!) self, Scalar exponent) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: pow.Tensor_Scalar_out + variants: method + tags: pointwise + +- func: pow_.Tensor(Tensor(a!) self, Tensor exponent) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured_delegate: pow.Tensor_Tensor_out + variants: method + tags: pointwise + +- func: float_power.Tensor_Tensor_out(Tensor self, Tensor exponent, *, Tensor(a!) out) -> Tensor(a!) + tags: pointwise + +- func: float_power.Tensor_Tensor(Tensor self, Tensor exponent) -> Tensor + variants: function, method + tags: pointwise + +- func: float_power.Scalar_out(Scalar self, Tensor exponent, *, Tensor(a!) out) -> Tensor(a!) + tags: pointwise + +- func: float_power.Scalar(Scalar self, Tensor exponent) -> Tensor + tags: pointwise + +- func: float_power.Tensor_Scalar_out(Tensor self, Scalar exponent, *, Tensor(a!) out) -> Tensor(a!) + tags: pointwise + +- func: float_power.Tensor_Scalar(Tensor self, Scalar exponent) -> Tensor + variants: function, method + tags: pointwise + +- func: float_power_.Scalar(Tensor(a!) self, Scalar exponent) -> Tensor(a!) + variants: method + tags: pointwise + +- func: float_power_.Tensor(Tensor(a!) self, Tensor exponent) -> Tensor(a!) + variants: method + tags: pointwise + +- func: normal_(Tensor(a!) self, float mean=0, float std=1, *, Generator? generator=None) -> Tensor(a!) + device_check: NoCheck # TensorIterator + tags: nondeterministic_seeded + variants: method + dispatch: + CPU, CUDA: normal_ + MPS: normal_mps_ + Meta: normal_meta_ + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: normal_sparse_csr_ + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: normal_nested_ + autogen: normal.out + +# Only used by the functionalization pass. +# Normally, the codegen would be able to generate a normal() NativeFunction, +# but we can't due to overload ambiguity with normal.Tensor_float. +- func: normal_functional(Tensor self, float mean=0, float std=1, *, Generator? generator=None) -> Tensor + device_check: NoCheck # TensorIterator + tags: nondeterministic_seeded + dispatch: + CompositeExplicitAutograd: normal_functional + +- func: normal.Tensor_float_out(Tensor mean, float std=1, *, Generator? generator=None, Tensor(a!) out) -> Tensor(a!) + tags: nondeterministic_seeded + dispatch: + CPU, CUDA: normal_out + MPS: normal_mps_out + Meta: normal_out_meta + +- func: normal.Tensor_float(Tensor mean, float std=1, *, Generator? generator=None) -> Tensor + dispatch: + CPU, CUDA: normal + MPS: normal_mps + Meta: normal_meta + tags: nondeterministic_seeded + +- func: normal.float_Tensor_out(float mean, Tensor std, *, Generator? generator=None, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, CUDA: normal_out + Meta: normal_out_meta + MPS: normal_mps_out + tags: nondeterministic_seeded + +- func: normal.float_Tensor(float mean, Tensor std, *, Generator? generator=None) -> Tensor + dispatch: + CPU, CUDA: normal + MPS: normal_mps + Meta: normal_meta + tags: nondeterministic_seeded + +- func: normal.Tensor_Tensor_out(Tensor mean, Tensor std, *, Generator? generator=None, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, CUDA: normal_out + Meta: normal_out_meta + MPS: normal_mps_out + tags: nondeterministic_seeded + +- func: normal.Tensor_Tensor(Tensor mean, Tensor std, *, Generator? generator=None) -> Tensor + dispatch: + CPU, CUDA: normal + MPS: normal_mps + Meta: normal_meta + tags: nondeterministic_seeded + +- func: normal.float_float(float mean, float std, SymInt[] size, *, Generator? generator=None, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + dispatch: + CompositeExplicitAutograd: normal + tags: nondeterministic_seeded + +- func: normal.float_float_out(float mean, float std, SymInt[] size, *, Generator? generator=None, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: normal_out + tags: nondeterministic_seeded + +- func: alias(Tensor(a) self) -> Tensor(a) + variants: method, function + dispatch: + CompositeExplicitAutograd: alias + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: alias_nested + tags: core + +- func: _amp_foreach_non_finite_check_and_unscale_(Tensor(a!)[] self, Tensor(b!) found_inf, Tensor inv_scale) -> () + variants: function + dispatch: + CUDA: _amp_foreach_non_finite_check_and_unscale_cuda_ + CPU: _amp_foreach_non_finite_check_and_unscale_cpu_ + MPS: _amp_foreach_non_finite_check_and_unscale_mps_ + autogen: _amp_foreach_non_finite_check_and_unscale, _amp_foreach_non_finite_check_and_unscale.out + +- func: _amp_update_scale_(Tensor(a!) self, Tensor(b!) growth_tracker, Tensor found_inf, float scale_growth_factor, float scale_backoff_factor, int growth_interval) -> Tensor(a!) + variants: function + dispatch: + CUDA: _amp_update_scale_cuda_ + CPU: _amp_update_scale_cpu_ + MPS: _amp_update_scale_mps_ + autogen: _amp_update_scale, _amp_update_scale.out + + #- func: _cat(Tensor[] tensors, int dim=0) -> Tensor + #dispatch: + #CPU: _cat_cpu + #CUDA: cat_cuda + #MPS: cat_mps + #QuantizedCPU: cat_quantized_cpu + + #- func: _cat.out(Tensor[] tensors, int dim=0, *, Tensor(a!) out) -> Tensor(a!) + #dispatch: + #CPU: _cat_out_cpu + #CUDA: cat_out_cuda + #QuantizedCPU: cat_out_quantized_cpu + +- func: _foreach_add.Scalar(Tensor[] self, Scalar scalar) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_add_scalar_kernel_slow + CUDA: foreach_tensor_add_scalar_kernel_cuda + +- func: _foreach_add_.Scalar(Tensor(a!)[] self, Scalar scalar) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_add_scalar_kernel_slow_ + CUDA: foreach_tensor_add_scalar_kernel_cuda_ + MTIA: foreach_tensor_add_scalar_kernel_mtia_ + autogen: _foreach_add.Scalar_out + +- func: _foreach_add.List(Tensor[] self, Tensor[] other, *, Scalar alpha=1) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_add_list_kernel_slow + CUDA: foreach_tensor_add_list_kernel_cuda + MTIA: foreach_tensor_add_list_kernel_mtia + +- func: _foreach_add_.List(Tensor(a!)[] self, Tensor[] other, *, Scalar alpha=1) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_add_list_kernel_slow_ + CUDA: foreach_tensor_add_list_kernel_cuda_ + MTIA: foreach_tensor_add_list_kernel_mtia_ + autogen: _foreach_add.List_out + +- func: _foreach_add.ScalarList(Tensor[] self, Scalar[] scalars) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_add_scalarlist_kernel_slow + CUDA: foreach_tensor_add_scalarlist_kernel_cuda + +- func: _foreach_add_.ScalarList(Tensor(a!)[] self, Scalar[] scalars) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_add_scalarlist_kernel_slow_ + CUDA: foreach_tensor_add_scalarlist_kernel_cuda_ + autogen: _foreach_add.ScalarList_out + +- func: _foreach_add.Tensor(Tensor[] self, Tensor other, *, Scalar alpha=1) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_add_tensor_kernel_slow + CUDA: foreach_tensor_add_tensor_kernel_cuda + +- func: _foreach_add_.Tensor(Tensor(a!)[] self, Tensor other, *, Scalar alpha=1) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_add_tensor_kernel_slow_ + CUDA: foreach_tensor_add_tensor_kernel_cuda_ + MTIA: foreach_tensor_add_tensor_kernel_mtia_ + autogen: _foreach_add.Tensor_out + +- func: _foreach_sub.Scalar(Tensor[] self, Scalar scalar) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_sub_scalar_kernel_slow + CUDA: foreach_tensor_sub_scalar_kernel_cuda + +- func: _foreach_sub_.Scalar(Tensor(a!)[] self, Scalar scalar) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_sub_scalar_kernel_slow_ + CUDA: foreach_tensor_sub_scalar_kernel_cuda_ + autogen: _foreach_sub.Scalar_out + +- func: _foreach_sub.List(Tensor[] self, Tensor[] other, *, Scalar alpha=1) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_sub_list_kernel_slow + CUDA: foreach_tensor_sub_list_kernel_cuda + +- func: _foreach_sub_.List(Tensor(a!)[] self, Tensor[] other, *, Scalar alpha=1) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_sub_list_kernel_slow_ + CUDA: foreach_tensor_sub_list_kernel_cuda_ + autogen: _foreach_sub.List_out + +- func: _foreach_sub.ScalarList(Tensor[] self, Scalar[] scalars) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_sub_scalarlist_kernel_slow + CUDA: foreach_tensor_sub_scalarlist_kernel_cuda + +- func: _foreach_sub_.ScalarList(Tensor(a!)[] self, Scalar[] scalars) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_sub_scalarlist_kernel_slow_ + CUDA: foreach_tensor_sub_scalarlist_kernel_cuda_ + autogen: _foreach_sub.ScalarList_out + +- func: _foreach_mul.Scalar(Tensor[] self, Scalar scalar) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_mul_scalar_kernel_slow + CUDA: foreach_tensor_mul_scalar_kernel_cuda + +- func: _foreach_mul_.Scalar(Tensor(a!)[] self, Scalar scalar) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_mul_scalar_kernel_slow_ + CUDA: foreach_tensor_mul_scalar_kernel_cuda_ + MTIA: foreach_tensor_mul_scalar_kernel_mtia_ + autogen: _foreach_mul.Scalar_out + +- func: _foreach_mul.List(Tensor[] self, Tensor[] other) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_mul_list_kernel_slow + CUDA: foreach_tensor_mul_list_kernel_cuda + MTIA: foreach_tensor_mul_list_kernel_mtia + +- func: _foreach_mul_.List(Tensor(a!)[] self, Tensor[] other) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_mul_list_kernel_slow_ + CUDA: foreach_tensor_mul_list_kernel_cuda_ + MTIA: foreach_tensor_mul_list_kernel_mtia_ + autogen: _foreach_mul.List_out + +- func: _foreach_mul.ScalarList(Tensor[] self, Scalar[] scalars) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_mul_scalarlist_kernel_slow + CUDA: foreach_tensor_mul_scalarlist_kernel_cuda + +- func: _foreach_mul_.ScalarList(Tensor(a!)[] self, Scalar[] scalars) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_mul_scalarlist_kernel_slow_ + CUDA: foreach_tensor_mul_scalarlist_kernel_cuda_ + autogen: _foreach_mul.ScalarList_out + +- func: _foreach_mul.Tensor(Tensor[] self, Tensor other) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_mul_tensor_kernel_slow + CUDA: foreach_tensor_mul_tensor_kernel_cuda + MTIA: foreach_tensor_mul_tensor_kernel_mtia + +- func: _foreach_mul_.Tensor(Tensor(a!)[] self, Tensor other) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_mul_tensor_kernel_slow_ + CUDA: foreach_tensor_mul_tensor_kernel_cuda_ + MTIA: foreach_tensor_mul_tensor_kernel_mtia_ + autogen: _foreach_mul.Tensor_out + +- func: _foreach_div.Scalar(Tensor[] self, Scalar scalar) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_div_scalar_kernel_slow + CUDA: foreach_tensor_div_scalar_kernel_cuda + +- func: _foreach_div_.Scalar(Tensor(a!)[] self, Scalar scalar) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_div_scalar_kernel_slow_ + CUDA: foreach_tensor_div_scalar_kernel_cuda_ + autogen: _foreach_div.Scalar_out + +- func: _foreach_div.List(Tensor[] self, Tensor[] other) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_div_list_kernel_slow + CUDA: foreach_tensor_div_list_kernel_cuda + MTIA: foreach_tensor_div_list_kernel_mtia + +- func: _foreach_div_.List(Tensor(a!)[] self, Tensor[] other) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_div_list_kernel_slow_ + CUDA: foreach_tensor_div_list_kernel_cuda_ + MTIA: foreach_tensor_div_list_kernel_mtia_ + autogen: _foreach_div.List_out + +- func: _foreach_div.ScalarList(Tensor[] self, Scalar[] scalars) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_div_scalarlist_kernel_slow + CUDA: foreach_tensor_div_scalarlist_kernel_cuda + +- func: _foreach_div_.ScalarList(Tensor(a!)[] self, Scalar[] scalars) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_div_scalarlist_kernel_slow_ + CUDA: foreach_tensor_div_scalarlist_kernel_cuda_ + autogen: _foreach_div.ScalarList_out + +- func: _foreach_div.Tensor(Tensor[] self, Tensor other) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_div_tensor_kernel_slow + CUDA: foreach_tensor_div_tensor_kernel_cuda + MTIA: foreach_tensor_div_tensor_kernel_mtia + +- func: _foreach_div_.Tensor(Tensor(a!)[] self, Tensor other) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_div_tensor_kernel_slow_ + CUDA: foreach_tensor_div_tensor_kernel_cuda_ + MTIA: foreach_tensor_div_tensor_kernel_mtia_ + autogen: _foreach_div.Tensor_out + +- func: _foreach_clamp_max.Scalar(Tensor[] self, Scalar scalar) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_clamp_max_scalar_kernel_slow + CUDA: foreach_tensor_clamp_max_scalar_kernel_cuda + +- func: _foreach_clamp_max_.Scalar(Tensor(a!)[] self, Scalar scalar) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_clamp_max_scalar_kernel_slow_ + CUDA: foreach_tensor_clamp_max_scalar_kernel_cuda_ + autogen: _foreach_clamp_max.Scalar_out + +- func: _foreach_clamp_max.List(Tensor[] self, Tensor[] other) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_clamp_max_list_kernel_slow + CUDA: foreach_tensor_clamp_max_list_kernel_cuda + +- func: _foreach_clamp_max_.List(Tensor(a!)[] self, Tensor[] other) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_clamp_max_list_kernel_slow_ + CUDA: foreach_tensor_clamp_max_list_kernel_cuda_ + autogen: _foreach_clamp_max.List_out + +- func: _foreach_clamp_max.ScalarList(Tensor[] self, Scalar[] scalars) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_clamp_max_scalarlist_kernel_slow + CUDA: foreach_tensor_clamp_max_scalarlist_kernel_cuda + +- func: _foreach_clamp_max_.ScalarList(Tensor(a!)[] self, Scalar[] scalars) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_clamp_max_scalarlist_kernel_slow_ + CUDA: foreach_tensor_clamp_max_scalarlist_kernel_cuda_ + autogen: _foreach_clamp_max.ScalarList_out + +- func: _foreach_clamp_min.Scalar(Tensor[] self, Scalar scalar) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_clamp_min_scalar_kernel_slow + CUDA: foreach_tensor_clamp_min_scalar_kernel_cuda + +- func: _foreach_clamp_min_.Scalar(Tensor(a!)[] self, Scalar scalar) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_clamp_min_scalar_kernel_slow_ + CUDA: foreach_tensor_clamp_min_scalar_kernel_cuda_ + autogen: _foreach_clamp_min.Scalar_out + +- func: _foreach_clamp_min.List(Tensor[] self, Tensor[] other) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_clamp_min_list_kernel_slow + CUDA: foreach_tensor_clamp_min_list_kernel_cuda + +- func: _foreach_clamp_min_.List(Tensor(a!)[] self, Tensor[] other) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_clamp_min_list_kernel_slow_ + CUDA: foreach_tensor_clamp_min_list_kernel_cuda_ + autogen: _foreach_clamp_min.List_out + +- func: _foreach_clamp_min.ScalarList(Tensor[] self, Scalar[] scalars) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_clamp_min_scalarlist_kernel_slow + CUDA: foreach_tensor_clamp_min_scalarlist_kernel_cuda + +- func: _foreach_clamp_min_.ScalarList(Tensor(a!)[] self, Scalar[] scalars) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_clamp_min_scalarlist_kernel_slow_ + CUDA: foreach_tensor_clamp_min_scalarlist_kernel_cuda_ + autogen: _foreach_clamp_min.ScalarList_out + +# foreach_minimum/maximum dispatches to clamp_max/min +- func: _foreach_maximum.Scalar(Tensor[] self, Scalar scalar) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_clamp_min_scalar_kernel_slow + CUDA: foreach_tensor_clamp_min_scalar_kernel_cuda + +- func: _foreach_maximum_.Scalar(Tensor(a!)[] self, Scalar scalar) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_clamp_min_scalar_kernel_slow_ + CUDA: foreach_tensor_clamp_min_scalar_kernel_cuda_ + MTIA: foreach_tensor_maximum_scalar_kernel_mtia_ + autogen: _foreach_maximum.Scalar_out + +# foreach_minimum/maximum dispatches to clamp_max/min +- func: _foreach_maximum.List(Tensor[] self, Tensor[] other) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_clamp_min_list_kernel_slow + CUDA: foreach_tensor_clamp_min_list_kernel_cuda + +- func: _foreach_maximum_.List(Tensor(a!)[] self, Tensor[] other) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_clamp_min_list_kernel_slow_ + CUDA: foreach_tensor_clamp_min_list_kernel_cuda_ + autogen: _foreach_maximum.List_out + +# foreach_minimum/maximum dispatches to clamp_max/min +- func: _foreach_maximum.ScalarList(Tensor[] self, Scalar[] scalars) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_clamp_min_scalarlist_kernel_slow + CUDA: foreach_tensor_clamp_min_scalarlist_kernel_cuda + +- func: _foreach_maximum_.ScalarList(Tensor(a!)[] self, Scalar[] scalars) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_clamp_min_scalarlist_kernel_slow_ + CUDA: foreach_tensor_clamp_min_scalarlist_kernel_cuda_ + autogen: _foreach_maximum.ScalarList_out + +- func: _foreach_minimum.Scalar(Tensor[] self, Scalar scalar) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_clamp_max_scalar_kernel_slow + CUDA: foreach_tensor_clamp_max_scalar_kernel_cuda + +- func: _foreach_minimum_.Scalar(Tensor(a!)[] self, Scalar scalar) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_clamp_max_scalar_kernel_slow_ + CUDA: foreach_tensor_clamp_max_scalar_kernel_cuda_ + autogen: _foreach_minimum.Scalar_out + +- func: _foreach_minimum.List(Tensor[] self, Tensor[] other) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_clamp_max_list_kernel_slow + CUDA: foreach_tensor_clamp_max_list_kernel_cuda + +- func: _foreach_minimum_.List(Tensor(a!)[] self, Tensor[] other) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_clamp_max_list_kernel_slow_ + CUDA: foreach_tensor_clamp_max_list_kernel_cuda_ + autogen: _foreach_minimum.List_out + +- func: _foreach_minimum.ScalarList(Tensor[] self, Scalar[] scalars) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_clamp_max_scalarlist_kernel_slow + CUDA: foreach_tensor_clamp_max_scalarlist_kernel_cuda + +- func: _foreach_minimum_.ScalarList(Tensor(a!)[] self, Scalar[] scalars) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_clamp_max_scalarlist_kernel_slow_ + CUDA: foreach_tensor_clamp_max_scalarlist_kernel_cuda_ + autogen: _foreach_minimum.ScalarList_out + +- func: _foreach_addcdiv.Scalar(Tensor[] self, Tensor[] tensor1, Tensor[] tensor2, Scalar value=1) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_addcdiv_scalar_slow + CUDA: foreach_tensor_addcdiv_scalar_cuda + +- func: _foreach_addcdiv.ScalarList(Tensor[] self, Tensor[] tensor1, Tensor[] tensor2, Scalar[] scalars) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_addcdiv_scalarlist_slow + CUDA: foreach_tensor_addcdiv_scalarlist_cuda + +- func: _foreach_addcdiv.Tensor(Tensor[] self, Tensor[] tensor1, Tensor[] tensor2, Tensor scalars) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_addcdiv_tensor_slow + CUDA: foreach_tensor_addcdiv_tensor_cuda + +- func: _foreach_addcdiv_.Scalar(Tensor(a!)[] self, Tensor[] tensor1, Tensor[] tensor2, Scalar value=1) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_addcdiv_scalar_slow_ + CUDA: foreach_tensor_addcdiv_scalar_cuda_ + autogen: _foreach_addcdiv.Scalar_out + +- func: _foreach_addcdiv_.ScalarList(Tensor(a!)[] self, Tensor[] tensor1, Tensor[] tensor2, Scalar[] scalars) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_addcdiv_scalarlist_slow_ + CUDA: foreach_tensor_addcdiv_scalarlist_cuda_ + autogen: _foreach_addcdiv.ScalarList_out + +- func: _foreach_addcdiv_.Tensor(Tensor(a!)[] self, Tensor[] tensor1, Tensor[] tensor2, Tensor scalars) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_addcdiv_tensor_slow_ + CUDA: foreach_tensor_addcdiv_tensor_cuda_ + autogen: _foreach_addcdiv.Tensor_out + +- func: _foreach_addcmul.Scalar(Tensor[] self, Tensor[] tensor1, Tensor[] tensor2, Scalar value=1) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_addcmul_scalar_slow + CUDA: foreach_tensor_addcmul_scalar_cuda + MTIA: foreach_tensor_addcmul_scalar_mtia + +- func: _foreach_addcmul.ScalarList(Tensor[] self, Tensor[] tensor1, Tensor[] tensor2, Scalar[] scalars) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_addcmul_scalarlist_slow + CUDA: foreach_tensor_addcmul_scalarlist_cuda + +- func: _foreach_addcmul.Tensor(Tensor[] self, Tensor[] tensor1, Tensor[] tensor2, Tensor scalars) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_addcmul_tensor_slow + CUDA: foreach_tensor_addcmul_tensor_cuda + +- func: _foreach_addcmul_.Scalar(Tensor(a!)[] self, Tensor[] tensor1, Tensor[] tensor2, Scalar value=1) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_addcmul_scalar_slow_ + CUDA: foreach_tensor_addcmul_scalar_cuda_ + MTIA: foreach_tensor_addcmul_scalar_mtia_ + autogen: _foreach_addcmul.Scalar_out + +- func: _foreach_addcmul_.ScalarList(Tensor(a!)[] self, Tensor[] tensor1, Tensor[] tensor2, Scalar[] scalars) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_addcmul_scalarlist_slow_ + CUDA: foreach_tensor_addcmul_scalarlist_cuda_ + autogen: _foreach_addcmul.ScalarList_out + +- func: _foreach_addcmul_.Tensor(Tensor(a!)[] self, Tensor[] tensor1, Tensor[] tensor2, Tensor scalars) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_addcmul_tensor_slow_ + CUDA: foreach_tensor_addcmul_tensor_cuda_ + autogen: _foreach_addcmul.Tensor_out + +- func: _foreach_abs(Tensor[] self) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_abs_slow + CUDA: foreach_tensor_abs_cuda + MTIA: foreach_tensor_abs_mtia + +- func: _foreach_abs_(Tensor(a!)[] self) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_abs_slow_ + CUDA: foreach_tensor_abs_cuda_ + MTIA: foreach_tensor_abs_mtia_ + autogen: _foreach_abs.out + +- func: _foreach_acos(Tensor[] self) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_acos_slow + CUDA: foreach_tensor_acos_cuda + +- func: _foreach_acos_(Tensor(a!)[] self) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_acos_slow_ + CUDA: foreach_tensor_acos_cuda_ + autogen: _foreach_acos.out + +- func: _foreach_asin(Tensor[] self) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_asin_slow + CUDA: foreach_tensor_asin_cuda + +- func: _foreach_asin_(Tensor(a!)[] self) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_asin_slow_ + CUDA: foreach_tensor_asin_cuda_ + autogen: _foreach_asin.out + +- func: _foreach_atan(Tensor[] self) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_atan_slow + CUDA: foreach_tensor_atan_cuda + +- func: _foreach_atan_(Tensor(a!)[] self) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_atan_slow_ + CUDA: foreach_tensor_atan_cuda_ + autogen: _foreach_atan.out + +- func: _foreach_ceil(Tensor[] self) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_ceil_slow + CUDA: foreach_tensor_ceil_cuda + +- func: _foreach_ceil_(Tensor(a!)[] self) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_ceil_slow_ + CUDA: foreach_tensor_ceil_cuda_ + autogen: _foreach_ceil.out + +- func: _foreach_cos(Tensor[] self) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_cos_slow + CUDA: foreach_tensor_cos_cuda + +- func: _foreach_cos_(Tensor(a!)[] self) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_cos_slow_ + CUDA: foreach_tensor_cos_cuda_ + autogen: _foreach_cos.out + +- func: _foreach_cosh(Tensor[] self) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_cosh_slow + CUDA: foreach_tensor_cosh_cuda + +- func: _foreach_cosh_(Tensor(a!)[] self) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_cosh_slow_ + CUDA: foreach_tensor_cosh_cuda_ + autogen: _foreach_cosh.out + +- func: _foreach_erf(Tensor[] self) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_erf_slow + CUDA: foreach_tensor_erf_cuda + +- func: _foreach_erf_(Tensor(a!)[] self) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_erf_slow_ + CUDA: foreach_tensor_erf_cuda_ + autogen: _foreach_erf.out + +- func: _foreach_erfc(Tensor[] self) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_erfc_slow + CUDA: foreach_tensor_erfc_cuda + +- func: _foreach_erfc_(Tensor(a!)[] self) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_erfc_slow_ + CUDA: foreach_tensor_erfc_cuda_ + autogen: _foreach_erfc.out + +- func: _foreach_exp(Tensor[] self) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_exp_slow + CUDA: foreach_tensor_exp_cuda + +- func: _foreach_exp_(Tensor(a!)[] self) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_exp_slow_ + CUDA: foreach_tensor_exp_cuda_ + autogen: _foreach_exp.out + +- func: _foreach_expm1(Tensor[] self) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_expm1_slow + CUDA: foreach_tensor_expm1_cuda + +- func: _foreach_expm1_(Tensor(a!)[] self) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_expm1_slow_ + CUDA: foreach_tensor_expm1_cuda_ + autogen: _foreach_expm1.out + +- func: _foreach_floor(Tensor[] self) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_floor_slow + CUDA: foreach_tensor_floor_cuda + +- func: _foreach_floor_(Tensor(a!)[] self) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_floor_slow_ + CUDA: foreach_tensor_floor_cuda_ + autogen: _foreach_floor.out + +- func: _foreach_frac(Tensor[] self) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_frac_slow + CUDA: foreach_tensor_frac_cuda + +- func: _foreach_frac_(Tensor(a!)[] self) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_frac_slow_ + CUDA: foreach_tensor_frac_cuda_ + autogen: _foreach_frac.out + +- func: _foreach_lerp.List(Tensor[] self, Tensor[] tensors1, Tensor[] weights) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensors are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_ternary_lerp_slow + CUDA: foreach_tensor_lerp_ternary_cuda + autogen: _foreach_lerp.List_out + +- func: _foreach_lerp_.List(Tensor(a!)[] self, Tensor[] tensors1, Tensor[] weights) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensors are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_ternary_lerp_slow_ + CUDA: foreach_tensor_lerp_ternary_cuda_ + autogen: _foreach_lerp.List_out + +- func: _foreach_lerp.Scalar(Tensor[] self, Tensor[] tensors1, Scalar weight) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensors are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_lerp_list_kernel_slow + CUDA: foreach_tensor_lerp_list_cuda + autogen: _foreach_lerp.Scalar_out + +- func: _foreach_lerp_.Scalar(Tensor(a!)[] self, Tensor[] tensors1, Scalar weight) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensors are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_lerp_list_kernel_slow_ + CUDA: foreach_tensor_lerp_list_cuda_ + autogen: _foreach_lerp.Scalar_out + +- func: _foreach_lerp.ScalarList(Tensor[] self, Tensor[] tensors1, Scalar[] weight) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensors are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_lerp_scalarlist_kernel_slow + CUDA: foreach_tensor_lerp_scalarlist_cuda + autogen: _foreach_lerp.ScalarList_out + +- func: _foreach_lerp_.ScalarList(Tensor(a!)[] self, Tensor[] tensors1, Scalar[] weight) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensors are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_lerp_scalarlist_kernel_slow_ + CUDA: foreach_tensor_lerp_scalarlist_cuda_ + autogen: _foreach_lerp.ScalarList_out + +- func: _foreach_lgamma(Tensor[] self) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_lgamma_slow + CUDA: foreach_tensor_lgamma_cuda + +- func: _foreach_lgamma_(Tensor(a!)[] self) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_lgamma_slow_ + CUDA: foreach_tensor_lgamma_cuda_ + autogen: _foreach_lgamma.out + +- func: _foreach_log(Tensor[] self) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_log_slow + CUDA: foreach_tensor_log_cuda + +- func: _foreach_log_(Tensor(a!)[] self) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_log_slow_ + CUDA: foreach_tensor_log_cuda_ + autogen: _foreach_log.out + +- func: _foreach_log10(Tensor[] self) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_log10_slow + CUDA: foreach_tensor_log10_cuda + +- func: _foreach_log10_(Tensor(a!)[] self) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_log10_slow_ + CUDA: foreach_tensor_log10_cuda_ + autogen: _foreach_log10.out + +- func: _foreach_log1p(Tensor[] self) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_log1p_slow + CUDA: foreach_tensor_log1p_cuda + +- func: _foreach_log1p_(Tensor(a!)[] self) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_log1p_slow_ + CUDA: foreach_tensor_log1p_cuda_ + autogen: _foreach_log1p.out + +- func: _foreach_log2(Tensor[] self) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_log2_slow + CUDA: foreach_tensor_log2_cuda + +- func: _foreach_log2_(Tensor(a!)[] self) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_log2_slow_ + CUDA: foreach_tensor_log2_cuda_ + autogen: _foreach_log2.out + +- func: _foreach_max(Tensor[] self) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_max_slow + CUDA: foreach_tensor_max_cuda + autogen: _foreach_max.out + +- func: _foreach_neg(Tensor[] self) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_neg_slow + CUDA: foreach_tensor_neg_cuda + +- func: _foreach_neg_(Tensor(a!)[] self) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_neg_slow_ + CUDA: foreach_tensor_neg_cuda_ + autogen: _foreach_neg.out + +- func: _foreach_norm.Scalar(Tensor[] self, Scalar ord=2, ScalarType? dtype=None) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_norm_slow + CUDA: foreach_tensor_norm_cuda + MTIA: foreach_tensor_norm_mtia + autogen: _foreach_norm.Scalar_out + +# Like _foreach_norm but returns sum(|x|^ord) without the final root +- func: _foreach_powsum.Scalar(Tensor[] self, Scalar ord=2, ScalarType? dtype=None) -> Tensor[] + device_check: NoCheck + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_powsum_slow + CUDA: foreach_tensor_powsum_cuda + autogen: _foreach_powsum.Scalar_out + +- func: _foreach_pow.List(Tensor[] self, Tensor[] exponent) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_pow_list_kernel_slow + CUDA: foreach_tensor_pow_list_kernel_cuda + +- func: _foreach_pow.Scalar(Tensor[] self, Scalar exponent) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_pow_scalar_kernel_slow + CUDA: foreach_tensor_pow_scalar_kernel_cuda + +- func: _foreach_pow.ScalarList(Tensor[] self, Scalar[] exponent) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_pow_scalarlist_kernel_slow + CUDA: foreach_tensor_pow_scalarlist_kernel_cuda + +- func: _foreach_pow.ScalarAndTensor(Scalar self, Tensor[] exponent) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_scalar_pow_list_kernel_slow + CUDA: foreach_scalar_pow_list_kernel_cuda + +- func: _foreach_pow_.List(Tensor(a!)[] self, Tensor[] exponent) -> () + device_check: NoCheck + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_pow_list_kernel_slow_ + CUDA: foreach_tensor_pow_list_kernel_cuda_ + autogen: _foreach_pow.List_out + +- func: _foreach_pow_.Scalar(Tensor(a!)[] self, Scalar exponent) -> () + device_check: NoCheck + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_pow_scalar_kernel_slow_ + CUDA: foreach_tensor_pow_scalar_kernel_cuda_ + autogen: _foreach_pow.Scalar_out + +- func: _foreach_pow_.ScalarList(Tensor(a!)[] self, Scalar[] exponent) -> () + device_check: NoCheck + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_pow_scalarlist_kernel_slow_ + CUDA: foreach_tensor_pow_scalarlist_kernel_cuda_ + autogen: _foreach_pow.ScalarList_out + +- func: _foreach_reciprocal(Tensor[] self) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_reciprocal_slow + CUDA: foreach_tensor_reciprocal_cuda + +- func: _foreach_reciprocal_(Tensor(a!)[] self) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_reciprocal_slow_ + CUDA: foreach_tensor_reciprocal_cuda_ + autogen: _foreach_reciprocal.out + +- func: _foreach_round(Tensor[] self) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_round_slow + CUDA: foreach_tensor_round_cuda + +- func: _foreach_round_(Tensor(a!)[] self) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_round_slow_ + CUDA: foreach_tensor_round_cuda_ + autogen: _foreach_round.out + +- func: _foreach_rsqrt(Tensor[] self) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_rsqrt_slow + CUDA: foreach_tensor_rsqrt_cuda + +- func: _foreach_rsqrt_(Tensor(a!)[] self) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_rsqrt_slow_ + CUDA: foreach_tensor_rsqrt_cuda_ + autogen: _foreach_rsqrt.out + +- func: _foreach_sigmoid(Tensor[] self) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_sigmoid_slow + CUDA: foreach_tensor_sigmoid_cuda + +- func: _foreach_sigmoid_(Tensor(a!)[] self) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_sigmoid_slow_ + CUDA: foreach_tensor_sigmoid_cuda_ + autogen: _foreach_sigmoid.out + +- func: _foreach_sign(Tensor[] self) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_sign_slow + CUDA: foreach_tensor_sign_cuda + +- func: _foreach_sign_(Tensor(a!)[] self) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_sign_slow_ + CUDA: foreach_tensor_sign_cuda_ + autogen: _foreach_sign.out + +- func: _foreach_sin(Tensor[] self) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_sin_slow + CUDA: foreach_tensor_sin_cuda + +- func: _foreach_sin_(Tensor(a!)[] self) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_sin_slow_ + CUDA: foreach_tensor_sin_cuda_ + autogen: _foreach_sin.out + +- func: _foreach_sinh(Tensor[] self) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_sinh_slow + CUDA: foreach_tensor_sinh_cuda + +- func: _foreach_sinh_(Tensor(a!)[] self) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_sinh_slow_ + CUDA: foreach_tensor_sinh_cuda_ + autogen: _foreach_sinh.out + +- func: _foreach_sqrt(Tensor[] self) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_sqrt_slow + CUDA: foreach_tensor_sqrt_cuda + +- func: _foreach_sqrt_(Tensor(a!)[] self) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_sqrt_slow_ + CUDA: foreach_tensor_sqrt_cuda_ + MTIA: foreach_tensor_sqrt_mtia_ + autogen: _foreach_sqrt.out + +- func: _foreach_tan(Tensor[] self) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_tan_slow + CUDA: foreach_tensor_tan_cuda + +- func: _foreach_tan_(Tensor(a!)[] self) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_tan_slow_ + CUDA: foreach_tensor_tan_cuda_ + autogen: _foreach_tan.out + +- func: _foreach_tanh(Tensor[] self) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_tanh_slow + CUDA: foreach_tensor_tanh_cuda + +- func: _foreach_tanh_(Tensor(a!)[] self) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_tanh_slow_ + CUDA: foreach_tensor_tanh_cuda_ + autogen: _foreach_tanh.out + +- func: _foreach_trunc(Tensor[] self) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_trunc_slow + CUDA: foreach_tensor_trunc_cuda + +- func: _foreach_trunc_(Tensor(a!)[] self) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_trunc_slow_ + CUDA: foreach_tensor_trunc_cuda_ + autogen: _foreach_trunc.out + +- func: _foreach_zero_(Tensor(a!)[] self) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_zero_slow_ + CUDA: foreach_tensor_zero_cuda_ + autogen: _foreach_zero, _foreach_zero.out + +- func: _foreach_clone(Tensor[] self, *, MemoryFormat? memory_format=None) -> Tensor[] + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_clone_slow + CUDA: foreach_tensor_clone_cuda + autogen: _foreach_clone.out + +- func: _foreach_copy_(Tensor(a!)[] self, Tensor[] src, bool non_blocking=False) -> () + device_check: NoCheck # foreach kernels fall back to slow path when tensor are on different devices + variants: function + dispatch: + CompositeExplicitAutograd: foreach_tensor_copy_list_kernel_slow_ + CUDA: foreach_tensor_copy_list_kernel_cuda_ + MTIA: foreach_tensor_copy_list_kernel_mtia_ + autogen: _foreach_copy.out + +- func: _foreach_copy(Tensor[] self, Tensor[] src, bool non_blocking=False) -> Tensor[] self_out + device_check: NoCheck + variants: function + dispatch: + CompositeExplicitAutograd: _foreach_copy + MTIA: foreach_tensor_copy_list_kernel_mtia + +- func: bucketize.Tensor(Tensor self, Tensor boundaries, *, bool out_int32=False, bool right=False) -> Tensor + dispatch: + CPU: bucketize_cpu + CUDA: bucketize_cuda + MPS: bucketize_mps + +- func: bucketize.Tensor_out(Tensor self, Tensor boundaries, *, bool out_int32=False, bool right=False, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU: bucketize_out_cpu + CUDA: bucketize_out_cuda + MPS: bucketize_out_mps + +- func: bucketize.Scalar(Scalar self, Tensor boundaries, *, bool out_int32=False, bool right=False) -> Tensor + dispatch: + CPU: bucketize_cpu + CUDA: bucketize_cuda + MPS: bucketize_mps + autogen: bucketize.Scalar_out + +- func: searchsorted.Tensor(Tensor sorted_sequence, Tensor self, *, bool out_int32=False, bool right=False, str? side=None, Tensor? sorter=None) -> Tensor + dispatch: + CPU: searchsorted_cpu + CUDA: searchsorted_cuda + MPS: searchsorted_mps + +- func: searchsorted.Tensor_out(Tensor sorted_sequence, Tensor self, *, bool out_int32=False, bool right=False, str? side=None, Tensor? sorter=None, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU: searchsorted_out_cpu + CUDA: searchsorted_out_cuda + MPS: searchsorted_out_mps + +- func: searchsorted.Scalar(Tensor sorted_sequence, Scalar self, *, bool out_int32=False, bool right=False, str? side=None, Tensor? sorter=None) -> Tensor + dispatch: + CPU: searchsorted_cpu + CUDA: searchsorted_cuda + MPS: searchsorted_mps + +- func: searchsorted.Scalar_out(Tensor sorted_sequence, Scalar self, *, bool out_int32=False, bool right=False, str? side=None, Tensor? sorter=None, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU: searchsorted_out_cpu + CUDA: searchsorted_out_cuda + MPS: searchsorted_out_mps + +- func: _convert_indices_from_coo_to_csr(Tensor self, int size, *, bool out_int32=False) -> Tensor + structured_delegate: _convert_indices_from_coo_to_csr.out + +- func: _convert_indices_from_coo_to_csr.out(Tensor self, int size, *, bool out_int32=False, Tensor(a!) out) -> Tensor(a!) + structured: True + dispatch: + CPU: _convert_indices_from_coo_to_csr_structured_cpu + CUDA: _convert_indices_from_coo_to_csr_structured_cuda + +- func: _convert_indices_from_csr_to_coo(Tensor crow_indices, Tensor col_indices, *, bool out_int32=False, bool transpose=False) -> Tensor + structured_delegate: _convert_indices_from_csr_to_coo.out + +- func: _convert_indices_from_csr_to_coo.out(Tensor crow_indices, Tensor col_indices, *, bool out_int32=False, bool transpose=False, Tensor(a!) out) -> Tensor(a!) + structured: True + dispatch: + CPU: _convert_indices_from_csr_to_coo_structured_cpu + CUDA: _convert_indices_from_csr_to_coo_structured_cuda + +## NN wrappers + +- func: mse_loss.out(Tensor self, Tensor target, int reduction=Mean, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + python_module: nn + dispatch: + CPU, CUDA: mse_loss_out + MPS: mse_loss_out_mps + +- func: mse_loss(Tensor self, Tensor target, int reduction=Mean) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: mse_loss.out + python_module: nn + +- func: mse_loss_backward.grad_input(Tensor grad_output, Tensor self, Tensor target, int reduction, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + dispatch: + CPU, CUDA: mse_loss_backward_out + MPS: mse_loss_backward_out_mps + +- func: mse_loss_backward(Tensor grad_output, Tensor self, Tensor target, int reduction) -> Tensor + python_module: nn + dispatch: + CPU, CUDA: mse_loss_backward + MPS: mse_loss_backward_mps + +- func: l1_loss(Tensor self, Tensor target, int reduction=Mean) -> Tensor + python_module: nn + +- func: multi_margin_loss.out(Tensor self, Tensor target, Scalar p=1, Scalar margin=1, Tensor? weight=None, int reduction=Mean, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + dispatch: + CPU: multi_margin_loss_cpu_out + CUDA: multi_margin_loss_cuda_out + +- func: multi_margin_loss(Tensor self, Tensor target, Scalar p=1, Scalar margin=1, Tensor? weight=None, int reduction=Mean) -> Tensor + python_module: nn + dispatch: + CPU: multi_margin_loss_cpu + CUDA: multi_margin_loss_cuda + +- func: multi_margin_loss_backward.grad_input(Tensor grad_output, Tensor self, Tensor target, Scalar p, Scalar margin, Tensor? weight=None, int reduction=Mean, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + dispatch: + CPU: multi_margin_loss_cpu_backward_out + CUDA: multi_margin_loss_cuda_backward_out + +- func: multi_margin_loss_backward(Tensor grad_output, Tensor self, Tensor target, Scalar p, Scalar margin, Tensor? weight=None, int reduction=Mean) -> Tensor + python_module: nn + dispatch: + CPU: multi_margin_loss_cpu_backward + CUDA: multi_margin_loss_cuda_backward + +- func: multilabel_margin_loss.out(Tensor self, Tensor target, int reduction=Mean, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + +- func: multilabel_margin_loss(Tensor self, Tensor target, int reduction=Mean) -> Tensor + python_module: nn + +- func: multilabel_margin_loss_forward.output(Tensor self, Tensor target, int reduction, *, Tensor(a!) output, Tensor(b!) is_target) -> (Tensor(a!), Tensor(b!)) + python_module: nn + dispatch: + CPU: multilabel_margin_loss_forward_out_cpu + CUDA: multilabel_margin_loss_forward_out_cuda + +- func: multilabel_margin_loss_forward(Tensor self, Tensor target, int reduction) -> (Tensor output, Tensor is_target) + python_module: nn + dispatch: + CPU: multilabel_margin_loss_forward_cpu + CUDA: multilabel_margin_loss_forward_cuda + +- func: multilabel_margin_loss_backward.grad_input(Tensor grad_output, Tensor self, Tensor target, int reduction, Tensor is_target, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + dispatch: + CPU: multilabel_margin_loss_backward_cpu_out + CUDA: multilabel_margin_loss_backward_cuda_out + +- func: multilabel_margin_loss_backward(Tensor grad_output, Tensor self, Tensor target, int reduction, Tensor is_target) -> Tensor + python_module: nn + dispatch: + CPU: multilabel_margin_loss_backward_cpu + CUDA: multilabel_margin_loss_backward_cuda + +- func: nll_loss.out(Tensor self, Tensor target, Tensor? weight=None, int reduction=Mean, SymInt ignore_index=-100, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + +- func: nll_loss_nd(Tensor self, Tensor target, Tensor? weight=None, int reduction=Mean, SymInt ignore_index=-100) -> Tensor + python_module: nn + dispatch: + CompositeImplicitAutograd: nll_loss_nd_symint + +- func: nll_loss(Tensor self, Tensor target, Tensor? weight=None, int reduction=Mean, SymInt ignore_index=-100) -> Tensor + python_module: nn + dispatch: + CompositeImplicitAutograd: nll_loss_symint + +- func: nll_loss_forward.output(Tensor self, Tensor target, Tensor? weight, int reduction, SymInt ignore_index, *, Tensor(a!) output, Tensor(b!) total_weight) -> (Tensor(a!), Tensor(b!)) + python_module: nn + structured: True + dispatch: + CPU: nll_loss_forward_out_cpu + CUDA: nll_loss_forward_out_cuda + MPS: nll_loss_forward_out_mps + +- func: nll_loss_forward(Tensor self, Tensor target, Tensor? weight, int reduction, SymInt ignore_index) -> (Tensor output, Tensor total_weight) + python_module: nn + structured_delegate: nll_loss_forward.output + +- func: nll_loss_backward.grad_input(Tensor grad_output, Tensor self, Tensor target, Tensor? weight, int reduction, SymInt ignore_index, Tensor total_weight, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: nll_loss_backward_out_cpu + CUDA: nll_loss_backward_out_cuda + MPS: nll_loss_backward_out_mps + +- func: nll_loss_backward(Tensor grad_output, Tensor self, Tensor target, Tensor? weight, int reduction, SymInt ignore_index, Tensor total_weight) -> Tensor + python_module: nn + structured_delegate: nll_loss_backward.grad_input + +- func: nll_loss2d.out(Tensor self, Tensor target, Tensor? weight=None, int reduction=Mean, SymInt ignore_index=-100, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + +- func: nll_loss2d(Tensor self, Tensor target, Tensor? weight=None, int reduction=Mean, SymInt ignore_index=-100) -> Tensor + python_module: nn + dispatch: + CompositeImplicitAutograd: nll_loss2d_symint + +- func: nll_loss2d_forward.output(Tensor self, Tensor target, Tensor? weight, int reduction, SymInt ignore_index, *, Tensor(a!) output, Tensor(b!) total_weight) -> (Tensor(a!), Tensor(b!)) + python_module: nn + dispatch: + CPU: nll_loss2d_forward_out_cpu + CUDA: nll_loss2d_forward_out_cuda + MPS: nll_loss2d_forward_out_mps + +- func: nll_loss2d_forward(Tensor self, Tensor target, Tensor? weight, int reduction, SymInt ignore_index) -> (Tensor output, Tensor total_weight) + python_module: nn + dispatch: + CPU: nll_loss2d_forward_cpu + CUDA: nll_loss2d_forward_cuda + MPS: nll_loss2d_forward_mps + +- func: nll_loss2d_backward.grad_input(Tensor grad_output, Tensor self, Tensor target, Tensor? weight, int reduction, SymInt ignore_index, Tensor total_weight, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + dispatch: + CPU: nll_loss2d_backward_out_cpu + CUDA: nll_loss2d_backward_out_cuda + MPS: nll_loss2d_backward_out_mps + +- func: nll_loss2d_backward(Tensor grad_output, Tensor self, Tensor target, Tensor? weight, int reduction, SymInt ignore_index, Tensor total_weight) -> Tensor + python_module: nn + dispatch: + CPU: nll_loss2d_backward_cpu + CUDA: nll_loss2d_backward_cuda + MPS: nll_loss2d_backward_mps + +- func: smooth_l1_loss.out(Tensor self, Tensor target, int reduction=Mean, float beta=1.0, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + python_module: nn + dispatch: + CPU, CUDA: smooth_l1_loss_out + MPS: smooth_l1_loss_out_mps + +- func: smooth_l1_loss(Tensor self, Tensor target, int reduction=Mean, float beta=1.0) -> Tensor + device_check: NoCheck # TensorIterator + structured_delegate: smooth_l1_loss.out + python_module: nn + +- func: smooth_l1_loss_backward.grad_input(Tensor grad_output, Tensor self, Tensor target, int reduction, float beta, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + dispatch: + CPU: smooth_l1_loss_backward_out + CUDA: smooth_l1_loss_backward_out + MPS: smooth_l1_loss_backward_out_mps + +- func: smooth_l1_loss_backward(Tensor grad_output, Tensor self, Tensor target, int reduction, float beta) -> Tensor + python_module: nn + dispatch: + CompositeExplicitAutograd: smooth_l1_loss_backward + +- func: huber_loss.out(Tensor self, Tensor target, int reduction=Mean, float delta=1.0, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + dispatch: + CPU, CUDA: huber_loss_out + MPS: huber_loss_out_mps + +- func: huber_loss(Tensor self, Tensor target, int reduction=Mean, float delta=1.0) -> Tensor + python_module: nn + dispatch: + CPU, CUDA: huber_loss + MPS: huber_loss_mps + +- func: huber_loss_backward.out(Tensor grad_output, Tensor self, Tensor target, int reduction, float delta, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + dispatch: + CPU, CUDA: huber_loss_backward_out + MPS: huber_loss_backward_out_mps + +- func: huber_loss_backward(Tensor grad_output, Tensor self, Tensor target, int reduction, float delta) -> Tensor + python_module: nn + dispatch: + CompositeExplicitAutograd: huber_loss_backward + +- func: soft_margin_loss.out(Tensor self, Tensor target, int reduction=Mean, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + dispatch: + CompositeExplicitAutograd: soft_margin_loss_out + +- func: soft_margin_loss(Tensor self, Tensor target, int reduction=Mean) -> Tensor + python_module: nn + dispatch: + CompositeExplicitAutograd: soft_margin_loss + +- func: soft_margin_loss_backward.grad_input(Tensor grad_output, Tensor self, Tensor target, int reduction, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + dispatch: + CompositeExplicitAutograd: soft_margin_loss_backward_out + +- func: soft_margin_loss_backward(Tensor grad_output, Tensor self, Tensor target, int reduction) -> Tensor + python_module: nn + dispatch: + CompositeExplicitAutograd: soft_margin_loss_backward + +- func: elu.out(Tensor self, Scalar alpha=1, Scalar scale=1, Scalar input_scale=1, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + device_check: NoCheck # TensorIterator + python_module: nn + dispatch: + CPU, CUDA, MPS: elu_out + +- func: elu(Tensor self, Scalar alpha=1, Scalar scale=1, Scalar input_scale=1) -> Tensor + structured_delegate: elu.out + device_check: NoCheck # TensorIterator + python_module: nn + tags: [core, pointwise] + +- func: elu_backward.grad_input(Tensor grad_output, Scalar alpha, Scalar scale, Scalar input_scale, bool is_result, Tensor self_or_result, *, Tensor(a!) grad_input) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + python_module: nn + dispatch: + CPU, CUDA, MPS: elu_backward_out + +- func: elu_backward(Tensor grad_output, Scalar alpha, Scalar scale, Scalar input_scale, bool is_result, Tensor self_or_result) -> Tensor + structured_delegate: elu_backward.grad_input + python_module: nn + +- func: elu_(Tensor(a!) self, Scalar alpha=1, Scalar scale=1, Scalar input_scale=1) -> Tensor(a!) + structured_delegate: elu.out + device_check: NoCheck # TensorIterator + python_module: nn + tags: pointwise + +- func: glu.out(Tensor self, int dim=-1, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + python_module: nn + dispatch: + CPU, CUDA: glu_out + MPS: glu_out_mps + +- func: glu(Tensor self, int dim=-1) -> Tensor + structured_delegate: glu.out + device_check: NoCheck # TensorIterator + python_module: nn + +- func: glu_backward.grad_input(Tensor grad_output, Tensor self, int dim, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + dispatch: + CPU: glu_backward_cpu_out + CUDA: glu_backward_cuda_out + MPS: glu_backward_mps_out + +- func: glu_backward(Tensor grad_output, Tensor self, int dim) -> Tensor + python_module: nn + dispatch: + CPU: glu_backward_cpu + CUDA: glu_backward_cuda + MPS: glu_backward_mps + +- func: glu_jvp(Tensor glu, Tensor x, Tensor dx, int dim) -> Tensor + python_module: nn + dispatch: + CPU, CUDA: glu_jvp + autogen: glu_jvp.out + +- func: glu_backward_jvp(Tensor grad_x, Tensor grad_glu, Tensor x, Tensor dgrad_glu, Tensor dx, int dim) -> Tensor + python_module: nn + dispatch: + CPU, CUDA: glu_backward_jvp + autogen: glu_backward_jvp.out + +- func: hardsigmoid.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + device_check: NoCheck # TensorIterator + python_module: nn + dispatch: + CPU, CUDA, MPS: hardsigmoid_out + QuantizedCPU: hardsigmoid_out_quantized_cpu + +- func: hardsigmoid(Tensor self) -> Tensor + structured_delegate: hardsigmoid.out + device_check: NoCheck # TensorIterator + python_module: nn + dispatch: + QuantizedCPU: hardsigmoid_quantized_cpu + tags: pointwise + +- func: hardsigmoid_(Tensor(a!) self) -> Tensor(a!) + structured_delegate: hardsigmoid.out + device_check: NoCheck # TensorIterator + python_module: nn + tags: pointwise + +- func: hardsigmoid_backward.grad_input(Tensor grad_output, Tensor self, *, Tensor(a!) grad_input) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + python_module: nn + dispatch: + CPU, CUDA, MPS: hardsigmoid_backward_out + +- func: hardsigmoid_backward(Tensor grad_output, Tensor self) -> Tensor + structured_delegate: hardsigmoid_backward.grad_input + python_module: nn + +- func: hardtanh.out(Tensor self, Scalar min_val=-1, Scalar max_val=1, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + python_module: nn + dispatch: + CPU, CUDA, MPS: hardtanh_out + QuantizedCPU: hardtanh_out_quantized_cpu + +- func: hardtanh(Tensor self, Scalar min_val=-1, Scalar max_val=1) -> Tensor + device_check: NoCheck # TensorIterator + python_module: nn + dispatch: + CPU, CUDA, MPS: hardtanh + QuantizedCPU: hardtanh_quantized_cpu + tags: [pointwise, core] + +- func: hardtanh_backward.grad_input(Tensor grad_output, Tensor self, Scalar min_val, Scalar max_val, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + dispatch: + CPU, CUDA: hardtanh_backward_out + MPS: hardtanh_backward_out_mps + +- func: hardtanh_backward(Tensor grad_output, Tensor self, Scalar min_val, Scalar max_val) -> Tensor + python_module: nn + dispatch: + CPU, CUDA: hardtanh_backward + MPS: hardtanh_backward_mps + +- func: hardtanh_(Tensor(a!) self, Scalar min_val=-1, Scalar max_val=1) -> Tensor(a!) + device_check: NoCheck # TensorIterator + python_module: nn + dispatch: + CPU, CUDA, MPS: hardtanh_ + QuantizedCPU: hardtanh_quantized_cpu_ + tags: pointwise + +- func: hardswish.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + python_module: nn + dispatch: + CPU, CUDA, MPS: hardswish_out + +- func: hardswish(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + python_module: nn + dispatch: + CPU, CUDA, MPS: hardswish + +- func: hardswish_(Tensor(a!) self) -> Tensor(a!) + device_check: NoCheck # TensorIterator + python_module: nn + dispatch: + CPU, CUDA, MPS: hardswish_ + +- func: hardswish_backward(Tensor grad_output, Tensor self) -> Tensor + python_module: nn + dispatch: + CPU, CUDA, MPS: hardswish_backward + autogen: hardswish_backward.out + +- func: leaky_relu.out(Tensor self, Scalar negative_slope=0.01, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + device_check: NoCheck # TensorIterator + python_module: nn + dispatch: + CPU, CUDA, MPS: leaky_relu_out + QuantizedCPU: leaky_relu_out_quantized_cpu + +- func: leaky_relu(Tensor self, Scalar negative_slope=0.01) -> Tensor + structured_delegate: leaky_relu.out + device_check: NoCheck # TensorIterator + python_module: nn + dispatch: + QuantizedCPU: leaky_relu_quantized_cpu + tags: [core, pointwise] + +- func: leaky_relu_backward.grad_input(Tensor grad_output, Tensor self, Scalar negative_slope, bool self_is_result, *, Tensor(a!) grad_input) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + python_module: nn + dispatch: + CPU, CUDA, MPS: leaky_relu_backward_out + +- func: leaky_relu_backward(Tensor grad_output, Tensor self, Scalar negative_slope, bool self_is_result) -> Tensor + structured_delegate: leaky_relu_backward.grad_input + python_module: nn + +- func: leaky_relu_(Tensor(a!) self, Scalar negative_slope=0.01) -> Tensor(a!) + structured_delegate: leaky_relu.out + device_check: NoCheck # TensorIterator + python_module: nn + dispatch: + QuantizedCPU: leaky_relu_quantized_cpu_ + tags: pointwise + +- func: log_sigmoid.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + python_module: nn + +- func: log_sigmoid(Tensor self) -> Tensor + device_check: NoCheck # TensorIterator + python_module: nn + +- func: log_sigmoid_forward.output(Tensor self, *, Tensor(a!) output, Tensor(b!) buffer) -> (Tensor(a!), Tensor(b!)) + device_check: NoCheck # TensorIterator + python_module: nn + dispatch: + CPU: log_sigmoid_forward_out_cpu + CUDA: log_sigmoid_forward_out_cuda + MPS: log_sigmoid_forward_out_mps + +- func: log_sigmoid_forward(Tensor self) -> (Tensor output, Tensor buffer) + device_check: NoCheck # TensorIterator + python_module: nn + dispatch: + CPU: log_sigmoid_forward_cpu + CUDA: log_sigmoid_forward_cuda + MPS: log_sigmoid_forward_mps + +- func: log_sigmoid_backward.grad_input(Tensor grad_output, Tensor self, Tensor buffer, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + dispatch: + CPU: log_sigmoid_backward_cpu_out + CUDA: log_sigmoid_backward_cuda_out + MPS: log_sigmoid_backward_mps_out + +- func: log_sigmoid_backward(Tensor grad_output, Tensor self, Tensor buffer) -> Tensor + python_module: nn + dispatch: + CPU: log_sigmoid_backward_cpu + CUDA: log_sigmoid_backward_cuda + MPS: log_sigmoid_backward_mps + +- func: rrelu_with_noise.out(Tensor self, Tensor(b!) noise, Scalar lower=0.125, Scalar upper=0.3333333333333333, bool training=False, Generator? generator=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + tags: nondeterministic_seeded + dispatch: + CPU: rrelu_with_noise_out_cpu + CUDA: rrelu_with_noise_out_cuda + +- func: rrelu_with_noise(Tensor self, Tensor(b!) noise, Scalar lower=0.125, Scalar upper=0.3333333333333333, bool training=False, Generator? generator=None) -> Tensor + python_module: nn + dispatch: + CPU: rrelu_with_noise_cpu + CUDA: rrelu_with_noise_cuda + tags: nondeterministic_seeded + autogen: rrelu_with_noise_functional + +- func: rrelu_with_noise_backward(Tensor grad_output, Tensor self, Tensor noise, Scalar lower, Scalar upper, bool training, bool self_is_result) -> Tensor + python_module: nn + dispatch: + CompositeExplicitAutograd: rrelu_with_noise_backward + autogen: rrelu_with_noise_backward.out + +- func: rrelu_with_noise_(Tensor(a!) self, Tensor(b!) noise, Scalar lower=0.125, Scalar upper=0.3333333333333333, bool training=False, Generator? generator=None) -> Tensor(a!) + python_module: nn + tags: nondeterministic_seeded + dispatch: + CPU: rrelu_with_noise_cpu_ + CUDA: rrelu_with_noise_cuda_ + +- func: softplus.out(Tensor self, Scalar beta=1, Scalar threshold=20, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + device_check: NoCheck # TensorIterator + python_module: nn + dispatch: + CPU, CUDA: softplus_out + MPS: softplus_out_mps + +- func: softplus(Tensor self, Scalar beta=1, Scalar threshold=20) -> Tensor + structured_delegate: softplus.out + device_check: NoCheck # TensorIterator + python_module: nn + tags: pointwise + +- func: softplus_backward.grad_input(Tensor grad_output, Tensor self, Scalar beta, Scalar threshold, *, Tensor(a!) grad_input) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + python_module: nn + dispatch: + CPU, CUDA: softplus_backward_out + MPS: softplus_backward_out_mps + +- func: softplus_backward(Tensor grad_output, Tensor self, Scalar beta, Scalar threshold) -> Tensor + structured_delegate: softplus_backward.grad_input + python_module: nn + +- func: softshrink.out(Tensor self, Scalar lambd=0.5, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + device_check: NoCheck # TensorIterator + python_module: nn + dispatch: + CPU, CUDA, MPS: softshrink_out + +- func: softshrink(Tensor self, Scalar lambd=0.5) -> Tensor + structured_delegate: softshrink.out + device_check: NoCheck # TensorIterator + python_module: nn + tags: pointwise + +- func: softshrink_backward.grad_input(Tensor grad_output, Tensor self, Scalar lambd, *, Tensor(a!) grad_input) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + python_module: nn + dispatch: + CPU, CUDA, MPS: softshrink_backward_out + +- func: softshrink_backward(Tensor grad_output, Tensor self, Scalar lambd) -> Tensor + structured_delegate: softshrink_backward.grad_input + python_module: nn + +- func: adaptive_avg_pool2d.out(Tensor self, SymInt[2] output_size, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + dispatch: + CPU: adaptive_avg_pool2d_out_cpu + CUDA: adaptive_avg_pool2d_out_cuda + MPS: adaptive_avg_pool2d_out_mps + MkldnnCPU: mkldnn_adaptive_avg_pool2d_out_stub + +- func: adaptive_avg_pool2d(Tensor self, SymInt[2] output_size) -> Tensor + python_module: nn + dispatch: + CompositeImplicitAutograd: adaptive_avg_pool2d_symint + +- func: mkldnn_adaptive_avg_pool2d(Tensor self, int[2] output_size) -> Tensor + dispatch: + MkldnnCPU: mkldnn_adaptive_avg_pool2d + +- func: mkldnn_adaptive_avg_pool2d.out(Tensor self, int[2] output_size, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + MkldnnCPU: mkldnn_adaptive_avg_pool2d_out + +- func: mkldnn_adaptive_avg_pool2d_backward(Tensor grad_output, Tensor self) -> Tensor + dispatch: + MkldnnCPU: mkldnn_adaptive_avg_pool2d_backward + autogen: mkldnn_adaptive_avg_pool2d_backward.out + +- func: _adaptive_avg_pool2d(Tensor self, SymInt[2] output_size) -> Tensor + dispatch: + CPU: adaptive_avg_pool2d_cpu + CUDA: adaptive_avg_pool2d_cuda + MPS: adaptive_avg_pool2d_mps + QuantizedCPU: adaptive_avg_pool2d_quantized_cpu + QuantizedCUDA: adaptive_avg_pool2d_quantized_cuda + autogen: _adaptive_avg_pool2d.out + tags: core + +- func: _adaptive_avg_pool2d_backward(Tensor grad_output, Tensor self) -> Tensor + python_module: nn + dispatch: + CPU: adaptive_avg_pool2d_backward_cpu + CUDA: adaptive_avg_pool2d_backward_cuda + MPS: adaptive_avg_pool2d_backward_mps + autogen: _adaptive_avg_pool2d_backward.out + tags: core + +- func: adaptive_avg_pool3d.out(Tensor self, SymInt[3] output_size, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + dispatch: + CPU: adaptive_avg_pool3d_out_cpu + CUDA: adaptive_avg_pool3d_out_cuda + QuantizedCPU: adaptive_avg_pool3d_out_quantized_cpu + +- func: adaptive_avg_pool3d(Tensor self, SymInt[3] output_size) -> Tensor + python_module: nn + dispatch: + CompositeImplicitAutograd: adaptive_avg_pool3d_symint + +- func: _adaptive_avg_pool3d(Tensor self, SymInt[3] output_size) -> Tensor + dispatch: + CPU: adaptive_avg_pool3d_cpu + CUDA: adaptive_avg_pool3d_cuda + QuantizedCPU: adaptive_avg_pool3d_quantized_cpu + autogen: _adaptive_avg_pool3d.out + tags: core + +- func: adaptive_avg_pool3d_backward.grad_input(Tensor grad_output, Tensor self, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + dispatch: + CPU: adaptive_avg_pool3d_backward_out_cpu + CUDA: adaptive_avg_pool3d_backward_out_cuda + +- func: _adaptive_avg_pool3d_backward(Tensor grad_output, Tensor self) -> Tensor + python_module: nn + dispatch: + CPU: adaptive_avg_pool3d_backward_cpu + CUDA: adaptive_avg_pool3d_backward_cuda + autogen: _adaptive_avg_pool3d_backward.out + +# Return: (Tensor output, Tensor indices) +- func: adaptive_max_pool2d.out(Tensor self, int[2] output_size, *, Tensor(a!) out, Tensor(b!) indices) -> (Tensor(a!), Tensor(b!)) + python_module: nn + structured: True + dispatch: + CPU: adaptive_max_pool2d_out_cpu + CUDA: adaptive_max_pool2d_out_cuda + MPS: adaptive_max_pool2d_out_mps + +# Return: (Tensor output, Tensor indices) +- func: adaptive_max_pool2d(Tensor self, int[2] output_size) -> (Tensor, Tensor) + python_module: nn + structured_delegate: adaptive_max_pool2d.out + +- func: adaptive_max_pool2d_backward.grad_input(Tensor grad_output, Tensor self, Tensor indices, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: adaptive_max_pool2d_backward_out_cpu + CUDA: adaptive_max_pool2d_backward_out_cuda + MPS: adaptive_max_pool2d_backward_out_mps + +- func: adaptive_max_pool2d_backward(Tensor grad_output, Tensor self, Tensor indices) -> Tensor + python_module: nn + structured_delegate: adaptive_max_pool2d_backward.grad_input + +# Return: (Tensor output, Tensor indices) +- func: adaptive_max_pool3d.out(Tensor self, int[3] output_size, *, Tensor(a!) out, Tensor(b!) indices) -> (Tensor(a!), Tensor(b!)) + python_module: nn + structured: True + dispatch: + CPU: adaptive_max_pool3d_out_cpu + CUDA: adaptive_max_pool3d_out_cuda + +# Return: (Tensor output, Tensor indices) +- func: adaptive_max_pool3d(Tensor self, int[3] output_size) -> (Tensor, Tensor) + python_module: nn + structured_delegate: adaptive_max_pool3d.out + +- func: adaptive_max_pool3d_backward.grad_input(Tensor grad_output, Tensor self, Tensor indices, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: adaptive_max_pool3d_backward_out_cpu + CUDA: adaptive_max_pool3d_backward_out_cuda + +- func: adaptive_max_pool3d_backward(Tensor grad_output, Tensor self, Tensor indices) -> Tensor + python_module: nn + structured_delegate: adaptive_max_pool3d_backward.grad_input + +- func: avg_pool2d.out(Tensor self, int[2] kernel_size, int[2] stride=[], int[2] padding=0, bool ceil_mode=False, bool count_include_pad=True, int? divisor_override=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + structured: True + precomputed: + - kernel_size -> int kH, int kW + - stride -> int dH, int dW + - padding -> int padH, int padW + dispatch: + CPU: avg_pool2d_out_cpu + CUDA: avg_pool2d_out_cuda + MPS: avg_pool2d_out_mps + MkldnnCPU: mkldnn_avg_pool2d_out + +- func: avg_pool2d(Tensor self, int[2] kernel_size, int[2] stride=[], int[2] padding=0, bool ceil_mode=False, bool count_include_pad=True, int? divisor_override=None) -> Tensor + python_module: nn + structured_delegate: avg_pool2d.out + dispatch: + MkldnnCPU: mkldnn_avg_pool2d + QuantizedCPU: avg_pool2d_quantized_cpu + tags: core + +- func: avg_pool2d_backward.grad_input(Tensor grad_output, Tensor self, int[2] kernel_size, int[2] stride, int[2] padding, bool ceil_mode, bool count_include_pad, int? divisor_override, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: avg_pool2d_backward_out_cpu + CUDA: avg_pool2d_backward_out_cuda + MPS: avg_pool2d_backward_out_mps + MkldnnCPU: mkldnn_avg_pool2d_backward_out + +- func: avg_pool2d_backward(Tensor grad_output, Tensor self, int[2] kernel_size, int[2] stride, int[2] padding, bool ceil_mode, bool count_include_pad, int? divisor_override) -> Tensor + python_module: nn + structured_delegate: avg_pool2d_backward.grad_input + dispatch: + MkldnnCPU: mkldnn_avg_pool2d_backward + tags: core + +- func: avg_pool3d.out(Tensor self, int[3] kernel_size, int[3] stride=[], int[3] padding=0, bool ceil_mode=False, bool count_include_pad=True, int? divisor_override=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: avg_pool3d_out_cpu + CUDA: avg_pool3d_out_cuda + MPS: avg_pool3d_out_mps + MkldnnCPU: mkldnn_avg_pool3d_out + +- func: avg_pool3d(Tensor self, int[3] kernel_size, int[3] stride=[], int[3] padding=0, bool ceil_mode=False, bool count_include_pad=True, int? divisor_override=None) -> Tensor + python_module: nn + structured_delegate: avg_pool3d.out + dispatch: + MkldnnCPU: mkldnn_avg_pool3d + QuantizedCPU: avg_pool3d_quantized_cpu + tags: core + +- func: avg_pool3d_backward.grad_input(Tensor grad_output, Tensor self, int[3] kernel_size, int[3] stride, int[3] padding, bool ceil_mode, bool count_include_pad, int? divisor_override, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: avg_pool3d_backward_out_cpu + CUDA: avg_pool3d_backward_out_cuda + MPS: avg_pool3d_backward_out_mps + MkldnnCPU: mkldnn_avg_pool3d_backward_out + +- func: avg_pool3d_backward(Tensor grad_output, Tensor self, int[3] kernel_size, int[3] stride, int[3] padding, bool ceil_mode, bool count_include_pad, int? divisor_override) -> Tensor + python_module: nn + structured_delegate: avg_pool3d_backward.grad_input + dispatch: + MkldnnCPU: mkldnn_avg_pool3d_backward + +# Return: (Tensor output, Tensor indices) +- func: fractional_max_pool2d.output(Tensor self, int[2] kernel_size, int[2] output_size, Tensor random_samples, *, Tensor(a!) output, Tensor(b!) indices) -> (Tensor(a!), Tensor(b!)) + python_module: nn + structured: True + dispatch: + CPU: fractional_max_pool2d_out_cpu + CUDA: fractional_max_pool2d_out_cuda + +# Return: (Tensor output, Tensor indices) +- func: fractional_max_pool2d(Tensor self, int[2] kernel_size, int[2] output_size, Tensor random_samples) -> (Tensor, Tensor) + python_module: nn + structured_delegate: fractional_max_pool2d.output + +- func: fractional_max_pool2d_backward.grad_input(Tensor grad_output, Tensor self, int[2] kernel_size, int[2] output_size, Tensor indices, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: fractional_max_pool2d_backward_cpu + CUDA: fractional_max_pool2d_backward_cuda + +- func: fractional_max_pool2d_backward(Tensor grad_output, Tensor self, int[2] kernel_size, int[2] output_size, Tensor indices) -> Tensor + python_module: nn + structured_delegate: fractional_max_pool2d_backward.grad_input + +# Return: (Tensor output, Tensor indices) +- func: fractional_max_pool3d.output(Tensor self, int[3] kernel_size, int[3] output_size, Tensor random_samples, *, Tensor(a!) output, Tensor(b!) indices) -> (Tensor(a!), Tensor(b!)) + python_module: nn + structured: True + precomputed: + - kernel_size -> int poolSizeT, int poolSizeH, int poolSizeW + - output_size -> int outputT, int outputH, int outputW + - int numBatch, int numPlanes, int inputT, int inputH, int inputW + dispatch: + CPU: fractional_max_pool3d_out_cpu + CUDA: fractional_max_pool3d_out_cuda + +# Return: (Tensor output, Tensor indices) +- func: fractional_max_pool3d(Tensor self, int[3] kernel_size, int[3] output_size, Tensor random_samples) -> (Tensor, Tensor) + python_module: nn + structured_delegate: fractional_max_pool3d.output + +- func: fractional_max_pool3d_backward.grad_input(Tensor grad_output, Tensor self, int[3] kernel_size, int[3] output_size, Tensor indices, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + dispatch: + CPU: fractional_max_pool3d_backward_out_cpu + CUDA: fractional_max_pool3d_backward_out_cuda + +- func: fractional_max_pool3d_backward(Tensor grad_output, Tensor self, int[3] kernel_size, int[3] output_size, Tensor indices) -> Tensor + python_module: nn + dispatch: + CPU: fractional_max_pool3d_backward_cpu + CUDA: fractional_max_pool3d_backward_cuda + +# Return: (Tensor output, Tensor indices) +- func: max_pool2d_with_indices.out(Tensor self, int[2] kernel_size, int[2] stride=[], int[2] padding=0, int[2] dilation=1, bool ceil_mode=False, *, Tensor(a!) out, Tensor(b!) indices) -> (Tensor(a!), Tensor(b!)) + python_module: nn + structured: True + dispatch: + CPU: max_pool2d_with_indices_out_cpu + CUDA: max_pool2d_with_indices_out_cuda + MPS: max_pool2d_with_indices_out_mps + +# Return: (Tensor output, Tensor indices) +- func: max_pool2d_with_indices(Tensor self, int[2] kernel_size, int[2] stride=[], int[2] padding=0, int[2] dilation=1, bool ceil_mode=False) -> (Tensor, Tensor) + python_module: nn + structured_delegate: max_pool2d_with_indices.out + tags: core + +- func: max_pool2d_with_indices_backward.grad_input(Tensor grad_output, Tensor self, int[2] kernel_size, int[2] stride, int[2] padding, int[2] dilation, bool ceil_mode, Tensor indices, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: max_pool2d_with_indices_backward_out_cpu + CUDA: max_pool2d_with_indices_backward_out_cuda + MPS: max_pool2d_with_indices_backward_out_mps + +- func: max_pool2d_with_indices_backward(Tensor grad_output, Tensor self, int[2] kernel_size, int[2] stride, int[2] padding, int[2] dilation, bool ceil_mode, Tensor indices) -> Tensor + python_module: nn + structured_delegate: max_pool2d_with_indices_backward.grad_input + tags: core + +# Return: (Tensor output, Tensor indices) +- func: max_pool3d_with_indices.out(Tensor self, int[3] kernel_size, int[3] stride=[], int[3] padding=0, int[3] dilation=1, bool ceil_mode=False, *, Tensor(a!) out, Tensor(b!) indices) -> (Tensor(a!), Tensor(b!)) + python_module: nn + dispatch: + CPU: max_pool3d_with_indices_out_cpu + CUDA: max_pool3d_with_indices_out_cuda + MPS: max_pool3d_with_indices_out_mps + +# Return: (Tensor output, Tensor indices) +- func: max_pool3d_with_indices(Tensor self, int[3] kernel_size, int[3] stride=[], int[3] padding=0, int[3] dilation=1, bool ceil_mode=False) -> (Tensor, Tensor) + python_module: nn + dispatch: + CPU: max_pool3d_with_indices_cpu + CUDA: max_pool3d_with_indices_cuda + MPS: max_pool3d_with_indices_mps + tags: core + +- func: max_pool3d_with_indices_backward.grad_input(Tensor grad_output, Tensor self, int[3] kernel_size, int[3] stride, int[3] padding, int[3] dilation, bool ceil_mode, Tensor indices, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + dispatch: + CPU: max_pool3d_with_indices_backward_out_cpu + CUDA: max_pool3d_with_indices_backward_out_cuda + MPS: max_pool3d_with_indices_backward_out_mps + +- func: max_pool3d_with_indices_backward(Tensor grad_output, Tensor self, int[3] kernel_size, int[3] stride, int[3] padding, int[3] dilation, bool ceil_mode, Tensor indices) -> Tensor + python_module: nn + dispatch: + CPU: max_pool3d_with_indices_backward_cpu + CUDA: max_pool3d_with_indices_backward_cuda + MPS: max_pool3d_with_indices_backward_mps + +- func: max_unpool2d.out(Tensor self, Tensor indices, SymInt[2] output_size, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + dispatch: + CPU: max_unpooling2d_forward_out_cpu + CUDA: max_unpooling2d_forward_out_cuda + MPS: max_unpooling2d_forward_out_mps + +- func: max_unpool2d(Tensor self, Tensor indices, SymInt[2] output_size) -> Tensor + python_module: nn + dispatch: + CPU: max_unpooling2d_forward_cpu + CUDA: max_unpooling2d_forward_cuda + MPS: max_unpooling2d_forward_mps + +- func: max_unpool3d.out(Tensor self, Tensor indices, SymInt[3] output_size, int[3] stride, int[3] padding, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + dispatch: + CPU: max_unpooling3d_forward_out_cpu + CUDA: max_unpooling3d_forward_out_cuda + MPS: max_unpooling3d_forward_out_mps + +- func: max_unpool3d(Tensor self, Tensor indices, SymInt[3] output_size, int[3] stride, int[3] padding) -> Tensor + python_module: nn + dispatch: + CPU: max_unpooling3d_forward_cpu + CUDA: max_unpooling3d_forward_cuda + MPS: max_unpooling3d_forward_mps + +- func: reflection_pad1d.out(Tensor self, SymInt[2] padding, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: reflection_pad1d_out_cpu + QuantizedCPU: reflection_pad1d_out_quantized_cpu + CUDA: reflection_pad1d_out_cuda + MPS: reflection_pad1d_out_mps + +- func: reflection_pad1d(Tensor self, SymInt[2] padding) -> Tensor + python_module: nn + structured_delegate: reflection_pad1d.out + tags: core + +- func: reflection_pad1d_backward.grad_input(Tensor grad_output, Tensor self, SymInt[2] padding, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: reflection_pad1d_backward_out_cpu + CUDA: reflection_pad1d_backward_out_cuda + MPS: reflection_pad1d_backward_out_mps + +- func: reflection_pad1d_backward(Tensor grad_output, Tensor self, SymInt[2] padding) -> Tensor + python_module: nn + structured_delegate: reflection_pad1d_backward.grad_input + +- func: reflection_pad2d.out(Tensor self, SymInt[4] padding, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + dispatch: + CPU, QuantizedCPU: reflection_pad2d_out_cpu + CUDA: reflection_pad2d_out_cuda + MPS: reflection_pad2d_out_mps + +- func: reflection_pad2d(Tensor self, SymInt[4] padding) -> Tensor + python_module: nn + dispatch: + CPU: reflection_pad2d_cpu + QuantizedCPU: reflection_pad2d_quantized_cpu + CUDA: reflection_pad2d_cuda + MPS: reflection_pad2d_mps + tags: core + +- func: reflection_pad2d_backward.grad_input(Tensor grad_output, Tensor self, SymInt[4] padding, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + dispatch: + CPU: reflection_pad2d_backward_out_cpu + CUDA: reflection_pad2d_backward_out_cuda + MPS: reflection_pad2d_backward_out_mps + +- func: reflection_pad2d_backward(Tensor grad_output, Tensor self, SymInt[4] padding) -> Tensor + python_module: nn + dispatch: + CPU: reflection_pad2d_backward_cpu + CUDA: reflection_pad2d_backward_cuda + MPS: reflection_pad2d_backward_mps + +- func: reflection_pad3d.out(Tensor self, SymInt[6] padding, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: reflection_pad3d_out_cpu + CUDA: reflection_pad3d_out_cuda + MPS: reflection_pad3d_out_mps + +- func: reflection_pad3d(Tensor self, SymInt[6] padding) -> Tensor + python_module: nn + structured_delegate: reflection_pad3d.out + tags: core + +- func: reflection_pad3d_backward.grad_input(Tensor grad_output, Tensor self, SymInt[6] padding, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: reflection_pad3d_backward_out_cpu + CUDA: reflection_pad3d_backward_out_cuda + MPS: reflection_pad3d_backward_out_mps + +- func: reflection_pad3d_backward(Tensor grad_output, Tensor self, SymInt[6] padding) -> Tensor + python_module: nn + structured_delegate: reflection_pad3d_backward.grad_input + +- func: replication_pad1d.out(Tensor self, SymInt[2] padding, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: replication_pad1d_out_cpu + CUDA: replication_pad1d_out_cuda + MPS: replication_pad1d_out_mps + +- func: replication_pad1d(Tensor self, SymInt[2] padding) -> Tensor + python_module: nn + structured_delegate: replication_pad1d.out + +- func: replication_pad1d_backward.grad_input(Tensor grad_output, Tensor self, SymInt[2] padding, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: replication_pad1d_backward_out_cpu + CUDA: replication_pad1d_backward_out_cuda + MPS: replication_pad1d_backward_out_mps + +- func: replication_pad1d_backward(Tensor grad_output, Tensor self, SymInt[2] padding) -> Tensor + python_module: nn + structured_delegate: replication_pad1d_backward.grad_input + +- func: replication_pad2d.out(Tensor self, SymInt[4] padding, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: replication_pad2d_out_cpu + CUDA: replication_pad2d_out_cuda + MPS: replication_pad2d_out_mps + +- func: replication_pad2d(Tensor self, SymInt[4] padding) -> Tensor + python_module: nn + structured_delegate: replication_pad2d.out + tags: core + +- func: replication_pad2d_backward.grad_input(Tensor grad_output, Tensor self, SymInt[4] padding, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + dispatch: + CPU: replication_pad2d_backward_out_cpu + CUDA: replication_pad2d_backward_out_cuda + MPS: replication_pad2d_backward_out_mps + +- func: replication_pad2d_backward(Tensor grad_output, Tensor self, SymInt[4] padding) -> Tensor + python_module: nn + dispatch: + CPU: replication_pad2d_backward_cpu + CUDA: replication_pad2d_backward_cuda + MPS: replication_pad2d_backward_mps + +- func: replication_pad3d.out(Tensor self, SymInt[6] padding, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: replication_pad3d_out_cpu + CUDA: replication_pad3d_out_cuda + MPS: replication_pad3d_out_mps + +- func: replication_pad3d(Tensor self, SymInt[6] padding) -> Tensor + python_module: nn + structured_delegate: replication_pad3d.out + tags: core + + +- func: replication_pad3d_backward.grad_input(Tensor grad_output, Tensor self, SymInt[6] padding, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + dispatch: + CPU: replication_pad3d_backward_out_cpu + CUDA: replication_pad3d_backward_out_cuda + MPS: replication_pad3d_backward_out_mps + +- func: replication_pad3d_backward(Tensor grad_output, Tensor self, SymInt[6] padding) -> Tensor + python_module: nn + dispatch: + CPU: replication_pad3d_backward_cpu + CUDA: replication_pad3d_backward_cuda + MPS: replication_pad3d_backward_mps + +- func: _pad_circular(Tensor self, SymInt[] pad) -> Tensor + python_module: nn + dispatch: + CompositeImplicitAutograd: _pad_circular_symint + +- func: _pad_enum(Tensor self, SymInt[] pad, int mode, float? value=None) -> Tensor + python_module: nn + dispatch: + CompositeImplicitAutograd: _pad_enum_symint + +- func: pad(Tensor self, SymInt[] pad, str mode="constant", float? value=None) -> Tensor + python_module: nn + dispatch: + CompositeImplicitAutograd: pad_symint + +- func: upsample_linear1d.vec(Tensor input, SymInt[]? output_size, bool align_corners, float[]? scale_factors) -> Tensor + python_module: nn + autogen: upsample_linear1d.vec_out + +- func: upsample_bilinear2d.vec(Tensor input, SymInt[]? output_size, bool align_corners, float[]? scale_factors) -> Tensor + python_module: nn + autogen: upsample_bilinear2d.vec_out + tags: core + +- func: _upsample_bilinear2d_aa.vec(Tensor input, SymInt[]? output_size, bool align_corners, float[]? scale_factors) -> Tensor + python_module: nn + autogen: _upsample_bilinear2d_aa.vec_out + +- func: upsample_trilinear3d.vec(Tensor input, SymInt[]? output_size, bool align_corners, float[]? scale_factors) -> Tensor + python_module: nn + autogen: upsample_trilinear3d.vec_out + +- func: upsample_bicubic2d.vec(Tensor input, SymInt[]? output_size, bool align_corners, float[]? scale_factors) -> Tensor + python_module: nn + autogen: upsample_bicubic2d.vec_out + +- func: _upsample_bicubic2d_aa.vec(Tensor input, SymInt[]? output_size, bool align_corners, float[]? scale_factors) -> Tensor + python_module: nn + autogen: _upsample_bicubic2d_aa.vec_out + +- func: _upsample_lanczos2d_aa.vec(Tensor input, SymInt[]? output_size, bool align_corners, float[]? scale_factors) -> Tensor + python_module: nn + autogen: _upsample_lanczos2d_aa.vec_out + +- func: upsample_nearest1d.vec(Tensor input, SymInt[]? output_size, float[]? scale_factors) -> Tensor + python_module: nn + autogen: upsample_nearest1d.vec_out + +- func: _upsample_nearest_exact1d.vec(Tensor input, SymInt[]? output_size, float[]? scale_factors) -> Tensor + python_module: nn + autogen: _upsample_nearest_exact1d.vec_out + +- func: upsample_nearest2d.vec(Tensor input, SymInt[]? output_size, float[]? scale_factors) -> Tensor + python_module: nn + autogen: upsample_nearest2d.vec_out + tags: core + +- func: _upsample_nearest_exact2d.vec(Tensor input, SymInt[]? output_size, float[]? scale_factors) -> Tensor + python_module: nn + autogen: _upsample_nearest_exact2d.vec_out + +- func: upsample_nearest3d.vec(Tensor input, SymInt[]? output_size, float[]? scale_factors) -> Tensor + python_module: nn + autogen: upsample_nearest3d.vec_out + +- func: _upsample_nearest_exact3d.vec(Tensor input, SymInt[]? output_size, float[]? scale_factors) -> Tensor + python_module: nn + autogen: _upsample_nearest_exact3d.vec_out + +# NOTE: all of the non-"vec" upsample overloads are only kept for backward compatibility. +- func: upsample_linear1d.out(Tensor self, SymInt[1] output_size, bool align_corners, float? scales=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: upsample_linear1d_out_cpu + CUDA: upsample_linear1d_out_cuda + MPS: upsample_linear1d_out_mps + +- func: upsample_linear1d(Tensor self, SymInt[1] output_size, bool align_corners, float? scales=None) -> Tensor + python_module: nn + structured_delegate: upsample_linear1d.out + +- func: upsample_linear1d_backward.grad_input(Tensor grad_output, SymInt[1] output_size, SymInt[3] input_size, bool align_corners, float? scales=None, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: upsample_linear1d_backward_out_cpu + CUDA: upsample_linear1d_backward_out_cuda + MPS: upsample_linear1d_backward_out_mps + +- func: upsample_linear1d_backward(Tensor grad_output, SymInt[1] output_size, SymInt[3] input_size, bool align_corners, float? scales=None) -> Tensor + python_module: nn + structured_delegate: upsample_linear1d_backward.grad_input + +- func: upsample_bilinear2d.out(Tensor self, SymInt[2] output_size, bool align_corners, float? scales_h=None, float? scales_w=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: upsample_bilinear2d_out_cpu + CUDA: upsample_bilinear2d_out_cuda + MPS: upsample_bilinear2d_out_mps + +- func: upsample_bilinear2d(Tensor self, SymInt[2] output_size, bool align_corners, float? scales_h=None, float? scales_w=None) -> Tensor + python_module: nn + structured_delegate: upsample_bilinear2d.out + dispatch: + QuantizedCPU: upsample_bilinear2d_quantized_cpu + +- func: upsample_bilinear2d_backward.grad_input(Tensor grad_output, SymInt[2] output_size, SymInt[4] input_size, bool align_corners, float? scales_h=None, float? scales_w=None, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: upsample_bilinear2d_backward_out_cpu + CUDA: upsample_bilinear2d_backward_out_cuda + MPS: upsample_bilinear2d_backward_out_mps + +- func: upsample_bilinear2d_backward(Tensor grad_output, SymInt[2] output_size, SymInt[4] input_size, bool align_corners, float? scales_h=None, float? scales_w=None) -> Tensor + python_module: nn + structured_delegate: upsample_bilinear2d_backward.grad_input + +- func: _upsample_bilinear2d_aa.out(Tensor self, SymInt[2] output_size, bool align_corners, float? scales_h=None, float? scales_w=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: _upsample_bilinear2d_aa_out_cpu + CUDA: _upsample_bilinear2d_aa_out_cuda + MPS: _upsample_bilinear2d_aa_out_mps + +- func: _upsample_bilinear2d_aa(Tensor self, SymInt[2] output_size, bool align_corners, float? scales_h=None, float? scales_w=None) -> Tensor + python_module: nn + structured_delegate: _upsample_bilinear2d_aa.out + +- func: _upsample_bilinear2d_aa_backward.grad_input(Tensor grad_output, SymInt[2] output_size, SymInt[4] input_size, bool align_corners, float? scales_h=None, float? scales_w=None, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: _upsample_bilinear2d_aa_backward_out_cpu + CUDA: _upsample_bilinear2d_aa_backward_out_cuda + +- func: _upsample_bilinear2d_aa_backward(Tensor grad_output, SymInt[2] output_size, SymInt[4] input_size, bool align_corners, float? scales_h=None, float? scales_w=None) -> Tensor + python_module: nn + structured_delegate: _upsample_bilinear2d_aa_backward.grad_input + +- func: upsample_bicubic2d.out(Tensor self, SymInt[2] output_size, bool align_corners, float? scales_h=None, float? scales_w=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: upsample_bicubic2d_out_cpu + CUDA: upsample_bicubic2d_out_cuda + MPS: upsample_bicubic2d_out_mps + +- func: upsample_bicubic2d(Tensor self, SymInt[2] output_size, bool align_corners, float? scales_h=None, float? scales_w=None) -> Tensor + python_module: nn + structured_delegate: upsample_bicubic2d.out + +- func: upsample_bicubic2d_backward.grad_input(Tensor grad_output, SymInt[2] output_size, SymInt[4] input_size, bool align_corners, float? scales_h=None, float? scales_w=None, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: upsample_bicubic2d_backward_out_cpu + CUDA: upsample_bicubic2d_backward_out_cuda + MPS: upsample_bicubic2d_backward_out_mps + +- func: upsample_bicubic2d_backward(Tensor grad_output, SymInt[2] output_size, SymInt[4] input_size, bool align_corners, float? scales_h=None, float? scales_w=None) -> Tensor + python_module: nn + structured_delegate: upsample_bicubic2d_backward.grad_input + +- func: _upsample_bicubic2d_aa.out(Tensor self, SymInt[2] output_size, bool align_corners, float? scales_h=None, float? scales_w=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: _upsample_bicubic2d_aa_out_cpu + CUDA: _upsample_bicubic2d_aa_out_cuda + MPS: _upsample_bicubic2d_aa_out_mps + +- func: _upsample_bicubic2d_aa(Tensor self, SymInt[2] output_size, bool align_corners, float? scales_h=None, float? scales_w=None) -> Tensor + python_module: nn + structured_delegate: _upsample_bicubic2d_aa.out + +- func: _upsample_bicubic2d_aa_backward.grad_input(Tensor grad_output, SymInt[2] output_size, SymInt[4] input_size, bool align_corners, float? scales_h=None, float? scales_w=None, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: _upsample_bicubic2d_aa_backward_out_cpu + CUDA: _upsample_bicubic2d_aa_backward_out_cuda + +- func: _upsample_bicubic2d_aa_backward(Tensor grad_output, SymInt[2] output_size, SymInt[4] input_size, bool align_corners, float? scales_h=None, float? scales_w=None) -> Tensor + python_module: nn + structured_delegate: _upsample_bicubic2d_aa_backward.grad_input + +- func: _upsample_lanczos2d_aa.out(Tensor self, SymInt[2] output_size, bool align_corners, float? scales_h=None, float? scales_w=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: _upsample_lanczos2d_aa_out_cpu + +- func: _upsample_lanczos2d_aa(Tensor self, SymInt[2] output_size, bool align_corners, float? scales_h=None, float? scales_w=None) -> Tensor + python_module: nn + structured_delegate: _upsample_lanczos2d_aa.out + +- func: _upsample_lanczos2d_aa_backward.grad_input(Tensor grad_output, SymInt[2] output_size, SymInt[4] input_size, bool align_corners, float? scales_h=None, float? scales_w=None, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: _upsample_lanczos2d_aa_backward_out_cpu + +- func: _upsample_lanczos2d_aa_backward(Tensor grad_output, SymInt[2] output_size, SymInt[4] input_size, bool align_corners, float? scales_h=None, float? scales_w=None) -> Tensor + python_module: nn + structured_delegate: _upsample_lanczos2d_aa_backward.grad_input + +- func: upsample_trilinear3d.out(Tensor self, SymInt[3] output_size, bool align_corners, float? scales_d=None, float? scales_h=None, float? scales_w=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: upsample_trilinear3d_out_cpu + CUDA: upsample_trilinear3d_out_cuda + MPS: upsample_trilinear3d_out_mps + +- func: upsample_trilinear3d(Tensor self, SymInt[3] output_size, bool align_corners, float? scales_d=None, float? scales_h=None, float? scales_w=None) -> Tensor + python_module: nn + structured_delegate: upsample_trilinear3d.out + +- func: upsample_trilinear3d_backward.grad_input(Tensor grad_output, SymInt[3] output_size, SymInt[5] input_size, bool align_corners, float? scales_d=None, float? scales_h=None, float? scales_w=None, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: upsample_trilinear3d_backward_out_cpu + CUDA: upsample_trilinear3d_backward_out_cuda + MPS: upsample_trilinear3d_backward_out_mps + +- func: upsample_trilinear3d_backward(Tensor grad_output, SymInt[3] output_size, SymInt[5] input_size, bool align_corners, float? scales_d=None, float? scales_h=None, float? scales_w=None) -> Tensor + python_module: nn + structured_delegate: upsample_trilinear3d_backward.grad_input + +- func: upsample_nearest1d.out(Tensor self, SymInt[1] output_size, float? scales=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: upsample_nearest1d_out_cpu + CUDA: upsample_nearest1d_out_cuda + MPS: upsample_nearest1d_out_mps + +- func: _upsample_nearest_exact1d.out(Tensor self, SymInt[1] output_size, float? scales=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: _upsample_nearest_exact1d_out_cpu + CUDA: _upsample_nearest_exact1d_out_cuda + MPS: _upsample_nearest_exact1d_out_mps + +- func: upsample_nearest1d(Tensor self, SymInt[1] output_size, float? scales=None) -> Tensor + python_module: nn + structured_delegate: upsample_nearest1d.out + +- func: _upsample_nearest_exact1d(Tensor self, SymInt[1] output_size, float? scales=None) -> Tensor + python_module: nn + structured_delegate: _upsample_nearest_exact1d.out + +- func: upsample_nearest1d_backward.grad_input(Tensor grad_output, SymInt[1] output_size, SymInt[3] input_size, float? scales=None, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: upsample_nearest1d_backward_out_cpu + CUDA: upsample_nearest1d_backward_out_cuda + MPS: upsample_nearest1d_backward_out_mps + +- func: _upsample_nearest_exact1d_backward.grad_input(Tensor grad_output, SymInt[1] output_size, SymInt[3] input_size, float? scales=None, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: _upsample_nearest_exact1d_backward_out_cpu + CUDA: _upsample_nearest_exact1d_backward_out_cuda + MPS: _upsample_nearest_exact1d_backward_out_mps + +- func: upsample_nearest1d_backward(Tensor grad_output, SymInt[1] output_size, SymInt[3] input_size, float? scales=None) -> Tensor + python_module: nn + structured_delegate: upsample_nearest1d_backward.grad_input + +- func: _upsample_nearest_exact1d_backward(Tensor grad_output, SymInt[1] output_size, SymInt[3] input_size, float? scales=None) -> Tensor + python_module: nn + structured_delegate: _upsample_nearest_exact1d_backward.grad_input + +- func: upsample_nearest2d.out(Tensor self, SymInt[2] output_size, float? scales_h=None, float? scales_w=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: upsample_nearest2d_out_cpu + CUDA: upsample_nearest2d_out_cuda + MPS: upsample_nearest2d_out_mps + +- func: _upsample_nearest_exact2d.out(Tensor self, SymInt[2] output_size, float? scales_h=None, float? scales_w=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: _upsample_nearest_exact2d_out_cpu + CUDA: _upsample_nearest_exact2d_out_cuda + MPS: _upsample_nearest_exact2d_out_mps + +- func: upsample_nearest2d(Tensor self, SymInt[2] output_size, float? scales_h=None, float? scales_w=None) -> Tensor + python_module: nn + structured_delegate: upsample_nearest2d.out + dispatch: + QuantizedCPU: upsample_nearest2d_quantized_cpu + +- func: _upsample_nearest_exact2d(Tensor self, SymInt[2] output_size, float? scales_h=None, float? scales_w=None) -> Tensor + python_module: nn + structured_delegate: _upsample_nearest_exact2d.out + dispatch: + QuantizedCPU: _upsample_nearest_exact2d_quantized_cpu + +- func: upsample_nearest2d_backward.grad_input(Tensor grad_output, SymInt[2] output_size, SymInt[4] input_size, float? scales_h=None, float? scales_w=None, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: upsample_nearest2d_backward_out_cpu + CUDA: upsample_nearest2d_backward_out_cuda + MPS: upsample_nearest2d_backward_out_mps + +- func: _upsample_nearest_exact2d_backward.grad_input(Tensor grad_output, SymInt[2] output_size, SymInt[4] input_size, float? scales_h=None, float? scales_w=None, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: _upsample_nearest_exact2d_backward_out_cpu + CUDA: _upsample_nearest_exact2d_backward_out_cuda + MPS: _upsample_nearest_exact2d_backward_out_mps + +- func: upsample_nearest2d_backward(Tensor grad_output, SymInt[2] output_size, SymInt[4] input_size, float? scales_h=None, float? scales_w=None) -> Tensor + python_module: nn + structured_delegate: upsample_nearest2d_backward.grad_input + +- func: _upsample_nearest_exact2d_backward(Tensor grad_output, SymInt[2] output_size, SymInt[4] input_size, float? scales_h=None, float? scales_w=None) -> Tensor + python_module: nn + structured_delegate: _upsample_nearest_exact2d_backward.grad_input + +- func: upsample_nearest3d.out(Tensor self, SymInt[3] output_size, float? scales_d=None, float? scales_h=None, float? scales_w=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: upsample_nearest3d_out_cpu + CUDA: upsample_nearest3d_out_cuda + MPS: upsample_nearest3d_out_mps + +- func: _upsample_nearest_exact3d.out(Tensor self, SymInt[3] output_size, float? scales_d=None, float? scales_h=None, float? scales_w=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: _upsample_nearest_exact3d_out_cpu + CUDA: _upsample_nearest_exact3d_out_cuda + MPS: _upsample_nearest_exact3d_out_mps + +- func: upsample_nearest3d(Tensor self, SymInt[3] output_size, float? scales_d=None, float? scales_h=None, float? scales_w=None) -> Tensor + python_module: nn + structured_delegate: upsample_nearest3d.out + dispatch: + QuantizedCPU: upsample_nearest3d_quantized_cpu + +- func: _upsample_nearest_exact3d(Tensor self, SymInt[3] output_size, float? scales_d=None, float? scales_h=None, float? scales_w=None) -> Tensor + python_module: nn + structured_delegate: _upsample_nearest_exact3d.out + dispatch: + QuantizedCPU: _upsample_nearest_exact3d_quantized_cpu + +- func: upsample_nearest3d_backward.grad_input(Tensor grad_output, SymInt[3] output_size, SymInt[5] input_size, float? scales_d=None, float? scales_h=None, float? scales_w=None, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: upsample_nearest3d_backward_out_cpu + CUDA: upsample_nearest3d_backward_out_cuda + MPS: upsample_nearest3d_backward_out_mps + +- func: _upsample_nearest_exact3d_backward.grad_input(Tensor grad_output, SymInt[3] output_size, SymInt[5] input_size, float? scales_d=None, float? scales_h=None, float? scales_w=None, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: _upsample_nearest_exact3d_backward_out_cpu + CUDA: _upsample_nearest_exact3d_backward_out_cuda + MPS: _upsample_nearest_exact3d_backward_out_mps + +- func: upsample_nearest3d_backward(Tensor grad_output, SymInt[3] output_size, SymInt[5] input_size, float? scales_d=None, float? scales_h=None, float? scales_w=None) -> Tensor + python_module: nn + structured_delegate: upsample_nearest3d_backward.grad_input + +- func: _upsample_nearest_exact3d_backward(Tensor grad_output, SymInt[3] output_size, SymInt[5] input_size, float? scales_d=None, float? scales_h=None, float? scales_w=None) -> Tensor + python_module: nn + structured_delegate: _upsample_nearest_exact3d_backward.grad_input + +- func: sigmoid_backward.grad_input(Tensor grad_output, Tensor output, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA: sigmoid_backward_out + MPS: sigmoid_backward_out_mps + tags: pointwise + +- func: sigmoid_backward(Tensor grad_output, Tensor output) -> Tensor + python_module: nn + structured_delegate: sigmoid_backward.grad_input + tags: pointwise + +- func: logit_backward.grad_input(Tensor grad_output, Tensor self, float? eps=None, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA: logit_backward_out + MPS: logit_backward_out_mps + tags: pointwise + +- func: logit_backward(Tensor grad_output, Tensor self, float? eps=None) -> Tensor + python_module: nn + structured_delegate: logit_backward.grad_input + tags: pointwise + +- func: tanh_backward.grad_input(Tensor grad_output, Tensor output, *, Tensor(a!) grad_input) -> Tensor(a!) + python_module: nn + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MTIA: tanh_backward_out + MPS: tanh_backward_out_mps + tags: pointwise + +- func: tanh_backward(Tensor grad_output, Tensor output) -> Tensor + python_module: nn + structured_delegate: tanh_backward.grad_input + +# What's a thnn_conv_ versus a slow_conv_? +# +# Historically, we have inefficient implementations of convolutions +# coming from the THNN/THCUNN library. These convolutions typically +# operated by computing the Toeplitz matrix and then doing a matrix +# multiply with the input; this is very memory inefficient! However, +# occasionally, we really don't have anything better, so it's helpful +# to have these fallbacks when there is no more optimized implementation +# in cudnn or mkldnn, etc. Both thnn_ and slow_ convolutions fall +# into this bucket. +# +# The difference between these two designations, is that thnn_ refers +# to a convolution that is still written in the "legacy" style; that is, +# C code in the THNN/ or THCUNN/ directory. A slow_ convolution is +# one that is written in the native style: modern C++. Algorithmically, +# these are the same thing, but we give them different prefixes to +# make the operational distinction clear. + tags: pointwise + +- func: slow_conv_transpose2d.out(Tensor self, Tensor weight, SymInt[2] kernel_size, Tensor? bias=None, SymInt[2] stride=1, SymInt[2] padding=0, SymInt[2] output_padding=0, SymInt[2] dilation=1, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + structured: True + dispatch: + CPU: slow_conv_transpose2d_structured_cpu + CUDA: slow_conv_transpose2d_structured_cuda + +- func: slow_conv_transpose2d(Tensor self, Tensor weight, SymInt[2] kernel_size, Tensor? bias=None, SymInt[2] stride=1, SymInt[2] padding=0, SymInt[2] output_padding=0, SymInt[2] dilation=1) -> Tensor + python_module: nn + structured_delegate: slow_conv_transpose2d.out + +- func: slow_conv_transpose3d.out(Tensor self, Tensor weight, SymInt[3] kernel_size, Tensor? bias=None, SymInt[3] stride=1, SymInt[3] padding=0, SymInt[3] output_padding=0, SymInt[3] dilation=1, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + dispatch: + CPU: slow_conv_transpose3d_out_cpu + CUDA: slow_conv_transpose3d_out_cuda + +- func: slow_conv_transpose3d(Tensor self, Tensor weight, SymInt[3] kernel_size, Tensor? bias=None, SymInt[3] stride=1, SymInt[3] padding=0, SymInt[3] output_padding=0, SymInt[3] dilation=1) -> Tensor + python_module: nn + dispatch: + CPU: slow_conv_transpose3d_cpu + CUDA: slow_conv_transpose3d_cuda + +- func: thnn_conv2d.out(Tensor self, Tensor weight, SymInt[2] kernel_size, Tensor? bias=None, SymInt[2] stride=1, SymInt[2] padding=0, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + +- func: thnn_conv2d(Tensor self, Tensor weight, SymInt[2] kernel_size, Tensor? bias=None, SymInt[2] stride=1, SymInt[2] padding=0) -> Tensor + python_module: nn + +- func: _slow_conv2d_forward.output(Tensor self, Tensor weight, SymInt[2] kernel_size, Tensor? bias, SymInt[2] stride, SymInt[2] padding, *, Tensor(a!) output) -> Tensor(a!) + python_module: nn + dispatch: + CPU: slow_conv2d_forward_out_cpu + CUDA: slow_conv2d_forward_out_cuda + +- func: _slow_conv2d_forward(Tensor self, Tensor weight, SymInt[2] kernel_size, Tensor? bias, SymInt[2] stride, SymInt[2] padding) -> Tensor + python_module: nn + dispatch: + CPU: slow_conv2d_forward_cpu + CUDA: slow_conv2d_forward_cuda + +- func: _slow_conv2d_backward.grad_input(Tensor grad_output, Tensor self, Tensor weight, SymInt[2] kernel_size, SymInt[2] stride, SymInt[2] padding, *, Tensor(a!) grad_input, Tensor(b!) grad_weight, Tensor(c!) grad_bias) -> (Tensor(a!), Tensor(b!), Tensor(c!)) + python_module: nn + dispatch: + CPU: slow_conv2d_backward_out_cpu + CUDA: slow_conv2d_backward_out_cuda + +- func: _slow_conv2d_backward.output_mask(Tensor grad_output, Tensor self, Tensor weight, SymInt[2] kernel_size, SymInt[2] stride, SymInt[2] padding, bool[3] output_mask) -> (Tensor grad_input, Tensor grad_weight, Tensor grad_bias) + python_module: nn + dispatch: + CPU: slow_conv2d_backward_cpu + CUDA: slow_conv2d_backward_cuda + autogen: _slow_conv2d_backward.output_mask_out + +- func: _conv_depthwise2d.out(Tensor self, Tensor weight, SymInt[2] kernel_size, Tensor? bias, SymInt[2] stride, SymInt[2] padding, SymInt[2] dilation, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + dispatch: + CUDA: conv_depthwise2d_cuda_out + +- func: _conv_depthwise2d(Tensor self, Tensor weight, SymInt[2] kernel_size, Tensor? bias, SymInt[2] stride, SymInt[2] padding, SymInt[2] dilation) -> Tensor + python_module: nn + dispatch: + CUDA: conv_depthwise2d_cuda + +- func: conv_depthwise3d(Tensor self, Tensor weight, SymInt[3] kernel_size, Tensor? bias, SymInt[3] stride, SymInt[3] padding, SymInt[3] dilation) -> Tensor + python_module: nn + dispatch: + CUDA: conv_depthwise3d_cuda + autogen: conv_depthwise3d.out + +- func: slow_conv3d.out(Tensor self, Tensor weight, SymInt[3] kernel_size, Tensor? bias=None, SymInt[3] stride=1, SymInt[3] padding=0, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + +- func: slow_conv3d(Tensor self, Tensor weight, SymInt[3] kernel_size, Tensor? bias=None, SymInt[3] stride=1, SymInt[3] padding=0) -> Tensor + python_module: nn + +- func: slow_conv3d_forward.output(Tensor self, Tensor weight, SymInt[3] kernel_size, Tensor? bias, SymInt[3] stride, SymInt[3] padding, *, Tensor(a!) output) -> Tensor(a!) + python_module: nn + dispatch: + CPU: slow_conv3d_forward_out_cpu + +- func: slow_conv3d_forward(Tensor self, Tensor weight, SymInt[3] kernel_size, Tensor? bias, SymInt[3] stride, SymInt[3] padding) -> Tensor + python_module: nn + dispatch: + CPU: slow_conv3d_forward_cpu + +- func: slow_conv_dilated2d(Tensor self, Tensor weight, SymInt[2] kernel_size, Tensor? bias=None, SymInt[2] stride=1, SymInt[2] padding=0, SymInt[2] dilation=1) -> Tensor + python_module: nn + dispatch: + CPU: slow_conv_dilated2d_cpu + CUDA: slow_conv_dilated2d_cuda + autogen: slow_conv_dilated2d.out + +- func: slow_conv_dilated3d(Tensor self, Tensor weight, SymInt[3] kernel_size, Tensor? bias=None, SymInt[3] stride=1, SymInt[3] padding=0, SymInt[3] dilation=1) -> Tensor + python_module: nn + dispatch: + CPU: slow_conv_dilated3d_cpu + CUDA: slow_conv_dilated3d_cuda + autogen: slow_conv_dilated3d.out + +- func: col2im.out(Tensor self, SymInt[2] output_size, int[2] kernel_size, int[2] dilation, int[2] padding, int[2] stride, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + dispatch: + CPU: col2im_out_cpu + CUDA: col2im_out_cuda + MPS: col2im_out_mps + +- func: col2im(Tensor self, SymInt[2] output_size, int[2] kernel_size, int[2] dilation, int[2] padding, int[2] stride) -> Tensor + python_module: nn + dispatch: + CPU: col2im_cpu + CUDA: col2im_cuda + MPS: col2im_mps + tags: core + +- func: column_stack(Tensor[] tensors) -> Tensor + +- func: column_stack.out(Tensor[] tensors, *, Tensor(a!) out) -> Tensor(a!) + +- func: im2col.out(Tensor self, int[2] kernel_size, int[2] dilation, int[2] padding, int[2] stride, *, Tensor(a!) out) -> Tensor(a!) + python_module: nn + dispatch: + CPU: im2col_out_cpu + CUDA: im2col_out_cuda + MPS: im2col_out_mps + +- func: im2col(Tensor self, int[2] kernel_size, int[2] dilation, int[2] padding, int[2] stride) -> Tensor + python_module: nn + dispatch: + CPU: im2col_cpu + CUDA: im2col_cuda + MPS: im2col_mps + +- func: isfinite(Tensor self) -> Tensor + variants: function, method + device_check: NoCheck + device_guard: False + tags: pointwise + +- func: isinf(Tensor self) -> Tensor + variants: function, method + device_check: NoCheck + device_guard: False + dispatch: + CompositeExplicitAutograd: isinf + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_isinf + SparseCPU, SparseCUDA, SparseMPS: isinf_sparse + SparseMeta: isinf_sparse_meta + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: isinf_sparse_csr + autogen: isinf.out + tags: [core, pointwise] + +- func: record_stream(Tensor(a!) self, Stream s) -> () + variants: method + dispatch: + CUDA: record_stream_cuda + +- func: isposinf(Tensor self) -> Tensor + variants: function, method + structured_delegate: isposinf.out + dispatch: + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_isposinf + SparseCPU, SparseCUDA, SparseMPS: isposinf_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: isposinf_sparse_csr + tags: pointwise + +- func: isposinf.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: isposinf_out + SparseCPU, SparseCUDA, SparseMPS: isposinf_sparse_out + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: isposinf_sparse_csr_out + tags: pointwise + +- func: isneginf(Tensor self) -> Tensor + variants: function, method + structured_delegate: isneginf.out + dispatch: + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: NestedTensor_isneginf + SparseCPU, SparseCUDA, SparseMPS: isneginf_sparse + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: isneginf_sparse_csr + tags: pointwise + +- func: isneginf.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: isneginf_out + SparseCPU, SparseCUDA, SparseMPS: isneginf_sparse_out + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: isneginf_sparse_csr_out + tags: pointwise + +# NOTE [_add_batch_dim and _remove_batch_dim] +# _add_batch_dim and _remove_batch_dim are meant to be used in the implementation +# of the vmap frontend API (see torch/_vmap_internals.py). They are not +# user-facing, hence the leading underscore. Please don't use them them anywhere else. +- func: _add_batch_dim(Tensor self, int batch_dim, int level) -> Tensor + variants: function + +# See NOTE [_add_batch_dim and _remove_batch_dim] +- func: _remove_batch_dim(Tensor self, int level, SymInt batch_size, int out_dim) -> Tensor + variants: function + +## Functions related to the `torch.special` namespace +# Note [special namespace binding] +# Functions in the special python module should have their names start with +# "special_" underscore and be bound to the desired Python name in +# torch/special/__init__.py, and the desired C++ name in torch/csrc/api/include/torch/special.h. +# The "special_" names should be hidden from the user and not documented. + +- func: special_entr(Tensor self) -> Tensor + structured_delegate: special_entr.out + python_module: special + variants: function + tags: pointwise + +- func: special_entr.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + python_module: special + variants: function + dispatch: + CPU, CUDA, MPS: special_entr_out + tags: pointwise + +- func: special_ndtri(Tensor self) -> Tensor + structured_delegate: special_ndtri.out + python_module: special + variants: function + tags: pointwise + +- func: special_ndtri.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + python_module: special + variants: function + dispatch: + CPU, CUDA: special_ndtri_out + tags: pointwise + +- func: special_log_ndtr(Tensor self) -> Tensor + structured_delegate: special_log_ndtr.out + python_module: special + variants: function + tags: pointwise + +- func: special_log_ndtr.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + python_module: special + variants: function + dispatch: + CPU, CUDA: special_log_ndtr_out + tags: pointwise + +- func: special_expm1(Tensor self) -> Tensor + python_module: special + variants: function + +- func: special_expm1.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + python_module: special + variants: function + +- func: special_exp2(Tensor self) -> Tensor + python_module: special + variants: function + +- func: special_exp2.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + python_module: special + variants: function + +- func: special_psi(Tensor self) -> Tensor + python_module: special + variants: function + +- func: special_psi.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + python_module: special + variants: function + +- func: special_digamma(Tensor self) -> Tensor + python_module: special + variants: function + +- func: special_digamma.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + python_module: special + variants: function + +- func: special_gammaln(Tensor self) -> Tensor + python_module: special + variants: function + +- func: special_gammaln.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + python_module: special + variants: function + +- func: special_erf(Tensor self) -> Tensor + python_module: special + variants: function + +- func: special_erf.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + python_module: special + variants: function + +- func: special_erfc(Tensor self) -> Tensor + python_module: special + variants: function + +- func: special_erfc.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + python_module: special + +- func: special_erfcx(Tensor self) -> Tensor + python_module: special + variants: function + structured_delegate: special_erfcx.out + tags: pointwise + +- func: special_erfcx.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + python_module: special + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: special_erfcx_out + tags: pointwise + +- func: special_erfinv(Tensor self) -> Tensor + python_module: special + variants: function + +- func: special_erfinv.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + python_module: special + +- func: special_ndtr(Tensor self) -> Tensor + python_module: special + variants: function + +- func: special_ndtr.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + python_module: special + variants: function + +- func: special_xlog1py(Tensor self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + python_module: special + variants: function + structured_delegate: special_xlog1py.out + tags: pointwise + +- func: special_xlog1py.self_scalar(Scalar self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + python_module: special + variants: function + dispatch: + CompositeExplicitAutograd: special_xlog1py + tags: pointwise + +- func: special_xlog1py.other_scalar(Tensor self, Scalar other) -> Tensor + device_check: NoCheck # TensorIterator + python_module: special + variants: function + dispatch: + CompositeExplicitAutograd: special_xlog1py + tags: pointwise + +- func: special_xlog1py.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + python_module: special + variants: function + dispatch: + CPU, CUDA, MPS: special_xlog1py_out + tags: pointwise + +- func: special_xlog1py.self_scalar_out(Scalar self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + python_module: special + variants: function + dispatch: + CompositeExplicitAutograd: special_xlog1py_out + tags: pointwise + +- func: special_xlog1py.other_scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + python_module: special + variants: function + dispatch: + CompositeExplicitAutograd: special_xlog1py_out + tags: pointwise + +- func: special_xlogy(Tensor self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + python_module: special + variants: function + +- func: special_xlogy.self_scalar(Scalar self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + python_module: special + variants: function + +- func: special_xlogy.other_scalar(Tensor self, Scalar other) -> Tensor + device_check: NoCheck # TensorIterator + python_module: special + variants: function + +- func: special_xlogy.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + python_module: special + variants: function + +- func: special_xlogy.self_scalar_out(Scalar self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + python_module: special + variants: function + +- func: special_xlogy.other_scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + python_module: special + variants: function + +- func: special_zeta(Tensor self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + python_module: special + variants: function + structured_delegate: special_zeta.out + tags: pointwise + +- func: special_zeta.self_scalar(Scalar self, Tensor other) -> Tensor + device_check: NoCheck # TensorIterator + python_module: special + variants: function + dispatch: + CompositeExplicitAutograd: special_zeta + tags: pointwise + +- func: special_zeta.other_scalar(Tensor self, Scalar other) -> Tensor + device_check: NoCheck # TensorIterator + python_module: special + variants: function + dispatch: + CompositeExplicitAutograd: special_zeta + tags: pointwise + +- func: special_zeta.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + structured: True + structured_inherits: TensorIteratorBase + python_module: special + variants: function + dispatch: + CPU, CUDA, MPS: special_zeta_out + tags: pointwise + +- func: special_zeta.self_scalar_out(Scalar self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + python_module: special + variants: function + dispatch: + CompositeExplicitAutograd: special_zeta_out + tags: pointwise + +- func: special_zeta.other_scalar_out(Tensor self, Scalar other, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck # TensorIterator + python_module: special + variants: function + dispatch: + CompositeExplicitAutograd: special_zeta_out + tags: pointwise + +- func: special_i0(Tensor self) -> Tensor + python_module: special + variants: function + +- func: special_i0.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + python_module: special + variants: function + +- func: special_i0e(Tensor self) -> Tensor + python_module: special + variants: function + structured_delegate: special_i0e.out + tags: pointwise + +- func: special_i0e.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + python_module: special + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: special_i0e_out + tags: pointwise + +- func: special_i1(Tensor self) -> Tensor + python_module: special + variants: function + structured_delegate: special_i1.out + tags: pointwise + +- func: special_i1.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + python_module: special + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: special_i1_out + tags: pointwise + +- func: special_i1e(Tensor self) -> Tensor + python_module: special + variants: function + structured_delegate: special_i1e.out + tags: pointwise + +- func: special_i1e.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + python_module: special + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA, MPS: special_i1e_out + tags: pointwise + +- func: special_logit(Tensor self, float? eps=None) -> Tensor + python_module: special + variants: function + +- func: special_logit.out(Tensor self, float? eps=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: special + +- func: special_polygamma(int n, Tensor self) -> Tensor + python_module: special + variants: function + +- func: special_polygamma.out(int n, Tensor self, *, Tensor(a!) out) -> Tensor(a!) + python_module: special + +- func: special_logsumexp(Tensor self, int[1] dim, bool keepdim=False) -> Tensor + python_module: special + variants: function + +- func: special_logsumexp.out(Tensor self, int[1] dim, bool keepdim=False, *, Tensor(a!) out) -> Tensor(a!) + python_module: special + +- func: special_expit(Tensor self) -> Tensor + python_module: special + variants: function + +- func: special_expit.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + python_module: special + variants: function + +- func: special_sinc(Tensor self) -> Tensor + python_module: special + variants: function + +- func: special_sinc.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + python_module: special + variants: function + +- func: special_round(Tensor self, *, int decimals=0) -> Tensor + python_module: special + variants: function + +- func: special_round.out(Tensor self, *, int decimals=0, Tensor(a!) out) -> Tensor(a!) + python_module: special + variants: function + +- func: special_log1p(Tensor self) -> Tensor + python_module: special + variants: function + +- func: special_log1p.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + python_module: special + variants: function + +- func: special_log_softmax(Tensor self, int dim, *, ScalarType? dtype=None) -> Tensor + python_module: special + variants: function + +- func: special_gammainc.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + python_module: special + variants: function + +- func: special_gammainc(Tensor self, Tensor other) -> Tensor + python_module: special + variants: function + +- func: special_gammaincc.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + python_module: special + variants: function + +- func: special_gammaincc(Tensor self, Tensor other) -> Tensor + python_module: special + variants: function + +- func: special_multigammaln(Tensor self, int p) -> Tensor + python_module: special + variants: function + +- func: special_multigammaln.out(Tensor self, int p, *, Tensor(a!) out) -> Tensor(a!) + python_module: special + variants: function + +- func: special_softmax(Tensor self, int dim, ScalarType? dtype=None) -> Tensor + python_module: special + variants: function + +## Functions related to the fast Fourier transform and the torch.fft namespace +# Note [FFT namespace binding] +# Functions in the fft python module should have their names start with +# "fft_" underscore and be bound to the desired Python name in +# torch/fft/__init__.py, and the desired C++ name in torch/csrc/api/include/torch/fft.h. +# The "fft_" names should be hidden from the user and not documented. +# +# See fft_fft as an example. + +# torch.fft.fft +# NOTE: NOT an alias for torch.fft, which has different semantics +- func: fft_fft(Tensor self, SymInt? n=None, int dim=-1, str? norm=None) -> Tensor + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_fft_symint + +- func: fft_fft.out(Tensor self, SymInt? n=None, int dim=-1, str? norm=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_fft_symint_out + +- func: fft_ifft(Tensor self, SymInt? n=None, int dim=-1, str? norm=None) -> Tensor + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_ifft_symint + +- func: fft_ifft.out(Tensor self, SymInt? n=None, int dim=-1, str? norm=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_ifft_symint_out + +- func: fft_rfft(Tensor self, SymInt? n=None, int dim=-1, str? norm=None) -> Tensor + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_rfft_symint + +- func: fft_rfft.out(Tensor self, SymInt? n=None, int dim=-1, str? norm=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_rfft_symint_out + +- func: fft_irfft(Tensor self, SymInt? n=None, int dim=-1, str? norm=None) -> Tensor + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_irfft_symint + +- func: fft_irfft.out(Tensor self, SymInt? n=None, int dim=-1, str? norm=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_irfft_symint_out + +- func: fft_hfft(Tensor self, SymInt? n=None, int dim=-1, str? norm=None) -> Tensor + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_hfft_symint + +- func: fft_hfft.out(Tensor self, SymInt? n=None, int dim=-1, str? norm=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_hfft_symint_out + +- func: fft_ihfft(Tensor self, SymInt? n=None, int dim=-1, str? norm=None) -> Tensor + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_ihfft_symint + +- func: fft_ihfft.out(Tensor self, SymInt? n=None, int dim=-1, str? norm=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_ihfft_symint_out + +- func: fft_fft2(Tensor self, SymInt[1]? s=None, int[1] dim=[-2,-1], str? norm=None) -> Tensor + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_fft2_symint + +- func: fft_fft2.out(Tensor self, SymInt[1]? s=None, int[1] dim=[-2,-1], str? norm=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_fft2_symint_out + +- func: fft_ifft2(Tensor self, SymInt[1]? s=None, int[1] dim=[-2,-1], str? norm=None) -> Tensor + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_ifft2_symint + +- func: fft_ifft2.out(Tensor self, SymInt[1]? s=None, int[1] dim=[-2,-1], str? norm=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_ifft2_symint_out + +- func: fft_rfft2(Tensor self, SymInt[1]? s=None, int[1] dim=[-2,-1], str? norm=None) -> Tensor + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_rfft2_symint + +- func: fft_rfft2.out(Tensor self, SymInt[1]? s=None, int[1] dim=[-2,-1], str? norm=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_rfft2_symint_out + +- func: fft_irfft2(Tensor self, SymInt[1]? s=None, int[1] dim=[-2,-1], str? norm=None) -> Tensor + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_irfft2_symint + +- func: fft_irfft2.out(Tensor self, SymInt[1]? s=None, int[1] dim=[-2,-1], str? norm=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_irfft2_symint_out + +- func: fft_hfft2(Tensor self, SymInt[1]? s=None, int[1] dim=[-2,-1], str? norm=None) -> Tensor + use_const_ref_for_mutable_tensors: True + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_hfft2_symint + +- func: fft_hfft2.out(Tensor self, SymInt[1]? s=None, int[1] dim=[-2,-1], str? norm=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_hfft2_symint_out + +- func: fft_ihfft2(Tensor self, SymInt[1]? s=None, int[1] dim=[-2,-1], str? norm=None) -> Tensor + use_const_ref_for_mutable_tensors: True + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_ihfft2_symint + +- func: fft_ihfft2.out(Tensor self, SymInt[1]? s=None, int[1] dim=[-2,-1], str? norm=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_ihfft2_symint_out + +- func: fft_fftn(Tensor self, SymInt[1]? s=None, int[1]? dim=None, str? norm=None) -> Tensor + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_fftn_symint + +- func: fft_fftn.out(Tensor self, SymInt[1]? s=None, int[1]? dim=None, str? norm=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_fftn_symint_out + +- func: fft_ifftn(Tensor self, SymInt[1]? s=None, int[1]? dim=None, str? norm=None) -> Tensor + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_ifftn_symint + +- func: fft_ifftn.out(Tensor self, SymInt[1]? s=None, int[1]? dim=None, str? norm=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_ifftn_symint_out + +- func: fft_rfftn(Tensor self, SymInt[1]? s=None, int[1]? dim=None, str? norm=None) -> Tensor + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_rfftn_symint + +- func: fft_rfftn.out(Tensor self, SymInt[1]? s=None, int[1]? dim=None, str? norm=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_rfftn_symint_out + +- func: fft_irfftn(Tensor self, SymInt[1]? s=None, int[1]? dim=None, str? norm=None) -> Tensor + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_irfftn_symint + +- func: fft_irfftn.out(Tensor self, SymInt[1]? s=None, int[1]? dim=None, str? norm=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_irfftn_symint_out + +- func: fft_hfftn(Tensor self, SymInt[1]? s=None, int[1]? dim=None, str? norm=None) -> Tensor + use_const_ref_for_mutable_tensors: True + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_hfftn_symint + +- func: fft_hfftn.out(Tensor self, SymInt[1]? s=None, int[1]? dim=None, str? norm=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_hfftn_symint_out + +- func: fft_ihfftn(Tensor self, SymInt[1]? s=None, int[1]? dim=None, str? norm=None) -> Tensor + use_const_ref_for_mutable_tensors: True + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_ihfftn_symint + +- func: fft_ihfftn.out(Tensor self, SymInt[1]? s=None, int[1]? dim=None, str? norm=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: fft + variants: function + dispatch: + CompositeImplicitAutograd: fft_ihfftn_symint_out + +- func: fft_fftfreq(int n, float d=1.0, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + python_module: fft + variants: function + dispatch: + CompositeExplicitAutograd: fft_fftfreq + +- func: fft_fftfreq.out(int n, float d=1.0, *, Tensor(a!) out) -> Tensor(a!) + python_module: fft + variants: function + dispatch: + CompositeExplicitAutograd: fft_fftfreq_out + +- func: fft_rfftfreq(int n, float d=1.0, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + python_module: fft + variants: function + dispatch: + CompositeExplicitAutograd: fft_rfftfreq + +- func: fft_rfftfreq.out(int n, float d=1.0, *, Tensor(a!) out) -> Tensor(a!) + python_module: fft + variants: function + dispatch: + CompositeExplicitAutograd: fft_rfftfreq_out + +- func: fft_fftshift(Tensor self, int[1]? dim=None) -> Tensor + python_module: fft + variants: function + +- func: fft_ifftshift(Tensor self, int[1]? dim=None) -> Tensor + python_module: fft + variants: function + +## Functions for linear algebra and the torch.linalg namespace +# Note [linalg namespace binding] +# Functions in the linalg python module should have their names start with +# "linalg_" and be bound to the desired Python name in +# torch/linalg/__init__.py, and the desired C++ name in torch/csrc/api/include/torch/linalg.h. +# The "linalg_" names should be hidden from the user and not documented. +# +# See linalg_det as an example. + +# "_ex" stands for experimental +- func: linalg_cholesky_ex(Tensor self, *, bool upper=False, bool check_errors=False) -> (Tensor L, Tensor info) + python_module: linalg + structured_delegate: linalg_cholesky_ex.L + +- func: linalg_cholesky_ex.L(Tensor self, *, bool upper=False, bool check_errors=False, Tensor(a!) L, Tensor(b!) info) -> (Tensor(a!) L, Tensor(b!) info) + python_module: linalg + structured: True + dispatch: + CPU, CUDA, MPS: linalg_cholesky_ex_out + +- func: linalg_cholesky(Tensor self, *, bool upper=False) -> Tensor + python_module: linalg + +- func: linalg_cholesky.out(Tensor self, *, bool upper=False, Tensor(a!) out) -> Tensor(a!) + python_module: linalg + +- func: linalg_cross(Tensor self, Tensor other, *, int dim=-1) -> Tensor + python_module: linalg + variants: function + structured_delegate: linalg_cross.out + dispatch: + ZeroTensor: linalg_cross_zerotensor + +- func: linalg_cross.out(Tensor self, Tensor other, *, int dim=-1, Tensor(a!) out) -> Tensor(a!) + python_module: linalg + structured: True + dispatch: + CPU, CUDA, MPS: linalg_cross_out + +# linalg.lu_factor +- func: linalg_lu_factor(Tensor A, *, bool pivot=True) -> (Tensor LU, Tensor pivots) + python_module: linalg + variants: function + +- func: linalg_lu_factor.out(Tensor A, *, bool pivot=True, Tensor(a!) LU, Tensor(b!) pivots) -> (Tensor(a!) LU, Tensor(b!) pivots) + python_module: linalg + variants: function + +- func: linalg_lu_factor_ex(Tensor A, *, bool pivot=True, bool check_errors=False) -> (Tensor LU, Tensor pivots, Tensor info) + python_module: linalg + structured_delegate: linalg_lu_factor_ex.out + variants: function + +- func: linalg_lu_factor_ex.out(Tensor A, *, bool pivot=True, bool check_errors=False, Tensor(a!) LU, Tensor(b!) pivots, Tensor(c!) info) -> (Tensor(a!) LU, Tensor(b!) pivots, Tensor(c!) info) + python_module: linalg + variants: function + structured: True + dispatch: + CPU, CUDA: linalg_lu_factor_ex_out + MPS: linalg_lu_factor_ex_out_mps + +# linalg.lu +- func: linalg_lu(Tensor A, *, bool pivot=True) -> (Tensor P, Tensor L, Tensor U) + python_module: linalg + structured_delegate: linalg_lu.out + variants: function + +- func: linalg_lu.out(Tensor A, *, bool pivot=True, Tensor(a!) P, Tensor(b!) L, Tensor(c!) U) -> (Tensor(a!) P, Tensor(b!) L, Tensor(c!) U) + python_module: linalg + variants: function + structured: True + dispatch: + CPU, CUDA, MPS: linalg_lu_out + +# linalg.lu_solve +- func: linalg_lu_solve(Tensor LU, Tensor pivots, Tensor B, *, bool left=True, bool adjoint=False) -> Tensor + python_module: linalg + structured_delegate: linalg_lu_solve.out + variants: function + +- func: linalg_lu_solve.out(Tensor LU, Tensor pivots, Tensor B, *, bool left=True, bool adjoint=False, Tensor(a!) out) -> Tensor(a!) + python_module: linalg + variants: function + structured: True + dispatch: + CPU, CUDA: linalg_lu_solve_out + +# linalg.det +- func: _linalg_det(Tensor A) -> (Tensor result, Tensor LU, Tensor pivots) + structured_delegate: _linalg_det.result + +- func: _linalg_det.result(Tensor A, *, Tensor(a!) result, Tensor(b!) LU, Tensor(c!) pivots) -> (Tensor(a!) result, Tensor(b!) LU, Tensor(c!) pivots) + structured: True + dispatch: + CPU, CUDA, MPS: _linalg_det_out + +- func: linalg_det(Tensor A) -> Tensor + python_module: linalg + variants: function + +- func: linalg_det.out(Tensor A, *, Tensor(a!) out) -> Tensor(a!) + python_module: linalg + +# torch.det, alias for torch.linalg.det +- func: det(Tensor self) -> Tensor + variants: function, method + +- func: linalg_ldl_factor_ex(Tensor self, *, bool hermitian=False, bool check_errors=False) -> (Tensor LD, Tensor pivots, Tensor info) + structured_delegate: linalg_ldl_factor_ex.out + python_module: linalg + variants: function + +- func: linalg_ldl_factor_ex.out(Tensor self, *, bool hermitian=False, bool check_errors=False, Tensor(a!) LD, Tensor(b!) pivots, Tensor(c!) info) -> (Tensor(a!) LD, Tensor(b!) pivots, Tensor(c!) info) + structured: True + python_module: linalg + variants: function + dispatch: + CPU, CUDA: linalg_ldl_factor_ex_out + +- func: linalg_ldl_factor(Tensor self, *, bool hermitian=False) -> (Tensor LD, Tensor pivots) + python_module: linalg + variants: function + +- func: linalg_ldl_factor.out(Tensor self, *, bool hermitian=False, Tensor(a!) LD, Tensor(b!) pivots) -> (Tensor(a!) LD, Tensor(b!) pivots) + python_module: linalg + variants: function + +- func: linalg_ldl_solve(Tensor LD, Tensor pivots, Tensor B, *, bool hermitian=False) -> Tensor + structured_delegate: linalg_ldl_solve.out + python_module: linalg + variants: function + +- func: linalg_ldl_solve.out(Tensor LD, Tensor pivots, Tensor B, *, bool hermitian=False, Tensor(a!) out) -> Tensor(a!) + structured: True + python_module: linalg + variants: function + dispatch: + CPU, CUDA: linalg_ldl_solve_out + +- func: linalg_lstsq(Tensor self, Tensor b, float? rcond=None, *, str? driver=None) -> (Tensor solution, Tensor residuals, Tensor rank, Tensor singular_values) + python_module: linalg + variants: function + dispatch: + CompositeExplicitAutograd: linalg_lstsq + tags: dynamic_output_shape + +- func: linalg_lstsq.out(Tensor self, Tensor b, float? rcond=None, *, str? driver=None, Tensor(a!) solution, Tensor(b!) residuals, Tensor(c!) rank, Tensor(d!) singular_values) -> (Tensor(a!) solution, Tensor(b!) residuals, Tensor(c!) rank, Tensor(d!) singular_values) + python_module: linalg + variants: function + dispatch: + CPU, CUDA: linalg_lstsq_out + tags: dynamic_output_shape + +# torch.linalg.matmul, alias for torch.matmul +- func: linalg_matmul(Tensor self, Tensor other) -> Tensor + python_module: linalg + variants: function + +- func: linalg_matmul.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + python_module: linalg + +- func: linalg_vecdot(Tensor x, Tensor y, *, int dim=-1) -> Tensor + python_module: linalg + variants: function + +- func: linalg_vecdot.out(Tensor x, Tensor y, *, int dim=-1, Tensor(a!) out) -> Tensor(a!) + python_module: linalg + +- func: linalg_matrix_exp(Tensor self) -> Tensor + python_module: linalg + variants: function + dispatch: + CPU, CUDA: linalg_matrix_exp + autogen: linalg_matrix_exp.out + +- func: _linalg_slogdet(Tensor A) -> (Tensor sign, Tensor logabsdet, Tensor LU, Tensor pivots) + structured_delegate: _linalg_slogdet.sign + +- func: _linalg_slogdet.sign(Tensor A, *, Tensor(a!) sign, Tensor(b!) logabsdet, Tensor(c!) LU, Tensor(d!) pivots) -> (Tensor(a!) sign, Tensor(b!) logabsdet, Tensor(c!) LU, Tensor(d!) pivots) + structured: True + dispatch: + CPU, CUDA, MPS: _linalg_slogdet_out + +- func: linalg_slogdet(Tensor A) -> (Tensor sign, Tensor logabsdet) + python_module: linalg + +- func: linalg_slogdet.out(Tensor A, *, Tensor(a!) sign, Tensor(b!) logabsdet) -> (Tensor(a!) sign, Tensor(b!) logabsdet) + python_module: linalg + +- func: slogdet(Tensor self) -> (Tensor sign, Tensor logabsdet) + variants: function, method + +- func: slogdet.out(Tensor self, *, Tensor(a!) sign, Tensor(b!) logabsdet) -> (Tensor(a!) sign, Tensor(b!) logabsdet) + variants: function + +- func: logdet(Tensor self) -> Tensor + variants: function, method + +- func: linalg_eig(Tensor self) -> (Tensor eigenvalues, Tensor eigenvectors) + python_module: linalg + variants: function + dispatch: + CPU, CUDA: linalg_eig + +- func: linalg_eig.out(Tensor self, *, Tensor(a!) eigenvalues, Tensor(b!) eigenvectors) -> (Tensor(a!) eigenvalues, Tensor(b!) eigenvectors) + python_module: linalg + dispatch: + CPU, CUDA: linalg_eig_out + +- func: _linalg_eigvals(Tensor self) -> Tensor + python_module: linalg + dispatch: + CPU, CUDA: _linalg_eigvals + +- func: linalg_eigvals(Tensor self) -> Tensor + python_module: linalg + +- func: linalg_eigvals.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + python_module: linalg + dispatch: + CPU, CUDA: linalg_eigvals_out + +# This function is exposes the `compute_v` flag, which is then used to implement `linalg.eigh` and +# `linalg.eigvalsh` as composite functions that call this one +- func: _linalg_eigh(Tensor A, str UPLO="L", bool compute_v=True) -> (Tensor eigenvalues, Tensor eigenvectors) + structured_delegate: _linalg_eigh.eigenvalues + +- func: _linalg_eigh.eigenvalues(Tensor A, str UPLO="L", bool compute_v=True, *, Tensor(a!) eigenvalues, Tensor(b!) eigenvectors) -> (Tensor(a!) eigenvalues, Tensor(b!) eigenvectors) + structured: True + dispatch: + CPU, CUDA: _linalg_eigh_out + +- func: linalg_eigh(Tensor self, str UPLO="L") -> (Tensor eigenvalues, Tensor eigenvectors) + python_module: linalg + +- func: linalg_eigh.eigvals(Tensor self, str UPLO="L", *, Tensor(a!) eigvals, Tensor(b!) eigvecs) -> (Tensor(a!) eigenvalues, Tensor(b!) eigenvectors) + python_module: linalg + +- func: linalg_eigvalsh(Tensor self, str UPLO="L") -> Tensor + python_module: linalg + +- func: linalg_eigvalsh.out(Tensor self, str UPLO="L", *, Tensor(a!) out) -> Tensor(a!) + python_module: linalg + +- func: linalg_householder_product(Tensor input, Tensor tau) -> Tensor + python_module: linalg + variants: function + dispatch: + CPU, CUDA, MPS: linalg_householder_product + +- func: linalg_householder_product.out(Tensor input, Tensor tau, *, Tensor(a!) out) -> Tensor(a!) + python_module: linalg + dispatch: + CPU, CUDA, MPS: linalg_householder_product_out + +- func: linalg_inv_ex(Tensor A, *, bool check_errors=False) -> (Tensor inverse, Tensor info) + python_module: linalg + structured_delegate: linalg_inv_ex.inverse + +- func: linalg_inv_ex.inverse(Tensor A, *, bool check_errors=False, Tensor(a!) inverse, Tensor(b!) info) -> (Tensor(a!) inverse, Tensor(b!) info) + python_module: linalg + structured: True + dispatch: + CPU, CUDA: linalg_inv_ex_out + MPS: linalg_inv_ex_out_mps + +- func: linalg_inv(Tensor A) -> Tensor + python_module: linalg + +- func: linalg_inv.out(Tensor A, *, Tensor(a!) out) -> Tensor(a!) + python_module: linalg + +- func: inverse(Tensor self) -> Tensor + variants: function, method + +- func: inverse.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + +- func: inner(Tensor self, Tensor other) -> Tensor + variants: function, method + +- func: inner.out(Tensor self, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + +- func: outer(Tensor self, Tensor vec2) -> Tensor + variants: function, method + +- func: outer.out(Tensor self, Tensor vec2, *, Tensor(a!) out) -> Tensor(a!) + +# torch.ger, alias for torch.outer +- func: ger(Tensor self, Tensor vec2) -> Tensor + variants: function, method + +- func: ger.out(Tensor self, Tensor vec2, *, Tensor(a!) out) -> Tensor(a!) + +- func: linalg_norm(Tensor self, Scalar? ord=None, int[1]? dim=None, bool keepdim=False, *, ScalarType? dtype=None) -> Tensor + python_module: linalg + variants: function + +- func: linalg_norm.ord_str(Tensor self, str ord, int[1]? dim=None, bool keepdim=False, *, ScalarType? dtype=None) -> Tensor + python_module: linalg + variants: function + +- func: linalg_norm.out(Tensor self, Scalar? ord=None, int[1]? dim=None, bool keepdim=False, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!) + python_module: linalg + variants: function + +- func: linalg_norm.ord_str_out(Tensor self, str ord, int[1]? dim=None, bool keepdim=False, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!) + python_module: linalg + variants: function + +- func: linalg_vector_norm(Tensor self, Scalar ord=2, int[1]? dim=None, bool keepdim=False, *, ScalarType? dtype=None) -> Tensor + python_module: linalg + variants: function + structured_delegate: linalg_vector_norm.out + tags: reduction + +- func: linalg_vector_norm.out(Tensor self, Scalar ord=2, int[1]? dim=None, bool keepdim=False, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!) + python_module: linalg + structured: True + dispatch: + CPU, CUDA, MPS: linalg_vector_norm_out + tags: reduction + +# Computes sum(|x|^ord) - the "power sum" without the final root. +# This is useful for distributed computing where partial power sums +# can be reduced across shards before taking the final root. +- func: linalg__powsum(Tensor self, Scalar ord=2, int[1]? dim=None, bool keepdim=False, *, ScalarType? dtype=None) -> Tensor + python_module: linalg + variants: function + dispatch: + CompositeExplicitAutograd: linalg__powsum_slow + CPU, CUDA: linalg__powsum + tags: reduction + +- func: linalg_matrix_norm(Tensor self, Scalar ord, int[] dim=[-2,-1], bool keepdim=False, *, ScalarType? dtype=None) -> Tensor + python_module: linalg + +- func: linalg_matrix_norm.out(Tensor self, Scalar ord, int[] dim=[-2,-1], bool keepdim=False, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!) + python_module: linalg + +- func: linalg_matrix_norm.str_ord(Tensor self, str ord='fro', int[] dim=[-2,-1], bool keepdim=False, *, ScalarType? dtype=None) -> Tensor + python_module: linalg + +- func: linalg_matrix_norm.str_ord_out(Tensor self, str ord='fro', int[] dim=[-2,-1], bool keepdim=False, *, ScalarType? dtype=None, Tensor(a!) out) -> Tensor(a!) + python_module: linalg + +# This function is exposes the `compute_uv` flag, which is then used to implement `linalg.svd` and +# `linalg.svdvals` as composite functions that call this one +- func: _linalg_svd(Tensor A, bool full_matrices=False, bool compute_uv=True, *, str? driver=None) -> (Tensor U, Tensor S, Tensor Vh) + variants: function + structured_delegate: _linalg_svd.U + +- func: _linalg_svd.U(Tensor A, bool full_matrices=False, bool compute_uv=True, *, str? driver=None, Tensor(a!) U, Tensor(b!) S, Tensor(c!) Vh) -> (Tensor(a!) U, Tensor(b!) S, Tensor(c!) Vh) + structured: True + dispatch: + CPU, CUDA: _linalg_svd_out + +- func: linalg_svd(Tensor A, bool full_matrices=True, *, str? driver=None) -> (Tensor U, Tensor S, Tensor Vh) + python_module: linalg + variants: function + +- func: linalg_svd.U(Tensor A, bool full_matrices=True, *, str? driver=None, Tensor(a!) U, Tensor(b!) S, Tensor(c!) Vh) -> (Tensor(a!) U, Tensor(b!) S, Tensor(c!) Vh) + python_module: linalg + variants: function + +- func: linalg_svdvals(Tensor A, *, str? driver=None) -> Tensor + python_module: linalg + variants: function + +- func: linalg_svdvals.out(Tensor A, *, str? driver=None, Tensor(a!) out) -> Tensor(a!) + python_module: linalg + variants: function + +- func: linalg_cond(Tensor self, Scalar? p=None) -> Tensor + python_module: linalg + variants: function + +- func: linalg_cond.out(Tensor self, Scalar? p=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: linalg + variants: function + +- func: linalg_cond.p_str(Tensor self, str p) -> Tensor + python_module: linalg + variants: function + +- func: linalg_cond.p_str_out(Tensor self, str p, *, Tensor(a!) out) -> Tensor(a!) + python_module: linalg + variants: function + +- func: linalg_pinv.atol_rtol_tensor(Tensor self, *, Tensor? atol=None, Tensor? rtol=None, bool hermitian=False) -> Tensor + python_module: linalg + variants: function + dispatch: + # calls svd, which calls mH() (view op) + # also calls narrow() + CompositeExplicitAutogradNonFunctional: linalg_pinv + +- func: linalg_pinv.atol_rtol_tensor_out(Tensor self, *, Tensor? atol=None, Tensor? rtol=None, bool hermitian=False, Tensor(a!) out) -> Tensor(a!) + python_module: linalg + variants: function + dispatch: + CompositeExplicitAutograd: linalg_pinv_out + +- func: linalg_pinv.atol_rtol_float(Tensor self, *, float? atol=None, float? rtol=None, bool hermitian=False) -> Tensor + cpp_no_default_args: ['atol', 'rtol'] + python_module: linalg + variants: function + +- func: linalg_pinv.atol_rtol_float_out(Tensor self, *, float? atol=None, float? rtol=None, bool hermitian=False, Tensor(a!) out) -> Tensor(a!) + cpp_no_default_args: ['atol', 'rtol'] + python_module: linalg + variants: function + +- func: linalg_pinv(Tensor self, float rcond, bool hermitian=False) -> Tensor + python_module: linalg + variants: function + +- func: linalg_pinv.rcond_tensor(Tensor self, Tensor rcond, bool hermitian=False) -> Tensor + python_module: linalg + variants: function + +- func: linalg_pinv.out(Tensor self, float rcond, bool hermitian=False, *, Tensor(a!) out) -> Tensor(a!) + python_module: linalg + variants: function + +- func: linalg_pinv.out_rcond_tensor(Tensor self, Tensor rcond, bool hermitian=False, *, Tensor(a!) out) -> Tensor(a!) + python_module: linalg + variants: function + +- func: _linalg_solve_ex(Tensor A, Tensor B, *, bool left=True, bool check_errors=False) -> (Tensor result, Tensor LU, Tensor pivots, Tensor info) + structured_delegate: _linalg_solve_ex.result + +- func: _linalg_solve_ex.result(Tensor A, Tensor B, *, bool left=True, bool check_errors=False, Tensor(a!) result, Tensor(b!) LU, Tensor(c!) pivots, Tensor(d!) info) -> (Tensor(a!) result, Tensor(b!) LU, Tensor(c!) pivots, Tensor(d!) info) + structured: True + dispatch: + CPU, CUDA: _linalg_solve_ex_out + MPS: _linalg_solve_ex_out_mps + +- func: linalg_solve_ex(Tensor A, Tensor B, *, bool left=True, bool check_errors=False) -> (Tensor result, Tensor info) + python_module: linalg + +- func: linalg_solve_ex.out(Tensor A, Tensor B, *, bool left=True, bool check_errors=False, Tensor(a!) result, Tensor(b!) info) -> (Tensor(a!) result, Tensor(b!) info) + python_module: linalg + +- func: linalg_solve(Tensor A, Tensor B, *, bool left=True) -> Tensor + python_module: linalg + +- func: _spsolve(Tensor A, Tensor B, *, bool left=True) -> Tensor + python_module: sparse + dispatch: + SparseCsrCUDA: _sparse_csr_linear_solve + +- func: linalg_solve.out(Tensor A, Tensor B, *, bool left=True, Tensor(a!) out) -> Tensor(a!) + python_module: linalg + +- func: linalg_tensorinv(Tensor self, int ind=2) -> Tensor + python_module: linalg + variants: function + +- func: linalg_tensorinv.out(Tensor self, int ind=2, *, Tensor(a!) out) -> Tensor(a!) + python_module: linalg + variants: function + +- func: linalg_tensorsolve(Tensor self, Tensor other, int[]? dims=None) -> Tensor + python_module: linalg + variants: function + +- func: linalg_tensorsolve.out(Tensor self, Tensor other, int[]? dims=None, *, Tensor(a!) out) -> Tensor(a!) + python_module: linalg + variants: function + +- func: linalg_qr(Tensor A, str mode='reduced') -> (Tensor Q, Tensor R) + python_module: linalg + variants: function + structured_delegate: linalg_qr.out + +- func: linalg_qr.out(Tensor A, str mode='reduced', *, Tensor(a!) Q, Tensor(b!) R) -> (Tensor(a!) Q, Tensor(b!) R) + python_module: linalg + structured: True + dispatch: + CPU, CUDA: linalg_qr_out + MPS: linalg_qr_out_mps + +- func: linalg_matrix_power(Tensor self, int n) -> Tensor + python_module: linalg + +- func: linalg_matrix_power.out(Tensor self, int n, *, Tensor(a!) out) -> Tensor(a!) + python_module: linalg + +- func: linalg_matrix_rank.atol_rtol_tensor(Tensor input, *, Tensor? atol=None, Tensor? rtol=None, bool hermitian=False) -> Tensor + python_module: linalg + variants: function + +- func: linalg_matrix_rank.atol_rtol_tensor_out(Tensor input, *, Tensor? atol=None, Tensor? rtol=None, bool hermitian=False, Tensor(a!) out) -> Tensor(a!) + python_module: linalg + variants: function + +- func: linalg_matrix_rank.atol_rtol_float(Tensor self, *, float? atol=None, float? rtol=None, bool hermitian=False) -> Tensor + cpp_no_default_args: ['atol', 'rtol'] + python_module: linalg + variants: function + +- func: linalg_matrix_rank.atol_rtol_float_out(Tensor self, *, float? atol=None, float? rtol=None, bool hermitian=False, Tensor(a!) out) -> Tensor(a!) + cpp_no_default_args: ['atol', 'rtol'] + python_module: linalg + variants: function + +- func: linalg_matrix_rank(Tensor self, float tol, bool hermitian=False) -> Tensor + python_module: linalg + variants: function + +- func: linalg_matrix_rank.out(Tensor self, float tol, bool hermitian=False, *, Tensor(a!) out) -> Tensor(a!) + python_module: linalg + variants: function + +- func: linalg_matrix_rank.tol_tensor(Tensor input, Tensor tol, bool hermitian=False) -> Tensor + python_module: linalg + variants: function + +- func: linalg_matrix_rank.out_tol_tensor(Tensor input, Tensor tol, bool hermitian=False, *, Tensor(a!) out) -> Tensor(a!) + python_module: linalg + variants: function + +- func: linalg_multi_dot(Tensor[] tensors) -> Tensor + python_module: linalg + +- func: linalg_multi_dot.out(Tensor[] tensors, *, Tensor(a!) out) -> Tensor(a!) + python_module: linalg + +## Functions related to the `torch.nested` namespace +# Note [nested namespace binding] +# Functions in the nested python module should have their names start with +# "nested_" underscore and be bound to the desired Python name in +# torch/nested/__init__.py, and the desired C++ name in torch/csrc/api/include/torch/nested.h. +# The "nested_" names should be hidden from the user and not documented. + +- func: nested_to_padded_tensor(Tensor self, float padding, int[]? output_size=None) -> Tensor + python_module: nested + variants: function + +## Functions that are only for testing +# It is undocumented and should not be used outside of tests. +- func: _test_serialization_subcmul(Tensor self, Tensor other, Scalar alpha=1) -> Tensor + +# Note: for testing COW materialization within `at::parallel_for` loop function +- func: _test_parallel_materialize(Tensor self, int num_parallel, bool skip_first=False) -> Tensor + variants: function + dispatch: + CompositeExplicitAutograd: _test_parallel_materialize + +# Note: this function is only for testing. +- func: _test_optional_intlist(Tensor values, int[]? addends) -> Tensor + python_module: nn + dispatch: + CPU: _test_optional_intlist + autogen: _test_optional_intlist.out + +# Note: this function is only for testing. +- func: _test_optional_filled_intlist(Tensor values, int[2]? addends) -> Tensor + python_module: nn + dispatch: + CPU: _test_optional_intlist + autogen: _test_optional_filled_intlist.out + +# Note: this function is only for testing. +- func: _test_optional_floatlist(Tensor values, float[]? addends) -> Tensor + python_module: nn + dispatch: + CPU: _test_optional_floatlist + autogen: _test_optional_floatlist.out + +# Note: this function is only for testing. +- func: _test_string_default(Tensor dummy, str a="\"'\\", str b='"\'\\') -> Tensor + python_module: nn + +# Note: this function is only for testing. +- func: _test_ambiguous_defaults.a(Tensor dummy, int a=1, int b=1) -> Tensor + python_module: nn + +# Note: this function is only for testing. +- func: _test_ambiguous_defaults.b(Tensor dummy, int a=2, str b="2") -> Tensor + cpp_no_default_args: ['a', 'b'] + python_module: nn + +# Note: this function is only for testing. +- func: _test_warn_in_autograd(Tensor self) -> Tensor + python_module: nn + dispatch: + CompositeExplicitAutograd: _test_warn_in_autograd + autogen: _test_warn_in_autograd.out + +# Note: this function is only for testing. +- func: _test_autograd_multiple_dispatch.fullcoverage(Tensor self) -> Tensor + dispatch: + # the NestedTensor keys are necessary because NestedTensor has been removed + # from the CompositeExplicitAutograd keyset see Note [NestedTensor Not Included in Backend Keys] + CompositeExplicitAutograd, NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: _test_autograd_multiple_dispatch_fullcoverage + autogen: _test_autograd_multiple_dispatch.fullcoverage_out + +# Note: this function is only for testing. +- func: _test_autograd_multiple_dispatch.ntonly(Tensor self, bool b) -> Tensor + dispatch: + CompositeImplicitAutograd, NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: _test_autograd_multiple_dispatch_ntonly + +# Note: this function is only for testing. +- func: _test_autograd_multiple_dispatch_view(Tensor(a) self) -> Tensor(a) + dispatch: + CompositeExplicitAutograd: _test_autograd_multiple_dispatch_view + +# Note: this function is only for testing. +- func: _test_autograd_multiple_dispatch_view_copy(Tensor self) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: _test_autograd_multiple_dispatch_view_copy + tags: view_copy + autogen: _test_autograd_multiple_dispatch_view_copy.out + +- func: segment_reduce(Tensor data, str reduce, *, Tensor? lengths=None, Tensor? indices=None, Tensor? offsets=None, int axis=0, bool unsafe=False, Scalar? initial=None) -> Tensor + variants: function + dispatch: + CPU, CUDA: segment_reduce_kernel + autogen: segment_reduce.out + +- func: _segment_reduce_backward(Tensor grad, Tensor output, Tensor data, str reduce, *, Tensor? lengths=None, Tensor? offsets=None, int axis=0, Scalar? initial=None) -> Tensor + variants: function + dispatch: + CPU, CUDA: _segment_reduce_backward_kernel + autogen: _segment_reduce_backward.out + +- func: pad_sequence(Tensor[] sequences, bool batch_first=False, float padding_value=0.0, str padding_side="right") -> Tensor + python_module: nn + variants: function + +- func: flatten_dense_tensors(Tensor[] tensors) -> Tensor + variants: function + python_module: nn + +- func: unflatten_dense_tensors(Tensor flat, Tensor[] tensors) -> Tensor[] + variants: function + python_module: nn + +- func: _nested_tensor_from_tensor_list(Tensor[] list, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + variants: function + dispatch: + CompositeExplicitAutograd: _nested_tensor_from_tensor_list + autogen: _nested_tensor_from_tensor_list.out + +- func: _fw_primal_copy(Tensor self, int level) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: _fw_primal_copy + tags: view_copy + autogen: _fw_primal_copy.out + +- func: _make_dual_copy(Tensor primal, Tensor tangent, int level) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: _make_dual_copy + tags: view_copy + autogen: _make_dual_copy.out + +- func: view_as_real_copy(Tensor self) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: view_as_real_copy + tags: view_copy + autogen: view_as_real_copy.out + +- func: view_as_complex_copy(Tensor self) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: view_as_complex_copy + tags: view_copy + autogen: view_as_complex_copy.out + +- func: _conj_copy(Tensor self) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: _conj_copy + tags: view_copy + autogen: _conj_copy.out + +- func: _neg_view_copy(Tensor self) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: _neg_view_copy + tags: view_copy + autogen: _neg_view_copy.out + +- func: as_strided_copy(Tensor self, SymInt[] size, SymInt[] stride, SymInt? storage_offset=None) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: as_strided_copy_symint + tags: view_copy + autogen: as_strided_copy.out + +- func: _sparse_broadcast_to_copy(Tensor self, int[] size) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: _sparse_broadcast_to_copy + tags: view_copy + autogen: _sparse_broadcast_to_copy.out + +- func: diagonal_copy(Tensor self, int offset=0, int dim1=0, int dim2=1) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: diagonal_copy + tags: view_copy + autogen: diagonal_copy.out + +- func: expand_copy(Tensor self, SymInt[] size, *, bool implicit=False) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: expand_copy_symint + tags: view_copy + autogen: expand_copy.out + +- func: permute_copy(Tensor self, int[] dims) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: permute_copy + tags: view_copy + autogen: permute_copy.out + +- func: _reshape_alias_copy(Tensor self, SymInt[] size, SymInt[] stride) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: _reshape_alias_copy_symint + tags: view_copy + autogen: _reshape_alias_copy.out + +- func: select_copy.int(Tensor self, int dim, SymInt index) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: select_copy_symint + SparseCsrCPU, SparseCsrCUDA, SparseCsrMeta: select_copy_sparse_csr + tags: view_copy + autogen: select_copy.int_out + +- func: detach_copy(Tensor self) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: detach_copy + tags: view_copy + autogen: detach_copy.out + +- func: slice_copy.Tensor(Tensor self, int dim=0, SymInt? start=None, SymInt? end=None, SymInt step=1) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: slice_copy_Tensor_symint + tags: view_copy + autogen: slice_copy.Tensor_out + +- func: split_copy.Tensor(Tensor self, SymInt split_size, int dim=0) -> Tensor[] + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: split_copy_Tensor_symint + tags: view_copy + +- func: split_with_sizes_copy(Tensor self, SymInt[] split_sizes, int dim=0) -> Tensor[] + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: split_with_sizes_copy_symint + tags: view_copy + +- func: squeeze_copy(Tensor self) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: squeeze_copy + tags: view_copy + autogen: squeeze_copy.out + +- func: squeeze_copy.dim(Tensor self, int dim) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: squeeze_copy_dim + tags: view_copy + autogen: squeeze_copy.dim_out + +- func: squeeze_copy.dims(Tensor self, int[] dim) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: squeeze_copy_dims + tags: view_copy + autogen: squeeze_copy.dims_out + +- func: t_copy(Tensor self) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: t_copy + tags: view_copy + autogen: t_copy.out + +- func: transpose_copy.int(Tensor self, int dim0, int dim1) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: transpose_copy_int + tags: view_copy + autogen: transpose_copy.int_out + +- func: unsqueeze_copy(Tensor self, int dim) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: unsqueeze_copy + tags: view_copy + autogen: unsqueeze_copy.out + +- func: _indices_copy(Tensor self) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: _indices_copy + tags: view_copy + autogen: _indices_copy.out + +- func: _values_copy(Tensor self) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: _values_copy + tags: view_copy + autogen: _values_copy.out + +- func: indices_copy(Tensor self) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: indices_copy + tags: view_copy + autogen: indices_copy.out + +- func: values_copy(Tensor self) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: values_copy + tags: view_copy + autogen: values_copy.out + +- func: crow_indices_copy(Tensor self) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: crow_indices_copy + tags: view_copy + autogen: crow_indices_copy.out + +- func: col_indices_copy(Tensor self) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: col_indices_copy + tags: view_copy + autogen: col_indices_copy.out + +- func: ccol_indices_copy(Tensor self) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: ccol_indices_copy + tags: view_copy + autogen: ccol_indices_copy.out + +- func: row_indices_copy(Tensor self) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: row_indices_copy + tags: view_copy + autogen: row_indices_copy.out + +- func: unbind_copy.int(Tensor self, int dim=0) -> Tensor[] + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: unbind_copy_int + tags: view_copy + +- func: unbind_copy.int_out(Tensor self, int dim=0, *, Tensor(a!)[] out) -> () + variants: function + dispatch: + CompositeExplicitAutograd: unbind_copy_int_out + +- func: split_copy.Tensor_out(Tensor self, SymInt split_size, int dim=0, *, Tensor(a!)[] out) -> () + variants: function + dispatch: + CompositeExplicitAutograd: split_copy_Tensor_out + + +- func: split_with_sizes_copy.out(Tensor self, SymInt[] split_sizes, int dim=0, *, Tensor(a!)[] out) -> () + variants: function + dispatch: + CompositeExplicitAutograd: split_with_sizes_copy_out + CUDA: split_with_sizes_copy_out_cuda + +- func: view_copy(Tensor self, SymInt[] size) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: view_copy_symint + tags: view_copy + autogen: view_copy.out + +- func: view_copy.dtype(Tensor self, ScalarType dtype) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: view_copy_dtype + tags: view_copy + autogen: view_copy.dtype_out + +- func: unfold_copy(Tensor self, int dimension, int size, int step) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: unfold_copy + tags: view_copy + autogen: unfold_copy.out + +- func: alias_copy(Tensor self) -> Tensor + variants: function + dispatch: + CompositeExplicitAutogradNonFunctional: alias_copy + tags: view_copy + autogen: alias_copy.out + +- func: to_padded_tensor(Tensor self, float padding, SymInt[]? output_size=None) -> Tensor + variants: method + dispatch: + NestedTensorCPU: NestedTensor_to_padded_tensor_generic + NestedTensorCUDA: NestedTensor_to_padded_tensor_cuda + autogen: to_padded_tensor.out + +- func: _jagged_to_padded_dense_forward(Tensor values, Tensor[] offsets, SymInt[] max_lengths, float padding_value=0.0) -> Tensor + variants: function + dispatch: + CUDA: _fbgemm_jagged_to_padded_dense_forward + CPU: _jagged_to_padded_dense_forward_cpu + +- func: _padded_dense_to_jagged_forward(Tensor dense, Tensor[] offsets, SymInt? total_L=None) -> Tensor + variants: function + dispatch: + CUDA: _fbgemm_dense_to_jagged_forward_symint + CPU: _padded_dense_to_jagged_forward_cpu + +- func: _nested_from_padded_tensor(Tensor padded, Tensor offsets, Tensor dummy, int ragged_idx=1, Tensor? min_seqlen=None, Tensor? max_seqlen=None, SymInt? sum_S=None) -> Tensor + variants: function + device_check: NoCheck + dispatch: {} + +- func: _nested_tensor_softmax_with_shape(Tensor self, Tensor query) -> Tensor + dispatch: + NestedTensorCPU: NestedTensor_softmax_dropout + NestedTensorCUDA: NestedTensor_softmax_dropout_cuda + tags: nondeterministic_seeded + +- func: _safe_softmax(Tensor self, int dim, ScalarType? dtype=None) -> Tensor + dispatch: + CompositeExplicitAutograd: _safe_softmax + NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: _safe_softmax + +# Apparently, putting "forward" in the name will cause Python bindings to be skipped, so "fwd" it is. +- func: _transformer_encoder_layer_fwd(Tensor src, int embed_dim, int num_heads, Tensor qkv_weight, Tensor qkv_bias, Tensor proj_weight, Tensor proj_bias, bool use_gelu, bool norm_first, float eps, Tensor norm_weight_1, Tensor norm_bias_1, Tensor norm_weight_2, Tensor norm_bias_2, Tensor ffn_weight_1, Tensor ffn_bias_1, Tensor ffn_weight_2, Tensor ffn_bias_2, Tensor? mask=None, int? mask_type=None) -> Tensor + variants: function + dispatch: + CPU, CUDA, NestedTensorCPU, NestedTensorHPU, NestedTensorCUDA: transformer_encoder_layer_forward + autogen: _transformer_encoder_layer_fwd.out + +- func: _native_multi_head_attention(Tensor query, Tensor key, Tensor value, int embed_dim, int num_head, Tensor qkv_weight, Tensor qkv_bias, Tensor proj_weight, Tensor proj_bias, Tensor? mask=None, bool need_weights=True, bool average_attn_weights=True, int? mask_type=None) -> (Tensor, Tensor) + variants: function + dispatch: + CPU, NestedTensorCPU: native_multi_head_attention_cpu + CUDA, NestedTensorCUDA: native_multi_head_attention_cuda + autogen: _native_multi_head_attention.out + +- func: scaled_dot_product_attention(Tensor query, Tensor key, Tensor value, Tensor? attn_mask=None, float dropout_p=0.0, bool is_causal=False, *, float? scale=None, bool enable_gqa=False) -> Tensor + python_module: nn + variants: function + autogen: scaled_dot_product_attention.out + tags: nondeterministic_seeded + +# This aten function is kept so that we can test the choice function from Python +- func: _fused_sdp_choice(Tensor query, Tensor key, Tensor value, Tensor? attn_mask=None, float dropout_p=0.0, bool is_causal=False, *, float? scale=None, bool enable_gqa=False) -> int + dispatch: + Meta: _fused_sdp_choice_meta + CPU, NestedTensorCPU: _fused_sdp_choice_cpp + CUDA, NestedTensorCUDA: _fused_sdp_choice_cuda + XPU: _fused_sdp_choice_xpu + tags: nondeterministic_seeded + +- func: _scaled_dot_product_attention_math(Tensor query, Tensor key, Tensor value, Tensor? attn_mask=None, float dropout_p=0.0, bool is_causal=False, Tensor? dropout_mask=None, *, float? scale=None, bool enable_gqa=False) -> (Tensor, Tensor) + variants: function + tags: nondeterministic_seeded + +- func: _scaled_dot_product_attention_math_for_mps(Tensor query, Tensor key, Tensor value, Tensor? attn_mask=None, float dropout_p=0.0, bool is_causal=False, Tensor? dropout_mask=None, *, float? scale=None, bool enable_gqa=False) -> (Tensor, Tensor) + dispatch: + MPS: _scaled_dot_product_attention_math_mps + tags: nondeterministic_seeded + +- func: _scaled_dot_product_flash_attention(Tensor query, Tensor key, Tensor value, float dropout_p=0.0, bool is_causal=False, bool return_debug_mask=False, *, float? scale=None) -> (Tensor output, Tensor logsumexp, Tensor cum_seq_q, Tensor cum_seq_k, SymInt max_q, SymInt max_k, Tensor rng_state, Tensor unused, Tensor debug_attn_mask) + dispatch: + CUDA: _scaled_dot_product_flash_attention_cuda + XPU: _scaled_dot_product_flash_attention_xpu + NestedTensorCUDA: _scaled_dot_product_flash_attention_nestedtensor_cuda + tags: nondeterministic_seeded + +- func: _scaled_dot_product_flash_attention.quantized(Tensor query, Tensor key, Tensor value, Tensor? q_descale, Tensor? k_descale, Tensor? v_descale, float dropout_p=0.0, bool is_causal=False, bool return_debug_mask=False, *, float? scale=None) -> (Tensor output, Tensor logsumexp, Tensor cum_seq_q, Tensor cum_seq_k, SymInt max_q, SymInt max_k, Tensor rng_state, Tensor unused, Tensor debug_attn_mask) + dispatch: + CUDA: _scaled_dot_product_flash_attention_cuda_quantized + tags: nondeterministic_seeded + +- func: _scaled_dot_product_flash_attention_for_cpu(Tensor query, Tensor key, Tensor value, float dropout_p=0.0, bool is_causal=False, *, Tensor? attn_mask=None, float? scale=None) -> (Tensor output, Tensor logsumexp) + dispatch: + CPU: _scaled_dot_product_flash_attention_cpu + tags: nondeterministic_seeded + +- func: _scaled_dot_product_fused_attention_overrideable(Tensor query, Tensor key, Tensor value, Tensor? attn_bias=None, float dropout_p=0.0, bool is_causal=False, bool return_debug_mask=False, *, float? scale=None) -> (Tensor output, Tensor logsumexp, Tensor cum_seq_q, Tensor cum_seq_k, SymInt max_q, SymInt max_k, Tensor philox_seed, Tensor philox_offset, Tensor debug_attn_mask) + dispatch: + CompositeExplicitAutograd: _scaled_dot_product_fused_attention_overrideable + XPU: _scaled_dot_product_fused_attention_overrideable_xpu + tags: nondeterministic_seeded + +- func: _scaled_dot_product_flash_attention_backward(Tensor grad_out, Tensor query, Tensor key, Tensor value, Tensor out, Tensor logsumexp, Tensor cum_seq_q, Tensor cum_seq_k, SymInt max_q, SymInt max_k, float dropout_p, bool is_causal, Tensor philox_seed, Tensor philox_offset, *, float? scale=None) -> (Tensor grad_query, Tensor grad_key, Tensor grad_value) + device_check: NoCheck + variants: function + dispatch: + CUDA: _scaled_dot_product_flash_attention_backward_cuda + XPU: _scaled_dot_product_flash_attention_backward_xpu + NestedTensorCUDA: _scaled_dot_product_flash_attention_backward_nested + +- func: _scaled_dot_product_flash_attention_for_cpu_backward(Tensor grad_out, Tensor query, Tensor key, Tensor value, Tensor out, Tensor logsumexp, float dropout_p, bool is_causal, *, Tensor? attn_mask=None, float? scale=None) -> (Tensor grad_query, Tensor grad_key, Tensor grad_value) + device_check: NoCheck + variants: function + dispatch: + CPU: _scaled_dot_product_flash_attention_cpu_backward + +- func: _scaled_dot_product_fused_attention_overrideable_backward(Tensor grad_out, Tensor query, Tensor key, Tensor value, Tensor attn_bias, bool[4] grad_input_mask, Tensor out, Tensor logsumexp, Tensor cum_seq_q, Tensor cum_seq_k, SymInt max_q, SymInt max_k, float dropout_p, bool is_causal, Tensor philox_seed, Tensor philox_offset, *, float? scale=None) -> (Tensor grad_query, Tensor grad_key, Tensor grad_value, Tensor grad_attn_bias) + device_check: NoCheck + variants: function + dispatch: + CompositeExplicitAutograd: _scaled_dot_product_fused_attention_overrideable_backward + +- func: _scaled_dot_product_efficient_attention(Tensor query, Tensor key, Tensor value, Tensor? attn_bias, bool compute_log_sumexp, float dropout_p=0.0, bool is_causal=False, *, float? scale=None) -> (Tensor output, Tensor log_sumexp, Tensor philox_seed, Tensor philox_offset) + dispatch: + CUDA: _scaled_dot_product_efficient_attention_cuda + NestedTensorCUDA: _scaled_dot_product_efficient_attention_nestedtensor_cuda + tags: nondeterministic_seeded + +- func: _scaled_dot_product_efficient_attention_backward(Tensor grad_out_, Tensor query, Tensor key, Tensor value, Tensor attn_bias, Tensor out, Tensor logsumexp, Tensor philox_seed, Tensor philox_offset, float dropout_p, bool[4] grad_input_mask, bool is_causal=False, *, float? scale=None) -> (Tensor, Tensor, Tensor, Tensor) + device_check: NoCheck + dispatch: + CUDA: _scaled_dot_product_efficient_attention_backward_cuda + tags: nondeterministic_seeded + +- func: _scaled_dot_product_cudnn_attention(Tensor query, Tensor key, Tensor value, Tensor? attn_bias, bool compute_log_sumexp, float dropout_p=0.0, bool is_causal=False, bool return_debug_mask=False, *, float? scale=None) -> (Tensor output, Tensor logsumexp, Tensor cum_seq_q, Tensor cum_seq_k, SymInt max_q, SymInt max_k, Tensor philox_seed, Tensor philox_offset, Tensor debug_attn_mask) + dispatch: + CUDA: _scaled_dot_product_cudnn_attention_cuda + NestedTensorCUDA: _scaled_dot_product_cudnn_attention_nestedtensor_cuda + tags: nondeterministic_seeded + +- func: _scaled_dot_product_cudnn_attention_backward(Tensor grad_out, Tensor query, Tensor key, Tensor value, Tensor out, Tensor logsumexp, Tensor philox_seed, Tensor philox_offset, Tensor attn_bias, Tensor cum_seq_q, Tensor cum_seq_k, SymInt max_q, SymInt max_k, float dropout_p, bool is_causal, *, float? scale=None) -> (Tensor, Tensor, Tensor) + dispatch: + CUDA: _scaled_dot_product_cudnn_attention_backward_cuda + NestedTensorCUDA: _scaled_dot_product_cudnn_attention_nestedtensor_backward_cuda + tags: nondeterministic_seeded + +- func: _flash_attention_forward(Tensor query, Tensor key, Tensor value, Tensor? cum_seq_q, Tensor? cum_seq_k, SymInt max_q, SymInt max_k, float dropout_p, bool is_causal, bool return_debug_mask, *, float? scale=None, SymInt? window_size_left=None, SymInt? window_size_right=None, Tensor? seqused_k=None, Tensor? alibi_slopes=None, Tensor? block_table=None, int? num_splits=None) -> (Tensor output, Tensor softmax_logsumexp, Tensor rng_state, Tensor unused, Tensor debug_attn_mask) + variants: function + dispatch: + CUDA: _flash_attention_forward + tags: nondeterministic_seeded + +- func: _flash_attention_forward_no_dropout_inplace(Tensor(a!) out, Tensor query, Tensor key, Tensor value, Tensor? cum_seq_q, Tensor? cum_seq_k, SymInt max_q, SymInt max_k, float dropout_p, bool is_causal, bool return_debug_mask, *, float? scale=None, SymInt? window_size_left=None, SymInt? window_size_right=None, Tensor? seqused_k=None, Tensor? alibi_slopes=None, Tensor? block_table=None, int? num_splits=None) -> Tensor softmax_logsumexp + variants: function + dispatch: + CUDA: _flash_attention_forward_no_dropout_inplace + tags: nondeterministic_seeded + +- func: _flash_attention_forward.quantized(Tensor query, Tensor key, Tensor value, Tensor? cum_seq_q, Tensor? cum_seq_k, SymInt max_q, SymInt max_k, float dropout_p, bool is_causal, bool return_debug_mask, Tensor? q_descale, Tensor? k_descale, Tensor? v_descale, *, float? scale=None, SymInt? window_size_left=None, SymInt? window_size_right=None, Tensor? seqused_k=None, Tensor? alibi_slopes=None) -> (Tensor output, Tensor softmax_logsumexp, Tensor rng_state, Tensor unused, Tensor debug_attn_mask) + variants: function + dispatch: + CUDA: _flash_attention_forward_quantized + tags: nondeterministic_seeded + +- func: _flash_attention_backward(Tensor grad_out, Tensor query, Tensor key, Tensor value, Tensor out, Tensor logsumexp, Tensor cum_seq_q, Tensor cum_seq_k, SymInt max_q, SymInt max_k, float dropout_p, bool is_causal, Tensor rng_state, Tensor unused, *, float? scale=None, SymInt? window_size_left=None, SymInt? window_size_right=None) -> (Tensor, Tensor, Tensor) + device_check: NoCheck + variants: function + dispatch: + CUDA: _flash_attention_backward + +# Returns output, logsumexp if compute_logsumexp +- func: _efficient_attention_forward(Tensor query, Tensor key, Tensor value, Tensor? bias, Tensor? cu_seqlens_q, Tensor? cu_seqlens_k, SymInt? max_seqlen_q, SymInt? max_seqlen_k, float dropout_p, int custom_mask_type, bool compute_log_sumexp=False, *, float? scale=None, Tensor? seqlen_k=None, int? window_size=None) -> (Tensor output, Tensor logsumexp, Tensor philox_seed, Tensor philox_offset, SymInt max_seqlen_batch_q, SymInt max_seqlen_batch_k) + variants: function + dispatch: + CUDA: _efficient_attention_forward + tags: nondeterministic_seeded + +- func: _efficient_attention_backward(Tensor grad_out_, Tensor query, Tensor key, Tensor value, Tensor? bias, Tensor out, Tensor? cu_seqlens_q, Tensor? cu_seqlens_k, SymInt max_seqlen_q, SymInt max_seqlen_k, Tensor logsumexp, float dropout_p, Tensor philox_seed, Tensor philox_offset, int custom_mask_type, bool bias_requires_grad, *, float? scale=None, int? num_splits_key=None, int? window_size=None, bool shared_storage_dqdkdv=False) -> (Tensor, Tensor, Tensor, Tensor) + device_check: NoCheck + variants: function + dispatch: + CUDA: _efficient_attention_backward + +- func: _cudnn_attention_forward(Tensor query, Tensor key, Tensor value, Tensor? attn_bias, Tensor? cum_seq_q, Tensor? cum_seq_k, SymInt max_q, SymInt max_k, bool compute_log_sumexp, float dropout_p=0.0, bool is_causal=False, bool return_debug_mask=False, *, float? scale=None) -> (Tensor output, Tensor logsumexp, Tensor cum_seq_q, Tensor cum_seq_k, SymInt max_q, SymInt max_k, Tensor philox_seed, Tensor philox_offset, Tensor debug_attn_mask) + dispatch: + CUDA: _cudnn_attention_forward + tags: nondeterministic_seeded + +- func: _cudnn_attention_backward(Tensor grad_out, Tensor query, Tensor key, Tensor value, Tensor out, Tensor logsumexp, Tensor philox_seed, Tensor philox_offset, Tensor attn_bias, Tensor cum_seq_q, Tensor cum_seq_k, SymInt max_q, SymInt max_k, float dropout_p, bool is_causal, *, float? scale=None) -> (Tensor, Tensor, Tensor) + dispatch: + CUDA: _cudnn_attention_backward + tags: nondeterministic_seeded + +- func: _triton_scaled_dot_attention(Tensor q, Tensor k, Tensor v, float dropout_p=0.0) -> Tensor + variants: function + dispatch: + CUDA: triton_scaled_dot_attention + tags: nondeterministic_seeded + autogen: _triton_scaled_dot_attention.out + +- func: _fill_mem_eff_dropout_mask_(Tensor(a!) self, float dropout_p, int seed, int offset) -> Tensor(a!) + variants: function + dispatch: + CUDA: _fill_mem_eff_dropout_mask_ + tags: nondeterministic_seeded + +- func: _triton_multi_head_attention(Tensor query, Tensor key, Tensor value, int embed_dim, int num_head, Tensor qkv_weight, Tensor qkv_bias, Tensor proj_weight, Tensor proj_bias, Tensor? mask=None) -> Tensor + variants: function + dispatch: + CUDA: triton_multi_head_attention + autogen: _triton_multi_head_attention.out + +- func: special_airy_ai(Tensor x) -> Tensor + python_module: special + structured_delegate: special_airy_ai.out + variants: function + tags: pointwise + +- func: special_airy_ai.out(Tensor x, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, CUDA: special_airy_ai_out + python_module: special + structured_inherits: TensorIteratorBase + structured: True + variants: function + tags: pointwise + +- func: special_bessel_j0(Tensor self) -> Tensor + python_module: special + structured_delegate: special_bessel_j0.out + variants: function + tags: pointwise + +- func: special_bessel_j0.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, CUDA, MPS: special_bessel_j0_out + python_module: special + structured_inherits: TensorIteratorBase + structured: True + variants: function + tags: pointwise + +- func: special_bessel_j1(Tensor self) -> Tensor + python_module: special + structured_delegate: special_bessel_j1.out + variants: function + tags: pointwise + +- func: special_bessel_j1.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, CUDA, MPS: special_bessel_j1_out + python_module: special + structured_inherits: TensorIteratorBase + structured: True + variants: function + tags: pointwise + +- func: special_bessel_y0(Tensor self) -> Tensor + python_module: special + structured_delegate: special_bessel_y0.out + variants: function + tags: pointwise + +- func: special_bessel_y0.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, CUDA, MPS: special_bessel_y0_out + python_module: special + structured_inherits: TensorIteratorBase + structured: True + variants: function + tags: pointwise + +- func: special_bessel_y1(Tensor self) -> Tensor + python_module: special + structured_delegate: special_bessel_y1.out + variants: function + tags: pointwise + +- func: special_bessel_y1.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, CUDA, MPS: special_bessel_y1_out + python_module: special + structured_inherits: TensorIteratorBase + structured: True + variants: function + tags: pointwise + +- func: special_chebyshev_polynomial_t(Tensor x, Tensor n) -> Tensor + device_check: NoCheck + python_module: special + structured_delegate: special_chebyshev_polynomial_t.out + variants: function + tags: pointwise + +- func: special_chebyshev_polynomial_t.x_scalar(Scalar x, Tensor n) -> Tensor + dispatch: + CompositeExplicitAutograd: special_chebyshev_polynomial_t + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_chebyshev_polynomial_t.n_scalar(Tensor x, Scalar n) -> Tensor + dispatch: + CompositeExplicitAutograd: special_chebyshev_polynomial_t + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_chebyshev_polynomial_t.out(Tensor x, Tensor n, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck + dispatch: + CPU, CUDA, MPS: special_chebyshev_polynomial_t_out + python_module: special + structured_inherits: TensorIteratorBase + structured: True + variants: function + tags: pointwise + +- func: special_chebyshev_polynomial_t.x_scalar_out(Scalar x, Tensor n, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: special_chebyshev_polynomial_t_out + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_chebyshev_polynomial_t.n_scalar_out(Tensor x, Scalar n, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: special_chebyshev_polynomial_t_out + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_chebyshev_polynomial_u(Tensor x, Tensor n) -> Tensor + device_check: NoCheck + python_module: special + structured_delegate: special_chebyshev_polynomial_u.out + variants: function + tags: pointwise + +- func: special_chebyshev_polynomial_u.x_scalar(Scalar x, Tensor n) -> Tensor + dispatch: + CompositeExplicitAutograd: special_chebyshev_polynomial_u + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_chebyshev_polynomial_u.n_scalar(Tensor x, Scalar n) -> Tensor + dispatch: + CompositeExplicitAutograd: special_chebyshev_polynomial_u + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_chebyshev_polynomial_u.out(Tensor x, Tensor n, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck + dispatch: + CPU, CUDA, MPS: special_chebyshev_polynomial_u_out + python_module: special + structured_inherits: TensorIteratorBase + structured: True + variants: function + tags: pointwise + +- func: special_chebyshev_polynomial_u.x_scalar_out(Scalar x, Tensor n, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: special_chebyshev_polynomial_u_out + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_chebyshev_polynomial_u.n_scalar_out(Tensor x, Scalar n, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: special_chebyshev_polynomial_u_out + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_chebyshev_polynomial_v(Tensor x, Tensor n) -> Tensor + device_check: NoCheck + python_module: special + structured_delegate: special_chebyshev_polynomial_v.out + variants: function + tags: pointwise + +- func: special_chebyshev_polynomial_v.x_scalar(Scalar x, Tensor n) -> Tensor + dispatch: + CompositeExplicitAutograd: special_chebyshev_polynomial_v + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_chebyshev_polynomial_v.n_scalar(Tensor x, Scalar n) -> Tensor + dispatch: + CompositeExplicitAutograd: special_chebyshev_polynomial_v + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_chebyshev_polynomial_v.out(Tensor x, Tensor n, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck + dispatch: + CPU, CUDA, MPS: special_chebyshev_polynomial_v_out + python_module: special + structured_inherits: TensorIteratorBase + structured: True + variants: function + tags: pointwise + +- func: special_chebyshev_polynomial_v.x_scalar_out(Scalar x, Tensor n, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: special_chebyshev_polynomial_v_out + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_chebyshev_polynomial_v.n_scalar_out(Tensor x, Scalar n, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: special_chebyshev_polynomial_v_out + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_chebyshev_polynomial_w(Tensor x, Tensor n) -> Tensor + device_check: NoCheck + python_module: special + structured_delegate: special_chebyshev_polynomial_w.out + variants: function + tags: pointwise + +- func: special_chebyshev_polynomial_w.x_scalar(Scalar x, Tensor n) -> Tensor + dispatch: + CompositeExplicitAutograd: special_chebyshev_polynomial_w + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_chebyshev_polynomial_w.n_scalar(Tensor x, Scalar n) -> Tensor + dispatch: + CompositeExplicitAutograd: special_chebyshev_polynomial_w + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_chebyshev_polynomial_w.out(Tensor x, Tensor n, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck + dispatch: + CPU, CUDA, MPS: special_chebyshev_polynomial_w_out + python_module: special + structured_inherits: TensorIteratorBase + structured: True + variants: function + tags: pointwise + +- func: special_chebyshev_polynomial_w.x_scalar_out(Scalar x, Tensor n, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: special_chebyshev_polynomial_w_out + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_chebyshev_polynomial_w.n_scalar_out(Tensor x, Scalar n, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: special_chebyshev_polynomial_w_out + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_hermite_polynomial_h(Tensor x, Tensor n) -> Tensor + device_check: NoCheck + python_module: special + structured_delegate: special_hermite_polynomial_h.out + variants: function + tags: pointwise + +- func: special_hermite_polynomial_h.x_scalar(Scalar x, Tensor n) -> Tensor + dispatch: + CompositeExplicitAutograd: special_hermite_polynomial_h + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_hermite_polynomial_h.n_scalar(Tensor x, Scalar n) -> Tensor + dispatch: + CompositeExplicitAutograd: special_hermite_polynomial_h + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_hermite_polynomial_h.out(Tensor x, Tensor n, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck + dispatch: + CPU, CUDA, MPS: special_hermite_polynomial_h_out + python_module: special + structured_inherits: TensorIteratorBase + structured: True + variants: function + tags: pointwise + +- func: special_hermite_polynomial_h.x_scalar_out(Scalar x, Tensor n, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: special_hermite_polynomial_h_out + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_hermite_polynomial_h.n_scalar_out(Tensor x, Scalar n, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: special_hermite_polynomial_h_out + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_hermite_polynomial_he(Tensor x, Tensor n) -> Tensor + device_check: NoCheck + python_module: special + structured_delegate: special_hermite_polynomial_he.out + variants: function + tags: pointwise + +- func: special_hermite_polynomial_he.x_scalar(Scalar x, Tensor n) -> Tensor + dispatch: + CompositeExplicitAutograd: special_hermite_polynomial_he + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_hermite_polynomial_he.n_scalar(Tensor x, Scalar n) -> Tensor + dispatch: + CompositeExplicitAutograd: special_hermite_polynomial_he + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_hermite_polynomial_he.out(Tensor x, Tensor n, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck + dispatch: + CPU, CUDA, MPS: special_hermite_polynomial_he_out + python_module: special + structured_inherits: TensorIteratorBase + structured: True + variants: function + tags: pointwise + +- func: special_hermite_polynomial_he.x_scalar_out(Scalar x, Tensor n, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: special_hermite_polynomial_he_out + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_hermite_polynomial_he.n_scalar_out(Tensor x, Scalar n, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: special_hermite_polynomial_he_out + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_laguerre_polynomial_l(Tensor x, Tensor n) -> Tensor + device_check: NoCheck + python_module: special + structured_delegate: special_laguerre_polynomial_l.out + variants: function + tags: pointwise + +- func: special_laguerre_polynomial_l.x_scalar(Scalar x, Tensor n) -> Tensor + dispatch: + CompositeExplicitAutograd: special_laguerre_polynomial_l + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_laguerre_polynomial_l.n_scalar(Tensor x, Scalar n) -> Tensor + dispatch: + CompositeExplicitAutograd: special_laguerre_polynomial_l + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_laguerre_polynomial_l.out(Tensor x, Tensor n, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck + dispatch: + CPU, CUDA: special_laguerre_polynomial_l_out + python_module: special + structured_inherits: TensorIteratorBase + structured: True + variants: function + tags: pointwise + +- func: special_laguerre_polynomial_l.x_scalar_out(Scalar x, Tensor n, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: special_laguerre_polynomial_l_out + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_laguerre_polynomial_l.n_scalar_out(Tensor x, Scalar n, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: special_laguerre_polynomial_l_out + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_legendre_polynomial_p(Tensor x, Tensor n) -> Tensor + device_check: NoCheck + python_module: special + structured_delegate: special_legendre_polynomial_p.out + variants: function + tags: pointwise + +- func: special_legendre_polynomial_p.x_scalar(Scalar x, Tensor n) -> Tensor + dispatch: + CompositeExplicitAutograd: special_legendre_polynomial_p + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_legendre_polynomial_p.n_scalar(Tensor x, Scalar n) -> Tensor + dispatch: + CompositeExplicitAutograd: special_legendre_polynomial_p + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_legendre_polynomial_p.out(Tensor x, Tensor n, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck + dispatch: + CPU, CUDA: special_legendre_polynomial_p_out + python_module: special + structured_inherits: TensorIteratorBase + structured: True + variants: function + tags: pointwise + +- func: special_legendre_polynomial_p.x_scalar_out(Scalar x, Tensor n, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: special_legendre_polynomial_p_out + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_legendre_polynomial_p.n_scalar_out(Tensor x, Scalar n, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: special_legendre_polynomial_p_out + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_modified_bessel_i0(Tensor self) -> Tensor + python_module: special + structured_delegate: special_modified_bessel_i0.out + variants: function + tags: pointwise + +- func: special_modified_bessel_i0.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, CUDA, MPS: special_modified_bessel_i0_out + python_module: special + structured_inherits: TensorIteratorBase + structured: True + variants: function + tags: pointwise + +- func: special_modified_bessel_i1(Tensor self) -> Tensor + python_module: special + structured_delegate: special_modified_bessel_i1.out + variants: function + tags: pointwise + +- func: special_modified_bessel_i1.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, CUDA, MPS: special_modified_bessel_i1_out + python_module: special + structured_inherits: TensorIteratorBase + structured: True + variants: function + tags: pointwise + +- func: special_modified_bessel_k0(Tensor self) -> Tensor + python_module: special + structured_delegate: special_modified_bessel_k0.out + variants: function + tags: pointwise + +- func: special_modified_bessel_k0.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, CUDA, MPS: special_modified_bessel_k0_out + python_module: special + structured_inherits: TensorIteratorBase + structured: True + variants: function + tags: pointwise + +- func: special_modified_bessel_k1(Tensor self) -> Tensor + python_module: special + structured_delegate: special_modified_bessel_k1.out + variants: function + tags: pointwise + +- func: special_modified_bessel_k1.out(Tensor self, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, CUDA, MPS: special_modified_bessel_k1_out + python_module: special + structured_inherits: TensorIteratorBase + structured: True + variants: function + tags: pointwise + +- func: special_scaled_modified_bessel_k0(Tensor x) -> Tensor + python_module: special + structured_delegate: special_scaled_modified_bessel_k0.out + variants: function + tags: pointwise + +- func: special_scaled_modified_bessel_k0.out(Tensor x, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, CUDA, MPS: special_scaled_modified_bessel_k0_out + python_module: special + structured_inherits: TensorIteratorBase + structured: True + variants: function + tags: pointwise + +- func: special_scaled_modified_bessel_k1(Tensor x) -> Tensor + python_module: special + structured_delegate: special_scaled_modified_bessel_k1.out + variants: function + tags: pointwise + +- func: special_scaled_modified_bessel_k1.out(Tensor x, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, CUDA, MPS: special_scaled_modified_bessel_k1_out + python_module: special + structured_inherits: TensorIteratorBase + structured: True + variants: function + tags: pointwise + +- func: special_shifted_chebyshev_polynomial_t(Tensor x, Tensor n) -> Tensor + device_check: NoCheck + python_module: special + structured_delegate: special_shifted_chebyshev_polynomial_t.out + variants: function + tags: pointwise + +- func: special_shifted_chebyshev_polynomial_t.x_scalar(Scalar x, Tensor n) -> Tensor + dispatch: + CompositeExplicitAutograd: special_shifted_chebyshev_polynomial_t + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_shifted_chebyshev_polynomial_t.n_scalar(Tensor x, Scalar n) -> Tensor + dispatch: + CompositeExplicitAutograd: special_shifted_chebyshev_polynomial_t + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_shifted_chebyshev_polynomial_t.out(Tensor x, Tensor n, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck + dispatch: + CPU, CUDA, MPS: special_shifted_chebyshev_polynomial_t_out + python_module: special + structured_inherits: TensorIteratorBase + structured: True + variants: function + tags: pointwise + +- func: special_shifted_chebyshev_polynomial_t.x_scalar_out(Scalar x, Tensor n, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: special_shifted_chebyshev_polynomial_t_out + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_shifted_chebyshev_polynomial_t.n_scalar_out(Tensor x, Scalar n, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: special_shifted_chebyshev_polynomial_t_out + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_shifted_chebyshev_polynomial_u(Tensor x, Tensor n) -> Tensor + device_check: NoCheck + python_module: special + structured_delegate: special_shifted_chebyshev_polynomial_u.out + variants: function + tags: pointwise + +- func: special_shifted_chebyshev_polynomial_u.x_scalar(Scalar x, Tensor n) -> Tensor + dispatch: + CompositeExplicitAutograd: special_shifted_chebyshev_polynomial_u + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_shifted_chebyshev_polynomial_u.n_scalar(Tensor x, Scalar n) -> Tensor + dispatch: + CompositeExplicitAutograd: special_shifted_chebyshev_polynomial_u + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_shifted_chebyshev_polynomial_u.out(Tensor x, Tensor n, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck + dispatch: + CPU, CUDA, MPS: special_shifted_chebyshev_polynomial_u_out + python_module: special + structured_inherits: TensorIteratorBase + structured: True + variants: function + tags: pointwise + +- func: special_shifted_chebyshev_polynomial_u.x_scalar_out(Scalar x, Tensor n, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: special_shifted_chebyshev_polynomial_u_out + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_shifted_chebyshev_polynomial_u.n_scalar_out(Tensor x, Scalar n, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: special_shifted_chebyshev_polynomial_u_out + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_shifted_chebyshev_polynomial_v(Tensor x, Tensor n) -> Tensor + device_check: NoCheck + python_module: special + structured_delegate: special_shifted_chebyshev_polynomial_v.out + variants: function + tags: pointwise + +- func: special_shifted_chebyshev_polynomial_v.x_scalar(Scalar x, Tensor n) -> Tensor + dispatch: + CompositeExplicitAutograd: special_shifted_chebyshev_polynomial_v + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_shifted_chebyshev_polynomial_v.n_scalar(Tensor x, Scalar n) -> Tensor + dispatch: + CompositeExplicitAutograd: special_shifted_chebyshev_polynomial_v + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_shifted_chebyshev_polynomial_v.out(Tensor x, Tensor n, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck + dispatch: + CPU, CUDA, MPS: special_shifted_chebyshev_polynomial_v_out + python_module: special + structured_inherits: TensorIteratorBase + structured: True + variants: function + tags: pointwise + +- func: special_shifted_chebyshev_polynomial_v.x_scalar_out(Scalar x, Tensor n, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: special_shifted_chebyshev_polynomial_v_out + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_shifted_chebyshev_polynomial_v.n_scalar_out(Tensor x, Scalar n, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: special_shifted_chebyshev_polynomial_v_out + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_shifted_chebyshev_polynomial_w(Tensor x, Tensor n) -> Tensor + device_check: NoCheck + python_module: special + structured_delegate: special_shifted_chebyshev_polynomial_w.out + variants: function + tags: pointwise + +- func: special_shifted_chebyshev_polynomial_w.x_scalar(Scalar x, Tensor n) -> Tensor + dispatch: + CompositeExplicitAutograd: special_shifted_chebyshev_polynomial_w + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_shifted_chebyshev_polynomial_w.n_scalar(Tensor x, Scalar n) -> Tensor + dispatch: + CompositeExplicitAutograd: special_shifted_chebyshev_polynomial_w + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_shifted_chebyshev_polynomial_w.out(Tensor x, Tensor n, *, Tensor(a!) out) -> Tensor(a!) + device_check: NoCheck + dispatch: + CPU, CUDA, MPS: special_shifted_chebyshev_polynomial_w_out + python_module: special + structured_inherits: TensorIteratorBase + structured: True + variants: function + tags: pointwise + +- func: special_shifted_chebyshev_polynomial_w.x_scalar_out(Scalar x, Tensor n, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: special_shifted_chebyshev_polynomial_w_out + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_shifted_chebyshev_polynomial_w.n_scalar_out(Tensor x, Scalar n, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CompositeExplicitAutograd: special_shifted_chebyshev_polynomial_w_out + device_check: NoCheck + python_module: special + variants: function + tags: pointwise + +- func: special_spherical_bessel_j0(Tensor x) -> Tensor + python_module: special + structured_delegate: special_spherical_bessel_j0.out + variants: function + tags: pointwise + +- func: special_spherical_bessel_j0.out(Tensor x, *, Tensor(a!) out) -> Tensor(a!) + dispatch: + CPU, CUDA, MPS: special_spherical_bessel_j0_out + python_module: special + structured_inherits: TensorIteratorBase + structured: True + variants: function + tags: pointwise + +# Aux function used in the test TestPythonDispatch.test_kwarg_only_and_positional_default +# within test/test_python_dispatch.py +- func: _foobar(Tensor self, bool arg1=True, bool arg2=True, *, bool arg3=True) -> Tensor + dispatch: + CPU: foobar + autogen: _foobar.out + +- func: _fused_adam_(Tensor(a!)[] self, Tensor(b!)[] grads, Tensor(c!)[] exp_avgs, Tensor(d!)[] exp_avg_sqs, Tensor(e!)[] max_exp_avg_sqs, Tensor[] state_steps, *, float lr, float beta1, float beta2, float weight_decay, float eps, bool amsgrad, bool maximize, Tensor? grad_scale=None, Tensor? found_inf=None) -> () + # Unlike "foreach" functions, lists of tensors should be guaranteed to be on the same device (for now). + variants: function + dispatch: + CPU: _fused_adam_kernel_cpu_ + CUDA: _fused_adam_kernel_cuda_ + MPS: _fused_adam_kernel_mps_ + autogen: _fused_adam, _fused_adam.out + +- func: _fused_adam_.tensor_lr(Tensor(a!)[] self, Tensor(b!)[] grads, Tensor(c!)[] exp_avgs, Tensor(d!)[] exp_avg_sqs, Tensor(e!)[] max_exp_avg_sqs, Tensor[] state_steps, *, Tensor lr, float beta1, float beta2, float weight_decay, float eps, bool amsgrad, bool maximize, Tensor? grad_scale=None, Tensor? found_inf=None) -> () + # Unlike "foreach" functions, lists of tensors should be guaranteed to be on the same device (for now), + # but still skip the device check as the Tensor LR can be on CPU + device_check: NoCheck + variants: function + dispatch: + CPU: _fused_adam_kernel_cpu_ + CUDA: _fused_adam_kernel_cuda_ + MPS: _fused_adam_kernel_mps_ + autogen: _fused_adam.tensor_lr, _fused_adam.tensor_lr_out + +- func: _fused_adamw_(Tensor(a!)[] self, Tensor(b!)[] grads, Tensor(c!)[] exp_avgs, Tensor(d!)[] exp_avg_sqs, Tensor(e!)[] max_exp_avg_sqs, Tensor[] state_steps, *, float lr, float beta1, float beta2, float weight_decay, float eps, bool amsgrad, bool maximize, Tensor? grad_scale=None, Tensor? found_inf=None) -> () + # Unlike "foreach" functions, lists of tensors should be guaranteed to be on the same device (for now). + variants: function + dispatch: + CPU: _fused_adamw_kernel_cpu_ + CUDA: _fused_adamw_kernel_cuda_ + MPS: _fused_adamw_kernel_mps_ + autogen: _fused_adamw, _fused_adamw.out + +- func: _fused_adamw_.tensor_lr(Tensor(a!)[] self, Tensor(b!)[] grads, Tensor(c!)[] exp_avgs, Tensor(d!)[] exp_avg_sqs, Tensor(e!)[] max_exp_avg_sqs, Tensor[] state_steps, *, Tensor lr, float beta1, float beta2, float weight_decay, float eps, bool amsgrad, bool maximize, Tensor? grad_scale=None, Tensor? found_inf=None) -> () + # Unlike "foreach" functions, lists of tensors should be guaranteed to be on the same device (for now), + # but still skip the device check as the Tensor LR can be on CPU + device_check: NoCheck + variants: function + dispatch: + CPU: _fused_adamw_kernel_cpu_ + CUDA: _fused_adamw_kernel_cuda_ + MPS: _fused_adamw_kernel_mps_ + autogen: _fused_adamw.tensor_lr, _fused_adamw.tensor_lr_out + +- func: _fused_sgd_(Tensor(a!)[] self, Tensor(b!)[] grads, Tensor(c!)[] momentum_buffer_list, *, float weight_decay, float momentum, float lr, float dampening, bool nesterov, bool maximize, bool is_first_step, Tensor? grad_scale=None, Tensor? found_inf=None) -> () + # Unlike "foreach" functions, lists of tensors should be guaranteed to be on the same device (for now). + variants: function + dispatch: + CPU: _fused_sgd_kernel_cpu_ + CUDA: _fused_sgd_kernel_cuda_ + MPS: _fused_sgd_kernel_mps_ + autogen: _fused_sgd, _fused_sgd.out + +- func: _fused_sgd_.tensor_lr(Tensor(a!)[] self, Tensor(b!)[] grads, Tensor(c!)[] momentum_buffer_list, *, float weight_decay, float momentum, Tensor lr, float dampening, bool nesterov, bool maximize, bool is_first_step, Tensor? grad_scale=None, Tensor? found_inf=None) -> () + # Unlike "foreach" functions, lists of tensors should be guaranteed to be on the same device (for now). + # but still skip the device check as the Tensor LR can be on CPU + device_check: NoCheck + variants: function + dispatch: + CPU: _fused_sgd_kernel_cpu_ + CUDA: _fused_sgd_kernel_cuda_ + MPS: _fused_sgd_kernel_mps_ + autogen: _fused_sgd.tensor_lr, _fused_sgd.tensor_lr_out + +- func: _fused_adagrad_(Tensor(a!)[] self, Tensor(b!)[] grads, Tensor(c!)[] state_sums, Tensor(d!)[] state_steps, *, float lr, float lr_decay, float weight_decay, float eps, bool maximize, Tensor? grad_scale=None, Tensor? found_inf=None) -> () + variants: function + dispatch: + CPU: _fused_adagrad_kernel_cpu_ + CUDA: _fused_adagrad_kernel_cuda_ + autogen: _fused_adagrad, _fused_adagrad.out + +- func: _fused_adagrad_.tensor_lr(Tensor(a!)[] self, Tensor(b!)[] grads, Tensor(c!)[] state_sums, Tensor[] state_steps, *, Tensor lr, float lr_decay, float weight_decay, float eps, bool maximize, Tensor? grad_scale=None, Tensor? found_inf=None) -> () + device_check: NoCheck + variants: function + dispatch: + CPU: _fused_adagrad_kernel_cpu_ + CUDA: _fused_adagrad_kernel_cuda_ + autogen: _fused_adagrad.tensor_lr, _fused_adagrad.tensor_lr_out + +# This op is ONLY used by pytorch/XLA in functionalization, and should never show up in vanilla eager mode or in any pytorch tracing contexts. +- func: _propagate_xla_data(Tensor input, Tensor output) -> () + variants: function diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/native/tags.yaml b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/native/tags.yaml new file mode 100644 index 0000000000000000000000000000000000000000..d76e38dae183d06348d3015ecaca9542e47a7da5 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/native/tags.yaml @@ -0,0 +1,105 @@ +# This yaml file contains all the possible tags that can be defined in `tags` in `native_functions.yaml` + +- tag: inplace_view + desc: | + This tag indicates if an operator *only* modifies the tensor metadata +- tag: pt2_compliant_tag + desc: | + This tag indicates if the operator is guaranteed to + work with the PT2 compilation APIs (torch.compile, + torch.export, etc). If you add this tag to an + operator, please use + `torch.testing._internal.optest.opcheck` to test that + the operator has been registered correctly and + works with torch.compile +- tag: view_copy + desc: | + This tag indicates operators that are *_copy* variants + of view/aliasing operators. If an operator has a view_copy tag, + then it should have the name {op}_copy, where {op} is a view operator. +- tag: dynamic_output_shape + desc: | + This tag indicates if an operator's output's shape depends on input Tensor + data. +- tag: data_dependent_output + desc: | + Operator has a non-Tensor output whose value is dependent on the data + of Tensor inputs. Among other things, this implies that this operator + cannot be run with meta tensor (since data is not available), nor + can it be symbolically traced. +- tag: generated + desc: | + This tag indicates that the operator doesn't have an explicit entry in + native_functions.yaml, and instead was generated automatically by the codegen. +- tag: nondeterministic_seeded + desc: | + This tag indicates if an operator is nondeterministically seeded + (i.e., is random) such that the operator intentionally produces + different results when run twice on the same inputs, but this randomness + is controlled by a Generator which, if reseeded would give you the + same result. +- tag: nondeterministic_bitwise + desc: | + This tag indicates if an operator doesn't guarantee bitwise equivalence + across different runs of an operator with identical inputs. +- tag: needs_exact_strides + desc: | + This tag indicates that the operator should be passed Tensors following + the same strides as observed in eager when compiled in inductor. + Only one of {needs_exact_strides, needs_contiguous_strides, needs_fixed_stride_order, flexible_layout} + can apply; if multiple are assigned then we assume the most restrictive one. +- tag: needs_contiguous_strides + desc: | + This tag indicates that the operator should be passed contiguous Tensors. + Failure to do so will result in undefined behavior. +- tag: needs_fixed_stride_order + desc: | + This tag indicates that the operator should be passed Tensors following + the same stride permutation as observed in eager when compiled in inductor. + Only one of {needs_exact_strides, needs_contiguous_strides, needs_fixed_stride_order, flexible_layout} + can apply; if multiple are assigned then we assume the most restrictive one. +- tag: flexible_layout + desc: | + This tag indicates that the custom operator can accept inputs with varying + strides/storage_offset and that when compiled, Inductor is allowed to change + the strides/storage_offset of inputs to the custom operator. + Only one of {needs_exact_strides, needs_contiguous_strides, needs_fixed_stride_order, flexible_layout} + can apply; if multiple are assigned then we assume the most restrictive one. + +# NOTE [Core ATen Ops] +- tag: core + desc: | + Core aten ops is a subset of aten ops that remains after aten-to-aten decomposition and + functionalization pass. Core aten ops are fully functional and adhere to single static + assignment (SSA): this implies there will be no `inplace` or `_out` variants in this opset. + This opset is designed to serve as the functional IR to interface with compiler backends. + In contrast to primTorch, core aten opset doesn't decompose ops into explicit + type promotion and broadcasting ops. + Core aten ops is also effectively the opset produced by torchdynamo.export(aten_graph=True), + and thus can be used as an opset for export purpose. +- tag: pointwise + desc: | + Pointwise operators are operators where each element of the output is computed only by accessing + the corresponding element of all the broadcasted inputs. The output shape will be the broadcasted + shape of the inputs. +- tag: maybe_aliasing_or_mutating + desc: | + For some ops, we can't statically determine whether the op is functional or not. Note that this is only + relevant to CIA ops that decompose before functionalization/autograd. It is useful to + know this information for export as we would want to decompose these ops as they are unsafe to be + preserved. +- tag: cudagraph_unsafe + desc: | + This operator does not support cudagraphs. The presence of this tag on an operator will cause + Inductor to split the graph around this operator. Note that operators without this tag may still + not support CUDAGraphs. Inductor may have other hardcoded lists around that. +- tag: reduction + desc: | + This tag indicates that an operator performs a reduction operation, computing aggregate values + (sum, mean, max, min, etc.) across one or more dimensions of the input tensor(s). +- tag: out_variant + desc: | + This tag indicates that the operator is an out variant of a functional + operator. This tag only applies to custom ops. Out variant operators + write their results to pre-allocated output tensors (the out args) + rather than allocating new tensors. diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/ATenOpList.cpp b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/ATenOpList.cpp new file mode 100644 index 0000000000000000000000000000000000000000..5de3424857e236917eb68940e7904446de59f586 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/ATenOpList.cpp @@ -0,0 +1,36 @@ +#include + +#include +#include +#include +#include +#include + +// ${generated_comment} + +namespace at { + +namespace { +struct OpNameEquals final { + bool operator()(const std::pair& lhs, const std::pair& rhs) const { + return 0 == strcmp(lhs.first, rhs.first) && 0 == strcmp(lhs.second, rhs.second); + } +}; + +struct OpNameHash final { + size_t operator()(const std::pair& p) const { + // use std::hash because std::hash would hash pointers and not pointed-to strings + return std::hash()(p.first) ^ (~ std::hash()(p.second)); + } +}; +} + +bool is_custom_op(const c10::OperatorName& opName) { + static std::unordered_set, OpNameHash, OpNameEquals> ops { + ${aten_ops} + {"", ""} + }; + return ops.count(std::make_pair( + opName.name.c_str(), opName.overload_name.c_str())) == 0; +} +} diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/CompositeViewCopyKernels.cpp b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/CompositeViewCopyKernels.cpp new file mode 100644 index 0000000000000000000000000000000000000000..47097d7aa4320674bec4bddbb5ac861309334f0c --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/CompositeViewCopyKernels.cpp @@ -0,0 +1,73 @@ +#define TORCH_ASSERT_ONLY_METHOD_OPERATORS +// ${generated_comment} + +#include +#include +#include + +#ifndef AT_PER_OPERATOR_HEADERS +#include +#else +#include +$ops_headers +#endif + +namespace at { +namespace native { + +// This file contains a number of kernels for aten functions that are fully code-generated. +// TODO: rename this file to something more generic. + +namespace { +at::Tensor clone_arg(const at::Tensor& t) { + return t.clone(); +} + +std::vector clone_arg(const at::TensorList& t_list) { + std::vector out(t_list.size()); + for (const auto& i : c10::irange(t_list.size())) { + out[i] = t_list[i].clone(); + } + return out; +} + +// duped with gen_resize_out_helper from structured kernels +void copy_arg(const at::Tensor& dst, const at::Tensor& src) { + TORCH_CHECK(src.dtype() == dst.dtype(), + "Expected out tensor to have dtype ", src.dtype(), ", but got ", dst.dtype(), " instead"); + TORCH_CHECK(src.device() == dst.device(), + "Expected out tensor to have device ", src.device(), ", but got ", dst.device(), " instead"); + dst.copy_(src); +} + +void copy_arg(const at::TensorList& dst, const at::TensorList& src) { + TORCH_INTERNAL_ASSERT(dst.size() == src.size()); + for (const auto& i : c10::irange(dst.size())) { + copy_arg(dst[i], src[i]); + } +} + +// TODO: this doesn't handle restriding empty tensors correctly; see +// gen_resize_out_helper for the correct algorithm + +void resize_out_helper(const at::Tensor& dst, const at::Tensor& src) { + at::native::resize_output(dst, src.sizes()); +} + +void resize_out_helper(const at::TensorList& dst, const at::TensorList& src) { + TORCH_INTERNAL_ASSERT(dst.size() == src.size()); + for (const auto& i : c10::irange(dst.size())) { + at::native::resize_output(dst[i], src[i].sizes()); + } +} +} + + +${CompositeViewCopyKernel_Definitions} + +${GeneratedCompositeFunctional_Definitions} + +${GeneratedCompositeOut_Definitions} + +} // namespace native +} // namespace at diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/DispatchKeyFunction.h b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/DispatchKeyFunction.h new file mode 100644 index 0000000000000000000000000000000000000000..c92d5eb3898ecea0fb9e1f79c2725d1bc6dfa7fb --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/DispatchKeyFunction.h @@ -0,0 +1,23 @@ +#pragma once +// ${generated_comment} + +// NB: The implementing C++ file is RegisterDispatchKey.cpp + +// The only #includes we need are for custom classes that have defaults in the C++ API +#include +#include +#include + +// Forward declarations of any types needed in the operator signatures. +// We can't directly include these classes because it will cause circular include dependencies. +// This file is included by TensorBody.h, which defines the Tensor class. +#include + +namespace at { + +namespace ${dispatch_namespace} { + +${dispatch_namespaced_declarations} + +} // namespace ${dispatch_namespace} +} // namespace at diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/DispatchKeyFunctions.h b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/DispatchKeyFunctions.h new file mode 100644 index 0000000000000000000000000000000000000000..35f43297fdd9ca9f932c8c53b5b773f1b9b8a427 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/DispatchKeyFunctions.h @@ -0,0 +1,29 @@ +#include + +// TODO Undo all logic introduced for Note [Avoiding Include Cycles In Static Dispatch] +// Code introduced to avoid cyclic dependency in static dispatch is no longer +// needed as static dispatch logic is moved from TensorBody.h, which caused cycles in the first place, +// to Operators.cpp for supporting multiple backends with multiple kernels. +// +// Note [Avoiding Include Cycles In Static Dispatch] +// In order to avoid #include cycles in the static dispatch build, we've carefully split out +// the static function definition files into {DispatchKey}Functions.h and {DispatchKey}Functions_inl.h. +// +// Without this split, the include cycle looks like TensorBody.h -> CPUFunctions.h -> TensorBody.h. +// - TensorBody.h #includes CPUFunctions.h in the static dispatch build, because the tensor methods +// all need to call into the fastpath C++ API defined in CPUFunctions.h. The methods are also all +// directly inlined into TensorBody.h. +// - CPUFunctions.h #includes TensorBody.h because it contains function declarations for the entire C++ API, +// which include functions that have defaultable std::optional arguments. +// That requires knowing the full Tensor class definition. +// +// We break the cycle by doing the following: +// - Split out CPUFunction.h into two files: CPUFunctions.h and CPUFunctions_inl.h +// - CPUFunction.h is a dummy file that just includes the Tensor class and includes CPUFunctions_inl., +// - CPUFunctions_inl.h includes everything else +// - (only in the static dispatch build) TensorBody.h makes sure to finish defining the Tensor class, +// and then it includes CPUFunctions_inl.h. +// - All other files that want the cpu fastpath functions can include CPUFunctions.h directly. +// - This also means that static dispatch build, CPUFunctions.h only needs to +// #include TensorBody.h, and it will automatically bring in CPUFunctions_inl.h. +${inline_headers} diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/DispatchKeyFunctions_inl.h b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/DispatchKeyFunctions_inl.h new file mode 100644 index 0000000000000000000000000000000000000000..fbb71c2cb123cb21fb57ec32341d86bff06f6a17 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/DispatchKeyFunctions_inl.h @@ -0,0 +1,22 @@ +#pragma once +// ${generated_comment} + +// NB: The implementing C++ file is RegisterDispatchKey.cpp + +// The only #includes we need are for custom classes that have defaults in the C++ API +#include +#include +#include + +#if defined(AT_PER_OPERATOR_HEADERS) && defined(TORCH_ASSERT_ONLY_METHOD_OPERATORS) +#error This change adds a dependency on all pytorch operators, meaning the \ + file will need to be re-compiled every time an operator is changed or added. \ + Consider including a specific operator from \ + . \ + See NOTE [TORCH_ASSERT_ONLY_METHOD_OPERATORS]. +#endif + +${DispatchKeyFunctions_inl_includes} + + +${dispatch_namespaced_declarations} diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/DispatchKeyNativeFunctions.cpp b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/DispatchKeyNativeFunctions.cpp new file mode 100644 index 0000000000000000000000000000000000000000..7647f459a744b2eacfac6aaea4f49b86babbb234 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/DispatchKeyNativeFunctions.cpp @@ -0,0 +1,13 @@ +// ${generated_comment} +${includes} +${native_functions_include} + +namespace { +${helper_fns} +} // namespace + +${namespace_prologue} + +${native_function_definitions} + +${namespace_epilogue} diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/DispatchKeyNativeFunctions.h b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/DispatchKeyNativeFunctions.h new file mode 100644 index 0000000000000000000000000000000000000000..b45a17b5922f8a0b76e0237616914ce9969efca5 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/DispatchKeyNativeFunctions.h @@ -0,0 +1,19 @@ +#pragma once + +// an external backend might generate file within its code tree +// and check all the source files within the tree with clang-format. +// so, disable it since the backend might have a different config. +// clang-format off + +// ${generated_comment} + +#include + +${namespace_prologue} + +struct ${class_name} { + +${dispatch_declarations} + +}; +${namespace_epilogue} diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/Function.h b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/Function.h new file mode 100644 index 0000000000000000000000000000000000000000..73096afbf11571cbe4147bb63f035a054ca842db --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/Function.h @@ -0,0 +1,27 @@ +#pragma once + +// ${generated_comment} + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +${static_dispatch_ops_headers} + +${operator_includes} + +namespace at { + +${function_definitions} + +} diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/FunctionalInverses.h b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/FunctionalInverses.h new file mode 100644 index 0000000000000000000000000000000000000000..b15cd09a6c65da3127be8245b87bff2f8c795a3d --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/FunctionalInverses.h @@ -0,0 +1,23 @@ +#pragma once + +// ${generated_comment} + +#include +#include + +namespace at { +namespace functionalization { + +struct FunctionalInverses { + +${view_inverse_declarations} + +// NB: These are not generated! They're manually implemented in the template. +// TODO: Change codegen to generate these. See the following link: +// https://github.com/pytorch/pytorch/blob/main/torchgen/model.py#L2583-L2585 +static at::Tensor chunk_inverse(const at::Tensor & base, const at::Tensor & mutated_view, InverseReturnMode inverse_return_mode, int64_t mutated_view_idx, int chunks, int dim); +static at::Tensor narrow_inverse(const at::Tensor & base, const at::Tensor & mutated_view, InverseReturnMode inverse_return_mode, int dim, c10::SymInt start, c10::SymInt length); + +}; +} +} diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/Functions.cpp b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/Functions.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f210402e543aa2de27ea0f510bb869e0c7010e22 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/Functions.cpp @@ -0,0 +1,105 @@ +#include + +#include +#include +#include + +namespace at { + +Tensor TensorMaker::make_tensor() { + AutoDispatchBelowADInplaceOrView guard{}; // TODO: Remove. + tracer::impl::NoTracerDispatchMode tracer_guard{}; + + check_size_nonnegative(sizes_); + + TORCH_CHECK_VALUE( + !deleter_ || !ctx_, + "The deleter and context arguments are mutually exclusive."); + + if (device_ == std::nullopt) { + device_ = globalContext().getDeviceFromPtr(data_, opts_.device().type()); + } + + if (opts_.device().has_index()) { + // clang-format off + TORCH_CHECK_VALUE( + opts_.device() == *device_, + "Specified device ", opts_.device(), " does not match device of data ", *device_); + // clang-format on + } + + std::size_t size_bytes = computeStorageSize(); + + DataPtr data_ptr{}; + if (deleter_) { + data_ptr = makeDataPtrFromDeleter(); + } else { + data_ptr = makeDataPtrFromContext(); + } + + TORCH_CHECK(!resizeable_ || allocator_ != nullptr, "Must specify an allocator with allocator() if you want to use resizeable_storage()"); + Storage storage{Storage::use_byte_size_t{}, size_bytes, std::move(data_ptr), /*allocator=*/allocator_, /*resizable=*/resizeable_}; + + Tensor tensor = detail::make_tensor( + std::move(storage), opts_.computeDispatchKey(), opts_.dtype()); + + TensorImpl* tensor_impl = tensor.unsafeGetTensorImpl(); + if (strides_) { + tensor_impl->set_sizes_and_strides(sizes_, *strides_); + } else { + tensor_impl->set_sizes_contiguous(sizes_); + } + if (storage_offset_) { + tensor_impl->set_storage_offset(*storage_offset_); + } + + tensor_impl->set_requires_grad(opts_.requires_grad()); + + return tensor; + } + + std::size_t TensorMaker::computeStorageSize() const noexcept { + std::size_t itemsize = opts_.dtype().itemsize(); + + if (strides_) { + auto storage_size = detail::computeStorageNbytes(sizes_, *strides_, itemsize); + if (storage_offset_) { + storage_size += storage_offset_.value() * itemsize; + } + return storage_size; + } + + std::size_t size = 1; + for (std::int64_t s : sizes_) { + size *= static_cast(s); + } + auto storage_size = size * itemsize; + if (storage_offset_) { + storage_size += storage_offset_.value() * itemsize; + } + return storage_size; + } + + inline DataPtr TensorMaker::makeDataPtrFromDeleter() noexcept { + return InefficientStdFunctionContext::makeDataPtr(data_, std::move(deleter_), *device_); + } + + inline DataPtr TensorMaker::makeDataPtrFromContext() noexcept { + return DataPtr{data_, ctx_.release(), ctx_.get_deleter(), *device_}; + } + + IntArrayRef TensorMaker::makeTempSizes() const noexcept { + static std::int64_t zeros[5] = {0, 0, 0, 0, 0}; + if (opts_.has_memory_format()) { + MemoryFormat format = *opts_.memory_format_opt(); + if (format == MemoryFormat::ChannelsLast) { + return IntArrayRef(zeros, 4); + } + if (format == MemoryFormat::ChannelsLast3d) { + return IntArrayRef(zeros, 5); + } + } + return IntArrayRef(zeros, 1); + } + +} // namespace at diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/Functions.h b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/Functions.h new file mode 100644 index 0000000000000000000000000000000000000000..b1feaf9d4daa9786359c97434e4c59d3c75778c7 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/Functions.h @@ -0,0 +1,143 @@ +#pragma once + +// ${generated_comment} + +#ifdef TORCH_ASSERT_NO_OPERATORS +#error This change adds a dependency on native_functions.yaml, \ + meaning the file will need to be re-compiled every time an operator \ + is changed or added. Consider if your change would be better placed in \ + another file, or if a more specific header might achieve the same goal. \ + See NOTE: [Tensor vs. TensorBase] +#endif + +#if defined(AT_PER_OPERATOR_HEADERS) && defined(TORCH_ASSERT_ONLY_METHOD_OPERATORS) +#error This change adds a dependency on all pytorch operators, meaning the \ + file will need to be re-compiled every time an operator is changed or added. \ + Consider including a specific operator from and \ + see NOTE [TORCH_ASSERT_ONLY_METHOD_OPERATORS]. +#endif + +// NOTE: [TORCH_ASSERT_ONLY_METHOD_OPERATORS] +// +// In ATen, certain generated headers files include the definitions of +// every single operator in PyTorch. Unfortunately this means every +// time an operator signature is updated or changed in +// native_functions.yaml, you (and every other PyTorch developer) need +// to recompile every source file that includes any of these headers. +// +// To break up these header dependencies, and improve incremental +// build times for all PyTorch developers. These headers are split +// into per-operator headers in the `ATen/ops` folder. This limits +// incremental builds to only changes to methods of `Tensor`, or files +// that use the specific operator being changed. With `at::sum` as an +// example, you should include +// +// // instead of ATen/Functions.h +// // instead of ATen/NativeFunctions.h +// // instead of ATen/Operators.h +// // instead of ATen/CPUFunctions.h +// +// However, even if you're careful to use this in your own code. +// `Functions.h` might be included indirectly through another header +// without you realising. To avoid this, you can add +// +// #define TORCH_ASSERT_ONLY_METHOD_OPERATORS +// +// to the top of your source file. This way any time the non-specific +// headers are included, the compiler will error out. +// +// Also, be aware that `ops` are not available in all build +// configurations (namely fb-internal) so you must guard these +// includes with `#ifdef AT_PER_OPERATOR_HEADERS`. e.g. +// +// #ifndef AT_PER_OPERATOR_HEADERS +// #include +// #else +// #include +// #endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +${Functions_includes} + +namespace at { + +${Functions_declarations} + +// Special C++ only overloads for std()-like functions (See gh-40287) +// These are needed because int -> bool conversion takes precedence over int -> IntArrayRef +// So, for example std(0) would select the std(unbiased=False) overload +inline Tensor var(const Tensor& self, int dim) { + return at::var(self, IntArrayRef{dim}); +} +inline std::tuple var_mean(const Tensor& self, int dim) { + return at::var_mean(self, IntArrayRef{dim}); +} +inline Tensor std(const Tensor& self, int dim) { + return at::std(self, IntArrayRef{dim}); +} +inline std::tuple std_mean(const Tensor& self, int dim) { + return at::std_mean(self, IntArrayRef{dim}); +} + +inline int64_t numel(const Tensor& tensor) { + return tensor.numel(); +} + +inline int64_t size(const Tensor& tensor, int64_t dim) { + return tensor.size(dim); +} + +inline int64_t stride(const Tensor& tensor, int64_t dim) { + return tensor.stride(dim); +} + +inline bool is_complex(const Tensor& tensor) { + return tensor.is_complex(); +} + +inline bool is_floating_point(const Tensor& tensor) { + return tensor.is_floating_point(); +} + +inline bool is_signed(const Tensor& tensor) { + return tensor.is_signed(); +} + +inline bool is_inference(const Tensor& tensor) { + return tensor.is_inference(); +} + +inline bool _is_zerotensor(const Tensor& tensor) { + return tensor._is_zerotensor(); +} + +inline bool is_conj(const Tensor& tensor) { + return tensor.is_conj(); +} + +inline Tensor conj(const Tensor& tensor) { + return tensor.conj(); +} + +inline bool is_neg(const Tensor& tensor) { + return tensor.is_neg(); +} + +} diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/LazyIr.h b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/LazyIr.h new file mode 100644 index 0000000000000000000000000000000000000000..9190ff8243d316fd2bd472bb3f0603701761bdb7 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/LazyIr.h @@ -0,0 +1,19 @@ +#pragma once + +// This file contains autogenerated LazyTensor IR nodes +${lazy_ir_sysinc} +${lazy_ir_inc} + +${namespace_prologue} +using at::operator<<; + +// kNullValue is used to contribute a static hash value any time +// a node has an Optional input that is nullopt. It is important +// to differentiate between HASH(std::nullopt, something) and HASH(something, std::nullopt), +// and using kNullValue in the hash function in the order of arguments +// serves this purpose. +static const torch::lazy::Value kNullValue = torch::lazy::Value(); + +${ir_declarations} + +${namespace_epilogue} diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/LazyNonNativeIr.h b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/LazyNonNativeIr.h new file mode 100644 index 0000000000000000000000000000000000000000..18eaf6da52e4b3654becac6cc89849bc0806ae09 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/LazyNonNativeIr.h @@ -0,0 +1,11 @@ +#pragma once + +${lazy_non_native_ir_inc} + +// This file contains autogenerated LazyTensor Non Native IR nodes + +${namespace_prologue} + +${non_native_ir_nodes} + +${namespace_epilogue} diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/MethodOperators.h b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/MethodOperators.h new file mode 100644 index 0000000000000000000000000000000000000000..0e192cd05ef3c78fa74848c93de32150c1e3fd8b --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/MethodOperators.h @@ -0,0 +1,24 @@ +#pragma once + +// ${generated_comment} + +#ifdef TORCH_ASSERT_NO_OPERATORS +#error This change adds a dependency on native_functions.yaml, \ + meaning the file will need to be re-compiled every time an operator \ + is changed or added. Consider if your change would be better placed in \ + another file, or if a more specific header might achieve the same goal. \ + See NOTE: [Tensor vs. TensorBase] +#endif + +// Forward declarations of any types needed in the operator signatures. +// We can't directly include these classes because it will cause circular include dependencies. +// This file is included by TensorBody.h, which defines the Tensor class. +#include + +${MethodOperators_includes} + +namespace at { +namespace _ops { +${MethodOperators_declarations} +} // namespace _ops +} // namespace at diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/NativeFunction.h b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/NativeFunction.h new file mode 100644 index 0000000000000000000000000000000000000000..a5441ad85d1d5e28c4e31dd3f0dc7f66dfbff9e7 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/NativeFunction.h @@ -0,0 +1,17 @@ +#pragma once + +// ${generated_comment} + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +${extra_includes} + +${native_function_declarations} diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/NativeFunctions.h b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/NativeFunctions.h new file mode 100644 index 0000000000000000000000000000000000000000..9dc972495ca038bddb7b887c39c2e0507e487213 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/NativeFunctions.h @@ -0,0 +1,33 @@ +#pragma once + +// ${generated_comment} + +#ifdef TORCH_ASSERT_NO_OPERATORS +#error This change adds a dependency on native_functions.yaml, \ + meaning the file will need to be re-compiled every time an operator \ + is changed or added. Consider if your change would be better placed in \ + another file, or if a more specific header might achieve the same goal. \ + See NOTE: [Tensor vs. TensorBase] +#endif + +#if defined(AT_PER_OPERATOR_HEADERS) && defined(TORCH_ASSERT_ONLY_METHOD_OPERATORS) +#error This change adds a dependency on all pytorch operators, meaning the \ + file will need to be re-compiled every time an operator is changed or added. \ + Consider including a specific operator from \ + and see NOTE [TORCH_ASSERT_ONLY_METHOD_OPERATORS]. +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +${NativeFunctions_includes} + +${NativeFunctions_declarations} diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/NativeMetaFunction.h b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/NativeMetaFunction.h new file mode 100644 index 0000000000000000000000000000000000000000..6522c97546d0498e4b3825fb4eafefbb34c71911 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/NativeMetaFunction.h @@ -0,0 +1,23 @@ +#pragma once + +// ${generated_comment} + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace at { +namespace meta { + +${meta_function_declarations} + +} // namespace native +} // namespace at diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/NativeMetaFunctions.h b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/NativeMetaFunctions.h new file mode 100644 index 0000000000000000000000000000000000000000..89989e2121c9aa34a4583205c3541a04edd36700 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/NativeMetaFunctions.h @@ -0,0 +1,19 @@ +#pragma once + +// ${generated_comment} + +#include +#include +#include +#include + +${NativeMetaFunctions_includes} + +namespace at { + +namespace meta { + +${NativeMetaFunctions_declarations} + +} // namespace meta +} // namespace at diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/Operator.h b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/Operator.h new file mode 100644 index 0000000000000000000000000000000000000000..ed220f917290c2062481eb53dca232b47d180e2d --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/Operator.h @@ -0,0 +1,19 @@ +#pragma once + +// ${generated_comment} + +#include +#include +#include + +// Forward declarations of any types needed in the operator signatures. +// We can't directly include these classes because it will cause circular include dependencies. +// This file is included by TensorBody.h, which defines the Tensor class. +#include + +namespace at { +namespace _ops { + +${declarations} + +}} // namespace at::_ops diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/Operators.cpp b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/Operators.cpp new file mode 100644 index 0000000000000000000000000000000000000000..082bb67c3e2043f2c36b29345f57048ec2e9eea7 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/Operators.cpp @@ -0,0 +1,19 @@ +#include +#include + +// ${generated_comment} +// NOTE See [Sharded File] comment in VariableType + +#ifndef AT_PER_OPERATOR_HEADERS +#include +#else +${operator_headers} +#endif + +${static_dispatch_extra_headers} + +namespace at { namespace _ops { + +${definitions} + +}} // namespace at::_ops diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/Operators.h b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/Operators.h new file mode 100644 index 0000000000000000000000000000000000000000..e74b96ef3d5c6b6d50fe63eac4dca51f0655daa5 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/Operators.h @@ -0,0 +1,74 @@ +#pragma once + +// ${generated_comment} + +#ifdef TORCH_ASSERT_NO_OPERATORS +#error This change adds a dependency on native_functions.yaml, \ + meaning the file will need to be re-compiled every time an operator \ + is changed or added. Consider if your change would be better placed in \ + another file, or if a more specific header might achieve the same goal. \ + See NOTE: [Tensor vs. TensorBase] +#endif + +#if defined(AT_PER_OPERATOR_HEADERS) && defined(TORCH_ASSERT_ONLY_METHOD_OPERATORS) +#error This change adds a dependency on all pytorch operators, meaning the \ + file will need to be re-compiled every time an operator is changed or added. \ + Consider including a specific operator from \ + and see NOTE [TORCH_ASSERT_ONLY_METHOD_OPERATORS]. +#endif + +#include +#include +#include +#include +#include +#include +#include +#include + +${Operators_includes} + +// Extension writers: do you write wrapper functions? Are you frustrated with +// resolving overloads of operators? Are you frustrated with dealing with +// pointer-to-methods and resolving overloads of pointer-to-methods?? Look no +// further, this is the utility for you. +// +// Given an operator schema: aten::op.overload(... +// +// Use ATEN_FN2(op, overload) to get a *function* version of the operator +// that is guaranteed to not be overloaded. This means that you can safely +// decltype(&ATEN_FN2(op, overload)) it. NB: the 2 means this macro takes 2 args. +// +// Given an operator schema without an overload name: aten::op(... +// +// Use ATEN_FN(op) to get an unambiguous *function* version of the operator. +// +// There is some interesting behavior for out= operations. +// ATEN_FN2(sin, out) gives a function that is *faithful* to the schema; +// that is, the order of arguments is exactly what it looks like in the schema. + +#define ATEN_FN2(op_name, overload) at::_ops::op_name##_##overload::call +#define ATEN_FN(op_name) at::_ops::op_name::call + +// Separately, ATEN_OP(op) and ATEN_OP2(op, overload) define a class containing compile-time +// metadata about a given aten operator. +// Notable data on the class includes: +// - ATEN_OP2(add, Tensor)::name // returns the string name: "add" +// - ATEN_OP2(add, Tensor)::overload_name // returns the string overload name: "Tensor" +// - ATEN_OP2(add, Tensor)::schema // returns the C++ schema type: at::Tensor (const at::Tensor &, const at::Tensor &, const at::Scalar &) +// - ATEN_OP2(add, Tensor)::schema_str // returns the string jit type: "add.Tensor(Tensor self, Tensor other, *, Scalar alpha=1) -> Tensor" + +#define ATEN_OP2(op_name, overload) at::_ops::op_name##_##overload +#define ATEN_OP(op_name) at::_ops::op_name + +// WARNING: Please do not call any of the ops in the _ops namespace directly. +// Use the ATEN_FN macros. We do not guarantee stability of the naming +// scheme for the functions in at::_ops + +// See Note [The ATen Operators API] for details of the at::_ops namespace + +namespace at { +namespace _ops { +${Operators_declarations} +} // namespace _ops +} // namespace at diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/RedispatchFunctions.cpp b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/RedispatchFunctions.cpp new file mode 100644 index 0000000000000000000000000000000000000000..58102bd97fca4eaef477818b0b0a92b7995e38b1 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/RedispatchFunctions.cpp @@ -0,0 +1,15 @@ +// ${generated_comment} + +#include +#include + +#include +#include + +namespace at { + +namespace redispatch { + ${function_redispatch_definitions} +} // namespace redispatch + +} // namespace at diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/RedispatchFunctions.h b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/RedispatchFunctions.h new file mode 100644 index 0000000000000000000000000000000000000000..2422cdd409cfdd59c2a05df27d28bb25ee610463 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/RedispatchFunctions.h @@ -0,0 +1,32 @@ +#pragma once + +// ${generated_comment} + +#ifdef TORCH_ASSERT_ONLY_METHOD_OPERATORS +#error This change adds a dependency on all pytorch operators, meaning the \ + file will need to be re-compiled every time an operator is changed or added. \ + Consider using the at::_ops::{name}::redispatch() interface by including \ + the specific operator from +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace at { + +namespace redispatch { + ${function_redispatch_definitions} +} // namespace redispatch + +} diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/RegisterBackendSelect.cpp b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/RegisterBackendSelect.cpp new file mode 100644 index 0000000000000000000000000000000000000000..018cf358f11237d5bdc9bca01aa8d09d1462f574 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/RegisterBackendSelect.cpp @@ -0,0 +1,29 @@ +// We register ops with a higher priority dispatch key (BackendSelect) than the usual backend-specific keys (e.g. CPU) +// which makes calls to the factory functions dispatch to here. +// We then 'manually' compute a lower-priority to re-dispatch to (e.g. CPU) to get to the eventually correct backend. +// ${generated_comment} + +#define TORCH_ASSERT_ONLY_METHOD_OPERATORS +#include +#include +#include + +#ifndef AT_PER_OPERATOR_HEADERS +#include +#else + +${ops_headers} +#endif + +namespace at { + +namespace { + +${backend_select_method_definitions} + +TORCH_LIBRARY_IMPL(aten, BackendSelect, m) { + ${backend_select_function_registrations}; +} + +} // namespace +} // at diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/RegisterCodegenUnboxedKernels.cpp b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/RegisterCodegenUnboxedKernels.cpp new file mode 100644 index 0000000000000000000000000000000000000000..279f987c66a26c2eb5d11c664c85b3604b67684b --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/RegisterCodegenUnboxedKernels.cpp @@ -0,0 +1,41 @@ +#include +#include +#include + +#include + +// ${generated_comment} + +// NOTE [Sharded File]: This file is generated in a sharded fashion to speed up +// incremental rebuilds. See the comment at the top of +// templates/VariableType.cpp for an analogous, in-depth discussion. +// +// Generated by tools/jit/gen_unboxing.py. This file registers all ATen ops into JIT op registry instead of c10 +// dispatcher. JIT op registry only takes boxed kernels, so we are calling unboxing functions in UnboxingFunctions.h +// to cast arguments into C++ types (instead of IValue) and delegate to unboxed kernels. + +namespace torch { namespace jit { + +using autograd::Variable; +using autograd::variable_list; +using at::Scalar; +using at::ScalarType; +using at::Tensor; +using at::TensorOptions; +using at::DeviceGuard; + +using ::c10::fmap; +using ::c10::filter; + +namespace { + +RegisterOperators reg({ + + // Generated operators + ${unboxed_ops} +}); + +} // anon namespace + + +}} // namespace torch::jit diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/RegisterDispatchDefinitions.ini b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/RegisterDispatchDefinitions.ini new file mode 100644 index 0000000000000000000000000000000000000000..97c921de18f62832d1ca09c245f2466541fe908d --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/RegisterDispatchDefinitions.ini @@ -0,0 +1,22 @@ +${ns_prologue} + +// NB: TORCH_LIBRARY_IMPL must be in an anonymous namespace to avoid +// ambiguity with conflicting identifiers that may have been defined in +// at namespace already. +namespace { + +${dispatch_anonymous_definitions} + +${static_init_dispatch_registrations} + +} // anonymous namespace + +${deferred_dispatch_registrations} + +namespace ${dispatch_namespace} { + +${dispatch_namespaced_definitions} + +} // namespace ${dispatch_namespace} + +${ns_epilogue} diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/RegisterDispatchKey.cpp b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/RegisterDispatchKey.cpp new file mode 100644 index 0000000000000000000000000000000000000000..bd4131b1ad41d0c8eb49b408309e00e7062f6b53 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/RegisterDispatchKey.cpp @@ -0,0 +1,51 @@ +// an external backend might generate file within its code tree +// and check all the source files within the tree with clang-format. +// so, disable it since the backend might have a different config. +// clang-format off + +// NOTE: This condition is true for all PyTorch internal libraries, it +// just excludes external projects such as torch_xla which +// reuse some of the PyTorch codegen machinery. +#if defined(CAFFE2_BUILD_MAIN_LIB) || \ + defined(TORCH_CUDA_BUILD_MAIN_LIB) || \ + defined(TORCH_XPU_BUILD_MAIN_LIB) +#define TORCH_ASSERT_ONLY_METHOD_OPERATORS +#endif + +// ${generated_comment} + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +$extra_cuda_headers +$external_backend_headers +$dispatch_headers +$ops_headers + +namespace at { +namespace { +$dispatch_helpers +} // namespace +} // namespace at + +// See template file RegisterDispatchDefinitions.ini +$dispatch_definitions diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/RegisterFunctionalization.cpp b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/RegisterFunctionalization.cpp new file mode 100644 index 0000000000000000000000000000000000000000..408aff0cdab40461a7ba731bab216a7b7435331e --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/RegisterFunctionalization.cpp @@ -0,0 +1,116 @@ +#define TORCH_ASSERT_ONLY_METHOD_OPERATORS +// ${generated_comment} + +#include +#include +#include +#include +#include +#include + +#include +#ifndef AT_PER_OPERATOR_HEADERS +#include +#include +#else +// needed for the meta tensor calls to get stride info in functionalization +#include +// needed for special handling of copy_(). +// See Note [functionalizating copy_() and not preserving strides] +#include +#include + +$ops_headers +#endif + +namespace at { +namespace functionalization { + +// This keyset is used by functionalization when it calls into meta kernels +// to accurately propagate stride metadata. +// Exclude any modes: the purpose of calling into meta kernels is only as an implementation +// detail to perform shape inference, and we don't want any modal keys to run. +// Specifically, we want to prevent functionalization and Python modes from running. +constexpr auto exclude_keys_for_meta_dispatch = + c10::functorch_transforms_ks | + c10::DispatchKeySet({ + c10::DispatchKey::FuncTorchDynamicLayerBackMode, + c10::DispatchKey::FuncTorchDynamicLayerFrontMode, + c10::DispatchKey::Python, + c10::DispatchKey::PreDispatch, + + }); + +// Helper around at::has_internal_overlap. +// The ATen util is used in hot-path eager mode: it's always fast, +// but might return TOO_HARD sometimes. +// During functionalization, we're ok taking a bit longer +// to detect memory overlap. +inline bool has_internal_overlap_helper(const at::Tensor t) { + auto has_overlap = at::has_internal_overlap(t); + if (has_overlap == at::MemOverlap::Yes) return true; + if (has_overlap == at::MemOverlap::No) return false; + return false; +} + + +inline Tensor to_meta(const Tensor& t) { + if (!t.defined()) return t; + return at::native::empty_strided_meta_symint(t.sym_sizes(), t.sym_strides(), +/*dtype=*/t.scalar_type(), /*layout=*/t.layout(), +/*device=*/c10::Device(kMeta), /*pin_memory=*/std::nullopt); +} + +inline std::optional to_meta(const std::optional& t) { + if (t.has_value()) { + return to_meta(*t); + } + return std::nullopt; +} + +inline std::vector to_meta(at::ITensorListRef t_list) { + std::vector outputs; + outputs.reserve(t_list.size()); + for (const auto& tensor : t_list) { + outputs.push_back(to_meta(tensor)); + } + return outputs; +} + +inline c10::List to_meta(const c10::List& t_list) { + c10::List outputs; + outputs.reserve(t_list.size()); + for (const auto i : c10::irange(t_list.size())) { + outputs.push_back(to_meta(t_list[i])); + } + return outputs; +} + +inline c10::List<::std::optional> to_meta(const c10::List<::std::optional>& t_list) { + c10::List<::std::optional> outputs; + outputs.reserve(t_list.size()); + for (const auto i : c10::irange(t_list.size())) { + outputs.push_back(to_meta(t_list[i])); + } + return outputs; +} + +static bool disable_meta_reference() { + static auto env = c10::utils::get_env("TORCH_DISABLE_FUNCTIONALIZATION_META_REFERENCE"); + return env == "1"; +} + + +${func_definitions} + +} // namespace functionalization + +namespace { + +TORCH_LIBRARY_IMPL(aten, Functionalize, m) { + ${func_registrations}; +} + +} // namespace + +} // namespace at diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/RegisterSchema.cpp b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/RegisterSchema.cpp new file mode 100644 index 0000000000000000000000000000000000000000..029796d3e575b2bde85cfd44af9e6fcbb56466cd --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/RegisterSchema.cpp @@ -0,0 +1,13 @@ +// ${generated_comment} +#define TORCH_ASSERT_ONLY_METHOD_OPERATORS +#include + +namespace at { +TORCH_LIBRARY(aten, m) { + ${aten_schema_registrations}; + // Distributed Ops + // Implementations located in torch/csrc/jit/runtime/register_distributed_ops.cpp + m.def("get_gradients(int context_id) -> Dict(Tensor, Tensor)"); +} +${schema_registrations} +} // namespace at diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/RegistrationDeclarations.h b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/RegistrationDeclarations.h new file mode 100644 index 0000000000000000000000000000000000000000..5a0f0d0c7b44dabb60061d32ced243fe607069d8 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/RegistrationDeclarations.h @@ -0,0 +1,4 @@ +// This file contains all native_functions that can be registered to +// and the schema string that they should be registered with + +${registration_declarations} diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/TensorBody.h b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/TensorBody.h new file mode 100644 index 0000000000000000000000000000000000000000..5ca62cc1f7a5171ab204a36db1959dc4f14f4892 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/TensorBody.h @@ -0,0 +1,758 @@ +#pragma once + +#ifdef TORCH_ASSERT_NO_OPERATORS +#error This change adds a dependency on native_functions.yaml, \ + meaning the file will need to be re-compiled every time an operator \ + is changed or added. Consider if your change would be better placed in \ + another file, or if a more specific header might achieve the same goal. \ + See NOTE: [Tensor vs. TensorBase] +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include + +namespace c10{ +template class List; +template class IListRef; +} +namespace at { +struct Generator; +struct Type; +class DeprecatedTypeProperties; +class Tensor; +} // namespace at +namespace at { +namespace indexing { +struct TensorIndex; +} // namespace indexing +} // namespace at + +namespace torch { namespace autograd { + +struct Node; + +}} // namespace torch::autograd + +namespace at { + +class OptionalTensorRef; +class TensorRef; +class Tensor; +using TensorList = ArrayRef; +using ITensorList = c10::IListRef; + +using Stream = c10::Stream; + +// Tensor is a "generic" object holding a pointer to the underlying TensorImpl object, which +// has an embedded reference count. In this way, Tensor is similar to boost::intrusive_ptr. +// +// For example: +// +// void func(Tensor a) { +// Tensor b = a; +// ... +// } +// +// In this example, when we say Tensor b = a, we are creating a new object that points to the +// same underlying TensorImpl, and bumps its reference count. When b goes out of scope, the +// destructor decrements the reference count by calling release() on the TensorImpl it points to. +// The existing constructors, operator overloads, etc. take care to implement the correct semantics. +// +// Note that Tensor can also be NULL, i.e. it is not associated with any underlying TensorImpl, and +// special care must be taken to handle this. +class TORCH_API Tensor: public TensorBase { + protected: + // Create a Tensor with a +0 reference count. Special care must be + // taken to avoid decrementing this reference count at destruction + // time. Intended to support MaybeOwnedTraits. + explicit Tensor(unsafe_borrow_t, const TensorBase& rhs): TensorBase(unsafe_borrow_t{}, rhs) {} + friend MaybeOwnedTraits; + friend OptionalTensorRef; + friend TensorRef; + + public: + Tensor() = default; + // This constructor should not be used by end users and is an implementation + // detail invoked by autogenerated code. + explicit Tensor( + c10::intrusive_ptr tensor_impl) + : TensorBase(std::move(tensor_impl)) {} + Tensor(const Tensor &tensor) = default; + Tensor(Tensor &&tensor) = default; + + // Implicitly move-constructible from TensorBase, but must be explicit to increase refcount + explicit Tensor(const TensorBase &base): TensorBase(base) {} + /*implicit*/ Tensor(TensorBase &&base): TensorBase(std::move(base)) {} + + // Creates a new wrapper from TensorImpl. Intentionally a free method because + // it should be used with care. Checks necessary invariants + static Tensor wrap_tensor_impl( + c10::intrusive_ptr tensor_impl) { + return TensorBase::wrap_tensor_impl(std::move(tensor_impl)); + } + + Tensor contiguous(MemoryFormat memory_format=MemoryFormat::Contiguous) const { + return TensorBase::contiguous(memory_format); + } + + Tensor conj() const { + if (!this->is_complex()) { + return *this; + } + + C10_DIAGNOSTIC_PUSH_AND_IGNORED_IF_DEFINED("-Wswitch-enum") + switch (this->layout()) { + case at::kSparse: + case at::kSparseCsr: + case at::kSparseCsc: + case at::kSparseBsr: + case at::kSparseBsc: + return this->conj_physical(); + default: + return this->_conj(); + } + C10_DIAGNOSTIC_POP() + } + + // Aliased by Dimname overloads, so need explicit using + using TensorBase::size; + using TensorBase::sym_size; + using TensorBase::stride; + + /// Should be used if *this can reasonably be expected to be contiguous and + /// performance is important. + /// Compared to contiguous, it saves a reference count + /// increment/decrement if *this is already contiguous, at the cost + /// in all cases of an extra pointer of stack usage, an extra branch + /// to access, and an extra branch at destruction time. + c10::MaybeOwned expect_contiguous(MemoryFormat memory_format=MemoryFormat::Contiguous) const &; + + // Use .contiguous() instead. Trying to borrow from a prvalue Tensor + // will only lead to trouble and dangling references. + c10::MaybeOwned expect_contiguous(MemoryFormat memory_format=MemoryFormat::Contiguous) && = delete; + + // The following overloads are very intriguing. Consider the following + // program: + // + // x[1] = 3; + // + // We would expect that the first entry of x is written to 3. But how can we + // actually achieve this? x[1] evaluates to a tensor... + // + // The answer is, using a ref-qualifier. x[1] is an rvalue, which cannot be + // (profitably) assigned to in the traditional sense, so we overload + // assignment to mean, "Actually, copy 3 into the tensor data." This is done + // with an rvalue-reference ref-qualified overload (the methods with && at the + // end of their type.) + // + // There's one more fly in the ointment: We also want + // + // Tensor x = y; + // + // to work, and we want it NOT to copy. So we need a traditional operator= + // overload. But we MUST specify a mutable lvalue ref-qualifier, to + // disambiguate the traditional overload from the rvalue-reference + // ref-qualified overload. Otherwise, it will be ambiguous, because + // a non ref-qualified method is eligible for all situations. + + // Unfortunately, we have to write these constructors out manually + // to work around an MSVC bug: + // error C2580: 'at::Tensor &at::Tensor::operator =(const at::Tensor &) &': + // multiple versions of a defaulted special member functions are not allowed + // Tensor& operator=(const Tensor&) & = default; + // Tensor& operator=(Tensor&&) & = default; + + // Also MSVC will wrongly issue the following warning with the aforementioned fix + // warning C4522: 'at::Tensor': multiple assignment operators specified + // Let's just skip the warning. + // + // TODO: temporarily disabled + + Tensor& operator=(const TensorBase& x) & noexcept { + impl_ = x.getIntrusivePtr(); + return *this; + } + Tensor& operator=(TensorBase&& x) & noexcept { + impl_ = x.unsafeReleaseIntrusivePtr(); + return *this; + } + + Tensor& operator=(const Tensor &x) & noexcept { + return operator=(static_cast(x)); + } + Tensor& operator=(Tensor &&x) & noexcept { + return operator=(static_cast(x)); + } + + Tensor& operator=(const Scalar &v) && { + return fill_(v); + } + Tensor& operator=(const Tensor &rhs) && { + return copy_(rhs); + } + + // NOLINTNEXTLINE(performance-noexcept-move-constructor) + Tensor& operator=(Tensor&& rhs) && { + return copy_(rhs); + } + + C10_DEPRECATED_MESSAGE("Tensor.type() is deprecated. Instead use Tensor.options(), which in many cases (e.g. in a constructor) is a drop-in replacement. If you were using data from type(), that is now available from Tensor itself, so instead of tensor.type().scalar_type(), use tensor.scalar_type() instead and instead of tensor.type().backend() use tensor.device().") + DeprecatedTypeProperties & type() const { + return globalDeprecatedTypePropertiesRegistry().getDeprecatedTypeProperties( + dispatchKeyToBackend(legacyExtractDispatchKey(key_set())), + scalar_type()); + } + + Tensor toType(ScalarType t) const { + return to(options().dtype(t), /*non_blocking*/ false, /*copy*/ false); + } + + // TODO: Deprecate me + Tensor toBackend(Backend b) const { + return to(options().device(backendToDeviceType(b)).layout(layout_from_backend(b)), /*non_blocking*/ false, /*copy*/ false); + } + + C10_DEPRECATED_MESSAGE("Tensor.is_variable() is deprecated; everything is a variable now. (If you want to assert that variable has been appropriately handled already, use at::impl::variable_excluded_from_dispatch())") + bool is_variable() const noexcept { + return !at::impl::variable_excluded_from_dispatch(); + } + + template + C10_DEPRECATED_MESSAGE("Tensor.data() is deprecated. Please use Tensor.data_ptr() instead.") + T * data() const { + return data_ptr(); + } + + template + T item() const; + + template class PtrTraits = DefaultPtrTraits, typename index_t = int64_t> + C10_DEPRECATED_MESSAGE("packed_accessor is deprecated, use packed_accessor32 or packed_accessor64 instead") + GenericPackedTensorAccessor packed_accessor() const & { + return generic_packed_accessor(); + } + template class PtrTraits = DefaultPtrTraits, typename index_t = int64_t> + C10_DEPRECATED_MESSAGE("packed_accessor is deprecated, use packed_accessor32 or packed_accessor64 instead") + GenericPackedTensorAccessor packed_accessor() && = delete; + + Tensor operator~() const { + return bitwise_not(); + } + Tensor operator-() const { + return neg(); + } + Tensor& operator+=(const Tensor & other) { + return add_(other); + } + Tensor& operator+=(const Scalar & other) { + return add_(other); + } + Tensor& operator-=(const Tensor & other) { + return sub_(other); + } + Tensor& operator-=(const Scalar & other) { + return sub_(other); + } + Tensor& operator*=(const Tensor & other) { + return mul_(other); + } + Tensor& operator*=(const Scalar & other) { + return mul_(other); + } + Tensor& operator/=(const Tensor & other) { + return div_(other); + } + Tensor& operator/=(const Scalar & other) { + return div_(other); + } + Tensor& operator&=(const Tensor & other) { + return bitwise_and_(other); + } + Tensor& operator|=(const Tensor & other) { + return bitwise_or_(other); + } + Tensor& operator^=(const Tensor & other) { + return bitwise_xor_(other); + } + Tensor operator[](const Scalar & index) const { + if (!index.isIntegral(false)) { + TORCH_CHECK_INDEX(false, "Can only index tensors with integral scalars"); + } + return this->operator[](index.toLong()); + } + Tensor operator[](const Tensor & index) const { + // These properties are checked in the Scalar constructor, but we already + // check them here to provide more useful diagnostics for the user. + if (!index.defined()) { + TORCH_CHECK_INDEX(false, "Can only index with tensors that are defined"); + } + if (index.dim() != 0) { + TORCH_CHECK_INDEX(false, + "Can only index with tensors that are scalars (zero-dim)"); + } + // The Scalar(Tensor) constructor is explicit, so we need to call it. + return this->operator[](index.item()); + } + Tensor operator[](int64_t index) const { + return select(0, index); + } + + Tensor index(ArrayRef indices) const; + Tensor index(std::initializer_list indices) const; + + Tensor & index_put_(ArrayRef indices, Tensor const & rhs); + Tensor & index_put_(ArrayRef indices, const Scalar& v); + Tensor & index_put_(std::initializer_list indices, Tensor const & rhs); + Tensor & index_put_(std::initializer_list indices, const Scalar& v); + + Tensor cpu() const { + return to(options().device(c10::DeviceType::CPU), /*non_blocking*/ false, /*copy*/ false); + } + + // TODO: The Python version also accepts arguments + Tensor cuda() const { + return to(options().device(c10::DeviceType::CUDA), /*non_blocking*/ false, /*copy*/ false); + } + + Tensor hip() const { + return to(options().device(c10::DeviceType::HIP), /*non_blocking*/ false, /*copy*/ false); + } + + Tensor ve() const { + return to(options().device(c10::DeviceType::VE), /*non_blocking*/ false, /*copy*/ false); + } + + Tensor vulkan() const { + return to(options().device(c10::DeviceType::Vulkan), /*non_blocking*/ false, /*copy*/ false); + } + + Tensor metal() const { + return to(options().device(c10::DeviceType::Metal), /*non_blocking*/ false, /*copy*/ false); + } + + Tensor meta() const { + return to(options().device(c10::DeviceType::Meta), /*non_blocking*/ false, /*copy*/ false); + } + + // ~~~~~ Autograd API ~~~~~ + + /// \fn bool is_leaf() const; + /// + /// All Tensors that have `requires_grad()` which is ``false`` will be leaf Tensors by convention. + /// + /// For Tensors that have `requires_grad()` which is ``true``, they will be leaf Tensors if they were + /// created by the user. This means that they are not the result of an operation and so + /// `grad_fn()` is `nullptr`. + /// + /// Only leaf Tensors will have their `grad()` populated during a call to `backward()`. + /// To get `grad()` populated for non-leaf Tensors, you can use `retain_grad()`. + /// + /// Example: + /// @code + /// auto a = torch::rand(10, torch::requires_grad()); + /// std::cout << a.is_leaf() << std::endl; // prints `true` + /// + /// auto b = torch::rand(10, torch::requires_grad()).to(torch::kCUDA); + /// std::cout << b.is_leaf() << std::endl; // prints `false` + /// // b was created by the operation that cast a cpu Tensor into a cuda Tensor + /// + /// auto c = torch::rand(10, torch::requires_grad()) + 2; + /// std::cout << c.is_leaf() << std::endl; // prints `false` + /// // c was created by the addition operation + /// + /// auto d = torch::rand(10).cuda(); + /// std::cout << d.is_leaf() << std::endl; // prints `true` + /// // d does not require gradients and so has no operation creating it (that is tracked by the autograd engine) + /// + /// auto e = torch::rand(10).cuda().requires_grad_(); + /// std::cout << e.is_leaf() << std::endl; // prints `true` + /// // e requires gradients and has no operations creating it + /// + /// auto f = torch::rand(10, torch::device(torch::kCUDA).requires_grad(true)); + /// std::cout << f.is_leaf() << std::endl; // prints `true` + /// // f requires grad, has no operation creating it + /// @endcode + + /// \fn void backward(const Tensor & gradient={}, std::optional retain_graph=std::nullopt, bool create_graph=false, std::optional inputs=std::nullopt) const; + /// + /// Computes the gradient of current tensor with respect to graph leaves. + /// + /// The graph is differentiated using the chain rule. If the tensor is + /// non-scalar (i.e. its data has more than one element) and requires + /// gradient, the function additionally requires specifying ``gradient``. + /// It should be a tensor of matching type and location, that contains + /// the gradient of the differentiated function w.r.t. this Tensor. + /// + /// This function accumulates gradients in the leaves - you might need to + /// zero them before calling it. + /// + /// \param gradient Gradient w.r.t. the + /// tensor. If it is a tensor, it will be automatically converted + /// to a Tensor that does not require grad unless ``create_graph`` is True. + /// None values can be specified for scalar Tensors or ones that + /// don't require grad. If a None value would be acceptable then + /// this argument is optional. + /// \param retain_graph If ``false``, the graph used to compute + /// the grads will be freed. Note that in nearly all cases setting + /// this option to True is not needed and often can be worked around + /// in a much more efficient way. Defaults to the value of + /// ``create_graph``. + /// \param create_graph If ``true``, graph of the derivative will + /// be constructed, allowing to compute higher order derivative + /// products. Defaults to ``false``. + /// \param inputs Inputs w.r.t. which the gradient will be accumulated into + /// ``at::Tensor::grad``. All other Tensors will be ignored. If not + /// provided, the gradient is accumulated into all the leaf Tensors + /// that were used to compute the current tensor. + /// When inputs are provided and a given input is not a leaf, + /// the current implementation will call its grad_fn (even though it is not strictly needed to get this gradients). + /// It is an implementation detail on which the user should not rely. + /// See https://github.com/pytorch/pytorch/pull/60521#issuecomment-867061780 for more details. + void backward(const Tensor & gradient={}, std::optional retain_graph=std::nullopt, bool create_graph=false, std::optional inputs=std::nullopt) const { + // NB: Adding this wrapper to _backward here because we'd like our + // 'backwards' api to accept the 'inputs' argument optionally. Since code gen + // currently does not support optional of TensorList our approach is to replace + // backward in native_functions.yaml with _backward and call it here instead. + if (inputs.has_value()) { + TORCH_CHECK(inputs.value().size() > 0, "'inputs' argument to backward cannot be empty") + this->_backward(inputs.value(), gradient, retain_graph, create_graph); + } else { + this->_backward({}, gradient, retain_graph, create_graph); + } + } + + /// \fn Tensor detach() const; + /// + /// Returns a new Tensor, detached from the current graph. + /// The result will never require gradient. + + /// \fn Tensor & detach_() const; + /// + /// Detaches the Tensor from the graph that created it, making it a leaf. + /// Views cannot be detached in-place. + + /// \fn void retain_grad() const; + /// + /// Enables this Tensor to have their :attr:`grad` populated during + /// :func:`backward`. This is a no-op for leaf tensors. + + /// \fn bool retains_grad() const; + /// + /// Is ``true`` if this Tensor is non-leaf and its :attr:`grad` is enabled to be + /// populated during :func:`backward`, ``false`` otherwise. + + const Tensor& set_requires_grad(bool requires_grad) const { + TensorBase::set_requires_grad(requires_grad); + return *this; + } + + /// Return a mutable reference to the gradient. This is conventionally + /// used as `t.grad() = x` to set a gradient to a completely new tensor. + /// Note that this function work with a non-const Tensor and is not + /// thread safe. + Tensor& mutable_grad() const { + return impl_->mutable_grad(); + } + + /// This function returns an undefined tensor by default and returns a defined tensor + /// the first time a call to `backward()` computes gradients for this Tensor. + /// The attribute will then contain the gradients computed and future calls + /// to `backward()` will accumulate (add) gradients into it. + const Tensor& grad() const { + const Tensor& maybe_grad = impl_->grad(); + if (!is_leaf() && !retains_grad() && !maybe_grad.defined()) { + TORCH_WARN( + "The .grad attribute of a Tensor that is not a leaf Tensor is being accessed. Its .grad " + "attribute won't be populated during autograd.backward(). If you indeed want the .grad " + "field to be populated for a non-leaf Tensor, use .retain_grad() on the non-leaf Tensor. " + "If you access the non-leaf Tensor by mistake, make sure you access the leaf Tensor " + "instead. See github.com/pytorch/pytorch/pull/30531 for more information."); + } + return maybe_grad; + } + + // The Forward AD API functions below are low level and are not to be used by end + // users who should use the API provided in torch/csrc/autograd.h + + /// This function returns the forward gradient for this Tensor at the given level. + const Tensor& _fw_grad(uint64_t level) const { + return impl_->_fw_grad(level, *this); + } + + /// This function can be used to set the value of the forward grad. + /// Note that the given new_grad might not be used directly if it has different + /// metadata (size/stride/storage offset) compared to this Tensor. In that case, + /// new_grad content will be copied into a new Tensor + void _set_fw_grad(const TensorBase& new_grad, uint64_t level, bool is_inplace_op) const { + impl_->_set_fw_grad(new_grad, *this, level, is_inplace_op); + } + + + // STOP. Thinking of adding a method here, which only makes use + // of other ATen methods? Define it in native_functions.yaml. + + //example + //Tensor * add(Tensor & b); + ${tensor_method_declarations} + + // Special C++ only overloads for std()-like functions (See gh-40287) + // These are needed because int -> bool conversion takes precedence over int -> IntArrayRef + // So, for example std(0) would select the std(unbiased=False) overload + + Tensor var(int dim) const { + return var(IntArrayRef{dim}); + } + + Tensor std(int dim) const { + return std(IntArrayRef{dim}); + } + + // We changed .dtype() to return a TypeMeta in #12766. Ideally, we want the + // at::kDouble and its friends to be TypeMeta's, but that hasn't happened yet. + // Before that change, we make this method to maintain BC for C++ usage like + // `x.to(y.dtype)`. + // TODO: remove following two after at::kDouble and its friends are TypeMeta's. + inline Tensor to(caffe2::TypeMeta type_meta, bool non_blocking=false, bool copy=false) const { + return this->to(/*scalar_type=*/typeMetaToScalarType(type_meta), non_blocking, copy); + } + inline Tensor to(Device device, caffe2::TypeMeta type_meta, bool non_blocking=false, bool copy=false) const { + return this->to(device, /*scalar_type=*/typeMetaToScalarType(type_meta), non_blocking, copy); + } + + template + decltype(auto) m(F func, Args&&... params) const { + return func(*this, std::forward(params)...); + } + + /// NOTE: This is similar to the legacy `.data()` function on `Variable`, and is intended + /// to be used from functions that need to access the `Variable`'s equivalent `Tensor` + /// (i.e. `Tensor` that shares the same storage and tensor metadata with the `Variable`). + /// + /// One notable difference with the legacy `.data()` function is that changes to the + /// returned `Tensor`'s tensor metadata (e.g. sizes / strides / storage / storage_offset) + /// will not update the original `Variable`, due to the fact that this function + /// shallow-copies the `Variable`'s underlying TensorImpl. + at::Tensor tensor_data() const { + return TensorBase::tensor_data(); + } + + /// NOTE: `var.variable_data()` in C++ has the same semantics as `tensor.data` + /// in Python, which create a new `Variable` that shares the same storage and + /// tensor metadata with the original `Variable`, but with a completely new + /// autograd history. + /// + /// NOTE: If we change the tensor metadata (e.g. sizes / strides / + /// storage / storage_offset) of a variable created from `var.variable_data()`, those + /// changes will not update the original variable `var`. In `.variable_data()`, we set + /// `allow_tensor_metadata_change_` to false to make such changes explicitly illegal, + /// in order to prevent users from changing metadata of `var.variable_data()` + /// and expecting the original variable `var` to also be updated. + at::Tensor variable_data() const { + return TensorBase::variable_data(); + } + + // Hooks + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template + using hook_return_void_t = std::enable_if_t>::value, unsigned>; + template + using hook_return_var_t = std::enable_if_t, Tensor>, unsigned>; + + /// Registers a backward hook. + /// + /// The hook will be called every time a gradient with respect to the Tensor is computed. + /// The hook should have one of the following signature: + /// ``` + /// hook(Tensor grad) -> Tensor + /// ``` + /// ``` + /// hook(Tensor grad) -> void + /// ``` + /// The hook should not modify its argument, but it can optionally return a new gradient + /// which will be used in place of `grad`. + /// + /// This function returns the index of the hook in the list which can be used to remove hook. + /// + /// Example: + /// @code + /// auto v = torch::tensor({0., 0., 0.}, torch::requires_grad()); + /// auto h = v.register_hook([](torch::Tensor grad){ return grad * 2; }); // double the gradient + /// v.backward(torch::tensor({1., 2., 3.})); + /// // This prints: + /// // ``` + /// // 2 + /// // 4 + /// // 6 + /// // [ CPUFloatType{3} ] + /// // ``` + /// std::cout << v.grad() << std::endl; + /// v.remove_hook(h); // removes the hook + /// @endcode + template + hook_return_void_t register_hook(T&& hook) const; + template + hook_return_var_t register_hook(T&& hook) const; + + // Variable methods + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Tensor data() const { + return TensorBase::data(); + } + + void _backward(TensorList inputs, const std::optional& gradient, std::optional keep_graph, bool create_graph) const; + + const Tensor& requires_grad_(bool _requires_grad=true) const { + TensorBase::requires_grad_(_requires_grad); + return *this; + } +}; + +namespace detail { +// Helper creator for Tensor class which doesn't requires the users to pass +// in an intrusive_ptr instead it just converts the argument passed to +// requested intrusive_ptr type. +template +Tensor make_tensor(Args&&... args) { + return Tensor(c10::make_intrusive(std::forward(args)...)); +} + +} // namespace detail + +} // namespace at + + +namespace at { +${tensor_method_definitions} +} // namespace at + + +namespace c10 { +template <> +struct MaybeOwnedTraits { + using owned_type = at::Tensor; + using borrow_type = at::Tensor; + + static borrow_type createBorrow(const owned_type& from) { + // NOTE: this can be implemented without the special + // unsafe_borrow_t Tensor constructor as + // + // return borrow_type(c10::intrusive_ptr::reclaim(from.unsafeGetTensorImpl())); + // + // but that hurts inlining due to the nullptr check in the + // Tensor(c10::intrusive_ptr<...>) constructor. We already know + // that from.impl_ isn't null because from is a valid Tensor, so + // we needn't do the check again. (using __builtin_assume can + // avoid this, but wouldn't be portable to MSVC.) + return borrow_type(borrow_type::unsafe_borrow_t{}, from); + } + + static void assignBorrow(borrow_type& lhs, const borrow_type& rhs) { + lhs.unsafeReleaseTensorImpl(); + // See above note: this can be implemented with public API + // similarly to createBorrow(), but that would hurt inlining. + lhs = borrow_type(borrow_type::unsafe_borrow_t{}, rhs); + } + + static void destroyBorrow(borrow_type& toDestroy) { + toDestroy.unsafeReleaseTensorImpl(); // "leak" it, but it was already +0. + } + + static const owned_type& referenceFromBorrow(const borrow_type& borrow) { + return borrow; + } + + static const owned_type* pointerFromBorrow(const borrow_type& borrow) { + return &borrow; + } + + static bool debugBorrowIsValid(const borrow_type& /*borrow*/) { + return true; + } +}; + +template <> +struct ExclusivelyOwnedTraits { + using repr_type = at::Tensor; + using pointer_type = at::Tensor*; + using const_pointer_type = const at::Tensor*; + + static repr_type nullRepr() { + return at::Tensor(); + } + + template + static repr_type createInPlace(Args&&... args) { + return at::Tensor(std::forward(args)...); + } + + static repr_type moveToRepr(at::Tensor&& x) { + return std::move(x); + } + + static void destroyOwned(at::Tensor& x) { + return ExclusivelyOwnedTraits::destroyOwned(x); + } + + static at::Tensor take(at::Tensor& x) { + return std::move(x); + } + + static pointer_type getImpl(repr_type& x) { + return &x; + } + + static const_pointer_type getImpl(const repr_type& x) { + return &x; + } +}; +} // namespace c10 + +namespace at { + +inline c10::MaybeOwned borrow_from_optional_tensor( + const std::optional& opt) { + return opt.has_value() + ? c10::MaybeOwned::borrowed(*opt) + : c10::MaybeOwned::owned(std::in_place); +} + +inline c10::MaybeOwned Tensor::expect_contiguous(MemoryFormat memory_format) const & { + if (is_contiguous(memory_format)) { + return c10::MaybeOwned::borrowed(*this); + } else { + return c10::MaybeOwned::owned(__dispatch_contiguous(memory_format)); + } +} +} // namespace at diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/TensorMethods.cpp b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/TensorMethods.cpp new file mode 100644 index 0000000000000000000000000000000000000000..c1440abc4cb0e547112393b2bdd1812feb84d0c8 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/TensorMethods.cpp @@ -0,0 +1,61 @@ +#include +#include + +#include + +namespace at { + +namespace { + +// Verifies the requested type is the same as the Tensor's type. +void check_type(const TensorBase& tensor, ScalarType type) { + TORCH_CHECK( + tensor.scalar_type() == type + || (isQIntType(tensor.scalar_type()) + && toUnderlying(tensor.scalar_type()) == type), + "expected scalar type ", type, " but found ", tensor.scalar_type()); +} + +} // namespace + +template +const T* TensorBase::const_data_ptr() const { + using NonConstT = std::remove_const_t; + check_type(*this, c10::CppTypeToScalarType()); + return this->unsafeGetTensorImpl()->data_ptr_impl(); +} + +template +T* TensorBase::mutable_data_ptr() const { + check_type(*this, c10::CppTypeToScalarType()); + return this->unsafeGetTensorImpl()->mutable_data_ptr_impl(); +} + +template +T* TensorBase::data_ptr() const { + return this->mutable_data_ptr(); +} + +#define DEFINE_CAST(T, name) \ + template TORCH_API const T* TensorBase::const_data_ptr() const; \ + template TORCH_API const T* TensorBase::const_data_ptr() const; \ + template TORCH_API T* TensorBase::mutable_data_ptr() const; \ + template TORCH_API T* TensorBase::data_ptr() const; + + AT_FORALL_SCALAR_TYPES_WITH_COMPLEX(DEFINE_CAST) + AT_FORALL_QINT_TYPES(DEFINE_CAST) + DEFINE_CAST(uint16_t, UInt16) + DEFINE_CAST(uint32_t, UInt32) + DEFINE_CAST(uint64_t, UInt64) + #undef DEFINE_CAST + + #define DEFINE_ITEM(T, name) \ + template <> \ + TORCH_API T Tensor::item() const { \ + return item().to##name(); \ + } + + AT_FORALL_SCALAR_TYPES_WITH_COMPLEX(DEFINE_ITEM) + #undef DEFINE_ITEM + + } //namespace at diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/UfuncCPU.cpp b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/UfuncCPU.cpp new file mode 100644 index 0000000000000000000000000000000000000000..6b363a508907cc064e41794720657541fc28c301 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/UfuncCPU.cpp @@ -0,0 +1,19 @@ +#define TORCH_ASSERT_NO_OPERATORS + +#include +#include +#include + +namespace at { + +// NB: this is explicitly copied here (via codegen) rather than +// included via NativeFunctions.h to avoid recompiling this file when +// NativeFunctions.h changes +namespace meta { +${meta_declaration} +} + +namespace native { +${native_declaration} +${native_definitions} +}} // namespace at::native diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/UfuncCPUKernel.cpp b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/UfuncCPUKernel.cpp new file mode 100644 index 0000000000000000000000000000000000000000..0cac55664d6125287bdee0bd94c150462b81d5b9 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/UfuncCPUKernel.cpp @@ -0,0 +1,14 @@ +#define TORCH_ASSERT_NO_OPERATORS + +#include +#include +#include +#include +#include +#include +#include + +namespace at { +namespace native { +${native_definitions} +}} // namespace at::native diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/UfuncCUDA.cu b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/UfuncCUDA.cu new file mode 100644 index 0000000000000000000000000000000000000000..e75d82d9cc84bd8fddfd303f610412e5d0a98729 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/UfuncCUDA.cu @@ -0,0 +1,21 @@ +#define TORCH_ASSERT_NO_OPERATORS + +#include +#include +#include +#include +${cuda_headers} + +namespace at { + +// NB: this is explicitly copied here (via codegen) rather than +// included via NativeFunctions.h to avoid recompiling this file when +// NativeFunctions.h changes +namespace meta { +${meta_declaration} +} + +namespace native { +${native_declaration} +${native_definitions} +}} // namespace at::native diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/UnboxingFunctions.cpp b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/UnboxingFunctions.cpp new file mode 100644 index 0000000000000000000000000000000000000000..86c13235d8623964d734e743f5f15cf68a8df63c --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/UnboxingFunctions.cpp @@ -0,0 +1,35 @@ +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +namespace at { +namespace unboxing { + +using ::c10::fmap; +using ::c10::filter; +using torch::jit::peek; +using torch::jit::drop; +using torch::jit::pack; +using torch::jit::pop; + +// Generated function declaration +${definitions} + +} // namespace unboxing +} // namespace at diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/UnboxingFunctions.h b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/UnboxingFunctions.h new file mode 100644 index 0000000000000000000000000000000000000000..a65469a9b0123cbfd4075ff3c263276aa47f137f --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/UnboxingFunctions.h @@ -0,0 +1,32 @@ +// ${generated_comment} + +// Generated by tools/jit/gen_unboxing.py. This file declares code generated boxed C++ functions for operators, +// base off of native_functions.yaml (or similar yaml file with the same syntax). The definition of such a boxed +// function will pop out IValues from the stack then convert them into the correct C++ types based on given schema. This +// unboxing logic is an alternative to template-based metaprogramming unboxing. + +#pragma once + +#include +namespace at { +namespace unboxing { +namespace { + +template +std::array as_array(const c10::List& list) { + std::array res; + AT_ASSERT(list.size() == N); + std::vector vec; + for (c10::IValue elem : list) { + vec.push_back(elem.to()); + } + std::copy(vec.begin(), vec.end(), res.begin()); + return res; +} +} // namespace +using Stack = std::vector; +// Generated function declaration +${declarations} + +} // namespace unboxing +} // namespace at diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/ViewMetaClasses.cpp b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/ViewMetaClasses.cpp new file mode 100644 index 0000000000000000000000000000000000000000..0fd53171935f9147ba54bcd39a886e2f4dda6b2f --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/ViewMetaClasses.cpp @@ -0,0 +1,19 @@ +// ${generated_comment} + +#include +#include + +#ifndef AT_PER_OPERATOR_HEADERS +#include +#include +#else +${op_headers} +#endif + +namespace at { +namespace functionalization { + +${view_meta_implementations} + +} // namespace functionalization +} // namespace at diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/ViewMetaClasses.h b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/ViewMetaClasses.h new file mode 100644 index 0000000000000000000000000000000000000000..be2dee2a871b35258864377fbac83e3037108b2b --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/ViewMetaClasses.h @@ -0,0 +1,12 @@ +#define TORCH_ASSERT_ONLY_METHOD_OPERATORS +// ${generated_comment} + +#include + +namespace at { +namespace functionalization { + +${view_meta_declarations} + +} // namespace functionalization +} // namespace at diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/ViewMetaClassesPythonBinding.cpp b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/ViewMetaClassesPythonBinding.cpp new file mode 100644 index 0000000000000000000000000000000000000000..c784e5abe5c88dfb5bc418e60d48b28391274718 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/ViewMetaClassesPythonBinding.cpp @@ -0,0 +1,11 @@ +#include +#include + +namespace torch::functionalization { + +void initGenerated(PyObject* module) { + auto functionalization = py::handle(module).cast(); + $view_meta_bindings +} + +} // namespace torch::functionalization diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/aten_interned_strings.h b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/aten_interned_strings.h new file mode 100644 index 0000000000000000000000000000000000000000..326d4622334a776f4f1f94fb49a70f2c53c7e6eb --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/aten_interned_strings.h @@ -0,0 +1,22 @@ +#pragma once + +// ${generated_comment} + +#if defined(TORCH_ASSERT_NO_OPERATORS) || defined(TORCH_ASSERT_ONLY_METHOD_OPERATORS) +#error This change adds a dependency on native_functions.yaml, \ + meaning the file will need to be re-compiled every time an operator \ + is changed or added. Consider if including for \ + the c10::Symbol class would be sufficient, or if your change would be \ + better placed in another file. +#endif + +// ATen symbols correspond exactly to operators defined in ATen. Every +// symbol here corresponds exactly to an ATen operation defined in +// native_functions.yaml; attributes are in one-to-one correspondence +// with their ATen name. + +#define FORALL_ATEN_BASE_SYMBOLS(_) \ +${aten_symbols} + +#define FORALL_ATTR_BASE_SYMBOLS(_) \ +${attr_symbols} diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/enum_tag.h b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/enum_tag.h new file mode 100644 index 0000000000000000000000000000000000000000..49c174b721153eeba19f98601bd742a0eb5b64ab --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/ATen/templates/enum_tag.h @@ -0,0 +1,19 @@ +#pragma once + +// ${generated_comment} + +#include + +HIDDEN_NAMESPACE_BEGIN(torch, headeronly) + +// Enum of valid tags obtained from the entries in tags.yaml +enum class Tag { + ${enum_of_valid_tags} +}; + +HIDDEN_NAMESPACE_END(torch, headeronly) + +// Re-expose in the at:: namespace for backward compatibility +namespace at { + using torch::headeronly::Tag; +} diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/BUILD.bazel b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/BUILD.bazel new file mode 100644 index 0000000000000000000000000000000000000000..d1a0db360d230fe0f027c19869c6307f17010503 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/BUILD.bazel @@ -0,0 +1,4 @@ +load("//:tools/bazel.bzl", "rules") +load(":build.bzl", "define_targets") + +define_targets(rules = rules) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/README.md b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/README.md new file mode 100644 index 0000000000000000000000000000000000000000..bfa43899cc590959c2bfd74e38662ec03aaee3d6 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/README.md @@ -0,0 +1,3 @@ +If you add a file to this directory, you **MUST** update +`torch/CMakeLists.txt` and add the file as a dependency to +the `add_custom_command` call. diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/__init__.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/build.bzl b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/build.bzl new file mode 100644 index 0000000000000000000000000000000000000000..c5ddf7a20b800a714431fdc9feb57679783410f4 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/build.bzl @@ -0,0 +1,20 @@ +def define_targets(rules): + rules.py_library( + name = "autograd", + srcs = rules.glob(["*.py"]), + data = rules.glob([ + "*.yaml", + "templates/*", + ]), + visibility = ["//:__subpackages__"], + deps = [ + rules.requirement("PyYAML"), + "//torchgen", + ], + ) + + rules.filegroup( + name = "deprecated_yaml", + srcs = ["deprecated.yaml"], + visibility = ["//:__subpackages__"], + ) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/context.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/context.py new file mode 100644 index 0000000000000000000000000000000000000000..0ed4b2ee4d014be3dca01c3f2293b36b03b7880b --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/context.py @@ -0,0 +1,31 @@ +import functools +from collections.abc import Callable + +from torchgen.api.autograd import NativeFunctionWithDifferentiabilityInfo as NFWDI +from torchgen.context import native_function_manager +from torchgen.utils import T + + +# Like tools.api.context.with_native_function, but for +# NativeFunctionWithDifferentiabilityInfo. +def with_native_function_with_differentiability_info( + func: Callable[[NFWDI], T], +) -> Callable[[NFWDI], T]: + @functools.wraps(func) + def wrapper(f: NFWDI) -> T: + with native_function_manager(f.func): + return func(f) + + return wrapper + + +# Like the above but with an additional dispatch key string argument +def with_native_function_with_differentiability_info_and_key( + func: Callable[[NFWDI, str], T], +) -> Callable[[NFWDI, str], T]: + @functools.wraps(func) + def wrapper(f: NFWDI, key: str) -> T: + with native_function_manager(f.func): + return func(f, key) + + return wrapper diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/deprecated.yaml b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/deprecated.yaml new file mode 100644 index 0000000000000000000000000000000000000000..52f7ec50b6ea15dae1c3308358997950d295c924 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/deprecated.yaml @@ -0,0 +1,134 @@ +# Deprecated function signatures. These are exposed in Python, but not included +# in the error message suggestions. + +- name: add(Tensor self, Scalar alpha, Tensor other) -> Tensor + aten: add(self, other, alpha) + +- name: add_(Tensor(a!) self, Scalar alpha, Tensor other) -> Tensor(a!) + aten: add_(self, other, alpha) + +- name: add(Tensor self, Scalar alpha, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + aten: add_out(out, self, other, alpha) + +- name: addbmm(Scalar beta, Tensor self, Scalar alpha, Tensor batch1, Tensor batch2) -> Tensor + aten: addbmm(self, batch1, batch2, beta, alpha) + +- name: addbmm_(Scalar beta, Tensor(a!) self, Scalar alpha, Tensor batch1, Tensor batch2) -> Tensor(a!) + aten: addbmm_(self, batch1, batch2, beta, alpha) + +- name: addbmm(Scalar beta, Tensor self, Scalar alpha, Tensor batch1, Tensor batch2, *, Tensor(a!) out) -> Tensor(a!) + aten: addbmm_out(out, self, batch1, batch2, beta, alpha) + +- name: addbmm(Scalar beta, Tensor self, Tensor batch1, Tensor batch2) -> Tensor + aten: addbmm(self, batch1, batch2, beta, 1) + +- name: addbmm_(Scalar beta, Tensor(a!) self, Tensor batch1, Tensor batch2) -> Tensor(a!) + aten: addbmm_(self, batch1, batch2, beta, 1) + +- name: addbmm(Scalar beta, Tensor self, Tensor batch1, Tensor batch2, *, Tensor(a!) out) -> Tensor(a!) + aten: addbmm_out(out, self, batch1, batch2, beta, 1) + +- name: addcdiv(Tensor self, Scalar value, Tensor tensor1, Tensor tensor2) -> Tensor + aten: addcdiv(self, tensor1, tensor2, value) + +- name: addcdiv_(Tensor(a!) self, Scalar value, Tensor tensor1, Tensor tensor2) -> Tensor(a!) + aten: addcdiv_(self, tensor1, tensor2, value) + +- name: addcdiv(Tensor self, Scalar value, Tensor tensor1, Tensor tensor2, *, Tensor(a!) out) -> Tensor(a!) + aten: addcdiv_out(out, self, tensor1, tensor2, value) + +- name: addcmul(Tensor self, Scalar value, Tensor tensor1, Tensor tensor2) -> Tensor + aten: addcmul(self, tensor1, tensor2, value) + +- name: addcmul_(Tensor(a!) self, Scalar value, Tensor tensor1, Tensor tensor2) -> Tensor(a!) + aten: addcmul_(self, tensor1, tensor2, value) + +- name: addcmul(Tensor self, Scalar value, Tensor tensor1, Tensor tensor2, *, Tensor(a!) out) -> Tensor(a!) + aten: addcmul_out(out, self, tensor1, tensor2, value) + +- name: addmm(Scalar beta, Tensor self, Scalar alpha, Tensor mat1, Tensor mat2) -> Tensor + aten: addmm(self, mat1, mat2, beta, alpha) + +- name: addmm_(Scalar beta, Tensor(a!) self, Scalar alpha, Tensor mat1, Tensor mat2) -> Tensor(a!) + aten: addmm_(self, mat1, mat2, beta, alpha) + +- name: addmm(Scalar beta, Tensor self, Scalar alpha, Tensor mat1, Tensor mat2, *, Tensor(a!) out) -> Tensor(a!) + aten: addmm_out(out, self, mat1, mat2, beta, alpha) + +- name: addmm(Scalar beta, Tensor self, Tensor mat1, Tensor mat2) -> Tensor + aten: addmm(self, mat1, mat2, beta, 1) + +- name: addmm_(Scalar beta, Tensor(a!) self, Tensor mat1, Tensor mat2) -> Tensor(a!) + aten: addmm_(self, mat1, mat2, beta, 1) + +- name: addmm(Scalar beta, Tensor self, Tensor mat1, Tensor mat2, *, Tensor(a!) out) -> Tensor(a!) + aten: addmm_out(out, self, mat1, mat2, beta, 1) + +- name: sspaddmm(Scalar beta, Tensor self, Scalar alpha, Tensor mat1, Tensor mat2) -> Tensor + aten: sspaddmm(self, mat1, mat2, beta, alpha) + +- name: sspaddmm(Scalar beta, Tensor self, Tensor mat1, Tensor mat2) -> Tensor + aten: sspaddmm(self, mat1, mat2, beta, 1) + +- name: addmv(Scalar beta, Tensor self, Scalar alpha, Tensor mat, Tensor vec) -> Tensor + aten: addmv(self, mat, vec, beta, alpha) + +- name: addmv_(Scalar beta, Tensor(a!) self, Scalar alpha, Tensor mat, Tensor vec) -> Tensor(a!) + aten: addmv_(self, mat, vec, beta, alpha) + +- name: addmv(Scalar beta, Tensor self, Scalar alpha, Tensor mat, Tensor vec, *, Tensor(a!) out) -> Tensor(a!) + aten: addmv_out(out, self, mat, vec, beta, alpha) + +- name: addmv(Scalar beta, Tensor self, Tensor mat, Tensor vec) -> Tensor + aten: addmv(self, mat, vec, beta, 1) + +- name: addmv_(Scalar beta, Tensor(a!) self, Tensor mat, Tensor vec) -> Tensor(a!) + aten: addmv_(self, mat, vec, beta, 1) + +- name: addmv(Scalar beta, Tensor self, Tensor mat, Tensor vec, *, Tensor(a!) out) -> Tensor(a!) + aten: addmv_out(out, self, mat, vec, beta, 1) + +- name: addr(Scalar beta, Tensor self, Scalar alpha, Tensor vec1, Tensor vec2) -> Tensor + aten: addr(self, vec1, vec2, beta, alpha) + +- name: addr_(Scalar beta, Tensor(a!) self, Scalar alpha, Tensor vec1, Tensor vec2) -> Tensor(a!) + aten: addr_(self, vec1, vec2, beta, alpha) + +- name: addr(Scalar beta, Tensor self, Scalar alpha, Tensor vec1, Tensor vec2, *, Tensor(a!) out) -> Tensor(a!) + aten: addr_out(out, self, vec1, vec2, beta, alpha) + +- name: addr(Scalar beta, Tensor self, Tensor vec1, Tensor vec2) -> Tensor + aten: addr(self, vec1, vec2, beta, 1) + +- name: addr_(Scalar beta, Tensor(a!) self, Tensor vec1, Tensor vec2) -> Tensor(a!) + aten: addr_(self, vec1, vec2, beta, 1) + +- name: addr(Scalar beta, Tensor self, Tensor vec1, Tensor vec2, *, Tensor(a!) out) -> Tensor(a!) + aten: addr_out(out, self, vec1, vec2, beta, 1) + +- name: baddbmm(Scalar beta, Tensor self, Scalar alpha, Tensor batch1, Tensor batch2) -> Tensor + aten: baddbmm(self, batch1, batch2, beta, alpha) + +- name: baddbmm_(Scalar beta, Tensor(a!) self, Scalar alpha, Tensor batch1, Tensor batch2) -> Tensor(a!) + aten: baddbmm_(self, batch1, batch2, beta, alpha) + +- name: baddbmm(Scalar beta, Tensor self, Scalar alpha, Tensor batch1, Tensor batch2, *, Tensor(a!) out) -> Tensor(a!) + aten: baddbmm_out(out, self, batch1, batch2, beta, alpha) + +- name: baddbmm(Scalar beta, Tensor self, Tensor batch1, Tensor batch2) -> Tensor + aten: baddbmm(self, batch1, batch2, beta, 1) + +- name: baddbmm_(Scalar beta, Tensor(a!) self, Tensor batch1, Tensor batch2) -> Tensor(a!) + aten: baddbmm_(self, batch1, batch2, beta, 1) + +- name: baddbmm(Scalar beta, Tensor self, Tensor batch1, Tensor batch2, *, Tensor(a!) out) -> Tensor(a!) + aten: baddbmm_out(out, self, batch1, batch2, beta, 1) + +- name: sub(Tensor self, Scalar alpha, Tensor other) -> Tensor + aten: sub(self, other, alpha) + +- name: sub_(Tensor(a!) self, Scalar alpha, Tensor other) -> Tensor(a!) + aten: sub_(self, other, alpha) + +- name: sub(Tensor self, Scalar alpha, Tensor other, *, Tensor(a!) out) -> Tensor(a!) + aten: sub_out(out, self, other, alpha) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/derivatives.yaml b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/derivatives.yaml new file mode 100644 index 0000000000000000000000000000000000000000..fa611a88889b0518e9f7f6bef17c317631aa6a65 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/derivatives.yaml @@ -0,0 +1,3282 @@ +# Defines derivative formulas and Python signatures of methods on Variable +# +# Note about possibly confusing nomenclature: An 'output gradient' is the +# gradient of an output of a forward function. Output gradients are used as +# the inputs to backward functions. `grads` is a vector of output gradients, +# and `grad == grads[0]`, in all the derivative formulas in this file. +# An 'input gradient' is the gradient of an input to a forward function. +# Input gradients are the outputs of backward functions, corresponding to the +# input names included in the derivative formulas defined in this file. +# Also, every time we talk computing "gradient" we actually mean computing +# the vector jacobian product using the given 'output gradient' as the vector. +# +# Each entry consists of: +# - A 'name', which specifies the ATen name of the function you +# are defining derivatives for, and an argument specification. +# - An optional 'dispatch' entry which can be used to specify +# per-autograd dispatch key derivatives. If this entry is not +# specified, then the gradient entries will be taken as the +# default gradients (i.e. registered for every backward dispatch +# key). (see _test_autograd_multiple_dispatch for an example +# of how to register separate derivates for different dispatch keys). +# The list of allowed dispatch keys (in addition to 'Default' which +# represents the Autograd alias key) is torchgen/model.py:AUTOGRAD_KEYS. +# - One or more gradients entries, mapping differentiable input +# names to a formula specifying how to compute its gradient. +# Note that a single gradient entry can specify the gradient +# formula for multiple input names, by specifying a key +# "input1, input2" (see atan2 for an example). +# - An argument can be flagged as 'non_differentiable'. +# - Optional entry with key 'output_differentiability' and value a list of the +# same length as the number of outputs from the forward function. The list +# should contain only booleans, specifying whether each of the output Tensor +# is differentiable. +# If it is not specified for a function that returns multiple elements but +# uses `grad` instead of `grads[idx]`, then all but the first output will +# be marked as non-differentiable. +# If None of the output is differentiable, you can also add the function +# name to `gen_variable_type.py`'s `DONT_REQUIRE_DERIVATIVE` list. +# +# There are two cases for Tensor and TensorList arguments here: +# - If that argument is differentiable, in the sense that a gradient with respect +# to that argument could exist. You should either: +# - Specify the formula for that gradient +# - Specify not_implemented("function_name") as a formula to say that this is not +# implemented yet (but might be in the future and the user can request that on an issue) +# - If that argument is not differentiable, because it is not a floating point dtype or the +# function is not differentiable with respect to that argument for +# example. You should either: +# - Do not specify any formula for this argument +# - Specify explicitly that this argument is "non_differentiable". Note that in this case, +# we trust you that this argument will never have requires_grad=True and it will be silently +# ignored if it does. +# +# If a function has out-of-place and in-place variants, then the derivative +# definition for the in-place variant is optional. It will default to the +# definition for the out-of-place variant. Note that _out variants are never +# differentiable. +# +# Gradient expressions are standard C++ expressions operating on ATen +# variables. In a gradient expression, the following variables/functions +# are in scope: +# +# - 'grad', the gradient of the output (often spelled grad_output +# in Python) which we are going to left-multiply. +# +# When a function returns multiple *differentiable* outputs, +# you can refer to the gradients of each outputs using 'grads', +# e.g., 'grads[0]', 'grads[1]'. +# +# When a function returns multiple *differentiable* outputs that +# are named, you can refer to the gradients of each outputs using +# 'grad_{name}', e.g., 'grad_x', 'grad_y'. +# +# When a function returns *one* differentiable output (the +# first output) and some more nondifferentiable outputs, +# you MUST refer to the gradient of the differentiable output with +# 'grad' (this case is special-cased in our code generation). +# +# Note that the number of differentiable outputs can be modified by the +# 'output_differentiability' entry (see above). +# +# Across a differentiable function's derivatives set, it is not +# permitted to mix the use of "grad", "grads", and +# "grad_{name}". You must be consistent for that differentiable +# function. +# +# - Any of the input arguments, tensor or non-tensor, including +# argument names that only appear in Declarations.yaml, e.g. 'output'. +# +# - 'result', representing the result of evaluating the forward +# expression for ATen native function declarations. If the forward +# expression outputs a tuple, use 'resultX' instead to access the +# X-th entry +# +# - 'grad_input_mask', a std::array, specifies which input +# gradients are actually needed. For example, in the entry +# `input0, input1: foo(grad_input_mask)`, `grad_input_mask` is a size +# two array, where `grad_input_mask[0]` is true if `input0` requires +# grad, and `grad_input_mask[1]` is true if `input1` requires grad. +# +# (NB: if your function computes gradient for a list of tensors, +# the `grad_input_mask` will only have a single entry for the list +# specifying if either zero or at least one tensor from the list requires +# grad. If we want to support more fine-grained signalling, +# we'll need some alternate variable which is not a std::array) +# +# - 'retain_variables', a bool which is true if a user has specified +# that saved variables should be retained in case the backwards is +# run again later. This allows an optimization where we can +# destroy saved buffers if we know variables are not going to be retained, +# e.g., it is used by _cudnn_rnn +# +# - `wrap_opt_if`, is a 2-argument function that accepts a tensor +# variable and a boolean condition that dictates whether to save that +# variable in a graph. The result of this function is `std::optional`, +# and it is `::std::nullopt` when the condition evaluates to `false`, +# otherwise it is the variable wrapped in `std::optional`. +# For example, wrap_opt_if(var_0, grad_input_mask[1] || grad_input_mask[2]) +# would mean that `var_0` is saved as long as the second (grad_input_mask[1]) +# or the third (grad_input_mask[2]) argument requires gradients. +# Another interpretation of this expression would read as `var_0` is needed +# in the backward computation of the second or the third argument. +# NOTE: the usage of `var_i.requires_grad()` in the conditional expression +# is not supported, use `grad_input_mask[i]` instead. +# NOTE: `wrap_opt_if` could be used to prevent saving redundant variables +# with multi-output backward formulas. +# See https://github.com/pytorch/pytorch/issues/97575 for more details +# on the issue. +# +# If you need a complex expression, e.g., with local variables, +# write a _backward function in torch/csrc/autograd/FunctionsManual.cpp +# and invoke it from here. By the way, go read +# https://github.com/zdevito/ATen/issues/163; this describes an +# important hazard that occurs when porting backwards from Python to C++ +# +# Double backwards gradient expressions can be somewhat confusing; +# the most important thing to remember is: (1) you need to define a +# derivative formula for every input, including inputs named things +# like 'grad_output', and (2) the gradient to multiply with is always +# called 'grad' (even though it really is a grad-grad). +# +# You can also add forward derivative definition by defining a formula for +# a returned value (in general "result" if the name is not specified). This +# formula works the same way as the backward one and advanced implementations +# should also be placed in the FunctionsManual file. +# This formula should compute a single Jacobian vector product using the (primal) +# value of the argument "foo_p", its forward grad "foo_t" and the result of the +# function as "result". +# Note that the forward derivative can be automatically generated in two cases: +# - if your function is linear (NOT affine or multi-linear), then you can +# specify so by just using the string "auto_linear" for the formula. +# - if your function is applied element wise (and has a single input), you +# can specify so by just using the string "auto_element_wise" for the formula. +# +# Note that to avoid unpacking overhead, functions taking TensorList as inputs +# will always have their forward grad formula called. This function is responsible +# to check if any computation is needed and should return an undefined Tensor when +# there is nothing to do. You can check "cat_forward" for a full example. +# +# NB: There are a number of gradient definitions in here which are bogus +# (implemented using zeros_like). These gradients are (hopefully) not +# used by our frontend. You MUST check the frontend code; search for +# OpName.apply to see if it's still using a legacy Python style API. +# +# Note: Returning views. +# The following cases exist: +# - If a function returns no view, it can have arbitrary outputs. +# - If a function return at least one Tensor that is a differentiable view +# of one of its input: +# - If there is only one differentiable output, this Tensor is marked as a +# differentiable view. (alias or transpose for example) +# - If there are more than one differentiable output, by default all the views are +# marked as differentiable views and created with allow_rebase_history=false. +# Meaning that any inplace operation on it will raise an error. (unbind for example) +# +# Notes about undefined output gradients: +# All backward functions must support all combinations of undefined output +# gradient Tensors, where `grad[i].defined() == false`. Depending on the +# number of input and output grads your derivative formula uses, code +# generation may automatically add some level of undefined grad support, +# according to these three cases: +# +# * 1 input grad and 1 output grad: +# Complete undefined grad support is automatically added, so you +# shouldn't have to think about it, unless there is a bug in the code +# generation. +# +# * 1 input grad and multiple output grads: +# Undefined grad support is automatically added ONLY in the case where +# all output grads are undefined. You will have to add explicit support +# for cases where a subset of output grads is undefined. +# +# * multiple input grads: +# No automatic support, so you will need to add it. +# +# If your derivative formula uses more than one output grad, it is usually +# preferable to add undefined grad support in the backward function itself +# (if you're using one), rather than in the derivative formula in this file. +# +# Undefined Tensors are created with the default constructor `at::Tensor()`. +# It is an efficient way to represent a Tensor filled with zeros because +# the Tensor holds no sizing information and no Storage data is allocated. +# But consequently, Tensor operations cannot be performed on them. +# Therefore, your backward function should treat an undefined output grad as +# a zero, and it needs to be a special case. +# +# If all output grads are undefined, then it should be correct for the +# backward function to return undefined input grads. Since we use the chain +# rule, output grads equal to zero should result in input grads equal to zero, +# unless there is some rare special case. +# +# If a subset of output grads is undefined, then it may be acceptable for +# the backward function to return undefined input grads--it depends on the +# specific function, so you'll have to determine that yourself. If returning +# an undefined Tensor is correct for a given input grad, it is also logically +# correct to return a defined grad full of zeros, but that would not be +# preferable since it would be less efficient. +# +# NB: The parameter names here MUST be consistent with the parameter names +# in native_functions.yaml +- name: abs(Tensor self) -> Tensor + self: grad * self.sgn() + result: handle_r_to_c(result.scalar_type(), self_t.conj() * self_p.sgn()) + +- name: acos(Tensor self) -> Tensor + self: grad * -((-self * self + 1).rsqrt()).conj() + result: auto_element_wise + +- name: add.Tensor(Tensor self, Tensor other, *, Scalar alpha=1) -> Tensor + self: handle_r_to_c(self.scalar_type(), grad) + other: handle_r_to_c(other.scalar_type(), maybe_multiply(grad, alpha.conj())) + result: self_t + maybe_multiply(other_t, alpha) + +- name: add.Scalar(Tensor self, Scalar other, Scalar alpha=1) -> Tensor + self: handle_r_to_c(self.scalar_type(), grad) + result: self_t.clone() + +- name: addbmm(Tensor self, Tensor batch1, Tensor batch2, *, Scalar beta=1, Scalar alpha=1) -> Tensor + self: maybe_multiply(grad, beta.conj()) + batch1: maybe_multiply(grad.unsqueeze(0).expand_symint({ batch1.sym_size(0), batch1.sym_size(1), batch2.sym_size(2) }).bmm(batch2.transpose(1, 2).conj()), alpha.conj()) + batch2: maybe_multiply(batch1.transpose(1, 2).conj().bmm(grad.unsqueeze(0).expand_symint({ batch1.sym_size(0), batch1.sym_size(1), batch2.sym_size(2) })), alpha.conj()) + result: maybe_multiply(self_t, beta) + maybe_multiply(batch1_t.bmm(batch2_p).sum(0), alpha) + maybe_multiply(batch1_p.bmm(batch2_t).sum(0), alpha) + +- name: addcdiv(Tensor self, Tensor tensor1, Tensor tensor2, *, Scalar value=1) -> Tensor + self: handle_r_to_c(self.scalar_type(), grad) + tensor1: handle_r_to_c(tensor1.scalar_type(), grad * (value / tensor2).conj()) + tensor2: handle_r_to_c(tensor2.scalar_type(), -grad * (value * tensor1 / (tensor2 * tensor2)).conj()) + result: self_t + maybe_multiply(tensor1_t / tensor2_p, value) - maybe_multiply(tensor2_t * (tensor1_p / tensor2_p) / tensor2_p, value) + +- name: addcmul(Tensor self, Tensor tensor1, Tensor tensor2, *, Scalar value=1) -> Tensor + self: handle_r_to_c(self.scalar_type(), grad) + tensor1: handle_r_to_c(tensor1.scalar_type(), grad * (tensor2 * value).conj()) + tensor2: handle_r_to_c(tensor2.scalar_type(), grad * (tensor1 * value).conj()) + result: self_t + maybe_multiply(tensor1_t * tensor2_p, value) + maybe_multiply(tensor2_t * tensor1_p, value) + +- name: addmm(Tensor self, Tensor mat1, Tensor mat2, *, Scalar beta=1, Scalar alpha=1) -> Tensor + self: maybe_multiply(grad, beta.conj()) + mat1: mm_mat1_backward(grad, mat2, mat1.sym_sizes(), mat1.sym_strides(), mat1.layout(), alpha) + mat2: mm_mat2_backward(grad, mat1, mat2.sym_sizes(), mat2.sym_strides(), mat2.layout(), alpha) + result: maybe_multiply(self_t, beta) + maybe_multiply(mat1_t.mm(mat2_p), alpha) + maybe_multiply(mat1_p.mm(mat2_t), alpha) + +- name: _sparse_addmm(Tensor self, Tensor mat1, Tensor mat2, *, Scalar beta=1, Scalar alpha=1) -> Tensor + self: maybe_multiply(grad, beta) + mat1: mm_mat1_sparse_backward(grad, mat1, mat2, alpha) + mat2: mm_mat2_backward(grad, mat1, mat2.sym_sizes(), mat2.sym_strides(), mat2.layout(), alpha) + +- name: addmv(Tensor self, Tensor mat, Tensor vec, *, Scalar beta=1, Scalar alpha=1) -> Tensor + self: maybe_multiply(grad, beta.conj()) + mat: maybe_multiply(grad.ger(vec.conj()), alpha.conj()) + vec: maybe_multiply(mat.t().conj().mv(grad), alpha.conj()) + result: maybe_multiply(self_t, beta) + maybe_multiply(mat_t.mv(vec_p), alpha) + maybe_multiply(mat_p.mv(vec_t), alpha) + +- name: addr(Tensor self, Tensor vec1, Tensor vec2, *, Scalar beta=1, Scalar alpha=1) -> Tensor + self: maybe_multiply(grad, beta.conj()) + vec1: maybe_multiply(grad.mv(vec2.conj()), alpha.conj()) + vec2: maybe_multiply(grad.t().mv(vec1.conj()), alpha.conj()) + result: maybe_multiply(self_t, beta) + maybe_multiply(vec1_t.outer(vec2_p), alpha) + maybe_multiply(vec1_p.outer(vec2_t), alpha) + +- name: affine_grid_generator(Tensor theta, SymInt[] size, bool align_corners) -> Tensor + theta: affine_grid_generator_backward_symint(grad, size, align_corners) + result: auto_linear + +- name: alias(Tensor(a) self) -> Tensor(a) + self: grad + result: self_t + +- name: angle(Tensor self) -> Tensor + self: angle_backward(grad, self) + result: handle_r_to_c(result.scalar_type(), angle_backward(self_t.conj(), self_p).conj()) + +# The four items below are necessary because TensorIterator doesn't work on +# Variables (codegen does not unwrap the input Tensor for all() and any() ). +- name: any(Tensor self) -> Tensor + output_differentiability: [False] + +- name: any.dim(Tensor self, int dim, bool keepdim=False) -> Tensor + output_differentiability: [False] + +- name: any.dims(Tensor self, int[]? dim=None, bool keepdim=False) -> Tensor + output_differentiability: [False] + +- name: _is_all_true(Tensor self) -> Tensor + self: non_differentiable + +- name: _is_any_true(Tensor self) -> Tensor + self: non_differentiable + +- name: all(Tensor self) -> Tensor + output_differentiability: [False] + +- name: all.dim(Tensor self, int dim, bool keepdim=False) -> Tensor + output_differentiability: [False] + +- name: all.dims(Tensor self, int[]? dim=None, bool keepdim=False) -> Tensor + output_differentiability: [False] + +- name: acosh(Tensor self) -> Tensor +# Save one rsqrt in the real case by using that for x real and positive sqrt(x*y) = sqrt(x)*sqrt(y) (not true in the complex case) + self: "self.is_complex() ? grad * ((self + 1).rsqrt() * (self - 1).rsqrt()).conj() : grad * (self * self - 1).rsqrt()" + result: auto_element_wise + +- name: acosh_(Tensor(a!) self) -> Tensor(a!) + self: not_implemented("inplace version of acosh") + +- name: asinh(Tensor self) -> Tensor + self: grad * (self.pow(2) + 1).rsqrt().conj() + result: auto_element_wise + +- name: asinh_(Tensor(a!) self) -> Tensor(a!) + self: not_implemented("inplace version of asinh") + +- name: atanh(Tensor self) -> Tensor + self: grad * 1 / (1 - self.pow(2)).conj() + result: auto_element_wise + +- name: atanh_(Tensor(a!) self) -> Tensor(a!) + self: not_implemented("inplace version of atanh") + +- name: as_strided(Tensor(a) self, SymInt[] size, SymInt[] stride, SymInt? storage_offset=None) -> Tensor(a) + self: as_strided_backward(grad, TensorGeometry(self), size, stride, storage_offset) + result: auto_linear + +- name: as_strided_(Tensor(a!) self, SymInt[] size, SymInt[] stride, SymInt? storage_offset=None) -> Tensor(a!) + self: as_strided_backward(grad, TensorGeometry(self), size, stride, storage_offset) + result: auto_linear + +- name: asin(Tensor self) -> Tensor + self: grad * (-self * self + 1).rsqrt().conj() + result: auto_element_wise + +- name: atan(Tensor self) -> Tensor + self: grad / (self * self + 1).conj() + result: auto_element_wise + +- name: atan2(Tensor self, Tensor other) -> Tensor + self, other: atan2_backward(grad, self, other, grad_input_mask) + result: (-self_p * other_t + other_p * self_t) / (self_p.pow(2) + other_p.pow(2)) + +- name: baddbmm(Tensor self, Tensor batch1, Tensor batch2, *, Scalar beta=1, Scalar alpha=1) -> Tensor + self: maybe_multiply(grad, beta.conj()) + batch1: maybe_multiply(grad.bmm(batch2.transpose(1, 2).conj()), alpha.conj()) + batch2: maybe_multiply(batch1.transpose(1, 2).conj().bmm(grad), alpha.conj()) + result: maybe_multiply(self_t, beta) + maybe_multiply(batch1_t.bmm(batch2_p), alpha) + maybe_multiply(batch1_p.bmm(batch2_t), alpha) + +- name: bernoulli(Tensor self, *, Generator? generator=None) -> Tensor + self: zeros_like(grad) + result: auto_element_wise + +- name: bernoulli_.Tensor(Tensor(a!) self, Tensor p, *, Generator? generator=None) -> Tensor(a!) + self: zeros_like(grad) + p: zeros_like(p) + result: self_t.zero_() + +- name: bernoulli_.float(Tensor(a!) self, float p=0.5, *, Generator? generator=None) -> Tensor(a!) + self: zeros_like(grad) + result: self_t.zero_() + +- name: bmm(Tensor self, Tensor mat2) -> Tensor + self: grad.bmm(mat2.transpose(1, 2).conj()) + mat2: self.transpose(1, 2).conj().bmm(grad) + result: self_t.bmm(mat2_p) + self_p.bmm(mat2_t) + +- name: matmul(Tensor self, Tensor other) -> Tensor + self, other: matmul_backward(grad, self, other, grad_input_mask) + +- name: cat(Tensor[] tensors, int dim=0) -> Tensor + tensors: cat_tensors_backward(grad, to_args_sizes_symint(tensors), to_args_scalartypes(tensors), dim) + result: cat_jvp(tensors, dim) + +- name: cauchy_(Tensor(a!) self, float median=0, float sigma=1, *, Generator? generator=None) -> Tensor(a!) + self: zeros_like(grad) + result: self_t.zero_() + +- name: ceil(Tensor self) -> Tensor + self: zeros_like(grad) + result: auto_element_wise + +- name: cholesky(Tensor self, bool upper=False) -> Tensor + self: cholesky_backward(grad, upper, result) + +- name: chunk(Tensor(a -> *) self, int chunks, int dim=0) -> Tensor(a)[] + dispatch: + Default: + # the default case will use the CompositeImplicitAutograd + self: not_implemented("chunk") + AutogradNestedTensor: + self: chunk_backward_nested(grads, self, chunks, dim) + +- name: linalg_cholesky_ex(Tensor self, *, bool upper=False, bool check_errors=False) -> (Tensor L, Tensor info) + self: cholesky_backward(grad, upper, L) + L: cholesky_jvp(self_t, L, upper) + +- name: cholesky_solve(Tensor self, Tensor input2, bool upper=False) -> Tensor + self, input2: cholesky_solve_backward(grad, self, input2, result, upper, grad_input_mask) + result: cholesky_solve_jvp(result, input2_p, input2_t, self_t, upper) + +- name: cholesky_inverse(Tensor self, bool upper=False) -> Tensor + self: cholesky_inverse_backward(grad, self, upper, result) + result: cholesky_inverse_jvp(self_p, self_t, result, upper) + +# For clamp, gradient is not defined at the boundaries. But empirically it's helpful +# to be able to get gradient on min and max, so we return the subgradient 1 for these cases. +- name: clamp.Tensor(Tensor self, Tensor? min=None, Tensor? max=None) -> Tensor + self: clamp_backward(grad, self, min, max) + min, max: clamp_backward_min_max(grad, self, min, max, grad_input_mask) + result: clamp_jvp(self_p, self_t, min_p, min_t, max_p, max_t) + +- name: clamp(Tensor self, Scalar? min=None, Scalar? max=None) -> Tensor + self: clamp_backward(grad, self, min, max) + result: auto_element_wise + +- name: clamp_min(Tensor self, Scalar min) -> Tensor + self: where(self >= min, grad, at::scalar_tensor(0., grad.options())) + result: auto_element_wise + +- name: clamp_min.Tensor(Tensor self, Tensor min) -> Tensor + self: where(self >= min, grad, at::scalar_tensor(0., grad.options())) + min: where(self < min, grad, at::scalar_tensor(0., grad.options())) + result: where(self_p >= min_p, self_t, min_t) + +- name: clamp_max(Tensor self, Scalar max) -> Tensor + self: where(self <= max, grad, at::scalar_tensor(0., grad.options())) + result: auto_element_wise + +- name: clamp_max.Tensor(Tensor self, Tensor max) -> Tensor + self: where(self <= max, grad, at::scalar_tensor(0., grad.options())) + max: where(self > max, grad, at::scalar_tensor(0., grad.options())) + result: where(self_p <= max_p, self_t, max_t) + +- name: clone(Tensor self, *, MemoryFormat? memory_format=None) -> Tensor + self: grad + result: auto_linear + +- name: _lazy_clone(Tensor self) -> Tensor + self: grad + result: auto_linear + +- name: _to_copy(Tensor self, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None, bool non_blocking=False, MemoryFormat? memory_format=None) -> Tensor + self: _to_copy_backward(grad, self.options()) + result: _to_copy(self_t, dtype, layout, device, pin_memory, non_blocking, memory_format) + # The condition is: if dtype is not nullopt, then isDifferentiableType(*dtype) + # (If dtype IS nullopt, we rely on the regular check that any input requires grad). + output_differentiability: ["!dtype || isDifferentiableType(*dtype)"] + +- name: _coalesce(Tensor self) -> Tensor + self: grad + +- name: complex(Tensor real, Tensor imag) -> Tensor + real: at::real(grad) + imag: at::imag(grad) + result: at::complex(real_t, imag_t) + +- name: polar(Tensor abs, Tensor angle) -> Tensor + abs, angle: polar_backward(grad, result) + result: at::complex(abs_t*angle_p.cos() - angle_t*abs_p*angle_p.sin(), abs_t*angle_p.sin() + angle_t*abs_p*angle_p.cos()) + +- name: _conj(Tensor(a) self) -> Tensor(a) + self: grad.conj() + result: self_t.conj() + +- name: _neg_view(Tensor(a) self) -> Tensor(a) + self: grad.neg() + result: self_t._neg_view() + +- name: _conj_physical(Tensor self) -> Tensor + self: grad.conj_physical() + result: self_t.conj_physical() + +- name: conj_physical_(Tensor(a!) self) -> Tensor(a!) + self: grad.conj_physical() + result: self_t.conj_physical_() + +- name: copysign.Tensor(Tensor self, Tensor other) -> Tensor + self: copysign_tensor_self_backward(grad, self, result) + other: zeros_like(other) + result: copysign_tensor_self_backward(self_t, self_p, result) + +- name: copysign.Scalar(Tensor self, Scalar other) -> Tensor + self: copysign_tensor_self_backward(grad, self, result) + result: auto_element_wise + +- name: cos(Tensor self) -> Tensor + self: grad * -self.sin().conj() + result: auto_element_wise + +- name: cosh(Tensor self) -> Tensor + self: grad * self.sinh().conj() + result: auto_element_wise + +- name: count_nonzero.dim_IntList(Tensor self, int[] dim) -> Tensor + output_differentiability: [False] + +- name: count_nonzero(Tensor self, int? dim=None) -> Tensor + output_differentiability: [False] + +- name: linalg_cross(Tensor self, Tensor other, *, int dim=-1) -> Tensor + self: at::linalg_cross(other.conj(), grad, dim) + other: at::linalg_cross(grad, self.conj(), dim) + result: "at::linalg_cross(self_t, other_p, dim) + at::linalg_cross(self_p, other_t, dim)" + +- name: logcumsumexp(Tensor self, int dim) -> Tensor + self: logcumsumexp_backward(grad, self, result, dim) + result: logcumsumexp_jvp(self_p, self_t, dim) + +- name: cumprod(Tensor self, int dim, *, ScalarType? dtype=None) -> Tensor + self: cumprod_backward(grad.to(self.scalar_type()), self, dim, result) + result: "cumprod_jvp(self_t, self_p, result, dim).to(dtype.has_value() ? *dtype : self_p.scalar_type())" + +- name: cumsum(Tensor self, int dim, *, ScalarType? dtype=None) -> Tensor + self: cumsum_backward(grad.to(self.scalar_type()), dim) + result: auto_linear + +- name: cummax(Tensor self, int dim) -> (Tensor values, Tensor indices) + self: cummaxmin_backward(grad, self, indices, dim) + values: self_t.gather(dim, indices) + +- name: cummin(Tensor self, int dim) -> (Tensor values, Tensor indices) + self: cummaxmin_backward(grad, self, indices, dim) + values: self_t.gather(dim, indices) + +- name: conv_tbc(Tensor self, Tensor weight, Tensor bias, int pad=0) -> Tensor + self, weight, bias: "grad.defined() ? conv_tbc_backward(grad, self, weight, bias, pad) : std::tuple()" + +- name: _ctc_loss(Tensor log_probs, Tensor targets, int[] input_lengths, int[] target_lengths, int blank=0, bool zero_infinity=False) -> (Tensor, Tensor) + log_probs: _ctc_loss_backward(grad, log_probs, targets, input_lengths, target_lengths, result0, result1, blank, zero_infinity) + +- name: _ctc_loss.Tensor(Tensor log_probs, Tensor targets, Tensor input_lengths, Tensor target_lengths, int blank=0, bool zero_infinity=False) -> (Tensor, Tensor) + log_probs: _ctc_loss_backward(grad, log_probs, targets, input_lengths, target_lengths, result0, result1, blank, zero_infinity) + +- name: deg2rad(Tensor self) -> Tensor + self: deg2rad_backward(grad) + result: auto_element_wise + +- name: _linalg_det(Tensor A) -> (Tensor result, Tensor LU, Tensor pivots) + A: linalg_det_backward(grad, result, A, LU, pivots) + result: linalg_det_jvp(A_t, result, LU, pivots, A_p.is_contiguous() && !A_p.is_complex()) + output_differentiability: [True, False, False] + +- name: _linalg_slogdet(Tensor A) -> (Tensor sign, Tensor logabsdet, Tensor LU, Tensor pivots) + A: slogdet_backward(grad_sign, grad_logabsdet, A, sign, LU, pivots) + sign, logabsdet: slogdet_jvp(LU, pivots, A_t, sign, A_p.is_contiguous() && !A_p.is_complex()) + output_differentiability: [True, True, False, False] + +- name: block_diag(Tensor[] tensors) -> Tensor + tensors: block_diag_backward(grad, to_args_sizes(tensors), to_args_scalartypes(tensors)) + result: block_diag_jvp(tensors) + +- name: diag_embed(Tensor self, int offset=0, int dim1=-2, int dim2=-1) -> Tensor + self: grad.diagonal(offset, dim1, dim2) + result: auto_linear + +- name: diagonal(Tensor(a) self, int offset=0, int dim1=0, int dim2=1) -> Tensor(a) + self: diagonal_backward_symint(grad, self.sym_sizes(), offset, dim1, dim2) + result: auto_linear + +- name: diagonal_backward(Tensor grad_output, SymInt[] input_sizes, int offset, int dim1, int dim2) -> Tensor + grad_output: grad.diagonal(offset, dim1, dim2) + result: auto_linear + +- name: dist(Tensor self, Tensor other, Scalar p=2) -> Tensor + self: norm_backward(grad, self - other, p, result) + other: -norm_backward(grad, self - other, p, result) + result: norm_jvp(self_p - other_p, self_t - other_t, p, result, {}, false) + +# The backward formula is done in this order to improve numerical stability +# of the higher order derivatives, see https://github.com/pytorch/pytorch/issues/43414 +# Note that we don't use "result" because saving it would be BC-breaking when it is used in an inplace operation later +- name: div.Tensor(Tensor self, Tensor other) -> Tensor + self: div_tensor_self_backward(grad, other, self.scalar_type()) + other: div_tensor_other_backward(grad, self, other) + result: (self_t - other_t * result) / other_p + +- name: div.Scalar(Tensor self, Scalar other) -> Tensor + self: div_tensor_self_backward(grad, other, self.scalar_type()) + result: self_t / other + +- name: div.Tensor_mode(Tensor self, Tensor other, *, str? rounding_mode) -> Tensor + self: div_tensor_self_backward(grad, other, self.scalar_type(), rounding_mode) + other: div_tensor_other_backward(grad, self, other, rounding_mode) + result: "rounding_mode.has_value() ? result.new_zeros_symint(result.sym_sizes()) : self_t / other_p - other_t * (self_p / other_p) / other_p" + +- name: div.Scalar_mode(Tensor self, Scalar other, *, str? rounding_mode) -> Tensor + self: div_tensor_self_backward(grad, other, self.scalar_type(), rounding_mode) + result: "rounding_mode.has_value() ? result.new_zeros_symint(result.sym_sizes()) : self_t / other" + +- name: dot(Tensor self, Tensor tensor) -> Tensor + self: grad * tensor.conj() + tensor: grad * self.conj() + result: at::dot(self_t, tensor_p) + at::dot(self_p, tensor_t) + +- name: vdot(Tensor self, Tensor other) -> Tensor + self: grad.conj() * other + other: grad * self + result: at::vdot(self_t, other_p) + at::vdot(self_p, other_t) + +- name: _fused_dropout(Tensor self, float p, Generator? generator=None) -> (Tensor, Tensor) + self: _fused_dropout_backward(grad, result1, p) + +- name: native_dropout(Tensor input, float p, bool? train) -> (Tensor, Tensor) + input: "GradMode::is_enabled() ? infinitely_differentiable_native_dropout_backward(grad, result1, (!train.has_value() || !train.value() ? 1 : (p == 1 ? 0.0 : 1.0 / (1.0 - p)))) : native_dropout_backward(grad, result1, (!train.has_value() || !train.value() ? 1 : (p == 1 ? 0.0 : 1.0 / (1.0 - p))))" + result0: "(!train.has_value() || train.value()) ? (p == 1 ? 0.0 : 1.0 / (1.0 - p)) * input_t * result1 : input_t" + +- name: native_dropout_backward(Tensor grad_output, Tensor mask, float scale) -> Tensor + grad_output: "native_dropout_double_backward(grad, grad_output, mask, scale)" + mask: 'not_implemented("native_dropout_backward: mask")' + +- name: eq_.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + self: zeros_like(self) + result: self_t.zero_() + +- name: eq_.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + self: zeros_like(self) + other: zeros_like(other) + result: self_t.zero_() + +- name: erf(Tensor self) -> Tensor + self: 2.0 / sqrt(M_PI) * exp(-(self.pow(2))) * grad + result: auto_element_wise + +- name: erfc(Tensor self) -> Tensor + self: -2.0 / sqrt(M_PI) * exp(-(self.pow(2))) * grad + result: auto_element_wise + +- name: special_erfcx(Tensor self) -> Tensor + self: (2.0 * self * result - 2.0 / sqrt(M_PI)) * grad + result: auto_element_wise + +- name: erfinv(Tensor self) -> Tensor + self: 0.5 * sqrt(M_PI) * exp(self.erfinv().pow(2)) * grad + result: auto_element_wise + +- name: exp(Tensor self) -> Tensor + self: grad * result.conj() + result: auto_element_wise + +- name: exp2(Tensor self) -> Tensor + self: grad * result.conj() * M_LN2 + result: auto_element_wise + +- name: expm1(Tensor self) -> Tensor + self: grad * (result.conj() + 1) + result: auto_element_wise + +# TODO: this derivative is not SymInt safe, need sum_to support +- name: expand(Tensor(a) self, SymInt[] size, *, bool implicit=False) -> Tensor(a) + self: at::sum_to(grad, self.sym_sizes()) + result: auto_linear + +- name: exponential_(Tensor(a!) self, float lambd=1, *, Generator? generator=None) -> Tensor(a!) + self: zeros_like(grad) + result: self_t.zero_() + +- name: fake_quantize_per_tensor_affine_cachemask(Tensor self, float scale, int zero_point, int quant_min, int quant_max) -> (Tensor output, Tensor mask) + self: fake_quantize_per_tensor_affine_cachemask_backward(grad, mask) + +- name: _fake_quantize_per_tensor_affine_cachemask_tensor_qparams(Tensor self, Tensor scale, Tensor zero_point, Tensor fake_quant_enabled, int quant_min, int quant_max) -> (Tensor output, Tensor mask) + self: fake_quantize_per_tensor_affine_cachemask_backward(grad, mask) + +- name: _fake_quantize_learnable_per_tensor_affine(Tensor self, Tensor scale, Tensor zero_point, int quant_min, int quant_max, float grad_factor=1.0) -> Tensor + self, scale, zero_point: "grad.defined() ? _fake_quantize_learnable_per_tensor_affine_backward(grad, self, scale, zero_point, quant_min, quant_max, grad_factor) : std::tuple()" + +- name: fake_quantize_per_channel_affine_cachemask(Tensor self, Tensor scale, Tensor zero_point, int axis, int quant_min, int quant_max) -> (Tensor output, Tensor mask) + self: fake_quantize_per_channel_affine_cachemask_backward(grad, mask) + +- name: _fake_quantize_learnable_per_channel_affine(Tensor self, Tensor scale, Tensor zero_point, int axis, int quant_min, int quant_max, float grad_factor=1.0) -> Tensor + self, scale, zero_point: "grad.defined() ? _fake_quantize_learnable_per_channel_affine_backward(grad, self, scale, zero_point, axis, quant_min, quant_max, grad_factor) : std::tuple()" + +- name: _fused_moving_avg_obs_fq_helper(Tensor self, Tensor observer_on, Tensor fake_quant_on, Tensor(a!) running_min, Tensor(b!) running_max, Tensor(c!) scale, Tensor(d!) zero_point, float averaging_const, int quant_min, int quant_max, int ch_axis, bool per_row_fake_quant=False, bool symmetric_quant=False) -> (Tensor output, Tensor mask) + self: fake_quantize_per_tensor_affine_cachemask_backward(grad, mask) + +- name: fill.Scalar(Tensor self, Scalar value) -> Tensor + self: zeros_like(grad) + result: at::fill(self_t, 0) + +- name: fill.Tensor(Tensor self, Tensor value) -> Tensor + self: zeros_like(grad) + value: grad.sum() + result: at::fill(self_t, value_t) + +- name: fill_.Scalar(Tensor(a!) self, Scalar value) -> Tensor(a!) + self: zeros_like(grad) + result: self_t.fill_(0) + +- name: fill_.Tensor(Tensor(a!) self, Tensor value) -> Tensor(a!) + self: zeros_like(grad) + value: grad.sum() + result: self_t.fill_(value_t) + +- name: floor(Tensor self) -> Tensor + self: zeros_like(grad) + result: auto_element_wise + +- name: fmod.Scalar(Tensor self, Scalar other) -> Tensor + self: grad + result: auto_element_wise + +- name: fmod.Tensor(Tensor self, Tensor other) -> Tensor + self: grad + other: -grad * self.div(other, /*rounding_mode=*/"trunc") + result: self_t - other_t * self_p.div(other_p, /*rounding_mode=*/"trunc") + +- name: frac(Tensor self) -> Tensor + self: grad + result: self_t + +- name: frexp.Tensor(Tensor self) -> (Tensor mantissa, Tensor exponent) + self: grad / exponent.exp2() + mantissa: self_t / exponent.exp2() + +- name: gather(Tensor self, int dim, Tensor index, *, bool sparse_grad=False) -> Tensor + self: gather_backward(grad, self, dim, index, sparse_grad) + index: non_differentiable + result: auto_linear + +- name: ge_.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + self: zeros_like(self) + result: self_t.zero_() + +- name: ge_.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + self: zeros_like(self) + other: zeros_like(other) + result: self_t.zero_() + +- name: geometric_(Tensor(a!) self, float p, *, Generator? generator=None) -> Tensor(a!) + self: zeros_like(grad) + result: self_t.zero_() + +- name: geqrf(Tensor self) -> (Tensor a, Tensor tau) + self: not_implemented("geqrf") + +- name: indices(Tensor(a) self) -> Tensor(a) + output_differentiability: [False] + +- name: _indices(Tensor(a) self) -> Tensor(a) + output_differentiability: [False] + +- name: crow_indices(Tensor(a) self) -> Tensor(a) + output_differentiability: [False] + +- name: col_indices(Tensor(a) self) -> Tensor(a) + output_differentiability: [False] + +- name: ccol_indices(Tensor(a) self) -> Tensor(a) + output_differentiability: [False] + +- name: row_indices(Tensor(a) self) -> Tensor(a) + output_differentiability: [False] + +- name: grid_sampler_2d(Tensor input, Tensor grid, int interpolation_mode, int padding_mode, bool align_corners) -> Tensor + input, grid: "grad.defined() ? grid_sampler_2d_backward(grad, input, grid, interpolation_mode, padding_mode, align_corners, grad_input_mask) : std::tuple()" + +- name: grid_sampler_2d_backward(Tensor grad_output, Tensor input, Tensor grid, int interpolation_mode, int padding_mode, bool align_corners, bool[2] output_mask) -> (Tensor, Tensor) + grad_output, input, grid: grid_sampler_2d_double_backward(grads[0], grads[1], grad_output, input, grid, interpolation_mode, padding_mode, align_corners, grad_input_mask) + +- name: grid_sampler_3d(Tensor input, Tensor grid, int interpolation_mode, int padding_mode, bool align_corners) -> Tensor + input, grid: "grad.defined() ? grid_sampler_3d_backward(grad, input, grid, interpolation_mode, padding_mode, align_corners, grad_input_mask) : std::tuple()" + +- name: grid_sampler_3d_backward(Tensor grad_output, Tensor input, Tensor grid, int interpolation_mode, int padding_mode, bool align_corners, bool[2] output_mask) -> (Tensor, Tensor) + grad_output, input, grid: grid_sampler_3d_double_backward(grads[0], grads[1], grad_output, input, grid, interpolation_mode, padding_mode, align_corners, grad_input_mask) + +# See NOTE [ grid_sample CPU fallback ] +- name: _grid_sampler_2d_cpu_fallback(Tensor input, Tensor grid, int interpolation_mode, int padding_mode, bool align_corners) -> Tensor + input, grid: "grad.defined() ? _grid_sampler_2d_cpu_fallback_backward(grad, input, grid, interpolation_mode, padding_mode, align_corners) : std::tuple()" + +- name: _grid_sampler_2d_cpu_fallback_backward(Tensor grad_output, Tensor input, Tensor grid, int interpolation_mode, int padding_mode, bool align_corners) -> (Tensor, Tensor) + grad_output, input, grid: grid_sampler_2d_double_backward(grads[0], grads[1], grad_output, input, grid, interpolation_mode, padding_mode, align_corners, grad_input_mask) + +- name: gt_.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + self: zeros_like(self) + result: self_t.zero_() + +- name: gt_.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + self: zeros_like(self) + other: zeros_like(other) + result: self_t.zero_() + +- name: hardsigmoid(Tensor self) -> Tensor + self: hardsigmoid_backward(grad, self) + result: auto_element_wise + +- name: histc(Tensor self, int bins=100, Scalar min=0, Scalar max=0) -> Tensor + output_differentiability: [False] + +- name: hardswish(Tensor self) -> Tensor + self: hardswish_backward(grad, self) + result: auto_element_wise + +- name: hardswish_backward(Tensor grad_output, Tensor self) -> Tensor + grad_output: hardswish_backward(grad, self) + self: at::where(at::logical_and(-3.0 < self, self < 3.0), grad * grad_output / 3.0, at::zeros({}, self.options())) + result: "hardswish_backward(grad_output_t, self_p) + + at::where(at::logical_and(-3.0 < self_p, self_p < 3.0), self_t * grad_output_p / 3.0, at::zeros({}, self_p.options()))" + +- name: hypot(Tensor self, Tensor other) -> Tensor + self: grad * self / result + other: grad * other / result + result: self_t * self_p / result + other_t * other_p / result + +- name: i0(Tensor self) -> Tensor + self: grad * at::special_i1(self) + result: auto_element_wise + +- name: special_i0e(Tensor self) -> Tensor + self: grad * (at::special_i1e(self) - self.sgn() * result) + result: auto_element_wise + +- name: special_i1(Tensor self) -> Tensor + self: i1_backward(grad, self, result) + result: auto_element_wise + +- name: special_i1e(Tensor self) -> Tensor + self: i1e_backward(grad, self, result) + result: auto_element_wise + +- name: igamma(Tensor self, Tensor other) -> Tensor + self: 'not_implemented("igamma: input")' + other: grad * exp((self - 1) * log(other) - other - lgamma(self)) + +- name: igammac(Tensor self, Tensor other) -> Tensor + self: 'not_implemented("igammac: input")' + other: -grad * exp((self - 1) * log(other) - other - lgamma(self)) + +- name: index.Tensor(Tensor self, Tensor?[] indices) -> Tensor + self: index_backward(grad.new_zeros_symint(self.sym_sizes(), self.options()), indices, grad) + result: auto_linear + +- name: _unsafe_index.Tensor(Tensor self, Tensor?[] indices) -> Tensor + self: at::_unsafe_index_put(grad.new_zeros_symint(self.sym_sizes(), self.options()), indices, grad, true) + result: auto_linear + +- name: _unsafe_masked_index(Tensor self, Tensor mask, Tensor?[] indices, Scalar fill) -> Tensor + self: at::_unsafe_masked_index_put_accumulate(grad.new_zeros_symint(self.sym_sizes(), self.options()), mask, indices, grad) + mask: non_differentiable + result: _unsafe_masked_index(self_t, mask, indices, 0) + +- name: _unsafe_masked_index_put_accumulate(Tensor self, Tensor mask, Tensor?[] indices, Tensor values) -> Tensor + self: grad + mask: non_differentiable + values: at::_unsafe_masked_index(grad, mask, indices, 0) + result: at::_unsafe_masked_index_put_accumulate(self_t, mask, indices, values_t) + +- name: index_add(Tensor self, int dim, Tensor index, Tensor source, *, Scalar alpha=1) -> Tensor + self: grad + # The case source.dim() == 0 is necessary to support scalar tensors of the form + # source.dim() == 0 and index.dim() == 1 and index.size() == (1,), + # This is because source is not broadcastable to index, as source.dim() < index.dim() + source: "maybe_multiply(source.dim() > 0 ? grad.index_select(dim, index).expand_as(source) : grad.index_select(dim, index.squeeze(0)), alpha)" + index: non_differentiable + result: at::index_add(self_t, dim, index, maybe_multiply(source_t, alpha)) + +- name: index_reduce(Tensor self, int dim, Tensor index, Tensor source, str reduce, *, bool include_self=True) -> Tensor + self, source: index_reduce_backward(grad, self, dim, index, source, reduce, include_self, result) + index: non_differentiable + +- name: index_copy(Tensor self, int dim, Tensor index, Tensor source) -> Tensor + self: grad.index_fill(dim, index, 0) + # The case source.dim() == 0 is necessary to support scalar tensors of the form + # source.dim() == 0 and index.dim() == 1 and index.size() == (1,), + # This is because source is not broadcastable to index, as source.dim() < index.dim() + source: "source.dim() > 0 ? grad.index_select(dim, index).expand_as(source) : grad.index_select(dim, index.squeeze(0))" + index: non_differentiable + result: self_t.index_copy(dim, index, source_t) + +- name: index_fill.int_Scalar(Tensor self, int dim, Tensor index, Scalar value) -> Tensor + self: grad.index_fill(dim, index, 0) + index: non_differentiable + result: self_t.index_fill(dim, index, 0) + +- name: index_fill.int_Tensor(Tensor self, int dim, Tensor index, Tensor value) -> Tensor + self: grad.index_fill(dim, index, 0) + value: grad.index_select(dim, std::get<0>(at::_unique(index, /*sorted=*/false))).sum() + index: non_differentiable + result: self_t.index_fill(dim, index, value_t) + +- name: index_put(Tensor self, Tensor?[] indices, Tensor values, bool accumulate=False) -> Tensor + self: "accumulate ? grad : grad.index_put(indices, zeros_like(values), false)" + values: grad.index(indices) + result: self_t.index_put(indices, values_t, accumulate) + +- name: _unsafe_index_put(Tensor self, Tensor?[] indices, Tensor values, bool accumulate=False) -> Tensor + self: "accumulate ? grad : at::_unsafe_index_put(grad, indices, zeros_like(values), false)" + values: at::_unsafe_index(grad, indices) + result: at::_unsafe_index_put(self_t, indices, values_t, accumulate) + +- name: _index_put_impl_(Tensor(a!) self, Tensor?[] indices, Tensor values, bool accumulate=False, bool unsafe=False) -> Tensor(a!) + self: "accumulate ? grad : grad.index_put(indices, zeros_like(values), false)" + values: grad.index(indices) + result: at::_index_put_impl_(self_t, indices, values_t, accumulate, unsafe) + +- name: index_select(Tensor self, int dim, Tensor index) -> Tensor + self: index_select_backward_symint(grad, self.sym_sizes(), dim, index) + index: non_differentiable + result: auto_linear + +- name: linalg_inv_ex(Tensor A, *, bool check_errors=False) -> (Tensor inverse, Tensor info) + A: -at::matmul(inverse.mH(), at::matmul(grad, inverse.mH())) + inverse: -at::matmul(at::matmul(inverse, A_t), inverse) + output_differentiability: [True, False] + +- name: linalg_pinv.atol_rtol_tensor(Tensor self, *, Tensor? atol=None, Tensor? rtol=None, bool hermitian=False) -> Tensor + self: pinv_backward(grad, result, self) + result: pinv_jvp(self_p, result, self_t) + +- name: isnan(Tensor self) -> Tensor + self: non_differentiable + +- name: kthvalue(Tensor self, SymInt k, int dim=-1, bool keepdim=False) -> (Tensor values, Tensor indices) + self: value_selecting_reduction_backward_symint(grad, dim, indices, self.sym_sizes(), keepdim) + values: gather_with_keepdimed_indices(self_t, dim, indices, keepdim) + +- name: ldexp.Tensor(Tensor self, Tensor other) -> Tensor + self: grad * at::pow(2, other).conj() + other: grad * result.conj() * M_LN2 + result: self_t * at::pow(2, other_p) + other_t * result * M_LN2 + +- name: le_.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + self: zeros_like(self) + result: self_t.zero_() + +- name: le_.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + self: zeros_like(self) + other: zeros_like(other) + result: self_t.zero_() + +- name: lerp.Scalar(Tensor self, Tensor end, Scalar weight) -> Tensor + self: "weight.isComplex() ? grad * (1 - weight.conj().toComplexDouble()) : grad * (1 - weight.toDouble())" + end: grad * weight.conj() + result: at::lerp(self_t, end_t, weight) + +- name: lerp.Tensor(Tensor self, Tensor end, Tensor weight) -> Tensor + self: grad * (1 - weight).conj() + end: grad * weight.conj() + weight: grad * (end - self).conj() + result: at::lerp(self_t, end_t, weight_p) + weight_t * (end_p - self_p) + +- name: lgamma(Tensor self) -> Tensor + self: grad * digamma(self) + result: auto_element_wise + +- name: digamma(Tensor self) -> Tensor + self: grad * polygamma(1, self) + result: auto_element_wise + +- name: polygamma(int n, Tensor self) -> Tensor + self: grad * polygamma(n + 1, self) + result: auto_element_wise + +- name: polygamma_(Tensor(a!) self, int n) -> Tensor(a!) + self: grad * polygamma(n + 1, self) + result: self_t.mul_(polygamma(n + 1, original_self_p)) + +- name: log(Tensor self) -> Tensor + self: grad.div(self.conj()) + result: auto_element_wise + +- name: log10(Tensor self) -> Tensor + self: grad / (self.conj() * 2.3025850929940456) + result: auto_element_wise + +- name: log1p(Tensor self) -> Tensor + self: log1p_backward(grad, self) + result: auto_element_wise + +- name: log2(Tensor self) -> Tensor + self: grad / (self.conj() * 0.6931471805599453) + result: auto_element_wise + +- name: logaddexp(Tensor self, Tensor other) -> Tensor + self: grad / (1 + exp(other - self)).conj() + other: grad / (1 + exp(self - other)).conj() + result: self_t / (1 + exp(other_p - self_p)) + other_t / (1 + exp(self_p - other_p)) + +- name: logaddexp2(Tensor self, Tensor other) -> Tensor + self: grad / (1 + pow(2, other - self)) + other: grad / (1 + pow(2, self - other)) + result: self_t / (1 + pow(2, other_p - self_p)) + other_t / (1 + pow(2, self_p - other_p)) + +# Note [Gradient formula for xlogy at x = 0, y <= 0] +# x * log(y) is not defined at y <= 0, so we cannot even talk about differentiability +# Now, xlogy(0, y) = 0 by definition. +# This does not make it differentiable as it's not defined in a neighbourhood of a point +# (0, y) when y <= 0. +# Now, when a function is non-differentiable, sometimes we return "a relatively sensible value" +# In this case, as per the discussion in https://github.com/pytorch/pytorch/issues/80770, we choose +# this value to be zero, which is the directional derivative along the line {x = 0}. +- name: xlogy.Tensor(Tensor self, Tensor other) -> Tensor + self: at::xlogy(grad, other).masked_fill((self == 0.) & (other <= 0.), 0.) + other: grad * self / other + result: at::xlogy(self_t, other_p).masked_fill((self_p == 0.) & (other_p <= 0.), 0.) + other_t * self_p / other_p + +- name: xlogy.Scalar_Self(Scalar self, Tensor other) -> Tensor + other: grad * self / other + result: auto_element_wise + +- name: xlogy.Scalar_Other(Tensor self, Scalar other) -> Tensor + self: "other.toDouble() > 0. + ? at::xlogy(grad, other) + : at::xlogy(grad, other).masked_fill(self == 0., 0.)" + result: auto_element_wise + +# See Note [Gradient formula for xlogy at x = 0, y <= 0] +# Same here but with y <= -1 +- name: special_xlog1py(Tensor self, Tensor other) -> Tensor + self: at::special_xlog1py(grad, other).masked_fill((self == 0.) & (other <= -1.), 0.) + other: grad * self / (other + 1) + result: at::special_xlog1py(self_t, other_p).masked_fill((self_p == 0.) & (other_p <= -1.), 0.) + other_t * self_p / (other_p + 1) + +- name: special_xlog1py.self_scalar(Scalar self, Tensor other) -> Tensor + other: grad * self / (other + 1) + result: auto_element_wise + +- name: special_xlog1py.other_scalar(Tensor self, Scalar other) -> Tensor + self: "other.toDouble() > -1. + ? at::special_xlog1py(grad, other) + : at::special_xlog1py(grad, other).masked_fill(self == 0., 0.)" + result: auto_element_wise + +- name: special_zeta(Tensor self, Tensor other) -> Tensor + self: not_implemented("zeta") + other: grad * -self * special_zeta(self + 1., other) + +- name: special_zeta.self_scalar(Scalar self, Tensor other) -> Tensor + other: grad * -self * special_zeta(self.toDouble() + 1., other) + +- name: special_zeta.other_scalar(Tensor self, Scalar other) -> Tensor + self: not_implemented("zeta") + +- name: log_normal_(Tensor(a!) self, float mean=1, float std=2, *, Generator? generator=None) -> Tensor(a!) + self: zeros_like(grad) + result: self_t.zero_() + +- name: logsumexp(Tensor self, int[1] dim, bool keepdim=False) -> Tensor + self: logsumexp_backward(grad, self, result, dim, keepdim) + result: logsumexp_jvp(self_p, self_t, dim, keepdim) + +- name: linalg_lstsq(Tensor self, Tensor b, float? rcond=None, *, str? driver=None) -> (Tensor solution, Tensor residuals, Tensor rank, Tensor singular_values) + self, b: linalg_lstsq_backward(grads[0], grads[1], self, b, solution, grad_input_mask) + solution: linalg_lstsq_solution_jvp(self_p, b_p, self_t, b_t) + residuals: linalg_lstsq_residuals_jvp(self_p, b_p, self_t, b_t, solution, residuals) + output_differentiability: [True, True, False, False] + +- name: lt_.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + self: zeros_like(self) + result: self_t.zero_() + +- name: lt_.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + self: zeros_like(self) + other: zeros_like(other) + result: self_t.zero_() + +- name: linalg_lu_factor_ex(Tensor A, *, bool pivot=True, bool check_errors=False) -> (Tensor LU, Tensor pivots, Tensor info) + A: lu_factor_ex_backward(grad, LU, pivots, pivot) + LU: lu_factor_ex_jvp(A_t, LU, pivots, pivot) + output_differentiability: [True, False, False] + +- name: linalg_lu(Tensor A, *, bool pivot=True) -> (Tensor P, Tensor L, Tensor U) + A: linalg_lu_backward(grad_L, grad_U, P, L, U, pivot) + L: std::get<0>(linalg_lu_jvp(A_t, P, L, U, pivot)) + U: std::get<1>(linalg_lu_jvp(A_t, P, L, U, pivot)) + output_differentiability: [False, True, True] + +- name: linalg_lu_solve(Tensor LU, Tensor pivots, Tensor B, *, bool left=True, bool adjoint=False) -> Tensor + LU: linalg_lu_solve_LU(grad, LU, pivots, result, left, adjoint) + B: "at::linalg_lu_solve(LU, pivots, grad, left, !adjoint)" + result: linalg_lu_solve_jvp(result, LU_p, pivots, LU_t, B_t, left, adjoint) + +- name: lu_unpack(Tensor LU_data, Tensor LU_pivots, bool unpack_data=True, bool unpack_pivots=True) -> (Tensor P, Tensor L, Tensor U) + LU_data: lu_unpack_backward(grad_L, grad_U, LU_data.sym_size(-2), LU_data.sym_size(-1)) + LU_pivots: non_differentiable + L: "LU_data_t.sym_size(-2) >= LU_data_t.sym_size(-1) ? LU_data_t.tril_symint(-1) : LU_data_t.narrow_symint(-1, 0, LU_data_t.sym_size(-2)).tril_symint(-1)" + U: "LU_data_t.sym_size(-1) >= LU_data_t.sym_size(-2) ? LU_data_t.triu_symint() : LU_data_t.narrow_symint(-2, 0, LU_data_t.sym_size(-1)).triu_symint()" + output_differentiability: [False, True, True] + +- name: masked_fill.Scalar(Tensor self, Tensor mask, Scalar value) -> Tensor + self: grad.masked_fill(mask, 0) + mask: non_differentiable + result: self_t.masked_fill(mask, 0) + +- name: masked_fill.Tensor(Tensor self, Tensor mask, Tensor value) -> Tensor + self: grad.masked_fill(mask, 0) + value: masked_fill_backward(grad, mask) + mask: non_differentiable + result: self_t.masked_fill(mask, value_t) + +- name: masked_scatter(Tensor self, Tensor mask, Tensor source) -> Tensor + self: grad.masked_fill(mask, 0) + source: masked_scatter_backward_symint(grad, mask, source.sym_sizes()) + mask: non_differentiable + result: self_t.masked_scatter(mask, source_t) + +- name: masked_scatter_backward(Tensor grad_output, Tensor mask, SymInt[] sizes) -> Tensor + grad_output: zeros_like(grad_output).masked_scatter(mask, grad) + mask: non_differentiable + result: masked_scatter_backward(grad_output_t, mask, grad_output_t.sizes()) + +- name: masked_select(Tensor self, Tensor mask) -> Tensor + self: masked_select_backward(grad, self, mask) + mask: non_differentiable + result: auto_linear + +- name: linalg_matrix_exp(Tensor self) -> Tensor + self: linalg_matrix_exp_differential(self, grad, /*adjoint*/ true) + result: linalg_matrix_exp_differential(self_p, self_t, /*adjoint*/ false) + +- name: max.dim(Tensor self, int dim, bool keepdim=False) -> (Tensor values, Tensor indices) + self: value_selecting_reduction_backward_symint(grad, dim, indices, self.sym_sizes(), keepdim) + values: gather_with_keepdimed_indices(self_t, dim, indices, keepdim) + +- name: max(Tensor self) -> Tensor + self: evenly_distribute_backward(grad, self, result) + result: evenly_read_jvp(self_t, self_p, result) + +- name: maximum(Tensor self, Tensor other) -> Tensor + self: at::where(self == other, grad / 2, grad).masked_fill_(self < other, 0) + other: at::where(self == other, grad / 2, grad).masked_fill_(self > other, 0) + result: other_t + at::where(self_p == other_p, at::scalar_tensor(0.5, result.options()), (self_p > other_p).to(result.scalar_type())) * (self_t - other_t) + +- name: fmax(Tensor self, Tensor other) -> Tensor + self: grad.masked_fill((self >= other).logical_or_(other.isnan()).logical_not_(), 0) + other: grad.masked_fill((self >= other).logical_or_(other.isnan()), 0) + result: other_t + (self_p > other_p).logical_or_(other_p.isnan()) * (self_t - other_t) + +- name: mean(Tensor self, *, ScalarType? dtype=None) -> Tensor + dispatch: + Default: + self: grad.expand_symint(self.sym_sizes()) / self.sym_numel() + result: auto_linear + AutogradNestedTensor: + # TODO: replace this with grad.expand_as(self) / self.sym_numel() when that is supported + self: (ones_like(self) * grad) / self.sym_numel() + result: auto_linear + +- name: mean.dim(Tensor self, int[1]? dim, bool keepdim=False, *, ScalarType? dtype=None) -> Tensor + self: mean_backward(grad, self.sym_sizes(), dim, self.sym_numel(), keepdim) + result: auto_linear + +- name: median(Tensor self) -> Tensor + self: evenly_distribute_backward(grad, self, result) + result: evenly_read_jvp(self_t, self_p, result) + +- name: nanmedian(Tensor self) -> Tensor + self: evenly_distribute_backward(grad, self, result) + result: evenly_read_jvp(self_t, self_p, result) + +# This is in theory incorrect in the following case: +# sorted list: [..., a, b, b, ..., b, b, c, ...] with median = b and the value +# | at middle position of the +# | list between two `b`s. E.g., +# | +# ^the middle position +# The gradient exists and is essentially 0 in this case. +# +# In case where the middle position is at the boundary of `b` range, e.g., +# sorted list: [..., a, b, b, ..., b, b, c, ...] +# | +# ^the middle position +# The backward implementation is correct in the sense that it returns the +# subgradient on one side. +- name: median.dim(Tensor self, int dim, bool keepdim=False) -> (Tensor values, Tensor indices) + self: value_selecting_reduction_backward_symint(grad, dim, indices, self.sym_sizes(), keepdim) + values: gather_with_keepdimed_indices(self_t, dim, indices, keepdim) + +- name: nanmedian.dim(Tensor self, int dim, bool keepdim=False) -> (Tensor values, Tensor indices) + self: value_selecting_reduction_backward_symint(grad, dim, indices, self.sym_sizes(), keepdim) + values: gather_with_keepdimed_indices(self_t, dim, indices, keepdim) + +- name: min.dim(Tensor self, int dim, bool keepdim=False) -> (Tensor values, Tensor indices) + self: value_selecting_reduction_backward_symint(grad, dim, indices, self.sym_sizes(), keepdim) + values: gather_with_keepdimed_indices(self_t, dim, indices, keepdim) + +- name: min(Tensor self) -> Tensor + self: evenly_distribute_backward(grad, self, result) + result: evenly_read_jvp(self_t, self_p, result) + +- name: minimum(Tensor self, Tensor other) -> Tensor + self: at::where(self == other, grad / 2, grad).masked_fill_(self > other, 0) + other: at::where(self == other, grad / 2, grad).masked_fill_(self < other, 0) + result: other_t + at::where(self_p == other_p, at::scalar_tensor(0.5, result.options()), (self_p < other_p).to(result.scalar_type())) * (self_t - other_t) + +- name: fmin(Tensor self, Tensor other) -> Tensor + self: grad.masked_fill((self <= other).logical_or_(other.isnan()).logical_not_(), 0) + other: grad.masked_fill((self <= other).logical_or_(other.isnan()), 0) + result: other_t + (self_p <= other_p).logical_or_(other_p.isnan()) * (self_t - other_t) + +- name: amax(Tensor self, int[1] dim=[], bool keepdim=False) -> Tensor + self: scale_grad_by_count(restore_reduced_dims(grad, dim, keepdim), restore_reduced_dims(result, dim, keepdim) == self, dim) + result: amaxamin_jvp(self_p, self_t, result, dim, keepdim) + +- name: amin(Tensor self, int[1] dim=[], bool keepdim=False) -> Tensor + self: scale_grad_by_count(restore_reduced_dims(grad, dim, keepdim), restore_reduced_dims(result, dim, keepdim) == self, dim) + result: amaxamin_jvp(self_p, self_t, result, dim, keepdim) + +- name: aminmax(Tensor self, *, int? dim=None, bool keepdim=False) -> (Tensor min, Tensor max) + self: aminmax_backward(self, dim, keepdim, grad_min, grad_max, min, max) + min: aminmax_jvp(self_p, self_t, min, dim, keepdim) + max: aminmax_jvp(self_p, self_t, max, dim, keepdim) + +- name: mm(Tensor self, Tensor mat2) -> Tensor + self: mm_mat1_backward(grad, mat2, self.sym_sizes(), self.sym_strides(), self.layout(), 1) + mat2: mm_mat2_backward(grad, self, mat2.sym_sizes(), mat2.sym_strides(), mat2.layout(), 1) + result: at::mm(self_t, mat2_p) + at::mm(self_p, mat2_t) + +- name: _grouped_mm(Tensor self, Tensor mat2, Tensor? offs=None, Tensor? bias=None, ScalarType? out_dtype=None) -> Tensor + self: _grouped_mm_mat1_backward(grad, mat2, self.sym_sizes(), self.sym_strides(), self.layout(), offs, 1) + mat2: _grouped_mm_mat2_backward(grad, self, mat2.sym_sizes(), mat2.sym_strides(), mat2.layout(), offs, 1) + +- name: mode(Tensor self, int dim=-1, bool keepdim=False) -> (Tensor values, Tensor indices) + self: value_selecting_reduction_backward_symint(grad, dim, indices, self.sym_sizes(), keepdim) + values: gather_with_keepdimed_indices(self_t, dim, indices, keepdim) + +- name: mul.Tensor(Tensor self, Tensor other) -> Tensor + self: mul_tensor_backward(grad, other, self.scalar_type()) + other: mul_tensor_backward(grad, self, other.scalar_type()) + result: other_t * self_p + self_t * other_p + +- name: mul.Scalar(Tensor self, Scalar other) -> Tensor + self: mul_tensor_backward(grad, other, self.scalar_type()) + result: self_t * other + +- name: mv(Tensor self, Tensor vec) -> Tensor + self: grad.ger(vec.conj()) + vec: self.conj().t().mv(grad) + result: mv(self_t, vec_p) + mv(self_p, vec_t) + +- name: mvlgamma(Tensor self, int p) -> Tensor + self: mvlgamma_backward(grad, self, p) + result: auto_element_wise + +- name: nan_to_num(Tensor self, float? nan=None, float? posinf=None, float? neginf=None) -> Tensor + self: grad * at::isfinite(self) + result: auto_element_wise + +- name: native_batch_norm(Tensor input, Tensor? weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, float momentum, float eps) -> (Tensor, Tensor, Tensor) + input, weight, bias: "grad.defined() ? native_batch_norm_backward(grad, input, weight, running_mean, running_var, result1, result2, training, eps, grad_input_mask) : std::tuple()" + result0: batch_norm_jvp(input_p, input_t, weight_p, weight_t, bias_p, bias_t, running_mean, running_var, result1, result2, training, eps) + +- name: _native_batch_norm_legit(Tensor input, Tensor? weight, Tensor? bias, Tensor(a!) running_mean, Tensor(b!) running_var, bool training, float momentum, float eps) -> (Tensor, Tensor, Tensor) + input, weight, bias: "grad.defined() ? native_batch_norm_backward(grad, input, weight, running_mean, running_var, result1, result2, training, eps, grad_input_mask) : std::tuple()" + result0: batch_norm_jvp(input_p, input_t, weight_p, weight_t, bias_p, bias_t, running_mean, running_var, result1, result2, training, eps) + +- name: _native_batch_norm_legit_no_training(Tensor input, Tensor? weight, Tensor? bias, Tensor running_mean, Tensor running_var, float momentum, float eps) -> (Tensor, Tensor, Tensor) + input, weight, bias: "grad.defined() ? native_batch_norm_backward(grad, input, weight, running_mean, running_var, result1, result2, /*training=*/false, eps, grad_input_mask) : std::tuple()" + result0: batch_norm_jvp(input_p, input_t, weight_p, weight_t, bias_p, bias_t, running_mean, running_var, result1, result2, /*training=*/false, eps) + +- name: _native_batch_norm_legit.no_stats(Tensor input, Tensor? weight, Tensor? bias, bool training, float momentum, float eps) -> (Tensor, Tensor, Tensor) + input, weight, bias: "grad.defined() ? native_batch_norm_backward(grad, input, weight, Tensor(), Tensor(), result1, result2, training, eps, grad_input_mask) : std::tuple()" + result0: batch_norm_jvp(input_p, input_t, weight_p, weight_t, bias_p, bias_t, Tensor(), Tensor(), result1, result2, training, eps) + +- name: native_batch_norm_backward(Tensor grad_out, Tensor input, Tensor? weight, Tensor? running_mean, Tensor? running_var, Tensor? save_mean, Tensor? save_invstd, bool train, float eps, bool[3] output_mask) -> (Tensor, Tensor, Tensor) + input, weight, grad_out: batchnorm_double_backward(input, weight, grads[0], grads[1], grads[2], grad_out, running_mean, running_var, train, eps, save_mean, save_invstd, grad_input_mask) + save_mean: not_implemented("native_batch_norm_backward save_mean") + save_invstd: not_implemented("native_batch_norm_backward save_invstd") + +- name: native_layer_norm(Tensor input, SymInt[] normalized_shape, Tensor? weight, Tensor? bias, float eps) -> (Tensor, Tensor, Tensor) + input, weight, bias: "grad.defined() ? native_layer_norm_backward_symint(grad, input, normalized_shape, result1, result2, weight, bias, grad_input_mask) : std::tuple()" + result0: layer_norm_jvp(input_p, input_t, weight_p, weight_t, bias_p, bias_t, result1, result2, normalized_shape) + +- name: native_layer_norm_backward(Tensor grad_out, Tensor input, SymInt[] normalized_shape, Tensor mean, Tensor rstd, Tensor? weight, Tensor? bias, bool[3] output_mask) -> (Tensor, Tensor, Tensor) + input, weight, grad_out: layer_norm_double_backward(input, weight, grads[0], grads[1], grads[2], grad_out, mean, rstd, normalized_shape, grad_input_mask) + bias: Tensor() + mean: not_implemented("native_layer_norm_backward mean") + rstd: not_implemented("native_layer_norm_backward rstd") + +- name: _fused_rms_norm(Tensor input, int[] normalized_shape, Tensor? weight, float? eps) -> (Tensor, Tensor) + input, weight: "GradMode::is_enabled() || grads[1].defined() ? infinitely_differentiable_native_rms_norm_backward(grads[0], grads[1], input, normalized_shape, result1, weight, grad_input_mask) : (grads[0].defined() ? _fused_rms_norm_backward(grads[0], input, normalized_shape, result1, weight, grad_input_mask) : std::tuple())" + result0: rms_norm_jvp(input_p, input_t, weight_p, weight_t, result1, normalized_shape) + result1: rms_norm_rstd_jvp(input_p, input_t, result1, normalized_shape) + +- name: native_group_norm(Tensor input, Tensor? weight, Tensor? bias, SymInt N, SymInt C, SymInt HxW, int group, float eps) -> (Tensor, Tensor, Tensor) + input, weight, bias: "GradMode::is_enabled() || grads[1].defined() || grads[2].defined() ? infinitely_differentiable_native_group_norm_backward(grads[0], grads[1], grads[2], input, result1, result2, weight, N, C, HxW, group, eps, grad_input_mask) : (grads[0].defined() ? native_group_norm_backward_symint(grads[0].device().is_xpu() ? grads[0] : grads[0].contiguous(grads[0].device().is_cpu() ? input.suggest_memory_format() : c10::MemoryFormat::Contiguous), input.device().is_xpu() ? input : input.contiguous(input.device().is_cpu() ? input.suggest_memory_format() : c10::MemoryFormat::Contiguous), result1, result2, weight, N, C, HxW, group, grad_input_mask) : std::tuple())" + result0: group_norm_jvp(input_p, input_t, weight_p, weight_t, bias_p, bias_t, result1, result2, group) + result1: group_norm_mean_jvp(input_t, result1, group) + result2: group_norm_invstd_jvp(input_p, input_t, result1, result2, group) + +- name: ne_.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!) + self: zeros_like(self) + result: self_t.zero_() + +- name: ne_.Tensor(Tensor(a!) self, Tensor other) -> Tensor(a!) + self: zeros_like(self) + other: zeros_like(other) + result: self_t.zero_() + +- name: neg(Tensor self) -> Tensor + self: grad.neg() + result: auto_element_wise + +- name: _batch_norm_with_update(Tensor input, Tensor? weight, Tensor? bias, Tensor(a!) running_mean, Tensor(b!) running_var, float momentum, float eps) -> (Tensor, Tensor, Tensor, Tensor) + input, weight, bias: "grad.defined() ? batch_norm_backward(grad, input, weight, running_mean, running_var, result1, result2, /*update*/true, eps, grad_input_mask, retain_variables ? result3.clone() : result3) : std::tuple()" + result0: batch_norm_jvp(input_p, input_t, weight_p, weight_t, bias_p, bias_t, running_mean, running_var, result1, result2, true, eps) + +- name: _batch_norm_no_update(Tensor input, Tensor? weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, float momentum, float eps) -> (Tensor, Tensor, Tensor, Tensor) + input, weight, bias: "grad.defined() ? batch_norm_backward(grad, input, weight, running_mean, running_var, result1, result2, /*update*/false, eps, grad_input_mask, retain_variables ? result3.clone() : result3) : std::tuple()" + result0: batch_norm_jvp(input_p, input_t, weight_p, weight_t, bias_p, bias_t, running_mean, running_var, result1, result2, false, eps) + +- name: batch_norm_backward(Tensor grad_out, Tensor input, Tensor weight, Tensor? running_mean, Tensor? running_var, Tensor? save_mean, Tensor? save_var, bool update, float eps, bool[3] output_mask, Tensor reserve) -> (Tensor, Tensor, Tensor) + input, weight, grad_out: batchnorm_double_backward(input, weight, grads[0], grads[1], grads[2], grad_out, running_mean, running_var, update, eps, save_mean, save_var, grad_input_mask) + save_mean: not_implemented("batch_norm_backward save_mean") + save_var: not_implemented("batch_norm_backward save_var") + reserve: not_implemented("batch_norm_backward reserve") + +- name: nextafter(Tensor self, Tensor other) -> Tensor + self: not_implemented("nextafter") + other: not_implemented("nextafter") + +- name: norm.Scalar(Tensor self, Scalar p=2) -> Tensor + self: norm_backward(grad, self, p, result) + result: norm_jvp(self_p, self_t, p, result) + +- name: norm.ScalarOpt_dim(Tensor self, Scalar? p, int[1] dim, bool keepdim=False) -> Tensor + self: norm_backward(grad, self, p, result, dim, keepdim) + result: norm_jvp(self_p, self_t, p, result, dim, keepdim) + +- name: norm.ScalarOpt_dtype(Tensor self, Scalar? p, *, ScalarType dtype) -> Tensor + self: norm_backward(grad, self.to(grad.scalar_type()), p, result) + result: norm_jvp(self_p, self_t, p, result) + +- name: norm.ScalarOpt_dim_dtype(Tensor self, Scalar? p, int[1] dim, bool keepdim, *, ScalarType dtype) -> Tensor + self: norm_backward(grad, self.to(grad.scalar_type()), p, result, dim, keepdim) + result: norm_jvp(self_p, self_t, p, result, dim, keepdim) + +- name: linalg_vector_norm(Tensor self, Scalar ord=2, int[1]? dim=None, bool keepdim=False, *, ScalarType? dtype=None) -> Tensor + self: linalg_vector_norm_backward(grad, self, ord, result, dim, keepdim) + result: linalg_vector_norm_jvp(self_p, self_t, ord, result, dim, keepdim) + +- name: _pdist_forward(Tensor self, float p=2) -> Tensor + self: _pdist_backward(grad, self, p, result) + +- name: _pdist_backward(Tensor grad, Tensor self, float p, Tensor pdist) -> Tensor + grad: not_implemented("_pdist_backward") + self: not_implemented("_pdist_backward") + pdist: not_implemented("_pdist_backward") + +- name: _euclidean_dist(Tensor x1, Tensor x2) -> Tensor + x1, x2: _euclidean_dist_backward(grad, x1, x2, result) + +- name: _cdist_forward(Tensor x1, Tensor x2, float p, int? compute_mode) -> Tensor + x1: _cdist_backward(grad.contiguous(), x1, x2, p, result) + x2: _cdist_backward(grad.mT().contiguous(), x2, x1, p, result.mT().contiguous()) + +- name: _cdist_backward(Tensor grad, Tensor x1, Tensor x2, float p, Tensor cdist) -> Tensor + grad: not_implemented("_cdist_backward") + x1: not_implemented("_cdist_backward") + x2: not_implemented("_cdist_backward") + cdist: not_implemented("_cdist_backward") + +- name: normal_(Tensor(a!) self, float mean=0, float std=1, *, Generator? generator=None) -> Tensor(a!) + self: zeros_like(grad) + result: self_t.zero_() + +- name: normal.Tensor_float(Tensor mean, float std=1, *, Generator? generator=None) -> Tensor + mean: at::zeros_symint(mean.sym_sizes(), grad.options()) + result: auto_element_wise + +- name: normal.float_Tensor(float mean, Tensor std, *, Generator? generator=None) -> Tensor + std: at::zeros_symint(std.sym_sizes(), grad.options()) + result: auto_element_wise + +- name: normal.Tensor_Tensor(Tensor mean, Tensor std, *, Generator? generator=None) -> Tensor + mean: at::zeros_symint(mean.sym_sizes(), grad.options()) + std: at::zeros_symint(std.sym_sizes(), grad.options()) + result: zeros_like(mean_t) + +- name: linalg_householder_product(Tensor input, Tensor tau) -> Tensor + input, tau: householder_product_backward(grad, result, input, tau) + result: householder_product_jvp(input_t, tau_t, result, input_p, tau_p) + +- name: ormqr(Tensor self, Tensor input2, Tensor input3, bool left=True, bool transpose=False) -> Tensor + self, input2, input3: ormqr_backward(grad, result, self, input2, input3, left, transpose, grad_input_mask) + +- name: permute(Tensor(a) self, int[] dims) -> Tensor(a) + self: permute_backwards(grad, dims) + result: auto_linear + +- name: poisson(Tensor self, Generator? generator=None) -> Tensor + self: zeros_like(self) + result: auto_element_wise + +- name: pow.Tensor_Scalar(Tensor self, Scalar exponent) -> Tensor + self: pow_backward(grad, self, exponent) + result: auto_element_wise + +- name: pow.Tensor_Tensor(Tensor self, Tensor exponent) -> Tensor + self: pow_backward_self(grad, self, exponent) + exponent: pow_backward_exponent(grad, self, exponent, result) + result: (pow_backward_self(self_t.conj(), self_p, exponent_p) + pow_backward_exponent(exponent_t.conj(), self_p, exponent_p, result)).conj() + +- name: pow.Scalar(Scalar self, Tensor exponent) -> Tensor + exponent: pow_backward_exponent(grad, self, exponent, result) + result: auto_element_wise + +- name: prod(Tensor self, *, ScalarType? dtype=None) -> Tensor + self: prod_backward(grad, self.to(grad.scalar_type()), result) + result: (prod_backward(at::ones({}, result.options()).expand_as(result), self_p.to(result.scalar_type()), result) * self_t.conj()).sum().conj() + +- name: prod.dim_int(Tensor self, int dim, bool keepdim=False, *, ScalarType? dtype=None) -> Tensor + self: prod_backward(grad, self.to(grad.scalar_type()), result, dim, keepdim) + result: (prod_backward(at::ones({}, result.options()).expand_as(result), self_p.to(result.scalar_type()), result, dim, keepdim) * self_t.conj()).sum(dim, keepdim).conj() + +- name: put(Tensor self, Tensor index, Tensor source, bool accumulate=False) -> Tensor + self: "accumulate ? grad : grad.put(index, zeros_like(source), false)" + index: non_differentiable + source: grad.take(index).reshape_as(source) + result: self_t.put(index, source_t, accumulate) + +- name: linalg_qr(Tensor A, str mode='reduced') -> (Tensor Q, Tensor R) + A: linalg_qr_backward(grad_Q, grad_R, Q, R, mode) + Q, R: linalg_qr_jvp(A_t, Q, R, mode) + +- name: rad2deg(Tensor self) -> Tensor + self: rad2deg_backward(grad) + result: auto_element_wise + +- name: random_.from(Tensor(a!) self, int from, int? to, *, Generator? generator=None) -> Tensor(a!) + self: zeros_like(grad) + result: self_t.zero_() + +- name: random_.to(Tensor(a!) self, int to, *, Generator? generator=None) -> Tensor(a!) + self: zeros_like(grad) + result: self_t.zero_() + +- name: random_(Tensor(a!) self, *, Generator? generator=None) -> Tensor(a!) + self: zeros_like(grad) + result: self_t.zero_() + +- name: reciprocal(Tensor self) -> Tensor + self: -grad * (result * result).conj() + result: auto_element_wise + +- name: remainder.Scalar(Tensor self, Scalar other) -> Tensor + self: grad + result: auto_element_wise + +- name: remainder.Tensor(Tensor self, Tensor other) -> Tensor + self: grad + other: -grad * self.div(other, /*rounding_mode=*/"floor") + result: self_t - other_t * self_p.div(other_p, /*rounding_mode=*/"floor") + +- name: renorm(Tensor self, Scalar p, int dim, Scalar maxnorm) -> Tensor + self: renorm_backward(grad, self, p, dim, maxnorm) + result: renorm_jvp(self_p, self_t, p, dim, maxnorm) + +- name: repeat(Tensor self, SymInt[] repeats) -> Tensor + self: repeat_backward(grad, repeats, self.sym_sizes()) + result: auto_linear + +- name: special_entr(Tensor self) -> Tensor + self: grad * (-(1 + self.log())) + result: auto_element_wise + +- name: special_ndtri(Tensor self) -> Tensor + self: grad * std::sqrt(2 * M_PI) * (result.square() / 2).exp() + result: auto_element_wise + +- name: special_log_ndtr(Tensor self) -> Tensor + self: grad / std::sqrt(2 * M_PI) * (result + self.pow(2) / 2).neg().exp() + result: auto_element_wise + +# [Note: Sometimes view derivatives] +# The following situation applies to other operations as well. +# TODO: This note is only referenced by to_dense and to_sparse*. Make +# this more generic if it's been referenced more than once. +# +# DO NOT define a backward for reshape! +# reshape is special in that it sometimes returns a view, and sometimes not. +# Defining a backward will make codegen spit out the forward call as +# as_variable(baseType->reshape(self)), +# making it impossible (hard) to detect when it is actually a view. +# - name: reshape(Tensor self, IntArrayRef shape) + +- name: _reshape_alias(Tensor(a) self, SymInt[] size, SymInt[] stride) -> Tensor(a) + self: grad.reshape_symint(self.sym_sizes()) + result: auto_linear + +- name: round(Tensor self) -> Tensor + self: zeros_like(grad) + result: auto_element_wise + +- name: round.decimals(Tensor self, *, int decimals) -> Tensor + self: zeros_like(grad) + result: auto_element_wise + +- name: rsqrt(Tensor self) -> Tensor + self: -0.5 * grad * result.pow(3).conj() + result: auto_element_wise + +- name: scatter.src(Tensor self, int dim, Tensor index, Tensor src) -> Tensor + self: grad.scatter(dim, index, 0) + index: non_differentiable + src: grad.gather(dim, index) + result: self_t.scatter(dim, index, src_t) + +- name: scatter.value(Tensor self, int dim, Tensor index, Scalar value) -> Tensor + self: grad.scatter(dim, index, 0) + index: non_differentiable + result: self_t.scatter(dim, index, 0) + +- name: scatter_add(Tensor self, int dim, Tensor index, Tensor src) -> Tensor + self: grad + index: non_differentiable + src: grad.gather(dim, index) + result: scatter_add(self_t, dim, index, src_t) + +- name: select.int(Tensor(a) self, int dim, SymInt index) -> Tensor(a) + dispatch: + Default: + self: select_backward_symint(grad, self.sym_sizes(), dim, index) + result: auto_linear + AutogradNestedTensor: + self: _nested_select_backward_symint(grad, self, dim, index) + +- name: select_backward(Tensor grad_output, SymInt[] input_sizes, int dim, SymInt index) -> Tensor + grad_output: grad.select_symint(dim, index) + result: auto_linear + +- name: sigmoid(Tensor self) -> Tensor + self: sigmoid_backward(grad, result) + result: auto_element_wise + +- name: logit(Tensor self, float? eps=None) -> Tensor + self: "GradMode::is_enabled() ? infinitely_differentiable_logit_backward(grad, self, eps) : logit_backward(grad, self, eps)" + result: auto_element_wise + +- name: sign(Tensor self) -> Tensor + self: zeros_like(grad) + result: auto_element_wise + +- name: sgn(Tensor self) -> Tensor + self: sgn_backward(self, grad, result) + # Cannot use auto_element_wise here because the Jacobian is *not* Hermitian (in fact, it is symmetric) + # The function is not holomorphic, so there's no reason for its Jacobian to be Hermitian + # auto_element_wise has a name that's a bit deceiving in the complex case + result: sgn_backward(self_p, self_t, result) + +- name: sin(Tensor self) -> Tensor + self: grad * self.cos().conj() + result: auto_element_wise + +- name: sinc(Tensor self) -> Tensor + self: sinc_backward(grad, self) + result: auto_element_wise + +- name: sinh(Tensor self) -> Tensor + self: grad * self.cosh().conj() + result: auto_element_wise + +- name: slice.Tensor(Tensor(a) self, int dim=0, SymInt? start=None, SymInt? end=None, SymInt step=1) -> Tensor(a) + self: slice_backward_wrapper(grad, self.sym_sizes(), dim, start, end, step) + result: auto_linear + +- name: slice_backward(Tensor grad_output, SymInt[] input_sizes, int dim, SymInt start, SymInt end, SymInt step) -> Tensor + grad_output: grad.slice_symint(dim, start, end, step) + result: auto_linear + +- name: slice_inverse(Tensor(a) self, Tensor src, int dim=0, SymInt? start=None, SymInt? end=None, SymInt step=1) -> Tensor(a) + self: grad.slice_symint(dim, start, end, step) + src: slice_scatter_symint(grad, zeros_like(self), dim, start, end, step) + result: auto_linear + +- name: slice_scatter(Tensor self, Tensor src, int dim=0, SymInt? start=None, SymInt? end=None, SymInt step=1) -> Tensor + self: slice_scatter_symint(grad, zeros_like(src), dim, start, end, step) + src: grad.slice_symint(dim, start, end, step) + result: auto_linear + +- name: select_scatter(Tensor self, Tensor src, int dim, SymInt index) -> Tensor + self: select_scatter_symint(grad, zeros_like(src), dim, index) + src: grad.select_symint(dim, index) + result: auto_linear + +- name: diagonal_scatter(Tensor self, Tensor src, int offset=0, int dim1=0, int dim2=1) -> Tensor + self: diagonal_scatter(grad, zeros_like(src), offset, dim1, dim2) + src: grad.diagonal(offset, dim1, dim2) + result: auto_linear + +- name: as_strided_scatter(Tensor self, Tensor src, SymInt[] size, SymInt[] stride, SymInt? storage_offset=None) -> Tensor + self: as_strided_scatter_backward(grad, TensorGeometry(self), TensorGeometry(src), size, stride, storage_offset) + # See Note [as_strided_scatter backward support] + src: grad.contiguous().as_strided_symint(size, stride, storage_offset) + result: auto_linear + +- name: _linalg_solve_ex(Tensor A, Tensor B, *, bool left=True, bool check_errors=False) -> (Tensor result, Tensor LU, Tensor pivots, Tensor info) + A, B: linalg_solve_backward(grad, result, A, LU, pivots, left, grad_input_mask[1]) + result: "linalg_solve_jvp(A_t, B_t, result, LU, pivots, left)" + output_differentiability: [True, False, False, False] # LU is an auxiliary tensor not exposed to the user + +- name: sort(Tensor self, int dim=-1, bool descending=False) -> (Tensor values, Tensor indices) + self: value_selecting_reduction_backward_symint(grad, dim, indices, self.sym_sizes(), true) + output_differentiability: [True, False] + values: gather_with_keepdimed_indices(self_t, dim, indices, true) + +- name: sort.stable(Tensor self, *, bool? stable, int dim=-1, bool descending=False) -> (Tensor values, Tensor indices) + self: value_selecting_reduction_backward_symint(grad, dim, indices, self.sym_sizes(), true) + output_differentiability: [True, False] + values: gather_with_keepdimed_indices(self_t, dim, indices, true) + +- name: split.Tensor(Tensor(a -> *) self, SymInt split_size, int dim=0) -> Tensor(a)[] + self: split_backward(grads, split_size, dim, self.sym_sizes(), self.options()) + result: auto_linear + +- name: unsafe_split.Tensor(Tensor self, SymInt split_size, int dim=0) -> Tensor[] + self: split_backward(grads, split_size, dim, self.sym_sizes(), self.options()) + result: auto_linear + +- name: split_with_sizes(Tensor(a -> *) self, SymInt[] split_sizes, int dim=0) -> Tensor(a)[] + dispatch: + Default: + self: split_with_sizes_backward(grads, split_sizes, dim, self.sym_sizes(), self.options()) + result: auto_linear + AutogradNestedTensor: + self: _nested_split_with_sizes_backward(grads, split_sizes, dim, at::native::get_nested_tensor_impl(self)->get_nested_sizes(), self.options()) + +- name: unsafe_split_with_sizes(Tensor self, SymInt[] split_sizes, int dim=0) -> Tensor[] + self: split_with_sizes_backward(grads, split_sizes, dim, self.sym_sizes(), self.options()) + result: auto_linear + +- name: sqrt(Tensor self) -> Tensor + self: grad / (2 * result.conj()) + result: auto_element_wise + +- name: squeeze(Tensor(a) self) -> Tensor(a) + self: unsqueeze_to(grad, self.sym_sizes()) + result: auto_linear + +- name: squeeze.dim(Tensor(a) self, int dim) -> Tensor(a) + dispatch: + Default: + self: unsqueeze_to(grad, dim, self.sym_sizes()) + result: auto_linear + AutogradNestedTensor: + self: grad.unsqueeze(dim) + +- name: squeeze.dims(Tensor(a) self, int[] dim) -> Tensor(a) + dispatch: + Default: + self: unsqueeze_to(grad, dim, self.sym_sizes()) + result: auto_linear + AutogradNestedTensor: + self: unsqueeze_multiple(grad, dim, self.dim()) + +- name: squeeze_(Tensor(a!) self) -> Tensor(a!) + self: unsqueeze_to(grad, self.sym_sizes()) + result: auto_linear + +- name: squeeze_.dim(Tensor(a!) self, int dim) -> Tensor(a!) + self: unsqueeze_to(grad, dim, self.sym_sizes()) + result: auto_linear + +- name: squeeze_.dims(Tensor(a!) self, int[] dim) -> Tensor(a!) + self: unsqueeze_to(grad, dim, self.sym_sizes()) + result: auto_linear + +- name: std.correction(Tensor self, int[1]? dim=None, *, Scalar? correction=None, bool keepdim=False) -> Tensor + self: std_backward(result, grad, self, dim, correction, keepdim) + # pointwise (variance) + sum + sqrt + result: (at::real(var_backward(self_t.conj(), self_p, dim, correction, true).sum(dim.value_or(IntArrayRef({})), keepdim)) / (2. * result)).masked_fill_(result == 0, 0) + +- name: std_mean.correction(Tensor self, int[1]? dim=None, *, Scalar? correction=None, bool keepdim=False) -> (Tensor, Tensor) + self: std_mean_backward(grads[0], grads[1], self, result0, dim, correction, keepdim) + result0: (at::real(var_backward(self_t.conj(), self_p, dim, correction, true).sum(dim.value_or(IntArrayRef({})), keepdim)) / (2. * result0)).masked_fill_(result0 == 0, 0) + # linear + result1: mean(self_t, dim.value_or(IntArrayRef({})), keepdim) + +- name: sub.Tensor(Tensor self, Tensor other, *, Scalar alpha=1) -> Tensor + self: handle_r_to_c(self.scalar_type(), grad) + other: handle_r_to_c(other.scalar_type(), maybe_multiply(-grad, alpha.conj())) + result: self_t - maybe_multiply(other_t, alpha) + +- name: sub.Scalar(Tensor self, Scalar other, Scalar alpha=1) -> Tensor + self: handle_r_to_c(self.scalar_type(), grad) + result: auto_element_wise + +- name: rsub.Tensor(Tensor self, Tensor other, *, Scalar alpha=1) -> Tensor + self: handle_r_to_c(self.scalar_type(), maybe_multiply(-grad, alpha.conj())) + other: handle_r_to_c(other.scalar_type(), grad) + result: -maybe_multiply(self_t, alpha) + other_t + +- name: rsub.Scalar(Tensor self, Scalar other, Scalar alpha=1) -> Tensor + self: handle_r_to_c(self.scalar_type(), maybe_multiply(-grad, alpha.conj())) + result: auto_element_wise + +- name: sum(Tensor self, *, ScalarType? dtype=None) -> Tensor + dispatch: + Default: + self: grad.expand_symint(self.sym_sizes()) + result: auto_linear + AutogradNestedTensor: + # TODO: replace this with grad.expand_as(self) when that is supported + self: ones_like(self) * grad + result: auto_linear + +- name: sum.dim_IntList(Tensor self, int[1]? dim, bool keepdim=False, *, ScalarType? dtype=None) -> Tensor + dispatch: + Default: + self: sum_backward(grad, self.sym_sizes(), dim, keepdim) + result: auto_linear + AutogradNestedTensor: + # TODO: replace this function once semantics for nested tensor expand have been settled on + self: _nested_sum_backward(grad, self, dim, keepdim) + +- name: nansum(Tensor self, int[1]? dim=None, bool keepdim=False, *, ScalarType? dtype=None) -> Tensor + self: nansum_backward(grad.to(self.scalar_type()), self, dim, keepdim) + result: at::where(self_p.isnan(), 0, self_t).sum(dim, keepdim, dtype) + +# We never call _linalg_svd with compute_uv=False in an autograd context, so we don't even consider it here +- name: _linalg_svd(Tensor A, bool full_matrices=False, bool compute_uv=True, *, str? driver=None) -> (Tensor U, Tensor S, Tensor Vh) + A: "svd_backward(full_matrices && grad_U.defined() ? grad_U.narrow_symint(-1, 0, S.sym_size(-1)) : grad_U, + grad_S, + full_matrices && grad_Vh.defined() ? grad_Vh.narrow_symint(-2, 0, S.sym_size(-1)) : grad_Vh, + full_matrices ? U.narrow_symint(-1, 0, S.sym_size(-1)) : U, + S, + full_matrices ? Vh.narrow_symint(-2, 0, S.sym_size(-1)) : Vh)" + U, S, Vh: linalg_svd_jvp(A_t, U, S, Vh, full_matrices) + +- name: _linalg_eigh(Tensor A, str UPLO="L", bool compute_v=True) -> (Tensor eigenvalues, Tensor eigenvectors) + A: linalg_eig_backward(grads[0], grads[1], eigenvalues, eigenvectors, /*is_hermitian=*/true) + eigenvalues, eigenvectors: linalg_eig_jvp(A_t, eigenvalues, eigenvectors, /*is_hermitian=*/true) + +- name: linalg_eig(Tensor self) -> (Tensor eigenvalues, Tensor eigenvectors) + self: handle_r_to_c(self.scalar_type(), linalg_eig_backward(grads[0], grads[1], eigenvalues, eigenvectors, /*is_hermitian=*/false)) + eigenvalues, eigenvectors: linalg_eig_jvp(self_t, eigenvalues, eigenvectors, /*is_hermitian=*/false) + +- name: t(Tensor(a) self) -> Tensor(a) + self: grad.t() + result: auto_linear + +- name: t_(Tensor(a!) self) -> Tensor(a!) + self: grad.t() + result: auto_linear + +- name: one_hot(Tensor self, int num_classes=-1) -> Tensor + self: non_differentiable + +- name: flip(Tensor self, int[] dims) -> Tensor + self: grad.flip(dims) + result: auto_linear + +- name: roll(Tensor self, SymInt[1] shifts, int[1] dims=[]) -> Tensor + self: grad.roll_symint(fmap(reverse_list_symint(shifts), [](c10::SymInt i){return -i;}), reverse_list(dims)) + result: auto_linear + +- name: rot90(Tensor self, int k=1, int[] dims=[0,1]) -> Tensor + self: grad.rot90(-k, dims) + result: auto_linear + +- name: take(Tensor self, Tensor index) -> Tensor + self: take_backward(grad, self, index) + index: non_differentiable + result: auto_linear + +- name: tan(Tensor self) -> Tensor + self: grad * (1 + result.pow(2)).conj() + result: auto_element_wise + +- name: tanh(Tensor self) -> Tensor + self: tanh_backward(grad, result) + result: auto_element_wise + +- name: topk(Tensor self, SymInt k, int dim=-1, bool largest=True, bool sorted=True) -> (Tensor values, Tensor indices) + self: value_selecting_reduction_backward_symint(grad, dim, indices, self.sym_sizes(), true) + output_differentiability: [True, False] + values: gather(self_t, dim, indices) + +- name: trace(Tensor self) -> Tensor + self: trace_backward_symint(grad, self.sym_sizes()) + result: auto_linear + +- name: transpose.int(Tensor(a) self, int dim0, int dim1) -> Tensor(a) + self: grad.transpose(dim0, dim1) + result: auto_linear + +- name: transpose_(Tensor(a!) self, int dim0, int dim1) -> Tensor(a!) + self: grad.transpose(dim0, dim1) + result: auto_linear + +- name: triangular_solve(Tensor self, Tensor A, bool upper=True, bool transpose=False, bool unitriangular=False) -> (Tensor solution, Tensor cloned_coefficient) + self, A: triangular_solve_backward(grad_solution, grad_cloned_coefficient, self, A, solution, upper, transpose, unitriangular, grad_input_mask) + solution: triangular_solve_jvp(solution, A_p, A_t, self_t, upper, transpose, unitriangular) + cloned_coefficient: A_t + +- name: linalg_solve_triangular(Tensor self, Tensor B, *, bool upper, bool left=True, bool unitriangular=False) -> Tensor + self, B: linalg_solve_triangular_backward(grad, self, result, upper, left, unitriangular, grad_input_mask) + result: linalg_solve_triangular_forward_AD(self_t, B_t, self_p, result, upper, left, unitriangular) + +- name: tril(Tensor self, SymInt diagonal=0) -> Tensor + self: grad.tril_symint(diagonal) + result: auto_linear + +- name: triu(Tensor self, SymInt diagonal=0) -> Tensor + self: grad.triu_symint(diagonal) + result: auto_linear + +- name: trunc(Tensor self) -> Tensor + self: zeros_like(grad) + result: auto_element_wise + +- name: hash_tensor(Tensor self, int[1] dim=[], *, bool keepdim=False, int mode=0) -> Tensor + output_differentiability: [False] + +# DO NOT define a backward for to_dense +# See [Note: Sometimes view derivatives] +# - name: to_dense(Tensor self, ScalarType? dtype=None, *, bool? masked_grad=None) -> Tensor +# +- name: _to_dense(Tensor self, ScalarType? dtype=None, bool? masked_grad=None) -> Tensor + self: to_dense_backward(grad, self, masked_grad) + +# DO NOT define a backward for to_sparse.sparse_dim +# See [Note: Sometimes view derivatives] +# - name: to_sparse.sparse_dim(Tensor self, int sparse_dim) -> Tensor +# +- name: _to_sparse.sparse_dim(Tensor self, int sparse_dim) -> Tensor + self: to_sparse_backward(grad, self.layout(), self.sym_blocksize()) + +# DO NOT define a backward for to_sparse +# See [Note: Sometimes view derivatives] +# - name: to_sparse(Tensor self, *, Layout? layout=None, int[2]? blocksize=None, int? dense_dim=None) -> Tensor +# +- name: _to_sparse(Tensor self, *, Layout? layout=None, int[2]? blocksize=None, int? dense_dim=None) -> Tensor + self: to_sparse_backward(grad, self.layout(), self.sym_blocksize()) + +# DO NOT define a backward for to_sparse_csr +# See [Note: Sometimes view derivatives] +# - name: to_sparse_csr(Tensor self, int? dense_dim=None) -> Tensor +# +- name: _to_sparse_csr(Tensor self, int? dense_dim=None) -> Tensor + self: to_sparse_backward(grad, self.layout(), self.sym_blocksize()) + +# DO NOT define a backward for to_sparse_csc +# See [Note: Sometimes view derivatives] +# - name: to_sparse_csc(Tensor self, int? dense_dim=None) -> Tensor +# +- name: _to_sparse_csc(Tensor self, int? dense_dim=None) -> Tensor + self: to_sparse_backward(grad, self.layout(), self.sym_blocksize()) + +# DO NOT define a backward for to_sparse_bsr +# See [Note: Sometimes view derivatives] +# - name: to_sparse_bsr(Tensor self, int[2] blocksize, int? dense_dim=None) -> Tensor +# +- name: _to_sparse_bsr(Tensor self, int[2] blocksize, int? dense_dim=None) -> Tensor + self: to_sparse_backward(grad, self.layout(), self.sym_blocksize()) + +# DO NOT define a backward for to_sparse_bsc +# See [Note: Sometimes view derivatives] +# - name: to_sparse_bsc(Tensor self, int[2] blocksize, int? dense_dim=None) -> Tensor +# +- name: _to_sparse_bsc(Tensor self, int[2] blocksize, int? dense_dim=None) -> Tensor + self: to_sparse_backward(grad, self.layout(), self.sym_blocksize()) + +- name: to_mkldnn(Tensor self, ScalarType? dtype=None) -> Tensor + self: to_mkldnn_backward(grad, self) + +- name: unfold(Tensor(a) self, int dimension, int size, int step) -> Tensor(a) + self: unfold_backward_symint(grad, self.sym_sizes(), dimension, size, step) + result: auto_linear + +- name: unfold_backward(Tensor grad_in, SymInt[] input_sizes, int dim, int size, int step) -> Tensor + grad_in: grad.unfold(dim, size, step) + result: auto_linear + +- name: uniform_(Tensor(a!) self, float from=0, float to=1, *, Generator? generator=None) -> Tensor(a!) + self: zeros_like(grad) + result: self_t.zero_() + +- name: _unique(Tensor self, bool sorted=True, bool return_inverse=False) -> (Tensor, Tensor) + output_differentiability: [True, False] + self: not_implemented("_unique") + +- name: unique_dim(Tensor self, int dim, bool sorted=True, bool return_inverse=False, bool return_counts=False) -> (Tensor, Tensor, Tensor) + output_differentiability: [True, False, False] + self: not_implemented("unique_dim") + +- name: unique_consecutive(Tensor self, bool return_inverse=False, bool return_counts=False, int? dim=None) -> (Tensor, Tensor, Tensor) + output_differentiability: [True, False, False] + self: not_implemented("unique_consecutive") + +- name: unique_dim_consecutive(Tensor self, int dim, bool return_inverse=False, bool return_counts=False) -> (Tensor, Tensor, Tensor) + output_differentiability: [True, False, False] + self: not_implemented("unique_dim_consecutive") + +- name: _unique2(Tensor self, bool sorted=True, bool return_inverse=False, bool return_counts=False) -> (Tensor, Tensor, Tensor) + output_differentiability: [True, False, False] + self: not_implemented("_unique2") + +- name: _unsafe_view(Tensor self, SymInt[] size) -> Tensor + self: grad.reshape_symint(self.sym_sizes()) + result: auto_linear + +- name: lift(Tensor self) -> Tensor + self: grad + result: auto_linear + +- name: lift_fresh(Tensor(a) self) -> Tensor(a) + self: grad + result: auto_linear + +- name: unsqueeze(Tensor(a) self, int dim) -> Tensor(a) + self: grad.squeeze(dim) + result: auto_linear + +- name: unsqueeze_(Tensor(a!) self, int dim) -> Tensor(a!) + self: grad.squeeze(dim) + result: auto_linear + +- name: var.correction(Tensor self, int[1]? dim=None, *, Scalar? correction=None, bool keepdim=False) -> Tensor + self: var_backward(grad, self, dim, correction, keepdim) + # pointwise + sum + result: at::real(var_backward(self_t.conj(), self_p, dim, correction, true).sum(dim.value_or(IntArrayRef({})), keepdim)) + +- name: var_mean.correction(Tensor self, int[1]? dim=None, *, Scalar? correction=None, bool keepdim=False) -> (Tensor, Tensor) + self: var_mean_backward(grads[0], grads[1], self, dim, correction, keepdim) + result0: at::real(var_backward(self_t.conj(), self_p, dim, correction, true).sum(dim.value_or(IntArrayRef({})), keepdim)) + # linear + result1: mean(self_t, dim.value_or(IntArrayRef({})), keepdim) + +- name: view(Tensor(a) self, SymInt[] size) -> Tensor(a) + dispatch: + Default: + self: grad.reshape_symint(self.sym_sizes()) + result: auto_linear + AutogradNestedTensor: + self: grad.reshape_as(self) + result: auto_linear + +- name: view.dtype(Tensor(a) self, ScalarType dtype) -> Tensor(a) + output_differentiability: [False] + +- name: view_as_real(Tensor(a) self) -> Tensor(a) + self: at::view_as_complex(grad.contiguous()) # gx0 + 1j * gx1 + result: at::view_as_real(self_t) + +- name: view_as_complex(Tensor(a) self) -> Tensor(a) + self: at::view_as_real(grad.contiguous().resolve_conj()) # [gx, gy] + result: at::view_as_complex(self_t) + +- name: where.self(Tensor condition, Tensor self, Tensor other) -> Tensor + condition: non_differentiable + self: where(condition, grad, 0) + other: where(condition, 0, grad) + result: where(condition, self_t, other_t) + +# weight_norm_cuda_interface_backward does not have an explicitly defined derivative, so if we do happen +# to be running backward with create_graph=True, fall back to a backward function that uses +# differentiable ops. +- name: _weight_norm_interface(Tensor v, Tensor g, int dim=0) -> (Tensor, Tensor) + v, g: "grad.defined() ? (GradMode::is_enabled() ? _weight_norm_differentiable_backward(grad.contiguous(), v, g, result1, dim) : _weight_norm_interface_backward(grad.contiguous(), v, g, result1, dim)) : std::tuple()" + +- name: zero_(Tensor(a!) self) -> Tensor(a!) + self: zeros_like(grad) + result: auto_linear + +- name: sparse_mask(Tensor self, Tensor mask) -> Tensor + self: sparse_mask_backward(grad, mask, self.layout()) + mask: non_differentiable + +- name: _sparse_coo_tensor_with_dims_and_tensors(int sparse_dim, int dense_dim, SymInt[] size, Tensor indices, Tensor values, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False, bool? is_coalesced=None) -> Tensor + indices: non_differentiable + values: grad.sparse_mask(result)._values() + +- name: sparse_compressed_tensor.comp_plain_value_size(Tensor compressed_indices, Tensor plain_indices, Tensor values, SymInt[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=False) -> Tensor + compressed_indices: non_differentiable + plain_indices: non_differentiable + # TODO: remove to_dense after gh-107381 is fixed + values: grad.to_dense().sparse_mask(result).values() + +- name: _sparse_sum.dim(Tensor self, int[1] dim) -> Tensor + self: at::_sparse_sum_backward(grad, self, dim) + +- name: _standard_gamma(Tensor self, Generator? generator=None) -> Tensor + self: grad * _standard_gamma_grad(self, result) + +- name: _standard_gamma_grad(Tensor self, Tensor output) -> Tensor + self: not_implemented("_standard_gamma_grad") + +- name: values(Tensor(a) self) -> Tensor(a) + dispatch: + Default: + self: values_backward(grad, self) + AutogradNestedTensor: + self: at::_nested_view_from_buffer(grad.contiguous(), self._nested_tensor_size(), self._nested_tensor_strides(), self._nested_tensor_storage_offsets()) + +# Why is _values() not differentiable? +# See NOTE [ Sparse: autograd and API ] +- name: _values(Tensor(a) self) -> Tensor(a) + output_differentiability: [False] + +# NN +- name: _trilinear(Tensor i1, Tensor i2, Tensor i3, int[] expand1, int[] expand2, int[] expand3, int[] sumdim, int unroll_dim=1) -> Tensor + i1, i2, i3: "_trilinear_backward(grad, + wrap_opt_if(i1, grad_input_mask[1] || grad_input_mask[2]), + wrap_opt_if(i2, grad_input_mask[0] || grad_input_mask[2]), + wrap_opt_if(i3, grad_input_mask[0] || grad_input_mask[1]), + expand1, expand2, expand3, sumdim, grad_input_mask)" + result: "_trilinear(i1_t, i2_p, i3_p, expand1, expand2, expand3, sumdim, unroll_dim) + + _trilinear(i1_p, i2_t, i3_p, expand1, expand2, expand3, sumdim, unroll_dim) + + _trilinear(i1_p, i2_p, i3_t, expand1, expand2, expand3, sumdim, unroll_dim)" + +- name: constant_pad_nd(Tensor self, SymInt[] pad, Scalar value=0) -> Tensor + self: constant_pad_nd_backward(grad, pad) + result: constant_pad_nd_symint(self_t, pad, 0) + +- name: binary_cross_entropy(Tensor self, Tensor target, Tensor? weight=None, int reduction=Mean) -> Tensor + self: binary_cross_entropy_backward(grad, self, target, weight, reduction) + target: binary_cross_entropy_target_backward(grad, self, target, weight, reduction) + result: "apply_loss_reduction( + binary_cross_entropy_backward(self_t, self_p, target_p, weight, at::Reduction::None) + + binary_cross_entropy_target_backward(target_t, self_p, target_p, weight, at::Reduction::None), + reduction)" + +- name: binary_cross_entropy_backward(Tensor grad_output, Tensor self, Tensor target, Tensor? weight=None, int reduction=Mean) -> Tensor + self: binary_cross_entropy_double_backward(grad_output, grad, self, target, weight, reduction) + target: binary_cross_entropy_double_backward_target(grad, grad_output, self, target, weight, reduction) + grad_output: binary_cross_entropy_double_backward_grad_output(grad, self, target, weight, reduction) + result: " binary_cross_entropy_double_backward(grad_output_p, self_t, self_p, target_p, weight, reduction) + + binary_cross_entropy_double_backward_target(target_t, grad_output_p, self_p, target_p, weight, reduction) + + binary_cross_entropy_double_backward_grad_output(grad_output_t, self_p, target_p, weight, reduction)" + +- name: binary_cross_entropy_with_logits(Tensor self, Tensor target, Tensor? weight=None, Tensor? pos_weight=None, int reduction=Mean) -> Tensor + self: binary_cross_entropy_with_logits_backward(grad, self, target, weight, pos_weight, reduction) + target: binary_cross_entropy_with_logits_target_backward(grad, self, target, weight, pos_weight, reduction) + result: "apply_loss_reduction( + binary_cross_entropy_with_logits_backward(self_t, self_p, target_p, weight, pos_weight, at::Reduction::None) + + binary_cross_entropy_with_logits_target_backward(target_t, self_p, target_p, weight, pos_weight, at::Reduction::None), + reduction)" + +- name: embedding(Tensor weight, Tensor indices, SymInt padding_idx=-1, bool scale_grad_by_freq=False, bool sparse=False) -> Tensor + indices: non_differentiable + weight: embedding_backward_symint(grad, indices, weight.sym_size(0), padding_idx, scale_grad_by_freq, sparse) + result: auto_linear + +- name: embedding_dense_backward(Tensor grad_output, Tensor indices, SymInt num_weights, SymInt padding_idx, bool scale_grad_by_freq) -> Tensor + grad_output: embedding_dense_double_backward_symint(grad, indices, padding_idx) + indices: non_differentiable + result: auto_linear + +- name: _embedding_bag(Tensor weight, Tensor indices, Tensor offsets, bool scale_grad_by_freq=False, int mode=0, bool sparse=False, Tensor? per_sample_weights=None, bool include_last_offset=False, int padding_idx=-1) -> (Tensor, Tensor, Tensor, Tensor) + indices: non_differentiable + offsets: non_differentiable + weight: _embedding_bag_backward_symint(grad, indices, offsets, result1, result2, result3, weight.sym_size(0), scale_grad_by_freq, mode, sparse, per_sample_weights, padding_idx) + per_sample_weights: _embedding_bag_per_sample_weights_backward(grad, weight, indices, offsets, result1, mode, padding_idx) + +- name: _embedding_bag_backward(Tensor grad, Tensor indices, Tensor offsets, Tensor offset2bag, Tensor bag_size, Tensor maximum_indices, SymInt num_weights, bool scale_grad_by_freq, int mode, bool sparse, Tensor? per_sample_weights, int padding_idx=-1) -> Tensor + grad: not_implemented("_embedding_bag_backward") + indices: non_differentiable + offsets: non_differentiable + offset2bag: non_differentiable + bag_size: non_differentiable + maximum_indices: non_differentiable + per_sample_weights: not_implemented("_embedding_bag_backward") + +- name: _embedding_bag_dense_backward(Tensor grad, Tensor indices, Tensor offset2bag, Tensor bag_size, Tensor maximum_indices, SymInt num_weights, bool scale_grad_by_freq, int mode, Tensor? per_sample_weights, int padding_idx=-1) -> Tensor + grad: not_implemented("_embedding_bag_dense_backward") + indices: non_differentiable + offset2bag: non_differentiable + bag_size: non_differentiable + maximum_indices: non_differentiable + per_sample_weights: not_implemented("_embedding_bag_dense_backward") + +- name: embedding_renorm_(Tensor(a!) self, Tensor indices, float max_norm, float norm_type) -> Tensor(a!) + indices: non_differentiable + self: not_implemented("embedding_renorm") + +- name: mse_loss(Tensor self, Tensor target, int reduction=Mean) -> Tensor + self: mse_loss_backward(grad, self, target, reduction) + target: mse_loss_backward(grad, target, self, reduction) + result: apply_loss_reduction(mse_loss_backward(self_t.conj(), self_p, target_p, at::Reduction::None).conj() + mse_loss_backward(target_t.conj(), target_p, self_p, at::Reduction::None).conj(), reduction) + +- name: multi_margin_loss(Tensor self, Tensor target, Scalar p=1, Scalar margin=1, Tensor? weight=None, int reduction=Mean) -> Tensor + self: multi_margin_loss_backward(grad, self, target, p, margin, weight, reduction) + target: non_differentiable + +- name: multilabel_margin_loss_forward(Tensor self, Tensor target, int reduction) -> (Tensor output, Tensor is_target) + self: multilabel_margin_loss_backward(grad, self, target, reduction, is_target) + target: non_differentiable + +- name: nll_loss_forward(Tensor self, Tensor target, Tensor? weight, int reduction, SymInt ignore_index) -> (Tensor output, Tensor total_weight) + self: nll_loss_backward_symint(grad, self, target, weight, reduction, ignore_index, total_weight) + target: non_differentiable + output: std::get<0>(nll_loss_forward_symint(self_t, target, weight, reduction, ignore_index)) + +- name: nll_loss2d_forward(Tensor self, Tensor target, Tensor? weight, int reduction, SymInt ignore_index) -> (Tensor output, Tensor total_weight) + self: nll_loss2d_backward_symint(grad, self, target, weight, reduction, ignore_index, total_weight) + target: non_differentiable + output: std::get<0>(nll_loss2d_forward_symint(self_t, target, weight, reduction, ignore_index)) + +- name: smooth_l1_loss(Tensor self, Tensor target, int reduction=Mean, float beta=1.0) -> Tensor + self: smooth_l1_loss_backward(grad, self, target, reduction, beta) + target: smooth_l1_loss_backward(grad, target, self, reduction, beta) + result: apply_loss_reduction(smooth_l1_loss_backward(self_t.conj(), self_p, target_p, at::Reduction::None, beta).conj() + smooth_l1_loss_backward(target_t.conj(), target_p, self_p, at::Reduction::None, beta).conj(), reduction) + +- name: huber_loss(Tensor self, Tensor target, int reduction=Mean, float delta=1.0) -> Tensor + self: huber_loss_backward(grad, self, target, reduction, delta) + target: huber_loss_backward(grad, target, self, reduction, delta) + result: apply_loss_reduction(huber_loss_backward(self_t.conj(), self_p, target_p, at::Reduction::None, delta).conj() + huber_loss_backward(target_t.conj(), target_p, self_p, at::Reduction::None, delta).conj(), reduction) + +- name: soft_margin_loss(Tensor self, Tensor target, int reduction=Mean) -> Tensor + self: soft_margin_loss_backward(grad, self, target, reduction) + result: apply_loss_reduction(soft_margin_loss_backward(self_t.conj(), self_p, target, at::Reduction::None).conj(), reduction) + +- name: relu(Tensor self) -> Tensor + self: threshold_backward(grad, result, 0) + result: auto_element_wise + +- name: silu(Tensor self) -> Tensor + self: "GradMode::is_enabled() ? infinitely_differentiable_silu_backward(grad, self) : silu_backward(grad, self)" + result: auto_element_wise + +- name: mish(Tensor self) -> Tensor + self: "GradMode::is_enabled() ? infinitely_differentiable_mish_backward(grad, self) : mish_backward(grad, self)" + result: auto_element_wise + +- name: elu(Tensor self, Scalar alpha=1, Scalar scale=1, Scalar input_scale=1) -> Tensor + self: elu_backward(grad, alpha, scale, input_scale, /* is_result */ false, self) + result: auto_element_wise + +- name: elu_(Tensor(a!) self, Scalar alpha=1, Scalar scale=1, Scalar input_scale=1) -> Tensor(a!) + self: elu_backward(grad, alpha, scale, input_scale, /* is_result */ true, result) + result: self_t.copy_(elu_backward(original_self_t, alpha, scale, input_scale, /* is_result */ true, result)) + +- name: celu(Tensor self, Scalar alpha=1.0) -> Tensor + self: elu_backward(grad, alpha, 1, 1.0/alpha.toFloat(), /* is_result */ false, self) + result: auto_element_wise + +- name: celu_(Tensor(a!) self, Scalar alpha=1.0) -> Tensor(a!) + self: elu_backward(grad, alpha, 1, 1.0/alpha.toFloat(), /* is_result */ true, result) + result: self_t.copy_(elu_backward(original_self_t, alpha, 1, 1.0/alpha.toFloat(), /* is_result */ true, result)) + +- name: gelu(Tensor self, *, str approximate='none') -> Tensor + self: gelu_backward(grad, self, approximate) + result: auto_element_wise + +- name: gelu_backward(Tensor grad_output, Tensor self, *, str approximate='none') -> Tensor + grad_output: gelu_backward(grad, self, approximate) + self: gelu_double_backward(grad, grad_output, self, approximate) + result: gelu_backward(grad_output_t, self_p, approximate) + gelu_double_backward(self_t, grad_output_p, self_p, approximate) + +- name: glu(Tensor self, int dim=-1) -> Tensor + # TODO: glu_backward can benefit from forward result, + # and forward ad/forward over reverse ad for that matter + self: glu_backward(grad, self, dim) + result: glu_jvp(result, self_p, self_t, dim) + +- name: hardshrink(Tensor self, Scalar lambd=0.5) -> Tensor + self: hardshrink_backward(grad, self, lambd) + result: auto_element_wise + +- name: hardshrink_backward(Tensor grad_out, Tensor self, Scalar lambd) -> Tensor + grad_out: hardshrink_backward(grad, self, lambd) + self: zeros_like(grad) + result: at::where((self_p > lambd).logical_or(self_p < -lambd), grad_out_t, at::zeros({}, result.options()).expand_as(result)) + +- name: hardtanh(Tensor self, Scalar min_val=-1, Scalar max_val=1) -> Tensor + self: hardtanh_backward(grad, self, min_val, max_val) + result: auto_element_wise + +- name: leaky_relu(Tensor self, Scalar negative_slope=0.01) -> Tensor + self: leaky_relu_backward(grad, self, negative_slope, false) + result: auto_element_wise + +- name: leaky_relu_(Tensor(a!) self, Scalar negative_slope=0.01) -> Tensor(a!) + self: leaky_relu_backward(grad, result, negative_slope, true) + result: self_t.copy_(leaky_relu_backward(original_self_t.conj(), result, negative_slope, true).conj()) + +- name: log_sigmoid_forward(Tensor self) -> (Tensor output, Tensor buffer) + self: log_sigmoid_backward(grad, self, buffer) + output: log_sigmoid_backward(self_t.conj(), self_p, buffer).conj() + output_differentiability: [True, False] + +- name: _log_softmax(Tensor self, int dim, bool half_to_float) -> Tensor + self: _log_softmax_backward_data(grad, result, dim, self.scalar_type()) + result: self_t - logsumexp_jvp(self_p, self_t, {dim}, true) + +- name: _sparse_log_softmax(Tensor self, int dim, bool half_to_float) -> Tensor + self: _sparse_log_softmax_backward_data(grad, result, dim, self) + +- name: _masked_softmax(Tensor self, Tensor mask, int? dim=None, int? mask_type=None) -> Tensor + self: _masked_softmax_backward(grad, result, mask, dim) + mask: non_differentiable + +- name: _prelu_kernel(Tensor self, Tensor weight) -> Tensor + self, weight: "grad.defined() ? _prelu_kernel_backward(grad, self, weight) : std::tuple()" + result: at::where(self_p >= 0, self_t, weight_p * self_t + weight_t * self_p) + +- name: _prelu_kernel_backward(Tensor grad_output, Tensor self, Tensor weight) -> (Tensor, Tensor) + grad_output: "grads[0].defined() ? + (grads[1].defined() ? at::where(self >= 0, grads[0], grads[0] * weight + grads[1] * self) + : at::where(self >= 0, grads[0], grads[0] * weight)) + : at::where(self >= 0, at::zeros({}, grad_output.options()), grads[1] * self)" + self: "grads[1].defined() ? at::where(self >= 0, at::zeros({}, self.options()), grad_output * grads[1]) : zeros_like(self)" + weight: "grads[0].defined() ? at::where(self >= 0, at::zeros({}, weight.options()), grad_output * grads[0]) : zeros_like(self)" + result0: at::where(self_p >= 0, grad_output_t, grad_output_t * weight_p + grad_output_p * weight_t) + result1: at::where(self_p >= 0, at::zeros({}, self_p.options()), grad_output_p * self_t + grad_output_t * self_p) + +- name: rrelu_with_noise(Tensor self, Tensor(b!) noise, Scalar lower=0.125, Scalar upper=0.3333333333333333, bool training=False, Generator? generator=None) -> Tensor + self: rrelu_with_noise_backward(grad, self, noise, lower, upper, training, false) + result: auto_element_wise + +- name: rrelu_with_noise_(Tensor(a!) self, Tensor(b!) noise, Scalar lower=0.125, Scalar upper=0.3333333333333333, bool training=False, Generator? generator=None) -> Tensor(a!) + self: rrelu_with_noise_backward(grad, result, noise, lower, upper, training, true) + +- name: rrelu_with_noise_functional(Tensor self, Tensor noise, Scalar lower=0.125, Scalar upper=0.3333333333333333, bool training=False, Generator? generator=None) -> (Tensor, Tensor noise_out) + noise: non_differentiable + self: rrelu_with_noise_backward(grad, self, noise, lower, upper, training, false) + +- name: _softmax(Tensor self, int dim, bool half_to_float) -> Tensor + self: _softmax_backward_data(grad, result, dim, self.scalar_type()) + result: result * (self_t - logsumexp_jvp(self_p, self_t, {dim}, true)) + +- name: _sparse_softmax(Tensor self, int dim, bool half_to_float) -> Tensor + self: _sparse_softmax_backward_data(grad, result, dim, self) + +- name: _sparse_sparse_matmul(Tensor self, Tensor other) -> Tensor + self: sparse_sparse_matmul_backward(grad, self, other, 0) + other: sparse_sparse_matmul_backward(grad, self, other, 1) + +- name: softplus(Tensor self, Scalar beta=1, Scalar threshold=20) -> Tensor + self: softplus_backward(grad, self, beta, threshold) + result: auto_element_wise + +- name: softshrink(Tensor self, Scalar lambd=0.5) -> Tensor + self: softshrink_backward(grad, self, lambd) + result: auto_element_wise + +- name: threshold(Tensor self, Scalar threshold, Scalar value) -> Tensor + self: threshold_backward(grad, self, threshold) + result: auto_element_wise + +- name: threshold_(Tensor(a!) self, Scalar threshold, Scalar value) -> Tensor(a!) + self: threshold_backward(grad, self, threshold) + result: self_t.copy_(threshold_backward(self_t.conj(), original_self_p, threshold).conj()) + +- name: reflection_pad1d(Tensor self, SymInt[2] padding) -> Tensor + self: reflection_pad1d_backward_symint(grad, self, padding) + result: auto_linear + +- name: reflection_pad2d(Tensor self, SymInt[4] padding) -> Tensor + self: reflection_pad2d_backward_symint(grad, self, padding) + result: auto_linear + +- name: reflection_pad3d(Tensor self, SymInt[6] padding) -> Tensor + self: reflection_pad3d_backward_symint(grad, self, padding) + result: auto_linear + +- name: replication_pad1d(Tensor self, SymInt[2] padding) -> Tensor + self: replication_pad1d_backward_symint(grad, self, padding) + result: auto_linear + +- name: replication_pad2d(Tensor self, SymInt[4] padding) -> Tensor + self: replication_pad2d_backward_symint(grad, self, padding) + result: auto_linear + +- name: replication_pad3d(Tensor self, SymInt[6] padding) -> Tensor + self: replication_pad3d_backward_symint(grad, self, padding) + result: auto_linear + +- name: upsample_linear1d(Tensor self, SymInt[1] output_size, bool align_corners, float? scales=None) -> Tensor + self: upsample_linear1d_backward_symint(grad, output_size, self.sym_sizes(), align_corners, scales) + result: auto_linear + +- name: upsample_bilinear2d(Tensor self, SymInt[2] output_size, bool align_corners, float? scales_h=None, float? scales_w=None) -> Tensor + self: upsample_bilinear2d_backward_symint(grad, output_size, self.sym_sizes(), align_corners, scales_h, scales_w) + result: auto_linear + +- name: _upsample_bilinear2d_aa(Tensor self, SymInt[2] output_size, bool align_corners, float? scales_h=None, float? scales_w=None) -> Tensor + self: _upsample_bilinear2d_aa_backward_symint(grad, output_size, self.sym_sizes(), align_corners, scales_h, scales_w) + result: auto_linear + +- name: upsample_bicubic2d(Tensor self, SymInt[2] output_size, bool align_corners, float? scales_h=None, float? scales_w=None) -> Tensor + self: upsample_bicubic2d_backward_symint(grad, output_size, self.sym_sizes(), align_corners, scales_h, scales_w) + result: auto_linear + +- name: _upsample_bicubic2d_aa(Tensor self, SymInt[2] output_size, bool align_corners, float? scales_h=None, float? scales_w=None) -> Tensor + self: _upsample_bicubic2d_aa_backward_symint(grad, output_size, self.sym_sizes(), align_corners, scales_h, scales_w) + result: auto_linear + +- name: _upsample_lanczos2d_aa(Tensor self, SymInt[2] output_size, bool align_corners, float? scales_h=None, float? scales_w=None) -> Tensor + self: _upsample_lanczos2d_aa_backward_symint(grad, output_size, self.sym_sizes(), align_corners, scales_h, scales_w) + result: auto_linear + +- name: upsample_trilinear3d(Tensor self, SymInt[3] output_size, bool align_corners, float? scales_d=None, float? scales_h=None, float? scales_w=None) -> Tensor + self: upsample_trilinear3d_backward_symint(grad, output_size, self.sym_sizes(), align_corners, scales_d, scales_h, scales_w) + result: auto_linear + +- name: upsample_nearest1d(Tensor self, SymInt[1] output_size, float? scales=None) -> Tensor + self: upsample_nearest1d_backward_symint(grad, output_size, self.sym_sizes(), scales) + result: auto_linear + +- name: _upsample_nearest_exact1d(Tensor self, SymInt[1] output_size, float? scales=None) -> Tensor + self: _upsample_nearest_exact1d_backward_symint(grad, output_size, self.sym_sizes(), scales) + result: auto_linear + +- name: upsample_nearest2d(Tensor self, SymInt[2] output_size, float? scales_h=None, float? scales_w=None) -> Tensor + self: upsample_nearest2d_backward_symint(grad, output_size, self.sym_sizes(), scales_h, scales_w) + result: auto_linear + +- name: _upsample_nearest_exact2d(Tensor self, SymInt[2] output_size, float? scales_h=None, float? scales_w=None) -> Tensor + self: _upsample_nearest_exact2d_backward_symint(grad, output_size, self.sym_sizes(), scales_h, scales_w) + result: auto_linear + +- name: upsample_nearest3d(Tensor self, SymInt[3] output_size, float? scales_d=None, float? scales_h=None, float? scales_w=None) -> Tensor + self: upsample_nearest3d_backward_symint(grad, output_size, self.sym_sizes(), scales_d, scales_h, scales_w) + result: auto_linear + +- name: _upsample_nearest_exact3d(Tensor self, SymInt[3] output_size, float? scales_d=None, float? scales_h=None, float? scales_w=None) -> Tensor + self: _upsample_nearest_exact3d_backward_symint(grad, output_size, self.sym_sizes(), scales_d, scales_h, scales_w) + result: auto_linear + +- name: pixel_shuffle(Tensor self, int upscale_factor) -> Tensor + self: pixel_unshuffle(grad, upscale_factor) + result: auto_linear + +- name: pixel_unshuffle(Tensor self, int downscale_factor) -> Tensor + self: pixel_shuffle(grad, downscale_factor) + result: auto_linear + +- name: channel_shuffle(Tensor self, SymInt groups) -> Tensor + self: channel_shuffle_symint(grad, grad.sym_size(1) / groups) + result: auto_linear + +- name: _adaptive_avg_pool2d(Tensor self, SymInt[2] output_size) -> Tensor + self: _adaptive_avg_pool2d_backward(grad, self) + result: auto_linear + +- name: _adaptive_avg_pool3d(Tensor self, SymInt[3] output_size) -> Tensor + self: _adaptive_avg_pool3d_backward(grad, self) + result: auto_linear + +- name: adaptive_max_pool2d(Tensor self, int[2] output_size) -> (Tensor, Tensor) + self: adaptive_max_pool2d_backward(grad, self, result1) + result0: gather(self_t.flatten(-2), -1, result1.flatten(-2)).view_as(result1) + output_differentiability: [True, False] + +- name: adaptive_max_pool3d(Tensor self, int[3] output_size) -> (Tensor, Tensor) + self: adaptive_max_pool3d_backward(grad, self, result1) + result0: gather(self_t.flatten(-3), -1, result1.flatten(-3)).view_as(result1) + output_differentiability: [True, False] + +- name: avg_pool2d(Tensor self, int[2] kernel_size, int[2] stride=[], int[2] padding=0, bool ceil_mode=False, bool count_include_pad=True, int? divisor_override=None) -> Tensor + self: avg_pool2d_backward(grad, self, kernel_size, stride, padding, ceil_mode, count_include_pad, divisor_override) + result: auto_linear + +- name: avg_pool3d(Tensor self, int[3] kernel_size, int[3] stride=[], int[3] padding=0, bool ceil_mode=False, bool count_include_pad=True, int? divisor_override=None) -> Tensor + self: avg_pool3d_backward(grad, self, kernel_size, stride, padding, ceil_mode, count_include_pad, divisor_override) + result: auto_linear + +- name: fractional_max_pool2d(Tensor self, int[2] kernel_size, int[2] output_size, Tensor random_samples) -> (Tensor, Tensor) + self: fractional_max_pool2d_backward(grad, self, kernel_size, output_size, result1) + result0: gather(self_t.flatten(-2), -1, result1.flatten(-2)).view_as(result1) + output_differentiability: [True, False] + +- name: fractional_max_pool3d(Tensor self, int[3] kernel_size, int[3] output_size, Tensor random_samples) -> (Tensor, Tensor) + self: fractional_max_pool3d_backward(grad, self, kernel_size, output_size, result1) + result0: gather(self_t.flatten(-3), -1, result1.flatten(-3)).view_as(result1) + output_differentiability: [True, False] + +- name: linear(Tensor input, Tensor weight, Tensor? bias=None) -> Tensor + input, weight, bias: "grad.defined() ? linear_backward(input, grad, weight, grad_input_mask) : std::tuple()" + +- name: linear_backward(Tensor self, Tensor grad_output, Tensor weight, bool[3] output_mask) -> (Tensor, Tensor, Tensor) + self, grad_output, weight: linear_double_backward(grads, self, grad_output, weight) + +#mps +- name: max_pool2d(Tensor self, int[2] kernel_size, int[2] stride=[], int[2] padding=0, int[2] dilation=1, bool ceil_mode=False) -> Tensor + self: max_pool2d_backward(grad, self, kernel_size, stride, padding, dilation, ceil_mode) + +- name: _mps_convolution(Tensor self, Tensor weight, Tensor? bias, SymInt[] padding, SymInt[] stride, SymInt[] dilation, SymInt groups) -> Tensor + self, weight, bias: "grad.defined() ? mps_convolution_backward_symint(self, grad, weight, padding, stride, dilation, groups, grad_input_mask) : std::tuple()" + +- name: mps_convolution_backward(Tensor self, Tensor grad_output, Tensor weight, SymInt[] padding, SymInt[] stride, SymInt[] dilation, SymInt groups, bool[3] output_mask) -> (Tensor, Tensor, Tensor) + grad_output, self, weight: _convolution_double_backward_symint(grads[0], grads[1], grads[2], grad_output, weight, self, stride, padding, dilation, false, std::vector(padding.size(), 0), groups, grad_input_mask) + +- name: max_pool2d_with_indices(Tensor self, int[2] kernel_size, int[2] stride=[], int[2] padding=0, int[2] dilation=1, bool ceil_mode=False) -> (Tensor, Tensor) + self: max_pool2d_with_indices_backward(grad, self, kernel_size, stride, padding, dilation, ceil_mode, result1) + result0: gather(self_t.flatten(-2), -1, result1.flatten(-2)).view_as(result1) + output_differentiability: [True, False] + +- name: max_pool3d_with_indices(Tensor self, int[3] kernel_size, int[3] stride=[], int[3] padding=0, int[3] dilation=1, bool ceil_mode=False) -> (Tensor, Tensor) + self: max_pool3d_with_indices_backward(grad, self, kernel_size, stride, padding, dilation, ceil_mode, result1) + result0: gather(self_t.flatten(-3), -1, result1.flatten(-3)).view_as(result1) + output_differentiability: [True, False] + +- name: max_unpool2d(Tensor self, Tensor indices, SymInt[2] output_size) -> Tensor + self: max_pool_double_backward(grad, indices, 2) + indices: non_differentiable + result: auto_linear + +- name: max_unpool3d(Tensor self, Tensor indices, SymInt[3] output_size, int[3] stride, int[3] padding) -> Tensor + self: max_pool_double_backward(grad, indices, 3) + indices: non_differentiable + result: auto_linear + +- name: convolution(Tensor input, Tensor weight, Tensor? bias, SymInt[] stride, SymInt[] padding, SymInt[] dilation, bool transposed, SymInt[] output_padding, SymInt groups) -> Tensor + input, weight, bias: "grad.defined() ? convolution_backward_symint(grad, input, weight, bias->sym_sizes(), stride, padding, dilation, transposed, output_padding, groups, grad_input_mask) : std::tuple()" + result: convolution_jvp(input_p, input_t, weight_p, weight_t, bias_p, bias_t, stride, padding, dilation, transposed, output_padding, groups) + +# TorchScript serializes calls to _convolution so this entry is present until that is changed to use convolution. +# Note that the benchmark, deterministic, cudnn_enabled, and allow_tf32 flags are queried from the global context +# by convolution_backward instead of being passed along from the forward pass. +- name: _convolution(Tensor input, Tensor weight, Tensor? bias, SymInt[] stride, SymInt[] padding, SymInt[] dilation, bool transposed, SymInt[] output_padding, SymInt groups, bool benchmark, bool deterministic, bool cudnn_enabled, bool allow_tf32) -> Tensor + input, weight, bias: "grad.defined() ? convolution_backward_symint(grad, input, weight, bias->sym_sizes(), stride, padding, dilation, transposed, output_padding, groups, grad_input_mask) : std::tuple()" + result: _convolution_jvp(input_p, input_t, weight_p, weight_t, bias_p, bias_t, stride, padding, dilation, transposed, output_padding, groups, benchmark, deterministic, cudnn_enabled, allow_tf32) + +- name: convolution_backward(Tensor grad_output, Tensor input, Tensor weight, SymInt[]? bias_sizes, SymInt[] stride, SymInt[] padding, SymInt[] dilation, bool transposed, SymInt[] output_padding, SymInt groups, bool[3] output_mask) -> (Tensor, Tensor, Tensor) + grad_output, input, weight: _convolution_double_backward_symint(grads[0], grads[1], grads[2], grad_output, weight, input, stride, padding, dilation, transposed, output_padding, groups, grad_input_mask) + result0: std::get<0>(convolution_backward_symint(grad_output_p, input_p, weight_t, bias_sizes, stride, padding, dilation, transposed, output_padding, groups, {true, false, false})) + std::get<0>(convolution_backward_symint(grad_output_t, input_p, weight_p, bias_sizes, stride, padding, dilation, transposed, output_padding, groups, {true, false, false})) + result1: std::get<1>(convolution_backward_symint(grad_output_p, input_t, weight_p, bias_sizes, stride, padding, dilation, transposed, output_padding, groups, {false, true, false})) + std::get<1>(convolution_backward_symint(grad_output_t, input_p, weight_p, bias_sizes, stride, padding, dilation, transposed, output_padding, groups, {false, true, false})) + result2: convolution_backward_jvp_grad_bias(grad_output_t, result2) + +- name: convolution_overrideable(Tensor input, Tensor weight, Tensor? bias, SymInt[] stride, SymInt[] padding, SymInt[] dilation, bool transposed, SymInt[] output_padding, SymInt groups) -> Tensor + input, weight, bias: "grad.defined() ? convolution_backward_overrideable_symint(grad, input, weight, stride, padding, dilation, transposed, output_padding, groups, grad_input_mask) : std::tuple()" + +- name: convolution_backward_overrideable(Tensor grad_output, Tensor input, Tensor weight, SymInt[] stride, SymInt[] padding, SymInt[] dilation, bool transposed, SymInt[] output_padding, SymInt groups, bool[3] output_mask) -> (Tensor grad_input, Tensor grad_weight, Tensor grad_bias) + grad_output, input, weight: _convolution_double_backward_symint(grads[0], grads[1], grads[2], grad_output, weight, input, stride, padding, dilation, transposed, output_padding, groups, grad_input_mask) + +- name: slow_conv_transpose2d(Tensor self, Tensor weight, SymInt[2] kernel_size, Tensor? bias=None, SymInt[2] stride=1, SymInt[2] padding=0, SymInt[2] output_padding=0, SymInt[2] dilation=1) -> Tensor + self, weight, bias: "grad.defined() ? convolution_backward_symint(grad, self, weight, bias->sym_sizes(), stride, padding, dilation, true, output_padding, 1, grad_input_mask) : std::tuple()" + +- name: slow_conv_transpose3d(Tensor self, Tensor weight, SymInt[3] kernel_size, Tensor? bias=None, SymInt[3] stride=1, SymInt[3] padding=0, SymInt[3] output_padding=0, SymInt[3] dilation=1) -> Tensor + self, weight, bias: "grad.defined() ? convolution_backward_symint(grad, self, weight, bias->sym_sizes(), stride, padding, dilation, true, output_padding, 1, grad_input_mask) : std::tuple()" + +- name: _slow_conv2d_forward(Tensor self, Tensor weight, SymInt[2] kernel_size, Tensor? bias, SymInt[2] stride, SymInt[2] padding) -> Tensor + self, weight, bias: "grad.defined() ? _slow_conv2d_backward_symint(grad, self, weight, kernel_size, stride, padding, grad_input_mask) : std::tuple()" + +- name: _slow_conv2d_backward.output_mask(Tensor grad_output, Tensor self, Tensor weight, SymInt[2] kernel_size, SymInt[2] stride, SymInt[2] padding, bool[3] output_mask) -> (Tensor grad_input, Tensor grad_weight, Tensor grad_bias) + grad_output, self, weight: _convolution_double_backward_symint(grads[0], grads[1], grads[2], grad_output, weight, self, stride, padding, {{1, 1}}, false, {{0, 0}}, 1, grad_input_mask) + +- name: _conv_depthwise2d(Tensor self, Tensor weight, SymInt[2] kernel_size, Tensor? bias, SymInt[2] stride, SymInt[2] padding, SymInt[2] dilation) -> Tensor + self, weight, bias: "grad.defined() ? convolution_backward_symint(grad.contiguous(), self, weight, bias->sym_sizes(), stride, padding, dilation, /*transposed=*/ false, /*output_padding=*/ {{0, 0}}, /*groups=*/ 1, grad_input_mask) : std::tuple()" + +- name: conv_depthwise3d(Tensor self, Tensor weight, SymInt[3] kernel_size, Tensor? bias, SymInt[3] stride, SymInt[3] padding, SymInt[3] dilation) -> Tensor + self, weight, bias: "grad.defined() ? convolution_backward_symint(grad.contiguous(), self, weight, bias->sym_sizes(), stride, padding, dilation, /*transposed=*/ false, /*output_padding=*/ {{0, 0, 0}}, /*groups=*/ 1, grad_input_mask) : std::tuple()" + +- name: slow_conv3d_forward(Tensor self, Tensor weight, SymInt[3] kernel_size, Tensor? bias, SymInt[3] stride, SymInt[3] padding) -> Tensor + self, weight, bias: "grad.defined() ? convolution_backward_symint(grad, self, weight, bias->sym_sizes(), stride, padding, /*dilation=*/ {{1, 1, 1}}, false, /*output_padding=*/ {{0, 0, 0}}, 1, grad_input_mask) : std::tuple()" + +- name: slow_conv_dilated2d(Tensor self, Tensor weight, SymInt[2] kernel_size, Tensor? bias=None, SymInt[2] stride=1, SymInt[2] padding=0, SymInt[2] dilation=1) -> Tensor + self, weight, bias: "grad.defined() ? convolution_backward_symint(grad, self, weight, bias->sym_sizes(), stride, padding, dilation, false, std::vector(padding.size(), 0), 1, grad_input_mask) : std::tuple()" + +- name: slow_conv_dilated3d(Tensor self, Tensor weight, SymInt[3] kernel_size, Tensor? bias=None, SymInt[3] stride=1, SymInt[3] padding=0, SymInt[3] dilation=1) -> Tensor + self, weight, bias: "grad.defined() ? convolution_backward_symint(grad, self, weight, bias->sym_sizes(), stride, padding, dilation, false, std::vector(padding.size(), 0), 1, grad_input_mask) : std::tuple()" + +- name: col2im(Tensor self, SymInt[2] output_size, int[2] kernel_size, int[2] dilation, int[2] padding, int[2] stride) -> Tensor + self: im2col(grad, kernel_size, dilation, padding, stride) + result: auto_linear + +- name: im2col(Tensor self, int[2] kernel_size, int[2] dilation, int[2] padding, int[2] stride) -> Tensor + self: col2im_symint(grad, {self.sym_size(-2), self.sym_size(-1)}, kernel_size, dilation, padding, stride) + result: auto_linear + +- name: _adaptive_avg_pool2d_backward(Tensor grad_output, Tensor self) -> Tensor + grad_output: _adaptive_avg_pool2d_symint(grad, {grad_output.sym_size(-2), grad_output.sym_size(-1)}) + self: zeros_like(self) + result: _adaptive_avg_pool2d_backward(grad_output_t, self_p) + +- name: _adaptive_avg_pool3d_backward(Tensor grad_output, Tensor self) -> Tensor + grad_output: _adaptive_avg_pool3d_symint(grad, { grad_output.sym_size(-3), grad_output.sym_size(-2), grad_output.sym_size(-1) }) + self: zeros_like(self) + result: _adaptive_avg_pool3d_backward(grad_output_t, self_p) + +- name: adaptive_max_pool2d_backward(Tensor grad_output, Tensor self, Tensor indices) -> Tensor + grad_output: max_pool_double_backward(grad, indices, 2) + self: zeros_like(self) + result: auto_linear + +- name: adaptive_max_pool3d_backward(Tensor grad_output, Tensor self, Tensor indices) -> Tensor + grad_output: max_pool_double_backward(grad, indices, 3) + self: zeros_like(self) + result: auto_linear + +- name: avg_pool2d_backward(Tensor grad_output, Tensor self, int[2] kernel_size, int[2] stride, int[2] padding, bool ceil_mode, bool count_include_pad, int? divisor_override) -> Tensor + grad_output: avg_pool2d(grad, kernel_size, stride, padding, ceil_mode, count_include_pad, divisor_override) + self: zeros_like(self) + result: avg_pool2d_backward(grad_output_t, self_p, kernel_size, stride, padding, ceil_mode, count_include_pad, divisor_override) + +- name: avg_pool3d_backward(Tensor grad_output, Tensor self, int[3] kernel_size, int[3] stride, int[3] padding, bool ceil_mode, bool count_include_pad, int? divisor_override) -> Tensor + grad_output: avg_pool3d(grad, kernel_size, stride, padding, ceil_mode, count_include_pad, divisor_override) + self: zeros_like(self) + result: avg_pool3d_backward(grad_output_t, self_p, kernel_size, stride, padding, ceil_mode, count_include_pad, divisor_override) + +- name: elu_backward(Tensor grad_output, Scalar alpha, Scalar scale, Scalar input_scale, bool is_result, Tensor self_or_result) -> Tensor + grad_output: elu_backward(grad, alpha, scale, input_scale, is_result, self_or_result) + self_or_result: elu_double_backward(grad, grad_output, alpha, scale, input_scale, is_result, self_or_result) + result: elu_backward(grad_output_t, alpha, scale, input_scale, is_result, self_or_result_p) + elu_double_backward(self_or_result_t, grad_output_p, alpha, scale, input_scale, is_result, self_or_result_p) + +- name: fractional_max_pool2d_backward(Tensor grad_output, Tensor self, int[2] kernel_size, int[2] output_size, Tensor indices) -> Tensor + grad_output: max_pool_double_backward(grad, indices, 2) + self: zeros_like(self) + result: auto_linear + +- name: fractional_max_pool3d_backward(Tensor grad_output, Tensor self, int[3] kernel_size, int[3] output_size, Tensor indices) -> Tensor + grad_output: max_pool_double_backward(grad, indices, 3) + self: zeros_like(self) + result: auto_linear + +- name: glu_backward(Tensor grad_output, Tensor self, int dim) -> Tensor + grad_output: glu_double_backward_grad_output(grad, self, dim) + self: glu_double_backward(grad, grad_output, self, dim) + result: glu_backward_jvp(result, grad_output_p, self_p, grad_output_t, self_t, dim) + +- name: hardtanh_backward(Tensor grad_output, Tensor self, Scalar min_val, Scalar max_val) -> Tensor + grad_output: hardtanh_backward(grad, self, min_val, max_val) + self: zeros_like(grad) + result: at::where((self_p > min_val).logical_and(self_p < max_val), grad_output_t, at::zeros({}, result.options()).expand_as(result)) + +- name: log_sigmoid_backward(Tensor grad_output, Tensor self, Tensor buffer) -> Tensor + grad_output: log_sigmoid_backward(grad, self, buffer) + self: log_sigmoid_double_backward(grad * grad_output, self) + result: log_sigmoid_backward(grad_output_t, self_p, buffer) + log_sigmoid_double_backward(self_t * grad_output_p, self_p) + +- name: _log_softmax_backward_data(Tensor grad_output, Tensor output, int dim, ScalarType input_dtype) -> Tensor + grad_output: grad.to(output.dtype()) - (grad.to(output.dtype()) * output.exp()).sum(dim, true) + output: (-grad_output.sum(dim, true) * output.exp() * grad.to(output.dtype())).to(output.dtype()) + +- name: leaky_relu_backward(Tensor grad_output, Tensor self, Scalar negative_slope, bool self_is_result) -> Tensor + # self_is_result is always false here since double backward call is an out-of-place call, self is input itself + grad_output: leaky_relu_backward(grad, self, negative_slope, false) + self: zeros_like(grad) + # leaky_relu_backward(grad_output, self, negative_slope, false) + # computes grad_output * at::where(self_p > 0, 1, negative_slope) + # so the jvp formula is the following: + # grad_output_t * at::where(self_p > 0, self_p.new_ones([]), negative_slope); + # + # leaky_relu_backward(grad_output, result, negative_slope, true) + # computes grad_output * at::where(result > 0, 1, negative_slope) + # under the assumption that `negative_slope` is positive (otherwise, + # it is not possible to compute the gradient). + # + # so the jvp formula is the following: + # grad_output_t * at::where(result_p > 0, result_p.new_ones([]), negative_slope); + # with the assumption that negative_slope is positive. + # + # Combined together that results in the following optimized kernel which + # also checks the assumption that negative_slope is positive when self_is_result + # is True: + result: leaky_relu_backward(grad_output_t, self_p, negative_slope, self_is_result) + +# This derivative is mps-only, and `error_for_max_pool2d_double_backward` just raises an error. +- name: max_pool2d_backward(Tensor grad_output, Tensor self, int[2] kernel_size, int[2] stride=[], int[2] padding=0, int[2] dilation=1, bool ceil_mode=False) -> Tensor + grad_output: error_for_max_pool2d_double_backward() + self: zeros_like(self) + result: auto_linear + +- name: max_pool2d_with_indices_backward(Tensor grad_output, Tensor self, int[2] kernel_size, int[2] stride, int[2] padding, int[2] dilation, bool ceil_mode, Tensor indices) -> Tensor + grad_output: max_pool_double_backward(grad, indices, 2) + self: zeros_like(self) + indices: non_differentiable + result: auto_linear + +- name: max_pool3d_with_indices_backward(Tensor grad_output, Tensor self, int[3] kernel_size, int[3] stride, int[3] padding, int[3] dilation, bool ceil_mode, Tensor indices) -> Tensor + grad_output: max_pool_double_backward(grad, indices, 3) + self: zeros_like(self) + indices: non_differentiable + result: auto_linear + +- name: mse_loss_backward(Tensor grad_output, Tensor self, Tensor target, int reduction) -> Tensor + grad_output: mse_loss_backward(grad, self, target, reduction) + self: mse_loss_double_backward(grad * grad_output, self, reduction) + target: -mse_loss_double_backward(grad * grad_output, target, reduction) + result: " mse_loss_double_backward(self_t * grad_output_p, self_p, reduction) + - mse_loss_double_backward(target_t * grad_output_p, target_p, reduction) + + mse_loss_backward(grad_output_t, self_p, target_p, reduction) + " + +- name: nll_loss_backward(Tensor grad_output, Tensor self, Tensor target, Tensor? weight, int reduction, SymInt ignore_index, Tensor total_weight) -> Tensor + grad_output: nll_loss_symint(grad, target, weight, reduction, ignore_index) + self: zeros_like(grad) + target: non_differentiable + +- name: nll_loss2d_backward(Tensor grad_output, Tensor self, Tensor target, Tensor? weight, int reduction, SymInt ignore_index, Tensor total_weight) -> Tensor + grad_output: nll_loss2d_symint(grad, target, weight, reduction, ignore_index) + self: zeros_like(grad) + target: non_differentiable + +- name: rrelu_with_noise_backward(Tensor grad_output, Tensor self, Tensor noise, Scalar lower, Scalar upper, bool training, bool self_is_result) -> Tensor + # self_is_result is always false here since double backward call is an out-of-place call, self is input itself + grad_output: rrelu_with_noise_backward(grad, self, noise, lower, upper, training, false) + self: zeros_like(grad) + result: rrelu_with_noise_backward(grad_output_t, self_p, noise, lower, upper, training, false) + +- name: reflection_pad1d_backward(Tensor grad_output, Tensor self, SymInt[2] padding) -> Tensor + grad_output: reflection_pad1d_symint(grad, padding) + self: zeros_like(self) + result: reflection_pad1d_backward_symint(grad_output_t, self_p, padding) + +- name: reflection_pad2d_backward(Tensor grad_output, Tensor self, SymInt[4] padding) -> Tensor + grad_output: reflection_pad2d_symint(grad, padding) + self: zeros_like(self) + result: reflection_pad2d_backward_symint(grad_output_t, self_p, padding) + +- name: reflection_pad3d_backward(Tensor grad_output, Tensor self, SymInt[6] padding) -> Tensor + grad_output: reflection_pad3d_symint(grad, padding) + self: zeros_like(self) + result: reflection_pad3d_backward_symint(grad_output_t, self_p, padding) + +- name: replication_pad1d_backward(Tensor grad_output, Tensor self, SymInt[2] padding) -> Tensor + grad_output: replication_pad1d_symint(grad, padding) + self: zeros_like(self) + result: replication_pad1d_backward_symint(grad_output_t, self_p, padding) + +- name: replication_pad2d_backward(Tensor grad_output, Tensor self, SymInt[4] padding) -> Tensor + grad_output: replication_pad2d_symint(grad, padding) + self: zeros_like(self) + result: replication_pad2d_backward_symint(grad_output_t, self_p, padding) + +- name: replication_pad3d_backward(Tensor grad_output, Tensor self, SymInt[6] padding) -> Tensor + grad_output: replication_pad3d_symint(grad, padding) + self: zeros_like(self) + result: replication_pad3d_backward_symint(grad_output_t, self_p, padding) + +- name: sparse_sampled_addmm(Tensor self, Tensor mat1, Tensor mat2, *, Scalar beta=1, Scalar alpha=1) -> Tensor + self, mat1, mat2: "sparse_sampled_addmm_backward(grad, + self, + wrap_opt_if(mat1, grad_input_mask[2]), + wrap_opt_if(mat2, grad_input_mask[1]), + alpha, beta, grad_input_mask)" + +- name: _sparse_mm_reduce_impl(Tensor self, Tensor other, str reduce) -> (Tensor, Tensor) + output_differentiability: [True, False] + self, other: "grad.defined() ? _sparse_mm_reduce_impl_backward(self, grad, other, reduce, result1, grad_input_mask) : std::tuple()" + +- name: smooth_l1_loss_backward(Tensor grad_output, Tensor self, Tensor target, int reduction, float beta) -> Tensor + grad_output: smooth_l1_loss_backward(grad, self, target, reduction, beta) + self: smooth_l1_loss_double_backward(grad * grad_output, self, target, reduction, beta) + target: -smooth_l1_loss_double_backward(grad * grad_output, self, target, reduction, beta) + result: " smooth_l1_loss_double_backward(self_t * grad_output_p, self_p, target_p, reduction, beta) + - smooth_l1_loss_double_backward(target_t * grad_output_p, self_p, target_p, reduction, beta) + + smooth_l1_loss_backward(grad_output_t, self_p, target_p, reduction, beta) + " + +- name: huber_loss_backward(Tensor grad_output, Tensor self, Tensor target, int reduction, float delta) -> Tensor + grad_output: huber_loss_double_backward_grad_output(grad, grad_output, self, target, reduction, delta) + self: huber_loss_double_backward(grad * grad_output, self, target, reduction, delta) + target: -huber_loss_double_backward(grad * grad_output, self, target, reduction, delta) + +- name: softplus_backward(Tensor grad_output, Tensor self, Scalar beta, Scalar threshold) -> Tensor + grad_output: softplus_backward(grad, self, beta, threshold) + self: softplus_double_backward(grad * grad_output, self, beta, threshold) + result: "softplus_backward(grad_output_t, self_p, beta, threshold) + + softplus_double_backward(self_t * grad_output_p, self_p, beta, threshold)" + +- name: _softmax_backward_data(Tensor grad_output, Tensor output, int dim, ScalarType input_dtype) -> Tensor + grad_output: _softmax_backward_data(grad.to(output.dtype()), output, dim, input_dtype) + output: softmax_double_backward(grad.to(output.dtype()), grad_output, dim, output).to(output.dtype()) + +- name: soft_margin_loss_backward(Tensor grad_output, Tensor self, Tensor target, int reduction) -> Tensor + grad_output: soft_margin_loss_double_backward_grad_output(grad, grad_output, self, target, reduction) + self: soft_margin_loss_double_backward(grad * grad_output, self, target, reduction) + +- name: softshrink_backward(Tensor grad_output, Tensor self, Scalar lambd) -> Tensor + grad_output: softshrink_backward(grad, self, lambd) + self: zeros_like(grad) + result: at::where((self_p > lambd).logical_or(self_p < -lambd), grad_output_t, at::zeros({}, result.options()).expand_as(result)) + +- name: threshold_backward(Tensor grad_output, Tensor self, Scalar threshold) -> Tensor + grad_output: threshold_backward(grad, self, threshold) + self: zeros_like(grad) + result: zeros_like(self_t) + threshold_backward(grad_output_t, self_p, threshold) + +- name: upsample_linear1d_backward(Tensor grad_output, SymInt[1] output_size, SymInt[3] input_size, bool align_corners, float? scales=None) -> Tensor + grad_output: upsample_linear1d_symint(grad, output_size, align_corners, scales) + result: auto_linear + +- name: upsample_bilinear2d_backward(Tensor grad_output, SymInt[2] output_size, SymInt[4] input_size, bool align_corners, float? scales_h=None, float? scales_w=None) -> Tensor + grad_output: upsample_bilinear2d_symint(grad, output_size, align_corners, scales_h, scales_w) + result: auto_linear + +- name: _upsample_bilinear2d_aa_backward(Tensor grad_output, SymInt[2] output_size, SymInt[4] input_size, bool align_corners, float? scales_h=None, float? scales_w=None) -> Tensor + grad_output: _upsample_bilinear2d_aa_symint(grad, output_size, align_corners, scales_h, scales_w) + result: auto_linear + +- name: upsample_bicubic2d_backward(Tensor grad_output, SymInt[2] output_size, SymInt[4] input_size, bool align_corners, float? scales_h=None, float? scales_w=None) -> Tensor + grad_output: upsample_bicubic2d_symint(grad, output_size, align_corners, scales_h, scales_w) + result: auto_linear + +- name: _upsample_bicubic2d_aa_backward(Tensor grad_output, SymInt[2] output_size, SymInt[4] input_size, bool align_corners, float? scales_h=None, float? scales_w=None) -> Tensor + grad_output: _upsample_bicubic2d_aa_symint(grad, output_size, align_corners, scales_h, scales_w) + result: auto_linear + +- name: _upsample_lanczos2d_aa_backward(Tensor grad_output, SymInt[2] output_size, SymInt[4] input_size, bool align_corners, float? scales_h=None, float? scales_w=None) -> Tensor + grad_output: _upsample_lanczos2d_aa_symint(grad, output_size, align_corners, scales_h, scales_w) + result: auto_linear + +- name: upsample_trilinear3d_backward(Tensor grad_output, SymInt[3] output_size, SymInt[5] input_size, bool align_corners, float? scales_d=None, float? scales_h=None, float? scales_w=None) -> Tensor + grad_output: upsample_trilinear3d_symint(grad, output_size, align_corners, scales_d, scales_h, scales_w) + result: auto_linear + +- name: upsample_nearest1d_backward(Tensor grad_output, SymInt[1] output_size, SymInt[3] input_size, float? scales=None) -> Tensor + grad_output: upsample_nearest1d_symint(grad, output_size, scales) + result: auto_linear + +- name: _upsample_nearest_exact1d_backward(Tensor grad_output, SymInt[1] output_size, SymInt[3] input_size, float? scales=None) -> Tensor + grad_output: _upsample_nearest_exact1d_symint(grad, output_size, scales) + result: auto_linear + +- name: upsample_nearest2d_backward(Tensor grad_output, SymInt[2] output_size, SymInt[4] input_size, float? scales_h=None, float? scales_w=None) -> Tensor + grad_output: upsample_nearest2d_symint(grad, output_size, scales_h, scales_w) + result: auto_linear + +- name: _upsample_nearest_exact2d_backward(Tensor grad_output, SymInt[2] output_size, SymInt[4] input_size, float? scales_h=None, float? scales_w=None) -> Tensor + grad_output: _upsample_nearest_exact2d_symint(grad, output_size, scales_h, scales_w) + result: auto_linear + +- name: upsample_nearest3d_backward(Tensor grad_output, SymInt[3] output_size, SymInt[5] input_size, float? scales_d=None, float? scales_h=None, float? scales_w=None) -> Tensor + grad_output: upsample_nearest3d_symint(grad, output_size, scales_d, scales_h, scales_w) + result: auto_linear + +- name: _upsample_nearest_exact3d_backward(Tensor grad_output, SymInt[3] output_size, SymInt[5] input_size, float? scales_d=None, float? scales_h=None, float? scales_w=None) -> Tensor + grad_output: _upsample_nearest_exact3d_symint(grad, output_size, scales_d, scales_h, scales_w) + result: auto_linear + +- name: sigmoid_backward(Tensor grad_output, Tensor output) -> Tensor + grad_output: sigmoid_backward(grad, output.conj()) + output: grad.conj() * grad_output * (-2 * output.conj() + 1) + result: sigmoid_backward(grad_output_t, output_p) + output_t.conj() * grad_output_p * (-2 * output_p.conj() + 1) + +- name: tanh_backward(Tensor grad_output, Tensor output) -> Tensor + grad_output: tanh_backward(grad, output.conj()) + output: grad.conj() * (-2 * output.conj() * grad_output) + result: tanh_backward(grad_output_t, output_p) + output_t.conj() * (-2 * output_p.conj() * grad_output_p) + +# cudnn +- name: _cudnn_ctc_loss(Tensor log_probs, Tensor targets, int[] input_lengths, int[] target_lengths, int blank, bool deterministic, bool zero_infinity) -> (Tensor, Tensor) + log_probs: _cudnn_ctc_loss_backward(grad, result0, result1, zero_infinity) + +- name: _cudnn_ctc_loss.Tensor(Tensor log_probs, Tensor targets, Tensor input_lengths, Tensor target_lengths, int blank, bool deterministic, bool zero_infinity) -> (Tensor, Tensor) + log_probs: _cudnn_ctc_loss_backward(grad, result0, result1, zero_infinity) + +- name: cudnn_convolution_transpose(Tensor self, Tensor weight, SymInt[] padding, SymInt[] output_padding, SymInt[] stride, SymInt[] dilation, SymInt groups, bool benchmark, bool deterministic, bool allow_tf32) -> Tensor + self, weight: "_cudnn_convolution_backward(self, grad, weight, padding, output_padding, stride, dilation, true, groups, {grad_input_mask[0], grad_input_mask[1]})" + +- name: _mps_convolution_transpose(Tensor self, Tensor weight, SymInt[] padding, SymInt[] output_padding, SymInt[] stride, SymInt[] dilation, SymInt groups) -> Tensor + self, weight: "grad.defined() ? mps_convolution_transpose_backward_symint(self, grad, weight, padding, output_padding, stride, dilation, groups, grad_input_mask) : std::tuple()" + +- name: cudnn_convolution(Tensor self, Tensor weight, SymInt[] padding, SymInt[] stride, SymInt[] dilation, SymInt groups, bool benchmark, bool deterministic, bool allow_tf32) -> Tensor + self, weight: "_cudnn_convolution_backward(self, grad, weight, padding, std::vector(padding.size(), 0), stride, dilation, false, groups, {grad_input_mask[0], grad_input_mask[1]})" + +- name: cudnn_grid_sampler(Tensor self, Tensor grid) -> Tensor output + self, grid: "grad.defined() ? cudnn_grid_sampler_backward(self, grid, grad) : std::tuple()" + +- name: cudnn_grid_sampler_backward(Tensor self, Tensor grid, Tensor grad_output) -> (Tensor grad_self, Tensor grad_grid) + grad_output, self, grid: grid_sampler_2d_double_backward(grads[0], grads[1], grad_output, self, grid, 0, 0, true, grad_input_mask) + +- name: cudnn_affine_grid_generator(Tensor theta, int N, int C, int H, int W) -> Tensor grid + theta: cudnn_affine_grid_generator_backward(grad, N, C, H, W) + +# NB: Why is the backwards here so complicated? CuDNN cannot be used to compute +# backward in evaluation mode, because the math for backward in evaluation mode +# is different (since the forward math is different), and CuDNN does not support +# it. And in any case, you shouldn't be using this bn in evaluation mode, +# because it should be merged into the previous convolution (left for future +# work.) +# NB2: The quotes around the gradient are needed to appease YAML parsing rules. +- name: cudnn_batch_norm(Tensor input, Tensor weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, float exponential_average_factor, float epsilon) -> (Tensor, Tensor, Tensor, Tensor) + input, weight, bias: "grad.defined() ? (training ? cudnn_batch_norm_backward(input, grad.contiguous(input.suggest_memory_format()), weight, running_mean, running_var, result1, result2, epsilon, retain_variables ? result3.clone() : result3) : native_batch_norm_backward(grad, input, weight, running_mean, running_var, result1, result2, training, epsilon, grad_input_mask)) : std::tuple()" + result0: batch_norm_jvp(input_p, input_t, weight_p, weight_t, bias_p, bias_t, running_mean, running_var, result1, result2, training, epsilon) + +# HACK: save_mean and save_var are going to be passed in as +# requires_grad variables (even though we'll never backprop through +# them) so we need to prevent the unpacking from triggering an error. +- name: cudnn_batch_norm_backward(Tensor input, Tensor grad_output, Tensor weight, Tensor? running_mean, Tensor? running_var, Tensor? save_mean, Tensor? save_var, float epsilon, Tensor reserveSpace) -> (Tensor, Tensor, Tensor) + save_mean: not_implemented("cudnn_batch_norm_backward save_mean") + save_var: not_implemented("cudnn_batch_norm_backward save_var") + reserveSpace: not_implemented("cudnn_batch_norm_backward reserveSpace") + input, weight, grad_output: batchnorm_double_backward(input, weight, grads[0], grads[1], grads[2], grad_output, running_mean, running_var, true, epsilon, save_mean, save_var, grad_input_mask) + +# nnpack + +- name: _nnpack_spatial_convolution(Tensor input, Tensor weight, Tensor? bias, SymInt[2] padding, SymInt[2] stride=1) -> Tensor + # NNPACK does not support strided convolutions in the backwards path, which is the reason why we are using the closest available function that does here. + input, weight, bias: "grad.defined() ? convolution_backward_symint(grad, input, weight, bias->sym_sizes(), stride, padding, std::vector(padding.size(), 1), false, std::vector(padding.size(), 0), 1, grad_input_mask) : std::tuple()" + +#LSTM MPS +- name: _lstm_mps(Tensor input, Tensor[] hx, Tensor[] params, bool has_biases, int num_layers, float dropout, bool train, bool bidirectional, bool batch_first) -> (Tensor, Tensor, Tensor, Tensor, Tensor, Tensor) + output_differentiability: [True, True, True, False, False, False] + input, hx, params: "lstm_mps_backward(grads[0], grads[1], grads[2], result3, result4, input, result5, hx, params, has_biases, num_layers, dropout, train, bidirectional, batch_first)" + +- name: lstm_mps_backward(Tensor? grad_y, Tensor? grad_hy, Tensor? grad_cy, Tensor z_state, Tensor cell_state_fwd, Tensor input, Tensor layersOutputs, Tensor[] hx, Tensor[] params, bool has_biases, int num_layers, float dropout, bool train, bool bidirectional, bool batch_first) -> (Tensor, Tensor[], Tensor[]) + + + +# Only frst three of _cudnn_rnn outputs can have gradients. +# _cudnn_rnn outputs: (output, hy, cy, reserve, weight_buf) +- name: _cudnn_rnn(Tensor input, Tensor[] weight, int weight_stride0, Tensor? weight_buf, Tensor hx, Tensor? cx, int mode, SymInt hidden_size, SymInt proj_size, int num_layers, bool batch_first, float dropout, bool train, bool bidirectional, SymInt[] batch_sizes, Tensor? dropout_state) -> (Tensor, Tensor, Tensor, Tensor, Tensor) + dropout_state: non_differentiable + output_differentiability: [True, True, True, False, False] + input, hx, cx, weight: "_cudnn_rnn_backward_symint(input, weight, weight_stride0, result4, hx, cx, result0, grads[0], grads[1], grads[2], mode, hidden_size, proj_size, num_layers, batch_first, dropout, train, bidirectional, batch_sizes, dropout_state, retain_variables ? result3.clone() : result3, grad_input_mask)" + +- name: _cudnn_rnn_backward(Tensor input, Tensor[] weight, int weight_stride0, Tensor weight_buf, Tensor hx, Tensor? cx, Tensor output, Tensor? grad_output, Tensor? grad_hy, Tensor? grad_cy, int mode, SymInt hidden_size, SymInt proj_size, int num_layers, bool batch_first, float dropout, bool train, bool bidirectional, SymInt[] batch_sizes, Tensor? dropout_state, Tensor reserve, bool[4] output_mask) -> (Tensor, Tensor, Tensor, Tensor[]) + dropout_state: non_differentiable + input: not_implemented("_cudnn_rnn_backward", kCudnnDoubleBackwardMsg) + weight: not_implemented_list("_cudnn_rnn_backward", kCudnnDoubleBackwardMsg) + hx: not_implemented("_cudnn_rnn_backward", kCudnnDoubleBackwardMsg) + cx: not_implemented("_cudnn_rnn_backward", kCudnnDoubleBackwardMsg) + output: not_implemented("_cudnn_rnn_backward", kCudnnDoubleBackwardMsg) + grad_output: not_implemented("_cudnn_rnn_backward", kCudnnDoubleBackwardMsg) + grad_hy: not_implemented("_cudnn_rnn_backward", kCudnnDoubleBackwardMsg) + grad_cy: not_implemented("_cudnn_rnn_backward", kCudnnDoubleBackwardMsg) + +# miopen + +- name: miopen_convolution_transpose(Tensor self, Tensor weight, Tensor? bias, SymInt[] padding, SymInt[] output_padding, SymInt[] stride, SymInt[] dilation, SymInt groups, bool benchmark, bool deterministic) -> Tensor + self, weight, bias: "grad.defined() ? convolution_backward_symint(grad, self, weight, bias->sym_sizes(), stride, padding, dilation, true, output_padding, groups, grad_input_mask) : std::tuple()" + +- name: miopen_convolution(Tensor self, Tensor weight, Tensor? bias, SymInt[] padding, SymInt[] stride, SymInt[] dilation, SymInt groups, bool benchmark, bool deterministic) -> Tensor + self, weight, bias: "grad.defined() ? convolution_backward_symint(grad, self, weight, bias->sym_sizes(), stride, padding, dilation, false, std::vector(padding.size(), 0), groups, grad_input_mask) : std::tuple()" + +- name: miopen_depthwise_convolution(Tensor self, Tensor weight, Tensor? bias, SymInt[] padding, SymInt[] stride, SymInt[] dilation, SymInt groups, bool benchmark, bool deterministic) -> Tensor + self, weight, bias: "grad.defined() ? convolution_backward_symint(grad, self, weight, bias->sym_sizes(), stride, padding, dilation, false, std::vector(padding.size(), 0), groups, grad_input_mask) : std::tuple()" + +- name: miopen_batch_norm(Tensor input, Tensor weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, float exponential_average_factor, float epsilon) -> (Tensor, Tensor, Tensor) + input, weight, bias: "grad.defined() ? (training ? miopen_batch_norm_backward(input, grad.contiguous(input.suggest_memory_format()), weight, running_mean, running_var, result1, result2, epsilon) : native_batch_norm_backward(grad, input, weight, running_mean, running_var, result1, result2, training, epsilon, grad_input_mask)) : std::tuple()" + result0: batch_norm_jvp(input_p, input_t, weight_p, weight_t, bias_p, bias_t, running_mean, running_var, result1, result2, training, epsilon) + +- name: miopen_batch_norm_backward(Tensor input, Tensor grad_output, Tensor weight, Tensor? running_mean, Tensor? running_var, Tensor? save_mean, Tensor? save_var, float epsilon) -> (Tensor, Tensor, Tensor) + save_mean: not_implemented("miopen_batch_norm_backward save_mean") + save_var: not_implemented("miopen_batch_norm_backward save_var") + input, weight, grad_output: batchnorm_double_backward(input, weight, grads[0], grads[1], grads[2], grad_output, running_mean, running_var, true, epsilon, save_mean, save_var, grad_input_mask) + +- name: miopen_rnn(Tensor input, Tensor[] weight, int weight_stride0, Tensor hx, Tensor? cx, int mode, int hidden_size, int num_layers, bool batch_first, float dropout, bool train, bool bidirectional, int[] batch_sizes, Tensor? dropout_state) -> (Tensor, Tensor, Tensor, Tensor, Tensor) + dropout_state: non_differentiable + output_differentiability: [True, True, True, False, False] + input, hx, cx, weight: "miopen_rnn_backward(input, weight, weight_stride0, result4, hx, cx, result0, grads[0], grads[1], grads[2], mode, hidden_size, num_layers, batch_first, dropout, train, bidirectional, batch_sizes, dropout_state, retain_variables ? result3.clone() : result3, grad_input_mask)" + +- name: miopen_rnn_backward(Tensor input, Tensor[] weight, int weight_stride0, Tensor weight_buf, Tensor hx, Tensor? cx, Tensor output, Tensor? grad_output, Tensor? grad_hy, Tensor? grad_cy, int mode, int hidden_size, int num_layers, bool batch_first, float dropout, bool train, bool bidirectional, int[] batch_sizes, Tensor? dropout_state, Tensor reserve, bool[4] output_mask) -> (Tensor, Tensor, Tensor, Tensor[]) + dropout_state: non_differentiable + +- name: miopen_ctc_loss(Tensor log_probs, Tensor targets, int[] input_lengths, int[] target_lengths, int blank, bool deterministic, bool zero_infinity) -> (Tensor, Tensor) + log_probs: _miopen_ctc_loss_backward(grad, result0, result1, zero_infinity) + +- name: miopen_ctc_loss.Tensor(Tensor log_probs, Tensor targets, Tensor input_lengths, Tensor target_lengths, int blank, bool deterministic, bool zero_infinity) -> (Tensor, Tensor) + log_probs: _miopen_ctc_loss_backward(grad, result0, result1, zero_infinity) + +- name: mkldnn_rnn_layer(Tensor input, Tensor weight0, Tensor weight1, Tensor weight2, Tensor weight3, Tensor hx_, Tensor cx_, bool reverse, int[] batch_sizes, int mode, int hidden_size, int num_layers, bool has_biases, bool bidirectional, bool batch_first, bool train) -> (Tensor, Tensor, Tensor, Tensor) + output_differentiability: [True, True, True, False] + input, weight0, weight1, weight2, weight3, hx_, cx_: "GradMode::is_enabled() ? mkldnn_rnn_layer_differentiable_backward(input, weight0, weight1, weight2, weight3, hx_, cx_, result0, result1, result2, grads[0], grads[1], grads[2], reverse, mode, hidden_size, num_layers, has_biases, train, bidirectional, batch_sizes, batch_first, result3) : mkldnn_rnn_layer_backward(input, weight0, weight1, weight2, weight3, hx_, cx_, result0, result1, result2, grads[0], grads[1], grads[2], reverse, mode, hidden_size, num_layers, has_biases, train, bidirectional, batch_sizes, batch_first, result3)" + +- name: mkldnn_rnn_layer_backward(Tensor input, Tensor weight1, Tensor weight2, Tensor weight3, Tensor weight4, Tensor hx_, Tensor cx_tmp, Tensor output, Tensor hy_, Tensor cy_, Tensor? grad_output, Tensor? grad_hy, Tensor? grad_cy, bool reverse, int mode, int hidden_size, int num_layers, bool has_biases, bool train, bool bidirectional, int[] batch_sizes, bool batch_first, Tensor workspace) -> (Tensor, Tensor, Tensor, Tensor, Tensor, Tensor, Tensor) + +# mkldnn +- name: mkldnn_convolution(Tensor self, Tensor weight, Tensor? bias, SymInt[] padding, SymInt[] stride, SymInt[] dilation, SymInt groups) -> Tensor + self, weight, bias: "grad.defined() ? convolution_backward_symint(grad, self, weight, bias->sym_sizes(), stride, padding, dilation, /*transposed=*/ false, /*output_padding=*/ std::vector(padding.size(), 0), groups, grad_input_mask) : std::tuple()" + +- name: mkldnn_linear(Tensor self, Tensor weight, Tensor? bias=None) -> Tensor + self, weight, bias: mkldnn_linear_backward(self, grad, weight, grad_input_mask) + +- name: mkldnn_max_pool2d(Tensor self, int[2] kernel_size, int[2] stride=[], int[2] padding=0, int[2] dilation=1, bool ceil_mode=False) -> Tensor + self: mkldnn_max_pool2d_backward(grad, result, self, kernel_size, stride, padding, dilation, ceil_mode) + +- name: mkldnn_max_pool3d(Tensor self, int[3] kernel_size, int[3] stride=[], int[3] padding=0, int[3] dilation=1, bool ceil_mode=False) -> Tensor + self: mkldnn_max_pool3d_backward(grad, result, self, kernel_size, stride, padding, dilation, ceil_mode) + +- name: mkldnn_adaptive_avg_pool2d(Tensor self, int[2] output_size) -> Tensor + self: mkldnn_adaptive_avg_pool2d_backward(grad, self) + +- name: _mkldnn_reshape(Tensor self, int[] shape) -> Tensor + self: grad.reshape_symint(self.sym_sizes()) + +# NestedTensor +- name: _nested_tensor_from_tensor_list(Tensor[] list, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + list: "grad.defined()? at::unbind(grad) : std::vector(list.size())" + +- name: _nested_tensor_from_mask(Tensor t, Tensor mask, bool mask_check=True) -> Tensor + t: grad.to_padded_tensor_symint(0, t.sym_sizes()) + mask: non_differentiable + +- name: _nested_from_padded(Tensor padded, Tensor cpu_nested_shape_example, bool fuse_transform_0213=False) -> Tensor + padded: _nested_from_padded_backward(grad, padded, fuse_transform_0213) + cpu_nested_shape_example: non_differentiable + +- name: to_padded_tensor(Tensor self, float padding, SymInt[]? output_size=None) -> Tensor + self: "self.layout() == c10::kJagged ? at::_nested_from_padded_tensor_symint(grad, at::_nested_get_offsets(self), at::_nested_get_jagged_dummy(self), at::_nested_get_ragged_idx(self), at::_nested_get_min_seqlen(self).defined() ? std::optional(at::_nested_get_min_seqlen(self)) : ::std::nullopt, at::_nested_get_max_seqlen(self).defined() ? std::optional(at::_nested_get_max_seqlen(self)) : ::std::nullopt, std::optional(at::_nested_get_values(self).sym_size(0))) : at::_nested_from_padded(grad, self._nested_tensor_size())" + padding: non_differentiable + +- name: _nested_from_padded_tensor(Tensor padded, Tensor offsets, Tensor dummy, int ragged_idx=1, Tensor? min_seqlen=None, Tensor? max_seqlen=None, SymInt? sum_S=None) -> Tensor + padded: grad.to_padded_tensor_symint(0.0, at::OptionalArrayRef(padded.sym_sizes())) + offsets: non_differentiable + dummy: non_differentiable + +- name: _nested_view_from_buffer(Tensor(a) self, Tensor nested_size, Tensor nested_strides, Tensor offsets) -> Tensor(a) + self: grad.values() + nested_size: non_differentiable + nested_strides: non_differentiable + +- name: _nested_view_from_jagged(Tensor(a) self, Tensor offsets, Tensor dummy, Tensor? lengths=None, int ragged_idx=1, Tensor? min_seqlen=None, Tensor? max_seqlen=None) -> Tensor(a) + self: grad.values() + offsets: non_differentiable + lengths: non_differentiable + dummy: non_differentiable + min_seqlen: non_differentiable + max_seqlen: non_differentiable + +- name: _nested_get_values(Tensor(a) self) -> Tensor(a) + self: "_nested_view_from_jagged(grad, at::_nested_get_offsets(self), at::_nested_get_jagged_dummy(self), at::_nested_get_lengths(self), at::_nested_get_ragged_idx(self), at::_nested_get_min_seqlen(self).defined() ? std::optional(at::_nested_get_min_seqlen(self)) : ::std::nullopt, at::_nested_get_max_seqlen(self).defined() ? std::optional(at::_nested_get_max_seqlen(self)) : ::std::nullopt)" + +# Transformer +- name: _safe_softmax(Tensor self, int dim, ScalarType? dtype=None) -> Tensor + self: _softmax_backward_data(grad, result, dim, self.scalar_type()) + result: result * (self_t - safe_logsumexp_jvp(self_p, self_t, {dim}, true)) + +- name: _scaled_dot_product_efficient_attention(Tensor query, Tensor key, Tensor value, Tensor? attn_bias, bool compute_log_sumexp, float dropout_p=0.0, bool is_causal=False, *, float? scale=None) -> (Tensor output, Tensor log_sumexp, Tensor philox_seed, Tensor philox_offset) + output_differentiability: [True, False, False, False] + query, key, value, attn_bias: _scaled_dot_product_efficient_attention_backward(grad, query, key, value, attn_bias, output, log_sumexp, philox_seed, philox_offset, dropout_p, grad_input_mask, is_causal, scale) + +- name: _scaled_dot_product_flash_attention(Tensor query, Tensor key, Tensor value, float dropout_p=0.0, bool is_causal=False, bool return_debug_mask=False, *, float? scale=None) -> (Tensor output, Tensor logsumexp, Tensor cum_seq_q, Tensor cum_seq_k, SymInt max_q, SymInt max_k, Tensor rng_state, Tensor unused, Tensor debug_attn_mask) + output_differentiability: [True, False, False, False, False, False, False, False, False] + query, key, value: _scaled_dot_product_flash_attention_backward_symint(grad, query, key, value, output, logsumexp, cum_seq_q, cum_seq_k, max_q, max_k, dropout_p, is_causal, rng_state, unused, scale) + +- name: _scaled_dot_product_flash_attention_for_cpu(Tensor query, Tensor key, Tensor value, float dropout_p=0.0, bool is_causal=False, *, Tensor? attn_mask=None, float? scale=None) -> (Tensor output, Tensor logsumexp) + output_differentiability: [True, False] + query, key, value: _scaled_dot_product_flash_attention_for_cpu_backward(grad, query, key, value, output, logsumexp, dropout_p, is_causal, attn_mask, scale) + +- name: _flash_attention_forward(Tensor query, Tensor key, Tensor value, Tensor? cum_seq_q, Tensor? cum_seq_k, SymInt max_q, SymInt max_k, float dropout_p, bool is_causal, bool return_debug_mask, *, float? scale=None, SymInt? window_size_left=None, SymInt? window_size_right=None, Tensor? seqused_k=None, Tensor? alibi_slopes=None, Tensor? block_table=None, int? num_splits=None) -> (Tensor output, Tensor softmax_logsumexp, Tensor rng_state, Tensor unused, Tensor debug_attn_mask) + output_differentiability: [True, False, False, False, False] + query, key, value: _flash_attention_backward_symint(grad, query, key, value, output, softmax_logsumexp, cum_seq_q, cum_seq_k, max_q, max_k, dropout_p, is_causal, rng_state, unused, scale, window_size_left, window_size_right) + +- name: _efficient_attention_forward(Tensor query, Tensor key, Tensor value, Tensor? bias, Tensor? cu_seqlens_q, Tensor? cu_seqlens_k, SymInt? max_seqlen_q, SymInt? max_seqlen_k, float dropout_p, int custom_mask_type, bool compute_log_sumexp=False, *, float? scale=None, Tensor? seqlen_k=None, int? window_size=None) -> (Tensor output, Tensor logsumexp, Tensor philox_seed, Tensor philox_offset, SymInt max_seqlen_batch_q, SymInt max_seqlen_batch_k) + output_differentiability: [True, False, False, False, False, False] + query, key, value, bias: _efficient_attention_backward_symint(grad, query, key, value, bias, output, cu_seqlens_q, cu_seqlens_k, max_seqlen_batch_q, max_seqlen_batch_k, logsumexp, dropout_p, philox_seed, philox_offset, custom_mask_type, bias.requires_grad(), scale) + +- name: _cudnn_attention_forward(Tensor query, Tensor key, Tensor value, Tensor? attn_bias, Tensor? cum_seq_q, Tensor? cum_seq_k, SymInt max_q, SymInt max_k, bool compute_log_sumexp, float dropout_p=0.0, bool is_causal=False, bool return_debug_mask=False, *, float? scale=None) -> (Tensor output, Tensor logsumexp, Tensor cum_seq_q, Tensor cum_seq_k, SymInt max_q, SymInt max_k, Tensor philox_seed, Tensor philox_offset, Tensor debug_attn_mask) + output_differentiability: [True, False, False, False, False, False, False, False, False] + query, key, value: _cudnn_attention_backward_symint(grad, query, key, value, output, logsumexp, philox_seed, philox_offset, attn_bias, cum_seq_q, cum_seq_k, max_q, max_k, dropout_p, is_causal, scale) + +- name: _scaled_dot_product_cudnn_attention(Tensor query, Tensor key, Tensor value, Tensor? attn_bias, bool compute_log_sumexp, float dropout_p=0.0, bool is_causal=False, bool return_debug_mask=False, *, float? scale=None) -> (Tensor output, Tensor logsumexp, Tensor cum_seq_q, Tensor cum_seq_k, SymInt max_q, SymInt max_k, Tensor philox_seed, Tensor philox_offset, Tensor debug_attn_mask) + output_differentiability: [True, False, False, False, False, False, False, False, False] + query, key, value: _scaled_dot_product_cudnn_attention_backward_symint(grad, query, key, value, output, logsumexp, philox_seed, philox_offset, attn_bias, cum_seq_q, cum_seq_k, max_q, max_k, dropout_p, is_causal, scale) + +- name: _scaled_dot_product_fused_attention_overrideable(Tensor query, Tensor key, Tensor value, Tensor? attn_bias=None, float dropout_p=0.0, bool is_causal=False, bool return_debug_mask=False, *, float? scale=None) -> (Tensor output, Tensor logsumexp, Tensor cum_seq_q, Tensor cum_seq_k, SymInt max_q, SymInt max_k, Tensor philox_seed, Tensor philox_offset, Tensor debug_attn_mask) + output_differentiability: [True, False, False, False, False, False, False, False, False] + query, key, value, attn_bias: _scaled_dot_product_fused_attention_overrideable_backward_symint(grad, query, key, value, attn_bias, grad_input_mask, output, logsumexp, cum_seq_q, cum_seq_k, max_q, max_k, dropout_p, is_causal, philox_seed, philox_offset, scale) + +# fft +- name: _fft_r2c(Tensor self, int[] dim, int normalization, bool onesided) -> Tensor + self: fft_r2c_backward(grad, dim, normalization, onesided, self.sym_size(dim.back())) + result: auto_linear + +- name: _fft_c2r(Tensor self, int[] dim, int normalization, SymInt last_dim_size) -> Tensor + self: fft_c2r_backward(grad, dim, normalization) + result: auto_linear + +- name: _fft_c2c(Tensor self, SymInt[] dim, int normalization, bool forward) -> Tensor + self: _fft_c2c_symint(grad, dim, normalization, !forward) + result: auto_linear + +- name: unbind.int(Tensor(a -> *) self, int dim=0) -> Tensor(a)[] + dispatch: + Default: + self: unbind_backward(grads, dim) + result: auto_linear + AutogradNestedTensor: + self: "self.layout() == c10::kJagged ? unbind_backward_nested_jagged(grads, self, dim) : unbind_backward_nested(grads, at::native::get_nested_tensor_impl(self)->get_nested_sizes(), dim, self.options())" + result: auto_linear + +- name: stack(Tensor[] tensors, int dim=0) -> Tensor + tensors: stack_tensors_backward(grad, dim, to_args_scalartypes(tensors)) + result: stack_jvp(tensors, dim) + +# fused RNN kernels + +# Only frst two of _thnn_fused_lstm_cell outputs can have gradients. +# _thnn_fused_lstm_cell outputs: (hy, cy, workspace) +- name: _thnn_fused_lstm_cell(Tensor input_gates, Tensor hidden_gates, Tensor cx, Tensor? input_bias=None, Tensor? hidden_bias=None) -> (Tensor, Tensor, Tensor) + output_differentiability: [True, True, False] + input_gates, hidden_gates, cx, input_bias, hidden_bias: "GradMode::is_enabled() ? _thnn_differentiable_lstm_cell_backward(grads[0], grads[1], input_gates, hidden_gates, input_bias, hidden_bias, cx, result1) : _thnn_fused_lstm_cell_backward(grads[0], grads[1], cx, result1, result2, input_bias.defined())" + +- name: _thnn_fused_gru_cell(Tensor input_gates, Tensor hidden_gates, Tensor hx, Tensor? input_bias=None, Tensor? hidden_bias=None) -> (Tensor, Tensor) + input_gates, hidden_gates, hx, input_bias, hidden_bias: "grad.defined() ? (GradMode::is_enabled() ? _thnn_differentiable_gru_cell_backward(grad, input_gates, hidden_gates, hx, input_bias, hidden_bias) : _thnn_fused_gru_cell_backward(grad, result1, input_bias.defined())) : std::tuple()" + +# PackedSequence helpers +- name: _pack_padded_sequence(Tensor input, Tensor lengths, bool batch_first) -> (Tensor, Tensor) + input: _pack_padded_sequence_backward_symint(grad, input.sym_sizes(), result1, batch_first) + +# TH wrappers +- name: eq.Scalar(Tensor self, Scalar other) -> Tensor + output_differentiability: [False] + +- name: eq.Tensor(Tensor self, Tensor other) -> Tensor + output_differentiability: [False] + +- name: ge.Scalar(Tensor self, Scalar other) -> Tensor + output_differentiability: [False] + +- name: ge.Tensor(Tensor self, Tensor other) -> Tensor + output_differentiability: [False] + +- name: gt.Scalar(Tensor self, Scalar other) -> Tensor + output_differentiability: [False] + +- name: gt.Tensor(Tensor self, Tensor other) -> Tensor + output_differentiability: [False] + +- name: le.Scalar(Tensor self, Scalar other) -> Tensor + output_differentiability: [False] + +- name: le.Tensor(Tensor self, Tensor other) -> Tensor + output_differentiability: [False] + +- name: lt.Scalar(Tensor self, Scalar other) -> Tensor + output_differentiability: [False] + +- name: lt.Tensor(Tensor self, Tensor other) -> Tensor + output_differentiability: [False] + +- name: ne.Scalar(Tensor self, Scalar other) -> Tensor + output_differentiability: [False] + +- name: ne.Tensor(Tensor self, Tensor other) -> Tensor + output_differentiability: [False] + +- name: multinomial(Tensor self, SymInt num_samples, bool replacement=False, *, Generator? generator=None) -> Tensor + output_differentiability: [False] + +- name: nonzero(Tensor self) -> Tensor + output_differentiability: [False] + +- name: segment_reduce(Tensor data, str reduce, *, Tensor? lengths=None, Tensor? indices=None, Tensor? offsets=None, int axis=0, bool unsafe=False, Scalar? initial=None) -> Tensor + data: _segment_reduce_backward(grad, result, data, reduce, lengths, offsets, axis, initial) + +- name: _pin_memory(Tensor self, Device? device=None) -> Tensor + self: grad + +- name: _new_zeros_with_same_feature_meta(Tensor self, Tensor other, *, int self_num_batch_dims=0) -> Tensor + self: non_differentiable + other: non_differentiable + output_differentiability: [False] + +- name: _test_warn_in_autograd(Tensor self) -> Tensor + self: warn_backwards(grad) + +- name: _test_autograd_multiple_dispatch.fullcoverage(Tensor self) -> Tensor + dispatch: + Default: + self: grad.expand_symint(self.sym_sizes()) + 1 + result: auto_linear + AutogradNestedTensor: + self: grad.mul(grad) + AutogradCUDA: + self: grad.expand_symint(self.sym_sizes()) * 2 + +- name: _test_autograd_multiple_dispatch.ntonly(Tensor self, bool b) -> Tensor + dispatch: + AutogradNestedTensor: + self: grad.mul(grad).add(grad) + +- name: _test_autograd_multiple_dispatch_view(Tensor(a) self) -> Tensor(a) + dispatch: + Default: + self: grad.reshape_as(self) + AutogradCUDA: + self: grad.reshape_as(self) + 1 + +- name: _efficientzerotensor(SymInt[] size, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensor + output_differentiability: [False] + +- name: scatter_reduce.two(Tensor self, int dim, Tensor index, Tensor src, str reduce, *, bool include_self=True) -> Tensor + self, src: scatter_reduce_backward(grad, self, dim, index, src, reduce, include_self, result) + index: non_differentiable + result: scatter_reduce_jvp(self_p, self_t, dim, index, src_p, src_t, reduce, include_self, result) + +- name: special_airy_ai(Tensor x) -> Tensor + x: non_differentiable + +- name: special_bessel_j0(Tensor self) -> Tensor + self: non_differentiable + +- name: special_bessel_j1(Tensor self) -> Tensor + self: non_differentiable + +- name: special_bessel_y0(Tensor self) -> Tensor + self: non_differentiable + +- name: special_bessel_y1(Tensor self) -> Tensor + self: non_differentiable + +- name: special_chebyshev_polynomial_t(Tensor x, Tensor n) -> Tensor + x: non_differentiable + n: non_differentiable + +- name: special_chebyshev_polynomial_t.x_scalar(Scalar x, Tensor n) -> Tensor + n: non_differentiable + +- name: special_chebyshev_polynomial_t.n_scalar(Tensor x, Scalar n) -> Tensor + x: non_differentiable + +- name: special_chebyshev_polynomial_u(Tensor x, Tensor n) -> Tensor + x: non_differentiable + n: non_differentiable + +- name: special_chebyshev_polynomial_u.x_scalar(Scalar x, Tensor n) -> Tensor + n: non_differentiable + +- name: special_chebyshev_polynomial_u.n_scalar(Tensor x, Scalar n) -> Tensor + x: non_differentiable + +- name: special_chebyshev_polynomial_v(Tensor x, Tensor n) -> Tensor + x: non_differentiable + n: non_differentiable + +- name: special_chebyshev_polynomial_v.x_scalar(Scalar x, Tensor n) -> Tensor + n: non_differentiable + +- name: special_chebyshev_polynomial_v.n_scalar(Tensor x, Scalar n) -> Tensor + x: non_differentiable + +- name: special_chebyshev_polynomial_w(Tensor x, Tensor n) -> Tensor + x: non_differentiable + n: non_differentiable + +- name: special_chebyshev_polynomial_w.x_scalar(Scalar x, Tensor n) -> Tensor + n: non_differentiable + +- name: special_chebyshev_polynomial_w.n_scalar(Tensor x, Scalar n) -> Tensor + x: non_differentiable + +- name: special_hermite_polynomial_h(Tensor x, Tensor n) -> Tensor + x: non_differentiable + n: non_differentiable + +- name: special_hermite_polynomial_h.x_scalar(Scalar x, Tensor n) -> Tensor + n: non_differentiable + +- name: special_hermite_polynomial_h.n_scalar(Tensor x, Scalar n) -> Tensor + x: non_differentiable + +- name: special_hermite_polynomial_he(Tensor x, Tensor n) -> Tensor + x: non_differentiable + n: non_differentiable + +- name: special_hermite_polynomial_he.x_scalar(Scalar x, Tensor n) -> Tensor + n: non_differentiable + +- name: special_hermite_polynomial_he.n_scalar(Tensor x, Scalar n) -> Tensor + x: non_differentiable + +- name: special_laguerre_polynomial_l(Tensor x, Tensor n) -> Tensor + x: non_differentiable + n: non_differentiable + +- name: special_laguerre_polynomial_l.x_scalar(Scalar x, Tensor n) -> Tensor + n: non_differentiable + +- name: special_laguerre_polynomial_l.n_scalar(Tensor x, Scalar n) -> Tensor + x: non_differentiable + +- name: special_legendre_polynomial_p(Tensor x, Tensor n) -> Tensor + x: non_differentiable + n: non_differentiable + +- name: special_legendre_polynomial_p.x_scalar(Scalar x, Tensor n) -> Tensor + n: non_differentiable + +- name: special_legendre_polynomial_p.n_scalar(Tensor x, Scalar n) -> Tensor + x: non_differentiable + +- name: special_modified_bessel_i0(Tensor self) -> Tensor + self: non_differentiable + +- name: special_modified_bessel_i1(Tensor self) -> Tensor + self: non_differentiable + +- name: special_modified_bessel_k0(Tensor self) -> Tensor + self: non_differentiable + +- name: special_modified_bessel_k1(Tensor self) -> Tensor + self: non_differentiable + +- name: special_scaled_modified_bessel_k0(Tensor x) -> Tensor + x: non_differentiable + +- name: special_scaled_modified_bessel_k1(Tensor x) -> Tensor + x: non_differentiable + +- name: special_shifted_chebyshev_polynomial_t(Tensor x, Tensor n) -> Tensor + x: non_differentiable + n: non_differentiable + +- name: special_shifted_chebyshev_polynomial_t.x_scalar(Scalar x, Tensor n) -> Tensor + n: non_differentiable + +- name: special_shifted_chebyshev_polynomial_t.n_scalar(Tensor x, Scalar n) -> Tensor + x: non_differentiable + +- name: special_shifted_chebyshev_polynomial_u(Tensor x, Tensor n) -> Tensor + x: non_differentiable + n: non_differentiable + +- name: special_shifted_chebyshev_polynomial_u.x_scalar(Scalar x, Tensor n) -> Tensor + n: non_differentiable + +- name: special_shifted_chebyshev_polynomial_u.n_scalar(Tensor x, Scalar n) -> Tensor + x: non_differentiable + +- name: special_shifted_chebyshev_polynomial_v(Tensor x, Tensor n) -> Tensor + x: non_differentiable + n: non_differentiable + +- name: special_shifted_chebyshev_polynomial_v.x_scalar(Scalar x, Tensor n) -> Tensor + n: non_differentiable + +- name: special_shifted_chebyshev_polynomial_v.n_scalar(Tensor x, Scalar n) -> Tensor + x: non_differentiable + +- name: special_shifted_chebyshev_polynomial_w(Tensor x, Tensor n) -> Tensor + x: non_differentiable + n: non_differentiable + +- name: special_shifted_chebyshev_polynomial_w.x_scalar(Scalar x, Tensor n) -> Tensor + n: non_differentiable + +- name: special_shifted_chebyshev_polynomial_w.n_scalar(Tensor x, Scalar n) -> Tensor + x: non_differentiable + +- name: special_spherical_bessel_j0(Tensor x) -> Tensor + x: non_differentiable + +- name: _reshape_copy(Tensor self, SymInt[] size) -> Tensor + self: grad.reshape_symint(self.sym_sizes()) + result: auto_linear + +- name: narrow_copy(Tensor self, int dim, SymInt start, SymInt length) -> Tensor + self: slice_backward_wrapper(grad, self.sym_sizes(), dim, start, start + length, 1) + result: auto_linear + +# note(crcrpar): `torchgen/api/autograd` logic would unwantedly replace substrings of `self` and `other` of function names. +- name: _foreach_div.List(Tensor[] self, Tensor[] other) -> Tensor[] + self: div_tensor_self_backward(grads[i], other[i], self[i].scalar_type()) + other: div_tensor_other_backward(grads[i], self[i], other[i]) + result: (self_t - other_t * result[i]) / other_p + +- name: _foreach_pow.List(Tensor[] self, Tensor[] exponent) -> Tensor[] + self: pow_backward_self(grads[i], self[i], exponent[i]) + exponent: pow_backward_exponent(grads[i], self[i], exponent[i], result[i]) + result: (pow_backward_self(self_t.conj(), self_p, exponent_p) + pow_backward_exponent(exponent_t.conj(), self_p, exponent_p, result[i])).conj() + +- name: _foreach_pow.ScalarList(Tensor[] self, Scalar[] exponent) -> Tensor[] + self: pow_backward(grads[i], self[i], exponent[i]) + result: pow_backward(self_t.conj(), self_p, exponent[i]).conj() + +- name: _foreach_pow.ScalarAndTensor(Scalar self, Tensor[] exponent) -> Tensor[] + exponent: pow_backward_exponent(grads[i], self, exponent[i], result[i]) + +# note(crcrpar): following definitions seem necessary because the reference native functions +# of `maximum` and `minimum` don't have the overload def with Scalar as their second argument. +- name: _foreach_minimum.Scalar(Tensor[] self, Scalar scalar) -> Tensor[] + self: at::where(self[i] == scalar, grads[i] / 2, grads[i]).masked_fill_(self[i] > scalar, 0) + result: scalar + at::where(self_p == scalar, at::scalar_tensor(0.5, result[i].options()), (self_p < scalar).to(result[i].scalar_type())) * (self_t - scalar) + +- name: _foreach_minimum.ScalarList(Tensor[] self, Scalar[] scalars) -> Tensor[] + self: at::where(self[i] == scalars[i], grads[i] / 2, grads[i]).masked_fill_(self[i] > scalars[i], 0) + result: scalars[i] + at::where(self_p == scalars[i], at::scalar_tensor(0.5, result[i].options()), (self_p < scalars[i]).to(result[i].scalar_type())) * (self_t - scalars[i]) + +- name: _foreach_maximum.Scalar(Tensor[] self, Scalar scalar) -> Tensor[] + self: at::where(self[i] == scalar, grads[i] / 2, grads[i]).masked_fill_(self[i] < scalar, 0) + result: scalar + at::where(self_p == scalar, at::scalar_tensor(0.5, result[i].options()), (self_p > scalar).to(result[i].scalar_type())) * (self_t - scalar) + +- name: _foreach_maximum.ScalarList(Tensor[] self, Scalar[] scalars) -> Tensor[] + self: at::where(self[i] == scalars[i], grads[i] / 2, grads[i]).masked_fill_(self[i] < scalars[i], 0) + result: scalars[i] + at::where(self_p == scalars[i], at::scalar_tensor(0.5, result[i].options()), (self_p > scalars[i]).to(result[i].scalar_type())) * (self_t - scalars[i]) + +# note(crcrpar): forward-mode AD is tricky for a simple string replace to handle: +# formula.replace("p", "ord") produces `norm_jvord(self_ord, self_t, ord, result)` +- name: _foreach_norm.Scalar(Tensor[] self, Scalar ord=2, ScalarType? dtype=None) -> Tensor[] + self: norm_backward(grads[i], self[i], ord, result[i]) + result: norm_jvp(self_p, self_t, ord, result[i]) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/gen_annotated_fn_args.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/gen_annotated_fn_args.py new file mode 100644 index 0000000000000000000000000000000000000000..2f61209fa6fd0041b732f1400e1162d2f124ad34 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/gen_annotated_fn_args.py @@ -0,0 +1,134 @@ +""" +For procedural tests needed for __torch_function__, we use this function +to export method names and signatures as needed by the tests in +test/test_overrides.py. + +python -m tools.autograd.gen_annotated_fn_args \ + aten/src/ATen/native/native_functions.yaml \ + aten/src/ATen/native/tags.yaml \ + $OUTPUT_DIR \ + tools/autograd + +Where $OUTPUT_DIR is where you would like the files to be +generated. In the full build system, OUTPUT_DIR is +torch/testing/_internal/generated +""" + +from __future__ import annotations + +import argparse +import os +import textwrap +from collections import defaultdict +from typing import Any, TYPE_CHECKING + +import torchgen.api.python as python +from torchgen.context import with_native_function +from torchgen.gen import parse_native_yaml +from torchgen.utils import FileManager + +from .gen_python_functions import ( + is_py_fft_function, + is_py_linalg_function, + is_py_nn_function, + is_py_special_function, + is_py_torch_function, + is_py_variable_method, + should_generate_py_binding, +) + + +if TYPE_CHECKING: + from collections.abc import Sequence + + from torchgen.model import Argument, BaseOperatorName, NativeFunction + + +def gen_annotated( + native_yaml_path: str, tags_yaml_path: str, out: str, autograd_dir: str +) -> None: + native_functions = parse_native_yaml( + native_yaml_path, tags_yaml_path + ).native_functions + mappings = ( + (is_py_torch_function, "torch._C._VariableFunctions"), + (is_py_nn_function, "torch._C._nn"), + (is_py_linalg_function, "torch._C._linalg"), + (is_py_special_function, "torch._C._special"), + (is_py_fft_function, "torch._C._fft"), + (is_py_variable_method, "torch.Tensor"), + ) + annotated_args: list[str] = [] + for pred, namespace in mappings: + groups: dict[BaseOperatorName, list[NativeFunction]] = defaultdict(list) + for f in native_functions: + if not should_generate_py_binding(f) or not pred(f): + continue + groups[f.func.name.name].append(f) + for group in groups.values(): + for f in group: + annotated_args.append(f"{namespace}.{gen_annotated_args(f)}") + + template_path = os.path.join(autograd_dir, "templates") + fm = FileManager(install_dir=out, template_dir=template_path, dry_run=False) + fm.write_with_template( + "annotated_fn_args.py", + "annotated_fn_args.py.in", + lambda: { + "annotated_args": textwrap.indent("\n".join(annotated_args), " "), + }, + ) + + +@with_native_function +def gen_annotated_args(f: NativeFunction) -> str: + def _get_kwargs_func_exclusion_list() -> list[str]: + # functions that currently don't work with kwargs in test_overrides.py + return [ + "diagonal", + "round_", + "round", + "scatter_", + ] + + def _add_out_arg( + out_args: list[dict[str, Any]], args: Sequence[Argument], *, is_kwarg_only: bool + ) -> None: + for arg in args: + if arg.default is not None: + continue + out_arg: dict[str, Any] = {} + out_arg["is_kwarg_only"] = str(is_kwarg_only) + out_arg["name"] = arg.name + out_arg["simple_type"] = python.argument_type_str( + arg.type, simple_type=True + ) + size_t = python.argument_type_size(arg.type) + if size_t: + out_arg["size"] = size_t + out_args.append(out_arg) + + out_args: list[dict[str, Any]] = [] + _add_out_arg(out_args, f.func.arguments.flat_positional, is_kwarg_only=False) + if f"{f.func.name.name}" not in _get_kwargs_func_exclusion_list(): + _add_out_arg(out_args, f.func.arguments.flat_kwarg_only, is_kwarg_only=True) + + return f"{f.func.name.name}: {repr(out_args)}," + + +def main() -> None: + parser = argparse.ArgumentParser(description="Generate annotated_fn_args script") + parser.add_argument( + "native_functions", metavar="NATIVE", help="path to native_functions.yaml" + ) + parser.add_argument("tags", metavar="TAGS", help="path to tags.yaml") + parser.add_argument("out", metavar="OUT", help="path to output directory") + parser.add_argument( + "autograd", metavar="AUTOGRAD", help="path to template directory" + ) + args = parser.parse_args() + gen_annotated(args.native_functions, args.tags, args.out, args.autograd) + + +if __name__ == "__main__": + main() diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/gen_autograd.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/gen_autograd.py new file mode 100644 index 0000000000000000000000000000000000000000..d93d3f4cab4a6f37c0c81c548b4da3b6c5b9dc95 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/gen_autograd.py @@ -0,0 +1,147 @@ +""" +To run this file by hand from the root of the PyTorch +repository, run: + +python -m tools.autograd.gen_autograd \ + aten/src/ATen/native/native_functions.yaml \ + aten/src/ATen/native/tags.yaml \ + $OUTPUT_DIR \ + tools/autograd + +Where $OUTPUT_DIR is where you would like the files to be +generated. In the full build system, OUTPUT_DIR is +torch/csrc/autograd/generated/ +""" + +# gen_autograd.py generates C++ autograd functions and Python bindings. +# +# It delegates to the following scripts: +# +# gen_autograd_functions.py: generates subclasses of torch::autograd::Node +# gen_variable_type.py: generates VariableType.h which contains all tensor methods +# gen_python_functions.py: generates Python bindings to THPVariable +# + +from __future__ import annotations + +import argparse +import os + +from torchgen.api import cpp +from torchgen.api.autograd import ( + match_differentiability_info, + NativeFunctionWithDifferentiabilityInfo, +) +from torchgen.gen import parse_native_yaml +from torchgen.selective_build.selector import SelectiveBuilder + +from . import gen_python_functions +from .gen_autograd_functions import ( + gen_autograd_functions_lib, + gen_autograd_functions_python, +) +from .gen_inplace_or_view_type import gen_inplace_or_view_type +from .gen_trace_type import gen_trace_type +from .gen_variable_factories import gen_variable_factories +from .gen_variable_type import gen_variable_type +from .gen_view_funcs import gen_view_funcs +from .load_derivatives import load_derivatives + + +def gen_autograd( + native_functions_path: str, + tags_path: str, + out: str, + autograd_dir: str, + operator_selector: SelectiveBuilder, + disable_autograd: bool = False, +) -> None: + # Parse and load derivatives.yaml + differentiability_infos, used_dispatch_keys = load_derivatives( + os.path.join(autograd_dir, "derivatives.yaml"), native_functions_path, tags_path + ) + + template_path = os.path.join(autograd_dir, "templates") + + native_funcs = parse_native_yaml(native_functions_path, tags_path).native_functions + fns = sorted( + filter( + operator_selector.is_native_function_selected_for_training, native_funcs + ), + key=lambda f: cpp.name(f.func), + ) + fns_with_diff_infos: list[NativeFunctionWithDifferentiabilityInfo] = ( + match_differentiability_info(fns, differentiability_infos) + ) + + # Generate VariableType.h/cpp + if not disable_autograd: + gen_variable_type( + out, + native_functions_path, + tags_path, + fns_with_diff_infos, + template_path, + used_dispatch_keys, + ) + + gen_inplace_or_view_type( + out, native_functions_path, tags_path, fns_with_diff_infos, template_path + ) + + # operator filter not applied as tracing sources are excluded in selective build + gen_trace_type(out, native_funcs, template_path) + # Generate Functions.h/cpp + gen_autograd_functions_lib(out, differentiability_infos, template_path) + + # Generate variable_factories.h + gen_variable_factories(out, native_functions_path, tags_path, template_path) + + # Generate ViewFuncs.h/cpp + gen_view_funcs(out, fns_with_diff_infos, template_path) + + +def gen_autograd_python( + native_functions_path: str, + tags_path: str, + out: str, + autograd_dir: str, +) -> None: + differentiability_infos, _ = load_derivatives( + os.path.join(autograd_dir, "derivatives.yaml"), native_functions_path, tags_path + ) + + template_path = os.path.join(autograd_dir, "templates") + + # Generate Functions.h/cpp + gen_autograd_functions_python(out, differentiability_infos, template_path) + + # Generate Python bindings + deprecated_path = os.path.join(autograd_dir, "deprecated.yaml") + gen_python_functions.gen( + out, native_functions_path, tags_path, deprecated_path, template_path + ) + + +def main() -> None: + parser = argparse.ArgumentParser(description="Generate autograd C++ files script") + parser.add_argument( + "native_functions", metavar="NATIVE", help="path to native_functions.yaml" + ) + parser.add_argument("tags", metavar="NATIVE", help="path to tags.yaml") + parser.add_argument("out", metavar="OUT", help="path to output directory") + parser.add_argument( + "autograd", metavar="AUTOGRAD", help="path to autograd directory" + ) + args = parser.parse_args() + gen_autograd( + args.native_functions, + args.tags, + args.out, + args.autograd, + SelectiveBuilder.get_nop_selector(), + ) + + +if __name__ == "__main__": + main() diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/gen_autograd_functions.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/gen_autograd_functions.py new file mode 100644 index 0000000000000000000000000000000000000000..56e622d38d65d61aa193cb2a22771b7ffbc49901 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/gen_autograd_functions.py @@ -0,0 +1,1082 @@ +# Generates C++ autograd functions for the derivatives of ATen operations +# +# This writes two files: +# Functions.h/cpp: subclasses of autograd::Node +# python_functions.h/cpp: Python bindings for the above classes +# + +from __future__ import annotations + +from typing import TYPE_CHECKING + +from torchgen.api.autograd import ( + Derivative, + DifferentiabilityInfo, + SavedAttribute, + uses_retain_variables, + uses_single_grad, +) +from torchgen.api.types import ( + ArrayRefCType, + BaseCppType, + BaseCType, + Binding, + boolT, + doubleT, + intArrayRefT, + iTensorListRefT, + ListCType, + longT, + MutRefCType, + OptionalCType, + optionalIntArrayRefT, + optionalSymIntArrayRefT, + scalarT, + stringT, + symIntArrayRefT, + SymIntT, + TENSOR_LIST_LIKE_CTYPES, + tensorListT, + tensorT, + VectorCType, +) +from torchgen.code_template import CodeTemplate +from torchgen.model import Argument, FunctionSchema +from torchgen.utils import FileManager + +from .gen_inplace_or_view_type import VIEW_FUNCTIONS + + +if TYPE_CHECKING: + from collections.abc import Sequence + + +FUNCTION_DECLARATION = CodeTemplate( + """\ +#ifdef _WIN32 +struct ${op} : public ${superclass} { + TORCH_API ${op}() = default; +#else +struct TORCH_API ${op} : public ${superclass} { +#endif + using ${superclass}::${superclass}; + variable_list apply(variable_list&& grads) override; + std::string name() const override { return "${op}"; } + void release_variables() override { + ${thread_lock} + ${release_variables} + } + ${will_release_variables} + void compiled_args(CompiledNodeArgs& args) const override; + variable_list apply_with_saved(const variable_list& inputs, SwapSavedVariables& saved) override; + ${saved_variables} + ${saved_list_sizes} +}; +""" +) + +WILL_RELEASE_VARIABLES = CodeTemplate( + """\ +bool retain_variables = true; +void will_release_variables() override { + retain_variables = false; +} +""" +) + +# We generate e.g. MulBackward0::apply and have that call into +# MulBackward0_apply_functional. The apply_functional is a pure function, +# that is, it does not rely on global state. MulBackward0::apply +# is responsible for querying the autograd engine for which outputs should +# be computed (needs_input_grad), applying locks, +# and unpacking saved variables to pass to MulBackward0_apply_functional. +# +# needs_input_grad is a mapping from input index to if that input needs +# gradients computed. For operators that take in List[Tensor], the List[Tensor] +# is one element in the needs_input_grad that specifies if *any* of the +# List[Tensor] needs input grad. In theory this could be optimized. +FUNCTION_DEFINITION = CodeTemplate( + """\ +static variable_list ${op}_apply_functional( + variable_list&& grads, + std::array needs_input_grad${,apply_functional_args_signature}) +{ + IndexRangeGenerator gen; + ${compute_index_ranges} + variable_list grad_inputs(gen.size()); + ${body} + return grad_inputs; +} +inline variable_list ${op}_apply_functional_ivalue(const variable_list& grads, const ivalue_list& args) +{ +#ifdef C10_MOBILE + TORCH_INTERNAL_ASSERT(false, "compiled autograd doesn't work on mobile"); +#else + auto packed_args = PackedArgs(args); + auto needs_input_grad = packed_args.unpack>(); + ${unpack_ivalues} + return ${op}_apply_functional(variable_list(grads), needs_input_grad${,apply_functional_args}); +#endif +} + +variable_list ${op}::apply(variable_list&& grads) { + ${thread_lock} + ${asserts} + ${unpacks} + ${compute_needs_input_grad} + return ${op}_apply_functional(std::move(grads), needs_input_grad${,apply_functional_args}); +} + +void ${op}::compiled_args(CompiledNodeArgs& args) const { + ${compiled_args} +} +variable_list ${op}::apply_with_saved(const variable_list& grads, SwapSavedVariables& saved) { +#ifdef C10_MOBILE + TORCH_INTERNAL_ASSERT(false, "compiled autograd doesn't work on mobile"); +#else + ${apply_with_saved_before} + + static bool called = false; + if (!called) { + called = true; + ${compute_schema} + const auto& pyinterface = torch::dynamo::autograd::getPyCompilerInterface(); + pyinterface->bind_function(saved.get_py_compiler(), name(), ${op}_apply_functional_ivalue, schema); + } + + variable_list output_result; + + PackedArgs packed_args; + ${asserts} + ${unpacks} + ${compute_needs_input_grad} + packed_args.pack(needs_input_grad); + ${get_packed_args} + + output_result = compiled_autograd_apply_functional(packed_args, next_edges(), saved, grads, name()); + + ${apply_with_saved_after} + return output_result; +#endif +} + +""" +) + +GRAD_INPUT_MASK = CodeTemplate( + """\ + auto grad_input_mask = std::array{ + ${masks} + }; +""" +) + +COMPUTE_NEEDS_INPUT_GRAD = CodeTemplate( + """\ +IndexRangeGenerator gen; +${compute_index_ranges} +auto needs_input_grad = std::array{ + ${masks} +};\ +""" +) + + +DERIVATIVE_SINGLE = CodeTemplate( + """\ +if (needs_input_grad[/*${name}*/${idx}]) { + auto grad_result = ${derivative}; + copy_range(grad_inputs, ${name}_ix, grad_result); +} +""" +) + +# note(crcrpar): `self` argument and other optional positional argument +# of foreach functions are basically a list of n `Tensor`s thus iterating over +# `grads` in order to utilize and apply the existing derivative definitions +# to each `Tensor`(s) of `self`, and the others. +DERIVATIVE_SINGLE_FOREACH = CodeTemplate( + """\ +if (needs_input_grad[/*${name}*/${idx}]) { // ${name} + std::vector grad_result; + grad_result.reserve(grads.size()); + for (const auto & i : c10::irange(grads.size())) { + if (grads[i].defined()) { + grad_result.emplace_back(${derivative}); + } else { + grad_result.emplace_back(Tensor()); + } + } + copy_range(grad_inputs, ${name}_ix, grad_result); +} +""" +) + +DERIVATIVE_MULTI_COPY_RANGE = CodeTemplate( + """\ + if (needs_input_grad[/*${name}*/${idx}]) { + copy_range(grad_inputs, ${name}_ix, std::get<${i}>(grad_result)); + } +""" +) + +DERIVATIVE_MULTI = CodeTemplate( + """\ +if (${needs_input_grad}) { + ${grad_input_mask} + auto grad_result = ${derivative}; + ${copy_ranges} +} +""" +) + +# Generates python bindings +# +# This generates the definitions for: +# (1) The PyTypeObject for each backward grad_fn subclassing Node +# (2) The entry for PyTypeObject's tp_getset slot (an array of PyGetSetDef structs) +# We generate one PyGetSetDef struct for each of grad_fn's saved inputs and outputs +# Each PyGetSetDef has a function ptr to a getter, also defined here (3). +# (3) Getters for each of grad_fn's saved inputs and outputs. +# +PY_FUNCTION_DEFINITION = CodeTemplate( + """\ +static PyTypeObject ${op}Class; +addClass<${op}>(module, ${op}Class, "${op}", ${op}_properties); +""" +) + +PY_FUNCTION_PROPS_AND_GETTERS = CodeTemplate( + """\ +${all_getter_definitions} + +static struct PyGetSetDef ${op}_properties[] = { + THP_FUNCTION_DEFAULT_PROPERTIES, + ${all_getsetdef_structs} + {nullptr} /* sentinel */ +}; + +""" +) + +PY_GETSETDEF_STRUCT = CodeTemplate( + """\ +{(char*)"_saved_${name}", (getter)THP${op}_${name}_getter, nullptr, nullptr, nullptr}""" +) + +PY_RAW_GETSETDEF_STRUCT = CodeTemplate( + """\ +{(char*)"_raw_saved_${name}", (getter)THP${op}_${name}_raw_getter, nullptr, nullptr, nullptr}""" +) + +# Getter templates +GETTER_DEFINITION = CodeTemplate( + """\ +static PyObject* THP${op}_${name}_getter(THPCppFunction *self, void *_unused) { + HANDLE_TH_ERRORS + auto prop = static_cast<${op}*>(self->cdata.get())->${name}; + ${body} + END_HANDLE_TH_ERRORS +} +""" +) + +GETTER_DEFINITION_SAVEDVAR = CodeTemplate( + """\ +static PyObject* THP${op}_${name}_getter(THPCppFunction *self, void *_unused) { + HANDLE_TH_ERRORS + const auto& prop = static_cast<${op}*>(self->cdata.get())->${name}_; + ${body} + END_HANDLE_TH_ERRORS +} +""" +) + +GETTER_DEFINITION_RAW_SAVEDVAR = CodeTemplate( + """\ +static PyObject* THP${op}_${name}_raw_getter(THPCppFunction *self, void *_unused) { + HANDLE_TH_ERRORS + const auto& prop = static_cast<${op}*>(self->cdata.get())->${name}_; + ${body} + END_HANDLE_TH_ERRORS +} +""" +) + +GETTER_DEFINITION_VEC_SAVEDVAR = CodeTemplate( + """\ +static PyObject* THP${op}_${name}_getter(THPCppFunction *self, void *_unused) { + HANDLE_TH_ERRORS + const auto *node = static_cast<${op}*>(self->cdata.get()); + const auto& prop = node->${name}_; + if (node->${name}_released_) { + PyErr_SetString(PyExc_RuntimeError, ERR_BACKWARD_TWICE); + return nullptr; + } + ${body} + END_HANDLE_TH_ERRORS +} +""" +) + +GETTER_DEFINITION_RAW_VEC_SAVEDVAR = CodeTemplate( + """\ +static PyObject* THP${op}_${name}_raw_getter(THPCppFunction *self, void *_unused) { + HANDLE_TH_ERRORS + const auto *node = static_cast<${op}*>(self->cdata.get()); + const auto& prop = node->${name}_; + if (node->${name}_released_) { + PyErr_SetString(PyExc_RuntimeError, ERR_BACKWARD_TWICE); + return nullptr; + } + ${body} + END_HANDLE_TH_ERRORS +} +""" +) + +GETTER_DEFINITION_OPT = CodeTemplate( + """\ +static PyObject* THP${op}_${name}_getter(THPCppFunction *self, void *_unused) { + HANDLE_TH_ERRORS + auto opt_prop = static_cast<${op}*>(self->cdata.get())->${name}; + if (!opt_prop.has_value()) { + Py_RETURN_NONE; + } + auto prop = opt_prop.value(); + ${body} + END_HANDLE_TH_ERRORS +} +""" +) + +GETTER_DEFINITION_OPT_ARRAYREF = CodeTemplate( + """\ +static PyObject* THP${op}_${name}_getter(THPCppFunction *self, void *_unused) { + HANDLE_TH_ERRORS + auto opt_prop = static_cast<${op}*>(self->cdata.get())->${name}; + if (!opt_prop.list.has_value()) { + Py_RETURN_NONE; + } + auto prop = opt_prop.list.value(); + ${body} + END_HANDLE_TH_ERRORS +} +""" +) + +# Getter body +GETTER_BODY_SAVEDVAR = """\ +return THPVariable_Wrap(prop.unpack(self->cdata)); +""" + +GETTER_BODY_RAW_SAVEDVAR = """\ +pybind11::object obj = pybind11::cast(prop, pybind11::return_value_policy::reference); +return obj.release().ptr(); +""" + +GETTER_BODY_VEC_SAVEDVAR = """\ +PyObject* tup = PyTuple_New((Py_ssize_t) prop.size()); +for (auto i: c10::irange(prop.size())) { + PyTuple_SetItem(tup, (Py_ssize_t) i, THPVariable_Wrap(prop[i].unpack(self->cdata))); +} +return tup; +""" + +GETTER_BODY_RAW_VEC_SAVEDVAR = """\ +PyObject* tup = PyTuple_New((Py_ssize_t) prop.size()); +for (auto i : c10::irange(prop.size())) { + pybind11::object obj = pybind11::cast(prop[i], pybind11::return_value_policy::reference); + PyTuple_SetItem(tup, (Py_ssize_t) i, obj.release().ptr()); +} +return tup; +""" + +GETTER_BODY_ARRAYREF_LONG = """\ +PyObject* tup = PyTuple_New((Py_ssize_t) prop.size()); +for (auto i : c10::irange(prop.size())) { + PyTuple_SetItem(tup, (Py_ssize_t) i, PyLong_FromUnsignedLong((uint64_t) prop[i])); +} +return tup; +""" + +GETTER_BODY_ARRAYREF_SYMINT = """\ +PyObject* tup = PyTuple_New((Py_ssize_t) prop.size()); +for (auto i : c10::irange(prop.size())) { + auto si = prop[i]; + if (auto m = si.maybe_as_int()) { + PyTuple_SetItem(tup, (Py_ssize_t) i, PyLong_FromUnsignedLong(*m)); + } else { + auto py_symint = py::cast(si).release().ptr(); + PyTuple_SetItem(tup, (Py_ssize_t) i, py_symint); + } +} +return tup; +""" + +GETTER_BODY_ARRAYREF_DOUBLE = """\ +PyObject* tup = PyTuple_New((Py_ssize_t) prop.size()); +for (auto i : c10::irange(prop.size())) { + PyTuple_SetItem(tup, (Py_ssize_t) i, PyFloat_FromDouble((double) prop[i])); +} +return tup; +""" + +GETTER_BODY_INT64_T = """\ +return PyLong_FromUnsignedLong((int64_t) prop); +""" + +GETTER_BODY_SYMINT = """\ +if (auto m = prop.maybe_as_int()) { + return PyLong_FromUnsignedLong(*m); +} else { + return py::cast(prop).release().ptr(); +} +""" + +GETTER_BODY_DOUBLE = """\ +return PyFloat_FromDouble((double) prop); +""" + +GETTER_BODY_BOOL = """\ +if (prop) { + Py_RETURN_TRUE; +} else { + Py_RETURN_FALSE; +} +""" + +GETTER_BODY_STRING = """\ +return PyUnicode_FromStringAndSize(prop.data(), prop.size()); +""" + +GETTER_BODY_SCALAR = """\ +if (prop.isComplex()) { + auto cprop = prop.to>(); + return PyComplex_FromDoubles(cprop.real(), cprop.imag()); +} else if (prop.isFloatingPoint()) { + return PyFloat_FromDouble(prop.to()); +} else if (prop.isIntegral(/*includeBool=*/false)) { + return PyLong_FromLong(prop.to()); +} else if (prop.isBoolean()) { + if (prop.to()) { + Py_RETURN_TRUE; + } else { + Py_RETURN_FALSE; + } +} else { + PyErr_SetString(PyExc_RuntimeError, "Unknown scalar type"); + return nullptr; +} +""" + + +GETTER_BODY_VEC_SCALAR = """\ +PyObject* tup = PyTuple_New((Py_ssize_t) prop.size()); +for (auto i: c10::irange(prop.size())) { + if (prop[i].isComplex()) { + auto cprop = prop[i].to>(); + PyTuple_SetItem(tup, (Py_ssize_t) i, PyComplex_FromDoubles(cprop.real(), cprop.imag())); + } else if (prop[i].isFloatingPoint()) { + auto double_prop = prop[i].to(); + PyTuple_SetItem(tup, (Py_ssize_t) i, PyFloat_FromDouble(double_prop)); + } else if (prop[i].isIntegral(/*includeBool=*/false)) { + auto long_prop = prop[i].to(); + PyTuple_SetItem(tup, (Py_ssize_t) i, PyLong_FromLong(long_prop)); + } else if (prop[i].isBoolean()) { + if (prop[i].to()) { + PyTuple_SetItem(tup, (Py_ssize_t) i, Py_True); + } else { + PyTuple_SetItem(tup, (Py_ssize_t) i, Py_False); + } + } else { + PyErr_SetString(PyExc_RuntimeError, "Unknown scalar type"); + return nullptr; + } +} +return tup; +""" + + +MISC_GETTER_DEFS = { + OptionalCType(BaseCType(longT)): (GETTER_DEFINITION_OPT, GETTER_BODY_INT64_T), + OptionalCType(BaseCType(SymIntT)): (GETTER_DEFINITION_OPT, GETTER_BODY_SYMINT), + BaseCType(doubleT): (GETTER_DEFINITION, GETTER_BODY_DOUBLE), + OptionalCType(BaseCType(doubleT)): (GETTER_DEFINITION_OPT, GETTER_BODY_DOUBLE), + BaseCType(boolT): (GETTER_DEFINITION, GETTER_BODY_BOOL), + BaseCType(scalarT): (GETTER_DEFINITION, GETTER_BODY_SCALAR), + OptionalCType(BaseCType(scalarT)): (GETTER_DEFINITION_OPT, GETTER_BODY_SCALAR), +} + +# These functions have backwards which cannot be traced, and so must have +# their backward functions traced opaquely. +# VIEW_FUNCTIONS are not traceable because they use as_strided, which +# has an untraceable backwards, see +# https://github.com/pytorch/pytorch/issues/4250 +# TODO: This is probably not exhaustive, but it's a start +UNTRACEABLE_FUNCTIONS = VIEW_FUNCTIONS + + +def get_infos_with_derivatives_list( + differentiability_infos: dict[FunctionSchema, dict[str, DifferentiabilityInfo]], +) -> list[DifferentiabilityInfo]: + diff_info_list = [ + info + for diffinfo_dict in differentiability_infos.values() + for info in diffinfo_dict.values() + ] + + return list(filter(lambda info: info.args_with_derivatives, diff_info_list)) + + +def gen_autograd_functions_lib( + out: str, + differentiability_infos: dict[FunctionSchema, dict[str, DifferentiabilityInfo]], + template_path: str, +) -> None: + """Functions.h and Functions.cpp body + + These contain the auto-generated subclasses of torch::autograd::Node + for each every differentiable torch function. + """ + + # get a 1D list of diffinfos, we do not need them to be per FunctionSchema/DispatchKey here + # infos with the diff dispatchkeys but the same name will still be in the same shard. + infos = get_infos_with_derivatives_list(differentiability_infos) + declarations = [process_function(f, FUNCTION_DECLARATION) for f in infos] + definitions = [process_function(f, FUNCTION_DEFINITION) for f in infos] + + file_basename = "Functions" + fm = FileManager(install_dir=out, template_dir=template_path, dry_run=False) + for suffix in [".h", ".cpp"]: + fname = file_basename + suffix + fm.write_with_template( + fname, + fname, + lambda: { + "generated_comment": "@" + + f"generated from {fm.template_dir_for_comments()}/{fname}", + "autograd_function_declarations": declarations, + "autograd_function_definitions": definitions, + }, + ) + + +def gen_autograd_functions_python( + out: str, + differentiability_infos: dict[FunctionSchema, dict[str, DifferentiabilityInfo]], + template_path: str, +) -> None: + fm = FileManager(install_dir=out, template_dir=template_path, dry_run=False) + num_shards = 5 + fm.write( + "python_functions.h", + lambda: { + "generated_comment": "@" + + f"generated from {fm.template_dir_for_comments()}/python_functions.h", + "shard_forward_declare": [ + f"void initialize_autogenerated_functions_{i}(PyObject* module);" + for i in range(num_shards) + ], + "shard_call": [ + f"initialize_autogenerated_functions_{i}(module);" + for i in range(num_shards) + ], + }, + ) + + # get a 1D list of diffinfos, we do not need them to be per FunctionSchema/DispatchKey here + # infos with the diff dispatchkeys but the same name will still be in the same shard. + infos = get_infos_with_derivatives_list(differentiability_infos) + fm.write_sharded( + "python_functions.cpp", + infos, + key_fn=lambda info: info.name, + base_env={ + "generated_comment": "@" + + f"generated from {fm.template_dir_for_comments()}/python_functions.cpp", + }, + env_callable=lambda info: { + "py_function_initializers": [ + process_function(info, PY_FUNCTION_DEFINITION) + ], + "py_function_props_and_getters": [ + process_function(info, PY_FUNCTION_PROPS_AND_GETTERS) + ], + }, + num_shards=num_shards, + sharded_keys={"py_function_initializers", "py_function_props_and_getters"}, + ) + + +def process_function(info: DifferentiabilityInfo, template: CodeTemplate) -> str: + saved_variables: list[str] = [] + release_variables: list[str] = [] + saved_list_sizes: list[str] = [] + unpack: list[str] = [] + asserts: list[str] = [] + compute_index_ranges: list[str] = [] + getter_definitions: list[str] = [] + py_getsetdef_structs: list[str] = [] + compiled_args: list[str] = [] + apply_with_saved_before: list[str] = [] + apply_with_saved_after: list[str] = [] + apply_functional_args: list[str] = [] + apply_functional_args_ref_types: list[str] = [] + # Maps the name of an input (to the original forward operator; + # examples are "self", "other") to the order in which they appear in the + # operator. + # For example; if the operator is foo(Tensor self, int64_t k, Tensor other), + # the mapping is: {"self": 0, "other": 1}. + # We use this mapping to populate needs_input_grad in some order and then grab + # values from it. + input_name_to_idx: dict[str, int] = {} + + for idx, arg in enumerate(info.args_with_derivatives): + if arg.type in TENSOR_LIST_LIKE_CTYPES: + size = f"{arg.name}_size_" + saved_list_sizes.append(f"size_t {arg.name}_size_;") + apply_functional_args.append(f"{arg.name}_size_") + apply_functional_args_ref_types.append("size_t") + else: + size = "1" + compute_index_ranges.append(f"auto {arg.name}_ix = gen.range({size});") + input_name_to_idx[arg.name] = idx + + def save_var(var: SavedAttribute, is_output: bool) -> None: + name = var.nctype.name + type = var.nctype.type + should_append_getsetdef = True + should_append_raw_getsetdef = False + visit_name = name + uses_cpp_saved_variable_cls = False + unpacked_ref_type = None + + if ( + type == BaseCType(tensorT) + or type == OptionalCType(BaseCType(tensorT)) + or type == MutRefCType(OptionalCType(BaseCType(tensorT))) + or (type == BaseCType(scalarT) and is_output) + ): + uses_cpp_saved_variable_cls = True + saved_variables.append(f"SavedVariable {name}_;") + release_variables.append(f"{name}_.reset_data();") + ptr = "shared_from_this()" if is_output else "" + unpack.append(f"auto {name} = {name}_.unpack({ptr});") + getter_definitions.append( + GETTER_DEFINITION_SAVEDVAR.substitute( + op=info.op, name=name, body=GETTER_BODY_SAVEDVAR + ) + ) + getter_definitions.append( + GETTER_DEFINITION_RAW_SAVEDVAR.substitute( + op=info.op, name=name, body=GETTER_BODY_RAW_SAVEDVAR + ) + ) + should_append_raw_getsetdef = True + visit_name = f"{name}_" + unpacked_ref_type = "Tensor&" + elif ( + type == BaseCType(tensorListT) + or type == BaseCType(iTensorListRefT) + or type == VectorCType(BaseCType(tensorT)) + ): + # note(crcrpar): [nuanced return type of out-of-place foreach functions] + # When an out-of-place foreach function whose return signature is `Tensor[]` + # spells out its backward definitions in `derivatives.yaml`, and some of them depend on + # `result`, `result`'s type is interpreted and treated as `std::vector`. + # An out-of-place foreach whose backwards rely on their output doesn't suffer from this + # difference if the definitions are codegen'ed. + # This special case is needed for `_foreach_pow.List` and `_foreach_pow.ScalarAndTensor` + # as of https://github.com/pytorch/pytorch/pull/105504. + if type == VectorCType(BaseCType(tensorT)): + if not ( + info.func.func.name.name.base.startswith("_foreach") and is_output + ): + raise AssertionError( + "VectorCType(BaseCType(tensorT)) requires foreach function and is_output" + ) + uses_cpp_saved_variable_cls = True + saved_variables.append(f"std::vector {name}_;") + saved_variables.append(f"bool {name}_released_ = false;") + # Just clear() is sufficient, we don't need to loop and clear each variable. + # Because the SavedVariable owns a tensor and a grad_fn, removing the SavedVariable makes them go away as well. + release_variables.append(f"{name}_.clear();") + release_variables.append(f"{name}_released_ = true;") + ptr = "shared_from_this()" if is_output else "nullptr" + unpack.append(f"auto {name} = unpack_list({name}_, {ptr});") + asserts.append(f"TORCH_CHECK(!{name}_released_, ERR_BACKWARD_TWICE);") + getter_definitions.append( + GETTER_DEFINITION_VEC_SAVEDVAR.substitute( + op=info.op, name=name, body=GETTER_BODY_VEC_SAVEDVAR + ) + ) + getter_definitions.append( + GETTER_DEFINITION_RAW_VEC_SAVEDVAR.substitute( + op=info.op, name=name, body=GETTER_BODY_RAW_VEC_SAVEDVAR + ) + ) + should_append_raw_getsetdef = True + visit_name = f"{name}_" + unpacked_ref_type = "std::vector&" + elif type == ListCType(OptionalCType(BaseCType(tensorT))): + uses_cpp_saved_variable_cls = True + saved_variables.append(f"std::vector {name}_;") + saved_variables.append(f"bool {name}_released_ = false;") + # Just clear() is sufficient, we don't need to loop and clear each variable. + # Because the SavedVariable owns a tensor and a grad_fn, removing the SavedVariable makes them go away as well. + release_variables.append(f"{name}_.clear();") + release_variables.append(f"{name}_released_ = true;") + unpack.append(f"auto {name} = unpack_opt_list({name}_);") + asserts.append(f"TORCH_CHECK(!{name}_released_, ERR_BACKWARD_TWICE);") + getter_definitions.append( + GETTER_DEFINITION_VEC_SAVEDVAR.substitute( + op=info.op, name=name, body=GETTER_BODY_VEC_SAVEDVAR + ) + ) + getter_definitions.append( + GETTER_DEFINITION_RAW_VEC_SAVEDVAR.substitute( + op=info.op, name=name, body=GETTER_BODY_RAW_VEC_SAVEDVAR + ) + ) + should_append_raw_getsetdef = True + visit_name = f"{name}_" + unpacked_ref_type = "torch::List>&" + elif type == BaseCType(intArrayRefT): + saved_variables.append(f"std::vector {name};") + getter_definitions.append( + GETTER_DEFINITION.substitute( + op=info.op, name=name, body=GETTER_BODY_ARRAYREF_LONG + ) + ) + elif type == BaseCType(symIntArrayRefT): + saved_variables.append(f"std::vector {name};") + getter_definitions.append( + GETTER_DEFINITION.substitute( + op=info.op, name=name, body=GETTER_BODY_ARRAYREF_SYMINT + ) + ) + elif type == BaseCType(optionalIntArrayRefT): + saved_variables.append(f"c10::OptionalArray {name};") + getter_definitions.append( + GETTER_DEFINITION_OPT_ARRAYREF.substitute( + op=info.op, name=name, body=GETTER_BODY_ARRAYREF_LONG + ) + ) + elif type == BaseCType(optionalSymIntArrayRefT): + saved_variables.append(f"c10::OptionalArray {name};") + getter_definitions.append( + GETTER_DEFINITION_OPT_ARRAYREF.substitute( + op=info.op, name=name, body=GETTER_BODY_ARRAYREF_SYMINT + ) + ) + elif type == OptionalCType(BaseCType(intArrayRefT)): + saved_variables.append(f"c10::OptionalArray {name};") + getter_definitions.append( + GETTER_DEFINITION_OPT_ARRAYREF.substitute( + op=info.op, name=name, body=GETTER_BODY_ARRAYREF_LONG + ) + ) + elif type == OptionalCType(BaseCType(symIntArrayRefT)): + saved_variables.append(f"c10::OptionalArray {name};") + getter_definitions.append( + GETTER_DEFINITION_OPT_ARRAYREF.substitute( + op=info.op, name=name, body=GETTER_BODY_ARRAYREF_SYMINT + ) + ) + elif type == OptionalCType(ArrayRefCType(BaseCType(doubleT))): + saved_variables.append(f"c10::OptionalArray {name};") + getter_definitions.append( + GETTER_DEFINITION_OPT_ARRAYREF.substitute( + op=info.op, name=name, body=GETTER_BODY_ARRAYREF_DOUBLE + ) + ) + elif type == BaseCType(longT): + saved_variables.append(f"{type.cpp_type()} {name} = 0;") + getter_definitions.append( + GETTER_DEFINITION.substitute( + op=info.op, name=name, body=GETTER_BODY_INT64_T + ) + ) + elif type == BaseCType(SymIntT): + saved_variables.append(f"c10::SymInt {name};") + getter_definitions.append( + GETTER_DEFINITION.substitute( + op=info.op, name=name, body=GETTER_BODY_SYMINT + ) + ) + elif type == BaseCType(stringT): + saved_variables.append(f"std::string {name};") + getter_definitions.append( + GETTER_DEFINITION.substitute( + op=info.op, name=name, body=GETTER_BODY_STRING + ) + ) + elif type == OptionalCType(BaseCType(stringT)): + saved_variables.append(f"std::optional {name};") + getter_definitions.append( + GETTER_DEFINITION_OPT.substitute( + op=info.op, name=name, body=GETTER_BODY_STRING + ) + ) + elif type == ArrayRefCType( + elem=BaseCType(type=BaseCppType(ns="at", name="Scalar")) + ): + saved_variables.append(f"std::vector {name};") + unpacked_ref_type = "std::vector&" + saved_variables.append(f"bool {name}_released_ = false;") + # Just clear() is sufficient, we don't need to loop and clear each variable. + # Because the SavedVariable owns a tensor and a grad_fn, removing the SavedVariable makes them go away as well. + release_variables.append(f"{name}.clear();") + # release_variables.append(f"{name}_released_ = true;") + # unpack.append(f"auto {name} = unpack_list({name}_);") + # asserts.append(f"TORCH_CHECK(!{name}_released_, ERR_BACKWARD_TWICE);") + getter_definitions.append( + CodeTemplate( + """\ +static PyObject* THP${op}_${name}_getter(THPCppFunction *self, void *_unused) { + HANDLE_TH_ERRORS + const auto *node = static_cast<${op}*>(self->cdata.get()); + const auto& prop = node->${name}; + if (node->${name}_released_) { + PyErr_SetString(PyExc_RuntimeError, ERR_BACKWARD_TWICE); + return nullptr; + } + ${body} + END_HANDLE_TH_ERRORS +} + """ + ).substitute( + op=info.op, + name=name, + body=GETTER_BODY_VEC_SCALAR, + ) + ) + else: + # Check for indicators that you're putting a non-owning reference + # into the saved variable field. If this is spuriously firing, + # edit this field. Otherwise, you probably need to add a case + # above. + if not ( + "ref" not in type.cpp_type().lower() + and "view" not in type.cpp_type().lower() + and "*" not in type.cpp_type() + and "&" not in type.cpp_type() + ): + raise AssertionError( + f"{type.cpp_type()} looks like it contains a non-owning reference" + ) + saved_variables.append(f"{type.cpp_type()} {name};") + + if type in MISC_GETTER_DEFS: + # pyrefly: ignore [bad-index, index-error] + getter_def, body = MISC_GETTER_DEFS[type] + getter_definitions.append( + getter_def.substitute(op=info.op, name=name, body=body) + ) + else: + # Types we don't expose python bindings to yet: + # TypeAndSize, at::ScalarType, TensorOptions, TensorGeometry, + # std::vector>, std::vector + should_append_getsetdef = False + + if should_append_getsetdef: + py_getsetdef_structs.append( + PY_GETSETDEF_STRUCT.substitute(op=info.op, name=name) + ) + if should_append_raw_getsetdef: + py_getsetdef_structs.append( + PY_RAW_GETSETDEF_STRUCT.substitute(op=info.op, name=name) + ) + + if uses_cpp_saved_variable_cls: + compiled_args.append( + f"args.collect({visit_name}, {'true' if is_output else 'false'});" + ) + else: + compiled_args.append(f"args.collect({visit_name});") + apply_with_saved_before.append(f"saved.before({visit_name});") + apply_with_saved_after.append(f"saved.after({visit_name});") + + if unpacked_ref_type is None: + unpacked_ref_type = f"{saved_variables[-1].split(' ')[0]}&" + apply_functional_args.append(str(name)) + apply_functional_args_ref_types.append(unpacked_ref_type) + + for var in sorted(info.all_saved_inputs, key=lambda sa: str(sa.nctype.name)): + save_var(var, is_output=False) + for var in sorted(info.all_saved_outputs, key=lambda sa: str(sa.nctype.name)): + save_var(var, is_output=True) + + # lock the mutex when we release variables and in Node::apply to protect thread safety + # see Note [Thread Safety on Autograd Node] + if len(release_variables) > 0: + thread_lock = "std::lock_guard lock(mutex_);" + else: + thread_lock = "" + + if uses_retain_variables(info): + apply_functional_args.append("retain_variables") + apply_functional_args_ref_types.append("bool") + will_release_variables = WILL_RELEASE_VARIABLES.substitute() + else: + will_release_variables = "" + + body: list[str] = [] + + if uses_single_grad(info): + body.append("const auto& grad = grads[0];") + else: + # Generate aliases for gradients named for returned values. + body.extend( + f"const auto& {name} = grads[{info.available_named_gradients.index(name)}];" + for name in sorted(info.used_named_gradients) + ) + + def emit_derivative( + derivative: Derivative, + args_with_derivatives: Sequence[Binding], + ) -> tuple[bool, str]: + formula = derivative.formula + var_names = derivative.var_names + + if len(var_names) == 1: + checks_any_grad_defined = False + if "not_implemented" not in formula: + matching_args = [ + arg for arg in args_with_derivatives if arg.name == var_names[0] + ] + if len(matching_args) == 1: + # We can add undefined grad support if the input variable is a Tensor + arg = matching_args[0] + if isinstance(arg.argument, Argument) and str( + arg.argument.type + ) in ("Tensor", "Tensor?"): + formula = "any_grad_defined ? (" + formula + ") : Tensor()" + checks_any_grad_defined = True + if info.name.startswith("_foreach_"): + derivative_template = DERIVATIVE_SINGLE_FOREACH + else: + derivative_template = DERIVATIVE_SINGLE + return ( + checks_any_grad_defined, + derivative_template.substitute( + name=var_names[0], + derivative=formula, + idx=input_name_to_idx[var_names[0]], + ), + ) + + else: + if "grad_input_mask" in formula: + masks = [ + f"needs_input_grad[{input_name_to_idx[name]}]," + for name in var_names + ] + grad_input_mask = GRAD_INPUT_MASK.substitute( + n=len(var_names), masks=masks + ) + else: + grad_input_mask = "" + needs_input_grad = [ + f"needs_input_grad[{input_name_to_idx[name]}]" for name in var_names + ] + needs_input_grad = " || ".join(needs_input_grad) + copy_ranges: list[str] = [] + for i, n in enumerate(var_names): + copy_ranges.append( + DERIVATIVE_MULTI_COPY_RANGE.substitute( + name=n, i=i, idx=input_name_to_idx[n] + ) + ) + return False, DERIVATIVE_MULTI.substitute( + needs_input_grad=needs_input_grad, + copy_ranges=copy_ranges, + derivative=formula, + grad_input_mask=grad_input_mask, + ) + + masks = [] + + need_any_grad_defined_var = False + for derivative in info.derivatives: + checks_any_grad_defined, derivative_text = emit_derivative( + derivative, info.args_with_derivatives + ) + body.append(derivative_text) + need_any_grad_defined_var |= checks_any_grad_defined + + for name in input_name_to_idx: + masks.append(f"task_should_compute_output({{ {name}_ix }}),") + + # Since single-output derivative formulas need to check if grads are + # defined, only perform the check once, before all the formulas + if need_any_grad_defined_var: + body.insert( + -len(info.derivatives), + "bool any_grad_defined = any_variable_defined(grads);", + ) + + if info.name in UNTRACEABLE_FUNCTIONS: + superclass = "Node" + else: + superclass = "TraceableFunction" + + all_getsetdef_structs = ( + ",\n".join(py_getsetdef_structs) + "," if len(py_getsetdef_structs) != 0 else "" + ) + all_getter_definitions = "\n".join(getter_definitions) + + compute_needs_input_grad = COMPUTE_NEEDS_INPUT_GRAD.substitute( + n=len(masks), compute_index_ranges=compute_index_ranges, masks=masks + ) + apply_functional_args_signature = [ + f"{T} {x}" + for T, x in zip(apply_functional_args_ref_types, apply_functional_args) + ] + get_packed_args = "\n".join( + f"packed_args.pack({name});" for name in apply_functional_args + ) + unpack_ivalues = [] + for typ, name in zip(apply_functional_args_ref_types, apply_functional_args): + typ = typ.removesuffix("&") + # pyrefly: ignore [bad-argument-type] + unpack_ivalues.append(f"auto {name} = packed_args.unpack<{typ}>();") + + schema_args = [f"std::array"] + for typ in apply_functional_args_ref_types: + typ = typ.removesuffix("&") + typ = typ.removeprefix("const") + schema_args.append(typ.strip()) + compute_schema = ["std::vector schema = {"] + for schema_arg in schema_args: + compute_schema.append( + f" torch::dynamo::autograd::IValuePacker<{schema_arg}>::packed_type()," + ) + compute_schema.append("};") + + return template.substitute( + unpacks="\n".join(unpack), + op=info.op, + compute_schema="\n".join(compute_schema), + apply_functional_args=apply_functional_args, + apply_functional_args_signature=apply_functional_args_signature, + compute_needs_input_grad=compute_needs_input_grad, + num_inputs=len(input_name_to_idx), + unpack_ivalues="\n".join(unpack_ivalues), + compute_index_ranges=compute_index_ranges, + saved_variables=saved_variables, + release_variables=release_variables, + saved_list_sizes=saved_list_sizes, + asserts=asserts, + thread_lock=thread_lock, + will_release_variables=will_release_variables, + body=body, + superclass=superclass, + all_getter_definitions=all_getter_definitions, + all_getsetdef_structs=all_getsetdef_structs, + compiled_args=compiled_args, + apply_with_saved_before=apply_with_saved_before, + apply_with_saved_after=apply_with_saved_after, + get_packed_args=get_packed_args, + ) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/gen_inplace_or_view_type.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/gen_inplace_or_view_type.py new file mode 100644 index 0000000000000000000000000000000000000000..bbdb833143c47225e9ebbea6de94778c6b298db8 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/gen_inplace_or_view_type.py @@ -0,0 +1,676 @@ +# Generates ADInplaceOrViewType.h/cpp +# +# NOTE: If any changes are being made to the ADInplaceOrView codegen please also check +# if updates are needed in torch/csrc/autograd/autograd_not_implemented_fallback.cpp +# The fallback is expected to mimic this codegen, so we should keep the two in sync. + +from __future__ import annotations + +from torchgen.api import cpp +from torchgen.api.autograd import ( + dispatch_strategy, + gen_differentiable_outputs, + NativeFunctionWithDifferentiabilityInfo, +) +from torchgen.api.types import ( + BaseCType, + Binding, + boolT, + ConstRefCType, + CType, + DispatcherSignature, + intArrayRefT, + longT, + OptionalCType, + symIntArrayRefT, + SymIntT, + tensorT, +) +from torchgen.code_template import CodeTemplate +from torchgen.context import with_native_function +from torchgen.model import ( + NativeFunction, + SchemaKind, + SelfArgument, + TensorOptionsArguments, + Type, +) +from torchgen.utils import FileManager + +from .context import with_native_function_with_differentiability_info +from .gen_trace_type import ( + get_return_value, + MANUAL_AUTOGRAD, + tie_return_values, + type_wrapper_name, +) + + +# See NOTE [ Autograd View Variables ] in variable.h for details. +# If you update list VIEW_FUNCTIONS or RETURNS_VIEWS_OF_INPUT, +# you **MUST** also update the public list of view ops accordingly in +# docs/source/tensor_view.rst. Note not all ATen functions are exposed to public, +# e.g alias & sparse_coo_tensor_with_dims_and_tensors. +# +# A map: function name => name of the argument that all outputs are view of + +VIEW_FUNCTIONS_WITH_METADATA_CHANGE = [ + "view_as_complex", + "view_as_real", + "_conj", + "_neg_view", + "_nested_get_values", + "_nested_view_from_buffer", + "_nested_view_from_jagged", +] + +VIEW_FUNCTIONS = { + "numpy_T": "self", + "alias": "self", + "as_strided": "self", + "diagonal": "self", + "expand": "self", + "permute": "self", + "select": "self", + "slice": "self", + "slice_inverse": "self", + "split": "self", + "split_with_sizes": "self", + "squeeze": "self", + "t": "self", + "transpose": "self", + "unfold": "self", + "unsqueeze": "self", + "flatten": "self", + "view": "self", + "unbind": "self", + "_indices": "self", + "_values": "self", + "indices": "self", + "values": "self", + "crow_indices": "self", + "col_indices": "self", + "ccol_indices": "self", + "row_indices": "self", + # sparse_coo ctor output should really be views of both indices and values, + # but we only supports making as view of a single variable, and indices is + # discrete anyways. + # FIXME: clone indices on construction. + "sparse_coo_tensor_with_dims_and_tensors": "values", + "_reshape_alias": "self", + "_test_autograd_multiple_dispatch_view": "self", +} + +for key in VIEW_FUNCTIONS_WITH_METADATA_CHANGE: + VIEW_FUNCTIONS[key] = "self" + +# note: some VIEW_FUNCTIONS are just compositions of the view functions above +# this list contains both the root view functions and any that are purely composed +# of viewing functions, and is used by the JIT to determine when an operator +# may return a view of its inputs; however they may sometimes return a copy. +# (e.g. `contiguous`) +RETURNS_VIEWS_OF_INPUT = set(VIEW_FUNCTIONS.keys()).union( + { + "chunk", + "detach", + "contiguous", + "reshape", + "reshape_as", + "expand_as", + "view_as", + "real", + "imag", + "narrow", + "movedim", + "tensor_split", + "swapdims", + "swapaxes", + "mT", + "mH", + "adjoint", + "matrix_H", + } +) + +# These are the functions we consider views for the purposes of validating +# StorageImpl and TensorImpl in gen_variable_type. +# `_unsafe_view` is not included in VIEW_FUNCTIONS above because it is not a +# view for the purposes of ADInplaceOrView kernel, we do not want to call as_view +# See NOTE [Unsafe View] for more info. +ALL_VIEW_FUNCTIONS = { + **VIEW_FUNCTIONS, + "_unsafe_view": "self", +} + +ARRAYREF_TO_VEC = CodeTemplate( + """\ +auto ${vec} = ${arg}.vec(); +""" +) + +OPTIONAL_TO_VAL = CodeTemplate( + """\ +auto ${val} = ${arg}.value_or(${default}); +""" +) + +CALL_DISPATCH = CodeTemplate( + """\ +at::_ops::${unambiguous_name}::call(${unpacked_args})""" +) + +REVERSE_VIEW_DISPATCH = CodeTemplate( + """\ +${reverse_name}(${unpacked_args})""" +) + +MULTI_OUTPUT_VIEW_ITERATION = CodeTemplate( + """\ +for (auto ${view_idx} : c10::irange(${var}.size())) { + ${body} +} +""" +) + +SETUP_REPLAY_VIEW_IF_NOT_SUPPORT_AS_STRIDED_OR_VIEW_WITH_METADATA_CHANGE = CodeTemplate( + """\ +std::unique_ptr func(nullptr); +std::function rev_func=nullptr; +if (${is_view_with_metadata_change} || + !self.unsafeGetTensorImpl()->support_as_strided() || + self.unsafeGetTensorImpl()->is_python_dispatch() || + c10::AutogradState::get_tls_state().get_view_replay_enabled()) { + ${replay_view_func} + ${reverse_replay_view_func} +} +""" +) + +REPLAY_VIEW_FUNC = CodeTemplate( + """\ +func = std::make_unique<${view_func_name}>(${view_func_args}); +""" +) + +REVERSE_REPLAY_VIEW_LAMBDA_FUNC = CodeTemplate( + """\ +rev_func = [=](const at::Tensor& ${input_view}) { + return ${reverse_replay_view_call}; +}; +""" +) + +METHOD_DEFINITION = CodeTemplate( + """\ +${return_type} ${type_wrapper_name}(${formals}) { + ${type_definition_body} +} +""" +) + +WRAPPER_REGISTRATION = CodeTemplate( + """\ +m.impl("${unqual_operator_name_with_overload}", + TORCH_FN(${class_type}::${type_wrapper_name}) +); +""" +) + +AUTOGRAD_NOT_IMPLEMENTED_REGISTRATION = CodeTemplate( + """\ +m.impl("${unqual_operator_name_with_overload}", torch::autograd::autogradNotImplementedFallback()); +""" +) + +INPLACE_REDISPATCH = CodeTemplate( + """\ +{ + at::AutoDispatchBelowADInplaceOrView guard; + at::_ops::${unambiguous_name}::redispatch(${unpacked_args}); +} +""" +) + +ASSIGN_RETURN_VALUE = CodeTemplate( + """\ +${return_values} = ${rhs_value}; +""" +) + +VIEW_REDISPATCH = CodeTemplate( + """\ +${assign_return_values} ([&]() { + at::AutoDispatchBelowADInplaceOrView guard; + return at::_ops::${unambiguous_name}::redispatch(${unpacked_args}); +})(); +""" +) + +TMP_VAR = "_tmp" + + +# FIXME: Ideally these functions should be methods on Type class, but we have a +# comment in codegen/model.py there saying these concepts are not well defined. +# Thus we put a version that commonly used by autograd codegen here. +def is_tensor_type(t: Type) -> bool: + # TODO: Should handle optional here? + return t.is_tensor_like() and t.is_list_like() is None + + +def is_tensor_list_type(t: Type) -> bool: + # TODO: Should handle optional here? + return t.is_tensor_like() and t.is_list_like() is not None + + +UNPACK_TENSOR = CodeTemplate( + """\ +auto${ref} ${arg_name}_ = unpack${suffix}(${arg_name}, "${arg_name}", ${arg_pos});""" +) + + +def unpacked_name(arg_name: str) -> str: + return arg_name + "_" + + +# e.g. select.int -> select_copy_int_inverse() +def inverse_view_name(f: NativeFunction) -> str: + copy_variant = f"{f.root_name}_copy" + overload = f"{f.func.name.overload_name}" + if overload != "": + overload = "_" + overload + return f"{copy_variant}{overload}_inverse" + + +def extract_bindings(f: NativeFunction) -> list[Binding]: + return [ + r + for a in f.func.schema_order_arguments() + for r in cpp.argument( + a, + method=False, + symint=True, + cpp_no_default_args=set(), + faithful=False, + has_tensor_options=False, + ) + ] + + +@with_native_function +def unpack_args(f: NativeFunction) -> tuple[list[str], list[Binding]]: + body: list[str] = [] + unpacked_bindings: list[Binding] = [] + + for i, binding in enumerate(extract_bindings(f)): + if isinstance(binding.argument, SelfArgument): + raise AssertionError("Binding argument should not be SelfArgument") + if isinstance(binding.argument, TensorOptionsArguments): + raise RuntimeError("VariableKernel shouldn't take TensorOptions") + + is_nullable = binding.argument.type.is_nullable() + if not binding.argument.type.is_tensor_like() or is_nullable: + unpacked_bindings.append(binding) + continue + + is_tensor_list = is_tensor_list_type(binding.argument.type) + ref = (not is_nullable) and not is_tensor_list + suffix = "_opt" if is_nullable and not is_tensor_list else "" + body.append( + UNPACK_TENSOR.substitute( + arg_name=binding.name, + arg_pos=i, + suffix=suffix, + ref="&" if ref else "", + ) + ) + unpacked_bindings.append( + Binding( + name=unpacked_name(binding.name), + nctype=binding.nctype, + argument=binding.argument, + default=binding.default, + ) + ) + + return body, unpacked_bindings + + +def get_base_name(f: NativeFunction) -> str: + return f.func.name.name.base # TODO: should be str(f.func.name.name)? + + +def get_view_info(f: NativeFunction) -> str | None: + base_name = get_base_name(f) + view_info = VIEW_FUNCTIONS.get(base_name) + if view_info is None and base_name in RETURNS_VIEWS_OF_INPUT: + view_info = "self" + return view_info + + +def emit_view_func( + f: NativeFunction, bindings: list[Binding], view_idx: str | None = None +) -> str: + """Generate an additional lambda function to recover views in backward when as_strided is not supported. + See Note [View + Inplace update for base tensor] and [View + Inplace update for view tensor] for more details. + """ + # TODO: Clean this logic up if we get rid of reverse view funcs or reify them. + input_base = "input_base" + replay_view_func = "" + updated_args: list[str] = [] + known_view_arg_simple_types: list[CType] = [ + BaseCType(longT), + OptionalCType(BaseCType(longT)), + BaseCType(SymIntT), + OptionalCType(BaseCType(SymIntT)), + BaseCType(boolT), + BaseCType(intArrayRefT), + BaseCType(symIntArrayRefT), + ConstRefCType(BaseCType(tensorT)), + ConstRefCType(OptionalCType(BaseCType(tensorT))), + ] + for binding in bindings: + arg, arg_type = binding.name, binding.nctype.type + if arg == "self": + updated_args.append(input_base) + continue + if arg_type not in known_view_arg_simple_types: + known_types_str = ", ".join([str(t) for t in known_view_arg_simple_types]) + raise TypeError( + f"You are adding an {arg_type} {arg} argument to op {cpp.name(f.func)} in addition to known types: " + f"{known_types_str}. Please update the list or materialize it so that it can be closed " + "over by value, also add a test in pytorch/xla/test/test_operations.py where this code " + "is exercised." + ) + if arg_type == BaseCType(intArrayRefT) or arg_type == BaseCType( + symIntArrayRefT + ): + # It's not safe to close over IntArrayRef by value, since this is a + # reference type, so materialize a vector to close over by value + arg_vec = arg + "_vec" + replay_view_func += ARRAYREF_TO_VEC.substitute(arg=arg, vec=arg_vec) + updated_args.append(arg_vec) + elif arg_type == OptionalCType(BaseCType(longT)): + # Materialize int64_t? to int64_t + arg_value = arg + "_val" + replay_view_func += OPTIONAL_TO_VAL.substitute( + arg=arg, val=arg_value, default="0" + ) + updated_args.append(arg_value) + elif arg_type == ConstRefCType(BaseCType(tensorT)) or arg_type == ConstRefCType( + OptionalCType(BaseCType(tensorT)) + ): + # NB: Closing over a tensor. If a user modifies this tensor, this will be silently + # incorrect. The proper thing to do is to store the version counter and copy on write. + updated_args.append(arg) + else: + updated_args.append(arg) + + from .gen_view_funcs import view_func_name + + view_func_args = [b.name for b in bindings if b.name != "self"] + if view_idx is not None: + view_func_args.append(f"{view_idx}") + replay_view_func += REPLAY_VIEW_FUNC.substitute( + view_func_name=view_func_name(f, include_namespace=True), + view_func_args=view_func_args, + ) + + input_view = "input_view" + reverse_unpacked_args = [ + "self", + f"{input_view}", + # inverse_return_mode= + "at::functionalization::InverseReturnMode::AlwaysView", + *(() if view_idx is None else (f"{view_idx}",)), + # skip input_base arg + *updated_args[1:], + ] + + from torchgen.api.functionalization import reverse_name + + reverse_replay_view_call = REVERSE_VIEW_DISPATCH.substitute( + reverse_name=reverse_name(f, include_namespace=True), + unpacked_args=reverse_unpacked_args, + ) + reverse_replay_view_func = REVERSE_REPLAY_VIEW_LAMBDA_FUNC.substitute( + input_view=input_view, reverse_replay_view_call=reverse_replay_view_call + ) + + is_view_with_metadata_change = ( + "true" if cpp.name(f.func) in VIEW_FUNCTIONS_WITH_METADATA_CHANGE else "false" + ) + + return SETUP_REPLAY_VIEW_IF_NOT_SUPPORT_AS_STRIDED_OR_VIEW_WITH_METADATA_CHANGE.substitute( + is_view_with_metadata_change=is_view_with_metadata_change, + replay_view_func=replay_view_func, + reverse_replay_view_func=reverse_replay_view_func, + ) + + +def emit_view_body( + fn: NativeFunctionWithDifferentiabilityInfo, var: str +) -> tuple[str, str]: + # See NOTE [ Autograd View Variables ] in variable.h for details. + f = fn.func + base_name = get_base_name(f) + view_info = get_view_info(f) + call = "" + differentiable_outputs = gen_differentiable_outputs(fn) + differentiable_output_vars = {r.name for r in differentiable_outputs} + if not isinstance(view_info, str): + raise TypeError( + f"The view info should be a string for {base_name}, but it is: {view_info}" + ) + if len(differentiable_output_vars) == 0: + # no output is differentiable (.indices() for SparseTensors for example) + rhs_value = ( + f"as_view({view_info}, {var}, " + f"/* is_bw_differentiable */ false, /* is_fw_differentiable */ false)" + ) + elif len(differentiable_output_vars) == 1: + # Single differentiable output (Tensor or Tensor[]) + return_info = differentiable_outputs[0] + # We only support simple Tensor or a TensorList for functions that return views + if not is_tensor_type(return_info.type) and not is_tensor_list_type( + return_info.type + ): + raise RuntimeError( + f"{base_name} that return differentiable views can only return Tensor or Tensor[]" + ) + + # See Note [ View + Inplace detection] + def get_creation_meta_in_mode(original: str) -> str: + creation_meta_with_grad_mode = f"(at::GradMode::is_enabled() ? {original} : CreationMeta::NO_GRAD_MODE)" + return f"InferenceMode::is_enabled() ? CreationMeta::INFERENCE_MODE : {creation_meta_with_grad_mode}" + + # Only allow rebasing of the history if we return a single Tensor + # If we are in a no grad block, raise a warning + # See NOTE [ View + Inplace detection ] for more details about this logic + if is_tensor_list_type(return_info.type): + creation_meta = get_creation_meta_in_mode("CreationMeta::MULTI_OUTPUT_NODE") + view_idx = "view_idx" + view_func = emit_view_func( + f, extract_bindings(f), view_idx=view_idx + ).strip() + as_view_call = ( + f"as_view(/* base */ {view_info}, /* output */ {var}[{view_idx}], " + "/* is_bw_differentiable */ true, /* is_fw_differentiable */ true, " + "/* view_func */ std::move(func), /* rev_view_func */ rev_func, " + f"/* creation_meta */ {creation_meta});" + ) + call += MULTI_OUTPUT_VIEW_ITERATION.substitute( + var=var, view_idx=view_idx, body=f"{view_func}\n{as_view_call}" + ) + rhs_value = f"std::move({var})" + else: + call += emit_view_func(f, extract_bindings(f), view_idx=None) + creation_meta = get_creation_meta_in_mode("CreationMeta::DEFAULT") + rhs_value = ( + f"as_view(/* base */ {view_info}, /* output */ {var}, /* is_bw_differentiable */ true, " + "/* is_fw_differentiable */ true, " + f"/* view_func */ std::move(func), /* rev_view_func */ rev_func, /* creation_meta */ {creation_meta})" + ) + else: + # This could be supported but we don't need it at the moment, so keeping things simple. + raise RuntimeError( + "Function that return multiple differentiable output " + "when at least one of them is view is not supported." + ) + return call, rhs_value + + +def modifies_arguments(f: NativeFunction) -> bool: + return f.func.kind() in [SchemaKind.inplace, SchemaKind.out] + + +@with_native_function_with_differentiability_info +def emit_inplace_or_view_body(fn: NativeFunctionWithDifferentiabilityInfo) -> list[str]: + f = fn.func + inplace_view_body: list[str] = [] + + dispatcher_sig = DispatcherSignature.from_schema(f.func) + dispatcher_exprs = dispatcher_sig.exprs() + + # code-generated ADInplaceOrView kernels plumb and recompute dispatch keys directly through the kernel for performance. + # See Note [Plumbing Keys Through The Dispatcher] for details. + dispatch_key_set = "ks & c10::after_ADInplaceOrView_keyset" + redispatch_args = ", ".join([dispatch_key_set] + [a.expr for a in dispatcher_exprs]) + + # Note that this calls the slow, dispatching variants of manual_cpp_binding ops. + # We could probably work harder to ensure that the fast variants are called instead, but the perf benefit would be minimal. + if modifies_arguments(f): # inplace op + inplace_view_body.append( + INPLACE_REDISPATCH.substitute( + unambiguous_name=f.func.name.unambiguous_name(), + unpacked_args=redispatch_args, + ) + ) + for r in cpp.return_names(f): + inplace_view_body.append(f"increment_version({r});") + else: + if get_view_info(f) is None: + raise AssertionError("Expected view info to be non-None") + inplace_view_body.append( + VIEW_REDISPATCH.substitute( + assign_return_values="auto " + TMP_VAR + " = ", + unambiguous_name=f.func.name.unambiguous_name(), + unpacked_args=redispatch_args, + ) + ) + call, rhs_value = emit_view_body(fn, TMP_VAR) + inplace_view_body.append(call) + if rhs_value is None: + raise AssertionError("Expected rhs_value to be non-None") + inplace_view_body.append( + ASSIGN_RETURN_VALUE.substitute( + return_values=tie_return_values(f), rhs_value=rhs_value + ) + ) + if f.func.returns: + inplace_view_body.append(f"return {get_return_value(f)};") + return inplace_view_body + + +@with_native_function +def gen_formals(f: NativeFunction) -> str: + return ", ".join( + # code-generated autograd kernels plumb and recompute dispatch keys directly through the kernel for performance. + # See Note [Plumbing Keys Through The Dispatcher] for details. + ["c10::DispatchKeySet ks"] + + [ + f"{cpp.argument_type(a, binds='__placeholder__', symint=True).cpp_type()} {a.name}" + for a in f.func.schema_order_arguments() + ] + ) + + +@with_native_function_with_differentiability_info +def inplace_or_view_method_definition( + fn: NativeFunctionWithDifferentiabilityInfo, +) -> str | None: + f = fn.func + if get_view_info(f) is None and ( + # For functions that modify their inputs but don't return them, + # we can't give them autograd support. + # See https://github.com/pytorch/pytorch/issues/53796 + not modifies_arguments(f) or len(f.func.returns) == 0 + ): + return None + return METHOD_DEFINITION.substitute( + return_type=cpp.returns_type(f.func.returns, symint=True).cpp_type(), + type_wrapper_name=type_wrapper_name(f), + formals=gen_formals(f), + type_definition_body=emit_inplace_or_view_body(fn), + ) + + +@with_native_function_with_differentiability_info +def inplace_or_view_method_registration( + fn: NativeFunctionWithDifferentiabilityInfo, +) -> str | None: + f = fn.func + if get_view_info(f) is None and ( + not modifies_arguments(f) or len(f.func.returns) == 0 + ): + return None + return WRAPPER_REGISTRATION.substitute( + unqual_operator_name_with_overload=f.func.name, + type_wrapper_name=type_wrapper_name(f), + class_type="ADInplaceOrView", + ) + + +def use_derived(fn: NativeFunctionWithDifferentiabilityInfo) -> bool: + f = fn.func + name = cpp.name(f.func) + return name not in MANUAL_AUTOGRAD and dispatch_strategy(fn) == "use_derived" + + +def gen_inplace_or_view_type_env( + fn: NativeFunctionWithDifferentiabilityInfo, +) -> dict[str, list[str]]: + definition = inplace_or_view_method_definition(fn) + registration = inplace_or_view_method_registration(fn) + + return { + "ops_headers": ( + [f"#include "] + if definition is not None + else [] + ), + "inplace_or_view_method_definitions": [definition] + if definition is not None + else [], + "inplace_or_view_wrapper_registrations": [registration] + if registration is not None + else [], + } + + +def gen_inplace_or_view_type( + out: str, + native_yaml_path: str, + tags_yaml_path: str, + fns_with_infos: list[NativeFunctionWithDifferentiabilityInfo], + template_path: str, +) -> None: + # NOTE: see Note [Sharded File] at the top of the VariableType.cpp + # template regarding sharding of the generated files. + + fm = FileManager(install_dir=out, template_dir=template_path, dry_run=False) + fm.write_sharded( + "ADInplaceOrViewType.cpp", + [fn for fn in fns_with_infos if use_derived(fn)], + key_fn=lambda fn: fn.func.root_name, + base_env={ + "generated_comment": "@" + + f"generated from {fm.template_dir_for_comments()}/ADInplaceOrViewType.cpp", + }, + env_callable=gen_inplace_or_view_type_env, + num_shards=2, + sharded_keys={ + "ops_headers", + "inplace_or_view_method_definitions", + "inplace_or_view_wrapper_registrations", + }, + ) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/gen_python_functions.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/gen_python_functions.py new file mode 100644 index 0000000000000000000000000000000000000000..09688e561e52582feff50eeda1beb28fc82f3112 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/gen_python_functions.py @@ -0,0 +1,1413 @@ +# Generates Python bindings for ATen functions +# +# The bindings are generated as methods on python_variable or functions on the +# torch._C._nn. torch._C._fft, torch._C._linalg, torch._C._nested, torch._C._sparse +# or torch._C._special objects. +# + +# Code tries to stick to the following rules: +# +# - templates should be colocated with the functions that use them. +# no templates are currently shared between functions, but if that +# happens, maybe put the template with the first one +# +# - don't use environment dictionaries when calling template.substitute(). +# pass named arguments directly for everything, otherwise it's much too +# hard to track what's actually being used and by who +# +# - colocate any new hacks/adjustments with existing ones of the same kind. +# ideally in a data structure rather than code if possible. See e.g. +# SCHEMA_DEFAULT_CONVERSION_HACKS, etc. +# +# - similarly, conversions from one format to another should ideally happen +# all at once in a single place. +# +# - no nontrivial nested functions. couple-liners are ok but please no more. +# especially avoid functions that read/write outer variables defined far away. +# +# - raise RuntimeError instead of asserting, and put as much +# information as is available into the message. I.e. no need to +# plumb in new params whose only purpose is to fill out an error +# message, but use what's there +# + +from __future__ import annotations + +import itertools +import re +from collections import defaultdict +from typing import TYPE_CHECKING + +import yaml + +from torchgen.api import cpp +from torchgen.api.python import ( + arg_parser_output_exprs, + cpp_dispatch_exprs, + cpp_dispatch_target, + dispatch_lambda_args, + dispatch_lambda_exprs, + dispatch_lambda_return_str, + has_tensor_options, + PythonSignature, + PythonSignatureDeprecated, + PythonSignatureGroup, + PythonSignatureNativeFunctionPair, + signature, + signature_from_schema, + structseq_fieldnames, +) +from torchgen.code_template import CodeTemplate +from torchgen.context import with_native_function +from torchgen.gen import cpp_string, parse_native_yaml, parse_tags_yaml +from torchgen.model import ( + Argument, + BaseOperatorName, + FunctionSchema, + NativeFunction, + SchemaKind, + Type, + Variant, +) +from torchgen.utils import FileManager, split_name_params +from torchgen.yaml_utils import YamlLoader + +from .gen_inplace_or_view_type import is_tensor_list_type +from .gen_trace_type import should_trace + + +if TYPE_CHECKING: + from collections.abc import Callable, Iterable, Sequence + + +# +# declarations blocklist +# We skip codegen for these functions, for various reasons. +# Future PRs will categorize this list and eliminate or hoist +# them out of eager-only codegen. +# See https://github.com/pytorch/pytorch/issues/30788 +# + +# These functions require manual Python bindings or are not exposed to Python +_SKIP_PYTHON_BINDINGS = [ + "alias", + "contiguous", + "dim", + "get_device", + "is_contiguous", + "is_cuda", + "is_sparse", + "is_sparse_csr", + "numel", + "size", + "storage_offset", + "stride", + "sym_is_contiguous", + "sym_size", + "sym_stride", + "sym_storage_offset", + "sym_numel", + ".*_backward", + ".*_backward_(out|input|weight|bias)", + ".*_forward", + ".*_forward_out", + ".*_jvp", + "_unsafe_view", + "tensor", + "_?sparse_(coo|compressed|csr|csc|bsr|bsc)_tensor.*", + "_range.*", + "_sparse_add_out", + "_sparse_div.*", + "_sparse_mul.*", + "_sparse_sub.*", + "_sparse_dense_add_out", + "index", + "index_out", + "unique_dim_consecutive", + "_cumsum.*", + "_cumprod.*", + "_sum.*", + "_prod.*", + "_th_.*", + "_thnn_.*", + "range.*", + "_solve.*", + "_inverse.*", + "_cholesky.*", + "_triangular_solve.*", + "_qr.*", + "_svd.*", + "slice", + "item", + "_local_scalar_dense", + "to", + "_to_copy", + "_to_copy_out", + "_reshape_copy", + "_reshape_copy_out", + "copy_sparse_to_sparse_", + "copy_", + "_foreach_copy", + "numpy_T", + "matrix_H", + "mT", + "mH", # these need to be an attributes in Python, not functions + "nonzero(_(out|numpy))?", + "set_data", + ".*_overrideable", # overridable functions for backend extension + "data", + "is_leaf", + "output_nr", + "_version", + "requires_grad_", + "retains_grad", + "set_", + "_fw_primal", + "fake_quantize_per_tensor_affine_cachemask", + "fake_quantize_per_channel_affine_cachemask", + "_new_zeros_with_same_feature_meta", + "_has_same_storage_numel", # used for forward AD internals + "_reshape_alias", + "replace_", # only used by the functionalization pass, doesn't need to be exposed to python + "copy", # only used by the functionalization pass + "fill.Tensor", # only used by the functionalization pass + "fill.Scalar", # only used by the functionalization pass + "lift.*", + "normal_functional", # only used by the functionalization pass + "nbytes", + "itemsize", + "_batch_norm_with_update", + "_batch_norm_with_update_out", + "_batch_norm_no_update", +] + +SKIP_PYTHON_BINDINGS = [ + re.compile(rf"^{pattern}$") for pattern in _SKIP_PYTHON_BINDINGS +] + +# These function signatures are not exposed to Python. Note that this signature +# list does not support regex. +SKIP_PYTHON_BINDINGS_SIGNATURES = [ + "add.Scalar(Tensor self, Scalar other, Scalar alpha=1) -> Tensor", + "add_.Scalar(Tensor(a!) self, Scalar other, Scalar alpha=1) -> Tensor(a!)", + "sub.Scalar(Tensor self, Scalar other, Scalar alpha=1) -> Tensor", + "sub_.Scalar(Tensor(a!) self, Scalar other, Scalar alpha=1) -> Tensor(a!)", + "mul.Scalar(Tensor self, Scalar other) -> Tensor", + "mul_.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!)", + "div.Scalar(Tensor self, Scalar other) -> Tensor", + "div_.Scalar(Tensor(a!) self, Scalar other) -> Tensor(a!)", +] + + +@with_native_function +def should_generate_py_binding(f: NativeFunction) -> bool: + # NativeFunctions that are entirely code-generated should not get python bindings + # because these codegen implementations are often inefficient. A handful of + # view_copy style ops were exposed accidentally when they were handwritten and now + # that we are moving them to codegen for bc reasons we need to keep them exposed in + # python. + if "generated" in f.tags and "view_copy" not in f.tags: + return False + + name = cpp.name(f.func) + for skip_regex in SKIP_PYTHON_BINDINGS: + if skip_regex.match(name): + return False + + signature = str(f.func) + for pattern in SKIP_PYTHON_BINDINGS_SIGNATURES: + if pattern == signature: + return False + return True + + +def get_pycname(name: BaseOperatorName) -> str: + return f"THPVariable_{name}" + + +def is_noarg(overloads: Sequence[PythonSignatureNativeFunctionPair]) -> bool: + return len(overloads) == 1 and overloads[0].signature.arguments_count() == 0 + + +def is_py_variable_method(f: NativeFunction) -> bool: + return f.python_module is None and Variant.method in f.variants + + +def is_py_torch_function(f: NativeFunction) -> bool: + return f.python_module is None and Variant.function in f.variants + + +def is_py_nn_function(f: NativeFunction) -> bool: + return f.python_module == "nn" + + +def is_py_fft_function(f: NativeFunction) -> bool: + return f.python_module == "fft" + + +def is_py_linalg_function(f: NativeFunction) -> bool: + return f.python_module == "linalg" + + +def is_py_nested_function(f: NativeFunction) -> bool: + return f.python_module == "nested" + + +def is_py_sparse_function(f: NativeFunction) -> bool: + return f.python_module == "sparse" + + +def is_py_special_function(f: NativeFunction) -> bool: + return f.python_module == "special" + + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # +# +# Main Function +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # + + +def gen( + out: str, + native_yaml_path: str, + tags_yaml_path: str, + deprecated_yaml_path: str, + template_path: str, + *, + symint: bool = True, +) -> None: + fm = FileManager(install_dir=out, template_dir=template_path, dry_run=False) + native_functions = parse_native_yaml( + native_yaml_path, tags_yaml_path + ).native_functions + native_functions = list(filter(should_generate_py_binding, native_functions)) + + methods = load_signatures(native_functions, deprecated_yaml_path, method=True) + create_python_bindings( + fm, + methods, + is_py_variable_method, + None, + "python_variable_methods.cpp", + method=True, + symint=symint, + ) + + # NOTE: num_shards here must be synced with gatherTorchFunctions in + # torch/csrc/autograd/python_torch_functions_manual.cpp + functions = load_signatures(native_functions, deprecated_yaml_path, method=False) + create_python_bindings_sharded( + fm, + functions, + is_py_torch_function, + "torch", + "python_torch_functions.cpp", + method=False, + num_shards=3, + symint=symint, + ) + + create_python_bindings( + fm, + functions, + is_py_nn_function, + "torch.nn", + "python_nn_functions.cpp", + method=False, + symint=symint, + ) + + create_python_bindings( + fm, + functions, + is_py_fft_function, + "torch.fft", + "python_fft_functions.cpp", + method=False, + symint=symint, + ) + + create_python_bindings( + fm, + functions, + is_py_linalg_function, + "torch.linalg", + "python_linalg_functions.cpp", + method=False, + symint=symint, + ) + + create_python_bindings( + fm, + functions, + is_py_nested_function, + "torch.nested", + "python_nested_functions.cpp", + method=False, + ) + + create_python_bindings( + fm, + functions, + is_py_sparse_function, + "torch.sparse", + "python_sparse_functions.cpp", + method=False, + symint=symint, + ) + + create_python_bindings( + fm, + functions, + is_py_special_function, + "torch.special", + "python_special_functions.cpp", + method=False, + symint=symint, + ) + + # Currently, we only use `functions` to generate `return_types` bindings. + # All methods which return structseq have function variant at this point. + # If any method only operator with structseq is added in the future, + # we will have to address that. + create_python_return_type_bindings( + fm, functions, lambda fn: True, "python_return_types.cpp" + ) + create_python_return_type_bindings_header( + fm, functions, lambda fn: True, "python_return_types.h" + ) + + valid_tags = parse_tags_yaml(tags_yaml_path) + + def gen_tags_enum() -> dict[str, str]: + return { + "enum_of_valid_tags": ( + "".join( + [f'\n.value("{tag}", at::Tag::{tag})' for tag in sorted(valid_tags)] + ) + ) + } + + fm.write("python_enum_tag.cpp", gen_tags_enum) + + +def group_filter_overloads( + pairs: Sequence[PythonSignatureNativeFunctionPair], + pred: Callable[[NativeFunction], bool], +) -> dict[BaseOperatorName, list[PythonSignatureNativeFunctionPair]]: + grouped: dict[BaseOperatorName, list[PythonSignatureNativeFunctionPair]] = ( + defaultdict(list) + ) + for pair in pairs: + if pred(pair.function): + grouped[pair.function.func.name.name].append(pair) + return grouped + + +def create_python_bindings( + fm: FileManager, + pairs: Sequence[PythonSignatureNativeFunctionPair], + pred: Callable[[NativeFunction], bool], + module: str | None, + filename: str, + *, + method: bool, + symint: bool = True, +) -> None: + """Generates Python bindings to ATen functions""" + py_methods: list[str] = [] + ops_headers: list[str] = [] + py_method_defs: list[str] = [] + py_forwards: list[str] = [] + + grouped = group_filter_overloads(pairs, pred) + + for name in sorted(grouped.keys(), key=str): + overloads = grouped[name] + py_methods.append( + method_impl(name, module, overloads, method=method, symint=symint) + ) + py_method_defs.append(method_def(name, module, overloads, method=method)) + py_forwards.extend(forward_decls(name, overloads, method=method)) + ops_headers.append(f"#include ") + + fm.write_with_template( + filename, + filename, + lambda: { + "generated_comment": "@" + + f"generated from {fm.template_dir_for_comments()}/{filename}", + "ops_headers": ops_headers, + "py_forwards": py_forwards, + "py_methods": py_methods, + "py_method_defs": py_method_defs, + }, + ) + + +def create_python_return_type_bindings( + fm: FileManager, + pairs: Sequence[PythonSignatureNativeFunctionPair], + pred: Callable[[NativeFunction], bool], + filename: str, +) -> None: + """ + Generate function to initialize and return named tuple for native functions + which returns named tuple and registration invocations in `python_return_types.cpp`. + """ + py_return_types_definition: list[str] = [] + py_return_types_registrations: list[str] = [] + + grouped = group_filter_overloads(pairs, pred) + + for name in sorted(grouped.keys(), key=str): + overloads = grouped[name] + definitions, registrations = generate_return_type_definition_and_registrations( + overloads + ) + py_return_types_definition.append( + "" if not definitions else "\n".join(definitions) + ) + py_return_types_registrations.append( + "" if not registrations else "\n".join(registrations) + ) + + fm.write_with_template( + filename, + filename, + lambda: { + "generated_comment": "@" + + f"generated from {fm.template_dir_for_comments()}/{filename}", + "py_return_types": py_return_types_definition, + "py_return_types_registrations": py_return_types_registrations, + }, + ) + + +def create_python_return_type_bindings_header( + fm: FileManager, + pairs: Sequence[PythonSignatureNativeFunctionPair], + pred: Callable[[NativeFunction], bool], + filename: str, +) -> None: + """ + Generate function to initialize and return named tuple for native functions + which returns named tuple and relevant entry for the map in `python_return_types.cpp`. + """ + py_return_types_declarations: list[str] = [] + + grouped = group_filter_overloads(pairs, pred) + + for name in sorted(grouped.keys(), key=str): + overloads = grouped[name] + declarations = generate_return_type_declarations(overloads) + py_return_types_declarations.append( + "" if not declarations else "\n".join(declarations) + ) + + fm.write_with_template( + filename, + filename, + lambda: { + "generated_comment": "@" + + f"generated from {fm.template_dir_for_comments()}/{filename}", + "py_return_types_declarations": py_return_types_declarations, + }, + ) + + +def create_python_bindings_sharded( + fm: FileManager, + pairs: Sequence[PythonSignatureNativeFunctionPair], + pred: Callable[[NativeFunction], bool], + module: str | None, + filename: str, + *, + method: bool, + num_shards: int, + symint: bool = True, +) -> None: + """Generates Python bindings to ATen functions""" + grouped = group_filter_overloads(pairs, pred) + + def key_func( + kv: tuple[BaseOperatorName, list[PythonSignatureNativeFunctionPair]], + ) -> str: + return kv[0].base + + def env_func( + kv: tuple[BaseOperatorName, list[PythonSignatureNativeFunctionPair]], + ) -> dict[str, list[str]]: + name, fn_pairs = kv + return { + "ops_headers": [f"#include "], + "py_forwards": list(forward_decls(name, fn_pairs, method=method)), + "py_methods": [ + method_impl(name, module, fn_pairs, method=method, symint=symint) + ], + "py_method_defs": [method_def(name, module, fn_pairs, method=method)], + } + + fm.write_sharded( + filename, + grouped.items(), + base_env={ + "generated_comment": "@" + + f"generated from {fm.template_dir_for_comments()}/{filename}", + }, + key_fn=key_func, + env_callable=env_func, + num_shards=num_shards, + sharded_keys={"ops_headers", "py_forwards", "py_methods", "py_method_defs"}, + ) + + +def load_signatures( + native_functions: list[NativeFunction], + deprecated_yaml_path: str, + *, + method: bool, + skip_deprecated: bool = False, + pyi: bool = False, +) -> Sequence[PythonSignatureNativeFunctionPair]: + @with_native_function + def gen_signature_pairs(f: NativeFunction) -> PythonSignatureNativeFunctionPair: + return PythonSignatureNativeFunctionPair( + signature=signature(f, method=method, pyi=pyi), + function=f, + ) + + pairs = list(map(gen_signature_pairs, native_functions)) + deprecated = load_deprecated_signatures( + pairs, deprecated_yaml_path, method=method, pyi=pyi + ) + return pairs if skip_deprecated else pairs + deprecated + + +def load_deprecated_signatures( + pairs: Sequence[PythonSignatureNativeFunctionPair], + deprecated_yaml_path: str, + *, + method: bool, + pyi: bool, +) -> list[PythonSignatureNativeFunctionPair]: + # The deprecated.yaml doesn't have complete type information, we need + # find and leverage the original ATen signature (to which it delegates + # the call) to generate the full python signature. + # We join the deprecated and the original signatures using type-only form. + + # group the original ATen signatures by name + grouped: dict[str, list[PythonSignatureNativeFunctionPair]] = defaultdict(list) + for pair in pairs: + grouped[pair.signature.name].append(pair) + + # find matching original signatures for each deprecated signature + results: list[PythonSignatureNativeFunctionPair] = [] + + with open(deprecated_yaml_path) as f: + deprecated_defs = yaml.load(f, Loader=YamlLoader) + + for deprecated in deprecated_defs: + schema = FunctionSchema.parse(deprecated["name"]) + aten_name, call_args = split_name_params(deprecated["aten"]) + is_out = aten_name.endswith("_out") + if is_out: + aten_name = aten_name.replace("_out", "") + + # HACK: these are fixed constants used to pass the aten function. + # The type must be known ahead of time + known_constants = { + "1": Type.parse("Scalar"), + } + schema_args_by_name = {a.name: a for a in schema.arguments.flat_all} + for name in call_args: + if name not in schema_args_by_name and name not in known_constants: + raise AssertionError( + f"deprecation definition: Unrecognized value {name}" + ) + + # Map deprecated signature arguments to their aten signature and test + # if the types and alias annotation match. + def is_schema_compatible( + aten_schema: FunctionSchema, + ) -> bool: + arguments: Iterable[Argument] + if is_out: + arguments = itertools.chain( + aten_schema.arguments.out, aten_schema.arguments.flat_non_out + ) + else: + arguments = aten_schema.arguments.flat_all + + for i, arg in enumerate(arguments): + if i < len(call_args): + arg_name = call_args[i] + if arg_name in known_constants: + schema_type = known_constants[arg_name] + schema_annotation = None + else: + schema_arg = schema_args_by_name[arg_name] + schema_type = schema_arg.type + schema_annotation = schema_arg.annotation + + if schema_type != arg.type or schema_annotation != arg.annotation: + return False + else: + if arg.default is None: + return False + + return len(schema.returns) == len(aten_schema.returns) and all( + a == b for a, b in zip(schema.returns, aten_schema.returns) + ) + + any_schema_found = False + for pair in grouped[aten_name]: + if not is_schema_compatible(pair.function.func): + continue + any_schema_found = True + + python_sig = signature_from_schema( + schema, + category_override=pair.function.category_override, + method=method, + pyi=pyi, + ) + + results.append( + PythonSignatureNativeFunctionPair( + signature=PythonSignatureDeprecated( + name=python_sig.name, + input_args=python_sig.input_args, + input_kwargs=python_sig.input_kwargs, + output_args=python_sig.output_args, + tensor_options_args=python_sig.tensor_options_args, + method=python_sig.method, + deprecated_schema=schema, + deprecated_args_exprs=tuple(call_args), + returns=python_sig.returns, + ), + function=pair.function, + ) + ) + if not any_schema_found: + raise AssertionError( + f"No native function with name {aten_name} matched signature:\n {str(schema)}" + ) + + return results + + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # +# +# Named Tuple Codegen +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # + + +@with_native_function +def gen_structseq_typename_key(f: NativeFunction) -> str: + name = cpp.name(f.func) + fieldnames = structseq_fieldnames(f.func.returns) + return "_".join([name] + fieldnames) + + +def emit_structseq_call( + overloads: Sequence[PythonSignatureNativeFunctionPair], +) -> tuple[list[str], dict[str, str]]: + """ + Generate block of named tuple type def inits, and add typeref snippets + to declarations that use them + """ + typenames: dict[ + str, str + ] = {} # map from unique name + field name lists to typedef name + typedefs: list[str] = [] # typedef declarations and init code + + for overload in overloads: + fieldnames = structseq_fieldnames(overload.function.func.returns) + if not fieldnames: + continue + + name = cpp.name(overload.function.func) # use @with_native_function? + tn_key = gen_structseq_typename_key(overload.function) + typename = typenames.get(tn_key) + if typename is None: + typename = f"NamedTuple{'' if not typedefs else len(typedefs)}" + typenames[tn_key] = typename + typedefs.append( + f"""\ +static PyTypeObject* {typename} = generated::get_{name}_structseq();""" + ) + + return typedefs, typenames + + +def generate_return_type_definition_and_registrations( + overloads: Sequence[PythonSignatureNativeFunctionPair], +) -> tuple[list[str], list[str]]: + """ + Generate block of function in `python_return_types.cpp` to initialize + and return named tuple for a native function which returns named tuple + and registration invocations in same file. + """ + typenames: dict[ + str, str + ] = {} # map from unique name + field name lists to typedef name + definitions: list[str] = [] # function definition to register the typedef + registrations: list[str] = [] # register call for the typedef + + for overload in overloads: + fieldnames = structseq_fieldnames(overload.function.func.returns) + if not fieldnames: + continue + + fields = ", ".join(f'{{"{fn}", ""}}' for fn in fieldnames) + + name = cpp.name(overload.function.func) # use @with_native_function? + tn_key = gen_structseq_typename_key(overload.function) + typename = typenames.get(tn_key) + + if typename is None: + typename = f"{name}NamedTuple{'' if not definitions else len(definitions)}" + typenames[tn_key] = typename + definitions.append( + f"""\ +PyTypeObject* get_{name}_structseq() {{ + static PyStructSequence_Field NamedTuple_fields[] = {{ {fields}, {{nullptr}} }}; + static PyTypeObject {typename}; + static bool is_initialized = false; + static PyStructSequence_Desc desc = {{ "torch.return_types.{name}", nullptr, NamedTuple_fields, {len(fieldnames)} }}; + if (!is_initialized) {{ + PyStructSequence_InitType(&{typename}, &desc); + {typename}.tp_repr = (reprfunc)torch::utils::returned_structseq_repr; + is_initialized = true; + }} + return &{typename}; +}} +""" + ) + registrations.append( + f'addReturnType(return_types_module, "{name}", generated::get_{name}_structseq());' + ) + + return definitions, registrations + + +def generate_return_type_declarations( + overloads: Sequence[PythonSignatureNativeFunctionPair], +) -> list[str]: + """ + Generate block of function declarations in `python_return_types.h` to initialize + and return named tuple for a native function. + """ + typenames: dict[ + str, str + ] = {} # map from unique name + field name lists to typedef name + declarations: list[str] = [] # function declaration to register the typedef + + for overload in overloads: + fieldnames = structseq_fieldnames(overload.function.func.returns) + if not fieldnames: + continue + + name = cpp.name(overload.function.func) # use @with_native_function? + tn_key = gen_structseq_typename_key(overload.function) + typename = typenames.get(tn_key) + + if typename is None: + typename = ( + f"{name}NamedTuple{'' if not declarations else len(declarations)}" + ) + typenames[tn_key] = typename + declarations.append(f"PyTypeObject* get_{name}_structseq();") + + return declarations + + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # +# +# Method Impl Codegen +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # + +# python binding for all overloads of a particular function/method +PY_VARIABLE_METHOD_VARARGS = CodeTemplate( + r"""\ +// ${name} +static PyObject * ${pycname}(PyObject* self_, PyObject* args, PyObject* kwargs) +{ + ${method_header} + static PythonArgParser parser({ + ${signatures} + }, /*traceable=*/${traceable}); + + ParsedArgs<${max_args}> parsed_args; + auto _r = parser.parse(${self_}, args, kwargs, parsed_args); + ${check_has_torch_function} + switch (_r.idx) { + ${dispatch} + } + ${method_footer} +} + +""" +) + +# handler for a single parsed signature - may be a single overload or +# a pair of overloads that whose signatures only differ in output params +# (plugged into PY_VARIABLE_METHOD_VARARGS as an item in ${dispatch}) +PY_VARIABLE_CASE = CodeTemplate( + """\ +case ${overload_index}: { + ${body} +} +""" +) + +# python binding for single-overload function/method +PY_VARIABLE_METHOD_VARARGS_SINGLETON = CodeTemplate( + """\ +// ${name} +static PyObject * ${pycname}(PyObject* self_, PyObject* args, PyObject* kwargs) +{ + ${method_header} + static PythonArgParser parser({ + ${signatures} + }, /*traceable=*/${traceable}); + + ParsedArgs<${max_args}> parsed_args; + auto _r = parser.parse(${self_}, args, kwargs, parsed_args); + ${check_has_torch_function} + ${dispatch} + ${method_footer} +} + +""" +) + +# python binding for a method with no args, shortcuts parsing +PY_VARIABLE_METHOD_NOARGS = CodeTemplate( + """\ +// ${name} +static PyObject * ${pycname}(PyObject* self_, PyObject* args) +{ + ${method_header} + ${check_has_torch_function} + ${dispatch} + ${method_footer} +} + +""" +) + + +def method_impl( + name: BaseOperatorName, + module: str | None, + overloads: Sequence[PythonSignatureNativeFunctionPair], + *, + method: bool, + symint: bool = True, +) -> str: + """ + Generate a python binding for all overloads of an op. + """ + pycname = get_pycname(name) + noarg = is_noarg(overloads) + structseq_inits, structseq_typenames = emit_structseq_call(overloads) + + method_header = ["HANDLE_TH_ERRORS"] + method_header += structseq_inits + method_header += ( + ["const Tensor& self = THPVariable_Unpack(self_);"] if method else [] + ) + + method_footer = ([] if noarg else ["Py_RETURN_NONE;"]) + ["END_HANDLE_TH_ERRORS"] + + traceable = "true" if all(should_trace(o.function) for o in overloads) else "false" + + grouped_overloads: Sequence[PythonSignatureGroup] = group_overloads( + overloads, symint=symint + ) + is_singleton = len(grouped_overloads) == 1 + signatures: list[str] = [] + dispatch: list[str] = [] + for overload_index, overload in enumerate(grouped_overloads): + signature = overload.signature.signature_str(symint=symint) + signatures.append(f"{cpp_string(str(signature))},") + dispatch_body = emit_dispatch_case(overload, structseq_typenames, symint=symint) + dispatch.append( + PY_VARIABLE_CASE.substitute( + overload_index=overload_index, body=dispatch_body + ) + if not is_singleton + else dispatch_body + ) + + if noarg: + template = PY_VARIABLE_METHOD_NOARGS + elif is_singleton: + template = PY_VARIABLE_METHOD_VARARGS_SINGLETON + else: + template = PY_VARIABLE_METHOD_VARARGS + + return template.substitute( + name=name, + pycname=pycname, + method_header=method_header, + max_args=max(o.signature.arguments_count() for o in overloads), + signatures=signatures, + traceable=traceable, + check_has_torch_function=gen_has_torch_function_check( + name=name, + module=module, + noarg=noarg, + method=method, + ), + dispatch=dispatch, + method_footer=method_footer, + self_="self_" if method else "nullptr", + ) + + +def gen_has_torch_function_check( + name: BaseOperatorName, module: str | None, *, noarg: bool, method: bool +) -> str: + if noarg: + if method: + return f"""\ +if(check_has_torch_function(self_)) {{ + return handle_torch_function(self_, "{name}"); +}} +""" + else: + return "" + + self_ = "self_" if method else "nullptr" + namespace = ( + { + "torch": "THPVariableFunctionsModule", + "torch.nn": "THPNNVariableFunctionsModule", + "torch.fft": "THPFFTVariableFunctionsModule", + "torch.linalg": "THPLinalgVariableFunctionsModule", + "torch.nested": "THPNestedVariableFunctionsModule", + "torch.sparse": "THPSparseVariableFunctionsModule", + "torch.special": "THPSpecialVariableFunctionsModule", + }[module] + if module + else "THPVariableClass" + ) + + return f"""\ +if(_r.has_torch_function()) {{ + return handle_torch_function(_r, {self_}, args, kwargs, {namespace}, "{module or "torch.Tensor"}"); +}} +""" + + +# handler for output/no-output overload pair +PY_VARIABLE_OUT = CodeTemplate( + """\ +if (_r.isNone(${out_idx})) { + ${call_dispatch} +} else { + ${call_dispatch_out} +} +""" +) + + +def emit_dispatch_case( + overload: PythonSignatureGroup, + structseq_typenames: dict[str, str], + *, + symint: bool = True, +) -> str: + """ + Emit dispatch code for a single parsed signature. This corresponds to either + a single native function, or a pair that differ only in output params. In the + latter case, a single python signature is used for both and dispatching + switches on the presence/absence of passed output args. + """ + if overload.outplace is not None: + # dispatch output and no-output variants, branch on _r.isNone() + return PY_VARIABLE_OUT.substitute( + out_idx=overload.signature.output_idx(), + call_dispatch=emit_single_dispatch( + overload.signature, overload.base, structseq_typenames, symint=symint + ), + call_dispatch_out=emit_single_dispatch( + overload.signature, + overload.outplace, + structseq_typenames, + symint=symint, + ), + ) + else: + # no-output version only + return emit_single_dispatch( + overload.signature, overload.base, structseq_typenames, symint=symint + ) + + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # +# +# Forward Declarations Codegen +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # + + +def forward_decls( + name: BaseOperatorName, + overloads: Sequence[PythonSignatureNativeFunctionPair], + *, + method: bool, +) -> tuple[str, ...]: + if method: + return () + + pycname = get_pycname(name) + if is_noarg(overloads): + return ( + f"""\ +static PyObject * {pycname}(PyObject* self_, PyObject* args); +""", + ) + else: + return ( + f"""\ +static PyObject * {pycname}(PyObject* self_, PyObject* args, PyObject* kwargs); +""", + ) + + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # +# +# Method Def (Binding Table Entry) Codegen +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # + + +def method_def( + name: BaseOperatorName, + module: str | None, + overloads: Sequence[PythonSignatureNativeFunctionPair], + *, + method: bool, +) -> str: + """ + Generate method def entry. + """ + pycname = get_pycname(name) + + if name.dunder_method: + # PyMethodDef entry for binary op, throws not implemented error + pycname = f"TypeError_to_NotImplemented_<{pycname}>" + + if is_noarg(overloads): + flags = "METH_NOARGS" if method else "METH_VARARGS | METH_KEYWORDS" + else: + pycname = f"castPyCFunctionWithKeywords({pycname})" + flags = "METH_VARARGS | METH_KEYWORDS" + + if module == "torch": + flags += " | METH_STATIC" + + return f'{{"{name}", {pycname}, {flags}, nullptr}},' + + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # +# +# Overload Sorting and Grouping +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # + + +def group_overloads( + overloads: Sequence[PythonSignatureNativeFunctionPair], *, symint: bool = True +) -> Sequence[PythonSignatureGroup]: + bases: dict[str, PythonSignatureNativeFunctionPair] = {} + outplaces: dict[str, PythonSignatureNativeFunctionPair] = {} + + # first group by signature ignoring out arguments + for overload in overloads: + sig = overload.signature.signature_str(skip_outputs=True, symint=symint) + if overload.function.func.is_out_fn(): + if sig in outplaces: + raise RuntimeError( + f"Found duplicated function definition:\n- {overload.function.func}.\n" + f"Existing definition:\n- {outplaces[sig].function.func}." + ) + outplaces[sig] = overload + else: + if sig in bases: + raise RuntimeError( + f"Found duplicated function definition:\n- {overload.function.func}.\n" + f"Existing definition:\n- {bases[sig].function.func}." + ) + bases[sig] = overload + + for sig, out in outplaces.items(): + if sig not in bases: + candidates: list[str] = [] + for overload in overloads: + if ( + str(overload.function.func.name.name) + == str(out.function.func.name.name) + and not overload.function.func.is_out_fn() + and not overload.signature.deprecated + ): + candidates.append( + overload.signature.signature_str( + skip_outputs=True, symint=symint + ) + ) + out_sig = out.signature.signature_str(symint=symint) + raise RuntimeError( + f"While identifying overloads, we found an out schema {out_sig} without a corresponding non-out variant. " + f"We expected the non-out variant to have schema: \n- {sig}\nPlease check that you spelled the schema " + "correctly in native_functions.yaml. We discovered the following candidate(s): \n" + + "\n".join(f"- {candidate}" for candidate in candidates) + ) + + grouped = [ + PythonSignatureGroup.from_pairs( + functional=base, + out=outplaces.get(sig), + ) + for sig, base in bases.items() + ] + return sort_overloads(grouped, symint=symint) + + +# This function declares a partial order on declarations, and sorts them according +# to its linear extension. This is necessary, because there's some ambiguity in the +# choice of overload, and we want a different order. +# +# See Note[Order of overloads matters] +# +# A few examples of ambiguous python signature pairs. +# +# All parameters have the same type, except one taking Tensor the other taking +# Scalar. A numeric PyObject can be casted into Tensor, and a zero-dim Tensor +# object can be accepted as Scalar type parameter (see python_arg_parser.cpp). +# Therefore, same input arguments might be accepted by either python signature. +# We want to always parse the one taking Tensor first. +# +# bitwise_and(Tensor input, Tensor other, *, Tensor out=None) +# bitwise_and(Tensor input, Scalar other, *, Tensor out=None) +# +# If they have different number of parameters then they are not ambiguous - but +# the difference on output param can be ignored as it's optional. +# +# multiply(Tensor input, Tensor other, *, Tensor out=None) +# multiply(Tensor input, Scalar other) +# +# Both positional args and keyword-only args are considered together. +# +# subtract(Tensor other, *, Scalar alpha=1) +# subtract(Scalar other, Scalar alpha=1) +# +# A few ambiguous cases which it does NOT handle yet. +# +# If there is any difference in other parameters besides the Tensor/Scalar +# difference, then they are not considered ambiguous by this method anymore. +# However, the difference could be too trivial to disambiguate. +# +# foo(Tensor input, Scalar other, Scalar bar) +# foo(Tensor input, Tensor other, double bar) +# +# If they are taking different number of parameters then they are not considered +# ambiguous anymore, even if the difference is only on optional kwargs. +# +# foo(Scalar other, Scalar alpha=1) +# foo(Tensor other, *, Scalar alpha=1, Scalar beta=1) +# + + +def sort_overloads( + grouped_overloads: Sequence[PythonSignatureGroup], *, symint: bool = True +) -> Sequence[PythonSignatureGroup]: + # NB: Smaller here means lower priority + + def is_arg_smaller(t1: Type, t2: Type) -> bool: + return ( + str(t1) == "Scalar" + and str(t2) == "Tensor" + or str(t1) == "Scalar?" + and str(t2) == "Tensor?" + or "Dimname" in str(t1) + and "Dimname" not in str(t2) + or + # In the discussion https://github.com/pytorch/pytorch/issues/54555 it has been + # discussed why it is important to prioritize int/int? over int[] + str(t1) == "int[]" + and (str(t2) == "int" or str(t2) == "int?") + or + # TensorList currently throws an error during argument parsing, that's why it needs to be + # last in signature ordering. See discussion: https://github.com/pytorch/pytorch/issues/58087 + str(t1) == "Tensor[]" + and str(t2).find("[]") != -1 + or + # Prioritize IntArrayRef overload over SymIntArrayRef + str(t1) == "SymInt[]" + and str(t2) == "int[]" + or + # Make sure both in, SymInt are sorted consistently w.r.t. Tensor since Tensor can be implicitly + # converted to either int or SymInt. Prioritize the Tensor overload since it otherwise gets shadowed. + (str(t1) == "SymInt" or str(t1) == "int") + and str(t2) == "Tensor" + ) + + def is_smaller(s1: PythonSignature, s2: PythonSignature) -> bool: + """Returns True if s1 < s2 in the partial order.""" + args1, args2 = s1.arguments(skip_outputs=True), s2.arguments(skip_outputs=True) + if len(args1) != len(args2): + return False + # TODO: should use some canonical form instead of 'str(arg.type)' - see comments + # above. The old codegen used the deprecated 'dynamic_type(arg.type)', which + # ignores the optional annotation, i.e. 'Scalar' and 'Scalar?'. + equal = all(arg1.type == arg2.type for arg1, arg2 in zip(args1, args2)) + smaller_or_equal = all( + str(arg1.type) == str(arg2.type) or is_arg_smaller(arg1.type, arg2.type) + for arg1, arg2 in zip(args1, args2) + ) + return smaller_or_equal and not equal + + # First sort by signature + grouped_overloads = sorted( + grouped_overloads, key=lambda x: x.signature.signature_str(symint=symint) + ) + + # Construct the relation graph + larger_than: dict[int, set[int]] = defaultdict(set) + for i1, overload1 in enumerate(grouped_overloads): + for i2, overload2 in enumerate(grouped_overloads): + if is_smaller(overload1.signature, overload2.signature): + larger_than[i1].add(i2) + + if not larger_than: + return list(grouped_overloads) + + # Use a topological sort to sort overloads according to the partial order. + N = len(grouped_overloads) + sorted_ids: list[int] = list(filter(lambda x: x not in larger_than, range(N))) + + for idx in range(N): + # The size of sorted_ids will grow to N eventually. + i = sorted_ids[idx] + for j in sorted(larger_than.keys()): + larger = larger_than[j] + larger.discard(i) + if not larger: + del larger_than[j] + sorted_ids.append(j) + + return [grouped_overloads[x] for x in sorted_ids] + + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # +# +# Codegen API Integration +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # + + +def emit_single_dispatch( + ps: PythonSignature, + f: NativeFunction, + structseq_typenames: dict[str, str], + *, + symint: bool = True, +) -> str: + """ + Emit dispatch code for a single native function. + """ + + @with_native_function + def go(f: NativeFunction) -> str: + # header comments + if isinstance(ps, PythonSignatureDeprecated): + schema_comment = f"// [deprecated] aten::{ps.deprecated_schema}" + else: + schema_comment = f"// aten::{f.func}" + + # dispatch lambda signature + name = cpp.name(f.func) + lambda_formals = ", ".join( + f"{a.type_str} {a.name}" for a in dispatch_lambda_args(ps, f, symint=symint) + ) + lambda_return = dispatch_lambda_return_str(f) + + # dispatch lambda body + dispatch_callee = cpp_dispatch_target(f) + dispatch_args = ", ".join(cpp_dispatch_exprs(f, python_signature=ps)) + + # from arg parser outputs to dispatch lambda arguments + parser_outputs = arg_parser_output_exprs(ps, f, symint=symint) + lambda_arg_exprs = dispatch_lambda_exprs(ps, f, symint=symint) + inits = "\n".join(lambda_arg_exprs.inits) + lambda_args = ", ".join(lambda_arg_exprs.exprs) + + # scatter fields + # TODO: Checking `ps.method and ('requires_grad' in parser_outputs)` is a hacky + # solution for enabling the 'requires_grad' argument for tensor methods + # new_full, new_empty, and new_zeros. A much better but more difficult to + # implement solution involves refactoring according to Ed's description here: + # https://github.com/pytorch/pytorch/issues/36455#issuecomment-614767589 + need_set_requires_grad = ps.tensor_options_args and ( + not has_tensor_options(f) + or (ps.method and ("requires_grad" in parser_outputs)) + ) + set_requires_grad = ( + f".set_requires_grad({parser_outputs['requires_grad'].expr})" + if need_set_requires_grad + else "" + ) + + if lambda_return == "void": + # Make in-place foreach return `self` at python-binding level. + # ref: https://github.com/pytorch/pytorch/pull/118622#pullrequestreview-1904804954 + self_arg = f.func.arguments.self_arg + return_stmt: str + if ( + str(f.func.name).startswith("_foreach_") + and f.func.kind() == SchemaKind.inplace + ): + # note(crcrpar): `_foreach_pow.ScalarAndTensor` does NOT have its in-place + # variant and it unlikely to have it in the future. Thus it's safe to have the following check. + if self_arg is None or not is_tensor_list_type(self_arg.argument.type): + raise AssertionError( + "Expected self_arg to be a tensor list type for inplace foreach" + ) + return_stmt = """PyObject* self_tensorlist = _r.args[0]; +Py_INCREF(self_tensorlist); +return self_tensorlist; +""" + else: + return_stmt = "Py_RETURN_NONE;" + return f"""\ +{schema_comment} +{inits} +auto dispatch_{name} = []({lambda_formals}) -> {lambda_return} {{ + pybind11::gil_scoped_release no_gil; + {dispatch_callee}({dispatch_args}); +}}; +dispatch_{name}({lambda_args}){set_requires_grad}; +{return_stmt} +""" + else: + typename = structseq_typenames.get(gen_structseq_typename_key(f)) + structseq_typeref = f"{typename}, " if typename is not None else "" + return f"""\ +{schema_comment} +{inits} +auto dispatch_{name} = []({lambda_formals}) -> {lambda_return} {{ + pybind11::gil_scoped_release no_gil; + return {dispatch_callee}({dispatch_args}); +}}; +return wrap({structseq_typeref}dispatch_{name}({lambda_args}){set_requires_grad}); +""" + + return go(f) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/gen_trace_type.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/gen_trace_type.py new file mode 100644 index 0000000000000000000000000000000000000000..ba75c6e84df0396e4668b5628f8fca87adeaf93b --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/gen_trace_type.py @@ -0,0 +1,542 @@ +from __future__ import annotations + +import itertools +from typing import TYPE_CHECKING + +from torchgen.api import cpp +from torchgen.api.types import DispatcherSignature +from torchgen.code_template import CodeTemplate +from torchgen.context import with_native_function +from torchgen.model import Argument, NativeFunction, SchemaKind, TensorOptionsArguments +from torchgen.utils import FileManager + + +if TYPE_CHECKING: + from collections.abc import Sequence + + +# Note [Manual Backend kernels] +# For these ops, we want to manually register to dispatch key Backend and +# skip codegen-ed registration to all keys before Backend. +# For codegen this means: +# - op set below must match ops with manual_kernel_registration=True in native_functions.yaml +# where we skip codegen backend kernels +# - all ops below are part of MANUAL_AUTOGRAD to skip codegen Autograd kernel registration +# - all ops below are part of MANUAL_TRACER to skip codegen Tracer kernel registration +# Note: we still register to dispatch key Profiler for these ops, keeping it untouched for now. +# You can find the manual registration in torch/csrc/autograd/VariableTypeManual.cpp +MANUAL_BACKEND = { + "options", + "data", + "set_data", + "is_leaf", + "output_nr", + "_version", + "retain_grad", + "_backward", + "requires_grad_", +} + +# For these ops we want to skip the codegen-ed registration to both Autograd and Tracer keys. +# You can find the manual registration in torch/csrc/autograd/VariableTypeManual.cpp +MANUAL_AUTOGRAD_AND_TRACER = { + "resize_", + "resize_as_", + "detach", + "detach_", + "copy_", + "_fw_primal", + "_make_dual", +} + +# Currently MANUAL_AUTOGRAD and MANUAL_TRACER share the same set of ops: +# union(MANUAL_BACKEND, MANUAL_AUTOGRAD_AND_TRACER) +# You can find the manual registration in torch/csrc/autograd/VariableTypeManual.cpp +MANUAL_AUTOGRAD = MANUAL_TRACER = MANUAL_BACKEND | MANUAL_AUTOGRAD_AND_TRACER + +# These functions we don't want to record for tracing, because we always want +# to trace their constituent parts. This is a temporary hack in lieue +# of proper scopes, where subsequent compilation passes can ask for the unfolding +# on demand. Only concrete ATen methods can be disabled this way; it will have +# NO EFFECT otherwise. +DONT_RECORD_TRACE = { + "convolution", + "conv1d", + "conv2d", + "conv3d", + "conv_transpose1d", + "conv_transpose2d", + "conv_transpose3d", + "lstm_cell", + "gru_cell", + "rnn_tanh_cell", + "rnn_relu_cell", + # FIXME: figure out a better way when we support sparse tensors in jit + "_coalesced", +} + + +def should_trace(f: NativeFunction) -> bool: + # Operations involving Storage or Type are not traceable at the moment + if any( + str(arg.type) in {"Storage", "Type"} for arg in f.func.schema_order_arguments() + ): + return False + # We can't trace functions which don't have any Tensor or TensorList returns + if not any(r.type.is_tensor_like() for r in f.func.returns): + return False + return f.func.name.name.base not in DONT_RECORD_TRACE + + +SELECT = CodeTemplate( + """\ + +if (${cond}) { + ${true} +} else { + ${false} +} +""" +) + +OP_NAME = CodeTemplate( + """\ +op_name = c10::Symbol::fromQualString("aten::${trace_name}"); +""" +) + +# These functions have their names recorded under trace renamed, +RENAME_TRACE = { + "zero": "zeros_like", # replacing aten::zero_ with aten::zeros_like + "fill": "full_like", # replacing aten::fill_ with aten::full_like +} + + +def format_trace_op_name(f: NativeFunction) -> str: + # TODO: byte-for-byte compatible with old codegen behavior - should clean up + if ( + f.func.kind() in (SchemaKind.functional, SchemaKind.out) + or f.func.name.name.dunder_method + ): + # special case for *_out functions: the in-place and out-of-place ops + # are overloaded with the same name in the JIT + trace_name = str(f.func.name.name) + trace_name = RENAME_TRACE.get(trace_name, trace_name) + return OP_NAME.substitute(trace_name=trace_name) + + # otherwise, this is an in-place op and we need to emit both in- and + # out-of-place versions + outplace_trace_name = f.func.name.name.base + inplace_trace_name = cpp.name(f.func) + outplace_trace_name = RENAME_TRACE.get(outplace_trace_name, outplace_trace_name) + inplace_trace_name = RENAME_TRACE.get(inplace_trace_name, inplace_trace_name) + + return SELECT.substitute( + cond="tracer_state->force_outplace", + true=OP_NAME.substitute(trace_name=outplace_trace_name), + false=OP_NAME.substitute(trace_name=inplace_trace_name), + ) + + +ADD_TRACE_INPUT = CodeTemplate("""jit::tracer::addInputs(node, "${name}", ${input});""") + + +def format_trace_inputs(f: NativeFunction) -> str: + def dispatch_trace_input(arg: Argument | TensorOptionsArguments) -> Sequence[str]: + if isinstance(arg, TensorOptionsArguments): + name = "options" + return [ + ADD_TRACE_INPUT.substitute( + name=name, input="c10::optTypeMetaToScalarType(options.dtype_opt())" + ), + ADD_TRACE_INPUT.substitute(name=name, input="options.layout()"), + ADD_TRACE_INPUT.substitute(name=name, input="options.device()"), + ADD_TRACE_INPUT.substitute(name=name, input="options.pinned_memory()"), + ] + else: + name = arg.name + if str(arg.type) == "Tensor?[]": + return [f'jit::tracer::addInputs(node, "{name}", {name});'] + else: + return [ADD_TRACE_INPUT.substitute(name=name, input=name)] + + args: list[Argument | TensorOptionsArguments] = list( + f.func.schema_order_arguments() + ) + + if f.func.is_out_fn(): + # *_out functions take the result as a separate argument, but we don't want to + # trace that argument directly. Instead, we trace its TensorOptions. + # So first, we need to remove the out argument from the list of arguments to trace. + num_out_args = len(f.func.arguments.out) + args = args[:-num_out_args] + + trace_inputs = itertools.chain.from_iterable( + dispatch_trace_input(arg) for arg in args + ) + + if f.func.is_out_fn(): + # for *_out functions, handle the result argument differently for inplace/outplace. + # For inplace: just add the input to the end to confirm with the JIT schema + inplace = [ + ADD_TRACE_INPUT.substitute( + name=f.func.arguments.out[i].name, input=f.func.arguments.out[i].name + ) + # pyrefly: ignore [unbound-name] + for i in range(num_out_args) + ] + + # for outplace: do nothing, except if the function is a factory. + # Factories are a bit special because their out-of-place overloads + # take an extra TensorOptions argument, which is missing in the _out function + has_tensor_return = any(r.type.is_tensor_like() for r in f.func.returns) + has_tensor_input_arg = any( + a.type.is_tensor_like() for a in f.func.arguments.flat_non_out + ) + is_factory_method = f.category_override == "factory" or ( + has_tensor_return and not has_tensor_input_arg + ) + + # HACK: preserve old codegen behavior - the old codegen set the `is_factory_method` + # flag for the whole family of ops with the same basename if any of them is a + # factory method. For most cases the whole family of ops are indeed all factory + # method - 'normal' is the only exception. So we handle it specially here to avoid + # cloning the old logic. + if f.func.name.name.base == "normal": + is_factory_method = True + + if is_factory_method: + outplace = [ + ADD_TRACE_INPUT.substitute( + name="out", + input="c10::optTypeMetaToScalarType(out.options().dtype_opt())", + ), + ADD_TRACE_INPUT.substitute(name="out", input="out.options().layout()"), + ADD_TRACE_INPUT.substitute(name="out", input="out.options().device()"), + ADD_TRACE_INPUT.substitute( + name="out", input="out.options().pinned_memory()" + ), + ] + else: + outplace = [] + + trace_inputs = itertools.chain( + trace_inputs, + [ + SELECT.substitute( + cond="tracer_state->force_outplace", + true="\n".join(outplace), + false="\n".join(inplace), + ) + ], + ) + + return "\n".join(trace_inputs) + + +# `torch.jit.trace` have undocumented keyword argument `_force_outplace`, +# which force jit to replace functions with outplace variants (for +# example `aten::add_` becomes `aten::add`). +# +# This replacement implemented in-place with minimum modifications of +# arguments stack (as it assumes that outplace call has the same arguments +# as inplace version). +# +# However there are no such substitutions available for `aten::fill_` +# and `aten::zero_` operators, as we never implemented `aten::fill` +# and `aten::zero`. So jit tracing hack replacing `aten::zero_` with +# `aten::zeros_like` and replacing `aten::fill_` with `aten::full_like`. +# +# But as they potentially can have different arguments, we also have +# to hack into the stack and add missing ones. +# +# A possible alternative would be: +# +# - Add `aten::fill` and `aten::zero` +# +# - Or keep `aten::zeros_like` arguments aligned with `aten::zero_` +# arguments (inside of the `native_functions.yaml`) +RENAME_TRACE_ADD_ARGS = { + "fill": """\ + jit::tracer::addInputs(node, "options", ::std::optional()); + jit::tracer::addInputs(node, "options", layout_or_default(::std::nullopt)); + jit::tracer::addInputs(node, "options", device_or_default(::std::nullopt)); + jit::tracer::addInputs(node, "options", pinned_memory_or_default(::std::nullopt)); + ::std::optional memory_format = c10::MemoryFormat::Preserve; + jit::tracer::addInputs(node, "memory_format", memory_format); +""", + "zero": """\ + jit::tracer::addInputs(node, "options", ::std::optional()); + jit::tracer::addInputs(node, "options", layout_or_default(::std::nullopt)); + jit::tracer::addInputs(node, "options", device_or_default(::std::nullopt)); + jit::tracer::addInputs(node, "options", pinned_memory_or_default(::std::nullopt)); + ::std::optional memory_format = c10::MemoryFormat::Preserve; + jit::tracer::addInputs(node, "memory_format", memory_format); +""", +} + +INPLACE_GUARD = CodeTemplate( + """\ +jit::tracer::ensureUniqueIfOutOfPlaced("${name}", ${mutable_input}); +""" +) + +PRE_RECORD_TRACE = CodeTemplate( + """\ +torch::jit::Node* node = nullptr; +std::shared_ptr tracer_state; +if (jit::tracer::isTracing()) { + tracer_state = jit::tracer::getTracingState(); + at::Symbol op_name; + ${set_op_name} + node = tracer_state->createNode(op_name, /*num_outputs=*/0); + jit::tracer::recordSourceLocation(node); + ${add_trace_inputs} + tracer_state->insertNode(node); + ${inplace_guard} + jit::tracer::setTracingState(nullptr); +} +""" +) + + +def format_prerecord_trace(f: NativeFunction) -> str: + if not should_trace(f): + return "" + + # TODO: clean up old codegen behavior + is_inplace = ( + f.func.kind() in (SchemaKind.inplace, SchemaKind.out) + and not f.func.name.name.dunder_method + ) + add_args = ( + RENAME_TRACE_ADD_ARGS.get(f.func.name.name.base, "") if is_inplace else "" + ) + additional_inputs = ( + SELECT.substitute( + cond="tracer_state->force_outplace", + true=add_args, + false="", + ) + if add_args + else "" + ) + + return PRE_RECORD_TRACE.substitute( + set_op_name=format_trace_op_name(f), + add_trace_inputs=format_trace_inputs(f) + additional_inputs, + inplace_guard=INPLACE_GUARD.substitute( + name=cpp.name(f.func), + mutable_input=f.func.arguments.out[0].name + if f.func.arguments.out + else "self", + ) + if is_inplace + else "", + ) + + +POST_RECORD_TRACE = CodeTemplate( + """\ +if (tracer_state) { + jit::tracer::setTracingState(std::move(tracer_state)); + ${add_trace_outputs} +} +""" +) + + +def format_postrecord_trace(f: NativeFunction) -> str: + if not should_trace(f): + return "" + + # For outplacing ops, *_out overloads require special handling to move the + # output *argument* to a return value + if f.func.is_out_fn(): + output_names_outplace = [arg.name for arg in f.func.arguments.out] + output_names_inplace = cpp.return_names(f) + + # Code size optimization: the common case is that the return value is + # the same for both variants + if output_names_outplace == output_names_inplace: + outputs = [ + f"jit::tracer::addOutput(node, {n});" for n in output_names_outplace + ] + return POST_RECORD_TRACE.substitute(add_trace_outputs=outputs) + + selection = SELECT.substitute( + cond="force_outplace", + true="\n".join( + f"jit::tracer::addOutput(node, {n});" for n in output_names_outplace + ), + false="\n".join( + f"jit::tracer::addOutput(node, {n});" for n in output_names_inplace + ), + ) + return POST_RECORD_TRACE.substitute(add_trace_outputs=selection) + else: + output_names = cpp.return_names(f) + outputs = [f"jit::tracer::addOutput(node, {n});" for n in output_names] + return POST_RECORD_TRACE.substitute(add_trace_outputs=outputs) + + +def tie_return_values(f: NativeFunction) -> str: + if len(f.func.returns) == 1: + return f"auto {f.func.returns[0].name or 'result'}" + names = cpp.return_names(f) + return f"auto [{', '.join(names)}]" + + +def get_return_value(f: NativeFunction) -> str: + names = cpp.return_names(f) + if len(f.func.returns) == 1: + return names[0] + if f.func.kind() == SchemaKind.out: + return f"std::forward_as_tuple({', '.join(names)})" + else: + moved = ", ".join(f"std::move({name})" for name in names) + return f"std::make_tuple({moved})" + + +TRACE_DISPATCH = CodeTemplate( + """\ +${assign_return_values}at::_ops::${unambiguous_name}::redispatch(${unpacked_args});""" +) + + +def emit_trace_body(f: NativeFunction) -> list[str]: + trace_body: list[str] = [] + + trace_body.append(format_prerecord_trace(f)) + + dispatcher_sig = DispatcherSignature.from_schema(f.func) + dispatcher_exprs = dispatcher_sig.exprs() + + # code-generated tracing kernels plumb and recompute dispatch keys directly through the kernel for performance. + # See Note [Plumbing Keys Through The Dispatcher] for details. + dispatch_key_set = "ks & c10::DispatchKeySet(c10::DispatchKeySet::FULL_AFTER, c10::DispatchKey::Tracer)" + redispatch_args = ", ".join([dispatch_key_set] + [a.expr for a in dispatcher_exprs]) + + assign_return_values = ( + f"{tie_return_values(f)} = " + if f.func.kind() in [SchemaKind.functional, SchemaKind.mutable] + and f.func.returns + else "" + ) + + # Note that this calls the slow, dispatching variants of manual_cpp_binding ops. + # We could probably work harder to ensure that the fast variants are + # called instead, but the perf benefit would be minimal. + trace_body.append( + TRACE_DISPATCH.substitute( + assign_return_values=assign_return_values, + unambiguous_name=f.func.name.unambiguous_name(), + unpacked_args=redispatch_args, + ) + ) + + trace_body.append(format_postrecord_trace(f)) + if f.func.returns: + trace_body.append(f"return {get_return_value(f)};") + return trace_body + + +METHOD_DEFINITION = CodeTemplate( + """\ +${return_type} ${type_wrapper_name}(${formals}) { + ${type_definition_body} +} +""" +) + + +def type_wrapper_name(f: NativeFunction, key: str = "Default") -> str: + if f.func.name.overload_name: + name = f"{cpp.name(f.func)}_{f.func.name.overload_name}" + else: + name = cpp.name(f.func) + + # The key argument is only used in gen_variable_type where we need fns per autograd dispatch key. + # In gen_trace_type and gen_inplace_view_type where only one fn per native_fn must be generated, + # the key argument should not be passed. + # We do not append key if it is Default so that generated functions from + # before per-dispatch-key derivatives were added retain the same names. + if key != "Default": + name = name + f"_{key}" + return name + + +@with_native_function +def method_definition(f: NativeFunction) -> str: + if cpp.name(f.func) in MANUAL_TRACER: + raise AssertionError(f"Function {cpp.name(f.func)} is in MANUAL_TRACER") + + formals = ", ".join( + # code-generated tracing kernels plumb and recompute dispatch keys directly through the kernel for performance. + # See Note [Plumbing Keys Through The Dispatcher] for details. + ["c10::DispatchKeySet ks"] + + [ + f"{cpp.argument_type(a, binds='__placeholder__', symint=True).cpp_type()} {a.name}" + for a in f.func.schema_order_arguments() + ] + ) + + return METHOD_DEFINITION.substitute( + return_type=cpp.returns_type(f.func.returns, symint=True).cpp_type(), + type_wrapper_name=type_wrapper_name(f), + formals=formals, + type_definition_body=emit_trace_body(f), + ) + + +WRAPPER_REGISTRATION = CodeTemplate( + """\ +m.impl("${name}", + TORCH_FN(${class_type}::${type_wrapper_name}) +); +""" +) + + +@with_native_function +def method_registration(f: NativeFunction) -> str: + if cpp.name(f.func) in MANUAL_TRACER: + raise AssertionError(f"Function {cpp.name(f.func)} is in MANUAL_TRACER") + + return WRAPPER_REGISTRATION.substitute( + name=f.func.name, + type_wrapper_name=type_wrapper_name(f), + class_type="TraceType", + ) + + +def gen_trace_type_func(fn: NativeFunction) -> dict[str, list[str]]: + return { + "ops_headers": [f"#include "], + "trace_method_definitions": [method_definition(fn)], + "trace_wrapper_registrations": [method_registration(fn)], + } + + +def gen_trace_type( + out: str, native_functions: list[NativeFunction], template_path: str +) -> None: + # NOTE: see Note [Sharded File] at the top of the VariableType.cpp + # template regarding sharding of the generated files. + fm = FileManager(install_dir=out, template_dir=template_path, dry_run=False) + fm.write_sharded( + "TraceType.cpp", + [fn for fn in native_functions if cpp.name(fn.func) not in MANUAL_TRACER], + key_fn=lambda fn: fn.root_name, + base_env={ + "generated_comment": "@" + + f"generated from {fm.template_dir_for_comments()}/TraceType.cpp", + }, + env_callable=gen_trace_type_func, + num_shards=5, + sharded_keys={ + "ops_headers", + "trace_method_definitions", + "trace_wrapper_registrations", + }, + ) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/gen_variable_factories.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/gen_variable_factories.py new file mode 100644 index 0000000000000000000000000000000000000000..9916a77385d38f01e83416d4303cb17ac17de700 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/gen_variable_factories.py @@ -0,0 +1,116 @@ +# Generates C++ functions that wrap ATen tensor factory methods to turn them into Variables. +# +# This writes one file: variable_factories.h + +from __future__ import annotations + +import re + +import torchgen.api.python as python +from torchgen.api import cpp +from torchgen.api.types import CppSignatureGroup +from torchgen.context import with_native_function +from torchgen.gen import parse_native_yaml +from torchgen.model import NativeFunction, TensorOptionsArguments, Variant +from torchgen.utils import FileManager, mapMaybe + + +OPTIONAL_TYPE_PATTERN = re.compile(r"std::optional<(.+)>") +TYPE_PATTERN = re.compile(r"(?:const\s+)?([A-Z]\w+)") + + +# Add 'at::' to types defined in ATen namespace, e.g. Tensor, TensorList, IntArrayRef and etc. +# TODO: maybe update the cpp argument API to take optional namespace argument? +def fully_qualified_type(argument_type: str) -> str: + def maybe_optional_type(type: str, is_opt: bool) -> str: + return f"std::optional<{type}>" if is_opt else type + + opt_match = OPTIONAL_TYPE_PATTERN.match(argument_type) + is_opt = opt_match is not None + if opt_match: + argument_type = argument_type[opt_match.start(1) : opt_match.end(1)] + match = TYPE_PATTERN.match(argument_type) + if match is None: + return maybe_optional_type(argument_type, is_opt) + index = match.start(1) + qualified_type = f"{argument_type[:index]}at::{argument_type[index:]}" + return maybe_optional_type(qualified_type, is_opt) + + +def gen_variable_factories( + out: str, native_yaml_path: str, tags_yaml_path: str, template_path: str +) -> None: + native_functions = parse_native_yaml( + native_yaml_path, tags_yaml_path + ).native_functions + factory_functions = [fn for fn in native_functions if is_factory_function(fn)] + fm = FileManager(install_dir=out, template_dir=template_path, dry_run=False) + fm.write_with_template( + "variable_factories.h", + "variable_factories.h", + lambda: { + "generated_comment": "@" + + f"generated from {fm.template_dir_for_comments()}/variable_factories.h", + "ops_headers": [ + f"#include " for fn in factory_functions + ], + "function_definitions": list(mapMaybe(process_function, factory_functions)), + }, + ) + + +@with_native_function +def is_factory_function(f: NativeFunction) -> bool: + if Variant.function not in f.variants: + return False + + name = cpp.name(f.func) + has_tensor_options = python.has_tensor_options(f) + return has_tensor_options or name.endswith("_like") + + +@with_native_function +def process_function(f: NativeFunction) -> str | None: + name = cpp.name(f.func) + has_tensor_options = python.has_tensor_options(f) + is_factory = has_tensor_options or name.endswith("_like") + + if Variant.function not in f.variants or not is_factory: + return None + + cpp_sigs = CppSignatureGroup.from_native_function(f, method=False) + sigs = [cpp_sigs.signature] + if cpp_sigs.symint_signature is not None: + sigs.append(cpp_sigs.symint_signature) + r = "" + for sig in sigs: + formals: list[str] = [] + exprs: list[str] = [] + requires_grad = "false" + for arg in sig.arguments(): + qualified_type = fully_qualified_type(arg.type) + if arg.default: + formals.append(f"{qualified_type} {arg.name} = {arg.default}") + else: + formals.append(f"{qualified_type} {arg.name}") + + if isinstance(arg.argument, TensorOptionsArguments): + # note: we remove the requires_grad setting from the TensorOptions because + # it is ignored anyways (and we actually have an assertion that it isn't set + # which would fail otherwise). We handle requires_grad explicitly here + # instead of passing it through to the kernel. + exprs.append( + f"at::TensorOptions({arg.name}).requires_grad(::std::nullopt)" + ) + # Manually set the requires_grad bit on the result tensor. + requires_grad = f"{arg.name}.requires_grad()" + else: + exprs.append(arg.name) + + r += f"""\ +inline at::Tensor {sig.name()}({", ".join(formals)}) {{ + at::AutoDispatchBelowADInplaceOrView guard; + return autograd::make_variable(at::{sig.name()}({", ".join(exprs)}), /*requires_grad=*/{requires_grad}); +}} +""" + return r diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/gen_variable_type.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/gen_variable_type.py new file mode 100644 index 0000000000000000000000000000000000000000..6e45f29a8232a451d6f96e17b31b613d14b3fd90 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/gen_variable_type.py @@ -0,0 +1,2266 @@ +# Generates VariableType.h/cpp +# +# **If any changes are being made to the VariableType codegen please also check +# if updates are needed in torch/csrc/autograd/autograd_not_implemented_fallback.cpp +# +# VariableType is a subclass of at::Type that provides the binding code +# necessary to provide a differentiable version of ATen operators. There are a +# number of different things we could mean: +# +# - Given a non-differentiable forward implementation, we might +# directly associate it with a backward implementation to make +# it differentiable. This is the common case. +# +# - Some functions don't need a backwards implementation, because +# backpropagation will never propagate beyond them. There are a +# number of different reasons why this may be the case: +# +# - The function has no differentiable inputs +# - The function's output is not differentiable +# - The function has no data dependency on its input +# +# - Some function don't need a backwards implementation because they +# are implemented as a composition of other (differentiable) ATen +# functions. These are dispatched directly to the Type superclass, +# which will in turn dispatch back to VariableType for its +# differentiable subcomponents. +# + +from __future__ import annotations + +import re +from typing import TYPE_CHECKING + +from torchgen.api import cpp +from torchgen.api.autograd import ( + DifferentiableInput, + dispatch_strategy, + ForwardDerivative, + gen_differentiable_outputs, + is_differentiable, + NativeFunctionWithDifferentiabilityInfo, + SavedAttribute, +) +from torchgen.api.types import ( + ArrayRefCType, + BaseCppType, + BaseCType, + Binding, + intArrayRefT, + iTensorListRefT, + ListCType, + MutRefCType, + OptionalCType, + scalarT, + SpecialArgName, + stringT, + symIntArrayRefT, + TENSOR_LIST_LIKE_CTYPES, + tensorListT, + tensorT, + TupleCType, + VectorCType, +) +from torchgen.code_template import CodeTemplate +from torchgen.context import ( + native_function_manager, + with_native_function, + with_native_function_and, +) +from torchgen.model import ( + Argument, + BaseType, + ListType, + NativeFunction, + SchemaKind, + SelfArgument, + TensorOptionsArguments, +) +from torchgen.utils import FileManager, mapMaybe + +from .context import with_native_function_with_differentiability_info_and_key +from .gen_inplace_or_view_type import ( + ALL_VIEW_FUNCTIONS, + ASSIGN_RETURN_VALUE, + AUTOGRAD_NOT_IMPLEMENTED_REGISTRATION, + gen_formals, + get_base_name, + get_view_info, + is_tensor_list_type, + is_tensor_type, + METHOD_DEFINITION, + modifies_arguments, + TMP_VAR, + unpack_args, + unpacked_name, + use_derived, + WRAPPER_REGISTRATION, +) +from .gen_trace_type import ( + get_return_value, + MANUAL_AUTOGRAD_AND_TRACER, + MANUAL_BACKEND, + tie_return_values, + type_wrapper_name, +) + + +if TYPE_CHECKING: + from collections.abc import Callable, Sequence + + +# We don't set or modify grad_fn on these methods. Generally, they return +# tensors that have requires_grad=False. In-place functions listed here will +# not examine or modify requires_grad or grad_fn. +# NB: this does NOT include overload name +DONT_REQUIRE_DERIVATIVE = { + # These only depend on the input Tensor's shape and device, not the data + "empty_like", + "ones_like", + "full_like", + "zeros_like", + "rand_like", + "randn_like", + "new_empty", + "new_empty_strided", + "new_full", + "new_zeros", + "new_ones", + # These are only implemented on integral types + "__and__", + "__iand__", + "__ilshift__", + "__ior__", + "__irshift__", + "__ixor__", + "__lshift__", + "__or__", + "__rshift__", + "__xor__", + # These work on integral data types, and hence don't require derivative + "_sobol_engine_draw", + "_sobol_engine_ff", + "_sobol_engine_scramble_", + "_sobol_engine_initialize_state_", + # This is an unsafe method that is meant to be out of reach of autograd. + "_coalesced_", + # Quantize functions should not record gradients + "quantize_per_tensor", + "quantize_per_channel", + # Functions that return integers should not have output that require gradients + "argmax", + "argmin", + "argsort", + "searchsorted", + "bucketize", + # Functions that return booleans are not differentiable + "isnan", + "isposinf", + "isneginf", + "isinf", + "signbit", + "isin", + "allclose", + # Functions return none are not differentiable + "record_stream", + # These functions are not differentiable + "logical_and", + "logical_xor", + "logical_not", + "logical_or", + # This function returns nested_tensor shape as a tensor that is non-differentiable + "_nested_tensor_size", + "_nested_tensor_strides", + "_nested_tensor_storage_offsets", +} + +# The C -> R functions at the time of adding this are still being audited and tested +# but will not error out. +# C -> C, R -> C functions for which backward is correctly implemented and tested +GRADIENT_IMPLEMENTED_FOR_COMPLEX = { + "fill", + "t", + "t_copy", + "view", + "reshape", + "reshape_as", + "view_as", + "view_copy", + "roll", + "clone", + "block_diag", + "diag_embed", + "repeat", + "expand", + "expand_copy", + "flip", + "fliplr", + "flipud", + "rot90", + "nanmean", + "nansum", + "transpose", + "transpose_copy", + "permute", + "permute_copy", + "squeeze", + "squeeze_copy", + "unsqueeze", + "unsqueeze_copy", + "resize", + "resize_as", + "tril", + "triu", + "chunk", + "zero_", + "eq_", + "ne_", + "add", + "__radd__", + "sum", + "_conj", + "sin", + "cos", + "mul", + "sinc", + "sinh", + "cosh", + "__rmul__", + "sgn", + "asin", + "acos", + "sub", + "div", + "cat", + "view_as_complex", + "index_put", + "neg", + "complex", + "select", + "where", + "as_strided", + "as_strided_copy", + "as_strided_scatter", + "slice", + "constant_pad_nd", + "unbind", + "unbind_copy", + "split", + "split_with_sizes", + "unsafe_split", + "split_with_sizes_backward", + "dot", + "vdot", + "cholesky", + "triangular_solve", + "mm", + "_unsafe_view", + "mv", + "outer", + "bmm", + "diagonal", + "alias", + "atan", + "ldexp", + "linear", + "log", + "log10", + "log1p", + "log2", + "logaddexp", + "logsumexp", + "logcumsumexp", + "reciprocal", + "tan", + "pow", + "rsqrt", + "tanh", + "tanh_backward", + "asinh", + "acosh", + "atanh", + "take", + "fill_", + "exp", + "exp2", + "expm1", + "nonzero", + "mean", + "std_mean", + "var_mean", + "inverse", + "solve", + "linalg_cholesky", + "addcmul", + "addcdiv", + "matrix_exp", + "linalg_matrix_exp", + "_linalg_eigh", + "cholesky_solve", + "linalg_qr", + "_linalg_svd", + "_fft_c2c", + "_fft_r2c", + "linalg_solve", + "sqrt", + "stack", + "gather", + "index_select", + "index_add_", + "linalg_inv", + "linalg_inv_ex", + "baddbmm", + "addbmm", + "addmm", + "addmv", + "addr", + "linalg_householder_product", + "ormqr", + "reflection_pad1d", + "reflection_pad2d", + "reflection_pad3d", + "linalg_cholesky_ex", + "linalg_eig", + "diagonal_copy", + "diagonal_scatter", + "alias_copy", + "select_backward", + "diagonal_backward", + "slice_backward", + "reflection_pad1d_backward", + "reflection_pad2d_backward", + "reflection_pad3d_backward", + "_sparse_sparse_matmul", + "replication_pad1d", + "replication_pad2d", + "replication_pad3d", + "put", + "put_", + "_to_copy", + "replication_pad1d_backward", + "replication_pad2d_backward", + "replication_pad3d_backward", + "diag", + "masked_scatter", + "masked_select", + "index_add", + "index_fill", + "trace", + "polar", + "cumsum", + "rsub", + "eig", + "lerp", + "linalg_vector_norm", + "cumprod", + "prod", + "index_copy", + "lu", + "unfold", + "unfold_backward", + "index", + "masked_fill", + "masked_scatter_backward", + "linalg_cross", + "lu_unpack", + "renorm", + "_conj_physical", + "linalg_lu_factor_ex", + "scatter", + "scatter_add", + "sigmoid", + "sigmoid_backward", + "sparse_mask", + "trapezoid", + "cumulative_trapezoid", + "conj_physical_", + "_neg_view", + "_reshape_alias", + "_reshape_copy", + "narrow_copy", + "_linalg_det", + "lu_solve", + "linalg_solve_triangular", + "linalg_pinv", + "linalg_lstsq", + "unfold_copy", + "col2im", + "im2col", + "cholesky_inverse", + "to_sparse", + "sparse_sampled_addmm", + "linalg_lu", + "pixel_shuffle", + "pixel_unshuffle", + "channel_shuffle", + "linalg_lu_solve", + "_linalg_slogdet", + "_linalg_solve_ex", + "_unsafe_index", + "_unsafe_index_put", + "_unsafe_masked_index", + "_unsafe_masked_index_put_accumulate", +} + +GRADIENT_IMPLEMENTED_FOR_SPARSE_COMPLEX = { + "_to_dense", + "_coalesce", + "coalesce", + "values", + "_sparse_coo_tensor_with_dims_and_tensors", + "_sparse_addmm", +} + +GRADIENT_IMPLEMENTED_FOR_COMPLEX.update(GRADIENT_IMPLEMENTED_FOR_SPARSE_COMPLEX) + +# Some operators invalidate the grad_accumulator. Let's reset it. +RESET_GRAD_ACCUMULATOR = {"set_", "resize_"} + +# NOTE [ TensorImpl and Storage Pointer Sanity Checks ] +# +# We check the following properties: +# 1) A function should never change the input tensors' underlying c10::TensorImpl +# pointers or c10::Storage pointers, even if it modifies its input tensors (via +# inplace or out-variants) +# If the function does not modify its arguments, we also check the following properties +# pertaining to its output: +# 2) Its TensorImpl has use_count of 1 (or 2 if it has a PyObject) +# 3) If the function is a view function, it has the same StorageImpl as that of +# the input it is aliased with. Otherwise, its StorageImpl has use_count of 1 +# +# The following code templates implement the checks for this invariant: +SAVE_TENSOR_STORAGE = CodeTemplate( + """\ +auto ${tensor_name}_storage_saved = + ${tensor_name}.has_storage() ? ::std::optional(${tensor_name}.storage()) : ::std::nullopt; +""" +) + + +# If tensor_name == out_tensor_name, used to enforce (1), otherwise used for (2) +ENFORCE_SAME_TENSOR_STORAGE = CodeTemplate( + """\ +if (${tensor_name}_storage_saved.has_value() && + !at::impl::dispatch_mode_enabled() && + !at::impl::tensor_has_dispatch(${tensor_name}) && + !at::impl::tensor_has_dispatch(${out_tensor_name})) + TORCH_INTERNAL_ASSERT(${tensor_name}_storage_saved.value().is_alias_of(${out_tensor_name}.storage())); +""" +) + +SAVE_TENSORLIST_STORAGE = CodeTemplate( + """\ +std::vector<::std::optional> ${tensorlist_name}_storage_saved(${tensorlist_name}.size()); +for (const Tensor& tensor : ${tensorlist_name}) + ${tensorlist_name}_storage_saved.push_back( + tensor.has_storage() ? ::std::optional(tensor.storage()) : ::std::nullopt); +""" +) + +ENFORCE_SAME_TENSORLIST_STORAGE = CodeTemplate( + """\ +for (size_t i=0; i<${tensorlist_name}.size() && !at::impl::dispatch_mode_enabled(); i++) { + if (${tensorlist_name}_storage_saved[i].has_value() && !at::impl::tensorlist_has_dispatch(${tensorlist_name})) + TORCH_INTERNAL_ASSERT(${tensorlist_name}_storage_saved[i].value().is_alias_of(${tensorlist_name}[i].storage())); +} +""" +) + +SAVE_OPTIONALTENSORLIST_STORAGE = CodeTemplate( + """\ +std::vector<::std::optional> ${tensorlist_name}_storage_saved(${tensorlist_name}.size()); +for (const ::std::optional& tensor : ${tensorlist_name}) + ${tensorlist_name}_storage_saved.push_back( + tensor.has_value() && tensor->has_storage() ? ::std::optional(tensor->storage()) : ::std::nullopt); +""" +) + +ENFORCE_SAME_OPTIONALTENSORLIST_STORAGE = CodeTemplate( + """\ +for (size_t i=0; i<${tensorlist_name}.size() && !at::impl::dispatch_mode_enabled(); i++) { + if (${tensorlist_name}_storage_saved[i].has_value() && !at::impl::tensorlist_has_dispatch(${tensorlist_name})) + TORCH_INTERNAL_ASSERT(${tensorlist_name}_storage_saved[i].value().is_alias_of( + static_cast<::std::optional>(${tensorlist_name}[i])->storage())); +} +""" +) + +SAVE_TENSOR_IMPL = CodeTemplate( + """\ +c10::intrusive_ptr ${tensor_name}_impl_saved; +if (${tensor_name}.defined()) ${tensor_name}_impl_saved = ${tensor_name}.getIntrusivePtr(); +""" +) + +ENFORCE_SAME_TENSOR_IMPL = CodeTemplate( + """\ +if (${tensor_name}_impl_saved && !at::impl::dispatch_mode_enabled() && !at::impl::tensor_has_dispatch(${tensor_name})) + TORCH_INTERNAL_ASSERT(${tensor_name}_impl_saved == ${tensor_name}.getIntrusivePtr()); +""" +) + +ENFORCE_TENSOR_IMPL_USE_COUNT = CodeTemplate( + """\ +if (!at::impl::dispatch_mode_enabled() && !at::impl::tensor_has_dispatch(${tensor_name})) + TORCH_INTERNAL_ASSERT(${tensor_name}.use_count() == expected_fresh_use_count(${tensor_name}), "function: ${fn_name}"); +""" +) + +ENFORCE_TENSOR_STORAGE_USE_COUNT_EQUALS_ONE = CodeTemplate( + """\ +if (${tensor_name}.has_storage() && !at::impl::dispatch_mode_enabled() && !at::impl::tensor_has_dispatch(${tensor_name})) { + TORCH_INTERNAL_ASSERT(${tensor_name}.storage().use_count() == 1, "function: ${fn_name}"); +} +""" +) + +SAVE_TENSORLIST_IMPL = CodeTemplate( + """\ +std::vector> ${tensorlist_name}_impl_saved(${tensorlist_name}.size()); +for (size_t i=0; i<${tensorlist_name}.size(); i++) + if (${tensorlist_name}[i].defined()) ${tensorlist_name}_impl_saved[i] = ${tensorlist_name}[i].getIntrusivePtr(); +""" +) + +ENFORCE_SAME_TENSORLIST_IMPL = CodeTemplate( + """\ +for (size_t i=0; i<${tensorlist_name}.size() && !at::impl::dispatch_mode_enabled(); i++) { + if (${tensorlist_name}_impl_saved[i] && !at::impl::tensorlist_has_dispatch(${tensorlist_name})) + TORCH_INTERNAL_ASSERT(${tensorlist_name}_impl_saved[i] == ${tensorlist_name}[i].getIntrusivePtr()); +} +""" +) + +SAVE_OPTIONALTENSORLIST_IMPL = CodeTemplate( + """\ +std::vector> ${tensorlist_name}_impl_saved(${tensorlist_name}.size()); +for (size_t i=0; i<${tensorlist_name}.size(); i++) { + ::std::optional t = ${tensorlist_name}[i]; + if (t.has_value() && t->defined()) ${tensorlist_name}_impl_saved[i] = t->getIntrusivePtr(); +} +""" +) + +ENFORCE_SAME_OPTIONALTENSORLIST_IMPL = CodeTemplate( + """\ +for (size_t i=0; i<${tensorlist_name}.size() && !at::impl::dispatch_mode_enabled(); i++) { + if (${tensorlist_name}_impl_saved[i]) + TORCH_INTERNAL_ASSERT( + ${tensorlist_name}_impl_saved[i] == static_cast<::std::optional>(${tensorlist_name}[i])->getIntrusivePtr()); +} +""" +) + +# The following list contains functions that we don't enforce the invariant on. +DONT_ENFORCE_SAME_TENSOR_IMPL_OR_STORAGE = { + # These functions are expected to change impl or storage of input tensors + "set_", + "_cudnn_rnn_flatten_weight", + "_unsafe_masked_index", + "_unsafe_masked_index_put_accumulate", +} +DONT_ENFORCE_TENSOR_IMPL_USE_COUNT = { + # These non-inplace, non-out functions return tensors with use_count > 1 + # Therefore, they MAY (but not necessarily) return one of its inputs as-is + # See https://github.com/pytorch/pytorch/issues/60426 for more information + "_embedding_bag", + "_embedding_bag_forward_only", + "q_per_channel_scales", + "q_per_channel_zero_points", + "lu_unpack", + "_cudnn_rnn_backward", + # The below failed StorageImpl use_count check but we skip tensor_impl check + # just in case + "_cudnn_rnn", + "dequantize_self", + # lift() should never actually be called with a requires_grad=True tensor, + "lift", + "lift_fresh", + "lift_fresh_copy", + # Nested Tensors related functions + # _nested_tensor_size() should never actually be called with requires_grad=True tensor + "_nested_tensor_size", + "_nested_tensor_strides", + "_nested_tensor_storage_offsets", +} + +DONT_ENFORCE_STORAGE_IMPL_USE_COUNT = { + # These non-view functions return tensors with storage use_count != 1 + "_slow_conv2d_forward", + "slow_conv3d_forward", + "channel_shuffle", + # If an input is returned as-is in output, we cannot guarantee its storage_impl + # use count to be 1 either. + *DONT_ENFORCE_TENSOR_IMPL_USE_COUNT, +} +# END CHECKS FOR [ TensorImpl and Storage Pointer Sanity Checks ] + +DECLARE_GRAD_FN = CodeTemplate( + """\ +std::shared_ptr<${op}> grad_fn; +""" +) + +DECLARE_VECTOR_OF_GRAD_FN = CodeTemplate( + """\ +std::vector> grad_fns; +""" +) + +SETUP_ANY_REQUIRES_GRAD = CodeTemplate( + """\ +[[maybe_unused]] auto _any_requires_grad = compute_requires_grad( ${args_with_derivatives} ); +${extra_differentiability_conditions} +""" +) + +SETUP_DERIVATIVE = CodeTemplate( + """\ +if (_any_requires_grad) { + ${setup} +} +""" +) + +SETUP_NONE_REQUIRES_GRAD = CodeTemplate( + """\ +if (compute_requires_grad( ${args_to_check} )) { + throw_error_out_requires_grad("${base_name}"); +} +""" +) + +ASSIGN_GRAD_FN = CodeTemplate( + """\ +grad_fn = std::shared_ptr<${op}>(new ${op}(${op_ctor}), deleteNode); +grad_fn->set_next_edges(collect_next_edges( ${args_with_derivatives} )); +""" +) + +# note(crcrpar): `compute_requires_grad` in the template below is supplied with arguments indexed with `i` +# while the `SETUP_ANY_REQUIRES_GRAD` above takes whole tensors and scalars. +ASSIGN_VECTOR_OF_GRAD_FN = CodeTemplate( + """\ +for (const auto& i : c10::irange( ${irange} )) { + const auto ith_requires_grad = compute_requires_grad(${args_with_derivatives}); + check_inplace(self[i], ith_requires_grad); + grad_fns.push_back([&]() -> std::shared_ptr<${op}> { + if (!ith_requires_grad) { + return nullptr; + } else { + auto grad_fn = std::shared_ptr<${op}>(new ${op}(${op_ctor}), deleteNode); + grad_fn->set_next_edges(collect_next_edges( ${args_with_derivatives} )); + return grad_fn; + } + }()); +} +""" +) + +CALL_REDISPATCH = CodeTemplate( + """\ +at::redispatch::${api_name}(${unpacked_args})""" +) +# If the non-variable operation has return values, we use the `tmp` variable to hold the +# values temporarily and pass the values to the return variables outside of the +# `at::AutoDispatchBelowAutograd` guard block. +DISPATCH_TO_NON_VAR_TYPE_WITH_TMP_RETURN_VALUES_JVP_DECOMP = CodeTemplate( + """\ +auto ${tmp_var} = ([&]() { + if (${any_has_forward_grad}) { + static c10::OperatorName full_name("aten::${op_name}", "${op_overload}"); + static ::std::optional opt_op = c10::Dispatcher::singleton().findSchema(full_name); + return impl::run_jit_decomposition_with_args_for_jvp<${return_types}>("${op_name}", *opt_op, ks, ${arg_names}); + } else { + ${guard} + return ${base_type_call}; + } +})(); +""" +) + +DISPATCH_TO_NON_VAR_TYPE_WITH_TMP_RETURN_VALUES = CodeTemplate( + """\ +auto ${tmp_var} = ([&]() { + ${guard} + return ${base_type_call}; +})(); +""" +) + +DISPATCH_TO_NON_VAR_TYPE_WITHOUT_RETURN_VALUES = CodeTemplate( + """\ +{ + ${guard} + ${base_type_call}; +} +""" +) + +SET_HISTORY = CodeTemplate( + """\ +if (grad_fn) { + ${fn}_history(${differentiable_outputs}, grad_fn); +} +""" +) + +LOOP_OVER_VECTOR_OF_GRAD_FNS = CodeTemplate( + """\ +if (!grad_fns.empty()) { + ${preamble} + for (const auto& i : c10::irange(grad_fns.size())) { + auto grad_fn = grad_fns[i]; + if (grad_fn != nullptr) { + ${statements} + } + } +} +""" +) + +CONDITIONAL = CodeTemplate( + """\ +if (${cond}) { + ${statements} +} +""" +) + +RUN_ONLY_IN_DEBUG_MODE = CodeTemplate( + """\ +#ifndef NDEBUG +${statements} +#endif +""" +) + +FW_DERIVATIVE_CHECK_TEMPLATE = CodeTemplate( + """\ +isFwGradDefined(${req_inp})\ +""" +) +FW_DERIVATIVE_SIZE_CHECK_TEMPLATE = CodeTemplate( + """\ +TORCH_CHECK( + self.size() == ${inp_name}.size(), + "Tensor lists must have the same number of tensors, got ", + self.size(), + " and ", + ${inp_name}.size()); +""" +) + +FW_DERIVATIVE_TENSORLIST_CHECK_TEMPLATE = CodeTemplate( + """\ +isFwGradDefinedTensorList(${req_inp})\ +""" +) + +FW_DERIVATIVE_DEFINED_GRAD_TEMPLATE = CodeTemplate( + """\ +auto ${inp_name}_t_raw = toNonOptFwGrad(${inp}); +auto ${inp_name}_tensor = toNonOptTensor(${inp}); +auto ${inp_name}_t = (${inp_name}_t_raw.defined() || !${inp_name}_tensor.defined()) + ? ${inp_name}_t_raw : at::${zeros_fn}(${inp_name}_tensor.sym_sizes(), ${inp_name}_tensor.options()); +""" +) + +FW_DERIVATIVE_UPDATE_WRAPPED_NUM_TEMPLATE = CodeTemplate( + """\ +update_wrapped_number(${inp_name}_tensor, ${inp_name}_t); +""" +) + +FW_DERIVATIVE_DEFINED_PRIMAL_TEMPLATE = CodeTemplate( + """\ +auto ${inp_name}_p = toNonOptPrimal(${inp}); +""" +) + +FW_DERIVATIVE_SETTER_TENSOR = CodeTemplate( + """\ +if (${out_arg}_new_fw_grad_opt.has_value() && ${out_arg}_new_fw_grad_opt.value().defined() && ${out_arg}.defined()) { + // The hardcoded 0 here will need to be updated once we support multiple levels. + ${out_arg}._set_fw_grad(${out_arg}_new_fw_grad_opt.value(), /* level */ 0, /* is_inplace_op */ ${is_inplace}); +} +""" +) + +FW_DERIVATIVE_SETTER_TENSOR_FOREACH = CodeTemplate( + """\ +for (const auto& i : c10::irange(${out_arg}_new_fw_grad_opts.size())) { + auto& ${out_arg}_new_fw_grad_opt = ${out_arg}_new_fw_grad_opts[i]; + if (${out_arg}_new_fw_grad_opt.has_value() && ${out_arg}_new_fw_grad_opt.value().defined() && ${out_arg}[i].defined()) { + // The hardcoded 0 here will need to be updated once we support multiple levels. + ${out_arg}[i]._set_fw_grad(${out_arg}_new_fw_grad_opt.value(), /* level */ 0, /* is_inplace_op */ ${is_inplace}); + } +} +""" +) + +FW_DERIVATIVE_SETTER_MULTI_OUTPUT = CodeTemplate( + """\ +if (${all_res}_new_fw_grad_opt.has_value() && std::get<${idx}>(${all_res}_new_fw_grad_opt.value()).defined() + && ${out_arg}.defined()) { + ${out_arg}._set_fw_grad(std::get<${idx}>(${all_res}_new_fw_grad_opt.value()), /* level */ 0, /* is_inplace_op */ false); +} +""" +) + +FW_DERIVATIVE_SETTER_TENSOR_LIST = CodeTemplate( + """\ +if (${out_arg}_new_fw_grad_opt.has_value()) { + auto ${out_arg}_new_fw_grad = ${out_arg}_new_fw_grad_opt.value(); + TORCH_INTERNAL_ASSERT(${out_arg}.size() == ${out_arg}_new_fw_grad.size()); + for (const auto i : c10::irange(${out_arg}.size())) { + if (${out_arg}_new_fw_grad[i].defined() && ${out_arg}[i].defined()) { + // The hardcoded 0 here will need to be updated once we support multiple levels. + ${out_arg}[i]._set_fw_grad(${out_arg}_new_fw_grad[i], /* level */ 0, /* is_inplace_op */ ${is_inplace}); + } + } +} +""" +) + +FW_DERIVATIVE_TEMPLATE = CodeTemplate( + """\ +${fw_grad_opt_definition} +if (${requires_fw_grad}) { + ${unpacked_arguments} + ${out_arg}_new_fw_grad_opt = ${formula}; +} +""" +) + +FW_DERIVATIVE_FOREACH_TEMPLATE = CodeTemplate( + """\ +${fw_grad_opt_definition} +for (const auto& i : c10::irange(${vector_of_optional_tensor}.size())) { + if (${any_has_forward_grad_for_current_index}) { + ${unpacked_arguments} + ${vector_of_optional_tensor}[i] = ${formula}; + } +} +""" +) + +FW_DERIVATIVE_FORBID_TEMPLATE = CodeTemplate( + """\ +TORCH_CHECK_NOT_IMPLEMENTED(!(${cond}), "Trying to use forward AD with ${name} that does not support it ${msg}"); +""" +) + +FW_DERIVATIVE_FORBID_LIST_TEMPLATE = CodeTemplate( + """\ +for (const auto& _t: ${arg}) { + TORCH_CHECK_NOT_IMPLEMENTED(!(${cond}), "Trying to use forward AD with ${name} that does not support it ${msg}"); +} +""" +) + + +def gen_variable_type( + out: str, + native_yaml_path: str, + tags_yaml_path: str, + fns_with_diff_infos: list[NativeFunctionWithDifferentiabilityInfo], + template_path: str, + used_keys: set[str], +) -> None: + """VariableType.h and VariableType.cpp body + + This is the at::Type subclass for differentiable tensors. The + implementation of each function dispatches to the base tensor type to + compute the output. The grad_fn is attached to differentiable functions. + """ + fm = FileManager(install_dir=out, template_dir=template_path, dry_run=False) + fm.write( + "VariableType.h", + lambda: { + "generated_comment": "@" + + f"generated from {fm.template_dir_for_comments()}/VariableType.h" + }, + ) + + # helper that generates a TORCH_LIBRARY_IMPL macro for each + # dispatch key that appears in derivatives.yaml + def wrapper_registrations(used_keys: set[str]) -> str: + library_impl_macro_list: list[str] = [] + for key in sorted(used_keys): + dispatch_key = key + if key == "Default": + dispatch_key = "Autograd" + library_impl_macro = ( + f"TORCH_LIBRARY_IMPL(aten, {dispatch_key}, m) " + + "{\n" + + "${" + + f"wrapper_registrations_{key}" + + "}\n}" + ) + library_impl_macro_list += [library_impl_macro] + return "\n\n".join(library_impl_macro_list) + + # Generate a new template from VariableType.cpp which replaces ${wrapper_registrations} + # with per key TORCH_LIBRARY_IMPL macros for each key that appears in derivatives.yaml + fm1 = FileManager( + install_dir=out + "/templates", template_dir=template_path, dry_run=False + ) + fm1.write( + "VariableType.cpp", + lambda: { + "type_derived_method_definitions": "\n\n".join( + [ + "${" + f"type_derived_method_definitions_{key}" + "}" + for key in sorted(used_keys) + ] + ), + "wrapper_registrations": wrapper_registrations(used_keys), + }, + ) + + # Generate final VariableType_*.cpp files from the generated template + fm2 = FileManager(install_dir=out, template_dir=out + "/templates", dry_run=False) + + sharded_keys = set( + [f"type_derived_method_definitions_{key}" for key in sorted(used_keys)] + + [f"wrapper_registrations_{key}" for key in sorted(used_keys)] + ) + # NOTE: see Note [Sharded File] at the top of the VariableType.cpp + # template regarding sharding of the generated files. + fm2.write_sharded( + "VariableType.cpp", + [fn for fn in fns_with_diff_infos if use_derived(fn)], + key_fn=lambda fn: cpp.name(fn.func.func), + base_env={ + "generated_comment": "@" + + f"generated from {fm.template_dir_for_comments()}/VariableType.cpp", + }, + env_callable=gen_variable_type_func, + num_shards=5, + sharded_keys=sharded_keys, + ) + + +@with_native_function_and +def gen_wrapper_registration(f: NativeFunction, key: str = "Default") -> str: + return WRAPPER_REGISTRATION.substitute( + unqual_operator_name_with_overload=f.func.name, + type_wrapper_name=type_wrapper_name(f, key), + class_type="VariableType", + ) + + +def gen_variable_type_func( + fn: NativeFunctionWithDifferentiabilityInfo, +) -> dict[str, list[str]]: + f = fn.func + result = {} + with native_function_manager(f): + name = cpp.name(f.func) + formals = gen_formals(f) + + if ( + fn.info is None + and str(f.func.name.name) not in RESET_GRAD_ACCUMULATOR + and get_base_name(f) not in DONT_REQUIRE_DERIVATIVE + and len(gen_differentiable_outputs(fn)) > 0 + and cpp.name(f.func) not in DONT_ENFORCE_SAME_TENSOR_IMPL_OR_STORAGE + and type_wrapper_name(f) not in DONT_ENFORCE_STORAGE_IMPL_USE_COUNT + and type_wrapper_name(f) not in DONT_ENFORCE_TENSOR_IMPL_USE_COUNT + ): + # NOTE: [ Registering AutogradNotImplemented boxed kernel ] + # + # When there is no derivatives.yaml entry, we register a generic boxed + # NotImplemented kernel to set grad_fn to be NotImplemented, so that forward + # proceeds as usual but an error is properly produced on backward. + # TODO: it would be nice to not have these special cases + # + # There are several cases where still let codegen handle it: + # 1) ops that need to reset grad accumulator (we let codegen handle this case + # because) the list is (currently) only accessible in Python. + # 2) User explicitly specifies DONT_REQUIRE_DERIVATIVE. This basically makes + # autograd a fallthrough with NDEBUG checks. This can be useful for when all + # outputs are integral. + # 3) When there are no differentiable outputs. This is similar to (2). + # 4) There are certain ops where we skip certain NDEBUG checks. this is similar + # to (1). + type_definition = "" + wrapper_registration = AUTOGRAD_NOT_IMPLEMENTED_REGISTRATION.substitute( + unqual_operator_name_with_overload=f.func.name + ) + result["type_derived_method_definitions_Default"] = [type_definition] + result["wrapper_registrations_Default"] = [wrapper_registration] + else: + if not fn.info: + key = "Default" + type_definition = METHOD_DEFINITION.substitute( + return_type=cpp.returns_type( + f.func.returns, symint=True + ).cpp_type(), + type_wrapper_name=type_wrapper_name(f, key), + type_definition_body=emit_body(fn, key), + formals=formals, + ) + wrapper_registration = gen_wrapper_registration(f, key) + result[f"type_derived_method_definitions_{key}"] = [type_definition] + result[f"wrapper_registrations_{key}"] = [wrapper_registration] + else: + for key in fn.info: + type_definition = METHOD_DEFINITION.substitute( + return_type=cpp.returns_type( + f.func.returns, symint=True + ).cpp_type(), + type_wrapper_name=type_wrapper_name(f, key), + type_definition_body=emit_body(fn, key), + formals=formals, + ) + wrapper_registration = gen_wrapper_registration(f, key) + result[f"type_derived_method_definitions_{key}"] = [type_definition] + result[f"wrapper_registrations_{key}"] = [wrapper_registration] + # See Note [Manual Backend kernels] + if (name in MANUAL_BACKEND) != f.manual_kernel_registration: + raise AssertionError( + f"(name in MANUAL_BACKEND) != f.manual_kernel_registration: {name in MANUAL_BACKEND} != {f.manual_kernel_registration}" + ) + # If you want to register a kernel to Autograd, you must make the op abstract. + # In other words, this op must have dispatch section in native_functions.yaml. + if name in MANUAL_AUTOGRAD_AND_TRACER or ( + fn.info and any(info.has_derivatives for info in fn.info.values()) + ): + if not f.is_abstract: + raise AssertionError( + f"There's a formula for {name}(or its functional variant) in derivatives.yaml. " + f"It's required to add a dispatch section for it with explicit supported backends e.g CPU/CUDA " + f"or CompositeExplicitAutograd in native_functions.yaml. Please see " + f"https://github.com/pytorch/pytorch/tree/master/aten/src/ATen/native#choosing-the-right-dispatch-keyword " + f"for instructions to choose the right dispatch keyword." + ) + + return result + + +_foreach_ops_without_differentiability_info = { + # No reference backward available due to the lack of `{maximum, minimum}(tensor, scalar)`. + ("_foreach_maximum", "Scalar"), + ("_foreach_maximum", "ScalarList"), + ("_foreach_minimum", "Scalar"), + ("_foreach_minimum", "ScalarList"), + # No reference backward available as addcdiv/addcmul don't support Tensor as scaling factor. + ("_foreach_addcdiv", "Tensor"), + ("_foreach_addcmul", "Tensor"), + ("_foreach_copy", ""), +} + +_foreach_ops_with_different_arity = { + # These ops lack `alpha` of scaling factor to applied to the right hand side argument. + ("_foreach_add", "Scalar"), + ("_foreach_add", "ScalarList"), + ("_foreach_sub", "Scalar"), + ("_foreach_sub", "ScalarList"), +} + + +@with_native_function_with_differentiability_info_and_key +def emit_body( + fn: NativeFunctionWithDifferentiabilityInfo, key: str = "Default" +) -> list[str]: + if dispatch_strategy(fn) != "use_derived": + raise AssertionError( + f"dispatch_strategy(fn) is {dispatch_strategy(fn)}, expected 'use_derived'" + ) + f = fn.func + info = fn.info[key] if fn.info else None + fw_derivatives = fn.fw_derivatives.get(key, []) if fn.fw_derivatives else [] + + name = cpp.name(f.func) + inplace = f.func.kind() == SchemaKind.inplace + is_out_fn = f.func.kind() == SchemaKind.out + returns_void = len(f.func.returns) == 0 + base_name = get_base_name(f) + view_info = get_view_info(f) + + is_foreach = name.startswith("_foreach") + is_inplace_foreach = is_foreach and inplace + if is_inplace_foreach: + inplace_foreacharg2refarg: dict[Argument, Argument] = {} + refargname2inplace_foreacharg: dict[str, Argument] = {} + base_name_and_overload_name = (f.func.name.name.base, f.func.name.overload_name) + if info is None: + if ( + base_name_and_overload_name + not in _foreach_ops_without_differentiability_info + ): + raise AssertionError( + f"{'.'.join(base_name_and_overload_name)} should have a differentiability info" + ) + else: + if not ( + len(f.func.arguments.flat_non_out) + == len(info.func.func.arguments.flat_non_out) + ) and ( + base_name_and_overload_name not in _foreach_ops_with_different_arity + ): + raise AssertionError( + f"{'.'.join(base_name_and_overload_name)} has {len(f.func.arguments.flat_non_out)} args " + f"but the reference has {len(info.func.func.arguments.flat_non_out)}" + ) + for foreach_arg, ref_arg in zip( + f.func.arguments.flat_non_out, info.func.func.arguments.flat_non_out + ): + foreach_arg_type = foreach_arg.type + if isinstance(foreach_arg_type, ListType): + foreach_arg_type = foreach_arg_type.elem + if foreach_arg_type != ref_arg.type: + raise AssertionError( + f"foreach_arg_type ({foreach_arg_type}) != ref_arg.type ({ref_arg.type})" + ) + inplace_foreacharg2refarg[foreach_arg] = ref_arg + refargname2inplace_foreacharg[ref_arg.name] = foreach_arg + + def gen_differentiable_input( + arg: Argument | SelfArgument | TensorOptionsArguments, + ) -> DifferentiableInput | None: + if isinstance(arg, TensorOptionsArguments): + return None + a: Argument = arg.argument if isinstance(arg, SelfArgument) else arg + + # TODO: `cpp_type` is only to keep it byte-for-byte compatible with the old codegen, should remove. + # NB: This is not a clone of cpp.argument() - TensorOptionsArguments / faithful / binds are + # not handled properly as they are irrelevant for this codegen. + cpp_type = cpp.argument_type(a, binds=a.name, symint=True).cpp_type() + + if not is_differentiable(a.name, a.type, info): + return None + return DifferentiableInput( + name=a.name, + type=a.type, + cpp_type=cpp_type, + ) + + @with_native_function + def gen_differentiable_inputs(f: NativeFunction) -> list[DifferentiableInput]: + arguments = list(f.func.arguments.non_out) + if is_inplace_foreach and info is not None: + for i, arg in enumerate(f.func.arguments.flat_non_out): + if arg in inplace_foreacharg2refarg: + # note(crcrpar): From what I understand, what matters is only the name. + # Thus originally I only replace argument only when the names are different. + # TODO(crcrpar): Make it simpler. + mapped_arg = inplace_foreacharg2refarg[arg] + arguments[i] = Argument( + mapped_arg.name, + mapped_arg.type, + mapped_arg.default, + mapped_arg.annotation, + ) + return list(mapMaybe(gen_differentiable_input, arguments)) + + def find_args_with_derivatives( + differentiable_inputs: list[DifferentiableInput], + ) -> list[DifferentiableInput]: + """Find arguments that have derivative definitions""" + if info is None or not info.has_derivatives: + return differentiable_inputs + names = {name for d in info.derivatives for name in d.var_names} + differentiable = [arg for arg in differentiable_inputs if arg.name in names] + if len(differentiable) != len(names): + missing = names - {arg.name for arg in differentiable} + raise RuntimeError( + f"Missing arguments for derivatives: {missing} in {info.name}" + ) + return differentiable + + differentiable_inputs = gen_differentiable_inputs(f) + args_with_derivatives = find_args_with_derivatives(differentiable_inputs) + differentiable_outputs = gen_differentiable_outputs(fn, key) + + undifferentiable = (base_name in DONT_REQUIRE_DERIVATIVE) or ( + name in DONT_REQUIRE_DERIVATIVE + ) + + requires_derivative = ( + (not undifferentiable) + and (len(differentiable_inputs) > 0) + and ( + (len(differentiable_outputs) > 0) + # note(crcrpar): In-place foreach functions are a void function. + or is_inplace_foreach + ) + ) + + if ( + info is not None + and info.has_derivatives + and not requires_derivative + # out= ops are allowed to have zero returns which cause requires_derivative to be False + # we shouldn't error out though (out= ops for autograd just redispatch) + and len(f.func.returns) > 0 + ): + raise RuntimeError( + f"ERROR: derivative ignored for {name} -- specified an autograd function without derivative" + ) + + # note(crcrpar): In-place foreach functions do not support forward AD + if requires_derivative and len(fw_derivatives) > 0 and not is_inplace_foreach: + num_fw_derivative_var_names = sum( + len(derivative.var_names) for derivative in fw_derivatives + ) + if num_fw_derivative_var_names != len(differentiable_outputs): + raise AssertionError( + f"Expected the number of forward derivatives implemented ({num_fw_derivative_var_names}) to match the " + f"number of differentiable outputs ({len(differentiable_outputs)}). NB: This only applies when at least " + "one forward derivative is implemented. Not implementing any forward " + "derivatives is also okay, and we would require inputs to the op to " + "not have associated tangents in that case." + ) + + try_jit_decomposition = ( + requires_derivative + and len(fw_derivatives) == 0 + and (not modifies_arguments(f)) + and (not returns_void) + ) + + def emit_save_inputs() -> list[str]: + setup: list[str] = [] + if info is None or not info.has_derivatives: + return setup + + has_tensorlist_arg = any( + is_tensor_list_type(arg.type) for arg in args_with_derivatives + ) + + # We don't want to save tensors if we know that they will never be used + # when computing the derivative, so we add guards to those statements + def guard_for(arg: SavedAttribute) -> str | None: + if info is None: + raise AssertionError("info is None in guard_for") + + # It's hard to determine the edge offset if we have TensorLists + # NOTE(crcrpar): in-place foreach functions' arguments include tensorlist + # but their derivatives don't use it, so let them bypass this check. + if has_tensorlist_arg and (not is_inplace_foreach): + return None + + # Empirical evaluation of the cases where we insert those guards in + # backward show that they are somewhat useless. E.g. there's no need + # to guard on some values captured from forward, because they had to + # require_grad if the backward function even gets executed. I don't + # have any good ideas for detecting those cases, so I simply disabled the + # checks. + if "backward" in info.name: + return None + + # If there's a single derivative we could compute, we already have + # a requires_grad check that is sufficient + if len(args_with_derivatives) <= 1: + return None + + # We really only care about trimming down the amount of tensors we save + if arg.nctype.type != BaseCType(tensorT): + return None + + # We want to emit simple guards, so we only allow that if checking one + # input is enough to determine whether we need that value + used_in = [d for d in info.derivatives if arg in d.saved_inputs] + if len(used_in) == 0: + raise AssertionError(f"used_in is empty for arg {arg.nctype.name}") + if len(used_in) != 1: + return None + derivative = used_in[0] + + # Case with multioutput formulas + # TODO: process all derivative formulas!!! + if len(derivative.var_names) != 1: + wrap_opt_if_start = derivative.formula.find( + f"wrap_opt_if({arg.nctype.name}" + ) + if wrap_opt_if_start == -1: + return None + + wrap_opt_if_match = re.match( + rf"wrap_opt_if\({arg.nctype.name},(.*?)\)", + derivative.formula[wrap_opt_if_start:], + ) + if wrap_opt_if_match is None: + raise AssertionError( + f"wrap_opt_if_match is None for {arg.nctype.name} in {derivative.formula}" + ) + + # Condition is between 'wrap_opt_if(var_name,' and ')'. + condition_slice = slice(len(rf"wrap_opt_if\({arg.nctype.name},"), -1) + wrap_opt_if_condition = wrap_opt_if_match.group(0)[ + condition_slice + ].strip() + # replace 'grad_input_mask[num]' with 'grad_fn->should_compute_output(num)' + wrap_opt_if_condition = re.sub( + r"grad_input_mask\[(\d+)\]", + r"grad_fn->should_compute_output(\1)", + wrap_opt_if_condition, + ) + return f"{wrap_opt_if_condition}" + + # Figure out the offset of the edge that uses this variable + derivative_var_name = derivative.var_names[0] + for edge_off, a in enumerate(args_with_derivatives): + if a.name == derivative_var_name: + break + else: + raise AssertionError + return f"grad_fn->should_compute_output({edge_off})" + + if is_inplace_foreach: + save_input_stmts = save_variables(info.all_saved_inputs, False, guard_for) + if save_input_stmts: + setup.append( + LOOP_OVER_VECTOR_OF_GRAD_FNS.substitute( + preamble="", statements=save_input_stmts + ) + ) + else: + setup.extend(save_variables(info.all_saved_inputs, False, guard_for)) + for arg in args_with_derivatives: + if is_tensor_list_type(arg.type): + setup.append(f"grad_fn->{arg.name}_size_ = {arg.name}.size();") + return setup + + def setup_derivative(differentiable_inputs: list[DifferentiableInput]) -> list[str]: + body: list[str] = [] + if is_out_fn: + # For out functions, ensure that no input or output requires grad + body.append(DECLARE_GRAD_FN.substitute(op="Node")) + body.append( + SETUP_NONE_REQUIRES_GRAD.substitute( + base_name=base_name, + args_to_check=[arg.name for arg in differentiable_inputs], + ) + ) + body.append( + SETUP_NONE_REQUIRES_GRAD.substitute( + base_name=base_name, + args_to_check=[arg.name for arg in differentiable_outputs], + ) + ) + return body + + op = info.op if info is not None and info.has_derivatives else "NotImplemented" + setup = [] + if not is_inplace_foreach: + setup.extend( + ASSIGN_GRAD_FN.substitute( + op=op, + op_ctor="" + if info is not None and info.has_derivatives + else f'"{cpp.name(f.func)}"', + args_with_derivatives=[arg.name for arg in args_with_derivatives], + ).split("\n") + ) + else: + # note(crcrpar): Assuming in-place foreach function's self_arg is always TensorList. + list_like_arg = "self" + args = [arg.name for arg in args_with_derivatives] + for i, arg in enumerate(args): + if is_inplace_foreach and info is not None: + if arg in refargname2inplace_foreacharg: + foreach_arg = refargname2inplace_foreacharg[arg] + args[i] = foreach_arg.name + ( + "[i]" if isinstance(foreach_arg.type, ListType) else "" + ) + else: + if arg == list_like_arg: + args[i] = arg + "[i]" + setup.extend( + ASSIGN_VECTOR_OF_GRAD_FN.substitute( + op=op, + op_ctor="" + if info is not None and info.has_derivatives + else f'"{cpp.name(f.func)}"', + args_with_derivatives=args, + irange=f"{list_like_arg}.size()", + ).split("\n") + ) + setup.extend(emit_save_inputs()) + + body.extend( + emit_check_no_requires_grad(differentiable_inputs, args_with_derivatives) + ) + declare_grad_fn_template = ( + DECLARE_GRAD_FN if not is_inplace_foreach else DECLARE_VECTOR_OF_GRAD_FN + ) + body.append(declare_grad_fn_template.substitute(op=op)) + body.append(SETUP_DERIVATIVE.substitute(setup=setup)) + return body + + def emit_check_if_in_complex_autograd_allowlist() -> list[str]: + body: list[str] = [] + if base_name in GRADIENT_IMPLEMENTED_FOR_COMPLEX: + return body + for arg in differentiable_outputs: + name = arg.name + # TODO: should be `arg.type.is_tensor_like()`? + if arg.cpp_type == "at::Tensor" or arg.cpp_type in TENSOR_LIST_LIKE_CTYPES: + body.append(f'throw_error_for_complex_autograd({name}, "{base_name}");') + return body + + def emit_check_no_requires_grad( + tensor_args: list[DifferentiableInput], + args_with_derivatives: list[DifferentiableInput], + ) -> list[str]: + """Checks that arguments without derivatives don't require grad""" + body: list[str] = [] + for arg in tensor_args: + if arg in args_with_derivatives: + continue + arg_name = arg.name + if info and arg_name in info.non_differentiable_arg_names: + continue + if arg_name == "output": + # Double-backwards definitions sometimes take in 'input' and + # 'output', but only define the derivative for input. + continue + body.append(f'check_no_requires_grad({arg_name}, "{arg_name}", "{name}");') + return body + + def emit_original_self_definition() -> list[str]: + body: list[str] = [] + if inplace: + if is_inplace_foreach: + body.append( + "std::vector<::std::optional> original_selfs(self.size());" + ) + else: + body.append("::std::optional original_self;") + + all_forward_grad_cond = [] + for derivative in fw_derivatives: + if derivative.required_original_self_value: + all_forward_grad_cond.append( + get_any_has_forward_grad_name(derivative.var_names) + ) + + if all_forward_grad_cond: + if not is_inplace_foreach: + body.append(f"if ({' || '.join(all_forward_grad_cond)}) {{") + body.append(" original_self = self.clone();") + body.append("}") + else: + current_all_forward_grad_cond = [ + f"{cond}[i]" for cond in all_forward_grad_cond + ] + body.append("for (const auto& i : c10::irange(self.size())) {") + body.append( + f" if ({' || '.join(current_all_forward_grad_cond)}) {{" + ) + body.append(" original_selfs[i] = self[i].clone();") + body.append(" }") + body.append("}") + + return body + + def save_variables( + saved_variables: Sequence[SavedAttribute], + is_output: bool, + guard_for: Callable[[SavedAttribute], str | None] = lambda name: None, + ) -> Sequence[str]: + # assign the saved variables to the generated grad_fn + stmts: list[str] = [] + for arg in sorted(saved_variables, key=lambda sa: str(sa.nctype.name)): + name = ( + arg.nctype.name.name + if isinstance(arg.nctype.name, SpecialArgName) + else arg.nctype.name + ) + foreacharg: Argument | None = None + is_foreacharg_list_type: bool = False + type = arg.nctype.type + expr = arg.expr + stmts_prepend = None + if is_inplace_foreach and info is not None: + # todo(crcrpar): See if we can add some check e.g. `assert foreacharg is not None`. + # for now the example assert would fail. + name_to_query = name.split("_scalar_type")[0] + if name_to_query in refargname2inplace_foreacharg: + foreacharg = refargname2inplace_foreacharg[name_to_query] + is_foreacharg_list_type = isinstance(foreacharg.type, ListType) + if foreacharg is not None: + name_in_expr = ( + f"{foreacharg.name}{'[i]' if is_foreacharg_list_type else ''}" + ) + src_name = name + if "_scalar_type" in src_name: + split_src_name = src_name.split("_scalar_type") + if len(split_src_name) != 2: + raise AssertionError( + f"expected 2 parts after split, got {len(split_src_name)}: {split_src_name}" + ) + src_name = split_src_name[0] + expr = expr.replace(src_name, name_in_expr) + if ( + type == BaseCType(tensorT) + or type == OptionalCType(BaseCType(tensorT)) + or type == MutRefCType(OptionalCType(BaseCType(tensorT))) + or (is_output and type == BaseCType(scalarT)) + ): + # note(crcrpar): Here `expr` is generated from scratch, `arg.expr` is ignored. + var = name + name += "_" + if var == "self" and inplace: + original_self_var = ( + "original_self" + if not is_inplace_foreach + else "original_selfs[i]" + ) + self_var = var if not is_inplace_foreach else var + "[i]" + stmts_prepend = f"if (!{original_self_var}.has_value()) {original_self_var} = {self_var}.clone()" + var = f"{original_self_var}.value()" + if is_output: + raise AssertionError( + "is_output should be False when var == 'self' and inplace" + ) + if inplace and is_output: + if name != "result_": + raise AssertionError( + f"expected name to be 'result_' for inplace output, got {name}" + ) + var = ( + "self[i]" + if is_inplace_foreach or is_foreacharg_list_type + else "self" + ) + is_inplace_view = f"{var}.is_view()" + expr = f"SavedVariable({var}, {str(is_output).lower()}, {is_inplace_view})" + else: + expr = f"SavedVariable({var}, {str(is_output).lower()})" + if foreacharg is not None and "original_selfs" not in expr: + # pyrefly: ignore [unbound-name] + expr = expr.replace(src_name, name_in_expr) + elif ( + type == BaseCType(tensorListT) + or type == ListCType(OptionalCType(BaseCType(tensorT))) + or type == BaseCType(iTensorListRefT) + or type == VectorCType(BaseCType(tensorT)) + ): + # See Note [nuanced return type of out-of-place foreach functions] + if type == VectorCType(BaseCType(tensorT)): + if not (is_foreach and is_output): + raise AssertionError( + f"VectorCType(BaseCType(tensorT)) requires is_foreach and is_output, " + f"got is_foreach={is_foreach}, is_output={is_output}" + ) + expr = f"make_saved_variable_list({name}, {str(is_foreach and is_output).lower()})" + name += "_" + elif type == BaseCType(intArrayRefT): + expr = expr + ".vec()" + elif type == BaseCType(symIntArrayRefT): + expr = expr + ".vec()" + elif type == BaseCType(stringT): + expr = f"std::string({expr})" + elif type == OptionalCType(BaseCType(stringT)): + expr = f"{expr}.has_value() ? ::std::optional(std::string({expr}.value())) : ::std::nullopt" + elif type == ArrayRefCType( + elem=BaseCType(type=BaseCppType(ns="at", name="Scalar")) + ): + expr = expr + ".vec()" + + guard = guard_for(arg) + if guard is None: + if stmts_prepend: + stmts.append(f"{stmts_prepend};") + stmts.append(f"grad_fn->{name} = {expr};") + else: + stmts.append(f"if ({guard}) {{") + if stmts_prepend: + stmts.append(f" {stmts_prepend};") + stmts.append(f" grad_fn->{name} = {expr};") + stmts.append("}") + return stmts + + # Generates a Dispatcher::redispatch() call into the dispatcher. We do this mainly for performance reasons: + # - Pre-compute the full DispatchKeySet. This saves the dispatcher from having to read from TLS. + # - redispatch() avoids a redundant call to RecordFunction, which was already called right before + # we entered this autograd kernel. + def emit_dispatch_call( + f: NativeFunction, input_base: str, unpacked_args: Sequence[str] + ) -> str: + """Dispatch call via function in a namespace or method on Tensor.""" + # code-generated autograd kernels plumb and recompute dispatch keys directly through the kernel for performance. + # Ops also always have a function variant of the redispatch API. + # See Note [Plumbing Keys Through The Dispatcher] for details. + dispatch_key_set = "ks & c10::after_autograd_keyset" + call = CALL_REDISPATCH.substitute( + api_name=cpp.name( + f.func, + faithful_name_for_out_overloads=True, + symint_overload=f.func.has_symint(), + ), + unpacked_args=[dispatch_key_set] + list(unpacked_args), + ) + return call + + def wrap_output( + f: NativeFunction, unpacked_bindings: list[Binding], var: str + ) -> str: + call = "" + rhs_value: str | None = None + if not any(r.type.is_tensor_like() for r in f.func.returns): + rhs_value = var + else: + rhs_value = f"std::move({var})" + if rhs_value is None: + raise AssertionError("rhs_value is None") + call += ASSIGN_RETURN_VALUE.substitute( + return_values=tie_return_values(f), rhs_value=rhs_value + ) + return call + + def check_tensorimpl_and_storage( + call: str, unpacked_bindings: list[Binding] + ) -> str: + # See NOTE [ TensorImpl and Storage Pointer Sanity Checks ] + stmts_before_call: list[str] = [] + stmts_after_call: list[str] = [] + + if cpp.name(f.func) in DONT_ENFORCE_SAME_TENSOR_IMPL_OR_STORAGE: + return call + + # Check properties of inputs (enforce (1)) + for unpacked_binding in unpacked_bindings: + arg = unpacked_binding.name + noref_cpp_type = unpacked_binding.nctype.type.remove_const_ref() + if noref_cpp_type == BaseCType(tensorListT) or noref_cpp_type == BaseCType( + iTensorListRefT + ): + stmts_before_call += [ + SAVE_TENSORLIST_STORAGE.substitute(tensorlist_name=arg), + SAVE_TENSORLIST_IMPL.substitute(tensorlist_name=arg), + ] + stmts_after_call += [ + ENFORCE_SAME_TENSORLIST_STORAGE.substitute(tensorlist_name=arg), + ENFORCE_SAME_TENSORLIST_IMPL.substitute(tensorlist_name=arg), + ] + elif noref_cpp_type == ListCType(OptionalCType(BaseCType(tensorT))): + stmts_before_call += [ + SAVE_OPTIONALTENSORLIST_STORAGE.substitute(tensorlist_name=arg), + SAVE_OPTIONALTENSORLIST_IMPL.substitute(tensorlist_name=arg), + ] + stmts_after_call += [ + ENFORCE_SAME_OPTIONALTENSORLIST_STORAGE.substitute( + tensorlist_name=arg + ), + ENFORCE_SAME_OPTIONALTENSORLIST_IMPL.substitute( + tensorlist_name=arg + ), + ] + elif noref_cpp_type == BaseCType(tensorT): + stmts_before_call += [ + SAVE_TENSOR_STORAGE.substitute(tensor_name=arg), + SAVE_TENSOR_IMPL.substitute(tensor_name=arg), + ] + stmts_after_call += [ + ENFORCE_SAME_TENSOR_STORAGE.substitute( + tensor_name=arg, out_tensor_name=arg + ), + ENFORCE_SAME_TENSOR_IMPL.substitute(tensor_name=arg), + ] + + if not ( + (stmts_before_call and stmts_after_call) + or (not stmts_before_call and not stmts_after_call) + ): + raise AssertionError( + "stmts_before_call and stmts_after_call must be both empty or both non-empty" + ) + + # Check properties of outputs (enforce (2), (3)) + if f.func.kind() not in (SchemaKind.inplace, SchemaKind.out): + base_name = f.func.name.name.base # TODO: should be str(f.func.name.name)? + aliased_arg_name = ALL_VIEW_FUNCTIONS.get(base_name, None) + if aliased_arg_name is not None: + aliased_arg_name = unpacked_name(aliased_arg_name) + for i, (ret, ret_name) in enumerate( + zip(f.func.returns, cpp.return_names(f)) + ): + noref_cpp_type = cpp.return_type(ret, symint=True).remove_const_ref() + if noref_cpp_type == BaseCType(tensorT): + if aliased_arg_name is not None: + if i != 0: + raise AssertionError( + f"Expect non-CompositeImplicitAutograd view function {base_name} " + f"to return single output, got index {i}" + ) + stmts_after_call += [ + ENFORCE_SAME_TENSOR_STORAGE.substitute( + tensor_name=aliased_arg_name, out_tensor_name=ret_name + ) + ] + else: + if ( + type_wrapper_name(f) + not in DONT_ENFORCE_STORAGE_IMPL_USE_COUNT + ): + stmts_after_call += [ + ENFORCE_TENSOR_STORAGE_USE_COUNT_EQUALS_ONE.substitute( + tensor_name=ret_name, fn_name=type_wrapper_name(f) + ) + ] + + if type_wrapper_name(f) not in DONT_ENFORCE_TENSOR_IMPL_USE_COUNT: + stmts_after_call += [ + ENFORCE_TENSOR_IMPL_USE_COUNT.substitute( + tensor_name=ret_name, fn_name=type_wrapper_name(f) + ) + ] + + # Currently we don't have any functions that return the following types, but + # we should update the checks once we do + elif noref_cpp_type == ListCType(OptionalCType(BaseCType(tensorT))): + raise AssertionError( + f"Please add use_count checks for {noref_cpp_type}" + ) + elif noref_cpp_type == BaseCType(tensorListT): + raise AssertionError( + f"Please add use_count checks for {noref_cpp_type}" + ) + + if stmts_before_call and stmts_after_call: + call = ( + RUN_ONLY_IN_DEBUG_MODE.substitute(statements=stmts_before_call) + + call + + RUN_ONLY_IN_DEBUG_MODE.substitute(statements=stmts_after_call) + ) + return call + + def emit_call( + f: NativeFunction, unpacked_bindings: list[Binding], try_jit_decomposition: bool + ) -> str: + # We only care about adding `at::AutoDispatchBelowAutograd` guard for non-variable dispatch + # (which corresponds to 'use_derived' strategy). The purpose of this guard is to make sure + # the baseType operations still dispatch to non-Variable type, even if the arguments passed + # in are now Variables. + # See NOTE [ Treating Variables as non-Variables in type dispatch ] for details. + unpacked_args = [b.name for b in unpacked_bindings] + base_type_call = emit_dispatch_call(f, "self_", unpacked_args) + + if get_view_info(f) is not None or modifies_arguments(f): + guard = "at::AutoDispatchBelowAutograd guard;" + else: + guard = "at::AutoDispatchBelowADInplaceOrView guard;" + + any_has_forward_grad = ( + get_any_has_fw_grad_cond(derivative=None) + if requires_derivative + else "false" + ) + return_types = ", ".join( + [cpp.return_type(a, symint=True).cpp_type() for a in f.func.returns] + ) + if len(f.func.returns) > 1: + return_types = f"std::tuple<{return_types}>" + + arg_names = [ + a.name + for a in cpp.arguments( + f.func.arguments, + faithful=True, + symint=True, + method=False, + cpp_no_default_args=set(), + ) + ] + + if not modifies_arguments(f) and not returns_void: + if try_jit_decomposition: + call = DISPATCH_TO_NON_VAR_TYPE_WITH_TMP_RETURN_VALUES_JVP_DECOMP.substitute( + base_type_call=base_type_call, + tmp_var=TMP_VAR, + guard=guard, + any_has_forward_grad=any_has_forward_grad, + op_name=cpp.name(f.func), + op_overload=f.func.name.overload_name, + return_types=return_types, + arg_names=arg_names, + ) + else: + call = DISPATCH_TO_NON_VAR_TYPE_WITH_TMP_RETURN_VALUES.substitute( + base_type_call=base_type_call, + tmp_var=TMP_VAR, + guard=guard, + ) + + call += wrap_output(f, unpacked_bindings, TMP_VAR) + else: + if try_jit_decomposition: + raise AssertionError( + "try_jit_decomposition should be False for functions with no return values or that modify arguments" + ) + call = DISPATCH_TO_NON_VAR_TYPE_WITHOUT_RETURN_VALUES.substitute( + base_type_call=base_type_call, guard=guard + ) + call = check_tensorimpl_and_storage(call, unpacked_bindings) + return call + + def emit_history() -> str: + fn = "rebase" if modifies_arguments(f) and view_info is None else "set" + output_names = [r.name for r in differentiable_outputs] + # TODO: flatten allocates a std::vector, which could be expensive + outs = CodeTemplate("flatten_tensor_args( ${outs} )").substitute( + outs=output_names if not is_inplace_foreach else "self" + ) + if not is_inplace_foreach: + return SET_HISTORY.substitute(fn=fn, differentiable_outputs=outs) + else: + return LOOP_OVER_VECTOR_OF_GRAD_FNS.substitute( + preamble=( + f"auto differentiable_outputs = {outs};\n" + f"TORCH_INTERNAL_ASSERT(differentiable_outputs.size() == grad_fns.size());" + ), + statements=f"{fn}_history(differentiable_outputs[i], grad_fns[i]);", + ) + + def emit_save_outputs() -> str: + if is_out_fn: + # out functions don't currently support differentiation + return "" + if info is not None and info.has_derivatives: + stmts = save_variables(info.all_saved_outputs, True) + if len(stmts) == 0: + return "" + if not is_inplace_foreach: + return CONDITIONAL.substitute(cond="grad_fn", statements=stmts) + else: + return LOOP_OVER_VECTOR_OF_GRAD_FNS.substitute( + preamble="", statements=stmts + ) + return "" + + def emit_any_requires_grad() -> list[str]: + extra_condition = "" + if info and info.output_differentiability_conditions: + if len(info.output_differentiability_conditions) != 1: + raise AssertionError( + f"expected 1 output_differentiability_condition, got {len(info.output_differentiability_conditions)}" + ) + extra_condition = f"_any_requires_grad &= ({info.output_differentiability_conditions[0]});" + names_of_args_with_derivatives = [arg.name for arg in args_with_derivatives] + if is_inplace_foreach and info is not None: + for i, arg in enumerate(names_of_args_with_derivatives): + for f_arg, r_arg in inplace_foreacharg2refarg.items(): + if arg == r_arg.name: + names_of_args_with_derivatives[i] = f_arg.name + return [ + SETUP_ANY_REQUIRES_GRAD.substitute( + args_with_derivatives=names_of_args_with_derivatives, + extra_differentiability_conditions=extra_condition, + ) + ] + + def get_any_has_forward_grad_name(var_names: tuple[str, ...]) -> str: + if len(var_names) == 1: + return f"_any_has_forward_grad_{var_names[0]}" + else: + return f"_any_has_forward_grad_{'_'.join(var_names)}" + + def emit_any_has_forward_grad() -> list[str]: + content: list[str] = [] + if not is_foreach: + for derivative in fw_derivatives: + requires_fw_grad = get_any_has_fw_grad_cond(derivative=derivative) + if info and info.output_differentiability_conditions: + if len(info.output_differentiability_conditions) != 1: + raise AssertionError( + f"expected 1 output_differentiability_condition, got {len(info.output_differentiability_conditions)}" + ) + requires_fw_grad = f"({info.output_differentiability_conditions[0]}) && {requires_fw_grad}" + content.append( + f"[[maybe_unused]] auto {get_any_has_forward_grad_name(derivative.var_names)} = {requires_fw_grad};" + ) + else: + for derivative in fw_derivatives: + bool_vector_name = get_any_has_forward_grad_name(derivative.var_names) + cur_derivative_conditions = [] + for inp in differentiable_inputs: + if derivative.required_inputs_fw_grad is None: + continue + if inp.name not in derivative.required_inputs_fw_grad: + continue + inp_name = ( + inp.name + if not inplace + else refargname2inplace_foreacharg[inp.name].name + ) + inp_type = ( + inp.type + if not inplace + else refargname2inplace_foreacharg[inp.name].type + ) + is_list_type = is_tensor_list_type(inp_type) + if is_list_type: + if inp_name != "self": + content.append( + FW_DERIVATIVE_SIZE_CHECK_TEMPLATE.substitute( + inp_name=inp_name + ) + ) + cur_derivative_conditions.append( + # pyrefly: ignore [bad-argument-type] + FW_DERIVATIVE_CHECK_TEMPLATE.substitute( + req_inp=inp_name + "[i]" + ) + ) + else: + cur_derivative_conditions.append( + # pyrefly: ignore [bad-argument-type] + FW_DERIVATIVE_CHECK_TEMPLATE.substitute(req_inp=inp_name) + ) + + content.append(f"std::vector {bool_vector_name}(self.size());") + content.append("for (const auto& i : c10::irange(self.size())) {") + content.append( + f" {bool_vector_name}[i] = {' || '.join(cur_derivative_conditions)};" + ) + content.append("}") + return content + + def emit_check_inplace() -> list[str]: + if not inplace: + return [] + return [ + f"check_inplace({arg.name}, _any_requires_grad);" + for arg in differentiable_outputs + ] + + def emit_fw_derivatives() -> list[str]: + content: list[str] = [] + fw_grad_setters: list[str] = [] + for derivative in fw_derivatives: + res = derivative.var_names + if f.func.name.name.inplace: + if len(res) != 1: + raise AssertionError( + f"Expected number of outputs to be 1 if function is inplace, got {len(res)}" + ) + # TODO update this when inplace namings are unified + res = ("self",) + + if derivative.required_inputs_fw_grad is None: + raise AssertionError("derivative.required_inputs_fw_grad is None") + + unpacked_arguments = "" + for inp in differentiable_inputs: + inp_name = inp.name + is_input_tensorlist = is_foreach and is_tensor_list_type( + inp.type + if not inplace + else refargname2inplace_foreacharg[inp.name].type + ) + input_suffix = "[i]" if is_input_tensorlist else "" + if is_inplace_foreach: + if inp.name in refargname2inplace_foreacharg: + inp_name = refargname2inplace_foreacharg[inp.name].name + zeros_fn = ( + "zeros_symint" + if inplace and inp.name == "self" + else "_efficientzerotensor_symint" + ) + if inp.name in derivative.required_inputs_fw_grad: + unpacked_arguments += ( + FW_DERIVATIVE_DEFINED_GRAD_TEMPLATE.substitute( + inp_name=inp.name, + inp=inp_name + input_suffix, + zeros_fn=zeros_fn, + ) + ) + if zeros_fn == "_efficientzerotensor_symint": + unpacked_arguments += ( + FW_DERIVATIVE_UPDATE_WRAPPED_NUM_TEMPLATE.substitute( + inp_name=inp.name + ) + ) + + if inp.name in (derivative.required_inputs_primal or []): + unpacked_arguments += ( + FW_DERIVATIVE_DEFINED_PRIMAL_TEMPLATE.substitute( + inp_name=inp.name, + inp=inp_name + input_suffix, + ) + ) + if derivative.required_original_self_value: + input_suffix = "s[i]" if is_inplace_foreach else "" + unpacked_arguments += FW_DERIVATIVE_DEFINED_GRAD_TEMPLATE.substitute( + inp_name="original_self", + inp="original_self" + input_suffix, + # pyrefly: ignore [unbound-name] + zeros_fn=zeros_fn, + ) + unpacked_arguments += FW_DERIVATIVE_DEFINED_PRIMAL_TEMPLATE.substitute( + inp_name="original_self", + inp="original_self" + input_suffix, + ) + elif inplace and derivative.is_reusing_outplace_formula: + # The gradient wasn't already cloned, do it if grad mode is enabled + unpacked_arguments += ( + "self_t = GradMode::is_enabled() ? self_t.clone() : self_t;" + ) + + if inplace: + is_inplace_str = "true" + else: + is_inplace_str = "false" + + requires_fw_grad = get_any_has_forward_grad_name(derivative.var_names) + + if all( + (isinstance(var_type, BaseType) and var_type.is_tensor_like()) + for var_type in derivative.var_types + ): + # Is there a way to get from BaseType to BaseCType + if len(derivative.var_types) == 1: + opt_res_grad_type = OptionalCType(BaseCType(tensorT)).cpp_type() + if not is_foreach: + fw_grad_setters.append( + FW_DERIVATIVE_SETTER_TENSOR.substitute( + out_arg=res[0], is_inplace=is_inplace_str + ) + ) + else: + expected_res = "result" if not inplace else "self" + if res[0] != expected_res: + raise AssertionError( + f"res[0] is {res[0]}, expected {expected_res}" + ) + fw_grad_setters.append( + FW_DERIVATIVE_SETTER_TENSOR_FOREACH.substitute( + out_arg=res[0], is_inplace=is_inplace_str + ) + ) + requires_fw_grad += f" && ({derivative.var_names[0]}.defined())" + else: + tuple_type = TupleCType( + [BaseCType(tensorT)] * len(derivative.var_types) + ) + opt_res_grad_type = OptionalCType(tuple_type).cpp_type() + for idx, single_res in enumerate(res): + fw_grad_setters.append( + FW_DERIVATIVE_SETTER_MULTI_OUTPUT.substitute( + idx=idx, all_res="_".join(res), out_arg=single_res + ) + ) + elif ( + isinstance(derivative.var_types[0], ListType) + and derivative.var_types[0].is_tensor_like() + ): + if len(derivative.var_types) != 1: + raise AssertionError( + f"Expected number of outputs to be 1 if function returns ListType, got {len(derivative.var_types)}" + ) + if not is_foreach: + opt_res_grad_type = OptionalCType( + VectorCType(BaseCType(tensorT)) + ).cpp_type() + fw_grad_setters.append( + FW_DERIVATIVE_SETTER_TENSOR_LIST.substitute( + out_arg=res[0], is_inplace=is_inplace_str + ) + ) + else: + # TODO(crcrpar): Should this (= the foreach specific logic) be refactored somehow? + # Only out-place foreach functions that have entries in `tools/autograd/derivatives.yaml` + # can reach here. + opt_res_grad_type = OptionalCType(BaseCType(tensorT)).cpp_type() + fw_grad_setters.append( + FW_DERIVATIVE_SETTER_TENSOR_FOREACH.substitute( + out_arg=res[0], is_inplace=is_inplace_str + ) + ) + else: + raise RuntimeError("Unsupported output type for forward derivative") + + if not is_foreach: + fw_grad_opt_definition = f"{opt_res_grad_type} {'_'.join(res)}_new_fw_grad_opt = ::std::nullopt;" + # View ops create fw_grad that already is a view of the base's fw_grad so just use that + content.append( + FW_DERIVATIVE_TEMPLATE.substitute( + fw_grad_opt_definition=fw_grad_opt_definition, + requires_fw_grad=requires_fw_grad, + formula=derivative.formula, + out_arg="_".join(res), + unpacked_arguments=unpacked_arguments, + ) + ) + else: + # note(crcrpar): Assuming `self` is TensorList. + fw_grad_opt_definition = ( + f"std::vector<{opt_res_grad_type}> {'_'.join(res)}_new_fw_grad_opts" + "(self.size(), ::std::nullopt);" + ) + foreach_forward_grad_formula = derivative.formula + _foreach_arg: Argument | DifferentiableInput + if inplace: + for _foreach_arg, _ref_arg in inplace_foreacharg2refarg.items(): + # note(crcrpar): Massage only Scalar and ArrayRef here. + if not ( + is_tensor_type(_foreach_arg.type) + or is_tensor_list_type(_foreach_arg.type) + ): + pattern = _foreach_arg.name + if isinstance(_foreach_arg.type, ListType): + pattern += "[i]" + foreach_forward_grad_formula = ( + foreach_forward_grad_formula.replace( + _ref_arg.name, pattern + ) + ) + else: + if ( + "result" in foreach_forward_grad_formula + and "result[i]" not in foreach_forward_grad_formula + ): + foreach_forward_grad_formula = ( + foreach_forward_grad_formula.replace("result", "result[i]") + ) + + content.append( + FW_DERIVATIVE_FOREACH_TEMPLATE.substitute( + fw_grad_opt_definition=fw_grad_opt_definition, + vector_of_optional_tensor=f"{'_'.join(res)}_new_fw_grad_opts", + any_has_forward_grad_for_current_index=" || ".join( + get_any_has_forward_grad_name(derivative.var_names) + "[i]" + for derivative in fw_derivatives + ), + formula=foreach_forward_grad_formula, + unpacked_arguments=unpacked_arguments, + ) + ) + + # Set all the grads at the end to avoid: https://github.com/pytorch/pytorch/issues/67367 + content.append("\n".join(fw_grad_setters)) + return content + + def get_any_has_fw_grad_cond(derivative: ForwardDerivative | None) -> str: + # + # Produces a condition string (e.g, "isFwGradDefined(grad_output) || isFwGradDefined(output)") + # + if derivative is None: + # (1) If a derivative is NOT provided, cond will check fw_grad of ALL differentiable inputs + # - Used in the out_fn case when we want to forbid fw derivatives + # - Used in the case where the fw_derivative is not defined, but we want + # To check if there is a decomposition registered for jvp + to_check: list[str] = [] + for inp in list( + mapMaybe( + gen_differentiable_input, + f.func.arguments.non_out + list(f.func.arguments.out), # type: ignore[operator] + ) + ): + if is_tensor_type(inp.type): + to_check.append( + FW_DERIVATIVE_CHECK_TEMPLATE.substitute(req_inp=inp.name) + ) + elif is_tensor_list_type(inp.type): + to_check.append( + FW_DERIVATIVE_TENSORLIST_CHECK_TEMPLATE.substitute( + req_inp=inp.name + ) + ) + else: + raise RuntimeError( + f'Unsupported input type for "{name}" when forbidding forward AD usage.' + ) + return f"({' || '.join(to_check)})" + else: + # (2) If derivative is provided, use that information to determine which inputs + # to check fw_grad for + if derivative.required_inputs_fw_grad is None: + raise AssertionError("derivative.required_inputs_fw_grad is None") + + if len(derivative.required_inputs_fw_grad) == 0: + # Handle functions like stack + # For these, we don't unpack anything and always call the user function + if not ( + len(differentiable_inputs) == 1 + and is_tensor_list_type(differentiable_inputs[0].type) + ): + raise RuntimeError( + f'No differentiable input to "{name}" is a differentiable Tensor (as the provided ' + "forward AD formula does not use any input tangent) even though a forward gradient " + "formula has been defined for it. This case should only happen for function that " + "take a single TensorList as input. All other cases are not supported right now." + ) + any_has_fw_grad = "true" + else: + any_has_fw_grad = " || ".join( + [ + ( + FW_DERIVATIVE_TENSORLIST_CHECK_TEMPLATE + if is_tensor_list_type(inp.type) + else FW_DERIVATIVE_CHECK_TEMPLATE + ).substitute(req_inp=inp.name) + for inp in differentiable_inputs + if inp.name in derivative.required_inputs_fw_grad + ] + ) + any_has_fw_grad = f"({any_has_fw_grad})" + + return any_has_fw_grad + + def emit_forbid_fw_derivatives(is_out_fn: bool = False) -> str: + if is_out_fn: + msg = "because it is an out= function" + else: + msg = ( + "because it has not been implemented yet.\\nPlease file an issue " + "to PyTorch at https://github.com/pytorch/pytorch/issues/new?template=feature-request.yml " + "so that we can prioritize its implementation." + ) + cond = get_any_has_fw_grad_cond(derivative=None) + return ( + FW_DERIVATIVE_FORBID_TEMPLATE.substitute(cond=cond, name=name, msg=msg) + if cond != "" + else "" + ) + + body: list[str] = [] + unpack_args_stats, unpacked_bindings = unpack_args(f) + + body.extend(unpack_args_stats) + if requires_derivative: + body.extend(emit_any_requires_grad()) + body.extend(emit_any_has_forward_grad()) + body.extend(emit_check_inplace()) + body.extend(emit_original_self_definition()) + body.extend(setup_derivative(differentiable_inputs)) + + body.append(emit_call(f, unpacked_bindings, try_jit_decomposition)) + if requires_derivative: + # set_flags has to appear after version_counter, because rebase_history + # requires that the counter is incremented before it is called + body.append(emit_history()) + body.extend(emit_check_if_in_complex_autograd_allowlist()) + + if is_out_fn: + body.append(emit_forbid_fw_derivatives(is_out_fn=True)) + else: + if requires_derivative and not try_jit_decomposition: + if len(fw_derivatives) > 0: + body.extend(emit_fw_derivatives()) + else: + body.append(emit_forbid_fw_derivatives()) + + if requires_derivative: + # Save only after the forward AD has been set up + body.append(emit_save_outputs()) + + if str(f.func.name.name) in RESET_GRAD_ACCUMULATOR: + # `inplace` implies that there is exactly one output named `self`, + # so we can keep the generated code easy. If you need to + # `reset_grad_accumulator` in an operator that's not `inplace`, you can + # remove this check but the code generation will get more elaborate + if not inplace: + raise AssertionError( + f"expected inplace=True for {f.func.name.name} which is in RESET_GRAD_ACCUMULATOR" + ) + body.append("reset_grad_accumulator(self);") + if not returns_void: + body.append(f"return {get_return_value(f)};") + return body diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/gen_view_funcs.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/gen_view_funcs.py new file mode 100644 index 0000000000000000000000000000000000000000..146bee193a6c9cb6abb86582f75fb660dc1d67ea --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/gen_view_funcs.py @@ -0,0 +1,342 @@ +# Generates ViewFuncs.h/cpp +# +# NOTE: If any changes are being made to the ViewFunc codegen please also check +# if updates are needed in torch/csrc/autograd/autograd_not_implemented_fallback.cpp +# The fallback is expected to mimic this codegen, so we should keep the two in sync. + +from __future__ import annotations + +from typing import TYPE_CHECKING + +import torchgen.api.dispatcher as dispatcher +from torchgen.api.translate import translate +from torchgen.api.types import ( + BaseCType, + Binding, + NamedCType, + SymIntT, + tensorT, + VectorCType, +) +from torchgen.code_template import CodeTemplate +from torchgen.model import Argument, NativeFunction, OptionalType +from torchgen.utils import FileManager + +from .gen_inplace_or_view_type import ( + CALL_DISPATCH, + extract_bindings, + get_view_info, + modifies_arguments, + use_derived, +) + + +if TYPE_CHECKING: + from torchgen.api.autograd import NativeFunctionWithDifferentiabilityInfo + + +FUNCTION_DECLARATION = CodeTemplate( + """\ +#define ${uppercase_op}_AVAILABLE +struct ${op} : public ${superclass} { + ${op}(${constructor_args}) ${initializer_list} + {} + virtual ~${op}() override = default; + virtual std::vector get_symints() const override; + virtual size_t num_symints() const override; + virtual std::vector get_tensors() const override; + virtual size_t num_tensors() const override; + virtual at::Tensor operator()(const at::Tensor&) const override; + virtual std::unique_ptr clone_and_set( + std::optional> = ::std::nullopt, + std::optional> = ::std::nullopt) const override; + +protected: + virtual void set_symints(std::vector) override; + virtual void set_tensors(std::vector) override; + +private: + ${state} +}; + +""" +) + +FUNCTION_DEFINITION = CodeTemplate( + """\ +std::vector ${op}::get_symints() const { + ${get_symints} +} + +size_t ${op}::num_symints() const { + return static_cast(${num_symints}); +} + +void ${op}::set_symints(std::vector ${symints_vec}) { + TORCH_INTERNAL_ASSERT(${symints_vec}.size() == num_symints()); + ${set_symints} +} + +std::vector ${op}::get_tensors() const { + ${get_tensors} +} + +size_t ${op}::num_tensors() const { + return static_cast(${num_tensors}); +} + +void ${op}::set_tensors(std::vector ${tensors_vec}) { + TORCH_INTERNAL_ASSERT(${tensors_vec}.size() == num_tensors()); + ${set_tensors} +} + +at::Tensor ${op}::operator()(const at::Tensor& ${call_input_name}) const { + return ${op_call}; +} + +std::unique_ptr ${op}::clone_and_set( + std::optional> ${symints_vec}, + std::optional> ${tensors_vec}) const { + auto output = std::make_unique<${op}>(${clone_args}); + if (${symints_vec}.has_value()) { + output->set_symints(std::move(*(${symints_vec}))); + } + if (${tensors_vec}.has_value()) { + output->set_tensors(std::move(*(${tensors_vec}))); + } + return output; +} + +""" +) + + +# e.g. as_strided -> AsStridedViewFunc for camel case or +# as_strided_view_func otherwise +def view_func_name( + f: NativeFunction, include_namespace: bool = False, camel_case: bool = True +) -> str: + name = f.func.name.unambiguous_name() + view_func_name = f"{name.replace('.', '_')}_view_func" + if camel_case: + is_private = view_func_name.startswith("_") + view_func_name = "".join( + [p.title() for p in view_func_name.replace(".", "_").split("_")] + ) + if is_private: + # put the leading underscore back in + view_func_name = f"_{view_func_name}" + namespace = "torch::autograd::generated::" if include_namespace else "" + return f"{namespace}{view_func_name}" + + +def is_symint_or_tensor(arg: Argument) -> bool: + return arg.type.is_tensor_like() or arg.type.is_symint_like() + + +def remove_const_ref(binding: Binding) -> Binding: + return Binding( + name=binding.name, + nctype=binding.nctype.remove_const_ref(), + argument=binding.argument, + default=binding.default, + ) + + +def returns_multi_tensor(fn: NativeFunction) -> bool: + returns = fn.func.returns + if len(returns) != 1: + raise AssertionError(f"Expected 1 return, got {len(returns)}") + returns_list_like = returns[0].type.is_list_like() is not None + returns_tensor_like = returns[0].type.is_tensor_like() + return returns_list_like and returns_tensor_like + + +# Generates strings with logic for getting / setting state of a particular type. +# +# Args: +# bindings (list): List of state bindings of interest (may be empty) +# state_vec_type (NamedCType): Type of vector to either return or copy from +# +# Returns: +# tuple: (list of getter logic strings, list of setter logic strings, string +# with num items expression) +def generate_state_getter_setter( + bindings: list[Binding], + state_vec_type: NamedCType, +) -> tuple[list[str], list[str], str]: + getter_logic = [] + setter_logic = [] + + state_vec = state_vec_type.name + getter_logic.append(f"{state_vec_type.cpp_type()} {state_vec};") + if len(bindings) > 0: + setter_logic.append("auto i = 0;") + + num_exprs = [] + for i, b in enumerate(bindings): + if not isinstance(b.argument, Argument): + raise AssertionError(f"Expected Argument, got {type(b.argument)}") + if b.argument.type.is_list_like(): + # Handle list-likes. + num_expr = f"{b.name}.size()" + num_exprs.append(num_expr) + getter = f"{state_vec}.insert({state_vec}.end(), {b.name}.begin(), {b.name}.end());" + setter = f"std::copy({state_vec}.begin() + i, {state_vec}.begin() + i + {b.name}.size(), {b.name}.begin());" + elif isinstance(b.argument.type, OptionalType): + # Handle optionals. + num_expr = f"({b.name}.has_value() ? 1 : 0)" + num_exprs.append(num_expr) + conditional = f"if({b.name}.has_value())" + getter = ( + f"{conditional} {state_vec}.insert({state_vec}.end(), *({b.name}));" + ) + setter = f"{conditional} {b.name} = {state_vec}[i];" + else: + num_expr = "1" + num_exprs.append(num_expr) + getter = f"{state_vec}.push_back({b.name});" + setter = f"{b.name} = {state_vec}[i];" + + getter_logic.append(getter) + setter_logic.append(setter) + if i < len(bindings) - 1: + setter_logic.append(f"i += {num_expr};") + + # Reserve / assert based on the total number of items expression. + num_items = "0" if len(num_exprs) == 0 else " + ".join(num_exprs) + if len(bindings) > 0: + getter_logic.insert(1, f"{state_vec}.reserve({num_items});") + + getter_logic.append(f"return {state_vec};") + + return getter_logic, setter_logic, num_items + + +def process_function(fn: NativeFunction, template: CodeTemplate) -> str: + bindings = extract_bindings(fn) + non_self_bindings = [b for b in bindings if b.name != "self"] + + non_self_args = fn.func.arguments.flat_all[1:] + non_self_value_bindings = [ + dispatcher.argument(a, remove_non_owning_ref_types=True) for a in non_self_args + ] + + # Generate constructor / clone args for the generated struct. + constructor_args = [b.defn() for b in non_self_bindings] + clone_args = [b.name for b in non_self_bindings] + + # Generate state variable declarations for the generated struct. + state_variables = [ + f"{remove_const_ref(b).defn()};" for b in non_self_value_bindings + ] + + # Generate initializer list expressions for the generated struct. + # allow_expensive_conversions=True because we need to store e.g. SymIntArrayRefs as + # vectors. + init_exprs = translate( + non_self_bindings, non_self_value_bindings, allow_expensive_conversions=True + ) + initializers = [] + for b, init_expr in zip(non_self_bindings, init_exprs): + name = b.nctype.name + if not isinstance(name, str): + raise AssertionError(f"Expected name to be str, got {type(name)}") + initializers.append(f"{name}({init_expr.expr})") + + # Generate call to underlying view op + call_input_name = "input_base" + op_call_args = [call_input_name, *(b.name for b in non_self_bindings)] + op_call = CALL_DISPATCH.substitute( + unambiguous_name=fn.func.name.unambiguous_name(), + unpacked_args=op_call_args, + ) + + # Multi-output views additionally require a view_idx for disambiguation. + if returns_multi_tensor(fn): + view_idx_name = "view_idx" + view_idx_typename = "int64_t" + view_idx_decl = f"{view_idx_typename} {view_idx_name}" + constructor_args.append(view_idx_decl) + clone_args.append(view_idx_name) + state_variables.append(f"{view_idx_decl};") + initializers.append(f"{view_idx_name}({view_idx_name})") + op_call += f"[{view_idx_name}]" + + # Generate initializer list for the generated struct. + initializer_list = f": {', '.join(initializers)}" if len(initializers) > 0 else "" + + # Generate getter / setter logic for any symints. + symint_bindings = [ + b + for b in non_self_bindings + if isinstance(b.argument, Argument) and b.argument.type.is_symint_like() + ] + symints_vec_type = NamedCType("symints", VectorCType(BaseCType(SymIntT))) + get_symints, set_symints, num_symints = generate_state_getter_setter( + symint_bindings, symints_vec_type + ) + + # Generate getter / setter logic for any tensors. + tensor_bindings = [ + b + for b in non_self_bindings + if isinstance(b.argument, Argument) and b.argument.type.is_tensor_like() + ] + tensors_vec_type = NamedCType("tensors", VectorCType(BaseCType(tensorT))) + get_tensors, set_tensors, num_tensors = generate_state_getter_setter( + tensor_bindings, tensors_vec_type + ) + + return template.substitute( + op=view_func_name(fn), + uppercase_op=view_func_name(fn, camel_case=False).upper(), + superclass="torch::autograd::ViewFunc", + initializer_list=initializer_list, + state=state_variables, + constructor_args=constructor_args, + clone_args=clone_args, + symints_vec=symints_vec_type.name, + get_symints=get_symints, + set_symints=set_symints, + num_symints=num_symints, + tensors_vec=tensors_vec_type.name, + get_tensors=get_tensors, + set_tensors=set_tensors, + num_tensors=num_tensors, + call_input_name=call_input_name, + op_call=op_call, + ) + + +def gen_view_funcs( + out: str, + fns_with_infos: list[NativeFunctionWithDifferentiabilityInfo], + template_path: str, +) -> None: + # don't need the info parts, just the function + fns = [fn.func for fn in fns_with_infos if use_derived(fn)] + # only want out-of-place views + view_fns = [ + fn for fn in fns if get_view_info(fn) is not None and not modifies_arguments(fn) + ] + + declarations = [process_function(fn, FUNCTION_DECLARATION) for fn in view_fns] + definitions = [process_function(fn, FUNCTION_DEFINITION) for fn in view_fns] + ops_headers = [f"#include " for fn in view_fns] + + file_basename = "ViewFuncs" + fm = FileManager(install_dir=out, template_dir=template_path, dry_run=False) + for suffix in [".h", ".cpp"]: + fname = file_basename + suffix + fm.write_with_template( + fname, + fname, + lambda: { + "generated_comment": "@" + + f"generated from {fm.template_dir_for_comments()}/{fname}", + "view_func_declarations": declarations, + "view_func_definitions": definitions, + "ops_headers": ops_headers, + }, + ) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/load_derivatives.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/load_derivatives.py new file mode 100644 index 0000000000000000000000000000000000000000..e35f66dbe173a283ce7ab1157b3839202b19e3c4 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/load_derivatives.py @@ -0,0 +1,1044 @@ +# Parses derivatives.yaml into autograd functions +# +# Each autograd function is represented by `DifferentiabilityInfo` containing +# a list of `Derivative`. See `torchgen.api.autograd` for the data models. + +from __future__ import annotations + +import re +from collections import Counter, defaultdict +from typing import Any, TYPE_CHECKING + +import yaml + +from torchgen.api import cpp +from torchgen.api.autograd import ( + Derivative, + DifferentiabilityInfo, + ForwardDerivative, + SavedAttribute, +) +from torchgen.api.types import ( + BaseCType, + Binding, + boolT, + CppSignatureGroup, + layoutT, + longT, + NamedCType, + OptionalCType, + scalarTypeT, + SpecialArgName, + stringT, + symIntArrayRefT, + SymIntT, + tensorGeometryT, + tensorOptionsT, + typeAndSizeT, + VectorCType, +) +from torchgen.context import with_native_function +from torchgen.gen import get_grouped_by_view_native_functions, parse_native_yaml +from torchgen.model import ( + AUTOGRAD_KEYS, + FunctionSchema, + NativeFunction, + NativeFunctionsViewGroup, + OperatorName, + SchemaKind, + Type, + Variant, +) +from torchgen.utils import concatMap, IDENT_REGEX, split_name_params +from torchgen.yaml_utils import YamlLoader + + +if TYPE_CHECKING: + from collections.abc import Sequence + + +DerivativeRet = tuple[dict[FunctionSchema, dict[str, DifferentiabilityInfo]], set[str]] + +_GLOBAL_LOAD_DERIVATIVE_CACHE: dict[tuple[str, str], DerivativeRet] = {} + +_VALID_AUTOGRAD_KEYS = set(AUTOGRAD_KEYS) + + +# This function directly adds per-dispatchkey derivative entries for {view}_copy variants of each view op. +# Since every {view} and {view}_copy op shares the same derivative formula, +# we generate them here instead of duplicating them in the yaml. +# See Note [Codegen'd {view}_copy Operators] +def add_view_copy_derivatives( + infos: dict[FunctionSchema, dict[str, DifferentiabilityInfo]], + view_groups: list[NativeFunctionsViewGroup], +) -> None: + # Get the map from each view op's name to its corresponding view group + view_name_to_group: dict[OperatorName, NativeFunctionsViewGroup] = { + g.view.func.name: g for g in view_groups + } + + view_infos = {} + + for info_dispatch_dict in infos.values(): + # maybe_view_group only needs to be calculated once per info_dispatch_dict + maybe_view_group = None + view_copy_differentiability_infos = {} + for dispatch_key, info in info_dispatch_dict.items(): + maybe_view_group = view_name_to_group.get(info.func.func.name, None) + if maybe_view_group is not None and maybe_view_group.view_copy is not None: + view_copy_info = info.create_view_copy_from_view_derivative( + maybe_view_group + ) + if view_copy_info is not None: + fn_schema = view_copy_info.func.func + view_copy_differentiability_infos[dispatch_key] = view_copy_info + else: + break + # prefer manually-defined derivatives if any + # pyrefly: ignore [unbound-name] + if len(view_copy_differentiability_infos) > 0 and fn_schema not in infos: + # pyrefly: ignore [unbound-name] + if fn_schema is None: + raise AssertionError("Expected fn_schema to be non-None") + # pyrefly: ignore [unbound-name] + view_infos[fn_schema] = view_copy_differentiability_infos + + infos.update(view_infos) + + +def load_derivatives( + derivatives_yaml_path: str, native_yaml_path: str, tags_yaml_path: str +) -> DerivativeRet: + # Do some caching as this is a deterministic function + global _GLOBAL_LOAD_DERIVATIVE_CACHE + key = (derivatives_yaml_path, native_yaml_path) + if key not in _GLOBAL_LOAD_DERIVATIVE_CACHE: + with open(derivatives_yaml_path) as f: + definitions = yaml.load(f, Loader=YamlLoader) + + funcs = parse_native_yaml(native_yaml_path, tags_yaml_path).native_functions + # From the parsed native functions, separate out the (generated) view_copy functions, + # so we can generate derivatives for them separately. + native_functions_with_view_groups = get_grouped_by_view_native_functions(funcs) + native_functions = concatMap( + lambda g: [g] + if isinstance(g, NativeFunction) + else list(g.functions(include_copy=True)), + native_functions_with_view_groups, + ) + view_groups = [ + g + for g in native_functions_with_view_groups + if isinstance(g, NativeFunctionsViewGroup) + ] + + # What's the difference between function schema v.s. signature? + # function schema is the complete declaration including mutability annotation / default value and etc. + # signature is the canonical schema for a group of functions (in-place/out/functional variants) + # that are semantically related. + functions_by_signature: dict[FunctionSchema, list[NativeFunction]] = ( + defaultdict(list) + ) + functions_by_schema: dict[str, NativeFunction] = {} + for function in native_functions: + functions_by_signature[function.func.signature()].append(function) + if str(function.func) in functions_by_schema: + raise AssertionError(f"Duplicate function schema: {str(function.func)}") + functions_by_schema[str(function.func)] = function + + # Keep track of how many of which ops we've seen so we can + # disambiguate them with a numeric suffix. + op_counter = Counter[str]() + + # infos is a dict that maps FunctionSchema -> a dict of per dispatch key DifferentiabilityInfos + # this is useful because in tools/autograd/gen_autograd.py:match_differentiability_info + # we ultimately need to categorize the DifferentiabilityInfos by FunctionSchema + infos: dict[FunctionSchema, dict[str, DifferentiabilityInfo]] = {} + used_dispatch_keys: set[str] = set() + for defn_dict in definitions: + # Ensure that the old derivatives.yaml schema with no dispatch key can be loaded. + if "dispatch" not in defn_dict: + specification = defn_dict.pop("name") + output_differentiability = defn_dict.pop( + "output_differentiability", None + ) + defn_dict = {"name": specification, "dispatch": {"Default": defn_dict}} + if output_differentiability: + defn_dict["output_differentiability"] = output_differentiability + name, per_dispatch_diffinfos = create_differentiability_info( + defn_dict, + functions_by_signature, + functions_by_schema, + op_counter, + used_dispatch_keys, + ) + infos[name] = per_dispatch_diffinfos + + add_view_copy_derivatives(infos, view_groups) + + # cache both loaded infos as well a a set of all the dispatch_keys/aliases + # that appear in derivatives.yaml. used_dispatch_keys is useful for generating + # VariableType.cpp where we need a TORCH_LIBRARY_IMPL for every autograd dispatch key used + _GLOBAL_LOAD_DERIVATIVE_CACHE[key] = infos, used_dispatch_keys + + return _GLOBAL_LOAD_DERIVATIVE_CACHE[key] + + +# TODO: Why is this going through CppSignatureGroup, that doesn't make sense... +@with_native_function +def cpp_arguments(f: NativeFunction) -> Sequence[Binding]: + sigs = CppSignatureGroup.from_native_function(f, method=False) + if sigs.symint_signature is not None: + return sigs.symint_signature.arguments() + else: + return sigs.signature.arguments() + + +def create_derivative( + f: NativeFunction, + formula: str, + var_names: tuple[str, ...], + available_named_gradients: Sequence[str], +) -> Derivative: + original_formula = formula + arguments: list[NamedCType] = [ + a.nctype.remove_const_ref() for a in cpp_arguments(f) + ] + + return_names = tuple(n if n != "self" else "result" for n in cpp.return_names(f)) + return_types = tuple( + cpp.return_type(r, symint=True).remove_const_ref() for r in f.func.returns + ) + + named_returns = [ + NamedCType(name, type) for name, type in zip(return_names, return_types) + ] + + formula, saved_inputs = saved_variables(formula, arguments, var_names) + formula, saved_outputs = saved_variables(formula, named_returns, var_names) + + used_named_gradients = { + name + for name in available_named_gradients + if re.search(IDENT_REGEX.format(name), formula) + } + + # Check that the referenced derivatives in the formula are in bounds + for i in used_gradient_indices(formula): + if i >= len(f.func.returns): + raise RuntimeError( + f"Out of bounds grads access: derivative formula for {cpp.name(f.func)} " + f"used grads[{i}], but the forward only returns {len(f.func.returns)} outputs." + ) + + return Derivative( + formula=formula, + original_formula=original_formula, + var_names=var_names, + saved_inputs=saved_inputs, + saved_outputs=saved_outputs, + named_gradients=used_named_gradients, + ) + + +def create_forward_derivative( + f: NativeFunction, formula: str, names: tuple[str, ...] +) -> ForwardDerivative: + var_names = names + var_types: tuple[Type, ...] | None = None + for r in f.func.returns: + if r.name in var_names: + if var_types is None: + var_types = () + var_types = var_types + (r.type,) + + # Handle default return names + if var_types is None: + if var_names == ("result",): + if len(f.func.returns) != 1: + raise AssertionError( + f"Expected 1 return for 'result', got {len(f.func.returns)}" + ) + var_types = (f.func.returns[0].type,) + else: + for var_name in var_names: + res = re.findall(r"^result(\d+)$", var_name) + if len(res) == 1: + if var_types is None: + var_types = () + arg_idx = int(res[0]) + var_types = var_types + (f.func.returns[arg_idx].type,) + + if var_types is None: + raise AssertionError("No matching output for forward derivative definition") + return ForwardDerivative( + formula=formula, + var_names=var_names, + var_types=var_types, + required_inputs_fw_grad=None, + required_inputs_primal=None, + required_original_self_value=False, + is_reusing_outplace_formula=False, + ) + + +def postprocess_forward_derivatives( + f: NativeFunction, + defn_name: str, + all_arg_names: list[str], + derivatives: list[Derivative], + forward_derivatives: list[ForwardDerivative], + args_with_derivatives: Sequence[Binding], +) -> list[ForwardDerivative]: + def find_required_inputs(formula: str, postfix: str) -> tuple[str, ...]: + is_foreach = f.func.name.name.base.startswith("_foreach_") + required_inputs = set() + for arg in args_with_derivatives: + if ( + arg.type in ("at::TensorList", "const at::ITensorListRef &") + and not is_foreach + ): + # The functions taking TensorList handle everything internally + continue + arg_name = arg.name + + found = re.search(IDENT_REGEX.format(arg_name), formula) + if found: + raise RuntimeError( + f"The forward formula for {defn_name} is using the base name of the {arg_name} " + f"argument which is ambiguous. You should use {arg_name}_p to access the primal " + f"value and {arg_name}_t to access the tangent." + ) + + found = re.search(IDENT_REGEX.format(arg_name + postfix), formula) + if found: + required_inputs.add(arg_name) + + return tuple(required_inputs) + + updated_derivatives: list[ForwardDerivative] = [] + + for defn in forward_derivatives: + formula = defn.formula + required_inputs_tangent = find_required_inputs(formula, "_t") + if formula == "auto_element_wise": + if f.func.kind() == SchemaKind.inplace: + raise AssertionError( + f"Cannot use auto_element_wise with {f.func.name} because it is an in-place variant" + ) + if ( + (not len(args_with_derivatives) == 1) + or len(forward_derivatives) > 1 + or len(forward_derivatives[0].var_names) > 1 + ): + raise RuntimeError( + f"Derivative definition of {defn_name} in derivatives.yaml defines the " + "forward definition of gradient as element_wise but this only " + "works for functions with a single differentiable input and a " + "single differentiable output." + ) + if not len(derivatives) == 1: + raise RuntimeError( + f"Derivative definition of {defn_name} in derivatives.yaml defines the " + "forward definition of gradient as element_wise but it does not " + "defines the gradient formula for its argument which is required." + ) + # This transformation is based on the observation that for element-wise functions, the Jacobian + # matrix is diagonal and thus doing J * v is the same as (v^T J)^T (in practice, we ignore the transpositions) + # For the complex case, we use hermitian transpose and get (v.conj() J).conj() + # So here we are going to reuse the backward formula and replace two things: + # 1) all occurrences of "grad" with "foo_t.conj()", where foo is the name of the unique differentiable input. + # 2) all usage of an original input "foo" with its primal value "foo_p". + # 3) conjugate the final result + # For example, for abs, the backward formula is: + # grad * self.sgn() + # And this function generates a forward formula that is: + # (self_t.conj() * self_p.sgn()).conj() + + backward_formula = derivatives[0].original_formula + input_name = args_with_derivatives[0].name + + # Do replacement 1) of the grad + def repl(m: Any) -> str: + return f"{m.group(1)}{input_name}_t.conj(){m.group(2)}" + + fw_formula = re.sub(IDENT_REGEX.format("grad"), repl, backward_formula) + + # Do replacement 2) of the input variables + for arg in args_with_derivatives: + arg_name = arg.name + + def repl(m: Any) -> str: + return f"{m.group(1)}{arg_name}_p{m.group(2)}" + + fw_formula = re.sub(IDENT_REGEX.format(arg_name), repl, fw_formula) + + # Do the final conjugate 3) + fw_formula = f"({fw_formula}).conj()" + + # Since there is a single differentiable inputs and we necessarily need its tangent we can + # simply require all differentiable input's tangent. + required_inputs_tangent = tuple(all_arg_names) + formula = fw_formula + elif formula == "auto_linear": + if ( + len(forward_derivatives) > 1 + or len(forward_derivatives[0].var_names) > 1 + ): + raise RuntimeError( + f"Derivative definition of {defn_name} in derivatives.yaml defines the " + "forward definition of gradient as linear but this only works " + "for functions with a single differentiable output." + ) + # This transformation is based on the observation that linear functions can be written as: + # y = f(x) = A * x + # For some matrix A and the Jacobian of the function f is also A. + # So doing J * v = A * v = f(v). + # Hence to do the jvp, we simply need to evaluate the function at the point v instead of x. + # We do this by calling the forward again by replacing any occurrence of the differentiable + # input "foo" by it's tangent "foo_t". + # Note that multiple inputs are not a problem as long as the function is truly linear wrt to + # the vector where all the differentiable inputs are stacked. + + diff_arg_names = [arg.name for arg in args_with_derivatives] + if len(diff_arg_names) == 0: + raise AssertionError("Expected at least one differentiable argument") + + # Do replacement of input variables + new_args = [] + for arg_name in all_arg_names: + if arg_name in diff_arg_names: + arg_name = arg_name + "_t" + # pyrefly: ignore [bad-argument-type] + new_args.append(arg_name) + + # TODO we are trolling + if f.func.has_symint(): + defn_name += "_symint" + + # Call into the forward again. We need two cases here to handle both Tensor methods and at:: functions. + if Variant.function in f.variants: + fw_formula = f"at::{defn_name}({', '.join(new_args)})" + else: + if Variant.method not in f.variants: + raise AssertionError( + f"Expected Variant.method in variants for {f.func.name}" + ) + fw_formula = f"{new_args[0]}.{defn_name}({', '.join(new_args[1:])})" + + # All of the input tangents are always used so all of them are required here. + required_inputs_tangent = tuple(diff_arg_names) + formula = fw_formula + + # At this point, the formula is final and is not modified anymore. + + # During forward formula, we use the primal instead of the input Tensors. + # This call inspects the formula to find for which input's primal are used. + required_inputs_primal = find_required_inputs(formula, "_p") + + updated_derivatives.append( + ForwardDerivative( + formula=formula, + var_names=defn.var_names, + var_types=defn.var_types, + required_inputs_fw_grad=required_inputs_tangent, + required_inputs_primal=required_inputs_primal, + required_original_self_value=False, + is_reusing_outplace_formula=False, + ) + ) + + return updated_derivatives + + +def is_forward_derivative_definition( + all_arg_names: list[str], names: tuple[str, ...] +) -> bool: + for name in names: + return name not in all_arg_names + raise RuntimeError("Expected `names` to be non-empty") + + +def create_differentiability_info( + defn_dict: dict[Any, Any], + functions_by_signature: dict[FunctionSchema, list[NativeFunction]], + functions_by_schema: dict[str, NativeFunction], + op_counter: Counter[str], + used_dispatch_keys: set[str], +) -> tuple[FunctionSchema, dict[str, DifferentiabilityInfo]]: + """Processes a single entry `defn` in derivatives.yaml""" + + def canonical_function( + functions: Sequence[NativeFunction], name: str + ) -> NativeFunction: + for f in functions: + if ( + not f.func.is_functional_fn() + and not f.func.is_out_fn() + and name == str(f.func.name.name) + ): + return f + # some functions only have in-place variants + if name + "_" != cpp.name(functions[0].func): + raise AssertionError( + f"Expected inplace function name '{name}_', got '{cpp.name(functions[0].func)}'" + ) + return functions[0] + + def split_names(raw_names: str) -> tuple[str, ...]: + """Given "foo, bar", return ["foo", "bar"].""" + return tuple(x.strip() for x in raw_names.split(",")) + + def check_grad_usage(defn_name: str, derivatives: Sequence[Derivative]) -> None: + """ + Check for some subtle mistakes one might make when writing derivatives. + These mistakes will compile, but will be latent until a function is + used with double backwards. + """ + + uses_grad = False # true if any derivative uses "grad" + num_grads_uses = 0 # count of uses of "grads" or "grads[INDEX]" + uses_named_grads = False # true if any derivative uses "grad_{name}" + used_grads_indices: list[int] = [] # which indices of grads are used + for d in derivatives: + formula = d.formula + uses_grad = uses_grad or bool( + re.findall(IDENT_REGEX.format("grad"), formula) + ) + num_grads_uses += len(re.findall(IDENT_REGEX.format("grads"), formula)) + uses_named_grads = uses_named_grads or bool(d.named_gradients) + used_grads_indices.extend(used_gradient_indices(formula)) + # This is a basic sanity check: the number of places we see + # "grads" should be no fewer than the number of indices we see + # inside "grads". They may not be equal because we may use + # "grads" without an index. + if num_grads_uses < len(used_grads_indices): + raise AssertionError( + f"num_grads_uses ({num_grads_uses}) < len(used_grads_indices) ({len(used_grads_indices)})" + ) + # Thus if the number is equal, every use of grads is also + # indexed. + only_used_grads_indices = num_grads_uses == len(used_grads_indices) + + if uses_grad and num_grads_uses > 0: + raise RuntimeError( + f"Derivative definition of {defn_name} in derivatives.yaml illegally " + "mixes use of 'grad' and 'grads'. Consider replacing " + "occurrences of 'grad' with 'grads[0]'" + ) + + if only_used_grads_indices and set(used_grads_indices) == {0}: + raise RuntimeError( + f"Derivative definition of {defn_name} in derivatives.yaml solely " + "refers to 'grads[0]'. If the first output is indeed the " + "only differentiable output, replace 'grads[0]' with 'grad'; " + "otherwise, there is a likely error in your derivatives " + "declaration." + ) + + if uses_named_grads and (uses_grad or num_grads_uses > 0): + raise RuntimeError( + f"Derivative definition of {defn_name} in derivatives.yaml illegally " + 'mixes use of "grad_RETURN_NAME" and "grad" or "grads[x]". Use ' + "only one method for identifying gradients." + ) + + @with_native_function + def set_up_derivatives( + f: NativeFunction, + ) -> tuple[ + Sequence[Derivative], + Sequence[ForwardDerivative], + Sequence[Binding], + Sequence[str], + Sequence[str], + ]: + # Set up the derivative information + derivatives: list[Derivative] = [] + forward_derivatives: list[ForwardDerivative] = [] + non_differentiable_arg_names: list[str] = [] + args_with_derivatives_set: set[str] = set() + + all_arg_names = [a.name for a in cpp_arguments(f)] + all_ret_names = [ + r.name for r in f.func.returns + ] # only used for the assert below + # output_differentiability is captured from the enclosed + # scope. Don't modify it. + # + # If it is not present, then no output is explicitly + # undifferentiable. + # + # It may be present and shorter than the length of return + # values. If that's the case, any return value that does not + # have a corresponding entry is considered not differentiable. + differentiability = output_differentiability or [True] * len(f.func.returns) + # A return is available as a named gradient ... + available_named_gradients = [ + f"grad_{ret.name}" + for ret, differentiable in zip(f.func.returns, differentiability) + # if it has not been explicitly made undifferentiable + if differentiable + # and if it has a name + and ret.name is not None + # and if its type is differentiable + and ret.type.is_tensor_like() + ] + + for raw_names in sorted(defn.keys()): + formula = defn[raw_names] + names = split_names(raw_names) + + for name in names: + if name in all_arg_names and name in all_ret_names: + raise AssertionError( + f"While processing the derivative formula for '{f.func.name}' wrt '{name}', " + f"expected '{name}' to not be both an input arg and named return." + ) + + if is_forward_derivative_definition(all_arg_names, names): + forward_derivatives.append(create_forward_derivative(f, formula, names)) + else: + if formula.lower().strip() == "non_differentiable": + non_differentiable_arg_names += names + else: + derivative = create_derivative( + f, formula, names, available_named_gradients + ) + derivatives.append(derivative) + args_with_derivatives_set |= set(names) + + overlap = args_with_derivatives_set.intersection(non_differentiable_arg_names) + if overlap: + raise RuntimeError( + f"derivatives definition for {defn} have overlapped non_differentiable " + f"and differentiable variables: {overlap}" + ) + + # Next, let us determine the list of inputs in order. + # TODO: do we need eagerly calculate and save it here? Can it be derived + # from NativeFunction and `derivatives` on callsites instead? + args_with_derivatives = [ + a for a in cpp_arguments(f) if a.name in args_with_derivatives_set + ] + + # Postprocess forward derivatives definitions now that we know the differentiable arguments + forward_derivatives = postprocess_forward_derivatives( + f, + defn_name, + all_arg_names, + derivatives, + forward_derivatives, + args_with_derivatives, + ) + + # Test to see if the use of 'grads' makes sense. + check_grad_usage(defn_name, derivatives) + + return ( + derivatives, + forward_derivatives, + args_with_derivatives, + non_differentiable_arg_names, + available_named_gradients, + ) + + # NB: Removes 'name' from defn dictionary + specification = defn_dict.pop("name") + defn_name, _ = split_name_params(specification) + # NB: Removes 'output_differentiability' from defn dictionary + # `None` means all differentiable. + output_differentiability = defn_dict.pop("output_differentiability", None) + output_differentiability_conditions = None + if output_differentiability and any( + isinstance(diff, str) for diff in output_differentiability + ): + if len(output_differentiability) != 1: + raise RuntimeError( + f"Not supported: for {specification}," + f"output_differentiability must either be " + f"list[bool] or a list[str] where each str is a " + f"condition. In the case where it is a condition, " + f"we only support single-output functions. " + f"Please file us an issue. " + ) + output_differentiability_conditions = output_differentiability + output_differentiability = [True] + + schema_function = functions_by_schema.get(specification) + if not schema_function: + avail = "\n".join( + k for k, v in functions_by_schema.items() if cpp.name(v.func) == defn_name + ) + raise RuntimeError( + f"could not find ATen function for schema: {specification} " + f". Available signatures:\n{avail}" + ) + + # now map this to the legacy schema; this isn't technically necessary, but we'd need some logic here + # to map in-place schemas to the out-of-place variants. + # TODO: maybe the logic to handle the legacy schema is no longer necessary? + signature = schema_function.func.signature() + functions = functions_by_signature[signature] + if len(functions) == 0: + avail = "\n".join( + str(k) + for k, v in functions_by_signature.items() + if cpp.name(k) == defn_name + ) + raise RuntimeError( + f"could not find ATen function for legacy signature: {signature} " + f"corresponding to schema {specification}. Please report a bug to PyTorch. " + f"Available signatures:\n{avail}" + ) + + canonical = canonical_function(functions, defn_name) + if "grad_input_mask" in (a.name for a in cpp_arguments(canonical)): + raise RuntimeError( + f"Schema for {defn_name} has an argument named grad_input_mask, " + "but this name would be shadowed by our codegen. " + "Please use a different name in native_functions.yaml." + ) + + if "result" in (a.name for a in cpp_arguments(canonical)): + raise RuntimeError( + f"Schema for {defn_name} has an argument named result, " + "but this is only allowed for outputs." + "Please use a different name in native_functions.yaml." + ) + + diffinfo_dict = {} + for key, defn in defn_dict["dispatch"].items(): + if key != "Default" and key not in _VALID_AUTOGRAD_KEYS: + raise RuntimeError( + f"Invalid dispatch key {key} in derivatives.yaml for {specification}," + f" expected key to be one of {_VALID_AUTOGRAD_KEYS}" + ) + if key not in used_dispatch_keys: + used_dispatch_keys.add(key) + + ( + derivatives, + forward_derivatives, + args_with_derivatives, + non_differentiable_arg_names, + available_named_gradients, + ) = set_up_derivatives(canonical) + + used_named_gradients: set[str] = set() + for d in derivatives: + used_named_gradients |= d.named_gradients + + # only assign an op name if we are actually going to calculate a derivative + op = None + if args_with_derivatives: + op_prefix = _create_op_prefix(defn_name) + if key != "Default": + op_prefix = op_prefix + key + op = f"{op_prefix}{op_counter[op_prefix]}" + op_counter[op_prefix] += 1 + + diffinfo_dict[key] = DifferentiabilityInfo( + name=defn_name, + func=canonical, + op=op, + derivatives=derivatives, + forward_derivatives=forward_derivatives, + all_saved_inputs=dedup_vars( + [v for d in derivatives for v in d.saved_inputs] + ), + all_saved_outputs=dedup_vars( + [v for d in derivatives for v in d.saved_outputs] + ), + available_named_gradients=available_named_gradients, + used_named_gradients=used_named_gradients, + args_with_derivatives=args_with_derivatives, + non_differentiable_arg_names=non_differentiable_arg_names, + output_differentiability=output_differentiability, + output_differentiability_conditions=output_differentiability_conditions, + ) + + return canonical.func, diffinfo_dict + + +GRAD_INDEX_REGEX = r"(?:^|\W)grads\[(\d+)\]" + + +def used_gradient_indices(formula: str) -> list[int]: + """Determine a list of gradient indices (the i in grads[i]) that + are used by the formula. + + >>> used_gradient_indices("foo(grads[0], grads[1])") + [0, 1] + """ + return [int(i) for i in re.findall(GRAD_INDEX_REGEX, formula)] + + +def saved_variables( + formula: str, + nctypes: list[NamedCType], + var_names: tuple[str, ...], +) -> tuple[str, tuple[SavedAttribute, ...]]: + def stride_expr(name: str) -> str: + if var_names != (name,): + raise AssertionError( + 'Replacement for ".strides()" is currently only supported for single derivatives of the same tensor ' + 'that ".strides()" is being called on.' + ) + return f'strides_or_error({name}, "{name}")' + + REPLACEMENTS: list[tuple[str, dict[str, Any]]] = [ + # replace self.sym_sizes() with self_sym_sizes + ( + r"{}.sym_sizes\(\)", + { + "suffix": "_sym_sizes", + "nctype": lambda name: NamedCType(name, BaseCType(symIntArrayRefT)), + }, + ), + # replace self->sym_sizes() with self_sym_sizes_opt + ( + r"{}->sym_sizes\(\)", + { + "suffix": "_sym_sizes_opt", + "nctype": lambda name: NamedCType( + name, OptionalCType(BaseCType(symIntArrayRefT)) + ), + "expr": lambda name: f"{name}.has_value() ? std::optional({name}->sym_sizes()) : std::nullopt", + }, + ), + # replace self.sym_blocksize() with self_sym_blocksize_opt + ( + r"{}.sym_blocksize\(\)", + { + "suffix": "_self_sym_blocksize_opt", + "nctype": lambda name: NamedCType( + name, OptionalCType(BaseCType(symIntArrayRefT)) + ), + "expr": lambda name: f"at::sparse_csr::getSymIntBlockSize({name})", + }, + ), + # replace self.options() with self_options + ( + r"{}.options\(\)", + { + "suffix": "_options", + "nctype": lambda name: NamedCType(name, BaseCType(tensorOptionsT)), + }, + ), + # replace zeros_like(self) with self_info + ( + r"zeros_like\({}\)", + { + "suffix": "_info", + "nctype": lambda name: NamedCType(name, BaseCType(typeAndSizeT)), + "expr": lambda name: name, # at save-time + "res": lambda name: name + "_info.zeros()", # at eval-time + }, + ), + # replace self.sym_size(2) with self_sym_size_2 + ( + r"{}.sym_size\((-?\w+)\)", + { + "suffix": lambda m: f"_sym_argsize_{m.groups()[0].replace('-', 'minus_')}", + "nctype": lambda name: NamedCType(name, BaseCType(SymIntT)), + }, + ), + # replace self.numel() with self_numel + ( + r"{}.numel\(\)", + { + "suffix": "_numel", + "nctype": lambda name: NamedCType(name, BaseCType(longT)), + }, + ), + # replace self.sym_numel() with self_sym_numel + ( + r"{}.sym_numel\(\)", + { + "suffix": "_sym_numel", + "nctype": lambda name: NamedCType(name, BaseCType(SymIntT)), + }, + ), + # replace to_args_sizes(self) with self_args_sizes + ( + r"to_args_sizes\({}\)", + { + "suffix": "_args_sizes", + "nctype": lambda name: NamedCType( + name, VectorCType(VectorCType(BaseCType(longT))) + ), + }, + ), + # replace to_args_sizes_symint(self) with self_args_sizes + ( + r"to_args_sizes_symint\({}\)", + { + "suffix": "_args_sizes_symint", + "nctype": lambda name: NamedCType( + name, VectorCType(VectorCType(BaseCType(SymIntT))) + ), + }, + ), + # replace to_args_scalartypes(self) with self_args_scalartypes + ( + r"to_args_scalartypes\({}\)", + { + "suffix": "_args_scalartypes", + "nctype": lambda name: NamedCType( + name, VectorCType(BaseCType(scalarTypeT)) + ), + }, + ), + # replace TensorGeometry(self) with self_geometry + ( + r"TensorGeometry\({}\)", + { + "suffix": "_geometry", + "nctype": lambda name: NamedCType(name, BaseCType(tensorGeometryT)), + }, + ), + ( + r"{}.scalar_type\(\)", + { + "suffix": "_scalar_type", + "nctype": lambda name: NamedCType(name, BaseCType(scalarTypeT)), + }, + ), + # replace self.dim() with self_dim + ( + r"{}.dim\(\)", + { + "suffix": "_dim", + "nctype": lambda name: NamedCType(name, BaseCType(longT)), + }, + ), + # replace self.sym_strides() with self_sym_strides + ( + r"{}.sym_strides\(\)", + { + "suffix": "_sym_strides", + "nctype": lambda name: NamedCType(name, BaseCType(symIntArrayRefT)), + "expr": stride_expr, + }, + ), + # replace self.layout() with self_layout + ( + r"{}.layout\(\)", + { + "suffix": "_layout", + "nctype": lambda name: NamedCType(name, BaseCType(layoutT)), + }, + ), + # replace self.is_conj() with self_conjugate + ( + r"{}.is_conj\(\)", + { + "suffix": "_conjugate", + "nctype": lambda name: NamedCType(name, BaseCType(boolT)), + }, + ), + ] + + # find which arguments need to be saved + saved: list[SavedAttribute] = [] + + if ".sizes()" in formula or "->sizes()" in formula: + raise RuntimeError( + ".sizes() is not supported in derivative formulas. Instead, please use the SymInt version," + + f".sym_sizes(), which returned a c10::SymIntArrayRef. formula={formula}" + ) + if re.search(r"\.size\([-]?\d+\)", formula) or re.search( + r"->size\([-]?\d+\)", formula + ): + raise RuntimeError( + ".size(int) is not supported in derivative formulas. Instead, please use the SymInt version," + + f".sym_size(int), which returned a c10::SymIntArrayRef. formula={formula}" + ) + if ".strides()" in formula or "->strides()" in formula: + raise RuntimeError( + ".strides() is not supported in derivative formulas. Instead, please use the SymInt version," + + f".sym_strides(), which returned a c10::SymIntArrayRef. formula={formula}" + ) + for nctype in nctypes: + # pyrefly: ignore [bad-assignment] + name = ( + nctype.name.name if isinstance(nctype.name, SpecialArgName) else nctype.name + ) + # First search the formula for expressions which can be evaluated + # when the autograd Function is created to avoid saving variables + for regex, info in REPLACEMENTS: + + def repl(m: re.Match[str]) -> str: + suffix: str = ( + # pyrefly: ignore [bad-assignment] + info["suffix"](m) if callable(info["suffix"]) else info["suffix"] + ) + expr: str = info["expr"](name) if "expr" in info else m.group(0) + saved.append( + SavedAttribute( + nctype=info["nctype"](name + suffix), + expr=expr, + ) + ) + if "res" in info: + replacement: str = info["res"](name) + return replacement + return name + suffix + + formula = re.sub(regex.format(name), repl, formula) + + # std::optional types stored in Backward nodes must be + # converted to std::optional before being passed into + # the backward function + if nctype.type == OptionalCType(BaseCType(stringT)): + formula = re.sub( + rf"\b{name}\b", + f"{name}.has_value() ? std::optional({name}.value()) : std::nullopt", + formula, + ) + + # Find any variables which remain in the formula and save them + if re.search(IDENT_REGEX.format(name), formula): + saved.append( + SavedAttribute( + nctype=nctype, + expr=name, + ) + ) + + return formula, tuple(saved) + + +def _create_op_prefix(name: str) -> str: + r"""Takes a native function name converts to an op prefix name. + + Note that the "name" parameter must be the native function name + without the optional variant suffix, so "add" instead of + "add.out". + + OP names correspond to classes, hence the change to title case. + + Example:: + + >>> _create_op_prefix("add") + 'AddBackward' + """ + camel_case = "".join([p.title() for p in name.split("_")]) + return (camel_case + "Backward").replace("ForwardBackward", "Backward") + + +def dedup_vars(vars: Sequence[SavedAttribute]) -> Sequence[SavedAttribute]: + seen: set[str] = set() + saved: list[SavedAttribute] = [] + for var in vars: + name = ( + var.nctype.name.name + if isinstance(var.nctype.name, SpecialArgName) + else var.nctype.name + ) + if name in seen: + continue + seen.add(name) + saved.append(var) + return saved diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/ADInplaceOrViewType.cpp b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/ADInplaceOrViewType.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e8276697eee065a36d1b16e583a5f011f92541c2 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/ADInplaceOrViewType.cpp @@ -0,0 +1,38 @@ +#define TORCH_ASSERT_ONLY_METHOD_OPERATORS +#include "torch/csrc/autograd/VariableTypeUtils.h" +#include "torch/csrc/autograd/generated/ViewFuncs.h" + +#include +#include +#include + +// ${generated_comment} + +#ifndef AT_PER_OPERATOR_HEADERS +#include +#else +$ops_headers +#endif + +using namespace at; +using torch::autograd::CreationMeta; +using torch::autograd::as_view; +using torch::autograd::increment_version; + +namespace torch { + +namespace ADInplaceOrView { + +namespace { +${inplace_or_view_method_definitions} +} // namespace +} // namespace ADInplaceOrView + +namespace { + +TORCH_LIBRARY_IMPL(aten, ADInplaceOrView, m) { + ${inplace_or_view_wrapper_registrations}; +} + +} // namespace +} // namespace torch diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/Functions.cpp b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/Functions.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ba5cb3d912c5d7a3bbf31f4b0d38d4413dfc160c --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/Functions.cpp @@ -0,0 +1,44 @@ +#include "torch/csrc/autograd/FunctionsManual.h" +#include "torch/csrc/dynamo/compiled_autograd.h" + +// ${generated_comment} + +// The manual function definitions that used to be here are now in torch/csrc/autograd/FunctionsManual.cpp +// This speeds up re-compilation and allow to share these implementations so that they can be +// used for forward mode AD formulas as well. + +using namespace torch::autograd::generated::details; +using at::Tensor; +using at::Scalar; +using at::IntArrayRef; +using at::TensorList; + +namespace torch::autograd::generated { + +static at::IValue compute_output_metadata(const torch::autograd::edge_list& next_edges) { + auto output_metadata = torch::dynamo::autograd::IValuePacker< + std::vector>>::pack( + torch::dynamo::autograd::get_input_metadata(next_edges)); + return output_metadata; +} + +static C10_NOINLINE variable_list compiled_autograd_apply_functional( + const PackedArgs& packed_args, + const edge_list& next_edges, + SwapSavedVariables& saved, + const variable_list& grads, + const std::string& name) { + auto output_metadata = compute_output_metadata(next_edges); + const auto& pyinterface = torch::dynamo::autograd::getPyCompilerInterface(); + return pyinterface->call_function( + saved.get_py_compiler(), + "apply_functional", + name, + grads, + packed_args.vec(), + output_metadata); +} + +${autograd_function_definitions} + +} // namespace torch::autograd::generated diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/Functions.h b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/Functions.h new file mode 100644 index 0000000000000000000000000000000000000000..911d7d905c002b29941167ccff112a8079d48266 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/Functions.h @@ -0,0 +1,51 @@ +#pragma once + +// ${generated_comment} + +#include +#include +#include + +#include "torch/csrc/autograd/function.h" +#include "torch/csrc/autograd/variable.h" +#include "torch/csrc/autograd/saved_variable.h" +#include + +#include + +namespace torch { namespace autograd { namespace generated { + +using at::Scalar; +using at::Tensor; +using at::IntArrayRef; +using at::ArrayRef; +using at::Type; +using at::TensorGeometry; +using at::ScalarType; +using std::optional; +using c10::fmap; + +inline std::vector unpack_list(at::ArrayRef xs, std::shared_ptr saved_for = nullptr) { + // NB: we must explicitly do the conversion in the lambda, otherwise template + // deduction will give a Tensor of Variable which is not convertible + return fmap(xs, [&saved_for](const SavedVariable& x) { + // TODO(crcrpar): Use `std::move(saved_for)` to avoid incrementing refcount, which would need refactoring. + return static_cast(x.unpack(saved_for)); + }); +} + +inline c10::List> unpack_opt_list(at::ArrayRef xs, std::shared_ptr saved_for = nullptr) { + torch::List> result; + result.reserve(xs.size()); + for (const SavedVariable& v : xs) { + auto var = v.unpack(saved_for); + result.push_back(var.defined() ? std::optional(var) : ::std::nullopt); + } + return result; +} + +using torch::autograd::TypeAndSize; + +${autograd_function_declarations} + +}}} // namespace torch::autograd::generated diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/TraceType.cpp b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/TraceType.cpp new file mode 100644 index 0000000000000000000000000000000000000000..fb5e7ae44a5353a3cc2a90858fe33b7fc0ef8bfd --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/TraceType.cpp @@ -0,0 +1,40 @@ +#define TORCH_ASSERT_ONLY_METHOD_OPERATORS +#include "torch/csrc/jit/frontend/tracer.h" + +#include + +#include "torch/csrc/autograd/function.h" + +#include "ATen/quantized/Quantizer.h" + +// ${generated_comment} + +// See the `Tracer` section in `torch/csrc/jit/OVERVIEW.md`. +// NOTE See [Sharded File] comment in VariableType + +#ifndef AT_PER_OPERATOR_HEADERS +#include +#else +$ops_headers +#endif + +using namespace at; + +namespace torch { + +namespace TraceType { + +namespace { +${trace_method_definitions} +} // namespace +} // namespace TraceType + +namespace { + +TORCH_LIBRARY_IMPL(aten, Tracer, m) { + ${trace_wrapper_registrations}; +} + +} // namespace + +} // namespace torch diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/VariableType.cpp b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/VariableType.cpp new file mode 100644 index 0000000000000000000000000000000000000000..d1de108283b1169902a085e4886de7a0113c309c --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/VariableType.cpp @@ -0,0 +1,77 @@ +#include "torch/csrc/autograd/VariableTypeUtils.h" +#include "torch/csrc/autograd/generated/VariableType.h" +#include "torch/csrc/autograd/FunctionsManual.h" + +#include +#include +#include +#include + +#include + + +// ${generated_comment} + +// NOTE [Sharded File]: on this file's split-into-shards state +// +// Back in the good old days, VariableType.cpp was generated as one +// file with every function in it, and everything was great and +// simple. +// +// However, this file was also very large (over 36,000 lines), and +// compiling it was very slow, and in fact was a significant +// bottleneck for incremental rebuilds. To address this, we now +// generate the file split across multiple shards, named +// VariableType_0.cpp and so on, which can be compiled in parallel. +// +// For ease of inspection and debugging, so that it's not necessary to +// go rooting around in multiple files, we also generate all the +// functions together in VariableTypeEverything.cpp. This generated +// file is only for convenience; it's not actually used in the +// build. If the file you're looking at now is one of the shards, you +// may want to switch over to the Everything variant to make you +// grepping smoother. + +using namespace at; +using namespace torch::autograd::generated; +using namespace torch::autograd::generated::details; + + +namespace torch::autograd { + +namespace VariableType { +namespace{ +[[maybe_unused]] void reset_grad_accumulator(Variable& self) { + AutogradMeta* meta = torch::autograd::impl::get_autograd_meta(self); + if (meta != nullptr) { + meta->grad_accumulator_.reset(); + } +} +[[maybe_unused]] size_t expected_fresh_use_count(const Variable& self) { + if (!self.defined()) { + // An UndefinedTensorImpl always has a use count of 0 + return 0; + } + if (self.unsafeGetTensorImpl()->pyobj_slot()->load_pyobj() != nullptr) { + // A TensorImpl with a Python object has a use count of 2 + return 2; + } + // A fresh TensorImpl (with no PyObject) has a use count of 1 + return 1; +} +} + +namespace { + + +${type_derived_method_definitions} +} +} + +namespace { + +${wrapper_registrations} + +} + +} // namespace torch::autograd diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/VariableType.h b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/VariableType.h new file mode 100644 index 0000000000000000000000000000000000000000..02959757e5c007a7d54526dc2ca18698748e95f1 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/VariableType.h @@ -0,0 +1,55 @@ +#pragma once + +// ${generated_comment} + +#include +#include + +#include + +#include +#include + +#include // for size_t +#include // for function +#include // for unique_ptr +#include +#include + +namespace at { + struct Quantizer; +} + +namespace torch { namespace autograd { + +using Variable = at::Tensor; +using at::Context; +using at::Device; +using at::Dimname; +using at::DimnameList; +using at::Generator; +using at::IntArrayRef; +using at::MemoryFormat; +using at::QScheme; +using at::Scalar; +using at::ScalarType; +using at::Storage; +using at::Tensor; +using at::TensorList; +using at::TensorOptions; +using at::Quantizer; +using std::optional; + +namespace VariableType { + TORCH_API std::vector allCUDATypes(); + TORCH_API std::vector allXPUTypes(); + TORCH_API std::vector allCPUTypes(); + TORCH_API std::vector allPrivateUser1Types(); + + at::Tensor & unpack(Tensor & t, const char * name, int pos); + const at::Tensor & unpack(const Tensor & t, const char * name, int pos); + at::Tensor unpack_opt(const Tensor & t, const char * name, int pos); + std::vector unpack(const at::ITensorListRef& tl, const char *name, int pos); +} + +}} // namespace torch::autograd diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/ViewFuncs.cpp b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/ViewFuncs.cpp new file mode 100644 index 0000000000000000000000000000000000000000..11b9b194fb46f924e863c4c1dab5cbb8dbb0601b --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/ViewFuncs.cpp @@ -0,0 +1,14 @@ +#include + +// ${generated_comment} + +using at::Tensor; +using at::Scalar; +using at::IntArrayRef; +using at::TensorList; + +namespace torch::autograd::generated { + +${view_func_definitions} + +} // namespace torch::autograd::generated diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/ViewFuncs.h b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/ViewFuncs.h new file mode 100644 index 0000000000000000000000000000000000000000..1f69c062d344e4cd5f98cf5f34fd4278019fdf8a --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/ViewFuncs.h @@ -0,0 +1,28 @@ +#pragma once + +// ${generated_comment} + +#include +#include +#include + +#ifndef AT_PER_OPERATOR_HEADERS +#include +#else +$ops_headers +#endif + +namespace torch::autograd::generated { + +using at::Scalar; +using at::Tensor; +using at::IntArrayRef; +using at::ArrayRef; +using at::Type; +using at::ScalarType; +using std::optional; +using c10::fmap; + +${view_func_declarations} + +} // namespace torch::autograd::generated diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/annotated_fn_args.py.in b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/annotated_fn_args.py.in new file mode 100644 index 0000000000000000000000000000000000000000..1012c008451745b8f1ed1454a864f666caf2618a --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/annotated_fn_args.py.in @@ -0,0 +1,11 @@ +""" +This file is needed for generating procedural tests required for +testing __torch_function__. See tests/test_overrides.py. +""" + +# flake8: noqa +import torch + +annotated_args = { +${annotated_args} +} diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_enum_tag.cpp b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_enum_tag.cpp new file mode 100644 index 0000000000000000000000000000000000000000..83cfad1d7ba4d6fc3529caf78e036c5883e7bc23 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_enum_tag.cpp @@ -0,0 +1,15 @@ +#include +#include +#include +#include + +namespace py = pybind11; +namespace torch { + namespace autograd { + void initEnumTag(PyObject* module) { + auto m = py::handle(module).cast(); + py::enum_(m, "Tag") + ${enum_of_valid_tags}; + m.doc() = "An Enum that contains tags that can be assigned to an operator registered in C++."; + } +}} diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_fft_functions.cpp b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_fft_functions.cpp new file mode 100644 index 0000000000000000000000000000000000000000..71ac4e2226d2db418eba5690995424d3f007e620 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_fft_functions.cpp @@ -0,0 +1,81 @@ +#define TORCH_ASSERT_ONLY_METHOD_OPERATORS +// ${generated_comment} + +#include "torch/csrc/Device.h" +#include "torch/csrc/DynamicTypes.h" +#include "torch/csrc/Exceptions.h" +#include "torch/csrc/autograd/python_fft_functions.h" +#include "torch/csrc/autograd/generated/python_return_types.h" +#include "torch/csrc/autograd/python_variable.h" +#include "torch/csrc/autograd/utils/wrap_outputs.h" +#include "torch/csrc/autograd/utils/python_arg_parsing.h" +#include "torch/csrc/autograd/generated/variable_factories.h" +#include "torch/csrc/utils/out_types.h" +#include "torch/csrc/utils/pycfunction_helpers.h" +#include "torch/csrc/utils/python_arg_parser.h" +#include "torch/csrc/utils/structseq.h" +#include "torch/csrc/utils/device_lazy_init.h" + +#include + +#ifndef AT_PER_OPERATOR_HEADERS +#include +#else +$ops_headers +#endif + +using at::Tensor; +using at::Device; +using at::Layout; +using at::Scalar; +using at::ScalarType; +using at::Backend; +using at::OptionalDeviceGuard; +using at::DeviceGuard; +using at::TensorOptions; +using at::IntArrayRef; +using at::Generator; +using at::TensorList; +using at::Dimname; +using at::DimnameList; + +using torch::utils::check_out_type_matches; +using namespace torch::autograd::utils; + +namespace torch::autograd { + +// generated forward declarations start here + +${py_forwards} + +static PyMethodDef fft_functions[] = { + ${py_method_defs} + {NULL} +}; + +static PyObject* THPFFTVariableFunctionsModule = NULL; + +void initFFTFunctions(PyObject* module) { + static struct PyModuleDef def = { + PyModuleDef_HEAD_INIT, + "torch._C._fft", + NULL, + -1, + fft_functions + }; + PyObject* fft = PyModule_Create(&def); + THPFFTVariableFunctionsModule = fft; + if (!fft) { + throw python_error(); + } + // steals a reference to fft + if (PyModule_AddObject(module, "_fft", fft) != 0) { + throw python_error(); + } +} + +// generated methods start here + +${py_methods} + +} // namespace torch::autograd diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_functions.cpp b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_functions.cpp new file mode 100644 index 0000000000000000000000000000000000000000..1522d6cd0f5a2a1fc0188bf9d6d0d59fe1b27d85 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_functions.cpp @@ -0,0 +1,37 @@ +#include + +// ${generated_comment} + +#include +#include + +#include +#include "torch/csrc/autograd/generated/Functions.h" +#include "torch/csrc/autograd/python_cpp_function.h" +#include +#include +#include +#include +#include + +// NOTE: See [Sharded File] comment in VariableType + +namespace torch::autograd::generated { + +template +static void addClass(PyObject* module, PyTypeObject& type, const char* name, + PyGetSetDef* function_properties=NULL, PyMethodDef* function_methods=NULL) +{ + _initFunctionPyTypeObject(type, name, function_properties, function_methods); + Py_INCREF(&type); + PyModule_AddObject(module, name, (PyObject*)&type); + registerCppFunction(typeid(C), &type); +} + +${py_function_props_and_getters} + +void initialize_autogenerated_functions${shard_id}(PyObject* module) { + ${py_function_initializers} +} + +} // namespace torch::autograd::generated diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_functions.h b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_functions.h new file mode 100644 index 0000000000000000000000000000000000000000..22e37207e219431100fefaf21b02e3ed0f63d956 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_functions.h @@ -0,0 +1,17 @@ +#pragma once + +#include + +// ${generated_comment} + +// Python bindings for automatically generated autograd functions + +namespace torch { namespace autograd { namespace generated { + +${shard_forward_declare} + +inline void initialize_autogenerated_functions(PyObject* module) { + ${shard_call} +} + +}}} // namespace torch::autograd::generated diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_linalg_functions.cpp b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_linalg_functions.cpp new file mode 100644 index 0000000000000000000000000000000000000000..c93752a3ddbfcf111426f98c3ea68fc625e94def --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_linalg_functions.cpp @@ -0,0 +1,68 @@ +#define TORCH_ASSERT_ONLY_METHOD_OPERATORS +// ${generated_comment} + +#include "torch/csrc/Device.h" +#include "torch/csrc/DynamicTypes.h" +#include "torch/csrc/Exceptions.h" +#include "torch/csrc/autograd/python_linalg_functions.h" +#include "torch/csrc/autograd/generated/python_return_types.h" +#include "torch/csrc/autograd/python_variable.h" +#include "torch/csrc/autograd/utils/wrap_outputs.h" +#include "torch/csrc/autograd/utils/python_arg_parsing.h" +#include "torch/csrc/utils/pycfunction_helpers.h" +#include "torch/csrc/utils/python_arg_parser.h" +#include "torch/csrc/utils/structseq.h" + +#ifndef AT_PER_OPERATOR_HEADERS +#include +#else +$ops_headers +#endif + +using at::Tensor; +using at::Scalar; +using at::ScalarType; +using at::MemoryFormat; +using at::Generator; +using at::IntArrayRef; +using at::TensorList; + +using namespace torch::autograd::utils; + +namespace torch::autograd { + +// generated forward declarations start here + +${py_forwards} + +static PyMethodDef linalg_functions[] = { + ${py_method_defs} + {NULL} +}; + +static PyObject* THPLinalgVariableFunctionsModule = NULL; + +void initLinalgFunctions(PyObject* module) { + static struct PyModuleDef def = { + PyModuleDef_HEAD_INIT, + "torch._C._linalg", + NULL, + -1, + linalg_functions + }; + PyObject* linalg = PyModule_Create(&def); + THPLinalgVariableFunctionsModule = linalg; + if (!linalg) { + throw python_error(); + } + // steals a reference to linalg + if (PyModule_AddObject(module, "_linalg", linalg) != 0) { + throw python_error(); + } +} + +// generated methods start here + +${py_methods} + +} // namespace torch::autograd diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_nested_functions.cpp b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_nested_functions.cpp new file mode 100644 index 0000000000000000000000000000000000000000..3acb5128cee1e180de887080106e7cf5559f15ee --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_nested_functions.cpp @@ -0,0 +1,81 @@ +#define TORCH_ASSERT_ONLY_METHOD_OPERATORS +// ${generated_comment} + +#include "torch/csrc/Device.h" +#include "torch/csrc/DynamicTypes.h" +#include "torch/csrc/Exceptions.h" +#include "torch/csrc/autograd/python_nested_functions.h" +#include "torch/csrc/autograd/generated/python_return_types.h" +#include "torch/csrc/autograd/python_variable.h" +#include "torch/csrc/autograd/utils/wrap_outputs.h" +#include "torch/csrc/autograd/utils/python_arg_parsing.h" +#include "torch/csrc/autograd/generated/variable_factories.h" +#include "torch/csrc/utils/out_types.h" +#include "torch/csrc/utils/pycfunction_helpers.h" +#include "torch/csrc/utils/python_arg_parser.h" +#include "torch/csrc/utils/structseq.h" +#include "torch/csrc/utils/device_lazy_init.h" + +#ifndef AT_PER_OPERATOR_HEADERS +#include +#else +$ops_headers +#endif + +using at::Tensor; +using at::Device; +using at::Layout; +using at::Scalar; +using at::ScalarType; +using at::Backend; +using at::OptionalDeviceGuard; +using at::DeviceGuard; +using at::TensorOptions; +using at::IntArrayRef; +using at::OptionalIntArrayRef; +using at::Generator; +using at::TensorList; +using at::Dimname; +using at::DimnameList; + +using namespace torch::autograd::utils; + +namespace torch::autograd { + +// generated forward declarations start here + +${py_forwards} + +static PyMethodDef nested_functions[] = { + {NULL, NULL, 0, NULL}, + ${py_method_defs} + {NULL} +}; + +static PyObject* THPNestedVariableFunctionsModule = NULL; + +void initNestedFunctions(PyObject* module) { + nested_functions[0] = get_nested_functions_manual()[0]; + static struct PyModuleDef def = { + PyModuleDef_HEAD_INIT, + "torch._C._nested", + NULL, + -1, + nested_functions + }; + PyObject* nested = PyModule_Create(&def); + THPNestedVariableFunctionsModule = nested; + if (!nested) { + throw python_error(); + } + // steals a reference to nested + if (PyModule_AddObject(module, "_nested", nested) != 0) { + throw python_error(); + } +} + +// generated methods start here + +${py_methods} + +} // namespace torch::autograd diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_nn_functions.cpp b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_nn_functions.cpp new file mode 100644 index 0000000000000000000000000000000000000000..8eabb0da2332283a02e98e54dd0a277a83a55ad6 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_nn_functions.cpp @@ -0,0 +1,113 @@ +#define TORCH_ASSERT_ONLY_METHOD_OPERATORS +// ${generated_comment} + +#include "torch/csrc/Device.h" +#include "torch/csrc/DynamicTypes.h" +#include "torch/csrc/Exceptions.h" +#include "torch/csrc/autograd/python_nn_functions.h" +#include "torch/csrc/autograd/generated/python_return_types.h" +#include "torch/csrc/autograd/python_variable.h" +#include "torch/csrc/autograd/utils/wrap_outputs.h" +#include "torch/csrc/autograd/utils/python_arg_parsing.h" +#include "torch/csrc/utils/pycfunction_helpers.h" +#include "torch/csrc/utils/python_arg_parser.h" +#include "torch/csrc/utils/structseq.h" +#include "torch/csrc/utils/tensor_memoryformats.h" + +#ifndef AT_PER_OPERATOR_HEADERS +#include +#else +$ops_headers +#endif + +using at::Tensor; +using at::Scalar; +using at::MemoryFormat; +using at::Generator; +using at::IntArrayRef; +using at::ArrayRef; + +using namespace torch::autograd::utils; + +namespace torch::autograd { + +static PyObject* THPNNVariableFunctionsModule = nullptr; + +static PyObject * THPVariable__parse_to(PyObject* module, PyObject* args, PyObject* kwargs) +{ + HANDLE_TH_ERRORS + static PythonArgParser parser({ + "to(Device device=None, ScalarType dtype=None, bool non_blocking=False, bool copy=False, *, MemoryFormat? memory_format=None)", + "to(ScalarType dtype, bool non_blocking=False, bool copy=False, *, MemoryFormat? memory_format=None)", + "to(Tensor tensor, bool non_blocking=False, bool copy=False, *, MemoryFormat? memory_format=None)", + }); + ParsedArgs<5> parsed_args; + auto r = parser.parse(args, kwargs, parsed_args); + if (r.has_torch_function()) { + return handle_torch_function(r, args, kwargs, THPNNVariableFunctionsModule, "torch.nn", "_parse_to"); + } + auto parsed = parse_to_conversion(r, /*allow_copy*/ false); // we don't want copy for nn.Module.to + auto& device = std::get<0>(parsed); + auto& scalarType = std::get<1>(parsed); + auto non_blocking = std::get<2>(parsed); + auto opt_memory_format = std::get<4>(parsed); + auto tuple = THPObjectPtr{PyTuple_New(4)}; + if (!tuple) throw python_error(); + if (device) { + PyTuple_SET_ITEM(tuple.get(), 0, THPDevice_New(*device)); + } else { + Py_INCREF(Py_None); + PyTuple_SET_ITEM(tuple.get(), 0, Py_None); + } + if (scalarType) { + PyTuple_SET_ITEM(tuple.get(), 1, Py_NewRef(torch::getTHPDtype(*scalarType))); + } else { + Py_INCREF(Py_None); + PyTuple_SET_ITEM(tuple.get(), 1, Py_None); + } + PyTuple_SET_ITEM(tuple.get(), 2, torch::autograd::utils::wrap(non_blocking)); + if (opt_memory_format.has_value()) { + PyTuple_SET_ITEM(tuple.get(), 3, Py_NewRef(torch::utils::getTHPMemoryFormat(opt_memory_format.value()))); + } else { + Py_INCREF(Py_None); + PyTuple_SET_ITEM(tuple.get(), 3, Py_None); + } + return tuple.release(); + END_HANDLE_TH_ERRORS +} + +// generated forward declarations start here + +${py_forwards} + +static PyMethodDef nn_functions[] = { + {"_parse_to", castPyCFunctionWithKeywords(THPVariable__parse_to), + METH_VARARGS | METH_KEYWORDS, nullptr}, + ${py_method_defs} + {nullptr} +}; + +void initNNFunctions(PyObject* module) { + static struct PyModuleDef def = { + PyModuleDef_HEAD_INIT, + "torch._C._nn", + nullptr, + -1, + nn_functions + }; + PyObject* nn = PyModule_Create(&def); + THPNNVariableFunctionsModule = nn; + if (!nn) { + throw python_error(); + } + // steals a reference to nn + if (PyModule_AddObject(module, "_nn", nn) != 0) { + throw python_error(); + } +} + +// generated methods start here + +${py_methods} + +} // namespace torch::autograd diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_return_types.cpp b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_return_types.cpp new file mode 100644 index 0000000000000000000000000000000000000000..139e6b8958336cfcc8328fa33581e9f1ab6d5532 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_return_types.cpp @@ -0,0 +1,52 @@ +#include + +#include +#include +#include + +#include "torch/csrc/autograd/generated/python_return_types.h" +#include "torch/csrc/utils/structseq.h" +#include "torch/csrc/Exceptions.h" + +namespace torch { namespace autograd { namespace generated { + +${py_return_types} + +}}} + +namespace torch::autograd { + +static void addReturnType( + PyObject* module, + const char* name, + PyTypeObject* type) { + // hold onto the TypeObject for the unlikely case of user + // deleting or overriding it. + Py_INCREF(type); + if (PyModule_AddObject( + module, + name, + (PyObject*)type) != 0) { + Py_DECREF(type); + throw python_error(); + } +} + +void initReturnTypes(PyObject* module) { + static struct PyModuleDef def = { + PyModuleDef_HEAD_INIT, "torch._C._return_types", nullptr, -1, {}}; + PyObject* return_types_module = PyModule_Create(&def); + if (!return_types_module) { + throw python_error(); + } + + ${py_return_types_registrations} + + // steals a reference to return_types on success + if (PyModule_AddObject(module, "_return_types", return_types_module) != 0) { + Py_DECREF(return_types_module); + throw python_error(); + } +} + +} // namespace torch::autograd diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_return_types.h b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_return_types.h new file mode 100644 index 0000000000000000000000000000000000000000..ce6c355ea146a272709255b898603764112168b9 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_return_types.h @@ -0,0 +1,14 @@ +#pragma once + +namespace torch { +namespace autograd { +namespace generated { + +${py_return_types_declarations} + +} + +void initReturnTypes(PyObject* module); + +} // namespace autograd +} // namespace torch diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_sparse_functions.cpp b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_sparse_functions.cpp new file mode 100644 index 0000000000000000000000000000000000000000..648d91442102e9b950cb2ddb8db545c4b4e1100e --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_sparse_functions.cpp @@ -0,0 +1,67 @@ +#define TORCH_ASSERT_ONLY_METHOD_OPERATORS +// ${generated_comment} + +#include "torch/csrc/Device.h" +#include "torch/csrc/DynamicTypes.h" +#include "torch/csrc/Exceptions.h" +#include "torch/csrc/autograd/python_sparse_functions.h" +#include "torch/csrc/autograd/python_variable.h" +#include "torch/csrc/autograd/utils/wrap_outputs.h" +#include "torch/csrc/autograd/utils/python_arg_parsing.h" +#include "torch/csrc/utils/pycfunction_helpers.h" +#include "torch/csrc/utils/python_arg_parser.h" +#include "torch/csrc/utils/structseq.h" + +#ifndef AT_PER_OPERATOR_HEADERS +#include +#else +$ops_headers +#endif + +using at::Tensor; +using at::Scalar; +using at::ScalarType; +using at::MemoryFormat; +using at::Generator; +using at::IntArrayRef; +using at::TensorList; + +using namespace torch::autograd::utils; + +namespace torch::autograd { + +// generated forward declarations start here + +${py_forwards} + +static PyMethodDef sparse_functions[] = { + ${py_method_defs} + {NULL} +}; + +static PyObject* THPSparseVariableFunctionsModule = NULL; + +void initSparseFunctions(PyObject* module) { + static struct PyModuleDef def = { + PyModuleDef_HEAD_INIT, + "torch._C._sparse", + NULL, + -1, + sparse_functions + }; + PyObject* sparse = PyModule_Create(&def); + THPSparseVariableFunctionsModule = sparse; + if (!sparse) { + throw python_error(); + } + // steals a reference to sparse + if (PyModule_AddObject(module, "_sparse", sparse) != 0) { + throw python_error(); + } +} + +// generated methods start here + +${py_methods} + +} // namespace torch::autograd diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_special_functions.cpp b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_special_functions.cpp new file mode 100644 index 0000000000000000000000000000000000000000..bf9e109b4a77352cd85ba828b97d67d329543867 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_special_functions.cpp @@ -0,0 +1,79 @@ +#define TORCH_ASSERT_ONLY_METHOD_OPERATORS +// ${generated_comment} + +#include "torch/csrc/Device.h" +#include "torch/csrc/DynamicTypes.h" +#include "torch/csrc/Exceptions.h" +#include "torch/csrc/autograd/python_special_functions.h" +#include "torch/csrc/autograd/generated/python_return_types.h" +#include "torch/csrc/autograd/python_variable.h" +#include "torch/csrc/autograd/utils/wrap_outputs.h" +#include "torch/csrc/autograd/utils/python_arg_parsing.h" +#include "torch/csrc/autograd/generated/variable_factories.h" +#include "torch/csrc/utils/out_types.h" +#include "torch/csrc/utils/pycfunction_helpers.h" +#include "torch/csrc/utils/python_arg_parser.h" +#include "torch/csrc/utils/structseq.h" +#include "torch/csrc/utils/device_lazy_init.h" + +#ifndef AT_PER_OPERATOR_HEADERS +#include +#else +$ops_headers +#endif + +using at::Tensor; +using at::Device; +using at::Layout; +using at::Scalar; +using at::ScalarType; +using at::Backend; +using at::OptionalDeviceGuard; +using at::DeviceGuard; +using at::TensorOptions; +using at::IntArrayRef; +using at::Generator; +using at::TensorList; +using at::Dimname; +using at::DimnameList; + +using torch::utils::check_out_type_matches; +using namespace torch::autograd::utils; + +namespace torch::autograd { + +// generated forward declarations start here + +${py_forwards} + +static PyMethodDef special_functions[] = { + ${py_method_defs} + {NULL} +}; + +static PyObject* THPSpecialVariableFunctionsModule = NULL; + +void initSpecialFunctions(PyObject* module) { + static struct PyModuleDef def = { + PyModuleDef_HEAD_INIT, + "torch._C._special", + NULL, + -1, + special_functions + }; + PyObject* special = PyModule_Create(&def); + THPSpecialVariableFunctionsModule = special; + if (!special) { + throw python_error(); + } + // steals a reference to special + if (PyModule_AddObject(module, "_special", special) != 0) { + throw python_error(); + } +} + +// generated methods start here + +${py_methods} + +} // namespace torch::autograd diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_torch_functions.cpp b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_torch_functions.cpp new file mode 100644 index 0000000000000000000000000000000000000000..c17d1040e1892b6a215a8c4264fe5a5345265bc7 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_torch_functions.cpp @@ -0,0 +1,93 @@ +#define TORCH_ASSERT_ONLY_METHOD_OPERATORS +// ${generated_comment} + +// Python bindings for torch.* functions implemented through ATen. +// +// The functions are bound as static methods on a class +// torch._C._VariableFunctions which is also aliased as Variable._torch +// and also copied into 'torch' module. + +#include + +// Undefine the copysign macro so that at::copysign works as intended with MSVC +// https://github.com/python/cpython/blob/c60394c7fc9cc09b16e9675a3eeb5844b6d8523f/PC/pyconfig.h#L196 +#ifdef _MSC_VER +#undef copysign +#endif // _MSC_VER + +#include "torch/csrc/autograd/python_torch_functions.h" +#include "torch/csrc/autograd/python_variable.h" +#include "torch/csrc/autograd/utils/wrap_outputs.h" +#include "torch/csrc/Dtype.h" +#include "torch/csrc/DynamicTypes.h" +#include "torch/csrc/Exceptions.h" +#include "torch/csrc/utils/out_types.h" +#include "torch/csrc/utils/pybind.h" +#include "torch/csrc/utils/pycfunction_helpers.h" +#include "torch/csrc/utils/python_arg_parser.h" +#include "torch/csrc/utils/tensor_layouts.h" +#include "torch/csrc/utils/tensor_new.h" +#include "torch/csrc/utils/tensor_numpy.h" +#include "torch/csrc/jit/frontend/tracer.h" +#include "torch/csrc/autograd/generated/variable_factories.h" +#include "torch/csrc/utils/structseq.h" +#include "torch/csrc/utils/device_lazy_init.h" +#include "torch/csrc/autograd/generated/python_return_types.h" + +#include + +#ifndef AT_PER_OPERATOR_HEADERS +#include +#else +$ops_headers +#endif + +#include +#include +#include +#include + +using at::Tensor; +using at::Device; +using at::Layout; +using at::Scalar; +using at::ScalarType; +using at::Backend; +using at::OptionalDeviceGuard; +using at::DeviceGuard; +using at::TensorOptions; +using at::IntArrayRef; +using at::Generator; +using at::TensorList; +using at::Dimname; +using at::DimnameList; +using at::ArrayRef; + +using torch::utils::check_out_type_matches; +using namespace torch::autograd::utils; + +// NOTE: See [Sharded File] comment in VariableType + +namespace torch::autograd { + +// generated forward declarations start here + +${py_forwards} + +static PyMethodDef torch_functions_shard[] = { + ${py_method_defs} +}; + +void gatherTorchFunctions${shard_id}(std::vector &torch_functions) { + constexpr size_t num_functions = sizeof(torch_functions_shard) / sizeof(torch_functions_shard[0]); + torch_functions.insert( + torch_functions.end(), + torch_functions_shard, + torch_functions_shard + num_functions); +} + +// generated methods start here + +${py_methods} + +} // namespace torch::autograd diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_variable_methods.cpp b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_variable_methods.cpp new file mode 100644 index 0000000000000000000000000000000000000000..2260f8cb2245f43567095a31b271063a28796e9b --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/python_variable_methods.cpp @@ -0,0 +1,1338 @@ +#define TORCH_ASSERT_ONLY_METHOD_OPERATORS +// ${generated_comment} + +#include + +// Undefine the copysign macro so that at::copysign works as intended with MSVC +// https://github.com/python/cpython/blob/c60394c7fc9cc09b16e9675a3eeb5844b6d8523f/PC/pyconfig.h#L196 +#ifdef _MSC_VER +#undef copysign +#endif // _MSC_VER + +#include "torch/csrc/DynamicTypes.h" +#include "torch/csrc/Exceptions.h" +#include "torch/csrc/Size.h" +#include "torch/csrc/autograd/generated/VariableType.h" +#include "torch/csrc/autograd/python_variable.h" +#include "torch/csrc/autograd/utils/python_arg_parsing.h" +#include "torch/csrc/autograd/utils/error_messages.h" +#include "torch/csrc/autograd/utils/wrap_outputs.h" +#include "torch/csrc/jit/frontend/tracer.h" +#ifdef USE_CUDA +#include "torch/csrc/cuda/Event.h" +#endif +#include "torch/csrc/utils/device_lazy_init.h" +#include +#include "torch/csrc/utils/object_ptr.h" +#include "torch/csrc/utils/pycfunction_helpers.h" +#include "torch/csrc/utils/python_arg_parser.h" +#include "torch/csrc/utils/python_numbers.h" +#include "torch/csrc/utils/python_strings.h" +#include "torch/csrc/utils/tensor_apply.h" +#include "torch/csrc/utils/tensor_list.h" +#include "torch/csrc/utils/tensor_new.h" +#include "torch/csrc/utils/tensor_numpy.h" +#include "torch/csrc/utils/tensor_types.h" +#include "torch/csrc/autograd/generated/python_return_types.h" + +#include +#include +#include +#include "c10/core/Stream.h" + +#include +#include + +#ifndef AT_PER_OPERATOR_HEADERS +#include +#else +$ops_headers +#include +#endif + +using at::device_of; +using at::OptionalDeviceGuard; +using at::Scalar; +using at::ScalarType; +using at::Tensor; +using c10::Stream; +using namespace torch::autograd::utils; + +namespace torch::autograd { + +static PyObject * THPVariable__is_view(PyObject *self, PyObject* args) +{ + HANDLE_TH_ERRORS + if (check_has_torch_function(self)) { + return handle_torch_function(self, "_is_view", args); + } + auto& self_ = THPVariable_Unpack(self); + if (self_.is_view()) { + Py_RETURN_TRUE; + } else { + Py_RETURN_FALSE; + } + END_HANDLE_TH_ERRORS +} + +// implemented on the python object bc no support for first-class functions in native_functions.yaml +// See: ATen/native/README.md for more context +static PyObject * THPVariable_apply_(PyObject* self, PyObject* arg) +{ + HANDLE_TH_ERRORS + if (check_has_torch_function(self)) { + auto args = py::make_tuple(py::handle(arg)); + return handle_torch_function(self, "apply_", args.ptr()); + } + auto& self_ = THPVariable_Unpack(self); + if (self_.requires_grad()) { + throw std::runtime_error( + "Can't call apply_() on Variable that requires grad. Use " + "var.detach().apply_() instead."); + } + return THPVariable_Wrap(torch::utils::apply_(self_, arg)); + END_HANDLE_TH_ERRORS +} + +static PyObject * THPVariable_size(PyObject* self, PyObject* args, PyObject* kwargs) +{ + HANDLE_TH_ERRORS + static PythonArgParser parser({ + "size(int64_t? dim=None)", + "size(Dimname dim)", + }); + auto& self_ = THPVariable_Unpack(self); + ParsedArgs<3> parsed_args; + auto r = parser.parse(self, args, kwargs, parsed_args); + + if(r.has_torch_function()){ + return handle_torch_function(r, self, args, kwargs, THPVariableClass, "torch.Tensor"); + } + if (r.idx == 0) { + if (!r.toInt64Optional(0).has_value()) { + return THPSize_NewFromSymSizes(self_); + } + if (jit::tracer::isTracing()) { + // will error out if a tensor has symints + return wrap(jit::tracer::getSizeOf(self_, r.toInt64(0))); + } else { + return torch::toPyObject(self_.sym_size(r.toInt64(0))); + } + } else if (r.idx == 1) { + if (jit::tracer::isTracing()) { + TORCH_INTERNAL_ASSERT(false, "NYI: Named tensors w/ JIT"); + } + return wrap(self_.size(r.dimname(0))); + } + Py_RETURN_NONE; + END_HANDLE_TH_ERRORS +} + +static PyObject * THPVariable_stride(PyObject* self, PyObject* args, PyObject* kwargs) +{ + HANDLE_TH_ERRORS + static PythonArgParser parser({ + "stride(int64_t? dim=None)", + "stride(Dimname dim)", + }); + auto& self_ = THPVariable_Unpack(self); + ParsedArgs<3> parsed_args; + auto r = parser.parse(self, args, kwargs, parsed_args); + + if(r.has_torch_function()){ + return handle_torch_function(r, self, args, kwargs, THPVariableClass, "torch.Tensor"); + } + + if (r.idx == 0) { + if (r.toInt64Optional(0).has_value()) { + return torch::toPyObject(self_.sym_stride(r.toInt64(0))); + } + // yes, this is called strides in ATen. + at::SymIntArrayRef strides = self_.sym_strides(); + // we can't do the normal wrapping here because IntArrayRef maps to both + // torch.Size and tuple in python + // TODO: consider factoring this out + THPObjectPtr tuple(PyTuple_New(static_cast(strides.size()))); + if (!tuple) throw python_error(); + for (size_t i = 0; i != strides.size(); i++) { + PyObject* s = torch::toPyObject(strides[i]); + if (!s) throw python_error(); + PyTuple_SET_ITEM(tuple.get(), i, s); + } + return tuple.release(); + } else if (r.idx == 1) { + return wrap(self_.stride(r.dimname(0))); + } + Py_RETURN_NONE; + END_HANDLE_TH_ERRORS +} + +// implemented on the python object to avoid dispatch overhead +static PyObject * THPVariable_get_device(PyObject* self_, PyObject* args) +{ + HANDLE_TH_ERRORS + if (check_has_torch_function(self_)) { + return handle_torch_function(self_, "get_device", args, nullptr); + } + auto& self = THPVariable_Unpack(self_); + return wrap(self.get_device()); + END_HANDLE_TH_ERRORS +} + +static PyObject * THPVariable_has_names(PyObject* self_, PyObject* args) +{ + HANDLE_TH_ERRORS + if (check_has_torch_function(self_)) { + return handle_torch_function(self_, "has_names", args); + } + auto& self = THPVariable_Unpack(self_); + return wrap(self.has_names()); + END_HANDLE_TH_ERRORS +} + +// implemented on the python object to avoid dispatch overhead +static PyObject * THPVariable_data_ptr(PyObject* self_, PyObject* args) +{ + HANDLE_TH_ERRORS + if (check_has_torch_function(self_)) { + return handle_torch_function(self_, "data_ptr", args); + } + auto& self = THPVariable_Unpack(self_); + return wrap(self.data_ptr()); + END_HANDLE_TH_ERRORS +} + +// implemented on the python object to avoid dispatch overhead +static PyObject * THPVariable_storage_offset(PyObject* self_, PyObject* args) +{ + HANDLE_TH_ERRORS + if (check_has_torch_function(self_)) { + return handle_torch_function(self_, "storage_offset"); + } + auto& self = THPVariable_Unpack(self_); + return py::cast(self.sym_storage_offset()).release().ptr(); + END_HANDLE_TH_ERRORS +} + +// implemented on the python object to avoid dispatch overhead +static PyObject * THPVariable_dim(PyObject* self, PyObject* args) +{ + HANDLE_TH_ERRORS + if (check_has_torch_function(self)) { + return handle_torch_function(self, "dim", args); + } + auto& self_ = THPVariable_Unpack(self); + return THPUtils_packInt64(self_.dim()); + END_HANDLE_TH_ERRORS +} + +// implemented on the python object to avoid dispatch overhead +static PyObject * THPVariable_numel(PyObject* self, PyObject* args) +{ + HANDLE_TH_ERRORS + if (check_has_torch_function(self)) { + return handle_torch_function(self, "numel", args); + } + auto& self_ = THPVariable_Unpack(self); + if (jit::tracer::isTracing()) { + return wrap(jit::tracer::getNumelOf(self_)); + } else { + return py::cast(self_.sym_numel()).release().ptr(); + } + END_HANDLE_TH_ERRORS +} + +static Tensor dispatch_contiguous(const Tensor & self, at::MemoryFormat memory_format) { + pybind11::gil_scoped_release no_gil; + OptionalDeviceGuard device_guard(device_of(self)); + return self.contiguous(memory_format); +} + +static PyObject * THPVariable_contiguous(PyObject* self, PyObject* args, PyObject* kwargs) +{ + HANDLE_TH_ERRORS + static PythonArgParser parser({ + "contiguous(*, MemoryFormat memory_format=contiguous_format)", + }); + ParsedArgs<1> parsed_args; + auto r = parser.parse(self, args, kwargs, parsed_args); + + if(r.has_torch_function()){ + return handle_torch_function(r, self, args, kwargs, THPVariableClass, "torch.Tensor"); + } + + auto& self_ = THPVariable_Unpack(self); + auto memory_format = r.memoryformat(0); + // avoids touching the GIL or current device if self is already contiguous + if (self_.is_contiguous_or_false(memory_format)) { + // NOTE: this logic is duplicated from VariableType.cpp. Since we need to + // record this call to contiguous() in the trace regardless of whether + // we actually call contiguous here, we need to record this information + // manually. + if (jit::tracer::isTracing()) { + const auto& tracer_state = jit::tracer::getTracingState(); + auto op_name = c10::Symbol::fromQualString("aten::contiguous"); + auto node = tracer_state->createNode(op_name, /*num_outputs=*/0); + jit::tracer::recordSourceLocation(node); + jit::tracer::addInputs(node, "self", self_); + jit::tracer::addInputs(node, "memory_format", memory_format); + tracer_state->insertNode(node); + jit::tracer::addOutput(node, self_); + } + Py_INCREF(self); + return self; + } + return THPVariable_Wrap(dispatch_contiguous(self_, memory_format)); + END_HANDLE_TH_ERRORS +} + +static Tensor dispatch_copy_(const Tensor & self, const Tensor & other, bool non_blocking) { + pybind11::gil_scoped_release no_gil; + OptionalDeviceGuard device_guard(device_of(self)); + return self.copy_(other, non_blocking); +} + +static void maybe_warn_requires_grad(const Tensor & self) { + if (at::GradMode::is_enabled() && self.requires_grad()) { + TORCH_WARN_ONCE("Converting a tensor with requires_grad=True to a scalar may lead to unexpected behavior.\n" + "Consider using tensor.detach() first."); + } +} + + static PyObject * THPVariable_copy_(PyObject* self, PyObject* args, PyObject* kwargs) +{ + HANDLE_TH_ERRORS + static PythonArgParser parser({ + "copy_(Tensor other, bool non_blocking=False)", + "copy_(Tensor other, bool async=False)|deprecated" + }); + auto& self_ = THPVariable_Unpack(self); + ParsedArgs<2> parsed_args; + auto r = parser.parse(self, args, kwargs, parsed_args); + + if(r.has_torch_function()){ + return handle_torch_function(r, self, args, kwargs, THPVariableClass, "torch.Tensor"); + } + + return THPVariable_Wrap(dispatch_copy_(self_, r.tensor(0), r.toBool(1))); + END_HANDLE_TH_ERRORS +} + +template +static T dispatch_to(const Tensor & self) { + pybind11::gil_scoped_release no_gil; + OptionalDeviceGuard device_guard(device_of(self)); + TORCH_CHECK_VALUE(self.sym_numel() == 1, "only one element tensors can be converted to Python scalars"); + return self.template item(); +} + +static PyObject * THPVariable_float_scalar(PyObject* self, PyObject* args) { + HANDLE_TH_ERRORS + if (check_has_torch_function(self)) { + return handle_torch_function(self, "__float__", args); + } + jit::tracer::warn("Converting a tensor to a Python float", jit::tracer::WARN_PYTHON_DATAFLOW); + auto& self_ = THPVariable_Unpack(self); + maybe_warn_requires_grad(self_); + return wrap(dispatch_to(self_)); + END_HANDLE_TH_ERRORS +} + +static PyObject * THPVariable_complex_scalar(PyObject* self, PyObject* args) { + HANDLE_TH_ERRORS + if (check_has_torch_function(self)) { + return handle_torch_function(self, "__complex__", args); + } + jit::tracer::warn("Converting a tensor to a Python complex", jit::tracer::WARN_PYTHON_DATAFLOW); + auto& self_ = THPVariable_Unpack(self); + maybe_warn_requires_grad(self_); + return wrap(dispatch_to>(self_)); + END_HANDLE_TH_ERRORS +} + +static PyObject * THPVariable_integral_scalar(PyObject* self, PyObject* args) { + HANDLE_TH_ERRORS + if (check_has_torch_function(self)) { + return handle_torch_function(self, "__int__", args); + } + jit::tracer::warn("Converting a tensor to a Python integer", jit::tracer::WARN_PYTHON_DATAFLOW); + auto& self_ = THPVariable_Unpack(self); + if (isFloatingType(self_.scalar_type())) { + // we can't dispatch to item here because we want to avoid ATen overflow checks; + // the python integral type (long in python2) can't overflow. + return THPUtils_packDoubleAsInt(dispatch_to(self_)); + } else { + return wrap(dispatch_to(self_)); + } + END_HANDLE_TH_ERRORS +} + +// This is the __index__ function in Python which is similar to __int__, but +// called when used as a slice. +static PyObject * THPVariable_index_scalar(PyObject* self, PyObject* args) { + HANDLE_TH_ERRORS + if (check_has_torch_function(self)) { + return handle_torch_function(self, "__index__", args); + } + auto& self_ = THPVariable_Unpack(self); + // TODO: change the condition to `self_.dim() != 0` once we expose scalars + // in PyTorch. + if (!isIntegralType(self_.scalar_type(), /*includeBool=*/true) || self_.sym_numel() != 1) { + throw TypeError("only integer tensors of a single element can be converted to an index"); + } + return wrap(dispatch_to(self_)); + END_HANDLE_TH_ERRORS +} + +static Tensor dispatch_invert(const Tensor & self) { + pybind11::gil_scoped_release no_gil; + OptionalDeviceGuard device_guard(device_of(self)); + return self.bitwise_not(); +} + +static PyObject * THPVariable_invert(PyObject* self, PyObject* args) { + HANDLE_TH_ERRORS + if (check_has_torch_function(self)) { + return handle_torch_function(self, "__invert__", args); + } + auto& self_ = THPVariable_Unpack(self); + if (!isIntegralType(self_.scalar_type(), /*includeBool=*/true)) { + throw TypeError("~ (operator.invert) is only implemented on integer and Boolean-type tensors"); + } + return THPVariable_Wrap(dispatch_invert(self_)); + END_HANDLE_TH_ERRORS +} + +static Tensor dispatch_to(const Tensor & self, Device device, bool non_blocking, bool copy, std::optional optional_memory_format) { + pybind11::gil_scoped_release no_gil; + // NOTE: this is where we record aten::to in the graph during tracing. However, the behavior of aten::to + // is different with respect to TensorOptions fields that are not present: aten::to inherits fields that + // are missing from the self argument while the tracer assumes that they should be populated with the + // default values (eg. float for scalar type). By explicitly copying over the tensor options here we fully + // specify all tensor options and thus record the proper trace + return self.to(self.options().device(device).memory_format(optional_memory_format), non_blocking, copy); +} + +static Tensor dispatch_to(const Tensor & self, bool non_blocking, bool copy, std::optional optional_memory_format) { + pybind11::gil_scoped_release no_gil; + return self.to(self.options().memory_format(optional_memory_format), non_blocking, copy); +} + +static Tensor dispatch_to(const Tensor & self, ScalarType dtype, bool non_blocking, bool copy, std::optional optional_memory_format) { + pybind11::gil_scoped_release no_gil; + // TODO: Make this call the TensorOptions version, maybe? + return self.to(dtype, non_blocking, copy, optional_memory_format); +} + +static Tensor dispatch_to(const Tensor & self, Device device, ScalarType dtype, bool non_blocking, bool copy, std::optional optional_memory_format) { + pybind11::gil_scoped_release no_gil; + // TODO: Make this call the TensorOptions version, maybe? + return self.to(device, dtype, non_blocking, copy, optional_memory_format); +} + +static PyObject * THPVariable_cpu(PyObject* self, PyObject* args, PyObject* kwargs) +{ + HANDLE_TH_ERRORS + static PythonArgParser parser({ + "cpu(*, MemoryFormat? memory_format=None)" + }); + auto& self_ = THPVariable_Unpack(self); + ParsedArgs<1> parsed_args; + auto r = parser.parse(self, args, kwargs, parsed_args); + + if(r.has_torch_function()){ + return handle_torch_function(r, self, args, kwargs, THPVariableClass, "torch.Tensor"); + } + + auto opt_memory_format = r.memoryformatOptional(0); + return THPVariable_Wrap(dispatch_to(self_, at::Device(at::DeviceType::CPU), false, false, opt_memory_format)); + END_HANDLE_TH_ERRORS +} + +static Tensor dispatch_nonzero(const Tensor & self) { + pybind11::gil_scoped_release no_gil; + OptionalDeviceGuard device_guard(device_of(self)); + return self.nonzero(); +} + +static std::vector dispatch_nonzero_numpy(const Tensor & self) { + pybind11::gil_scoped_release no_gil; + OptionalDeviceGuard device_guard(device_of(self)); + return self.nonzero_numpy(); +} + +static PyObject * THPVariable_nonzero(PyObject* self, PyObject* args, PyObject* kwargs) +{ + HANDLE_TH_ERRORS + static PythonArgParser parser({ + "nonzero()", + "nonzero(*, bool as_tuple)", + }); + auto& self_ = THPVariable_Unpack(self); + ParsedArgs<2> parsed_args; + auto r = parser.parse(self, args, kwargs, parsed_args); + + if(r.has_torch_function()){ + return handle_torch_function(r, self, args, kwargs, THPVariableClass, "torch.Tensor"); + } + + if (r.idx == 0 || (r.idx == 1 && !r.toBool(0))) { + return wrap(dispatch_nonzero(self_)); + } else { + return wrap(dispatch_nonzero_numpy(self_)); + } + END_HANDLE_TH_ERRORS +} + +static PyObject * THPVariable_cuda(PyObject* self, PyObject* args, PyObject* kwargs) +{ + HANDLE_TH_ERRORS + static PythonArgParser parser({ + "cuda(Device? device=None, bool non_blocking=False, *, MemoryFormat? memory_format=None)", + "cuda(Device? device=None, bool async=False, *, MemoryFormat? memory_format=None)|deprecated" + }); + auto& self_ = THPVariable_Unpack(self); + ParsedArgs<3> parsed_args; + auto r = parser.parse(self, args, kwargs, parsed_args); + + if(r.has_torch_function()){ + return handle_torch_function(r, self, args, kwargs, THPVariableClass, "torch.Tensor"); + } + + auto device = r.isNone(0) ? at::Device(at::DeviceType::CUDA) : r.device(0); + auto opt_memory_format = r.memoryformatOptional(2); + TORCH_CHECK(device.is_cuda(), "Invalid device, must be cuda device"); + torch::utils::device_lazy_init(at::kCUDA); + return THPVariable_Wrap(dispatch_to(self_, device, r.toBool(1), false, opt_memory_format)); + END_HANDLE_TH_ERRORS +} + +static PyObject * THPVariable_mtia(PyObject* self, PyObject* args, PyObject* kwargs) +{ + HANDLE_TH_ERRORS + static PythonArgParser parser({ + "mtia(Device? device=None, bool non_blocking=False, *, MemoryFormat? memory_format=None)", + "mtia(Device? device=None, bool async=False, *, MemoryFormat? memory_format=None)|deprecated" + }); + auto& self_ = THPVariable_Unpack(self); + ParsedArgs<3> parsed_args; + auto r = parser.parse(self, args, kwargs, parsed_args); + + if (r.has_torch_function()) { + return handle_torch_function(r, self, args, kwargs, THPVariableClass, "torch.Tensor"); + } + + auto device = r.isNone(0) ? at::Device(at::DeviceType::MTIA) : r.device(0); + auto opt_memory_format = r.memoryformatOptional(2); + TORCH_CHECK(device.is_mtia(), "Invalid device, must be MTIA device"); + torch::utils::device_lazy_init(at::kMTIA); + return THPVariable_Wrap(dispatch_to(self_, device, r.toBool(1), false, opt_memory_format)); + END_HANDLE_TH_ERRORS +} + +static PyObject * THPVariable_xpu(PyObject* self, PyObject* args, PyObject* kwargs) +{ + HANDLE_TH_ERRORS + static PythonArgParser parser({ + "xpu(Device? device=None, bool non_blocking=False, *, MemoryFormat? memory_format=None)", + "xpu(Device? device=None, bool async=False, *, MemoryFormat? memory_format=None)|deprecated" + }); + auto& self_ = THPVariable_Unpack(self); + ParsedArgs<3> parsed_args; + auto r = parser.parse(self, args, kwargs, parsed_args); + + if (r.has_torch_function()) { + return handle_torch_function(r, self, args, kwargs, THPVariableClass, "torch.Tensor"); + } + + auto device = r.isNone(0) ? at::Device(at::DeviceType::XPU) : r.device(0); + auto opt_memory_format = r.memoryformatOptional(2); + TORCH_CHECK(device.is_xpu(), "Invalid device, must be xpu device"); + torch::utils::device_lazy_init(at::kXPU); + return THPVariable_Wrap(dispatch_to(self_, device, r.toBool(1), false, opt_memory_format)); + END_HANDLE_TH_ERRORS +} + +static PyObject * THPVariable_ipu(PyObject* self, PyObject* args, PyObject* kwargs) +{ + HANDLE_TH_ERRORS + static PythonArgParser parser({ + "ipu(Device? device=None, bool non_blocking=False, *, MemoryFormat? memory_format=None)", + "ipu(Device? device=None, bool async=False, *, MemoryFormat? memory_format=None)|deprecated" + }); + auto& self_ = THPVariable_Unpack(self); + ParsedArgs<3> parsed_args; + auto r = parser.parse(self, args, kwargs, parsed_args); + + if (r.has_torch_function()) { + return handle_torch_function(r, self, args, kwargs, THPVariableClass, "torch.Tensor"); + } + + auto device = r.isNone(0) ? at::Device(at::DeviceType::IPU) : r.device(0); + auto opt_memory_format = r.memoryformatOptional(2); + TORCH_CHECK(device.is_ipu(), "Invalid device, must be ipu device"); + return THPVariable_Wrap(dispatch_to(self_, device, r.toBool(1), false, opt_memory_format)); + END_HANDLE_TH_ERRORS +} + +static PyObject * THPVariable_to_type(PyObject* self, ScalarType scalarType, std::optional optional_memory_format) { + HANDLE_TH_ERRORS + auto& self_ = THPVariable_Unpack(self); + return THPVariable_Wrap(dispatch_to(self_, scalarType, false, false, optional_memory_format)); + END_HANDLE_TH_ERRORS +} + +static PyObject * THPVariable_byte(PyObject* self, PyObject* args, PyObject* kwargs) { + HANDLE_TH_ERRORS + static PythonArgParser parser({ + "byte(*, MemoryFormat? memory_format=None)" + }); + ParsedArgs<1> parsed_args; + auto r = parser.parse(self, args, kwargs, parsed_args); + + if(r.has_torch_function()){ + return handle_torch_function(r, self, args, kwargs, THPVariableClass, "torch.Tensor"); + } + + auto opt_memory_format = r.memoryformatOptional(0); + return THPVariable_to_type(self, ScalarType::Byte, opt_memory_format); + END_HANDLE_TH_ERRORS +} + +static PyObject * THPVariable_char(PyObject* self, PyObject* args, PyObject* kwargs) { + HANDLE_TH_ERRORS + static PythonArgParser parser({ + "char(*, MemoryFormat? memory_format=None)" + }); + ParsedArgs<1> parsed_args; + auto r = parser.parse(self, args, kwargs, parsed_args); + + if(r.has_torch_function()){ + return handle_torch_function(r, self, args, kwargs, THPVariableClass, "torch.Tensor"); + } + + auto opt_memory_format = r.memoryformatOptional(0); + return THPVariable_to_type(self, ScalarType::Char, opt_memory_format); + END_HANDLE_TH_ERRORS +} + +static PyObject * THPVariable_double(PyObject* self, PyObject* args, PyObject* kwargs) { + HANDLE_TH_ERRORS + static PythonArgParser parser({ + "double(*, MemoryFormat? memory_format=None)" + }); + ParsedArgs<1> parsed_args; + auto r = parser.parse(self, args, kwargs, parsed_args); + + if(r.has_torch_function()){ + return handle_torch_function(r, self, args, kwargs, THPVariableClass, "torch.Tensor"); + } + + auto opt_memory_format = r.memoryformatOptional(0); + return THPVariable_to_type(self, ScalarType::Double, opt_memory_format); + END_HANDLE_TH_ERRORS +} + +static PyObject * THPVariable_float(PyObject* self, PyObject* args, PyObject* kwargs) { + HANDLE_TH_ERRORS + static PythonArgParser parser({ + "float(*, MemoryFormat? memory_format=None)" + }); + ParsedArgs<1> parsed_args; + auto r = parser.parse(self, args, kwargs, parsed_args); + + if(r.has_torch_function()){ + return handle_torch_function(r, self, args, kwargs, THPVariableClass, "torch.Tensor"); + } + + auto opt_memory_format = r.memoryformatOptional(0); + return THPVariable_to_type(self, ScalarType::Float, opt_memory_format); + END_HANDLE_TH_ERRORS +} + +static PyObject * THPVariable_cdouble(PyObject* self, PyObject* args, PyObject* kwargs) { + HANDLE_TH_ERRORS + static PythonArgParser parser({ + "cdouble(*, MemoryFormat? memory_format=None)" + }); + ParsedArgs<1> parsed_args; + auto r = parser.parse(self, args, kwargs, parsed_args); + + if(r.has_torch_function()){ + return handle_torch_function(r, self, args, kwargs, THPVariableClass, "torch.Tensor"); + } + + auto opt_memory_format = r.memoryformatOptional(0); + return THPVariable_to_type(self, ScalarType::ComplexDouble, opt_memory_format); + END_HANDLE_TH_ERRORS +} + +static PyObject * THPVariable_cfloat(PyObject* self, PyObject* args, PyObject* kwargs) { + HANDLE_TH_ERRORS + static PythonArgParser parser({ + "cfloat(*, MemoryFormat? memory_format=None)" + }); + ParsedArgs<1> parsed_args; + auto r = parser.parse(self, args, kwargs, parsed_args); + + if(r.has_torch_function()){ + return handle_torch_function(r, self, args, kwargs, THPVariableClass, "torch.Tensor"); + } + + auto opt_memory_format = r.memoryformatOptional(0); + return THPVariable_to_type(self, ScalarType::ComplexFloat, opt_memory_format); + END_HANDLE_TH_ERRORS +} + +static PyObject * THPVariable_half(PyObject* self, PyObject* args, PyObject* kwargs) { + HANDLE_TH_ERRORS + static PythonArgParser parser({ + "half(*, MemoryFormat? memory_format=None)" + }); + ParsedArgs<1> parsed_args; + auto r = parser.parse(self, args, kwargs, parsed_args); + + if(r.has_torch_function()){ + return handle_torch_function(r, self, args, kwargs, THPVariableClass, "torch.Tensor"); + } + + auto opt_memory_format = r.memoryformatOptional(0); + return THPVariable_to_type(self, ScalarType::Half, opt_memory_format); + END_HANDLE_TH_ERRORS +} + +static PyObject * THPVariable_int(PyObject* self, PyObject* args, PyObject* kwargs) { + HANDLE_TH_ERRORS + static PythonArgParser parser({ + "int(*, MemoryFormat? memory_format=None)" + }); + ParsedArgs<1> parsed_args; + auto r = parser.parse(self, args, kwargs, parsed_args); + + if(r.has_torch_function()){ + return handle_torch_function(r, self, args, kwargs, THPVariableClass, "torch.Tensor"); + } + + auto opt_memory_format = r.memoryformatOptional(0); + return THPVariable_to_type(self, ScalarType::Int, opt_memory_format); + END_HANDLE_TH_ERRORS +} + +static PyObject * THPVariable_long(PyObject* self, PyObject* args, PyObject* kwargs) { + HANDLE_TH_ERRORS + static PythonArgParser parser({ + "long(*, MemoryFormat? memory_format=None)" + }); + ParsedArgs<1> parsed_args; + auto r = parser.parse(self, args, kwargs, parsed_args); + + if(r.has_torch_function()){ + return handle_torch_function(r, self, args, kwargs, THPVariableClass, "torch.Tensor"); + } + + auto opt_memory_format = r.memoryformatOptional(0); + return THPVariable_to_type(self, ScalarType::Long, opt_memory_format); + END_HANDLE_TH_ERRORS +} + +static PyObject * THPVariable_short(PyObject* self, PyObject* args, PyObject* kwargs) { + HANDLE_TH_ERRORS + static PythonArgParser parser({ + "short(*, MemoryFormat? memory_format=None)" + }); + ParsedArgs<1> parsed_args; + auto r = parser.parse(self, args, kwargs, parsed_args); + + if(r.has_torch_function()){ + return handle_torch_function(r, self, args, kwargs, THPVariableClass, "torch.Tensor"); + } + + auto opt_memory_format = r.memoryformatOptional(0); + return THPVariable_to_type(self, ScalarType::Short, opt_memory_format); + END_HANDLE_TH_ERRORS +} + +static PyObject * THPVariable_bool(PyObject* self, PyObject* args, PyObject* kwargs) { + HANDLE_TH_ERRORS + static PythonArgParser parser({ + "bool(*, MemoryFormat? memory_format=None)" + }); + ParsedArgs<1> parsed_args; + auto r = parser.parse(self, args, kwargs, parsed_args); + + if(r.has_torch_function()){ + return handle_torch_function(r, self, args, kwargs, THPVariableClass, "torch.Tensor"); + } + + auto opt_memory_format = r.memoryformatOptional(0); + return THPVariable_to_type(self, ScalarType::Bool, opt_memory_format); + END_HANDLE_TH_ERRORS +} + +static PyObject * THPVariable_bfloat16(PyObject* self, PyObject* args, PyObject* kwargs) { + HANDLE_TH_ERRORS + static PythonArgParser parser({ + "bfloat16(*, MemoryFormat? memory_format=None)" + }); + ParsedArgs<1> parsed_args; + auto r = parser.parse(self, args, kwargs, parsed_args); + + if(r.has_torch_function()){ + return handle_torch_function(r, self, args, kwargs, THPVariableClass, "torch.Tensor"); + } + + auto opt_memory_format = r.memoryformatOptional(0); + return THPVariable_to_type(self, ScalarType::BFloat16, opt_memory_format); + END_HANDLE_TH_ERRORS +} + +static PyObject * THPVariable_element_size(PyObject* self, PyObject* args) +{ + HANDLE_TH_ERRORS + if (check_has_torch_function(self)) { + return handle_torch_function(self, "element_size", args); + } + auto& self_ = THPVariable_Unpack(self); + return THPUtils_packInt64(self_.element_size()); + END_HANDLE_TH_ERRORS +} + +// implemented on the python object bc PyObjects not declarable in native_functions.yaml +// See: ATen/native/README.md for more context +static PyObject * THPVariable_numpy(PyObject* self, PyObject* args, PyObject* kwargs) +{ + HANDLE_TH_ERRORS + static PythonArgParser parser({ + "numpy(*, bool force=False)" + }); + auto& self_ = THPVariable_Unpack(self); + ParsedArgs<1> parsed_args; + auto r = parser.parse(self, args, kwargs, parsed_args); + + if (r.has_torch_function()) { + return handle_torch_function(r, self, args, kwargs, THPVariableClass, "torch.Tensor"); + } + + jit::tracer::warn("Converting a tensor to a NumPy array", jit::tracer::WARN_PYTHON_DATAFLOW); + return torch::utils::tensor_to_numpy(self_, r.toBool(0)); + END_HANDLE_TH_ERRORS +} + +static PyObject * THPVariable_requires_grad_(PyObject* self, PyObject* args, PyObject* kwargs) +{ + HANDLE_TH_ERRORS + static PythonArgParser parser({ + "requires_grad_(bool requires_grad=True)", + }); + auto& self_ = THPVariable_Unpack(self); + ParsedArgs<1> parsed_args; + auto r = parser.parse(self, args, kwargs, parsed_args); + + if(r.has_torch_function()){ + return handle_torch_function(r, self, args, kwargs, THPVariableClass, "torch.Tensor"); + } + + // temporary hack to improve functorch UX. + const auto& functorch_tls = at::functorch::functorchTLSAccessor(); + if (functorch_tls) { + functorch_tls->checkSupportsInplaceRequiresGrad(); + } + + auto requires_grad = r.toBool(0); + // should we throw if requires_grad is true? var.requires_grad = True throws here + // but it's nice to let this be a no-op. + if (!self_.is_leaf() && !requires_grad) { + throw std::runtime_error(autograd::utils::requires_grad_leaf_error(requires_grad)); + } + if (requires_grad && ! isDifferentiableType(at::typeMetaToScalarType(self_.dtype()))) { + throw std::runtime_error("only Tensors of floating point dtype can require gradients"); + } + self_.set_requires_grad(requires_grad); + return THPVariable_Wrap(self_); + END_HANDLE_TH_ERRORS +} + +static inline bool dispatch_is_contiguous(const Tensor & self, MemoryFormat memory_format) { + return self.is_contiguous(memory_format); +} + +// implemented on the python object to avoid dispatch overhead +static PyObject * THPVariable_is_contiguous(PyObject* self_, PyObject* args, PyObject* kwargs) +{ + HANDLE_TH_ERRORS + static PythonArgParser parser({ + "is_contiguous(*, MemoryFormat memory_format=contiguous_format)", + }); + ParsedArgs<1> parsed_args; + auto r = parser.parse(self_, args, kwargs, parsed_args); + + if(r.has_torch_function()){ + return handle_torch_function(r, self_, args, kwargs, reinterpret_cast(Py_TYPE(self_)), "torch.Tensor"); + } + + auto memory_format = r.memoryformat(0); + auto& self = THPVariable_Unpack(self_); + return wrap(dispatch_is_contiguous(self, memory_format)); + END_HANDLE_TH_ERRORS +} + +// implemented on the python object to avoid dispatch overhead +static PyObject * THPVariable_item(PyObject* self, PyObject* args) +{ + HANDLE_TH_ERRORS + if (check_has_torch_function(self)) { + return handle_torch_function(self, "item", args); + } + jit::tracer::warn("Converting a tensor to a Python number", jit::tracer::WARN_PYTHON_DATAFLOW); + auto& self_ = THPVariable_Unpack(self); + auto dispatch_item_ = [](const Tensor& self) -> at::Scalar { + pybind11::gil_scoped_release no_gil; + return self.item(); + }; + return py::cast(dispatch_item_(self_)).release().ptr(); + END_HANDLE_TH_ERRORS +} + +// implemented on the python object bc no support for first class functions in native_functions.yaml +// See: ATen/native/README.md for more context +static PyObject * THPVariable_map_(PyObject* self, PyObject* args, PyObject* kwargs) +{ + HANDLE_TH_ERRORS + static PythonArgParser parser({ "map_(Tensor other, PyObject* callable)" }); + auto& self_ = THPVariable_Unpack(self); + ParsedArgs<2> parsed_args; + auto r = parser.parse(self, args, kwargs, parsed_args); + + if(r.has_torch_function()){ + return handle_torch_function(r, self, args, kwargs, THPVariableClass, "torch.Tensor"); + } + + Variable other = r.tensor(0); + if (self_.requires_grad() || other.requires_grad()) { + throw std::runtime_error( + "Can't call map_() on Variable that requires grad. Use " + "var.detach().map_() instead."); + } + TORCH_CHECK( + !self_.unsafeGetTensorImpl()->is_python_dispatch() && !other.unsafeGetTensorImpl()->is_python_dispatch(), + ".map_ is not supported for tensor subclasses."); + + return THPVariable_Wrap(torch::utils::map_(self_, other, r.pyobject(1))); + END_HANDLE_TH_ERRORS +} + +// implemented on the python object bc no support for first class functions in native_functions.yaml +// See: ATen/native/README.md for more context +static PyObject * THPVariable_map2_(PyObject* self, PyObject* args, PyObject* kwargs) +{ + HANDLE_TH_ERRORS + static PythonArgParser parser({ "map2_(Tensor x, Tensor y, PyObject* callable)" }); + auto& self_ = THPVariable_Unpack(self); + ParsedArgs<3> parsed_args; + auto r = parser.parse(self, args, kwargs, parsed_args); + + if(r.has_torch_function()){ + return handle_torch_function(r, self, args, kwargs, THPVariableClass, "torch.Tensor"); + } + + Variable x = r.tensor(0); + Variable y = r.tensor(1); + if (self_.requires_grad() || x.requires_grad() || y.requires_grad()) { + throw std::runtime_error( + "Can't call map2_() on Variable that requires grad. Use " + "var.detach().map2_() instead."); + } + TORCH_CHECK( + !x.unsafeGetTensorImpl()->is_python_dispatch() && !y.unsafeGetTensorImpl()->is_python_dispatch(), + ".map2_ is not supported for tensor subclasses."); + return THPVariable_Wrap(torch::utils::map2_(self_, x, y, r.pyobject(2))); + END_HANDLE_TH_ERRORS +} + +static PyObject * THPVariable_new(PyObject* self, PyObject* args, PyObject* kwargs) +{ + HANDLE_TH_ERRORS + if (check_has_torch_function(self)) { + return handle_torch_function(self, "new", args, kwargs); + } + auto& self_ = THPVariable_Unpack(self); + OptionalDeviceGuard device_guard(device_of(self_)); + return THPVariable_Wrap(torch::utils::legacy_tensor_new(legacyExtractDispatchKey(self_), self_.scalar_type(), args, kwargs)); + END_HANDLE_TH_ERRORS +} + +static PyObject * THPVariable_new_tensor(PyObject* self, PyObject* args, PyObject* kwargs) +{ + HANDLE_TH_ERRORS + if (check_has_torch_function(self)) { + return handle_torch_function(self, "new_tensor", args, kwargs); + } + auto& self_ = THPVariable_Unpack(self); + OptionalDeviceGuard device_guard(device_of(self_)); + return THPVariable_Wrap(torch::utils::new_tensor(legacyExtractDispatchKey(self_), self_.scalar_type(), args, kwargs)); + END_HANDLE_TH_ERRORS +} + +static PyObject * THPVariable_storage(PyObject* self, PyObject* arg) +{ + HANDLE_TH_ERRORS + if (check_has_torch_function(self)) { + return handle_torch_function(self, "untyped_storage"); + } + auto& self_ = THPVariable_Unpack(self); + return createPyObject(self_.storage()); + END_HANDLE_TH_ERRORS +} + +static PyObject * THPVariable_to(PyObject* self, PyObject* args, PyObject* kwargs) +{ + HANDLE_TH_ERRORS + static PythonArgParser parser({ + "to(Device device=None, ScalarType dtype=None, bool non_blocking=False, bool copy=False, *, MemoryFormat? memory_format=None)", + "to(ScalarType dtype, bool non_blocking=False, bool copy=False, *, MemoryFormat? memory_format=None)", + "to(Tensor tensor, bool non_blocking=False, bool copy=False, *, MemoryFormat? memory_format=None)", + }); + ParsedArgs<5> parsed_args; + auto r = parser.parse(self, args, kwargs, parsed_args); + if (r.has_torch_function()) { + return handle_torch_function(r, self, args, kwargs, THPVariableClass, "torch.Tensor"); + } + auto parsed = parse_to_conversion(r, /*allow_copy*/ true); + auto& device = std::get<0>(parsed); + auto& scalarType = std::get<1>(parsed); + auto non_blocking = std::get<2>(parsed); + auto copy = std::get<3>(parsed); + auto opt_memory_format = std::get<4>(parsed); + auto& self_ = THPVariable_Unpack(self); + torch::utils::maybe_initialize_device(device); + if (!device && !scalarType && !copy && !opt_memory_format.has_value()) { + Py_INCREF(self); + return self; + } else if (!device && !scalarType) { + return THPVariable_Wrap( + dispatch_to(self_, non_blocking, copy, opt_memory_format)); + } else if (!device) { + return THPVariable_Wrap(dispatch_to(self_, *scalarType, non_blocking, copy, opt_memory_format)); + } else if (!scalarType) { + return THPVariable_Wrap(dispatch_to(self_, *device, non_blocking, copy, opt_memory_format)); + } else { + return THPVariable_Wrap(dispatch_to(self_, *device, *scalarType, non_blocking, copy, opt_memory_format)); + } + Py_RETURN_NONE; + END_HANDLE_TH_ERRORS +} + +// implemented on the python object b/c arbitrarily nested list not declarable in native_functions.yaml +// See: ATen/native/README.md for more context +static PyObject * THPVariable_tolist(PyObject* self, PyObject* args) +{ + HANDLE_TH_ERRORS + if (check_has_torch_function(self)) { + return handle_torch_function(self, "tolist", args); + } + jit::tracer::warn("Converting a tensor to a Python list", jit::tracer::WARN_PYTHON_DATAFLOW); + auto self_ = THPVariable_Unpack(self); + return torch::utils::tensor_to_list(self_); + END_HANDLE_TH_ERRORS +} + +static PyObject * THPVariable_type(PyObject* self, PyObject* args, PyObject* kwargs) +{ + HANDLE_TH_ERRORS + static PythonArgParser parser({ + "type(PyObject* dtype=None, bool non_blocking=False, *, MemoryFormat? memory_format=None)", + "type(PyObject* dtype=None, bool async=False, *, MemoryFormat? memory_format=None)|deprecated" + }); + auto& self_ = THPVariable_Unpack(self); + ParsedArgs<3> parsed_args; + auto r = parser.parse(self, args, kwargs, parsed_args); + + if(r.has_torch_function()){ + return handle_torch_function(r, self, args, kwargs, THPVariableClass, "torch.Tensor"); + } + + if (r.isNone(0)) { + return THPUtils_packString(torch::utils::options_to_string(self_.options())); + } + auto obj = r.pyobject(0); + auto opt_memory_format = r.memoryformatOptional(2); + std::string type_name; + bool is_dtype = false; + if (PyType_Check(obj)) { + if (obj == THPVariableClass) { + type_name = "torch.Tensor"; + } else { + type_name = ((PyTypeObject*)obj)->tp_name; + } + } else if (THPUtils_checkString(obj)) { + type_name = THPUtils_unpackString(obj); + } else if (THPDtype_Check(obj)) { + is_dtype = true; + } else { + throw TypeError("dtype must be a type, str, or dtype object"); + } + Device device = self_.device(); + if (is_dtype) { + auto scalar_type = r.scalartype(0); + return THPVariable_Wrap(dispatch_to(self_, scalar_type, /*non_blocking=*/ r.toBool(1), /*copy=*/ false, opt_memory_format)); + } + at::TensorOptions options = torch::utils::options_from_string(type_name); + auto scalar_type = at::typeMetaToScalarType(options.dtype()); + auto device_type = options.device().type(); + if (device_type != device.type()) { + device = at::Device(device_type); + } + torch::utils::maybe_initialize_device(device); + return THPVariable_Wrap(dispatch_to(self_, device, scalar_type, /*non_blocking=*/ r.toBool(1), /*copy=*/ false, opt_memory_format)); + END_HANDLE_TH_ERRORS +} + +// generated methods start here + +${py_methods} + +static PyObject * THPVariable_bool_scalar(PyObject* self, PyObject* args) { + if (check_has_torch_function(self)) { + HANDLE_TH_ERRORS + return handle_torch_function(self, "__bool__", args); + END_HANDLE_TH_ERRORS + } + jit::tracer::warn("Converting a tensor to a Python boolean", jit::tracer::WARN_PYTHON_DATAFLOW); + return THPVariable_is_nonzero(self, args); +} + +static PyObject * THPVariable___eq__(PyObject* self_, PyObject* args, PyObject* kwargs) +{ + HANDLE_TH_ERRORS +#ifdef USE_NUMPY + if (torch::utils::is_numpy_available()) { + static PythonArgParser parser({ + "__eq__(PyObject* other)", + }, /*traceable=*/true); + + ParsedArgs<1> parsed_args; + auto _r = parser.parse(self_, args, kwargs, parsed_args); + if(_r.has_torch_function()) { + return handle_torch_function(_r, self_, args, kwargs, THPVariableClass, "torch.Tensor"); + } + switch (_r.idx) { + case 0: { + auto other = _r.pyobject(0); + if (PyArray_Check(other)) { + auto other_tensor = torch::utils::tensor_from_numpy(other); + auto dispatch_eq = [](const at::Tensor & self, const at::Tensor & other) -> at::Tensor { + pybind11::gil_scoped_release no_gil; + return self.eq(other); + }; + const Tensor& self = THPVariable_Unpack(self_); + return wrap(dispatch_eq(self, other_tensor)); + } + } + } + } +#endif + return THPVariable_eq(self_, args, kwargs); + Py_RETURN_NONE; + END_HANDLE_TH_ERRORS +} + +// Wrapper converts a raised TypeError into returning NotImplemented +// Used to implement binary arithmetic operators +template +static PyObject * TypeError_to_NotImplemented_(PyObject* self, PyObject* args, PyObject* kwargs) { + + PyObject* ret = Func(self, args, kwargs); + if (!ret && PyErr_ExceptionMatches(PyExc_TypeError)) { + PyErr_Clear(); + Py_INCREF(Py_NotImplemented); + ret = Py_NotImplemented; + } + return ret; +} + +// set_ has to be defined in the template because the c10::Storage object +// does not have a type, and we need to make sure the Python storage object's +// type matches the tensor's type +static PyObject* THPVariable_set_( + PyObject* self_, + PyObject* args, + PyObject* kwargs) { + HANDLE_TH_ERRORS + const Tensor& self = THPVariable_Unpack(self_); + static PythonArgParser parser( + { + "set_()", + "set_(Storage source)", + "set_(Storage source, SymInt storage_offset, SymIntArrayRef size, SymIntArrayRef stride=None)", + "set_(Tensor source)", + "set_(Tensor source, SymInt storage_offset, SymIntArrayRef size, SymIntArrayRef stride=None)", + }, + /*traceable=*/false); + + ParsedArgs<4> parsed_args; + auto _r = parser.parse(args, kwargs, parsed_args); + + switch (_r.idx) { + case 0: { + // aten::set_(Tensor(a!) self) -> Tensor(a!) + auto dispatch_set_ = [](const Tensor& self) -> Tensor { + pybind11::gil_scoped_release no_gil; + return self.set_(); + }; + return wrap(dispatch_set_(self)); + } + case 1: { + // aten::set_.source_Storage(Tensor(a!) self, Storage source) -> + // Tensor(a!) + at::ScalarType storage_scalar_type{}; + bool is_typed_storage = true; + at::Storage storage = _r.storage(0, storage_scalar_type, is_typed_storage); + TORCH_CHECK(storage_scalar_type == self.dtype() || !is_typed_storage, + "Expected a Storage of type ", self.dtype(), + " or an UntypedStorage, but got type ", storage_scalar_type, + " for argument 1 'storage'"); + auto dispatch_set_ = [](const Tensor& self, Storage source) -> Tensor { + pybind11::gil_scoped_release no_gil; + return self.set_(std::move(source)); + }; + return wrap(dispatch_set_(self, storage)); + } + case 2: { + // aten::set_.source_Storage_storage_offset(Tensor(a!) self, Storage + // source, int storage_offset, int[] size, int[] stride=[]) -> Tensor(a!) + at::ScalarType storage_scalar_type{}; + bool is_typed_storage = true; + at::Storage storage = _r.storage(0, storage_scalar_type, is_typed_storage); + TORCH_CHECK(storage_scalar_type == self.dtype() || !is_typed_storage, + "Expected a Storage of type ", self.dtype(), + " or an UntypedStorage, but got type ", storage_scalar_type, + " for argument 1 'storage'"); + auto dispatch_set_ = [](const Tensor& self, + Storage source, + c10::SymInt storage_offset, + c10::SymIntArrayRef size, + c10::SymIntArrayRef stride) -> Tensor { + pybind11::gil_scoped_release no_gil; + return self.set__symint(std::move(source), std::move(storage_offset), size, stride); + }; + return wrap(dispatch_set_( + self, storage, _r.toSymInt(1), _r.symintlist(2), _r.symintlist(3))); + } + case 3: { + // aten::set_.source_Tensor(Tensor(a!) self, Tensor source) -> Tensor(a!) + auto dispatch_set_ = [](const Tensor& self, const Tensor& source) -> Tensor { + TORCH_CHECK(source.dtype() == self.dtype(), "Could not set tensor of type ", source.dtype(), " to a tensor of type ", self.dtype()); + pybind11::gil_scoped_release no_gil; + return self.set_(source); + }; + return wrap(dispatch_set_(self, _r.tensor(0))); + } + case 4: { + // aten::set_.source_Tensor_storage_offset(Tensor(a!) self, Tensor + // source, int storage_offset, int[] size, int[] stride=[]) -> Tensor(a!) + at::Tensor storage = _r.tensor(0); + auto dispatch_set_ = [](const Tensor& self, + const Tensor& source, + c10::SymInt storage_offset, + c10::SymIntArrayRef size, + c10::SymIntArrayRef stride) -> Tensor { + pybind11::gil_scoped_release no_gil; + return self.set__symint(source, std::move(storage_offset), size, stride); + }; + return wrap(dispatch_set_( + self, storage, _r.toSymInt(1), _r.symintlist(2), _r.symintlist(3))); + } + } + Py_RETURN_NONE; + END_HANDLE_TH_ERRORS +} + +// XXX: ops that are bound here are not exposed to the C++ api nor the JIT. +// Any new ops added here should be accompanied with a comment why they are not +// being registered through native_functions.yaml, and be tagged cpp / JIT +PyMethodDef variable_methods[] = { + // These magic methods are all implemented on python object to wrap NotImplementedError + {"__add__", castPyCFunctionWithKeywords(TypeError_to_NotImplemented_), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"__radd__", castPyCFunctionWithKeywords(TypeError_to_NotImplemented_), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"__iadd__", castPyCFunctionWithKeywords(TypeError_to_NotImplemented_), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"__rmul__", castPyCFunctionWithKeywords(TypeError_to_NotImplemented_), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"__mul__", castPyCFunctionWithKeywords(TypeError_to_NotImplemented_), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"__imul__", castPyCFunctionWithKeywords(TypeError_to_NotImplemented_), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"__sub__", castPyCFunctionWithKeywords(TypeError_to_NotImplemented_), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"__isub__", castPyCFunctionWithKeywords(TypeError_to_NotImplemented_), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"__div__", castPyCFunctionWithKeywords(TypeError_to_NotImplemented_), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"__truediv__", castPyCFunctionWithKeywords(TypeError_to_NotImplemented_), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"__floordiv__", castPyCFunctionWithKeywords(TypeError_to_NotImplemented_), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"__idiv__", castPyCFunctionWithKeywords(TypeError_to_NotImplemented_), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"__ifloordiv__", castPyCFunctionWithKeywords(TypeError_to_NotImplemented_), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"__mod__", castPyCFunctionWithKeywords(TypeError_to_NotImplemented_), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"__imod__", castPyCFunctionWithKeywords(TypeError_to_NotImplemented_), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"__eq__", castPyCFunctionWithKeywords(TypeError_to_NotImplemented_), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"__ne__", castPyCFunctionWithKeywords(TypeError_to_NotImplemented_), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"__lt__", castPyCFunctionWithKeywords(TypeError_to_NotImplemented_), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"__le__", castPyCFunctionWithKeywords(TypeError_to_NotImplemented_), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"__gt__", castPyCFunctionWithKeywords(TypeError_to_NotImplemented_), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"__ge__", castPyCFunctionWithKeywords(TypeError_to_NotImplemented_), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"__rand__", castPyCFunctionWithKeywords(TypeError_to_NotImplemented_), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"__ror__", castPyCFunctionWithKeywords(TypeError_to_NotImplemented_), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"__rxor__", castPyCFunctionWithKeywords(TypeError_to_NotImplemented_), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"__bool__", THPVariable_bool_scalar, METH_NOARGS, nullptr}, + {"__float__", THPVariable_float_scalar, METH_NOARGS, nullptr}, + {"__complex__", THPVariable_complex_scalar, METH_NOARGS, nullptr}, + {"__int__", THPVariable_integral_scalar, METH_NOARGS, nullptr}, + {"__long__", THPVariable_integral_scalar, METH_NOARGS, nullptr}, + {"__index__", THPVariable_index_scalar, METH_NOARGS, nullptr}, + {"__nonzero__", THPVariable_bool_scalar, METH_NOARGS, nullptr}, + {"__invert__", THPVariable_invert, METH_NOARGS, nullptr}, + {"__matmul__", castPyCFunctionWithKeywords(TypeError_to_NotImplemented_), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"_is_view", THPVariable__is_view, METH_NOARGS, nullptr}, + {"apply_", THPVariable_apply_, METH_O, nullptr}, + {"bfloat16", castPyCFunctionWithKeywords(THPVariable_bfloat16), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"byte", castPyCFunctionWithKeywords(THPVariable_byte), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"char", castPyCFunctionWithKeywords(THPVariable_char), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"contiguous", castPyCFunctionWithKeywords(THPVariable_contiguous), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"copy_", castPyCFunctionWithKeywords(THPVariable_copy_), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"cpu", castPyCFunctionWithKeywords(THPVariable_cpu), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"cuda", castPyCFunctionWithKeywords(THPVariable_cuda), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"mtia", castPyCFunctionWithKeywords(THPVariable_mtia), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"xpu", castPyCFunctionWithKeywords(THPVariable_xpu), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"ipu", castPyCFunctionWithKeywords(THPVariable_ipu), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"data_ptr", THPVariable_data_ptr, METH_NOARGS, nullptr}, + {"dim", THPVariable_dim, METH_NOARGS, nullptr}, + {"has_names", THPVariable_has_names, METH_NOARGS, nullptr}, + {"double", castPyCFunctionWithKeywords(THPVariable_double), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"cdouble", castPyCFunctionWithKeywords(THPVariable_cdouble), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"element_size", THPVariable_element_size, METH_NOARGS, nullptr}, + {"float", castPyCFunctionWithKeywords(THPVariable_float), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"cfloat", castPyCFunctionWithKeywords(THPVariable_cfloat), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"get_device", THPVariable_get_device, METH_NOARGS, nullptr}, + {"bool", castPyCFunctionWithKeywords(THPVariable_bool), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"half", castPyCFunctionWithKeywords(THPVariable_half), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"int", castPyCFunctionWithKeywords(THPVariable_int), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"is_contiguous", castPyCFunctionWithKeywords(THPVariable_is_contiguous), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"item", THPVariable_item, METH_NOARGS, nullptr}, + {"long", castPyCFunctionWithKeywords(THPVariable_long), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"map_", castPyCFunctionWithKeywords(THPVariable_map_), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"map2_", castPyCFunctionWithKeywords(THPVariable_map2_), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"ndimension", THPVariable_dim, METH_NOARGS, nullptr}, + {"nelement", THPVariable_numel, METH_NOARGS, nullptr}, + {"new", castPyCFunctionWithKeywords(THPVariable_new), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"new_tensor", castPyCFunctionWithKeywords(THPVariable_new_tensor), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"nonzero", castPyCFunctionWithKeywords(THPVariable_nonzero), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"numel", THPVariable_numel, METH_NOARGS, nullptr}, + {"numpy", castPyCFunctionWithKeywords(THPVariable_numpy), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"requires_grad_", castPyCFunctionWithKeywords(THPVariable_requires_grad_), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"set_", castPyCFunctionWithKeywords(THPVariable_set_), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"short", castPyCFunctionWithKeywords(THPVariable_short), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"size", castPyCFunctionWithKeywords(THPVariable_size), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"untyped_storage", THPVariable_storage, METH_NOARGS, nullptr}, + {"storage_offset", THPVariable_storage_offset, METH_NOARGS, nullptr}, + {"stride", castPyCFunctionWithKeywords(THPVariable_stride), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"to", castPyCFunctionWithKeywords(THPVariable_to), METH_VARARGS | METH_KEYWORDS, nullptr}, + {"tolist", THPVariable_tolist, METH_NOARGS, nullptr}, + {"type", castPyCFunctionWithKeywords(THPVariable_type), METH_VARARGS | METH_KEYWORDS, nullptr}, + ${py_method_defs} + {nullptr} +}; + +} // namespace torch::autograd diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/variable_factories.h b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/variable_factories.h new file mode 100644 index 0000000000000000000000000000000000000000..2b55f441ab6249cb7963c5e4a15070f626f775b7 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/packaged/autograd/templates/variable_factories.h @@ -0,0 +1,135 @@ +#pragma once + +// ${generated_comment} + +#include +#include +#include +#include +#include +#include +#include + +#ifndef AT_PER_OPERATOR_HEADERS +#include +#else +#include +$ops_headers +#endif + +#include +#include +#include + +namespace torch { + +/// NOTE: Currently `torch::tensor(...)` doesn't support mixed data types +/// (i.e. `torch::tensor({{bool, 2.0}})` doesn't work). We might be able to +/// support it in the future by iterating over all sub-lists to find +/// the largest data type that can represent all of the elements, or by using +/// variadic templates. +/// +/// NOTE: C++ `torch::tensor` with a floating-point type or an `at::ArrayRef` / `std::vector` / +/// (nested) braced-init-list of floating-point types always produces a tensor of dtype +/// `torch::get_default_dtype()`, matching Python `torch.tensor` behavior. +/// +/// NOTE: C++ `torch::tensor` with an integer type or an `at::ArrayRef` / `std::vector` / +/// (nested) braced-init-list of integer types always produces a tensor of dtype `at::kLong` +/// (aka. int64_t), matching Python `torch.tensor` behavior. +/// +/// NOTE: The following dtypes are not supported by `torch::tensor` currently: +/// - `unsigned int` +/// - `unsigned long int` +/// - `unsigned long long int` +/// - `long long int` +inline at::Tensor tensor(detail::TensorDataContainer tensor_data_container, const at::TensorOptions& options = {}) { + return autograd::make_variable( + // note: we remove the requires_grad setting from the TensorOptions because + // it is ignored anyways (and we actually have an assertion that it isn't set + // which would fail otherwise). We handle requires_grad explicitly here + // instead of passing it through to the kernel. + tensor_data_container.convert_to_tensor(options.requires_grad(::std::nullopt)), + options.requires_grad()); +} + +/// A generic deleter function. +using Deleter = std::function; +using at::MemoryFormat; + +/// Exposes the given `data` as a `Tensor` without taking ownership of the +/// original data. `sizes` should specify the shape of the tensor, `strides` the +/// stride in each dimension. The `deleter` function (a +/// `std::function`) will be called on the `data` when the Tensor +/// data would normally be deallocated. The `TensorOptions` specify additional +/// configuration options for the returned tensor, such as what type to +/// interpret the `data` as. +inline at::Tensor from_blob( + void* data, + at::IntArrayRef sizes, + at::IntArrayRef strides, + const Deleter& deleter, + const at::TensorOptions& options = at::TensorOptions()) { + at::Tensor tensor = ([&]() { + at::AutoDispatchBelowAutograd guard; // TODO: remove + at::tracer::impl::NoTracerDispatchMode tracer_guard; + return at::from_blob(data, sizes, strides, deleter, options.requires_grad(::std::nullopt)); + })(); + return autograd::make_variable(tensor, options.requires_grad()); +} + +/// Exposes the given `data` as a `Tensor` without taking ownership of the +/// original data. `sizes` should specify the shape of the tensor, `strides` the +/// stride in each dimension. The `TensorOptions` +/// specify additional configuration options for the returned tensor, such as +/// what type to interpret the `data` as. +inline at::Tensor from_blob( + void* data, + at::IntArrayRef sizes, + at::IntArrayRef strides, + const at::TensorOptions& options = at::TensorOptions()) { + at::Tensor tensor = ([&]() { + at::AutoDispatchBelowAutograd guard; // TODO: remove + at::tracer::impl::NoTracerDispatchMode tracer_guard; + return at::from_blob(data, sizes, strides, options.requires_grad(::std::nullopt)); + })(); + return autograd::make_variable(tensor, options.requires_grad()); +} + +/// Exposes the given `data` as a `Tensor` without taking ownership of the +/// original data. `sizes` should specify the shape of the tensor. The `deleter` +/// (a `std::function`) function will be called on the `data` when +/// the Tensor data would normally be deallocated. The `TensorOptions` specify +/// additional configuration options for the returned tensor, such as what type +/// to interpret the `data` as. +inline at::Tensor from_blob( + void* data, + at::IntArrayRef sizes, + const Deleter& deleter, + const at::TensorOptions& options = at::TensorOptions()) { + at::Tensor tensor = ([&]() { + at::AutoDispatchBelowAutograd guard; // TODO: remove + at::tracer::impl::NoTracerDispatchMode tracer_guard; + return at::from_blob(data, sizes, deleter, options.requires_grad(::std::nullopt)); + })(); + return autograd::make_variable(tensor, options.requires_grad()); +} + +/// Exposes the given `data` as a `Tensor` without taking ownership of the +/// original data. `sizes` should specify the shape of the tensor. The +/// `TensorOptions` specify additional configuration options for the returned +/// tensor, such as what type to interpret the `data` as. +inline at::Tensor from_blob( + void* data, + at::IntArrayRef sizes, + const at::TensorOptions& options = at::TensorOptions()) { + at::Tensor tensor = ([&]() { + at::AutoDispatchBelowAutograd guard; // TODO: remove + at::tracer::impl::NoTracerDispatchMode tracer_guard; + return at::from_blob(data, sizes, options.requires_grad(::std::nullopt)); + })(); + return autograd::make_variable(tensor, options.requires_grad()); +} + +${function_definitions} + +} // namespace torch diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/selective_build/__init__.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/selective_build/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/selective_build/operator.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/selective_build/operator.py new file mode 100644 index 0000000000000000000000000000000000000000..dc53851a80f561bdb4180a3f50a7e71930afaaa1 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/selective_build/operator.py @@ -0,0 +1,186 @@ +from __future__ import annotations + +from dataclasses import dataclass + + +# This class holds information about a single operator used to determine +# the outcome of a selective/custom PyTorch build that doesn't include +# registration code for all the supported operators. This is done to +# reduce the size of the generated binary so that it can be deployed in +# situations where binary size comes at a premium. +# +@dataclass(frozen=True) +class SelectiveBuildOperator: + # The name of the operator. This includes the aten::, etc... prefix + # The operator name may or may not have the overload name. If this + # operator name does not specify an overload name, the way to determine + # if this entry refers to the family of operators with this base name + # or just the operator with this name is to look at the value of the + # 'include_all_overloads' flag in this class. + name: str + + # True if this is a root operator (i.e. called directly from a + # TorchScript model, etc...). An operator is considered to be a + # root operator if it is called directly from any one of the models + # that this instance of the pytorch library was built for. Hence, it + # may not be a root operator in all of the models that are used in + # this instance of the pytorch library. + is_root_operator: bool + + # Is this operator used for on-device training? If True, then we need to + # use the information to generate code in VariableType_N.cpp for registration + # of training related operators. Again, this is True if this operator + # is used for training in one or more models used by this instance of the + # pytorch library. + is_used_for_training: bool + + # If True, it indicates that this operator instance (object) refers to an + # operator without the overload name and should apply to all overloads + # which have this operator name as the base name. This flag is applicable + # only for objects that have operator names without a DOT (period) character + # in them. + # + # Note: This flag is a temporary workaround to grandfather in the current + # static selective (custom) build mechanism, which largely ignores overload + # names when determining whether to select operators for registration + # purposes. + include_all_overloads: bool + + # Debug Information at the operator level + _debug_info: tuple[str, ...] | None + + @staticmethod + def from_yaml_dict( + op_name: str, op_info: dict[str, object] + ) -> SelectiveBuildOperator: + allowed_keys = { + "name", + "is_root_operator", + "is_used_for_training", + "include_all_overloads", + "debug_info", + } + + if len(set(op_info.keys()) - allowed_keys) > 0: + raise Exception( # noqa: TRY002 + "Got unexpected top level keys: {}".format( + ",".join(set(op_info.keys()) - allowed_keys), + ) + ) + + if "name" in op_info: + if op_name != op_info["name"]: + raise AssertionError( + f"op_name mismatch: {op_name} != {op_info['name']}" + ) + + is_root_operator = op_info.get("is_root_operator", True) + if not isinstance(is_root_operator, bool): + raise AssertionError( + f"Expected 'is_root_operator' to be bool, got {type(is_root_operator)}" + ) + + is_used_for_training = op_info.get("is_used_for_training", True) + if not isinstance(is_used_for_training, bool): + raise AssertionError( + f"Expected 'is_used_for_training' to be bool, got {type(is_used_for_training)}" + ) + + include_all_overloads = op_info.get("include_all_overloads", True) + if not isinstance(include_all_overloads, bool): + raise AssertionError( + f"Expected 'include_all_overloads' to be bool, got {type(include_all_overloads)}" + ) + + debug_info: tuple[str, ...] | None = None + if "debug_info" in op_info: + di_list = op_info["debug_info"] + if not isinstance(di_list, list): + raise AssertionError( + f"Expected 'debug_info' to be list, got {type(di_list)}" + ) + debug_info = tuple(str(x) for x in di_list) + + return SelectiveBuildOperator( + name=op_name, + is_root_operator=is_root_operator, + is_used_for_training=is_used_for_training, + include_all_overloads=include_all_overloads, + _debug_info=debug_info, + ) + + @staticmethod + def from_legacy_operator_name_without_overload( + name: str, + ) -> SelectiveBuildOperator: + return SelectiveBuildOperator( + name=name, + is_root_operator=True, + is_used_for_training=True, + include_all_overloads=True, + _debug_info=None, + ) + + def to_dict(self) -> dict[str, object]: + ret: dict[str, object] = { + "is_root_operator": self.is_root_operator, + "is_used_for_training": self.is_used_for_training, + "include_all_overloads": self.include_all_overloads, + } + if self._debug_info is not None: + ret["debug_info"] = self._debug_info + + return ret + + +def merge_debug_info( + lhs: tuple[str, ...] | None, + rhs: tuple[str, ...] | None, +) -> tuple[str, ...] | None: + # Ensure that when merging, each entry shows up just once. + if lhs is None and rhs is None: + return None + + return tuple(set((lhs or ()) + (rhs or ()))) + + +def combine_operators( + lhs: SelectiveBuildOperator, rhs: SelectiveBuildOperator +) -> SelectiveBuildOperator: + if str(lhs.name) != str(rhs.name): + raise Exception( # noqa: TRY002 + f"Expected both arguments to have the same name, but got '{str(lhs.name)}' and '{str(rhs.name)}' instead" + ) + + return SelectiveBuildOperator( + name=lhs.name, + # Consider this operator to be a root operator if it is a + # root operator in any of the models used in this instance of + # the pytorch library. + is_root_operator=lhs.is_root_operator or rhs.is_root_operator, + # Consider this operator to be a training operator if it is + # an operator used for training in any of the models used + # in this instance of the pytorch library. + is_used_for_training=lhs.is_used_for_training or rhs.is_used_for_training, + include_all_overloads=lhs.include_all_overloads or rhs.include_all_overloads, + _debug_info=merge_debug_info(lhs._debug_info, rhs._debug_info), + ) + + +def merge_operator_dicts( + lhs: dict[str, SelectiveBuildOperator], + rhs: dict[str, SelectiveBuildOperator], +) -> dict[str, SelectiveBuildOperator]: + operators: dict[str, SelectiveBuildOperator] = {} + for op_name, op in list(lhs.items()) + list(rhs.items()): + new_op = op + if op_name in operators: + new_op = combine_operators(operators[op_name], op) + + operators[op_name] = new_op + + return operators + + +def strip_operator_overload_name(op_name: str) -> str: + return op_name.split(".", maxsplit=1)[0] diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/selective_build/selector.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/selective_build/selector.py new file mode 100644 index 0000000000000000000000000000000000000000..fa48a9df2dd752275513e42423ccd50576aa6cb3 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/selective_build/selector.py @@ -0,0 +1,377 @@ +from __future__ import annotations + +from collections import defaultdict +from collections.abc import Iterable +from dataclasses import dataclass +from typing import TYPE_CHECKING + +import yaml + +from torchgen.selective_build.operator import ( + merge_debug_info, + merge_operator_dicts, + SelectiveBuildOperator, + strip_operator_overload_name, +) + + +if TYPE_CHECKING: + from torchgen.model import NativeFunction + + +# A SelectiveBuilder holds information extracted from the selective build +# YAML specification. +# +# It includes information about the build's selectivity, the debug_info +# associated with this selective build (opaque string), and the set of +# operators that should be included in the build. +# +@dataclass(frozen=True) +class SelectiveBuilder: + # If true, then the build is not selective, and includes all + # operators. + include_all_operators: bool + + # Debug Information at the selective/custom build level. + _debug_info: tuple[str, ...] | None + + # A dictionary of operator -> operator metadata. + operators: dict[str, SelectiveBuildOperator] + + # A dictionary of selected kernel tags and dtypes. Typically a + # PyTorch Operator Kernel (function) may have many code paths + # that are specialized for many many Tensor dtypes, so it's not + # one per kernel function, but there could be many per kernel + # function. The tag isn't a kernel function name, but some fragment + # of the kernel function implementation itself. + kernel_metadata: dict[str, list[str]] + + # ExecuTorch only. A dictionary of kernel tag -> list of (list of input + # dtypes for tensor-like input args). + # This is from selective.yaml + et_kernel_metadata: dict[str, list[str]] + + # A set of all the custom torch bind classes used by the selected models + # Stored as a set internally to remove duplicates proactively, but written + # as a list to yamls + custom_classes: set[str] + + # A set of all the build features used by the selected models + # Stored as a set internally to remove duplicates proactively, but written + # as a list to yamls + build_features: set[str] + + # If true, then fragments for all dtypes for all kernel functions + # are included as well as all custom classes. This is typically set when any one of the + # operator lists is generated from a mechanism other than + # tracing based selective build. + include_all_non_op_selectives: bool + + @staticmethod + def get_nop_selector() -> SelectiveBuilder: + return SelectiveBuilder.from_yaml_dict({"include_all_operators": True}) + + @staticmethod + def from_yaml_dict(data: dict[str, object]) -> SelectiveBuilder: + valid_top_level_keys = { + "include_all_non_op_selectives", + "include_all_operators", + "debug_info", + "operators", + "kernel_metadata", + "et_kernel_metadata", + "custom_classes", + "build_features", + } + top_level_keys = set(data.keys()) + if len(top_level_keys - valid_top_level_keys) > 0: + raise Exception( # noqa: TRY002 + "Got unexpected top level keys: {}".format( + ",".join(top_level_keys - valid_top_level_keys), + ) + ) + include_all_operators = data.get("include_all_operators", False) + if not isinstance(include_all_operators, bool): + raise AssertionError( + f"Expected 'include_all_operators' to be bool, got {type(include_all_operators)}" + ) + + debug_info = None + if "debug_info" in data: + di_list = data["debug_info"] + if not isinstance(di_list, list): + raise AssertionError( + f"Expected 'debug_info' to be list, got {type(di_list)}" + ) + + debug_info = tuple(str(x) for x in di_list) + + operators = {} + operators_dict = data.get("operators", {}) + if not isinstance(operators_dict, dict): + raise AssertionError( + f"Expected 'operators' to be dict, got {type(operators_dict)}" + ) + + for k, v in operators_dict.items(): + operators[k] = SelectiveBuildOperator.from_yaml_dict(k, v) + + kernel_metadata = {} + kernel_metadata_dict = data.get("kernel_metadata", {}) + if not isinstance(kernel_metadata_dict, dict): + raise AssertionError( + f"Expected 'kernel_metadata' to be dict, got {type(kernel_metadata_dict)}" + ) + + for k, v in kernel_metadata_dict.items(): + kernel_metadata[str(k)] = [str(dtype) for dtype in v] + + et_kernel_metadata = data.get("et_kernel_metadata", {}) + if not isinstance(et_kernel_metadata, dict): + raise AssertionError( + f"Expected 'et_kernel_metadata' to be dict, got {type(et_kernel_metadata)}" + ) + + custom_classes = data.get("custom_classes", []) + if not isinstance(custom_classes, Iterable): + raise AssertionError( + f"Expected 'custom_classes' to be Iterable, got {type(custom_classes)}" + ) + custom_classes = set(custom_classes) + + build_features = data.get("build_features", []) + if not isinstance(build_features, Iterable): + raise AssertionError( + f"Expected 'build_features' to be Iterable, got {type(build_features)}" + ) + build_features = set(build_features) + + include_all_non_op_selectives = data.get("include_all_non_op_selectives", False) + if not isinstance(include_all_non_op_selectives, bool): + raise AssertionError( + f"Expected 'include_all_non_op_selectives' to be bool, " + f"got {type(include_all_non_op_selectives)}" + ) + + return SelectiveBuilder( + include_all_operators, + debug_info, + operators, + kernel_metadata, + et_kernel_metadata, + custom_classes, # type: ignore[arg-type] + build_features, # type: ignore[arg-type] + include_all_non_op_selectives, + ) + + @staticmethod + def from_yaml_str(config_contents: str) -> SelectiveBuilder: + contents = yaml.safe_load(config_contents) + return SelectiveBuilder.from_yaml_dict(contents) + + @staticmethod + def from_yaml_path(config_path: str) -> SelectiveBuilder: + with open(config_path) as f: + contents = yaml.safe_load(f) + return SelectiveBuilder.from_yaml_dict(contents) + + @staticmethod + def from_legacy_op_registration_allow_list( + allow_list: set[str], is_root_operator: bool, is_used_for_training: bool + ) -> SelectiveBuilder: + operators = {} + for op in allow_list: + operators[op] = { + "name": op, + "is_root_operator": is_root_operator, + "is_used_for_training": is_used_for_training, + "include_all_overloads": True, + } + return SelectiveBuilder.from_yaml_dict( + { + "operators": operators, + "include_all_non_op_selectives": True, + } + ) + + def is_operator_selected(self, name: str) -> bool: + if self.include_all_operators: + return True + + if name in self.operators: + return True + name = strip_operator_overload_name(name) + return name in self.operators and self.operators[name].include_all_overloads + + def is_native_function_selected(self, func: NativeFunction) -> bool: + op_name = op_name_from_native_function(func) + return self.is_operator_selected(op_name) + + def is_operator_selected_for_training(self, name: str) -> bool: + if not self.is_operator_selected(name): + return False + if self.include_all_operators: + return True + + not_training_op = SelectiveBuildOperator( + name="", + is_root_operator=False, + is_used_for_training=False, + include_all_overloads=False, + _debug_info=None, + ) + op = not_training_op + if name in self.operators: + op = self.operators[name] + + name = strip_operator_overload_name(name) + base_op = not_training_op + if name in self.operators: + base_op = self.operators[name] + + return op.is_used_for_training or ( + base_op.include_all_overloads and base_op.is_used_for_training + ) + + def is_native_function_selected_for_training(self, func: NativeFunction) -> bool: + op_name = op_name_from_native_function(func) + return self.is_operator_selected_for_training(op_name) + + def is_root_operator(self, name: str) -> bool: + if not self.is_operator_selected(name): + return False + if self.include_all_operators: + return True + + if name in self.operators: + op: SelectiveBuildOperator = self.operators[name] + return op.is_root_operator + name = strip_operator_overload_name(name) + if name not in self.operators: + return False + base_op: SelectiveBuildOperator = self.operators[name] + return base_op.include_all_overloads and base_op.is_root_operator + + def is_kernel_dtype_selected(self, kernel_tag: str, dtype: str) -> bool: + if self.include_all_operators or self.include_all_non_op_selectives: + return True + + return ( + kernel_tag in self.kernel_metadata + and dtype in self.kernel_metadata[kernel_tag] + ) + + def et_get_selected_kernels(self, op_name: str, kernel_key: list[str]) -> list[str]: + """ + Return a list of kernel keys that cover the used ops + """ + # If no kernel metadata, either it's implied by include_all_operators=True or the op is not used. + if op_name not in self.et_kernel_metadata: + return kernel_key if self.include_all_operators else [] + # Otherwise, only return the specific kernel keys. + + result_set = set() + + for model_kernel_keys in self.et_kernel_metadata[op_name]: + key_found = False + for key in kernel_key: + # Don't compare the version for now + if ( + key != "default" + and key.split("/")[1] == model_kernel_keys.split("/")[1] + ): + result_set.add(key) + key_found = True + break + if not key_found: + if "default" not in kernel_key: + raise Exception("Missing kernel for the model") # noqa: TRY002 + else: + result_set.add("default") + + return list(result_set) + + def to_dict(self) -> dict[str, object]: + ret: dict[str, object] = { + "include_all_non_op_selectives": self.include_all_non_op_selectives, + "include_all_operators": self.include_all_operators, + } + operators = {} + for op_name, op in self.operators.items(): + operators[op_name] = op.to_dict() + ret["operators"] = operators + + if self._debug_info is not None: + ret["debug_info"] = sorted(self._debug_info) + + ret["kernel_metadata"] = { + k: sorted(v) for (k, v) in self.kernel_metadata.items() + } + + ret["et_kernel_metadata"] = self.et_kernel_metadata + + ret["custom_classes"] = sorted(self.custom_classes) + + ret["build_features"] = sorted(self.build_features) + + return ret + + +def merge_kernel_metadata( + lhs: dict[str, list[str]], + rhs: dict[str, list[str]], +) -> dict[str, list[str]]: + kernel_metadata: dict[str, list[str]] = {} + for tag_name, dtypes in list(lhs.items()) + list(rhs.items()): + dtypes_copy = set(dtypes) + if tag_name in kernel_metadata: + dtypes_copy |= set(kernel_metadata[tag_name]) + + kernel_metadata[tag_name] = list(dtypes_copy) + + return kernel_metadata + + +def merge_et_kernel_metadata( + lhs: dict[str, list[str]], + rhs: dict[str, list[str]], +) -> dict[str, list[str]]: + merge_et_kernel_metadata: dict[str, set[str]] = defaultdict(set) + for op in list(lhs.keys()) + list(rhs.keys()): + merge_et_kernel_metadata[op].update(lhs.get(op, [])) + merge_et_kernel_metadata[op].update(rhs.get(op, [])) + + return {op: sorted(val) for op, val in merge_et_kernel_metadata.items()} + + +def combine_selective_builders( + lhs: SelectiveBuilder, rhs: SelectiveBuilder +) -> SelectiveBuilder: + include_all_operators = lhs.include_all_operators or rhs.include_all_operators + debug_info = merge_debug_info(lhs._debug_info, rhs._debug_info) + operators = merge_operator_dicts(lhs.operators, rhs.operators) + kernel_metadata = merge_kernel_metadata(lhs.kernel_metadata, rhs.kernel_metadata) + et_kernel_metadata = merge_et_kernel_metadata( + lhs.et_kernel_metadata, rhs.et_kernel_metadata + ) + include_all_non_op_selectives = ( + lhs.include_all_non_op_selectives or rhs.include_all_non_op_selectives + ) + custom_classes = lhs.custom_classes.union(rhs.custom_classes) + build_features = lhs.build_features.union(rhs.build_features) + return SelectiveBuilder( + include_all_operators, + debug_info, + operators, + kernel_metadata, + et_kernel_metadata, + custom_classes, + build_features, + include_all_non_op_selectives, + ) + + +def op_name_from_native_function(f: NativeFunction) -> str: + # This was originally read from the 'operator_name_with_overload' field in the + # declaration dict, which was the part before the first '(' in 'schema_string'. + return f"{f.namespace}::{f.func.name}" diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/static_runtime/__init__.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/static_runtime/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/static_runtime/config.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/static_runtime/config.py new file mode 100644 index 0000000000000000000000000000000000000000..c0993d00702c70532467eb5a190fcf73b6cdd846 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/static_runtime/config.py @@ -0,0 +1,389 @@ +from __future__ import annotations + +from torchgen.model import NativeFunctionsGroup, NativeFunctionsViewGroup + + +def func_name_base_str(g: NativeFunctionsGroup | NativeFunctionsViewGroup) -> str: + if isinstance(g, NativeFunctionsGroup): + return str(g.functional.func.name.name.base) + else: + return str(g.view.root_name) + + +is_hand_written_ops_ = frozenset( + ( + "abs", + "add", + "addmm", + "all", + "any", + "argmin", + "bmm", + "clamp", + "clamp_min", + "cumsum", + "div", + "fmod", + "index_select", + "leaky_relu", + "linear", + "log", + "matmul", + "mul", + "narrow_copy", + "nonzero", + "pow", + "remainder", + "sigmoid", + "sign", + "sub", + "tanh", + "detach", + "expand_as", + "flatten", + "narrow", + "reshape_as", + "select", + "slice", + "softmax", + "split", + "squeeze", + "transpose", + "view", + "where", + ) +) + + +def is_hand_written(g: NativeFunctionsGroup | NativeFunctionsViewGroup) -> bool: + name_base = func_name_base_str(g) + return name_base in is_hand_written_ops_ + + +def override_test_values(arg_map: dict[str, str], op_name: str, index: int) -> None: + if index not in (0, 1): + raise AssertionError(f"index must be 0 or 1, got {index}") + if op_name == "addr": + if index == 0: + arg_map["self"] = "at::rand({6, 6})" + arg_map["vec1"] = "at::rand({6})" + arg_map["vec2"] = "at::rand({6})" + else: + arg_map["self"] = "at::rand({22, 22})" + arg_map["vec1"] = "at::rand({22})" + arg_map["vec2"] = "at::rand({22})" + return + if op_name == "mv": + if index == 0: + arg_map["self"] = "at::rand({6, 6})" + arg_map["vec"] = "at::rand({6})" + else: + arg_map["self"] = "at::rand({22, 22})" + arg_map["vec"] = "at::rand({22})" + return + if op_name == "addbmm": + if index == 0: + arg_map["self"] = "at::rand({6, 6})" + else: + arg_map["self"] = "at::rand({22, 22})" + return + if op_name == "cross": + if index == 0: + arg_map["self"] = "at::rand({3, 3, 3})" + arg_map["other"] = "at::rand({3, 3, 3})" + else: + arg_map["self"] = "at::rand({22, 3, 22})" + arg_map["other"] = "at::rand({22, 3, 22})" + return + if op_name == "take": + if index == 0: + arg_map["index"] = "at::randint(0, 216, {20}, torch::kInt64)" + else: + arg_map["index"] = "at::randint(0, 1000, {100}, torch::kInt64)" + return + if op_name == "take_along_dim": + if index == 0: + arg_map["indices"] = "at::argsort(self0, 1, true)" + else: + arg_map["indices"] = "at::argsort(self1, 1, true)" + return + if op_name == "masked_select": + if index == 0: + arg_map["mask"] = "at::randn({6, 6, 6}) > 0.5" + else: + arg_map["mask"] = "at::rand({22, 22, 22}) > 0.5" + return + if op_name == "orgqr": + if index == 0: + arg_map["input2"] = "at::rand({6, 6})" + else: + arg_map["input2"] = "at::rand({22, 22})" + return + if op_name == "ormqr": + if index == 0: + arg_map["input2"] = "at::rand({6, 6})" + else: + arg_map["input2"] = "at::rand({22, 22})" + return + if op_name == "quantile": + if index == 0: + arg_map["q"] = "at::rand({6})" + arg_map["interpolation"] = '"linear"' + else: + arg_map["q"] = "at::rand({22})" + arg_map["interpolation"] = '"linear"' + return + if op_name == "nanquantile": + if index == 0: + arg_map["q"] = "at::rand({6})" + arg_map["interpolation"] = '"linear"' + else: + arg_map["q"] = "at::rand({22})" + arg_map["interpolation"] = '"linear"' + return + if op_name == "multi_margin_loss": + if index == 0: + arg_map["self"] = "at::rand({6, 6})" + arg_map["target"] = "at::randint(6, {6}, torch::kInt64)" + arg_map["weight"] = "at::rand({6})" + else: + arg_map["self"] = "at::rand({22, 22})" + arg_map["target"] = "at::randint(22, {22}, torch::kInt64)" + arg_map["weight"] = "at::rand({22})" + return + if op_name == "multilabel_margin_loss": + if index == 0: + arg_map["self"] = "at::rand({6, 6})" + arg_map["target"] = "at::randint(6, {6, 6}, torch::kInt64)" + else: + arg_map["self"] = "at::rand({22, 22})" + arg_map["target"] = "at::randint(22, {22, 22}, torch::kInt64)" + return + if op_name == "nll_loss": + if index == 0: + arg_map["self"] = "at::rand({6, 6})" + arg_map["target"] = "at::randint(6, {6}, torch::kInt64)" + arg_map["weight"] = "at::rand({6})" + else: + arg_map["self"] = "at::rand({22, 22})" + arg_map["target"] = "at::randint(22, {22}, torch::kInt64)" + arg_map["weight"] = "at::rand({22})" + return + if op_name == "nll_loss2d": + if index == 0: + arg_map["self"] = "at::rand({6, 6, 6, 6})" + arg_map["target"] = "at::randint(6, {6, 6, 6}, torch::kInt64)" + arg_map["weight"] = "at::rand({6})" + else: + arg_map["self"] = "at::rand({22, 22, 22, 22})" + arg_map["target"] = "at::randint(22, {22, 22, 22}, torch::kInt64)" + arg_map["weight"] = "at::rand({22})" + return + if op_name in ( + "fft_fft", + "fft_ifft", + "fft_rfft", + "fft_irfft", + "fft_hfft", + "fft_ihfft", + ): + arg_map["norm"] = '"forward"' + return + if op_name == "linalg_tensorinv": + if index == 0: + arg_map["self"] = "at::rand({6, 6, 6, 6})" + arg_map["ind"] = "2" + else: + arg_map["self"] = "at::rand({22, 22, 22, 22})" + arg_map["ind"] = "2" + return + if op_name == "addmv": + if index == 0: + arg_map["self"] = "at::rand({2})" + arg_map["mat"] = "at::rand({2, 2})" + arg_map["vec"] = "at::rand({2})" + else: + arg_map["self"] = "at::rand({35})" + arg_map["mat"] = "at::rand({35, 35})" + arg_map["vec"] = "at::rand({35})" + return + if op_name == "acosh": + if index == 0: + arg_map["self"] = "at::rand({2, 2, 2}) + at::ones({2, 2, 2})" + else: + arg_map["self"] = "at::rand({5, 5, 5}) + at::ones({5, 5, 5})" + return + if op_name == "adaptive_max_pool2d_backward": + if index == 0: + arg_map["grad_output"] = "at::rand({2, 2, 2}, at::kFloat)" + arg_map["self"] = "at::rand({2, 2, 2}, at::kFloat)" + arg_map["indices"] = "at::randint(0, 1, {2, 2, 2}, at::kLong)" + else: + arg_map["grad_output"] = "at::rand({3, 3, 3}, at::kFloat)" + arg_map["self"] = "at::rand({3, 3, 3}, at::kFloat)" + arg_map["indices"] = "at::randint(0, 1, {3, 3, 3}, at::kLong)" + return + if op_name == "adaptive_max_pool3d_backward": + if index == 0: + arg_map["grad_output"] = "at::rand({2, 2, 2, 2}, at::kFloat)" + arg_map["self"] = "at::rand({2, 2, 2, 2}, at::kFloat)" + arg_map["indices"] = "at::randint(0, 1, {2, 2, 2, 2}, at::kLong)" + else: + arg_map["grad_output"] = "at::rand({3, 3, 3, 3}, at::kFloat)" + arg_map["self"] = "at::rand({3, 3, 3, 3}, at::kFloat)" + arg_map["indices"] = "at::randint(0, 1, {3, 3, 3, 3}, at::kLong)" + return + if op_name == "bitwise_left_shift": + if index == 0: + arg_map["self"] = "at::randint(1, 1 << 4, {6, 6, 6}, at::kInt)" + arg_map["other"] = "at::randint(1, 26, {6, 6, 6}, at::kInt)" + else: + arg_map["self"] = "at::randint(1, 1 << 4, {22, 22, 22}, at::kInt)" + arg_map["other"] = "at::randint(1, 26, {22, 22, 22}, at::kInt)" + return + if op_name == "bitwise_right_shift": + if index == 0: + arg_map["self"] = "at::randint(1 << 21, 1 << 30, {6, 6, 6}, at::kInt)" + arg_map["other"] = "at::randint(1, 22, {6, 6, 6}, at::kInt)" + else: + arg_map["self"] = "at::randint(1 << 21, 1 << 30, {22, 22, 22}, at::kInt)" + arg_map["other"] = "at::randint(1, 22, {22, 22, 22}, at::kInt)" + return + if op_name == "gather": + if index == 0: + arg_map["self"] = "at::randint(1, 100, {2,2,2}, at::kInt)" + arg_map["dim"] = "1" + arg_map["index"] = "at::randint(0, 1, {2,2,2}, torch::kInt64)" + arg_map["sparse_grad"] = "false" + else: + arg_map["self"] = "at::randint(1, 100, {5,5,5}, at::kInt)" + arg_map["dim"] = "1" + arg_map["index"] = "at::randint(0, 4, {5,5,5}, torch::kInt64)" + arg_map["sparse_grad"] = "false" + return + if op_name == "gelu": + if index == 0: + arg_map["self"] = "at::rand({6, 6, 6})" + arg_map["approximate"] = '"tanh"' + else: + arg_map["self"] = "at::rand({22, 22, 22})" + arg_map["approximate"] = '"tanh"' + return + if op_name == "gelu_backward": + if index == 0: + arg_map["grad_output"] = "at::rand({6, 6, 6})" + arg_map["self"] = "at::rand({6, 6, 6})" + arg_map["approximate"] = '"tanh"' + else: + arg_map["grad_output"] = "at::rand({22, 22, 22})" + arg_map["self"] = "at::rand({22, 22, 22})" + arg_map["approximate"] = '"tanh"' + return + if op_name == "index_add": + if index == 0: + arg_map["self"] = "at::rand({2})" + arg_map["dim"] = "0" + arg_map["index"] = "at::randint(0, 1, {2}, at::kInt)" + arg_map["source"] = "at::rand({2})" + arg_map["alpha"] = "2" + else: + arg_map["self"] = "at::rand({16})" + arg_map["dim"] = "0" + arg_map["index"] = "at::randint(0, 10, {16}, at::kInt)" + arg_map["source"] = "at::rand({16})" + arg_map["alpha"] = "2" + return + if op_name == "index_copy": + if index == 0: + arg_map["self"] = "at::rand({2})" + arg_map["dim"] = "0" + arg_map["index"] = "at::randint(0, 1, {2}, at::kLong)" + arg_map["source"] = "at::rand({2})" + else: + arg_map["self"] = "at::rand({32})" + arg_map["dim"] = "0" + arg_map["index"] = "at::randint(0, 10, {32}, at::kLong)" + arg_map["source"] = "at::rand({32})" + return + if op_name == "linalg_cross": + if index == 0: + arg_map["self"] = "at::rand({6, 3, 6})" + arg_map["other"] = "at::rand({6, 3, 6})" + arg_map["dim"] = "1" + else: + arg_map["self"] = "at::rand({22, 3, 22})" + arg_map["other"] = "at::rand({22, 3, 22})" + arg_map["dim"] = "1" + return + if op_name == "nll_loss_backward": + if index == 0: + arg_map["grad_output"] = "at::rand({})" + arg_map["self"] = "at::rand({6})" + arg_map["target"] = "at::randint(0, 5, {6}, torch::kInt64)" + arg_map["weight"] = "at::rand({6})" + arg_map["reduction"] = "1" + arg_map["ignore_index"] = "1" + arg_map["total_weight"] = "at::rand({})" + else: + arg_map["grad_output"] = "at::rand({})" + arg_map["self"] = "at::rand({36})" + arg_map["target"] = "at::randint(0, 11, {36}, torch::kInt64)" + arg_map["weight"] = "at::rand({36})" + arg_map["reduction"] = "1" + arg_map["ignore_index"] = "1" + arg_map["total_weight"] = "at::rand({})" + return + if op_name in ["scatter", "scatter_add", "_scatter_reduce"]: + if index == 0: + arg_map["self"] = "at::randint(1, 100, {2,2,2}, torch::kInt64)" + arg_map["index"] = "at::randint(0, 1, {2,2,2}, torch::kInt64)" + arg_map["src"] = "at::randint(1, 100, {2,2,2}, torch::kInt64)" + else: + arg_map["self"] = "at::randint(1, 100, {5,5,5}, torch::kInt64)" + arg_map["index"] = "at::randint(0, 1, {5,5,5}, torch::kInt64)" + arg_map["src"] = "at::randint(1, 100, {5,5,5}, torch::kInt64)" + if "reduce" in arg_map: + arg_map["reduce"] = '"sum"' if op_name == "_scatter_reduce" else '"add"' + return + if op_name == "scatter_reduce": + arg_map["reduce"] = '"mean"' + if index == 0: + arg_map["index"] = "at::randint(6, {6, 6, 6}, torch::kInt64)" + else: + arg_map["index"] = "at::randint(22, {22, 22, 22}, torch::kInt64)" + return + if op_name == "special_zeta": + if index == 0: + arg_map["self"] = "at::rand({2,2,2}, at::kDouble) + at::ones({2,2,2})" + arg_map["other"] = "at::rand({2,2,2}, at::kDouble) + at::ones({2,2,2})" + else: + arg_map["self"] = "at::rand({5,5,5}, at::kDouble) + at::ones({5,5,5})" + arg_map["other"] = "at::rand({5,5,5}, at::kDouble) + at::ones({5,5,5})" + return + if op_name == "_convert_indices_from_csr_to_coo": + if index == 0: + arg_map["crow_indices"] = "torch::tensor({1}, torch::kInt32)" + arg_map["col_indices"] = "torch::tensor({0, 1, 0}, torch::kInt32)" + arg_map["out_int32"] = "false" + else: + arg_map["crow_indices"] = "torch::tensor({0}, torch::kInt32)" + arg_map["col_indices"] = ( + "torch::tensor({0, 1, 0, 2, 1, 2, 0, 1, 0, 2, 1, 2}, torch::kInt32)" + ) + arg_map["out_int32"] = "false" + return + if op_name == "_convert_indices_from_coo_to_csr": + if index == 0: + arg_map["self"] = "at::randint(0, 3, {2}, at::kInt)" + arg_map["size"] = "10" + arg_map["out_int32"] = "false" + else: + arg_map["self"] = "at::randint(0, 3, {12}, at::kInt)" + arg_map["size"] = "24" + arg_map["out_int32"] = "false" + return + if op_name in ("diagonal", "linalg_diagonal"): + arg_map["offset"] = "0" + arg_map["dim1"] = "2" + arg_map["dim2"] = "1" + return diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/static_runtime/gen_static_runtime_ops.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/static_runtime/gen_static_runtime_ops.py new file mode 100644 index 0000000000000000000000000000000000000000..d6909bc4d7f67fc13fb9f61e00f4709a4ff5ad4e --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/static_runtime/gen_static_runtime_ops.py @@ -0,0 +1,231 @@ +from __future__ import annotations + +import argparse +import itertools +import os +from typing import TYPE_CHECKING, TypeVar + +from libfb.py.log import set_simple_logging # type: ignore[import] + +from torchgen import gen +from torchgen.context import native_function_manager +from torchgen.model import DispatchKey, NativeFunctionsGroup, NativeFunctionsViewGroup +from torchgen.static_runtime import config, generator + + +if TYPE_CHECKING: + from collections.abc import Sequence + + +# Given a list of `grouped_native_functions` sorted by their op names, return a list of +# lists each of which groups ops that share the base name. For example, `mean` and +# `mean.dim` are grouped together by this function. + +NativeGroupT = TypeVar( + "NativeGroupT", + bound=NativeFunctionsGroup | NativeFunctionsViewGroup, +) + + +def group_functions_by_op_name( + grouped_native_functions: Sequence[NativeGroupT], +) -> Sequence[Sequence[NativeGroupT]]: + if not grouped_native_functions: + return [] + groups = [] + + def is_supported(g: NativeFunctionsGroup | NativeFunctionsViewGroup) -> bool: + with native_function_manager(g): + return generator.is_supported(g) + + eligible_ops = (g for g in grouped_native_functions if is_supported(g)) + groups = [ + list(group) + for k, group in ( + itertools.groupby( + eligible_ops, + key=config.func_name_base_str, + ) + ) + ] + + return groups + + +def clang_format(cpp_file_path: str) -> None: + import subprocess + + subprocess.check_call(["clang-format", "-i", cpp_file_path]) + + +def write_cpp(cpp_ops: Sequence[str], file_path: str) -> None: + code = "\n".join(cpp_ops) + generated = f"""// @lint-ignore-every CLANGTIDY HOWTOEVEN +// AUTO-GENERATED FROM: torchgen/static_runtime/gen_static_runtime_ops.py +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace torch {{ +namespace jit {{ + +{code} + +}} // namespace jit +}} // namespace torch +""" + with open(file_path, "w") as f: + f.write(generated) + clang_format(file_path) + + +def write_test_cpp(cpp_ops: Sequence[str], file_path: str) -> None: + code = "\n".join(cpp_ops) + generated = f"""// @lint-ignore-every CLANGTIDY HOWTOEVEN +// AUTO-GENERATED FROM: torchgen/static_runtime/gen_static_runtime_ops.py +#include +#include +#include + +#include "test_utils.h" + +using namespace caffe2; +using namespace torch; +using namespace torch::jit; +using namespace torch::jit::test; +using c10::IValue; + +{code} + +""" + with open(file_path, "w") as f: + f.write(generated) + clang_format(file_path) + + +def main() -> None: + parser = argparse.ArgumentParser(description="Generate ATen source files") + parser.add_argument( + "-s", + "--source-path", + help="path to source directory for ATen", + default="caffe2/aten/src/ATen", + ) + parser.add_argument( + "-p", + "--generated-ops-cpp-path", + help="path to directory to generate op dispatcher .cpp file", + default="caffe2/torch/csrc/jit/runtime/static/generated_ops.cpp", + ) + parser.add_argument( + "-t", + "--generated-ops-test-cpp-path", + help="path to directory to generate op dispatcher .cpp file", + default="caffe2/benchmarks/static_runtime/test_generated_ops.cc", + ) + options = parser.parse_args() + native_yaml_path = os.path.join(options.source_path, "native/native_functions.yaml") + tags_yaml_path = os.path.join(options.source_path, "native/tags.yaml") + parsed_yaml = gen.parse_native_yaml(native_yaml_path, tags_yaml_path) + native_functions, backend_indices = ( + parsed_yaml.native_functions, + parsed_yaml.backend_indices, + ) + + op_generator = generator.GenOpDispatcher() + test_case_generator = generator.GenOpTestCase() + + native_functions_groups = [ + g + for g in gen.get_grouped_native_functions(native_functions) + if isinstance(g, NativeFunctionsGroup) + ] + + supported_functions_groups = group_functions_by_op_name(native_functions_groups) + + out_variant_op_result = [ + op_generator.out_variant(groups, backend_indices[DispatchKey.CPU]) + for groups in supported_functions_groups + ] + out_variant_test_result = [ + test_case_generator.out_variant(groups) for groups in supported_functions_groups + ] + + native_functions_view_groups = [ + g + for g in gen.get_grouped_by_view_native_functions(native_functions) + if isinstance(g, NativeFunctionsViewGroup) + ] + + supported_functions_view_groups = group_functions_by_op_name( + native_functions_view_groups + ) + + view_op_result = [ + op_generator.view(groups, backend_indices[DispatchKey.CPU]) + for groups in supported_functions_view_groups + ] + view_test_result = [ + test_case_generator.view(groups) for groups in supported_functions_view_groups + ] + + op_result = out_variant_op_result + ["\n\n"] + view_op_result + test_result = out_variant_test_result + ["\n\n"] + view_test_result + + write_cpp(op_result, options.generated_ops_cpp_path) + write_test_cpp(test_result, options.generated_ops_test_cpp_path) + + print( + f"\ntotal grouped native ops: {len(gen.get_grouped_native_functions(native_functions)):d}" + ) + + print(f"grouped native ops with out variant: {len(native_functions_groups):d}") + supported_functions_num = sum(len(groups) for groups in supported_functions_groups) + print(f"generated functions groups with out variant: {supported_functions_num:d}") + + print(f"\nview grouped native ops: {len(native_functions_view_groups):d}") + supported_view_functions_num = sum( + len(groups) for groups in supported_functions_view_groups + ) + print(f"generated functions view groups: {supported_view_functions_num:d}") + + print( + f"\noverall generated : {supported_functions_num + supported_view_functions_num:d}" + ) + + +if __name__ == "__main__": + set_simple_logging(escape_newlines=False) + main() diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/static_runtime/generator.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/static_runtime/generator.py new file mode 100644 index 0000000000000000000000000000000000000000..d8aba4d13bcde6cf4a2a4700c93e61237632912c --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/static_runtime/generator.py @@ -0,0 +1,859 @@ +from __future__ import annotations + +import json +import logging +import math +from typing import TYPE_CHECKING + +import torchgen.api.cpp as cpp +from torchgen.context import native_function_manager +from torchgen.model import ( + Argument, + BackendIndex, + BaseTy, + BaseType, + FunctionSchema, + NativeFunctionsGroup, + NativeFunctionsViewGroup, + OptionalType, + SelfArgument, + TensorOptionsArguments, + Type, +) +from torchgen.static_runtime import config + + +if TYPE_CHECKING: + from collections.abc import Sequence + + +logger: logging.Logger = logging.getLogger() + + +def has_alias( + arguments: Sequence[Argument | SelfArgument | TensorOptionsArguments], +) -> bool: + for arg in arguments: + annotation = getattr(arg, "annotation", None) + if not annotation: + continue + alias_set = getattr(annotation, "alias_set", ()) + if alias_set: + return True + return False + + +BLOCKED_OPS = frozenset( + ( + # non cpu ops + "sparse_sampled_addmm", + "hspmm", + "linalg_svdvals", + # sparse ops + "sspaddmm", + "coalesce", + "_indices", + "indices", + "_values", + "values", + "crow_indices", + "col_indices", + # deprecated ops + "floor_divide", + "ger", + # buggy ops + "conj_physical", # P495807361 + "binary_cross_entropy", # P496394764 + "arccosh", + # uncommon ops + "cholesky", + "lu_solve", + "linalg_cholesky", + "linalg_householder_product", + "linalg_ldl_solve", + "_compute_linear_combination", + # training related ops + "_make_dual", + # cannot call directly + "_fw_primal", + # no documentation + "_index_reduce", + # TODO: these ones got added recently and need manual inspection + "_new_zeros_with_same_feature_meta", + "_conj_physical", + "binary_cross_entropy_with_logits", + "bincount", + "conv_tbc", + "copy", + "_copy_from", + "_copy_from_and_resize", + "count_nonzero", + "cudnn_affine_grid_generator", + "cudnn_affine_grid_generator_backward", + "cudnn_grid_sampler", + "diag_embed", + "embedding", + "embedding_dense_backward", + "_embedding_bag_dense_backward", + "_embedding_bag_per_sample_weights_backward", + "grid_sampler_2d", + "_grid_sampler_2d_cpu_fallback", + "grid_sampler_3d", + "isnan", + "mkldnn_linear", + "median", + "nanmedian", + "_sparse_sparse_matmul", + "batch_norm_backward_elemt", + "_euclidean_dist", + "pixel_shuffle", + "pixel_unshuffle", + "channel_shuffle", + "_reshape_nested_backward", + "relu", + "prelu", + "celu", + "slice_scatter", + "select_scatter", + "diagonal_scatter", + "sum", + "_mkldnn_transpose", + "_nested_tensor_from_mask", + "_nested_from_padded", + "_nested_tensor_size", + "_nested_from_padded_and_nested_example", + "_standard_gamma_grad", + "_dirichlet_grad", + "native_norm", + "_sparse_softmax", + "_sparse_softmax_backward_data", + "_sparse_log_softmax", + "_sparse_log_softmax_backward_data", + "zero", + "_sparse_addmm", + "sparse_mask", + "_sparse_mask_projection", + "_to_dense", + "_coalesce", + "_coalesced", + "copy_sparse_to_sparse", + "to_sparse", + "to_sparse_csr", + "to_sparse_csc", + "to_mkldnn", + "quantize_per_tensor_dynamic", + "quantize_per_channel", + "q_per_channel_scales", + "q_per_channel_zero_points", + "int_repr", + "_make_per_channel_quantized_tensor", + "set", + "lift", + "lift_fresh", + "lift_fresh_copy", + "masked_scatter", + "_masked_softmax", + "_masked_softmax_backward", + "put", + "index_reduce", + "trace", + "_cholesky_solve_helper", + "dist", + "max", + "_torch_cuda_cu_linker_symbol_op", + "glu_jvp", + "glu_backward_jvp", + "hardswish_backward", + "rrelu_with_noise_backward", + "mkldnn_adaptive_avg_pool2d_backward", + "_adaptive_avg_pool2d_backward", + "_adaptive_avg_pool3d_backward", + "isinf", + "linalg_lu_solve", + "linalg_vecdot", + "linalg_matrix_exp", + "linalg_eigvalsh", + "_test_warn_in_autograd", + "_test_autograd_multiple_dispatch_view", + "_test_autograd_multiple_dispatch_view_copy", + "_segment_reduce", + "_segment_reduce_backward", + "_fw_primal_copy", + "_make_dual_copy", + "view_as_real_copy", + "view_as_complex_copy", + "_conj_copy", + "_neg_view_copy", + "diagonal_copy", + "detach_copy", + "squeeze_copy", + "t_copy", + "unsqueeze_copy", + "_indices_copy", + "_values_copy", + "indices_copy", + "values_copy", + "crow_indices_copy", + "col_indices_copy", + "ccol_indices", + "ccol_indices_copy", + "row_indices", + "row_indices_copy", + "unfold_copy", + "alias_copy", + "_triton_multi_head_attention", + "special_airy_ai", + "special_bessel_j0", + "special_bessel_j1", + "special_bessel_y0", + "special_bessel_y1", + "special_chebyshev_polynomial_t", + "special_chebyshev_polynomial_u", + "special_chebyshev_polynomial_v", + "special_chebyshev_polynomial_w", + "special_hermite_polynomial_h", + "special_hermite_polynomial_he", + "special_laguerre_polynomial_l", + "special_legendre_polynomial_p", + "special_modified_bessel_i0", + "special_modified_bessel_i1", + "special_modified_bessel_k0", + "special_modified_bessel_k1", + "special_scaled_modified_bessel_k0", + "special_scaled_modified_bessel_k1", + "special_shifted_chebyshev_polynomial_t", + "special_shifted_chebyshev_polynomial_u", + "special_shifted_chebyshev_polynomial_v", + "special_shifted_chebyshev_polynomial_w", + "special_spherical_bessel_j0", + "_foobar", + "_nested_tensor_strides", + "_nested_tensor_storage_offsets", + "_nested_get_values", # no CPU backend + "_nested_get_values_copy", # no CPU backend + "_nested_view_from_jagged", # testing needs to be patched + "_nested_view_from_jagged_copy", # testing needs to be patched + "_nested_view_from_buffer", # testing needs to be patched + "_nested_view_from_buffer_copy", # testing needs to be patched + "_int_mm", # testing needs to be patched + "_to_sparse_csc", # testing needs to be patched + "_to_sparse_csr", # testing needs to be patched + "segment_reduce", # testing needs to be patched + ) +) + + +def is_supported(g: NativeFunctionsGroup | NativeFunctionsViewGroup) -> bool: + base_op_name = "" + func = None + if isinstance(g, NativeFunctionsViewGroup): + base_op_name = g.view.root_name + func = g.view.func + else: + base_op_name = g.out.func.name.name.base + func = g.out.func + if config.is_hand_written(g): + logger.info("HAND WRITTEN: %s", base_op_name) + return False + if base_op_name in BLOCKED_OPS: + logger.info("BLOCKED: %s", base_op_name) + return False + for arg in func.schema_order_arguments(): + maybe_method = ivalue_type_conversion_method(arg.type) + if not maybe_method: + # Type converting is unsupported yet. + logger.info("NOT SUPPORTED TYPE CONVERTING: %s", func) + return False + + if isinstance(g, NativeFunctionsViewGroup): + # TODO: stop doing type tests by converting to C++ and then testing + # the string, just test the dang thing directly + if "at::Tensor" != cpp.returns_type(func.returns, symint=False).cpp_type(): + # Returns a non-Tensor value. + logger.info("NON-TENSOR RET TYPE: %s", func) + return False + return True + + # For out variant ops, we need to check the arguments of its functional func. + for arg in g.functional.func.schema_order_arguments(): + maybe_method = ivalue_type_conversion_method(arg.type) + if not maybe_method: + # Type converting is unsupported yet. + logger.info("NOT SUPPORTED TYPE CONVERTING: %s", g.functional.func) + return False + + if not g.structured: + # In case of unstructured op, we check if it has out variant implementation. + # The out variant implementation satisfies the minimum requirement that it has the output tensor as the last + # parameter. + if ( + not hasattr(g, "out") + or not str(func).endswith("Tensor(a!) out) -> Tensor(a!)") + or not str(func.name).endswith(".out") + ): + return False + # TODO: stop type testing by converting to C++ + if "at::Tensor &" != cpp.returns_type(func.returns, symint=False).cpp_type(): + logger.info("NON_TENSOR RET TYPE: %s", func) + return False + if has_alias(func.arguments.non_out): + # This op may create an alias of inputs. + logger.info("INPUTS ALIAS: %s", base_op_name) + return False + return True + + +def ivalue_type_conversion_method( + arg_type: BaseType | OptionalType | Type, +) -> tuple[bool, str] | None: + """ + Return the method call expression of `c10::ivalue' to convert its contained value to + the expected value of `arg_type` type. For example, for `arg_type` == BaseTy.Tensor, + this function returns ".toTensor()", so that it can be appended to the ivalue's + variable name to get the value of the expected type. + """ + type_conversion_methods = { + BaseTy.Tensor: ((True, "toTensor()"), (False, "toOptional()")), + BaseTy.int: ((False, "toInt()"), (False, "toOptional()")), + BaseTy.bool: ((False, "toBool()"), (False, "toOptional()")), + BaseTy.Scalar: ((False, "toScalar()"), (False, "toOptional()")), + BaseTy.ScalarType: ( + (False, "toScalarType()"), + (False, "toOptional()"), + ), + BaseTy.str: ( + (False, "toStringView()"), + (False, "toOptional()"), + (False, "toOptional<::std::string_view>()"), + ), + } + + base_ty_object = None + if isinstance(arg_type, BaseType): + base_ty_object = arg_type.name + elif isinstance(arg_type, OptionalType): + if not isinstance(arg_type.elem, BaseType): + # ListType is currently unsupported. + return None + base_ty_object = arg_type.elem.name + else: + return None + + if base_ty_object not in type_conversion_methods: + return None + methods = type_conversion_methods[base_ty_object] + if isinstance(arg_type, BaseType): + return methods[0] + return methods[1] + + +should_use_int_tensor_ops_ = frozenset( + ( + "bitwise_not", + "bitwise_and", + "bitwise_or", + "bitwise_xor", + "bitwise_left_shift", + "bitwise_right_shift", + "gcd", + "lcm", + "scatter", + "gather", + "_convert_indices_from_coo_to_csr", + "_convert_indices_from_csr_to_coo", + ) +) +should_use_complex_tensor_ops_ = frozenset(("view_as_real", "imag", "_conj")) + + +def should_use_int_tensor(op_name: str) -> bool: + return op_name in should_use_int_tensor_ops_ + + +def should_use_complex_tensor(op_name: str) -> bool: + return op_name in should_use_complex_tensor_ops_ + + +test_tensor_dim_ops_1_ = frozenset( + ( + "addmv", + "index_add", + "_convert_indices_from_coo_to_csr", + "_convert_indices_from_csr_to_coo", + "nll_loss_backward", + "dot", + "vdot", + "outer", + "ger", + ) +) +test_tensor_dim_ops_2_ = frozenset( + ("addmm", "mm", "nuclear_norm", "diag", "_addmm_activation", "matrix_H", "t") +) + + +def test_tensor_dim(op_name: str) -> int: + if op_name in test_tensor_dim_ops_1_: + return 1 + if op_name in test_tensor_dim_ops_2_: + return 2 + return 3 + + +test_tensor_shapes_string = '{"view_as_complex": "{2, 2}"}' +test_tensor_shape_json: dict[str, str] = json.loads(test_tensor_shapes_string) + + +def test_tensor_shape(op_name: str) -> str: + if op_name in test_tensor_shape_json: + return test_tensor_shape_json[op_name] + else: + return "" + + +def test_value_expression( + arg_type: BaseType | OptionalType | Type, index: int, op_name: str +) -> str: + tensor_size_ex = test_tensor_shape(op_name) + if tensor_size_ex == "": + num_tensors = 16 if index == 0 else 64 + num_dim = test_tensor_dim(op_name) + size_per_dim = math.ceil(num_tensors / float(num_dim)) + size_per_dim += size_per_dim % 2 + tensor_size_ex = "{{{}}}".format(",".join([f"{size_per_dim}"] * num_dim)) + if should_use_int_tensor(op_name): + tensor_expression = f"at::randint(1, 100, {tensor_size_ex}, at::kInt)" + elif should_use_complex_tensor(op_name): + tensor_expression = f"at::randn({tensor_size_ex}, at::kComplexFloat)" + else: + tensor_expression = f"at::rand({tensor_size_ex})" + + value_expressions = { + BaseTy.Tensor: tensor_expression, + BaseTy.int: "1", + BaseTy.bool: "false", + BaseTy.Scalar: "2", + BaseTy.ScalarType: "at::ScalarType::Float", + BaseTy.str: '"floor"', + } + + base_ty_object = None + if isinstance(arg_type, BaseType): + base_ty_object = arg_type.name + else: + if not ( + isinstance(arg_type, OptionalType) and isinstance(arg_type.elem, BaseType) + ): + raise AssertionError( + f"Expected OptionalType with BaseType elem, got {type(arg_type)}" + ) + base_ty_object = arg_type.elem.name + if base_ty_object not in value_expressions: + raise AssertionError(f"Unexpected type: {base_ty_object}") + value_expression = value_expressions[base_ty_object] + return value_expression + + +def generate_test_value_definitions(schema: FunctionSchema, index: int) -> str: + if schema.is_out_fn(): + raise AssertionError(f"Expected non-out function, got {schema}") + schema_name = schema.name.name.base + arg_map = {} + for arg in schema.schema_order_arguments(): + test_value_exp = test_value_expression(arg.type, index, schema_name) + arg_map[arg.name] = test_value_exp + config.override_test_values(arg_map, schema_name, index) + arg_populations = [] + for arg_name, arg_value in arg_map.items(): + arg_populations.append(f"auto {arg_name}{index} = {arg_value}") + return ";\n ".join(arg_populations) + ";" + + +def generate_test_value_names(schema: FunctionSchema, index: int) -> str: + if schema.is_out_fn(): + raise AssertionError(f"Expected non-out function, got {schema}") + return ",".join(f"{arg.name}{index}" for arg in schema.schema_order_arguments()) + + +generate_test_ir_arguments_base_ty_to_type_str_ = { + BaseTy.Tensor: "Tensor", + BaseTy.int: "int", + BaseTy.float: "float", + BaseTy.str: "str", + BaseTy.Scalar: "int", + BaseTy.ScalarType: "int", + BaseTy.bool: "bool", +} + + +def generate_test_ir_arguments( + schema: FunctionSchema, +) -> list[tuple[str, str | None]]: + def ir_argument(arg: Argument) -> tuple[str, str | None]: + t = arg.type + add_optional = False + if isinstance(t, OptionalType): + t = t.elem + add_optional = True + if not isinstance(t, BaseType): + raise AssertionError(f"Expected BaseType, got {type(t)}") + type_str = None + if t.name in generate_test_ir_arguments_base_ty_to_type_str_: + type_str = generate_test_ir_arguments_base_ty_to_type_str_[t.name] + if type_str and add_optional: + type_str = f"{type_str}?" + return ("%" + arg.name, type_str) + + return [ir_argument(arg) for arg in schema.schema_order_arguments()] + + +def generate_arg_extraction(schema: FunctionSchema) -> str: + arg_populations = [] + for i, arg in enumerate(schema.schema_order_arguments()): + maybe_method = ivalue_type_conversion_method(arg.type) + if not maybe_method: + raise AssertionError( + f"No type conversion method for {arg.name}: {arg.type}" + ) + is_reference, type_conversion_method = maybe_method + reference = "&" if is_reference else "" + arg_populations.append( + f"const auto{reference} {arg.name} = p_node->Input({i}).{type_conversion_method}" + ) + return ";\n ".join(arg_populations) + ";" + + +def get_kernel_name(g: NativeFunctionsGroup, backend_index: BackendIndex) -> str: + kernel = backend_index.get_kernel(g.functional) + if g.structured or kernel is None: + return cpp.name(g.functional.func) + return kernel.kernel + + +def get_out_kernel_name(g: NativeFunctionsGroup, backend_index: BackendIndex) -> str: + kernel = backend_index.get_kernel(g.out) + if g.structured or kernel is None: + return cpp.name(g.out.func) + return kernel.kernel + + +def generate_non_out_variant_call( + g: NativeFunctionsGroup, backend_index: BackendIndex +) -> str: + schema = g.functional.func + if schema.is_out_fn(): + raise AssertionError(f"Expected non-out function, got {schema}") + kernel_name = get_kernel_name(g, backend_index) + arg_names = (arg.name for arg in schema.schema_order_arguments()) + namespace_name = "cpu" if g.structured else "native" + return f"at::{namespace_name}::{kernel_name}({','.join(arg_names)})" + + +def generate_call_to_view_ops( + g: NativeFunctionsViewGroup, backend_index: BackendIndex +) -> str: + schema = g.view.func + kernel_name = cpp.name(schema) + kernel = backend_index.get_kernel(g.view) + if kernel: + kernel_name = kernel.kernel + arg_names = (arg.name for arg in schema.schema_order_arguments()) + namespace_name = "native" + return f"at::{namespace_name}::{kernel_name}({','.join(arg_names)})" + + +def generate_out_variant_call( + g: NativeFunctionsGroup, backend_index: BackendIndex +) -> str: + schema = g.out.func + if not schema.is_out_fn(): + raise AssertionError(f"Expected out function, got {schema}") + arg_names = [] + kernel_name = get_out_kernel_name(g, backend_index) + if g.structured: + # structured op starts with the output tensor argument. + arg_names = [out_arg.name for out_arg in schema.arguments.out] + else: + arg_names = [] + for arg in schema.arguments.non_out: + if isinstance(arg, SelfArgument): + arg_names.append(arg.argument.name) + else: + if not isinstance(arg, Argument): + raise AssertionError(f"Expected Argument, got {type(arg)}") + arg_names.append(arg.name) + if not g.structured: + if len(schema.arguments.out) != 1: + raise AssertionError( + f"Expected 1 out argument, got {len(schema.arguments.out)}" + ) + arg_names.append(schema.arguments.out[0].name) + cpp_arg_names = ",".join(arg_names) + namespace_name = "cpu" if g.structured else "native" + return f"at::{namespace_name}::{kernel_name}({cpp_arg_names})" + + +no_memory_resize_ops = frozenset( + ( + "isin.Scalar_Tensor", + "index_add", + "dot", + "vdot", + "nuclear_norm", + "histc", + "l1_loss", + "multi_margin_loss", + "multilabel_margin_loss", + "nll_loss", + "nll_loss2d", + "prod", + ) +) + + +def should_check_resize(schema: FunctionSchema) -> bool: + schema_str = str(schema) + type_variant_op_name = schema_str[: schema_str.find("(")] + return type_variant_op_name not in no_memory_resize_ops + + +def op_name_from_group(g: NativeFunctionsGroup) -> str: + return g.functional.func.name.name.base + + +class GenOpDispatcher: + def out_variant( + self, groups: Sequence[NativeFunctionsGroup], backend_index: BackendIndex + ) -> str: + if not groups: + return "" + generated_type_variants = [] + for g in groups: + with native_function_manager(g): + if not is_supported(g): + raise AssertionError(f"Unsupported function group: {g}") + if not isinstance(g, NativeFunctionsGroup): + raise AssertionError( + f"Expected NativeFunctionsGroup, got {type(g)}" + ) + generated_type_variant = self.out_variant_op_generator(g, backend_index) + generated_type_variants.append(generated_type_variant) + op_name = op_name_from_group(groups[0]) + body = "\n".join(generated_type_variants) + generated = f""" +REGISTER_OPERATOR_FUNCTOR( + aten::{op_name}, + aten_{op_name}, + [](Node* n) -> SROperator {{ + {body} + LogAndDumpSchema(n); + return nullptr; + }}) +""" + return generated + + def view( + self, groups: Sequence[NativeFunctionsViewGroup], backend_index: BackendIndex + ) -> str: + if not groups: + return "" + generated_type_variants = [] + for g in groups: + with native_function_manager(g): + if not is_supported(g): + raise AssertionError(f"Unsupported view group: {g}") + if not isinstance(g, NativeFunctionsViewGroup): + raise AssertionError( + f"Expected NativeFunctionsViewGroup, got {type(g)}" + ) + generated_type_variant = self.view_op_generator(g, backend_index) + generated_type_variants.append(generated_type_variant) + op_name = config.func_name_base_str(groups[0]) + body = "\n".join(generated_type_variants) + generated = f""" +REGISTER_NATIVE_OPERATOR_FUNCTOR( + aten::{op_name}, + aten_{op_name}, + [](Node* n) -> SROperator {{ + {body} + LogAndDumpSchema(n); + return nullptr; + }}); +""" + return generated + + def out_variant_op_generator( + self, g: NativeFunctionsGroup, backend_index: BackendIndex + ) -> str: + functional = g.functional + schema = str(functional.func) + populated_argument = generate_arg_extraction(g.functional.func) + functional_variant_call = generate_non_out_variant_call(g, backend_index) + if len(g.out.func.arguments.out) != 1: + raise AssertionError( + f"Expected 1 out argument, got {len(g.out.func.arguments.out)}" + ) + out_variable_name = str(g.out.func.arguments.out[0].name) + out_variant_call = generate_out_variant_call(g, backend_index) + generated = f""" + if (n->matches(torch::schema("aten::{schema}"))) {{ + return [](ProcessedNode* p_node) {{ + {populated_argument} + if (p_node->Output(0).isNone()) {{ + p_node->Output(0) = {functional_variant_call}; + return; + }} + auto& {out_variable_name} = p_node->Output(0).toTensor(); + fastResizeToZero({out_variable_name}); + {out_variant_call}; + }}; + }}""" + return generated + + def view_op_generator( + self, g: NativeFunctionsViewGroup, backend_index: BackendIndex + ) -> str: + schema = str(g.view.func) + populated_argument = generate_arg_extraction(g.view.func) + functional_variant_call = generate_call_to_view_ops(g, backend_index) + generated = f""" + if (n->matches(torch::schema("aten::{schema}"))) {{ + return [](ProcessedNode* p_node) {{ + {populated_argument} + p_node->Output(0) = {functional_variant_call}; + }}; + }}""" + return generated + + +class GenOpTestCase: + def out_variant(self, groups: Sequence[NativeFunctionsGroup]) -> str: + if not groups: + return "" + generated_type_variants = [] + for g in groups: + with native_function_manager(g): + if not is_supported(g): + raise AssertionError(f"Unsupported function group: {g}") + if not isinstance(g, NativeFunctionsGroup): + raise AssertionError( + f"Expected NativeFunctionsGroup, got {type(g)}" + ) + generated_type_variant = self.out_variant_op_test_case_generator(g) + generated_type_variants.append(generated_type_variant) + return "\n".join(generated_type_variants) + + def view(self, groups: Sequence[NativeFunctionsViewGroup]) -> str: + if not groups: + return "" + generated_type_variants = [] + for g in groups: + with native_function_manager(g): + if not is_supported(g): + raise AssertionError(f"Unsupported view group: {g}") + if not isinstance(g, NativeFunctionsViewGroup): + raise AssertionError( + f"Expected NativeFunctionsViewGroup, got {type(g)}" + ) + generated_type_variant = self.view_op_test_case_generator(g) + generated_type_variants.append(generated_type_variant) + return "\n".join(generated_type_variants) + + def out_variant_op_test_case_generator(self, g: NativeFunctionsGroup) -> str: + schema = g.functional.func + schema_str = str(schema) + if schema_str.find("(") <= 0: + raise AssertionError(f"Invalid schema string: {schema_str}") + type_variant_op_name = schema_str[: schema_str.find("(")].replace(".", "_") + op_name = op_name_from_group(g) + if not type_variant_op_name.startswith(op_name): + raise AssertionError( + f"Type variant op name {type_variant_op_name} doesn't start with {op_name}" + ) + + arg_types = generate_test_ir_arguments(schema) + arg_declarations = ", ".join( + ( + arg_name if arg_type is None else f"{arg_name}: {arg_type}" + for arg_name, arg_type in arg_types + ) + ) + arg_names = ", ".join((arg_name for arg_name, _ in arg_types)) + if not ( + len(schema.returns) == 1 + and isinstance(schema.returns[0].type, BaseType) + and schema.returns[0].type.name is BaseTy.Tensor + ): + raise AssertionError(f"Expected single Tensor return, got {schema.returns}") + test_value_definitions = generate_test_value_definitions(schema, 0) + test_value_names = generate_test_value_names(schema, 0) + test_value_definitions2 = generate_test_value_definitions(schema, 1) + test_value_names2 = generate_test_value_names(schema, 1) + check_resize = "true" if should_check_resize(schema) else "false" + generated = f""" +TEST(StaticRuntime, autogen_{type_variant_op_name}) {{ + const std::string script = R"IR( + graph({arg_declarations}): + %bias: None = prim::Constant() + %ret = aten::{op_name}({arg_names}) + %cloned = aten::clone(%ret, %bias) + return (%cloned) + )IR"; + + {test_value_definitions} + std::vector args{{{test_value_names}}}; + testStaticRuntime(script, args, {{}}, /*use_allclose=*/false, /*use_equalnan=*/false, /*check_resize=*/{check_resize}); + + {test_value_definitions2} + std::vector args2{{{test_value_names2}}}; + testStaticRuntime(script, args, args2, /*use_allclose=*/false, /*use_equalnan=*/false, /*check_resize=*/{check_resize}); + +}} +""" + return generated + + def view_op_test_case_generator(self, g: NativeFunctionsViewGroup) -> str: + schema = g.view.func + schema_str = str(schema) + if schema_str.find("(") <= 0: + raise AssertionError(f"Invalid schema string: {schema_str}") + type_variant_op_name = schema_str[: schema_str.find("(")].replace(".", "_") + op_name = g.view.root_name + if not type_variant_op_name.startswith(op_name): + raise AssertionError( + f"Type variant op name {type_variant_op_name} doesn't start with {op_name}" + ) + + arg_types = generate_test_ir_arguments(schema) + arg_declarations = ", ".join( + ( + arg_name if arg_type is None else f"{arg_name}: {arg_type}" + for arg_name, arg_type in arg_types + ) + ) + arg_names = ", ".join((arg_name for arg_name, _ in arg_types)) + if not ( + len(schema.returns) == 1 + and isinstance(schema.returns[0].type, BaseType) + and schema.returns[0].type.name is BaseTy.Tensor + ): + raise AssertionError(f"Expected single Tensor return, got {schema.returns}") + test_value_definitions = generate_test_value_definitions(schema, 0) + test_value_names = generate_test_value_names(schema, 0) + generated = f""" +TEST(StaticRuntime, autogen_{type_variant_op_name}) {{ + const std::string script = R"IR( + graph({arg_declarations}): + %bias: None = prim::Constant() + %ret = aten::{op_name}({arg_names}) + %cloned = aten::clone(%ret, %bias) + return (%cloned) + )IR"; + + {test_value_definitions} + std::vector args{{{test_value_names}}}; + testStaticRuntime(script, args); +}} +""" + + return generated diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/utils.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/utils.py new file mode 100644 index 0000000000000000000000000000000000000000..46deafe41b021ad19ce8ca7322e1a3ba3374c3f4 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/utils.py @@ -0,0 +1,523 @@ +from __future__ import annotations + +import contextlib +import functools +import hashlib +import os +import re +import sys +import textwrap +from dataclasses import is_dataclass +from enum import auto, Enum +from pathlib import Path +from pprint import pformat +from typing import Any, Generic, TYPE_CHECKING, TypeVar +from typing_extensions import assert_never, Self + +from torchgen.code_template import CodeTemplate + + +if TYPE_CHECKING: + from argparse import Namespace + from collections.abc import Callable, Iterable, Iterator, Sequence + + +TORCHGEN_ROOT = Path(__file__).absolute().parent +REPO_ROOT = TORCHGEN_ROOT.parent + + +# Many of these functions share logic for defining both the definition +# and declaration (for example, the function signature is the same), so +# we organize them into one function that takes a Target to say which +# code we want. +# +# This is an OPEN enum (we may add more cases to it in the future), so be sure +# to explicitly specify with Literal[Target.XXX] or Literal[Target.XXX, Target.YYY] +# what targets are valid for your use. +class Target(Enum): + # top level namespace (not including at) + DEFINITION = auto() + DECLARATION = auto() + # TORCH_LIBRARY(...) { ... } + REGISTRATION = auto() + # namespace { ... } + ANONYMOUS_DEFINITION = auto() + # namespace cpu { ... } + NAMESPACED_DEFINITION = auto() + NAMESPACED_DECLARATION = auto() + + +# Matches "foo" in "foo, bar" but not "foobar". Used to search for the +# occurrence of a parameter in the derivative formula +IDENT_REGEX = r"(^|\W){}($|\W)" + + +# TODO: Use a real parser here; this will get bamboozled +def split_name_params(schema: str) -> tuple[str, list[str]]: + m = re.match(r"(\w+)(\.\w+)?\((.*)\)", schema) + if m is None: + raise RuntimeError(f"Unsupported function schema: {schema}") + name, _, params = m.groups() + return name, params.split(", ") + + +T = TypeVar("T") +S = TypeVar("S") + +# These two functions purposely return generators in analogy to map() +# so that you don't mix up when you need to list() them + + +# Map over function that may return None; omit Nones from output sequence +def mapMaybe(func: Callable[[T], S | None], xs: Iterable[T]) -> Iterator[S]: + for x in xs: + r = func(x) + if r is not None: + yield r + + +# Map over function that returns sequences and cat them all together +def concatMap(func: Callable[[T], Sequence[S]], xs: Iterable[T]) -> Iterator[S]: + for x in xs: + yield from func(x) + + +# Conveniently add error context to exceptions raised. Lets us +# easily say that an error occurred while processing a specific +# context. +@contextlib.contextmanager +def context(msg_fn: Callable[[], str]) -> Iterator[None]: + try: + yield + except Exception as e: + # TODO: this does the wrong thing with KeyError + msg = msg_fn() + msg = textwrap.indent(msg, " ") + msg = f"{e.args[0]}\n{msg}" if e.args else msg + e.args = (msg,) + e.args[1:] + raise + + +@functools.cache +def _read_template(template_fn: str) -> CodeTemplate: + return CodeTemplate.from_file(template_fn) + + +# String hash that's stable across different executions, unlike builtin hash +def string_stable_hash(s: str) -> int: + sha1 = hashlib.sha1(s.encode("latin1"), usedforsecurity=False).digest() + return int.from_bytes(sha1, byteorder="little") + + +# A small abstraction for writing out generated files and keeping track +# of what files have been written (so you can write out a list of output +# files) +class FileManager: + def __init__( + self, + install_dir: str | Path, + template_dir: str | Path, + dry_run: bool, + ) -> None: + self.install_dir = Path(install_dir) + self.template_dir = Path(template_dir) + self.files: set[Path] = set() + self.dry_run = dry_run + + @property + def filenames(self) -> frozenset[str]: + return frozenset({file.as_posix() for file in self.files}) + + def _write_if_changed(self, filename: str | Path, contents: str) -> None: + file = Path(filename) + old_contents: str | None = None + try: + old_contents = file.read_text(encoding="utf-8") + except OSError: + pass + if contents != old_contents: + # Create output directory if it doesn't exist + file.parent.mkdir(parents=True, exist_ok=True) + file.write_text(contents, encoding="utf-8") + + # Read from template file and replace pattern with callable (type could be dict or str). + def substitute_with_template( + self, + template_fn: str | Path, + env_callable: Callable[[], str | dict[str, Any]], + ) -> str: + if Path(template_fn).is_absolute(): + raise AssertionError(f"template_fn must be relative: {template_fn}") + template_path = self.template_dir / template_fn + env = env_callable() + if isinstance(env, dict): + if "generated_comment" not in env: + generator_default = TORCHGEN_ROOT / "gen.py" + try: + generator = Path( + sys.modules["__main__"].__file__ or generator_default + ).absolute() + except (KeyError, AttributeError): + generator = generator_default.absolute() + + try: + generator_path = generator.relative_to(REPO_ROOT).as_posix() + except ValueError: + generator_path = generator.name + + env = { + **env, # copy the original dict instead of mutating it + "generated_comment": ( + "@" + f"generated by {generator_path} from {template_fn}" + ), + } + template = _read_template(template_path) + substitute_out = template.substitute(env) + # Ensure an extra blank line between the class/function definition + # and the docstring of the previous class/function definition. + # NB: It is generally not recommended to have docstrings in pyi stub + # files. But if there are any, we need to ensure that the file + # is properly formatted. + return re.sub( + r''' + (""")\n+ # match triple quotes + ( + (\s*@.+\n)* # match decorators if any + \s*(class|def) # match class/function definition + ) + ''', + r"\g<1>\n\n\g<2>", + substitute_out, + flags=re.VERBOSE, + ) + if isinstance(env, str): + return env + assert_never(env) + + def write_with_template( + self, + filename: str | Path, + template_fn: str | Path, + env_callable: Callable[[], str | dict[str, Any]], + ) -> None: + filename = Path(filename) + if filename.is_absolute(): + raise AssertionError(f"filename must be relative: {filename}") + file = self.install_dir / filename + if file in self.files: + raise AssertionError(f"duplicate file write {file}") + self.files.add(file) + if not self.dry_run: + substitute_out = self.substitute_with_template( + template_fn=template_fn, + env_callable=env_callable, + ) + self._write_if_changed(filename=file, contents=substitute_out) + + def write( + self, + filename: str | Path, + env_callable: Callable[[], str | dict[str, Any]], + ) -> None: + self.write_with_template(filename, filename, env_callable) + + def write_sharded( + self, + filename: str | Path, + items: Iterable[T], + *, + key_fn: Callable[[T], str], + env_callable: Callable[[T], dict[str, list[str]]], + num_shards: int, + base_env: dict[str, Any] | None = None, + sharded_keys: set[str], + ) -> None: + self.write_sharded_with_template( + filename, + filename, + items, + key_fn=key_fn, + env_callable=env_callable, + num_shards=num_shards, + base_env=base_env, + sharded_keys=sharded_keys, + ) + + def write_sharded_with_template( + self, + filename: str | Path, + template_fn: str | Path, + items: Iterable[T], + *, + key_fn: Callable[[T], str], + env_callable: Callable[[T], dict[str, list[str]]], + num_shards: int, + base_env: dict[str, Any] | None = None, + sharded_keys: set[str], + ) -> None: + file = Path(filename) + if file.is_absolute(): + raise AssertionError(f"filename must be relative: {filename}") + everything: dict[str, Any] = {"shard_id": "Everything"} + shards: list[dict[str, Any]] = [ + {"shard_id": f"_{i}"} for i in range(num_shards) + ] + all_shards = [everything] + shards + + if base_env is not None: + for shard in all_shards: + shard.update(base_env) + + for key in sharded_keys: + for shard in all_shards: + if key in shard: + if not isinstance(shard[key], list): + raise AssertionError("sharded keys in base_env must be a list") + shard[key] = shard[key].copy() + else: + shard[key] = [] + + def merge_env(into: dict[str, list[str]], from_: dict[str, list[str]]) -> None: + for k, v in from_.items(): + if k not in sharded_keys: + raise AssertionError(f"undeclared sharded key {k}") + into[k] += v + + if self.dry_run: + # Dry runs don't write any templates, so incomplete environments are fine + items = () + + for item in items: + key = key_fn(item) + sid = string_stable_hash(key) % num_shards + env = env_callable(item) + + merge_env(shards[sid], env) + merge_env(everything, env) + + for shard in all_shards: + shard_id = shard["shard_id"] + self.write_with_template( + file.with_stem(f"{file.stem}{shard_id}"), + template_fn, + lambda: shard, + ) + + # filenames is used to track compiled files, but FooEverything.cpp isn't meant to be compiled + self.files.discard(self.install_dir / file.with_stem(f"{file.stem}Everything")) + + def write_outputs(self, variable_name: str, filename: str | Path) -> None: + """Write a file containing the list of all outputs which are generated by this script.""" + content = "\n".join( + ( + "set(", + variable_name, + # Use POSIX paths to avoid invalid escape sequences on Windows + *(f' "{file.as_posix()}"' for file in sorted(self.files)), + ")", + ) + ) + self._write_if_changed(filename, content) + + def template_dir_for_comments(self) -> str: + """ + This needs to be deterministic. The template dir is an absolute path + that varies across builds. So, just use the path relative to this file, + which will point to the codegen source but will be stable. + """ + return os.path.relpath(self.template_dir, os.path.dirname(__file__)) + + +# Helper function to generate file manager +def make_file_manager( + options: Namespace, + install_dir: str | Path | None = None, +) -> FileManager: + template_dir = os.path.join(options.source_path, "templates") + install_dir = install_dir if install_dir else options.install_dir + return FileManager( + install_dir=install_dir, + template_dir=template_dir, + dry_run=options.dry_run, + ) + + +# Helper function to create a pretty representation for dataclasses +def dataclass_repr( + obj: Any, + indent: int = 0, + width: int = 80, +) -> str: + return pformat(obj, indent, width) + + +def _format_dict( + attr: dict[Any, Any], + indent: int, + width: int, + curr_indent: int, +) -> str: + curr_indent += indent + 3 + dict_repr = [] + for k, v in attr.items(): + k_repr = repr(k) + v_str = ( + pformat(v, indent, width, curr_indent + len(k_repr)) + if is_dataclass(v) + else repr(v) + ) + dict_repr.append(f"{k_repr}: {v_str}") + + return _format(dict_repr, indent, width, curr_indent, "{", "}") + + +def _format_list( + attr: list[Any] | set[Any] | tuple[Any, ...], + indent: int, + width: int, + curr_indent: int, +) -> str: + curr_indent += indent + 1 + list_repr = [ + pformat(l, indent, width, curr_indent) if is_dataclass(l) else repr(l) + for l in attr + ] + start, end = ("[", "]") if isinstance(attr, list) else ("(", ")") + return _format(list_repr, indent, width, curr_indent, start, end) + + +def _format( + fields_str: list[str], + indent: int, + width: int, + curr_indent: int, + start: str, + end: str, +) -> str: + delimiter, curr_indent_str = "", "" + # if it exceed the max width then we place one element per line + if len(repr(fields_str)) >= width: + delimiter = "\n" + curr_indent_str = " " * curr_indent + + indent_str = " " * indent + body = f", {delimiter}{curr_indent_str}".join(fields_str) + return f"{start}{indent_str}{body}{end}" + + +class NamespaceHelper: + """A helper for constructing the namespace open and close strings for a nested set of namespaces. + + e.g. for namespace_str torch::lazy, + + prologue: + namespace torch { + namespace lazy { + + epilogue: + } // namespace lazy + } // namespace torch + """ + + def __init__( + self, + namespace_str: str, + entity_name: str = "", + max_level: int = 2, + ) -> None: + # cpp_namespace can be a colon joined string such as torch::lazy + cpp_namespaces = namespace_str.split("::") + if len(cpp_namespaces) > max_level: + raise AssertionError( + f"Codegen doesn't support more than {max_level} level(s) of " + f"custom namespace. Got {namespace_str}." + ) + self.cpp_namespace_ = namespace_str + self.prologue_ = "\n".join([f"namespace {n} {{" for n in cpp_namespaces]) + self.epilogue_ = "\n".join( + [f"}} // namespace {n}" for n in reversed(cpp_namespaces)] + ) + self.namespaces_ = cpp_namespaces + self.entity_name_ = entity_name + + @staticmethod + def from_namespaced_entity( + namespaced_entity: str, + max_level: int = 2, + ) -> NamespaceHelper: + """ + Generate helper from nested namespaces as long as class/function name. E.g.: "torch::lazy::add" + """ + names = namespaced_entity.split("::") + entity_name = names[-1] + namespace_str = "::".join(names[:-1]) + return NamespaceHelper( + namespace_str=namespace_str, entity_name=entity_name, max_level=max_level + ) + + @property + def prologue(self) -> str: + return self.prologue_ + + @property + def epilogue(self) -> str: + return self.epilogue_ + + @property + def entity_name(self) -> str: + return self.entity_name_ + + # Only allow certain level of namespaces + def get_cpp_namespace(self, default: str = "") -> str: + """ + Return the namespace string from joining all the namespaces by "::" (hence no leading "::"). + Return default if namespace string is empty. + """ + return self.cpp_namespace_ if self.cpp_namespace_ else default + + +class OrderedSet(Generic[T]): + storage: dict[T, None] + + def __init__(self, iterable: Iterable[T] | None = None) -> None: + if iterable is None: + self.storage = {} + else: + self.storage = dict.fromkeys(iterable) + + def __contains__(self, item: T) -> bool: + return item in self.storage + + def __iter__(self) -> Iterator[T]: + return iter(self.storage.keys()) + + def update(self, items: OrderedSet[T]) -> None: + self.storage.update(items.storage) + + def add(self, item: T) -> None: + self.storage[item] = None + + def copy(self) -> OrderedSet[T]: + ret: OrderedSet[T] = OrderedSet() + ret.storage = self.storage.copy() + return ret + + @staticmethod + def union(*args: OrderedSet[T]) -> OrderedSet[T]: + ret = args[0].copy() + for s in args[1:]: + ret.update(s) + return ret + + def __or__(self, other: OrderedSet[T]) -> OrderedSet[T]: + return OrderedSet.union(self, other) + + def __ior__(self, other: OrderedSet[T]) -> Self: + self.update(other) + return self + + def __eq__(self, other: object) -> bool: + if isinstance(other, OrderedSet): + return self.storage == other.storage + else: + return set(self.storage.keys()) == other diff --git a/outputs/audit_venv/lib/python3.11/site-packages/torchgen/yaml_utils.py b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/yaml_utils.py new file mode 100644 index 0000000000000000000000000000000000000000..96d67859289c03019964568cd1e15acccc7a0eba --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/torchgen/yaml_utils.py @@ -0,0 +1,27 @@ +# Safely load fast C Yaml loader/dumper if they are available +try: + from yaml import CSafeLoader as Loader +except ImportError: + from yaml import SafeLoader as Loader # type: ignore[assignment, misc] + +try: + from yaml import CSafeDumper as Dumper +except ImportError: + from yaml import SafeDumper as Dumper # type: ignore[assignment, misc] +YamlDumper = Dumper + + +# A custom loader for YAML that errors on duplicate keys. +# This doesn't happen by default: see https://github.com/yaml/pyyaml/issues/165 +class YamlLoader(Loader): + def construct_mapping(self, node, deep=False): # type: ignore[no-untyped-def] + mapping = [] + for key_node, value_node in node.value: + key = self.construct_object(key_node, deep=deep) # type: ignore[no-untyped-call] + if key in mapping: + raise AssertionError( + f"Found a duplicate key in the yaml. key={key}, line={node.start_mark.line}" + ) + mapping.append(key) + mapping = super().construct_mapping(node, deep=deep) # type: ignore[no-untyped-call] + return mapping diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm-4.68.3+computecanada.dist-info/INSTALLER b/outputs/audit_venv/lib/python3.11/site-packages/tqdm-4.68.3+computecanada.dist-info/INSTALLER new file mode 100644 index 0000000000000000000000000000000000000000..a1b589e38a32041e49332e5e81c2d363dc418d68 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm-4.68.3+computecanada.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm-4.68.3+computecanada.dist-info/METADATA b/outputs/audit_venv/lib/python3.11/site-packages/tqdm-4.68.3+computecanada.dist-info/METADATA new file mode 100644 index 0000000000000000000000000000000000000000..003eec0abb0f6903e2cc94b5d3daad7dd99afed7 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm-4.68.3+computecanada.dist-info/METADATA @@ -0,0 +1,82 @@ +Metadata-Version: 2.2 +Name: tqdm +Version: 4.68.3+computecanada +Summary: Fast, Extensible Progress Meter +Description-Content-Type: text/x-rst +Keywords: progressbar,progressmeter,progress,bar,meter,rate,eta,console,terminal,time +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Console +Classifier: Environment :: MacOS X +Classifier: Environment :: Other Environment +Classifier: Environment :: Win32 (MS Windows) +Classifier: Environment :: X11 Applications +Classifier: Framework :: IPython +Classifier: Framework :: Jupyter +Classifier: Intended Audience :: Developers +Classifier: Intended Audience :: Education +Classifier: Intended Audience :: End Users/Desktop +Classifier: Intended Audience :: Other Audience +Classifier: Intended Audience :: System Administrators +Classifier: Operating System :: MacOS +Classifier: Operating System :: MacOS :: MacOS X +Classifier: Operating System :: Microsoft +Classifier: Operating System :: Microsoft :: MS-DOS +Classifier: Operating System :: Microsoft :: Windows +Classifier: Operating System :: POSIX +Classifier: Operating System :: POSIX :: BSD +Classifier: Operating System :: POSIX :: BSD :: FreeBSD +Classifier: Operating System :: POSIX :: Linux +Classifier: Operating System :: POSIX :: SunOS/Solaris +Classifier: Operating System :: Unix +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 +Classifier: Programming Language :: Python :: 3.14 +Classifier: Programming Language :: Python :: 3 :: Only +Classifier: Programming Language :: Python :: Implementation +Classifier: Programming Language :: Python :: Implementation :: IronPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: Programming Language :: Unix Shell +Classifier: Topic :: Desktop Environment +Classifier: Topic :: Education :: Computer Aided Instruction (CAI) +Classifier: Topic :: Education :: Testing +Classifier: Topic :: Office/Business +Classifier: Topic :: Other/Nonlisted Topic +Classifier: Topic :: Software Development :: Build Tools +Classifier: Topic :: Software Development :: Libraries +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Topic :: Software Development :: Pre-processors +Classifier: Topic :: Software Development :: User Interfaces +Classifier: Topic :: System :: Installation/Setup +Classifier: Topic :: System :: Logging +Classifier: Topic :: System :: Monitoring +Classifier: Topic :: System :: Shells +Classifier: Topic :: Terminals +Classifier: Topic :: Utilities +Maintainer-email: tqdm developers +Project-URL: homepage, https://tqdm.github.io +Project-URL: repository, https://github.com/tqdm/tqdm +Project-URL: changelog, https://tqdm.github.io/releases +Project-URL: wiki, https://github.com/tqdm/tqdm/wiki +Requires-Python: >=3.8 +Requires-Dist: colorama; platform_system == "Windows" +Requires-Dist: requests; extra == "discord" +Requires-Dist: envwrap; extra == "discord" +Requires-Dist: slack-sdk; extra == "slack" +Requires-Dist: envwrap; extra == "slack" +Requires-Dist: requests; extra == "telegram" +Requires-Dist: envwrap; extra == "telegram" +Requires-Dist: ipywidgets>=6; extra == "notebook" +Provides-Extra: discord +Provides-Extra: slack +Provides-Extra: telegram +Provides-Extra: notebook +License-File: LICENCE +Dynamic: license-file + +MPL-2.0 AND MIT \ No newline at end of file diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm-4.68.3+computecanada.dist-info/RECORD b/outputs/audit_venv/lib/python3.11/site-packages/tqdm-4.68.3+computecanada.dist-info/RECORD new file mode 100644 index 0000000000000000000000000000000000000000..7b60a3c177bb6be2c15700231ca42514ea72e0ee --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm-4.68.3+computecanada.dist-info/RECORD @@ -0,0 +1,72 @@ +../../../bin/tqdm,sha256=5exfaBxqYzZUJvdRDQXvzwlKVamVm5Z9mk46rmNq2pA,258 +tqdm-4.68.3+computecanada.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +tqdm-4.68.3+computecanada.dist-info/METADATA,sha256=f2YC_XY1lJcILHeP3Or4qHYbQQ5_Ymx2aB4EeDsAiaA,3629 +tqdm-4.68.3+computecanada.dist-info/RECORD,, +tqdm-4.68.3+computecanada.dist-info/WHEEL,sha256=E4Ta9GSW8Vg2e11uZktRc054ObD9JXJ5hm6vpxg0WJE,87 +tqdm-4.68.3+computecanada.dist-info/entry_points.txt,sha256=ReJCH7Ui3Zyh6M16E4OhsZ1oU7WtMXCfbtoyBhGO29Y,39 +tqdm-4.68.3+computecanada.dist-info/licenses/LICENCE,sha256=_P-Hw6R86AKKhRKqGC1PzwrRyQVE7nXPmzQ2hMrBlN4,1985 +tqdm-4.68.3+computecanada.dist-info/top_level.txt,sha256=NLiUJNfmc9At15s7JURiwvqMEjUi9G5PMGRrmMYzNSM,5 +tqdm/__init__.py,sha256=9mQNYSSqP99JasubEC1POJLMmhkkBH6cJZxPIR5G2pQ,1572 +tqdm/__main__.py,sha256=bYt9eEaoRQWdejEHFD8REx9jxVEdZptECFsV7F49Ink,30 +tqdm/__pycache__/__init__.cpython-311.pyc,, +tqdm/__pycache__/__main__.cpython-311.pyc,, +tqdm/__pycache__/_main.cpython-311.pyc,, +tqdm/__pycache__/_monitor.cpython-311.pyc,, +tqdm/__pycache__/_tqdm.cpython-311.pyc,, +tqdm/__pycache__/_tqdm_gui.cpython-311.pyc,, +tqdm/__pycache__/_tqdm_notebook.cpython-311.pyc,, +tqdm/__pycache__/_tqdm_pandas.cpython-311.pyc,, +tqdm/__pycache__/_utils.cpython-311.pyc,, +tqdm/__pycache__/asyncio.cpython-311.pyc,, +tqdm/__pycache__/auto.cpython-311.pyc,, +tqdm/__pycache__/autonotebook.cpython-311.pyc,, +tqdm/__pycache__/cli.cpython-311.pyc,, +tqdm/__pycache__/dask.cpython-311.pyc,, +tqdm/__pycache__/gui.cpython-311.pyc,, +tqdm/__pycache__/keras.cpython-311.pyc,, +tqdm/__pycache__/notebook.cpython-311.pyc,, +tqdm/__pycache__/rich.cpython-311.pyc,, +tqdm/__pycache__/std.cpython-311.pyc,, +tqdm/__pycache__/tk.cpython-311.pyc,, +tqdm/__pycache__/utils.cpython-311.pyc,, +tqdm/__pycache__/version.cpython-311.pyc,, +tqdm/_main.py,sha256=9ySvgmi_2Sw4CAo5UDW0Q2dxfTryboEWGHohfCJz0sA,283 +tqdm/_monitor.py,sha256=1VcavuotYSN6K-1jbpNuy6HYtr3mwo5Nh_jZMQ-jg3A,4013 +tqdm/_tqdm.py,sha256=LfLCuJ6bpsVo9xilmtBXyEm1vGnUCFrliW85j3J-nD4,283 +tqdm/_tqdm_gui.py,sha256=03Hc8KayxJveieI5-0-2NGiDpLvw9jZekofJUV7CCwk,287 +tqdm/_tqdm_notebook.py,sha256=BuHiLuxu6uEfZFaPJW3RPpPaxaVctEQA3kdSJSDL1hw,307 +tqdm/_tqdm_pandas.py,sha256=c9jptUgigN6axRDhRd4Rif98Tmxeopc1nFNFhIpbFUE,888 +tqdm/_utils.py,sha256=CfLztxFY-QRiNfxQCqAb2N8E13uauIM95RSQiFlaEuE,559 +tqdm/asyncio.py,sha256=d6vZ88ZFq6zq3tAWpkInB2xITVKCNEBakudm_-8Xtf8,2758 +tqdm/auto.py,sha256=nDZflj6p2zKkjBCNBourrhS81zYfZy1_dQvbckrdW8o,871 +tqdm/autonotebook.py,sha256=2pNgGCJDsesNNyYnmSve8BNQLiGSgo97SsPoMXCrNRQ,1440 +tqdm/cli.py,sha256=t1j_PqI0SuMyhJGoBxMPCXY-UTbfjciaAQYxAU_f_V0,11011 +tqdm/completion.sh,sha256=j79KbSmpIj_E11jfTfBXrGnUTzKXVpQ1vGVQvsyDRl4,946 +tqdm/contrib/__init__.py,sha256=1GMYYE866WCvlHg5MdmzOvPsQj4ZuMlXzz8xcRcJD60,2479 +tqdm/contrib/__pycache__/__init__.cpython-311.pyc,, +tqdm/contrib/__pycache__/bells.cpython-311.pyc,, +tqdm/contrib/__pycache__/concurrent.cpython-311.pyc,, +tqdm/contrib/__pycache__/discord.cpython-311.pyc,, +tqdm/contrib/__pycache__/itertools.cpython-311.pyc,, +tqdm/contrib/__pycache__/logging.cpython-311.pyc,, +tqdm/contrib/__pycache__/slack.cpython-311.pyc,, +tqdm/contrib/__pycache__/telegram.cpython-311.pyc,, +tqdm/contrib/__pycache__/utils_worker.cpython-311.pyc,, +tqdm/contrib/bells.py,sha256=IaxC2YW57xHDinxdUDQHvSego0HSTdDTExQQENvSB_k,921 +tqdm/contrib/concurrent.py,sha256=K1yjloKS5WRNFyjLRth0DmU5PAnDbF0A-GD27N-J4a8,3986 +tqdm/contrib/discord.py,sha256=LPjxDbmfiYtw3OAm_WhtwbX9BVYDlPc8lJ96aY3YZDE,5337 +tqdm/contrib/itertools.py,sha256=MA9-Jvb3ToseppInvev2iF4bokN7GQy4Q4LgjUyYdA4,2949 +tqdm/contrib/logging.py,sha256=clW-AxaNwaynw9QGWVByjKgB3WJULaocoG_9C3cJ-qc,3791 +tqdm/contrib/slack.py,sha256=sC182v7xBkfGftnDeUmQALMOfwQzU3ZiNf1Q_XA1DjI,4049 +tqdm/contrib/telegram.py,sha256=ybTraGjUQx5m443TsX6pJ7Uxrpsh1m4a43BTWVl_4e4,5081 +tqdm/contrib/utils_worker.py,sha256=vaxyJyagYwOCQXLUMd86bCbI4sPqZysuMGbDSGmvEWo,1199 +tqdm/dask.py,sha256=9Ei58eVqTossRLhAfWyUFCduXYKjmLmwkaXIy-CHYfs,1319 +tqdm/gui.py,sha256=maQ7jgB5leWHwxMlbBv08hpe5lytvmH0hEARu22GRdU,5481 +tqdm/keras.py,sha256=ugd80-xCxMqnrbx_DEOpmj6c2Sh1xoVtQ8V9-bw29eo,4396 +tqdm/notebook.py,sha256=6xkUTcYRsFxN4_BSUYYZ51kAgI7ycnT0HLpP9HukEqg,10888 +tqdm/rich.py,sha256=YyMPkEHVyYUVUR3adJKbVX26iTmNKpNMf3DEqmm-m60,5021 +tqdm/std.py,sha256=_T-OKI1PBEKy_JWAOWCq9MOOYMjxqVq8lpr3z_YIVUA,57728 +tqdm/tk.py,sha256=3VsB1MDAkCItaWu7CmMb2CoTLMiqmDiEgNi3yiqQ5GY,6702 +tqdm/tqdm.1,sha256=MLg9qjeHThZpPEQbWVrf5P5gOXMKHE_X606FSOBI9eU,7538 +tqdm/utils.py,sha256=o_f0V32H_wrn0XmRno3j9pJ9xlp5xL0fHT3gtqL-k58,9746 +tqdm/version.py,sha256=0uH4TLe8I8H71x29dlmtEZBObLT3b5IW-nytF3V0IVw,233 diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm-4.68.3+computecanada.dist-info/WHEEL b/outputs/audit_venv/lib/python3.11/site-packages/tqdm-4.68.3+computecanada.dist-info/WHEEL new file mode 100644 index 0000000000000000000000000000000000000000..b270261c9bb44553b2f648368d1bf5cb7baf8416 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm-4.68.3+computecanada.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: wheelfile 0.0.8 +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm-4.68.3+computecanada.dist-info/entry_points.txt b/outputs/audit_venv/lib/python3.11/site-packages/tqdm-4.68.3+computecanada.dist-info/entry_points.txt new file mode 100644 index 0000000000000000000000000000000000000000..540e60f4e073bc53a5f0a521a3639e0d80780af4 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm-4.68.3+computecanada.dist-info/entry_points.txt @@ -0,0 +1,2 @@ +[console_scripts] +tqdm = tqdm.cli:main diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm-4.68.3+computecanada.dist-info/licenses/LICENCE b/outputs/audit_venv/lib/python3.11/site-packages/tqdm-4.68.3+computecanada.dist-info/licenses/LICENCE new file mode 100644 index 0000000000000000000000000000000000000000..194caf554f8f10ba4cac8a81b631a61d0d81f60d --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm-4.68.3+computecanada.dist-info/licenses/LICENCE @@ -0,0 +1,49 @@ +`tqdm` is a product of collaborative work. +Unless otherwise stated, all authors (see commit logs) retain copyright +for their respective work, and release the work under the MIT licence +(text below). + +Exceptions or notable authors are listed below +in reverse chronological order: + +* files: * + MPL-2.0 2015-2026 (c) Casper da Costa-Luis + [casperdcl](https://github.com/casperdcl). +* files: tqdm/_tqdm.py + MIT 2016 (c) [PR #96] on behalf of Google Inc. +* files: tqdm/_tqdm.py README.rst .gitignore + MIT 2013 (c) Noam Yorav-Raphael, original author. + +[PR #96]: https://github.com/tqdm/tqdm/pull/96 + + +Mozilla Public Licence (MPL) v. 2.0 - Exhibit A +----------------------------------------------- + +This Source Code Form is subject to the terms of the +Mozilla Public License, v. 2.0. +If a copy of the MPL was not distributed with this project, +You can obtain one at https://mozilla.org/MPL/2.0/. + + +MIT License (MIT) +----------------- + +Copyright (c) 2013 noamraph + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm-4.68.3+computecanada.dist-info/top_level.txt b/outputs/audit_venv/lib/python3.11/site-packages/tqdm-4.68.3+computecanada.dist-info/top_level.txt new file mode 100644 index 0000000000000000000000000000000000000000..78620c472c9d799a14ccb02a0233f4669b3bcdcb --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm-4.68.3+computecanada.dist-info/top_level.txt @@ -0,0 +1 @@ +tqdm diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm/__init__.py b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..8081f77b8812f3b42d7949daa4195d2c35dc70ac --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/__init__.py @@ -0,0 +1,38 @@ +from ._monitor import TMonitor, TqdmSynchronisationWarning +from ._tqdm_pandas import tqdm_pandas +from .cli import main # TODO: remove in v5.0.0 +from .gui import tqdm as tqdm_gui # TODO: remove in v5.0.0 +from .gui import trange as tgrange # TODO: remove in v5.0.0 +from .std import ( + TqdmDeprecationWarning, TqdmExperimentalWarning, TqdmKeyError, TqdmMonitorWarning, + TqdmTypeError, TqdmWarning, tqdm, trange) +from .version import __version__ + +__all__ = ['tqdm', 'tqdm_gui', 'trange', 'tgrange', 'tqdm_pandas', + 'tqdm_notebook', 'tnrange', 'main', 'TMonitor', + 'TqdmTypeError', 'TqdmKeyError', + 'TqdmWarning', 'TqdmDeprecationWarning', + 'TqdmExperimentalWarning', + 'TqdmMonitorWarning', 'TqdmSynchronisationWarning', + '__version__'] + + +def tqdm_notebook(*args, **kwargs): # pragma: no cover + """See tqdm.notebook.tqdm for full documentation""" + from warnings import warn + + from .notebook import tqdm as _tqdm_notebook + warn("This function will be removed in tqdm==5.0.0\n" + "Please use `tqdm.notebook.tqdm` instead of `tqdm.tqdm_notebook`", + TqdmDeprecationWarning, stacklevel=2) + return _tqdm_notebook(*args, **kwargs) + + +def tnrange(*args, **kwargs): # pragma: no cover + """Shortcut for `tqdm.notebook.tqdm(range(*args), **kwargs)`.""" + from warnings import warn + + from .notebook import trange as _tnrange + warn("Please use `tqdm.notebook.trange` instead of `tqdm.tnrange`", + TqdmDeprecationWarning, stacklevel=2) + return _tnrange(*args, **kwargs) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm/__main__.py b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/__main__.py new file mode 100644 index 0000000000000000000000000000000000000000..4e28416e104515e90fca4b69cc60d0c61fd15d61 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/__main__.py @@ -0,0 +1,3 @@ +from .cli import main + +main() diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm/_main.py b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/_main.py new file mode 100644 index 0000000000000000000000000000000000000000..04fdeeff17b5cc84b210f445b54b87d5b99e3748 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/_main.py @@ -0,0 +1,9 @@ +from warnings import warn + +from .cli import * # NOQA +from .cli import __all__ # NOQA +from .std import TqdmDeprecationWarning + +warn("This function will be removed in tqdm==5.0.0\n" + "Please use `tqdm.cli.*` instead of `tqdm._main.*`", + TqdmDeprecationWarning, stacklevel=2) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm/_monitor.py b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/_monitor.py new file mode 100644 index 0000000000000000000000000000000000000000..9d97b8313770b7ced3639d43db3c89d41c5b9b67 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/_monitor.py @@ -0,0 +1,104 @@ +import atexit +from threading import Event, Thread, current_thread +from time import time +from warnings import warn + +__all__ = ["TMonitor", "TqdmSynchronisationWarning"] + + +class TqdmSynchronisationWarning(RuntimeWarning): + """ + tqdm multi-thread/-process errors which may cause incorrect nesting + but otherwise no adverse effects + """ + + +class TMonitor(Thread): + """ + Monitoring thread for tqdm bars. + Monitors if tqdm bars are taking too much time to display + and readjusts miniters automatically if necessary. + + Parameters + ---------- + tqdm_cls : class + tqdm class to use (can be core tqdm or a submodule). + sleep_interval : float + Time to sleep between monitoring checks. + """ + _test = {} # internal vars for unit testing + + def __init__(self, tqdm_cls, sleep_interval): + Thread.__init__(self, name="tqdm_monitor") + self.daemon = True # kill thread when main killed (KeyboardInterrupt) + self.woken = 0 # last time woken up, to sync with monitor + self.tqdm_cls = tqdm_cls + self.sleep_interval = sleep_interval + self._time = self._test.get("time", time) + self.was_killed = self._test.get("Event", Event)() + atexit.register(self._atexit_signal) + self.start() + + def _atexit_signal(self): + """ + Non-joining shutdown signal. + Avoids deadlocks at interpreter exit from other threads, dead forks, etc. + This daemon thread is auto-reaped on shutdown without needing a join. + """ + self.was_killed.set() + + def exit(self): + self.was_killed.set() + if self is not current_thread(): + self.join() + return self.report() + + def get_instances(self): + # returns a copy of started `tqdm_cls` instances + return [i for i in self.tqdm_cls._instances.copy() + # Avoid race by checking that the instance started + if hasattr(i, 'start_t')] + + def run(self): + cur_t = self._time() + while True: + # After processing and before sleeping, notify that we woke + # Need to be done just before sleeping + self.woken = cur_t + # Sleep some time... + self.was_killed.wait(self.sleep_interval) + # Quit if killed + if self.was_killed.is_set(): + return + # Then monitor! + # Acquire lock (to access _instances) + with self.tqdm_cls.get_lock(): + cur_t = self._time() + # Check tqdm instances are waiting too long to print + instances = self.get_instances() + for instance in instances: + # Check event in loop to reduce blocking time on exit + if self.was_killed.is_set(): + return + # Only if mininterval > 1 (else iterations are just slow) + # and last refresh exceeded maxinterval + if ( + instance.miniters > 1 + and (cur_t - instance.last_print_t) >= instance.maxinterval + ): + # force bypassing miniters on next iteration + # (dynamic_miniters adjusts mininterval automatically) + instance.miniters = 1 + # Refresh now! (works only for manual tqdm) + instance.refresh(nolock=True) + # Remove accidental long-lived strong reference + del instance + if instances != self.get_instances(): # pragma: nocover + warn("Set changed size during iteration" + + " (see https://github.com/tqdm/tqdm/issues/481)", + TqdmSynchronisationWarning, stacklevel=2) + # Remove accidental long-lived strong references + del instances + + def report(self): + return not self.was_killed.is_set() diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm/_tqdm.py b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/_tqdm.py new file mode 100644 index 0000000000000000000000000000000000000000..7fc4962774a4651db7a739a3f143633b6215a9bd --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/_tqdm.py @@ -0,0 +1,9 @@ +from warnings import warn + +from .std import * # NOQA +from .std import __all__ # NOQA +from .std import TqdmDeprecationWarning + +warn("This function will be removed in tqdm==5.0.0\n" + "Please use `tqdm.std.*` instead of `tqdm._tqdm.*`", + TqdmDeprecationWarning, stacklevel=2) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm/_tqdm_gui.py b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/_tqdm_gui.py new file mode 100644 index 0000000000000000000000000000000000000000..f32aa894f54b3a5b47a0fbf4263c2fd20df56c9d --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/_tqdm_gui.py @@ -0,0 +1,9 @@ +from warnings import warn + +from .gui import * # NOQA +from .gui import __all__ # NOQA +from .std import TqdmDeprecationWarning + +warn("This function will be removed in tqdm==5.0.0\n" + "Please use `tqdm.gui.*` instead of `tqdm._tqdm_gui.*`", + TqdmDeprecationWarning, stacklevel=2) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm/_tqdm_notebook.py b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/_tqdm_notebook.py new file mode 100644 index 0000000000000000000000000000000000000000..f225fbf5b52d04987ccf68f4d5ee4b735e3158b0 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/_tqdm_notebook.py @@ -0,0 +1,9 @@ +from warnings import warn + +from .notebook import * # NOQA +from .notebook import __all__ # NOQA +from .std import TqdmDeprecationWarning + +warn("This function will be removed in tqdm==5.0.0\n" + "Please use `tqdm.notebook.*` instead of `tqdm._tqdm_notebook.*`", + TqdmDeprecationWarning, stacklevel=2) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm/_tqdm_pandas.py b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/_tqdm_pandas.py new file mode 100644 index 0000000000000000000000000000000000000000..c4fe6efdc603579e7f8acfa27ac10dccdf3e94ce --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/_tqdm_pandas.py @@ -0,0 +1,24 @@ +import sys + +__author__ = "github.com/casperdcl" +__all__ = ['tqdm_pandas'] + + +def tqdm_pandas(tclass, **tqdm_kwargs): + """ + Registers the given `tqdm` instance with + `pandas.core.groupby.DataFrameGroupBy.progress_apply`. + """ + from tqdm import TqdmDeprecationWarning + + if isinstance(tclass, type) or (getattr(tclass, '__name__', '').startswith( + 'tqdm_')): # delayed adapter case + TqdmDeprecationWarning( + "Please use `tqdm.pandas(...)` instead of `tqdm_pandas(tqdm, ...)`.", + fp_write=getattr(tqdm_kwargs.get('file', None), 'write', sys.stderr.write)) + tclass.pandas(**tqdm_kwargs) + else: + TqdmDeprecationWarning( + "Please use `tqdm.pandas(...)` instead of `tqdm_pandas(tqdm(...))`.", + fp_write=getattr(tclass.fp, 'write', sys.stderr.write)) + type(tclass).pandas(deprecated_t=tclass) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm/_utils.py b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/_utils.py new file mode 100644 index 0000000000000000000000000000000000000000..28665dfe7f518bfaabce9bd442e4f2b23aeac267 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/_utils.py @@ -0,0 +1,11 @@ +from warnings import warn + +from .std import TqdmDeprecationWarning +from .utils import ( # noqa: F401, pylint: disable=unused-import + CUR_OS, IS_NIX, IS_WIN, RE_ANSI, Comparable, FormatReplace, SimpleTextIOWrapper, + _environ_cols_wrapper, _is_ascii, _is_utf, _screen_shape_linux, _screen_shape_tput, + _screen_shape_windows, _screen_shape_wrapper, _supports_unicode, _term_move_up, colorama) + +warn("This function will be removed in tqdm==5.0.0\n" + "Please use `tqdm.utils.*` instead of `tqdm._utils.*`", + TqdmDeprecationWarning, stacklevel=2) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm/asyncio.py b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/asyncio.py new file mode 100644 index 0000000000000000000000000000000000000000..b32e7673b94d1aeb5b0ef3deec3e5d9e5454e3c8 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/asyncio.py @@ -0,0 +1,93 @@ +""" +Asynchronous progress bar decorator for iterators. +Includes a default `range` iterator printing to `stderr`. + +Usage: +>>> from tqdm.asyncio import trange, tqdm +>>> async for i in trange(10): +... ... +""" +import asyncio +from sys import version_info + +from .std import tqdm as std_tqdm + +__author__ = {"github.com/": ["casperdcl"]} +__all__ = ['tqdm_asyncio', 'tarange', 'tqdm', 'trange'] + + +class tqdm_asyncio(std_tqdm): + """ + Asynchronous-friendly version of tqdm. + """ + def __init__(self, iterable=None, *args, **kwargs): + super().__init__(iterable, *args, **kwargs) + self.iterable_awaitable = False + if iterable is not None: + if hasattr(iterable, "__anext__"): + self.iterable_next = iterable.__anext__ + self.iterable_awaitable = True + elif hasattr(iterable, "__next__"): + self.iterable_next = iterable.__next__ + else: + self.iterable_iterator = iter(iterable) + self.iterable_next = self.iterable_iterator.__next__ + + def __aiter__(self): + return self + + async def __anext__(self): + try: + if self.iterable_awaitable: + res = await self.iterable_next() + else: + res = self.iterable_next() + self.update() + return res + except StopIteration: + self.close() + raise StopAsyncIteration + except BaseException: + self.close() + raise + + def send(self, *args, **kwargs): + return self.iterable.send(*args, **kwargs) + + @classmethod + def as_completed(cls, fs, *, loop=None, timeout=None, total=None, **tqdm_kwargs): + """ + Wrapper for `asyncio.as_completed`. + """ + if total is None: + total = len(fs) + kwargs = {} + if version_info[:2] < (3, 10): + kwargs['loop'] = loop + yield from cls(asyncio.as_completed(fs, timeout=timeout, **kwargs), + total=total, **tqdm_kwargs) + + @classmethod + async def gather(cls, *fs, loop=None, timeout=None, total=None, **tqdm_kwargs): + """ + Wrapper for `asyncio.gather`. + """ + async def wrap_awaitable(i, f): + return i, await f + + ifs = [wrap_awaitable(i, f) for i, f in enumerate(fs)] + res = [await f for f in cls.as_completed(ifs, loop=loop, timeout=timeout, + total=total, **tqdm_kwargs)] + return [i for _, i in sorted(res)] + + +def tarange(*args, **kwargs): + """ + A shortcut for `tqdm.asyncio.tqdm(range(*args), **kwargs)`. + """ + return tqdm_asyncio(range(*args), **kwargs) + + +# Aliases +tqdm = tqdm_asyncio +trange = tarange diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm/auto.py b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/auto.py new file mode 100644 index 0000000000000000000000000000000000000000..206c4409d5269594bdbab3a092ef6e09e7c01947 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/auto.py @@ -0,0 +1,40 @@ +""" +Enables multiple commonly used features. + +Method resolution order: + +- `tqdm.autonotebook` without import warnings +- `tqdm.asyncio` +- `tqdm.std` base class + +Usage: +>>> from tqdm.auto import trange, tqdm +>>> for i in trange(10): +... ... +""" +import warnings + +from .std import TqdmExperimentalWarning + +with warnings.catch_warnings(): + warnings.simplefilter("ignore", category=TqdmExperimentalWarning) + from .autonotebook import tqdm as notebook_tqdm + +from .asyncio import tqdm as asyncio_tqdm +from .std import tqdm as std_tqdm + +if notebook_tqdm != std_tqdm: + class tqdm(notebook_tqdm, asyncio_tqdm): # pylint: disable=inconsistent-mro + pass +else: + tqdm = asyncio_tqdm + + +def trange(*args, **kwargs): + """ + A shortcut for `tqdm.auto.tqdm(range(*args), **kwargs)`. + """ + return tqdm(range(*args), **kwargs) + + +__all__ = ["tqdm", "trange"] diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm/autonotebook.py b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/autonotebook.py new file mode 100644 index 0000000000000000000000000000000000000000..df1d21b2b0f933b460c0f1021ae22a1f058b0871 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/autonotebook.py @@ -0,0 +1,38 @@ +""" +Automatically choose between `tqdm.notebook` and `tqdm.std`. + +Usage: +>>> from tqdm.autonotebook import trange, tqdm +>>> for i in trange(10): +... ... +""" +import os +import sys +from warnings import warn + +try: + if 'ipykernel.zmqshell' in sys.modules: + if any(i == 'QT_API' or i.startswith('SPYDER') for i in os.environ): + raise ImportError("console") # jupyter-qtconsole/spyder + ipy = sys.modules['IPython'].get_ipython().__class__.__name__.lower() + if 'qt' in ipy or 'spyder' in ipy: + raise ImportError("console") # older jupyter-qtconsole/spyder + # jupyter-notebook/jupyterlab/vscode/binder/colab + elif 'IPython.utils._process_emscripten' in sys.modules: + pass # jupyterlite (pyodide)/jupyterlite-xeus + else: + raise ImportError("console") # ipython/jupyter-console + from .notebook import WARN_NOIPYW, IProgress + if IProgress is None: + from .std import TqdmWarning + warn(WARN_NOIPYW, TqdmWarning, stacklevel=2) + raise ImportError('ipywidgets') +except Exception: + from .std import tqdm, trange +else: # pragma: no cover + from .notebook import tqdm, trange + from .std import TqdmExperimentalWarning + warn("Using `tqdm.autonotebook.tqdm` in notebook mode." + " Use `tqdm.tqdm` instead to force console mode" + " (e.g. in jupyter console)", TqdmExperimentalWarning, stacklevel=2) +__all__ = ["tqdm", "trange"] diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm/cli.py b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/cli.py new file mode 100644 index 0000000000000000000000000000000000000000..e5599efdc7c1c2aaad1cd95dd02eacdffc71c658 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/cli.py @@ -0,0 +1,324 @@ +""" +Module version for monitoring CLI pipes (`... | python -m tqdm | ...`). +""" +import logging +import re +import sys +from ast import literal_eval +from textwrap import indent + +from .std import TqdmKeyError, TqdmTypeError, tqdm +from .version import __version__ + +__all__ = ["main"] +log = logging.getLogger(__name__) + + +def cast(val, typ): + log.debug((val, typ)) + if " or " in typ: + for t in typ.split(" or "): + try: + return cast(val, t) + except TqdmTypeError: + pass + raise TqdmTypeError(f"{val} : {typ}") + + # sys.stderr.write('\ndebug | `val:type`: `' + val + ':' + typ + '`.\n') + if typ == 'bool': + if (val == 'True') or (val == ''): + return True + if val == 'False': + return False + raise TqdmTypeError(val + ' : ' + typ) + if typ == 'chr': + if len(val) == 1: + return val.encode() + if re.match(r"^\\\w+$", val): + return literal_eval(f'"{val}"').encode() + raise TqdmTypeError(f"{val} : {typ}") + if typ == 'str': + return val + if typ == 'int': + try: + return int(val) + except ValueError as exc: + raise TqdmTypeError(f"{val} : {typ}") from exc + if typ == 'float': + try: + return float(val) + except ValueError as exc: + raise TqdmTypeError(f"{val} : {typ}") from exc + raise TqdmTypeError(f"{val} : {typ}") + + +def posix_pipe(fin, fout, delim=b'\\n', buf_size=256, + callback=lambda float: None, callback_len=True): + """ + Params + ------ + fin : binary file with `read(buf_size : int)` method + fout : binary file with `write` (and optionally `flush`) methods. + callback : function(float), e.g.: `tqdm.update` + callback_len : If (default: True) do `callback(len(buffer))`. + Otherwise, do `callback(data) for data in buffer.split(delim)`. + """ + fp_write = fout.write + + if not delim: + while True: + tmp = fin.read(buf_size) + + # flush at EOF + if not tmp: + getattr(fout, 'flush', lambda: None)() + return + + fp_write(tmp) + callback(len(tmp)) + # return + + buf = b'' + len_delim = len(delim) + # n = 0 + while True: + tmp = fin.read(buf_size) + + # flush at EOF + if not tmp: + if buf: + fp_write(buf) + if callback_len: + # n += 1 + buf.count(delim) + callback(1 + buf.count(delim)) + else: + for i in buf.split(delim): + callback(i) + getattr(fout, 'flush', lambda: None)() + return # n + + while True: + i = tmp.find(delim) + if i < 0: + buf += tmp + break + fp_write(buf + tmp[:i + len(delim)]) + # n += 1 + callback(1 if callback_len else (buf + tmp[:i])) + buf = b'' + tmp = tmp[i + len_delim:] + + +# ((opt, type), ... ) +RE_OPTS = re.compile(r'\n {4}(\S+)\s{2,}:\s*([^,]+)') +# better split method assuming no positional args +RE_SHLEX = re.compile(r'\s*(? : \2', d) + split = RE_OPTS.split(d) + opt_types_desc = zip(split[1::3], split[2::3], split[3::3]) + d = ''.join(('\n --{0} : {2}{3}' if otd[1] == 'bool' else + '\n --{0}=<{1}> : {2}{3}').format( + otd[0].replace('_', '-'), otd[0], *otd[1:]) + for otd in opt_types_desc if otd[0] not in UNSUPPORTED_OPTS) + + help_short = "Usage:\n tqdm [--help | options]\n" + d = help_short + """ +Options: + -h, --help Print this help and exit. + -v, --version Print version and exit. +""" + d.strip('\n') + '\n' + + # opts = docopt(d, version=__version__) + if any(v in argv for v in ('-v', '--version')): + sys.stdout.write(__version__ + '\n') + sys.exit(0) + elif any(v in argv for v in ('-h', '--help')): + sys.stdout.write(d + '\n') + sys.exit(0) + elif argv and argv[0][:2] != '--': + sys.stderr.write(f"Error:Unknown argument:{argv[0]}\n{help_short}") + + argv = RE_SHLEX.split(' '.join(["tqdm"] + argv)) + opts = dict(zip(argv[1::3], argv[3::3])) + + log.debug(opts) + opts.pop('log', True) + + tqdm_args = {'file': fp} + try: + for (o, v) in opts.items(): + o = o.replace('-', '_') + try: + tqdm_args[o] = cast(v, opt_types[o]) + except KeyError as e: + raise TqdmKeyError(str(e)) + log.debug('args:' + str(tqdm_args)) + + delim_per_char = tqdm_args.pop('bytes', False) + update = tqdm_args.pop('update', False) + update_to = tqdm_args.pop('update_to', False) + if sum((delim_per_char, update, update_to)) > 1: + raise TqdmKeyError("Can only have one of --bytes --update --update_to") + except Exception: + fp.write("\nError:\n" + help_short) + stdin, stdout_write = sys.stdin, sys.stdout.write + for i in stdin: + stdout_write(i) + raise + else: + buf_size = tqdm_args.pop('buf_size', 256) + delim = tqdm_args.pop('delim', b'\\n') + tee = tqdm_args.pop('tee', False) + manpath = tqdm_args.pop('manpath', None) + comppath = tqdm_args.pop('comppath', None) + if tqdm_args.pop('null', False): + class stdout: + @staticmethod + def write(_): + pass + else: + stdout = sys.stdout + stdout = getattr(stdout, 'buffer', stdout) + stdin = getattr(sys.stdin, 'buffer', sys.stdin) + if manpath or comppath: + try: # py<3.9 + import importlib_resources as resources + except ImportError: + from importlib import resources + from pathlib import Path + + def cp(name, dst): + """copy resource `name` to `dst`""" + fi = resources.files('tqdm') / name + dst.write_bytes(fi.read_bytes()) + log.info("written:%s", dst) + if manpath is not None: + cp('tqdm.1', Path(manpath) / 'tqdm.1') + if comppath is not None: + cp('completion.sh', Path(comppath) / 'tqdm_completion.sh') + sys.exit(0) + if tee: + stdout_write = stdout.write + fp_write = getattr(fp, 'buffer', fp).write + + class stdout: # pylint: disable=function-redefined + @staticmethod + def write(x): + with tqdm.external_write_mode(file=fp): + fp_write(x) + stdout_write(x) + if delim_per_char: + tqdm_args.setdefault('unit', 'B') + tqdm_args.setdefault('unit_scale', True) + tqdm_args.setdefault('unit_divisor', 1024) + log.debug(tqdm_args) + with tqdm(**tqdm_args) as t: + posix_pipe(stdin, stdout, '', buf_size, t.update) + elif delim == b'\\n': + log.debug(tqdm_args) + write = stdout.write + if update or update_to: + with tqdm(**tqdm_args) as t: + if update: + def callback(i): + t.update(literal_eval(i.decode())) + else: # update_to + def callback(i): + t.update(literal_eval(i.decode()) - t.n) + for i in stdin: + write(i) + callback(i) + else: + for i in tqdm(stdin, **tqdm_args): + write(i) + else: + log.debug(tqdm_args) + with tqdm(**tqdm_args) as t: + callback_len = False + if update: + def callback(i): + t.update(literal_eval(i.decode())) + elif update_to: + def callback(i): + t.update(literal_eval(i.decode()) - t.n) + else: + callback = t.update + callback_len = True + posix_pipe(stdin, stdout, delim, buf_size, callback, callback_len) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm/completion.sh b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/completion.sh new file mode 100644 index 0000000000000000000000000000000000000000..9f61c7f14bb8c1f6099b9eb75dce28ece6a7ae96 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/completion.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +_tqdm(){ + local cur prv + cur="${COMP_WORDS[COMP_CWORD]}" + prv="${COMP_WORDS[COMP_CWORD - 1]}" + + case ${prv} in + --bar_format|--buf_size|--colour|--comppath|--delay|--delim|--desc|--initial|--lock_args|--manpath|--maxinterval|--mininterval|--miniters|--ncols|--nrows|--position|--postfix|--smoothing|--total|--unit|--unit_divisor) + # await user input + ;; + "--log") + COMPREPLY=($(compgen -W 'CRITICAL FATAL ERROR WARN WARNING INFO DEBUG NOTSET' -- ${cur})) + ;; + *) + COMPREPLY=($(compgen -W '--ascii --bar_format --buf_size --bytes --colour --comppath --delay --delim --desc --disable --dynamic_ncols --help --initial --leave --lock_args --log --manpath --maxinterval --mininterval --miniters --ncols --nrows --null --position --postfix --smoothing --tee --total --unit --unit_divisor --unit_scale --update --update_to --version --write_bytes -h -v' -- ${cur})) + ;; + esac +} +complete -F _tqdm tqdm diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm/contrib/__init__.py b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/contrib/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..87ec4601fcff138e0882808237375aed93f5ef35 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/contrib/__init__.py @@ -0,0 +1,91 @@ +""" +Thin wrappers around common functions. + +Subpackages contain potentially unstable extensions. +""" +from warnings import warn + +from ..auto import tqdm as tqdm_auto +from ..std import TqdmDeprecationWarning, tqdm +from ..utils import ObjectWrapper + +__author__ = {"github.com/": ["casperdcl"]} +__all__ = ['tenumerate', 'tzip', 'tmap'] + + +class DummyTqdmFile(ObjectWrapper): + """Dummy file-like that will write to tqdm""" + + def __init__(self, wrapped): + super().__init__(wrapped) + self._buf = [] + + def write(self, x, nolock=False): + nl = b"\n" if isinstance(x, bytes) else "\n" + pre, sep, post = x.rpartition(nl) + if sep: + blank = type(nl)() + tqdm.write(blank.join(self._buf + [pre, sep]), + end=blank, file=self._wrapped, nolock=nolock) + self._buf = [post] + else: + self._buf.append(x) + + def __del__(self): + if self._buf: + blank = type(self._buf[0])() + try: + tqdm.write(blank.join(self._buf), end=blank, file=self._wrapped) + except (OSError, ValueError): + pass + + +def builtin_iterable(func): + """Returns `func`""" + warn("This function has no effect, and will be removed in tqdm==5.0.0", + TqdmDeprecationWarning, stacklevel=2) + return func + + +def tenumerate(iterable, start=0, total=None, tqdm_class=tqdm_auto, **tqdm_kwargs): + """ + Equivalent of `numpy.ndenumerate` or builtin `enumerate`. + + Parameters + ---------- + tqdm_class : [default: tqdm.auto.tqdm]. + """ + try: + import numpy as np + except ImportError: + pass + else: + if isinstance(iterable, np.ndarray): + return tqdm_class(np.ndenumerate(iterable), total=total or iterable.size, + **tqdm_kwargs) + return enumerate(tqdm_class(iterable, total=total, **tqdm_kwargs), start) + + +def tzip(iter1, *iter2plus, **tqdm_kwargs): + """ + Equivalent of builtin `zip`. + + Parameters + ---------- + tqdm_class : [default: tqdm.auto.tqdm]. + """ + kwargs = tqdm_kwargs.copy() + tqdm_class = kwargs.pop("tqdm_class", tqdm_auto) + yield from zip(tqdm_class(iter1, **kwargs), *iter2plus) + + +def tmap(function, *sequences, **tqdm_kwargs): + """ + Equivalent of builtin `map`. + + Parameters + ---------- + tqdm_class : [default: tqdm.auto.tqdm]. + """ + for i in tzip(*sequences, **tqdm_kwargs): + yield function(*i) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm/contrib/bells.py b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/contrib/bells.py new file mode 100644 index 0000000000000000000000000000000000000000..e4968e7751920093aa6c3ddd72c5b5e2e29df8bc --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/contrib/bells.py @@ -0,0 +1,28 @@ +""" +Even more features than `tqdm.auto` (all the bells & whistles): + +- `tqdm.auto` +- `tqdm.tqdm.pandas` +- `tqdm.contrib.slack` + + uses `${TQDM_SLACK_TOKEN}` and `${TQDM_SLACK_CHANNEL}` +- `tqdm.contrib.telegram` + + uses `${TQDM_TELEGRAM_TOKEN}` and `${TQDM_TELEGRAM_CHAT_ID}` +- `tqdm.contrib.discord` + + uses `${TQDM_DISCORD_TOKEN}` and `${TQDM_DISCORD_CHANNEL_ID}` +""" +__all__ = ['tqdm', 'trange'] +import warnings +from os import getenv + +if getenv("TQDM_SLACK_TOKEN") and getenv("TQDM_SLACK_CHANNEL"): + from .slack import tqdm, trange +elif getenv("TQDM_TELEGRAM_TOKEN") and getenv("TQDM_TELEGRAM_CHAT_ID"): + from .telegram import tqdm, trange +elif getenv("TQDM_DISCORD_TOKEN") and getenv("TQDM_DISCORD_CHANNEL_ID"): + from .discord import tqdm, trange +else: + from ..auto import tqdm, trange + +with warnings.catch_warnings(): + warnings.simplefilter("ignore", category=FutureWarning) + tqdm.pandas() diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm/contrib/concurrent.py b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/contrib/concurrent.py new file mode 100644 index 0000000000000000000000000000000000000000..cd81d622a1309df179042159a56cef4f8c309224 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/contrib/concurrent.py @@ -0,0 +1,105 @@ +""" +Thin wrappers around `concurrent.futures`. +""" +from contextlib import contextmanager +from operator import length_hint +from os import cpu_count + +from ..auto import tqdm as tqdm_auto +from ..std import TqdmWarning + +__author__ = {"github.com/": ["casperdcl"]} +__all__ = ['thread_map', 'process_map'] + + +@contextmanager +def ensure_lock(tqdm_class, lock_name=""): + """get (create if necessary) and then restore `tqdm_class`'s lock""" + old_lock = getattr(tqdm_class, '_lock', None) # don't create a new lock + lock = old_lock or tqdm_class.get_lock() # maybe create a new lock + lock = getattr(lock, lock_name, lock) # maybe subtype + tqdm_class.set_lock(lock) + yield lock + if old_lock is None: + del tqdm_class._lock + else: + tqdm_class.set_lock(old_lock) + + +def _executor_map(PoolExecutor, fn, *iterables, **tqdm_kwargs): + """ + Implementation of `thread_map` and `process_map`. + + Parameters + ---------- + tqdm_class : [default: tqdm.auto.tqdm]. + max_workers : [default: min(32, cpu_count() + 4)]. + chunksize : [default: 1]. + lock_name : [default: "":str]. + """ + kwargs = tqdm_kwargs.copy() + if "total" not in kwargs: + kwargs["total"] = length_hint(iterables[0]) + tqdm_class = kwargs.pop("tqdm_class", tqdm_auto) + max_workers = kwargs.pop("max_workers", min(32, cpu_count() + 4)) + chunksize = kwargs.pop("chunksize", 1) + lock_name = kwargs.pop("lock_name", "") + with ensure_lock(tqdm_class, lock_name=lock_name) as lk: + # share lock in case workers are already using `tqdm` + with PoolExecutor(max_workers=max_workers, initializer=tqdm_class.set_lock, + initargs=(lk,)) as ex: + return list(tqdm_class(ex.map(fn, *iterables, chunksize=chunksize), **kwargs)) + + +def thread_map(fn, *iterables, **tqdm_kwargs): + """ + Equivalent of `list(map(fn, *iterables))` + driven by `concurrent.futures.ThreadPoolExecutor`. + + Parameters + ---------- + tqdm_class : optional + `tqdm` class to use for bars [default: tqdm.auto.tqdm]. + max_workers : int, optional + Maximum number of workers to spawn; passed to + `concurrent.futures.ThreadPoolExecutor.__init__`. + [default: max(32, cpu_count() + 4)]. + """ + from concurrent.futures import ThreadPoolExecutor + return _executor_map(ThreadPoolExecutor, fn, *iterables, **tqdm_kwargs) + + +def process_map(fn, *iterables, **tqdm_kwargs): + """ + Equivalent of `list(map(fn, *iterables))` + driven by `concurrent.futures.ProcessPoolExecutor`. + + Parameters + ---------- + tqdm_class : optional + `tqdm` class to use for bars [default: tqdm.auto.tqdm]. + max_workers : int, optional + Maximum number of workers to spawn; passed to + `concurrent.futures.ProcessPoolExecutor.__init__`. + [default: min(32, cpu_count() + 4)]. + chunksize : int, optional + Size of chunks sent to worker processes; passed to + `concurrent.futures.ProcessPoolExecutor.map`. [default: 1]. + lock_name : str, optional + Member of `tqdm_class.get_lock()` to use [default: mp_lock]. + """ + from concurrent.futures import ProcessPoolExecutor + if iterables and "chunksize" not in tqdm_kwargs: + # default `chunksize=1` has poor performance for large iterables + # (most time spent dispatching items to workers). + longest_iterable_len = max(map(length_hint, iterables)) + if longest_iterable_len > 1000: + from warnings import warn + warn("Iterable length %d > 1000 but `chunksize` is not set." + " This may seriously degrade multiprocess performance." + " Set `chunksize=1` or more." % longest_iterable_len, + TqdmWarning, stacklevel=2) + if "lock_name" not in tqdm_kwargs: + tqdm_kwargs = tqdm_kwargs.copy() + tqdm_kwargs["lock_name"] = "mp_lock" + return _executor_map(ProcessPoolExecutor, fn, *iterables, **tqdm_kwargs) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm/contrib/discord.py b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/contrib/discord.py new file mode 100644 index 0000000000000000000000000000000000000000..f46a4992bcbaeb7f85d75f8e6c64dc6e09f5325b --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/contrib/discord.py @@ -0,0 +1,155 @@ +""" +Sends updates to a Discord bot. + +Usage: +>>> from tqdm.contrib.discord import tqdm, trange +>>> for i in trange(10, token='{token}', channel_id='{channel_id}'): +... ... + +![screenshot](https://tqdm.github.io/img/screenshot-discord.png) +""" +from warnings import warn + +from requests import Session +from requests.utils import default_user_agent + +from ..auto import tqdm as tqdm_auto +from ..std import TqdmWarning +from ..utils import envwrap +from ..version import __version__ +from .utils_worker import MonoWorker + +__author__ = {"github.com/": ["casperdcl", "guigoruiz1"]} +__all__ = ['DiscordIO', 'tqdm_discord', 'tdrange', 'tqdm', 'trange'] + + +class DiscordIO(MonoWorker): + """Non-blocking file-like IO using a Discord Bot.""" + API = 'https://discord.com/api/v10' + UA = f"tqdm (https://tqdm.github.io, {__version__}) {default_user_agent()}" + + def __init__(self, token, channel_id): + """Creates a new message in the given `channel_id`.""" + super().__init__() + self.token = token + self.channel_id = channel_id + self.session = Session() + self.text = self.__class__.__name__ + self.message_id # pylint: disable=pointless-statement + + @property + def message_id(self): + if hasattr(self, '_message_id'): + return self._message_id # pylint: disable=access-member-before-definition + try: + req = self.session.post( + f'{self.API}/channels/{self.channel_id}/messages', + headers={'Authorization': f'Bot {self.token}', 'User-Agent': self.UA}, + json={'content': f"`{self.text}`"}) + res = req.json() + req.raise_for_status() + except Exception as e: + if req.status_code == 429: + warn("Creation rate limit: try increasing `mininterval`.", + TqdmWarning, stacklevel=2) + else: + tqdm_auto.write(str(e)) + else: + self._message_id = res['id'] + return self._message_id + + def write(self, s): + """Replaces internal `message_id`'s text with `s`.""" + if not s: + s = "..." + s = s.replace('\r', '').strip() + if s == self.text: + return # avoid duplicate message Bot error + message_id = self.message_id + if message_id is None: + return + self.text = s + try: + future = self.submit( + self.session.patch, + f'{self.API}/channels/{self.channel_id}/messages/{message_id}', + headers={'Authorization': f'Bot {self.token}', 'User-Agent': self.UA}, + json={'content': f"`{self.text}`"}) + except Exception as e: + tqdm_auto.write(str(e)) + else: + return future + + def delete(self): + """Deletes internal `message_id`.""" + try: + future = self.submit( + self.session.delete, + f'{self.API}/channels/{self.channel_id}/messages/{self.message_id}', + headers={'Authorization': f'Bot {self.token}', 'User-Agent': self.UA}) + except Exception as e: + tqdm_auto.write(str(e)) + else: + return future + + +class tqdm_discord(tqdm_auto): # pylint: disable=inconsistent-mro + """ + Standard `tqdm.auto.tqdm` but also sends updates to a Discord Bot. + May take a few seconds to create (`__init__`). + + - create a discord bot (not public, no requirement of OAuth2 code + grant, only send message permissions) & invite it to a channel: + + - copy the bot `{token}` & `{channel_id}` and paste below + + >>> from tqdm.contrib.discord import tqdm, trange + >>> for i in tqdm(iterable, token='{token}', channel_id='{channel_id}'): + ... ... + """ + @envwrap("tqdm", "discord", is_method=True) + def __init__(self, *args, token=None, channel_id=None, **kwargs): + """ + Parameters + ---------- + token : str, required. Discord bot token + [default: ${TQDM_DISCORD_TOKEN}]. + channel_id : int, required. Discord channel ID + [default: ${TQDM_DISCORD_CHANNEL_ID}]. + + See `tqdm.auto.tqdm.__init__` for other parameters. + """ + if not kwargs.get('disable'): + kwargs = kwargs.copy() + self.dio = DiscordIO(token, channel_id) + super().__init__(*args, **kwargs) + + def display(self, **kwargs): # pylint: disable=arguments-differ + super().display(**kwargs) + fmt = self.format_dict + if fmt.get('bar_format', None): + fmt['bar_format'] = fmt['bar_format'].replace( + '', '{bar:10u}').replace('{bar}', '{bar:10u}') + self.dio.write(self.format_meter(**fmt)) + + def clear(self, *args, **kwargs): + super().clear(*args, **kwargs) + if not self.disable: + self.dio.write("") + + def close(self): + if self.disable: + return + super().close() + if not (self.leave or (self.leave is None and self.pos == 0)): + self.dio.delete() + + +def tdrange(*args, **kwargs): + """Shortcut for `tqdm.contrib.discord.tqdm(range(*args), **kwargs)`.""" + return tqdm_discord(range(*args), **kwargs) + + +# Aliases +tqdm = tqdm_discord +trange = tdrange diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm/contrib/itertools.py b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/contrib/itertools.py new file mode 100644 index 0000000000000000000000000000000000000000..469961867cbf2c22cb2b799ecb4736438a912520 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/contrib/itertools.py @@ -0,0 +1,92 @@ +""" +Thin wrappers around `itertools`. +""" +import itertools +import math + +from ..auto import tqdm as tqdm_auto + +__author__ = {"github.com/": ["casperdcl"]} +__all__ = [ + 'chain', 'product', 'permutations', 'combinations', 'combinations_with_replacement', 'batched'] + + +def chain(*iterables, total=None, tqdm_class=tqdm_auto, **kwargs): + """Equivalent of `itertools.chain`.""" + if total is None: + try: + total = sum(map(len, iterables)) + except (TypeError, AttributeError): + pass + return tqdm_class(itertools.chain(*iterables), total=total, **kwargs) + + +def product(*iterables, repeat=1, total=None, tqdm_class=tqdm_auto, **kwargs): + """Equivalent of `itertools.product`.""" + if total is None: + try: + lens = list(map(len, iterables)) + except (TypeError, AttributeError): + pass + else: + total = math.prod(lens) ** repeat + yield from tqdm_class(itertools.product(*iterables, repeat=repeat), total=total, **kwargs) + + +def permutations(iterable, r=None, total=None, tqdm_class=tqdm_auto, **kwargs): + """Equivalent of `itertools.permutations`.""" + if total is None: + try: + n = len(iterable) + except (TypeError, AttributeError): + pass + else: + r = n if r is None else r + if r > n: + total = 0 + else: + total = math.perm(n, r) + return tqdm_class(itertools.permutations(iterable, r), total=total, **kwargs) + + +def combinations(iterable, r, total=None, tqdm_class=tqdm_auto, **kwargs): + """Equivalent of `itertools.combinations`.""" + if total is None: + try: + n = len(iterable) + except (TypeError, AttributeError): + pass + else: + if r > n: + total = 0 + else: + total = math.comb(n, r) + return tqdm_class(itertools.combinations(iterable, r), total=total, **kwargs) + + +def combinations_with_replacement(iterable, r, total=None, tqdm_class=tqdm_auto, **kwargs): + """Equivalent of `itertools.combinations_with_replacement`.""" + if total is None: + try: + n = len(iterable) + except (TypeError, AttributeError): + pass + else: + total = 1 + for i in range(n+r-1, n-1, -1): + total *= i + for i in range(1, r+1): + total //= i + return tqdm_class(itertools.combinations_with_replacement(iterable, r), total=total, **kwargs) + + +def batched(iterable, n, total=None, tqdm_class=tqdm_auto, **kwargs): + """Equivalent of `itertools.batched`.""" + if total is None: + try: + total = len(iterable) + except (TypeError, AttributeError): + pass + return tqdm_class(itertools.batched(iterable, n), unit_scale=n, + total=(total+n-1) // n if total is not None else None, + **kwargs) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm/contrib/logging.py b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/contrib/logging.py new file mode 100644 index 0000000000000000000000000000000000000000..16edd45ab1b98f5443b983b47ee3257bf265ee59 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/contrib/logging.py @@ -0,0 +1,126 @@ +""" +Helper functionality for interoperability with stdlib `logging`. +""" +import logging +import sys +from contextlib import contextmanager + +try: + from typing import Iterator, List, Optional, Type # noqa: F401, pylint: disable=unused-import +except ImportError: + pass + +from ..std import tqdm as std_tqdm + + +class _TqdmLoggingHandler(logging.StreamHandler): + def __init__( + self, + tqdm_class=std_tqdm # type: Type[std_tqdm] + ): + super().__init__() + self.tqdm_class = tqdm_class + + def emit(self, record): + try: + msg = self.format(record) + self.tqdm_class.write(msg, file=self.stream) + self.flush() + except (KeyboardInterrupt, SystemExit): + raise + except: # noqa pylint: disable=bare-except + self.handleError(record) + + +def _is_console_logging_handler(handler): + return (isinstance(handler, logging.StreamHandler) + and handler.stream in {sys.stdout, sys.stderr}) + + +def _get_first_found_console_logging_handler(handlers): + for handler in handlers: + if _is_console_logging_handler(handler): + return handler + + +@contextmanager +def logging_redirect_tqdm( + loggers=None, # type: Optional[List[logging.Logger]], + tqdm_class=std_tqdm # type: Type[std_tqdm] +): + # type: (...) -> Iterator[None] + """ + Context manager redirecting console logging to `tqdm.write()`, leaving + other logging handlers (e.g. log files) unaffected. + + Parameters + ---------- + loggers : list, optional + Which handlers to redirect (default: [logging.root]). + tqdm_class : optional + + Example + ------- + ```python + import logging + from tqdm import trange + from tqdm.contrib.logging import logging_redirect_tqdm + + LOG = logging.getLogger(__name__) + + if __name__ == '__main__': + logging.basicConfig(level=logging.INFO) + with logging_redirect_tqdm(): + for i in trange(9): + if i == 4: + LOG.info("console logging redirected to `tqdm.write()`") + # logging restored + ``` + """ + if loggers is None: + loggers = [logging.root] + original_handlers_list = [logger.handlers for logger in loggers] + try: + for logger in loggers: + tqdm_handler = _TqdmLoggingHandler(tqdm_class) + orig_handler = _get_first_found_console_logging_handler(logger.handlers) + if orig_handler is not None: + tqdm_handler.setFormatter(orig_handler.formatter) + tqdm_handler.stream = orig_handler.stream + logger.handlers = [ + handler for handler in logger.handlers + if not _is_console_logging_handler(handler)] + [tqdm_handler] + yield + finally: + for logger, original_handlers in zip(loggers, original_handlers_list): + logger.handlers = original_handlers + + +@contextmanager +def tqdm_logging_redirect( + *args, + # loggers=None, # type: Optional[List[logging.Logger]] + # tqdm=None, # type: Optional[Type[tqdm.tqdm]] + **kwargs +): + # type: (...) -> Iterator[None] + """ + Convenience shortcut for: + ```python + with tqdm_class(*args, **tqdm_kwargs) as pbar: + with logging_redirect_tqdm(loggers=loggers, tqdm_class=tqdm_class): + yield pbar + ``` + + Parameters + ---------- + tqdm_class : optional, (default: tqdm.std.tqdm). + loggers : optional, list. + **tqdm_kwargs : passed to `tqdm_class`. + """ + tqdm_kwargs = kwargs.copy() + loggers = tqdm_kwargs.pop('loggers', None) + tqdm_class = tqdm_kwargs.pop('tqdm_class', std_tqdm) + with tqdm_class(*args, **tqdm_kwargs) as pbar: + with logging_redirect_tqdm(loggers=loggers, tqdm_class=tqdm_class): + yield pbar diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm/contrib/slack.py b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/contrib/slack.py new file mode 100644 index 0000000000000000000000000000000000000000..e9808f55ad0b074bfb66ae79df35de8bf629233c --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/contrib/slack.py @@ -0,0 +1,119 @@ +""" +Sends updates to a Slack app. + +Usage: +>>> from tqdm.contrib.slack import tqdm, trange +>>> for i in trange(10, token='{token}', channel='{channel}'): +... ... + +![screenshot](https://tqdm.github.io/img/screenshot-slack.png) +""" +import logging + +try: + from slack_sdk import WebClient +except ImportError: + raise ImportError("Please `pip install slack-sdk`") + +from ..auto import tqdm as tqdm_auto +from ..utils import envwrap +from .utils_worker import MonoWorker + +__author__ = {"github.com/": ["0x2b3bfa0", "casperdcl"]} +__all__ = ['SlackIO', 'tqdm_slack', 'tsrange', 'tqdm', 'trange'] + + +class SlackIO(MonoWorker): + """Non-blocking file-like IO using a Slack app.""" + def __init__(self, token, channel): + """Creates a new message in the given `channel`.""" + super().__init__() + self.client = WebClient(token=token) + self.text = self.__class__.__name__ + try: + self.message = self.client.chat_postMessage(channel=channel, text=self.text) + except Exception as e: + tqdm_auto.write(str(e)) + self.message = None + + def write(self, s): + """Replaces internal `message`'s text with `s`.""" + if not s: + s = "..." + s = s.replace('\r', '').strip() + if s == self.text: + return # skip duplicate message + message = self.message + if message is None: + return + self.text = s + try: + future = self.submit(self.client.chat_update, channel=message['channel'], + ts=message['ts'], text='`' + s + '`') + except Exception as e: + tqdm_auto.write(str(e)) + else: + return future + + +class tqdm_slack(tqdm_auto): # pylint: disable=inconsistent-mro + """ + Standard `tqdm.auto.tqdm` but also sends updates to a Slack app. + May take a few seconds to create (`__init__`). + + - create a Slack app with the `chat:write` scope & invite it to a + channel: + - copy the bot `{token}` & `{channel}` and paste below + >>> from tqdm.contrib.slack import tqdm, trange + >>> for i in tqdm(iterable, token='{token}', channel='{channel}'): + ... ... + """ + @envwrap("tqdm", "slack", is_method=True) + def __init__(self, *args, token=None, channel=None, **kwargs): + """ + Parameters + ---------- + token : str, required. Slack token + [default: ${TQDM_SLACK_TOKEN}]. + channel : int, required. Slack channel + [default: ${TQDM_SLACK_CHANNEL}]. + mininterval : float, optional. + Minimum of [default: 1.5] to avoid rate limit. + + See `tqdm.auto.tqdm.__init__` for other parameters. + """ + if not kwargs.get('disable'): + kwargs = kwargs.copy() + logging.getLogger("HTTPClient").setLevel(logging.WARNING) + self.sio = SlackIO(token, channel) + kwargs['mininterval'] = max(1.5, kwargs.get('mininterval', 1.5)) + super().__init__(*args, **kwargs) + + def display(self, **kwargs): # pylint: disable=arguments-differ + super().display(**kwargs) + fmt = self.format_dict + if fmt.get('bar_format', None): + fmt['bar_format'] = fmt['bar_format'].replace( + '', '`{bar:10}`').replace('{bar}', '`{bar:10u}`') + elif self.total: + fmt['bar_format'] = '{l_bar}`{bar:10}`{r_bar}' + if fmt['ascii'] is False: + fmt['ascii'] = [":black_square:", ":small_blue_diamond:", ":large_blue_diamond:", + ":large_blue_square:"] + fmt['ncols'] = 336 + self.sio.write(self.format_meter(**fmt)) + + def clear(self, *args, **kwargs): + super().clear(*args, **kwargs) + if not self.disable: + self.sio.write("") + + +def tsrange(*args, **kwargs): + """Shortcut for `tqdm.contrib.slack.tqdm(range(*args), **kwargs)`.""" + return tqdm_slack(range(*args), **kwargs) + + +# Aliases +tqdm = tqdm_slack +trange = tsrange diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm/contrib/telegram.py b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/contrib/telegram.py new file mode 100644 index 0000000000000000000000000000000000000000..c019248e322214aeccbfaf2d8dac97a69d11470f --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/contrib/telegram.py @@ -0,0 +1,152 @@ +""" +Sends updates to a Telegram bot. + +Usage: +>>> from tqdm.contrib.telegram import tqdm, trange +>>> for i in trange(10, token='{token}', chat_id='{chat_id}'): +... ... + +![screenshot](https://tqdm.github.io/img/screenshot-telegram.gif) +""" +from warnings import warn + +from requests import Session + +from ..auto import tqdm as tqdm_auto +from ..std import TqdmWarning +from ..utils import envwrap +from .utils_worker import MonoWorker + +__author__ = {"github.com/": ["casperdcl"]} +__all__ = ['TelegramIO', 'tqdm_telegram', 'ttgrange', 'tqdm', 'trange'] + + +class TelegramIO(MonoWorker): + """Non-blocking file-like IO using a Telegram Bot.""" + API = 'https://api.telegram.org/bot' + + def __init__(self, token, chat_id): + """Creates a new message in the given `chat_id`.""" + super().__init__() + self.token = token + self.chat_id = chat_id + self.session = Session() + self.text = self.__class__.__name__ + self.message_id # pylint: disable=pointless-statement + + @property + def message_id(self): + if hasattr(self, '_message_id'): + return self._message_id # pylint: disable=access-member-before-definition + try: + req = self.session.post( + f'{self.API}{self.token}/sendMessage', + data={'text': f"`{self.text}`", 'chat_id': self.chat_id, + 'parse_mode': 'MarkdownV2'}) + res = req.json() + req.raise_for_status() + except Exception as e: + if req.status_code == 429: + warn("Creation rate limit: try increasing `mininterval`.", + TqdmWarning, stacklevel=2) + else: + tqdm_auto.write(str(e)) + else: + self._message_id = res['result']['message_id'] + return self._message_id + + def write(self, s): + """Replaces internal `message_id`'s text with `s`.""" + if not s: + s = "..." + s = s.replace('\r', '').strip() + if s == self.text: + return # avoid duplicate message Bot error + message_id = self.message_id + if message_id is None: + return + self.text = s + try: + future = self.submit( + self.session.post, f'{self.API}{self.token}/editMessageText', + data={'text': f"`{s}`", 'chat_id': self.chat_id, + 'message_id': message_id, 'parse_mode': 'MarkdownV2'}) + except Exception as e: + tqdm_auto.write(str(e)) + else: + return future + + def delete(self): + """Deletes internal `message_id`.""" + try: + future = self.submit( + self.session.post, '{self.API}{self.token}/deleteMessage', + data={'chat_id': self.chat_id, 'message_id': self.message_id}) + except Exception as e: + tqdm_auto.write(str(e)) + else: + return future + + +class tqdm_telegram(tqdm_auto): # pylint: disable=inconsistent-mro + """ + Standard `tqdm.auto.tqdm` but also sends updates to a Telegram Bot. + May take a few seconds to create (`__init__`). + + - create a bot + - copy its `{token}` + - add the bot to a chat and send it a message such as `/start` + - go to to find out + the `{chat_id}` + - paste the `{token}` & `{chat_id}` below + + >>> from tqdm.contrib.telegram import tqdm, trange + >>> for i in tqdm(iterable, token='{token}', chat_id='{chat_id}'): + ... ... + """ + @envwrap("tqdm", "telegram", is_method=True) + def __init__(self, *args, token=None, chat_id=None, **kwargs): + """ + Parameters + ---------- + token : str, required. Telegram token + [default: ${TQDM_TELEGRAM_TOKEN}]. + chat_id : str, required. Telegram chat ID + [default: ${TQDM_TELEGRAM_CHAT_ID}]. + + See `tqdm.auto.tqdm.__init__` for other parameters. + """ + if not kwargs.get('disable'): + kwargs = kwargs.copy() + self.tgio = TelegramIO(token, chat_id) + super().__init__(*args, **kwargs) + + def display(self, **kwargs): # pylint: disable=arguments-differ + super().display(**kwargs) + fmt = self.format_dict + if fmt.get('bar_format', None): + fmt['bar_format'] = fmt['bar_format'].replace( + '', '{bar:10u}').replace('{bar}', '{bar:10u}') + self.tgio.write(self.format_meter(**fmt)) + + def clear(self, *args, **kwargs): + super().clear(*args, **kwargs) + if not self.disable: + self.tgio.write("") + + def close(self): + if self.disable: + return + super().close() + if not (self.leave or (self.leave is None and self.pos == 0)): + self.tgio.delete() + + +def ttgrange(*args, **kwargs): + """Shortcut for `tqdm.contrib.telegram.tqdm(range(*args), **kwargs)`.""" + return tqdm_telegram(range(*args), **kwargs) + + +# Aliases +tqdm = tqdm_telegram +trange = ttgrange diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm/contrib/utils_worker.py b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/contrib/utils_worker.py new file mode 100644 index 0000000000000000000000000000000000000000..89fafc8c92f8ed085077b37eb58329f2588bd5d7 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/contrib/utils_worker.py @@ -0,0 +1,38 @@ +""" +IO/concurrency helpers for `tqdm.contrib`. +""" +from collections import deque +from concurrent.futures import ThreadPoolExecutor + +from ..auto import tqdm as tqdm_auto + +__author__ = {"github.com/": ["casperdcl"]} +__all__ = ['MonoWorker'] + + +class MonoWorker: + """ + Supports one running task and one waiting task. + The waiting task is the most recent submitted (others are discarded). + """ + def __init__(self): + self.pool = ThreadPoolExecutor(max_workers=1) + self.futures = deque([], 2) + + def submit(self, func, *args, **kwargs): + """`func(*args, **kwargs)` may replace currently waiting task.""" + futures = self.futures + if len(futures) == futures.maxlen: + running = futures.popleft() + if not running.done(): + if len(futures): # clear waiting + waiting = futures.pop() + waiting.cancel() + futures.appendleft(running) # re-insert running + try: + waiting = self.pool.submit(func, *args, **kwargs) + except Exception as e: + tqdm_auto.write(str(e)) + else: + futures.append(waiting) + return waiting diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm/dask.py b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/dask.py new file mode 100644 index 0000000000000000000000000000000000000000..57f1b668f59dc5991019eee34c7df3232a2c2cd7 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/dask.py @@ -0,0 +1,44 @@ +from functools import partial + +from dask.callbacks import Callback + +from .auto import tqdm as tqdm_auto + +__author__ = {"github.com/": ["casperdcl"]} +__all__ = ['TqdmCallback'] + + +class TqdmCallback(Callback): + """Dask callback for task progress.""" + def __init__(self, start=None, pretask=None, tqdm_class=tqdm_auto, + **tqdm_kwargs): + """ + Parameters + ---------- + tqdm_class : optional + `tqdm` class to use for bars [default: `tqdm.auto.tqdm`]. + tqdm_kwargs : optional + Any other arguments used for all bars. + """ + super().__init__(start=start, pretask=pretask) + if tqdm_kwargs: + tqdm_class = partial(tqdm_class, **tqdm_kwargs) + self.tqdm_class = tqdm_class + + def _start_state(self, _, state): + self.pbar = self.tqdm_class(total=sum( + len(state[k]) for k in ['ready', 'waiting', 'running', 'finished'])) + + def _posttask(self, *_, **__): + self.pbar.update() + + def _finish(self, *_, **__): + self.pbar.close() + + def display(self): + """Displays in the current cell in Notebooks.""" + container = getattr(self.bar, 'container', None) + if container is None: + return + from .notebook import display + display(container) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm/gui.py b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/gui.py new file mode 100644 index 0000000000000000000000000000000000000000..e7995089f09281d27d52eb082d935854360044a8 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/gui.py @@ -0,0 +1,179 @@ +""" +Matplotlib GUI progress bar decorator for iterators. + +Usage: +>>> from tqdm.gui import trange, tqdm +>>> for i in trange(10): +... ... +""" +# future division is important to divide integers and get as +# a result precise floating numbers (instead of truncated int) +import re +from warnings import warn + +# to inherit from the tqdm class +from .std import TqdmExperimentalWarning +from .std import tqdm as std_tqdm + +# import compatibility functions and utilities + +__author__ = {"github.com/": ["casperdcl", "lrq3000"]} +__all__ = ['tqdm_gui', 'tgrange', 'tqdm', 'trange'] + + +class tqdm_gui(std_tqdm): # pragma: no cover + """Experimental Matplotlib GUI version of tqdm!""" + # TODO: @classmethod: write() on GUI? + def __init__(self, *args, **kwargs): + from collections import deque + + import matplotlib as mpl + import matplotlib.pyplot as plt + kwargs = kwargs.copy() + kwargs['gui'] = True + colour = kwargs.pop('colour', 'g') + super().__init__(*args, **kwargs) + + if self.disable: + return + + warn("GUI is experimental/alpha", TqdmExperimentalWarning, stacklevel=2) + self.mpl = mpl + self.plt = plt + + # Remember if external environment uses toolbars + self.toolbar = self.mpl.rcParams['toolbar'] + self.mpl.rcParams['toolbar'] = 'None' + + self.mininterval = max(self.mininterval, 0.5) + self.fig, ax = plt.subplots(figsize=(9, 2.2)) + # self.fig.subplots_adjust(bottom=0.2) + total = self.__len__() # avoids TypeError on None #971 + if total is not None: + self.xdata = [] + self.ydata = [] + self.zdata = [] + else: + self.xdata = deque([]) + self.ydata = deque([]) + self.zdata = deque([]) + self.line1, = ax.plot(self.xdata, self.ydata, color='b') + self.line2, = ax.plot(self.xdata, self.zdata, color='k') + ax.set_ylim(0, 0.001) + if total is not None: + ax.set_xlim(0, 100) + ax.set_xlabel("percent") + self.fig.legend((self.line1, self.line2), ("cur", "est"), + loc='center right') + # progress bar + self.hspan = plt.axhspan(0, 0.001, xmin=0, xmax=0, color=colour) + else: + # ax.set_xlim(-60, 0) + ax.set_xlim(0, 60) + ax.invert_xaxis() + ax.set_xlabel("seconds") + ax.legend(("cur", "est"), loc='lower left') + ax.grid() + # ax.set_xlabel('seconds') + ax.set_ylabel((self.unit if self.unit else "it") + "/s") + if self.unit_scale: + plt.ticklabel_format(style='sci', axis='y', scilimits=(0, 0)) + ax.yaxis.get_offset_text().set_x(-0.15) + + # Remember if external environment is interactive + self.wasion = plt.isinteractive() + plt.ion() + self.ax = ax + + def close(self): + if self.disable: + return + + self.disable = True + + with self.get_lock(): + self._instances.remove(self) + + # Restore toolbars + self.mpl.rcParams['toolbar'] = self.toolbar + # Return to non-interactive mode + if not self.wasion: + self.plt.ioff() + if self.leave: + self.display() + else: + self.plt.close(self.fig) + + def clear(self, *_, **__): + pass + + def display(self, *_, **__): + n = self.n + cur_t = self._time() + elapsed = cur_t - self.start_t + delta_it = n - self.last_print_n + delta_t = cur_t - self.last_print_t + + # Inline due to multiple calls + total = self.total + xdata = self.xdata + ydata = self.ydata + zdata = self.zdata + ax = self.ax + line1 = self.line1 + line2 = self.line2 + hspan = getattr(self, 'hspan', None) + # instantaneous rate + y = delta_it / delta_t + # overall rate + z = n / elapsed + # update line data + xdata.append(n * 100.0 / total if total else cur_t) + ydata.append(y) + zdata.append(z) + + # Discard old values + # xmin, xmax = ax.get_xlim() + # if (not total) and elapsed > xmin * 1.1: + if (not total) and elapsed > 66: + xdata.popleft() + ydata.popleft() + zdata.popleft() + + ymin, ymax = ax.get_ylim() + if y > ymax or z > ymax: + ymax = 1.1 * y + ax.set_ylim(ymin, ymax) + ax.figure.canvas.draw() + + if total: + line1.set_data(xdata, ydata) + line2.set_data(xdata, zdata) + if hspan: + hspan.set_xy((0, ymin)) + hspan.set_height(ymax - ymin) + hspan.set_width(n / total) + else: + t_ago = [cur_t - i for i in xdata] + line1.set_data(t_ago, ydata) + line2.set_data(t_ago, zdata) + + d = self.format_dict + # remove {bar} + d['bar_format'] = (d['bar_format'] or "{l_bar}{r_bar}").replace( + "{bar}", "") + msg = self.format_meter(**d) + if '' in msg: + msg = "".join(re.split(r'\|?\|?', msg, maxsplit=1)) + ax.set_title(msg, fontname="DejaVu Sans Mono", fontsize=11) + self.plt.pause(1e-9) + + +def tgrange(*args, **kwargs): + """Shortcut for `tqdm.gui.tqdm(range(*args), **kwargs)`.""" + return tqdm_gui(range(*args), **kwargs) + + +# Aliases +tqdm = tqdm_gui +trange = tgrange diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm/keras.py b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/keras.py new file mode 100644 index 0000000000000000000000000000000000000000..317b76a69539589f71334836cbe31fda063a7a46 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/keras.py @@ -0,0 +1,123 @@ +from copy import copy +from functools import partial + +from .auto import tqdm as tqdm_auto + +try: + import keras +except (ImportError, AttributeError) as e: + try: + from tensorflow import keras + except ImportError: + raise e +__author__ = {"github.com/": ["casperdcl"]} +__all__ = ['TqdmCallback'] + + +class TqdmCallback(keras.callbacks.Callback): + """Keras callback for epoch and batch progress.""" + @staticmethod + def bar2callback(bar, pop=None, delta=(lambda logs: 1)): + def callback(_, logs=None): + n = delta(logs) + if logs: + if pop: + logs = copy(logs) + for i in pop: + logs.pop(i, 0) + bar.set_postfix(logs, refresh=False) + bar.update(n) + + return callback + + def __init__(self, epochs=None, data_size=None, batch_size=None, verbose=1, + tqdm_class=tqdm_auto, **tqdm_kwargs): + """ + Parameters + ---------- + epochs : int, optional + data_size : int, optional + Number of training pairs. + batch_size : int, optional + Number of training pairs per batch. + verbose : int + 0: epoch, 1: batch (transient), 2: batch. [default: 1]. + Will be set to `0` unless both `data_size` and `batch_size` + are given. + tqdm_class : optional + `tqdm` class to use for bars [default: `tqdm.auto.tqdm`]. + tqdm_kwargs : optional + Any other arguments used for all bars. + """ + if tqdm_kwargs: + tqdm_class = partial(tqdm_class, **tqdm_kwargs) + self.tqdm_class = tqdm_class + self.epoch_bar = tqdm_class(total=epochs, unit='epoch') + self.on_epoch_end = self.bar2callback(self.epoch_bar) + if data_size and batch_size: + self.batches = batches = (data_size + batch_size - 1) // batch_size + else: + self.batches = batches = None + self.verbose = verbose + if verbose == 1: + self.batch_bar = tqdm_class(total=batches, unit='batch', leave=False) + self.on_batch_end = self.bar2callback( + self.batch_bar, pop=['batch', 'size'], + delta=lambda logs: logs.get('size', 1)) + + def on_train_begin(self, *_, **__): + params = self.params.get + auto_total = params('epochs', params('nb_epoch', None)) + if auto_total is not None and auto_total != self.epoch_bar.total: + self.epoch_bar.reset(total=auto_total) + + def on_epoch_begin(self, epoch, *_, **__): + if self.epoch_bar.n < epoch: + ebar = self.epoch_bar + ebar.n = ebar.last_print_n = ebar.initial = epoch + if self.verbose: + params = self.params.get + total = params('samples', params( + 'nb_sample', params('steps', None))) or self.batches + if self.verbose == 2: + if hasattr(self, 'batch_bar'): + self.batch_bar.close() + self.batch_bar = self.tqdm_class( + total=total, unit='batch', leave=True, + unit_scale=1 / (params('batch_size', 1) or 1)) + self.on_batch_end = self.bar2callback( + self.batch_bar, pop=['batch', 'size'], + delta=lambda logs: logs.get('size', 1)) + elif self.verbose == 1: + self.batch_bar.unit_scale = 1 / (params('batch_size', 1) or 1) + self.batch_bar.reset(total=total) + else: + raise KeyError('Unknown verbosity') + + def on_train_end(self, *_, **__): + if hasattr(self, 'batch_bar'): + self.batch_bar.close() + self.epoch_bar.close() + + def display(self): + """Displays in the current cell in Notebooks.""" + container = getattr(self.epoch_bar, 'container', None) + if container is None: + return + from .notebook import display + display(container) + batch_bar = getattr(self, 'batch_bar', None) + if batch_bar is not None: + display(batch_bar.container) + + @staticmethod + def _implements_train_batch_hooks(): + return True + + @staticmethod + def _implements_test_batch_hooks(): + return True + + @staticmethod + def _implements_predict_batch_hooks(): + return True diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm/notebook.py b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/notebook.py new file mode 100644 index 0000000000000000000000000000000000000000..f6e1b0a6d15c5286354264116d2815b4285b8880 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/notebook.py @@ -0,0 +1,317 @@ +""" +IPython/Jupyter Notebook progress bar decorator for iterators. +Includes a default `range` iterator printing to `stderr`. + +Usage: +>>> from tqdm.notebook import trange, tqdm +>>> for i in trange(10): +... ... +""" +# import compatibility functions and utilities +import re +import sys +from html import escape +from weakref import proxy + +# to inherit from the tqdm class +from .std import tqdm as std_tqdm + +if True: # pragma: no cover + # import IPython/Jupyter base widget and display utilities + IPY = 0 + try: # IPython 4.x + import ipywidgets # noqa: F401, pylint: disable=unused-import + IPY = 4 + except ImportError: # IPython 3.x / 2.x + IPY = 32 + import warnings + with warnings.catch_warnings(): + warnings.filterwarnings( + 'ignore', message=".*The `IPython.html` package has been deprecated.*") + try: + import IPython.html.widgets + except ImportError: + pass + else: + ipywidgets = IPython.html.widgets + + try: # IPython 4.x / 3.x + if IPY == 32: + from IPython.html.widgets import HTML + from IPython.html.widgets import FloatProgress as IProgress + from IPython.html.widgets import HBox + IPY = 3 + else: + from ipywidgets import HTML + from ipywidgets import FloatProgress as IProgress + from ipywidgets import HBox + except ImportError: + try: # IPython 2.x + from IPython.html.widgets import HTML + from IPython.html.widgets import ContainerWidget as HBox + from IPython.html.widgets import FloatProgressWidget as IProgress + IPY = 2 + except ImportError: + IPY = 0 + IProgress = None + HBox = object + + try: + from IPython.display import display # , clear_output + except ImportError: + pass + +__author__ = {"github.com/": ["lrq3000", "casperdcl", "alexanderkuk"]} +__all__ = ['tqdm_notebook', 'tnrange', 'tqdm', 'trange'] +WARN_NOIPYW = ("IProgress not found. Please update jupyter and ipywidgets." + " See https://ipywidgets.readthedocs.io/en/stable" + "/user_install.html") + + +class TqdmHBox(HBox): + """`ipywidgets.HBox` with a pretty representation""" + def _json_(self, pretty=None): + pbar = getattr(self, 'pbar', None) + if pbar is None: + return {} + d = pbar.format_dict + if pretty is not None: + d["ascii"] = not pretty + return d + + def __repr__(self, pretty=False): + pbar = getattr(self, 'pbar', None) + if pbar is None: + return super().__repr__() + return pbar.format_meter(**self._json_(pretty)) + + def _repr_pretty_(self, pp, *_, **__): + pp.text(self.__repr__(True)) + + +class tqdm_notebook(std_tqdm): + """ + Experimental IPython/Jupyter Notebook widget using tqdm! + """ + @staticmethod + def status_printer(_, total=None, desc=None, ncols=None): + """ + Manage the printing of an IPython/Jupyter Notebook progress bar widget. + """ + # Fallback to text bar if there's no total + # DEPRECATED: replaced with an 'info' style bar + # if not total: + # return super(tqdm_notebook, tqdm_notebook).status_printer(file) + + # fp = file + + # Prepare IPython progress bar + if IProgress is None: # #187 #451 #558 #872 + raise ImportError(WARN_NOIPYW) + if total: + pbar = IProgress(min=0, max=total) + else: # No total? Show info style bar with no progress tqdm status + pbar = IProgress(min=0, max=1) + pbar.value = 1 + pbar.bar_style = 'info' + if ncols is None: + pbar.layout.width = "20px" + + ltext = HTML() + rtext = HTML() + if desc: + ltext.value = desc + container = TqdmHBox(children=[ltext, pbar, rtext]) + # Prepare layout + if ncols is not None: # use default style of ipywidgets + # ncols could be 100, "100px", "100%" + ncols = str(ncols) # ipywidgets only accepts string + try: + if int(ncols) > 0: # isnumeric and positive + ncols += 'px' + except ValueError: + pass + pbar.layout.flex = '2' + container.layout.width = ncols + container.layout.display = 'inline-flex' + container.layout.flex_flow = 'row wrap' + + return container + + def display(self, msg=None, pos=None, + # additional signals + close=False, bar_style=None, check_delay=True): + # Note: contrary to native tqdm, msg='' does NOT clear bar + # goal is to keep all infos if error happens so user knows + # at which iteration the loop failed. + + # Clear previous output (really necessary?) + # clear_output(wait=1) + + if not msg and not close: + d = self.format_dict + # remove {bar} + d['bar_format'] = (d['bar_format'] or "{l_bar}{r_bar}").replace( + "{bar}", "") + msg = self.format_meter(**d) + + ltext, pbar, rtext = self.container.children + pbar.value = self.n + + if msg: + msg = msg.replace(' ', '\u2007') # fix html space padding + # html escape special characters (like '&') + if '' in msg: + left, right = map(escape, re.split(r'\|?\|?', msg, maxsplit=1)) + else: + left, right = '', escape(msg) + + # Update description + ltext.value = left + # never clear the bar (signal: msg='') + if right: + rtext.value = right + + # Change bar style + if bar_style: + # Hack-ish way to avoid the danger bar_style being overridden by + # success because the bar gets closed after the error... + if pbar.bar_style != 'danger' or bar_style != 'success': + pbar.bar_style = bar_style + + # Special signal to close the bar + if close and pbar.bar_style != 'danger': # hide only if no error + try: + self.container.close() + except AttributeError: + self.container.visible = False + self.container.layout.visibility = 'hidden' # IPYW>=8 + + if check_delay and self.delay > 0 and not self.displayed: + display(self.container) + self.displayed = True + + @property + def colour(self): + if hasattr(self, 'container'): + return self.container.children[-2].style.bar_color + + @colour.setter + def colour(self, bar_color): + if hasattr(self, 'container'): + self.container.children[-2].style.bar_color = bar_color + + def __init__(self, *args, **kwargs): + """ + Supports the usual `tqdm.tqdm` parameters as well as those listed below. + + Parameters + ---------- + display : Whether to call `display(self.container)` immediately + [default: True]. + """ + kwargs = kwargs.copy() + # Setup default output + file_kwarg = kwargs.get('file', sys.stderr) + if file_kwarg is sys.stderr or file_kwarg is None: + kwargs['file'] = sys.stdout # avoid the red block in IPython + + # Initialize parent class + avoid printing by using gui=True + kwargs['gui'] = True + # convert disable = None to False + kwargs['disable'] = bool(kwargs.get('disable', False)) + colour = kwargs.pop('colour', None) + display_here = kwargs.pop('display', True) + super().__init__(*args, **kwargs) + if self.disable or not kwargs['gui']: + self.disp = lambda *_, **__: None + return + + # Get bar width + self.ncols = '100%' if self.dynamic_ncols else kwargs.get("ncols", None) + + # Replace with IPython progress bar display (with correct total) + unit_scale = 1 if self.unit_scale is True else self.unit_scale or 1 + total = self.total * unit_scale if self.total else self.total + self.container = self.status_printer(self.fp, total, self.desc, self.ncols) + self.container.pbar = proxy(self) + self.displayed = False + if display_here and self.delay <= 0: + display(self.container) + self.displayed = True + self.disp = self.display + self.colour = colour + + # Print initial bar state + if not self.disable: + self.display(check_delay=False) + + def __iter__(self): + try: + it = super().__iter__() + yield from it + # NB: except ... [ as ...] breaks IPython async KeyboardInterrupt + except: # NOQA + self.disp(bar_style='danger') + raise + # NB: don't `finally: close()` + # since this could be a shared bar which the user will `reset()` + + def update(self, n=1): + try: + return super().update(n=n) + # NB: except ... [ as ...] breaks IPython async KeyboardInterrupt + except: # NOQA + # cannot catch KeyboardInterrupt when using manual tqdm + # as the interrupt will most likely happen on another statement + self.disp(bar_style='danger') + raise + # NB: don't `finally: close()` + # since this could be a shared bar which the user will `reset()` + + def close(self): + if self.disable: + return + super().close() + # Try to detect if there was an error or KeyboardInterrupt + # in manual mode: if n < total, things probably got wrong + if self.total and self.n < self.total: + self.disp(bar_style='danger', check_delay=False) + else: + if self.leave: + self.disp(bar_style='success', check_delay=False) + else: + self.disp(close=True, check_delay=False) + + def clear(self, *_, **__): + pass + + def reset(self, total=None): + """ + Resets to 0 iterations for repeated use. + + Consider combining with `leave=True`. + + Parameters + ---------- + total : int or float, optional. Total to use for the new bar. + """ + if self.disable: + return super().reset(total=total) + _, pbar, _ = self.container.children + pbar.bar_style = '' + if total is not None: + pbar.max = total + if not self.total and self.ncols is None: # no longer unknown total + pbar.layout.width = None # reset width + return super().reset(total=total) + + +def tnrange(*args, **kwargs): + """Shortcut for `tqdm.notebook.tqdm(range(*args), **kwargs)`.""" + return tqdm_notebook(range(*args), **kwargs) + + +# Aliases +tqdm = tqdm_notebook +trange = tnrange diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm/rich.py b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/rich.py new file mode 100644 index 0000000000000000000000000000000000000000..3d392edaf115a93f7c145de52cbe8978dcf1ede8 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/rich.py @@ -0,0 +1,151 @@ +""" +`rich.progress` decorator for iterators. + +Usage: +>>> from tqdm.rich import trange, tqdm +>>> for i in trange(10): +... ... +""" +from warnings import warn + +from rich.progress import ( + BarColumn, Progress, ProgressColumn, Text, TimeElapsedColumn, TimeRemainingColumn, filesize) + +from .std import TqdmExperimentalWarning +from .std import tqdm as std_tqdm + +__author__ = {"github.com/": ["casperdcl"]} +__all__ = ['tqdm_rich', 'trrange', 'tqdm', 'trange'] + + +class FractionColumn(ProgressColumn): + """Renders completed/total, e.g. '0.5/2.3 G'.""" + def __init__(self, unit_scale=False, unit_divisor=1000): + self.unit_scale = unit_scale + self.unit_divisor = unit_divisor + super().__init__() + + def render(self, task): + """Calculate common unit for completed and total.""" + completed = int(task.completed) + total = int(task.total) + if self.unit_scale: + unit, suffix = filesize.pick_unit_and_suffix( + total, + ["", "K", "M", "G", "T", "P", "E", "Z", "Y"], + self.unit_divisor, + ) + else: + unit, suffix = filesize.pick_unit_and_suffix(total, [""], 1) + precision = 0 if unit == 1 else 1 + return Text( + f"{completed/unit:,.{precision}f}/{total/unit:,.{precision}f} {suffix}", + style="progress.download") + + +class RateColumn(ProgressColumn): + """Renders human readable transfer speed.""" + def __init__(self, unit="", unit_scale=False, unit_divisor=1000): + self.unit = unit + self.unit_scale = unit_scale + self.unit_divisor = unit_divisor + super().__init__() + + def render(self, task): + """Show data transfer speed.""" + speed = task.speed + if speed is None: + return Text(f"? {self.unit}/s", style="progress.data.speed") + if self.unit_scale: + unit, suffix = filesize.pick_unit_and_suffix( + speed, + ["", "K", "M", "G", "T", "P", "E", "Z", "Y"], + self.unit_divisor, + ) + else: + unit, suffix = filesize.pick_unit_and_suffix(speed, [""], 1) + precision = 0 if unit == 1 else 1 + return Text(f"{speed/unit:,.{precision}f} {suffix}{self.unit}/s", + style="progress.data.speed") + + +class tqdm_rich(std_tqdm): # pragma: no cover + """Experimental rich.progress GUI version of tqdm!""" + # TODO: @classmethod: write()? + def __init__(self, *args, **kwargs): + """ + This class accepts the following parameters *in addition* to + the parameters accepted by `tqdm`. + + Parameters + ---------- + progress : tuple, optional + arguments for `rich.progress.Progress()`. + options : dict, optional + keyword arguments for `rich.progress.Progress()`. + """ + kwargs = kwargs.copy() + kwargs['gui'] = True + # convert disable = None to False + kwargs['disable'] = bool(kwargs.get('disable', False)) + progress = kwargs.pop('progress', None) + options = kwargs.pop('options', {}).copy() + super().__init__(*args, **kwargs) + + if self.disable: + return + + warn("rich is experimental/alpha", TqdmExperimentalWarning, stacklevel=2) + d = self.format_dict + if progress is None: + progress = ( + "[progress.description]{task.description}" + "[progress.percentage]{task.percentage:>4.0f}%", + BarColumn(bar_width=None), + FractionColumn( + unit_scale=d['unit_scale'], unit_divisor=d['unit_divisor']), + "[", TimeElapsedColumn(), "<", TimeRemainingColumn(), + ",", RateColumn(unit=d['unit'], unit_scale=d['unit_scale'], + unit_divisor=d['unit_divisor']), "]" + ) + options.setdefault('transient', not self.leave) + self._prog = Progress(*progress, **options) + self._prog.__enter__() + self._task_id = self._prog.add_task(self.desc or "", **d) + + def close(self): + if self.disable: + return + self.display() # print 100%, vis #1306 + super().close() + self._prog.__exit__(None, None, None) + + def clear(self, *_, **__): + pass + + def display(self, *_, **__): + if not hasattr(self, '_prog'): + return + self._prog.update(self._task_id, completed=self.n, description=self.desc) + + def reset(self, total=None): + """ + Resets to 0 iterations for repeated use. + + Parameters + ---------- + total : int or float, optional. Total to use for the new bar. + """ + if hasattr(self, '_prog'): + self._prog.reset(total=total) + super().reset(total=total) + + +def trrange(*args, **kwargs): + """Shortcut for `tqdm.rich.tqdm(range(*args), **kwargs)`.""" + return tqdm_rich(range(*args), **kwargs) + + +# Aliases +tqdm = tqdm_rich +trange = trrange diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm/std.py b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/std.py new file mode 100644 index 0000000000000000000000000000000000000000..79a868f5362d2ee68ae606503a62644d7ac90164 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/std.py @@ -0,0 +1,1525 @@ +""" +Customisable progress bar decorator for iterators. +Includes a default `range` iterator printing to `stderr`. + +Usage: +>>> from tqdm import trange, tqdm +>>> for i in trange(10): +... ... +""" +import sys +from collections import OrderedDict, defaultdict +from contextlib import contextmanager +from datetime import datetime, timedelta, timezone +from numbers import Number +from time import time +from warnings import warn +from weakref import WeakSet + +from ._monitor import TMonitor +from .utils import ( + CallbackIOWrapper, Comparable, DisableOnWriteError, FormatReplace, SimpleTextIOWrapper, + _is_ascii, _screen_shape_wrapper, _supports_unicode, _term_move_up, disp_len, disp_trim, + envwrap) + +__author__ = "https://github.com/tqdm/tqdm#contributions" +__all__ = ['tqdm', 'trange', + 'TqdmTypeError', 'TqdmKeyError', 'TqdmWarning', + 'TqdmExperimentalWarning', 'TqdmDeprecationWarning', + 'TqdmMonitorWarning'] + + +class TqdmTypeError(TypeError): + pass + + +class TqdmKeyError(KeyError): + pass + + +class TqdmWarning(Warning): + """base class for all tqdm warnings. + + Used for non-external-code-breaking errors, such as garbled printing. + """ + def __init__(self, msg, fp_write=None): # noqa: B042 + if fp_write is not None: + fp_write("\n" + self.__class__.__name__ + ": " + str(msg).rstrip() + '\n') + else: + super().__init__(msg) + + +class TqdmExperimentalWarning(TqdmWarning, FutureWarning): + """beta feature, unstable API and behaviour""" + + +class TqdmDeprecationWarning(TqdmWarning, DeprecationWarning): + """may be removed in a future release""" + # not suppressed if raised + + +class TqdmMonitorWarning(TqdmWarning, RuntimeWarning): + """tqdm monitor errors which do not affect external functionality""" + + +def TRLock(*args, **kwargs): + """threading RLock""" + try: + from threading import RLock + return RLock(*args, **kwargs) + except (ImportError, OSError): # pragma: no cover + pass + + +class TqdmDefaultWriteLock: + """ + Provide a default write lock for thread and multiprocessing safety. + Works only on platforms supporting `fork` (so Windows is excluded). + You must initialise a `tqdm` or `TqdmDefaultWriteLock` instance + before forking in order for the write lock to work. + On Windows, you need to supply the lock from the parent to the children as + an argument to joblib or the parallelism lib you use. + """ + # global thread lock so no setup required for multithreading. + # NB: Do not create multiprocessing lock as it sets the multiprocessing + # context, disallowing `spawn()`/`forkserver()` + th_lock = TRLock() + + def __init__(self): + # Create global parallelism locks to avoid racing issues with parallel + # bars works only if fork available (Linux/MacOSX, but not Windows) + cls = type(self) + root_lock = cls.th_lock + if root_lock is not None: + root_lock.acquire() + cls.create_mp_lock() + self.locks = [lk for lk in [cls.mp_lock, cls.th_lock] if lk is not None] + if root_lock is not None: + root_lock.release() + + def acquire(self, *a, **k): + for lock in self.locks: + lock.acquire(*a, **k) + + def release(self): + for lock in self.locks[::-1]: # Release in inverse order of acquisition + lock.release() + + def __enter__(self): + self.acquire() + + def __exit__(self, *exc): + self.release() + + @classmethod + def create_mp_lock(cls): + if not hasattr(cls, 'mp_lock'): + try: + from multiprocessing import RLock + cls.mp_lock = RLock() + except (ImportError, OSError): # pragma: no cover + cls.mp_lock = None + + @classmethod + def create_th_lock(cls): + assert hasattr(cls, 'th_lock') + warn("create_th_lock not needed anymore", TqdmDeprecationWarning, stacklevel=2) + + +class Bar: + """ + `str.format`-able bar with format specifiers: `[width][type]` + + - `width` + + unspecified (default): use `self.default_len` + + `int >= 0`: overrides `self.default_len` + + `int < 0`: subtract from `self.default_len` + - `type` + + `a`: ascii (`charset=self.ASCII` override) + + `u`: unicode (`charset=self.UTF` override) + + `b`: blank (`charset=" "` override) + """ + ASCII = " 123456789#" + UTF = " " + ''.join(map(chr, range(0x258F, 0x2587, -1))) + BLANK = " " + COLOUR_RESET = '\x1b[0m' + COLOUR_RGB = '\x1b[38;2;%d;%d;%dm' + COLOURS = {'BLACK': '\x1b[30m', 'RED': '\x1b[31m', 'GREEN': '\x1b[32m', + 'YELLOW': '\x1b[33m', 'BLUE': '\x1b[34m', 'MAGENTA': '\x1b[35m', + 'CYAN': '\x1b[36m', 'WHITE': '\x1b[37m'} + + def __init__(self, frac, default_len=10, charset=UTF, colour=None): + if not 0 <= frac <= 1: + warn("clamping frac to range [0, 1]", TqdmWarning, stacklevel=2) + frac = max(0, min(1, frac)) + assert default_len > 0 + self.frac = frac + self.default_len = default_len + self.charset = charset + self.colour = colour + + @property + def colour(self): + return self._colour + + @colour.setter + def colour(self, value): + if not value: + self._colour = None + return + try: + if value.upper() in self.COLOURS: + self._colour = self.COLOURS[value.upper()] + elif value[0] == '#' and len(value) == 7: + self._colour = self.COLOUR_RGB % tuple( + int(i, 16) for i in (value[1:3], value[3:5], value[5:7])) + else: + raise KeyError + except (KeyError, AttributeError): + warn(f"Unknown colour ({value}); valid choices:" + f" [hex (#00ff00), {', '.join(self.COLOURS)}]", TqdmWarning, stacklevel=2) + self._colour = None + + def __format__(self, format_spec): + if format_spec: + _type = format_spec[-1].lower() + try: + charset = {'a': self.ASCII, 'u': self.UTF, 'b': self.BLANK}[_type] + except KeyError: + charset = self.charset + else: + format_spec = format_spec[:-1] + if format_spec: + N_BARS = int(format_spec) + if N_BARS < 0: + N_BARS += self.default_len + else: + N_BARS = self.default_len + else: + charset = self.charset + N_BARS = self.default_len + + nsyms = len(charset) - 1 + bar_length, frac_bar_length = divmod(int(self.frac * N_BARS * nsyms), nsyms) + + res = charset[-1] * bar_length + if bar_length < N_BARS: # whitespace padding + res = res + charset[frac_bar_length] + charset[0] * (N_BARS - bar_length - 1) + return self.colour + res + self.COLOUR_RESET if self.colour else res + + +class EMA: + """ + Exponential moving average: smoothing to give progressively lower + weights to older values. + + Parameters + ---------- + smoothing : float, optional + Smoothing factor in range [0, 1], [default: 0.3]. + Increase to give more weight to recent values. + Ranges from 0 (yields old value) to 1 (yields new value). + """ + def __init__(self, smoothing=0.3): + self.alpha = smoothing + self.last = 0 + self.calls = 0 + + def __call__(self, x=None): + """ + Parameters + ---------- + x : float + New value to include in EMA. + """ + beta = 1 - self.alpha + if x is not None: + self.last = self.alpha * x + beta * self.last + self.calls += 1 + return self.last / (1 - beta ** self.calls) if self.calls else self.last + + +class tqdm(Comparable): + """ + Decorate an iterable object, returning an iterator which acts exactly + like the original iterable, but prints a dynamically updating + progress bar every time a value is requested. + + Parameters + ---------- + iterable : iterable, optional + Iterable to decorate with a progress bar. + Leave blank to manually manage the updates. + desc : str, optional + Prefix for the progress bar. + total : int or float, optional + The number of expected iterations. If unspecified, + len(iterable) is used if possible. If float("inf") or as a last + resort, only basic progress statistics are displayed + (no ETA, no progress bar). + If `gui` is True and this parameter needs subsequent updating, + specify an initial arbitrary large positive number, + e.g. 9e9. + leave : bool, optional + If [default: True], keeps all traces of the progress bar + upon termination of iteration. + If `None`, will leave only if `position` is `0`. + file : `io.TextIOWrapper` or `io.StringIO`, optional + Specifies where to output the progress messages + (default: sys.stderr). Uses `file.write(str)` and `file.flush()` + methods. For encoding, see `write_bytes`. + ncols : int, optional + The width of the entire output message. If specified, + dynamically resizes the progress bar to stay within this bound. + If unspecified, attempts to use environment width. The + fallback is a meter width of 10 and no limit for the counter and + statistics. If 0, will not print any meter (only stats). + mininterval : float, optional + Minimum progress display update interval [default: 0.1] seconds. + maxinterval : float, optional + Maximum progress display update interval [default: 10] seconds. + Automatically adjusts `miniters` to correspond to `mininterval` + after long display update lag. Only works if `dynamic_miniters` + or monitor thread is enabled. + miniters : int or float, optional + Minimum progress display update interval, in iterations. + If 0 and `dynamic_miniters`, will automatically adjust to equal + `mininterval` (more CPU efficient, good for tight loops). + If > 0, will skip display of specified number of iterations. + Tweak this and `mininterval` to get very efficient loops. + If your progress is erratic with both fast and slow iterations + (network, skipping items, etc) you should set miniters=1. + ascii : bool or str, optional + If unspecified or False, use unicode (smooth blocks) to fill + the meter. The fallback is to use ASCII characters " 123456789#". + disable : bool, optional + Whether to disable the entire progress bar wrapper + [default: False]. If set to None, disable on non-TTY. + unit : str, optional + String that will be used to define the unit of each iteration + [default: it]. + unit_scale : bool or int or float, optional + If 1 or True, the number of iterations will be reduced/scaled + automatically and a metric prefix following the + International System of Units standard will be added + (kilo, mega, etc.) [default: False]. If any other non-zero + number, will scale `total` and `n`. + dynamic_ncols : bool, optional + If set, constantly alters `ncols` and `nrows` to the + environment (allowing for window resizes) [default: False]. + smoothing : float, optional + Exponential moving average smoothing factor for speed estimates + (ignored in GUI mode). Ranges from 0 (average speed) to 1 + (current/instantaneous speed) [default: 0.3]. + bar_format : str, optional + Specify a custom bar string formatting. May impact performance. + [default: '{l_bar}{bar}{r_bar}'], where + l_bar='{desc}: {percentage:3.0f}%|' and + r_bar='| {n_fmt}/{total_fmt} [{elapsed}<{remaining}, ' + '{rate_fmt}{postfix}]' + Possible vars: l_bar, bar, r_bar, n, n_fmt, total, total_fmt, + percentage, elapsed, elapsed_s, ncols, nrows, desc, unit, + rate, rate_fmt, rate_noinv, rate_noinv_fmt, + rate_inv, rate_inv_fmt, postfix, unit_divisor, + remaining, remaining_s, eta. + Note that a trailing ": " is automatically removed after {desc} + if the latter is empty. + initial : int or float, optional + The initial counter value. Useful when restarting a progress + bar [default: 0]. If using float, consider specifying `{n:.3f}` + or similar in `bar_format`, or specifying `unit_scale`. + position : int, optional + Specify the line offset to print this bar (starting from 0) + Automatic if unspecified. + Useful to manage multiple bars at once (eg, from threads). + postfix : dict or *, optional + Specify additional stats to display at the end of the bar. + Calls `set_postfix(**postfix)` if possible (dict). + unit_divisor : float, optional + [default: 1000], ignored unless `unit_scale` is True. + write_bytes : bool, optional + Whether to write bytes. If (default: False) will write unicode. + lock_args : tuple, optional + Passed to `refresh` for intermediate output + (initialisation, iterating, and updating). + nrows : int, optional + The screen height. If specified, hides nested bars outside this + bound. If unspecified, attempts to use environment height. + The fallback is 20. + colour : str, optional + Bar colour (e.g. 'green', '#00ff00'). + delay : float, optional + Don't display until [default: 0] seconds have elapsed. + gui : bool, optional + WARNING: internal parameter - do not use. + Use tqdm.gui.tqdm(...) instead. If set, will attempt to use + matplotlib animations for a graphical output [default: False]. + + Returns + ------- + out : decorated iterator. + """ + + monitor_interval = 10 # set to 0 to disable the thread + monitor = None + _instances = WeakSet() + + @staticmethod + def format_sizeof(num, suffix='', divisor=1000): + """ + Formats a number (greater than unity) with SI Order of Magnitude + prefixes. + + Parameters + ---------- + num : float + Number ( >= 1) to format. + suffix : str, optional + Post-postfix [default: '']. + divisor : float, optional + Divisor between prefixes [default: 1000]. + + Returns + ------- + out : str + Number with Order of Magnitude SI unit postfix. + """ + for unit in ['', 'k', 'M', 'G', 'T', 'P', 'E', 'Z']: + if abs(num) < 999.5: + if abs(num) < 99.95: + if abs(num) < 9.995: + return f'{num:1.2f}{unit}{suffix}' + return f'{num:2.1f}{unit}{suffix}' + return f'{num:3.0f}{unit}{suffix}' + num /= divisor + return f'{num:3.1f}Y{suffix}' + + @staticmethod + def format_interval(t): + """ + Formats a number of seconds as a clock time, [H:]MM:SS + + Parameters + ---------- + t : int + Number of seconds. + + Returns + ------- + out : str + [H:]MM:SS + """ + sign = '-' if t < 0 else '' + mins, s = divmod(abs(int(t)), 60) + h, m = divmod(mins, 60) + return f'{sign}{h:d}:{m:02d}:{s:02d}' if h else f'{sign}{m:02d}:{s:02d}' + + @staticmethod + def format_num(n): + """ + Intelligent scientific notation (.3g). + + Parameters + ---------- + n : int or float or Numeric + A Number. + + Returns + ------- + out : str + Formatted number. + """ + f = f'{n:.3g}'.replace('e+0', 'e+').replace('e-0', 'e-') + n = str(n) + return f if len(f) < len(n) else n + + @staticmethod + def status_printer(file): + """ + Manage the printing and in-place updating of a line of characters. + Note that if the string is longer than a line, then in-place + updating may not work (it will print a new line at each refresh). + """ + fp = file + fp_flush = getattr(fp, 'flush', lambda: None) # pragma: no cover + if fp in (sys.stderr, sys.stdout): + getattr(sys.stderr, 'flush', lambda: None)() + getattr(sys.stdout, 'flush', lambda: None)() + + def fp_write(s): + fp.write(str(s)) + fp_flush() + + last_len = [0] + + def print_status(s): + len_s = disp_len(s) + fp_write('\r' + s + (' ' * max(last_len[0] - len_s, 0))) + last_len[0] = len_s + + return print_status + + @staticmethod + def format_meter(n, total, elapsed, ncols=None, prefix='', + ascii=False, # pylint: disable=redefined-builtin + unit='it', unit_scale=False, rate=None, bar_format=None, postfix=None, + unit_divisor=1000, initial=0, colour=None, **extra_kwargs): + """ + Return a string-based progress bar given some parameters + + Parameters + ---------- + n : int or float + Number of finished iterations. + total : int or float + The expected total number of iterations. If meaningless (None), + only basic progress statistics are displayed (no ETA). + elapsed : float + Number of seconds passed since start. + ncols : int, optional + The width of the entire output message. If specified, + dynamically resizes `{bar}` to stay within this bound + [default: None]. If `0`, will not print any bar (only stats). + The fallback is `{bar:10}`. + prefix : str, optional + Prefix message (included in total width) [default: '']. + Use as {desc} in bar_format string. + ascii : bool, optional or str, optional + If not set, use unicode (smooth blocks) to fill the meter + [default: False]. The fallback is to use ASCII characters + " 123456789#". + unit : str, optional + The iteration unit [default: 'it']. + unit_scale : bool or int or float, optional + If 1 or True, the number of iterations will be printed with an + appropriate SI metric prefix (k = 10^3, M = 10^6, etc.) + [default: False]. If any other non-zero number, will scale + `total` and `n`. + rate : float, optional + Manual override for iteration rate. + If [default: None], uses n/elapsed. + bar_format : str, optional + Specify a custom bar string formatting. May impact performance. + [default: '{l_bar}{bar}{r_bar}'], where + l_bar='{desc}: {percentage:3.0f}%|' and + r_bar='| {n_fmt}/{total_fmt} [{elapsed}<{remaining}, ' + '{rate_fmt}{postfix}]' + Possible vars: l_bar, bar, r_bar, n, n_fmt, total, total_fmt, + percentage, elapsed, elapsed_s, ncols, nrows, desc, unit, + rate, rate_fmt, rate_noinv, rate_noinv_fmt, + rate_inv, rate_inv_fmt, postfix, unit_divisor, + remaining, remaining_s, eta. + Note that a trailing ": " is automatically removed after {desc} + if the latter is empty. + postfix : *, optional + Similar to `prefix`, but placed at the end + (e.g. for additional stats). + Note: postfix is usually a string (not a dict) for this method, + and will if possible be set to postfix = ', ' + postfix. + However other types are supported (#382). + unit_divisor : float, optional + [default: 1000], ignored unless `unit_scale` is True. + initial : int or float, optional + The initial counter value [default: 0]. + colour : str, optional + Bar colour (e.g. 'green', '#00ff00'). + + Returns + ------- + out : Formatted meter and stats, ready to display. + """ + + # sanity check: total + if total and n >= (total + 0.5): # allow float imprecision (#849) + total = None + + # apply custom scale if necessary + if unit_scale and unit_scale not in (True, 1): + if total: + total *= unit_scale + n *= unit_scale + if rate: + rate *= unit_scale # by default rate = self.avg_dn / self.avg_dt + unit_scale = False + + elapsed_str = tqdm.format_interval(elapsed) + + # if unspecified, attempt to use rate = average speed + # (we allow manual override since predicting time is an arcane art) + if rate is None and elapsed: + rate = (n - initial) / elapsed + inv_rate = 1 / rate if rate else None + format_sizeof = tqdm.format_sizeof + rate_noinv_fmt = ((format_sizeof(rate) if unit_scale else f'{rate:5.2f}') + if rate else '?') + unit + '/s' + rate_inv_fmt = ( + (format_sizeof(inv_rate) if unit_scale else f'{inv_rate:5.2f}') + if inv_rate else '?') + 's/' + unit + rate_fmt = rate_inv_fmt if inv_rate and inv_rate > 1 else rate_noinv_fmt + + if unit_scale: + n_fmt = format_sizeof(n, divisor=unit_divisor) + total_fmt = format_sizeof(total, divisor=unit_divisor) if total is not None else '?' + else: + n_fmt = str(n) + total_fmt = str(total) if total is not None else '?' + + try: + postfix = ', ' + postfix if postfix else '' + except TypeError: + pass + + remaining = (total - n) / rate if rate and total else 0 + remaining_str = tqdm.format_interval(remaining) if rate else '?' + try: + eta_dt = (datetime.now() + timedelta(seconds=remaining) + if rate and total else datetime.fromtimestamp(0, timezone.utc)) + except OverflowError: + eta_dt = datetime.max + + # format the stats displayed to the left and right sides of the bar + if prefix: + # old prefix setup work around + bool_prefix_colon_already = (prefix[-2:] == ": ") + l_bar = prefix if bool_prefix_colon_already else prefix + ": " + else: + l_bar = '' + + r_bar = f'| {n_fmt}/{total_fmt} [{elapsed_str}<{remaining_str}, {rate_fmt}{postfix}]' + + # Custom bar formatting + # Populate a dict with all available progress indicators + format_dict = { + # slight extension of self.format_dict + 'n': n, 'n_fmt': n_fmt, 'total': total, 'total_fmt': total_fmt, + 'elapsed': elapsed_str, 'elapsed_s': elapsed, + 'ncols': ncols, 'desc': prefix or '', 'unit': unit, + 'rate': inv_rate if inv_rate and inv_rate > 1 else rate, + 'rate_fmt': rate_fmt, 'rate_noinv': rate, + 'rate_noinv_fmt': rate_noinv_fmt, 'rate_inv': inv_rate, + 'rate_inv_fmt': rate_inv_fmt, + 'postfix': postfix, 'unit_divisor': unit_divisor, + 'colour': colour, + # plus more useful definitions + 'remaining': remaining_str, 'remaining_s': remaining, + 'l_bar': l_bar, 'r_bar': r_bar, 'eta': eta_dt, + **extra_kwargs} + + # total is known: we can predict some stats + if total: + # fractional and percentage progress + frac = n / total + percentage = frac * 100 + + l_bar += f'{percentage:3.0f}%|' + + if ncols == 0: + return l_bar[:-1] + r_bar[1:] + + format_dict.update(l_bar=l_bar) + if bar_format: + format_dict.update(percentage=percentage) + + # auto-remove colon for empty `{desc}` + if not prefix: + bar_format = bar_format.replace("{desc}: ", '') + else: + bar_format = "{l_bar}{bar}{r_bar}" + + full_bar = FormatReplace() + nobar = bar_format.format(bar=full_bar, **format_dict) + if not full_bar.format_called: + return nobar # no `{bar}`; nothing else to do + + # Formatting progress bar space available for bar's display + full_bar = Bar(frac, + max(1, ncols - disp_len(nobar)) if ncols else 10, + charset=Bar.ASCII if ascii is True else ascii or Bar.UTF, + colour=colour) + if not _is_ascii(full_bar.charset) and _is_ascii(bar_format): + bar_format = str(bar_format) + res = bar_format.format(bar=full_bar, **format_dict) + return disp_trim(res, ncols) if ncols else res + + elif bar_format: + # user-specified bar_format but no total + l_bar += '|' + format_dict.update(l_bar=l_bar, percentage=0) + full_bar = FormatReplace() + nobar = bar_format.format(bar=full_bar, **format_dict) + if not full_bar.format_called: + return nobar + full_bar = Bar(0, + max(1, ncols - disp_len(nobar)) if ncols else 10, + charset=Bar.BLANK, colour=colour) + res = bar_format.format(bar=full_bar, **format_dict) + return disp_trim(res, ncols) if ncols else res + else: + # no total: no bar & ETA, just progress stats + return (f'{(prefix + ": ") if prefix else ""}' + f'{n_fmt}{unit} [{elapsed_str}, {rate_fmt}{postfix}]') + + def __new__(cls, *_, **__): + instance = object.__new__(cls) + with cls.get_lock(): # also constructs lock if non-existent + cls._instances.add(instance) + # create monitoring thread + if cls.monitor_interval and (cls.monitor is None + or not cls.monitor.report()): + try: + cls.monitor = TMonitor(cls, cls.monitor_interval) + except Exception as e: # pragma: nocover + warn("tqdm:disabling monitor support" + " (monitor_interval = 0) due to:\n" + str(e), + TqdmMonitorWarning, stacklevel=2) + cls.monitor_interval = 0 + return instance + + @classmethod + def _get_free_pos(cls, instance=None): + """Skips specified instance.""" + positions = {abs(inst.pos) for inst in cls._instances + if inst is not instance and hasattr(inst, "pos")} + return min(set(range(len(positions) + 1)).difference(positions)) + + @classmethod + def _decr_instances(cls, instance): + """ + Remove from list and reposition another unfixed bar + to fill the new gap. + + This means that by default (where all nested bars are unfixed), + order is not maintained but screen flicker/blank space is minimised. + (tqdm<=4.44.1 moved ALL subsequent unfixed bars up.) + """ + with cls._lock: + try: + cls._instances.remove(instance) + except KeyError: + # if not instance.gui: # pragma: no cover + # raise + pass # py2: maybe magically removed already + # else: + if not instance.gui: + last = (instance.nrows or 20) - 1 + # find unfixed (`pos >= 0`) overflow (`pos >= nrows - 1`) + instances = list(filter( + lambda i: hasattr(i, "pos") and last <= i.pos, + cls._instances)) + # set first found to current `pos` + if instances: + inst = min(instances, key=lambda i: i.pos) + inst.clear(nolock=True) + inst.pos = abs(instance.pos) + + @classmethod + def write(cls, s, file=None, end="\n", nolock=False): + """Print a message via tqdm (without overlap with bars).""" + fp = file if file is not None else sys.stdout + with cls.external_write_mode(file=file, nolock=nolock): + # Write the message + fp.write(s) + fp.write(end) + + @classmethod + @contextmanager + def external_write_mode(cls, file=None, nolock=False): + """ + Disable tqdm within context and refresh tqdm when exits. + Useful when writing to standard output stream + """ + fp = file if file is not None else sys.stdout + + try: + if not nolock: + cls.get_lock().acquire() + # Clear all bars + inst_cleared = [] + for inst in getattr(cls, '_instances', []): + # Clear instance if in the target output file + # or if write output + tqdm output are both either + # sys.stdout or sys.stderr (because both are mixed in terminal) + if hasattr(inst, "start_t") and (inst.fp == fp or all( + f in (sys.stdout, sys.stderr) for f in (fp, inst.fp))): + inst.clear(nolock=True) + inst_cleared.append(inst) + yield + # Force refresh display of bars we cleared + for inst in inst_cleared: + inst.refresh(nolock=True) + finally: + if not nolock: + cls._lock.release() + + @classmethod + def set_lock(cls, lock): + """Set the global lock.""" + cls._lock = lock + + @classmethod + def get_lock(cls): + """Get the global lock. Construct it if it does not exist.""" + if not hasattr(cls, '_lock'): + cls._lock = TqdmDefaultWriteLock() + return cls._lock + + @classmethod + def pandas(cls, **tqdm_kwargs): + """ + Registers the current `tqdm` class with + pandas.core. + ( frame.DataFrame + | series.Series + | groupby.(generic.)DataFrameGroupBy + | groupby.(generic.)SeriesGroupBy + ).progress_apply + + A new instance will be created every time `progress_apply` is called, + and each instance will automatically `close()` upon completion. + + Parameters + ---------- + tqdm_kwargs : arguments for the tqdm instance + + Examples + -------- + >>> import pandas as pd + >>> import numpy as np + >>> from tqdm import tqdm + >>> from tqdm.gui import tqdm as tqdm_gui + >>> + >>> df = pd.DataFrame(np.random.randint(0, 100, (100000, 6))) + >>> tqdm.pandas(ncols=50) # can use tqdm_gui, optional kwargs, etc + >>> # Now you can use `progress_apply` instead of `apply` + >>> df.groupby(0).progress_apply(lambda x: x**2) + + References + ---------- + + """ + from warnings import catch_warnings, simplefilter + + from pandas.core.frame import DataFrame + from pandas.core.series import Series + try: + with catch_warnings(): + simplefilter("ignore", category=FutureWarning) + from pandas import Panel + except ImportError: # pandas>=1.2.0 + Panel = None + Rolling, Expanding = None, None + try: # pandas>=1.0.0 + from pandas.core.window.rolling import _Rolling_and_Expanding + except ImportError: + try: # pandas>=0.18.0 + from pandas.core.window import _Rolling_and_Expanding + except ImportError: # pandas>=1.2.0 + try: # pandas>=1.2.0 + from pandas.core.window.expanding import Expanding + from pandas.core.window.rolling import Rolling + _Rolling_and_Expanding = Rolling, Expanding + except ImportError: # pragma: no cover + _Rolling_and_Expanding = None + try: # pandas>=0.25.0 + from pandas.core.groupby.generic import SeriesGroupBy # , NDFrameGroupBy + from pandas.core.groupby.generic import DataFrameGroupBy + except ImportError: # pragma: no cover + try: # pandas>=0.23.0 + from pandas.core.groupby.groupby import DataFrameGroupBy, SeriesGroupBy + except ImportError: + from pandas.core.groupby import DataFrameGroupBy, SeriesGroupBy + try: # pandas>=0.23.0 + from pandas.core.groupby.groupby import GroupBy + except ImportError: # pragma: no cover + from pandas.core.groupby import GroupBy + + try: # pandas>=0.23.0 + from pandas.core.groupby.groupby import PanelGroupBy + except ImportError: + try: + from pandas.core.groupby import PanelGroupBy + except ImportError: # pandas>=0.25.0 + PanelGroupBy = None + + tqdm_kwargs = tqdm_kwargs.copy() + deprecated_t = [tqdm_kwargs.pop('deprecated_t', None)] + + def inner_generator(df_function='apply'): + def inner(df, func, *args, **kwargs): + """ + Parameters + ---------- + df : (DataFrame|Series)[GroupBy] + Data (may be grouped). + func : function + To be applied on the (grouped) data. + **kwargs : optional + Transmitted to `df.apply()`. + """ + + # Precompute total iterations + total = tqdm_kwargs.pop("total", getattr(df, 'ngroups', None)) + if total is None: # not grouped + if df_function == 'applymap': + total = df.size + elif isinstance(df, Series): + total = len(df) + elif (_Rolling_and_Expanding is None or + not isinstance(df, _Rolling_and_Expanding)): + # DataFrame or Panel + axis = kwargs.get('axis', 0) + if axis == 'index': + axis = 0 + elif axis == 'columns': + axis = 1 + # when axis=0, total is shape[axis1] + total = df.size // df.shape[axis] + + # Init bar + if deprecated_t[0] is not None: + t = deprecated_t[0] + deprecated_t[0] = None + else: + t = cls(total=total, **tqdm_kwargs) + + if len(args) > 0: + # *args intentionally not supported (see #244, #299) + TqdmDeprecationWarning( + "Except func, normal arguments are intentionally" + + " not supported by" + + " `(DataFrame|Series|GroupBy).progress_apply`." + + " Use keyword arguments instead.", + fp_write=getattr(t.fp, 'write', sys.stderr.write)) + + try: # pandas>=1.3.0,<3.0 + from pandas.core.common import is_builtin_func + except ImportError: # pandas<1.3.0 + is_builtin_func = getattr(df, '_is_builtin_func', lambda f: f) + try: + func = is_builtin_func(func) + except TypeError: + pass + + # Define bar updating wrapper + def wrapper(*args, **kwargs): + # update tbar correctly + # it seems `pandas apply` calls `func` twice + # on the first column/row to decide whether it can + # take a fast or slow code path; so stop when t.total==t.n + t.update(n=1 if not t.total or t.n < t.total else 0) + return func(*args, **kwargs) + + # Apply the provided function (in **kwargs) + # on the df using our wrapper (which provides bar updating) + try: + return getattr(df, df_function)(wrapper, **kwargs) + finally: + t.close() + + return inner + + # Monkeypatch pandas to provide easy methods + # Enable custom tqdm progress in pandas! + Series.progress_apply = inner_generator() + SeriesGroupBy.progress_apply = inner_generator() + Series.progress_map = inner_generator('map') + SeriesGroupBy.progress_map = inner_generator('map') + + DataFrame.progress_apply = inner_generator() + DataFrameGroupBy.progress_apply = inner_generator() + DataFrame.progress_applymap = inner_generator('applymap') + DataFrame.progress_map = inner_generator('map') + DataFrameGroupBy.progress_map = inner_generator('map') + + if Panel is not None: + Panel.progress_apply = inner_generator() + if PanelGroupBy is not None: + PanelGroupBy.progress_apply = inner_generator() + + GroupBy.progress_apply = inner_generator() + GroupBy.progress_aggregate = inner_generator('aggregate') + GroupBy.progress_transform = inner_generator('transform') + + if Rolling is not None and Expanding is not None: + Rolling.progress_apply = inner_generator() + Expanding.progress_apply = inner_generator() + elif _Rolling_and_Expanding is not None: + _Rolling_and_Expanding.progress_apply = inner_generator() + + # override defaults via env vars + @envwrap("tqdm", is_method=True, types={'total': float, 'ncols': int, 'miniters': float, + 'position': int, 'nrows': int}) + def __init__(self, iterable=None, desc=None, total=None, leave=True, file=None, + ncols=None, mininterval=0.1, maxinterval=10.0, miniters=None, + ascii=None, # pylint: disable=redefined-builtin + disable=False, unit='it', unit_scale=False, dynamic_ncols=False, smoothing=0.3, + bar_format=None, initial=0, position=None, postfix=None, unit_divisor=1000, + write_bytes=False, lock_args=None, nrows=None, colour=None, delay=0.0, gui=False, + **kwargs): + """see tqdm.tqdm for arguments""" + if file is None: + file = sys.stderr + + if write_bytes: + # Despite coercing unicode into bytes, py2 sys.std* streams + # should have bytes written to them. + file = SimpleTextIOWrapper( + file, encoding=getattr(file, 'encoding', None) or 'utf-8') + + file = DisableOnWriteError(file, tqdm_instance=self) + + if disable is None and hasattr(file, "isatty") and not file.isatty(): + disable = True + + if total is None and iterable is not None: + try: + total = len(iterable) + except (TypeError, AttributeError): + total = None + if total == float("inf"): + # Infinite iterations, behave same as unknown + total = None + + if disable: + self.iterable = iterable + self.disable = disable + with self._lock: + self.pos = self._get_free_pos(self) + self._instances.remove(self) + self.n = initial + self.total = total + self.leave = leave + return + + if kwargs: + self.disable = True + with self._lock: + self.pos = self._get_free_pos(self) + self._instances.remove(self) + raise ( + TqdmDeprecationWarning( + "`nested` is deprecated and automated.\n" + "Use `position` instead for manual control.\n", + fp_write=getattr(file, 'write', sys.stderr.write)) + if "nested" in kwargs else + TqdmKeyError("Unknown argument(s): " + str(kwargs))) + + # Preprocess the arguments + if ( + (ncols is None or nrows is None) and (file in (sys.stderr, sys.stdout)) + ) or dynamic_ncols: # pragma: no cover + if dynamic_ncols: + dynamic_ncols = _screen_shape_wrapper() + if dynamic_ncols: + ncols, nrows = dynamic_ncols(file) + else: + _dynamic_ncols = _screen_shape_wrapper() + if _dynamic_ncols: + _ncols, _nrows = _dynamic_ncols(file) + if ncols is None: + ncols = _ncols + if nrows is None: + nrows = _nrows + + if miniters is None: + miniters = 0 + dynamic_miniters = True + else: + dynamic_miniters = False + + if mininterval is None: + mininterval = 0 + + if maxinterval is None: + maxinterval = 0 + + if ascii is None: + ascii = not _supports_unicode(file) + + if bar_format and ascii is not True and not _is_ascii(ascii): + # Convert bar format into unicode since terminal uses unicode + bar_format = str(bar_format) + + if smoothing is None: + smoothing = 0 + + # Store the arguments + self.iterable = iterable + self.desc = desc or '' + self.total = total + self.leave = leave + self.fp = file + self.ncols = ncols + self.nrows = nrows + self.mininterval = mininterval + self.maxinterval = maxinterval + self.miniters = miniters + self.dynamic_miniters = dynamic_miniters + self.ascii = ascii + self.disable = disable + self.unit = unit + self.unit_scale = unit_scale + self.unit_divisor = unit_divisor + self.initial = initial + self.lock_args = lock_args + self.delay = delay + self.gui = gui + self.dynamic_ncols = dynamic_ncols + self.smoothing = smoothing + self._ema_dn = EMA(smoothing) + self._ema_dt = EMA(smoothing) + self._ema_miniters = EMA(smoothing) + self.bar_format = bar_format + self.postfix = None + self.colour = colour + self._time = time + if postfix: + try: + self.set_postfix(refresh=False, **postfix) + except TypeError: + self.postfix = postfix + + # Init the iterations counters + self.last_print_n = initial + self.n = initial + + # if nested, at initial sp() call we replace '\r' by '\n' to + # not overwrite the outer progress bar + with self._lock: + # mark fixed positions as negative + self.pos = self._get_free_pos(self) if position is None else -position + + if not gui: + # Initialize the screen printer + self.sp = self.status_printer(self.fp) + if delay <= 0: + self.refresh(lock_args=self.lock_args) + + # Init the time counter + self.last_print_t = self._time() + # NB: Avoid race conditions by setting start_t at the very end of init + self.start_t = self.last_print_t + + def __bool__(self): + if self.total is not None: + return self.total > 0 + if self.iterable is None: + raise TypeError('bool() undefined when iterable == total == None') + return bool(self.iterable) + + def __len__(self): + return ( + self.total if self.iterable is None + else self.iterable.shape[0] if hasattr(self.iterable, "shape") + else len(self.iterable) if hasattr(self.iterable, "__len__") + else self.iterable.__length_hint__() if hasattr(self.iterable, "__length_hint__") + else getattr(self, "total", None)) + + def __reversed__(self): + try: + orig = self.iterable + except AttributeError: + raise TypeError("'tqdm' object is not reversible") + else: + self.iterable = reversed(self.iterable) + return self.__iter__() + finally: + self.iterable = orig + + def __contains__(self, item): + contains = getattr(self.iterable, '__contains__', None) + return (contains(item) if contains is not None # pylint: disable=not-callable + else item in self.__iter__()) + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + try: + self.close() + except AttributeError: + # maybe eager thread cleanup upon external error + if (exc_type, exc_value, traceback) == (None, None, None): + raise + warn("AttributeError ignored", TqdmWarning, stacklevel=2) + + def __del__(self): + self.close() + + def __str__(self): + return self.format_meter(**self.format_dict) + + @property + def _comparable(self): + return abs(getattr(self, "pos", 1 << 31)) + + def __hash__(self): + return id(self) + + def __iter__(self): + """Backward-compatibility to use: for x in tqdm(iterable)""" + + # Inlining instance variables as locals (speed optimisation) + iterable = self.iterable + + # If the bar is disabled, then just walk the iterable + # (note: keep this check outside the loop for performance) + if self.disable: + for obj in iterable: + yield obj + return + + mininterval = self.mininterval + last_print_t = self.last_print_t + last_print_n = self.last_print_n + min_start_t = self.start_t + self.delay + n = self.n + time = self._time + + try: + for obj in iterable: + yield obj + # Update and possibly print the progress bar. + # Note: does not call self.update(1) for speed optimisation. + n += 1 + + if n - last_print_n >= self.miniters: + cur_t = time() + dt = cur_t - last_print_t + if dt >= mininterval and cur_t >= min_start_t: + self.update(n - last_print_n) + last_print_n = self.last_print_n + last_print_t = self.last_print_t + finally: + self.n = n + self.close() + + def update(self, n=1): + """ + Manually update the progress bar, useful for streams + such as reading files. + E.g.: + >>> t = tqdm(total=filesize) # Initialise + >>> for current_buffer in stream: + ... ... + ... t.update(len(current_buffer)) + >>> t.close() + The last line is highly recommended, but possibly not necessary if + `t.update()` will be called in such a way that `filesize` will be + exactly reached and printed. + + Parameters + ---------- + n : int or float, optional + Increment to add to the internal counter of iterations + [default: 1]. If using float, consider specifying `{n:.3f}` + or similar in `bar_format`, or specifying `unit_scale`. + + Returns + ------- + out : bool or None + True if a `display()` was triggered. + """ + if self.disable: + return + + if n < 0: + self.last_print_n += n # for auto-refresh logic to work + self.n += n + + # check counter first to reduce calls to time() + if self.n - self.last_print_n >= self.miniters: + cur_t = self._time() + dt = cur_t - self.last_print_t + if dt >= self.mininterval and cur_t >= self.start_t + self.delay: + cur_t = self._time() + dn = self.n - self.last_print_n # >= n + if self.smoothing and dt and dn: + # EMA (not just overall average) + self._ema_dn(dn) + self._ema_dt(dt) + self.refresh(lock_args=self.lock_args) + if self.dynamic_miniters: + # If no `miniters` was specified, adjust automatically to the + # maximum iteration rate seen so far between two prints. + # e.g.: After running `tqdm.update(5)`, subsequent + # calls to `tqdm.update()` will only cause an update after + # at least 5 more iterations. + if self.maxinterval and dt >= self.maxinterval: + self.miniters = dn * (self.mininterval or self.maxinterval) / dt + elif self.smoothing: + # EMA miniters update + self.miniters = self._ema_miniters( + dn * (self.mininterval / dt if self.mininterval and dt + else 1)) + else: + # max iters between two prints + self.miniters = max(self.miniters, dn) + + # Store old values for next call + self.last_print_n = self.n + self.last_print_t = cur_t + return True + + def close(self): + """Cleanup and (if leave=False) close the progress bar.""" + if self.disable: + return + + # Prevent multiple closures + self.disable = True + + # decrement instance pos and remove from internal set + pos = abs(self.pos) + self._decr_instances(self) + + if self.last_print_t < self.start_t + self.delay: + # haven't ever displayed; nothing to clear + return + + # GUI mode + if getattr(self, 'sp', None) is None: + return + + # annoyingly, _supports_unicode isn't good enough + def fp_write(s): + self.fp.write(str(s)) + + try: + fp_write('') + except ValueError as e: + if 'closed' in str(e): + return + raise # pragma: no cover + + leave = pos == 0 if self.leave is None else self.leave + + with self._lock: + if leave: + # stats for overall rate (no weighted average) + self._ema_dt = lambda: None + self.display(pos=0) + fp_write('\n') + else: + # clear previous display + if self.display(msg='', pos=pos) and not pos: + fp_write('\r') + + def clear(self, nolock=False): + """Clear current bar display.""" + if self.disable: + return + + if not nolock: + self._lock.acquire() + pos = abs(self.pos) + if pos < (self.nrows or 20): + self.moveto(pos) + self.sp('') + self.fp.write('\r') # place cursor back at the beginning of line + self.moveto(-pos) + if not nolock: + self._lock.release() + + def refresh(self, nolock=False, lock_args=None): + """ + Force refresh the display of this bar. + + Parameters + ---------- + nolock : bool, optional + If `True`, does not lock. + If [default: `False`]: calls `acquire()` on internal lock. + lock_args : tuple, optional + Passed to internal lock's `acquire()`. + If specified, will only `display()` if `acquire()` returns `True`. + """ + if self.disable: + return + + if not nolock: + if lock_args: + if not self._lock.acquire(*lock_args): + return False + else: + self._lock.acquire() + self.display() + if not nolock: + self._lock.release() + return True + + def unpause(self): + """Restart tqdm timer from last print time.""" + if self.disable: + return + cur_t = self._time() + self.start_t += cur_t - self.last_print_t + self.last_print_t = cur_t + + def reset(self, total=None): + """ + Resets to 0 iterations for repeated use. + + Consider combining with `leave=True`. + + Parameters + ---------- + total : int or float, optional. Total to use for the new bar. + """ + self.n = 0 + if total is not None: + self.total = total + if self.disable: + return + self.last_print_n = 0 + self.last_print_t = self.start_t = self._time() + self._ema_dn = EMA(self.smoothing) + self._ema_dt = EMA(self.smoothing) + self._ema_miniters = EMA(self.smoothing) + self.refresh() + + def set_description(self, desc=None, refresh=True): + """ + Set/modify description of the progress bar. + + Parameters + ---------- + desc : str, optional + refresh : bool, optional + Forces refresh [default: True]. + """ + self.desc = desc + ': ' if desc else '' + if refresh: + self.refresh() + + def set_description_str(self, desc=None, refresh=True): + """Set/modify description without ': ' appended.""" + self.desc = desc or '' + if refresh: + self.refresh() + + def set_postfix(self, ordered_dict=None, refresh=True, **kwargs): + """ + Set/modify postfix (additional stats) + with automatic formatting based on datatype. + + Parameters + ---------- + ordered_dict : dict or OrderedDict, optional + refresh : bool, optional + Forces refresh [default: True]. + kwargs : dict, optional + """ + # Sort in alphabetical order to be more deterministic + postfix = OrderedDict([] if ordered_dict is None else ordered_dict) + for key in sorted(kwargs.keys()): + postfix[key] = kwargs[key] + # Preprocess stats according to datatype + for key in postfix.keys(): + # Number: limit the length of the string + if isinstance(postfix[key], Number): + postfix[key] = self.format_num(postfix[key]) + # Else for any other type, try to get the string conversion + elif not isinstance(postfix[key], str): + postfix[key] = str(postfix[key]) + # Else if it's a string, don't need to preprocess anything + # Stitch together to get the final postfix + self.postfix = ', '.join(key + '=' + postfix[key].strip() + for key in postfix.keys()) + if refresh: + self.refresh() + + def set_postfix_str(self, s='', refresh=True): + """ + Postfix without dictionary expansion, similar to prefix handling. + """ + self.postfix = str(s) + if refresh: + self.refresh() + + def moveto(self, n): + # TODO: private method + self.fp.write('\n' * n + _term_move_up() * -n) + getattr(self.fp, 'flush', lambda: None)() + + @property + def format_dict(self): + """Public API for read-only member access.""" + if self.disable and not hasattr(self, 'unit'): + return defaultdict(lambda: None, { + 'n': self.n, 'total': self.total, 'elapsed': 0, 'unit': 'it'}) + if self.dynamic_ncols: + self.ncols, self.nrows = self.dynamic_ncols(self.fp) + return { + 'n': self.n, 'total': self.total, + 'elapsed': self._time() - self.start_t if hasattr(self, 'start_t') else 0, + 'ncols': self.ncols, 'nrows': self.nrows, 'prefix': self.desc, + 'ascii': self.ascii, 'unit': self.unit, 'unit_scale': self.unit_scale, + 'rate': self._ema_dn() / self._ema_dt() if self._ema_dt() else None, + 'bar_format': self.bar_format, 'postfix': self.postfix, + 'unit_divisor': self.unit_divisor, 'initial': self.initial, + 'colour': self.colour} + + def display(self, msg=None, pos=None): + """ + Use `self.sp` to display `msg` in the specified `pos`. + + Consider overloading this function when inheriting to use e.g.: + `self.some_frontend(**self.format_dict)` instead of `self.sp`. + + Parameters + ---------- + msg : str, optional. What to display (default: `repr(self)`). + pos : int, optional. Position to `moveto` + (default: `abs(self.pos)`). + """ + if pos is None: + pos = abs(self.pos) + + nrows = self.nrows or 20 + if pos >= nrows - 1: + if pos >= nrows: + return False + if msg or msg is None: # override at `nrows - 1` + msg = " ... (more hidden) ..." + + if not hasattr(self, "sp"): + raise TqdmDeprecationWarning( + "Please use `tqdm.gui.tqdm(...)`" + " instead of `tqdm(..., gui=True)`\n", + fp_write=getattr(self.fp, 'write', sys.stderr.write)) + + if pos: + self.moveto(pos) + self.sp(self.__str__() if msg is None else msg) + if pos: + self.moveto(-pos) + return True + + @classmethod + @contextmanager + def wrapattr(cls, stream, method, total=None, bytes=True, # pylint: disable=redefined-builtin + **tqdm_kwargs): + """ + stream : file-like object. + method : str, "read" or "write". The result of `read()` and + the first argument of `write()` should have a `len()`. + + >>> with tqdm.wrapattr(file_obj, "read", total=file_obj.size) as fobj: + ... while True: + ... chunk = fobj.read(chunk_size) + ... if not chunk: + ... break + """ + with cls(total=total, **tqdm_kwargs) as t: + if bytes: + t.unit = "B" + t.unit_scale = True + t.unit_divisor = 1024 + yield CallbackIOWrapper(t.update, stream, method) + + +def trange(*args, **kwargs): + """Shortcut for tqdm(range(*args), **kwargs).""" + return tqdm(range(*args), **kwargs) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm/tk.py b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/tk.py new file mode 100644 index 0000000000000000000000000000000000000000..6607cc7f55e9bcdd177ef57dae4dbc06c7e33951 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/tk.py @@ -0,0 +1,196 @@ +""" +Tkinter GUI progress bar decorator for iterators. + +Usage: +>>> from tqdm.tk import trange, tqdm +>>> for i in trange(10): +... ... +""" +import re +import sys +import tkinter +import tkinter.ttk as ttk +from warnings import warn + +from .std import TqdmExperimentalWarning, TqdmWarning +from .std import tqdm as std_tqdm + +__author__ = {"github.com/": ["richardsheridan", "casperdcl"]} +__all__ = ['tqdm_tk', 'ttkrange', 'tqdm', 'trange'] + + +class tqdm_tk(std_tqdm): # pragma: no cover + """ + Experimental Tkinter GUI version of tqdm! + + Note: Window interactivity suffers if `tqdm_tk` is not running within + a Tkinter mainloop and values are generated infrequently. In this case, + consider calling `tqdm_tk.refresh()` frequently in the Tk thread. + """ + + # TODO: @classmethod: write()? + + def __init__(self, *args, **kwargs): + """ + This class accepts the following parameters *in addition* to + the parameters accepted by `tqdm`. + + Parameters + ---------- + grab : bool, optional + Grab the input across all windows of the process. + tk_parent : `tkinter.Wm`, optional + Parent Tk window. + cancel_callback : Callable, optional + Create a cancel button and set `cancel_callback` to be called + when the cancel or window close button is clicked. + """ + kwargs = kwargs.copy() + kwargs['gui'] = True + # convert disable = None to False + kwargs['disable'] = bool(kwargs.get('disable', False)) + self._warn_leave = 'leave' in kwargs + grab = kwargs.pop('grab', False) + tk_parent = kwargs.pop('tk_parent', None) + self._cancel_callback = kwargs.pop('cancel_callback', None) + super().__init__(*args, **kwargs) + + if self.disable: + return + + if tk_parent is None: # Discover parent widget + try: + tk_parent = tkinter._default_root + except AttributeError: + raise AttributeError( + "`tk_parent` required when using `tkinter.NoDefaultRoot()`") + if tk_parent is None: # use new default root window as display + self._tk_window = tkinter.Tk() + else: # some other windows already exist + self._tk_window = tkinter.Toplevel() + else: + self._tk_window = tkinter.Toplevel(tk_parent) + + warn("GUI is experimental/alpha", TqdmExperimentalWarning, stacklevel=2) + self._tk_dispatching = self._tk_dispatching_helper() + + self._tk_window.protocol("WM_DELETE_WINDOW", self.cancel) + self._tk_window.wm_title(self.desc) + self._tk_window.wm_attributes("-topmost", 1) + self._tk_window.after(0, lambda: self._tk_window.wm_attributes("-topmost", 0)) + self._tk_n_var = tkinter.DoubleVar(self._tk_window, value=0) + self._tk_text_var = tkinter.StringVar(self._tk_window) + pbar_frame = ttk.Frame(self._tk_window, padding=5) + pbar_frame.pack() + _tk_label = ttk.Label(pbar_frame, textvariable=self._tk_text_var, + wraplength=600, anchor="center", justify="center") + _tk_label.pack() + self._tk_pbar = ttk.Progressbar( + pbar_frame, variable=self._tk_n_var, length=450) + if self.total is not None: + self._tk_pbar.configure(maximum=self.total) + else: + self._tk_pbar.configure(mode="indeterminate") + self._tk_pbar.pack() + if self._cancel_callback is not None: + _tk_button = ttk.Button(pbar_frame, text="Cancel", command=self.cancel) + _tk_button.pack() + if grab: + self._tk_window.grab_set() + + def close(self): + if self.disable: + return + + self.disable = True + + with self.get_lock(): + self._instances.remove(self) + + def _close(): + self._tk_window.after('idle', self._tk_window.destroy) + if not self._tk_dispatching: + self._tk_window.update() + + self._tk_window.protocol("WM_DELETE_WINDOW", _close) + + # if leave is set but we are self-dispatching, the left window is + # totally unresponsive unless the user manually dispatches + if not self.leave: + _close() + elif not self._tk_dispatching: + if self._warn_leave: + warn("leave flag ignored if not in tkinter mainloop", + TqdmWarning, stacklevel=2) + _close() + + def clear(self, *_, **__): + pass + + def display(self, *_, **__): + self._tk_n_var.set(self.n) + d = self.format_dict + # remove {bar} + d['bar_format'] = (d['bar_format'] or "{l_bar}{r_bar}").replace( + "{bar}", "") + msg = self.format_meter(**d) + if '' in msg: + msg = "".join(re.split(r'\|?\|?', msg, maxsplit=1)) + self._tk_text_var.set(msg) + if not self._tk_dispatching: + self._tk_window.update() + + def set_description(self, desc=None, refresh=True): + self.set_description_str(desc, refresh) + + def set_description_str(self, desc=None, refresh=True): + self.desc = desc + if not self.disable: + self._tk_window.wm_title(desc) + if refresh and not self._tk_dispatching: + self._tk_window.update() + + def cancel(self): + """ + `cancel_callback()` followed by `close()` + when close/cancel buttons clicked. + """ + if self._cancel_callback is not None: + self._cancel_callback() + self.close() + + def reset(self, total=None): + """ + Resets to 0 iterations for repeated use. + + Parameters + ---------- + total : int or float, optional. Total to use for the new bar. + """ + if hasattr(self, '_tk_pbar'): + if total is None: + self._tk_pbar.configure(maximum=100, mode="indeterminate") + else: + self._tk_pbar.configure(maximum=total, mode="determinate") + super().reset(total=total) + + @staticmethod + def _tk_dispatching_helper(): + """determine if Tkinter mainloop is dispatching events""" + codes = {tkinter.mainloop.__code__, tkinter.Misc.mainloop.__code__} + for frame in sys._current_frames().values(): + while frame: + if frame.f_code in codes: + return True + frame = frame.f_back + return False + + +def ttkrange(*args, **kwargs): + """Shortcut for `tqdm.tk.tqdm(range(*args), **kwargs)`.""" + return tqdm_tk(range(*args), **kwargs) + + +# Aliases +tqdm = tqdm_tk +trange = ttkrange diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm/tqdm.1 b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/tqdm.1 new file mode 100644 index 0000000000000000000000000000000000000000..b134ddd74c2095149e0c902f004a162c3be9d2ed --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/tqdm.1 @@ -0,0 +1,241 @@ +.TH "TQDM" "1" "2015\-2026" "tqdm User Manuals" +.SH NAME +tqdm \- fast, extensible progress bar for Python and CLI +.SH SYNOPSIS +tqdm [\f[I]options\f[R]] +.SH DESCRIPTION +See \c +.UR https://github.com/tqdm/tqdm +.UE \c +\&. +Can be used as a pipe: +.IP +.EX +$ \f[I]# count lines of code\f[R] +$ cat *.py \f[B]|\f[R] tqdm \f[B]|\f[R] wc \-l +327it [00:00, 981773.38it/s] +327 + +$ \f[I]# find all files\f[R] +$ find . \-name \(dq*.py\(dq \f[B]|\f[R] tqdm \f[B]|\f[R] wc \-l +432it [00:00, 833842.30it/s] +432 + +\f[I]# ... and more info\f[R] +$ find . \-name \(aq*.py\(aq \-exec wc \-l \(rs{} \(rs; \(rs + \f[B]|\f[R] tqdm \-\-total 432 \-\-unit files \-\-desc counting \(rs + \f[B]|\f[R] awk \(aq{ sum += $1 }; END { print sum }\(aq +counting: 100%\f[B]|\f[R]█████████\f[B]|\f[R] 432/432 [00:00<00:00, 794361.83files/s] +131998 +.EE +.SH OPTIONS +.TP +\-h, \-\-help +Print this help and exit. +.TP +\-v, \-\-version +Print version and exit. +.TP +\-\-desc=\f[I]desc\f[R] +str, optional. +Prefix for the progress bar. +.TP +\-\-total=\f[I]total\f[R] +int or float, optional. +The number of expected iterations. +If unspecified, len(iterable) is used if possible. +If float(\(lqinf\(rq) or as a last resort, only basic progress +statistics are displayed (no ETA, no progress bar). +If \f[CR]gui\f[R] is True and this parameter needs subsequent updating, +specify an initial arbitrary large positive number, e.g.\ 9e9. +.TP +\-\-leave +bool, optional. +If [default: True], keeps all traces of the progress bar upon +termination of iteration. +If \f[CR]None\f[R], will leave only if \f[CR]position\f[R] is +\f[CR]0\f[R]. +.TP +\-\-ncols=\f[I]ncols\f[R] +int, optional. +The width of the entire output message. +If specified, dynamically resizes the progress bar to stay within this +bound. +If unspecified, attempts to use environment width. +The fallback is a meter width of 10 and no limit for the counter and +statistics. +If 0, will not print any meter (only stats). +.TP +\-\-mininterval=\f[I]mininterval\f[R] +float, optional. +Minimum progress display update interval [default: 0.1] seconds. +.TP +\-\-maxinterval=\f[I]maxinterval\f[R] +float, optional. +Maximum progress display update interval [default: 10] seconds. +Automatically adjusts \f[CR]miniters\f[R] to correspond to +\f[CR]mininterval\f[R] after long display update lag. +Only works if \f[CR]dynamic_miniters\f[R] or monitor thread is enabled. +.TP +\-\-miniters=\f[I]miniters\f[R] +int or float, optional. +Minimum progress display update interval, in iterations. +If 0 and \f[CR]dynamic_miniters\f[R], will automatically adjust to equal +\f[CR]mininterval\f[R] (more CPU efficient, good for tight loops). +If > 0, will skip display of specified number of iterations. +Tweak this and \f[CR]mininterval\f[R] to get very efficient loops. +If your progress is erratic with both fast and slow iterations (network, +skipping items, etc) you should set miniters=1. +.TP +\-\-ascii=\f[I]ascii\f[R] +bool or str, optional. +If unspecified or False, use unicode (smooth blocks) to fill the meter. +The fallback is to use ASCII characters \(rq 123456789#\(lq. +.TP +\-\-disable +bool, optional. +Whether to disable the entire progress bar wrapper [default: False]. +If set to None, disable on non\-TTY. +.TP +\-\-unit=\f[I]unit\f[R] +str, optional. +String that will be used to define the unit of each iteration [default: +it]. +.TP +\-\-unit\-scale=\f[I]unit_scale\f[R] +bool or int or float, optional. +If 1 or True, the number of iterations will be reduced/scaled +automatically and a metric prefix following the International System of +Units standard will be added (kilo, mega, etc.) +[default: False]. +If any other non\-zero number, will scale \f[CR]total\f[R] and +\f[CR]n\f[R]. +.TP +\-\-dynamic\-ncols +bool, optional. +If set, constantly alters \f[CR]ncols\f[R] and \f[CR]nrows\f[R] to the +environment (allowing for window resizes) [default: False]. +.TP +\-\-smoothing=\f[I]smoothing\f[R] +float, optional. +Exponential moving average smoothing factor for speed estimates (ignored +in GUI mode). +Ranges from 0 (average speed) to 1 (current/instantaneous speed) +[default: 0.3]. +.TP +\-\-bar\-format=\f[I]bar_format\f[R] +str, optional. +Specify a custom bar string formatting. +May impact performance. +[default: `{l_bar}{bar}{r_bar}'], where l_bar=`{desc}: +{percentage:3.0f}%|' and r_bar=`| {n_fmt}/{total_fmt} +[{elapsed}<{remaining}, \(cq \(cq{rate_fmt}{postfix}]' Possible vars: +l_bar, bar, r_bar, n, n_fmt, total, total_fmt, percentage, elapsed, +elapsed_s, ncols, nrows, desc, unit, rate, rate_fmt, rate_noinv, +rate_noinv_fmt, rate_inv, rate_inv_fmt, postfix, unit_divisor, +remaining, remaining_s, eta. +Note that a trailing \(lq:\(rq is automatically removed after {desc} if +the latter is empty. +.TP +\-\-initial=\f[I]initial\f[R] +int or float, optional. +The initial counter value. +Useful when restarting a progress bar [default: 0]. +If using float, consider specifying \f[CR]{n:.3f}\f[R] or similar in +\f[CR]bar_format\f[R], or specifying \f[CR]unit_scale\f[R]. +.TP +\-\-position=\f[I]position\f[R] +int, optional. +Specify the line offset to print this bar (starting from 0) Automatic if +unspecified. +Useful to manage multiple bars at once (eg, from threads). +.TP +\-\-postfix=\f[I]postfix\f[R] +dict or *, optional. +Specify additional stats to display at the end of the bar. +Calls \f[CR]set_postfix(**postfix)\f[R] if possible (dict). +.TP +\-\-unit\-divisor=\f[I]unit_divisor\f[R] +float, optional. +[default: 1000], ignored unless \f[CR]unit_scale\f[R] is True. +.TP +\-\-write\-bytes +bool, optional. +Whether to write bytes. +If (default: False) will write unicode. +.TP +\-\-lock\-args=\f[I]lock_args\f[R] +tuple, optional. +Passed to \f[CR]refresh\f[R] for intermediate output (initialisation, +iterating, and updating). +.TP +\-\-nrows=\f[I]nrows\f[R] +int, optional. +The screen height. +If specified, hides nested bars outside this bound. +If unspecified, attempts to use environment height. +The fallback is 20. +.TP +\-\-colour=\f[I]colour\f[R] +str, optional. +Bar colour (e.g.\ `green', `#00ff00'). +.TP +\-\-delay=\f[I]delay\f[R] +float, optional. +Don\(cqt display until [default: 0] seconds have elapsed. +.TP +\-\-delim=\f[I]delim\f[R] +chr, optional. +Delimiting character [default: `\(rsn']. +Use `\(rs0' for null. +N.B.: on Windows systems, Python converts `\(rsn' to `\(rsr\(rsn'. +.TP +\-\-buf\-size=\f[I]buf_size\f[R] +int, optional. +String buffer size in bytes [default: 256] used when \f[CR]delim\f[R] is +specified. +.TP +\-\-bytes +bool, optional. +If true, will count bytes, ignore \f[CR]delim\f[R], and default +\f[CR]unit_scale\f[R] to True, \f[CR]unit_divisor\f[R] to 1024, and +\f[CR]unit\f[R] to `B'. +.TP +\-\-tee +bool, optional. +If true, passes \f[CR]stdin\f[R] to both \f[CR]stderr\f[R] and +\f[CR]stdout\f[R]. +.TP +\-\-update +bool, optional. +If true, will treat input as newly elapsed iterations, i.e.\ numbers to +pass to \f[CR]update()\f[R]. +Note that this is slow (\(ti2e5 it/s) since every input must be decoded +as a number. +.TP +\-\-update\-to +bool, optional. +If true, will treat input as total elapsed iterations, i.e.\ numbers to +assign to \f[CR]self.n\f[R]. +Note that this is slow (\(ti2e5 it/s) since every input must be decoded +as a number. +.TP +\-\-null +bool, optional. +If true, will discard input (no stdout). +.TP +\-\-manpath=\f[I]manpath\f[R] +str, optional. +Directory in which to install tqdm man pages. +.TP +\-\-comppath=\f[I]comppath\f[R] +str, optional. +Directory in which to place tqdm completion. +.TP +\-\-log=\f[I]log\f[R] +str, optional. +CRITICAL|FATAL|ERROR|WARN(ING)|[default: `INFO']|DEBUG|NOTSET. +.SH AUTHORS +tqdm developers \c +.UR https://github.com/tqdm +.UE \c. diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm/utils.py b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/utils.py new file mode 100644 index 0000000000000000000000000000000000000000..329c064478e4c6f094249d85732d818fc400720b --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/utils.py @@ -0,0 +1,328 @@ +""" +General helpers required for `tqdm.std`. +""" +import os +import re +import sys +from functools import partial, partialmethod, wraps +from inspect import signature +# TODO consider using wcswidth third-party package for 0-width characters +from unicodedata import east_asian_width +from warnings import warn +from weakref import proxy + +_range, _unich, _unicode, _basestring = range, chr, str, str +CUR_OS = sys.platform +IS_WIN = any(CUR_OS.startswith(i) for i in ['win32', 'cygwin']) +IS_NIX = any(CUR_OS.startswith(i) for i in ['aix', 'linux', 'darwin', 'freebsd']) +RE_ANSI = re.compile(r"\x1b\[[;\d]*[A-Za-z]") + +try: + if IS_WIN: + import colorama + else: + raise ImportError +except ImportError: + colorama = None +else: + try: + colorama.init(strip=False) + except TypeError: + colorama.init() + + +def envwrap(name, app="", types=None, is_method=False): + """ + Basic (env-only) version of [envwrap](https://github.com/tqdm/envwrap). + Install `envwrap` for config file support. + """ + if types is None: + types = {} + if name[-1] == "_": + name = name[:-1] + warn("Trailing underscore in `name` is automatic", DeprecationWarning, stacklevel=2) + prefixes = (name, f"{name}_{app}") if app else (name,) + env_overrides = {} + for prefix in prefixes: + prefix = prefix.upper() + "_" + i = len(prefix) + env_overrides.update( + (k[i:].lower(), v) for k, v in os.environ.items() if k.startswith(prefix)) + part = partialmethod if is_method else partial + + def wrap(func): + params = signature(func).parameters + # ignore unknown env vars + overrides = {k: v for k, v in env_overrides.items() if k in params} + # infer overrides' `type`s + for k in overrides: + param = params[k] + if param.annotation is not param.empty: # typehints + for typ in getattr(param.annotation, '__args__', (param.annotation,)): + try: + overrides[k] = typ(overrides[k]) + except Exception: # nosec B110 + pass + else: + break + elif param.default is not None: # type of default value + overrides[k] = type(param.default)(overrides[k]) + else: + try: # `types` fallback + overrides[k] = types[k](overrides[k]) + except KeyError: # keep unconverted (`str`) + pass + return part(func, **overrides) + return wrap + + +try: + from envwrap import envwrap # noqa: F401, F811, pylint: disable=unused-import +except ModuleNotFoundError: + pass + + +class FormatReplace: + """ + >>> a = FormatReplace('something') + >>> f"{a:5d}" + 'something' + """ # NOQA: P102 + def __init__(self, replace=''): + self.replace = replace + self.format_called = 0 + + def __format__(self, _): + self.format_called += 1 + return self.replace + + +class Comparable: + """Assumes child has self._comparable attr/@property""" + def __lt__(self, other): + return self._comparable < other._comparable + + def __le__(self, other): + return (self < other) or (self == other) + + def __eq__(self, other): + return self._comparable == other._comparable + + def __ne__(self, other): + return not self == other + + def __gt__(self, other): + return not self <= other + + def __ge__(self, other): + return not self < other + + +class ObjectWrapper: + def __getattr__(self, name): + return getattr(self._wrapped, name) + + def __setattr__(self, name, value): + return setattr(self._wrapped, name, value) + + def wrapper_getattr(self, name): + """Actual `self.getattr` rather than self._wrapped.getattr""" + try: + return object.__getattr__(self, name) + except AttributeError: # py2 + return getattr(self, name) + + def wrapper_setattr(self, name, value): + """Actual `self.setattr` rather than self._wrapped.setattr""" + return object.__setattr__(self, name, value) + + def __init__(self, wrapped): + """ + Thin wrapper around a given object + """ + self.wrapper_setattr('_wrapped', wrapped) + + +class SimpleTextIOWrapper(ObjectWrapper): + """ + Change only `.write()` of the wrapped object by encoding the passed + value and passing the result to the wrapped object's `.write()` method. + """ + # pylint: disable=too-few-public-methods + def __init__(self, wrapped, encoding): + super().__init__(wrapped) + self.wrapper_setattr('encoding', encoding) + + def write(self, s): + """ + Encode `s` and pass to the wrapped object's `.write()` method. + """ + return self._wrapped.write(s.encode(self.wrapper_getattr('encoding'))) + + def __eq__(self, other): + return self._wrapped == getattr(other, '_wrapped', other) + + +class DisableOnWriteError(ObjectWrapper): + """ + Disable the given `tqdm_instance` upon `write()` or `flush()` errors. + """ + @staticmethod + def disable_on_exception(tqdm_instance, func): + """ + Quietly set `tqdm_instance.miniters=inf` if `func` raises `errno=5`. + """ + tqdm_instance = proxy(tqdm_instance) + + def inner(*args, **kwargs): + try: + return func(*args, **kwargs) + except OSError as e: + if e.errno != 5: + raise + try: + tqdm_instance.miniters = float('inf') + except ReferenceError: + pass + except ValueError as e: + if 'closed' not in str(e): + raise + try: + tqdm_instance.miniters = float('inf') + except ReferenceError: + pass + return inner + + def __init__(self, wrapped, tqdm_instance): # noqa: B042 + super().__init__(wrapped) + if hasattr(wrapped, 'write'): + self.wrapper_setattr( + 'write', self.disable_on_exception(tqdm_instance, wrapped.write)) + if hasattr(wrapped, 'flush'): + self.wrapper_setattr( + 'flush', self.disable_on_exception(tqdm_instance, wrapped.flush)) + + def __eq__(self, other): + return self._wrapped == getattr(other, '_wrapped', other) + + +class CallbackIOWrapper(ObjectWrapper): + def __init__(self, callback, stream, method="read"): + """ + Wrap a given `file`-like object's `read()` or `write()` to report + lengths to the given `callback` + """ + super().__init__(stream) + func = getattr(stream, method) + if method == "write": + @wraps(func) + def write(data, *args, **kwargs): + res = func(data, *args, **kwargs) + callback(len(data)) + return res + self.wrapper_setattr('write', write) + elif method == "read": + @wraps(func) + def read(*args, **kwargs): + data = func(*args, **kwargs) + callback(len(data)) + return data + self.wrapper_setattr('read', read) + else: + raise KeyError("Can only wrap read/write methods") + + +def _is_utf(encoding): + try: + '\u2588\u2589'.encode(encoding) + except UnicodeEncodeError: + return False + except Exception: + try: + return encoding.lower().startswith('utf-') or ('U8' == encoding) + except Exception: + return False + else: + return True + + +def _supports_unicode(fp): + try: + return _is_utf(fp.encoding) + except AttributeError: + return False + + +def _is_ascii(s): + if isinstance(s, str): + for c in s: + if ord(c) > 255: + return False + return True + return _supports_unicode(s) + + +def _screen_shape_wrapper(): # pragma: no cover + """ + Return a function which returns console dimensions (width, height). + Supported: linux, osx, windows, cygwin. + """ + def inner(fp): + try: + from os import get_terminal_size + cols, lines = get_terminal_size(getattr(fp, 'fileno', lambda: None)()) + return cols - 1, lines - 1 + except Exception: + return None, None + + return inner + + +def _environ_cols_wrapper(): # pragma: no cover + """ + Return a function which returns console width. + Supported: linux, osx, windows, cygwin. + """ + warn("Use `_screen_shape_wrapper()(file)[0]` instead of" + " `_environ_cols_wrapper()(file)`", DeprecationWarning, stacklevel=2) + shape = _screen_shape_wrapper() + if not shape: + return None + + @wraps(shape) + def inner(fp): + return shape(fp)[0] + + return inner + + +def _term_move_up(): # pragma: no cover + return '' if (os.name == 'nt') and (colorama is None) else '\x1b[A' + + +def _text_width(s): + return sum(2 if east_asian_width(ch) in 'FW' else 1 for ch in str(s)) + + +def disp_len(data): + """ + Returns the real on-screen length of a string which may contain + ANSI control codes and wide chars. + """ + return _text_width(RE_ANSI.sub('', data)) + + +def disp_trim(data, length): + """ + Trim a string which may contain ANSI control characters. + """ + if len(data) == disp_len(data): + return data[:length] + + ansi_present = bool(RE_ANSI.search(data)) + while disp_len(data) > length: # carefully delete one char at a time + data = data[:-1] + if ansi_present and bool(RE_ANSI.search(data)): + # assume ANSI reset is required + return data if data.endswith("\033[0m") else data + "\033[0m" + return data diff --git a/outputs/audit_venv/lib/python3.11/site-packages/tqdm/version.py b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/version.py new file mode 100644 index 0000000000000000000000000000000000000000..84739ef244b0504c9705b40b72f7f229584b24ca --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/tqdm/version.py @@ -0,0 +1,7 @@ +"""`tqdm` version detector. Precedence: installed dist, git, 'UNKNOWN'.""" +from importlib.metadata import PackageNotFoundError, version + +try: + __version__ = version('tqdm') +except PackageNotFoundError: + __version__ = "UNKNOWN" diff --git a/outputs/audit_venv/lib/python3.11/site-packages/typing_extensions-4.15.0+computecanada.dist-info/INSTALLER b/outputs/audit_venv/lib/python3.11/site-packages/typing_extensions-4.15.0+computecanada.dist-info/INSTALLER new file mode 100644 index 0000000000000000000000000000000000000000..a1b589e38a32041e49332e5e81c2d363dc418d68 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/typing_extensions-4.15.0+computecanada.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/outputs/audit_venv/lib/python3.11/site-packages/typing_extensions-4.15.0+computecanada.dist-info/METADATA b/outputs/audit_venv/lib/python3.11/site-packages/typing_extensions-4.15.0+computecanada.dist-info/METADATA new file mode 100644 index 0000000000000000000000000000000000000000..e4e4de4130f9470a3e118075ad8c3fb64e482b08 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/typing_extensions-4.15.0+computecanada.dist-info/METADATA @@ -0,0 +1,72 @@ +Metadata-Version: 2.2 +Name: typing_extensions +Version: 4.15.0+computecanada +Summary: Backported and Experimental Type Hints for Python 3.9+ +Description-Content-Type: text/markdown +Keywords: annotations,backport,checker,checking,function,hinting,hints,type,typechecking,typehinting,typehints,typing +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Console +Classifier: Intended Audience :: Developers +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3 :: Only +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 +Classifier: Programming Language :: Python :: 3.14 +Classifier: Topic :: Software Development +Author-email: "Guido van Rossum, Jukka Lehtosalo, Łukasz Langa, Michael Lee" +Project-URL: Bug Tracker, https://github.com/python/typing_extensions/issues +Project-URL: Changes, https://github.com/python/typing_extensions/blob/main/CHANGELOG.md +Project-URL: Documentation, https://typing-extensions.readthedocs.io/ +Project-URL: Home, https://github.com/python/typing_extensions +Project-URL: Q & A, https://github.com/python/typing/discussions +Project-URL: Repository, https://github.com/python/typing_extensions +Requires-Python: >=3.9 +License-File: LICENSE +License-Expression: PSF-2.0 + +# Typing Extensions + +[![Chat at https://gitter.im/python/typing](https://badges.gitter.im/python/typing.svg)](https://gitter.im/python/typing) + +[Documentation](https://typing-extensions.readthedocs.io/en/latest/#) – +[PyPI](https://pypi.org/project/typing-extensions/) + +## Overview + +The `typing_extensions` module serves two related purposes: + +- Enable use of new type system features on older Python versions. For example, + `typing.TypeGuard` is new in Python 3.10, but `typing_extensions` allows + users on previous Python versions to use it too. +- Enable experimentation with new type system PEPs before they are accepted and + added to the `typing` module. + +`typing_extensions` is treated specially by static type checkers such as +mypy and pyright. Objects defined in `typing_extensions` are treated the same +way as equivalent forms in `typing`. + +`typing_extensions` uses +[Semantic Versioning](https://semver.org/). The +major version will be incremented only for backwards-incompatible changes. +Therefore, it's safe to depend +on `typing_extensions` like this: `typing_extensions ~=x.y`, +where `x.y` is the first version that includes all features you need. +[This](https://packaging.python.org/en/latest/specifications/version-specifiers/#compatible-release) +is equivalent to `typing_extensions >=x.y, <(x+1)`. Do not depend on `~= x.y.z` +unless you really know what you're doing; that defeats the purpose of +semantic versioning. + +## Included items + +See [the documentation](https://typing-extensions.readthedocs.io/en/latest/#) for a +complete listing of module contents. + +## Contributing + +See [CONTRIBUTING.md](https://github.com/python/typing_extensions/blob/main/CONTRIBUTING.md) +for how to contribute to `typing_extensions`. + diff --git a/outputs/audit_venv/lib/python3.11/site-packages/typing_extensions-4.15.0+computecanada.dist-info/RECORD b/outputs/audit_venv/lib/python3.11/site-packages/typing_extensions-4.15.0+computecanada.dist-info/RECORD new file mode 100644 index 0000000000000000000000000000000000000000..c61c855afdcaad4bd06324353fda0ce26550f355 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/typing_extensions-4.15.0+computecanada.dist-info/RECORD @@ -0,0 +1,7 @@ +__pycache__/typing_extensions.cpython-311.pyc,, +typing_extensions-4.15.0+computecanada.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +typing_extensions-4.15.0+computecanada.dist-info/METADATA,sha256=3v-L4fagxmgPPGdJ6e2ga1E9sy_PU0xi0p727_-Fq_0,3273 +typing_extensions-4.15.0+computecanada.dist-info/RECORD,, +typing_extensions-4.15.0+computecanada.dist-info/WHEEL,sha256=E4Ta9GSW8Vg2e11uZktRc054ObD9JXJ5hm6vpxg0WJE,87 +typing_extensions-4.15.0+computecanada.dist-info/licenses/LICENSE,sha256=Oy-B_iHRgcSZxZolbI4ZaEVdZonSaaqFNzv7avQdo78,13936 +typing_extensions.py,sha256=Qz0R0XDTok0usGXrwb_oSM6n49fOaFZ6tSvqLUwvftg,160429 diff --git a/outputs/audit_venv/lib/python3.11/site-packages/typing_extensions-4.15.0+computecanada.dist-info/WHEEL b/outputs/audit_venv/lib/python3.11/site-packages/typing_extensions-4.15.0+computecanada.dist-info/WHEEL new file mode 100644 index 0000000000000000000000000000000000000000..b270261c9bb44553b2f648368d1bf5cb7baf8416 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/typing_extensions-4.15.0+computecanada.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: wheelfile 0.0.8 +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/outputs/audit_venv/lib/python3.11/site-packages/typing_extensions-4.15.0+computecanada.dist-info/licenses/LICENSE b/outputs/audit_venv/lib/python3.11/site-packages/typing_extensions-4.15.0+computecanada.dist-info/licenses/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..f26bcf4d2de6eb136e31006ca3ab447d5e488adf --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/typing_extensions-4.15.0+computecanada.dist-info/licenses/LICENSE @@ -0,0 +1,279 @@ +A. HISTORY OF THE SOFTWARE +========================== + +Python was created in the early 1990s by Guido van Rossum at Stichting +Mathematisch Centrum (CWI, see https://www.cwi.nl) in the Netherlands +as a successor of a language called ABC. Guido remains Python's +principal author, although it includes many contributions from others. + +In 1995, Guido continued his work on Python at the Corporation for +National Research Initiatives (CNRI, see https://www.cnri.reston.va.us) +in Reston, Virginia where he released several versions of the +software. + +In May 2000, Guido and the Python core development team moved to +BeOpen.com to form the BeOpen PythonLabs team. In October of the same +year, the PythonLabs team moved to Digital Creations, which became +Zope Corporation. In 2001, the Python Software Foundation (PSF, see +https://www.python.org/psf/) was formed, a non-profit organization +created specifically to own Python-related Intellectual Property. +Zope Corporation was a sponsoring member of the PSF. + +All Python releases are Open Source (see https://opensource.org for +the Open Source Definition). Historically, most, but not all, Python +releases have also been GPL-compatible; the table below summarizes +the various releases. + + Release Derived Year Owner GPL- + from compatible? (1) + + 0.9.0 thru 1.2 1991-1995 CWI yes + 1.3 thru 1.5.2 1.2 1995-1999 CNRI yes + 1.6 1.5.2 2000 CNRI no + 2.0 1.6 2000 BeOpen.com no + 1.6.1 1.6 2001 CNRI yes (2) + 2.1 2.0+1.6.1 2001 PSF no + 2.0.1 2.0+1.6.1 2001 PSF yes + 2.1.1 2.1+2.0.1 2001 PSF yes + 2.1.2 2.1.1 2002 PSF yes + 2.1.3 2.1.2 2002 PSF yes + 2.2 and above 2.1.1 2001-now PSF yes + +Footnotes: + +(1) GPL-compatible doesn't mean that we're distributing Python under + the GPL. All Python licenses, unlike the GPL, let you distribute + a modified version without making your changes open source. The + GPL-compatible licenses make it possible to combine Python with + other software that is released under the GPL; the others don't. + +(2) According to Richard Stallman, 1.6.1 is not GPL-compatible, + because its license has a choice of law clause. According to + CNRI, however, Stallman's lawyer has told CNRI's lawyer that 1.6.1 + is "not incompatible" with the GPL. + +Thanks to the many outside volunteers who have worked under Guido's +direction to make these releases possible. + + +B. TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING PYTHON +=============================================================== + +Python software and documentation are licensed under the +Python Software Foundation License Version 2. + +Starting with Python 3.8.6, examples, recipes, and other code in +the documentation are dual licensed under the PSF License Version 2 +and the Zero-Clause BSD license. + +Some software incorporated into Python is under different licenses. +The licenses are listed with code falling under that license. + + +PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 +-------------------------------------------- + +1. This LICENSE AGREEMENT is between the Python Software Foundation +("PSF"), and the Individual or Organization ("Licensee") accessing and +otherwise using this software ("Python") in source or binary form and +its associated documentation. + +2. Subject to the terms and conditions of this License Agreement, PSF hereby +grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, +analyze, test, perform and/or display publicly, prepare derivative works, +distribute, and otherwise use Python alone or in any derivative version, +provided, however, that PSF's License Agreement and PSF's notice of copyright, +i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Python Software Foundation; +All Rights Reserved" are retained in Python alone or in any derivative version +prepared by Licensee. + +3. In the event Licensee prepares a derivative work that is based on +or incorporates Python or any part thereof, and wants to make +the derivative work available to others as provided herein, then +Licensee hereby agrees to include in any such work a brief summary of +the changes made to Python. + +4. PSF is making Python available to Licensee on an "AS IS" +basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON +FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS +A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, +OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +6. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +7. Nothing in this License Agreement shall be deemed to create any +relationship of agency, partnership, or joint venture between PSF and +Licensee. This License Agreement does not grant permission to use PSF +trademarks or trade name in a trademark sense to endorse or promote +products or services of Licensee, or any third party. + +8. By copying, installing or otherwise using Python, Licensee +agrees to be bound by the terms and conditions of this License +Agreement. + + +BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0 +------------------------------------------- + +BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1 + +1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an +office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the +Individual or Organization ("Licensee") accessing and otherwise using +this software in source or binary form and its associated +documentation ("the Software"). + +2. Subject to the terms and conditions of this BeOpen Python License +Agreement, BeOpen hereby grants Licensee a non-exclusive, +royalty-free, world-wide license to reproduce, analyze, test, perform +and/or display publicly, prepare derivative works, distribute, and +otherwise use the Software alone or in any derivative version, +provided, however, that the BeOpen Python License is retained in the +Software, alone or in any derivative version prepared by Licensee. + +3. BeOpen is making the Software available to Licensee on an "AS IS" +basis. BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE +SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS +AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY +DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +5. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +6. This License Agreement shall be governed by and interpreted in all +respects by the law of the State of California, excluding conflict of +law provisions. Nothing in this License Agreement shall be deemed to +create any relationship of agency, partnership, or joint venture +between BeOpen and Licensee. This License Agreement does not grant +permission to use BeOpen trademarks or trade names in a trademark +sense to endorse or promote products or services of Licensee, or any +third party. As an exception, the "BeOpen Python" logos available at +http://www.pythonlabs.com/logos.html may be used according to the +permissions granted on that web page. + +7. By copying, installing or otherwise using the software, Licensee +agrees to be bound by the terms and conditions of this License +Agreement. + + +CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1 +--------------------------------------- + +1. This LICENSE AGREEMENT is between the Corporation for National +Research Initiatives, having an office at 1895 Preston White Drive, +Reston, VA 20191 ("CNRI"), and the Individual or Organization +("Licensee") accessing and otherwise using Python 1.6.1 software in +source or binary form and its associated documentation. + +2. Subject to the terms and conditions of this License Agreement, CNRI +hereby grants Licensee a nonexclusive, royalty-free, world-wide +license to reproduce, analyze, test, perform and/or display publicly, +prepare derivative works, distribute, and otherwise use Python 1.6.1 +alone or in any derivative version, provided, however, that CNRI's +License Agreement and CNRI's notice of copyright, i.e., "Copyright (c) +1995-2001 Corporation for National Research Initiatives; All Rights +Reserved" are retained in Python 1.6.1 alone or in any derivative +version prepared by Licensee. Alternately, in lieu of CNRI's License +Agreement, Licensee may substitute the following text (omitting the +quotes): "Python 1.6.1 is made available subject to the terms and +conditions in CNRI's License Agreement. This Agreement together with +Python 1.6.1 may be located on the internet using the following +unique, persistent identifier (known as a handle): 1895.22/1013. This +Agreement may also be obtained from a proxy server on the internet +using the following URL: http://hdl.handle.net/1895.22/1013". + +3. In the event Licensee prepares a derivative work that is based on +or incorporates Python 1.6.1 or any part thereof, and wants to make +the derivative work available to others as provided herein, then +Licensee hereby agrees to include in any such work a brief summary of +the changes made to Python 1.6.1. + +4. CNRI is making Python 1.6.1 available to Licensee on an "AS IS" +basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6.1 WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON +1.6.1 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS +A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1, +OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +6. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +7. This License Agreement shall be governed by the federal +intellectual property law of the United States, including without +limitation the federal copyright law, and, to the extent such +U.S. federal law does not apply, by the law of the Commonwealth of +Virginia, excluding Virginia's conflict of law provisions. +Notwithstanding the foregoing, with regard to derivative works based +on Python 1.6.1 that incorporate non-separable material that was +previously distributed under the GNU General Public License (GPL), the +law of the Commonwealth of Virginia shall govern this License +Agreement only as to issues arising under or with respect to +Paragraphs 4, 5, and 7 of this License Agreement. Nothing in this +License Agreement shall be deemed to create any relationship of +agency, partnership, or joint venture between CNRI and Licensee. This +License Agreement does not grant permission to use CNRI trademarks or +trade name in a trademark sense to endorse or promote products or +services of Licensee, or any third party. + +8. By clicking on the "ACCEPT" button where indicated, or by copying, +installing or otherwise using Python 1.6.1, Licensee agrees to be +bound by the terms and conditions of this License Agreement. + + ACCEPT + + +CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2 +-------------------------------------------------- + +Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, +The Netherlands. All rights reserved. + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Stichting Mathematisch +Centrum or CWI not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior +permission. + +STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO +THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE +FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +ZERO-CLAUSE BSD LICENSE FOR CODE IN THE PYTHON DOCUMENTATION +---------------------------------------------------------------------- + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. diff --git a/outputs/audit_venv/lib/python3.11/site-packages/typing_extensions.py b/outputs/audit_venv/lib/python3.11/site-packages/typing_extensions.py new file mode 100644 index 0000000000000000000000000000000000000000..77f33e1614fd7d46ccd66b394d6c5d663bf8a8c6 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/typing_extensions.py @@ -0,0 +1,4317 @@ +import abc +import builtins +import collections +import collections.abc +import contextlib +import enum +import functools +import inspect +import io +import keyword +import operator +import sys +import types as _types +import typing +import warnings + +# Breakpoint: https://github.com/python/cpython/pull/119891 +if sys.version_info >= (3, 14): + import annotationlib + +__all__ = [ + # Super-special typing primitives. + 'Any', + 'ClassVar', + 'Concatenate', + 'Final', + 'LiteralString', + 'ParamSpec', + 'ParamSpecArgs', + 'ParamSpecKwargs', + 'Self', + 'Type', + 'TypeVar', + 'TypeVarTuple', + 'Unpack', + + # ABCs (from collections.abc). + 'Awaitable', + 'AsyncIterator', + 'AsyncIterable', + 'Coroutine', + 'AsyncGenerator', + 'AsyncContextManager', + 'Buffer', + 'ChainMap', + + # Concrete collection types. + 'ContextManager', + 'Counter', + 'Deque', + 'DefaultDict', + 'NamedTuple', + 'OrderedDict', + 'TypedDict', + + # Structural checks, a.k.a. protocols. + 'SupportsAbs', + 'SupportsBytes', + 'SupportsComplex', + 'SupportsFloat', + 'SupportsIndex', + 'SupportsInt', + 'SupportsRound', + 'Reader', + 'Writer', + + # One-off things. + 'Annotated', + 'assert_never', + 'assert_type', + 'clear_overloads', + 'dataclass_transform', + 'deprecated', + 'disjoint_base', + 'Doc', + 'evaluate_forward_ref', + 'get_overloads', + 'final', + 'Format', + 'get_annotations', + 'get_args', + 'get_origin', + 'get_original_bases', + 'get_protocol_members', + 'get_type_hints', + 'IntVar', + 'is_protocol', + 'is_typeddict', + 'Literal', + 'NewType', + 'overload', + 'override', + 'Protocol', + 'Sentinel', + 'reveal_type', + 'runtime', + 'runtime_checkable', + 'Text', + 'TypeAlias', + 'TypeAliasType', + 'TypeForm', + 'TypeGuard', + 'TypeIs', + 'TYPE_CHECKING', + 'type_repr', + 'Never', + 'NoReturn', + 'ReadOnly', + 'Required', + 'NotRequired', + 'NoDefault', + 'NoExtraItems', + + # Pure aliases, have always been in typing + 'AbstractSet', + 'AnyStr', + 'BinaryIO', + 'Callable', + 'Collection', + 'Container', + 'Dict', + 'ForwardRef', + 'FrozenSet', + 'Generator', + 'Generic', + 'Hashable', + 'IO', + 'ItemsView', + 'Iterable', + 'Iterator', + 'KeysView', + 'List', + 'Mapping', + 'MappingView', + 'Match', + 'MutableMapping', + 'MutableSequence', + 'MutableSet', + 'Optional', + 'Pattern', + 'Reversible', + 'Sequence', + 'Set', + 'Sized', + 'TextIO', + 'Tuple', + 'Union', + 'ValuesView', + 'cast', + 'no_type_check', + 'no_type_check_decorator', +] + +# for backward compatibility +PEP_560 = True +GenericMeta = type +# Breakpoint: https://github.com/python/cpython/pull/116129 +_PEP_696_IMPLEMENTED = sys.version_info >= (3, 13, 0, "beta") + +# Added with bpo-45166 to 3.10.1+ and some 3.9 versions +_FORWARD_REF_HAS_CLASS = "__forward_is_class__" in typing.ForwardRef.__slots__ + +# The functions below are modified copies of typing internal helpers. +# They are needed by _ProtocolMeta and they provide support for PEP 646. + + +class _Sentinel: + def __repr__(self): + return "" + + +_marker = _Sentinel() + + +# Breakpoint: https://github.com/python/cpython/pull/27342 +if sys.version_info >= (3, 10): + def _should_collect_from_parameters(t): + return isinstance( + t, (typing._GenericAlias, _types.GenericAlias, _types.UnionType) + ) +else: + def _should_collect_from_parameters(t): + return isinstance(t, (typing._GenericAlias, _types.GenericAlias)) + + +NoReturn = typing.NoReturn + +# Some unconstrained type variables. These are used by the container types. +# (These are not for export.) +T = typing.TypeVar('T') # Any type. +KT = typing.TypeVar('KT') # Key type. +VT = typing.TypeVar('VT') # Value type. +T_co = typing.TypeVar('T_co', covariant=True) # Any type covariant containers. +T_contra = typing.TypeVar('T_contra', contravariant=True) # Ditto contravariant. + + +# Breakpoint: https://github.com/python/cpython/pull/31841 +if sys.version_info >= (3, 11): + from typing import Any +else: + + class _AnyMeta(type): + def __instancecheck__(self, obj): + if self is Any: + raise TypeError("typing_extensions.Any cannot be used with isinstance()") + return super().__instancecheck__(obj) + + def __repr__(self): + if self is Any: + return "typing_extensions.Any" + return super().__repr__() + + class Any(metaclass=_AnyMeta): + """Special type indicating an unconstrained type. + - Any is compatible with every type. + - Any assumed to have all methods. + - All values assumed to be instances of Any. + Note that all the above statements are true from the point of view of + static type checkers. At runtime, Any should not be used with instance + checks. + """ + def __new__(cls, *args, **kwargs): + if cls is Any: + raise TypeError("Any cannot be instantiated") + return super().__new__(cls, *args, **kwargs) + + +ClassVar = typing.ClassVar + +# Vendored from cpython typing._SpecialFrom +# Having a separate class means that instances will not be rejected by +# typing._type_check. +class _SpecialForm(typing._Final, _root=True): + __slots__ = ('_name', '__doc__', '_getitem') + + def __init__(self, getitem): + self._getitem = getitem + self._name = getitem.__name__ + self.__doc__ = getitem.__doc__ + + def __getattr__(self, item): + if item in {'__name__', '__qualname__'}: + return self._name + + raise AttributeError(item) + + def __mro_entries__(self, bases): + raise TypeError(f"Cannot subclass {self!r}") + + def __repr__(self): + return f'typing_extensions.{self._name}' + + def __reduce__(self): + return self._name + + def __call__(self, *args, **kwds): + raise TypeError(f"Cannot instantiate {self!r}") + + def __or__(self, other): + return typing.Union[self, other] + + def __ror__(self, other): + return typing.Union[other, self] + + def __instancecheck__(self, obj): + raise TypeError(f"{self} cannot be used with isinstance()") + + def __subclasscheck__(self, cls): + raise TypeError(f"{self} cannot be used with issubclass()") + + @typing._tp_cache + def __getitem__(self, parameters): + return self._getitem(self, parameters) + + +# Note that inheriting from this class means that the object will be +# rejected by typing._type_check, so do not use it if the special form +# is arguably valid as a type by itself. +class _ExtensionsSpecialForm(typing._SpecialForm, _root=True): + def __repr__(self): + return 'typing_extensions.' + self._name + + +Final = typing.Final + +# Breakpoint: https://github.com/python/cpython/pull/30530 +if sys.version_info >= (3, 11): + final = typing.final +else: + # @final exists in 3.8+, but we backport it for all versions + # before 3.11 to keep support for the __final__ attribute. + # See https://bugs.python.org/issue46342 + def final(f): + """This decorator can be used to indicate to type checkers that + the decorated method cannot be overridden, and decorated class + cannot be subclassed. For example: + + class Base: + @final + def done(self) -> None: + ... + class Sub(Base): + def done(self) -> None: # Error reported by type checker + ... + @final + class Leaf: + ... + class Other(Leaf): # Error reported by type checker + ... + + There is no runtime checking of these properties. The decorator + sets the ``__final__`` attribute to ``True`` on the decorated object + to allow runtime introspection. + """ + try: + f.__final__ = True + except (AttributeError, TypeError): + # Skip the attribute silently if it is not writable. + # AttributeError happens if the object has __slots__ or a + # read-only property, TypeError if it's a builtin class. + pass + return f + + +if hasattr(typing, "disjoint_base"): # 3.15 + disjoint_base = typing.disjoint_base +else: + def disjoint_base(cls): + """This decorator marks a class as a disjoint base. + + Child classes of a disjoint base cannot inherit from other disjoint bases that are + not parent classes of the disjoint base. + + For example: + + @disjoint_base + class Disjoint1: pass + + @disjoint_base + class Disjoint2: pass + + class Disjoint3(Disjoint1, Disjoint2): pass # Type checker error + + Type checkers can use knowledge of disjoint bases to detect unreachable code + and determine when two types can overlap. + + See PEP 800.""" + cls.__disjoint_base__ = True + return cls + + +def IntVar(name): + return typing.TypeVar(name) + + +# A Literal bug was fixed in 3.11.0, 3.10.1 and 3.9.8 +# Breakpoint: https://github.com/python/cpython/pull/29334 +if sys.version_info >= (3, 10, 1): + Literal = typing.Literal +else: + def _flatten_literal_params(parameters): + """An internal helper for Literal creation: flatten Literals among parameters""" + params = [] + for p in parameters: + if isinstance(p, _LiteralGenericAlias): + params.extend(p.__args__) + else: + params.append(p) + return tuple(params) + + def _value_and_type_iter(params): + for p in params: + yield p, type(p) + + class _LiteralGenericAlias(typing._GenericAlias, _root=True): + def __eq__(self, other): + if not isinstance(other, _LiteralGenericAlias): + return NotImplemented + these_args_deduped = set(_value_and_type_iter(self.__args__)) + other_args_deduped = set(_value_and_type_iter(other.__args__)) + return these_args_deduped == other_args_deduped + + def __hash__(self): + return hash(frozenset(_value_and_type_iter(self.__args__))) + + class _LiteralForm(_ExtensionsSpecialForm, _root=True): + def __init__(self, doc: str): + self._name = 'Literal' + self._doc = self.__doc__ = doc + + def __getitem__(self, parameters): + if not isinstance(parameters, tuple): + parameters = (parameters,) + + parameters = _flatten_literal_params(parameters) + + val_type_pairs = list(_value_and_type_iter(parameters)) + try: + deduped_pairs = set(val_type_pairs) + except TypeError: + # unhashable parameters + pass + else: + # similar logic to typing._deduplicate on Python 3.9+ + if len(deduped_pairs) < len(val_type_pairs): + new_parameters = [] + for pair in val_type_pairs: + if pair in deduped_pairs: + new_parameters.append(pair[0]) + deduped_pairs.remove(pair) + assert not deduped_pairs, deduped_pairs + parameters = tuple(new_parameters) + + return _LiteralGenericAlias(self, parameters) + + Literal = _LiteralForm(doc="""\ + A type that can be used to indicate to type checkers + that the corresponding value has a value literally equivalent + to the provided parameter. For example: + + var: Literal[4] = 4 + + The type checker understands that 'var' is literally equal to + the value 4 and no other value. + + Literal[...] cannot be subclassed. There is no runtime + checking verifying that the parameter is actually a value + instead of a type.""") + + +_overload_dummy = typing._overload_dummy + + +if hasattr(typing, "get_overloads"): # 3.11+ + overload = typing.overload + get_overloads = typing.get_overloads + clear_overloads = typing.clear_overloads +else: + # {module: {qualname: {firstlineno: func}}} + _overload_registry = collections.defaultdict( + functools.partial(collections.defaultdict, dict) + ) + + def overload(func): + """Decorator for overloaded functions/methods. + + In a stub file, place two or more stub definitions for the same + function in a row, each decorated with @overload. For example: + + @overload + def utf8(value: None) -> None: ... + @overload + def utf8(value: bytes) -> bytes: ... + @overload + def utf8(value: str) -> bytes: ... + + In a non-stub file (i.e. a regular .py file), do the same but + follow it with an implementation. The implementation should *not* + be decorated with @overload. For example: + + @overload + def utf8(value: None) -> None: ... + @overload + def utf8(value: bytes) -> bytes: ... + @overload + def utf8(value: str) -> bytes: ... + def utf8(value): + # implementation goes here + + The overloads for a function can be retrieved at runtime using the + get_overloads() function. + """ + # classmethod and staticmethod + f = getattr(func, "__func__", func) + try: + _overload_registry[f.__module__][f.__qualname__][ + f.__code__.co_firstlineno + ] = func + except AttributeError: + # Not a normal function; ignore. + pass + return _overload_dummy + + def get_overloads(func): + """Return all defined overloads for *func* as a sequence.""" + # classmethod and staticmethod + f = getattr(func, "__func__", func) + if f.__module__ not in _overload_registry: + return [] + mod_dict = _overload_registry[f.__module__] + if f.__qualname__ not in mod_dict: + return [] + return list(mod_dict[f.__qualname__].values()) + + def clear_overloads(): + """Clear all overloads in the registry.""" + _overload_registry.clear() + + +# This is not a real generic class. Don't use outside annotations. +Type = typing.Type + +# Various ABCs mimicking those in collections.abc. +# A few are simply re-exported for completeness. +Awaitable = typing.Awaitable +Coroutine = typing.Coroutine +AsyncIterable = typing.AsyncIterable +AsyncIterator = typing.AsyncIterator +Deque = typing.Deque +DefaultDict = typing.DefaultDict +OrderedDict = typing.OrderedDict +Counter = typing.Counter +ChainMap = typing.ChainMap +Text = typing.Text +TYPE_CHECKING = typing.TYPE_CHECKING + + +# Breakpoint: https://github.com/python/cpython/pull/118681 +if sys.version_info >= (3, 13, 0, "beta"): + from typing import AsyncContextManager, AsyncGenerator, ContextManager, Generator +else: + def _is_dunder(attr): + return attr.startswith('__') and attr.endswith('__') + + + class _SpecialGenericAlias(typing._SpecialGenericAlias, _root=True): + def __init__(self, origin, nparams, *, inst=True, name=None, defaults=()): + super().__init__(origin, nparams, inst=inst, name=name) + self._defaults = defaults + + def __setattr__(self, attr, val): + allowed_attrs = {'_name', '_inst', '_nparams', '_defaults'} + if _is_dunder(attr) or attr in allowed_attrs: + object.__setattr__(self, attr, val) + else: + setattr(self.__origin__, attr, val) + + @typing._tp_cache + def __getitem__(self, params): + if not isinstance(params, tuple): + params = (params,) + msg = "Parameters to generic types must be types." + params = tuple(typing._type_check(p, msg) for p in params) + if ( + self._defaults + and len(params) < self._nparams + and len(params) + len(self._defaults) >= self._nparams + ): + params = (*params, *self._defaults[len(params) - self._nparams:]) + actual_len = len(params) + + if actual_len != self._nparams: + if self._defaults: + expected = f"at least {self._nparams - len(self._defaults)}" + else: + expected = str(self._nparams) + if not self._nparams: + raise TypeError(f"{self} is not a generic class") + raise TypeError( + f"Too {'many' if actual_len > self._nparams else 'few'}" + f" arguments for {self};" + f" actual {actual_len}, expected {expected}" + ) + return self.copy_with(params) + + _NoneType = type(None) + Generator = _SpecialGenericAlias( + collections.abc.Generator, 3, defaults=(_NoneType, _NoneType) + ) + AsyncGenerator = _SpecialGenericAlias( + collections.abc.AsyncGenerator, 2, defaults=(_NoneType,) + ) + ContextManager = _SpecialGenericAlias( + contextlib.AbstractContextManager, + 2, + name="ContextManager", + defaults=(typing.Optional[bool],) + ) + AsyncContextManager = _SpecialGenericAlias( + contextlib.AbstractAsyncContextManager, + 2, + name="AsyncContextManager", + defaults=(typing.Optional[bool],) + ) + + +_PROTO_ALLOWLIST = { + 'collections.abc': [ + 'Callable', 'Awaitable', 'Iterable', 'Iterator', 'AsyncIterable', + 'Hashable', 'Sized', 'Container', 'Collection', 'Reversible', 'Buffer', + ], + 'contextlib': ['AbstractContextManager', 'AbstractAsyncContextManager'], + 'typing_extensions': ['Buffer'], +} + + +_EXCLUDED_ATTRS = frozenset(typing.EXCLUDED_ATTRIBUTES) | { + "__match_args__", "__protocol_attrs__", "__non_callable_proto_members__", + "__final__", +} + + +def _get_protocol_attrs(cls): + attrs = set() + for base in cls.__mro__[:-1]: # without object + if base.__name__ in {'Protocol', 'Generic'}: + continue + annotations = getattr(base, '__annotations__', {}) + for attr in (*base.__dict__, *annotations): + if (not attr.startswith('_abc_') and attr not in _EXCLUDED_ATTRS): + attrs.add(attr) + return attrs + + +def _caller(depth=1, default='__main__'): + try: + return sys._getframemodulename(depth + 1) or default + except AttributeError: # For platforms without _getframemodulename() + pass + try: + return sys._getframe(depth + 1).f_globals.get('__name__', default) + except (AttributeError, ValueError): # For platforms without _getframe() + pass + return None + + +# `__match_args__` attribute was removed from protocol members in 3.13, +# we want to backport this change to older Python versions. +# Breakpoint: https://github.com/python/cpython/pull/110683 +if sys.version_info >= (3, 13): + Protocol = typing.Protocol +else: + def _allow_reckless_class_checks(depth=2): + """Allow instance and class checks for special stdlib modules. + The abc and functools modules indiscriminately call isinstance() and + issubclass() on the whole MRO of a user class, which may contain protocols. + """ + return _caller(depth) in {'abc', 'functools', None} + + def _no_init(self, *args, **kwargs): + if type(self)._is_protocol: + raise TypeError('Protocols cannot be instantiated') + + def _type_check_issubclass_arg_1(arg): + """Raise TypeError if `arg` is not an instance of `type` + in `issubclass(arg, )`. + + In most cases, this is verified by type.__subclasscheck__. + Checking it again unnecessarily would slow down issubclass() checks, + so, we don't perform this check unless we absolutely have to. + + For various error paths, however, + we want to ensure that *this* error message is shown to the user + where relevant, rather than a typing.py-specific error message. + """ + if not isinstance(arg, type): + # Same error message as for issubclass(1, int). + raise TypeError('issubclass() arg 1 must be a class') + + # Inheriting from typing._ProtocolMeta isn't actually desirable, + # but is necessary to allow typing.Protocol and typing_extensions.Protocol + # to mix without getting TypeErrors about "metaclass conflict" + class _ProtocolMeta(type(typing.Protocol)): + # This metaclass is somewhat unfortunate, + # but is necessary for several reasons... + # + # NOTE: DO NOT call super() in any methods in this class + # That would call the methods on typing._ProtocolMeta on Python <=3.11 + # and those are slow + def __new__(mcls, name, bases, namespace, **kwargs): + if name == "Protocol" and len(bases) < 2: + pass + elif {Protocol, typing.Protocol} & set(bases): + for base in bases: + if not ( + base in {object, typing.Generic, Protocol, typing.Protocol} + or base.__name__ in _PROTO_ALLOWLIST.get(base.__module__, []) + or is_protocol(base) + ): + raise TypeError( + f"Protocols can only inherit from other protocols, " + f"got {base!r}" + ) + return abc.ABCMeta.__new__(mcls, name, bases, namespace, **kwargs) + + def __init__(cls, *args, **kwargs): + abc.ABCMeta.__init__(cls, *args, **kwargs) + if getattr(cls, "_is_protocol", False): + cls.__protocol_attrs__ = _get_protocol_attrs(cls) + + def __subclasscheck__(cls, other): + if cls is Protocol: + return type.__subclasscheck__(cls, other) + if ( + getattr(cls, '_is_protocol', False) + and not _allow_reckless_class_checks() + ): + if not getattr(cls, '_is_runtime_protocol', False): + _type_check_issubclass_arg_1(other) + raise TypeError( + "Instance and class checks can only be used with " + "@runtime_checkable protocols" + ) + if ( + # this attribute is set by @runtime_checkable: + cls.__non_callable_proto_members__ + and cls.__dict__.get("__subclasshook__") is _proto_hook + ): + _type_check_issubclass_arg_1(other) + non_method_attrs = sorted(cls.__non_callable_proto_members__) + raise TypeError( + "Protocols with non-method members don't support issubclass()." + f" Non-method members: {str(non_method_attrs)[1:-1]}." + ) + return abc.ABCMeta.__subclasscheck__(cls, other) + + def __instancecheck__(cls, instance): + # We need this method for situations where attributes are + # assigned in __init__. + if cls is Protocol: + return type.__instancecheck__(cls, instance) + if not getattr(cls, "_is_protocol", False): + # i.e., it's a concrete subclass of a protocol + return abc.ABCMeta.__instancecheck__(cls, instance) + + if ( + not getattr(cls, '_is_runtime_protocol', False) and + not _allow_reckless_class_checks() + ): + raise TypeError("Instance and class checks can only be used with" + " @runtime_checkable protocols") + + if abc.ABCMeta.__instancecheck__(cls, instance): + return True + + for attr in cls.__protocol_attrs__: + try: + val = inspect.getattr_static(instance, attr) + except AttributeError: + break + # this attribute is set by @runtime_checkable: + if val is None and attr not in cls.__non_callable_proto_members__: + break + else: + return True + + return False + + def __eq__(cls, other): + # Hack so that typing.Generic.__class_getitem__ + # treats typing_extensions.Protocol + # as equivalent to typing.Protocol + if abc.ABCMeta.__eq__(cls, other) is True: + return True + return cls is Protocol and other is typing.Protocol + + # This has to be defined, or the abc-module cache + # complains about classes with this metaclass being unhashable, + # if we define only __eq__! + def __hash__(cls) -> int: + return type.__hash__(cls) + + @classmethod + def _proto_hook(cls, other): + if not cls.__dict__.get('_is_protocol', False): + return NotImplemented + + for attr in cls.__protocol_attrs__: + for base in other.__mro__: + # Check if the members appears in the class dictionary... + if attr in base.__dict__: + if base.__dict__[attr] is None: + return NotImplemented + break + + # ...or in annotations, if it is a sub-protocol. + annotations = getattr(base, '__annotations__', {}) + if ( + isinstance(annotations, collections.abc.Mapping) + and attr in annotations + and is_protocol(other) + ): + break + else: + return NotImplemented + return True + + class Protocol(typing.Generic, metaclass=_ProtocolMeta): + __doc__ = typing.Protocol.__doc__ + __slots__ = () + _is_protocol = True + _is_runtime_protocol = False + + def __init_subclass__(cls, *args, **kwargs): + super().__init_subclass__(*args, **kwargs) + + # Determine if this is a protocol or a concrete subclass. + if not cls.__dict__.get('_is_protocol', False): + cls._is_protocol = any(b is Protocol for b in cls.__bases__) + + # Set (or override) the protocol subclass hook. + if '__subclasshook__' not in cls.__dict__: + cls.__subclasshook__ = _proto_hook + + # Prohibit instantiation for protocol classes + if cls._is_protocol and cls.__init__ is Protocol.__init__: + cls.__init__ = _no_init + + +# Breakpoint: https://github.com/python/cpython/pull/113401 +if sys.version_info >= (3, 13): + runtime_checkable = typing.runtime_checkable +else: + def runtime_checkable(cls): + """Mark a protocol class as a runtime protocol. + + Such protocol can be used with isinstance() and issubclass(). + Raise TypeError if applied to a non-protocol class. + This allows a simple-minded structural check very similar to + one trick ponies in collections.abc such as Iterable. + + For example:: + + @runtime_checkable + class Closable(Protocol): + def close(self): ... + + assert isinstance(open('/some/file'), Closable) + + Warning: this will check only the presence of the required methods, + not their type signatures! + """ + if not issubclass(cls, typing.Generic) or not getattr(cls, '_is_protocol', False): + raise TypeError(f'@runtime_checkable can be only applied to protocol classes,' + f' got {cls!r}') + cls._is_runtime_protocol = True + + # typing.Protocol classes on <=3.11 break if we execute this block, + # because typing.Protocol classes on <=3.11 don't have a + # `__protocol_attrs__` attribute, and this block relies on the + # `__protocol_attrs__` attribute. Meanwhile, typing.Protocol classes on 3.12.2+ + # break if we *don't* execute this block, because *they* assume that all + # protocol classes have a `__non_callable_proto_members__` attribute + # (which this block sets) + if isinstance(cls, _ProtocolMeta) or sys.version_info >= (3, 12, 2): + # PEP 544 prohibits using issubclass() + # with protocols that have non-method members. + # See gh-113320 for why we compute this attribute here, + # rather than in `_ProtocolMeta.__init__` + cls.__non_callable_proto_members__ = set() + for attr in cls.__protocol_attrs__: + try: + is_callable = callable(getattr(cls, attr, None)) + except Exception as e: + raise TypeError( + f"Failed to determine whether protocol member {attr!r} " + "is a method member" + ) from e + else: + if not is_callable: + cls.__non_callable_proto_members__.add(attr) + + return cls + + +# The "runtime" alias exists for backwards compatibility. +runtime = runtime_checkable + + +# Our version of runtime-checkable protocols is faster on Python <=3.11 +# Breakpoint: https://github.com/python/cpython/pull/112717 +if sys.version_info >= (3, 12): + SupportsInt = typing.SupportsInt + SupportsFloat = typing.SupportsFloat + SupportsComplex = typing.SupportsComplex + SupportsBytes = typing.SupportsBytes + SupportsIndex = typing.SupportsIndex + SupportsAbs = typing.SupportsAbs + SupportsRound = typing.SupportsRound +else: + @runtime_checkable + class SupportsInt(Protocol): + """An ABC with one abstract method __int__.""" + __slots__ = () + + @abc.abstractmethod + def __int__(self) -> int: + pass + + @runtime_checkable + class SupportsFloat(Protocol): + """An ABC with one abstract method __float__.""" + __slots__ = () + + @abc.abstractmethod + def __float__(self) -> float: + pass + + @runtime_checkable + class SupportsComplex(Protocol): + """An ABC with one abstract method __complex__.""" + __slots__ = () + + @abc.abstractmethod + def __complex__(self) -> complex: + pass + + @runtime_checkable + class SupportsBytes(Protocol): + """An ABC with one abstract method __bytes__.""" + __slots__ = () + + @abc.abstractmethod + def __bytes__(self) -> bytes: + pass + + @runtime_checkable + class SupportsIndex(Protocol): + __slots__ = () + + @abc.abstractmethod + def __index__(self) -> int: + pass + + @runtime_checkable + class SupportsAbs(Protocol[T_co]): + """ + An ABC with one abstract method __abs__ that is covariant in its return type. + """ + __slots__ = () + + @abc.abstractmethod + def __abs__(self) -> T_co: + pass + + @runtime_checkable + class SupportsRound(Protocol[T_co]): + """ + An ABC with one abstract method __round__ that is covariant in its return type. + """ + __slots__ = () + + @abc.abstractmethod + def __round__(self, ndigits: int = 0) -> T_co: + pass + + +if hasattr(io, "Reader") and hasattr(io, "Writer"): + Reader = io.Reader + Writer = io.Writer +else: + @runtime_checkable + class Reader(Protocol[T_co]): + """Protocol for simple I/O reader instances. + + This protocol only supports blocking I/O. + """ + + __slots__ = () + + @abc.abstractmethod + def read(self, size: int = ..., /) -> T_co: + """Read data from the input stream and return it. + + If *size* is specified, at most *size* items (bytes/characters) will be + read. + """ + + @runtime_checkable + class Writer(Protocol[T_contra]): + """Protocol for simple I/O writer instances. + + This protocol only supports blocking I/O. + """ + + __slots__ = () + + @abc.abstractmethod + def write(self, data: T_contra, /) -> int: + """Write *data* to the output stream and return the number of items written.""" # noqa: E501 + + +_NEEDS_SINGLETONMETA = ( + not hasattr(typing, "NoDefault") or not hasattr(typing, "NoExtraItems") +) + +if _NEEDS_SINGLETONMETA: + class SingletonMeta(type): + def __setattr__(cls, attr, value): + # TypeError is consistent with the behavior of NoneType + raise TypeError( + f"cannot set {attr!r} attribute of immutable type {cls.__name__!r}" + ) + + +if hasattr(typing, "NoDefault"): + NoDefault = typing.NoDefault +else: + class NoDefaultType(metaclass=SingletonMeta): + """The type of the NoDefault singleton.""" + + __slots__ = () + + def __new__(cls): + return globals().get("NoDefault") or object.__new__(cls) + + def __repr__(self): + return "typing_extensions.NoDefault" + + def __reduce__(self): + return "NoDefault" + + NoDefault = NoDefaultType() + del NoDefaultType + +if hasattr(typing, "NoExtraItems"): + NoExtraItems = typing.NoExtraItems +else: + class NoExtraItemsType(metaclass=SingletonMeta): + """The type of the NoExtraItems singleton.""" + + __slots__ = () + + def __new__(cls): + return globals().get("NoExtraItems") or object.__new__(cls) + + def __repr__(self): + return "typing_extensions.NoExtraItems" + + def __reduce__(self): + return "NoExtraItems" + + NoExtraItems = NoExtraItemsType() + del NoExtraItemsType + +if _NEEDS_SINGLETONMETA: + del SingletonMeta + + +# Update this to something like >=3.13.0b1 if and when +# PEP 728 is implemented in CPython +_PEP_728_IMPLEMENTED = False + +if _PEP_728_IMPLEMENTED: + # The standard library TypedDict in Python 3.9.0/1 does not honour the "total" + # keyword with old-style TypedDict(). See https://bugs.python.org/issue42059 + # The standard library TypedDict below Python 3.11 does not store runtime + # information about optional and required keys when using Required or NotRequired. + # Generic TypedDicts are also impossible using typing.TypedDict on Python <3.11. + # Aaaand on 3.12 we add __orig_bases__ to TypedDict + # to enable better runtime introspection. + # On 3.13 we deprecate some odd ways of creating TypedDicts. + # Also on 3.13, PEP 705 adds the ReadOnly[] qualifier. + # PEP 728 (still pending) makes more changes. + TypedDict = typing.TypedDict + _TypedDictMeta = typing._TypedDictMeta + is_typeddict = typing.is_typeddict +else: + # 3.10.0 and later + _TAKES_MODULE = "module" in inspect.signature(typing._type_check).parameters + + def _get_typeddict_qualifiers(annotation_type): + while True: + annotation_origin = get_origin(annotation_type) + if annotation_origin is Annotated: + annotation_args = get_args(annotation_type) + if annotation_args: + annotation_type = annotation_args[0] + else: + break + elif annotation_origin is Required: + yield Required + annotation_type, = get_args(annotation_type) + elif annotation_origin is NotRequired: + yield NotRequired + annotation_type, = get_args(annotation_type) + elif annotation_origin is ReadOnly: + yield ReadOnly + annotation_type, = get_args(annotation_type) + else: + break + + class _TypedDictMeta(type): + + def __new__(cls, name, bases, ns, *, total=True, closed=None, + extra_items=NoExtraItems): + """Create new typed dict class object. + + This method is called when TypedDict is subclassed, + or when TypedDict is instantiated. This way + TypedDict supports all three syntax forms described in its docstring. + Subclasses and instances of TypedDict return actual dictionaries. + """ + for base in bases: + if type(base) is not _TypedDictMeta and base is not typing.Generic: + raise TypeError('cannot inherit from both a TypedDict type ' + 'and a non-TypedDict base class') + if closed is not None and extra_items is not NoExtraItems: + raise TypeError(f"Cannot combine closed={closed!r} and extra_items") + + if any(issubclass(b, typing.Generic) for b in bases): + generic_base = (typing.Generic,) + else: + generic_base = () + + ns_annotations = ns.pop('__annotations__', None) + + # typing.py generally doesn't let you inherit from plain Generic, unless + # the name of the class happens to be "Protocol" + tp_dict = type.__new__(_TypedDictMeta, "Protocol", (*generic_base, dict), ns) + tp_dict.__name__ = name + if tp_dict.__qualname__ == "Protocol": + tp_dict.__qualname__ = name + + if not hasattr(tp_dict, '__orig_bases__'): + tp_dict.__orig_bases__ = bases + + annotations = {} + own_annotate = None + if ns_annotations is not None: + own_annotations = ns_annotations + elif sys.version_info >= (3, 14): + if hasattr(annotationlib, "get_annotate_from_class_namespace"): + own_annotate = annotationlib.get_annotate_from_class_namespace(ns) + else: + # 3.14.0a7 and earlier + own_annotate = ns.get("__annotate__") + if own_annotate is not None: + own_annotations = annotationlib.call_annotate_function( + own_annotate, Format.FORWARDREF, owner=tp_dict + ) + else: + own_annotations = {} + else: + own_annotations = {} + msg = "TypedDict('Name', {f0: t0, f1: t1, ...}); each t must be a type" + if _TAKES_MODULE: + own_checked_annotations = { + n: typing._type_check(tp, msg, module=tp_dict.__module__) + for n, tp in own_annotations.items() + } + else: + own_checked_annotations = { + n: typing._type_check(tp, msg) + for n, tp in own_annotations.items() + } + required_keys = set() + optional_keys = set() + readonly_keys = set() + mutable_keys = set() + extra_items_type = extra_items + + for base in bases: + base_dict = base.__dict__ + + if sys.version_info <= (3, 14): + annotations.update(base_dict.get('__annotations__', {})) + required_keys.update(base_dict.get('__required_keys__', ())) + optional_keys.update(base_dict.get('__optional_keys__', ())) + readonly_keys.update(base_dict.get('__readonly_keys__', ())) + mutable_keys.update(base_dict.get('__mutable_keys__', ())) + + # This was specified in an earlier version of PEP 728. Support + # is retained for backwards compatibility, but only for Python + # 3.13 and lower. + if (closed and sys.version_info < (3, 14) + and "__extra_items__" in own_checked_annotations): + annotation_type = own_checked_annotations.pop("__extra_items__") + qualifiers = set(_get_typeddict_qualifiers(annotation_type)) + if Required in qualifiers: + raise TypeError( + "Special key __extra_items__ does not support " + "Required" + ) + if NotRequired in qualifiers: + raise TypeError( + "Special key __extra_items__ does not support " + "NotRequired" + ) + extra_items_type = annotation_type + + annotations.update(own_checked_annotations) + for annotation_key, annotation_type in own_checked_annotations.items(): + qualifiers = set(_get_typeddict_qualifiers(annotation_type)) + + if Required in qualifiers: + required_keys.add(annotation_key) + elif NotRequired in qualifiers: + optional_keys.add(annotation_key) + elif total: + required_keys.add(annotation_key) + else: + optional_keys.add(annotation_key) + if ReadOnly in qualifiers: + mutable_keys.discard(annotation_key) + readonly_keys.add(annotation_key) + else: + mutable_keys.add(annotation_key) + readonly_keys.discard(annotation_key) + + # Breakpoint: https://github.com/python/cpython/pull/119891 + if sys.version_info >= (3, 14): + def __annotate__(format): + annos = {} + for base in bases: + if base is Generic: + continue + base_annotate = base.__annotate__ + if base_annotate is None: + continue + base_annos = annotationlib.call_annotate_function( + base_annotate, format, owner=base) + annos.update(base_annos) + if own_annotate is not None: + own = annotationlib.call_annotate_function( + own_annotate, format, owner=tp_dict) + if format != Format.STRING: + own = { + n: typing._type_check(tp, msg, module=tp_dict.__module__) + for n, tp in own.items() + } + elif format == Format.STRING: + own = annotationlib.annotations_to_string(own_annotations) + elif format in (Format.FORWARDREF, Format.VALUE): + own = own_checked_annotations + else: + raise NotImplementedError(format) + annos.update(own) + return annos + + tp_dict.__annotate__ = __annotate__ + else: + tp_dict.__annotations__ = annotations + tp_dict.__required_keys__ = frozenset(required_keys) + tp_dict.__optional_keys__ = frozenset(optional_keys) + tp_dict.__readonly_keys__ = frozenset(readonly_keys) + tp_dict.__mutable_keys__ = frozenset(mutable_keys) + tp_dict.__total__ = total + tp_dict.__closed__ = closed + tp_dict.__extra_items__ = extra_items_type + return tp_dict + + __call__ = dict # static method + + def __subclasscheck__(cls, other): + # Typed dicts are only for static structural subtyping. + raise TypeError('TypedDict does not support instance and class checks') + + __instancecheck__ = __subclasscheck__ + + _TypedDict = type.__new__(_TypedDictMeta, 'TypedDict', (), {}) + + def _create_typeddict( + typename, + fields, + /, + *, + typing_is_inline, + total, + closed, + extra_items, + **kwargs, + ): + if fields is _marker or fields is None: + if fields is _marker: + deprecated_thing = ( + "Failing to pass a value for the 'fields' parameter" + ) + else: + deprecated_thing = "Passing `None` as the 'fields' parameter" + + example = f"`{typename} = TypedDict({typename!r}, {{}})`" + deprecation_msg = ( + f"{deprecated_thing} is deprecated and will be disallowed in " + "Python 3.15. To create a TypedDict class with 0 fields " + "using the functional syntax, pass an empty dictionary, e.g. " + ) + example + "." + warnings.warn(deprecation_msg, DeprecationWarning, stacklevel=2) + # Support a field called "closed" + if closed is not False and closed is not True and closed is not None: + kwargs["closed"] = closed + closed = None + # Or "extra_items" + if extra_items is not NoExtraItems: + kwargs["extra_items"] = extra_items + extra_items = NoExtraItems + fields = kwargs + elif kwargs: + raise TypeError("TypedDict takes either a dict or keyword arguments," + " but not both") + if kwargs: + # Breakpoint: https://github.com/python/cpython/pull/104891 + if sys.version_info >= (3, 13): + raise TypeError("TypedDict takes no keyword arguments") + warnings.warn( + "The kwargs-based syntax for TypedDict definitions is deprecated " + "in Python 3.11, will be removed in Python 3.13, and may not be " + "understood by third-party type checkers.", + DeprecationWarning, + stacklevel=2, + ) + + ns = {'__annotations__': dict(fields)} + module = _caller(depth=4 if typing_is_inline else 2) + if module is not None: + # Setting correct module is necessary to make typed dict classes + # pickleable. + ns['__module__'] = module + + td = _TypedDictMeta(typename, (), ns, total=total, closed=closed, + extra_items=extra_items) + td.__orig_bases__ = (TypedDict,) + return td + + class _TypedDictSpecialForm(_SpecialForm, _root=True): + def __call__( + self, + typename, + fields=_marker, + /, + *, + total=True, + closed=None, + extra_items=NoExtraItems, + **kwargs + ): + return _create_typeddict( + typename, + fields, + typing_is_inline=False, + total=total, + closed=closed, + extra_items=extra_items, + **kwargs, + ) + + def __mro_entries__(self, bases): + return (_TypedDict,) + + @_TypedDictSpecialForm + def TypedDict(self, args): + """A simple typed namespace. At runtime it is equivalent to a plain dict. + + TypedDict creates a dictionary type such that a type checker will expect all + instances to have a certain set of keys, where each key is + associated with a value of a consistent type. This expectation + is not checked at runtime. + + Usage:: + + class Point2D(TypedDict): + x: int + y: int + label: str + + a: Point2D = {'x': 1, 'y': 2, 'label': 'good'} # OK + b: Point2D = {'z': 3, 'label': 'bad'} # Fails type check + + assert Point2D(x=1, y=2, label='first') == dict(x=1, y=2, label='first') + + The type info can be accessed via the Point2D.__annotations__ dict, and + the Point2D.__required_keys__ and Point2D.__optional_keys__ frozensets. + TypedDict supports an additional equivalent form:: + + Point2D = TypedDict('Point2D', {'x': int, 'y': int, 'label': str}) + + By default, all keys must be present in a TypedDict. It is possible + to override this by specifying totality:: + + class Point2D(TypedDict, total=False): + x: int + y: int + + This means that a Point2D TypedDict can have any of the keys omitted. A type + checker is only expected to support a literal False or True as the value of + the total argument. True is the default, and makes all items defined in the + class body be required. + + The Required and NotRequired special forms can also be used to mark + individual keys as being required or not required:: + + class Point2D(TypedDict): + x: int # the "x" key must always be present (Required is the default) + y: NotRequired[int] # the "y" key can be omitted + + See PEP 655 for more details on Required and NotRequired. + """ + # This runs when creating inline TypedDicts: + if not isinstance(args, dict): + raise TypeError( + "TypedDict[...] should be used with a single dict argument" + ) + + return _create_typeddict( + "", + args, + typing_is_inline=True, + total=True, + closed=True, + extra_items=NoExtraItems, + ) + + _TYPEDDICT_TYPES = (typing._TypedDictMeta, _TypedDictMeta) + + def is_typeddict(tp): + """Check if an annotation is a TypedDict class + + For example:: + class Film(TypedDict): + title: str + year: int + + is_typeddict(Film) # => True + is_typeddict(Union[list, str]) # => False + """ + return isinstance(tp, _TYPEDDICT_TYPES) + + +if hasattr(typing, "assert_type"): + assert_type = typing.assert_type + +else: + def assert_type(val, typ, /): + """Assert (to the type checker) that the value is of the given type. + + When the type checker encounters a call to assert_type(), it + emits an error if the value is not of the specified type:: + + def greet(name: str) -> None: + assert_type(name, str) # ok + assert_type(name, int) # type checker error + + At runtime this returns the first argument unchanged and otherwise + does nothing. + """ + return val + + +if hasattr(typing, "ReadOnly"): # 3.13+ + get_type_hints = typing.get_type_hints +else: # <=3.13 + # replaces _strip_annotations() + def _strip_extras(t): + """Strips Annotated, Required and NotRequired from a given type.""" + if isinstance(t, typing._AnnotatedAlias): + return _strip_extras(t.__origin__) + if hasattr(t, "__origin__") and t.__origin__ in (Required, NotRequired, ReadOnly): + return _strip_extras(t.__args__[0]) + if isinstance(t, typing._GenericAlias): + stripped_args = tuple(_strip_extras(a) for a in t.__args__) + if stripped_args == t.__args__: + return t + return t.copy_with(stripped_args) + if hasattr(_types, "GenericAlias") and isinstance(t, _types.GenericAlias): + stripped_args = tuple(_strip_extras(a) for a in t.__args__) + if stripped_args == t.__args__: + return t + return _types.GenericAlias(t.__origin__, stripped_args) + if hasattr(_types, "UnionType") and isinstance(t, _types.UnionType): + stripped_args = tuple(_strip_extras(a) for a in t.__args__) + if stripped_args == t.__args__: + return t + return functools.reduce(operator.or_, stripped_args) + + return t + + def get_type_hints(obj, globalns=None, localns=None, include_extras=False): + """Return type hints for an object. + + This is often the same as obj.__annotations__, but it handles + forward references encoded as string literals, adds Optional[t] if a + default value equal to None is set and recursively replaces all + 'Annotated[T, ...]', 'Required[T]' or 'NotRequired[T]' with 'T' + (unless 'include_extras=True'). + + The argument may be a module, class, method, or function. The annotations + are returned as a dictionary. For classes, annotations include also + inherited members. + + TypeError is raised if the argument is not of a type that can contain + annotations, and an empty dictionary is returned if no annotations are + present. + + BEWARE -- the behavior of globalns and localns is counterintuitive + (unless you are familiar with how eval() and exec() work). The + search order is locals first, then globals. + + - If no dict arguments are passed, an attempt is made to use the + globals from obj (or the respective module's globals for classes), + and these are also used as the locals. If the object does not appear + to have globals, an empty dictionary is used. + + - If one dict argument is passed, it is used for both globals and + locals. + + - If two dict arguments are passed, they specify globals and + locals, respectively. + """ + hint = typing.get_type_hints( + obj, globalns=globalns, localns=localns, include_extras=True + ) + # Breakpoint: https://github.com/python/cpython/pull/30304 + if sys.version_info < (3, 11): + _clean_optional(obj, hint, globalns, localns) + if include_extras: + return hint + return {k: _strip_extras(t) for k, t in hint.items()} + + _NoneType = type(None) + + def _could_be_inserted_optional(t): + """detects Union[..., None] pattern""" + if not isinstance(t, typing._UnionGenericAlias): + return False + # Assume if last argument is not None they are user defined + if t.__args__[-1] is not _NoneType: + return False + return True + + # < 3.11 + def _clean_optional(obj, hints, globalns=None, localns=None): + # reverts injected Union[..., None] cases from typing.get_type_hints + # when a None default value is used. + # see https://github.com/python/typing_extensions/issues/310 + if not hints or isinstance(obj, type): + return + defaults = typing._get_defaults(obj) # avoid accessing __annotations___ + if not defaults: + return + original_hints = obj.__annotations__ + for name, value in hints.items(): + # Not a Union[..., None] or replacement conditions not fullfilled + if (not _could_be_inserted_optional(value) + or name not in defaults + or defaults[name] is not None + ): + continue + original_value = original_hints[name] + # value=NoneType should have caused a skip above but check for safety + if original_value is None: + original_value = _NoneType + # Forward reference + if isinstance(original_value, str): + if globalns is None: + if isinstance(obj, _types.ModuleType): + globalns = obj.__dict__ + else: + nsobj = obj + # Find globalns for the unwrapped object. + while hasattr(nsobj, '__wrapped__'): + nsobj = nsobj.__wrapped__ + globalns = getattr(nsobj, '__globals__', {}) + if localns is None: + localns = globalns + elif localns is None: + localns = globalns + + original_value = ForwardRef( + original_value, + is_argument=not isinstance(obj, _types.ModuleType) + ) + original_evaluated = typing._eval_type(original_value, globalns, localns) + # Compare if values differ. Note that even if equal + # value might be cached by typing._tp_cache contrary to original_evaluated + if original_evaluated != value or ( + # 3.10: ForwardRefs of UnionType might be turned into _UnionGenericAlias + hasattr(_types, "UnionType") + and isinstance(original_evaluated, _types.UnionType) + and not isinstance(value, _types.UnionType) + ): + hints[name] = original_evaluated + +# Python 3.9 has get_origin() and get_args() but those implementations don't support +# ParamSpecArgs and ParamSpecKwargs, so only Python 3.10's versions will do. +# Breakpoint: https://github.com/python/cpython/pull/25298 +if sys.version_info >= (3, 10): + get_origin = typing.get_origin + get_args = typing.get_args +# 3.9 +else: + def get_origin(tp): + """Get the unsubscripted version of a type. + + This supports generic types, Callable, Tuple, Union, Literal, Final, ClassVar + and Annotated. Return None for unsupported types. Examples:: + + get_origin(Literal[42]) is Literal + get_origin(int) is None + get_origin(ClassVar[int]) is ClassVar + get_origin(Generic) is Generic + get_origin(Generic[T]) is Generic + get_origin(Union[T, int]) is Union + get_origin(List[Tuple[T, T]][int]) == list + get_origin(P.args) is P + """ + if isinstance(tp, typing._AnnotatedAlias): + return Annotated + if isinstance(tp, (typing._BaseGenericAlias, _types.GenericAlias, + ParamSpecArgs, ParamSpecKwargs)): + return tp.__origin__ + if tp is typing.Generic: + return typing.Generic + return None + + def get_args(tp): + """Get type arguments with all substitutions performed. + + For unions, basic simplifications used by Union constructor are performed. + Examples:: + get_args(Dict[str, int]) == (str, int) + get_args(int) == () + get_args(Union[int, Union[T, int], str][int]) == (int, str) + get_args(Union[int, Tuple[T, int]][str]) == (int, Tuple[str, int]) + get_args(Callable[[], T][int]) == ([], int) + """ + if isinstance(tp, typing._AnnotatedAlias): + return (tp.__origin__, *tp.__metadata__) + if isinstance(tp, (typing._GenericAlias, _types.GenericAlias)): + res = tp.__args__ + if get_origin(tp) is collections.abc.Callable and res[0] is not Ellipsis: + res = (list(res[:-1]), res[-1]) + return res + return () + + +# 3.10+ +if hasattr(typing, 'TypeAlias'): + TypeAlias = typing.TypeAlias +# 3.9 +else: + @_ExtensionsSpecialForm + def TypeAlias(self, parameters): + """Special marker indicating that an assignment should + be recognized as a proper type alias definition by type + checkers. + + For example:: + + Predicate: TypeAlias = Callable[..., bool] + + It's invalid when used anywhere except as in the example above. + """ + raise TypeError(f"{self} is not subscriptable") + + +def _set_default(type_param, default): + type_param.has_default = lambda: default is not NoDefault + type_param.__default__ = default + + +def _set_module(typevarlike): + # for pickling: + def_mod = _caller(depth=2) + if def_mod != 'typing_extensions': + typevarlike.__module__ = def_mod + + +class _DefaultMixin: + """Mixin for TypeVarLike defaults.""" + + __slots__ = () + __init__ = _set_default + + +# Classes using this metaclass must provide a _backported_typevarlike ClassVar +class _TypeVarLikeMeta(type): + def __instancecheck__(cls, __instance: Any) -> bool: + return isinstance(__instance, cls._backported_typevarlike) + + +if _PEP_696_IMPLEMENTED: + from typing import TypeVar +else: + # Add default and infer_variance parameters from PEP 696 and 695 + class TypeVar(metaclass=_TypeVarLikeMeta): + """Type variable.""" + + _backported_typevarlike = typing.TypeVar + + def __new__(cls, name, *constraints, bound=None, + covariant=False, contravariant=False, + default=NoDefault, infer_variance=False): + if hasattr(typing, "TypeAliasType"): + # PEP 695 implemented (3.12+), can pass infer_variance to typing.TypeVar + typevar = typing.TypeVar(name, *constraints, bound=bound, + covariant=covariant, contravariant=contravariant, + infer_variance=infer_variance) + else: + typevar = typing.TypeVar(name, *constraints, bound=bound, + covariant=covariant, contravariant=contravariant) + if infer_variance and (covariant or contravariant): + raise ValueError("Variance cannot be specified with infer_variance.") + typevar.__infer_variance__ = infer_variance + + _set_default(typevar, default) + _set_module(typevar) + + def _tvar_prepare_subst(alias, args): + if ( + typevar.has_default() + and alias.__parameters__.index(typevar) == len(args) + ): + args += (typevar.__default__,) + return args + + typevar.__typing_prepare_subst__ = _tvar_prepare_subst + return typevar + + def __init_subclass__(cls) -> None: + raise TypeError(f"type '{__name__}.TypeVar' is not an acceptable base type") + + +# Python 3.10+ has PEP 612 +if hasattr(typing, 'ParamSpecArgs'): + ParamSpecArgs = typing.ParamSpecArgs + ParamSpecKwargs = typing.ParamSpecKwargs +# 3.9 +else: + class _Immutable: + """Mixin to indicate that object should not be copied.""" + __slots__ = () + + def __copy__(self): + return self + + def __deepcopy__(self, memo): + return self + + class ParamSpecArgs(_Immutable): + """The args for a ParamSpec object. + + Given a ParamSpec object P, P.args is an instance of ParamSpecArgs. + + ParamSpecArgs objects have a reference back to their ParamSpec: + + P.args.__origin__ is P + + This type is meant for runtime introspection and has no special meaning to + static type checkers. + """ + def __init__(self, origin): + self.__origin__ = origin + + def __repr__(self): + return f"{self.__origin__.__name__}.args" + + def __eq__(self, other): + if not isinstance(other, ParamSpecArgs): + return NotImplemented + return self.__origin__ == other.__origin__ + + class ParamSpecKwargs(_Immutable): + """The kwargs for a ParamSpec object. + + Given a ParamSpec object P, P.kwargs is an instance of ParamSpecKwargs. + + ParamSpecKwargs objects have a reference back to their ParamSpec: + + P.kwargs.__origin__ is P + + This type is meant for runtime introspection and has no special meaning to + static type checkers. + """ + def __init__(self, origin): + self.__origin__ = origin + + def __repr__(self): + return f"{self.__origin__.__name__}.kwargs" + + def __eq__(self, other): + if not isinstance(other, ParamSpecKwargs): + return NotImplemented + return self.__origin__ == other.__origin__ + + +if _PEP_696_IMPLEMENTED: + from typing import ParamSpec + +# 3.10+ +elif hasattr(typing, 'ParamSpec'): + + # Add default parameter - PEP 696 + class ParamSpec(metaclass=_TypeVarLikeMeta): + """Parameter specification.""" + + _backported_typevarlike = typing.ParamSpec + + def __new__(cls, name, *, bound=None, + covariant=False, contravariant=False, + infer_variance=False, default=NoDefault): + if hasattr(typing, "TypeAliasType"): + # PEP 695 implemented, can pass infer_variance to typing.TypeVar + paramspec = typing.ParamSpec(name, bound=bound, + covariant=covariant, + contravariant=contravariant, + infer_variance=infer_variance) + else: + paramspec = typing.ParamSpec(name, bound=bound, + covariant=covariant, + contravariant=contravariant) + paramspec.__infer_variance__ = infer_variance + + _set_default(paramspec, default) + _set_module(paramspec) + + def _paramspec_prepare_subst(alias, args): + params = alias.__parameters__ + i = params.index(paramspec) + if i == len(args) and paramspec.has_default(): + args = [*args, paramspec.__default__] + if i >= len(args): + raise TypeError(f"Too few arguments for {alias}") + # Special case where Z[[int, str, bool]] == Z[int, str, bool] in PEP 612. + if len(params) == 1 and not typing._is_param_expr(args[0]): + assert i == 0 + args = (args,) + # Convert lists to tuples to help other libraries cache the results. + elif isinstance(args[i], list): + args = (*args[:i], tuple(args[i]), *args[i + 1:]) + return args + + paramspec.__typing_prepare_subst__ = _paramspec_prepare_subst + return paramspec + + def __init_subclass__(cls) -> None: + raise TypeError(f"type '{__name__}.ParamSpec' is not an acceptable base type") + +# 3.9 +else: + + # Inherits from list as a workaround for Callable checks in Python < 3.9.2. + class ParamSpec(list, _DefaultMixin): + """Parameter specification variable. + + Usage:: + + P = ParamSpec('P') + + Parameter specification variables exist primarily for the benefit of static + type checkers. They are used to forward the parameter types of one + callable to another callable, a pattern commonly found in higher order + functions and decorators. They are only valid when used in ``Concatenate``, + or s the first argument to ``Callable``. In Python 3.10 and higher, + they are also supported in user-defined Generics at runtime. + See class Generic for more information on generic types. An + example for annotating a decorator:: + + T = TypeVar('T') + P = ParamSpec('P') + + def add_logging(f: Callable[P, T]) -> Callable[P, T]: + '''A type-safe decorator to add logging to a function.''' + def inner(*args: P.args, **kwargs: P.kwargs) -> T: + logging.info(f'{f.__name__} was called') + return f(*args, **kwargs) + return inner + + @add_logging + def add_two(x: float, y: float) -> float: + '''Add two numbers together.''' + return x + y + + Parameter specification variables defined with covariant=True or + contravariant=True can be used to declare covariant or contravariant + generic types. These keyword arguments are valid, but their actual semantics + are yet to be decided. See PEP 612 for details. + + Parameter specification variables can be introspected. e.g.: + + P.__name__ == 'T' + P.__bound__ == None + P.__covariant__ == False + P.__contravariant__ == False + + Note that only parameter specification variables defined in global scope can + be pickled. + """ + + # Trick Generic __parameters__. + __class__ = typing.TypeVar + + @property + def args(self): + return ParamSpecArgs(self) + + @property + def kwargs(self): + return ParamSpecKwargs(self) + + def __init__(self, name, *, bound=None, covariant=False, contravariant=False, + infer_variance=False, default=NoDefault): + list.__init__(self, [self]) + self.__name__ = name + self.__covariant__ = bool(covariant) + self.__contravariant__ = bool(contravariant) + self.__infer_variance__ = bool(infer_variance) + if bound: + self.__bound__ = typing._type_check(bound, 'Bound must be a type.') + else: + self.__bound__ = None + _DefaultMixin.__init__(self, default) + + # for pickling: + def_mod = _caller() + if def_mod != 'typing_extensions': + self.__module__ = def_mod + + def __repr__(self): + if self.__infer_variance__: + prefix = '' + elif self.__covariant__: + prefix = '+' + elif self.__contravariant__: + prefix = '-' + else: + prefix = '~' + return prefix + self.__name__ + + def __hash__(self): + return object.__hash__(self) + + def __eq__(self, other): + return self is other + + def __reduce__(self): + return self.__name__ + + # Hack to get typing._type_check to pass. + def __call__(self, *args, **kwargs): + pass + + +# 3.9 +if not hasattr(typing, 'Concatenate'): + # Inherits from list as a workaround for Callable checks in Python < 3.9.2. + + # 3.9.0-1 + if not hasattr(typing, '_type_convert'): + def _type_convert(arg, module=None, *, allow_special_forms=False): + """For converting None to type(None), and strings to ForwardRef.""" + if arg is None: + return type(None) + if isinstance(arg, str): + if sys.version_info <= (3, 9, 6): + return ForwardRef(arg) + if sys.version_info <= (3, 9, 7): + return ForwardRef(arg, module=module) + return ForwardRef(arg, module=module, is_class=allow_special_forms) + return arg + else: + _type_convert = typing._type_convert + + class _ConcatenateGenericAlias(list): + + # Trick Generic into looking into this for __parameters__. + __class__ = typing._GenericAlias + + def __init__(self, origin, args): + super().__init__(args) + self.__origin__ = origin + self.__args__ = args + + def __repr__(self): + _type_repr = typing._type_repr + return (f'{_type_repr(self.__origin__)}' + f'[{", ".join(_type_repr(arg) for arg in self.__args__)}]') + + def __hash__(self): + return hash((self.__origin__, self.__args__)) + + # Hack to get typing._type_check to pass in Generic. + def __call__(self, *args, **kwargs): + pass + + @property + def __parameters__(self): + return tuple( + tp for tp in self.__args__ if isinstance(tp, (typing.TypeVar, ParamSpec)) + ) + + # 3.9 used by __getitem__ below + def copy_with(self, params): + if isinstance(params[-1], _ConcatenateGenericAlias): + params = (*params[:-1], *params[-1].__args__) + elif isinstance(params[-1], (list, tuple)): + return (*params[:-1], *params[-1]) + elif (not (params[-1] is ... or isinstance(params[-1], ParamSpec))): + raise TypeError("The last parameter to Concatenate should be a " + "ParamSpec variable or ellipsis.") + return self.__class__(self.__origin__, params) + + # 3.9; accessed during GenericAlias.__getitem__ when substituting + def __getitem__(self, args): + if self.__origin__ in (Generic, Protocol): + # Can't subscript Generic[...] or Protocol[...]. + raise TypeError(f"Cannot subscript already-subscripted {self}") + if not self.__parameters__: + raise TypeError(f"{self} is not a generic class") + + if not isinstance(args, tuple): + args = (args,) + args = _unpack_args(*(_type_convert(p) for p in args)) + params = self.__parameters__ + for param in params: + prepare = getattr(param, "__typing_prepare_subst__", None) + if prepare is not None: + args = prepare(self, args) + # 3.9 & typing.ParamSpec + elif isinstance(param, ParamSpec): + i = params.index(param) + if ( + i == len(args) + and getattr(param, '__default__', NoDefault) is not NoDefault + ): + args = [*args, param.__default__] + if i >= len(args): + raise TypeError(f"Too few arguments for {self}") + # Special case for Z[[int, str, bool]] == Z[int, str, bool] + if len(params) == 1 and not _is_param_expr(args[0]): + assert i == 0 + args = (args,) + elif ( + isinstance(args[i], list) + # 3.9 + # This class inherits from list do not convert + and not isinstance(args[i], _ConcatenateGenericAlias) + ): + args = (*args[:i], tuple(args[i]), *args[i + 1:]) + + alen = len(args) + plen = len(params) + if alen != plen: + raise TypeError( + f"Too {'many' if alen > plen else 'few'} arguments for {self};" + f" actual {alen}, expected {plen}" + ) + + subst = dict(zip(self.__parameters__, args)) + # determine new args + new_args = [] + for arg in self.__args__: + if isinstance(arg, type): + new_args.append(arg) + continue + if isinstance(arg, TypeVar): + arg = subst[arg] + if ( + (isinstance(arg, typing._GenericAlias) and _is_unpack(arg)) + or ( + hasattr(_types, "GenericAlias") + and isinstance(arg, _types.GenericAlias) + and getattr(arg, "__unpacked__", False) + ) + ): + raise TypeError(f"{arg} is not valid as type argument") + + elif isinstance(arg, + typing._GenericAlias + if not hasattr(_types, "GenericAlias") else + (typing._GenericAlias, _types.GenericAlias) + ): + subparams = arg.__parameters__ + if subparams: + subargs = tuple(subst[x] for x in subparams) + arg = arg[subargs] + new_args.append(arg) + return self.copy_with(tuple(new_args)) + +# 3.10+ +else: + _ConcatenateGenericAlias = typing._ConcatenateGenericAlias + + # 3.10 + if sys.version_info < (3, 11): + + class _ConcatenateGenericAlias(typing._ConcatenateGenericAlias, _root=True): + # needed for checks in collections.abc.Callable to accept this class + __module__ = "typing" + + def copy_with(self, params): + if isinstance(params[-1], (list, tuple)): + return (*params[:-1], *params[-1]) + if isinstance(params[-1], typing._ConcatenateGenericAlias): + params = (*params[:-1], *params[-1].__args__) + elif not (params[-1] is ... or isinstance(params[-1], ParamSpec)): + raise TypeError("The last parameter to Concatenate should be a " + "ParamSpec variable or ellipsis.") + return super(typing._ConcatenateGenericAlias, self).copy_with(params) + + def __getitem__(self, args): + value = super().__getitem__(args) + if isinstance(value, tuple) and any(_is_unpack(t) for t in value): + return tuple(_unpack_args(*(n for n in value))) + return value + + +# 3.9.2 +class _EllipsisDummy: ... + + +# <=3.10 +def _create_concatenate_alias(origin, parameters): + if parameters[-1] is ... and sys.version_info < (3, 9, 2): + # Hack: Arguments must be types, replace it with one. + parameters = (*parameters[:-1], _EllipsisDummy) + if sys.version_info >= (3, 10, 3): + concatenate = _ConcatenateGenericAlias(origin, parameters, + _typevar_types=(TypeVar, ParamSpec), + _paramspec_tvars=True) + else: + concatenate = _ConcatenateGenericAlias(origin, parameters) + if parameters[-1] is not _EllipsisDummy: + return concatenate + # Remove dummy again + concatenate.__args__ = tuple(p if p is not _EllipsisDummy else ... + for p in concatenate.__args__) + if sys.version_info < (3, 10): + # backport needs __args__ adjustment only + return concatenate + concatenate.__parameters__ = tuple(p for p in concatenate.__parameters__ + if p is not _EllipsisDummy) + return concatenate + + +# <=3.10 +@typing._tp_cache +def _concatenate_getitem(self, parameters): + if parameters == (): + raise TypeError("Cannot take a Concatenate of no types.") + if not isinstance(parameters, tuple): + parameters = (parameters,) + if not (parameters[-1] is ... or isinstance(parameters[-1], ParamSpec)): + raise TypeError("The last parameter to Concatenate should be a " + "ParamSpec variable or ellipsis.") + msg = "Concatenate[arg, ...]: each arg must be a type." + parameters = (*(typing._type_check(p, msg) for p in parameters[:-1]), + parameters[-1]) + return _create_concatenate_alias(self, parameters) + + +# 3.11+; Concatenate does not accept ellipsis in 3.10 +# Breakpoint: https://github.com/python/cpython/pull/30969 +if sys.version_info >= (3, 11): + Concatenate = typing.Concatenate +# <=3.10 +else: + @_ExtensionsSpecialForm + def Concatenate(self, parameters): + """Used in conjunction with ``ParamSpec`` and ``Callable`` to represent a + higher order function which adds, removes or transforms parameters of a + callable. + + For example:: + + Callable[Concatenate[int, P], int] + + See PEP 612 for detailed information. + """ + return _concatenate_getitem(self, parameters) + + +# 3.10+ +if hasattr(typing, 'TypeGuard'): + TypeGuard = typing.TypeGuard +# 3.9 +else: + @_ExtensionsSpecialForm + def TypeGuard(self, parameters): + """Special typing form used to annotate the return type of a user-defined + type guard function. ``TypeGuard`` only accepts a single type argument. + At runtime, functions marked this way should return a boolean. + + ``TypeGuard`` aims to benefit *type narrowing* -- a technique used by static + type checkers to determine a more precise type of an expression within a + program's code flow. Usually type narrowing is done by analyzing + conditional code flow and applying the narrowing to a block of code. The + conditional expression here is sometimes referred to as a "type guard". + + Sometimes it would be convenient to use a user-defined boolean function + as a type guard. Such a function should use ``TypeGuard[...]`` as its + return type to alert static type checkers to this intention. + + Using ``-> TypeGuard`` tells the static type checker that for a given + function: + + 1. The return value is a boolean. + 2. If the return value is ``True``, the type of its argument + is the type inside ``TypeGuard``. + + For example:: + + def is_str(val: Union[str, float]): + # "isinstance" type guard + if isinstance(val, str): + # Type of ``val`` is narrowed to ``str`` + ... + else: + # Else, type of ``val`` is narrowed to ``float``. + ... + + Strict type narrowing is not enforced -- ``TypeB`` need not be a narrower + form of ``TypeA`` (it can even be a wider form) and this may lead to + type-unsafe results. The main reason is to allow for things like + narrowing ``List[object]`` to ``List[str]`` even though the latter is not + a subtype of the former, since ``List`` is invariant. The responsibility of + writing type-safe type guards is left to the user. + + ``TypeGuard`` also works with type variables. For more information, see + PEP 647 (User-Defined Type Guards). + """ + item = typing._type_check(parameters, f'{self} accepts only a single type.') + return typing._GenericAlias(self, (item,)) + + +# 3.13+ +if hasattr(typing, 'TypeIs'): + TypeIs = typing.TypeIs +# <=3.12 +else: + @_ExtensionsSpecialForm + def TypeIs(self, parameters): + """Special typing form used to annotate the return type of a user-defined + type narrower function. ``TypeIs`` only accepts a single type argument. + At runtime, functions marked this way should return a boolean. + + ``TypeIs`` aims to benefit *type narrowing* -- a technique used by static + type checkers to determine a more precise type of an expression within a + program's code flow. Usually type narrowing is done by analyzing + conditional code flow and applying the narrowing to a block of code. The + conditional expression here is sometimes referred to as a "type guard". + + Sometimes it would be convenient to use a user-defined boolean function + as a type guard. Such a function should use ``TypeIs[...]`` as its + return type to alert static type checkers to this intention. + + Using ``-> TypeIs`` tells the static type checker that for a given + function: + + 1. The return value is a boolean. + 2. If the return value is ``True``, the type of its argument + is the intersection of the type inside ``TypeIs`` and the argument's + previously known type. + + For example:: + + def is_awaitable(val: object) -> TypeIs[Awaitable[Any]]: + return hasattr(val, '__await__') + + def f(val: Union[int, Awaitable[int]]) -> int: + if is_awaitable(val): + assert_type(val, Awaitable[int]) + else: + assert_type(val, int) + + ``TypeIs`` also works with type variables. For more information, see + PEP 742 (Narrowing types with TypeIs). + """ + item = typing._type_check(parameters, f'{self} accepts only a single type.') + return typing._GenericAlias(self, (item,)) + + +# 3.14+? +if hasattr(typing, 'TypeForm'): + TypeForm = typing.TypeForm +# <=3.13 +else: + class _TypeFormForm(_ExtensionsSpecialForm, _root=True): + # TypeForm(X) is equivalent to X but indicates to the type checker + # that the object is a TypeForm. + def __call__(self, obj, /): + return obj + + @_TypeFormForm + def TypeForm(self, parameters): + """A special form representing the value that results from the evaluation + of a type expression. This value encodes the information supplied in the + type expression, and it represents the type described by that type expression. + + When used in a type expression, TypeForm describes a set of type form objects. + It accepts a single type argument, which must be a valid type expression. + ``TypeForm[T]`` describes the set of all type form objects that represent + the type T or types that are assignable to T. + + Usage: + + def cast[T](typ: TypeForm[T], value: Any) -> T: ... + + reveal_type(cast(int, "x")) # int + + See PEP 747 for more information. + """ + item = typing._type_check(parameters, f'{self} accepts only a single type.') + return typing._GenericAlias(self, (item,)) + + + + +if hasattr(typing, "LiteralString"): # 3.11+ + LiteralString = typing.LiteralString +else: + @_SpecialForm + def LiteralString(self, params): + """Represents an arbitrary literal string. + + Example:: + + from typing_extensions import LiteralString + + def query(sql: LiteralString) -> ...: + ... + + query("SELECT * FROM table") # ok + query(f"SELECT * FROM {input()}") # not ok + + See PEP 675 for details. + + """ + raise TypeError(f"{self} is not subscriptable") + + +if hasattr(typing, "Self"): # 3.11+ + Self = typing.Self +else: + @_SpecialForm + def Self(self, params): + """Used to spell the type of "self" in classes. + + Example:: + + from typing import Self + + class ReturnsSelf: + def parse(self, data: bytes) -> Self: + ... + return self + + """ + + raise TypeError(f"{self} is not subscriptable") + + +if hasattr(typing, "Never"): # 3.11+ + Never = typing.Never +else: + @_SpecialForm + def Never(self, params): + """The bottom type, a type that has no members. + + This can be used to define a function that should never be + called, or a function that never returns:: + + from typing_extensions import Never + + def never_call_me(arg: Never) -> None: + pass + + def int_or_str(arg: int | str) -> None: + never_call_me(arg) # type checker error + match arg: + case int(): + print("It's an int") + case str(): + print("It's a str") + case _: + never_call_me(arg) # ok, arg is of type Never + + """ + + raise TypeError(f"{self} is not subscriptable") + + +if hasattr(typing, 'Required'): # 3.11+ + Required = typing.Required + NotRequired = typing.NotRequired +else: # <=3.10 + @_ExtensionsSpecialForm + def Required(self, parameters): + """A special typing construct to mark a key of a total=False TypedDict + as required. For example: + + class Movie(TypedDict, total=False): + title: Required[str] + year: int + + m = Movie( + title='The Matrix', # typechecker error if key is omitted + year=1999, + ) + + There is no runtime checking that a required key is actually provided + when instantiating a related TypedDict. + """ + item = typing._type_check(parameters, f'{self._name} accepts only a single type.') + return typing._GenericAlias(self, (item,)) + + @_ExtensionsSpecialForm + def NotRequired(self, parameters): + """A special typing construct to mark a key of a TypedDict as + potentially missing. For example: + + class Movie(TypedDict): + title: str + year: NotRequired[int] + + m = Movie( + title='The Matrix', # typechecker error if key is omitted + year=1999, + ) + """ + item = typing._type_check(parameters, f'{self._name} accepts only a single type.') + return typing._GenericAlias(self, (item,)) + + +if hasattr(typing, 'ReadOnly'): + ReadOnly = typing.ReadOnly +else: # <=3.12 + @_ExtensionsSpecialForm + def ReadOnly(self, parameters): + """A special typing construct to mark an item of a TypedDict as read-only. + + For example: + + class Movie(TypedDict): + title: ReadOnly[str] + year: int + + def mutate_movie(m: Movie) -> None: + m["year"] = 1992 # allowed + m["title"] = "The Matrix" # typechecker error + + There is no runtime checking for this property. + """ + item = typing._type_check(parameters, f'{self._name} accepts only a single type.') + return typing._GenericAlias(self, (item,)) + + +_UNPACK_DOC = """\ +Type unpack operator. + +The type unpack operator takes the child types from some container type, +such as `tuple[int, str]` or a `TypeVarTuple`, and 'pulls them out'. For +example: + + # For some generic class `Foo`: + Foo[Unpack[tuple[int, str]]] # Equivalent to Foo[int, str] + + Ts = TypeVarTuple('Ts') + # Specifies that `Bar` is generic in an arbitrary number of types. + # (Think of `Ts` as a tuple of an arbitrary number of individual + # `TypeVar`s, which the `Unpack` is 'pulling out' directly into the + # `Generic[]`.) + class Bar(Generic[Unpack[Ts]]): ... + Bar[int] # Valid + Bar[int, str] # Also valid + +From Python 3.11, this can also be done using the `*` operator: + + Foo[*tuple[int, str]] + class Bar(Generic[*Ts]): ... + +The operator can also be used along with a `TypedDict` to annotate +`**kwargs` in a function signature. For instance: + + class Movie(TypedDict): + name: str + year: int + + # This function expects two keyword arguments - *name* of type `str` and + # *year* of type `int`. + def foo(**kwargs: Unpack[Movie]): ... + +Note that there is only some runtime checking of this operator. Not +everything the runtime allows may be accepted by static type checkers. + +For more information, see PEP 646 and PEP 692. +""" + + +# PEP 692 changed the repr of Unpack[] +# Breakpoint: https://github.com/python/cpython/pull/104048 +if sys.version_info >= (3, 12): + Unpack = typing.Unpack + + def _is_unpack(obj): + return get_origin(obj) is Unpack + +else: # <=3.11 + class _UnpackSpecialForm(_ExtensionsSpecialForm, _root=True): + def __init__(self, getitem): + super().__init__(getitem) + self.__doc__ = _UNPACK_DOC + + class _UnpackAlias(typing._GenericAlias, _root=True): + if sys.version_info < (3, 11): + # needed for compatibility with Generic[Unpack[Ts]] + __class__ = typing.TypeVar + + @property + def __typing_unpacked_tuple_args__(self): + assert self.__origin__ is Unpack + assert len(self.__args__) == 1 + arg, = self.__args__ + if isinstance(arg, (typing._GenericAlias, _types.GenericAlias)): + if arg.__origin__ is not tuple: + raise TypeError("Unpack[...] must be used with a tuple type") + return arg.__args__ + return None + + @property + def __typing_is_unpacked_typevartuple__(self): + assert self.__origin__ is Unpack + assert len(self.__args__) == 1 + return isinstance(self.__args__[0], TypeVarTuple) + + def __getitem__(self, args): + if self.__typing_is_unpacked_typevartuple__: + return args + return super().__getitem__(args) + + @_UnpackSpecialForm + def Unpack(self, parameters): + item = typing._type_check(parameters, f'{self._name} accepts only a single type.') + return _UnpackAlias(self, (item,)) + + def _is_unpack(obj): + return isinstance(obj, _UnpackAlias) + + +def _unpack_args(*args): + newargs = [] + for arg in args: + subargs = getattr(arg, '__typing_unpacked_tuple_args__', None) + if subargs is not None and (not (subargs and subargs[-1] is ...)): + newargs.extend(subargs) + else: + newargs.append(arg) + return newargs + + +if _PEP_696_IMPLEMENTED: + from typing import TypeVarTuple + +elif hasattr(typing, "TypeVarTuple"): # 3.11+ + + # Add default parameter - PEP 696 + class TypeVarTuple(metaclass=_TypeVarLikeMeta): + """Type variable tuple.""" + + _backported_typevarlike = typing.TypeVarTuple + + def __new__(cls, name, *, default=NoDefault): + tvt = typing.TypeVarTuple(name) + _set_default(tvt, default) + _set_module(tvt) + + def _typevartuple_prepare_subst(alias, args): + params = alias.__parameters__ + typevartuple_index = params.index(tvt) + for param in params[typevartuple_index + 1:]: + if isinstance(param, TypeVarTuple): + raise TypeError( + f"More than one TypeVarTuple parameter in {alias}" + ) + + alen = len(args) + plen = len(params) + left = typevartuple_index + right = plen - typevartuple_index - 1 + var_tuple_index = None + fillarg = None + for k, arg in enumerate(args): + if not isinstance(arg, type): + subargs = getattr(arg, '__typing_unpacked_tuple_args__', None) + if subargs and len(subargs) == 2 and subargs[-1] is ...: + if var_tuple_index is not None: + raise TypeError( + "More than one unpacked " + "arbitrary-length tuple argument" + ) + var_tuple_index = k + fillarg = subargs[0] + if var_tuple_index is not None: + left = min(left, var_tuple_index) + right = min(right, alen - var_tuple_index - 1) + elif left + right > alen: + raise TypeError(f"Too few arguments for {alias};" + f" actual {alen}, expected at least {plen - 1}") + if left == alen - right and tvt.has_default(): + replacement = _unpack_args(tvt.__default__) + else: + replacement = args[left: alen - right] + + return ( + *args[:left], + *([fillarg] * (typevartuple_index - left)), + replacement, + *([fillarg] * (plen - right - left - typevartuple_index - 1)), + *args[alen - right:], + ) + + tvt.__typing_prepare_subst__ = _typevartuple_prepare_subst + return tvt + + def __init_subclass__(self, *args, **kwds): + raise TypeError("Cannot subclass special typing classes") + +else: # <=3.10 + class TypeVarTuple(_DefaultMixin): + """Type variable tuple. + + Usage:: + + Ts = TypeVarTuple('Ts') + + In the same way that a normal type variable is a stand-in for a single + type such as ``int``, a type variable *tuple* is a stand-in for a *tuple* + type such as ``Tuple[int, str]``. + + Type variable tuples can be used in ``Generic`` declarations. + Consider the following example:: + + class Array(Generic[*Ts]): ... + + The ``Ts`` type variable tuple here behaves like ``tuple[T1, T2]``, + where ``T1`` and ``T2`` are type variables. To use these type variables + as type parameters of ``Array``, we must *unpack* the type variable tuple using + the star operator: ``*Ts``. The signature of ``Array`` then behaves + as if we had simply written ``class Array(Generic[T1, T2]): ...``. + In contrast to ``Generic[T1, T2]``, however, ``Generic[*Shape]`` allows + us to parameterise the class with an *arbitrary* number of type parameters. + + Type variable tuples can be used anywhere a normal ``TypeVar`` can. + This includes class definitions, as shown above, as well as function + signatures and variable annotations:: + + class Array(Generic[*Ts]): + + def __init__(self, shape: Tuple[*Ts]): + self._shape: Tuple[*Ts] = shape + + def get_shape(self) -> Tuple[*Ts]: + return self._shape + + shape = (Height(480), Width(640)) + x: Array[Height, Width] = Array(shape) + y = abs(x) # Inferred type is Array[Height, Width] + z = x + x # ... is Array[Height, Width] + x.get_shape() # ... is tuple[Height, Width] + + """ + + # Trick Generic __parameters__. + __class__ = typing.TypeVar + + def __iter__(self): + yield self.__unpacked__ + + def __init__(self, name, *, default=NoDefault): + self.__name__ = name + _DefaultMixin.__init__(self, default) + + # for pickling: + def_mod = _caller() + if def_mod != 'typing_extensions': + self.__module__ = def_mod + + self.__unpacked__ = Unpack[self] + + def __repr__(self): + return self.__name__ + + def __hash__(self): + return object.__hash__(self) + + def __eq__(self, other): + return self is other + + def __reduce__(self): + return self.__name__ + + def __init_subclass__(self, *args, **kwds): + if '_root' not in kwds: + raise TypeError("Cannot subclass special typing classes") + + +if hasattr(typing, "reveal_type"): # 3.11+ + reveal_type = typing.reveal_type +else: # <=3.10 + def reveal_type(obj: T, /) -> T: + """Reveal the inferred type of a variable. + + When a static type checker encounters a call to ``reveal_type()``, + it will emit the inferred type of the argument:: + + x: int = 1 + reveal_type(x) + + Running a static type checker (e.g., ``mypy``) on this example + will produce output similar to 'Revealed type is "builtins.int"'. + + At runtime, the function prints the runtime type of the + argument and returns it unchanged. + + """ + print(f"Runtime type is {type(obj).__name__!r}", file=sys.stderr) + return obj + + +if hasattr(typing, "_ASSERT_NEVER_REPR_MAX_LENGTH"): # 3.11+ + _ASSERT_NEVER_REPR_MAX_LENGTH = typing._ASSERT_NEVER_REPR_MAX_LENGTH +else: # <=3.10 + _ASSERT_NEVER_REPR_MAX_LENGTH = 100 + + +if hasattr(typing, "assert_never"): # 3.11+ + assert_never = typing.assert_never +else: # <=3.10 + def assert_never(arg: Never, /) -> Never: + """Assert to the type checker that a line of code is unreachable. + + Example:: + + def int_or_str(arg: int | str) -> None: + match arg: + case int(): + print("It's an int") + case str(): + print("It's a str") + case _: + assert_never(arg) + + If a type checker finds that a call to assert_never() is + reachable, it will emit an error. + + At runtime, this throws an exception when called. + + """ + value = repr(arg) + if len(value) > _ASSERT_NEVER_REPR_MAX_LENGTH: + value = value[:_ASSERT_NEVER_REPR_MAX_LENGTH] + '...' + raise AssertionError(f"Expected code to be unreachable, but got: {value}") + + +# dataclass_transform exists in 3.11 but lacks the frozen_default parameter +# Breakpoint: https://github.com/python/cpython/pull/99958 +if sys.version_info >= (3, 12): # 3.12+ + dataclass_transform = typing.dataclass_transform +else: # <=3.11 + def dataclass_transform( + *, + eq_default: bool = True, + order_default: bool = False, + kw_only_default: bool = False, + frozen_default: bool = False, + field_specifiers: typing.Tuple[ + typing.Union[typing.Type[typing.Any], typing.Callable[..., typing.Any]], + ... + ] = (), + **kwargs: typing.Any, + ) -> typing.Callable[[T], T]: + """Decorator that marks a function, class, or metaclass as providing + dataclass-like behavior. + + Example: + + from typing_extensions import dataclass_transform + + _T = TypeVar("_T") + + # Used on a decorator function + @dataclass_transform() + def create_model(cls: type[_T]) -> type[_T]: + ... + return cls + + @create_model + class CustomerModel: + id: int + name: str + + # Used on a base class + @dataclass_transform() + class ModelBase: ... + + class CustomerModel(ModelBase): + id: int + name: str + + # Used on a metaclass + @dataclass_transform() + class ModelMeta(type): ... + + class ModelBase(metaclass=ModelMeta): ... + + class CustomerModel(ModelBase): + id: int + name: str + + Each of the ``CustomerModel`` classes defined in this example will now + behave similarly to a dataclass created with the ``@dataclasses.dataclass`` + decorator. For example, the type checker will synthesize an ``__init__`` + method. + + The arguments to this decorator can be used to customize this behavior: + - ``eq_default`` indicates whether the ``eq`` parameter is assumed to be + True or False if it is omitted by the caller. + - ``order_default`` indicates whether the ``order`` parameter is + assumed to be True or False if it is omitted by the caller. + - ``kw_only_default`` indicates whether the ``kw_only`` parameter is + assumed to be True or False if it is omitted by the caller. + - ``frozen_default`` indicates whether the ``frozen`` parameter is + assumed to be True or False if it is omitted by the caller. + - ``field_specifiers`` specifies a static list of supported classes + or functions that describe fields, similar to ``dataclasses.field()``. + + At runtime, this decorator records its arguments in the + ``__dataclass_transform__`` attribute on the decorated object. + + See PEP 681 for details. + + """ + def decorator(cls_or_fn): + cls_or_fn.__dataclass_transform__ = { + "eq_default": eq_default, + "order_default": order_default, + "kw_only_default": kw_only_default, + "frozen_default": frozen_default, + "field_specifiers": field_specifiers, + "kwargs": kwargs, + } + return cls_or_fn + return decorator + + +if hasattr(typing, "override"): # 3.12+ + override = typing.override +else: # <=3.11 + _F = typing.TypeVar("_F", bound=typing.Callable[..., typing.Any]) + + def override(arg: _F, /) -> _F: + """Indicate that a method is intended to override a method in a base class. + + Usage: + + class Base: + def method(self) -> None: + pass + + class Child(Base): + @override + def method(self) -> None: + super().method() + + When this decorator is applied to a method, the type checker will + validate that it overrides a method with the same name on a base class. + This helps prevent bugs that may occur when a base class is changed + without an equivalent change to a child class. + + There is no runtime checking of these properties. The decorator + sets the ``__override__`` attribute to ``True`` on the decorated object + to allow runtime introspection. + + See PEP 698 for details. + + """ + try: + arg.__override__ = True + except (AttributeError, TypeError): + # Skip the attribute silently if it is not writable. + # AttributeError happens if the object has __slots__ or a + # read-only property, TypeError if it's a builtin class. + pass + return arg + + +# Python 3.13.3+ contains a fix for the wrapped __new__ +# Breakpoint: https://github.com/python/cpython/pull/132160 +if sys.version_info >= (3, 13, 3): + deprecated = warnings.deprecated +else: + _T = typing.TypeVar("_T") + + class deprecated: + """Indicate that a class, function or overload is deprecated. + + When this decorator is applied to an object, the type checker + will generate a diagnostic on usage of the deprecated object. + + Usage: + + @deprecated("Use B instead") + class A: + pass + + @deprecated("Use g instead") + def f(): + pass + + @overload + @deprecated("int support is deprecated") + def g(x: int) -> int: ... + @overload + def g(x: str) -> int: ... + + The warning specified by *category* will be emitted at runtime + on use of deprecated objects. For functions, that happens on calls; + for classes, on instantiation and on creation of subclasses. + If the *category* is ``None``, no warning is emitted at runtime. + The *stacklevel* determines where the + warning is emitted. If it is ``1`` (the default), the warning + is emitted at the direct caller of the deprecated object; if it + is higher, it is emitted further up the stack. + Static type checker behavior is not affected by the *category* + and *stacklevel* arguments. + + The deprecation message passed to the decorator is saved in the + ``__deprecated__`` attribute on the decorated object. + If applied to an overload, the decorator + must be after the ``@overload`` decorator for the attribute to + exist on the overload as returned by ``get_overloads()``. + + See PEP 702 for details. + + """ + def __init__( + self, + message: str, + /, + *, + category: typing.Optional[typing.Type[Warning]] = DeprecationWarning, + stacklevel: int = 1, + ) -> None: + if not isinstance(message, str): + raise TypeError( + "Expected an object of type str for 'message', not " + f"{type(message).__name__!r}" + ) + self.message = message + self.category = category + self.stacklevel = stacklevel + + def __call__(self, arg: _T, /) -> _T: + # Make sure the inner functions created below don't + # retain a reference to self. + msg = self.message + category = self.category + stacklevel = self.stacklevel + if category is None: + arg.__deprecated__ = msg + return arg + elif isinstance(arg, type): + import functools + from types import MethodType + + original_new = arg.__new__ + + @functools.wraps(original_new) + def __new__(cls, /, *args, **kwargs): + if cls is arg: + warnings.warn(msg, category=category, stacklevel=stacklevel + 1) + if original_new is not object.__new__: + return original_new(cls, *args, **kwargs) + # Mirrors a similar check in object.__new__. + elif cls.__init__ is object.__init__ and (args or kwargs): + raise TypeError(f"{cls.__name__}() takes no arguments") + else: + return original_new(cls) + + arg.__new__ = staticmethod(__new__) + + original_init_subclass = arg.__init_subclass__ + # We need slightly different behavior if __init_subclass__ + # is a bound method (likely if it was implemented in Python) + if isinstance(original_init_subclass, MethodType): + original_init_subclass = original_init_subclass.__func__ + + @functools.wraps(original_init_subclass) + def __init_subclass__(*args, **kwargs): + warnings.warn(msg, category=category, stacklevel=stacklevel + 1) + return original_init_subclass(*args, **kwargs) + + arg.__init_subclass__ = classmethod(__init_subclass__) + # Or otherwise, which likely means it's a builtin such as + # object's implementation of __init_subclass__. + else: + @functools.wraps(original_init_subclass) + def __init_subclass__(*args, **kwargs): + warnings.warn(msg, category=category, stacklevel=stacklevel + 1) + return original_init_subclass(*args, **kwargs) + + arg.__init_subclass__ = __init_subclass__ + + arg.__deprecated__ = __new__.__deprecated__ = msg + __init_subclass__.__deprecated__ = msg + return arg + elif callable(arg): + import asyncio.coroutines + import functools + import inspect + + @functools.wraps(arg) + def wrapper(*args, **kwargs): + warnings.warn(msg, category=category, stacklevel=stacklevel + 1) + return arg(*args, **kwargs) + + if asyncio.coroutines.iscoroutinefunction(arg): + # Breakpoint: https://github.com/python/cpython/pull/99247 + if sys.version_info >= (3, 12): + wrapper = inspect.markcoroutinefunction(wrapper) + else: + wrapper._is_coroutine = asyncio.coroutines._is_coroutine + + arg.__deprecated__ = wrapper.__deprecated__ = msg + return wrapper + else: + raise TypeError( + "@deprecated decorator with non-None category must be applied to " + f"a class or callable, not {arg!r}" + ) + +# Breakpoint: https://github.com/python/cpython/pull/23702 +if sys.version_info < (3, 10): + def _is_param_expr(arg): + return arg is ... or isinstance( + arg, (tuple, list, ParamSpec, _ConcatenateGenericAlias) + ) +else: + def _is_param_expr(arg): + return arg is ... or isinstance( + arg, + ( + tuple, + list, + ParamSpec, + _ConcatenateGenericAlias, + typing._ConcatenateGenericAlias, + ), + ) + + +# We have to do some monkey patching to deal with the dual nature of +# Unpack/TypeVarTuple: +# - We want Unpack to be a kind of TypeVar so it gets accepted in +# Generic[Unpack[Ts]] +# - We want it to *not* be treated as a TypeVar for the purposes of +# counting generic parameters, so that when we subscript a generic, +# the runtime doesn't try to substitute the Unpack with the subscripted type. +if not hasattr(typing, "TypeVarTuple"): + def _check_generic(cls, parameters, elen=_marker): + """Check correct count for parameters of a generic cls (internal helper). + + This gives a nice error message in case of count mismatch. + """ + # If substituting a single ParamSpec with multiple arguments + # we do not check the count + if (inspect.isclass(cls) and issubclass(cls, typing.Generic) + and len(cls.__parameters__) == 1 + and isinstance(cls.__parameters__[0], ParamSpec) + and parameters + and not _is_param_expr(parameters[0]) + ): + # Generic modifies parameters variable, but here we cannot do this + return + + if not elen: + raise TypeError(f"{cls} is not a generic class") + if elen is _marker: + if not hasattr(cls, "__parameters__") or not cls.__parameters__: + raise TypeError(f"{cls} is not a generic class") + elen = len(cls.__parameters__) + alen = len(parameters) + if alen != elen: + expect_val = elen + if hasattr(cls, "__parameters__"): + parameters = [p for p in cls.__parameters__ if not _is_unpack(p)] + num_tv_tuples = sum(isinstance(p, TypeVarTuple) for p in parameters) + if (num_tv_tuples > 0) and (alen >= elen - num_tv_tuples): + return + + # deal with TypeVarLike defaults + # required TypeVarLikes cannot appear after a defaulted one. + if alen < elen: + # since we validate TypeVarLike default in _collect_type_vars + # or _collect_parameters we can safely check parameters[alen] + if ( + getattr(parameters[alen], '__default__', NoDefault) + is not NoDefault + ): + return + + num_default_tv = sum(getattr(p, '__default__', NoDefault) + is not NoDefault for p in parameters) + + elen -= num_default_tv + + expect_val = f"at least {elen}" + + # Breakpoint: https://github.com/python/cpython/pull/27515 + things = "arguments" if sys.version_info >= (3, 10) else "parameters" + raise TypeError(f"Too {'many' if alen > elen else 'few'} {things}" + f" for {cls}; actual {alen}, expected {expect_val}") +else: + # Python 3.11+ + + def _check_generic(cls, parameters, elen): + """Check correct count for parameters of a generic cls (internal helper). + + This gives a nice error message in case of count mismatch. + """ + if not elen: + raise TypeError(f"{cls} is not a generic class") + alen = len(parameters) + if alen != elen: + expect_val = elen + if hasattr(cls, "__parameters__"): + parameters = [p for p in cls.__parameters__ if not _is_unpack(p)] + + # deal with TypeVarLike defaults + # required TypeVarLikes cannot appear after a defaulted one. + if alen < elen: + # since we validate TypeVarLike default in _collect_type_vars + # or _collect_parameters we can safely check parameters[alen] + if ( + getattr(parameters[alen], '__default__', NoDefault) + is not NoDefault + ): + return + + num_default_tv = sum(getattr(p, '__default__', NoDefault) + is not NoDefault for p in parameters) + + elen -= num_default_tv + + expect_val = f"at least {elen}" + + raise TypeError(f"Too {'many' if alen > elen else 'few'} arguments" + f" for {cls}; actual {alen}, expected {expect_val}") + +if not _PEP_696_IMPLEMENTED: + typing._check_generic = _check_generic + + +def _has_generic_or_protocol_as_origin() -> bool: + try: + frame = sys._getframe(2) + # - Catch AttributeError: not all Python implementations have sys._getframe() + # - Catch ValueError: maybe we're called from an unexpected module + # and the call stack isn't deep enough + except (AttributeError, ValueError): + return False # err on the side of leniency + else: + # If we somehow get invoked from outside typing.py, + # also err on the side of leniency + if frame.f_globals.get("__name__") != "typing": + return False + origin = frame.f_locals.get("origin") + # Cannot use "in" because origin may be an object with a buggy __eq__ that + # throws an error. + return origin is typing.Generic or origin is Protocol or origin is typing.Protocol + + +_TYPEVARTUPLE_TYPES = {TypeVarTuple, getattr(typing, "TypeVarTuple", None)} + + +def _is_unpacked_typevartuple(x) -> bool: + if get_origin(x) is not Unpack: + return False + args = get_args(x) + return ( + bool(args) + and len(args) == 1 + and type(args[0]) in _TYPEVARTUPLE_TYPES + ) + + +# Python 3.11+ _collect_type_vars was renamed to _collect_parameters +if hasattr(typing, '_collect_type_vars'): + def _collect_type_vars(types, typevar_types=None): + """Collect all type variable contained in types in order of + first appearance (lexicographic order). For example:: + + _collect_type_vars((T, List[S, T])) == (T, S) + """ + if typevar_types is None: + typevar_types = typing.TypeVar + tvars = [] + + # A required TypeVarLike cannot appear after a TypeVarLike with a default + # if it was a direct call to `Generic[]` or `Protocol[]` + enforce_default_ordering = _has_generic_or_protocol_as_origin() + default_encountered = False + + # Also, a TypeVarLike with a default cannot appear after a TypeVarTuple + type_var_tuple_encountered = False + + for t in types: + if _is_unpacked_typevartuple(t): + type_var_tuple_encountered = True + elif ( + isinstance(t, typevar_types) and not isinstance(t, _UnpackAlias) + and t not in tvars + ): + if enforce_default_ordering: + has_default = getattr(t, '__default__', NoDefault) is not NoDefault + if has_default: + if type_var_tuple_encountered: + raise TypeError('Type parameter with a default' + ' follows TypeVarTuple') + default_encountered = True + elif default_encountered: + raise TypeError(f'Type parameter {t!r} without a default' + ' follows type parameter with a default') + + tvars.append(t) + if _should_collect_from_parameters(t): + tvars.extend([t for t in t.__parameters__ if t not in tvars]) + elif isinstance(t, tuple): + # Collect nested type_vars + # tuple wrapped by _prepare_paramspec_params(cls, params) + for x in t: + for collected in _collect_type_vars([x]): + if collected not in tvars: + tvars.append(collected) + return tuple(tvars) + + typing._collect_type_vars = _collect_type_vars +else: + def _collect_parameters(args): + """Collect all type variables and parameter specifications in args + in order of first appearance (lexicographic order). + + For example:: + + assert _collect_parameters((T, Callable[P, T])) == (T, P) + """ + parameters = [] + + # A required TypeVarLike cannot appear after a TypeVarLike with default + # if it was a direct call to `Generic[]` or `Protocol[]` + enforce_default_ordering = _has_generic_or_protocol_as_origin() + default_encountered = False + + # Also, a TypeVarLike with a default cannot appear after a TypeVarTuple + type_var_tuple_encountered = False + + for t in args: + if isinstance(t, type): + # We don't want __parameters__ descriptor of a bare Python class. + pass + elif isinstance(t, tuple): + # `t` might be a tuple, when `ParamSpec` is substituted with + # `[T, int]`, or `[int, *Ts]`, etc. + for x in t: + for collected in _collect_parameters([x]): + if collected not in parameters: + parameters.append(collected) + elif hasattr(t, '__typing_subst__'): + if t not in parameters: + if enforce_default_ordering: + has_default = ( + getattr(t, '__default__', NoDefault) is not NoDefault + ) + + if type_var_tuple_encountered and has_default: + raise TypeError('Type parameter with a default' + ' follows TypeVarTuple') + + if has_default: + default_encountered = True + elif default_encountered: + raise TypeError(f'Type parameter {t!r} without a default' + ' follows type parameter with a default') + + parameters.append(t) + else: + if _is_unpacked_typevartuple(t): + type_var_tuple_encountered = True + for x in getattr(t, '__parameters__', ()): + if x not in parameters: + parameters.append(x) + + return tuple(parameters) + + if not _PEP_696_IMPLEMENTED: + typing._collect_parameters = _collect_parameters + +# Backport typing.NamedTuple as it exists in Python 3.13. +# In 3.11, the ability to define generic `NamedTuple`s was supported. +# This was explicitly disallowed in 3.9-3.10, and only half-worked in <=3.8. +# On 3.12, we added __orig_bases__ to call-based NamedTuples +# On 3.13, we deprecated kwargs-based NamedTuples +# Breakpoint: https://github.com/python/cpython/pull/105609 +if sys.version_info >= (3, 13): + NamedTuple = typing.NamedTuple +else: + def _make_nmtuple(name, types, module, defaults=()): + fields = [n for n, t in types] + annotations = {n: typing._type_check(t, f"field {n} annotation must be a type") + for n, t in types} + nm_tpl = collections.namedtuple(name, fields, + defaults=defaults, module=module) + nm_tpl.__annotations__ = nm_tpl.__new__.__annotations__ = annotations + return nm_tpl + + _prohibited_namedtuple_fields = typing._prohibited + _special_namedtuple_fields = frozenset({'__module__', '__name__', '__annotations__'}) + + class _NamedTupleMeta(type): + def __new__(cls, typename, bases, ns): + assert _NamedTuple in bases + for base in bases: + if base is not _NamedTuple and base is not typing.Generic: + raise TypeError( + 'can only inherit from a NamedTuple type and Generic') + bases = tuple(tuple if base is _NamedTuple else base for base in bases) + if "__annotations__" in ns: + types = ns["__annotations__"] + elif "__annotate__" in ns: + # TODO: Use inspect.VALUE here, and make the annotations lazily evaluated + types = ns["__annotate__"](1) + else: + types = {} + default_names = [] + for field_name in types: + if field_name in ns: + default_names.append(field_name) + elif default_names: + raise TypeError(f"Non-default namedtuple field {field_name} " + f"cannot follow default field" + f"{'s' if len(default_names) > 1 else ''} " + f"{', '.join(default_names)}") + nm_tpl = _make_nmtuple( + typename, types.items(), + defaults=[ns[n] for n in default_names], + module=ns['__module__'] + ) + nm_tpl.__bases__ = bases + if typing.Generic in bases: + if hasattr(typing, '_generic_class_getitem'): # 3.12+ + nm_tpl.__class_getitem__ = classmethod(typing._generic_class_getitem) + else: + class_getitem = typing.Generic.__class_getitem__.__func__ + nm_tpl.__class_getitem__ = classmethod(class_getitem) + # update from user namespace without overriding special namedtuple attributes + for key, val in ns.items(): + if key in _prohibited_namedtuple_fields: + raise AttributeError("Cannot overwrite NamedTuple attribute " + key) + elif key not in _special_namedtuple_fields: + if key not in nm_tpl._fields: + setattr(nm_tpl, key, ns[key]) + try: + set_name = type(val).__set_name__ + except AttributeError: + pass + else: + try: + set_name(val, nm_tpl, key) + except BaseException as e: + msg = ( + f"Error calling __set_name__ on {type(val).__name__!r} " + f"instance {key!r} in {typename!r}" + ) + # BaseException.add_note() existed on py311, + # but the __set_name__ machinery didn't start + # using add_note() until py312. + # Making sure exceptions are raised in the same way + # as in "normal" classes seems most important here. + # Breakpoint: https://github.com/python/cpython/pull/95915 + if sys.version_info >= (3, 12): + e.add_note(msg) + raise + else: + raise RuntimeError(msg) from e + + if typing.Generic in bases: + nm_tpl.__init_subclass__() + return nm_tpl + + _NamedTuple = type.__new__(_NamedTupleMeta, 'NamedTuple', (), {}) + + def _namedtuple_mro_entries(bases): + assert NamedTuple in bases + return (_NamedTuple,) + + def NamedTuple(typename, fields=_marker, /, **kwargs): + """Typed version of namedtuple. + + Usage:: + + class Employee(NamedTuple): + name: str + id: int + + This is equivalent to:: + + Employee = collections.namedtuple('Employee', ['name', 'id']) + + The resulting class has an extra __annotations__ attribute, giving a + dict that maps field names to types. (The field names are also in + the _fields attribute, which is part of the namedtuple API.) + An alternative equivalent functional syntax is also accepted:: + + Employee = NamedTuple('Employee', [('name', str), ('id', int)]) + """ + if fields is _marker: + if kwargs: + deprecated_thing = "Creating NamedTuple classes using keyword arguments" + deprecation_msg = ( + "{name} is deprecated and will be disallowed in Python {remove}. " + "Use the class-based or functional syntax instead." + ) + else: + deprecated_thing = "Failing to pass a value for the 'fields' parameter" + example = f"`{typename} = NamedTuple({typename!r}, [])`" + deprecation_msg = ( + "{name} is deprecated and will be disallowed in Python {remove}. " + "To create a NamedTuple class with 0 fields " + "using the functional syntax, " + "pass an empty list, e.g. " + ) + example + "." + elif fields is None: + if kwargs: + raise TypeError( + "Cannot pass `None` as the 'fields' parameter " + "and also specify fields using keyword arguments" + ) + else: + deprecated_thing = "Passing `None` as the 'fields' parameter" + example = f"`{typename} = NamedTuple({typename!r}, [])`" + deprecation_msg = ( + "{name} is deprecated and will be disallowed in Python {remove}. " + "To create a NamedTuple class with 0 fields " + "using the functional syntax, " + "pass an empty list, e.g. " + ) + example + "." + elif kwargs: + raise TypeError("Either list of fields or keywords" + " can be provided to NamedTuple, not both") + if fields is _marker or fields is None: + warnings.warn( + deprecation_msg.format(name=deprecated_thing, remove="3.15"), + DeprecationWarning, + stacklevel=2, + ) + fields = kwargs.items() + nt = _make_nmtuple(typename, fields, module=_caller()) + nt.__orig_bases__ = (NamedTuple,) + return nt + + NamedTuple.__mro_entries__ = _namedtuple_mro_entries + + +if hasattr(collections.abc, "Buffer"): + Buffer = collections.abc.Buffer +else: + class Buffer(abc.ABC): # noqa: B024 + """Base class for classes that implement the buffer protocol. + + The buffer protocol allows Python objects to expose a low-level + memory buffer interface. Before Python 3.12, it is not possible + to implement the buffer protocol in pure Python code, or even + to check whether a class implements the buffer protocol. In + Python 3.12 and higher, the ``__buffer__`` method allows access + to the buffer protocol from Python code, and the + ``collections.abc.Buffer`` ABC allows checking whether a class + implements the buffer protocol. + + To indicate support for the buffer protocol in earlier versions, + inherit from this ABC, either in a stub file or at runtime, + or use ABC registration. This ABC provides no methods, because + there is no Python-accessible methods shared by pre-3.12 buffer + classes. It is useful primarily for static checks. + + """ + + # As a courtesy, register the most common stdlib buffer classes. + Buffer.register(memoryview) + Buffer.register(bytearray) + Buffer.register(bytes) + + +# Backport of types.get_original_bases, available on 3.12+ in CPython +if hasattr(_types, "get_original_bases"): + get_original_bases = _types.get_original_bases +else: + def get_original_bases(cls, /): + """Return the class's "original" bases prior to modification by `__mro_entries__`. + + Examples:: + + from typing import TypeVar, Generic + from typing_extensions import NamedTuple, TypedDict + + T = TypeVar("T") + class Foo(Generic[T]): ... + class Bar(Foo[int], float): ... + class Baz(list[str]): ... + Eggs = NamedTuple("Eggs", [("a", int), ("b", str)]) + Spam = TypedDict("Spam", {"a": int, "b": str}) + + assert get_original_bases(Bar) == (Foo[int], float) + assert get_original_bases(Baz) == (list[str],) + assert get_original_bases(Eggs) == (NamedTuple,) + assert get_original_bases(Spam) == (TypedDict,) + assert get_original_bases(int) == (object,) + """ + try: + return cls.__dict__.get("__orig_bases__", cls.__bases__) + except AttributeError: + raise TypeError( + f'Expected an instance of type, not {type(cls).__name__!r}' + ) from None + + +# NewType is a class on Python 3.10+, making it pickleable +# The error message for subclassing instances of NewType was improved on 3.11+ +# Breakpoint: https://github.com/python/cpython/pull/30268 +if sys.version_info >= (3, 11): + NewType = typing.NewType +else: + class NewType: + """NewType creates simple unique types with almost zero + runtime overhead. NewType(name, tp) is considered a subtype of tp + by static type checkers. At runtime, NewType(name, tp) returns + a dummy callable that simply returns its argument. Usage:: + UserId = NewType('UserId', int) + def name_by_id(user_id: UserId) -> str: + ... + UserId('user') # Fails type check + name_by_id(42) # Fails type check + name_by_id(UserId(42)) # OK + num = UserId(5) + 1 # type: int + """ + + def __call__(self, obj, /): + return obj + + def __init__(self, name, tp): + self.__qualname__ = name + if '.' in name: + name = name.rpartition('.')[-1] + self.__name__ = name + self.__supertype__ = tp + def_mod = _caller() + if def_mod != 'typing_extensions': + self.__module__ = def_mod + + def __mro_entries__(self, bases): + # We defined __mro_entries__ to get a better error message + # if a user attempts to subclass a NewType instance. bpo-46170 + supercls_name = self.__name__ + + class Dummy: + def __init_subclass__(cls): + subcls_name = cls.__name__ + raise TypeError( + f"Cannot subclass an instance of NewType. " + f"Perhaps you were looking for: " + f"`{subcls_name} = NewType({subcls_name!r}, {supercls_name})`" + ) + + return (Dummy,) + + def __repr__(self): + return f'{self.__module__}.{self.__qualname__}' + + def __reduce__(self): + return self.__qualname__ + + # Breakpoint: https://github.com/python/cpython/pull/21515 + if sys.version_info >= (3, 10): + # PEP 604 methods + # It doesn't make sense to have these methods on Python <3.10 + + def __or__(self, other): + return typing.Union[self, other] + + def __ror__(self, other): + return typing.Union[other, self] + + +# Breakpoint: https://github.com/python/cpython/pull/124795 +if sys.version_info >= (3, 14): + TypeAliasType = typing.TypeAliasType +# <=3.13 +else: + # Breakpoint: https://github.com/python/cpython/pull/103764 + if sys.version_info >= (3, 12): + # 3.12-3.13 + def _is_unionable(obj): + """Corresponds to is_unionable() in unionobject.c in CPython.""" + return obj is None or isinstance(obj, ( + type, + _types.GenericAlias, + _types.UnionType, + typing.TypeAliasType, + TypeAliasType, + )) + else: + # <=3.11 + def _is_unionable(obj): + """Corresponds to is_unionable() in unionobject.c in CPython.""" + return obj is None or isinstance(obj, ( + type, + _types.GenericAlias, + _types.UnionType, + TypeAliasType, + )) + + if sys.version_info < (3, 10): + # Copied and pasted from https://github.com/python/cpython/blob/986a4e1b6fcae7fe7a1d0a26aea446107dd58dd2/Objects/genericaliasobject.c#L568-L582, + # so that we emulate the behaviour of `types.GenericAlias` + # on the latest versions of CPython + _ATTRIBUTE_DELEGATION_EXCLUSIONS = frozenset({ + "__class__", + "__bases__", + "__origin__", + "__args__", + "__unpacked__", + "__parameters__", + "__typing_unpacked_tuple_args__", + "__mro_entries__", + "__reduce_ex__", + "__reduce__", + "__copy__", + "__deepcopy__", + }) + + class _TypeAliasGenericAlias(typing._GenericAlias, _root=True): + def __getattr__(self, attr): + if attr in _ATTRIBUTE_DELEGATION_EXCLUSIONS: + return object.__getattr__(self, attr) + return getattr(self.__origin__, attr) + + + class TypeAliasType: + """Create named, parameterized type aliases. + + This provides a backport of the new `type` statement in Python 3.12: + + type ListOrSet[T] = list[T] | set[T] + + is equivalent to: + + T = TypeVar("T") + ListOrSet = TypeAliasType("ListOrSet", list[T] | set[T], type_params=(T,)) + + The name ListOrSet can then be used as an alias for the type it refers to. + + The type_params argument should contain all the type parameters used + in the value of the type alias. If the alias is not generic, this + argument is omitted. + + Static type checkers should only support type aliases declared using + TypeAliasType that follow these rules: + + - The first argument (the name) must be a string literal. + - The TypeAliasType instance must be immediately assigned to a variable + of the same name. (For example, 'X = TypeAliasType("Y", int)' is invalid, + as is 'X, Y = TypeAliasType("X", int), TypeAliasType("Y", int)'). + + """ + + def __init__(self, name: str, value, *, type_params=()): + if not isinstance(name, str): + raise TypeError("TypeAliasType name must be a string") + if not isinstance(type_params, tuple): + raise TypeError("type_params must be a tuple") + self.__value__ = value + self.__type_params__ = type_params + + default_value_encountered = False + parameters = [] + for type_param in type_params: + if ( + not isinstance(type_param, (TypeVar, TypeVarTuple, ParamSpec)) + # <=3.11 + # Unpack Backport passes isinstance(type_param, TypeVar) + or _is_unpack(type_param) + ): + raise TypeError(f"Expected a type param, got {type_param!r}") + has_default = ( + getattr(type_param, '__default__', NoDefault) is not NoDefault + ) + if default_value_encountered and not has_default: + raise TypeError(f"non-default type parameter '{type_param!r}'" + " follows default type parameter") + if has_default: + default_value_encountered = True + if isinstance(type_param, TypeVarTuple): + parameters.extend(type_param) + else: + parameters.append(type_param) + self.__parameters__ = tuple(parameters) + def_mod = _caller() + if def_mod != 'typing_extensions': + self.__module__ = def_mod + # Setting this attribute closes the TypeAliasType from further modification + self.__name__ = name + + def __setattr__(self, name: str, value: object, /) -> None: + if hasattr(self, "__name__"): + self._raise_attribute_error(name) + super().__setattr__(name, value) + + def __delattr__(self, name: str, /) -> Never: + self._raise_attribute_error(name) + + def _raise_attribute_error(self, name: str) -> Never: + # Match the Python 3.12 error messages exactly + if name == "__name__": + raise AttributeError("readonly attribute") + elif name in {"__value__", "__type_params__", "__parameters__", "__module__"}: + raise AttributeError( + f"attribute '{name}' of 'typing.TypeAliasType' objects " + "is not writable" + ) + else: + raise AttributeError( + f"'typing.TypeAliasType' object has no attribute '{name}'" + ) + + def __repr__(self) -> str: + return self.__name__ + + if sys.version_info < (3, 11): + def _check_single_param(self, param, recursion=0): + # Allow [], [int], [int, str], [int, ...], [int, T] + if param is ...: + return ... + if param is None: + return None + # Note in <= 3.9 _ConcatenateGenericAlias inherits from list + if isinstance(param, list) and recursion == 0: + return [self._check_single_param(arg, recursion+1) + for arg in param] + return typing._type_check( + param, f'Subscripting {self.__name__} requires a type.' + ) + + def _check_parameters(self, parameters): + if sys.version_info < (3, 11): + return tuple( + self._check_single_param(item) + for item in parameters + ) + return tuple(typing._type_check( + item, f'Subscripting {self.__name__} requires a type.' + ) + for item in parameters + ) + + def __getitem__(self, parameters): + if not self.__type_params__: + raise TypeError("Only generic type aliases are subscriptable") + if not isinstance(parameters, tuple): + parameters = (parameters,) + # Using 3.9 here will create problems with Concatenate + if sys.version_info >= (3, 10): + return _types.GenericAlias(self, parameters) + type_vars = _collect_type_vars(parameters) + parameters = self._check_parameters(parameters) + alias = _TypeAliasGenericAlias(self, parameters) + # alias.__parameters__ is not complete if Concatenate is present + # as it is converted to a list from which no parameters are extracted. + if alias.__parameters__ != type_vars: + alias.__parameters__ = type_vars + return alias + + def __reduce__(self): + return self.__name__ + + def __init_subclass__(cls, *args, **kwargs): + raise TypeError( + "type 'typing_extensions.TypeAliasType' is not an acceptable base type" + ) + + # The presence of this method convinces typing._type_check + # that TypeAliasTypes are types. + def __call__(self): + raise TypeError("Type alias is not callable") + + # Breakpoint: https://github.com/python/cpython/pull/21515 + if sys.version_info >= (3, 10): + def __or__(self, right): + # For forward compatibility with 3.12, reject Unions + # that are not accepted by the built-in Union. + if not _is_unionable(right): + return NotImplemented + return typing.Union[self, right] + + def __ror__(self, left): + if not _is_unionable(left): + return NotImplemented + return typing.Union[left, self] + + +if hasattr(typing, "is_protocol"): + is_protocol = typing.is_protocol + get_protocol_members = typing.get_protocol_members +else: + def is_protocol(tp: type, /) -> bool: + """Return True if the given type is a Protocol. + + Example:: + + >>> from typing_extensions import Protocol, is_protocol + >>> class P(Protocol): + ... def a(self) -> str: ... + ... b: int + >>> is_protocol(P) + True + >>> is_protocol(int) + False + """ + return ( + isinstance(tp, type) + and getattr(tp, '_is_protocol', False) + and tp is not Protocol + and tp is not typing.Protocol + ) + + def get_protocol_members(tp: type, /) -> typing.FrozenSet[str]: + """Return the set of members defined in a Protocol. + + Example:: + + >>> from typing_extensions import Protocol, get_protocol_members + >>> class P(Protocol): + ... def a(self) -> str: ... + ... b: int + >>> get_protocol_members(P) + frozenset({'a', 'b'}) + + Raise a TypeError for arguments that are not Protocols. + """ + if not is_protocol(tp): + raise TypeError(f'{tp!r} is not a Protocol') + if hasattr(tp, '__protocol_attrs__'): + return frozenset(tp.__protocol_attrs__) + return frozenset(_get_protocol_attrs(tp)) + + +if hasattr(typing, "Doc"): + Doc = typing.Doc +else: + class Doc: + """Define the documentation of a type annotation using ``Annotated``, to be + used in class attributes, function and method parameters, return values, + and variables. + + The value should be a positional-only string literal to allow static tools + like editors and documentation generators to use it. + + This complements docstrings. + + The string value passed is available in the attribute ``documentation``. + + Example:: + + >>> from typing_extensions import Annotated, Doc + >>> def hi(to: Annotated[str, Doc("Who to say hi to")]) -> None: ... + """ + def __init__(self, documentation: str, /) -> None: + self.documentation = documentation + + def __repr__(self) -> str: + return f"Doc({self.documentation!r})" + + def __hash__(self) -> int: + return hash(self.documentation) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, Doc): + return NotImplemented + return self.documentation == other.documentation + + +_CapsuleType = getattr(_types, "CapsuleType", None) + +if _CapsuleType is None: + try: + import _socket + except ImportError: + pass + else: + _CAPI = getattr(_socket, "CAPI", None) + if _CAPI is not None: + _CapsuleType = type(_CAPI) + +if _CapsuleType is not None: + CapsuleType = _CapsuleType + __all__.append("CapsuleType") + + +if sys.version_info >= (3, 14): + from annotationlib import Format, get_annotations +else: + # Available since Python 3.14.0a3 + # PR: https://github.com/python/cpython/pull/124415 + class Format(enum.IntEnum): + VALUE = 1 + VALUE_WITH_FAKE_GLOBALS = 2 + FORWARDREF = 3 + STRING = 4 + + # Available since Python 3.14.0a1 + # PR: https://github.com/python/cpython/pull/119891 + def get_annotations(obj, *, globals=None, locals=None, eval_str=False, + format=Format.VALUE): + """Compute the annotations dict for an object. + + obj may be a callable, class, or module. + Passing in an object of any other type raises TypeError. + + Returns a dict. get_annotations() returns a new dict every time + it's called; calling it twice on the same object will return two + different but equivalent dicts. + + This is a backport of `inspect.get_annotations`, which has been + in the standard library since Python 3.10. See the standard library + documentation for more: + + https://docs.python.org/3/library/inspect.html#inspect.get_annotations + + This backport adds the *format* argument introduced by PEP 649. The + three formats supported are: + * VALUE: the annotations are returned as-is. This is the default and + it is compatible with the behavior on previous Python versions. + * FORWARDREF: return annotations as-is if possible, but replace any + undefined names with ForwardRef objects. The implementation proposed by + PEP 649 relies on language changes that cannot be backported; the + typing-extensions implementation simply returns the same result as VALUE. + * STRING: return annotations as strings, in a format close to the original + source. Again, this behavior cannot be replicated directly in a backport. + As an approximation, typing-extensions retrieves the annotations under + VALUE semantics and then stringifies them. + + The purpose of this backport is to allow users who would like to use + FORWARDREF or STRING semantics once PEP 649 is implemented, but who also + want to support earlier Python versions, to simply write: + + typing_extensions.get_annotations(obj, format=Format.FORWARDREF) + + """ + format = Format(format) + if format is Format.VALUE_WITH_FAKE_GLOBALS: + raise ValueError( + "The VALUE_WITH_FAKE_GLOBALS format is for internal use only" + ) + + if eval_str and format is not Format.VALUE: + raise ValueError("eval_str=True is only supported with format=Format.VALUE") + + if isinstance(obj, type): + # class + obj_dict = getattr(obj, '__dict__', None) + if obj_dict and hasattr(obj_dict, 'get'): + ann = obj_dict.get('__annotations__', None) + if isinstance(ann, _types.GetSetDescriptorType): + ann = None + else: + ann = None + + obj_globals = None + module_name = getattr(obj, '__module__', None) + if module_name: + module = sys.modules.get(module_name, None) + if module: + obj_globals = getattr(module, '__dict__', None) + obj_locals = dict(vars(obj)) + unwrap = obj + elif isinstance(obj, _types.ModuleType): + # module + ann = getattr(obj, '__annotations__', None) + obj_globals = obj.__dict__ + obj_locals = None + unwrap = None + elif callable(obj): + # this includes types.Function, types.BuiltinFunctionType, + # types.BuiltinMethodType, functools.partial, functools.singledispatch, + # "class funclike" from Lib/test/test_inspect... on and on it goes. + ann = getattr(obj, '__annotations__', None) + obj_globals = getattr(obj, '__globals__', None) + obj_locals = None + unwrap = obj + elif hasattr(obj, '__annotations__'): + ann = obj.__annotations__ + obj_globals = obj_locals = unwrap = None + else: + raise TypeError(f"{obj!r} is not a module, class, or callable.") + + if ann is None: + return {} + + if not isinstance(ann, dict): + raise ValueError(f"{obj!r}.__annotations__ is neither a dict nor None") + + if not ann: + return {} + + if not eval_str: + if format is Format.STRING: + return { + key: value if isinstance(value, str) else typing._type_repr(value) + for key, value in ann.items() + } + return dict(ann) + + if unwrap is not None: + while True: + if hasattr(unwrap, '__wrapped__'): + unwrap = unwrap.__wrapped__ + continue + if isinstance(unwrap, functools.partial): + unwrap = unwrap.func + continue + break + if hasattr(unwrap, "__globals__"): + obj_globals = unwrap.__globals__ + + if globals is None: + globals = obj_globals + if locals is None: + locals = obj_locals or {} + + # "Inject" type parameters into the local namespace + # (unless they are shadowed by assignments *in* the local namespace), + # as a way of emulating annotation scopes when calling `eval()` + if type_params := getattr(obj, "__type_params__", ()): + locals = {param.__name__: param for param in type_params} | locals + + return_value = {key: + value if not isinstance(value, str) else eval(value, globals, locals) + for key, value in ann.items() } + return return_value + + +if hasattr(typing, "evaluate_forward_ref"): + evaluate_forward_ref = typing.evaluate_forward_ref +else: + # Implements annotationlib.ForwardRef.evaluate + def _eval_with_owner( + forward_ref, *, owner=None, globals=None, locals=None, type_params=None + ): + if forward_ref.__forward_evaluated__: + return forward_ref.__forward_value__ + if getattr(forward_ref, "__cell__", None) is not None: + try: + value = forward_ref.__cell__.cell_contents + except ValueError: + pass + else: + forward_ref.__forward_evaluated__ = True + forward_ref.__forward_value__ = value + return value + if owner is None: + owner = getattr(forward_ref, "__owner__", None) + + if ( + globals is None + and getattr(forward_ref, "__forward_module__", None) is not None + ): + globals = getattr( + sys.modules.get(forward_ref.__forward_module__, None), "__dict__", None + ) + if globals is None: + globals = getattr(forward_ref, "__globals__", None) + if globals is None: + if isinstance(owner, type): + module_name = getattr(owner, "__module__", None) + if module_name: + module = sys.modules.get(module_name, None) + if module: + globals = getattr(module, "__dict__", None) + elif isinstance(owner, _types.ModuleType): + globals = getattr(owner, "__dict__", None) + elif callable(owner): + globals = getattr(owner, "__globals__", None) + + # If we pass None to eval() below, the globals of this module are used. + if globals is None: + globals = {} + + if locals is None: + locals = {} + if isinstance(owner, type): + locals.update(vars(owner)) + + if type_params is None and owner is not None: + # "Inject" type parameters into the local namespace + # (unless they are shadowed by assignments *in* the local namespace), + # as a way of emulating annotation scopes when calling `eval()` + type_params = getattr(owner, "__type_params__", None) + + # Type parameters exist in their own scope, which is logically + # between the locals and the globals. We simulate this by adding + # them to the globals. + if type_params is not None: + globals = dict(globals) + for param in type_params: + globals[param.__name__] = param + + arg = forward_ref.__forward_arg__ + if arg.isidentifier() and not keyword.iskeyword(arg): + if arg in locals: + value = locals[arg] + elif arg in globals: + value = globals[arg] + elif hasattr(builtins, arg): + return getattr(builtins, arg) + else: + raise NameError(arg) + else: + code = forward_ref.__forward_code__ + value = eval(code, globals, locals) + forward_ref.__forward_evaluated__ = True + forward_ref.__forward_value__ = value + return value + + def evaluate_forward_ref( + forward_ref, + *, + owner=None, + globals=None, + locals=None, + type_params=None, + format=None, + _recursive_guard=frozenset(), + ): + """Evaluate a forward reference as a type hint. + + This is similar to calling the ForwardRef.evaluate() method, + but unlike that method, evaluate_forward_ref() also: + + * Recursively evaluates forward references nested within the type hint. + * Rejects certain objects that are not valid type hints. + * Replaces type hints that evaluate to None with types.NoneType. + * Supports the *FORWARDREF* and *STRING* formats. + + *forward_ref* must be an instance of ForwardRef. *owner*, if given, + should be the object that holds the annotations that the forward reference + derived from, such as a module, class object, or function. It is used to + infer the namespaces to use for looking up names. *globals* and *locals* + can also be explicitly given to provide the global and local namespaces. + *type_params* is a tuple of type parameters that are in scope when + evaluating the forward reference. This parameter must be provided (though + it may be an empty tuple) if *owner* is not given and the forward reference + does not already have an owner set. *format* specifies the format of the + annotation and is a member of the annotationlib.Format enum. + + """ + if format == Format.STRING: + return forward_ref.__forward_arg__ + if forward_ref.__forward_arg__ in _recursive_guard: + return forward_ref + + # Evaluate the forward reference + try: + value = _eval_with_owner( + forward_ref, + owner=owner, + globals=globals, + locals=locals, + type_params=type_params, + ) + except NameError: + if format == Format.FORWARDREF: + return forward_ref + else: + raise + + if isinstance(value, str): + value = ForwardRef(value) + + # Recursively evaluate the type + if isinstance(value, ForwardRef): + if getattr(value, "__forward_module__", True) is not None: + globals = None + return evaluate_forward_ref( + value, + globals=globals, + locals=locals, + type_params=type_params, owner=owner, + _recursive_guard=_recursive_guard, format=format + ) + if sys.version_info < (3, 12, 5) and type_params: + # Make use of type_params + locals = dict(locals) if locals else {} + for tvar in type_params: + if tvar.__name__ not in locals: # lets not overwrite something present + locals[tvar.__name__] = tvar + if sys.version_info < (3, 12, 5): + return typing._eval_type( + value, + globals, + locals, + recursive_guard=_recursive_guard | {forward_ref.__forward_arg__}, + ) + else: + return typing._eval_type( + value, + globals, + locals, + type_params, + recursive_guard=_recursive_guard | {forward_ref.__forward_arg__}, + ) + + +class Sentinel: + """Create a unique sentinel object. + + *name* should be the name of the variable to which the return value shall be assigned. + + *repr*, if supplied, will be used for the repr of the sentinel object. + If not provided, "" will be used. + """ + + def __init__( + self, + name: str, + repr: typing.Optional[str] = None, + ): + self._name = name + self._repr = repr if repr is not None else f'<{name}>' + + def __repr__(self): + return self._repr + + if sys.version_info < (3, 11): + # The presence of this method convinces typing._type_check + # that Sentinels are types. + def __call__(self, *args, **kwargs): + raise TypeError(f"{type(self).__name__!r} object is not callable") + + # Breakpoint: https://github.com/python/cpython/pull/21515 + if sys.version_info >= (3, 10): + def __or__(self, other): + return typing.Union[self, other] + + def __ror__(self, other): + return typing.Union[other, self] + + def __getstate__(self): + raise TypeError(f"Cannot pickle {type(self).__name__!r} object") + + +if sys.version_info >= (3, 14, 0, "beta"): + type_repr = annotationlib.type_repr +else: + def type_repr(value): + """Convert a Python value to a format suitable for use with the STRING format. + + This is intended as a helper for tools that support the STRING format but do + not have access to the code that originally produced the annotations. It uses + repr() for most objects. + + """ + if isinstance(value, (type, _types.FunctionType, _types.BuiltinFunctionType)): + if value.__module__ == "builtins": + return value.__qualname__ + return f"{value.__module__}.{value.__qualname__}" + if value is ...: + return "..." + return repr(value) + + +# Aliases for items that are in typing in all supported versions. +# We use hasattr() checks so this library will continue to import on +# future versions of Python that may remove these names. +_typing_names = [ + "AbstractSet", + "AnyStr", + "BinaryIO", + "Callable", + "Collection", + "Container", + "Dict", + "FrozenSet", + "Hashable", + "IO", + "ItemsView", + "Iterable", + "Iterator", + "KeysView", + "List", + "Mapping", + "MappingView", + "Match", + "MutableMapping", + "MutableSequence", + "MutableSet", + "Optional", + "Pattern", + "Reversible", + "Sequence", + "Set", + "Sized", + "TextIO", + "Tuple", + "Union", + "ValuesView", + "cast", + "no_type_check", + "no_type_check_decorator", + # This is private, but it was defined by typing_extensions for a long time + # and some users rely on it. + "_AnnotatedAlias", +] +globals().update( + {name: getattr(typing, name) for name in _typing_names if hasattr(typing, name)} +) +# These are defined unconditionally because they are used in +# typing-extensions itself. +Generic = typing.Generic +ForwardRef = typing.ForwardRef +Annotated = typing.Annotated diff --git a/outputs/audit_venv/lib/python3.11/site-packages/typing_inspection-0.4.2+computecanada.dist-info/INSTALLER b/outputs/audit_venv/lib/python3.11/site-packages/typing_inspection-0.4.2+computecanada.dist-info/INSTALLER new file mode 100644 index 0000000000000000000000000000000000000000..a1b589e38a32041e49332e5e81c2d363dc418d68 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/typing_inspection-0.4.2+computecanada.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/outputs/audit_venv/lib/python3.11/site-packages/typing_inspection-0.4.2+computecanada.dist-info/METADATA b/outputs/audit_venv/lib/python3.11/site-packages/typing_inspection-0.4.2+computecanada.dist-info/METADATA new file mode 100644 index 0000000000000000000000000000000000000000..4963896cbe400ff39b2259506e32a58b73fa00ab --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/typing_inspection-0.4.2+computecanada.dist-info/METADATA @@ -0,0 +1,48 @@ +Metadata-Version: 2.2 +Name: typing_inspection +Version: 0.4.2+computecanada +Summary: Runtime typing introspection tools +Description-Content-Type: text/markdown +Classifier: Development Status :: 3 - Alpha +Classifier: Intended Audience :: Developers +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3 :: Only +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 +Classifier: Programming Language :: Python :: 3.14 +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Typing :: Typed +Author-email: Victorien Plot +Project-URL: Homepage, https://github.com/pydantic/typing-inspection +Project-URL: Documentation, https://pydantic.github.io/typing-inspection/dev/ +Project-URL: Source, https://github.com/pydantic/typing-inspection +Project-URL: Changelog, https://github.com/pydantic/typing-inspection/blob/main/HISTORY.md +Requires-Python: >=3.9 +Requires-Dist: typing-extensions>=4.12.0 +License-File: LICENSE + +# typing-inspection + +[![CI](https://img.shields.io/github/actions/workflow/status/pydantic/typing-inspection/ci.yml?branch=main&logo=github&label=CI)](https://github.com/pydantic/typing-inspection/actions?query=event%3Apush+branch%3Amain+workflow%3ACI) +[![Coverage](https://coverage-badge.samuelcolvin.workers.dev/pydantic/typing-inspection.svg)](https://coverage-badge.samuelcolvin.workers.dev/redirect/pydantic/typing-inspection) +[![PyPI](https://img.shields.io/pypi/v/typing-inspection.svg)](https://pypi.org/project/typing-inspection/) +[![Versions](https://img.shields.io/pypi/pyversions/typing-inspection.svg)](https://github.com/pydantic/typing-inspection) +[![License](https://img.shields.io/github/license/pydantic/typing-inspection.svg)](https://github.com/pydantic/typing-inspection/blob/main/LICENSE) +[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) + +`typing-inspection` provides tools to inspect type annotations at runtime. + +## Installation + +From [PyPI](https://pypi.org/project/typing-inspection/): + +```bash +pip install typing-inspection +``` + +The library can be imported from the `typing_inspection` module. diff --git a/outputs/audit_venv/lib/python3.11/site-packages/typing_inspection-0.4.2+computecanada.dist-info/RECORD b/outputs/audit_venv/lib/python3.11/site-packages/typing_inspection-0.4.2+computecanada.dist-info/RECORD new file mode 100644 index 0000000000000000000000000000000000000000..b7b101dcde3d002e4196732fa3562c4d28eeb788 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/typing_inspection-0.4.2+computecanada.dist-info/RECORD @@ -0,0 +1,13 @@ +typing_inspection-0.4.2+computecanada.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +typing_inspection-0.4.2+computecanada.dist-info/METADATA,sha256=cOyL3p3uYJBHfJtCz4QNHHt6ysTw32I4qGqqe06loWQ,2542 +typing_inspection-0.4.2+computecanada.dist-info/RECORD,, +typing_inspection-0.4.2+computecanada.dist-info/WHEEL,sha256=E4Ta9GSW8Vg2e11uZktRc054ObD9JXJ5hm6vpxg0WJE,87 +typing_inspection-0.4.2+computecanada.dist-info/licenses/LICENSE,sha256=gEtZsl8sMb0nj5ICoZrkmjlFqiZkOH4tChKMfKzGHsM,1090 +typing_inspection/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +typing_inspection/__pycache__/__init__.cpython-311.pyc,, +typing_inspection/__pycache__/introspection.cpython-311.pyc,, +typing_inspection/__pycache__/typing_objects.cpython-311.pyc,, +typing_inspection/introspection.py,sha256=dD5Ad4J6hAfF6UBzBO4sqSs1h2ybQVThkQofLWWVBP0,22534 +typing_inspection/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +typing_inspection/typing_objects.py,sha256=kajVgh8J7UZ7wTidVxzFMpjwSnFGBoDoTqfVAAvOHZ8,17166 +typing_inspection/typing_objects.pyi,sha256=u1NDpl_RJFnAUMAMx-WBd0SBKwVG7luLEc8ukSvRnZs,9401 diff --git a/outputs/audit_venv/lib/python3.11/site-packages/typing_inspection-0.4.2+computecanada.dist-info/WHEEL b/outputs/audit_venv/lib/python3.11/site-packages/typing_inspection-0.4.2+computecanada.dist-info/WHEEL new file mode 100644 index 0000000000000000000000000000000000000000..b270261c9bb44553b2f648368d1bf5cb7baf8416 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/typing_inspection-0.4.2+computecanada.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: wheelfile 0.0.8 +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/outputs/audit_venv/lib/python3.11/site-packages/typing_inspection-0.4.2+computecanada.dist-info/licenses/LICENSE b/outputs/audit_venv/lib/python3.11/site-packages/typing_inspection-0.4.2+computecanada.dist-info/licenses/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..e825ad51621c5e34d370ba64f13f6854d89456a6 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/typing_inspection-0.4.2+computecanada.dist-info/licenses/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Pydantic Services Inc. 2025 to present + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/outputs/audit_venv/lib/python3.11/site-packages/typing_inspection/__init__.py b/outputs/audit_venv/lib/python3.11/site-packages/typing_inspection/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/outputs/audit_venv/lib/python3.11/site-packages/typing_inspection/introspection.py b/outputs/audit_venv/lib/python3.11/site-packages/typing_inspection/introspection.py new file mode 100644 index 0000000000000000000000000000000000000000..d6c083e5456c8ad5da7559a3c0a901e0812a5014 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/typing_inspection/introspection.py @@ -0,0 +1,587 @@ +"""High-level introspection utilities, used to inspect type annotations.""" + +from __future__ import annotations + +import sys +import types +from collections.abc import Generator +from dataclasses import InitVar +from enum import Enum, IntEnum, auto +from typing import Any, Literal, NamedTuple, cast + +from typing_extensions import TypeAlias, assert_never, get_args, get_origin + +from . import typing_objects + +__all__ = ( + 'AnnotationSource', + 'ForbiddenQualifier', + 'InspectedAnnotation', + 'Qualifier', + 'get_literal_values', + 'inspect_annotation', + 'is_union_origin', +) + +if sys.version_info >= (3, 14) or sys.version_info < (3, 10): + + def is_union_origin(obj: Any, /) -> bool: + """Return whether the provided origin is the union form. + + ```pycon + >>> is_union_origin(typing.Union) + True + >>> is_union_origin(get_origin(int | str)) + True + >>> is_union_origin(types.UnionType) + True + ``` + + !!! note + Since Python 3.14, both `Union[, , ...]` and ` | | ...` forms create instances + of the same [`typing.Union`][] class. As such, it is recommended to not use this function + anymore (provided that you only support Python 3.14 or greater), and instead use the + [`typing_objects.is_union()`][typing_inspection.typing_objects.is_union] function directly: + + ```python + from typing import Union, get_origin + + from typing_inspection import typing_objects + + typ = int | str # Or Union[int, str] + origin = get_origin(typ) + if typing_objects.is_union(origin): + ... + ``` + """ + return typing_objects.is_union(obj) + + +else: + + def is_union_origin(obj: Any, /) -> bool: + """Return whether the provided origin is the union form. + + ```pycon + >>> is_union_origin(typing.Union) + True + >>> is_union_origin(get_origin(int | str)) + True + >>> is_union_origin(types.UnionType) + True + ``` + + !!! note + Since Python 3.14, both `Union[, , ...]` and ` | | ...` forms create instances + of the same [`typing.Union`][] class. As such, it is recommended to not use this function + anymore (provided that you only support Python 3.14 or greater), and instead use the + [`typing_objects.is_union()`][typing_inspection.typing_objects.is_union] function directly: + + ```python + from typing import Union, get_origin + + from typing_inspection import typing_objects + + typ = int | str # Or Union[int, str] + origin = get_origin(typ) + if typing_objects.is_union(origin): + ... + ``` + """ + return typing_objects.is_union(obj) or obj is types.UnionType + + +def _literal_type_check(value: Any, /) -> None: + """Type check the provided literal value against the legal parameters.""" + if ( + not isinstance(value, (int, bytes, str, bool, Enum, typing_objects.NoneType)) + and value is not typing_objects.NoneType + ): + raise TypeError(f'{value} is not a valid literal value, must be one of: int, bytes, str, Enum, None.') + + +def get_literal_values( + annotation: Any, + /, + *, + type_check: bool = False, + unpack_type_aliases: Literal['skip', 'lenient', 'eager'] = 'eager', +) -> Generator[Any]: + """Yield the values contained in the provided [`Literal`][typing.Literal] [special form][]. + + Args: + annotation: The [`Literal`][typing.Literal] [special form][] to unpack. + type_check: Whether to check if the literal values are [legal parameters][literal-legal-parameters]. + Raises a [`TypeError`][] otherwise. + unpack_type_aliases: What to do when encountering [PEP 695](https://peps.python.org/pep-0695/) + [type aliases][type-aliases]. Can be one of: + + - `'skip'`: Do not try to parse type aliases. Note that this can lead to incorrect results: + ```pycon + >>> type MyAlias = Literal[1, 2] + >>> list(get_literal_values(Literal[MyAlias, 3], unpack_type_aliases="skip")) + [MyAlias, 3] + ``` + + - `'lenient'`: Try to parse type aliases, and fallback to `'skip'` if the type alias can't be inspected + (because of an undefined forward reference). + + - `'eager'`: Parse type aliases and raise any encountered [`NameError`][] exceptions (the default): + ```pycon + >>> type MyAlias = Literal[1, 2] + >>> list(get_literal_values(Literal[MyAlias, 3], unpack_type_aliases="eager")) + [1, 2, 3] + ``` + + Note: + While `None` is [equivalent to][none] `type(None)`, the runtime implementation of [`Literal`][typing.Literal] + does not de-duplicate them. This function makes sure this de-duplication is applied: + + ```pycon + >>> list(get_literal_values(Literal[NoneType, None])) + [None] + ``` + + Example: + ```pycon + >>> type Ints = Literal[1, 2] + >>> list(get_literal_values(Literal[1, Ints], unpack_type_alias="skip")) + ["a", Ints] + >>> list(get_literal_values(Literal[1, Ints])) + [1, 2] + >>> list(get_literal_values(Literal[1.0], type_check=True)) + Traceback (most recent call last): + ... + TypeError: 1.0 is not a valid literal value, must be one of: int, bytes, str, Enum, None. + ``` + """ + # `literal` is guaranteed to be a `Literal[...]` special form, so use + # `__args__` directly instead of calling `get_args()`. + + if unpack_type_aliases == 'skip': + _has_none = False + # `Literal` parameters are already deduplicated, no need to do it ourselves. + # (we only check for `None` and `NoneType`, which should be considered as duplicates). + for arg in annotation.__args__: + if type_check: + _literal_type_check(arg) + if arg is None or arg is typing_objects.NoneType: + if not _has_none: + yield None + _has_none = True + else: + yield arg + else: + # We'll need to manually deduplicate parameters, see the `Literal` implementation in `typing`. + values_and_type: list[tuple[Any, type[Any]]] = [] + + for arg in annotation.__args__: + # Note: we could also check for generic aliases with a type alias as an origin. + # However, it is very unlikely that this happens as type variables can't appear in + # `Literal` forms, so the only valid (but unnecessary) use case would be something like: + # `type Test[T] = Literal['a']` (and then use `Test[SomeType]`). + if typing_objects.is_typealiastype(arg): + try: + alias_value = arg.__value__ + except NameError: + if unpack_type_aliases == 'eager': + raise + # unpack_type_aliases == "lenient": + if type_check: + _literal_type_check(arg) + values_and_type.append((arg, type(arg))) + else: + sub_args = get_literal_values( + alias_value, type_check=type_check, unpack_type_aliases=unpack_type_aliases + ) + values_and_type.extend((a, type(a)) for a in sub_args) # pyright: ignore[reportUnknownArgumentType] + else: + if type_check: + _literal_type_check(arg) + if arg is typing_objects.NoneType: + values_and_type.append((None, typing_objects.NoneType)) + else: + values_and_type.append((arg, type(arg))) # pyright: ignore[reportUnknownArgumentType] + + try: + dct = dict.fromkeys(values_and_type) + except TypeError: + # Unhashable parameters, the Python implementation allows them + yield from (p for p, _ in values_and_type) + else: + yield from (p for p, _ in dct) + + +Qualifier: TypeAlias = Literal['required', 'not_required', 'read_only', 'class_var', 'init_var', 'final'] +"""A [type qualifier][].""" + +_all_qualifiers: set[Qualifier] = set(get_args(Qualifier)) + + +# TODO at some point, we could switch to an enum flag, so that multiple sources +# can be combined. However, is there a need for this? +class AnnotationSource(IntEnum): + # TODO if/when https://peps.python.org/pep-0767/ is accepted, add 'read_only' + # to CLASS and NAMED_TUPLE (even though for named tuples it is redundant). + + """The source of an annotation, e.g. a class or a function. + + Depending on the source, different [type qualifiers][type qualifier] may be (dis)allowed. + """ + + ASSIGNMENT_OR_VARIABLE = auto() + """An annotation used in an assignment or variable annotation: + + ```python + x: Final[int] = 1 + y: Final[str] + ``` + + **Allowed type qualifiers:** [`Final`][typing.Final]. + """ + + CLASS = auto() + """An annotation used in the body of a class: + + ```python + class Test: + x: Final[int] = 1 + y: ClassVar[str] + ``` + + **Allowed type qualifiers:** [`ClassVar`][typing.ClassVar], [`Final`][typing.Final]. + """ + + DATACLASS = auto() + """An annotation used in the body of a dataclass: + + ```python + @dataclass + class Test: + x: Final[int] = 1 + y: InitVar[str] = 'test' + ``` + + **Allowed type qualifiers:** [`ClassVar`][typing.ClassVar], [`Final`][typing.Final], [`InitVar`][dataclasses.InitVar]. + """ # noqa: E501 + + TYPED_DICT = auto() + """An annotation used in the body of a [`TypedDict`][typing.TypedDict]: + + ```python + class TD(TypedDict): + x: Required[ReadOnly[int]] + y: ReadOnly[NotRequired[str]] + ``` + + **Allowed type qualifiers:** [`ReadOnly`][typing.ReadOnly], [`Required`][typing.Required], + [`NotRequired`][typing.NotRequired]. + """ + + NAMED_TUPLE = auto() + """An annotation used in the body of a [`NamedTuple`][typing.NamedTuple]. + + ```python + class NT(NamedTuple): + x: int + y: str + ``` + + **Allowed type qualifiers:** none. + """ + + FUNCTION = auto() + """An annotation used in a function, either for a parameter or the return value. + + ```python + def func(a: int) -> str: + ... + ``` + + **Allowed type qualifiers:** none. + """ + + ANY = auto() + """An annotation that might come from any source. + + **Allowed type qualifiers:** all. + """ + + BARE = auto() + """An annotation that is inspected as is. + + **Allowed type qualifiers:** none. + """ + + @property + def allowed_qualifiers(self) -> set[Qualifier]: + """The allowed [type qualifiers][type qualifier] for this annotation source.""" + # TODO use a match statement when Python 3.9 support is dropped. + if self is AnnotationSource.ASSIGNMENT_OR_VARIABLE: + return {'final'} + elif self is AnnotationSource.CLASS: + return {'final', 'class_var'} + elif self is AnnotationSource.DATACLASS: + return {'final', 'class_var', 'init_var'} + elif self is AnnotationSource.TYPED_DICT: + return {'required', 'not_required', 'read_only'} + elif self in (AnnotationSource.NAMED_TUPLE, AnnotationSource.FUNCTION, AnnotationSource.BARE): + return set() + elif self is AnnotationSource.ANY: + return _all_qualifiers + else: # pragma: no cover + assert_never(self) + + +class ForbiddenQualifier(Exception): + """The provided [type qualifier][] is forbidden.""" + + qualifier: Qualifier + """The forbidden qualifier.""" + + def __init__(self, qualifier: Qualifier, /) -> None: + self.qualifier = qualifier + + +class _UnknownTypeEnum(Enum): + UNKNOWN = auto() + + def __str__(self) -> str: + return 'UNKNOWN' + + def __repr__(self) -> str: + return '' + + +UNKNOWN = _UnknownTypeEnum.UNKNOWN +"""A sentinel value used when no [type expression][] is present.""" + +_UnkownType: TypeAlias = Literal[_UnknownTypeEnum.UNKNOWN] +"""The type of the [`UNKNOWN`][typing_inspection.introspection.UNKNOWN] sentinel value.""" + + +class InspectedAnnotation(NamedTuple): + """The result of the inspected annotation.""" + + type: Any | _UnkownType + """The final [type expression][], with [type qualifiers][type qualifier] and annotated metadata stripped. + + If no type expression is available, the [`UNKNOWN`][typing_inspection.introspection.UNKNOWN] sentinel + value is used instead. This is the case when a [type qualifier][] is used with no type annotation: + + ```python + ID: Final = 1 + + class C: + x: ClassVar = 'test' + ``` + """ + + qualifiers: set[Qualifier] + """The [type qualifiers][type qualifier] present on the annotation.""" + + metadata: list[Any] + """The annotated metadata.""" + + +def inspect_annotation( # noqa: PLR0915 + annotation: Any, + /, + *, + annotation_source: AnnotationSource, + unpack_type_aliases: Literal['skip', 'lenient', 'eager'] = 'skip', +) -> InspectedAnnotation: + """Inspect an [annotation expression][], extracting any [type qualifier][] and metadata. + + An [annotation expression][] is a [type expression][] optionally surrounded by one or more + [type qualifiers][type qualifier] or by [`Annotated`][typing.Annotated]. This function will: + + - Unwrap the type expression, keeping track of the type qualifiers. + - Unwrap [`Annotated`][typing.Annotated] forms, keeping track of the annotated metadata. + + Args: + annotation: The annotation expression to be inspected. + annotation_source: The source of the annotation. Depending on the source (e.g. a class), different type + qualifiers may be (dis)allowed. To allow any type qualifier, use + [`AnnotationSource.ANY`][typing_inspection.introspection.AnnotationSource.ANY]. + unpack_type_aliases: What to do when encountering [PEP 695](https://peps.python.org/pep-0695/) + [type aliases][type-aliases]. Can be one of: + + - `'skip'`: Do not try to parse type aliases (the default): + ```pycon + >>> type MyInt = Annotated[int, 'meta'] + >>> inspect_annotation(MyInt, annotation_source=AnnotationSource.BARE, unpack_type_aliases='skip') + InspectedAnnotation(type=MyInt, qualifiers={}, metadata=[]) + ``` + + - `'lenient'`: Try to parse type aliases, and fallback to `'skip'` if the type alias + can't be inspected (because of an undefined forward reference): + ```pycon + >>> type MyInt = Annotated[Undefined, 'meta'] + >>> inspect_annotation(MyInt, annotation_source=AnnotationSource.BARE, unpack_type_aliases='lenient') + InspectedAnnotation(type=MyInt, qualifiers={}, metadata=[]) + >>> Undefined = int + >>> inspect_annotation(MyInt, annotation_source=AnnotationSource.BARE, unpack_type_aliases='lenient') + InspectedAnnotation(type=int, qualifiers={}, metadata=['meta']) + ``` + + - `'eager'`: Parse type aliases and raise any encountered [`NameError`][] exceptions. + + Returns: + The result of the inspected annotation, where the type expression, used qualifiers and metadata is stored. + + Example: + ```pycon + >>> inspect_annotation( + ... Final[Annotated[ClassVar[Annotated[int, 'meta_1']], 'meta_2']], + ... annotation_source=AnnotationSource.CLASS, + ... ) + ... + InspectedAnnotation(type=int, qualifiers={'class_var', 'final'}, metadata=['meta_1', 'meta_2']) + ``` + """ + allowed_qualifiers = annotation_source.allowed_qualifiers + qualifiers: set[Qualifier] = set() + metadata: list[Any] = [] + + while True: + annotation, _meta = _unpack_annotated(annotation, unpack_type_aliases=unpack_type_aliases) + if _meta: + metadata = _meta + metadata + continue + + origin = get_origin(annotation) + if origin is not None: + if typing_objects.is_classvar(origin): + if 'class_var' not in allowed_qualifiers: + raise ForbiddenQualifier('class_var') + qualifiers.add('class_var') + annotation = annotation.__args__[0] + elif typing_objects.is_final(origin): + if 'final' not in allowed_qualifiers: + raise ForbiddenQualifier('final') + qualifiers.add('final') + annotation = annotation.__args__[0] + elif typing_objects.is_required(origin): + if 'required' not in allowed_qualifiers: + raise ForbiddenQualifier('required') + qualifiers.add('required') + annotation = annotation.__args__[0] + elif typing_objects.is_notrequired(origin): + if 'not_required' not in allowed_qualifiers: + raise ForbiddenQualifier('not_required') + qualifiers.add('not_required') + annotation = annotation.__args__[0] + elif typing_objects.is_readonly(origin): + if 'read_only' not in allowed_qualifiers: + raise ForbiddenQualifier('not_required') + qualifiers.add('read_only') + annotation = annotation.__args__[0] + else: + # origin is not None but not a type qualifier nor `Annotated` (e.g. `list[int]`): + break + elif isinstance(annotation, InitVar): + if 'init_var' not in allowed_qualifiers: + raise ForbiddenQualifier('init_var') + qualifiers.add('init_var') + annotation = cast(Any, annotation.type) + else: + break + + # `Final`, `ClassVar` and `InitVar` are type qualifiers allowed to be used as a bare annotation: + if typing_objects.is_final(annotation): + if 'final' not in allowed_qualifiers: + raise ForbiddenQualifier('final') + qualifiers.add('final') + annotation = UNKNOWN + elif typing_objects.is_classvar(annotation): + if 'class_var' not in allowed_qualifiers: + raise ForbiddenQualifier('class_var') + qualifiers.add('class_var') + annotation = UNKNOWN + elif annotation is InitVar: + if 'init_var' not in allowed_qualifiers: + raise ForbiddenQualifier('init_var') + qualifiers.add('init_var') + annotation = UNKNOWN + + return InspectedAnnotation(annotation, qualifiers, metadata) + + +def _unpack_annotated_inner( + annotation: Any, unpack_type_aliases: Literal['lenient', 'eager'], check_annotated: bool +) -> tuple[Any, list[Any]]: + origin = get_origin(annotation) + if check_annotated and typing_objects.is_annotated(origin): + annotated_type = annotation.__origin__ + metadata = list(annotation.__metadata__) + + # The annotated type might be a PEP 695 type alias, so we need to recursively + # unpack it. Because Python already flattens `Annotated[Annotated[, ...], ...]` forms, + # we can skip the `is_annotated()` check in the next call: + annotated_type, sub_meta = _unpack_annotated_inner( + annotated_type, unpack_type_aliases=unpack_type_aliases, check_annotated=False + ) + metadata = sub_meta + metadata + return annotated_type, metadata + elif typing_objects.is_typealiastype(annotation): + try: + value = annotation.__value__ + except NameError: + if unpack_type_aliases == 'eager': + raise + else: + typ, metadata = _unpack_annotated_inner( + value, unpack_type_aliases=unpack_type_aliases, check_annotated=True + ) + if metadata: + # Having metadata means the type alias' `__value__` was an `Annotated` form + # (or, recursively, a type alias to an `Annotated` form). It is important to check + # for this, as we don't want to unpack other type aliases (e.g. `type MyInt = int`). + return typ, metadata + return annotation, [] + elif typing_objects.is_typealiastype(origin): + # When parameterized, PEP 695 type aliases become generic aliases + # (e.g. with `type MyList[T] = Annotated[list[T], ...]`, `MyList[int]` + # is a generic alias). + try: + value = origin.__value__ + except NameError: + if unpack_type_aliases == 'eager': + raise + else: + # While Python already handles type variable replacement for simple `Annotated` forms, + # we need to manually apply the same logic for PEP 695 type aliases: + # - With `MyList = Annotated[list[T], ...]`, `MyList[int] == Annotated[list[int], ...]` + # - With `type MyList[T] = Annotated[list[T], ...]`, `MyList[int].__value__ == Annotated[list[T], ...]`. + + try: + # To do so, we emulate the parameterization of the value with the arguments: + # with `type MyList[T] = Annotated[list[T], ...]`, to emulate `MyList[int]`, + # we do `Annotated[list[T], ...][int]` (which gives `Annotated[list[T], ...]`): + value = value[annotation.__args__] + except TypeError: + # Might happen if the type alias is parameterized, but its value doesn't have any + # type variables, e.g. `type MyInt[T] = int`. + pass + typ, metadata = _unpack_annotated_inner( + value, unpack_type_aliases=unpack_type_aliases, check_annotated=True + ) + if metadata: + return typ, metadata + return annotation, [] + + return annotation, [] + + +# This could eventually be made public: +def _unpack_annotated( + annotation: Any, /, *, unpack_type_aliases: Literal['skip', 'lenient', 'eager'] = 'eager' +) -> tuple[Any, list[Any]]: + if unpack_type_aliases == 'skip': + if typing_objects.is_annotated(get_origin(annotation)): + return annotation.__origin__, list(annotation.__metadata__) + else: + return annotation, [] + + return _unpack_annotated_inner(annotation, unpack_type_aliases=unpack_type_aliases, check_annotated=True) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/typing_inspection/py.typed b/outputs/audit_venv/lib/python3.11/site-packages/typing_inspection/py.typed new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/outputs/audit_venv/lib/python3.11/site-packages/typing_inspection/typing_objects.py b/outputs/audit_venv/lib/python3.11/site-packages/typing_inspection/typing_objects.py new file mode 100644 index 0000000000000000000000000000000000000000..dc44ba98cd8ccdba374982819083d89bbf808c2e --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/typing_inspection/typing_objects.py @@ -0,0 +1,607 @@ +"""Low-level introspection utilities for [`typing`][] members. + +The provided functions in this module check against both the [`typing`][] and [`typing_extensions`][] +variants, if they exists and are different. +""" +# ruff: noqa: UP006 + +import collections.abc +import contextlib +import re +import sys +import typing +import warnings +from textwrap import dedent +from types import FunctionType, GenericAlias +from typing import Any, Final + +import typing_extensions +from typing_extensions import LiteralString, TypeAliasType, TypeIs, deprecated + +__all__ = ( + 'DEPRECATED_ALIASES', + 'NoneType', + 'is_annotated', + 'is_any', + 'is_classvar', + 'is_concatenate', + 'is_deprecated', + 'is_final', + 'is_forwardref', + 'is_generic', + 'is_literal', + 'is_literalstring', + 'is_namedtuple', + 'is_never', + 'is_newtype', + 'is_nodefault', + 'is_noextraitems', + 'is_noreturn', + 'is_notrequired', + 'is_paramspec', + 'is_paramspecargs', + 'is_paramspeckwargs', + 'is_readonly', + 'is_required', + 'is_self', + 'is_typealias', + 'is_typealiastype', + 'is_typeguard', + 'is_typeis', + 'is_typevar', + 'is_typevartuple', + 'is_union', + 'is_unpack', +) + +_IS_PY310 = sys.version_info[:2] == (3, 10) + + +def _compile_identity_check_function(member: LiteralString, function_name: LiteralString) -> FunctionType: + """Create a function checking that the function argument is the (unparameterized) typing `member`. + + The function will make sure to check against both the `typing` and `typing_extensions` + variants as depending on the Python version, the `typing_extensions` variant might be different. + For instance, on Python 3.9: + + ```pycon + >>> from typing import Literal as t_Literal + >>> from typing_extensions import Literal as te_Literal, get_origin + + >>> t_Literal is te_Literal + False + >>> get_origin(t_Literal[1]) + typing.Literal + >>> get_origin(te_Literal[1]) + typing_extensions.Literal + ``` + """ + in_typing = hasattr(typing, member) + in_typing_extensions = hasattr(typing_extensions, member) + + if in_typing and in_typing_extensions: + if getattr(typing, member) is getattr(typing_extensions, member): + check_code = f'obj is typing.{member}' + else: + check_code = f'obj is typing.{member} or obj is typing_extensions.{member}' + elif in_typing and not in_typing_extensions: + check_code = f'obj is typing.{member}' + elif not in_typing and in_typing_extensions: + check_code = f'obj is typing_extensions.{member}' + else: + check_code = 'False' + + func_code = dedent(f""" + def {function_name}(obj: Any, /) -> bool: + return {check_code} + """) + + locals_: dict[str, Any] = {} + globals_: dict[str, Any] = {'Any': Any, 'typing': typing, 'typing_extensions': typing_extensions} + exec(func_code, globals_, locals_) + return locals_[function_name] + + +def _compile_isinstance_check_function(member: LiteralString, function_name: LiteralString) -> FunctionType: + """Create a function checking that the function is an instance of the typing `member`. + + The function will make sure to check against both the `typing` and `typing_extensions` + variants as depending on the Python version, the `typing_extensions` variant might be different. + """ + in_typing = hasattr(typing, member) + in_typing_extensions = hasattr(typing_extensions, member) + + if in_typing and in_typing_extensions: + if getattr(typing, member) is getattr(typing_extensions, member): + check_code = f'isinstance(obj, typing.{member})' + else: + check_code = f'isinstance(obj, (typing.{member}, typing_extensions.{member}))' + elif in_typing and not in_typing_extensions: + check_code = f'isinstance(obj, typing.{member})' + elif not in_typing and in_typing_extensions: + check_code = f'isinstance(obj, typing_extensions.{member})' + else: + check_code = 'False' + + func_code = dedent(f""" + def {function_name}(obj: Any, /) -> 'TypeIs[{member}]': + return {check_code} + """) + + locals_: dict[str, Any] = {} + globals_: dict[str, Any] = {'Any': Any, 'typing': typing, 'typing_extensions': typing_extensions} + exec(func_code, globals_, locals_) + return locals_[function_name] + + +if sys.version_info >= (3, 10): + from types import NoneType +else: + NoneType = type(None) + +# Keep this ordered, as per `typing.__all__`: + +is_annotated = _compile_identity_check_function('Annotated', 'is_annotated') +is_annotated.__doc__ = """ +Return whether the argument is the [`Annotated`][typing.Annotated] [special form][]. + +```pycon +>>> is_annotated(Annotated) +True +>>> is_annotated(Annotated[int, ...]) +False +``` +""" + +is_any = _compile_identity_check_function('Any', 'is_any') +is_any.__doc__ = """ +Return whether the argument is the [`Any`][typing.Any] [special form][]. + +```pycon +>>> is_any(Any) +True +``` +""" + +is_classvar = _compile_identity_check_function('ClassVar', 'is_classvar') +is_classvar.__doc__ = """ +Return whether the argument is the [`ClassVar`][typing.ClassVar] [type qualifier][]. + +```pycon +>>> is_classvar(ClassVar) +True +>>> is_classvar(ClassVar[int]) +>>> False +``` +""" + +is_concatenate = _compile_identity_check_function('Concatenate', 'is_concatenate') +is_concatenate.__doc__ = """ +Return whether the argument is the [`Concatenate`][typing.Concatenate] [special form][]. + +```pycon +>>> is_concatenate(Concatenate) +True +>>> is_concatenate(Concatenate[int, P]) +False +``` +""" + +is_final = _compile_identity_check_function('Final', 'is_final') +is_final.__doc__ = """ +Return whether the argument is the [`Final`][typing.Final] [type qualifier][]. + +```pycon +>>> is_final(Final) +True +>>> is_final(Final[int]) +False +``` +""" + + +# Unlikely to have a different version in `typing-extensions`, but keep it consistent. +# Also note that starting in 3.14, this is an alias to `annotationlib.ForwardRef`, but +# accessing it from `typing` doesn't seem to be deprecated. +is_forwardref = _compile_isinstance_check_function('ForwardRef', 'is_forwardref') +is_forwardref.__doc__ = """ +Return whether the argument is an instance of [`ForwardRef`][typing.ForwardRef]. + +```pycon +>>> is_forwardref(ForwardRef('T')) +True +``` +""" + + +is_generic = _compile_identity_check_function('Generic', 'is_generic') +is_generic.__doc__ = """ +Return whether the argument is the [`Generic`][typing.Generic] [special form][]. + +```pycon +>>> is_generic(Generic) +True +>>> is_generic(Generic[T]) +False +``` +""" + +is_literal = _compile_identity_check_function('Literal', 'is_literal') +is_literal.__doc__ = """ +Return whether the argument is the [`Literal`][typing.Literal] [special form][]. + +```pycon +>>> is_literal(Literal) +True +>>> is_literal(Literal["a"]) +False +``` +""" + + +# `get_origin(Optional[int]) is Union`, so `is_optional()` isn't implemented. + +is_paramspec = _compile_isinstance_check_function('ParamSpec', 'is_paramspec') +is_paramspec.__doc__ = """ +Return whether the argument is an instance of [`ParamSpec`][typing.ParamSpec]. + +```pycon +>>> P = ParamSpec('P') +>>> is_paramspec(P) +True +``` +""" + +# Protocol? + +is_typevar = _compile_isinstance_check_function('TypeVar', 'is_typevar') +is_typevar.__doc__ = """ +Return whether the argument is an instance of [`TypeVar`][typing.TypeVar]. + +```pycon +>>> T = TypeVar('T') +>>> is_typevar(T) +True +``` +""" + +is_typevartuple = _compile_isinstance_check_function('TypeVarTuple', 'is_typevartuple') +is_typevartuple.__doc__ = """ +Return whether the argument is an instance of [`TypeVarTuple`][typing.TypeVarTuple]. + +```pycon +>>> Ts = TypeVarTuple('Ts') +>>> is_typevartuple(Ts) +True +``` +""" + +is_union = _compile_identity_check_function('Union', 'is_union') +is_union.__doc__ = """ +Return whether the argument is the [`Union`][typing.Union] [special form][]. + +This function can also be used to check for the [`Optional`][typing.Optional] [special form][], +as at runtime, `Optional[int]` is equivalent to `Union[int, None]`. + +```pycon +>>> is_union(Union) +True +>>> is_union(Union[int, str]) +False +``` + +!!! warning + This does not check for unions using the [new syntax][types-union] (e.g. `int | str`). +""" + + +def is_namedtuple(obj: Any, /) -> bool: + """Return whether the argument is a named tuple type. + + This includes [`NamedTuple`][typing.NamedTuple] subclasses and classes created from the + [`collections.namedtuple`][] factory function. + + ```pycon + >>> class User(NamedTuple): + ... name: str + ... + >>> is_namedtuple(User) + True + >>> City = collections.namedtuple('City', []) + >>> is_namedtuple(City) + True + >>> is_namedtuple(NamedTuple) + False + ``` + """ + return isinstance(obj, type) and issubclass(obj, tuple) and hasattr(obj, '_fields') # pyright: ignore[reportUnknownArgumentType] + + +# TypedDict? + +# BinaryIO? IO? TextIO? + +is_literalstring = _compile_identity_check_function('LiteralString', 'is_literalstring') +is_literalstring.__doc__ = """ +Return whether the argument is the [`LiteralString`][typing.LiteralString] [special form][]. + +```pycon +>>> is_literalstring(LiteralString) +True +``` +""" + +is_never = _compile_identity_check_function('Never', 'is_never') +is_never.__doc__ = """ +Return whether the argument is the [`Never`][typing.Never] [special form][]. + +```pycon +>>> is_never(Never) +True +``` +""" + +if sys.version_info >= (3, 10): + is_newtype = _compile_isinstance_check_function('NewType', 'is_newtype') +else: # On Python 3.10, `NewType` is a function. + + def is_newtype(obj: Any, /) -> bool: + return hasattr(obj, '__supertype__') + + +is_newtype.__doc__ = """ +Return whether the argument is a [`NewType`][typing.NewType]. + +```pycon +>>> UserId = NewType("UserId", int) +>>> is_newtype(UserId) +True +``` +""" + +is_nodefault = _compile_identity_check_function('NoDefault', 'is_nodefault') +is_nodefault.__doc__ = """ +Return whether the argument is the [`NoDefault`][typing.NoDefault] sentinel object. + +```pycon +>>> is_nodefault(NoDefault) +True +``` +""" + +is_noextraitems = _compile_identity_check_function('NoExtraItems', 'is_noextraitems') +is_noextraitems.__doc__ = """ +Return whether the argument is the `NoExtraItems` sentinel object. + +```pycon +>>> is_noextraitems(NoExtraItems) +True +``` +""" + +is_noreturn = _compile_identity_check_function('NoReturn', 'is_noreturn') +is_noreturn.__doc__ = """ +Return whether the argument is the [`NoReturn`][typing.NoReturn] [special form][]. + +```pycon +>>> is_noreturn(NoReturn) +True +>>> is_noreturn(Never) +False +``` +""" + +is_notrequired = _compile_identity_check_function('NotRequired', 'is_notrequired') +is_notrequired.__doc__ = """ +Return whether the argument is the [`NotRequired`][typing.NotRequired] [special form][]. + +```pycon +>>> is_notrequired(NotRequired) +True +``` +""" + +is_paramspecargs = _compile_isinstance_check_function('ParamSpecArgs', 'is_paramspecargs') +is_paramspecargs.__doc__ = """ +Return whether the argument is an instance of [`ParamSpecArgs`][typing.ParamSpecArgs]. + +```pycon +>>> P = ParamSpec('P') +>>> is_paramspecargs(P.args) +True +``` +""" + +is_paramspeckwargs = _compile_isinstance_check_function('ParamSpecKwargs', 'is_paramspeckwargs') +is_paramspeckwargs.__doc__ = """ +Return whether the argument is an instance of [`ParamSpecKwargs`][typing.ParamSpecKwargs]. + +```pycon +>>> P = ParamSpec('P') +>>> is_paramspeckwargs(P.kwargs) +True +``` +""" + +is_readonly = _compile_identity_check_function('ReadOnly', 'is_readonly') +is_readonly.__doc__ = """ +Return whether the argument is the [`ReadOnly`][typing.ReadOnly] [special form][]. + +```pycon +>>> is_readonly(ReadOnly) +True +``` +""" + +is_required = _compile_identity_check_function('Required', 'is_required') +is_required.__doc__ = """ +Return whether the argument is the [`Required`][typing.Required] [special form][]. + +```pycon +>>> is_required(Required) +True +``` +""" + +is_self = _compile_identity_check_function('Self', 'is_self') +is_self.__doc__ = """ +Return whether the argument is the [`Self`][typing.Self] [special form][]. + +```pycon +>>> is_self(Self) +True +``` +""" + +# TYPE_CHECKING? + +is_typealias = _compile_identity_check_function('TypeAlias', 'is_typealias') +is_typealias.__doc__ = """ +Return whether the argument is the [`TypeAlias`][typing.TypeAlias] [special form][]. + +```pycon +>>> is_typealias(TypeAlias) +True +``` +""" + +is_typeguard = _compile_identity_check_function('TypeGuard', 'is_typeguard') +is_typeguard.__doc__ = """ +Return whether the argument is the [`TypeGuard`][typing.TypeGuard] [special form][]. + +```pycon +>>> is_typeguard(TypeGuard) +True +``` +""" + +is_typeis = _compile_identity_check_function('TypeIs', 'is_typeis') +is_typeis.__doc__ = """ +Return whether the argument is the [`TypeIs`][typing.TypeIs] [special form][]. + +```pycon +>>> is_typeis(TypeIs) +True +``` +""" + +_is_typealiastype_inner = _compile_isinstance_check_function('TypeAliasType', '_is_typealiastype_inner') + + +if _IS_PY310: + # Parameterized PEP 695 type aliases are instances of `types.GenericAlias` in typing_extensions>=4.13.0. + # On Python 3.10, with `Alias[int]` being such an instance of `GenericAlias`, + # `isinstance(Alias[int], TypeAliasType)` returns `True`. + # See https://github.com/python/cpython/issues/89828. + def is_typealiastype(obj: Any, /) -> 'TypeIs[TypeAliasType]': + return type(obj) is not GenericAlias and _is_typealiastype_inner(obj) +else: + is_typealiastype = _compile_isinstance_check_function('TypeAliasType', 'is_typealiastype') + +is_typealiastype.__doc__ = """ +Return whether the argument is a [`TypeAliasType`][typing.TypeAliasType] instance. + +```pycon +>>> type MyInt = int +>>> is_typealiastype(MyInt) +True +>>> MyStr = TypeAliasType("MyStr", str) +>>> is_typealiastype(MyStr): +True +>>> type MyList[T] = list[T] +>>> is_typealiastype(MyList[int]) +False +``` +""" + +is_unpack = _compile_identity_check_function('Unpack', 'is_unpack') +is_unpack.__doc__ = """ +Return whether the argument is the [`Unpack`][typing.Unpack] [special form][]. + +```pycon +>>> is_unpack(Unpack) +True +>>> is_unpack(Unpack[Ts]) +False +``` +""" + + +if sys.version_info >= (3, 13): + + def is_deprecated(obj: Any, /) -> 'TypeIs[deprecated]': + return isinstance(obj, (warnings.deprecated, typing_extensions.deprecated)) + +else: + + def is_deprecated(obj: Any, /) -> 'TypeIs[deprecated]': + return isinstance(obj, typing_extensions.deprecated) + + +is_deprecated.__doc__ = """ +Return whether the argument is a [`deprecated`][warnings.deprecated] instance. + +This also includes the [`typing_extensions` backport][typing_extensions.deprecated]. + +```pycon +>>> is_deprecated(warnings.deprecated('message')) +True +>>> is_deprecated(typing_extensions.deprecated('message')) +True +``` +""" + + +# Aliases defined in the `typing` module using `typing._SpecialGenericAlias` (itself aliased as `alias()`): +DEPRECATED_ALIASES: Final[dict[Any, type[Any]]] = { + typing.Hashable: collections.abc.Hashable, + typing.Awaitable: collections.abc.Awaitable, + typing.Coroutine: collections.abc.Coroutine, + typing.AsyncIterable: collections.abc.AsyncIterable, + typing.AsyncIterator: collections.abc.AsyncIterator, + typing.Iterable: collections.abc.Iterable, + typing.Iterator: collections.abc.Iterator, + typing.Reversible: collections.abc.Reversible, + typing.Sized: collections.abc.Sized, + typing.Container: collections.abc.Container, + typing.Collection: collections.abc.Collection, + # type ignore reason: https://github.com/python/typeshed/issues/6257: + typing.Callable: collections.abc.Callable, # pyright: ignore[reportAssignmentType, reportUnknownMemberType] + typing.AbstractSet: collections.abc.Set, + typing.MutableSet: collections.abc.MutableSet, + typing.Mapping: collections.abc.Mapping, + typing.MutableMapping: collections.abc.MutableMapping, + typing.Sequence: collections.abc.Sequence, + typing.MutableSequence: collections.abc.MutableSequence, + typing.Tuple: tuple, + typing.List: list, + typing.Deque: collections.deque, + typing.Set: set, + typing.FrozenSet: frozenset, + typing.MappingView: collections.abc.MappingView, + typing.KeysView: collections.abc.KeysView, + typing.ItemsView: collections.abc.ItemsView, + typing.ValuesView: collections.abc.ValuesView, + typing.Dict: dict, + typing.DefaultDict: collections.defaultdict, + typing.OrderedDict: collections.OrderedDict, + typing.Counter: collections.Counter, + typing.ChainMap: collections.ChainMap, + typing.Generator: collections.abc.Generator, + typing.AsyncGenerator: collections.abc.AsyncGenerator, + typing.Type: type, + # Defined in `typing.__getattr__`: + typing.Pattern: re.Pattern, + typing.Match: re.Match, + typing.ContextManager: contextlib.AbstractContextManager, + typing.AsyncContextManager: contextlib.AbstractAsyncContextManager, + # Skipped: `ByteString` (deprecated, removed in 3.14) +} +"""A mapping between the deprecated typing aliases to their replacement, as per [PEP 585](https://peps.python.org/pep-0585/).""" + + +# Add the `typing_extensions` aliases: +for alias, target in list(DEPRECATED_ALIASES.items()): + # Use `alias.__name__` when we drop support for Python 3.9 + if (te_alias := getattr(typing_extensions, alias._name, None)) is not None: + DEPRECATED_ALIASES[te_alias] = target diff --git a/outputs/audit_venv/lib/python3.11/site-packages/typing_inspection/typing_objects.pyi b/outputs/audit_venv/lib/python3.11/site-packages/typing_inspection/typing_objects.pyi new file mode 100644 index 0000000000000000000000000000000000000000..5071598005a21063ff3b2a2a1dedced885267de6 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/typing_inspection/typing_objects.pyi @@ -0,0 +1,417 @@ +# Stub file generated using: +# `stubgen --inspect-mode --include-docstrings -m typing_inspection.typing_objects` +# (manual edits need to be applied). +"""Low-level introspection utilities for [`typing`][] members. + +The provided functions in this module check against both the [`typing`][] and [`typing_extensions`][] +variants, if they exists and are different. +""" + +import sys +from typing import Any, Final, ForwardRef, NewType, TypeVar + +from typing_extensions import ParamSpec, ParamSpecArgs, ParamSpecKwargs, TypeAliasType, TypeIs, TypeVarTuple, deprecated + +__all__ = [ + 'DEPRECATED_ALIASES', + 'NoneType', + 'is_annotated', + 'is_any', + 'is_classvar', + 'is_concatenate', + 'is_deprecated', + 'is_final', + 'is_generic', + 'is_literal', + 'is_literalstring', + 'is_namedtuple', + 'is_never', + 'is_newtype', + 'is_nodefault', + 'is_noextraitems', + 'is_noreturn', + 'is_notrequired', + 'is_paramspec', + 'is_paramspecargs', + 'is_paramspeckwargs', + 'is_readonly', + 'is_required', + 'is_self', + 'is_typealias', + 'is_typealiastype', + 'is_typeguard', + 'is_typeis', + 'is_typevar', + 'is_typevartuple', + 'is_union', + 'is_unpack', +] + +if sys.version_info >= (3, 10): + from types import NoneType +else: + NoneType = type(None) + +def is_annotated(obj: Any, /) -> bool: + """ + Return whether the argument is the [`Annotated`][typing.Annotated] [special form][]. + + ```pycon + >>> is_annotated(Annotated) + True + >>> is_annotated(Annotated[int, ...]) + False + ``` + """ + +def is_any(obj: Any, /) -> bool: + """ + Return whether the argument is the [`Any`][typing.Any] [special form][]. + + ```pycon + >>> is_any(Any) + True + ``` + """ + +def is_classvar(obj: Any, /) -> bool: + """ + Return whether the argument is the [`ClassVar`][typing.ClassVar] [type qualifier][]. + + ```pycon + >>> is_classvar(ClassVar) + True + >>> is_classvar(ClassVar[int]) + >>> False + ``` + """ + +def is_concatenate(obj: Any, /) -> bool: + """ + Return whether the argument is the [`Concatenate`][typing.Concatenate] [special form][]. + + ```pycon + >>> is_concatenate(Concatenate) + True + >>> is_concatenate(Concatenate[int, P]) + False + ``` + """ + +def is_final(obj: Any, /) -> bool: + """ + Return whether the argument is the [`Final`][typing.Final] [type qualifier][]. + + ```pycon + >>> is_final(Final) + True + >>> is_final(Final[int]) + False + ``` + """ + +def is_forwardref(obj: Any, /) -> TypeIs[ForwardRef]: + """ + Return whether the argument is an instance of [`ForwardRef`][typing.ForwardRef]. + + ```pycon + >>> is_forwardref(ForwardRef('T')) + True + ``` + """ + +def is_generic(obj: Any, /) -> bool: + """ + Return whether the argument is the [`Generic`][typing.Generic] [special form][]. + + ```pycon + >>> is_generic(Generic) + True + >>> is_generic(Generic[T]) + False + ``` + """ + +def is_literal(obj: Any, /) -> bool: + """ + Return whether the argument is the [`Literal`][typing.Literal] [special form][]. + + ```pycon + >>> is_literal(Literal) + True + >>> is_literal(Literal["a"]) + False + ``` + """ + +def is_paramspec(obj: Any, /) -> TypeIs[ParamSpec]: + """ + Return whether the argument is an instance of [`ParamSpec`][typing.ParamSpec]. + + ```pycon + >>> P = ParamSpec('P') + >>> is_paramspec(P) + True + ``` + """ + +def is_typevar(obj: Any, /) -> TypeIs[TypeVar]: + """ + Return whether the argument is an instance of [`TypeVar`][typing.TypeVar]. + + ```pycon + >>> T = TypeVar('T') + >>> is_typevar(T) + True + ``` + """ + +def is_typevartuple(obj: Any, /) -> TypeIs[TypeVarTuple]: + """ + Return whether the argument is an instance of [`TypeVarTuple`][typing.TypeVarTuple]. + + ```pycon + >>> Ts = TypeVarTuple('Ts') + >>> is_typevartuple(Ts) + True + ``` + """ + +def is_union(obj: Any, /) -> bool: + """ + Return whether the argument is the [`Union`][typing.Union] [special form][]. + + This function can also be used to check for the [`Optional`][typing.Optional] [special form][], + as at runtime, `Optional[int]` is equivalent to `Union[int, None]`. + + ```pycon + >>> is_union(Union) + True + >>> is_union(Union[int, str]) + False + ``` + + !!! warning + This does not check for unions using the [new syntax][types-union] (e.g. `int | str`). + """ + +def is_namedtuple(obj: Any, /) -> bool: + """Return whether the argument is a named tuple type. + + This includes [`NamedTuple`][typing.NamedTuple] subclasses and classes created from the + [`collections.namedtuple`][] factory function. + + ```pycon + >>> class User(NamedTuple): + ... name: str + ... + >>> is_namedtuple(User) + True + >>> City = collections.namedtuple('City', []) + >>> is_namedtuple(City) + True + >>> is_namedtuple(NamedTuple) + False + ``` + """ + +def is_literalstring(obj: Any, /) -> bool: + """ + Return whether the argument is the [`LiteralString`][typing.LiteralString] [special form][]. + + ```pycon + >>> is_literalstring(LiteralString) + True + ``` + """ + +def is_never(obj: Any, /) -> bool: + """ + Return whether the argument is the [`Never`][typing.Never] [special form][]. + + ```pycon + >>> is_never(Never) + True + ``` + """ + +def is_newtype(obj: Any, /) -> TypeIs[NewType]: + """ + Return whether the argument is a [`NewType`][typing.NewType]. + + ```pycon + >>> UserId = NewType("UserId", int) + >>> is_newtype(UserId) + True + ``` + """ + +def is_nodefault(obj: Any, /) -> bool: + """ + Return whether the argument is the [`NoDefault`][typing.NoDefault] sentinel object. + + ```pycon + >>> is_nodefault(NoDefault) + True + ``` + """ + +def is_noextraitems(obj: Any, /) -> bool: + """ + Return whether the argument is the `NoExtraItems` sentinel object. + + ```pycon + >>> is_noextraitems(NoExtraItems) + True + ``` + """ + +def is_noreturn(obj: Any, /) -> bool: + """ + Return whether the argument is the [`NoReturn`][typing.NoReturn] [special form][]. + + ```pycon + >>> is_noreturn(NoReturn) + True + >>> is_noreturn(Never) + False + ``` + """ + +def is_notrequired(obj: Any, /) -> bool: + """ + Return whether the argument is the [`NotRequired`][typing.NotRequired] [special form][]. + + ```pycon + >>> is_notrequired(NotRequired) + True + ``` + """ + +def is_paramspecargs(obj: Any, /) -> TypeIs[ParamSpecArgs]: + """ + Return whether the argument is an instance of [`ParamSpecArgs`][typing.ParamSpecArgs]. + + ```pycon + >>> P = ParamSpec('P') + >>> is_paramspecargs(P.args) + True + ``` + """ + +def is_paramspeckwargs(obj: Any, /) -> TypeIs[ParamSpecKwargs]: + """ + Return whether the argument is an instance of [`ParamSpecKwargs`][typing.ParamSpecKwargs]. + + ```pycon + >>> P = ParamSpec('P') + >>> is_paramspeckwargs(P.kwargs) + True + ``` + """ + +def is_readonly(obj: Any, /) -> bool: + """ + Return whether the argument is the [`ReadOnly`][typing.ReadOnly] [special form][]. + + ```pycon + >>> is_readonly(ReadOnly) + True + ``` + """ + +def is_required(obj: Any, /) -> bool: + """ + Return whether the argument is the [`Required`][typing.Required] [special form][]. + + ```pycon + >>> is_required(Required) + True + ``` + """ + +def is_self(obj: Any, /) -> bool: + """ + Return whether the argument is the [`Self`][typing.Self] [special form][]. + + ```pycon + >>> is_self(Self) + True + ``` + """ + +def is_typealias(obj: Any, /) -> bool: + """ + Return whether the argument is the [`TypeAlias`][typing.TypeAlias] [special form][]. + + ```pycon + >>> is_typealias(TypeAlias) + True + ``` + """ + +def is_typeguard(obj: Any, /) -> bool: + """ + Return whether the argument is the [`TypeGuard`][typing.TypeGuard] [special form][]. + + ```pycon + >>> is_typeguard(TypeGuard) + True + ``` + """ + +def is_typeis(obj: Any, /) -> bool: + """ + Return whether the argument is the [`TypeIs`][typing.TypeIs] [special form][]. + + ```pycon + >>> is_typeis(TypeIs) + True + ``` + """ + +def is_typealiastype(obj: Any, /) -> TypeIs[TypeAliasType]: + """ + Return whether the argument is a [`TypeAliasType`][typing.TypeAliasType] instance. + + ```pycon + >>> type MyInt = int + >>> is_typealiastype(MyInt) + True + >>> MyStr = TypeAliasType("MyStr", str) + >>> is_typealiastype(MyStr): + True + >>> type MyList[T] = list[T] + >>> is_typealiastype(MyList[int]) + False + ``` + """ + +def is_unpack(obj: Any, /) -> bool: + """ + Return whether the argument is the [`Unpack`][typing.Unpack] [special form][]. + + ```pycon + >>> is_unpack(Unpack) + True + >>> is_unpack(Unpack[Ts]) + False + ``` + """ + +def is_deprecated(obj: Any, /) -> TypeIs[deprecated]: + """ + Return whether the argument is a [`deprecated`][warnings.deprecated] instance. + + This also includes the [`typing_extensions` backport][typing_extensions.deprecated]. + + ```pycon + >>> is_deprecated(warnings.deprecated('message')) + True + >>> is_deprecated(typing_extensions.deprecated('deprecated')) + True + ``` + """ + +DEPRECATED_ALIASES: Final[dict[Any, type[Any]]] +"""A mapping between the deprecated typing aliases to their replacement, as per [PEP 585](https://peps.python.org/pep-0585/).""" diff --git a/outputs/audit_venv/lib/python3.11/site-packages/yaml/__init__.py b/outputs/audit_venv/lib/python3.11/site-packages/yaml/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..d58f0891737def7f38e5d86dde2dbf9be0c13dce --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/yaml/__init__.py @@ -0,0 +1,390 @@ + +from .error import * + +from .tokens import * +from .events import * +from .nodes import * + +from .loader import * +from .dumper import * + +__version__ = '6.0.3' +try: + from .cyaml import * + __with_libyaml__ = True +except ImportError: + __with_libyaml__ = False + +import io + +#------------------------------------------------------------------------------ +# XXX "Warnings control" is now deprecated. Leaving in the API function to not +# break code that uses it. +#------------------------------------------------------------------------------ +def warnings(settings=None): + if settings is None: + return {} + +#------------------------------------------------------------------------------ +def scan(stream, Loader=Loader): + """ + Scan a YAML stream and produce scanning tokens. + """ + loader = Loader(stream) + try: + while loader.check_token(): + yield loader.get_token() + finally: + loader.dispose() + +def parse(stream, Loader=Loader): + """ + Parse a YAML stream and produce parsing events. + """ + loader = Loader(stream) + try: + while loader.check_event(): + yield loader.get_event() + finally: + loader.dispose() + +def compose(stream, Loader=Loader): + """ + Parse the first YAML document in a stream + and produce the corresponding representation tree. + """ + loader = Loader(stream) + try: + return loader.get_single_node() + finally: + loader.dispose() + +def compose_all(stream, Loader=Loader): + """ + Parse all YAML documents in a stream + and produce corresponding representation trees. + """ + loader = Loader(stream) + try: + while loader.check_node(): + yield loader.get_node() + finally: + loader.dispose() + +def load(stream, Loader): + """ + Parse the first YAML document in a stream + and produce the corresponding Python object. + """ + loader = Loader(stream) + try: + return loader.get_single_data() + finally: + loader.dispose() + +def load_all(stream, Loader): + """ + Parse all YAML documents in a stream + and produce corresponding Python objects. + """ + loader = Loader(stream) + try: + while loader.check_data(): + yield loader.get_data() + finally: + loader.dispose() + +def full_load(stream): + """ + Parse the first YAML document in a stream + and produce the corresponding Python object. + + Resolve all tags except those known to be + unsafe on untrusted input. + """ + return load(stream, FullLoader) + +def full_load_all(stream): + """ + Parse all YAML documents in a stream + and produce corresponding Python objects. + + Resolve all tags except those known to be + unsafe on untrusted input. + """ + return load_all(stream, FullLoader) + +def safe_load(stream): + """ + Parse the first YAML document in a stream + and produce the corresponding Python object. + + Resolve only basic YAML tags. This is known + to be safe for untrusted input. + """ + return load(stream, SafeLoader) + +def safe_load_all(stream): + """ + Parse all YAML documents in a stream + and produce corresponding Python objects. + + Resolve only basic YAML tags. This is known + to be safe for untrusted input. + """ + return load_all(stream, SafeLoader) + +def unsafe_load(stream): + """ + Parse the first YAML document in a stream + and produce the corresponding Python object. + + Resolve all tags, even those known to be + unsafe on untrusted input. + """ + return load(stream, UnsafeLoader) + +def unsafe_load_all(stream): + """ + Parse all YAML documents in a stream + and produce corresponding Python objects. + + Resolve all tags, even those known to be + unsafe on untrusted input. + """ + return load_all(stream, UnsafeLoader) + +def emit(events, stream=None, Dumper=Dumper, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None): + """ + Emit YAML parsing events into a stream. + If stream is None, return the produced string instead. + """ + getvalue = None + if stream is None: + stream = io.StringIO() + getvalue = stream.getvalue + dumper = Dumper(stream, canonical=canonical, indent=indent, width=width, + allow_unicode=allow_unicode, line_break=line_break) + try: + for event in events: + dumper.emit(event) + finally: + dumper.dispose() + if getvalue: + return getvalue() + +def serialize_all(nodes, stream=None, Dumper=Dumper, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None): + """ + Serialize a sequence of representation trees into a YAML stream. + If stream is None, return the produced string instead. + """ + getvalue = None + if stream is None: + if encoding is None: + stream = io.StringIO() + else: + stream = io.BytesIO() + getvalue = stream.getvalue + dumper = Dumper(stream, canonical=canonical, indent=indent, width=width, + allow_unicode=allow_unicode, line_break=line_break, + encoding=encoding, version=version, tags=tags, + explicit_start=explicit_start, explicit_end=explicit_end) + try: + dumper.open() + for node in nodes: + dumper.serialize(node) + dumper.close() + finally: + dumper.dispose() + if getvalue: + return getvalue() + +def serialize(node, stream=None, Dumper=Dumper, **kwds): + """ + Serialize a representation tree into a YAML stream. + If stream is None, return the produced string instead. + """ + return serialize_all([node], stream, Dumper=Dumper, **kwds) + +def dump_all(documents, stream=None, Dumper=Dumper, + default_style=None, default_flow_style=False, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None, sort_keys=True): + """ + Serialize a sequence of Python objects into a YAML stream. + If stream is None, return the produced string instead. + """ + getvalue = None + if stream is None: + if encoding is None: + stream = io.StringIO() + else: + stream = io.BytesIO() + getvalue = stream.getvalue + dumper = Dumper(stream, default_style=default_style, + default_flow_style=default_flow_style, + canonical=canonical, indent=indent, width=width, + allow_unicode=allow_unicode, line_break=line_break, + encoding=encoding, version=version, tags=tags, + explicit_start=explicit_start, explicit_end=explicit_end, sort_keys=sort_keys) + try: + dumper.open() + for data in documents: + dumper.represent(data) + dumper.close() + finally: + dumper.dispose() + if getvalue: + return getvalue() + +def dump(data, stream=None, Dumper=Dumper, **kwds): + """ + Serialize a Python object into a YAML stream. + If stream is None, return the produced string instead. + """ + return dump_all([data], stream, Dumper=Dumper, **kwds) + +def safe_dump_all(documents, stream=None, **kwds): + """ + Serialize a sequence of Python objects into a YAML stream. + Produce only basic YAML tags. + If stream is None, return the produced string instead. + """ + return dump_all(documents, stream, Dumper=SafeDumper, **kwds) + +def safe_dump(data, stream=None, **kwds): + """ + Serialize a Python object into a YAML stream. + Produce only basic YAML tags. + If stream is None, return the produced string instead. + """ + return dump_all([data], stream, Dumper=SafeDumper, **kwds) + +def add_implicit_resolver(tag, regexp, first=None, + Loader=None, Dumper=Dumper): + """ + Add an implicit scalar detector. + If an implicit scalar value matches the given regexp, + the corresponding tag is assigned to the scalar. + first is a sequence of possible initial characters or None. + """ + if Loader is None: + loader.Loader.add_implicit_resolver(tag, regexp, first) + loader.FullLoader.add_implicit_resolver(tag, regexp, first) + loader.UnsafeLoader.add_implicit_resolver(tag, regexp, first) + else: + Loader.add_implicit_resolver(tag, regexp, first) + Dumper.add_implicit_resolver(tag, regexp, first) + +def add_path_resolver(tag, path, kind=None, Loader=None, Dumper=Dumper): + """ + Add a path based resolver for the given tag. + A path is a list of keys that forms a path + to a node in the representation tree. + Keys can be string values, integers, or None. + """ + if Loader is None: + loader.Loader.add_path_resolver(tag, path, kind) + loader.FullLoader.add_path_resolver(tag, path, kind) + loader.UnsafeLoader.add_path_resolver(tag, path, kind) + else: + Loader.add_path_resolver(tag, path, kind) + Dumper.add_path_resolver(tag, path, kind) + +def add_constructor(tag, constructor, Loader=None): + """ + Add a constructor for the given tag. + Constructor is a function that accepts a Loader instance + and a node object and produces the corresponding Python object. + """ + if Loader is None: + loader.Loader.add_constructor(tag, constructor) + loader.FullLoader.add_constructor(tag, constructor) + loader.UnsafeLoader.add_constructor(tag, constructor) + else: + Loader.add_constructor(tag, constructor) + +def add_multi_constructor(tag_prefix, multi_constructor, Loader=None): + """ + Add a multi-constructor for the given tag prefix. + Multi-constructor is called for a node if its tag starts with tag_prefix. + Multi-constructor accepts a Loader instance, a tag suffix, + and a node object and produces the corresponding Python object. + """ + if Loader is None: + loader.Loader.add_multi_constructor(tag_prefix, multi_constructor) + loader.FullLoader.add_multi_constructor(tag_prefix, multi_constructor) + loader.UnsafeLoader.add_multi_constructor(tag_prefix, multi_constructor) + else: + Loader.add_multi_constructor(tag_prefix, multi_constructor) + +def add_representer(data_type, representer, Dumper=Dumper): + """ + Add a representer for the given type. + Representer is a function accepting a Dumper instance + and an instance of the given data type + and producing the corresponding representation node. + """ + Dumper.add_representer(data_type, representer) + +def add_multi_representer(data_type, multi_representer, Dumper=Dumper): + """ + Add a representer for the given type. + Multi-representer is a function accepting a Dumper instance + and an instance of the given data type or subtype + and producing the corresponding representation node. + """ + Dumper.add_multi_representer(data_type, multi_representer) + +class YAMLObjectMetaclass(type): + """ + The metaclass for YAMLObject. + """ + def __init__(cls, name, bases, kwds): + super(YAMLObjectMetaclass, cls).__init__(name, bases, kwds) + if 'yaml_tag' in kwds and kwds['yaml_tag'] is not None: + if isinstance(cls.yaml_loader, list): + for loader in cls.yaml_loader: + loader.add_constructor(cls.yaml_tag, cls.from_yaml) + else: + cls.yaml_loader.add_constructor(cls.yaml_tag, cls.from_yaml) + + cls.yaml_dumper.add_representer(cls, cls.to_yaml) + +class YAMLObject(metaclass=YAMLObjectMetaclass): + """ + An object that can dump itself to a YAML stream + and load itself from a YAML stream. + """ + + __slots__ = () # no direct instantiation, so allow immutable subclasses + + yaml_loader = [Loader, FullLoader, UnsafeLoader] + yaml_dumper = Dumper + + yaml_tag = None + yaml_flow_style = None + + @classmethod + def from_yaml(cls, loader, node): + """ + Convert a representation node to a Python object. + """ + return loader.construct_yaml_object(node, cls) + + @classmethod + def to_yaml(cls, dumper, data): + """ + Convert a Python object to a representation node. + """ + return dumper.represent_yaml_object(cls.yaml_tag, data, cls, + flow_style=cls.yaml_flow_style) + diff --git a/outputs/audit_venv/lib/python3.11/site-packages/yaml/_yaml.cpython-311-x86_64-linux-gnu.so b/outputs/audit_venv/lib/python3.11/site-packages/yaml/_yaml.cpython-311-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..012b597019be7a2f716ef85e4f64d14f444a922d --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/yaml/_yaml.cpython-311-x86_64-linux-gnu.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f9b18be3b2682c5c49a6e103c851adf6e4d267a7e3f609108e3cd8d29b12431 +size 1160536 diff --git a/outputs/audit_venv/lib/python3.11/site-packages/yaml/composer.py b/outputs/audit_venv/lib/python3.11/site-packages/yaml/composer.py new file mode 100644 index 0000000000000000000000000000000000000000..6d15cb40e3b4198819c91c6f8d8b32807fcf53b2 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/yaml/composer.py @@ -0,0 +1,139 @@ + +__all__ = ['Composer', 'ComposerError'] + +from .error import MarkedYAMLError +from .events import * +from .nodes import * + +class ComposerError(MarkedYAMLError): + pass + +class Composer: + + def __init__(self): + self.anchors = {} + + def check_node(self): + # Drop the STREAM-START event. + if self.check_event(StreamStartEvent): + self.get_event() + + # If there are more documents available? + return not self.check_event(StreamEndEvent) + + def get_node(self): + # Get the root node of the next document. + if not self.check_event(StreamEndEvent): + return self.compose_document() + + def get_single_node(self): + # Drop the STREAM-START event. + self.get_event() + + # Compose a document if the stream is not empty. + document = None + if not self.check_event(StreamEndEvent): + document = self.compose_document() + + # Ensure that the stream contains no more documents. + if not self.check_event(StreamEndEvent): + event = self.get_event() + raise ComposerError("expected a single document in the stream", + document.start_mark, "but found another document", + event.start_mark) + + # Drop the STREAM-END event. + self.get_event() + + return document + + def compose_document(self): + # Drop the DOCUMENT-START event. + self.get_event() + + # Compose the root node. + node = self.compose_node(None, None) + + # Drop the DOCUMENT-END event. + self.get_event() + + self.anchors = {} + return node + + def compose_node(self, parent, index): + if self.check_event(AliasEvent): + event = self.get_event() + anchor = event.anchor + if anchor not in self.anchors: + raise ComposerError(None, None, "found undefined alias %r" + % anchor, event.start_mark) + return self.anchors[anchor] + event = self.peek_event() + anchor = event.anchor + if anchor is not None: + if anchor in self.anchors: + raise ComposerError("found duplicate anchor %r; first occurrence" + % anchor, self.anchors[anchor].start_mark, + "second occurrence", event.start_mark) + self.descend_resolver(parent, index) + if self.check_event(ScalarEvent): + node = self.compose_scalar_node(anchor) + elif self.check_event(SequenceStartEvent): + node = self.compose_sequence_node(anchor) + elif self.check_event(MappingStartEvent): + node = self.compose_mapping_node(anchor) + self.ascend_resolver() + return node + + def compose_scalar_node(self, anchor): + event = self.get_event() + tag = event.tag + if tag is None or tag == '!': + tag = self.resolve(ScalarNode, event.value, event.implicit) + node = ScalarNode(tag, event.value, + event.start_mark, event.end_mark, style=event.style) + if anchor is not None: + self.anchors[anchor] = node + return node + + def compose_sequence_node(self, anchor): + start_event = self.get_event() + tag = start_event.tag + if tag is None or tag == '!': + tag = self.resolve(SequenceNode, None, start_event.implicit) + node = SequenceNode(tag, [], + start_event.start_mark, None, + flow_style=start_event.flow_style) + if anchor is not None: + self.anchors[anchor] = node + index = 0 + while not self.check_event(SequenceEndEvent): + node.value.append(self.compose_node(node, index)) + index += 1 + end_event = self.get_event() + node.end_mark = end_event.end_mark + return node + + def compose_mapping_node(self, anchor): + start_event = self.get_event() + tag = start_event.tag + if tag is None or tag == '!': + tag = self.resolve(MappingNode, None, start_event.implicit) + node = MappingNode(tag, [], + start_event.start_mark, None, + flow_style=start_event.flow_style) + if anchor is not None: + self.anchors[anchor] = node + while not self.check_event(MappingEndEvent): + #key_event = self.peek_event() + item_key = self.compose_node(node, None) + #if item_key in node.value: + # raise ComposerError("while composing a mapping", start_event.start_mark, + # "found duplicate key", key_event.start_mark) + item_value = self.compose_node(node, item_key) + #node.value[item_key] = item_value + node.value.append((item_key, item_value)) + end_event = self.get_event() + node.end_mark = end_event.end_mark + return node + diff --git a/outputs/audit_venv/lib/python3.11/site-packages/yaml/constructor.py b/outputs/audit_venv/lib/python3.11/site-packages/yaml/constructor.py new file mode 100644 index 0000000000000000000000000000000000000000..619acd3070a4845c653fcf22a626e05158035bc2 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/yaml/constructor.py @@ -0,0 +1,748 @@ + +__all__ = [ + 'BaseConstructor', + 'SafeConstructor', + 'FullConstructor', + 'UnsafeConstructor', + 'Constructor', + 'ConstructorError' +] + +from .error import * +from .nodes import * + +import collections.abc, datetime, base64, binascii, re, sys, types + +class ConstructorError(MarkedYAMLError): + pass + +class BaseConstructor: + + yaml_constructors = {} + yaml_multi_constructors = {} + + def __init__(self): + self.constructed_objects = {} + self.recursive_objects = {} + self.state_generators = [] + self.deep_construct = False + + def check_data(self): + # If there are more documents available? + return self.check_node() + + def check_state_key(self, key): + """Block special attributes/methods from being set in a newly created + object, to prevent user-controlled methods from being called during + deserialization""" + if self.get_state_keys_blacklist_regexp().match(key): + raise ConstructorError(None, None, + "blacklisted key '%s' in instance state found" % (key,), None) + + def get_data(self): + # Construct and return the next document. + if self.check_node(): + return self.construct_document(self.get_node()) + + def get_single_data(self): + # Ensure that the stream contains a single document and construct it. + node = self.get_single_node() + if node is not None: + return self.construct_document(node) + return None + + def construct_document(self, node): + data = self.construct_object(node) + while self.state_generators: + state_generators = self.state_generators + self.state_generators = [] + for generator in state_generators: + for dummy in generator: + pass + self.constructed_objects = {} + self.recursive_objects = {} + self.deep_construct = False + return data + + def construct_object(self, node, deep=False): + if node in self.constructed_objects: + return self.constructed_objects[node] + if deep: + old_deep = self.deep_construct + self.deep_construct = True + if node in self.recursive_objects: + raise ConstructorError(None, None, + "found unconstructable recursive node", node.start_mark) + self.recursive_objects[node] = None + constructor = None + tag_suffix = None + if node.tag in self.yaml_constructors: + constructor = self.yaml_constructors[node.tag] + else: + for tag_prefix in self.yaml_multi_constructors: + if tag_prefix is not None and node.tag.startswith(tag_prefix): + tag_suffix = node.tag[len(tag_prefix):] + constructor = self.yaml_multi_constructors[tag_prefix] + break + else: + if None in self.yaml_multi_constructors: + tag_suffix = node.tag + constructor = self.yaml_multi_constructors[None] + elif None in self.yaml_constructors: + constructor = self.yaml_constructors[None] + elif isinstance(node, ScalarNode): + constructor = self.__class__.construct_scalar + elif isinstance(node, SequenceNode): + constructor = self.__class__.construct_sequence + elif isinstance(node, MappingNode): + constructor = self.__class__.construct_mapping + if tag_suffix is None: + data = constructor(self, node) + else: + data = constructor(self, tag_suffix, node) + if isinstance(data, types.GeneratorType): + generator = data + data = next(generator) + if self.deep_construct: + for dummy in generator: + pass + else: + self.state_generators.append(generator) + self.constructed_objects[node] = data + del self.recursive_objects[node] + if deep: + self.deep_construct = old_deep + return data + + def construct_scalar(self, node): + if not isinstance(node, ScalarNode): + raise ConstructorError(None, None, + "expected a scalar node, but found %s" % node.id, + node.start_mark) + return node.value + + def construct_sequence(self, node, deep=False): + if not isinstance(node, SequenceNode): + raise ConstructorError(None, None, + "expected a sequence node, but found %s" % node.id, + node.start_mark) + return [self.construct_object(child, deep=deep) + for child in node.value] + + def construct_mapping(self, node, deep=False): + if not isinstance(node, MappingNode): + raise ConstructorError(None, None, + "expected a mapping node, but found %s" % node.id, + node.start_mark) + mapping = {} + for key_node, value_node in node.value: + key = self.construct_object(key_node, deep=deep) + if not isinstance(key, collections.abc.Hashable): + raise ConstructorError("while constructing a mapping", node.start_mark, + "found unhashable key", key_node.start_mark) + value = self.construct_object(value_node, deep=deep) + mapping[key] = value + return mapping + + def construct_pairs(self, node, deep=False): + if not isinstance(node, MappingNode): + raise ConstructorError(None, None, + "expected a mapping node, but found %s" % node.id, + node.start_mark) + pairs = [] + for key_node, value_node in node.value: + key = self.construct_object(key_node, deep=deep) + value = self.construct_object(value_node, deep=deep) + pairs.append((key, value)) + return pairs + + @classmethod + def add_constructor(cls, tag, constructor): + if not 'yaml_constructors' in cls.__dict__: + cls.yaml_constructors = cls.yaml_constructors.copy() + cls.yaml_constructors[tag] = constructor + + @classmethod + def add_multi_constructor(cls, tag_prefix, multi_constructor): + if not 'yaml_multi_constructors' in cls.__dict__: + cls.yaml_multi_constructors = cls.yaml_multi_constructors.copy() + cls.yaml_multi_constructors[tag_prefix] = multi_constructor + +class SafeConstructor(BaseConstructor): + + def construct_scalar(self, node): + if isinstance(node, MappingNode): + for key_node, value_node in node.value: + if key_node.tag == 'tag:yaml.org,2002:value': + return self.construct_scalar(value_node) + return super().construct_scalar(node) + + def flatten_mapping(self, node): + merge = [] + index = 0 + while index < len(node.value): + key_node, value_node = node.value[index] + if key_node.tag == 'tag:yaml.org,2002:merge': + del node.value[index] + if isinstance(value_node, MappingNode): + self.flatten_mapping(value_node) + merge.extend(value_node.value) + elif isinstance(value_node, SequenceNode): + submerge = [] + for subnode in value_node.value: + if not isinstance(subnode, MappingNode): + raise ConstructorError("while constructing a mapping", + node.start_mark, + "expected a mapping for merging, but found %s" + % subnode.id, subnode.start_mark) + self.flatten_mapping(subnode) + submerge.append(subnode.value) + submerge.reverse() + for value in submerge: + merge.extend(value) + else: + raise ConstructorError("while constructing a mapping", node.start_mark, + "expected a mapping or list of mappings for merging, but found %s" + % value_node.id, value_node.start_mark) + elif key_node.tag == 'tag:yaml.org,2002:value': + key_node.tag = 'tag:yaml.org,2002:str' + index += 1 + else: + index += 1 + if merge: + node.value = merge + node.value + + def construct_mapping(self, node, deep=False): + if isinstance(node, MappingNode): + self.flatten_mapping(node) + return super().construct_mapping(node, deep=deep) + + def construct_yaml_null(self, node): + self.construct_scalar(node) + return None + + bool_values = { + 'yes': True, + 'no': False, + 'true': True, + 'false': False, + 'on': True, + 'off': False, + } + + def construct_yaml_bool(self, node): + value = self.construct_scalar(node) + return self.bool_values[value.lower()] + + def construct_yaml_int(self, node): + value = self.construct_scalar(node) + value = value.replace('_', '') + sign = +1 + if value[0] == '-': + sign = -1 + if value[0] in '+-': + value = value[1:] + if value == '0': + return 0 + elif value.startswith('0b'): + return sign*int(value[2:], 2) + elif value.startswith('0x'): + return sign*int(value[2:], 16) + elif value[0] == '0': + return sign*int(value, 8) + elif ':' in value: + digits = [int(part) for part in value.split(':')] + digits.reverse() + base = 1 + value = 0 + for digit in digits: + value += digit*base + base *= 60 + return sign*value + else: + return sign*int(value) + + inf_value = 1e300 + while inf_value != inf_value*inf_value: + inf_value *= inf_value + nan_value = -inf_value/inf_value # Trying to make a quiet NaN (like C99). + + def construct_yaml_float(self, node): + value = self.construct_scalar(node) + value = value.replace('_', '').lower() + sign = +1 + if value[0] == '-': + sign = -1 + if value[0] in '+-': + value = value[1:] + if value == '.inf': + return sign*self.inf_value + elif value == '.nan': + return self.nan_value + elif ':' in value: + digits = [float(part) for part in value.split(':')] + digits.reverse() + base = 1 + value = 0.0 + for digit in digits: + value += digit*base + base *= 60 + return sign*value + else: + return sign*float(value) + + def construct_yaml_binary(self, node): + try: + value = self.construct_scalar(node).encode('ascii') + except UnicodeEncodeError as exc: + raise ConstructorError(None, None, + "failed to convert base64 data into ascii: %s" % exc, + node.start_mark) + try: + if hasattr(base64, 'decodebytes'): + return base64.decodebytes(value) + else: + return base64.decodestring(value) + except binascii.Error as exc: + raise ConstructorError(None, None, + "failed to decode base64 data: %s" % exc, node.start_mark) + + timestamp_regexp = re.compile( + r'''^(?P[0-9][0-9][0-9][0-9]) + -(?P[0-9][0-9]?) + -(?P[0-9][0-9]?) + (?:(?:[Tt]|[ \t]+) + (?P[0-9][0-9]?) + :(?P[0-9][0-9]) + :(?P[0-9][0-9]) + (?:\.(?P[0-9]*))? + (?:[ \t]*(?PZ|(?P[-+])(?P[0-9][0-9]?) + (?::(?P[0-9][0-9]))?))?)?$''', re.X) + + def construct_yaml_timestamp(self, node): + value = self.construct_scalar(node) + match = self.timestamp_regexp.match(node.value) + values = match.groupdict() + year = int(values['year']) + month = int(values['month']) + day = int(values['day']) + if not values['hour']: + return datetime.date(year, month, day) + hour = int(values['hour']) + minute = int(values['minute']) + second = int(values['second']) + fraction = 0 + tzinfo = None + if values['fraction']: + fraction = values['fraction'][:6] + while len(fraction) < 6: + fraction += '0' + fraction = int(fraction) + if values['tz_sign']: + tz_hour = int(values['tz_hour']) + tz_minute = int(values['tz_minute'] or 0) + delta = datetime.timedelta(hours=tz_hour, minutes=tz_minute) + if values['tz_sign'] == '-': + delta = -delta + tzinfo = datetime.timezone(delta) + elif values['tz']: + tzinfo = datetime.timezone.utc + return datetime.datetime(year, month, day, hour, minute, second, fraction, + tzinfo=tzinfo) + + def construct_yaml_omap(self, node): + # Note: we do not check for duplicate keys, because it's too + # CPU-expensive. + omap = [] + yield omap + if not isinstance(node, SequenceNode): + raise ConstructorError("while constructing an ordered map", node.start_mark, + "expected a sequence, but found %s" % node.id, node.start_mark) + for subnode in node.value: + if not isinstance(subnode, MappingNode): + raise ConstructorError("while constructing an ordered map", node.start_mark, + "expected a mapping of length 1, but found %s" % subnode.id, + subnode.start_mark) + if len(subnode.value) != 1: + raise ConstructorError("while constructing an ordered map", node.start_mark, + "expected a single mapping item, but found %d items" % len(subnode.value), + subnode.start_mark) + key_node, value_node = subnode.value[0] + key = self.construct_object(key_node) + value = self.construct_object(value_node) + omap.append((key, value)) + + def construct_yaml_pairs(self, node): + # Note: the same code as `construct_yaml_omap`. + pairs = [] + yield pairs + if not isinstance(node, SequenceNode): + raise ConstructorError("while constructing pairs", node.start_mark, + "expected a sequence, but found %s" % node.id, node.start_mark) + for subnode in node.value: + if not isinstance(subnode, MappingNode): + raise ConstructorError("while constructing pairs", node.start_mark, + "expected a mapping of length 1, but found %s" % subnode.id, + subnode.start_mark) + if len(subnode.value) != 1: + raise ConstructorError("while constructing pairs", node.start_mark, + "expected a single mapping item, but found %d items" % len(subnode.value), + subnode.start_mark) + key_node, value_node = subnode.value[0] + key = self.construct_object(key_node) + value = self.construct_object(value_node) + pairs.append((key, value)) + + def construct_yaml_set(self, node): + data = set() + yield data + value = self.construct_mapping(node) + data.update(value) + + def construct_yaml_str(self, node): + return self.construct_scalar(node) + + def construct_yaml_seq(self, node): + data = [] + yield data + data.extend(self.construct_sequence(node)) + + def construct_yaml_map(self, node): + data = {} + yield data + value = self.construct_mapping(node) + data.update(value) + + def construct_yaml_object(self, node, cls): + data = cls.__new__(cls) + yield data + if hasattr(data, '__setstate__'): + state = self.construct_mapping(node, deep=True) + data.__setstate__(state) + else: + state = self.construct_mapping(node) + data.__dict__.update(state) + + def construct_undefined(self, node): + raise ConstructorError(None, None, + "could not determine a constructor for the tag %r" % node.tag, + node.start_mark) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:null', + SafeConstructor.construct_yaml_null) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:bool', + SafeConstructor.construct_yaml_bool) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:int', + SafeConstructor.construct_yaml_int) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:float', + SafeConstructor.construct_yaml_float) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:binary', + SafeConstructor.construct_yaml_binary) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:timestamp', + SafeConstructor.construct_yaml_timestamp) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:omap', + SafeConstructor.construct_yaml_omap) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:pairs', + SafeConstructor.construct_yaml_pairs) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:set', + SafeConstructor.construct_yaml_set) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:str', + SafeConstructor.construct_yaml_str) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:seq', + SafeConstructor.construct_yaml_seq) + +SafeConstructor.add_constructor( + 'tag:yaml.org,2002:map', + SafeConstructor.construct_yaml_map) + +SafeConstructor.add_constructor(None, + SafeConstructor.construct_undefined) + +class FullConstructor(SafeConstructor): + # 'extend' is blacklisted because it is used by + # construct_python_object_apply to add `listitems` to a newly generate + # python instance + def get_state_keys_blacklist(self): + return ['^extend$', '^__.*__$'] + + def get_state_keys_blacklist_regexp(self): + if not hasattr(self, 'state_keys_blacklist_regexp'): + self.state_keys_blacklist_regexp = re.compile('(' + '|'.join(self.get_state_keys_blacklist()) + ')') + return self.state_keys_blacklist_regexp + + def construct_python_str(self, node): + return self.construct_scalar(node) + + def construct_python_unicode(self, node): + return self.construct_scalar(node) + + def construct_python_bytes(self, node): + try: + value = self.construct_scalar(node).encode('ascii') + except UnicodeEncodeError as exc: + raise ConstructorError(None, None, + "failed to convert base64 data into ascii: %s" % exc, + node.start_mark) + try: + if hasattr(base64, 'decodebytes'): + return base64.decodebytes(value) + else: + return base64.decodestring(value) + except binascii.Error as exc: + raise ConstructorError(None, None, + "failed to decode base64 data: %s" % exc, node.start_mark) + + def construct_python_long(self, node): + return self.construct_yaml_int(node) + + def construct_python_complex(self, node): + return complex(self.construct_scalar(node)) + + def construct_python_tuple(self, node): + return tuple(self.construct_sequence(node)) + + def find_python_module(self, name, mark, unsafe=False): + if not name: + raise ConstructorError("while constructing a Python module", mark, + "expected non-empty name appended to the tag", mark) + if unsafe: + try: + __import__(name) + except ImportError as exc: + raise ConstructorError("while constructing a Python module", mark, + "cannot find module %r (%s)" % (name, exc), mark) + if name not in sys.modules: + raise ConstructorError("while constructing a Python module", mark, + "module %r is not imported" % name, mark) + return sys.modules[name] + + def find_python_name(self, name, mark, unsafe=False): + if not name: + raise ConstructorError("while constructing a Python object", mark, + "expected non-empty name appended to the tag", mark) + if '.' in name: + module_name, object_name = name.rsplit('.', 1) + else: + module_name = 'builtins' + object_name = name + if unsafe: + try: + __import__(module_name) + except ImportError as exc: + raise ConstructorError("while constructing a Python object", mark, + "cannot find module %r (%s)" % (module_name, exc), mark) + if module_name not in sys.modules: + raise ConstructorError("while constructing a Python object", mark, + "module %r is not imported" % module_name, mark) + module = sys.modules[module_name] + if not hasattr(module, object_name): + raise ConstructorError("while constructing a Python object", mark, + "cannot find %r in the module %r" + % (object_name, module.__name__), mark) + return getattr(module, object_name) + + def construct_python_name(self, suffix, node): + value = self.construct_scalar(node) + if value: + raise ConstructorError("while constructing a Python name", node.start_mark, + "expected the empty value, but found %r" % value, node.start_mark) + return self.find_python_name(suffix, node.start_mark) + + def construct_python_module(self, suffix, node): + value = self.construct_scalar(node) + if value: + raise ConstructorError("while constructing a Python module", node.start_mark, + "expected the empty value, but found %r" % value, node.start_mark) + return self.find_python_module(suffix, node.start_mark) + + def make_python_instance(self, suffix, node, + args=None, kwds=None, newobj=False, unsafe=False): + if not args: + args = [] + if not kwds: + kwds = {} + cls = self.find_python_name(suffix, node.start_mark) + if not (unsafe or isinstance(cls, type)): + raise ConstructorError("while constructing a Python instance", node.start_mark, + "expected a class, but found %r" % type(cls), + node.start_mark) + if newobj and isinstance(cls, type): + return cls.__new__(cls, *args, **kwds) + else: + return cls(*args, **kwds) + + def set_python_instance_state(self, instance, state, unsafe=False): + if hasattr(instance, '__setstate__'): + instance.__setstate__(state) + else: + slotstate = {} + if isinstance(state, tuple) and len(state) == 2: + state, slotstate = state + if hasattr(instance, '__dict__'): + if not unsafe and state: + for key in state.keys(): + self.check_state_key(key) + instance.__dict__.update(state) + elif state: + slotstate.update(state) + for key, value in slotstate.items(): + if not unsafe: + self.check_state_key(key) + setattr(instance, key, value) + + def construct_python_object(self, suffix, node): + # Format: + # !!python/object:module.name { ... state ... } + instance = self.make_python_instance(suffix, node, newobj=True) + yield instance + deep = hasattr(instance, '__setstate__') + state = self.construct_mapping(node, deep=deep) + self.set_python_instance_state(instance, state) + + def construct_python_object_apply(self, suffix, node, newobj=False): + # Format: + # !!python/object/apply # (or !!python/object/new) + # args: [ ... arguments ... ] + # kwds: { ... keywords ... } + # state: ... state ... + # listitems: [ ... listitems ... ] + # dictitems: { ... dictitems ... } + # or short format: + # !!python/object/apply [ ... arguments ... ] + # The difference between !!python/object/apply and !!python/object/new + # is how an object is created, check make_python_instance for details. + if isinstance(node, SequenceNode): + args = self.construct_sequence(node, deep=True) + kwds = {} + state = {} + listitems = [] + dictitems = {} + else: + value = self.construct_mapping(node, deep=True) + args = value.get('args', []) + kwds = value.get('kwds', {}) + state = value.get('state', {}) + listitems = value.get('listitems', []) + dictitems = value.get('dictitems', {}) + instance = self.make_python_instance(suffix, node, args, kwds, newobj) + if state: + self.set_python_instance_state(instance, state) + if listitems: + instance.extend(listitems) + if dictitems: + for key in dictitems: + instance[key] = dictitems[key] + return instance + + def construct_python_object_new(self, suffix, node): + return self.construct_python_object_apply(suffix, node, newobj=True) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/none', + FullConstructor.construct_yaml_null) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/bool', + FullConstructor.construct_yaml_bool) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/str', + FullConstructor.construct_python_str) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/unicode', + FullConstructor.construct_python_unicode) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/bytes', + FullConstructor.construct_python_bytes) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/int', + FullConstructor.construct_yaml_int) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/long', + FullConstructor.construct_python_long) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/float', + FullConstructor.construct_yaml_float) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/complex', + FullConstructor.construct_python_complex) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/list', + FullConstructor.construct_yaml_seq) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/tuple', + FullConstructor.construct_python_tuple) + +FullConstructor.add_constructor( + 'tag:yaml.org,2002:python/dict', + FullConstructor.construct_yaml_map) + +FullConstructor.add_multi_constructor( + 'tag:yaml.org,2002:python/name:', + FullConstructor.construct_python_name) + +class UnsafeConstructor(FullConstructor): + + def find_python_module(self, name, mark): + return super(UnsafeConstructor, self).find_python_module(name, mark, unsafe=True) + + def find_python_name(self, name, mark): + return super(UnsafeConstructor, self).find_python_name(name, mark, unsafe=True) + + def make_python_instance(self, suffix, node, args=None, kwds=None, newobj=False): + return super(UnsafeConstructor, self).make_python_instance( + suffix, node, args, kwds, newobj, unsafe=True) + + def set_python_instance_state(self, instance, state): + return super(UnsafeConstructor, self).set_python_instance_state( + instance, state, unsafe=True) + +UnsafeConstructor.add_multi_constructor( + 'tag:yaml.org,2002:python/module:', + UnsafeConstructor.construct_python_module) + +UnsafeConstructor.add_multi_constructor( + 'tag:yaml.org,2002:python/object:', + UnsafeConstructor.construct_python_object) + +UnsafeConstructor.add_multi_constructor( + 'tag:yaml.org,2002:python/object/new:', + UnsafeConstructor.construct_python_object_new) + +UnsafeConstructor.add_multi_constructor( + 'tag:yaml.org,2002:python/object/apply:', + UnsafeConstructor.construct_python_object_apply) + +# Constructor is same as UnsafeConstructor. Need to leave this in place in case +# people have extended it directly. +class Constructor(UnsafeConstructor): + pass diff --git a/outputs/audit_venv/lib/python3.11/site-packages/yaml/cyaml.py b/outputs/audit_venv/lib/python3.11/site-packages/yaml/cyaml.py new file mode 100644 index 0000000000000000000000000000000000000000..0c21345879b298bb8668201bebe7d289586b17f9 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/yaml/cyaml.py @@ -0,0 +1,101 @@ + +__all__ = [ + 'CBaseLoader', 'CSafeLoader', 'CFullLoader', 'CUnsafeLoader', 'CLoader', + 'CBaseDumper', 'CSafeDumper', 'CDumper' +] + +from yaml._yaml import CParser, CEmitter + +from .constructor import * + +from .serializer import * +from .representer import * + +from .resolver import * + +class CBaseLoader(CParser, BaseConstructor, BaseResolver): + + def __init__(self, stream): + CParser.__init__(self, stream) + BaseConstructor.__init__(self) + BaseResolver.__init__(self) + +class CSafeLoader(CParser, SafeConstructor, Resolver): + + def __init__(self, stream): + CParser.__init__(self, stream) + SafeConstructor.__init__(self) + Resolver.__init__(self) + +class CFullLoader(CParser, FullConstructor, Resolver): + + def __init__(self, stream): + CParser.__init__(self, stream) + FullConstructor.__init__(self) + Resolver.__init__(self) + +class CUnsafeLoader(CParser, UnsafeConstructor, Resolver): + + def __init__(self, stream): + CParser.__init__(self, stream) + UnsafeConstructor.__init__(self) + Resolver.__init__(self) + +class CLoader(CParser, Constructor, Resolver): + + def __init__(self, stream): + CParser.__init__(self, stream) + Constructor.__init__(self) + Resolver.__init__(self) + +class CBaseDumper(CEmitter, BaseRepresenter, BaseResolver): + + def __init__(self, stream, + default_style=None, default_flow_style=False, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None, sort_keys=True): + CEmitter.__init__(self, stream, canonical=canonical, + indent=indent, width=width, encoding=encoding, + allow_unicode=allow_unicode, line_break=line_break, + explicit_start=explicit_start, explicit_end=explicit_end, + version=version, tags=tags) + Representer.__init__(self, default_style=default_style, + default_flow_style=default_flow_style, sort_keys=sort_keys) + Resolver.__init__(self) + +class CSafeDumper(CEmitter, SafeRepresenter, Resolver): + + def __init__(self, stream, + default_style=None, default_flow_style=False, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None, sort_keys=True): + CEmitter.__init__(self, stream, canonical=canonical, + indent=indent, width=width, encoding=encoding, + allow_unicode=allow_unicode, line_break=line_break, + explicit_start=explicit_start, explicit_end=explicit_end, + version=version, tags=tags) + SafeRepresenter.__init__(self, default_style=default_style, + default_flow_style=default_flow_style, sort_keys=sort_keys) + Resolver.__init__(self) + +class CDumper(CEmitter, Serializer, Representer, Resolver): + + def __init__(self, stream, + default_style=None, default_flow_style=False, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None, sort_keys=True): + CEmitter.__init__(self, stream, canonical=canonical, + indent=indent, width=width, encoding=encoding, + allow_unicode=allow_unicode, line_break=line_break, + explicit_start=explicit_start, explicit_end=explicit_end, + version=version, tags=tags) + Representer.__init__(self, default_style=default_style, + default_flow_style=default_flow_style, sort_keys=sort_keys) + Resolver.__init__(self) + diff --git a/outputs/audit_venv/lib/python3.11/site-packages/yaml/dumper.py b/outputs/audit_venv/lib/python3.11/site-packages/yaml/dumper.py new file mode 100644 index 0000000000000000000000000000000000000000..6aadba551f3836b02f4752277f4b3027073defad --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/yaml/dumper.py @@ -0,0 +1,62 @@ + +__all__ = ['BaseDumper', 'SafeDumper', 'Dumper'] + +from .emitter import * +from .serializer import * +from .representer import * +from .resolver import * + +class BaseDumper(Emitter, Serializer, BaseRepresenter, BaseResolver): + + def __init__(self, stream, + default_style=None, default_flow_style=False, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None, sort_keys=True): + Emitter.__init__(self, stream, canonical=canonical, + indent=indent, width=width, + allow_unicode=allow_unicode, line_break=line_break) + Serializer.__init__(self, encoding=encoding, + explicit_start=explicit_start, explicit_end=explicit_end, + version=version, tags=tags) + Representer.__init__(self, default_style=default_style, + default_flow_style=default_flow_style, sort_keys=sort_keys) + Resolver.__init__(self) + +class SafeDumper(Emitter, Serializer, SafeRepresenter, Resolver): + + def __init__(self, stream, + default_style=None, default_flow_style=False, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None, sort_keys=True): + Emitter.__init__(self, stream, canonical=canonical, + indent=indent, width=width, + allow_unicode=allow_unicode, line_break=line_break) + Serializer.__init__(self, encoding=encoding, + explicit_start=explicit_start, explicit_end=explicit_end, + version=version, tags=tags) + SafeRepresenter.__init__(self, default_style=default_style, + default_flow_style=default_flow_style, sort_keys=sort_keys) + Resolver.__init__(self) + +class Dumper(Emitter, Serializer, Representer, Resolver): + + def __init__(self, stream, + default_style=None, default_flow_style=False, + canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None, + encoding=None, explicit_start=None, explicit_end=None, + version=None, tags=None, sort_keys=True): + Emitter.__init__(self, stream, canonical=canonical, + indent=indent, width=width, + allow_unicode=allow_unicode, line_break=line_break) + Serializer.__init__(self, encoding=encoding, + explicit_start=explicit_start, explicit_end=explicit_end, + version=version, tags=tags) + Representer.__init__(self, default_style=default_style, + default_flow_style=default_flow_style, sort_keys=sort_keys) + Resolver.__init__(self) + diff --git a/outputs/audit_venv/lib/python3.11/site-packages/yaml/emitter.py b/outputs/audit_venv/lib/python3.11/site-packages/yaml/emitter.py new file mode 100644 index 0000000000000000000000000000000000000000..a664d011162af69184df2f8e59ab7feec818f7c7 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/yaml/emitter.py @@ -0,0 +1,1137 @@ + +# Emitter expects events obeying the following grammar: +# stream ::= STREAM-START document* STREAM-END +# document ::= DOCUMENT-START node DOCUMENT-END +# node ::= SCALAR | sequence | mapping +# sequence ::= SEQUENCE-START node* SEQUENCE-END +# mapping ::= MAPPING-START (node node)* MAPPING-END + +__all__ = ['Emitter', 'EmitterError'] + +from .error import YAMLError +from .events import * + +class EmitterError(YAMLError): + pass + +class ScalarAnalysis: + def __init__(self, scalar, empty, multiline, + allow_flow_plain, allow_block_plain, + allow_single_quoted, allow_double_quoted, + allow_block): + self.scalar = scalar + self.empty = empty + self.multiline = multiline + self.allow_flow_plain = allow_flow_plain + self.allow_block_plain = allow_block_plain + self.allow_single_quoted = allow_single_quoted + self.allow_double_quoted = allow_double_quoted + self.allow_block = allow_block + +class Emitter: + + DEFAULT_TAG_PREFIXES = { + '!' : '!', + 'tag:yaml.org,2002:' : '!!', + } + + def __init__(self, stream, canonical=None, indent=None, width=None, + allow_unicode=None, line_break=None): + + # The stream should have the methods `write` and possibly `flush`. + self.stream = stream + + # Encoding can be overridden by STREAM-START. + self.encoding = None + + # Emitter is a state machine with a stack of states to handle nested + # structures. + self.states = [] + self.state = self.expect_stream_start + + # Current event and the event queue. + self.events = [] + self.event = None + + # The current indentation level and the stack of previous indents. + self.indents = [] + self.indent = None + + # Flow level. + self.flow_level = 0 + + # Contexts. + self.root_context = False + self.sequence_context = False + self.mapping_context = False + self.simple_key_context = False + + # Characteristics of the last emitted character: + # - current position. + # - is it a whitespace? + # - is it an indention character + # (indentation space, '-', '?', or ':')? + self.line = 0 + self.column = 0 + self.whitespace = True + self.indention = True + + # Whether the document requires an explicit document indicator + self.open_ended = False + + # Formatting details. + self.canonical = canonical + self.allow_unicode = allow_unicode + self.best_indent = 2 + if indent and 1 < indent < 10: + self.best_indent = indent + self.best_width = 80 + if width and width > self.best_indent*2: + self.best_width = width + self.best_line_break = '\n' + if line_break in ['\r', '\n', '\r\n']: + self.best_line_break = line_break + + # Tag prefixes. + self.tag_prefixes = None + + # Prepared anchor and tag. + self.prepared_anchor = None + self.prepared_tag = None + + # Scalar analysis and style. + self.analysis = None + self.style = None + + def dispose(self): + # Reset the state attributes (to clear self-references) + self.states = [] + self.state = None + + def emit(self, event): + self.events.append(event) + while not self.need_more_events(): + self.event = self.events.pop(0) + self.state() + self.event = None + + # In some cases, we wait for a few next events before emitting. + + def need_more_events(self): + if not self.events: + return True + event = self.events[0] + if isinstance(event, DocumentStartEvent): + return self.need_events(1) + elif isinstance(event, SequenceStartEvent): + return self.need_events(2) + elif isinstance(event, MappingStartEvent): + return self.need_events(3) + else: + return False + + def need_events(self, count): + level = 0 + for event in self.events[1:]: + if isinstance(event, (DocumentStartEvent, CollectionStartEvent)): + level += 1 + elif isinstance(event, (DocumentEndEvent, CollectionEndEvent)): + level -= 1 + elif isinstance(event, StreamEndEvent): + level = -1 + if level < 0: + return False + return (len(self.events) < count+1) + + def increase_indent(self, flow=False, indentless=False): + self.indents.append(self.indent) + if self.indent is None: + if flow: + self.indent = self.best_indent + else: + self.indent = 0 + elif not indentless: + self.indent += self.best_indent + + # States. + + # Stream handlers. + + def expect_stream_start(self): + if isinstance(self.event, StreamStartEvent): + if self.event.encoding and not hasattr(self.stream, 'encoding'): + self.encoding = self.event.encoding + self.write_stream_start() + self.state = self.expect_first_document_start + else: + raise EmitterError("expected StreamStartEvent, but got %s" + % self.event) + + def expect_nothing(self): + raise EmitterError("expected nothing, but got %s" % self.event) + + # Document handlers. + + def expect_first_document_start(self): + return self.expect_document_start(first=True) + + def expect_document_start(self, first=False): + if isinstance(self.event, DocumentStartEvent): + if (self.event.version or self.event.tags) and self.open_ended: + self.write_indicator('...', True) + self.write_indent() + if self.event.version: + version_text = self.prepare_version(self.event.version) + self.write_version_directive(version_text) + self.tag_prefixes = self.DEFAULT_TAG_PREFIXES.copy() + if self.event.tags: + handles = sorted(self.event.tags.keys()) + for handle in handles: + prefix = self.event.tags[handle] + self.tag_prefixes[prefix] = handle + handle_text = self.prepare_tag_handle(handle) + prefix_text = self.prepare_tag_prefix(prefix) + self.write_tag_directive(handle_text, prefix_text) + implicit = (first and not self.event.explicit and not self.canonical + and not self.event.version and not self.event.tags + and not self.check_empty_document()) + if not implicit: + self.write_indent() + self.write_indicator('---', True) + if self.canonical: + self.write_indent() + self.state = self.expect_document_root + elif isinstance(self.event, StreamEndEvent): + if self.open_ended: + self.write_indicator('...', True) + self.write_indent() + self.write_stream_end() + self.state = self.expect_nothing + else: + raise EmitterError("expected DocumentStartEvent, but got %s" + % self.event) + + def expect_document_end(self): + if isinstance(self.event, DocumentEndEvent): + self.write_indent() + if self.event.explicit: + self.write_indicator('...', True) + self.write_indent() + self.flush_stream() + self.state = self.expect_document_start + else: + raise EmitterError("expected DocumentEndEvent, but got %s" + % self.event) + + def expect_document_root(self): + self.states.append(self.expect_document_end) + self.expect_node(root=True) + + # Node handlers. + + def expect_node(self, root=False, sequence=False, mapping=False, + simple_key=False): + self.root_context = root + self.sequence_context = sequence + self.mapping_context = mapping + self.simple_key_context = simple_key + if isinstance(self.event, AliasEvent): + self.expect_alias() + elif isinstance(self.event, (ScalarEvent, CollectionStartEvent)): + self.process_anchor('&') + self.process_tag() + if isinstance(self.event, ScalarEvent): + self.expect_scalar() + elif isinstance(self.event, SequenceStartEvent): + if self.flow_level or self.canonical or self.event.flow_style \ + or self.check_empty_sequence(): + self.expect_flow_sequence() + else: + self.expect_block_sequence() + elif isinstance(self.event, MappingStartEvent): + if self.flow_level or self.canonical or self.event.flow_style \ + or self.check_empty_mapping(): + self.expect_flow_mapping() + else: + self.expect_block_mapping() + else: + raise EmitterError("expected NodeEvent, but got %s" % self.event) + + def expect_alias(self): + if self.event.anchor is None: + raise EmitterError("anchor is not specified for alias") + self.process_anchor('*') + self.state = self.states.pop() + + def expect_scalar(self): + self.increase_indent(flow=True) + self.process_scalar() + self.indent = self.indents.pop() + self.state = self.states.pop() + + # Flow sequence handlers. + + def expect_flow_sequence(self): + self.write_indicator('[', True, whitespace=True) + self.flow_level += 1 + self.increase_indent(flow=True) + self.state = self.expect_first_flow_sequence_item + + def expect_first_flow_sequence_item(self): + if isinstance(self.event, SequenceEndEvent): + self.indent = self.indents.pop() + self.flow_level -= 1 + self.write_indicator(']', False) + self.state = self.states.pop() + else: + if self.canonical or self.column > self.best_width: + self.write_indent() + self.states.append(self.expect_flow_sequence_item) + self.expect_node(sequence=True) + + def expect_flow_sequence_item(self): + if isinstance(self.event, SequenceEndEvent): + self.indent = self.indents.pop() + self.flow_level -= 1 + if self.canonical: + self.write_indicator(',', False) + self.write_indent() + self.write_indicator(']', False) + self.state = self.states.pop() + else: + self.write_indicator(',', False) + if self.canonical or self.column > self.best_width: + self.write_indent() + self.states.append(self.expect_flow_sequence_item) + self.expect_node(sequence=True) + + # Flow mapping handlers. + + def expect_flow_mapping(self): + self.write_indicator('{', True, whitespace=True) + self.flow_level += 1 + self.increase_indent(flow=True) + self.state = self.expect_first_flow_mapping_key + + def expect_first_flow_mapping_key(self): + if isinstance(self.event, MappingEndEvent): + self.indent = self.indents.pop() + self.flow_level -= 1 + self.write_indicator('}', False) + self.state = self.states.pop() + else: + if self.canonical or self.column > self.best_width: + self.write_indent() + if not self.canonical and self.check_simple_key(): + self.states.append(self.expect_flow_mapping_simple_value) + self.expect_node(mapping=True, simple_key=True) + else: + self.write_indicator('?', True) + self.states.append(self.expect_flow_mapping_value) + self.expect_node(mapping=True) + + def expect_flow_mapping_key(self): + if isinstance(self.event, MappingEndEvent): + self.indent = self.indents.pop() + self.flow_level -= 1 + if self.canonical: + self.write_indicator(',', False) + self.write_indent() + self.write_indicator('}', False) + self.state = self.states.pop() + else: + self.write_indicator(',', False) + if self.canonical or self.column > self.best_width: + self.write_indent() + if not self.canonical and self.check_simple_key(): + self.states.append(self.expect_flow_mapping_simple_value) + self.expect_node(mapping=True, simple_key=True) + else: + self.write_indicator('?', True) + self.states.append(self.expect_flow_mapping_value) + self.expect_node(mapping=True) + + def expect_flow_mapping_simple_value(self): + self.write_indicator(':', False) + self.states.append(self.expect_flow_mapping_key) + self.expect_node(mapping=True) + + def expect_flow_mapping_value(self): + if self.canonical or self.column > self.best_width: + self.write_indent() + self.write_indicator(':', True) + self.states.append(self.expect_flow_mapping_key) + self.expect_node(mapping=True) + + # Block sequence handlers. + + def expect_block_sequence(self): + indentless = (self.mapping_context and not self.indention) + self.increase_indent(flow=False, indentless=indentless) + self.state = self.expect_first_block_sequence_item + + def expect_first_block_sequence_item(self): + return self.expect_block_sequence_item(first=True) + + def expect_block_sequence_item(self, first=False): + if not first and isinstance(self.event, SequenceEndEvent): + self.indent = self.indents.pop() + self.state = self.states.pop() + else: + self.write_indent() + self.write_indicator('-', True, indention=True) + self.states.append(self.expect_block_sequence_item) + self.expect_node(sequence=True) + + # Block mapping handlers. + + def expect_block_mapping(self): + self.increase_indent(flow=False) + self.state = self.expect_first_block_mapping_key + + def expect_first_block_mapping_key(self): + return self.expect_block_mapping_key(first=True) + + def expect_block_mapping_key(self, first=False): + if not first and isinstance(self.event, MappingEndEvent): + self.indent = self.indents.pop() + self.state = self.states.pop() + else: + self.write_indent() + if self.check_simple_key(): + self.states.append(self.expect_block_mapping_simple_value) + self.expect_node(mapping=True, simple_key=True) + else: + self.write_indicator('?', True, indention=True) + self.states.append(self.expect_block_mapping_value) + self.expect_node(mapping=True) + + def expect_block_mapping_simple_value(self): + self.write_indicator(':', False) + self.states.append(self.expect_block_mapping_key) + self.expect_node(mapping=True) + + def expect_block_mapping_value(self): + self.write_indent() + self.write_indicator(':', True, indention=True) + self.states.append(self.expect_block_mapping_key) + self.expect_node(mapping=True) + + # Checkers. + + def check_empty_sequence(self): + return (isinstance(self.event, SequenceStartEvent) and self.events + and isinstance(self.events[0], SequenceEndEvent)) + + def check_empty_mapping(self): + return (isinstance(self.event, MappingStartEvent) and self.events + and isinstance(self.events[0], MappingEndEvent)) + + def check_empty_document(self): + if not isinstance(self.event, DocumentStartEvent) or not self.events: + return False + event = self.events[0] + return (isinstance(event, ScalarEvent) and event.anchor is None + and event.tag is None and event.implicit and event.value == '') + + def check_simple_key(self): + length = 0 + if isinstance(self.event, NodeEvent) and self.event.anchor is not None: + if self.prepared_anchor is None: + self.prepared_anchor = self.prepare_anchor(self.event.anchor) + length += len(self.prepared_anchor) + if isinstance(self.event, (ScalarEvent, CollectionStartEvent)) \ + and self.event.tag is not None: + if self.prepared_tag is None: + self.prepared_tag = self.prepare_tag(self.event.tag) + length += len(self.prepared_tag) + if isinstance(self.event, ScalarEvent): + if self.analysis is None: + self.analysis = self.analyze_scalar(self.event.value) + length += len(self.analysis.scalar) + return (length < 128 and (isinstance(self.event, AliasEvent) + or (isinstance(self.event, ScalarEvent) + and not self.analysis.empty and not self.analysis.multiline) + or self.check_empty_sequence() or self.check_empty_mapping())) + + # Anchor, Tag, and Scalar processors. + + def process_anchor(self, indicator): + if self.event.anchor is None: + self.prepared_anchor = None + return + if self.prepared_anchor is None: + self.prepared_anchor = self.prepare_anchor(self.event.anchor) + if self.prepared_anchor: + self.write_indicator(indicator+self.prepared_anchor, True) + self.prepared_anchor = None + + def process_tag(self): + tag = self.event.tag + if isinstance(self.event, ScalarEvent): + if self.style is None: + self.style = self.choose_scalar_style() + if ((not self.canonical or tag is None) and + ((self.style == '' and self.event.implicit[0]) + or (self.style != '' and self.event.implicit[1]))): + self.prepared_tag = None + return + if self.event.implicit[0] and tag is None: + tag = '!' + self.prepared_tag = None + else: + if (not self.canonical or tag is None) and self.event.implicit: + self.prepared_tag = None + return + if tag is None: + raise EmitterError("tag is not specified") + if self.prepared_tag is None: + self.prepared_tag = self.prepare_tag(tag) + if self.prepared_tag: + self.write_indicator(self.prepared_tag, True) + self.prepared_tag = None + + def choose_scalar_style(self): + if self.analysis is None: + self.analysis = self.analyze_scalar(self.event.value) + if self.event.style == '"' or self.canonical: + return '"' + if not self.event.style and self.event.implicit[0]: + if (not (self.simple_key_context and + (self.analysis.empty or self.analysis.multiline)) + and (self.flow_level and self.analysis.allow_flow_plain + or (not self.flow_level and self.analysis.allow_block_plain))): + return '' + if self.event.style and self.event.style in '|>': + if (not self.flow_level and not self.simple_key_context + and self.analysis.allow_block): + return self.event.style + if not self.event.style or self.event.style == '\'': + if (self.analysis.allow_single_quoted and + not (self.simple_key_context and self.analysis.multiline)): + return '\'' + return '"' + + def process_scalar(self): + if self.analysis is None: + self.analysis = self.analyze_scalar(self.event.value) + if self.style is None: + self.style = self.choose_scalar_style() + split = (not self.simple_key_context) + #if self.analysis.multiline and split \ + # and (not self.style or self.style in '\'\"'): + # self.write_indent() + if self.style == '"': + self.write_double_quoted(self.analysis.scalar, split) + elif self.style == '\'': + self.write_single_quoted(self.analysis.scalar, split) + elif self.style == '>': + self.write_folded(self.analysis.scalar) + elif self.style == '|': + self.write_literal(self.analysis.scalar) + else: + self.write_plain(self.analysis.scalar, split) + self.analysis = None + self.style = None + + # Analyzers. + + def prepare_version(self, version): + major, minor = version + if major != 1: + raise EmitterError("unsupported YAML version: %d.%d" % (major, minor)) + return '%d.%d' % (major, minor) + + def prepare_tag_handle(self, handle): + if not handle: + raise EmitterError("tag handle must not be empty") + if handle[0] != '!' or handle[-1] != '!': + raise EmitterError("tag handle must start and end with '!': %r" % handle) + for ch in handle[1:-1]: + if not ('0' <= ch <= '9' or 'A' <= ch <= 'Z' or 'a' <= ch <= 'z' \ + or ch in '-_'): + raise EmitterError("invalid character %r in the tag handle: %r" + % (ch, handle)) + return handle + + def prepare_tag_prefix(self, prefix): + if not prefix: + raise EmitterError("tag prefix must not be empty") + chunks = [] + start = end = 0 + if prefix[0] == '!': + end = 1 + while end < len(prefix): + ch = prefix[end] + if '0' <= ch <= '9' or 'A' <= ch <= 'Z' or 'a' <= ch <= 'z' \ + or ch in '-;/?!:@&=+$,_.~*\'()[]': + end += 1 + else: + if start < end: + chunks.append(prefix[start:end]) + start = end = end+1 + data = ch.encode('utf-8') + for ch in data: + chunks.append('%%%02X' % ord(ch)) + if start < end: + chunks.append(prefix[start:end]) + return ''.join(chunks) + + def prepare_tag(self, tag): + if not tag: + raise EmitterError("tag must not be empty") + if tag == '!': + return tag + handle = None + suffix = tag + prefixes = sorted(self.tag_prefixes.keys()) + for prefix in prefixes: + if tag.startswith(prefix) \ + and (prefix == '!' or len(prefix) < len(tag)): + handle = self.tag_prefixes[prefix] + suffix = tag[len(prefix):] + chunks = [] + start = end = 0 + while end < len(suffix): + ch = suffix[end] + if '0' <= ch <= '9' or 'A' <= ch <= 'Z' or 'a' <= ch <= 'z' \ + or ch in '-;/?:@&=+$,_.~*\'()[]' \ + or (ch == '!' and handle != '!'): + end += 1 + else: + if start < end: + chunks.append(suffix[start:end]) + start = end = end+1 + data = ch.encode('utf-8') + for ch in data: + chunks.append('%%%02X' % ch) + if start < end: + chunks.append(suffix[start:end]) + suffix_text = ''.join(chunks) + if handle: + return '%s%s' % (handle, suffix_text) + else: + return '!<%s>' % suffix_text + + def prepare_anchor(self, anchor): + if not anchor: + raise EmitterError("anchor must not be empty") + for ch in anchor: + if not ('0' <= ch <= '9' or 'A' <= ch <= 'Z' or 'a' <= ch <= 'z' \ + or ch in '-_'): + raise EmitterError("invalid character %r in the anchor: %r" + % (ch, anchor)) + return anchor + + def analyze_scalar(self, scalar): + + # Empty scalar is a special case. + if not scalar: + return ScalarAnalysis(scalar=scalar, empty=True, multiline=False, + allow_flow_plain=False, allow_block_plain=True, + allow_single_quoted=True, allow_double_quoted=True, + allow_block=False) + + # Indicators and special characters. + block_indicators = False + flow_indicators = False + line_breaks = False + special_characters = False + + # Important whitespace combinations. + leading_space = False + leading_break = False + trailing_space = False + trailing_break = False + break_space = False + space_break = False + + # Check document indicators. + if scalar.startswith('---') or scalar.startswith('...'): + block_indicators = True + flow_indicators = True + + # First character or preceded by a whitespace. + preceded_by_whitespace = True + + # Last character or followed by a whitespace. + followed_by_whitespace = (len(scalar) == 1 or + scalar[1] in '\0 \t\r\n\x85\u2028\u2029') + + # The previous character is a space. + previous_space = False + + # The previous character is a break. + previous_break = False + + index = 0 + while index < len(scalar): + ch = scalar[index] + + # Check for indicators. + if index == 0: + # Leading indicators are special characters. + if ch in '#,[]{}&*!|>\'\"%@`': + flow_indicators = True + block_indicators = True + if ch in '?:': + flow_indicators = True + if followed_by_whitespace: + block_indicators = True + if ch == '-' and followed_by_whitespace: + flow_indicators = True + block_indicators = True + else: + # Some indicators cannot appear within a scalar as well. + if ch in ',?[]{}': + flow_indicators = True + if ch == ':': + flow_indicators = True + if followed_by_whitespace: + block_indicators = True + if ch == '#' and preceded_by_whitespace: + flow_indicators = True + block_indicators = True + + # Check for line breaks, special, and unicode characters. + if ch in '\n\x85\u2028\u2029': + line_breaks = True + if not (ch == '\n' or '\x20' <= ch <= '\x7E'): + if (ch == '\x85' or '\xA0' <= ch <= '\uD7FF' + or '\uE000' <= ch <= '\uFFFD' + or '\U00010000' <= ch < '\U0010ffff') and ch != '\uFEFF': + unicode_characters = True + if not self.allow_unicode: + special_characters = True + else: + special_characters = True + + # Detect important whitespace combinations. + if ch == ' ': + if index == 0: + leading_space = True + if index == len(scalar)-1: + trailing_space = True + if previous_break: + break_space = True + previous_space = True + previous_break = False + elif ch in '\n\x85\u2028\u2029': + if index == 0: + leading_break = True + if index == len(scalar)-1: + trailing_break = True + if previous_space: + space_break = True + previous_space = False + previous_break = True + else: + previous_space = False + previous_break = False + + # Prepare for the next character. + index += 1 + preceded_by_whitespace = (ch in '\0 \t\r\n\x85\u2028\u2029') + followed_by_whitespace = (index+1 >= len(scalar) or + scalar[index+1] in '\0 \t\r\n\x85\u2028\u2029') + + # Let's decide what styles are allowed. + allow_flow_plain = True + allow_block_plain = True + allow_single_quoted = True + allow_double_quoted = True + allow_block = True + + # Leading and trailing whitespaces are bad for plain scalars. + if (leading_space or leading_break + or trailing_space or trailing_break): + allow_flow_plain = allow_block_plain = False + + # We do not permit trailing spaces for block scalars. + if trailing_space: + allow_block = False + + # Spaces at the beginning of a new line are only acceptable for block + # scalars. + if break_space: + allow_flow_plain = allow_block_plain = allow_single_quoted = False + + # Spaces followed by breaks, as well as special character are only + # allowed for double quoted scalars. + if space_break or special_characters: + allow_flow_plain = allow_block_plain = \ + allow_single_quoted = allow_block = False + + # Although the plain scalar writer supports breaks, we never emit + # multiline plain scalars. + if line_breaks: + allow_flow_plain = allow_block_plain = False + + # Flow indicators are forbidden for flow plain scalars. + if flow_indicators: + allow_flow_plain = False + + # Block indicators are forbidden for block plain scalars. + if block_indicators: + allow_block_plain = False + + return ScalarAnalysis(scalar=scalar, + empty=False, multiline=line_breaks, + allow_flow_plain=allow_flow_plain, + allow_block_plain=allow_block_plain, + allow_single_quoted=allow_single_quoted, + allow_double_quoted=allow_double_quoted, + allow_block=allow_block) + + # Writers. + + def flush_stream(self): + if hasattr(self.stream, 'flush'): + self.stream.flush() + + def write_stream_start(self): + # Write BOM if needed. + if self.encoding and self.encoding.startswith('utf-16'): + self.stream.write('\uFEFF'.encode(self.encoding)) + + def write_stream_end(self): + self.flush_stream() + + def write_indicator(self, indicator, need_whitespace, + whitespace=False, indention=False): + if self.whitespace or not need_whitespace: + data = indicator + else: + data = ' '+indicator + self.whitespace = whitespace + self.indention = self.indention and indention + self.column += len(data) + self.open_ended = False + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + + def write_indent(self): + indent = self.indent or 0 + if not self.indention or self.column > indent \ + or (self.column == indent and not self.whitespace): + self.write_line_break() + if self.column < indent: + self.whitespace = True + data = ' '*(indent-self.column) + self.column = indent + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + + def write_line_break(self, data=None): + if data is None: + data = self.best_line_break + self.whitespace = True + self.indention = True + self.line += 1 + self.column = 0 + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + + def write_version_directive(self, version_text): + data = '%%YAML %s' % version_text + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + self.write_line_break() + + def write_tag_directive(self, handle_text, prefix_text): + data = '%%TAG %s %s' % (handle_text, prefix_text) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + self.write_line_break() + + # Scalar streams. + + def write_single_quoted(self, text, split=True): + self.write_indicator('\'', True) + spaces = False + breaks = False + start = end = 0 + while end <= len(text): + ch = None + if end < len(text): + ch = text[end] + if spaces: + if ch is None or ch != ' ': + if start+1 == end and self.column > self.best_width and split \ + and start != 0 and end != len(text): + self.write_indent() + else: + data = text[start:end] + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + start = end + elif breaks: + if ch is None or ch not in '\n\x85\u2028\u2029': + if text[start] == '\n': + self.write_line_break() + for br in text[start:end]: + if br == '\n': + self.write_line_break() + else: + self.write_line_break(br) + self.write_indent() + start = end + else: + if ch is None or ch in ' \n\x85\u2028\u2029' or ch == '\'': + if start < end: + data = text[start:end] + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + start = end + if ch == '\'': + data = '\'\'' + self.column += 2 + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + start = end + 1 + if ch is not None: + spaces = (ch == ' ') + breaks = (ch in '\n\x85\u2028\u2029') + end += 1 + self.write_indicator('\'', False) + + ESCAPE_REPLACEMENTS = { + '\0': '0', + '\x07': 'a', + '\x08': 'b', + '\x09': 't', + '\x0A': 'n', + '\x0B': 'v', + '\x0C': 'f', + '\x0D': 'r', + '\x1B': 'e', + '\"': '\"', + '\\': '\\', + '\x85': 'N', + '\xA0': '_', + '\u2028': 'L', + '\u2029': 'P', + } + + def write_double_quoted(self, text, split=True): + self.write_indicator('"', True) + start = end = 0 + while end <= len(text): + ch = None + if end < len(text): + ch = text[end] + if ch is None or ch in '"\\\x85\u2028\u2029\uFEFF' \ + or not ('\x20' <= ch <= '\x7E' + or (self.allow_unicode + and ('\xA0' <= ch <= '\uD7FF' + or '\uE000' <= ch <= '\uFFFD'))): + if start < end: + data = text[start:end] + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + start = end + if ch is not None: + if ch in self.ESCAPE_REPLACEMENTS: + data = '\\'+self.ESCAPE_REPLACEMENTS[ch] + elif ch <= '\xFF': + data = '\\x%02X' % ord(ch) + elif ch <= '\uFFFF': + data = '\\u%04X' % ord(ch) + else: + data = '\\U%08X' % ord(ch) + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + start = end+1 + if 0 < end < len(text)-1 and (ch == ' ' or start >= end) \ + and self.column+(end-start) > self.best_width and split: + data = text[start:end]+'\\' + if start < end: + start = end + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + self.write_indent() + self.whitespace = False + self.indention = False + if text[start] == ' ': + data = '\\' + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + end += 1 + self.write_indicator('"', False) + + def determine_block_hints(self, text): + hints = '' + if text: + if text[0] in ' \n\x85\u2028\u2029': + hints += str(self.best_indent) + if text[-1] not in '\n\x85\u2028\u2029': + hints += '-' + elif len(text) == 1 or text[-2] in '\n\x85\u2028\u2029': + hints += '+' + return hints + + def write_folded(self, text): + hints = self.determine_block_hints(text) + self.write_indicator('>'+hints, True) + if hints[-1:] == '+': + self.open_ended = True + self.write_line_break() + leading_space = True + spaces = False + breaks = True + start = end = 0 + while end <= len(text): + ch = None + if end < len(text): + ch = text[end] + if breaks: + if ch is None or ch not in '\n\x85\u2028\u2029': + if not leading_space and ch is not None and ch != ' ' \ + and text[start] == '\n': + self.write_line_break() + leading_space = (ch == ' ') + for br in text[start:end]: + if br == '\n': + self.write_line_break() + else: + self.write_line_break(br) + if ch is not None: + self.write_indent() + start = end + elif spaces: + if ch != ' ': + if start+1 == end and self.column > self.best_width: + self.write_indent() + else: + data = text[start:end] + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + start = end + else: + if ch is None or ch in ' \n\x85\u2028\u2029': + data = text[start:end] + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + if ch is None: + self.write_line_break() + start = end + if ch is not None: + breaks = (ch in '\n\x85\u2028\u2029') + spaces = (ch == ' ') + end += 1 + + def write_literal(self, text): + hints = self.determine_block_hints(text) + self.write_indicator('|'+hints, True) + if hints[-1:] == '+': + self.open_ended = True + self.write_line_break() + breaks = True + start = end = 0 + while end <= len(text): + ch = None + if end < len(text): + ch = text[end] + if breaks: + if ch is None or ch not in '\n\x85\u2028\u2029': + for br in text[start:end]: + if br == '\n': + self.write_line_break() + else: + self.write_line_break(br) + if ch is not None: + self.write_indent() + start = end + else: + if ch is None or ch in '\n\x85\u2028\u2029': + data = text[start:end] + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + if ch is None: + self.write_line_break() + start = end + if ch is not None: + breaks = (ch in '\n\x85\u2028\u2029') + end += 1 + + def write_plain(self, text, split=True): + if self.root_context: + self.open_ended = True + if not text: + return + if not self.whitespace: + data = ' ' + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + self.whitespace = False + self.indention = False + spaces = False + breaks = False + start = end = 0 + while end <= len(text): + ch = None + if end < len(text): + ch = text[end] + if spaces: + if ch != ' ': + if start+1 == end and self.column > self.best_width and split: + self.write_indent() + self.whitespace = False + self.indention = False + else: + data = text[start:end] + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + start = end + elif breaks: + if ch not in '\n\x85\u2028\u2029': + if text[start] == '\n': + self.write_line_break() + for br in text[start:end]: + if br == '\n': + self.write_line_break() + else: + self.write_line_break(br) + self.write_indent() + self.whitespace = False + self.indention = False + start = end + else: + if ch is None or ch in ' \n\x85\u2028\u2029': + data = text[start:end] + self.column += len(data) + if self.encoding: + data = data.encode(self.encoding) + self.stream.write(data) + start = end + if ch is not None: + spaces = (ch == ' ') + breaks = (ch in '\n\x85\u2028\u2029') + end += 1 diff --git a/outputs/audit_venv/lib/python3.11/site-packages/yaml/error.py b/outputs/audit_venv/lib/python3.11/site-packages/yaml/error.py new file mode 100644 index 0000000000000000000000000000000000000000..b796b4dc519512c4825ff539a2e6aa20f4d370d0 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/yaml/error.py @@ -0,0 +1,75 @@ + +__all__ = ['Mark', 'YAMLError', 'MarkedYAMLError'] + +class Mark: + + def __init__(self, name, index, line, column, buffer, pointer): + self.name = name + self.index = index + self.line = line + self.column = column + self.buffer = buffer + self.pointer = pointer + + def get_snippet(self, indent=4, max_length=75): + if self.buffer is None: + return None + head = '' + start = self.pointer + while start > 0 and self.buffer[start-1] not in '\0\r\n\x85\u2028\u2029': + start -= 1 + if self.pointer-start > max_length/2-1: + head = ' ... ' + start += 5 + break + tail = '' + end = self.pointer + while end < len(self.buffer) and self.buffer[end] not in '\0\r\n\x85\u2028\u2029': + end += 1 + if end-self.pointer > max_length/2-1: + tail = ' ... ' + end -= 5 + break + snippet = self.buffer[start:end] + return ' '*indent + head + snippet + tail + '\n' \ + + ' '*(indent+self.pointer-start+len(head)) + '^' + + def __str__(self): + snippet = self.get_snippet() + where = " in \"%s\", line %d, column %d" \ + % (self.name, self.line+1, self.column+1) + if snippet is not None: + where += ":\n"+snippet + return where + +class YAMLError(Exception): + pass + +class MarkedYAMLError(YAMLError): + + def __init__(self, context=None, context_mark=None, + problem=None, problem_mark=None, note=None): + self.context = context + self.context_mark = context_mark + self.problem = problem + self.problem_mark = problem_mark + self.note = note + + def __str__(self): + lines = [] + if self.context is not None: + lines.append(self.context) + if self.context_mark is not None \ + and (self.problem is None or self.problem_mark is None + or self.context_mark.name != self.problem_mark.name + or self.context_mark.line != self.problem_mark.line + or self.context_mark.column != self.problem_mark.column): + lines.append(str(self.context_mark)) + if self.problem is not None: + lines.append(self.problem) + if self.problem_mark is not None: + lines.append(str(self.problem_mark)) + if self.note is not None: + lines.append(self.note) + return '\n'.join(lines) + diff --git a/outputs/audit_venv/lib/python3.11/site-packages/yaml/events.py b/outputs/audit_venv/lib/python3.11/site-packages/yaml/events.py new file mode 100644 index 0000000000000000000000000000000000000000..f79ad389cb6c9517e391dcd25534866bc9ccd36a --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/yaml/events.py @@ -0,0 +1,86 @@ + +# Abstract classes. + +class Event(object): + def __init__(self, start_mark=None, end_mark=None): + self.start_mark = start_mark + self.end_mark = end_mark + def __repr__(self): + attributes = [key for key in ['anchor', 'tag', 'implicit', 'value'] + if hasattr(self, key)] + arguments = ', '.join(['%s=%r' % (key, getattr(self, key)) + for key in attributes]) + return '%s(%s)' % (self.__class__.__name__, arguments) + +class NodeEvent(Event): + def __init__(self, anchor, start_mark=None, end_mark=None): + self.anchor = anchor + self.start_mark = start_mark + self.end_mark = end_mark + +class CollectionStartEvent(NodeEvent): + def __init__(self, anchor, tag, implicit, start_mark=None, end_mark=None, + flow_style=None): + self.anchor = anchor + self.tag = tag + self.implicit = implicit + self.start_mark = start_mark + self.end_mark = end_mark + self.flow_style = flow_style + +class CollectionEndEvent(Event): + pass + +# Implementations. + +class StreamStartEvent(Event): + def __init__(self, start_mark=None, end_mark=None, encoding=None): + self.start_mark = start_mark + self.end_mark = end_mark + self.encoding = encoding + +class StreamEndEvent(Event): + pass + +class DocumentStartEvent(Event): + def __init__(self, start_mark=None, end_mark=None, + explicit=None, version=None, tags=None): + self.start_mark = start_mark + self.end_mark = end_mark + self.explicit = explicit + self.version = version + self.tags = tags + +class DocumentEndEvent(Event): + def __init__(self, start_mark=None, end_mark=None, + explicit=None): + self.start_mark = start_mark + self.end_mark = end_mark + self.explicit = explicit + +class AliasEvent(NodeEvent): + pass + +class ScalarEvent(NodeEvent): + def __init__(self, anchor, tag, implicit, value, + start_mark=None, end_mark=None, style=None): + self.anchor = anchor + self.tag = tag + self.implicit = implicit + self.value = value + self.start_mark = start_mark + self.end_mark = end_mark + self.style = style + +class SequenceStartEvent(CollectionStartEvent): + pass + +class SequenceEndEvent(CollectionEndEvent): + pass + +class MappingStartEvent(CollectionStartEvent): + pass + +class MappingEndEvent(CollectionEndEvent): + pass + diff --git a/outputs/audit_venv/lib/python3.11/site-packages/yaml/loader.py b/outputs/audit_venv/lib/python3.11/site-packages/yaml/loader.py new file mode 100644 index 0000000000000000000000000000000000000000..e90c11224c38e559cdf0cb205f0692ebd4fb8681 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/yaml/loader.py @@ -0,0 +1,63 @@ + +__all__ = ['BaseLoader', 'FullLoader', 'SafeLoader', 'Loader', 'UnsafeLoader'] + +from .reader import * +from .scanner import * +from .parser import * +from .composer import * +from .constructor import * +from .resolver import * + +class BaseLoader(Reader, Scanner, Parser, Composer, BaseConstructor, BaseResolver): + + def __init__(self, stream): + Reader.__init__(self, stream) + Scanner.__init__(self) + Parser.__init__(self) + Composer.__init__(self) + BaseConstructor.__init__(self) + BaseResolver.__init__(self) + +class FullLoader(Reader, Scanner, Parser, Composer, FullConstructor, Resolver): + + def __init__(self, stream): + Reader.__init__(self, stream) + Scanner.__init__(self) + Parser.__init__(self) + Composer.__init__(self) + FullConstructor.__init__(self) + Resolver.__init__(self) + +class SafeLoader(Reader, Scanner, Parser, Composer, SafeConstructor, Resolver): + + def __init__(self, stream): + Reader.__init__(self, stream) + Scanner.__init__(self) + Parser.__init__(self) + Composer.__init__(self) + SafeConstructor.__init__(self) + Resolver.__init__(self) + +class Loader(Reader, Scanner, Parser, Composer, Constructor, Resolver): + + def __init__(self, stream): + Reader.__init__(self, stream) + Scanner.__init__(self) + Parser.__init__(self) + Composer.__init__(self) + Constructor.__init__(self) + Resolver.__init__(self) + +# UnsafeLoader is the same as Loader (which is and was always unsafe on +# untrusted input). Use of either Loader or UnsafeLoader should be rare, since +# FullLoad should be able to load almost all YAML safely. Loader is left intact +# to ensure backwards compatibility. +class UnsafeLoader(Reader, Scanner, Parser, Composer, Constructor, Resolver): + + def __init__(self, stream): + Reader.__init__(self, stream) + Scanner.__init__(self) + Parser.__init__(self) + Composer.__init__(self) + Constructor.__init__(self) + Resolver.__init__(self) diff --git a/outputs/audit_venv/lib/python3.11/site-packages/yaml/nodes.py b/outputs/audit_venv/lib/python3.11/site-packages/yaml/nodes.py new file mode 100644 index 0000000000000000000000000000000000000000..c4f070c41e1fb1bc01af27d69329e92dded38908 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/yaml/nodes.py @@ -0,0 +1,49 @@ + +class Node(object): + def __init__(self, tag, value, start_mark, end_mark): + self.tag = tag + self.value = value + self.start_mark = start_mark + self.end_mark = end_mark + def __repr__(self): + value = self.value + #if isinstance(value, list): + # if len(value) == 0: + # value = '' + # elif len(value) == 1: + # value = '<1 item>' + # else: + # value = '<%d items>' % len(value) + #else: + # if len(value) > 75: + # value = repr(value[:70]+u' ... ') + # else: + # value = repr(value) + value = repr(value) + return '%s(tag=%r, value=%s)' % (self.__class__.__name__, self.tag, value) + +class ScalarNode(Node): + id = 'scalar' + def __init__(self, tag, value, + start_mark=None, end_mark=None, style=None): + self.tag = tag + self.value = value + self.start_mark = start_mark + self.end_mark = end_mark + self.style = style + +class CollectionNode(Node): + def __init__(self, tag, value, + start_mark=None, end_mark=None, flow_style=None): + self.tag = tag + self.value = value + self.start_mark = start_mark + self.end_mark = end_mark + self.flow_style = flow_style + +class SequenceNode(CollectionNode): + id = 'sequence' + +class MappingNode(CollectionNode): + id = 'mapping' + diff --git a/outputs/audit_venv/lib/python3.11/site-packages/yaml/parser.py b/outputs/audit_venv/lib/python3.11/site-packages/yaml/parser.py new file mode 100644 index 0000000000000000000000000000000000000000..13a5995d292045d0f865a99abf692bd35dc87814 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/yaml/parser.py @@ -0,0 +1,589 @@ + +# The following YAML grammar is LL(1) and is parsed by a recursive descent +# parser. +# +# stream ::= STREAM-START implicit_document? explicit_document* STREAM-END +# implicit_document ::= block_node DOCUMENT-END* +# explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* +# block_node_or_indentless_sequence ::= +# ALIAS +# | properties (block_content | indentless_block_sequence)? +# | block_content +# | indentless_block_sequence +# block_node ::= ALIAS +# | properties block_content? +# | block_content +# flow_node ::= ALIAS +# | properties flow_content? +# | flow_content +# properties ::= TAG ANCHOR? | ANCHOR TAG? +# block_content ::= block_collection | flow_collection | SCALAR +# flow_content ::= flow_collection | SCALAR +# block_collection ::= block_sequence | block_mapping +# flow_collection ::= flow_sequence | flow_mapping +# block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END +# indentless_sequence ::= (BLOCK-ENTRY block_node?)+ +# block_mapping ::= BLOCK-MAPPING_START +# ((KEY block_node_or_indentless_sequence?)? +# (VALUE block_node_or_indentless_sequence?)?)* +# BLOCK-END +# flow_sequence ::= FLOW-SEQUENCE-START +# (flow_sequence_entry FLOW-ENTRY)* +# flow_sequence_entry? +# FLOW-SEQUENCE-END +# flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +# flow_mapping ::= FLOW-MAPPING-START +# (flow_mapping_entry FLOW-ENTRY)* +# flow_mapping_entry? +# FLOW-MAPPING-END +# flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +# +# FIRST sets: +# +# stream: { STREAM-START } +# explicit_document: { DIRECTIVE DOCUMENT-START } +# implicit_document: FIRST(block_node) +# block_node: { ALIAS TAG ANCHOR SCALAR BLOCK-SEQUENCE-START BLOCK-MAPPING-START FLOW-SEQUENCE-START FLOW-MAPPING-START } +# flow_node: { ALIAS ANCHOR TAG SCALAR FLOW-SEQUENCE-START FLOW-MAPPING-START } +# block_content: { BLOCK-SEQUENCE-START BLOCK-MAPPING-START FLOW-SEQUENCE-START FLOW-MAPPING-START SCALAR } +# flow_content: { FLOW-SEQUENCE-START FLOW-MAPPING-START SCALAR } +# block_collection: { BLOCK-SEQUENCE-START BLOCK-MAPPING-START } +# flow_collection: { FLOW-SEQUENCE-START FLOW-MAPPING-START } +# block_sequence: { BLOCK-SEQUENCE-START } +# block_mapping: { BLOCK-MAPPING-START } +# block_node_or_indentless_sequence: { ALIAS ANCHOR TAG SCALAR BLOCK-SEQUENCE-START BLOCK-MAPPING-START FLOW-SEQUENCE-START FLOW-MAPPING-START BLOCK-ENTRY } +# indentless_sequence: { ENTRY } +# flow_collection: { FLOW-SEQUENCE-START FLOW-MAPPING-START } +# flow_sequence: { FLOW-SEQUENCE-START } +# flow_mapping: { FLOW-MAPPING-START } +# flow_sequence_entry: { ALIAS ANCHOR TAG SCALAR FLOW-SEQUENCE-START FLOW-MAPPING-START KEY } +# flow_mapping_entry: { ALIAS ANCHOR TAG SCALAR FLOW-SEQUENCE-START FLOW-MAPPING-START KEY } + +__all__ = ['Parser', 'ParserError'] + +from .error import MarkedYAMLError +from .tokens import * +from .events import * +from .scanner import * + +class ParserError(MarkedYAMLError): + pass + +class Parser: + # Since writing a recursive-descendant parser is a straightforward task, we + # do not give many comments here. + + DEFAULT_TAGS = { + '!': '!', + '!!': 'tag:yaml.org,2002:', + } + + def __init__(self): + self.current_event = None + self.yaml_version = None + self.tag_handles = {} + self.states = [] + self.marks = [] + self.state = self.parse_stream_start + + def dispose(self): + # Reset the state attributes (to clear self-references) + self.states = [] + self.state = None + + def check_event(self, *choices): + # Check the type of the next event. + if self.current_event is None: + if self.state: + self.current_event = self.state() + if self.current_event is not None: + if not choices: + return True + for choice in choices: + if isinstance(self.current_event, choice): + return True + return False + + def peek_event(self): + # Get the next event. + if self.current_event is None: + if self.state: + self.current_event = self.state() + return self.current_event + + def get_event(self): + # Get the next event and proceed further. + if self.current_event is None: + if self.state: + self.current_event = self.state() + value = self.current_event + self.current_event = None + return value + + # stream ::= STREAM-START implicit_document? explicit_document* STREAM-END + # implicit_document ::= block_node DOCUMENT-END* + # explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* + + def parse_stream_start(self): + + # Parse the stream start. + token = self.get_token() + event = StreamStartEvent(token.start_mark, token.end_mark, + encoding=token.encoding) + + # Prepare the next state. + self.state = self.parse_implicit_document_start + + return event + + def parse_implicit_document_start(self): + + # Parse an implicit document. + if not self.check_token(DirectiveToken, DocumentStartToken, + StreamEndToken): + self.tag_handles = self.DEFAULT_TAGS + token = self.peek_token() + start_mark = end_mark = token.start_mark + event = DocumentStartEvent(start_mark, end_mark, + explicit=False) + + # Prepare the next state. + self.states.append(self.parse_document_end) + self.state = self.parse_block_node + + return event + + else: + return self.parse_document_start() + + def parse_document_start(self): + + # Parse any extra document end indicators. + while self.check_token(DocumentEndToken): + self.get_token() + + # Parse an explicit document. + if not self.check_token(StreamEndToken): + token = self.peek_token() + start_mark = token.start_mark + version, tags = self.process_directives() + if not self.check_token(DocumentStartToken): + raise ParserError(None, None, + "expected '', but found %r" + % self.peek_token().id, + self.peek_token().start_mark) + token = self.get_token() + end_mark = token.end_mark + event = DocumentStartEvent(start_mark, end_mark, + explicit=True, version=version, tags=tags) + self.states.append(self.parse_document_end) + self.state = self.parse_document_content + else: + # Parse the end of the stream. + token = self.get_token() + event = StreamEndEvent(token.start_mark, token.end_mark) + assert not self.states + assert not self.marks + self.state = None + return event + + def parse_document_end(self): + + # Parse the document end. + token = self.peek_token() + start_mark = end_mark = token.start_mark + explicit = False + if self.check_token(DocumentEndToken): + token = self.get_token() + end_mark = token.end_mark + explicit = True + event = DocumentEndEvent(start_mark, end_mark, + explicit=explicit) + + # Prepare the next state. + self.state = self.parse_document_start + + return event + + def parse_document_content(self): + if self.check_token(DirectiveToken, + DocumentStartToken, DocumentEndToken, StreamEndToken): + event = self.process_empty_scalar(self.peek_token().start_mark) + self.state = self.states.pop() + return event + else: + return self.parse_block_node() + + def process_directives(self): + self.yaml_version = None + self.tag_handles = {} + while self.check_token(DirectiveToken): + token = self.get_token() + if token.name == 'YAML': + if self.yaml_version is not None: + raise ParserError(None, None, + "found duplicate YAML directive", token.start_mark) + major, minor = token.value + if major != 1: + raise ParserError(None, None, + "found incompatible YAML document (version 1.* is required)", + token.start_mark) + self.yaml_version = token.value + elif token.name == 'TAG': + handle, prefix = token.value + if handle in self.tag_handles: + raise ParserError(None, None, + "duplicate tag handle %r" % handle, + token.start_mark) + self.tag_handles[handle] = prefix + if self.tag_handles: + value = self.yaml_version, self.tag_handles.copy() + else: + value = self.yaml_version, None + for key in self.DEFAULT_TAGS: + if key not in self.tag_handles: + self.tag_handles[key] = self.DEFAULT_TAGS[key] + return value + + # block_node_or_indentless_sequence ::= ALIAS + # | properties (block_content | indentless_block_sequence)? + # | block_content + # | indentless_block_sequence + # block_node ::= ALIAS + # | properties block_content? + # | block_content + # flow_node ::= ALIAS + # | properties flow_content? + # | flow_content + # properties ::= TAG ANCHOR? | ANCHOR TAG? + # block_content ::= block_collection | flow_collection | SCALAR + # flow_content ::= flow_collection | SCALAR + # block_collection ::= block_sequence | block_mapping + # flow_collection ::= flow_sequence | flow_mapping + + def parse_block_node(self): + return self.parse_node(block=True) + + def parse_flow_node(self): + return self.parse_node() + + def parse_block_node_or_indentless_sequence(self): + return self.parse_node(block=True, indentless_sequence=True) + + def parse_node(self, block=False, indentless_sequence=False): + if self.check_token(AliasToken): + token = self.get_token() + event = AliasEvent(token.value, token.start_mark, token.end_mark) + self.state = self.states.pop() + else: + anchor = None + tag = None + start_mark = end_mark = tag_mark = None + if self.check_token(AnchorToken): + token = self.get_token() + start_mark = token.start_mark + end_mark = token.end_mark + anchor = token.value + if self.check_token(TagToken): + token = self.get_token() + tag_mark = token.start_mark + end_mark = token.end_mark + tag = token.value + elif self.check_token(TagToken): + token = self.get_token() + start_mark = tag_mark = token.start_mark + end_mark = token.end_mark + tag = token.value + if self.check_token(AnchorToken): + token = self.get_token() + end_mark = token.end_mark + anchor = token.value + if tag is not None: + handle, suffix = tag + if handle is not None: + if handle not in self.tag_handles: + raise ParserError("while parsing a node", start_mark, + "found undefined tag handle %r" % handle, + tag_mark) + tag = self.tag_handles[handle]+suffix + else: + tag = suffix + #if tag == '!': + # raise ParserError("while parsing a node", start_mark, + # "found non-specific tag '!'", tag_mark, + # "Please check 'http://pyyaml.org/wiki/YAMLNonSpecificTag' and share your opinion.") + if start_mark is None: + start_mark = end_mark = self.peek_token().start_mark + event = None + implicit = (tag is None or tag == '!') + if indentless_sequence and self.check_token(BlockEntryToken): + end_mark = self.peek_token().end_mark + event = SequenceStartEvent(anchor, tag, implicit, + start_mark, end_mark) + self.state = self.parse_indentless_sequence_entry + else: + if self.check_token(ScalarToken): + token = self.get_token() + end_mark = token.end_mark + if (token.plain and tag is None) or tag == '!': + implicit = (True, False) + elif tag is None: + implicit = (False, True) + else: + implicit = (False, False) + event = ScalarEvent(anchor, tag, implicit, token.value, + start_mark, end_mark, style=token.style) + self.state = self.states.pop() + elif self.check_token(FlowSequenceStartToken): + end_mark = self.peek_token().end_mark + event = SequenceStartEvent(anchor, tag, implicit, + start_mark, end_mark, flow_style=True) + self.state = self.parse_flow_sequence_first_entry + elif self.check_token(FlowMappingStartToken): + end_mark = self.peek_token().end_mark + event = MappingStartEvent(anchor, tag, implicit, + start_mark, end_mark, flow_style=True) + self.state = self.parse_flow_mapping_first_key + elif block and self.check_token(BlockSequenceStartToken): + end_mark = self.peek_token().start_mark + event = SequenceStartEvent(anchor, tag, implicit, + start_mark, end_mark, flow_style=False) + self.state = self.parse_block_sequence_first_entry + elif block and self.check_token(BlockMappingStartToken): + end_mark = self.peek_token().start_mark + event = MappingStartEvent(anchor, tag, implicit, + start_mark, end_mark, flow_style=False) + self.state = self.parse_block_mapping_first_key + elif anchor is not None or tag is not None: + # Empty scalars are allowed even if a tag or an anchor is + # specified. + event = ScalarEvent(anchor, tag, (implicit, False), '', + start_mark, end_mark) + self.state = self.states.pop() + else: + if block: + node = 'block' + else: + node = 'flow' + token = self.peek_token() + raise ParserError("while parsing a %s node" % node, start_mark, + "expected the node content, but found %r" % token.id, + token.start_mark) + return event + + # block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END + + def parse_block_sequence_first_entry(self): + token = self.get_token() + self.marks.append(token.start_mark) + return self.parse_block_sequence_entry() + + def parse_block_sequence_entry(self): + if self.check_token(BlockEntryToken): + token = self.get_token() + if not self.check_token(BlockEntryToken, BlockEndToken): + self.states.append(self.parse_block_sequence_entry) + return self.parse_block_node() + else: + self.state = self.parse_block_sequence_entry + return self.process_empty_scalar(token.end_mark) + if not self.check_token(BlockEndToken): + token = self.peek_token() + raise ParserError("while parsing a block collection", self.marks[-1], + "expected , but found %r" % token.id, token.start_mark) + token = self.get_token() + event = SequenceEndEvent(token.start_mark, token.end_mark) + self.state = self.states.pop() + self.marks.pop() + return event + + # indentless_sequence ::= (BLOCK-ENTRY block_node?)+ + + def parse_indentless_sequence_entry(self): + if self.check_token(BlockEntryToken): + token = self.get_token() + if not self.check_token(BlockEntryToken, + KeyToken, ValueToken, BlockEndToken): + self.states.append(self.parse_indentless_sequence_entry) + return self.parse_block_node() + else: + self.state = self.parse_indentless_sequence_entry + return self.process_empty_scalar(token.end_mark) + token = self.peek_token() + event = SequenceEndEvent(token.start_mark, token.start_mark) + self.state = self.states.pop() + return event + + # block_mapping ::= BLOCK-MAPPING_START + # ((KEY block_node_or_indentless_sequence?)? + # (VALUE block_node_or_indentless_sequence?)?)* + # BLOCK-END + + def parse_block_mapping_first_key(self): + token = self.get_token() + self.marks.append(token.start_mark) + return self.parse_block_mapping_key() + + def parse_block_mapping_key(self): + if self.check_token(KeyToken): + token = self.get_token() + if not self.check_token(KeyToken, ValueToken, BlockEndToken): + self.states.append(self.parse_block_mapping_value) + return self.parse_block_node_or_indentless_sequence() + else: + self.state = self.parse_block_mapping_value + return self.process_empty_scalar(token.end_mark) + if not self.check_token(BlockEndToken): + token = self.peek_token() + raise ParserError("while parsing a block mapping", self.marks[-1], + "expected , but found %r" % token.id, token.start_mark) + token = self.get_token() + event = MappingEndEvent(token.start_mark, token.end_mark) + self.state = self.states.pop() + self.marks.pop() + return event + + def parse_block_mapping_value(self): + if self.check_token(ValueToken): + token = self.get_token() + if not self.check_token(KeyToken, ValueToken, BlockEndToken): + self.states.append(self.parse_block_mapping_key) + return self.parse_block_node_or_indentless_sequence() + else: + self.state = self.parse_block_mapping_key + return self.process_empty_scalar(token.end_mark) + else: + self.state = self.parse_block_mapping_key + token = self.peek_token() + return self.process_empty_scalar(token.start_mark) + + # flow_sequence ::= FLOW-SEQUENCE-START + # (flow_sequence_entry FLOW-ENTRY)* + # flow_sequence_entry? + # FLOW-SEQUENCE-END + # flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? + # + # Note that while production rules for both flow_sequence_entry and + # flow_mapping_entry are equal, their interpretations are different. + # For `flow_sequence_entry`, the part `KEY flow_node? (VALUE flow_node?)?` + # generate an inline mapping (set syntax). + + def parse_flow_sequence_first_entry(self): + token = self.get_token() + self.marks.append(token.start_mark) + return self.parse_flow_sequence_entry(first=True) + + def parse_flow_sequence_entry(self, first=False): + if not self.check_token(FlowSequenceEndToken): + if not first: + if self.check_token(FlowEntryToken): + self.get_token() + else: + token = self.peek_token() + raise ParserError("while parsing a flow sequence", self.marks[-1], + "expected ',' or ']', but got %r" % token.id, token.start_mark) + + if self.check_token(KeyToken): + token = self.peek_token() + event = MappingStartEvent(None, None, True, + token.start_mark, token.end_mark, + flow_style=True) + self.state = self.parse_flow_sequence_entry_mapping_key + return event + elif not self.check_token(FlowSequenceEndToken): + self.states.append(self.parse_flow_sequence_entry) + return self.parse_flow_node() + token = self.get_token() + event = SequenceEndEvent(token.start_mark, token.end_mark) + self.state = self.states.pop() + self.marks.pop() + return event + + def parse_flow_sequence_entry_mapping_key(self): + token = self.get_token() + if not self.check_token(ValueToken, + FlowEntryToken, FlowSequenceEndToken): + self.states.append(self.parse_flow_sequence_entry_mapping_value) + return self.parse_flow_node() + else: + self.state = self.parse_flow_sequence_entry_mapping_value + return self.process_empty_scalar(token.end_mark) + + def parse_flow_sequence_entry_mapping_value(self): + if self.check_token(ValueToken): + token = self.get_token() + if not self.check_token(FlowEntryToken, FlowSequenceEndToken): + self.states.append(self.parse_flow_sequence_entry_mapping_end) + return self.parse_flow_node() + else: + self.state = self.parse_flow_sequence_entry_mapping_end + return self.process_empty_scalar(token.end_mark) + else: + self.state = self.parse_flow_sequence_entry_mapping_end + token = self.peek_token() + return self.process_empty_scalar(token.start_mark) + + def parse_flow_sequence_entry_mapping_end(self): + self.state = self.parse_flow_sequence_entry + token = self.peek_token() + return MappingEndEvent(token.start_mark, token.start_mark) + + # flow_mapping ::= FLOW-MAPPING-START + # (flow_mapping_entry FLOW-ENTRY)* + # flow_mapping_entry? + # FLOW-MAPPING-END + # flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? + + def parse_flow_mapping_first_key(self): + token = self.get_token() + self.marks.append(token.start_mark) + return self.parse_flow_mapping_key(first=True) + + def parse_flow_mapping_key(self, first=False): + if not self.check_token(FlowMappingEndToken): + if not first: + if self.check_token(FlowEntryToken): + self.get_token() + else: + token = self.peek_token() + raise ParserError("while parsing a flow mapping", self.marks[-1], + "expected ',' or '}', but got %r" % token.id, token.start_mark) + if self.check_token(KeyToken): + token = self.get_token() + if not self.check_token(ValueToken, + FlowEntryToken, FlowMappingEndToken): + self.states.append(self.parse_flow_mapping_value) + return self.parse_flow_node() + else: + self.state = self.parse_flow_mapping_value + return self.process_empty_scalar(token.end_mark) + elif not self.check_token(FlowMappingEndToken): + self.states.append(self.parse_flow_mapping_empty_value) + return self.parse_flow_node() + token = self.get_token() + event = MappingEndEvent(token.start_mark, token.end_mark) + self.state = self.states.pop() + self.marks.pop() + return event + + def parse_flow_mapping_value(self): + if self.check_token(ValueToken): + token = self.get_token() + if not self.check_token(FlowEntryToken, FlowMappingEndToken): + self.states.append(self.parse_flow_mapping_key) + return self.parse_flow_node() + else: + self.state = self.parse_flow_mapping_key + return self.process_empty_scalar(token.end_mark) + else: + self.state = self.parse_flow_mapping_key + token = self.peek_token() + return self.process_empty_scalar(token.start_mark) + + def parse_flow_mapping_empty_value(self): + self.state = self.parse_flow_mapping_key + return self.process_empty_scalar(self.peek_token().start_mark) + + def process_empty_scalar(self, mark): + return ScalarEvent(None, None, (True, False), '', mark, mark) + diff --git a/outputs/audit_venv/lib/python3.11/site-packages/yaml/reader.py b/outputs/audit_venv/lib/python3.11/site-packages/yaml/reader.py new file mode 100644 index 0000000000000000000000000000000000000000..774b0219b5932a0ee1c27e637371de5ba8d9cb16 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/yaml/reader.py @@ -0,0 +1,185 @@ +# This module contains abstractions for the input stream. You don't have to +# looks further, there are no pretty code. +# +# We define two classes here. +# +# Mark(source, line, column) +# It's just a record and its only use is producing nice error messages. +# Parser does not use it for any other purposes. +# +# Reader(source, data) +# Reader determines the encoding of `data` and converts it to unicode. +# Reader provides the following methods and attributes: +# reader.peek(length=1) - return the next `length` characters +# reader.forward(length=1) - move the current position to `length` characters. +# reader.index - the number of the current character. +# reader.line, stream.column - the line and the column of the current character. + +__all__ = ['Reader', 'ReaderError'] + +from .error import YAMLError, Mark + +import codecs, re + +class ReaderError(YAMLError): + + def __init__(self, name, position, character, encoding, reason): + self.name = name + self.character = character + self.position = position + self.encoding = encoding + self.reason = reason + + def __str__(self): + if isinstance(self.character, bytes): + return "'%s' codec can't decode byte #x%02x: %s\n" \ + " in \"%s\", position %d" \ + % (self.encoding, ord(self.character), self.reason, + self.name, self.position) + else: + return "unacceptable character #x%04x: %s\n" \ + " in \"%s\", position %d" \ + % (self.character, self.reason, + self.name, self.position) + +class Reader(object): + # Reader: + # - determines the data encoding and converts it to a unicode string, + # - checks if characters are in allowed range, + # - adds '\0' to the end. + + # Reader accepts + # - a `bytes` object, + # - a `str` object, + # - a file-like object with its `read` method returning `str`, + # - a file-like object with its `read` method returning `unicode`. + + # Yeah, it's ugly and slow. + + def __init__(self, stream): + self.name = None + self.stream = None + self.stream_pointer = 0 + self.eof = True + self.buffer = '' + self.pointer = 0 + self.raw_buffer = None + self.raw_decode = None + self.encoding = None + self.index = 0 + self.line = 0 + self.column = 0 + if isinstance(stream, str): + self.name = "" + self.check_printable(stream) + self.buffer = stream+'\0' + elif isinstance(stream, bytes): + self.name = "" + self.raw_buffer = stream + self.determine_encoding() + else: + self.stream = stream + self.name = getattr(stream, 'name', "") + self.eof = False + self.raw_buffer = None + self.determine_encoding() + + def peek(self, index=0): + try: + return self.buffer[self.pointer+index] + except IndexError: + self.update(index+1) + return self.buffer[self.pointer+index] + + def prefix(self, length=1): + if self.pointer+length >= len(self.buffer): + self.update(length) + return self.buffer[self.pointer:self.pointer+length] + + def forward(self, length=1): + if self.pointer+length+1 >= len(self.buffer): + self.update(length+1) + while length: + ch = self.buffer[self.pointer] + self.pointer += 1 + self.index += 1 + if ch in '\n\x85\u2028\u2029' \ + or (ch == '\r' and self.buffer[self.pointer] != '\n'): + self.line += 1 + self.column = 0 + elif ch != '\uFEFF': + self.column += 1 + length -= 1 + + def get_mark(self): + if self.stream is None: + return Mark(self.name, self.index, self.line, self.column, + self.buffer, self.pointer) + else: + return Mark(self.name, self.index, self.line, self.column, + None, None) + + def determine_encoding(self): + while not self.eof and (self.raw_buffer is None or len(self.raw_buffer) < 2): + self.update_raw() + if isinstance(self.raw_buffer, bytes): + if self.raw_buffer.startswith(codecs.BOM_UTF16_LE): + self.raw_decode = codecs.utf_16_le_decode + self.encoding = 'utf-16-le' + elif self.raw_buffer.startswith(codecs.BOM_UTF16_BE): + self.raw_decode = codecs.utf_16_be_decode + self.encoding = 'utf-16-be' + else: + self.raw_decode = codecs.utf_8_decode + self.encoding = 'utf-8' + self.update(1) + + NON_PRINTABLE = re.compile('[^\x09\x0A\x0D\x20-\x7E\x85\xA0-\uD7FF\uE000-\uFFFD\U00010000-\U0010ffff]') + def check_printable(self, data): + match = self.NON_PRINTABLE.search(data) + if match: + character = match.group() + position = self.index+(len(self.buffer)-self.pointer)+match.start() + raise ReaderError(self.name, position, ord(character), + 'unicode', "special characters are not allowed") + + def update(self, length): + if self.raw_buffer is None: + return + self.buffer = self.buffer[self.pointer:] + self.pointer = 0 + while len(self.buffer) < length: + if not self.eof: + self.update_raw() + if self.raw_decode is not None: + try: + data, converted = self.raw_decode(self.raw_buffer, + 'strict', self.eof) + except UnicodeDecodeError as exc: + character = self.raw_buffer[exc.start] + if self.stream is not None: + position = self.stream_pointer-len(self.raw_buffer)+exc.start + else: + position = exc.start + raise ReaderError(self.name, position, character, + exc.encoding, exc.reason) + else: + data = self.raw_buffer + converted = len(data) + self.check_printable(data) + self.buffer += data + self.raw_buffer = self.raw_buffer[converted:] + if self.eof: + self.buffer += '\0' + self.raw_buffer = None + break + + def update_raw(self, size=4096): + data = self.stream.read(size) + if self.raw_buffer is None: + self.raw_buffer = data + else: + self.raw_buffer += data + self.stream_pointer += len(data) + if not data: + self.eof = True diff --git a/outputs/audit_venv/lib/python3.11/site-packages/yaml/representer.py b/outputs/audit_venv/lib/python3.11/site-packages/yaml/representer.py new file mode 100644 index 0000000000000000000000000000000000000000..808ca06dfbd60c9a23eb079151b74a82ef688749 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/yaml/representer.py @@ -0,0 +1,389 @@ + +__all__ = ['BaseRepresenter', 'SafeRepresenter', 'Representer', + 'RepresenterError'] + +from .error import * +from .nodes import * + +import datetime, copyreg, types, base64, collections + +class RepresenterError(YAMLError): + pass + +class BaseRepresenter: + + yaml_representers = {} + yaml_multi_representers = {} + + def __init__(self, default_style=None, default_flow_style=False, sort_keys=True): + self.default_style = default_style + self.sort_keys = sort_keys + self.default_flow_style = default_flow_style + self.represented_objects = {} + self.object_keeper = [] + self.alias_key = None + + def represent(self, data): + node = self.represent_data(data) + self.serialize(node) + self.represented_objects = {} + self.object_keeper = [] + self.alias_key = None + + def represent_data(self, data): + if self.ignore_aliases(data): + self.alias_key = None + else: + self.alias_key = id(data) + if self.alias_key is not None: + if self.alias_key in self.represented_objects: + node = self.represented_objects[self.alias_key] + #if node is None: + # raise RepresenterError("recursive objects are not allowed: %r" % data) + return node + #self.represented_objects[alias_key] = None + self.object_keeper.append(data) + data_types = type(data).__mro__ + if data_types[0] in self.yaml_representers: + node = self.yaml_representers[data_types[0]](self, data) + else: + for data_type in data_types: + if data_type in self.yaml_multi_representers: + node = self.yaml_multi_representers[data_type](self, data) + break + else: + if None in self.yaml_multi_representers: + node = self.yaml_multi_representers[None](self, data) + elif None in self.yaml_representers: + node = self.yaml_representers[None](self, data) + else: + node = ScalarNode(None, str(data)) + #if alias_key is not None: + # self.represented_objects[alias_key] = node + return node + + @classmethod + def add_representer(cls, data_type, representer): + if not 'yaml_representers' in cls.__dict__: + cls.yaml_representers = cls.yaml_representers.copy() + cls.yaml_representers[data_type] = representer + + @classmethod + def add_multi_representer(cls, data_type, representer): + if not 'yaml_multi_representers' in cls.__dict__: + cls.yaml_multi_representers = cls.yaml_multi_representers.copy() + cls.yaml_multi_representers[data_type] = representer + + def represent_scalar(self, tag, value, style=None): + if style is None: + style = self.default_style + node = ScalarNode(tag, value, style=style) + if self.alias_key is not None: + self.represented_objects[self.alias_key] = node + return node + + def represent_sequence(self, tag, sequence, flow_style=None): + value = [] + node = SequenceNode(tag, value, flow_style=flow_style) + if self.alias_key is not None: + self.represented_objects[self.alias_key] = node + best_style = True + for item in sequence: + node_item = self.represent_data(item) + if not (isinstance(node_item, ScalarNode) and not node_item.style): + best_style = False + value.append(node_item) + if flow_style is None: + if self.default_flow_style is not None: + node.flow_style = self.default_flow_style + else: + node.flow_style = best_style + return node + + def represent_mapping(self, tag, mapping, flow_style=None): + value = [] + node = MappingNode(tag, value, flow_style=flow_style) + if self.alias_key is not None: + self.represented_objects[self.alias_key] = node + best_style = True + if hasattr(mapping, 'items'): + mapping = list(mapping.items()) + if self.sort_keys: + try: + mapping = sorted(mapping) + except TypeError: + pass + for item_key, item_value in mapping: + node_key = self.represent_data(item_key) + node_value = self.represent_data(item_value) + if not (isinstance(node_key, ScalarNode) and not node_key.style): + best_style = False + if not (isinstance(node_value, ScalarNode) and not node_value.style): + best_style = False + value.append((node_key, node_value)) + if flow_style is None: + if self.default_flow_style is not None: + node.flow_style = self.default_flow_style + else: + node.flow_style = best_style + return node + + def ignore_aliases(self, data): + return False + +class SafeRepresenter(BaseRepresenter): + + def ignore_aliases(self, data): + if data is None: + return True + if isinstance(data, tuple) and data == (): + return True + if isinstance(data, (str, bytes, bool, int, float)): + return True + + def represent_none(self, data): + return self.represent_scalar('tag:yaml.org,2002:null', 'null') + + def represent_str(self, data): + return self.represent_scalar('tag:yaml.org,2002:str', data) + + def represent_binary(self, data): + if hasattr(base64, 'encodebytes'): + data = base64.encodebytes(data).decode('ascii') + else: + data = base64.encodestring(data).decode('ascii') + return self.represent_scalar('tag:yaml.org,2002:binary', data, style='|') + + def represent_bool(self, data): + if data: + value = 'true' + else: + value = 'false' + return self.represent_scalar('tag:yaml.org,2002:bool', value) + + def represent_int(self, data): + return self.represent_scalar('tag:yaml.org,2002:int', str(data)) + + inf_value = 1e300 + while repr(inf_value) != repr(inf_value*inf_value): + inf_value *= inf_value + + def represent_float(self, data): + if data != data or (data == 0.0 and data == 1.0): + value = '.nan' + elif data == self.inf_value: + value = '.inf' + elif data == -self.inf_value: + value = '-.inf' + else: + value = repr(data).lower() + # Note that in some cases `repr(data)` represents a float number + # without the decimal parts. For instance: + # >>> repr(1e17) + # '1e17' + # Unfortunately, this is not a valid float representation according + # to the definition of the `!!float` tag. We fix this by adding + # '.0' before the 'e' symbol. + if '.' not in value and 'e' in value: + value = value.replace('e', '.0e', 1) + return self.represent_scalar('tag:yaml.org,2002:float', value) + + def represent_list(self, data): + #pairs = (len(data) > 0 and isinstance(data, list)) + #if pairs: + # for item in data: + # if not isinstance(item, tuple) or len(item) != 2: + # pairs = False + # break + #if not pairs: + return self.represent_sequence('tag:yaml.org,2002:seq', data) + #value = [] + #for item_key, item_value in data: + # value.append(self.represent_mapping(u'tag:yaml.org,2002:map', + # [(item_key, item_value)])) + #return SequenceNode(u'tag:yaml.org,2002:pairs', value) + + def represent_dict(self, data): + return self.represent_mapping('tag:yaml.org,2002:map', data) + + def represent_set(self, data): + value = {} + for key in data: + value[key] = None + return self.represent_mapping('tag:yaml.org,2002:set', value) + + def represent_date(self, data): + value = data.isoformat() + return self.represent_scalar('tag:yaml.org,2002:timestamp', value) + + def represent_datetime(self, data): + value = data.isoformat(' ') + return self.represent_scalar('tag:yaml.org,2002:timestamp', value) + + def represent_yaml_object(self, tag, data, cls, flow_style=None): + if hasattr(data, '__getstate__'): + state = data.__getstate__() + else: + state = data.__dict__.copy() + return self.represent_mapping(tag, state, flow_style=flow_style) + + def represent_undefined(self, data): + raise RepresenterError("cannot represent an object", data) + +SafeRepresenter.add_representer(type(None), + SafeRepresenter.represent_none) + +SafeRepresenter.add_representer(str, + SafeRepresenter.represent_str) + +SafeRepresenter.add_representer(bytes, + SafeRepresenter.represent_binary) + +SafeRepresenter.add_representer(bool, + SafeRepresenter.represent_bool) + +SafeRepresenter.add_representer(int, + SafeRepresenter.represent_int) + +SafeRepresenter.add_representer(float, + SafeRepresenter.represent_float) + +SafeRepresenter.add_representer(list, + SafeRepresenter.represent_list) + +SafeRepresenter.add_representer(tuple, + SafeRepresenter.represent_list) + +SafeRepresenter.add_representer(dict, + SafeRepresenter.represent_dict) + +SafeRepresenter.add_representer(set, + SafeRepresenter.represent_set) + +SafeRepresenter.add_representer(datetime.date, + SafeRepresenter.represent_date) + +SafeRepresenter.add_representer(datetime.datetime, + SafeRepresenter.represent_datetime) + +SafeRepresenter.add_representer(None, + SafeRepresenter.represent_undefined) + +class Representer(SafeRepresenter): + + def represent_complex(self, data): + if data.imag == 0.0: + data = '%r' % data.real + elif data.real == 0.0: + data = '%rj' % data.imag + elif data.imag > 0: + data = '%r+%rj' % (data.real, data.imag) + else: + data = '%r%rj' % (data.real, data.imag) + return self.represent_scalar('tag:yaml.org,2002:python/complex', data) + + def represent_tuple(self, data): + return self.represent_sequence('tag:yaml.org,2002:python/tuple', data) + + def represent_name(self, data): + name = '%s.%s' % (data.__module__, data.__name__) + return self.represent_scalar('tag:yaml.org,2002:python/name:'+name, '') + + def represent_module(self, data): + return self.represent_scalar( + 'tag:yaml.org,2002:python/module:'+data.__name__, '') + + def represent_object(self, data): + # We use __reduce__ API to save the data. data.__reduce__ returns + # a tuple of length 2-5: + # (function, args, state, listitems, dictitems) + + # For reconstructing, we calls function(*args), then set its state, + # listitems, and dictitems if they are not None. + + # A special case is when function.__name__ == '__newobj__'. In this + # case we create the object with args[0].__new__(*args). + + # Another special case is when __reduce__ returns a string - we don't + # support it. + + # We produce a !!python/object, !!python/object/new or + # !!python/object/apply node. + + cls = type(data) + if cls in copyreg.dispatch_table: + reduce = copyreg.dispatch_table[cls](data) + elif hasattr(data, '__reduce_ex__'): + reduce = data.__reduce_ex__(2) + elif hasattr(data, '__reduce__'): + reduce = data.__reduce__() + else: + raise RepresenterError("cannot represent an object", data) + reduce = (list(reduce)+[None]*5)[:5] + function, args, state, listitems, dictitems = reduce + args = list(args) + if state is None: + state = {} + if listitems is not None: + listitems = list(listitems) + if dictitems is not None: + dictitems = dict(dictitems) + if function.__name__ == '__newobj__': + function = args[0] + args = args[1:] + tag = 'tag:yaml.org,2002:python/object/new:' + newobj = True + else: + tag = 'tag:yaml.org,2002:python/object/apply:' + newobj = False + function_name = '%s.%s' % (function.__module__, function.__name__) + if not args and not listitems and not dictitems \ + and isinstance(state, dict) and newobj: + return self.represent_mapping( + 'tag:yaml.org,2002:python/object:'+function_name, state) + if not listitems and not dictitems \ + and isinstance(state, dict) and not state: + return self.represent_sequence(tag+function_name, args) + value = {} + if args: + value['args'] = args + if state or not isinstance(state, dict): + value['state'] = state + if listitems: + value['listitems'] = listitems + if dictitems: + value['dictitems'] = dictitems + return self.represent_mapping(tag+function_name, value) + + def represent_ordered_dict(self, data): + # Provide uniform representation across different Python versions. + data_type = type(data) + tag = 'tag:yaml.org,2002:python/object/apply:%s.%s' \ + % (data_type.__module__, data_type.__name__) + items = [[key, value] for key, value in data.items()] + return self.represent_sequence(tag, [items]) + +Representer.add_representer(complex, + Representer.represent_complex) + +Representer.add_representer(tuple, + Representer.represent_tuple) + +Representer.add_multi_representer(type, + Representer.represent_name) + +Representer.add_representer(collections.OrderedDict, + Representer.represent_ordered_dict) + +Representer.add_representer(types.FunctionType, + Representer.represent_name) + +Representer.add_representer(types.BuiltinFunctionType, + Representer.represent_name) + +Representer.add_representer(types.ModuleType, + Representer.represent_module) + +Representer.add_multi_representer(object, + Representer.represent_object) + diff --git a/outputs/audit_venv/lib/python3.11/site-packages/yaml/resolver.py b/outputs/audit_venv/lib/python3.11/site-packages/yaml/resolver.py new file mode 100644 index 0000000000000000000000000000000000000000..3522bdaaf6358110b608f4e6503b9d314c82d887 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/yaml/resolver.py @@ -0,0 +1,227 @@ + +__all__ = ['BaseResolver', 'Resolver'] + +from .error import * +from .nodes import * + +import re + +class ResolverError(YAMLError): + pass + +class BaseResolver: + + DEFAULT_SCALAR_TAG = 'tag:yaml.org,2002:str' + DEFAULT_SEQUENCE_TAG = 'tag:yaml.org,2002:seq' + DEFAULT_MAPPING_TAG = 'tag:yaml.org,2002:map' + + yaml_implicit_resolvers = {} + yaml_path_resolvers = {} + + def __init__(self): + self.resolver_exact_paths = [] + self.resolver_prefix_paths = [] + + @classmethod + def add_implicit_resolver(cls, tag, regexp, first): + if not 'yaml_implicit_resolvers' in cls.__dict__: + implicit_resolvers = {} + for key in cls.yaml_implicit_resolvers: + implicit_resolvers[key] = cls.yaml_implicit_resolvers[key][:] + cls.yaml_implicit_resolvers = implicit_resolvers + if first is None: + first = [None] + for ch in first: + cls.yaml_implicit_resolvers.setdefault(ch, []).append((tag, regexp)) + + @classmethod + def add_path_resolver(cls, tag, path, kind=None): + # Note: `add_path_resolver` is experimental. The API could be changed. + # `new_path` is a pattern that is matched against the path from the + # root to the node that is being considered. `node_path` elements are + # tuples `(node_check, index_check)`. `node_check` is a node class: + # `ScalarNode`, `SequenceNode`, `MappingNode` or `None`. `None` + # matches any kind of a node. `index_check` could be `None`, a boolean + # value, a string value, or a number. `None` and `False` match against + # any _value_ of sequence and mapping nodes. `True` matches against + # any _key_ of a mapping node. A string `index_check` matches against + # a mapping value that corresponds to a scalar key which content is + # equal to the `index_check` value. An integer `index_check` matches + # against a sequence value with the index equal to `index_check`. + if not 'yaml_path_resolvers' in cls.__dict__: + cls.yaml_path_resolvers = cls.yaml_path_resolvers.copy() + new_path = [] + for element in path: + if isinstance(element, (list, tuple)): + if len(element) == 2: + node_check, index_check = element + elif len(element) == 1: + node_check = element[0] + index_check = True + else: + raise ResolverError("Invalid path element: %s" % element) + else: + node_check = None + index_check = element + if node_check is str: + node_check = ScalarNode + elif node_check is list: + node_check = SequenceNode + elif node_check is dict: + node_check = MappingNode + elif node_check not in [ScalarNode, SequenceNode, MappingNode] \ + and not isinstance(node_check, str) \ + and node_check is not None: + raise ResolverError("Invalid node checker: %s" % node_check) + if not isinstance(index_check, (str, int)) \ + and index_check is not None: + raise ResolverError("Invalid index checker: %s" % index_check) + new_path.append((node_check, index_check)) + if kind is str: + kind = ScalarNode + elif kind is list: + kind = SequenceNode + elif kind is dict: + kind = MappingNode + elif kind not in [ScalarNode, SequenceNode, MappingNode] \ + and kind is not None: + raise ResolverError("Invalid node kind: %s" % kind) + cls.yaml_path_resolvers[tuple(new_path), kind] = tag + + def descend_resolver(self, current_node, current_index): + if not self.yaml_path_resolvers: + return + exact_paths = {} + prefix_paths = [] + if current_node: + depth = len(self.resolver_prefix_paths) + for path, kind in self.resolver_prefix_paths[-1]: + if self.check_resolver_prefix(depth, path, kind, + current_node, current_index): + if len(path) > depth: + prefix_paths.append((path, kind)) + else: + exact_paths[kind] = self.yaml_path_resolvers[path, kind] + else: + for path, kind in self.yaml_path_resolvers: + if not path: + exact_paths[kind] = self.yaml_path_resolvers[path, kind] + else: + prefix_paths.append((path, kind)) + self.resolver_exact_paths.append(exact_paths) + self.resolver_prefix_paths.append(prefix_paths) + + def ascend_resolver(self): + if not self.yaml_path_resolvers: + return + self.resolver_exact_paths.pop() + self.resolver_prefix_paths.pop() + + def check_resolver_prefix(self, depth, path, kind, + current_node, current_index): + node_check, index_check = path[depth-1] + if isinstance(node_check, str): + if current_node.tag != node_check: + return + elif node_check is not None: + if not isinstance(current_node, node_check): + return + if index_check is True and current_index is not None: + return + if (index_check is False or index_check is None) \ + and current_index is None: + return + if isinstance(index_check, str): + if not (isinstance(current_index, ScalarNode) + and index_check == current_index.value): + return + elif isinstance(index_check, int) and not isinstance(index_check, bool): + if index_check != current_index: + return + return True + + def resolve(self, kind, value, implicit): + if kind is ScalarNode and implicit[0]: + if value == '': + resolvers = self.yaml_implicit_resolvers.get('', []) + else: + resolvers = self.yaml_implicit_resolvers.get(value[0], []) + wildcard_resolvers = self.yaml_implicit_resolvers.get(None, []) + for tag, regexp in resolvers + wildcard_resolvers: + if regexp.match(value): + return tag + implicit = implicit[1] + if self.yaml_path_resolvers: + exact_paths = self.resolver_exact_paths[-1] + if kind in exact_paths: + return exact_paths[kind] + if None in exact_paths: + return exact_paths[None] + if kind is ScalarNode: + return self.DEFAULT_SCALAR_TAG + elif kind is SequenceNode: + return self.DEFAULT_SEQUENCE_TAG + elif kind is MappingNode: + return self.DEFAULT_MAPPING_TAG + +class Resolver(BaseResolver): + pass + +Resolver.add_implicit_resolver( + 'tag:yaml.org,2002:bool', + re.compile(r'''^(?:yes|Yes|YES|no|No|NO + |true|True|TRUE|false|False|FALSE + |on|On|ON|off|Off|OFF)$''', re.X), + list('yYnNtTfFoO')) + +Resolver.add_implicit_resolver( + 'tag:yaml.org,2002:float', + re.compile(r'''^(?:[-+]?(?:[0-9][0-9_]*)\.[0-9_]*(?:[eE][-+][0-9]+)? + |\.[0-9][0-9_]*(?:[eE][-+][0-9]+)? + |[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]* + |[-+]?\.(?:inf|Inf|INF) + |\.(?:nan|NaN|NAN))$''', re.X), + list('-+0123456789.')) + +Resolver.add_implicit_resolver( + 'tag:yaml.org,2002:int', + re.compile(r'''^(?:[-+]?0b[0-1_]+ + |[-+]?0[0-7_]+ + |[-+]?(?:0|[1-9][0-9_]*) + |[-+]?0x[0-9a-fA-F_]+ + |[-+]?[1-9][0-9_]*(?::[0-5]?[0-9])+)$''', re.X), + list('-+0123456789')) + +Resolver.add_implicit_resolver( + 'tag:yaml.org,2002:merge', + re.compile(r'^(?:<<)$'), + ['<']) + +Resolver.add_implicit_resolver( + 'tag:yaml.org,2002:null', + re.compile(r'''^(?: ~ + |null|Null|NULL + | )$''', re.X), + ['~', 'n', 'N', '']) + +Resolver.add_implicit_resolver( + 'tag:yaml.org,2002:timestamp', + re.compile(r'''^(?:[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] + |[0-9][0-9][0-9][0-9] -[0-9][0-9]? -[0-9][0-9]? + (?:[Tt]|[ \t]+)[0-9][0-9]? + :[0-9][0-9] :[0-9][0-9] (?:\.[0-9]*)? + (?:[ \t]*(?:Z|[-+][0-9][0-9]?(?::[0-9][0-9])?))?)$''', re.X), + list('0123456789')) + +Resolver.add_implicit_resolver( + 'tag:yaml.org,2002:value', + re.compile(r'^(?:=)$'), + ['=']) + +# The following resolver is only for documentation purposes. It cannot work +# because plain scalars cannot start with '!', '&', or '*'. +Resolver.add_implicit_resolver( + 'tag:yaml.org,2002:yaml', + re.compile(r'^(?:!|&|\*)$'), + list('!&*')) + diff --git a/outputs/audit_venv/lib/python3.11/site-packages/yaml/scanner.py b/outputs/audit_venv/lib/python3.11/site-packages/yaml/scanner.py new file mode 100644 index 0000000000000000000000000000000000000000..de925b07f1eaec33c9c305a8a69f9eb7ac5983c5 --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/yaml/scanner.py @@ -0,0 +1,1435 @@ + +# Scanner produces tokens of the following types: +# STREAM-START +# STREAM-END +# DIRECTIVE(name, value) +# DOCUMENT-START +# DOCUMENT-END +# BLOCK-SEQUENCE-START +# BLOCK-MAPPING-START +# BLOCK-END +# FLOW-SEQUENCE-START +# FLOW-MAPPING-START +# FLOW-SEQUENCE-END +# FLOW-MAPPING-END +# BLOCK-ENTRY +# FLOW-ENTRY +# KEY +# VALUE +# ALIAS(value) +# ANCHOR(value) +# TAG(value) +# SCALAR(value, plain, style) +# +# Read comments in the Scanner code for more details. +# + +__all__ = ['Scanner', 'ScannerError'] + +from .error import MarkedYAMLError +from .tokens import * + +class ScannerError(MarkedYAMLError): + pass + +class SimpleKey: + # See below simple keys treatment. + + def __init__(self, token_number, required, index, line, column, mark): + self.token_number = token_number + self.required = required + self.index = index + self.line = line + self.column = column + self.mark = mark + +class Scanner: + + def __init__(self): + """Initialize the scanner.""" + # It is assumed that Scanner and Reader will have a common descendant. + # Reader do the dirty work of checking for BOM and converting the + # input data to Unicode. It also adds NUL to the end. + # + # Reader supports the following methods + # self.peek(i=0) # peek the next i-th character + # self.prefix(l=1) # peek the next l characters + # self.forward(l=1) # read the next l characters and move the pointer. + + # Had we reached the end of the stream? + self.done = False + + # The number of unclosed '{' and '['. `flow_level == 0` means block + # context. + self.flow_level = 0 + + # List of processed tokens that are not yet emitted. + self.tokens = [] + + # Add the STREAM-START token. + self.fetch_stream_start() + + # Number of tokens that were emitted through the `get_token` method. + self.tokens_taken = 0 + + # The current indentation level. + self.indent = -1 + + # Past indentation levels. + self.indents = [] + + # Variables related to simple keys treatment. + + # A simple key is a key that is not denoted by the '?' indicator. + # Example of simple keys: + # --- + # block simple key: value + # ? not a simple key: + # : { flow simple key: value } + # We emit the KEY token before all keys, so when we find a potential + # simple key, we try to locate the corresponding ':' indicator. + # Simple keys should be limited to a single line and 1024 characters. + + # Can a simple key start at the current position? A simple key may + # start: + # - at the beginning of the line, not counting indentation spaces + # (in block context), + # - after '{', '[', ',' (in the flow context), + # - after '?', ':', '-' (in the block context). + # In the block context, this flag also signifies if a block collection + # may start at the current position. + self.allow_simple_key = True + + # Keep track of possible simple keys. This is a dictionary. The key + # is `flow_level`; there can be no more that one possible simple key + # for each level. The value is a SimpleKey record: + # (token_number, required, index, line, column, mark) + # A simple key may start with ALIAS, ANCHOR, TAG, SCALAR(flow), + # '[', or '{' tokens. + self.possible_simple_keys = {} + + # Public methods. + + def check_token(self, *choices): + # Check if the next token is one of the given types. + while self.need_more_tokens(): + self.fetch_more_tokens() + if self.tokens: + if not choices: + return True + for choice in choices: + if isinstance(self.tokens[0], choice): + return True + return False + + def peek_token(self): + # Return the next token, but do not delete if from the queue. + # Return None if no more tokens. + while self.need_more_tokens(): + self.fetch_more_tokens() + if self.tokens: + return self.tokens[0] + else: + return None + + def get_token(self): + # Return the next token. + while self.need_more_tokens(): + self.fetch_more_tokens() + if self.tokens: + self.tokens_taken += 1 + return self.tokens.pop(0) + + # Private methods. + + def need_more_tokens(self): + if self.done: + return False + if not self.tokens: + return True + # The current token may be a potential simple key, so we + # need to look further. + self.stale_possible_simple_keys() + if self.next_possible_simple_key() == self.tokens_taken: + return True + + def fetch_more_tokens(self): + + # Eat whitespaces and comments until we reach the next token. + self.scan_to_next_token() + + # Remove obsolete possible simple keys. + self.stale_possible_simple_keys() + + # Compare the current indentation and column. It may add some tokens + # and decrease the current indentation level. + self.unwind_indent(self.column) + + # Peek the next character. + ch = self.peek() + + # Is it the end of stream? + if ch == '\0': + return self.fetch_stream_end() + + # Is it a directive? + if ch == '%' and self.check_directive(): + return self.fetch_directive() + + # Is it the document start? + if ch == '-' and self.check_document_start(): + return self.fetch_document_start() + + # Is it the document end? + if ch == '.' and self.check_document_end(): + return self.fetch_document_end() + + # TODO: support for BOM within a stream. + #if ch == '\uFEFF': + # return self.fetch_bom() <-- issue BOMToken + + # Note: the order of the following checks is NOT significant. + + # Is it the flow sequence start indicator? + if ch == '[': + return self.fetch_flow_sequence_start() + + # Is it the flow mapping start indicator? + if ch == '{': + return self.fetch_flow_mapping_start() + + # Is it the flow sequence end indicator? + if ch == ']': + return self.fetch_flow_sequence_end() + + # Is it the flow mapping end indicator? + if ch == '}': + return self.fetch_flow_mapping_end() + + # Is it the flow entry indicator? + if ch == ',': + return self.fetch_flow_entry() + + # Is it the block entry indicator? + if ch == '-' and self.check_block_entry(): + return self.fetch_block_entry() + + # Is it the key indicator? + if ch == '?' and self.check_key(): + return self.fetch_key() + + # Is it the value indicator? + if ch == ':' and self.check_value(): + return self.fetch_value() + + # Is it an alias? + if ch == '*': + return self.fetch_alias() + + # Is it an anchor? + if ch == '&': + return self.fetch_anchor() + + # Is it a tag? + if ch == '!': + return self.fetch_tag() + + # Is it a literal scalar? + if ch == '|' and not self.flow_level: + return self.fetch_literal() + + # Is it a folded scalar? + if ch == '>' and not self.flow_level: + return self.fetch_folded() + + # Is it a single quoted scalar? + if ch == '\'': + return self.fetch_single() + + # Is it a double quoted scalar? + if ch == '\"': + return self.fetch_double() + + # It must be a plain scalar then. + if self.check_plain(): + return self.fetch_plain() + + # No? It's an error. Let's produce a nice error message. + raise ScannerError("while scanning for the next token", None, + "found character %r that cannot start any token" % ch, + self.get_mark()) + + # Simple keys treatment. + + def next_possible_simple_key(self): + # Return the number of the nearest possible simple key. Actually we + # don't need to loop through the whole dictionary. We may replace it + # with the following code: + # if not self.possible_simple_keys: + # return None + # return self.possible_simple_keys[ + # min(self.possible_simple_keys.keys())].token_number + min_token_number = None + for level in self.possible_simple_keys: + key = self.possible_simple_keys[level] + if min_token_number is None or key.token_number < min_token_number: + min_token_number = key.token_number + return min_token_number + + def stale_possible_simple_keys(self): + # Remove entries that are no longer possible simple keys. According to + # the YAML specification, simple keys + # - should be limited to a single line, + # - should be no longer than 1024 characters. + # Disabling this procedure will allow simple keys of any length and + # height (may cause problems if indentation is broken though). + for level in list(self.possible_simple_keys): + key = self.possible_simple_keys[level] + if key.line != self.line \ + or self.index-key.index > 1024: + if key.required: + raise ScannerError("while scanning a simple key", key.mark, + "could not find expected ':'", self.get_mark()) + del self.possible_simple_keys[level] + + def save_possible_simple_key(self): + # The next token may start a simple key. We check if it's possible + # and save its position. This function is called for + # ALIAS, ANCHOR, TAG, SCALAR(flow), '[', and '{'. + + # Check if a simple key is required at the current position. + required = not self.flow_level and self.indent == self.column + + # The next token might be a simple key. Let's save it's number and + # position. + if self.allow_simple_key: + self.remove_possible_simple_key() + token_number = self.tokens_taken+len(self.tokens) + key = SimpleKey(token_number, required, + self.index, self.line, self.column, self.get_mark()) + self.possible_simple_keys[self.flow_level] = key + + def remove_possible_simple_key(self): + # Remove the saved possible key position at the current flow level. + if self.flow_level in self.possible_simple_keys: + key = self.possible_simple_keys[self.flow_level] + + if key.required: + raise ScannerError("while scanning a simple key", key.mark, + "could not find expected ':'", self.get_mark()) + + del self.possible_simple_keys[self.flow_level] + + # Indentation functions. + + def unwind_indent(self, column): + + ## In flow context, tokens should respect indentation. + ## Actually the condition should be `self.indent >= column` according to + ## the spec. But this condition will prohibit intuitively correct + ## constructions such as + ## key : { + ## } + #if self.flow_level and self.indent > column: + # raise ScannerError(None, None, + # "invalid indentation or unclosed '[' or '{'", + # self.get_mark()) + + # In the flow context, indentation is ignored. We make the scanner less + # restrictive then specification requires. + if self.flow_level: + return + + # In block context, we may need to issue the BLOCK-END tokens. + while self.indent > column: + mark = self.get_mark() + self.indent = self.indents.pop() + self.tokens.append(BlockEndToken(mark, mark)) + + def add_indent(self, column): + # Check if we need to increase indentation. + if self.indent < column: + self.indents.append(self.indent) + self.indent = column + return True + return False + + # Fetchers. + + def fetch_stream_start(self): + # We always add STREAM-START as the first token and STREAM-END as the + # last token. + + # Read the token. + mark = self.get_mark() + + # Add STREAM-START. + self.tokens.append(StreamStartToken(mark, mark, + encoding=self.encoding)) + + + def fetch_stream_end(self): + + # Set the current indentation to -1. + self.unwind_indent(-1) + + # Reset simple keys. + self.remove_possible_simple_key() + self.allow_simple_key = False + self.possible_simple_keys = {} + + # Read the token. + mark = self.get_mark() + + # Add STREAM-END. + self.tokens.append(StreamEndToken(mark, mark)) + + # The steam is finished. + self.done = True + + def fetch_directive(self): + + # Set the current indentation to -1. + self.unwind_indent(-1) + + # Reset simple keys. + self.remove_possible_simple_key() + self.allow_simple_key = False + + # Scan and add DIRECTIVE. + self.tokens.append(self.scan_directive()) + + def fetch_document_start(self): + self.fetch_document_indicator(DocumentStartToken) + + def fetch_document_end(self): + self.fetch_document_indicator(DocumentEndToken) + + def fetch_document_indicator(self, TokenClass): + + # Set the current indentation to -1. + self.unwind_indent(-1) + + # Reset simple keys. Note that there could not be a block collection + # after '---'. + self.remove_possible_simple_key() + self.allow_simple_key = False + + # Add DOCUMENT-START or DOCUMENT-END. + start_mark = self.get_mark() + self.forward(3) + end_mark = self.get_mark() + self.tokens.append(TokenClass(start_mark, end_mark)) + + def fetch_flow_sequence_start(self): + self.fetch_flow_collection_start(FlowSequenceStartToken) + + def fetch_flow_mapping_start(self): + self.fetch_flow_collection_start(FlowMappingStartToken) + + def fetch_flow_collection_start(self, TokenClass): + + # '[' and '{' may start a simple key. + self.save_possible_simple_key() + + # Increase the flow level. + self.flow_level += 1 + + # Simple keys are allowed after '[' and '{'. + self.allow_simple_key = True + + # Add FLOW-SEQUENCE-START or FLOW-MAPPING-START. + start_mark = self.get_mark() + self.forward() + end_mark = self.get_mark() + self.tokens.append(TokenClass(start_mark, end_mark)) + + def fetch_flow_sequence_end(self): + self.fetch_flow_collection_end(FlowSequenceEndToken) + + def fetch_flow_mapping_end(self): + self.fetch_flow_collection_end(FlowMappingEndToken) + + def fetch_flow_collection_end(self, TokenClass): + + # Reset possible simple key on the current level. + self.remove_possible_simple_key() + + # Decrease the flow level. + self.flow_level -= 1 + + # No simple keys after ']' or '}'. + self.allow_simple_key = False + + # Add FLOW-SEQUENCE-END or FLOW-MAPPING-END. + start_mark = self.get_mark() + self.forward() + end_mark = self.get_mark() + self.tokens.append(TokenClass(start_mark, end_mark)) + + def fetch_flow_entry(self): + + # Simple keys are allowed after ','. + self.allow_simple_key = True + + # Reset possible simple key on the current level. + self.remove_possible_simple_key() + + # Add FLOW-ENTRY. + start_mark = self.get_mark() + self.forward() + end_mark = self.get_mark() + self.tokens.append(FlowEntryToken(start_mark, end_mark)) + + def fetch_block_entry(self): + + # Block context needs additional checks. + if not self.flow_level: + + # Are we allowed to start a new entry? + if not self.allow_simple_key: + raise ScannerError(None, None, + "sequence entries are not allowed here", + self.get_mark()) + + # We may need to add BLOCK-SEQUENCE-START. + if self.add_indent(self.column): + mark = self.get_mark() + self.tokens.append(BlockSequenceStartToken(mark, mark)) + + # It's an error for the block entry to occur in the flow context, + # but we let the parser detect this. + else: + pass + + # Simple keys are allowed after '-'. + self.allow_simple_key = True + + # Reset possible simple key on the current level. + self.remove_possible_simple_key() + + # Add BLOCK-ENTRY. + start_mark = self.get_mark() + self.forward() + end_mark = self.get_mark() + self.tokens.append(BlockEntryToken(start_mark, end_mark)) + + def fetch_key(self): + + # Block context needs additional checks. + if not self.flow_level: + + # Are we allowed to start a key (not necessary a simple)? + if not self.allow_simple_key: + raise ScannerError(None, None, + "mapping keys are not allowed here", + self.get_mark()) + + # We may need to add BLOCK-MAPPING-START. + if self.add_indent(self.column): + mark = self.get_mark() + self.tokens.append(BlockMappingStartToken(mark, mark)) + + # Simple keys are allowed after '?' in the block context. + self.allow_simple_key = not self.flow_level + + # Reset possible simple key on the current level. + self.remove_possible_simple_key() + + # Add KEY. + start_mark = self.get_mark() + self.forward() + end_mark = self.get_mark() + self.tokens.append(KeyToken(start_mark, end_mark)) + + def fetch_value(self): + + # Do we determine a simple key? + if self.flow_level in self.possible_simple_keys: + + # Add KEY. + key = self.possible_simple_keys[self.flow_level] + del self.possible_simple_keys[self.flow_level] + self.tokens.insert(key.token_number-self.tokens_taken, + KeyToken(key.mark, key.mark)) + + # If this key starts a new block mapping, we need to add + # BLOCK-MAPPING-START. + if not self.flow_level: + if self.add_indent(key.column): + self.tokens.insert(key.token_number-self.tokens_taken, + BlockMappingStartToken(key.mark, key.mark)) + + # There cannot be two simple keys one after another. + self.allow_simple_key = False + + # It must be a part of a complex key. + else: + + # Block context needs additional checks. + # (Do we really need them? They will be caught by the parser + # anyway.) + if not self.flow_level: + + # We are allowed to start a complex value if and only if + # we can start a simple key. + if not self.allow_simple_key: + raise ScannerError(None, None, + "mapping values are not allowed here", + self.get_mark()) + + # If this value starts a new block mapping, we need to add + # BLOCK-MAPPING-START. It will be detected as an error later by + # the parser. + if not self.flow_level: + if self.add_indent(self.column): + mark = self.get_mark() + self.tokens.append(BlockMappingStartToken(mark, mark)) + + # Simple keys are allowed after ':' in the block context. + self.allow_simple_key = not self.flow_level + + # Reset possible simple key on the current level. + self.remove_possible_simple_key() + + # Add VALUE. + start_mark = self.get_mark() + self.forward() + end_mark = self.get_mark() + self.tokens.append(ValueToken(start_mark, end_mark)) + + def fetch_alias(self): + + # ALIAS could be a simple key. + self.save_possible_simple_key() + + # No simple keys after ALIAS. + self.allow_simple_key = False + + # Scan and add ALIAS. + self.tokens.append(self.scan_anchor(AliasToken)) + + def fetch_anchor(self): + + # ANCHOR could start a simple key. + self.save_possible_simple_key() + + # No simple keys after ANCHOR. + self.allow_simple_key = False + + # Scan and add ANCHOR. + self.tokens.append(self.scan_anchor(AnchorToken)) + + def fetch_tag(self): + + # TAG could start a simple key. + self.save_possible_simple_key() + + # No simple keys after TAG. + self.allow_simple_key = False + + # Scan and add TAG. + self.tokens.append(self.scan_tag()) + + def fetch_literal(self): + self.fetch_block_scalar(style='|') + + def fetch_folded(self): + self.fetch_block_scalar(style='>') + + def fetch_block_scalar(self, style): + + # A simple key may follow a block scalar. + self.allow_simple_key = True + + # Reset possible simple key on the current level. + self.remove_possible_simple_key() + + # Scan and add SCALAR. + self.tokens.append(self.scan_block_scalar(style)) + + def fetch_single(self): + self.fetch_flow_scalar(style='\'') + + def fetch_double(self): + self.fetch_flow_scalar(style='"') + + def fetch_flow_scalar(self, style): + + # A flow scalar could be a simple key. + self.save_possible_simple_key() + + # No simple keys after flow scalars. + self.allow_simple_key = False + + # Scan and add SCALAR. + self.tokens.append(self.scan_flow_scalar(style)) + + def fetch_plain(self): + + # A plain scalar could be a simple key. + self.save_possible_simple_key() + + # No simple keys after plain scalars. But note that `scan_plain` will + # change this flag if the scan is finished at the beginning of the + # line. + self.allow_simple_key = False + + # Scan and add SCALAR. May change `allow_simple_key`. + self.tokens.append(self.scan_plain()) + + # Checkers. + + def check_directive(self): + + # DIRECTIVE: ^ '%' ... + # The '%' indicator is already checked. + if self.column == 0: + return True + + def check_document_start(self): + + # DOCUMENT-START: ^ '---' (' '|'\n') + if self.column == 0: + if self.prefix(3) == '---' \ + and self.peek(3) in '\0 \t\r\n\x85\u2028\u2029': + return True + + def check_document_end(self): + + # DOCUMENT-END: ^ '...' (' '|'\n') + if self.column == 0: + if self.prefix(3) == '...' \ + and self.peek(3) in '\0 \t\r\n\x85\u2028\u2029': + return True + + def check_block_entry(self): + + # BLOCK-ENTRY: '-' (' '|'\n') + return self.peek(1) in '\0 \t\r\n\x85\u2028\u2029' + + def check_key(self): + + # KEY(flow context): '?' + if self.flow_level: + return True + + # KEY(block context): '?' (' '|'\n') + else: + return self.peek(1) in '\0 \t\r\n\x85\u2028\u2029' + + def check_value(self): + + # VALUE(flow context): ':' + if self.flow_level: + return True + + # VALUE(block context): ':' (' '|'\n') + else: + return self.peek(1) in '\0 \t\r\n\x85\u2028\u2029' + + def check_plain(self): + + # A plain scalar may start with any non-space character except: + # '-', '?', ':', ',', '[', ']', '{', '}', + # '#', '&', '*', '!', '|', '>', '\'', '\"', + # '%', '@', '`'. + # + # It may also start with + # '-', '?', ':' + # if it is followed by a non-space character. + # + # Note that we limit the last rule to the block context (except the + # '-' character) because we want the flow context to be space + # independent. + ch = self.peek() + return ch not in '\0 \t\r\n\x85\u2028\u2029-?:,[]{}#&*!|>\'\"%@`' \ + or (self.peek(1) not in '\0 \t\r\n\x85\u2028\u2029' + and (ch == '-' or (not self.flow_level and ch in '?:'))) + + # Scanners. + + def scan_to_next_token(self): + # We ignore spaces, line breaks and comments. + # If we find a line break in the block context, we set the flag + # `allow_simple_key` on. + # The byte order mark is stripped if it's the first character in the + # stream. We do not yet support BOM inside the stream as the + # specification requires. Any such mark will be considered as a part + # of the document. + # + # TODO: We need to make tab handling rules more sane. A good rule is + # Tabs cannot precede tokens + # BLOCK-SEQUENCE-START, BLOCK-MAPPING-START, BLOCK-END, + # KEY(block), VALUE(block), BLOCK-ENTRY + # So the checking code is + # if : + # self.allow_simple_keys = False + # We also need to add the check for `allow_simple_keys == True` to + # `unwind_indent` before issuing BLOCK-END. + # Scanners for block, flow, and plain scalars need to be modified. + + if self.index == 0 and self.peek() == '\uFEFF': + self.forward() + found = False + while not found: + while self.peek() == ' ': + self.forward() + if self.peek() == '#': + while self.peek() not in '\0\r\n\x85\u2028\u2029': + self.forward() + if self.scan_line_break(): + if not self.flow_level: + self.allow_simple_key = True + else: + found = True + + def scan_directive(self): + # See the specification for details. + start_mark = self.get_mark() + self.forward() + name = self.scan_directive_name(start_mark) + value = None + if name == 'YAML': + value = self.scan_yaml_directive_value(start_mark) + end_mark = self.get_mark() + elif name == 'TAG': + value = self.scan_tag_directive_value(start_mark) + end_mark = self.get_mark() + else: + end_mark = self.get_mark() + while self.peek() not in '\0\r\n\x85\u2028\u2029': + self.forward() + self.scan_directive_ignored_line(start_mark) + return DirectiveToken(name, value, start_mark, end_mark) + + def scan_directive_name(self, start_mark): + # See the specification for details. + length = 0 + ch = self.peek(length) + while '0' <= ch <= '9' or 'A' <= ch <= 'Z' or 'a' <= ch <= 'z' \ + or ch in '-_': + length += 1 + ch = self.peek(length) + if not length: + raise ScannerError("while scanning a directive", start_mark, + "expected alphabetic or numeric character, but found %r" + % ch, self.get_mark()) + value = self.prefix(length) + self.forward(length) + ch = self.peek() + if ch not in '\0 \r\n\x85\u2028\u2029': + raise ScannerError("while scanning a directive", start_mark, + "expected alphabetic or numeric character, but found %r" + % ch, self.get_mark()) + return value + + def scan_yaml_directive_value(self, start_mark): + # See the specification for details. + while self.peek() == ' ': + self.forward() + major = self.scan_yaml_directive_number(start_mark) + if self.peek() != '.': + raise ScannerError("while scanning a directive", start_mark, + "expected a digit or '.', but found %r" % self.peek(), + self.get_mark()) + self.forward() + minor = self.scan_yaml_directive_number(start_mark) + if self.peek() not in '\0 \r\n\x85\u2028\u2029': + raise ScannerError("while scanning a directive", start_mark, + "expected a digit or ' ', but found %r" % self.peek(), + self.get_mark()) + return (major, minor) + + def scan_yaml_directive_number(self, start_mark): + # See the specification for details. + ch = self.peek() + if not ('0' <= ch <= '9'): + raise ScannerError("while scanning a directive", start_mark, + "expected a digit, but found %r" % ch, self.get_mark()) + length = 0 + while '0' <= self.peek(length) <= '9': + length += 1 + value = int(self.prefix(length)) + self.forward(length) + return value + + def scan_tag_directive_value(self, start_mark): + # See the specification for details. + while self.peek() == ' ': + self.forward() + handle = self.scan_tag_directive_handle(start_mark) + while self.peek() == ' ': + self.forward() + prefix = self.scan_tag_directive_prefix(start_mark) + return (handle, prefix) + + def scan_tag_directive_handle(self, start_mark): + # See the specification for details. + value = self.scan_tag_handle('directive', start_mark) + ch = self.peek() + if ch != ' ': + raise ScannerError("while scanning a directive", start_mark, + "expected ' ', but found %r" % ch, self.get_mark()) + return value + + def scan_tag_directive_prefix(self, start_mark): + # See the specification for details. + value = self.scan_tag_uri('directive', start_mark) + ch = self.peek() + if ch not in '\0 \r\n\x85\u2028\u2029': + raise ScannerError("while scanning a directive", start_mark, + "expected ' ', but found %r" % ch, self.get_mark()) + return value + + def scan_directive_ignored_line(self, start_mark): + # See the specification for details. + while self.peek() == ' ': + self.forward() + if self.peek() == '#': + while self.peek() not in '\0\r\n\x85\u2028\u2029': + self.forward() + ch = self.peek() + if ch not in '\0\r\n\x85\u2028\u2029': + raise ScannerError("while scanning a directive", start_mark, + "expected a comment or a line break, but found %r" + % ch, self.get_mark()) + self.scan_line_break() + + def scan_anchor(self, TokenClass): + # The specification does not restrict characters for anchors and + # aliases. This may lead to problems, for instance, the document: + # [ *alias, value ] + # can be interpreted in two ways, as + # [ "value" ] + # and + # [ *alias , "value" ] + # Therefore we restrict aliases to numbers and ASCII letters. + start_mark = self.get_mark() + indicator = self.peek() + if indicator == '*': + name = 'alias' + else: + name = 'anchor' + self.forward() + length = 0 + ch = self.peek(length) + while '0' <= ch <= '9' or 'A' <= ch <= 'Z' or 'a' <= ch <= 'z' \ + or ch in '-_': + length += 1 + ch = self.peek(length) + if not length: + raise ScannerError("while scanning an %s" % name, start_mark, + "expected alphabetic or numeric character, but found %r" + % ch, self.get_mark()) + value = self.prefix(length) + self.forward(length) + ch = self.peek() + if ch not in '\0 \t\r\n\x85\u2028\u2029?:,]}%@`': + raise ScannerError("while scanning an %s" % name, start_mark, + "expected alphabetic or numeric character, but found %r" + % ch, self.get_mark()) + end_mark = self.get_mark() + return TokenClass(value, start_mark, end_mark) + + def scan_tag(self): + # See the specification for details. + start_mark = self.get_mark() + ch = self.peek(1) + if ch == '<': + handle = None + self.forward(2) + suffix = self.scan_tag_uri('tag', start_mark) + if self.peek() != '>': + raise ScannerError("while parsing a tag", start_mark, + "expected '>', but found %r" % self.peek(), + self.get_mark()) + self.forward() + elif ch in '\0 \t\r\n\x85\u2028\u2029': + handle = None + suffix = '!' + self.forward() + else: + length = 1 + use_handle = False + while ch not in '\0 \r\n\x85\u2028\u2029': + if ch == '!': + use_handle = True + break + length += 1 + ch = self.peek(length) + handle = '!' + if use_handle: + handle = self.scan_tag_handle('tag', start_mark) + else: + handle = '!' + self.forward() + suffix = self.scan_tag_uri('tag', start_mark) + ch = self.peek() + if ch not in '\0 \r\n\x85\u2028\u2029': + raise ScannerError("while scanning a tag", start_mark, + "expected ' ', but found %r" % ch, self.get_mark()) + value = (handle, suffix) + end_mark = self.get_mark() + return TagToken(value, start_mark, end_mark) + + def scan_block_scalar(self, style): + # See the specification for details. + + if style == '>': + folded = True + else: + folded = False + + chunks = [] + start_mark = self.get_mark() + + # Scan the header. + self.forward() + chomping, increment = self.scan_block_scalar_indicators(start_mark) + self.scan_block_scalar_ignored_line(start_mark) + + # Determine the indentation level and go to the first non-empty line. + min_indent = self.indent+1 + if min_indent < 1: + min_indent = 1 + if increment is None: + breaks, max_indent, end_mark = self.scan_block_scalar_indentation() + indent = max(min_indent, max_indent) + else: + indent = min_indent+increment-1 + breaks, end_mark = self.scan_block_scalar_breaks(indent) + line_break = '' + + # Scan the inner part of the block scalar. + while self.column == indent and self.peek() != '\0': + chunks.extend(breaks) + leading_non_space = self.peek() not in ' \t' + length = 0 + while self.peek(length) not in '\0\r\n\x85\u2028\u2029': + length += 1 + chunks.append(self.prefix(length)) + self.forward(length) + line_break = self.scan_line_break() + breaks, end_mark = self.scan_block_scalar_breaks(indent) + if self.column == indent and self.peek() != '\0': + + # Unfortunately, folding rules are ambiguous. + # + # This is the folding according to the specification: + + if folded and line_break == '\n' \ + and leading_non_space and self.peek() not in ' \t': + if not breaks: + chunks.append(' ') + else: + chunks.append(line_break) + + # This is Clark Evans's interpretation (also in the spec + # examples): + # + #if folded and line_break == '\n': + # if not breaks: + # if self.peek() not in ' \t': + # chunks.append(' ') + # else: + # chunks.append(line_break) + #else: + # chunks.append(line_break) + else: + break + + # Chomp the tail. + if chomping is not False: + chunks.append(line_break) + if chomping is True: + chunks.extend(breaks) + + # We are done. + return ScalarToken(''.join(chunks), False, start_mark, end_mark, + style) + + def scan_block_scalar_indicators(self, start_mark): + # See the specification for details. + chomping = None + increment = None + ch = self.peek() + if ch in '+-': + if ch == '+': + chomping = True + else: + chomping = False + self.forward() + ch = self.peek() + if ch in '0123456789': + increment = int(ch) + if increment == 0: + raise ScannerError("while scanning a block scalar", start_mark, + "expected indentation indicator in the range 1-9, but found 0", + self.get_mark()) + self.forward() + elif ch in '0123456789': + increment = int(ch) + if increment == 0: + raise ScannerError("while scanning a block scalar", start_mark, + "expected indentation indicator in the range 1-9, but found 0", + self.get_mark()) + self.forward() + ch = self.peek() + if ch in '+-': + if ch == '+': + chomping = True + else: + chomping = False + self.forward() + ch = self.peek() + if ch not in '\0 \r\n\x85\u2028\u2029': + raise ScannerError("while scanning a block scalar", start_mark, + "expected chomping or indentation indicators, but found %r" + % ch, self.get_mark()) + return chomping, increment + + def scan_block_scalar_ignored_line(self, start_mark): + # See the specification for details. + while self.peek() == ' ': + self.forward() + if self.peek() == '#': + while self.peek() not in '\0\r\n\x85\u2028\u2029': + self.forward() + ch = self.peek() + if ch not in '\0\r\n\x85\u2028\u2029': + raise ScannerError("while scanning a block scalar", start_mark, + "expected a comment or a line break, but found %r" % ch, + self.get_mark()) + self.scan_line_break() + + def scan_block_scalar_indentation(self): + # See the specification for details. + chunks = [] + max_indent = 0 + end_mark = self.get_mark() + while self.peek() in ' \r\n\x85\u2028\u2029': + if self.peek() != ' ': + chunks.append(self.scan_line_break()) + end_mark = self.get_mark() + else: + self.forward() + if self.column > max_indent: + max_indent = self.column + return chunks, max_indent, end_mark + + def scan_block_scalar_breaks(self, indent): + # See the specification for details. + chunks = [] + end_mark = self.get_mark() + while self.column < indent and self.peek() == ' ': + self.forward() + while self.peek() in '\r\n\x85\u2028\u2029': + chunks.append(self.scan_line_break()) + end_mark = self.get_mark() + while self.column < indent and self.peek() == ' ': + self.forward() + return chunks, end_mark + + def scan_flow_scalar(self, style): + # See the specification for details. + # Note that we loose indentation rules for quoted scalars. Quoted + # scalars don't need to adhere indentation because " and ' clearly + # mark the beginning and the end of them. Therefore we are less + # restrictive then the specification requires. We only need to check + # that document separators are not included in scalars. + if style == '"': + double = True + else: + double = False + chunks = [] + start_mark = self.get_mark() + quote = self.peek() + self.forward() + chunks.extend(self.scan_flow_scalar_non_spaces(double, start_mark)) + while self.peek() != quote: + chunks.extend(self.scan_flow_scalar_spaces(double, start_mark)) + chunks.extend(self.scan_flow_scalar_non_spaces(double, start_mark)) + self.forward() + end_mark = self.get_mark() + return ScalarToken(''.join(chunks), False, start_mark, end_mark, + style) + + ESCAPE_REPLACEMENTS = { + '0': '\0', + 'a': '\x07', + 'b': '\x08', + 't': '\x09', + '\t': '\x09', + 'n': '\x0A', + 'v': '\x0B', + 'f': '\x0C', + 'r': '\x0D', + 'e': '\x1B', + ' ': '\x20', + '\"': '\"', + '\\': '\\', + '/': '/', + 'N': '\x85', + '_': '\xA0', + 'L': '\u2028', + 'P': '\u2029', + } + + ESCAPE_CODES = { + 'x': 2, + 'u': 4, + 'U': 8, + } + + def scan_flow_scalar_non_spaces(self, double, start_mark): + # See the specification for details. + chunks = [] + while True: + length = 0 + while self.peek(length) not in '\'\"\\\0 \t\r\n\x85\u2028\u2029': + length += 1 + if length: + chunks.append(self.prefix(length)) + self.forward(length) + ch = self.peek() + if not double and ch == '\'' and self.peek(1) == '\'': + chunks.append('\'') + self.forward(2) + elif (double and ch == '\'') or (not double and ch in '\"\\'): + chunks.append(ch) + self.forward() + elif double and ch == '\\': + self.forward() + ch = self.peek() + if ch in self.ESCAPE_REPLACEMENTS: + chunks.append(self.ESCAPE_REPLACEMENTS[ch]) + self.forward() + elif ch in self.ESCAPE_CODES: + length = self.ESCAPE_CODES[ch] + self.forward() + for k in range(length): + if self.peek(k) not in '0123456789ABCDEFabcdef': + raise ScannerError("while scanning a double-quoted scalar", start_mark, + "expected escape sequence of %d hexadecimal numbers, but found %r" % + (length, self.peek(k)), self.get_mark()) + code = int(self.prefix(length), 16) + chunks.append(chr(code)) + self.forward(length) + elif ch in '\r\n\x85\u2028\u2029': + self.scan_line_break() + chunks.extend(self.scan_flow_scalar_breaks(double, start_mark)) + else: + raise ScannerError("while scanning a double-quoted scalar", start_mark, + "found unknown escape character %r" % ch, self.get_mark()) + else: + return chunks + + def scan_flow_scalar_spaces(self, double, start_mark): + # See the specification for details. + chunks = [] + length = 0 + while self.peek(length) in ' \t': + length += 1 + whitespaces = self.prefix(length) + self.forward(length) + ch = self.peek() + if ch == '\0': + raise ScannerError("while scanning a quoted scalar", start_mark, + "found unexpected end of stream", self.get_mark()) + elif ch in '\r\n\x85\u2028\u2029': + line_break = self.scan_line_break() + breaks = self.scan_flow_scalar_breaks(double, start_mark) + if line_break != '\n': + chunks.append(line_break) + elif not breaks: + chunks.append(' ') + chunks.extend(breaks) + else: + chunks.append(whitespaces) + return chunks + + def scan_flow_scalar_breaks(self, double, start_mark): + # See the specification for details. + chunks = [] + while True: + # Instead of checking indentation, we check for document + # separators. + prefix = self.prefix(3) + if (prefix == '---' or prefix == '...') \ + and self.peek(3) in '\0 \t\r\n\x85\u2028\u2029': + raise ScannerError("while scanning a quoted scalar", start_mark, + "found unexpected document separator", self.get_mark()) + while self.peek() in ' \t': + self.forward() + if self.peek() in '\r\n\x85\u2028\u2029': + chunks.append(self.scan_line_break()) + else: + return chunks + + def scan_plain(self): + # See the specification for details. + # We add an additional restriction for the flow context: + # plain scalars in the flow context cannot contain ',' or '?'. + # We also keep track of the `allow_simple_key` flag here. + # Indentation rules are loosed for the flow context. + chunks = [] + start_mark = self.get_mark() + end_mark = start_mark + indent = self.indent+1 + # We allow zero indentation for scalars, but then we need to check for + # document separators at the beginning of the line. + #if indent == 0: + # indent = 1 + spaces = [] + while True: + length = 0 + if self.peek() == '#': + break + while True: + ch = self.peek(length) + if ch in '\0 \t\r\n\x85\u2028\u2029' \ + or (ch == ':' and + self.peek(length+1) in '\0 \t\r\n\x85\u2028\u2029' + + (u',[]{}' if self.flow_level else u''))\ + or (self.flow_level and ch in ',?[]{}'): + break + length += 1 + if length == 0: + break + self.allow_simple_key = False + chunks.extend(spaces) + chunks.append(self.prefix(length)) + self.forward(length) + end_mark = self.get_mark() + spaces = self.scan_plain_spaces(indent, start_mark) + if not spaces or self.peek() == '#' \ + or (not self.flow_level and self.column < indent): + break + return ScalarToken(''.join(chunks), True, start_mark, end_mark) + + def scan_plain_spaces(self, indent, start_mark): + # See the specification for details. + # The specification is really confusing about tabs in plain scalars. + # We just forbid them completely. Do not use tabs in YAML! + chunks = [] + length = 0 + while self.peek(length) in ' ': + length += 1 + whitespaces = self.prefix(length) + self.forward(length) + ch = self.peek() + if ch in '\r\n\x85\u2028\u2029': + line_break = self.scan_line_break() + self.allow_simple_key = True + prefix = self.prefix(3) + if (prefix == '---' or prefix == '...') \ + and self.peek(3) in '\0 \t\r\n\x85\u2028\u2029': + return + breaks = [] + while self.peek() in ' \r\n\x85\u2028\u2029': + if self.peek() == ' ': + self.forward() + else: + breaks.append(self.scan_line_break()) + prefix = self.prefix(3) + if (prefix == '---' or prefix == '...') \ + and self.peek(3) in '\0 \t\r\n\x85\u2028\u2029': + return + if line_break != '\n': + chunks.append(line_break) + elif not breaks: + chunks.append(' ') + chunks.extend(breaks) + elif whitespaces: + chunks.append(whitespaces) + return chunks + + def scan_tag_handle(self, name, start_mark): + # See the specification for details. + # For some strange reasons, the specification does not allow '_' in + # tag handles. I have allowed it anyway. + ch = self.peek() + if ch != '!': + raise ScannerError("while scanning a %s" % name, start_mark, + "expected '!', but found %r" % ch, self.get_mark()) + length = 1 + ch = self.peek(length) + if ch != ' ': + while '0' <= ch <= '9' or 'A' <= ch <= 'Z' or 'a' <= ch <= 'z' \ + or ch in '-_': + length += 1 + ch = self.peek(length) + if ch != '!': + self.forward(length) + raise ScannerError("while scanning a %s" % name, start_mark, + "expected '!', but found %r" % ch, self.get_mark()) + length += 1 + value = self.prefix(length) + self.forward(length) + return value + + def scan_tag_uri(self, name, start_mark): + # See the specification for details. + # Note: we do not check if URI is well-formed. + chunks = [] + length = 0 + ch = self.peek(length) + while '0' <= ch <= '9' or 'A' <= ch <= 'Z' or 'a' <= ch <= 'z' \ + or ch in '-;/?:@&=+$,_.!~*\'()[]%': + if ch == '%': + chunks.append(self.prefix(length)) + self.forward(length) + length = 0 + chunks.append(self.scan_uri_escapes(name, start_mark)) + else: + length += 1 + ch = self.peek(length) + if length: + chunks.append(self.prefix(length)) + self.forward(length) + length = 0 + if not chunks: + raise ScannerError("while parsing a %s" % name, start_mark, + "expected URI, but found %r" % ch, self.get_mark()) + return ''.join(chunks) + + def scan_uri_escapes(self, name, start_mark): + # See the specification for details. + codes = [] + mark = self.get_mark() + while self.peek() == '%': + self.forward() + for k in range(2): + if self.peek(k) not in '0123456789ABCDEFabcdef': + raise ScannerError("while scanning a %s" % name, start_mark, + "expected URI escape sequence of 2 hexadecimal numbers, but found %r" + % self.peek(k), self.get_mark()) + codes.append(int(self.prefix(2), 16)) + self.forward(2) + try: + value = bytes(codes).decode('utf-8') + except UnicodeDecodeError as exc: + raise ScannerError("while scanning a %s" % name, start_mark, str(exc), mark) + return value + + def scan_line_break(self): + # Transforms: + # '\r\n' : '\n' + # '\r' : '\n' + # '\n' : '\n' + # '\x85' : '\n' + # '\u2028' : '\u2028' + # '\u2029 : '\u2029' + # default : '' + ch = self.peek() + if ch in '\r\n\x85': + if self.prefix(2) == '\r\n': + self.forward(2) + else: + self.forward() + return '\n' + elif ch in '\u2028\u2029': + self.forward() + return ch + return '' diff --git a/outputs/audit_venv/lib/python3.11/site-packages/yaml/serializer.py b/outputs/audit_venv/lib/python3.11/site-packages/yaml/serializer.py new file mode 100644 index 0000000000000000000000000000000000000000..fe911e67ae7a739abb491fbbc6834b9c37bbda4b --- /dev/null +++ b/outputs/audit_venv/lib/python3.11/site-packages/yaml/serializer.py @@ -0,0 +1,111 @@ + +__all__ = ['Serializer', 'SerializerError'] + +from .error import YAMLError +from .events import * +from .nodes import * + +class SerializerError(YAMLError): + pass + +class Serializer: + + ANCHOR_TEMPLATE = 'id%03d' + + def __init__(self, encoding=None, + explicit_start=None, explicit_end=None, version=None, tags=None): + self.use_encoding = encoding + self.use_explicit_start = explicit_start + self.use_explicit_end = explicit_end + self.use_version = version + self.use_tags = tags + self.serialized_nodes = {} + self.anchors = {} + self.last_anchor_id = 0 + self.closed = None + + def open(self): + if self.closed is None: + self.emit(StreamStartEvent(encoding=self.use_encoding)) + self.closed = False + elif self.closed: + raise SerializerError("serializer is closed") + else: + raise SerializerError("serializer is already opened") + + def close(self): + if self.closed is None: + raise SerializerError("serializer is not opened") + elif not self.closed: + self.emit(StreamEndEvent()) + self.closed = True + + #def __del__(self): + # self.close() + + def serialize(self, node): + if self.closed is None: + raise SerializerError("serializer is not opened") + elif self.closed: + raise SerializerError("serializer is closed") + self.emit(DocumentStartEvent(explicit=self.use_explicit_start, + version=self.use_version, tags=self.use_tags)) + self.anchor_node(node) + self.serialize_node(node, None, None) + self.emit(DocumentEndEvent(explicit=self.use_explicit_end)) + self.serialized_nodes = {} + self.anchors = {} + self.last_anchor_id = 0 + + def anchor_node(self, node): + if node in self.anchors: + if self.anchors[node] is None: + self.anchors[node] = self.generate_anchor(node) + else: + self.anchors[node] = None + if isinstance(node, SequenceNode): + for item in node.value: + self.anchor_node(item) + elif isinstance(node, MappingNode): + for key, value in node.value: + self.anchor_node(key) + self.anchor_node(value) + + def generate_anchor(self, node): + self.last_anchor_id += 1 + return self.ANCHOR_TEMPLATE % self.last_anchor_id + + def serialize_node(self, node, parent, index): + alias = self.anchors[node] + if node in self.serialized_nodes: + self.emit(AliasEvent(alias)) + else: + self.serialized_nodes[node] = True + self.descend_resolver(parent, index) + if isinstance(node, ScalarNode): + detected_tag = self.resolve(ScalarNode, node.value, (True, False)) + default_tag = self.resolve(ScalarNode, node.value, (False, True)) + implicit = (node.tag == detected_tag), (node.tag == default_tag) + self.emit(ScalarEvent(alias, node.tag, implicit, node.value, + style=node.style)) + elif isinstance(node, SequenceNode): + implicit = (node.tag + == self.resolve(SequenceNode, node.value, True)) + self.emit(SequenceStartEvent(alias, node.tag, implicit, + flow_style=node.flow_style)) + index = 0 + for item in node.value: + self.serialize_node(item, node, index) + index += 1 + self.emit(SequenceEndEvent()) + elif isinstance(node, MappingNode): + implicit = (node.tag + == self.resolve(MappingNode, node.value, True)) + self.emit(MappingStartEvent(alias, node.tag, implicit, + flow_style=node.flow_style)) + for key, value in node.value: + self.serialize_node(key, node, None) + self.serialize_node(value, node, key) + self.emit(MappingEndEvent()) + self.ascend_resolver() + diff --git a/outputs/audit_venv/pyvenv.cfg b/outputs/audit_venv/pyvenv.cfg new file mode 100644 index 0000000000000000000000000000000000000000..64b1e0aa13d290cd2f14c35170564077cda495d8 --- /dev/null +++ b/outputs/audit_venv/pyvenv.cfg @@ -0,0 +1,5 @@ +home = /cvmfs/soft.computecanada.ca/gentoo/2023/x86-64-v3/usr/lib/python-exec/python3.11 +include-system-site-packages = false +version = 3.11.4 +executable = /cvmfs/soft.computecanada.ca/gentoo/2023/x86-64-v3/usr/bin/python3.11 +command = /cvmfs/soft.computecanada.ca/gentoo/2023/x86-64-v3/usr/lib/python-exec/python3.11/python -m venv /lustre09/project/6037638/knguy52/vla/outputs/audit_venv diff --git a/outputs/audit_venv/share/man/man1/isympy.1 b/outputs/audit_venv/share/man/man1/isympy.1 new file mode 100644 index 0000000000000000000000000000000000000000..0ff966158a28c5ad1a6cd954e454842b25fdd999 --- /dev/null +++ b/outputs/audit_venv/share/man/man1/isympy.1 @@ -0,0 +1,188 @@ +'\" -*- coding: us-ascii -*- +.if \n(.g .ds T< \\FC +.if \n(.g .ds T> \\F[\n[.fam]] +.de URL +\\$2 \(la\\$1\(ra\\$3 +.. +.if \n(.g .mso www.tmac +.TH isympy 1 2007-10-8 "" "" +.SH NAME +isympy \- interactive shell for SymPy +.SH SYNOPSIS +'nh +.fi +.ad l +\fBisympy\fR \kx +.if (\nx>(\n(.l/2)) .nr x (\n(.l/5) +'in \n(.iu+\nxu +[\fB-c\fR | \fB--console\fR] [\fB-p\fR ENCODING | \fB--pretty\fR ENCODING] [\fB-t\fR TYPE | \fB--types\fR TYPE] [\fB-o\fR ORDER | \fB--order\fR ORDER] [\fB-q\fR | \fB--quiet\fR] [\fB-d\fR | \fB--doctest\fR] [\fB-C\fR | \fB--no-cache\fR] [\fB-a\fR | \fB--auto\fR] [\fB-D\fR | \fB--debug\fR] [ +-- | PYTHONOPTIONS] +'in \n(.iu-\nxu +.ad b +'hy +'nh +.fi +.ad l +\fBisympy\fR \kx +.if (\nx>(\n(.l/2)) .nr x (\n(.l/5) +'in \n(.iu+\nxu +[ +{\fB-h\fR | \fB--help\fR} +| +{\fB-v\fR | \fB--version\fR} +] +'in \n(.iu-\nxu +.ad b +'hy +.SH DESCRIPTION +isympy is a Python shell for SymPy. It is just a normal python shell +(ipython shell if you have the ipython package installed) that executes +the following commands so that you don't have to: +.PP +.nf +\*(T< +>>> from __future__ import division +>>> from sympy import * +>>> x, y, z = symbols("x,y,z") +>>> k, m, n = symbols("k,m,n", integer=True) + \*(T> +.fi +.PP +So starting isympy is equivalent to starting python (or ipython) and +executing the above commands by hand. It is intended for easy and quick +experimentation with SymPy. For more complicated programs, it is recommended +to write a script and import things explicitly (using the "from sympy +import sin, log, Symbol, ..." idiom). +.SH OPTIONS +.TP +\*(T<\fB\-c \fR\*(T>\fISHELL\fR, \*(T<\fB\-\-console=\fR\*(T>\fISHELL\fR +Use the specified shell (python or ipython) as +console backend instead of the default one (ipython +if present or python otherwise). + +Example: isympy -c python + +\fISHELL\fR could be either +\&'ipython' or 'python' +.TP +\*(T<\fB\-p \fR\*(T>\fIENCODING\fR, \*(T<\fB\-\-pretty=\fR\*(T>\fIENCODING\fR +Setup pretty printing in SymPy. By default, the most pretty, unicode +printing is enabled (if the terminal supports it). You can use less +pretty ASCII printing instead or no pretty printing at all. + +Example: isympy -p no + +\fIENCODING\fR must be one of 'unicode', +\&'ascii' or 'no'. +.TP +\*(T<\fB\-t \fR\*(T>\fITYPE\fR, \*(T<\fB\-\-types=\fR\*(T>\fITYPE\fR +Setup the ground types for the polys. By default, gmpy ground types +are used if gmpy2 or gmpy is installed, otherwise it falls back to python +ground types, which are a little bit slower. You can manually +choose python ground types even if gmpy is installed (e.g., for testing purposes). + +Note that sympy ground types are not supported, and should be used +only for experimental purposes. + +Note that the gmpy1 ground type is primarily intended for testing; it the +use of gmpy even if gmpy2 is available. + +This is the same as setting the environment variable +SYMPY_GROUND_TYPES to the given ground type (e.g., +SYMPY_GROUND_TYPES='gmpy') + +The ground types can be determined interactively from the variable +sympy.polys.domains.GROUND_TYPES inside the isympy shell itself. + +Example: isympy -t python + +\fITYPE\fR must be one of 'gmpy', +\&'gmpy1' or 'python'. +.TP +\*(T<\fB\-o \fR\*(T>\fIORDER\fR, \*(T<\fB\-\-order=\fR\*(T>\fIORDER\fR +Setup the ordering of terms for printing. The default is lex, which +orders terms lexicographically (e.g., x**2 + x + 1). You can choose +other orderings, such as rev-lex, which will use reverse +lexicographic ordering (e.g., 1 + x + x**2). + +Note that for very large expressions, ORDER='none' may speed up +printing considerably, with the tradeoff that the order of the terms +in the printed expression will have no canonical order + +Example: isympy -o rev-lax + +\fIORDER\fR must be one of 'lex', 'rev-lex', 'grlex', +\&'rev-grlex', 'grevlex', 'rev-grevlex', 'old', or 'none'. +.TP +\*(T<\fB\-q\fR\*(T>, \*(T<\fB\-\-quiet\fR\*(T> +Print only Python's and SymPy's versions to stdout at startup, and nothing else. +.TP +\*(T<\fB\-d\fR\*(T>, \*(T<\fB\-\-doctest\fR\*(T> +Use the same format that should be used for doctests. This is +equivalent to '\fIisympy -c python -p no\fR'. +.TP +\*(T<\fB\-C\fR\*(T>, \*(T<\fB\-\-no\-cache\fR\*(T> +Disable the caching mechanism. Disabling the cache may slow certain +operations down considerably. This is useful for testing the cache, +or for benchmarking, as the cache can result in deceptive benchmark timings. + +This is the same as setting the environment variable SYMPY_USE_CACHE +to 'no'. +.TP +\*(T<\fB\-a\fR\*(T>, \*(T<\fB\-\-auto\fR\*(T> +Automatically create missing symbols. Normally, typing a name of a +Symbol that has not been instantiated first would raise NameError, +but with this option enabled, any undefined name will be +automatically created as a Symbol. This only works in IPython 0.11. + +Note that this is intended only for interactive, calculator style +usage. In a script that uses SymPy, Symbols should be instantiated +at the top, so that it's clear what they are. + +This will not override any names that are already defined, which +includes the single character letters represented by the mnemonic +QCOSINE (see the "Gotchas and Pitfalls" document in the +documentation). You can delete existing names by executing "del +name" in the shell itself. You can see if a name is defined by typing +"'name' in globals()". + +The Symbols that are created using this have default assumptions. +If you want to place assumptions on symbols, you should create them +using symbols() or var(). + +Finally, this only works in the top level namespace. So, for +example, if you define a function in isympy with an undefined +Symbol, it will not work. +.TP +\*(T<\fB\-D\fR\*(T>, \*(T<\fB\-\-debug\fR\*(T> +Enable debugging output. This is the same as setting the +environment variable SYMPY_DEBUG to 'True'. The debug status is set +in the variable SYMPY_DEBUG within isympy. +.TP +-- \fIPYTHONOPTIONS\fR +These options will be passed on to \fIipython (1)\fR shell. +Only supported when ipython is being used (standard python shell not supported). + +Two dashes (--) are required to separate \fIPYTHONOPTIONS\fR +from the other isympy options. + +For example, to run iSymPy without startup banner and colors: + +isympy -q -c ipython -- --colors=NoColor +.TP +\*(T<\fB\-h\fR\*(T>, \*(T<\fB\-\-help\fR\*(T> +Print help output and exit. +.TP +\*(T<\fB\-v\fR\*(T>, \*(T<\fB\-\-version\fR\*(T> +Print isympy version information and exit. +.SH FILES +.TP +\*(T<\fI${HOME}/.sympy\-history\fR\*(T> +Saves the history of commands when using the python +shell as backend. +.SH BUGS +The upstreams BTS can be found at \(lahttps://github.com/sympy/sympy/issues\(ra +Please report all bugs that you find in there, this will help improve +the overall quality of SymPy. +.SH "SEE ALSO" +\fBipython\fR(1), \fBpython\fR(1) diff --git a/outputs/audit_venv/share/man/man1/ttx.1 b/outputs/audit_venv/share/man/man1/ttx.1 new file mode 100644 index 0000000000000000000000000000000000000000..bba23b5e51629509a499f4471fc8196e9863d211 --- /dev/null +++ b/outputs/audit_venv/share/man/man1/ttx.1 @@ -0,0 +1,225 @@ +.Dd May 18, 2004 +.\" ttx is not specific to any OS, but contrary to what groff_mdoc(7) +.\" seems to imply, entirely omitting the .Os macro causes 'BSD' to +.\" be used, so I give a zero-width space as its argument. +.Os \& +.\" The "FontTools Manual" argument apparently has no effect in +.\" groff 1.18.1. I think it is a bug in the -mdoc groff package. +.Dt TTX 1 "FontTools Manual" +.Sh NAME +.Nm ttx +.Nd tool for manipulating TrueType and OpenType fonts +.Sh SYNOPSIS +.Nm +.Bk +.Op Ar option ... +.Ek +.Bk +.Ar file ... +.Ek +.Sh DESCRIPTION +.Nm +is a tool for manipulating TrueType and OpenType fonts. It can convert +TrueType and OpenType fonts to and from an +.Tn XML Ns -based format called +.Tn TTX . +.Tn TTX +files have a +.Ql .ttx +extension. +.Pp +For each +.Ar file +argument it is given, +.Nm +detects whether it is a +.Ql .ttf , +.Ql .otf +or +.Ql .ttx +file and acts accordingly: if it is a +.Ql .ttf +or +.Ql .otf +file, it generates a +.Ql .ttx +file; if it is a +.Ql .ttx +file, it generates a +.Ql .ttf +or +.Ql .otf +file. +.Pp +By default, every output file is created in the same directory as the +corresponding input file and with the same name except for the +extension, which is substituted appropriately. +.Nm +never overwrites existing files; if necessary, it appends a suffix to +the output file name before the extension, as in +.Pa Arial#1.ttf . +.Ss "General options" +.Bl -tag -width ".Fl t Ar table" +.It Fl h +Display usage information. +.It Fl d Ar dir +Write the output files to directory +.Ar dir +instead of writing every output file to the same directory as the +corresponding input file. +.It Fl o Ar file +Write the output to +.Ar file +instead of writing it to the same directory as the +corresponding input file. +.It Fl v +Be verbose. Write more messages to the standard output describing what +is being done. +.It Fl a +Allow virtual glyphs ID's on compile or decompile. +.El +.Ss "Dump options" +The following options control the process of dumping font files +(TrueType or OpenType) to +.Tn TTX +files. +.Bl -tag -width ".Fl t Ar table" +.It Fl l +List table information. Instead of dumping the font to a +.Tn TTX +file, display minimal information about each table. +.It Fl t Ar table +Dump table +.Ar table . +This option may be given multiple times to dump several tables at +once. When not specified, all tables are dumped. +.It Fl x Ar table +Exclude table +.Ar table +from the list of tables to dump. This option may be given multiple +times to exclude several tables from the dump. The +.Fl t +and +.Fl x +options are mutually exclusive. +.It Fl s +Split tables. Dump each table to a separate +.Tn TTX +file and write (under the name that would have been used for the output +file if the +.Fl s +option had not been given) one small +.Tn TTX +file containing references to the individual table dump files. This +file can be used as input to +.Nm +as long as the referenced files can be found in the same directory. +.It Fl i +.\" XXX: I suppose OpenType programs (exist and) are also affected. +Don't disassemble TrueType instructions. When this option is specified, +all TrueType programs (glyph programs, the font program and the +pre-program) are written to the +.Tn TTX +file as hexadecimal data instead of +assembly. This saves some time and results in smaller +.Tn TTX +files. +.It Fl y Ar n +When decompiling a TrueType Collection (TTC) file, +decompile font number +.Ar n , +starting from 0. +.El +.Ss "Compilation options" +The following options control the process of compiling +.Tn TTX +files into font files (TrueType or OpenType): +.Bl -tag -width ".Fl t Ar table" +.It Fl m Ar fontfile +Merge the input +.Tn TTX +file +.Ar file +with +.Ar fontfile . +No more than one +.Ar file +argument can be specified when this option is used. +.It Fl b +Don't recalculate glyph bounding boxes. Use the values in the +.Tn TTX +file as is. +.El +.Sh "THE TTX FILE FORMAT" +You can find some information about the +.Tn TTX +file format in +.Pa documentation.html . +In particular, you will find in that file the list of tables understood by +.Nm +and the relations between TrueType GlyphIDs and the glyph names used in +.Tn TTX +files. +.Sh EXAMPLES +In the following examples, all files are read from and written to the +current directory. Additionally, the name given for the output file +assumes in every case that it did not exist before +.Nm +was invoked. +.Pp +Dump the TrueType font contained in +.Pa FreeSans.ttf +to +.Pa FreeSans.ttx : +.Pp +.Dl ttx FreeSans.ttf +.Pp +Compile +.Pa MyFont.ttx +into a TrueType or OpenType font file: +.Pp +.Dl ttx MyFont.ttx +.Pp +List the tables in +.Pa FreeSans.ttf +along with some information: +.Pp +.Dl ttx -l FreeSans.ttf +.Pp +Dump the +.Sq cmap +table from +.Pa FreeSans.ttf +to +.Pa FreeSans.ttx : +.Pp +.Dl ttx -t cmap FreeSans.ttf +.Sh NOTES +On MS\-Windows and MacOS, +.Nm +is available as a graphical application to which files can be dropped. +.Sh SEE ALSO +.Pa documentation.html +.Pp +.Xr fontforge 1 , +.Xr ftinfo 1 , +.Xr gfontview 1 , +.Xr xmbdfed 1 , +.Xr Font::TTF 3pm +.Sh AUTHORS +.Nm +was written by +.An -nosplit +.An "Just van Rossum" Aq just@letterror.com . +.Pp +This manual page was written by +.An "Florent Rougon" Aq f.rougon@free.fr +for the Debian GNU/Linux system based on the existing FontTools +documentation. It may be freely used, modified and distributed without +restrictions. +.\" For Emacs: +.\" Local Variables: +.\" fill-column: 72 +.\" sentence-end: "[.?!][]\"')}]*\\($\\| $\\| \\| \\)[ \n]*" +.\" sentence-end-double-space: t +.\" End: \ No newline at end of file diff --git a/outputs/external_vla/same_split_comparison.json b/outputs/external_vla/same_split_comparison.json new file mode 100644 index 0000000000000000000000000000000000000000..8f11a26e8b07b8beee9852f0ce2e26650d87495b --- /dev/null +++ b/outputs/external_vla/same_split_comparison.json @@ -0,0 +1,28 @@ +{ + "comparison_protocol": "same_700_group_heldout_candidate_selection", + "dataset_groups": 3500, + "evaluation_groups": 700, + "validation_group_ids_sha256": "a7e51209e227ee8b68090e7826368541f209e1365112ed718c465c3bb0f11d53", + "seed": 0, + "candidate_oracle_success_rate": 0.4185714285714286, + "dovla_iaf": { + "top1_action_selection": 0.6171428571428571, + "selected_success_rate": 0.37857142857142856, + "mean_selected_regret": 0.059859846833028967 + }, + "smolvla_expert_only_bc": { + "checkpoint_revision": "c83c3163b8ca9b7e67c509fffd9121e66cb96205", + "model_sha256": "7cd549ac2351fb069c0ddb3c34ad2d09cfc92b56a15dccdfc2e41467aaca01eb", + "training_groups": 2800, + "training_steps": 1000, + "top1_action_selection": 0.5228571428571429, + "selected_success_rate": 0.3457142857142857, + "mean_selected_regret": 0.13656934786188815 + }, + "dovla_minus_smolvla": { + "top1_action_selection": 0.0942857142857142, + "selected_success_rate": 0.03285714285714286, + "mean_selected_regret": -0.07670950102885918 + }, + "scope": "Both methods select among the same measured same-state CIL candidates. This artifact does not compare online policy rollout success." +} diff --git a/outputs/external_vla/smolvla_cil_aligned_manifest.json b/outputs/external_vla/smolvla_cil_aligned_manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..59b470cbae5b18cc71b9d41c6a25baf350fec653 --- /dev/null +++ b/outputs/external_vla/smolvla_cil_aligned_manifest.json @@ -0,0 +1,5782 @@ +{ + "action_normalizer": { + "canonical_action_dim": 8, + "mean": [ + -0.011001614853739738, + 0.0922699049115181, + -0.22631123661994934, + -0.11120374500751495, + -0.2544722855091095, + 0.322357714176178, + -0.8979408740997314, + -0.038035713136196136 + ], + "scale": [ + 0.712899923324585, + 0.5003968477249146, + 1.0223413705825806, + 1.1761223077774048, + 1.359087347984314, + 1.5495193004608154, + 1.6576342582702637, + 0.3774811327457428 + ], + "vectorization": "right_zero_pad_to_canonical_dimension" + }, + "checkpoint": "/scratch/knguy52/dovla/models/smolvla_base-c83c316", + "claim_scope": "Expert-only SmolVLA fine-tuning evaluated by nearest executed same-state CIL candidate; this is measured candidate selection, not online policy rollout.", + "config": { + "action_dim": 8, + "action_horizon": 4, + "batch_size": 4, + "device": "cuda", + "export_dir": "/scratch/knguy52/dovla/experiments/external_vla_export_full_aligned", + "image_size": 512, + "learning_rate": 0.0001, + "log_every": 25, + "max_eval_groups": 700, + "seed": 0, + "split_mode": "dataset_group_shuffle", + "state_dim": 32, + "steps": 1000, + "val_fraction": 0.2, + "vlm_metadata": "/scratch/knguy52/dovla/models/SmolVLM2-500M-Video-Instruct-metadata-7b375e1b73b11138ff12fe22c8f2822d8fe03467" + }, + "dataset": "/scratch/knguy52/dovla/experiments/maniskill_presuccess_six_task_collection", + "export": "/scratch/knguy52/dovla/experiments/external_vla_export_full_aligned", + "num_train_groups": 2800, + "num_validation_groups": 700, + "schema_version": "smolvla-cil-candidate-baseline/v0", + "state_projector": { + "components": [ + [ + -0.0009472116362303495, + 0.000963377533480525, + -0.00011321854981360957, + -0.0018236824544146657, + 0.004122762940824032, + 0.0013067638501524925, + -0.0029155476950109005, + -0.02485238015651703, + -0.0004786144709214568, + 0.0038494563195854425, + 0.3833312690258026, + 0.6699730157852173, + 0.6323888301849365, + -0.003385609481483698, + -7.469352567568421e-05, + -0.006712593138217926, + -0.0010648821480572224, + 3.155859303660691e-05, + -0.004769495688378811, + 0.006381289102137089, + -7.009412911429536e-06, + -5.825750849908218e-05, + 4.8305846576113254e-05, + 0.0008909340831451118, + -0.0002910454059019685, + -0.0020156570244580507, + -0.0033816667273640633, + 7.327997122953331e-15, + 0.006282679736614227, + 0.0020009453874081373, + 1.8588054272877796e-12, + -2.2472839561471503e-11, + -0.004830706398934126, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.004310313146561384, + 0.002294174861162901, + 0.0003723612753674388, + -0.02121465839445591, + 0.0006104116328060627, + 0.015162331983447075, + 0.00550801120698452, + 0.00018319861555937678, + 0.00018329954764340073, + 0.0015486417105421424, + -0.004190572537481785, + 0.000742288597393781, + 0.0027123582549393177, + -0.0008236839785240591, + -0.01488953735679388, + 0.0028437168803066015, + 0.011744999326765537, + 0.0014020497910678387, + -0.018270889297127724, + -0.009582971222698689, + 0.00012822041753679514, + 0.00012829111074097455, + -0.0036129371728748083, + -0.0075623467564582825, + 0.0038340461906045675, + -0.03357479348778725, + 0.0024324883706867695, + 0.0026926230639219284, + -0.0032499332446604967, + -0.002558450447395444, + -0.0006797343958169222, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.006831651087850332, + -0.006831651087850332, + -0.006831651087850332, + -0.006831651087850332, + -0.006831651087850332, + -0.006831651087850332, + -0.006831651087850332, + -0.006831651087850332, + -0.006831651087850332, + -0.006831651087850332, + -0.006831651087850332, + -0.006831651087850332, + -0.006831651087850332 + ], + [ + 0.00028777611441910267, + -0.0005648690275847912, + -0.000618185440544039, + 0.003306581173092127, + -0.0035802193451672792, + -0.00047961081145331264, + -0.0052907126955688, + 0.019344132393598557, + 0.00030329200671985745, + -0.006930300500243902, + -0.4206838607788086, + -0.47960638999938965, + 0.7683088183403015, + 0.0025843093171715736, + 0.00019414866983424872, + 0.00419723242521286, + -0.000991127104498446, + 9.32571419980377e-05, + 0.006722330581396818, + -0.004552920814603567, + 2.9965998692205176e-05, + -0.00023754333960823715, + -2.729038351390045e-05, + -0.00014826397818978876, + 0.0001172870397567749, + -0.000765786215197295, + 0.002441998803988099, + -6.187553656836035e-15, + -0.004536904394626617, + -0.0014449403388425708, + -1.342297041746765e-12, + 1.622828607605875e-11, + 0.0034883925691246986, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.0030843657441437244, + -0.0016836406430229545, + -0.00028395975823514163, + 0.015331820584833622, + -0.0004635473887901753, + -0.011031106114387512, + -0.0039581903256475925, + -0.00013275993114802986, + -0.0001328223297605291, + -0.0011720493203029037, + 0.0026348892133682966, + -0.0004679737612605095, + -0.0019669116009026766, + 0.0014377391198650002, + 0.010130094364285469, + -0.00285517075099051, + -0.011027439497411251, + -0.0013305587926879525, + 0.016925115138292313, + 0.008922496810555458, + -0.0001727676863083616, + -0.000173356500454247, + 0.004864595830440521, + 0.008960355073213577, + -0.004625855479389429, + 0.024467600509524345, + -0.003591944696381688, + 0.003595636459067464, + 0.0053748139180243015, + 0.001221431652083993, + -0.0002902651613112539, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.004933332558721304, + 0.004933332558721304, + 0.004933332558721304, + 0.004933332558721304, + 0.004933332558721304, + 0.004933332558721304, + 0.004933332558721304, + 0.004933332558721304, + 0.004933332558721304, + 0.004933332558721304, + 0.004933332558721304, + 0.004933332558721304, + 0.004933332558721304 + ], + [ + -0.00021219842892605811, + 0.001886711805127561, + -0.0018270873697474599, + 3.700465640577022e-06, + -0.0023816274479031563, + -0.0020127345342189074, + 0.007281394209712744, + -0.007683674339205027, + -0.0007991645252332091, + 0.0011669363593682647, + 0.8203607797622681, + -0.5618172883987427, + 0.0982627272605896, + -0.002001512795686722, + 0.0005945450975559652, + 0.0007348493090830743, + -0.005563501734286547, + -5.887417864869349e-05, + 0.0005016142386011779, + 0.0019441801123321056, + -1.524409412922978e-06, + 0.0004916038597002625, + 0.00017737768939696252, + 0.003944726660847664, + -0.0004645549925044179, + -0.00041614152723923326, + 0.0014551326166838408, + 1.4121319309270725e-15, + -0.0027034373488277197, + -0.0008610064396634698, + -7.998440776889326e-13, + 9.670064228528563e-12, + 0.0020786537788808346, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.0019613688345998526, + -0.0006069272058084607, + -0.0001936090993694961, + 0.009370852261781693, + -0.0002933931245934218, + -0.005942825227975845, + -0.002435459988191724, + -4.714156602858566e-05, + -4.717771298601292e-05, + -0.0022559266071766615, + 0.00540586095303297, + -0.0002260145847685635, + -0.004979391116648912, + 0.0027967405039817095, + 0.012554952874779701, + -0.0045832558535039425, + -0.008674629963934422, + 0.0002650513779371977, + 0.011268007569015026, + -0.01941850408911705, + 0.0003743432171177119, + 0.00037336317473091185, + 0.004040434490889311, + 0.0043673040345311165, + 0.002781508257612586, + -0.017324263229966164, + 0.006436229683458805, + 0.005919283721596003, + 0.0028538722544908524, + -0.0036851142067462206, + 0.0004292596422601491, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.002939659869298339, + 0.002939659869298339, + 0.002939659869298339, + 0.002939659869298339, + 0.002939659869298339, + 0.002939659869298339, + 0.002939659869298339, + 0.002939659869298339, + 0.002939659869298339, + 0.002939659869298339, + 0.002939659869298339, + 0.002939659869298339, + 0.002939659869298339 + ], + [ + -0.0035368239041417837, + -0.0025141295045614243, + 0.002715041860938072, + -0.020711876451969147, + 0.09768533706665039, + 0.026087479665875435, + -0.04910906031727791, + -0.005947052501142025, + 0.024494454264640808, + 0.018811529502272606, + -0.014897970482707024, + -0.06262388080358505, + 0.00035707670031115413, + -0.015890831127762794, + 0.0009351579356007278, + -0.14706049859523773, + -0.011604963801801205, + -2.4451199351460673e-05, + -0.03789234906435013, + 0.08970329910516739, + 0.00010813747212523594, + -0.0009062914759851992, + -0.0005746327806264162, + -0.0053315917029976845, + 0.0038937812205404043, + 0.0019047794630751014, + -0.07405145466327667, + 2.11549907366132e-13, + 0.13757763803005219, + 0.043816544115543365, + 4.0703981851741844e-11, + -4.921085205999987e-10, + -0.10578245669603348, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.09181497246026993, + 0.05787895247340202, + 0.0075806197710335255, + -0.4606916606426239, + 0.013280047103762627, + 0.34285637736320496, + 0.11825945973396301, + 0.004391293507069349, + 0.004393697250634432, + 0.018198847770690918, + -0.0461345799267292, + 0.014078169129788876, + 0.0026722862385213375, + 0.014360242523252964, + -0.18286921083927155, + 0.025172075256705284, + 0.2911907434463501, + -0.00334531138651073, + -0.36586523056030273, + -0.03259829059243202, + -0.0034899981692433357, + -0.003491275943815708, + 0.0035526854917407036, + -0.07077716290950775, + 0.003584472229704261, + 0.0012273247120901942, + 0.0006526464130729437, + -0.05110594257712364, + 0.03972948342561722, + 0.0024146665818989277, + 0.004557049833238125, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.14959898591041565, + -0.14959898591041565, + -0.14959898591041565, + -0.14959898591041565, + -0.14959898591041565, + -0.14959898591041565, + -0.14959898591041565, + -0.14959898591041565, + -0.14959898591041565, + -0.14959898591041565, + -0.14959898591041565, + -0.14959898591041565, + -0.14959898591041565 + ], + [ + 0.006643514148890972, + 0.004861366469413042, + -0.0009809096809476614, + 0.010610189288854599, + -0.003935337532311678, + -0.0014387257397174835, + 0.0006284701521508396, + -0.002134674461558461, + 0.010926930233836174, + -0.013625686056911945, + 0.0025477767921984196, + 0.007508916314691305, + -0.0029595375526696444, + 0.010308397002518177, + 0.004217203706502914, + 0.0022923001088202, + -0.006703463848680258, + -5.462816989165731e-05, + 0.012025481089949608, + 0.0009673480526544154, + -0.00015971717948559672, + 0.0013426186051219702, + 0.0002739790070336312, + 7.77445802668808e-06, + -0.0019271208439022303, + 0.0021201265044510365, + 0.0029296313878148794, + -8.566866664574523e-15, + -0.00544288195669651, + -0.001733480952680111, + -1.6103413090842733e-12, + 1.9468923001531024e-11, + 0.004184992518275976, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.0036803369875997305, + -0.0022561531513929367, + -0.0002925725420936942, + 0.01829557493329048, + -0.0005320000345818698, + -0.013401403091847897, + -0.004765799269080162, + -0.000161550851771608, + -0.00016161156236194074, + -0.0018253837479278445, + 0.003202748252078891, + -0.00032630356145091355, + -0.0015374189242720604, + 0.033909205347299576, + 0.013330611400306225, + -0.037495166063308716, + -0.0029379925690591335, + -0.054318107664585114, + 0.013683870434761047, + 0.04405154660344124, + -0.00019740458810701966, + -0.0002056688244920224, + 0.14590875804424286, + -0.04547932371497154, + 0.0048612128011882305, + -0.06824417412281036, + -0.352795273065567, + 0.009902678430080414, + 0.9148979187011719, + -0.022843623533844948, + 0.004660950507968664, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0059184730052948, + 0.0059184730052948, + 0.0059184730052948, + 0.0059184730052948, + 0.0059184730052948, + 0.0059184730052948, + 0.0059184730052948, + 0.0059184730052948, + 0.0059184730052948, + 0.0059184730052948, + 0.0059184730052948, + 0.0059184730052948, + 0.0059184730052948 + ], + [ + -0.01567704603075981, + 0.004647674970328808, + 0.0036550904624164104, + -0.002968788845464587, + -0.0030134820844978094, + -0.0008271039114333689, + 0.0012488190550357103, + -0.10125979781150818, + -0.006164261139929295, + 0.006012462545186281, + -0.03501681610941887, + -0.0272272527217865, + -0.0025355233810842037, + -0.012956132180988789, + -0.0010808567749336362, + 0.003402134869247675, + 0.00107424461748451, + 0.0002524742449168116, + -0.003099802415817976, + 0.0053689368069171906, + -0.0009003874729387462, + 0.0008104328881017864, + 0.0006052414537407458, + 0.011743736453354359, + -0.006107192486524582, + -0.0020163815934211016, + 0.0022325499448925257, + -5.4508298103026626e-15, + -0.004147767089307308, + -0.0013210047036409378, + -1.2271662635718328e-12, + 1.483636130616972e-11, + 0.0031891888938844204, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.0027854163199663162, + -0.001509582856670022, + -0.0002513461804483086, + 0.014108086004853249, + -0.00041063682874664664, + -0.010381030850112438, + -0.0035366308875381947, + -0.00013445490912999958, + -0.00013452860002871603, + -0.0002802973613142967, + 0.0010135613847523928, + -0.0006688328576274216, + -0.00059579371009022, + -0.010104799643158913, + -0.022731635719537735, + 0.009199703112244606, + -0.047731664031744, + 0.009546776302158833, + 0.005974017549306154, + -0.023902928456664085, + 0.0002854045305866748, + 0.0002869741292670369, + -0.03474234789609909, + -0.5763009190559387, + 0.011627557687461376, + -0.7877925038337708, + 0.016924560070037842, + 0.15031257271766663, + -0.0746656209230423, + 0.009000043384730816, + 0.008224396966397762, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.004510193131864071, + 0.004510193131864071, + 0.004510193131864071, + 0.004510193131864071, + 0.004510193131864071, + 0.004510193131864071, + 0.004510193131864071, + 0.004510193131864071, + 0.004510193131864071, + 0.004510193131864071, + 0.004510193131864071, + 0.004510193131864071, + 0.004510193131864071 + ], + [ + 0.005781878717243671, + 0.027764244005084038, + 0.025633668527007103, + -0.08426334708929062, + -0.008637885563075542, + -0.0007435394800268114, + 0.08611427992582321, + 0.020628158003091812, + -0.01522674411535263, + 0.12045323103666306, + 0.002015278209000826, + 0.0014183924067765474, + 0.007435949053615332, + -0.008376898244023323, + -0.0040024020709097385, + 0.05364569276571274, + 0.02883213944733143, + 0.0005996229010634124, + -0.17969700694084167, + 0.044258829206228256, + -0.0004712945083156228, + 0.0033228828106075525, + 0.0024858934339135885, + 0.03585948795080185, + -0.019454117864370346, + -0.015396024100482464, + 0.010553545318543911, + -2.72887351008156e-14, + -0.01960698515176773, + -0.006244543939828873, + -5.80095953911508e-12, + 7.013323255478099e-11, + 0.01507567334920168, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.01342887431383133, + -0.007509471382945776, + -0.0011212173849344254, + 0.06638581305742264, + -0.001979030203074217, + -0.04775450751185417, + -0.0172322615981102, + -0.0005517930840142071, + -0.0005520560662262142, + -0.006529186386615038, + 0.01553291268646717, + -0.0011072984198108315, + -0.00976475328207016, + -0.017322752624750137, + 0.08348752558231354, + -0.00023456728376913816, + 0.04147212207317352, + 0.025848882272839546, + -0.050687044858932495, + -0.2684173583984375, + 0.0033838439267128706, + 0.0033904570154845715, + -0.07013195008039474, + -0.4758625626564026, + 0.08967868983745575, + 0.22076164186000824, + 0.09592713415622711, + -0.7199904918670654, + 0.06539137661457062, + 0.06998506933450699, + 0.07262426614761353, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.021320214495062828, + 0.021320214495062828, + 0.021320214495062828, + 0.021320214495062828, + 0.021320214495062828, + 0.021320214495062828, + 0.021320214495062828, + 0.021320214495062828, + 0.021320214495062828, + 0.021320214495062828, + 0.021320214495062828, + 0.021320214495062828, + 0.021320214495062828 + ], + [ + -0.0020717366132885218, + -0.07711230963468552, + -0.002364260144531727, + 0.03794151544570923, + -0.0037383362650871277, + 0.01802484132349491, + -0.3186562657356262, + -0.023625006899237633, + 0.016296999529004097, + 0.1370832473039627, + 0.026819974184036255, + -0.008078832179307938, + 0.002207433804869652, + -0.013194615021348, + 0.020002715289592743, + 0.046252038329839706, + 0.12605145573616028, + -0.0007313807727769017, + 0.10208398103713989, + -0.2628140151500702, + 0.0016298909904435277, + -0.011218896135687828, + -0.006521890871226788, + -0.06431412696838379, + 0.0472506545484066, + 0.0161205492913723, + 0.004007960204035044, + -2.868377125988912e-14, + -0.00744636170566082, + -0.002371578710153699, + -2.2030946945222896e-12, + 2.6635272112884856e-11, + 0.0057254359126091, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 5.151764344191179e-05, + -0.009413211606442928, + -2.809546458593104e-05, + 0.02443695068359375, + -0.0006127957603894174, + -0.04111561179161072, + 0.0016147415153682232, + -0.0011380685027688742, + -0.0011381655931472778, + 0.046722639352083206, + -0.08977194130420685, + -0.011055897921323776, + 0.1130184531211853, + -0.03388866037130356, + -0.2195654809474945, + 0.11328992247581482, + -0.005833495408296585, + -0.012607197277247906, + -0.046648140996694565, + 0.7491308450698853, + -0.002038354752585292, + -0.002024043118581176, + -0.05405610799789429, + -0.16411492228507996, + 0.015114863403141499, + 0.06556638330221176, + -0.12261167168617249, + -0.2434726506471634, + -0.0654730275273323, + 0.013814241625368595, + 0.0015236588660627604, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.008097013458609581, + 0.008097013458609581, + 0.008097013458609581, + 0.008097013458609581, + 0.008097013458609581, + 0.008097013458609581, + 0.008097013458609581, + 0.008097013458609581, + 0.008097013458609581, + 0.008097013458609581, + 0.008097013458609581, + 0.008097013458609581, + 0.008097013458609581 + ], + [ + 0.018987011164426804, + -0.03986372798681259, + -0.013487123884260654, + 0.021269742399454117, + 0.018618732690811157, + -0.02672199159860611, + -0.0774327740073204, + 0.010343914851546288, + -0.06059436500072479, + -0.0446791835129261, + 0.0024252308066934347, + 0.011143572628498077, + 0.0002496363304089755, + 0.0005231939721852541, + 0.005707764066755772, + -0.008240770548582077, + 0.04124847799539566, + -0.0001361915929010138, + 0.03789965435862541, + -0.08071812987327576, + 0.0005154949030838907, + -0.004013187251985073, + -0.0027738220524042845, + -0.03639586269855499, + 0.0197750236839056, + 0.01333328802138567, + -0.009760669432580471, + 8.07178962883813e-14, + 0.01813395693898201, + 0.005775403697043657, + 5.365146694968903e-12, + -6.486428061336369e-11, + -0.013943074271082878, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.0024530014488846064, + 0.027432380244135857, + 7.625138096045703e-05, + -0.05300501734018326, + 0.0007162196561694145, + 0.1072751134634018, + -0.0053638555109500885, + 0.0034619688522070646, + 0.003463780740275979, + -0.15855154395103455, + 0.3147636651992798, + 0.03744424507021904, + -0.36741647124290466, + 0.16945703327655792, + 0.70506352186203, + -0.2637694180011749, + 0.10106298327445984, + -0.00796563271433115, + -0.0786704570055008, + 0.2684479355812073, + -0.0021378390956670046, + -0.002132839523255825, + -0.0381523035466671, + -0.023717250674962997, + 0.030153783038258553, + -0.03385419398546219, + -0.002588916104286909, + -0.04542035982012749, + -0.03519589081406593, + 0.0016990680014714599, + -0.0025277817621827126, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.0197184756398201, + -0.0197184756398201, + -0.0197184756398201, + -0.0197184756398201, + -0.0197184756398201, + -0.0197184756398201, + -0.0197184756398201, + -0.0197184756398201, + -0.0197184756398201, + -0.0197184756398201, + -0.0197184756398201, + -0.0197184756398201, + -0.0197184756398201 + ], + [ + -0.004673880059272051, + 0.001983449561521411, + -0.001029874081723392, + -0.026969879865646362, + 0.0012838913826271892, + 0.001369938370771706, + -0.024468909949064255, + -0.011186862364411354, + 0.09496855735778809, + 0.0010071586584672332, + -0.004984179511666298, + 0.002669412177056074, + -0.000745433964766562, + -0.0018741092644631863, + 0.029784370213747025, + 0.013018285855650902, + 0.029068002477288246, + -0.0006249853759072721, + 0.0010402987245470285, + -0.045152876526117325, + 0.00036891535273753107, + 0.003509495174512267, + -0.0017082274425774813, + -0.07563658803701401, + 0.01685331016778946, + 0.05848875641822815, + 0.0010923083173111081, + -1.7997617149856024e-14, + -0.0020293111447244883, + -0.0006463108584284782, + -6.00395872341758e-13, + 7.25874742257826e-12, + 0.001560318865813315, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.0005686478107236326, + -0.0026408813428133726, + 3.1498817406827584e-05, + 0.006286994554102421, + -0.00011460261157481, + -0.009286781772971153, + -0.0009634021553210914, + -0.00023040799715090543, + -0.00023053814948070794, + 0.0032589146867394447, + -0.0223851278424263, + -0.0009390302002429962, + 0.01759897544980049, + 0.07409999519586563, + -0.046856872737407684, + -0.05051330104470253, + -0.009016167372465134, + 0.04779987409710884, + -0.00541545357555151, + 0.144154354929924, + 0.000470163970021531, + 0.0004653318028431386, + 0.40308406949043274, + 0.038222573697566986, + 0.2402276247739792, + -0.04764997959136963, + 0.8131104111671448, + 0.016023876145482063, + 0.2367507368326187, + 0.0013747001066803932, + 0.016167882829904556, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0022066296078264713, + 0.0022066296078264713, + 0.0022066296078264713, + 0.0022066296078264713, + 0.0022066296078264713, + 0.0022066296078264713, + 0.0022066296078264713, + 0.0022066296078264713, + 0.0022066296078264713, + 0.0022066296078264713, + 0.0022066296078264713, + 0.0022066296078264713, + 0.0022066296078264713 + ], + [ + -0.0022105087991803885, + 0.03594091907143593, + 0.0003541698679327965, + 0.08875102549791336, + 0.03158785030245781, + -0.038682326674461365, + 0.8520680069923401, + 0.004523669369518757, + 0.03618922829627991, + 0.03416059911251068, + 0.004002342000603676, + 0.0019501505885273218, + 0.0045023113489151, + -0.007350060157477856, + 0.01577303558588028, + 0.0036886620800942183, + 0.04402325674891472, + 0.0001018769180518575, + 0.11854707449674606, + 0.1110486388206482, + -0.0005018714582547545, + 0.00703011266887188, + 0.0048326896503567696, + 0.09104481339454651, + -0.051338955760002136, + -0.027289381250739098, + -0.002873622579500079, + 1.1492636201970545e-14, + 0.005338996648788452, + 0.001700401771813631, + 1.5796056953773507e-12, + -1.9097331355188985e-11, + -0.004105109255760908, + -1.8932661725304283e-29, + 7.629764067684474e-30, + -2.5736201846846633e-30, + 3.333911122886906e-30, + -1.310481125528343e-29, + 2.7088225356507047e-30, + -0.0043208119459450245, + 0.0029631080105900764, + -0.0011606841580942273, + -0.043017737567424774, + 0.0026951285544782877, + 0.057041943073272705, + -0.014973372220993042, + 0.000537724292371422, + 0.0005335333989933133, + 0.005472661927342415, + -0.1440783590078354, + 0.00836483296006918, + -0.14690513908863068, + 0.0162937231361866, + -0.0402829572558403, + 0.0029434780590236187, + -0.04088174179196358, + -0.014266472309827805, + 0.029352840036153793, + 0.3464452922344208, + -0.00467366399243474, + -0.00467931292951107, + 0.13565295934677124, + -0.1149403527379036, + -0.03856941685080528, + 0.07457690685987473, + -0.052226126194000244, + -0.0034168781712651253, + -0.06078556552529335, + -0.024901393800973892, + -0.025994863361120224, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.005805510561913252, + -0.005805510561913252, + -0.005805510561913252, + -0.005805510561913252, + -0.005805510561913252, + -0.005805510561913252, + -0.005805510561913252, + -0.005805510561913252, + -0.005805510561913252, + -0.005805510561913252, + -0.005805510561913252, + -0.005805510561913252, + -0.005805510561913252 + ], + [ + 0.0032210485078394413, + -0.006651272065937519, + 0.0028617356438189745, + -0.03141390532255173, + 0.0007000859477557242, + -0.0053685810416936874, + 0.11951103806495667, + -0.016862235963344574, + 0.034370057284832, + -0.0047234464436769485, + 0.001686516567133367, + -0.0012876302935183048, + 0.0026528199668973684, + 0.0018636105814948678, + -0.017661431804299355, + 0.002079004654660821, + 0.0021953426767140627, + -0.003177723614498973, + -0.008508189581334591, + 0.03964848071336746, + 0.00577571801841259, + 0.020361486822366714, + -0.008125434629619122, + -0.7612603306770325, + 0.14135368168354034, + 0.606335461139679, + 0.0017843962414190173, + -4.247988815092932e-15, + -0.0033152461983263493, + -0.0010558589128777385, + -9.80855045622231e-13, + 1.1858474271986275e-11, + 0.002549069235101342, + -4.338734978715565e-29, + 1.5999085234013646e-29, + -5.4176409335612945e-30, + 7.0188952005113e-30, + -2.758964761221753e-29, + 5.702902379455002e-30, + -0.0026913208421319723, + -0.0015705731930211186, + -0.0003804739681072533, + 0.009022435173392296, + -0.00014937848027329892, + -0.006020312197506428, + -0.004163178149610758, + -0.00014310052210930735, + -0.00014351199206430465, + 0.00554590905085206, + -0.01877281628549099, + -0.00078008504351601, + -0.0036559668369591236, + -0.03035036474466324, + 0.001077081891708076, + 0.008522557094693184, + 0.01768552139401436, + -0.007250536233186722, + -0.005920854397118092, + -0.051370374858379364, + 0.0015042038867250085, + 0.0015073162503540516, + -0.01546396967023611, + -0.018670229241251945, + -0.008504033088684082, + 0.0031418895814567804, + -0.08435149490833282, + -0.009403843432664871, + -0.02859789878129959, + 0.006055323872715235, + 0.0022954531013965607, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.003604927798733115, + 0.003604927798733115, + 0.003604927798733115, + 0.003604927798733115, + 0.003604927798733115, + 0.003604927798733115, + 0.003604927798733115, + 0.003604927798733115, + 0.003604927798733115, + 0.003604927798733115, + 0.003604927798733115, + 0.003604927798733115, + 0.003604927798733115 + ], + [ + -0.0028311824426054955, + 0.0264583807438612, + 0.012388928793370724, + -0.014402540400624275, + -0.021348875015974045, + 0.05897968262434006, + 0.16764144599437714, + 0.06890502572059631, + -0.012282154522836208, + -0.07362271845340729, + 0.0034617625642567873, + 0.0019755405373871326, + 0.0012326191645115614, + 0.002486218698322773, + 0.004445865750312805, + -0.012184027582406998, + 0.008433528244495392, + -0.00016443763161078095, + 0.03098178654909134, + 0.06341402232646942, + -0.00024996037245728076, + 0.0038087659049779177, + 0.00151269871275872, + 0.013508501462638378, + -0.023447072133421898, + 0.016609763726592064, + -0.007200829219073057, + 9.935704602809237e-14, + 0.01337830163538456, + 0.004260803572833538, + 3.958129830838875e-12, + -4.785353363567779e-11, + -0.010286476463079453, + -2.3224065049706588e-27, + 8.551252212595768e-28, + -2.9099106641340073e-28, + 3.7691527532427062e-28, + -1.4815736098283796e-27, + 3.062478019503503e-28, + 0.022042883560061455, + 0.011984081007540226, + 0.005377115681767464, + 0.008741462603211403, + -5.517863610293716e-05, + -0.03300929442048073, + 0.04182828217744827, + 0.0006352701457217336, + 0.000638299563433975, + -0.019375331699848175, + 0.7115040421485901, + -0.03151160478591919, + 0.6422378420829773, + -0.039895955473184586, + 0.024231107905507088, + 0.03836693987250328, + 0.02834121696650982, + -0.01066760066896677, + -0.02319585159420967, + 0.08937278389930725, + -0.0016723163425922394, + -0.0016741255531087518, + 0.07035109400749207, + -0.05676713213324547, + -0.02324746735394001, + 0.029609153047204018, + -0.009201979264616966, + 0.017633549869060516, + -0.01914694719016552, + -0.0059072175063192844, + -0.007946673780679703, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.014547279104590416, + -0.014547279104590416, + -0.014547279104590416, + -0.014547279104590416, + -0.014547279104590416, + -0.014547279104590416, + -0.014547279104590416, + -0.014547279104590416, + -0.014547279104590416, + -0.014547279104590416, + -0.014547279104590416, + -0.014547279104590416, + -0.014547279104590416 + ], + [ + 0.0030637490563094616, + -0.04988454282283783, + 0.00019176947535015643, + -0.03756225109100342, + 0.0038679963909089565, + 0.0005993748782202601, + 0.14708970487117767, + -0.027015971019864082, + -0.06445512920618057, + -0.0033724061213433743, + -0.0032050127629190683, + -0.004215530585497618, + 0.0002599329163786024, + -0.008477036841213703, + -0.029378507286310196, + 0.006445516832172871, + 0.03481029346585274, + -0.002031730953603983, + -0.02438466250896454, + -0.045905232429504395, + 0.012610082514584064, + -0.028001751750707626, + -0.008706164546310902, + -0.3432750403881073, + 0.6505179405212402, + -0.6018591523170471, + 0.001458176877349615, + 4.473282638403631e-15, + -0.0027091766241937876, + -0.0008628413779661059, + -8.015421009213708e-13, + 9.690592946143273e-12, + 0.002083059400320053, + -1.454028420503369e-25, + 5.492996255234949e-26, + -1.8528764941831125e-26, + 2.40016846870282e-26, + -9.434496627340981e-26, + 1.9501522882605963e-26, + -0.0016864450881257653, + -0.0003025095211341977, + -7.80575574026443e-05, + 0.010110187344253063, + -5.019148375140503e-05, + -0.00756017817184329, + -0.0026352766435593367, + -0.0001323012838838622, + -0.00013277828111313283, + 0.0013997016940265894, + 0.013818797655403614, + -0.004435352515429258, + 0.03819136694073677, + -0.012245092540979385, + -0.024055836722254753, + -0.024261515587568283, + 0.018154166638851166, + 0.0026419374626129866, + -0.045669712126255035, + -0.011555451899766922, + 0.0028603817336261272, + 0.0028664818964898586, + -0.1831994205713272, + 0.08366275578737259, + 0.04611270874738693, + -0.0650978609919548, + 0.057936109602451324, + -0.023590730503201485, + 0.05671311542391777, + 0.012465589679777622, + 0.01702910102903843, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0029459004290401936, + 0.0029459004290401936, + 0.0029459004290401936, + 0.0029459004290401936, + 0.0029459004290401936, + 0.0029459004290401936, + 0.0029459004290401936, + 0.0029459004290401936, + 0.0029459004290401936, + 0.0029459004290401936, + 0.0029459004290401936, + 0.0029459004290401936, + 0.0029459004290401936 + ], + [ + -0.03873986750841141, + 0.020548559725284576, + -0.01689395308494568, + 0.16900649666786194, + 0.0036870536860078573, + -0.00599060021340847, + -0.22360311448574066, + 0.1224856749176979, + 0.07017803192138672, + -0.04964170604944229, + 0.013603930361568928, + 0.013948674313724041, + -0.0027776346541941166, + 0.00800227839499712, + 0.006198782008141279, + -0.07550498843193054, + -0.13769447803497314, + -0.0023039064835757017, + 0.22853657603263855, + 0.11784907430410385, + 0.003795033320784569, + 0.004285074770450592, + 0.00046139751793816686, + -0.11771513521671295, + 0.1822693794965744, + -0.162026509642601, + -0.006421947851777077, + 2.4001417173180606e-14, + 0.011931059882044792, + 0.003799877827987075, + 3.529946083699609e-12, + -4.267682041092513e-11, + -0.009173702448606491, + -4.6852026882886333e-26, + 1.7872432668687243e-26, + -5.960632999849965e-27, + 7.73438674523941e-27, + -3.040172245555e-26, + 6.284169200835599e-27, + 0.005270111374557018, + 0.005974927451461554, + -4.238692781655118e-06, + -0.045981280505657196, + 0.0012094905832782388, + 0.04555113986134529, + 0.006480079144239426, + 0.0008020701352506876, + 0.0008017318905331194, + -0.00128337147179991, + 0.016078388318419456, + 0.009731477126479149, + -0.09666068851947784, + -0.07071041315793991, + 0.0641632005572319, + 0.09147944301366806, + -0.13968266546726227, + -0.012969260104000568, + 0.15870921313762665, + -0.08387687057256699, + -0.006266266573220491, + -0.006266178097575903, + 0.5340600609779358, + -0.37533625960350037, + -0.35573965311050415, + 0.26093509793281555, + -0.061214085668325424, + 0.09796462953090668, + -0.10497628897428513, + -0.005647444631904364, + -0.03295774385333061, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.01297357864677906, + -0.01297357864677906, + -0.01297357864677906, + -0.01297357864677906, + -0.01297357864677906, + -0.01297357864677906, + -0.01297357864677906, + -0.01297357864677906, + -0.01297357864677906, + -0.01297357864677906, + -0.01297357864677906, + -0.01297357864677906, + -0.01297357864677906 + ], + [ + 0.03626488894224167, + 0.09368588775396347, + 0.007782211061567068, + 0.248029887676239, + -0.01761319302022457, + 0.025640087202191353, + -0.17789001762866974, + -0.06943437457084656, + 0.0873660072684288, + 0.009234270080924034, + -0.0016549559077247977, + -0.003082236973568797, + -0.0014719947939738631, + -0.006738076917827129, + -0.0004907988477498293, + 0.017811955884099007, + -0.018585963174700737, + -0.0013422529445961118, + 0.1377657949924469, + 0.8241116404533386, + 0.00259789964184165, + 0.018430296331644058, + 0.005664434749633074, + -0.04510904476046562, + -0.0029581093695014715, + -0.060577068477869034, + 0.007141350768506527, + -3.4612070154427244e-14, + -0.01326739601790905, + -0.004225464072078466, + -3.925317102609904e-12, + 4.745683013229751e-11, + 0.010201220400631428, + -1.852884572118782e-22, + 7.77549775799846e-23, + -2.5952791718851243e-23, + 3.363975530191239e-23, + -1.3222853676700943e-22, + 2.733218758683346e-23, + -0.004637578502297401, + -0.008450135588645935, + -0.000146148944622837, + 0.05492947995662689, + -0.002520991489291191, + -0.05842091888189316, + -0.002594849793240428, + -0.0008487197337672114, + -0.0008458895608782768, + -0.003829450812190771, + -0.041739922016859055, + -0.0006584539078176022, + 0.02369162254035473, + 0.025258725509047508, + 0.013307256624102592, + -0.0394270084798336, + 0.0806267261505127, + -0.0434923954308033, + 0.03221459314227104, + 0.1505969762802124, + -0.004116200376302004, + -0.004128452390432358, + -0.11071233451366425, + 0.025004800409078598, + 0.32911527156829834, + -0.015578706748783588, + -0.029277071356773376, + -0.05786833167076111, + -0.019272975623607635, + -0.06218598037958145, + -0.04371056705713272, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.014426682144403458, + 0.014426682144403458, + 0.014426682144403458, + 0.014426682144403458, + 0.014426682144403458, + 0.014426682144403458, + 0.014426682144403458, + 0.014426682144403458, + 0.014426682144403458, + 0.014426682144403458, + 0.014426682144403458, + 0.014426682144403458, + 0.014426682144403458 + ], + [ + -0.0074113765731453896, + -0.04827000945806503, + -0.04416186362504959, + 0.49550265073776245, + 0.007433642167598009, + -0.02042396552860737, + 0.02989591844379902, + -0.07436604797840118, + -0.08093081414699554, + 0.00971920881420374, + -0.0027277797926217318, + 0.0026977621018886566, + -0.002009623683989048, + -0.06129171699285507, + -0.027320580556988716, + -0.13519635796546936, + -0.25635164976119995, + 0.0005257180309854448, + 0.4186958968639374, + -0.23261302709579468, + -6.390088674379513e-05, + -0.01122222375124693, + -0.001637016306631267, + 0.008275333791971207, + -0.005104802083224058, + 0.08131929486989975, + -0.007869145832955837, + -4.463096558993129e-14, + 0.014619625173509121, + 0.004656142555177212, + 4.325390740023138e-12, + -5.229368674197765e-11, + -0.011240926571190357, + -6.776263578034403e-20, + 2.752857078576476e-20, + -8.946785505373547e-21, + 1.1507736681837721e-20, + -4.5255051312776144e-20, + 9.35435290281491e-21, + 0.007468376308679581, + -0.0009207710972987115, + 0.0028824550099670887, + -0.06096353009343147, + 0.004407027270644903, + 0.05555590242147446, + -0.003962780348956585, + 0.0008937349775806069, + 0.0008911791373975575, + -0.12448855489492416, + 0.0258108489215374, + 0.00244180578738451, + 0.0824442207813263, + 0.18111318349838257, + -0.16832329332828522, + -0.3159768283367157, + -0.1517036408185959, + -0.03406890481710434, + 0.13882404565811157, + -0.1312544345855713, + -0.006448329426348209, + -0.006464914418756962, + -0.3258637487888336, + -0.07383846491575241, + 0.0236126147210598, + 0.05998911336064339, + 0.1395532786846161, + -0.08956573903560638, + 0.08317936211824417, + -0.06454986333847046, + -0.046274565160274506, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.01589706726372242, + -0.01589706726372242, + -0.01589706726372242, + -0.01589706726372242, + -0.01589706726372242, + -0.01589706726372242, + -0.01589706726372242, + -0.01589706726372242, + -0.01589706726372242, + -0.01589706726372242, + -0.01589706726372242, + -0.01589706726372242, + -0.01589706726372242 + ], + [ + 0.10176406800746918, + -0.009436576627194881, + 0.021634845063090324, + 0.23547038435935974, + -0.01910734362900257, + 0.01491554919630289, + 0.062461093068122864, + -0.3824213743209839, + 0.04946723207831383, + 0.02751065045595169, + -0.008293915539979935, + -0.006610027980059385, + 0.0006741732941009104, + 0.03327750787138939, + -0.0009101527975872159, + -0.012048635631799698, + -0.17655059695243835, + 0.0012954457197338343, + 0.23514029383659363, + -0.22115644812583923, + -0.0023475689813494682, + -0.0027058743871748447, + -0.002740643685683608, + 0.049174606800079346, + 0.03726396709680557, + 0.009235390461981297, + 0.013974259607493877, + 8.729128531115293e-15, + -0.02596222795546055, + -0.008268611505627632, + -7.681234120981983e-12, + 9.286562491217509e-11, + 0.019962163642048836, + -6.776263578034403e-21, + 3.917527381051139e-21, + -1.3400325923359048e-21, + 1.7267395287044453e-21, + -6.786784281450312e-21, + 1.4028627759729893e-21, + -0.014465032145380974, + -0.0107062803581357, + -0.002367513021454215, + 0.09323018789291382, + -0.0038247411139309406, + -0.09137224406003952, + -0.008180082775652409, + -0.0017483910778537393, + -0.0017464312259107828, + 0.18301764130592346, + -0.08081263303756714, + -0.007283939514309168, + 0.07893630862236023, + -0.19719775021076202, + 0.2550489008426666, + 0.32607707381248474, + 0.5374373197555542, + -0.029441235587000847, + -0.12461291998624802, + -0.10446316748857498, + -0.00987103022634983, + -0.009862994775176048, + 0.10356499254703522, + -0.006391823757439852, + 0.14977559447288513, + 0.029187001287937164, + -0.02276194468140602, + 0.04533550888299942, + -0.015044674277305603, + -0.0018706604605540633, + -0.011239442974328995, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.02823077142238617, + 0.02823077142238617, + 0.02823077142238617, + 0.02823077142238617, + 0.02823077142238617, + 0.02823077142238617, + 0.02823077142238617, + 0.02823077142238617, + 0.02823077142238617, + 0.02823077142238617, + 0.02823077142238617, + 0.02823077142238617, + 0.02823077142238617 + ], + [ + -0.04506399855017662, + 0.03038850612938404, + 0.0020648434292525053, + 0.02786046266555786, + -0.000928212481085211, + -0.0008068872266449034, + -0.00737648643553257, + -0.4897036850452423, + 0.040247365832328796, + 0.09447654336690903, + -0.01996106281876564, + -0.012190662324428558, + -0.0018593635177239776, + -0.17787441611289978, + 0.047910988330841064, + 0.011223283596336842, + 0.015932239592075348, + -0.001274626119993627, + -0.000817913212813437, + 0.009598360396921635, + -9.267040695704054e-06, + 0.006525716744363308, + 0.0024713838938623667, + -0.0030612426344305277, + 0.029655691236257553, + -0.027643702924251556, + -0.0015799634857103229, + -1.4496737144042982e-13, + 0.0029353746213018894, + 0.0009348755702376366, + 8.684615526721728e-13, + -1.0499693128829257e-11, + -0.0022569880820810795, + -1.6263032587282567e-19, + 6.776263578034403e-20, + -2.4775713707188285e-20, + 3.143286327701505e-20, + -1.2357582043174702e-19, + 2.5544474688979755e-20, + 0.003443011548370123, + -0.007518699858337641, + 0.003950301092118025, + 0.00021615397417917848, + 0.0009268360445275903, + -0.013073478825390339, + -0.001114154583774507, + 0.0003434676618780941, + 0.0003439660358708352, + -0.1322735846042633, + 0.04348628968000412, + 0.016786782070994377, + 0.04570361226797104, + 0.18634061515331268, + -0.08855321258306503, + -0.18088792264461517, + -0.103233203291893, + 0.08989360928535461, + -0.044718433171510696, + -0.0665007159113884, + -0.0029652516823261976, + -0.002960651181638241, + 0.43151727318763733, + 0.33415094017982483, + -0.1269713193178177, + -0.2537976801395416, + -0.19726304709911346, + -0.3843437433242798, + -0.14548063278198242, + -0.01827973499894142, + 0.005911238957196474, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.0031918634194880724, + -0.0031918634194880724, + -0.0031918634194880724, + -0.0031918634194880724, + -0.0031918634194880724, + -0.0031918634194880724, + -0.0031918634194880724, + -0.0031918634194880724, + -0.0031918634194880724, + -0.0031918634194880724, + -0.0031918634194880724, + -0.0031918634194880724, + -0.0031918634194880724 + ], + [ + 0.040609728544950485, + -0.03234683349728584, + 0.04908207803964615, + -0.11254030466079712, + -0.011657299473881721, + 0.02945661172270775, + -0.015172725543379784, + -0.31915634870529175, + -0.398799329996109, + -0.041314080357551575, + -0.0007517593912780285, + -0.00552559457719326, + -4.568629083223641e-05, + 0.050150152295827866, + -0.06950990110635757, + 0.029937254264950752, + 0.0325583890080452, + 0.002386413747444749, + 0.027389144524931908, + 0.2303663045167923, + -0.0036727949045598507, + -0.011763280257582664, + -0.0034077365417033434, + -0.05020524933934212, + -0.12611375749111176, + -0.01375003345310688, + 0.006551542319357395, + 8.326672684688674e-15, + -0.012171857059001923, + -0.0038765650242567062, + -3.601188791613197e-12, + 4.353813143342933e-11, + 0.009358853101730347, + -1.1926223897340549e-18, + 4.336808689942018e-19, + -1.4230153513872246e-19, + 1.8931186371133613e-19, + -7.449919468897588e-19, + 1.5399290591654695e-19, + 0.003855436807498336, + -0.0051204790361225605, + 0.0019210731843486428, + 0.08128803223371506, + -0.005856159143149853, + -0.09923920035362244, + 0.01653493195772171, + -0.0012609872501343489, + -0.0012514309491962194, + -0.05643944814801216, + -0.08319973945617676, + -0.01153705082833767, + 0.053934287279844284, + 0.0032596802338957787, + -0.013138988055288792, + -0.0967867374420166, + 0.19696864485740662, + -0.041061460971832275, + -0.08266796916723251, + 0.1131858229637146, + -0.0026678701397031546, + -0.002669032895937562, + -0.16714683175086975, + -0.05023930221796036, + -0.6379468441009521, + 0.07106528431177139, + 0.2620592415332794, + 0.053320564329624176, + 0.12381576001644135, + 0.03620174899697304, + 0.05982212722301483, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.013235416263341904, + 0.013235416263341904, + 0.013235416263341904, + 0.013235416263341904, + 0.013235416263341904, + 0.013235416263341904, + 0.013235416263341904, + 0.013235416263341904, + 0.013235416263341904, + 0.013235416263341904, + 0.013235416263341904, + 0.013235416263341904, + 0.013235416263341904 + ], + [ + -0.012287391349673271, + -0.005543853156268597, + -0.011578517965972424, + 0.11926445364952087, + 0.009624007157981396, + -0.011686744168400764, + 0.010136974044144154, + -0.01572299376130104, + 0.008071083575487137, + 0.004003717564046383, + -0.0002654132549650967, + -0.0016813650727272034, + -0.0006258104695007205, + -0.03411512076854706, + -0.011371688917279243, + -0.01359561551362276, + 0.047572534531354904, + -0.0005555413081310689, + -0.019891005009412766, + -0.09237892925739288, + -0.017581794410943985, + 0.0029136824887245893, + -0.013698473572731018, + -0.49930453300476074, + -0.6951835751533508, + -0.4582253694534302, + -0.00208265264518559, + 2.2877533201182132e-14, + 0.003869489533826709, + 0.0012323783012107015, + 1.1446399383885364e-12, + -1.3841039425699364e-11, + -0.002975222421810031, + -2.0816681711721685e-17, + 8.673617379884035e-18, + -3.577867169202165e-18, + 4.7027269231558755e-18, + -1.8517834292873514e-17, + 3.828271284234217e-18, + -0.003225581953302026, + 0.004789822734892368, + -0.0008988353656604886, + -0.03184366598725319, + 0.002697072457522154, + 0.044907137751579285, + -0.00819107610732317, + 0.0005223167245276272, + 0.0005169166252017021, + 0.06333019584417343, + 0.03566708788275719, + 0.002108166227117181, + -0.020302344113588333, + -0.051287148147821426, + 0.024393508210778236, + 0.07628825306892395, + -0.05903024598956108, + 0.022380834445357323, + 0.026154043152928352, + -0.028623171150684357, + -0.0007457230240106583, + -0.0007493605953641236, + 0.0033974123653024435, + 0.024677041918039322, + 0.06041742488741875, + -0.015699097886681557, + -0.008956809528172016, + -0.01775992102921009, + 0.003968429751694202, + 0.01060386560857296, + 0.019731389358639717, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.00420759990811348, + -0.00420759990811348, + -0.00420759990811348, + -0.00420759990811348, + -0.00420759990811348, + -0.00420759990811348, + -0.00420759990811348, + -0.00420759990811348, + -0.00420759990811348, + -0.00420759990811348, + -0.00420759990811348, + -0.00420759990811348, + -0.00420759990811348 + ], + [ + 0.1167735680937767, + -0.0026284425985068083, + 0.04159048944711685, + -0.07246333360671997, + -0.015176157467067242, + 0.039662230759859085, + 0.009262660518288612, + 0.28717902302742004, + 0.2135930210351944, + 0.13745661079883575, + 0.008129176683723927, + 0.004760713316500187, + 0.0013682297430932522, + 0.19716985523700714, + 0.008519189432263374, + 0.04918414726853371, + -0.033001482486724854, + -0.0001666541793383658, + 0.020796354860067368, + -0.07587983459234238, + -0.002329477109014988, + 0.013439112342894077, + -0.0015599658945575356, + -0.07100134342908859, + -0.08064577728509903, + -0.10335596650838852, + 0.01071583665907383, + -8.99419427824455e-14, + -0.01990857534110546, + -0.006340600084513426, + -5.890204990421921e-12, + 7.121198075665802e-11, + 0.015307559631764889, + -3.903127820947816e-18, + 1.5178830414797062e-18, + -5.692061405548898e-19, + 7.064254780100865e-19, + -2.77678575933641e-18, + 5.738648217647885e-19, + 0.0055471742525696754, + -0.02459133416414261, + 0.0020830321591347456, + 0.13443273305892944, + -0.009510020725429058, + -0.17681492865085602, + 0.012332836166024208, + -0.0022072079591453075, + -0.00218558288179338, + -0.3447871506214142, + -0.18820308148860931, + -0.02358957752585411, + 0.17140012979507446, + 0.13179215788841248, + -0.1008901596069336, + -0.4748777151107788, + 0.42549586296081543, + -0.02377188578248024, + -0.13308212161064148, + -0.03911377489566803, + -0.0012310842284932733, + -0.0012206579558551311, + 0.149983748793602, + -0.07828334718942642, + -0.0018978137522935867, + 0.009343639016151428, + -0.11209892481565475, + 0.10382715612649918, + -0.10003463178873062, + -0.0032108461018651724, + -0.044905878603458405, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.021648157387971878, + 0.021648157387971878, + 0.021648157387971878, + 0.021648157387971878, + 0.021648157387971878, + 0.021648157387971878, + 0.021648157387971878, + 0.021648157387971878, + 0.021648157387971878, + 0.021648157387971878, + 0.021648157387971878, + 0.021648157387971878, + 0.021648157387971878 + ], + [ + -0.01844550482928753, + 0.005479452200233936, + -0.03967628628015518, + -0.552947998046875, + -0.0024142316542565823, + 0.04137395694851875, + -0.009799732826650143, + -0.47835397720336914, + 0.1521158665418625, + -0.14796440303325653, + -0.0038104390259832144, + -0.00394020788371563, + -0.0010882854694500566, + -0.04244919493794441, + 0.026018723845481873, + -0.09508567303419113, + -0.12757815420627594, + -0.0040132938884198666, + 0.13439129292964935, + -0.02426212653517723, + 0.0013005913933739066, + 0.0031434609554708004, + 0.0005479370593093336, + -0.019948076456785202, + -0.04411860182881355, + -0.05941275134682655, + -0.012827462516725063, + -1.798006188380441e-13, + 0.023832151666283607, + 0.007590204477310181, + 7.050943162667522e-12, + -8.524653205554955e-11, + -0.018324369564652443, + -1.3877787807814457e-17, + 4.336808689942018e-18, + -2.168404344971009e-18, + 3.0086610286472748e-18, + -1.1834744339037084e-17, + 2.445384118723165e-18, + 0.02920808084309101, + -0.021522052586078644, + 0.005974951200187206, + -0.056029871106147766, + -0.002312740543857217, + -0.022361189126968384, + 0.04598185420036316, + 2.0135636077611707e-05, + 3.396855026949197e-05, + -0.13547568023204803, + -0.037273161113262177, + 0.022378336638212204, + 0.0425889678299427, + 0.02865704335272312, + -0.0055973767302930355, + -0.12785425782203674, + -0.09686237573623657, + -0.09161006659269333, + 0.2264249324798584, + 0.031016835942864418, + -0.009458070620894432, + -0.00947069562971592, + -0.06768447160720825, + -0.21477989852428436, + 0.27574923634529114, + 0.26245132088661194, + -0.06717866659164429, + 0.1818358302116394, + -0.02238762192428112, + 0.055283598601818085, + 0.03290458768606186, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.025914570316672325, + -0.025914570316672325, + -0.025914570316672325, + -0.025914570316672325, + -0.025914570316672325, + -0.025914570316672325, + -0.025914570316672325, + -0.025914570316672325, + -0.025914570316672325, + -0.025914570316672325, + -0.025914570316672325, + -0.025914570316672325, + -0.025914570316672325 + ], + [ + 0.012080715037882328, + 0.04073513299226761, + 0.04983486607670784, + 0.4658098518848419, + 0.02782825566828251, + -0.011662838980555534, + -0.016657283529639244, + -0.32424479722976685, + 0.07656975835561752, + -0.07280672341585159, + 0.0005104782758280635, + -0.0051629189401865005, + 0.0007412295672111213, + 0.056147489696741104, + 0.007504662033170462, + 0.09457750618457794, + 0.3897091746330261, + 0.003637465415522456, + -0.4621225893497467, + -0.0653737410902977, + -0.0012348557356745005, + -0.0019212424522265792, + 0.003851342247799039, + 0.03187619522213936, + 0.06473001092672348, + 0.027584116905927658, + 0.0010352153331041336, + -1.0230705171920818e-13, + -0.00192329625133425, + -0.0006125335930846632, + -5.692113447253178e-13, + 6.879552483241014e-12, + 0.0014788161497563124, + -2.0816681711721685e-17, + 1.734723475976807e-18, + -1.734723475976807e-18, + 3.5236570605778894e-18, + -1.3660947373317356e-17, + 2.8223137802513287e-18, + -0.009487379342317581, + -0.009472480975091457, + 0.002114440780133009, + -0.007429132238030434, + 0.003979143686592579, + 0.025821082293987274, + -0.03114243969321251, + 0.0009214507299475372, + 0.0009191093849949539, + -0.17727792263031006, + 0.03653412684798241, + 0.009314650669693947, + 0.008144482970237732, + -0.06325652450323105, + -0.0664687380194664, + -0.12361874431371689, + -0.0782686322927475, + -0.025080524384975433, + -0.07591167092323303, + -0.028051625937223434, + 0.005946031771600246, + 0.005955663044005632, + 0.013403943739831448, + -0.17109397053718567, + 0.07960136234760284, + 0.2275892198085785, + -0.030918190255761147, + 0.2754473090171814, + -0.007204721681773663, + 0.1532014012336731, + 0.11608260869979858, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0020913498010486364, + 0.0020913498010486364, + 0.0020913498010486364, + 0.0020913498010486364, + 0.0020913498010486364, + 0.0020913498010486364, + 0.0020913498010486364, + 0.0020913498010486364, + 0.0020913498010486364, + 0.0020913498010486364, + 0.0020913498010486364, + 0.0020913498010486364, + 0.0020913498010486364 + ], + [ + -0.047645676881074905, + 0.17276465892791748, + 0.07746634632349014, + -0.051822636276483536, + -0.03549569100141525, + 0.0587063692510128, + -0.005498088896274567, + 0.008229561150074005, + -0.6670181751251221, + 0.3084486126899719, + -0.002715971088036895, + -0.0016404690686613321, + 0.0006188888219185174, + -0.02043282613158226, + -0.0007555370684713125, + 0.021392084658145905, + -0.006417661905288696, + -0.00088893884094432, + 0.0935995876789093, + -0.031476184725761414, + 0.0005724814254790545, + 0.0072382730431854725, + 0.0048411074094474316, + -0.022989118471741676, + -0.0020049537997692823, + 0.009525508619844913, + -0.005384870804846287, + 5.70168912084057e-13, + 0.010004209354519844, + 0.0031862047035247087, + 2.959577027894511e-12, + -3.578476404086928e-11, + -0.007692159153521061, + 8.326672684688674e-17, + 2.7755575615628914e-17, + 5.551115123125783e-17, + 0.0, + 0.0, + 3.469446951953614e-18, + 0.041818659752607346, + 0.05930309370160103, + 0.00662911357358098, + 0.10112112760543823, + -0.0128538953140378, + -0.11150791496038437, + 0.09418197721242905, + -0.00025929667754098773, + -0.0002441807009745389, + -0.18996472656726837, + 0.06393135339021683, + -0.04239130765199661, + -0.11669979244470596, + -0.055167414247989655, + -0.09337533265352249, + 0.045928001403808594, + -0.12353184074163437, + 0.0584062822163105, + -0.24683724343776703, + -0.0557977631688118, + -0.002948769833892584, + -0.0029346132650971413, + 0.17098788917064667, + -0.071454718708992, + 0.32386457920074463, + 0.10113218426704407, + -0.08114884793758392, + 0.15626491606235504, + -0.03730236738920212, + -0.14009691774845123, + -0.10268169641494751, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.010878362692892551, + -0.010878362692892551, + -0.010878362692892551, + -0.010878362692892551, + -0.010878362692892551, + -0.010878362692892551, + -0.010878362692892551, + -0.010878362692892551, + -0.010878362692892551, + -0.010878362692892551, + -0.010878362692892551, + -0.010878362692892551, + -0.010878362692892551 + ], + [ + -0.033873300999403, + 0.19029556214809418, + 0.03467681258916855, + 0.07782568782567978, + -0.044701121747493744, + 0.15786677598953247, + 0.012276668101549149, + 0.13741880655288696, + -0.16488489508628845, + -0.7493964433670044, + 0.007957477122545242, + 0.0032768698874861, + -0.0010665848385542631, + -0.15725193917751312, + 0.11266429722309113, + -0.06694763153791428, + -0.04494728893041611, + -0.008662734180688858, + 0.01658461056649685, + -0.05643733963370323, + -0.00034037508885376155, + 0.01169061753898859, + 0.00504410732537508, + -0.013390506617724895, + -0.003448465373367071, + -0.0016607752768322825, + -0.007830173708498478, + 3.558877368151081e-13, + 0.014547290280461311, + 0.004633115138858557, + 4.304195888593654e-12, + -5.20347515076125e-11, + -0.011185298673808575, + 0.0, + -2.220446049250313e-16, + -2.220446049250313e-16, + -5.551115123125783e-17, + 0.0, + -4.163336342344337e-17, + 0.06209897622466087, + 0.02824016660451889, + 0.00463215634226799, + 0.11065955460071564, + -0.02082686312496662, + -0.20597393810749054, + 0.14684753119945526, + -0.0022583995014429092, + -0.002238065702840686, + -0.059630610048770905, + -0.1283375322818756, + -0.04164886474609375, + -0.018642572686076164, + 0.14037290215492249, + -0.04845475032925606, + 0.04994533583521843, + 0.07166752219200134, + 0.2152702808380127, + -0.09829138964414597, + 0.0564960241317749, + 0.008290666155517101, + 0.008273114450275898, + 0.04742055386304855, + -0.015530113130807877, + 0.08105827122926712, + -0.024949397891759872, + -0.0621139332652092, + -0.10306607931852341, + -0.033070582896471024, + 0.1555694192647934, + 0.16475728154182434, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.015818411484360695, + -0.015818411484360695, + -0.015818411484360695, + -0.015818411484360695, + -0.015818411484360695, + -0.015818411484360695, + -0.015818411484360695, + -0.015818411484360695, + -0.015818411484360695, + -0.015818411484360695, + -0.015818411484360695, + -0.015818411484360695, + -0.015818411484360695 + ], + [ + 0.1121126338839531, + 0.23375889658927917, + -0.1020946130156517, + 0.031075183302164078, + 0.0011069843312725425, + -0.02522912807762623, + -0.015518740750849247, + 0.022285528481006622, + -0.32279425859451294, + 0.12317586690187454, + -3.298587034805678e-05, + 0.0016059948829934, + -0.0006927672657184303, + 0.27338701486587524, + 0.11061421036720276, + -0.0766015276312828, + 0.16975444555282593, + -0.0021187912207096815, + -0.09255698323249817, + -0.033366862684488297, + -0.0008122186991386116, + 0.0276947021484375, + 0.010092206299304962, + -0.021570680662989616, + 0.03672517463564873, + 0.004275837447494268, + -0.008004420436918736, + -1.2906342661267445e-13, + 0.014871124178171158, + 0.004736258182674646, + 4.399758335438264e-12, + -5.319331086717227e-11, + -0.011434286832809448, + 0.0, + 6.938893903907228e-18, + -5.551115123125783e-17, + 0.0, + -2.7755575615628914e-17, + 0.0, + 0.020064612850546837, + -0.06078912690281868, + 0.01200706884264946, + -0.1698678731918335, + 0.008462205529212952, + 0.1258004903793335, + 0.009692210704088211, + 0.0004691976064350456, + 0.0004581625107675791, + 0.11805619299411774, + -0.14785297214984894, + 0.04754847288131714, + 0.20698225498199463, + 0.3382856845855713, + 0.10625170171260834, + 0.05739914998412132, + 0.19593870639801025, + 0.09487774968147278, + 0.5709800124168396, + 0.0004136768984608352, + -0.015619758516550064, + -0.015640566125512123, + 0.06981039047241211, + 0.008991931565105915, + 0.06876417249441147, + -0.03453211858868599, + -0.05004438757896423, + -0.02236815169453621, + -0.035210687667131424, + 0.07307492941617966, + 0.0969347432255745, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.016170542687177658, + -0.016170542687177658, + -0.016170542687177658, + -0.016170542687177658, + -0.016170542687177658, + -0.016170542687177658, + -0.016170542687177658, + -0.016170542687177658, + -0.016170542687177658, + -0.016170542687177658, + -0.016170542687177658, + -0.016170542687177658, + -0.016170542687177658 + ], + [ + 0.018567614257335663, + 0.10768173635005951, + 0.07341843843460083, + -0.009212891571223736, + 0.031797144562006, + -0.05221332982182503, + 0.00015834419173188508, + -0.06625976413488388, + 0.13269560039043427, + 0.17144878208637238, + 0.00010825808567460626, + -0.0002686611842364073, + 0.0005228295340202749, + 0.15944735705852509, + 0.30007514357566833, + 0.10756872594356537, + -0.384613573551178, + -0.003976711072027683, + -0.0760759487748146, + 0.034052662551403046, + -0.0012598742032423615, + 0.016978001222014427, + -0.0039202747866511345, + -0.03740031644701958, + -0.0035226198378950357, + -0.027665434405207634, + 0.016846362501382828, + -6.97688434803112e-13, + -0.031298402696847916, + -0.009968116879463196, + -9.260203714944737e-12, + 1.1195235710692586e-10, + 0.02406509965658188, + -1.3877787807814457e-16, + 2.7755575615628914e-17, + 4.163336342344337e-17, + 0.0, + 1.1102230246251565e-16, + 2.220446049250313e-16, + -0.04520653188228607, + -0.012820528820157051, + 0.008623017929494381, + 0.03807428106665611, + 0.014918360859155655, + 0.014380100183188915, + -0.09480663388967514, + 0.0009924446931108832, + 0.0009499170701019466, + 0.11206461489200592, + 0.15448834002017975, + 0.14106814563274384, + -0.09189696609973907, + 0.5102449059486389, + -0.1036849394440651, + 0.18671394884586334, + -0.08115223050117493, + 0.24071809649467468, + -0.2797788679599762, + 0.03952433168888092, + 0.0051323119550943375, + 0.005154304672032595, + -0.09536104649305344, + -0.06162793189287186, + -0.060468245297670364, + 0.09259721636772156, + -0.012047593481838703, + 0.15063539147377014, + 0.013508842326700687, + 0.17489172518253326, + 0.13786926865577698, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.034033212810754776, + 0.034033212810754776, + 0.034033212810754776, + 0.034033212810754776, + 0.034033212810754776, + 0.034033212810754776, + 0.034033212810754776, + 0.034033212810754776, + 0.034033212810754776, + 0.034033212810754776, + 0.034033212810754776, + 0.034033212810754776, + 0.034033212810754776 + ], + [ + 0.03659084811806679, + -0.2517549991607666, + -0.04501069709658623, + -0.016086647287011147, + 0.0637841671705246, + -0.21012866497039795, + -0.0019806730560958385, + 0.08114200085401535, + -0.21591703593730927, + 0.014751730486750603, + 0.00196798425167799, + 0.0018948279321193695, + 0.00023023184621706605, + -0.019089417532086372, + -0.10204039514064789, + 0.021536584943532944, + -0.2302330881357193, + 0.010065769776701927, + 0.06416916847229004, + 0.07692210376262665, + 0.0013369250809773803, + -0.0207839235663414, + -0.007917415350675583, + 0.022801263257861137, + -0.009719976224005222, + 0.018322179093956947, + 0.016218509525060654, + -4.345482307321902e-16, + -0.03013257123529911, + -0.009596826508641243, + -8.91513252110343e-12, + 1.0778286596568876e-10, + 0.023168690502643585, + -2.220446049250313e-16, + 1.1102230246251565e-16, + 5.551115123125783e-17, + 0.0, + -6.938893903907228e-18, + 2.7755575615628914e-17, + -0.09143969416618347, + 0.030676964670419693, + -0.014072194695472717, + -0.03485393896698952, + 0.021812278777360916, + 0.24803470075130463, + -0.19588451087474823, + 0.0018950409721583128, + 0.001864751917310059, + -0.10601191967725754, + 0.008327426388859749, + -0.1255192905664444, + 0.030301278457045555, + -0.23092561960220337, + -0.059996724128723145, + -0.0986955538392067, + 0.02599073201417923, + -0.025986429303884506, + 0.014730622060596943, + 0.04511631652712822, + -0.0004838672757614404, + -0.0004658239195123315, + 0.12259037792682648, + 0.06726976484060287, + 0.13288411498069763, + -0.050662316381931305, + -0.05764126777648926, + -0.002991290530189872, + -0.029742583632469177, + 0.4935746192932129, + 0.4927484691143036, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.03276551142334938, + 0.03276551142334938, + 0.03276551142334938, + 0.03276551142334938, + 0.03276551142334938, + 0.03276551142334938, + 0.03276551142334938, + 0.03276551142334938, + 0.03276551142334938, + 0.03276551142334938, + 0.03276551142334938, + 0.03276551142334938, + 0.03276551142334938 + ], + [ + -0.12252353131771088, + 0.002171361818909645, + 0.03746799752116203, + 0.08480792492628098, + -0.08584237098693848, + 0.36971917748451233, + 0.043043140321969986, + 0.06109200790524483, + 0.11560715734958649, + 0.336473673582077, + -0.0007580149103887379, + 0.0015652759466320276, + 0.0004208627506159246, + -0.04105248674750328, + -0.008616267703473568, + -0.08610835671424866, + -0.02855069190263748, + 1.678122134762816e-05, + 0.015859071165323257, + 0.00884278118610382, + -0.006794125307351351, + -0.01974048651754856, + -0.004769384860992432, + 0.00658695213496685, + 0.00449094595387578, + 0.010124473832547665, + -0.033137377351522446, + 6.939449015419541e-13, + 0.061564818024635315, + 0.01960751973092556, + 1.821456874218086e-11, + -2.202143467577855e-10, + -0.04733675345778465, + 2.7755575615628914e-17, + -5.551115123125783e-17, + 6.938893903907228e-17, + -1.3877787807814457e-17, + -1.214306433183765e-17, + 0.0, + 0.1562410444021225, + -0.0255763977766037, + 0.011446455493569374, + 0.03651977702975273, + -0.040420424193143845, + -0.3608991503715515, + 0.3325541615486145, + -0.0028924623038619757, + -0.002818604465574026, + 0.01453423872590065, + -0.04139115288853645, + 0.09345021843910217, + -0.019490839913487434, + -0.007438148837536573, + 0.14016093313694, + 0.05417788401246071, + -0.11573690176010132, + -0.25438791513442993, + 0.05606212839484215, + -0.0010782849276438355, + -0.014821265824139118, + -0.01480986550450325, + -0.036578040570020676, + 0.08455071598291397, + -0.053898099809885025, + -0.05547014996409416, + 0.03183260187506676, + 0.020828265696763992, + 0.016249436885118484, + 0.34100547432899475, + 0.32648319005966187, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.06694426387548447, + -0.06694426387548447, + -0.06694426387548447, + -0.06694426387548447, + -0.06694426387548447, + -0.06694426387548447, + -0.06694426387548447, + -0.06694426387548447, + -0.06694426387548447, + -0.06694426387548447, + -0.06694426387548447, + -0.06694426387548447, + -0.06694426387548447 + ], + [ + -0.0019459235481917858, + 0.04749950394034386, + 0.07475372403860092, + -0.11582078784704208, + -0.008334175683557987, + -0.03284887969493866, + -0.01967306062579155, + 0.02714802511036396, + 0.09593494981527328, + 0.028080442920327187, + 0.0023331630509346724, + 0.0008350192219950259, + 0.0006662193336524069, + -0.004446700215339661, + -0.04207743704319, + -0.05167990177869797, + 0.650263786315918, + -0.016838116571307182, + 0.5590289235115051, + 0.007066413294523954, + 0.00050199223915115, + 0.012199868448078632, + 0.007459837477654219, + 0.025308923795819283, + -0.0014305911026895046, + 0.01347116008400917, + 0.01206381618976593, + -6.287461870591038e-13, + -0.022412750869989395, + -0.00713812792673707, + -6.6314731483885225e-12, + 8.016878827454832e-11, + 0.017233015969395638, + 1.3877787807814457e-17, + 6.938893903907228e-18, + 0.0, + 0.0, + -1.1102230246251565e-16, + 1.1102230246251565e-16, + -0.04285592958331108, + 0.0006576204905286431, + 0.002395393792539835, + 0.020909946411848068, + 0.012827349826693535, + 0.028940457850694656, + -0.08596430718898773, + 0.00038366595981642604, + 0.0003542017366271466, + 0.1423312872648239, + 0.08750532567501068, + 0.08506686985492706, + -0.06912636756896973, + 0.1393153816461563, + -0.0715179443359375, + -0.00300388946197927, + 0.0071945819072425365, + 0.11854808777570724, + -0.165487140417099, + -0.18894405663013458, + -0.015626830980181694, + -0.015630489215254784, + -0.03063170425593853, + -0.013961059041321278, + 0.0016403717454522848, + 0.027179889380931854, + -0.015475877560675144, + 0.047447048127651215, + 0.012618623673915863, + 0.17045649886131287, + 0.1737082451581955, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.02437114156782627, + 0.02437114156782627, + 0.02437114156782627, + 0.02437114156782627, + 0.02437114156782627, + 0.02437114156782627, + 0.02437114156782627, + 0.02437114156782627, + 0.02437114156782627, + 0.02437114156782627, + 0.02437114156782627, + 0.02437114156782627, + 0.02437114156782627 + ], + [ + 0.001850979751907289, + -0.16534170508384705, + -0.00940654892474413, + 0.017297610640525818, + -0.012139360420405865, + 0.07893053442239761, + 0.016939369961619377, + -0.07486433535814285, + 0.11080145835876465, + 0.10536069422960281, + -0.0012941377935931087, + -0.001456167665310204, + -3.1048642995301634e-05, + 0.2768915891647339, + -0.20840243995189667, + -0.12080598622560501, + -0.026134595274925232, + 0.013565810397267342, + 0.006702611222863197, + 0.04311727359890938, + 0.008270415477454662, + -0.04076939448714256, + -0.015298541635274887, + 0.02124129980802536, + 0.0012026607291772962, + 0.015099829062819481, + -0.02326783537864685, + -2.058303614355106e-14, + 0.04322844743728638, + 0.013767640106379986, + 1.2789437911497892e-11, + -1.5462656155484922e-10, + -0.03323804959654808, + -7.112366251504909e-17, + 1.0408340855860843e-17, + 4.163336342344337e-17, + -1.3877787807814457e-17, + -8.326672684688674e-17, + 6.938893903907228e-17, + 0.02460361085832119, + 0.1384773999452591, + -0.009262765757739544, + 0.08498556166887283, + -0.01172439381480217, + -0.09836269170045853, + 0.0790649875998497, + 0.00014299539907369763, + 9.435058746021241e-05, + -0.05239494517445564, + 0.012109453789889812, + -0.10025616735219955, + -0.029842671006917953, + -0.2126791775226593, + 0.0412287674844265, + -0.0369078665971756, + -0.05136755108833313, + 0.797477126121521, + 0.10827409476041794, + 0.03834003955125809, + 0.010656156577169895, + 0.010662115179002285, + -0.05603175610303879, + 0.01226990856230259, + -0.014617644250392914, + 0.0042006708681583405, + -0.014751032926142216, + 0.0014096983941271901, + 0.05417357757687569, + -0.0036114982794970274, + 0.009028423577547073, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.04700568690896034, + -0.04700568690896034, + -0.04700568690896034, + -0.04700568690896034, + -0.04700568690896034, + -0.04700568690896034, + -0.04700568690896034, + -0.04700568690896034, + -0.04700568690896034, + -0.04700568690896034, + -0.04700568690896034, + -0.04700568690896034, + -0.04700568690896034 + ] + ], + "encoded_input_dim": 140, + "mean": [ + -0.009798124432563782, + 0.05137821286916733, + 0.06156044080853462, + 0.7411994338035583, + 0.10057990252971649, + 0.032337773591279984, + 0.08269896358251572, + 0.0006070384988561273, + 0.017993291839957237, + 0.07773640006780624, + -1.3279248476028442, + -0.4710727035999298, + -0.34919124841690063, + -0.01877165213227272, + -0.004584182519465685, + -0.07146554440259933, + 0.7753992676734924, + 0.00030092295492067933, + 0.1989821046590805, + 0.20095480978488922, + -0.0006528590456582606, + 0.005675423424690962, + 0.0032932220492511988, + 0.03019251488149166, + -0.022124359384179115, + -0.005906751379370689, + -0.19088762998580933, + 2.0268739486274667e-13, + -0.7879482507705688, + 0.7490668892860413, + 3.896688874349685e-11, + -4.711071532881306e-10, + 0.6058492660522461, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.5270761251449585, + 0.055747177451848984, + 0.007260707672685385, + 0.5600981712341309, + 0.012609828263521194, + 0.32732704281806946, + 0.11341477185487747, + 0.004221478942781687, + 0.004223855212330818, + 0.015596347860991955, + -0.039205241948366165, + 0.01386436726897955, + 0.0015060961013659835, + -0.01569386012852192, + 0.3965786397457123, + 0.03663915768265724, + -1.6119304895401, + 0.011917737312614918, + 2.071789503097534, + 0.1707562953233719, + 0.0195054542273283, + 0.019512077793478966, + -0.003088352968916297, + 0.3037094473838806, + -0.015200544148683548, + 0.10040655732154846, + -0.029771316796541214, + 0.1618170440196991, + -0.09639980643987656, + 0.006122836843132973, + -0.008711924776434898, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.8567857146263123, + 0.8567857146263123, + 0.8567857146263123, + 0.8567857146263123, + 0.8567857146263123, + 0.8567857146263123, + 0.8567857146263123, + 0.8567857146263123, + 0.8567857146263123, + 0.8567857146263123, + 0.8567857146263123, + 0.8567857146263123, + 0.8567857146263123 + ], + "method": "train_split_pca_standardized", + "output_dim": 32, + "raw_input_dim": 70, + "scale": [ + 7.789134502410889, + 7.01206636428833, + 4.7303786277771, + 2.2875277996063232, + 1.554949164390564, + 1.471292495727539, + 1.0825825929641724, + 0.7508261203765869, + 0.7088286876678467, + 0.5949841737747192, + 0.5041103363037109, + 0.49374377727508545, + 0.44354283809661865, + 0.40395745635032654, + 0.3867206573486328, + 0.31073999404907227, + 0.2897527813911438, + 0.2838159203529358, + 0.25809574127197266, + 0.24356654286384583, + 0.22696244716644287, + 0.22063840925693512, + 0.20554044842720032, + 0.187404602766037, + 0.1526772826910019, + 0.15083047747612, + 0.14299766719341278, + 0.1399637907743454, + 0.13358847796916962, + 0.1275552362203598, + 0.10995583981275558, + 0.09880612045526505 + ], + "state_vectorization": "right_zero_pad_plus_validity_mask" + }, + "trainable_parameters": 99880992, + "training_losses": [ + 1.2670934200286865, + 0.520173192024231, + 0.7244012951850891, + 0.861823558807373, + 0.7761167883872986, + 0.5301089882850647, + 0.4306434988975525, + 0.45650750398635864, + 0.35851266980171204, + 0.4026678800582886, + 0.4129319190979004, + 0.6854279637336731, + 0.3484633266925812, + 0.3139687776565552, + 0.2927967309951782, + 0.5260645151138306, + 0.5035329461097717, + 0.6627745032310486, + 0.41149747371673584, + 0.3834378123283386, + 0.4975249469280243, + 0.4423580765724182, + 0.664903998374939, + 0.3410729765892029, + 1.3096120357513428, + 0.3992670178413391, + 0.36001187562942505, + 0.25928154587745667, + 0.6334152221679688, + 0.6129553318023682, + 0.19171898066997528, + 0.710078775882721, + 0.6200621128082275, + 0.16084426641464233, + 0.5018320083618164, + 0.5223394632339478, + 0.299043208360672, + 0.29888027906417847, + 0.4238058924674988, + 0.36750948429107666, + 0.24303552508354187, + 0.612612247467041, + 0.41708633303642273, + 0.25748211145401, + 0.36406829953193665, + 0.40093785524368286, + 0.47529518604278564, + 0.42138320207595825, + 0.2496960163116455, + 0.4959806799888611, + 0.2552245259284973, + 0.5733389854431152, + 0.2546464800834656, + 0.4206914007663727, + 0.4887707233428955, + 0.29276132583618164, + 0.7429209351539612, + 0.5279264450073242, + 0.24885448813438416, + 0.32807785272598267, + 0.394634485244751, + 0.3797350525856018, + 0.2740103602409363, + 0.38176020979881287, + 0.4427236020565033, + 0.3789430856704712, + 0.3272364139556885, + 0.41950494050979614, + 0.22516848146915436, + 0.39976516366004944, + 0.33316707611083984, + 0.33998414874076843, + 0.34504932165145874, + 0.4812081456184387, + 0.29870060086250305, + 0.5794742107391357, + 0.28276145458221436, + 0.3031766414642334, + 0.32576778531074524, + 0.33173513412475586, + 0.2203328013420105, + 0.6655448079109192, + 0.29436469078063965, + 0.607647180557251, + 0.34380489587783813, + 0.3207570016384125, + 0.3339797854423523, + 0.2903817892074585, + 0.3986304998397827, + 0.31699126958847046, + 0.568588137626648, + 0.1940593123435974, + 0.38046443462371826, + 0.2499038279056549, + 0.469354510307312, + 0.33222997188568115, + 0.25105851888656616, + 0.22275134921073914, + 0.34570205211639404, + 0.4159901738166809, + 0.26984483003616333, + 0.5275513529777527, + 0.23384574055671692, + 0.1701635718345642, + 0.27213776111602783, + 0.301037460565567, + 0.21793141961097717, + 0.2538028955459595, + 0.22929374873638153, + 0.2983025014400482, + 0.6730409860610962, + 0.3952772617340088, + 0.39058592915534973, + 0.5902495384216309, + 0.33566272258758545, + 0.4916001856327057, + 0.4371281564235687, + 0.2534796893596649, + 0.3303525149822235, + 0.3797616958618164, + 0.33454248309135437, + 0.31265950202941895, + 0.5155372023582458, + 0.2868397831916809, + 0.24798643589019775, + 0.44390884041786194, + 0.36383920907974243, + 0.3922899067401886, + 0.12758809328079224, + 0.5399858951568604, + 0.20339733362197876, + 0.2622903883457184, + 0.3509126901626587, + 0.40092164278030396, + 0.37563592195510864, + 0.24361900985240936, + 0.29325976967811584, + 0.2316695600748062, + 0.20290926098823547, + 0.2634566128253937, + 0.22562099993228912, + 0.5719513297080994, + 0.6145126819610596, + 0.1648721694946289, + 0.27501511573791504, + 0.7239519357681274, + 0.4555286765098572, + 0.29711103439331055, + 0.6057884693145752, + 0.41811561584472656, + 0.3496985137462616, + 0.36383548378944397, + 0.3423958718776703, + 0.275688111782074, + 0.20015490055084229, + 0.31119781732559204, + 0.19978772103786469, + 0.3615823984146118, + 0.26866990327835083, + 0.2021978795528412, + 0.2203378677368164, + 0.2886856496334076, + 0.48434948921203613, + 0.44793403148651123, + 0.21035225689411163, + 0.15287461876869202, + 0.2884337306022644, + 0.26935410499572754, + 0.4560839831829071, + 0.25576457381248474, + 0.22952687740325928, + 0.4979139268398285, + 0.20432327687740326, + 0.274995356798172, + 0.2464819848537445, + 0.1309635043144226, + 0.19330325722694397, + 0.25416234135627747, + 0.2687529921531677, + 0.3750022053718567, + 0.32664382457733154, + 0.4079568386077881, + 0.3517562448978424, + 0.3962664008140564, + 0.3373618721961975, + 0.3934488892555237, + 0.3961174786090851, + 0.40817081928253174, + 0.1740289330482483, + 0.1982683390378952, + 0.27873602509498596, + 0.28878647089004517, + 0.22901654243469238, + 0.27682286500930786, + 0.24326203763484955, + 0.438418447971344, + 0.3745250701904297, + 0.20524221658706665, + 0.20268017053604126, + 0.17775800824165344, + 0.3321373760700226, + 0.27339112758636475, + 0.19515401124954224, + 0.25285181403160095, + 0.20698505640029907, + 0.22119322419166565, + 0.24854783713817596, + 0.31379565596580505, + 0.38473644852638245, + 0.2652498781681061, + 0.3487132787704468, + 0.3282003700733185, + 0.3395761549472809, + 0.3286164402961731, + 0.2916727662086487, + 0.2860058546066284, + 0.6056867837905884, + 0.3148811459541321, + 0.31247377395629883, + 0.25620463490486145, + 0.10684531927108765, + 0.2773495018482208, + 0.20881590247154236, + 0.318372905254364, + 0.16619619727134705, + 0.22899144887924194, + 0.37092524766921997, + 0.21344444155693054, + 0.2891526222229004, + 0.3251163065433502, + 0.14318744838237762, + 0.2454303354024887, + 0.20798680186271667, + 0.37544751167297363, + 0.3386860489845276, + 0.2168900966644287, + 0.24647042155265808, + 0.22530460357666016, + 0.55317223072052, + 0.3348284661769867, + 0.2299366295337677, + 0.22704604268074036, + 0.15976262092590332, + 0.3657275438308716, + 0.301100492477417, + 0.27172279357910156, + 0.39577239751815796, + 0.2821155786514282, + 0.3055368661880493, + 0.4601201117038727, + 0.2636391520500183, + 0.2966904044151306, + 0.16443191468715668, + 0.2830047011375427, + 0.13874369859695435, + 0.35457950830459595, + 0.47381478548049927, + 0.3051682114601135, + 0.2500254511833191, + 0.27289193868637085, + 0.42709434032440186, + 0.2923024892807007, + 0.40615567564964294, + 0.24479693174362183, + 0.2835773825645447, + 0.47966641187667847, + 0.23792603611946106, + 0.3256709575653076, + 0.16970887780189514, + 0.40243878960609436, + 0.2489173859357834, + 0.10545828193426132, + 0.3023035526275635, + 0.2598850429058075, + 0.27712777256965637, + 0.24168430268764496, + 0.2154207080602646, + 0.4322353005409241, + 0.2460225373506546, + 0.27129024267196655, + 0.22092068195343018, + 0.2877585291862488, + 0.2643328607082367, + 0.32570916414260864, + 0.2385791838169098, + 0.2224685549736023, + 0.25966131687164307, + 0.2513476610183716, + 0.18968503177165985, + 0.2829245328903198, + 0.10489155352115631, + 0.16993632912635803, + 0.3219834566116333, + 0.2191532701253891, + 0.22033053636550903, + 0.5239449739456177, + 0.2400340586900711, + 0.4066777527332306, + 0.6314682960510254, + 0.14256766438484192, + 0.24379567801952362, + 0.21083225309848785, + 0.27450305223464966, + 0.16862894594669342, + 0.25522762537002563, + 0.17643406987190247, + 0.2853166460990906, + 0.19303429126739502, + 0.1498509645462036, + 0.2388489842414856, + 0.13838893175125122, + 0.3098934590816498, + 0.16839700937271118, + 0.19421610236167908, + 0.2782820761203766, + 0.19295667111873627, + 0.1713719367980957, + 0.23983444273471832, + 0.2697269916534424, + 0.20350424945354462, + 0.3498741686344147, + 0.19276602566242218, + 0.270733118057251, + 0.19215452671051025, + 0.40897291898727417, + 0.38916996121406555, + 0.19744794070720673, + 0.24047031998634338, + 0.19416087865829468, + 0.3935443162918091, + 0.16298457980155945, + 0.2834876775741577, + 0.23586173355579376, + 0.31882673501968384, + 0.45068466663360596, + 0.24416187405586243, + 0.09592004120349884, + 0.2236321121454239, + 0.10516108572483063, + 0.3579285740852356, + 0.23994438350200653, + 0.46382197737693787, + 0.1475619077682495, + 0.3595869839191437, + 0.28384408354759216, + 0.30293434858322144, + 0.6376585960388184, + 0.2255164533853531, + 0.24408194422721863, + 0.23628249764442444, + 0.5372308492660522, + 0.4284501075744629, + 0.40179550647735596, + 0.24014386534690857, + 0.39531630277633667, + 0.2201327383518219, + 0.3889012932777405, + 0.2307373732328415, + 0.2189430594444275, + 0.17904630303382874, + 0.2852848470211029, + 0.40027886629104614, + 0.2425360381603241, + 0.3651343882083893, + 0.3037956953048706, + 0.2533831000328064, + 0.22858458757400513, + 0.2801596522331238, + 0.37010061740875244, + 0.4146811366081238, + 0.2693101167678833, + 0.24089115858078003, + 0.39205583930015564, + 0.16415822505950928, + 0.39432868361473083, + 0.1821451336145401, + 0.2439577430486679, + 0.49070268869400024, + 0.11082972586154938, + 0.3274472951889038, + 0.1537664234638214, + 0.30448412895202637, + 0.15689930319786072, + 0.22857320308685303, + 0.23461970686912537, + 0.3019418716430664, + 0.22748392820358276, + 0.2825089693069458, + 0.4108922779560089, + 0.27620166540145874, + 0.3593670725822449, + 0.22929362952709198, + 0.23038360476493835, + 0.23947745561599731, + 0.32028928399086, + 0.30193817615509033, + 0.13791000843048096, + 0.2035796195268631, + 0.31117159128189087, + 0.22811517119407654, + 0.2508699297904968, + 0.18596968054771423, + 0.22576327621936798, + 0.4325881600379944, + 0.2616579830646515, + 0.26820775866508484, + 0.17247715592384338, + 0.22288507223129272, + 0.23100832104682922, + 0.19087806344032288, + 0.3790215849876404, + 0.07714812457561493, + 0.3867262601852417, + 0.19780871272087097, + 0.2775113880634308, + 0.2952142655849457, + 0.20193631947040558, + 0.348556250333786, + 0.22606950998306274, + 0.14702913165092468, + 0.2356618046760559, + 0.27577343583106995, + 0.5125761032104492, + 0.3113219738006592, + 0.2866706848144531, + 0.23882699012756348, + 0.20804502069950104, + 0.2589229941368103, + 0.17633165419101715, + 0.159375861287117, + 0.262842059135437, + 0.44615399837493896, + 0.17780473828315735, + 0.38006824254989624, + 0.21641960740089417, + 0.2825886309146881, + 0.15013882517814636, + 0.16695326566696167, + 0.396871417760849, + 0.23568537831306458, + 0.21893943846225739, + 0.18594177067279816, + 0.2638377845287323, + 0.2521240711212158, + 0.25198128819465637, + 0.31235769391059875, + 0.18386417627334595, + 0.1553190052509308, + 0.3119312524795532, + 0.3172594904899597, + 0.18746733665466309, + 0.3651098906993866, + 0.2763952910900116, + 0.22347986698150635, + 0.2801726460456848, + 0.1940222978591919, + 0.17966881394386292, + 0.3242173194885254, + 0.3902655243873596, + 0.1260964721441269, + 0.20105013251304626, + 0.29161137342453003, + 0.2225721925497055, + 0.4434126317501068, + 0.3282968997955322, + 0.21134734153747559, + 0.21729369461536407, + 0.13720929622650146, + 0.16564837098121643, + 0.31327298283576965, + 0.41819286346435547, + 0.18672671914100647, + 0.21137253940105438, + 0.14712458848953247, + 0.21897098422050476, + 0.22316516935825348, + 0.4073867201805115, + 0.10646860301494598, + 0.44536805152893066, + 0.16712838411331177, + 0.4767214059829712, + 0.1493215411901474, + 0.3237265348434448, + 0.1778651773929596, + 0.262431800365448, + 0.266690194606781, + 0.14386790990829468, + 0.3189900517463684, + 0.21905982494354248, + 0.23397356271743774, + 0.34257835149765015, + 0.3180058002471924, + 0.25138092041015625, + 0.2638319134712219, + 0.24236300587654114, + 0.396126925945282, + 0.2353307455778122, + 0.3038586378097534, + 0.19343073666095734, + 0.19883306324481964, + 0.1689959168434143, + 0.21377794444561005, + 0.29091376066207886, + 0.5113687515258789, + 0.233821302652359, + 0.1341589391231537, + 0.22365066409111023, + 0.15416742861270905, + 0.31835252046585083, + 0.3517591059207916, + 0.23958678543567657, + 0.1999340057373047, + 0.11711592972278595, + 0.19730359315872192, + 0.21812878549098969, + 0.20371761918067932, + 0.2151525914669037, + 0.145045667886734, + 0.08876442164182663, + 0.19354403018951416, + 0.17816388607025146, + 0.18095172941684723, + 0.47056761384010315, + 0.2452552318572998, + 0.3520406186580658, + 0.2291138470172882, + 0.3345881700515747, + 0.21177589893341064, + 0.48866531252861023, + 0.12807492911815643, + 0.24406594038009644, + 0.2097213715314865, + 0.1418631374835968, + 0.4719617962837219, + 0.3409278988838196, + 0.2030293196439743, + 0.20222297310829163, + 0.22152797877788544, + 0.13075682520866394, + 0.133987694978714, + 0.1896134316921234, + 0.23093819618225098, + 0.29388323426246643, + 0.19772465527057648, + 0.15041810274124146, + 0.15583808720111847, + 0.15511074662208557, + 0.22531737387180328, + 0.3073890209197998, + 0.09111789613962173, + 0.10771863907575607, + 0.33277708292007446, + 0.22551080584526062, + 0.15457716584205627, + 0.11167806386947632, + 0.09169816970825195, + 0.33823081851005554, + 0.12185919284820557, + 0.15758132934570312, + 0.2522837817668915, + 0.14190256595611572, + 0.3252077102661133, + 0.17894557118415833, + 0.19304993748664856, + 0.3364601135253906, + 0.22601985931396484, + 0.20737433433532715, + 0.24604256451129913, + 0.32785916328430176, + 0.21481814980506897, + 0.26799827814102173, + 0.08924897015094757, + 0.09798911958932877, + 0.19050481915473938, + 0.1598503440618515, + 0.2078505903482437, + 0.17986422777175903, + 0.1977917104959488, + 0.29288023710250854, + 0.1792115867137909, + 0.3763973116874695, + 0.12488805502653122, + 0.262966513633728, + 0.15390446782112122, + 0.09855378419160843, + 0.18241801857948303, + 0.23252154886722565, + 0.10793440043926239, + 0.23421677947044373, + 0.15533040463924408, + 0.14738579094409943, + 0.10901661217212677, + 0.14478415250778198, + 0.14525394141674042, + 0.20525765419006348, + 0.10758066177368164, + 0.22589297592639923, + 0.19200947880744934, + 0.22606313228607178, + 0.3065832853317261, + 0.42117416858673096, + 0.1235380470752716, + 0.22657634317874908, + 0.23922185599803925, + 0.1680079698562622, + 0.48163071274757385, + 0.11303481459617615, + 0.3770957589149475, + 0.1795358806848526, + 0.14808517694473267, + 0.1150122731924057, + 0.2576565146446228, + 0.14073732495307922, + 0.14235520362854004, + 0.11155528575181961, + 0.34474441409111023, + 0.2502405345439911, + 0.2850838899612427, + 0.6362336874008179, + 0.2258119285106659, + 0.1375127136707306, + 0.1717459261417389, + 0.20378772914409637, + 0.23298367857933044, + 0.3804195821285248, + 0.1434040665626526, + 0.29813310503959656, + 0.4157029390335083, + 0.2737812399864197, + 0.16524633765220642, + 0.11330154538154602, + 0.1639053374528885, + 0.502902626991272, + 0.2416035532951355, + 0.18261657655239105, + 0.1672433614730835, + 0.10033687949180603, + 0.21934862434864044, + 0.19469057023525238, + 0.28395208716392517, + 0.1119440495967865, + 0.3063829243183136, + 0.10302992165088654, + 0.10622456669807434, + 0.08810842037200928, + 0.24985364079475403, + 0.21231737732887268, + 0.22800371050834656, + 0.24446457624435425, + 0.39735233783721924, + 0.3067137897014618, + 0.3310328722000122, + 0.17779719829559326, + 0.2414708137512207, + 0.3013531565666199, + 0.1486828476190567, + 0.27601996064186096, + 0.18786919116973877, + 0.16628214716911316, + 0.21742261946201324, + 0.35659104585647583, + 0.18619492650032043, + 0.2009846270084381, + 0.1103598102927208, + 0.32711905241012573, + 0.14170172810554504, + 0.18596908450126648, + 0.3343438506126404, + 0.10239613056182861, + 0.21883785724639893, + 0.19776314496994019, + 0.2693973779678345, + 0.3702816069126129, + 0.11796867847442627, + 0.2669399380683899, + 0.1200399100780487, + 0.16689065098762512, + 0.26215457916259766, + 0.1788056492805481, + 0.34713101387023926, + 0.2727925777435303, + 0.2632560133934021, + 0.09795044362545013, + 0.342117577791214, + 0.23456934094429016, + 0.13351798057556152, + 0.2704470157623291, + 0.1878122091293335, + 0.2066091150045395, + 0.47464224696159363, + 0.31298691034317017, + 0.24251550436019897, + 0.16247700154781342, + 0.1450728178024292, + 0.2641066312789917, + 0.41669929027557373, + 0.17079336941242218, + 0.21372736990451813, + 0.1850937306880951, + 0.27225708961486816, + 0.31098151206970215, + 0.16710370779037476, + 0.16066573560237885, + 0.12723207473754883, + 0.12210853397846222, + 0.1689375340938568, + 0.1499425172805786, + 0.13503241539001465, + 0.40215808153152466, + 0.1338193416595459, + 0.11485059559345245, + 0.24684475362300873, + 0.3915119767189026, + 0.14127016067504883, + 0.2729734778404236, + 0.25083982944488525, + 0.14546085894107819, + 0.11596724390983582, + 0.14712709188461304, + 0.13114240765571594, + 0.21915394067764282, + 0.08847025036811829, + 0.14501267671585083, + 0.11186926811933517, + 0.14503860473632812, + 0.08631609380245209, + 0.18856382369995117, + 0.2609281539916992, + 0.1320677101612091, + 0.22093632817268372, + 0.1494542956352234, + 0.0905969887971878, + 0.27131837606430054, + 0.24503737688064575, + 0.1527915596961975, + 0.16780507564544678, + 0.17164862155914307, + 0.2613556981086731, + 0.14132606983184814, + 0.21898344159126282, + 0.2434302270412445, + 0.11553347855806351, + 0.14331170916557312, + 0.4039428234100342, + 0.21406343579292297, + 0.19984030723571777, + 0.17814017832279205, + 0.28703805804252625, + 0.09001202881336212, + 0.22007697820663452, + 0.3724384903907776, + 0.29113417863845825, + 0.276885986328125, + 0.18146803975105286, + 0.31804972887039185, + 0.30176472663879395, + 0.07828282564878464, + 0.3588334619998932, + 0.18707579374313354, + 0.36713331937789917, + 0.30880093574523926, + 0.23829413950443268, + 0.0988704040646553, + 0.1581830233335495, + 0.1435871720314026, + 0.11794374138116837, + 0.3435283601284027, + 0.22464828193187714, + 0.4415470063686371, + 0.21951861679553986, + 0.29405611753463745, + 0.13395428657531738, + 0.2572108507156372, + 0.3648509085178375, + 0.15511652827262878, + 0.3490931987762451, + 0.17508850991725922, + 0.1450505554676056, + 0.1603071689605713, + 0.32316985726356506, + 0.28143590688705444, + 0.34883564710617065, + 0.13743484020233154, + 0.19571363925933838, + 0.13046854734420776, + 0.23246365785598755, + 0.11327656358480453, + 0.19311337172985077, + 0.15547071397304535, + 0.0879286527633667, + 0.18275772035121918, + 0.17939093708992004, + 0.11558932065963745, + 0.24045304954051971, + 0.16510915756225586, + 0.1629955768585205, + 0.07577505707740784, + 0.1858544647693634, + 0.13407523930072784, + 0.1383848488330841, + 0.12741516530513763, + 0.16124531626701355, + 0.11192686855792999, + 0.06082127243280411, + 0.07279767096042633, + 0.16992217302322388, + 0.11484377086162567, + 0.21387578547000885, + 0.25110575556755066, + 0.1253996193408966, + 0.1890573501586914, + 0.20941588282585144, + 0.2913479804992676, + 0.23933401703834534, + 0.22659024596214294, + 0.21418294310569763, + 0.2008405327796936, + 0.05576483905315399, + 0.26032012701034546, + 0.12186792492866516, + 0.1520593911409378, + 0.12751571834087372, + 0.08619560301303864, + 0.16408312320709229, + 0.17927584052085876, + 0.16834348440170288, + 0.14021724462509155, + 0.3407657742500305, + 0.2957145869731903, + 0.17177024483680725, + 0.19211596250534058, + 0.09277237206697464, + 0.12157561630010605, + 0.08309458196163177, + 0.19019517302513123, + 0.19451265037059784, + 0.14988099038600922, + 0.12189947068691254, + 0.4660620093345642, + 0.13362637162208557, + 0.21456703543663025, + 0.31568530201911926, + 0.275255411863327, + 0.4309881925582886, + 0.16732768714427948, + 0.44987642765045166, + 0.14444419741630554, + 0.21093252301216125, + 0.1854296326637268, + 0.1300470232963562, + 0.09191755950450897, + 0.06213744729757309, + 0.36542192101478577, + 0.18027843534946442, + 0.20548871159553528, + 0.09548819065093994, + 0.23229734599590302, + 0.09639842063188553, + 0.09742659330368042, + 0.17540580034255981, + 0.2755020260810852, + 0.0773056223988533, + 0.19911223649978638, + 0.1588195264339447, + 0.23173117637634277, + 0.3724217414855957, + 0.15338103473186493, + 0.15752044320106506, + 0.3266931176185608, + 0.3171297311782837, + 0.1166800931096077, + 0.2818506956100464, + 0.40506434440612793, + 0.1754155457019806, + 0.3402497172355652, + 0.14989280700683594, + 0.13265933096408844, + 0.2791270315647125, + 0.2929890751838684, + 0.1613774597644806, + 0.16842177510261536, + 0.1908762902021408, + 0.16750450432300568, + 0.1830136775970459, + 0.2006067931652069, + 0.4710058569908142, + 0.24005649983882904, + 0.08854508399963379, + 0.14156652987003326, + 0.15379288792610168, + 0.11747033894062042, + 0.11634866893291473, + 0.09495986998081207, + 0.3599845767021179, + 0.10936915874481201, + 0.43910300731658936, + 0.18433384597301483, + 0.09567141532897949, + 0.13626272976398468, + 0.16601791977882385, + 0.1462615430355072, + 0.371281236410141, + 0.1320621371269226, + 0.31802213191986084, + 0.33053284883499146, + 0.1761794239282608, + 0.25286173820495605, + 0.1541672796010971, + 0.15974920988082886, + 0.2788334786891937, + 0.10106616467237473, + 0.1446804702281952, + 0.17398248612880707, + 0.13958211243152618, + 0.23584890365600586, + 0.14718449115753174, + 0.08882854133844376, + 0.2439582645893097, + 0.12457384914159775, + 0.13352926075458527, + 0.09588070213794708, + 0.1345539093017578, + 0.19492314755916595, + 0.2948419153690338, + 0.16565477848052979, + 0.3860889673233032, + 0.13909552991390228, + 0.1304548978805542, + 0.2389429211616516, + 0.156545490026474, + 0.11388562619686127, + 0.12366503477096558, + 0.13146597146987915, + 0.16488566994667053, + 0.10576125979423523, + 0.2605326771736145, + 0.40653735399246216, + 0.18015331029891968, + 0.1715795397758484, + 0.2715689539909363, + 0.1888289451599121, + 0.20025664567947388, + 0.2384958267211914, + 0.15658965706825256, + 0.130298912525177, + 0.10221226513385773, + 0.2556404769420624, + 0.19469141960144043, + 0.1975296139717102, + 0.16930799186229706, + 0.10444515943527222, + 0.3691498041152954, + 0.16394342482089996, + 0.20755067467689514, + 0.1805219203233719, + 0.10124044120311737, + 0.21493317186832428, + 0.1610446572303772, + 0.42842090129852295, + 0.2948428690433502, + 0.1408509463071823, + 0.07686226069927216, + 0.29882746934890747, + 0.15844601392745972, + 0.11257848143577576, + 0.2739264965057373, + 0.14706707000732422, + 0.13876353204250336, + 0.21597999334335327, + 0.12796595692634583, + 0.08883091807365417, + 0.2462306022644043, + 0.05590568855404854, + 0.18760165572166443, + 0.16563135385513306, + 0.1331680566072464, + 0.19478023052215576, + 0.15581999719142914, + 0.20062139630317688, + 0.213889479637146, + 0.26641952991485596, + 0.06761877238750458, + 0.2758985161781311, + 0.3622976243495941, + 0.1223989725112915, + 0.2842875123023987, + 0.19262737035751343, + 0.33439770340919495, + 0.2276298552751541, + 0.26281988620758057, + 0.3673902153968811, + 0.18455937504768372, + 0.13687554001808167, + 0.10172797739505768, + 0.34208154678344727, + 0.4418579041957855, + 0.21014583110809326, + 0.28194814920425415, + 0.26305463910102844, + 0.18892055749893188 + ] +} \ No newline at end of file diff --git a/outputs/external_vla/smolvla_cil_aligned_metrics.json b/outputs/external_vla/smolvla_cil_aligned_metrics.json new file mode 100644 index 0000000000000000000000000000000000000000..03069999968b4747db9d7678b37c53da2715c958 --- /dev/null +++ b/outputs/external_vla/smolvla_cil_aligned_metrics.json @@ -0,0 +1,47 @@ +{ + "candidate_oracle_success_rate": 0.4185714285714286, + "evaluation_protocol": "nearest_executed_same_state_candidate", + "final_train_loss": 0.18892055749893188, + "mean_selected_regret": 0.13656934786188815, + "model_family": "smolvla", + "normalized_action_mse_to_selected": 0.3394091720879078, + "num_eval_groups": 700, + "num_train_groups": 2800, + "per_task": { + "LiftPegUpright-v1": { + "num_groups": 99, + "selected_reward_mean": 1.0044795715748662, + "selected_success_rate": 0.3434343434343434 + }, + "PegInsertionSide-v1": { + "num_groups": 97, + "selected_reward_mean": 0.23799376099456832, + "selected_success_rate": 0.0 + }, + "PickCube-v1": { + "num_groups": 193, + "selected_reward_mean": 0.8670999890897867, + "selected_success_rate": 0.2538860103626943 + }, + "PullCube-v1": { + "num_groups": 113, + "selected_reward_mean": 1.3038161870388858, + "selected_success_rate": 0.584070796460177 + }, + "PushCube-v1": { + "num_groups": 106, + "selected_reward_mean": 1.2718729558137227, + "selected_success_rate": 0.5943396226415094 + }, + "StackCube-v1": { + "num_groups": 92, + "selected_reward_mean": 0.9698587565318398, + "selected_success_rate": 0.32608695652173914 + } + }, + "selected_reward_mean": 0.9446513404989881, + "selected_success_rate": 0.3457142857142857, + "top1_action_selection": 0.5228571428571429, + "training_mode": "expert_only_bc", + "training_steps": 1000 +} \ No newline at end of file diff --git a/outputs/external_vla/smolvla_cil_balanced_manifest.json b/outputs/external_vla/smolvla_cil_balanced_manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..9fdaa84bf6b029e752e249425723a864ae7204fb --- /dev/null +++ b/outputs/external_vla/smolvla_cil_balanced_manifest.json @@ -0,0 +1,5781 @@ +{ + "action_normalizer": { + "canonical_action_dim": 8, + "mean": [ + -0.022289231419563293, + 0.10234535485506058, + -0.2564755380153656, + -0.0621388703584671, + -0.2134821116924286, + 0.4443473219871521, + -0.8069988489151001, + -0.03291666507720947 + ], + "scale": [ + 0.761264979839325, + 0.5265141129493713, + 1.0559866428375244, + 1.266664981842041, + 1.4507075548171997, + 1.6286382675170898, + 1.5712451934814453, + 0.4069325625896454 + ], + "vectorization": "right_zero_pad_to_canonical_dimension" + }, + "checkpoint": "/scratch/knguy52/dovla/models/smolvla_base-c83c316", + "claim_scope": "Expert-only SmolVLA fine-tuning evaluated by nearest executed same-state CIL candidate; this is measured candidate selection, not online policy rollout.", + "config": { + "action_dim": 8, + "action_horizon": 4, + "batch_size": 4, + "device": "cuda", + "export_dir": "/scratch/knguy52/dovla/experiments/external_vla_export_full_balanced", + "image_size": 512, + "learning_rate": 0.0001, + "log_every": 25, + "max_eval_groups": 600, + "seed": 0, + "state_dim": 32, + "steps": 1000, + "val_fraction": 0.2, + "vlm_metadata": "/scratch/knguy52/dovla/models/SmolVLM2-500M-Video-Instruct-metadata-7b375e1b73b11138ff12fe22c8f2822d8fe03467" + }, + "dataset": "/scratch/knguy52/dovla/experiments/maniskill_presuccess_six_task_collection", + "export": "/scratch/knguy52/dovla/experiments/external_vla_export_full_balanced", + "num_train_groups": 2400, + "num_validation_groups": 600, + "schema_version": "smolvla-cil-candidate-baseline/v0", + "state_projector": { + "components": [ + [ + -0.0010280748829245567, + 0.001114234677515924, + 0.0002530088531784713, + -0.0018986471695825458, + 0.004930918104946613, + 0.0016624636482447386, + -0.003447691909968853, + -0.02657553367316723, + -0.000881311425473541, + 0.0038963600527495146, + 0.3078743815422058, + 0.7225583791732788, + 0.6142717003822327, + -0.0036706302780658007, + -4.40303556388244e-05, + -0.00770162558183074, + -0.0006289654993452132, + 5.949442493147217e-05, + -0.005272062961012125, + 0.007389334496110678, + -1.7888891306938604e-05, + -7.127784192562103e-05, + 3.789695620071143e-05, + 0.0019783428870141506, + -0.00016471449634991586, + -0.0022035359870642424, + -0.003976669628173113, + 1.0238068598737889e-14, + 0.007388113532215357, + 0.002353010466322303, + 2.1858613009906325e-12, + -2.642692314980266e-11, + -0.005680666770786047, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.005042672157287598, + 0.002719542011618614, + 0.0004435222945176065, + -0.024973230436444283, + 0.0007244178559631109, + 0.01788479834794998, + 0.006465005688369274, + 0.0002147667109966278, + 0.0002148925996152684, + 0.0019707384053617716, + -0.0047528501600027084, + 0.0008492294582538307, + 0.0032441867515444756, + -0.0011831293813884258, + -0.017403224483132362, + 0.003817452583462, + 0.014573774300515652, + 0.0017283076886087656, + -0.022558031603693962, + -0.009021050296723843, + 0.00010442818165756762, + 0.00010459201439516619, + -0.004635993856936693, + -0.011579579673707485, + 0.0040922509506344795, + -0.03894598409533501, + 0.0018640975467860699, + 0.0036412456538528204, + -0.004740027245134115, + -0.002168494975194335, + -0.00021428662876132876, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.008033676072955132, + -0.008033676072955132, + -0.008033676072955132, + -0.008033676072955132, + -0.008033676072955132, + -0.008033676072955132, + -0.008033676072955132, + -0.008033676072955132, + -0.008033676072955132, + -0.008033676072955132, + -0.008033676072955132, + -0.008033676072955132, + -0.008033676072955132 + ], + [ + -0.00023950121249072254, + 0.0007218352984637022, + 0.000516425643581897, + -0.004160810727626085, + 0.004002545028924942, + 0.0006693319301120937, + 0.00503411702811718, + -0.020927220582962036, + -0.0010587458964437246, + 0.00967797078192234, + 0.49594438076019287, + 0.42449358105659485, + -0.7550681829452515, + -0.002928372472524643, + -0.0003961192269343883, + -0.005209828726947308, + -1.3756212865700945e-05, + -0.00012499646982178092, + -0.0075187720358371735, + 0.005669177509844303, + -5.47394847671967e-05, + 0.00020218735153321177, + 3.5627275792649016e-05, + -0.00032729943632148206, + -0.0011448953300714493, + 0.0004933697055093944, + -0.0029383888468146324, + 9.286267840303598e-15, + 0.005459134466946125, + 0.001738657709211111, + 1.6151498541394638e-12, + -1.9527058789381435e-11, + -0.004197488538920879, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0036859307438135147, + 0.0020867404527962208, + 0.00033891425118781626, + -0.01843813620507717, + 0.0005546026513911784, + 0.013343761675059795, + 0.004767151549458504, + 0.00016215174400713295, + 0.00016224150022026151, + 0.0013698241673409939, + -0.00292178220115602, + 0.0005661408649757504, + 0.0018554892158135772, + -0.001559150405228138, + -0.010922623798251152, + 0.0032586059533059597, + 0.013534110970795155, + 0.0015000712592154741, + -0.019714102149009705, + -0.013198732398450375, + 0.00019252228958066553, + 0.00019310027710162103, + -0.006771927699446678, + -0.011496088467538357, + 0.005600310396403074, + -0.02614709734916687, + 0.004670621827244759, + -0.0076894150115549564, + -0.007078781723976135, + -0.0014115256490185857, + 0.00036609964445233345, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.005936145782470703, + -0.005936145782470703, + -0.005936145782470703, + -0.005936145782470703, + -0.005936145782470703, + -0.005936145782470703, + -0.005936145782470703, + -0.005936145782470703, + -0.005936145782470703, + -0.005936145782470703, + -0.005936145782470703, + -0.005936145782470703, + -0.005936145782470703 + ], + [ + -1.4796180948906112e-05, + 0.0022400966845452785, + -0.001448249095119536, + 0.001391921890899539, + -0.004436619114130735, + -0.0024415988009423018, + 0.005413648206740618, + -0.00840661209076643, + -0.0031643291004002094, + 0.00340832257643342, + 0.8099850416183472, + -0.5371779203414917, + 0.22858726978302002, + -0.001920076203532517, + 0.0009136219741776586, + 0.004073368851095438, + -0.005051843356341124, + -1.2760812751366757e-05, + 0.0008174824761226773, + 0.00013013517309445888, + 2.775384928099811e-05, + 0.0004953724564984441, + 0.00020560908888000995, + 0.004855617415159941, + -9.013406815938652e-05, + 0.000669025641400367, + 0.003062437754124403, + -3.1337639833084723e-15, + -0.005689582321792841, + -0.0018120516324415803, + -1.6833305582775182e-12, + 2.035135775180219e-11, + 0.004374678712338209, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.003934942185878754, + -0.0018243602244183421, + -0.0003640907525550574, + 0.019529029726982117, + -0.0006149139953777194, + -0.013414442539215088, + -0.0049631306901574135, + -0.00012971600517630577, + -0.0001297509588766843, + -0.0034623907413333654, + 0.007959306240081787, + -0.0002727838873397559, + -0.006180380936712027, + 0.0028788556810468435, + 0.02014293149113655, + -0.005881957244127989, + -0.013007726520299911, + 0.0012811131309717894, + 0.01713121123611927, + -0.0195700041949749, + 0.0004354238335508853, + 0.0004347131762187928, + 0.0033071269281208515, + 0.0023334193974733353, + 0.0032970618922263384, + -0.014073352329432964, + 0.00770231569185853, + -0.0017846392001956701, + 0.0012102037435397506, + -0.003812620881944895, + 0.0017877767095342278, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.00618672976270318, + 0.00618672976270318, + 0.00618672976270318, + 0.00618672976270318, + 0.00618672976270318, + 0.00618672976270318, + 0.00618672976270318, + 0.00618672976270318, + 0.00618672976270318, + 0.00618672976270318, + 0.00618672976270318, + 0.00618672976270318, + 0.00618672976270318 + ], + [ + -0.0037947001401335, + -0.0038635702803730965, + 0.0027845092117786407, + -0.02414398454129696, + 0.09739533811807632, + 0.025616606697440147, + -0.049971308559179306, + -0.0023749324027448893, + 0.023408234119415283, + 0.020464716479182243, + -0.003934499807655811, + -0.08293867111206055, + 0.008723246864974499, + -0.01585150510072708, + 0.0018064111936837435, + -0.14388443529605865, + -0.005040669348090887, + -3.0100032745394856e-05, + -0.045683104544878006, + 0.08598712831735611, + 0.0001998630614252761, + -0.0009281459497287869, + -0.0006059266161173582, + -0.008162932470440865, + 0.0051720030605793, + 0.003320078831166029, + -0.07384809106588364, + 2.6296288280561186e-13, + 0.13719983398914337, + 0.043696217238903046, + 4.05922032098438e-11, + -4.907571016232737e-10, + -0.10549195855855942, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.09083101898431778, + 0.058609526604413986, + 0.007674215827137232, + -0.4597875475883484, + 0.01342045795172453, + 0.3434208035469055, + 0.11752515286207199, + 0.00441402243450284, + 0.004416984971612692, + 0.019604766741394997, + -0.040567588061094284, + 0.014213130809366703, + -0.0019284934969618917, + 0.015097411349415779, + -0.1737981140613556, + 0.02705022320151329, + 0.2915727496147156, + -0.0029761905316263437, + -0.3683585524559021, + -0.019486865028738976, + -0.0033435134682804346, + -0.0033444075379520655, + 0.0028738591354340315, + -0.07695145159959793, + 0.006531573366373777, + 0.0068883090279996395, + 0.004532825201749802, + -0.06643946468830109, + 0.03769463300704956, + 0.004386794287711382, + 0.006609681062400341, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.14918816089630127, + -0.14918816089630127, + -0.14918816089630127, + -0.14918816089630127, + -0.14918816089630127, + -0.14918816089630127, + -0.14918816089630127, + -0.14918816089630127, + -0.14918816089630127, + -0.14918816089630127, + -0.14918816089630127, + -0.14918816089630127, + -0.14918816089630127 + ], + [ + 0.00791467446833849, + 0.003985682036727667, + -0.0004050939460285008, + 0.008491788990795612, + -0.0038550025783479214, + -0.0012841252610087395, + -0.00228788866661489, + 8.584093302488327e-05, + 0.008650495670735836, + -0.0077258325181901455, + 0.006387452129274607, + 0.009063459001481533, + -0.003700198605656624, + 0.01114076841622591, + 0.0036860511172562838, + 0.003967558965086937, + -0.003920795861631632, + -4.93777624797076e-05, + 0.007334162015467882, + -0.0006025181501172483, + -9.654298628447577e-05, + 0.0011830689618363976, + 0.00020231169764883816, + 0.0009843921288847923, + -0.0015073881950229406, + 0.00236239074729383, + 0.0030057979747653008, + -1.162439556504774e-14, + -0.005584382917732, + -0.0017785473028197885, + -1.6522061496715423e-12, + 1.997506673956373e-11, + 0.004293791949748993, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.003751779906451702, + -0.0023619653657078743, + -0.00029981593252159655, + 0.018794002011418343, + -0.0005512042553164065, + -0.013819864019751549, + -0.004880515392869711, + -0.00016655572107993066, + -0.0001666341267991811, + -0.0019954622257500887, + 0.0032680926378816366, + -0.0002870632742997259, + -0.0013925025705248117, + 0.03552274405956268, + 0.01672217808663845, + -0.0397314727306366, + 0.002329393522813916, + -0.05490639805793762, + 0.00935447309166193, + 0.04705139249563217, + -0.00014929565077181906, + -0.00015714133041910827, + 0.13963565230369568, + -0.04174959287047386, + 0.005059640854597092, + -0.04633043706417084, + -0.35442686080932617, + -0.016525311395525932, + 0.9164786338806152, + -0.021463900804519653, + 0.006075977813452482, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.006072338670492172, + 0.006072338670492172, + 0.006072338670492172, + 0.006072338670492172, + 0.006072338670492172, + 0.006072338670492172, + 0.006072338670492172, + 0.006072338670492172, + 0.006072338670492172, + 0.006072338670492172, + 0.006072338670492172, + 0.006072338670492172, + 0.006072338670492172 + ], + [ + -0.014386637136340141, + 0.006396414712071419, + 0.003717957530170679, + -0.004203966353088617, + -0.0031846712809056044, + -0.0011641064193099737, + 0.010440194047987461, + -0.09845694154500961, + -0.003845322411507368, + 0.010681122541427612, + -0.03648494929075241, + -0.03440658748149872, + -0.00553548289462924, + -0.01087923813611269, + -0.0015591346891596913, + 0.005380363203585148, + -0.0011337928008288145, + 0.00024043908342719078, + -0.008778517134487629, + 0.008847236633300781, + -0.001056957058608532, + 0.0009337731171399355, + 0.0007511723670177162, + 0.012551236897706985, + -0.0077247777953743935, + -0.0015656654722988605, + 0.0024818528909236193, + -5.945785889734188e-15, + -0.0046109422110021114, + -0.00146851921454072, + -1.3642021540194449e-12, + 1.6493115900795274e-11, + 0.0035453212913125753, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.003145394613966346, + -0.0015612478600814939, + -0.00029225111939013004, + 0.015750804916024208, + -0.0004584594280458987, + -0.0113263800740242, + -0.0040098377503454685, + -0.000139672847581096, + -0.00013975742331240326, + -0.0008521872223354876, + 0.0019910684786736965, + -0.0007110952283255756, + -0.0019197200890630484, + -0.010464102029800415, + -0.015956664457917213, + 0.008472451940178871, + -0.04468651860952377, + 0.009897514246404171, + 0.005845936946570873, + -0.03989497572183609, + 0.0005071950727142394, + 0.000508578959852457, + -0.03428563475608826, + -0.6034322381019592, + 0.020370546728372574, + -0.7744196057319641, + 0.008986608125269413, + 0.11538950353860855, + -0.05205681174993515, + 0.010126156732439995, + 0.010425817221403122, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.005013839807361364, + 0.005013839807361364, + 0.005013839807361364, + 0.005013839807361364, + 0.005013839807361364, + 0.005013839807361364, + 0.005013839807361364, + 0.005013839807361364, + 0.005013839807361364, + 0.005013839807361364, + 0.005013839807361364, + 0.005013839807361364, + 0.005013839807361364 + ], + [ + 0.007556125055998564, + 0.03984592854976654, + 0.022354433313012123, + -0.09329218417406082, + -0.010381529107689857, + -0.0024959230795502663, + 0.12480800598859787, + 0.027418049052357674, + -0.016409778967499733, + 0.07517413049936295, + -0.012141818180680275, + 0.008556603454053402, + 0.008907399140298367, + -0.0066658989526331425, + -0.00944836251437664, + 0.04287034273147583, + 0.002631794661283493, + 0.0007740055443719029, + -0.19848166406154633, + 0.08405567705631256, + -0.0008975013042800128, + 0.004005889408290386, + 0.0031432239338755608, + 0.05789578706026077, + -0.03045276738703251, + -0.030565133318305016, + 0.010634584352374077, + -3.754774404807551e-14, + -0.019757509231567383, + -0.006292481441050768, + -5.845494227552095e-12, + 7.067164908836077e-11, + 0.015191414393484592, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.013616575859487057, + -0.007540925405919552, + -0.0011531264754012227, + 0.06695423275232315, + -0.002005278365686536, + -0.04763398319482803, + -0.01763809844851494, + -0.0005304445512592793, + -0.0005307534011080861, + -0.007917623966932297, + 0.018953099846839905, + -0.0006231721490621567, + -0.01214867364615202, + -0.025121720507740974, + 0.0992240458726883, + -0.004212856292724609, + 0.04262670874595642, + 0.03483172506093979, + -0.028521951287984848, + -0.4198482632637024, + 0.004458719398826361, + 0.0044617862440645695, + -0.07619882375001907, + -0.3994152843952179, + 0.1046861857175827, + 0.24472522735595703, + 0.1360756903886795, + -0.6621692776679993, + 0.06861243396997452, + 0.06710556149482727, + 0.07155170291662216, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.02148389257490635, + 0.02148389257490635, + 0.02148389257490635, + 0.02148389257490635, + 0.02148389257490635, + 0.02148389257490635, + 0.02148389257490635, + 0.02148389257490635, + 0.02148389257490635, + 0.02148389257490635, + 0.02148389257490635, + 0.02148389257490635, + 0.02148389257490635 + ], + [ + -0.014708459377288818, + -0.006586070638149977, + 0.009892758913338184, + -0.0013509257696568966, + -0.01839505508542061, + 0.030169187113642693, + -0.09305942803621292, + -0.023238040506839752, + 0.05773821845650673, + 0.11133338510990143, + 0.012963386252522469, + -0.015660801902413368, + 0.003387412056326866, + -0.00886200275272131, + 0.006895590107887983, + 0.030775409191846848, + 0.029523996636271477, + -0.0002461089170537889, + 0.019574221223592758, + -0.0735294446349144, + 0.0006078148726373911, + -0.00236451905220747, + -0.0009205694077536464, + -0.002137052593752742, + 0.005039753392338753, + -0.00864973571151495, + 0.010771085508167744, + -2.659395971396205e-14, + -0.020011240616440773, + -0.006373302545398474, + -5.920563518613253e-12, + 7.157923559431012e-11, + 0.015386494807898998, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0025933608412742615, + -0.026839621365070343, + -0.0005771320429630578, + 0.06251855939626694, + -0.0019141058437526226, + -0.11536629498004913, + 0.006796301808208227, + -0.0036044581793248653, + -0.0036071562208235264, + 0.15108971297740936, + -0.3338032364845276, + -0.043317027390003204, + 0.3606463372707367, + -0.15647216141223907, + -0.7152306437492371, + 0.2713671326637268, + -0.07989891618490219, + 0.011840131133794785, + 0.04168948531150818, + 0.14603258669376373, + 0.0008687008521519601, + 0.0008720759069547057, + -0.018727989867329597, + -0.08838307112455368, + 0.011301841586828232, + 0.0718151107430458, + -0.04432092607021332, + -0.13845637440681458, + 0.00397460488602519, + 0.009684204123914242, + 0.008226808160543442, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.021759795024991035, + 0.021759795024991035, + 0.021759795024991035, + 0.021759795024991035, + 0.021759795024991035, + 0.021759795024991035, + 0.021759795024991035, + 0.021759795024991035, + 0.021759795024991035, + 0.021759795024991035, + 0.021759795024991035, + 0.021759795024991035, + 0.021759795024991035 + ], + [ + 0.010456273332238197, + -0.0824383869767189, + -0.00841754674911499, + 0.03463342413306236, + 0.0027977381832897663, + 0.0013978214701637626, + -0.2738381624221802, + -0.02449934557080269, + -0.02406635507941246, + 0.09191248565912247, + 0.018888898193836212, + 0.005544136743992567, + 0.0032555153593420982, + -0.017274340614676476, + 0.02279696613550186, + 0.03413018956780434, + 0.11579271405935287, + -0.0006415974930860102, + 0.11069507151842117, + -0.2701380252838135, + 0.0019353822572156787, + -0.010010558180510998, + -0.005910251755267382, + -0.08404563367366791, + 0.049459971487522125, + 0.011970638297498226, + 0.0009729058365337551, + -7.97433916588288e-15, + -0.0018076716223731637, + -0.0005757350591011345, + -5.348211565454897e-13, + 6.4659536405664575e-12, + 0.0013898885808885098, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.004617589525878429, + 0.0038157200906425714, + -0.00010804210614878684, + 0.010038213804364204, + -0.000527293246705085, + 0.0077713849022984505, + -0.005840720608830452, + 0.000710563559550792, + 0.0007117840577848256, + -0.043701574206352234, + 0.10077061504125595, + 0.011818986386060715, + -0.09268401563167572, + 0.06952240318059921, + 0.2028818130493164, + -0.04607807472348213, + 0.04522895812988281, + -0.006159414071589708, + -0.06982821226119995, + 0.7105268836021423, + -0.0025620448868721724, + -0.002548061776906252, + -0.07382618635892868, + -0.23878619074821472, + 0.038312483578920364, + 0.0888940617442131, + -0.06999842077493668, + -0.3634599447250366, + -0.07432714104652405, + 0.02742135152220726, + 0.015790799632668495, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0019656233489513397, + 0.0019656233489513397, + 0.0019656233489513397, + 0.0019656233489513397, + 0.0019656233489513397, + 0.0019656233489513397, + 0.0019656233489513397, + 0.0019656233489513397, + 0.0019656233489513397, + 0.0019656233489513397, + 0.0019656233489513397, + 0.0019656233489513397, + 0.0019656233489513397 + ], + [ + -0.004397987388074398, + 0.0029851640574634075, + -0.002028347458690405, + -0.017424680292606354, + 0.0012022919254377484, + -0.0003365486045368016, + -0.014085079543292522, + -0.009281656704843044, + 0.08676590025424957, + -0.0013668563915416598, + -0.0034049449022859335, + 0.0050314427353441715, + -0.0017313080606982112, + 0.0008077099337242544, + 0.0273579154163599, + 0.005730126518756151, + 0.01564035378396511, + -0.0006228529964573681, + 0.02526048757135868, + -0.03445657715201378, + 0.00048673799028620124, + 0.005078007932752371, + -0.001407829811796546, + -0.07944292575120926, + 0.01738428883254528, + 0.07021088898181915, + 0.000998938805423677, + -2.185501366198158e-14, + -0.0018558213487267494, + -0.0005910561885684729, + -5.490668141504285e-13, + 6.638182625112732e-12, + 0.0014269243692979217, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.0005693331477232277, + -0.002383193466812372, + 2.343275809835177e-05, + 0.00573559058830142, + -0.00012738177611026913, + -0.008106101304292679, + -0.0010678370017558336, + -0.00020435666374396533, + -0.0002046548470389098, + 0.0014168191701173782, + -0.02147461101412773, + -0.0008121090941131115, + 0.014580641873180866, + 0.07270699739456177, + -0.03978307172656059, + -0.05207498371601105, + -0.012353588826954365, + 0.03396625071763992, + 0.0040479497984051704, + 0.1386994570493698, + -0.000238489214098081, + -0.00024447840405628085, + 0.43373918533325195, + 0.011909032240509987, + 0.18862000107765198, + -0.03279433771967888, + 0.814996600151062, + 0.0338263213634491, + 0.23651373386383057, + -0.0030971956439316273, + 0.012840073555707932, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.002017980208620429, + 0.002017980208620429, + 0.002017980208620429, + 0.002017980208620429, + 0.002017980208620429, + 0.002017980208620429, + 0.002017980208620429, + 0.002017980208620429, + 0.002017980208620429, + 0.002017980208620429, + 0.002017980208620429, + 0.002017980208620429, + 0.002017980208620429 + ], + [ + 0.007266815286129713, + -0.003814256051555276, + 0.0037145805545151234, + -0.030825955793261528, + -0.005973668769001961, + 0.0019775452092289925, + -0.019960517063736916, + -0.015005498193204403, + 0.02322080172598362, + -0.011076133698225021, + 0.00032144333817996085, + -0.0011176110710948706, + 0.0029070349410176277, + 0.005122920963913202, + -0.020040463656187057, + 0.004319331608712673, + 0.006692976225167513, + -0.00336152920499444, + -0.02734098583459854, + 0.07085678726434708, + 0.005276753567159176, + 0.01976954936981201, + -0.007348137907683849, + -0.8053187727928162, + 0.26151418685913086, + 0.4956466853618622, + 0.0028352048248052597, + -3.351313384382425e-15, + -0.0052674985490739346, + -0.0016776234842836857, + -1.5584520436304206e-12, + 1.8841584542572676e-11, + 0.004050142131745815, + -4.314083075427408e-31, + 5.113344002348111e-31, + -1.2883568548289176e-31, + -2.2726387117780873e-31, + 9.73057649140343e-32, + -1.017919450643995e-31, + -0.0023036531638354063, + -0.002584627363830805, + -0.0002067718596663326, + 0.020533204078674316, + -0.0008305380470119417, + -0.01979050599038601, + -0.0018780590035021305, + -0.000289033108856529, + -0.0002886982401832938, + 0.0053349328227341175, + 0.00984495971351862, + -0.0030460457783192396, + 0.030084557831287384, + -0.039381243288517, + 0.008007553406059742, + 0.01368126180022955, + 0.031498268246650696, + 0.00024129817029461265, + -0.0059729283675551414, + -0.11543174833059311, + 0.0026595937088131905, + 0.002660616533830762, + -0.05586841702461243, + 0.0017387685365974903, + 0.025370528921484947, + -0.008420472964644432, + -0.0739971473813057, + -0.014381105080246925, + -0.013996092602610588, + 0.004877569153904915, + 0.006003410089761019, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.005727764684706926, + 0.005727764684706926, + 0.005727764684706926, + 0.005727764684706926, + 0.005727764684706926, + 0.005727764684706926, + 0.005727764684706926, + 0.005727764684706926, + 0.005727764684706926, + 0.005727764684706926, + 0.005727764684706926, + 0.005727764684706926, + 0.005727764684706926 + ], + [ + -0.0017153314547613263, + -0.016961058601737022, + 0.008403489366173744, + -0.06486941874027252, + -0.034094031900167465, + 0.0743817687034607, + -0.3977285921573639, + 0.0359266959130764, + -0.03488779813051224, + -0.06976228207349777, + -0.002410278655588627, + -0.0013040666235610843, + -0.0023233916144818068, + 0.0037199584767222404, + -0.004009155556559563, + -0.009497874416410923, + -0.01032274216413498, + -3.5929570003645495e-05, + -0.059604398906230927, + -0.07416344434022903, + -4.4679104576061945e-06, + -0.009274033829569817, + -0.0025953014846891165, + 0.017274096608161926, + 0.041948381811380386, + -0.10109259933233261, + -0.004054776858538389, + 7.626341778140672e-14, + 0.007533223833888769, + 0.002399221295490861, + 2.2287939722975825e-12, + -2.6945976699943586e-11, + -0.005792246200144291, + -2.0194839173657902e-28, + 3.3427980858740375e-28, + -8.438654644327113e-29, + -1.4886051800553374e-28, + 6.373625613412724e-29, + -6.667474976530714e-29, + 0.020244065672159195, + 0.004733780864626169, + 0.005293750669807196, + 0.032925840467214584, + -0.0033567652571946383, + -0.06728311628103256, + 0.042116641998291016, + 7.543577521573752e-05, + 8.259507012553513e-05, + -0.02315627597272396, + 0.62307208776474, + -0.02826754003763199, + 0.5922620892524719, + -0.03898298740386963, + 0.02252883091568947, + 0.016057470813393593, + 0.0505104623734951, + 0.006711246911436319, + -0.046270258724689484, + -0.13867759704589844, + 0.0018351644976064563, + 0.0018378758104518056, + -0.09404541552066803, + 0.06643898040056229, + 0.06254632025957108, + -0.04914622753858566, + 0.05786987766623497, + 0.02954871952533722, + 0.04544161260128021, + 0.009715390391647816, + 0.010592184960842133, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.008191466331481934, + -0.008191466331481934, + -0.008191466331481934, + -0.008191466331481934, + -0.008191466331481934, + -0.008191466331481934, + -0.008191466331481934, + -0.008191466331481934, + -0.008191466331481934, + -0.008191466331481934, + -0.008191466331481934, + -0.008191466331481934, + -0.008191466331481934 + ], + [ + 0.002521706046536565, + -0.06871653348207474, + -0.01146730501204729, + -0.0459195114672184, + -0.0023233245592564344, + -0.010599241591989994, + -0.5749586820602417, + -0.05591445043683052, + -0.03685964643955231, + 0.022853005677461624, + -0.008405963890254498, + -0.005469200666993856, + -0.0031967104878276587, + -0.0020169676281511784, + -0.012324091978371143, + 0.006525442935526371, + -0.00997657235711813, + -0.00046255896450020373, + -0.09844349324703217, + -0.19465041160583496, + 0.002079432364553213, + -0.02369944006204605, + -0.00693570077419281, + -0.07809489965438843, + 0.2122359573841095, + -0.30423203110694885, + 0.0052118925377726555, + -2.6553859480173136e-14, + -0.009683242999017239, + -0.0030839876271784306, + -2.8649025426291663e-12, + 3.463648812207509e-11, + 0.007445364259183407, + -2.928251680180396e-27, + 4.335579535094681e-27, + -1.0929667841837119e-27, + -1.928287282639166e-27, + 8.256197819185699e-28, + -8.636840539324337e-28, + -0.008295337669551373, + -0.00616114679723978, + -0.002765923971310258, + 0.01894715242087841, + -0.0013363147154450417, + -0.013246504589915276, + -0.011265297420322895, + -0.0006658185156993568, + -0.000665056926663965, + 0.009361250326037407, + -0.3389365077018738, + 0.012851203791797161, + -0.30744436383247375, + 0.004057930316776037, + 0.019683213904500008, + -0.016170188784599304, + 0.02111336588859558, + 0.0315936878323555, + -0.027330433949828148, + -0.24840031564235687, + 0.004297592211514711, + 0.004303179681301117, + -0.29487866163253784, + 0.1667269766330719, + 0.19375215470790863, + -0.10346996784210205, + 0.11254917830228806, + 0.0302874892950058, + 0.10501295328140259, + 0.016012834385037422, + 0.022485502064228058, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.010529350489377975, + 0.010529350489377975, + 0.010529350489377975, + 0.010529350489377975, + 0.010529350489377975, + 0.010529350489377975, + 0.010529350489377975, + 0.010529350489377975, + 0.010529350489377975, + 0.010529350489377975, + 0.010529350489377975, + 0.010529350489377975, + 0.010529350489377975 + ], + [ + -0.008366091176867485, + -0.0011190441437065601, + -0.0011813186574727297, + 0.04819102957844734, + 0.005909530911594629, + -0.0020593050867319107, + 0.2803594172000885, + 0.02559395506978035, + -0.03755733743309975, + -0.013136299327015877, + 0.004474475048482418, + 0.0016335932305082679, + 0.0001675706444075331, + -0.004079562146216631, + -0.016033874824643135, + -0.014860597439110279, + 0.0033417351078242064, + -0.003095644759014249, + 0.08017106354236603, + 0.11622492969036102, + 0.007717156782746315, + -0.022529728710651398, + -0.002644079504534602, + -0.27519118785858154, + 0.5334027409553528, + -0.6859394907951355, + -0.002025752095505595, + 9.041941186668095e-15, + 0.0037635548505932093, + 0.0011986400932073593, + 1.1134924362762866e-12, + -1.3462052653179235e-11, + -0.002893769182264805, + -7.674038885990003e-27, + 1.1145026868962455e-26, + -2.8069643160026653e-27, + -4.95055824047268e-27, + 2.1196361263338153e-27, + -2.2173607006069402e-27, + 0.0009755520732142031, + 0.003022748976945877, + 0.0005298093310557306, + -0.014395808801054955, + 0.001182115520350635, + 0.01771550066769123, + -0.0008101803250610828, + 0.0003401712456252426, + 0.00033873150823637843, + -0.002910631475970149, + 0.07481085509061813, + -0.0027653027791529894, + 0.05880668759346008, + -0.01401598285883665, + -0.0189046710729599, + -0.0029192916117608547, + -0.042650919407606125, + -0.01587936468422413, + 0.024435587227344513, + 0.07037915289402008, + -0.0011698014568537474, + -0.0011700926115736365, + 0.12125305831432343, + -0.07980982959270477, + -0.15325306355953217, + 0.042727045714855194, + 0.0031664068810641766, + -0.012008057907223701, + -0.01813785545527935, + -0.0019882675260305405, + -0.0028986474499106407, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.004092408809810877, + -0.004092408809810877, + -0.004092408809810877, + -0.004092408809810877, + -0.004092408809810877, + -0.004092408809810877, + -0.004092408809810877, + -0.004092408809810877, + -0.004092408809810877, + -0.004092408809810877, + -0.004092408809810877, + -0.004092408809810877, + -0.004092408809810877 + ], + [ + 0.015189500525593758, + 0.0024724018294364214, + -0.001691890531219542, + 0.032461825758218765, + 0.007589434273540974, + -0.005807292647659779, + 0.43604370951652527, + -0.040272004902362823, + -0.01660822331905365, + -6.944470078451559e-05, + -0.006389008369296789, + -0.00864961463958025, + 0.0030137901194393635, + -0.020190708339214325, + -0.005445322021842003, + 0.01127359364181757, + 0.04847146198153496, + 0.0008773633162491024, + 0.04591409116983414, + 0.047685328871011734, + 0.0010711164213716984, + -0.0036323354579508305, + 0.0005128227057866752, + 0.013591645285487175, + 0.028616679832339287, + -0.01918264478445053, + -0.00011808618728537112, + -1.06768367476133e-14, + 0.00021944192121736705, + 6.989049870753661e-05, + 6.492450620090157e-14, + -7.849331536309567e-13, + -0.00016872603737283498, + -3.715850407953054e-26, + 5.361729800606173e-26, + -1.3476899704795766e-26, + -2.3769956796119528e-26, + 1.0177411931511108e-26, + -1.0646619310514371e-26, + -0.0026732191909104586, + 0.002639907179400325, + 0.0003509690286591649, + -0.004497954156249762, + 0.001518400153145194, + 0.01391225028783083, + -0.00770233292132616, + 0.0002292227727593854, + 0.00022633798653259873, + -0.0051920791156589985, + 0.0672755017876625, + -0.0060542128048837185, + 0.07957940548658371, + 0.010872959159314632, + -0.05108710750937462, + -0.04074537754058838, + 0.022777903825044632, + 0.03817138075828552, + -0.03631632775068283, + 0.17828553915023804, + -0.0002406095154583454, + -0.0002506726887077093, + -0.5780364274978638, + 0.14358381927013397, + 0.5992012619972229, + -0.07238521426916122, + 0.10271885246038437, + 0.029439304023981094, + 0.12049929797649384, + -0.04278050735592842, + -0.0173643846064806, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.00023861647059675306, + -0.00023861647059675306, + -0.00023861647059675306, + -0.00023861647059675306, + -0.00023861647059675306, + -0.00023861647059675306, + -0.00023861647059675306, + -0.00023861647059675306, + -0.00023861647059675306, + -0.00023861647059675306, + -0.00023861647059675306, + -0.00023861647059675306, + -0.00023861647059675306 + ], + [ + -0.007728592958301306, + -0.08337012678384781, + 0.003680539084598422, + -0.23659497499465942, + 0.016366340219974518, + -0.021081823855638504, + 0.34059572219848633, + -0.05667958781123161, + -0.12493502348661423, + 0.052053630352020264, + -0.005782719235867262, + -0.004669330082833767, + 0.0026668973732739687, + -0.008583690971136093, + -0.010539949871599674, + 0.01429983600974083, + 0.06047661229968071, + 0.0016386633506044745, + -0.19348172843456268, + -0.7390073537826538, + -7.816137076588348e-05, + -0.015198157168924809, + -0.006267625372856855, + 0.005912872962653637, + 0.08090515434741974, + 0.06765758991241455, + -0.002487014979124069, + -3.836687911817904e-14, + 0.004620349500328302, + 0.001471503870561719, + 1.3669855178366497e-12, + -1.6526766066782272e-11, + -0.003552566049620509, + -2.6469779601696886e-22, + 3.3087224502121107e-22, + -8.401053096241687e-23, + -1.4823335070891679e-22, + 6.346611912266295e-23, + -6.639295716410119e-23, + -0.0004974568728357553, + 0.002956324489787221, + 0.0010778148425742984, + -0.02118249610066414, + 0.0023434441536664963, + 0.02715962752699852, + -0.007088696118444204, + 0.0003401297435630113, + 0.00033768132561817765, + -0.0381266213953495, + 0.018648600205779076, + -0.0039572990499436855, + 0.052491847425699234, + 0.08245587348937988, + -0.07901084423065186, + -0.10969128459692001, + -0.011002987623214722, + -5.5417753173969686e-05, + -0.10374065488576889, + -0.08970670402050018, + 0.005049663130193949, + 0.005061611067503691, + -0.05734695866703987, + 0.15761709213256836, + -0.30010583996772766, + -0.1272418200969696, + 0.06053149327635765, + -0.055881377309560776, + 0.041512031108140945, + 0.0565471388399601, + 0.057435549795627594, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.005024069454520941, + -0.005024069454520941, + -0.005024069454520941, + -0.005024069454520941, + -0.005024069454520941, + -0.005024069454520941, + -0.005024069454520941, + -0.005024069454520941, + -0.005024069454520941, + -0.005024069454520941, + -0.005024069454520941, + -0.005024069454520941, + -0.005024069454520941 + ], + [ + 0.006845617201179266, + -0.028690356761217117, + -0.032719191163778305, + 0.2189045399427414, + 0.01042286865413189, + -0.0234263576567173, + 0.06739220023155212, + 0.10848457366228104, + 0.0852045789361, + -0.08528231829404831, + 0.009091287851333618, + 0.009996549226343632, + 0.00016849159146659076, + 0.05052374675869942, + 0.002799498848617077, + -0.09436578303575516, + -0.21149155497550964, + -0.0017046320717781782, + 0.2732904255390167, + -0.4641171097755432, + 0.0007772356038913131, + -0.0027620114851742983, + -0.0038888491690158844, + 0.018619976937770844, + 0.06601566076278687, + 0.03284776583313942, + -0.0042800214141607285, + 1.488809076022335e-13, + 0.007951751351356506, + 0.002532512880861759, + 2.3526319781197458e-12, + -2.844302571247681e-11, + -0.006114051677286625, + -8.131516293641283e-20, + 1.1519648082658485e-19, + -2.9116757561866574e-20, + -5.128850670073793e-20, + 2.196102487782347e-20, + -2.297297695970553e-20, + -0.0026458799839019775, + 0.0060500409454107285, + -0.003073512576520443, + -0.06386964023113251, + 0.0037501284386962652, + 0.076802097260952, + -0.004639146383851767, + 0.0007686649914830923, + 0.0007611645851284266, + 0.18672604858875275, + 0.05023374408483505, + 0.0005883491830900311, + -0.047643691301345825, + -0.22312061488628387, + 0.16472508013248444, + 0.36898329854011536, + 0.0696997344493866, + 0.060372497886419296, + 0.11051338165998459, + -0.16611894965171814, + -0.006221963092684746, + -0.006223063915967941, + 0.05428596958518028, + -0.29525822401046753, + 0.21716953814029694, + 0.24610696732997894, + -0.024783937260508537, + 0.23307988047599792, + 0.013146638870239258, + -0.001603239681571722, + -0.03329649567604065, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.00864656362682581, + -0.00864656362682581, + -0.00864656362682581, + -0.00864656362682581, + -0.00864656362682581, + -0.00864656362682581, + -0.00864656362682581, + -0.00864656362682581, + -0.00864656362682581, + -0.00864656362682581, + -0.00864656362682581, + -0.00864656362682581, + -0.00864656362682581 + ], + [ + -0.07781612128019333, + -0.030811117962002754, + -0.04022647440433502, + 0.20619012415409088, + 0.025070367380976677, + -0.03158979490399361, + -0.0840519443154335, + 0.280884325504303, + -0.07456386089324951, + -0.059604521840810776, + 0.011064145714044571, + 0.011679313145577908, + -0.0012931731762364507, + -0.02145431376993656, + -0.01658676750957966, + -0.09746919572353363, + -0.09631150960922241, + -0.0023766602389514446, + 0.1550368368625641, + -0.06536708027124405, + 8.019453525776044e-05, + -0.0007346317288465798, + -0.0015222921501845121, + -0.11403128504753113, + -0.1496754288673401, + 0.0006157737225294113, + -0.01662987843155861, + -1.715433350923945e-13, + 0.03089589625597, + 0.009839910082519054, + 9.14092065928962e-12, + -1.1051311948895304e-10, + -0.023755628615617752, + -1.0164395367051604e-20, + 2.6893296075324036e-20, + -6.88214269644119e-21, + -1.206194769224825e-20, + 5.1646055520513974e-21, + -5.402765713807046e-21, + 0.012265626341104507, + 0.009289904497563839, + 0.004201200790703297, + -0.12261415272951126, + 0.007100370246917009, + 0.12496454268693924, + -0.002478836802765727, + 0.0020643582101911306, + 0.002059046644717455, + -0.20651137828826904, + 0.06836479902267456, + 0.012005852535367012, + -0.038124531507492065, + 0.1914743185043335, + -0.2514912784099579, + -0.36358341574668884, + -0.48384901881217957, + 0.014242884702980518, + 0.21494042873382568, + -0.07547986507415771, + 0.001546077779494226, + 0.0015314447227865458, + -0.23880234360694885, + -0.2041926085948944, + -0.12256893515586853, + 0.15180042386054993, + 0.10284842550754547, + 0.03708365932106972, + 0.06528075039386749, + -0.0221756212413311, + -0.02007063291966915, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.03359553590416908, + -0.03359553590416908, + -0.03359553590416908, + -0.03359553590416908, + -0.03359553590416908, + -0.03359553590416908, + -0.03359553590416908, + -0.03359553590416908, + -0.03359553590416908, + -0.03359553590416908, + -0.03359553590416908, + -0.03359553590416908, + -0.03359553590416908 + ], + [ + 0.04764239490032196, + -0.02741927094757557, + -0.00955104548484087, + 0.3168470561504364, + -0.012490330263972282, + 0.015093508176505566, + -0.029726224020123482, + -0.363648921251297, + -0.04779540374875069, + -0.029153069481253624, + -0.011269655078649521, + -0.0038683584425598383, + -0.0026792471762746572, + -0.04105323553085327, + -0.020589087158441544, + -0.06582243740558624, + -0.2254859060049057, + 0.0009811954805627465, + 0.315417617559433, + 0.035444699227809906, + 0.009507291950285435, + -0.01602686382830143, + 0.005098547786474228, + 0.32125574350357056, + 0.4693302810192108, + 0.27735331654548645, + 0.0033961560111492872, + -1.608019273291461e-13, + -0.006309889256954193, + -0.002009614137932658, + -1.866895527058432e-12, + 2.257017489570856e-11, + 0.004851625766605139, + -6.505213034913027e-19, + 7.318364664277155e-19, + -1.8338263308055602e-19, + -3.2616062425210902e-19, + 1.3962808739895107e-19, + -1.4607389232227054e-19, + 0.002079505007714033, + -0.012454149313271046, + 0.0032053422182798386, + 0.04516449570655823, + -0.0019778916612267494, + -0.06484156847000122, + 0.0013161624083295465, + -0.0008891739416867495, + -0.0008826234261505306, + -0.12292726337909698, + -0.08732190728187561, + -0.0015163080533966422, + 0.12342918664216995, + 0.11384262889623642, + -0.04179950803518295, + -0.23002855479717255, + 0.18927279114723206, + -0.07754414528608322, + 0.004099350888282061, + -0.08898036181926727, + -0.007379212416708469, + -0.007382824085652828, + -0.06760206818580627, + 0.009142225608229637, + -0.12996159493923187, + 0.00783183891326189, + 0.05918845906853676, + -0.11122602224349976, + 0.009870205074548721, + -0.0217730812728405, + -0.016145460307598114, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.006861238274723291, + 0.006861238274723291, + 0.006861238274723291, + 0.006861238274723291, + 0.006861238274723291, + 0.006861238274723291, + 0.006861238274723291, + 0.006861238274723291, + 0.006861238274723291, + 0.006861238274723291, + 0.006861238274723291, + 0.006861238274723291, + 0.006861238274723291 + ], + [ + -0.05170358717441559, + 0.0107714319601655, + 0.004938964731991291, + -0.2525336444377899, + 0.008866620250046253, + -0.006802612915635109, + -0.04773283377289772, + 0.4157913625240326, + 0.029183290898799896, + -0.02618657425045967, + 0.01219604630023241, + 0.00947375688701868, + 0.00023104097635950893, + 0.05524054914712906, + 0.02333786152303219, + 0.045729439705610275, + 0.1531675159931183, + 0.002483631717041135, + -0.22343051433563232, + 0.10714128613471985, + 0.014637836255133152, + -0.01006680354475975, + 0.00969704706221819, + 0.36278560757637024, + 0.5741952061653137, + 0.2906043231487274, + -0.003745218738913536, + 8.970602038971265e-14, + 0.006958056706935167, + 0.002216043882071972, + 2.0586865545624278e-12, + -2.4888632821351564e-11, + -0.005349999293684959, + -9.75781955236954e-19, + 1.0164395367051604e-18, + -2.668153783851046e-19, + -4.760325163569168e-19, + 2.0373789359426093e-19, + -2.1318057387686002e-19, + 0.0010014441795647144, + 0.009381944313645363, + -0.001784676220268011, + -0.03767150267958641, + 0.0012823365395888686, + 0.05006224662065506, + 0.001441778615117073, + 0.0007507867412641644, + 0.0007466599927283823, + 0.03695032373070717, + 0.060910556465387344, + 0.002131312619894743, + -0.11044499278068542, + -0.023539990186691284, + -0.026121623814105988, + 0.09501305967569351, + -0.23227417469024658, + 0.04328189417719841, + 0.01993444189429283, + 0.09033186733722687, + 0.00910408329218626, + 0.009113959036767483, + -0.01834847591817379, + -0.08050490915775299, + 0.04507184401154518, + 0.03981225937604904, + -0.01319693773984909, + 0.1065777912735939, + 0.007432076148688793, + 0.025209931656718254, + 0.0035670700017362833, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.007566042244434357, + -0.007566042244434357, + -0.007566042244434357, + -0.007566042244434357, + -0.007566042244434357, + -0.007566042244434357, + -0.007566042244434357, + -0.007566042244434357, + -0.007566042244434357, + -0.007566042244434357, + -0.007566042244434357, + -0.007566042244434357, + -0.007566042244434357 + ], + [ + 0.11744624376296997, + -0.04348212108016014, + 0.035522203892469406, + -0.07524600625038147, + -0.026752416044473648, + 0.04841119423508644, + 0.012568538077175617, + 0.2767130136489868, + -0.21128787100315094, + -0.006766737438738346, + 0.015545159578323364, + 0.00646859360858798, + 0.002492411993443966, + 0.26041239500045776, + -0.08588402718305588, + 0.029061343520879745, + 0.0031002694740891457, + 0.0036362677346915007, + 0.00704682944342494, + 0.11292629688978195, + -0.004292192868888378, + -0.010240007191896439, + -0.004009874537587166, + -0.027206724509596825, + -0.0871892049908638, + -0.0011118309339508414, + 0.009592141024768353, + 2.8257951534271797e-13, + -0.017821144312620163, + -0.005675783380866051, + -5.2725879218229466e-12, + 6.374537009357084e-11, + 0.013702549040317535, + -4.336808689942018e-19, + 4.0657581468206416e-19, + -1.0122043719688889e-19, + -1.8073565512038633e-19, + 7.741748789006297e-20, + -8.099256249751715e-20, + 0.005234776996076107, + -0.0022811938542872667, + -0.0021325566340237856, + 0.10645754635334015, + -0.009573380462825298, + -0.12496405094861984, + 0.026412593200802803, + -0.002168264240026474, + -0.00215343595482409, + 0.024513203650712967, + -0.15911388397216797, + -0.034256462007761, + 0.07990569621324539, + -0.09291412681341171, + 0.07251302897930145, + -0.040215060114860535, + 0.4159305691719055, + -0.11778691411018372, + -0.06352277845144272, + 0.11102727800607681, + 0.0001871164422482252, + 0.00018433456716593355, + -0.34085381031036377, + -0.21941828727722168, + -0.3585546910762787, + 0.14595432579517365, + 0.24811196327209473, + 0.2726026475429535, + 0.13372887670993805, + 0.03499919921159744, + 0.02445601113140583, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.019378330558538437, + 0.019378330558538437, + 0.019378330558538437, + 0.019378330558538437, + 0.019378330558538437, + 0.019378330558538437, + 0.019378330558538437, + 0.019378330558538437, + 0.019378330558538437, + 0.019378330558538437, + 0.019378330558538437, + 0.019378330558538437, + 0.019378330558538437 + ], + [ + -0.0876300036907196, + -0.026399753987789154, + -0.0133485933765769, + 0.05648360028862953, + 0.008038938045501709, + -0.0352306105196476, + -0.015575788915157318, + -0.2897969186306, + -0.3569059669971466, + -0.10339274257421494, + -0.008248642086982727, + -0.005841128993779421, + -0.0015110736712813377, + -0.13267502188682556, + -0.041116006672382355, + -0.02234157733619213, + 0.006336600985378027, + 0.0019434005953371525, + 0.03218395262956619, + 0.1564151495695114, + -0.0007510044961236417, + -0.017854301258921623, + -0.0016235284274443984, + 0.01103054266422987, + -0.025017397478222847, + 0.06753947585821152, + -0.004251082427799702, + 2.211841820809468e-13, + 0.007897893898189068, + 0.0025153665337711573, + 2.3367002777163748e-12, + -2.8250377731575682e-11, + -0.0060726348310709, + -6.505213034913027e-19, + 5.963111948670274e-19, + -1.4060746924421386e-19, + -2.4923944472957787e-19, + 1.0685850025205033e-19, + -1.117173591701868e-19, + -0.00887648481875658, + 0.017841093242168427, + -0.002927323803305626, + -0.08799861371517181, + 0.008041869848966599, + 0.12390398234128952, + -0.01252394076436758, + 0.0014520678669214249, + 0.0014346176758408546, + 0.3477432131767273, + 0.15409384667873383, + 0.011726627126336098, + -0.1318800449371338, + -0.10248660296201706, + 0.07693176716566086, + 0.4144367277622223, + -0.2799433767795563, + 0.026325974613428116, + 0.07290979474782944, + 0.06469044834375381, + -0.0002479619870427996, + -0.00025547127006575465, + -0.2270626425743103, + 0.09966100007295609, + -0.3142445683479309, + -0.044127512723207474, + 0.21999932825565338, + -0.11919877678155899, + 0.14903657138347626, + 0.005414656363427639, + 0.052837248891592026, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.008588000200688839, + -0.008588000200688839, + -0.008588000200688839, + -0.008588000200688839, + -0.008588000200688839, + -0.008588000200688839, + -0.008588000200688839, + -0.008588000200688839, + -0.008588000200688839, + -0.008588000200688839, + -0.008588000200688839, + -0.008588000200688839, + -0.008588000200688839 + ], + [ + 0.026678744703531265, + -0.039698563516139984, + -0.015421401709318161, + 0.44460609555244446, + -0.0011268542148172855, + -0.06773482263088226, + 0.022417213767766953, + 0.5763617753982544, + 0.01886148378252983, + 0.16475367546081543, + 0.0007458752952516079, + 0.00640350766479969, + 0.0008723348728381097, + -0.0266419667750597, + -0.02374853566288948, + 0.026635201647877693, + -0.07855601608753204, + 0.0019370317459106445, + 0.07169683277606964, + -0.017660779878497124, + -0.0015360938850790262, + -0.002269756281748414, + -0.0022582863457500935, + -0.004492488224059343, + -0.002833837876096368, + 0.019976045936346054, + 0.014036417938768864, + 9.037215420448774e-14, + -0.026078006252646446, + -0.00830548070371151, + -7.715494909632525e-12, + 9.327980055040541e-11, + 0.02005118690431118, + -3.469446951953614e-18, + 2.8189256484623115e-18, + -8.402566836762659e-19, + -1.5043305143236374e-18, + 6.479802046495398e-19, + -6.761440501457452e-19, + -0.035449132323265076, + 0.015982504934072495, + -0.00805711094290018, + 0.03849662095308304, + 0.004452412482351065, + 0.047094885259866714, + -0.06236284598708153, + 2.7042220608564094e-05, + 9.444856914342381e-06, + 0.1680346131324768, + 0.03366812318563461, + -0.026044998317956924, + -0.01736941933631897, + 0.013966241851449013, + 0.004455059301108122, + 0.08611515164375305, + 0.10536383092403412, + 0.0010859462199732661, + -0.16989824175834656, + -0.04948805645108223, + 0.008007675409317017, + 0.00801104586571455, + 0.016543477773666382, + 0.27350160479545593, + -0.09022343903779984, + -0.33977004885673523, + 0.03553740680217743, + -0.3041553497314453, + -0.0005944992299191654, + -0.1317843496799469, + -0.09802424907684326, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.02835666388273239, + 0.02835666388273239, + 0.02835666388273239, + 0.02835666388273239, + 0.02835666388273239, + 0.02835666388273239, + 0.02835666388273239, + 0.02835666388273239, + 0.02835666388273239, + 0.02835666388273239, + 0.02835666388273239, + 0.02835666388273239, + 0.02835666388273239 + ], + [ + -0.05930893495678902, + 0.005488715600222349, + -0.02436906285583973, + -0.59116530418396, + -0.04633363336324692, + 0.12166734039783478, + 0.012281534262001514, + 0.19243116676807404, + -0.11528906971216202, + -0.09230778366327286, + -0.0005012954352423549, + 0.0037917818408459425, + -0.00041314688860438764, + -0.13296417891979218, + 0.025044215843081474, + -0.11308135092258453, + -0.46065470576286316, + -0.012486875057220459, + 0.4216702878475189, + 0.031216908246278763, + 0.006335825193673372, + 0.0030051125213503838, + -0.004238504450768232, + -0.015485085546970367, + -0.026509501039981842, + -0.009233130142092705, + -0.010973741300404072, + 5.631883848167263e-13, + 0.020387845113873482, + 0.0064932298846542835, + 6.031952715090938e-12, + -7.292613735110365e-11, + -0.015676075592637062, + -2.7755575615628914e-17, + 1.734723475976807e-18, + -2.168404344971009e-18, + -5.204170427930421e-18, + 2.0599841277224584e-18, + -2.15485181781494e-18, + 0.05855283886194229, + 0.015742499381303787, + 0.0018922477029263973, + 0.04956841468811035, + -0.01847749389708042, + -0.15309420228004456, + 0.132549449801445, + -0.0017388482810929418, + -0.0017109697218984365, + 0.0047505442053079605, + -0.0575789250433445, + -0.014343616552650928, + -0.0357130691409111, + 0.06106004863977432, + 0.018646463751792908, + 0.0516744926571846, + 0.003470826428383589, + 0.012547526508569717, + 0.03012590855360031, + 0.027342045679688454, + -0.004644334316253662, + -0.004652470350265503, + 0.013195623643696308, + 0.08034004271030426, + 0.0339554101228714, + -0.11644995957612991, + -0.017448484897613525, + -0.17930114269256592, + -0.01521011907607317, + -0.12294408679008484, + -0.0990789532661438, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.02216930501163006, + -0.02216930501163006, + -0.02216930501163006, + -0.02216930501163006, + -0.02216930501163006, + -0.02216930501163006, + -0.02216930501163006, + -0.02216930501163006, + -0.02216930501163006, + -0.02216930501163006, + -0.02216930501163006, + -0.02216930501163006, + -0.02216930501163006 + ], + [ + 0.034256551414728165, + -0.2126363068819046, + -0.06746198236942291, + -0.18310002982616425, + 0.05010620504617691, + -0.0966804176568985, + 0.000330624490743503, + -0.05183428153395653, + 0.7009097933769226, + 0.05570308119058609, + 0.000901424849871546, + 0.0007356933783739805, + 0.0005515656084753573, + 0.0519583635032177, + 6.105813372414559e-05, + -4.217115929350257e-05, + -0.14548884332180023, + -0.00018426566384732723, + 0.016811182722449303, + 0.05249687284231186, + 0.0018006761092692614, + -0.001003360841423273, + -0.007144920062273741, + 0.005275543313473463, + -0.007469406817108393, + -0.027766471728682518, + 0.009691709652543068, + -1.013633621482768e-12, + -0.018005594611167908, + -0.005734540987759829, + -5.3274884503906605e-12, + 6.440581401534473e-11, + 0.013844361528754234, + 0.0, + 4.163336342344337e-17, + 0.0, + -1.3877787807814457e-17, + 5.204170427930421e-18, + -8.239936510889834e-18, + -0.06479854136705399, + -0.08156216144561768, + -0.0057227048091590405, + -0.14216144382953644, + 0.021522507071495056, + 0.17493553459644318, + -0.14482195675373077, + 0.0009838714031502604, + 0.0009595336159691215, + 0.24005793035030365, + 0.022637056186795235, + 0.08205285668373108, + 0.07625891268253326, + 0.08031491935253143, + 0.0819208174943924, + -0.0268348827958107, + 0.004612520802766085, + -0.25811830163002014, + 0.2101365178823471, + 0.027797166258096695, + -0.0029540329705923796, + -0.002954356838017702, + -0.20552174746990204, + 0.033312007784843445, + -0.18154367804527283, + -0.03720616176724434, + 0.07167066633701324, + -0.05561027303338051, + 0.03341732546687126, + 0.07814373075962067, + 0.026990415528416634, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.019578898325562477, + 0.019578898325562477, + 0.019578898325562477, + 0.019578898325562477, + 0.019578898325562477, + 0.019578898325562477, + 0.019578898325562477, + 0.019578898325562477, + 0.019578898325562477, + 0.019578898325562477, + 0.019578898325562477, + 0.019578898325562477, + 0.019578898325562477 + ], + [ + -0.06738943606615067, + -0.23874862492084503, + -0.011760417371988297, + -0.061376772820949554, + -0.004791471641510725, + 0.013934778049588203, + 0.004884127993136644, + 0.009923449717462063, + 0.0776415467262268, + -0.08327336609363556, + 0.000113050096842926, + -0.0008132873335853219, + 0.00033824911224655807, + -0.21830469369888306, + -0.3319859206676483, + -0.04865634813904762, + 0.35487058758735657, + 0.004477419424802065, + 0.17475025355815887, + -0.017599938437342644, + 0.0005104179144836962, + -0.024664800614118576, + -0.002598766004666686, + 0.038108378648757935, + -0.012941695749759674, + 0.018558267503976822, + -0.00931948609650135, + 8.786582572639645e-13, + 0.01731414906680584, + 0.005514322314411402, + 5.122735569074166e-12, + -6.193153628819559e-11, + -0.013312716968357563, + 2.7755575615628914e-17, + 5.551115123125783e-17, + 0.0, + -5.551115123125783e-17, + 2.7755575615628914e-17, + 0.0, + 0.00789417140185833, + 0.03740016743540764, + -0.012044934555888176, + 0.012240499258041382, + -0.008917050436139107, + -0.005845119711011648, + 0.03150003030896187, + -0.00025836736313067377, + -0.00022082572104409337, + -0.11425715684890747, + -0.029490046203136444, + -0.12568366527557373, + -0.02192864380776882, + -0.6195645332336426, + 0.04701058566570282, + -0.19266998767852783, + -0.05597072094678879, + -0.24668888747692108, + 0.007123696617782116, + -0.05986815690994263, + -0.0006919871084392071, + -0.0006977199809625745, + 0.028434565290808678, + 0.02479807287454605, + -0.009305465966463089, + -0.03224003687500954, + 0.043036334216594696, + -0.07606286555528641, + 0.01709965243935585, + -0.18151289224624634, + -0.17065154016017914, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.018827036023139954, + -0.018827036023139954, + -0.018827036023139954, + -0.018827036023139954, + -0.018827036023139954, + -0.018827036023139954, + -0.018827036023139954, + -0.018827036023139954, + -0.018827036023139954, + -0.018827036023139954, + -0.018827036023139954, + -0.018827036023139954, + -0.018827036023139954 + ], + [ + -0.062384191900491714, + 0.1625244915485382, + 0.03175423666834831, + 0.1928054243326187, + -0.06892187893390656, + 0.2711363732814789, + 0.04222458600997925, + 0.08780742436647415, + 0.2961558997631073, + -0.6198632121086121, + 0.008008765988051891, + 0.0026185151655226946, + -0.001564846490509808, + -0.14459525048732758, + 0.06693767011165619, + -0.07563356310129166, + 0.16725899279117584, + -0.011122931726276875, + -0.10066920518875122, + -0.07313045859336853, + -0.005666804034262896, + 0.00843772478401661, + 0.0042678844183683395, + -0.011252457275986671, + -0.007921485230326653, + -0.01582467183470726, + -0.021398555487394333, + 7.748940378249358e-13, + 0.03975599631667137, + 0.01266174390912056, + 1.1761730478454524e-11, + -1.4220476185489161e-10, + -0.0305680800229311, + -5.724587470723463e-17, + 0.0, + -1.1102230246251565e-16, + -5.551115123125783e-17, + 1.1102230246251565e-16, + -2.7755575615628914e-17, + 0.11895015090703964, + -0.009916611015796661, + 0.003669368801638484, + 0.06794748455286026, + -0.037449415773153305, + -0.3009282052516937, + 0.25764328241348267, + -0.002874600701034069, + -0.002827949356287718, + 0.07701234519481659, + -0.11632237583398819, + 0.03569953888654709, + -0.006736866198480129, + 0.11074353009462357, + 0.06113994121551514, + 0.049285370856523514, + 0.015228535048663616, + 0.005065704695880413, + 0.015697352588176727, + 0.03615985065698624, + 0.006185663398355246, + 0.006156511139124632, + -0.09487223625183105, + 0.02484179101884365, + -0.09927327185869217, + -0.054753612726926804, + 0.024547070264816284, + -0.10340060293674469, + 0.011771401390433311, + 0.09621115773916245, + 0.0869850441813469, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.04322981834411621, + -0.04322981834411621, + -0.04322981834411621, + -0.04322981834411621, + -0.04322981834411621, + -0.04322981834411621, + -0.04322981834411621, + -0.04322981834411621, + -0.04322981834411621, + -0.04322981834411621, + -0.04322981834411621, + -0.04322981834411621, + -0.04322981834411621 + ], + [ + 0.11169850826263428, + 0.08624473214149475, + -0.11450286954641342, + -0.08212261646986008, + 0.028874259442090988, + -0.14267340302467346, + -0.03273367881774902, + 0.10469008982181549, + -0.25549426674842834, + -0.2955339848995209, + 0.002713416237384081, + 0.002608058974146843, + -0.0014129907358437777, + 0.07368859648704529, + -0.0069569614715874195, + -0.06825938075780869, + 0.24992354214191437, + -0.002380401361733675, + 0.07363908737897873, + -0.017402812838554382, + -0.0013602524995803833, + 0.01483013853430748, + 0.011550509370863438, + 0.007619520183652639, + 0.006085566245019436, + 0.003915759269148111, + 0.0073645953088998795, + -8.598677325721837e-14, + -0.013682719320058823, + -0.004357738886028528, + -4.048317236993171e-12, + 4.8942738750668013e-11, + 0.010520556010305882, + -2.7755575615628914e-17, + 5.551115123125783e-17, + -6.938893903907228e-18, + -2.7755575615628914e-17, + 2.7755575615628914e-17, + 0.0, + -0.0486111082136631, + -0.07685725390911102, + 0.0017343121580779552, + -0.19979634881019592, + 0.022629514336586, + 0.2963786721229553, + -0.12383314222097397, + 0.0009383568540215492, + 0.0009144672658294439, + 0.043723031878471375, + -0.18850480020046234, + -0.07048729062080383, + 0.22391867637634277, + 0.06021055579185486, + 0.07030559331178665, + -0.06599819660186768, + 0.24386002123355865, + 0.10840511322021484, + 0.5386586785316467, + -0.005187097005546093, + -0.011777006089687347, + -0.011810943484306335, + 0.09066605567932129, + 0.07377422600984573, + 0.08725463598966599, + -0.11865495145320892, + -0.05327041819691658, + -0.159443661570549, + -0.03975484520196915, + 0.03967595100402832, + 0.08077381551265717, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.014878294430673122, + 0.014878294430673122, + 0.014878294430673122, + 0.014878294430673122, + 0.014878294430673122, + 0.014878294430673122, + 0.014878294430673122, + 0.014878294430673122, + 0.014878294430673122, + 0.014878294430673122, + 0.014878294430673122, + 0.014878294430673122, + 0.014878294430673122 + ], + [ + 0.04316558688879013, + -0.20040108263492584, + 0.0011089679319411516, + -0.041441887617111206, + 0.0774073600769043, + -0.2612297534942627, + -0.009214249439537525, + 0.006335542071610689, + 0.0688791498541832, + -0.522470235824585, + 0.005810791160911322, + -0.00012245278048794717, + -0.0008498973329551518, + -0.10284712165594101, + -0.009730271995067596, + 0.08003652840852737, + -0.2549869120121002, + 0.01077705342322588, + -0.05479871854186058, + 0.05099127069115639, + 0.006459137424826622, + -0.005091041326522827, + -0.011357291601598263, + -0.0011021130485460162, + -0.027842039242386818, + -0.013198399916291237, + 0.026675991714000702, + -7.072120666862247e-13, + -0.04956118389964104, + -0.01578455977141857, + -1.4663395497827025e-11, + 1.7727826151503479e-10, + 0.038107216358184814, + 8.326672684688674e-17, + 4.163336342344337e-17, + -1.3877787807814457e-17, + -1.3877787807814457e-17, + -2.7755575615628914e-17, + 2.7755575615628914e-17, + -0.13343942165374756, + 0.09062463790178299, + -0.01629418507218361, + 0.10771343111991882, + 0.02665816619992256, + 0.17757369577884674, + -0.2518199682235718, + 0.0016933187143877149, + 0.001635729568079114, + -0.13120996952056885, + 0.05423645302653313, + -0.15183280408382416, + -0.06949390470981598, + -0.15526741743087769, + -0.15990376472473145, + -0.05757598951458931, + 0.04731110483407974, + 0.3076838254928589, + -0.3232801556587219, + 0.08569473773241043, + 0.024346964433789253, + 0.024351274594664574, + 0.009011917747557163, + -0.027333056554198265, + -0.032604314386844635, + 0.02116488479077816, + -0.01817135326564312, + -0.0019522650400176644, + 0.00633148243650794, + 0.11948245763778687, + 0.10507086664438248, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.05389176681637764, + 0.05389176681637764, + 0.05389176681637764, + 0.05389176681637764, + 0.05389176681637764, + 0.05389176681637764, + 0.05389176681637764, + 0.05389176681637764, + 0.05389176681637764, + 0.05389176681637764, + 0.05389176681637764, + 0.05389176681637764, + 0.05389176681637764 + ], + [ + 0.03853968158364296, + 0.10884230583906174, + 0.026844825595617294, + -0.1006113812327385, + 0.0034454776905477047, + -0.06555004417896271, + -0.02539736218750477, + -0.11161284893751144, + 0.1704067587852478, + -0.06586455553770065, + -0.0017558929976075888, + -0.002627525944262743, + -3.988329990534112e-05, + 0.07992253452539444, + 0.0385296605527401, + 0.011885402724146843, + 0.2820779085159302, + -0.007971452549099922, + 0.10725445300340652, + -0.024867994710803032, + 0.004853395279496908, + 0.01498901192098856, + 0.006166440900415182, + 0.0007331614033319056, + 0.004828710108995438, + -0.010248958133161068, + 0.009197159670293331, + -1.146610584257246e-12, + -0.017086723819375038, + -0.0054418593645095825, + -5.0552340091769565e-12, + 6.111844363942964e-11, + 0.0131378760561347, + 0.0, + 1.1102230246251565e-16, + -2.0816681711721685e-17, + 0.0, + 5.551115123125783e-17, + -1.3877787807814457e-17, + -0.02971973642706871, + -0.017519107088446617, + 0.003855619579553604, + 0.011498741805553436, + 0.00857789721339941, + 0.006185548380017281, + -0.06482162326574326, + 0.000633746269159019, + 0.0005885717691853642, + 0.06214875727891922, + 0.05483986809849739, + 0.08462339639663696, + -0.030552884563803673, + 0.1897357553243637, + -0.04887054115533829, + 0.032618798315525055, + 0.07219716161489487, + 0.4209028482437134, + -0.07207895815372467, + -0.07183343172073364, + 0.006103288382291794, + 0.006086132489144802, + -0.09261790663003922, + -0.08706962317228317, + -0.15187989175319672, + 0.06952402740716934, + 0.0307156965136528, + 0.009186860173940659, + 0.036664023995399475, + -0.5180085301399231, + -0.5021392703056335, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.018579736351966858, + 0.018579736351966858, + 0.018579736351966858, + 0.018579736351966858, + 0.018579736351966858, + 0.018579736351966858, + 0.018579736351966858, + 0.018579736351966858, + 0.018579736351966858, + 0.018579736351966858, + 0.018579736351966858, + 0.018579736351966858, + 0.018579736351966858 + ], + [ + 0.08204368501901627, + 0.1731446087360382, + -0.0182290431112051, + 0.013665099628269672, + 0.018539350479841232, + -0.10046646744012833, + -0.026083480566740036, + -0.02552223764359951, + -0.17351441085338593, + -0.28715139627456665, + 0.0017922258703038096, + -0.00040038119186647236, + -0.00035490599111653864, + -0.05016759783029556, + 0.11504146456718445, + 0.0848747119307518, + -0.17162670195102692, + -0.0025262690614908934, + -0.27272406220436096, + -0.07161232829093933, + 0.0034329164773225784, + 0.023299822583794594, + 0.011303912848234177, + -0.02227211557328701, + 0.008450377732515335, + -0.01328238658607006, + 0.012057841755449772, + 4.875544412641375e-13, + -0.022401627153158188, + -0.007134587503969669, + -6.6280279875652326e-12, + 8.012918106814482e-11, + 0.017224468290805817, + -2.7755575615628914e-17, + 1.3877787807814457e-17, + 1.1102230246251565e-16, + 6.505213034913027e-19, + 0.0, + 2.7755575615628914e-17, + -0.030607575550675392, + -0.003923223819583654, + 0.0039031393826007843, + -0.007314491085708141, + 0.01233106479048729, + 0.10460303723812103, + -0.06462426483631134, + -0.00021645311790052801, + -0.00018104015907738358, + 0.08240250498056412, + -0.009334723465144634, + -0.0306343212723732, + 0.0029406221583485603, + 0.10310641676187515, + -0.060162484645843506, + 0.008446087129414082, + -0.023903172463178635, + -0.6625460982322693, + -0.07769119739532471, + 0.043969832360744476, + 0.010398488491773605, + 0.010386364534497261, + 0.044147733598947525, + -0.08560611307621002, + 0.11371548473834991, + 0.057015858590602875, + 0.002819767687469721, + -0.0028829367365688086, + -0.0580068863928318, + -0.2942149341106415, + -0.30791574716567993, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.024359051138162613, + 0.024359051138162613, + 0.024359051138162613, + 0.024359051138162613, + 0.024359051138162613, + 0.024359051138162613, + 0.024359051138162613, + 0.024359051138162613, + 0.024359051138162613, + 0.024359051138162613, + 0.024359051138162613, + 0.024359051138162613, + 0.024359051138162613 + ], + [ + -0.06716323643922806, + -0.015176764689385891, + -0.024409059435129166, + 0.11903798580169678, + -0.007753458805382252, + 0.0656476840376854, + 0.020616669207811356, + -0.03492555394768715, + 0.03242357075214386, + 0.07362594455480576, + -0.0023954943753778934, + -0.001417828258126974, + -0.00017571804346516728, + -0.03819354623556137, + -0.0815085843205452, + 0.036047033965587616, + -0.43941691517829895, + 0.032258182764053345, + -0.48861101269721985, + -7.416019798256457e-05, + 0.007571782451122999, + -0.01977604813873768, + -0.009904169477522373, + -0.004651802591979504, + 0.019787905737757683, + 0.0021541102323681116, + -0.012057474814355373, + 8.814199370377196e-13, + 0.02240198478102684, + 0.007134704384952784, + 6.627406956560833e-12, + -8.013065211365245e-11, + -0.01722472719848156, + 4.163336342344337e-17, + 5.551115123125783e-17, + 1.1102230246251565e-16, + -2.7755575615628914e-17, + -5.551115123125783e-17, + 0.0, + 0.06181854009628296, + -0.13108272850513458, + -0.0021015640813857317, + -0.13542313873767853, + -0.022111909464001656, + -0.019238684326410294, + 0.11740285158157349, + -0.000371868401998654, + -0.00034957434399984777, + -0.18193595111370087, + -0.14387616515159607, + -0.04915660247206688, + 0.14281973242759705, + -0.26860475540161133, + 0.17904379963874817, + -0.02411775477230549, + -0.0020601749420166016, + 0.28677043318748474, + 0.26968005299568176, + 0.18584345281124115, + 0.007561725098639727, + 0.00756616797298193, + -0.03210208937525749, + 0.024959160014986992, + -0.0635361298918724, + -0.02922135964035988, + 0.03045273944735527, + -0.035676322877407074, + 0.03212128207087517, + -0.19966918230056763, + -0.2034635692834854, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.024359432980418205, + -0.024359432980418205, + -0.024359432980418205, + -0.024359432980418205, + -0.024359432980418205, + -0.024359432980418205, + -0.024359432980418205, + -0.024359432980418205, + -0.024359432980418205, + -0.024359432980418205, + -0.024359432980418205, + -0.024359432980418205, + -0.024359432980418205 + ] + ], + "encoded_input_dim": 140, + "mean": [ + -0.010634142905473709, + 0.056608956307172775, + 0.0572563111782074, + 0.7604517340660095, + 0.11315243691205978, + 0.03482051193714142, + 0.08955748379230499, + -0.0053392089903354645, + 0.02204631268978119, + 0.05831008777022362, + -1.0967743396759033, + -0.5423644781112671, + -0.27207469940185547, + -0.021432911977171898, + -0.008900946006178856, + -0.11227908730506897, + 0.7354849576950073, + 0.0003533019917085767, + 0.2370520830154419, + 0.23403042554855347, + -0.0010782002937048674, + 0.0057747564278542995, + 0.0034331646747887135, + 0.043552279472351074, + -0.02616506814956665, + -0.011841392144560814, + -0.2024962306022644, + 2.91038298062124e-13, + -0.7663765549659729, + 0.7559386491775513, + 4.53479996609385e-11, + -5.482543308232835e-10, + 0.589259922504425, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + -0.5134562253952026, + 0.0657612755894661, + 0.008587519638240337, + 0.48768356442451477, + 0.014867561869323254, + 0.3822880983352661, + 0.13157354295253754, + 0.004941494669765234, + 0.004944906570017338, + 0.02016887627542019, + -0.04027227312326431, + 0.016343748196959496, + -0.0019311634823679924, + -0.013069219887256622, + 0.37820231914520264, + 0.03484316170215607, + -1.576539397239685, + 0.006656243000179529, + 2.0437493324279785, + 0.08760439604520798, + 0.018343565985560417, + 0.018346967175602913, + 0.009281089529395103, + 0.34724321961402893, + -0.030798060819506645, + 0.08700264245271683, + -0.045663367956876755, + 0.24090532958507538, + -0.072051502764225, + -0.0072078094817698, + -0.02014041133224964, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 0.8333333134651184, + 0.8333333134651184, + 0.8333333134651184, + 0.8333333134651184, + 0.8333333134651184, + 0.8333333134651184, + 0.8333333134651184, + 0.8333333134651184, + 0.8333333134651184, + 0.8333333134651184, + 0.8333333134651184, + 0.8333333134651184, + 0.8333333134651184 + ], + "method": "train_split_pca_standardized", + "output_dim": 32, + "raw_input_dim": 70, + "scale": [ + 7.6479597091674805, + 6.800845146179199, + 4.303369522094727, + 2.428558349609375, + 1.6685186624526978, + 1.5334241390228271, + 1.1043930053710938, + 0.7665870785713196, + 0.7313748002052307, + 0.6281603574752808, + 0.5484201312065125, + 0.5021082162857056, + 0.47317689657211304, + 0.445694237947464, + 0.41110771894454956, + 0.3320724070072174, + 0.3014792501926422, + 0.29494109749794006, + 0.2723846435546875, + 0.267343133687973, + 0.25177496671676636, + 0.23485739529132843, + 0.2058505415916443, + 0.177432119846344, + 0.16502965986728668, + 0.14961080253124237, + 0.1467713713645935, + 0.13825903832912445, + 0.1367480605840683, + 0.13011839985847473, + 0.11349403113126755, + 0.10745701938867569 + ], + "state_vectorization": "right_zero_pad_plus_validity_mask" + }, + "trainable_parameters": 99880992, + "training_losses": [ + 1.1676948070526123, + 0.6497068405151367, + 0.4265829920768738, + 1.0592600107192993, + 0.4688650369644165, + 0.7258111238479614, + 0.6003483533859253, + 0.48628485202789307, + 0.5061243772506714, + 0.41319355368614197, + 0.4170148968696594, + 0.38549062609672546, + 0.6488516926765442, + 0.32852286100387573, + 0.4813322424888611, + 0.444707453250885, + 0.7038055658340454, + 0.67229163646698, + 0.42834287881851196, + 0.4291791319847107, + 0.9696183800697327, + 0.45879077911376953, + 0.5311608910560608, + 0.5839967727661133, + 0.6291602253913879, + 0.5381404757499695, + 0.40443503856658936, + 0.3095071017742157, + 0.5828569531440735, + 0.8522820472717285, + 0.3345695734024048, + 0.363203227519989, + 0.42780572175979614, + 0.4685305953025818, + 0.48437970876693726, + 0.49726733565330505, + 0.2932574152946472, + 0.4293547570705414, + 0.4596598744392395, + 0.5307748317718506, + 0.3711506128311157, + 0.4155687093734741, + 0.20648640394210815, + 0.12423643469810486, + 0.27511996030807495, + 0.4388335049152374, + 0.369880735874176, + 0.43804457783699036, + 0.25307291746139526, + 0.3373062014579773, + 0.21706488728523254, + 0.49691155552864075, + 0.31339460611343384, + 0.28444862365722656, + 0.36420905590057373, + 0.3943978548049927, + 0.3200118839740753, + 0.27250760793685913, + 0.33625566959381104, + 0.34034761786460876, + 0.22104781866073608, + 0.22657829523086548, + 0.45812416076660156, + 0.33466678857803345, + 0.524996817111969, + 0.39007484912872314, + 0.3783608078956604, + 0.37963467836380005, + 0.23781035840511322, + 0.31722134351730347, + 0.3410072326660156, + 0.3368871808052063, + 0.3246345818042755, + 0.385969877243042, + 0.39538681507110596, + 0.46373099088668823, + 0.33329761028289795, + 0.2602175176143646, + 0.27242183685302734, + 0.2011057585477829, + 0.29533565044403076, + 0.38614001870155334, + 0.3247067630290985, + 0.20522373914718628, + 0.31018874049186707, + 0.41956251859664917, + 0.3136429190635681, + 0.425092875957489, + 0.40499067306518555, + 0.3417591452598572, + 0.4612193703651428, + 0.2844722867012024, + 0.34130868315696716, + 0.4164886772632599, + 0.5067241191864014, + 0.4774448275566101, + 0.3045823574066162, + 0.29497748613357544, + 0.3455316424369812, + 0.34580451250076294, + 0.16919875144958496, + 0.38849973678588867, + 0.20079873502254486, + 0.3863757848739624, + 0.39453577995300293, + 0.3307757079601288, + 0.3313713073730469, + 0.2433100789785385, + 0.33202582597732544, + 0.18125462532043457, + 0.4247853755950928, + 0.5259015560150146, + 0.584337055683136, + 0.46457016468048096, + 0.44879502058029175, + 0.3132793605327606, + 0.3554070293903351, + 0.5149505138397217, + 0.5484674572944641, + 0.29211458563804626, + 0.387271523475647, + 0.36930984258651733, + 0.4104295074939728, + 0.3542957603931427, + 0.28961342573165894, + 0.4218081533908844, + 0.4282488226890564, + 0.45910975337028503, + 0.28448033332824707, + 0.5588304996490479, + 0.40379226207733154, + 0.21338611841201782, + 0.5758305788040161, + 0.4648541212081909, + 0.4893881380558014, + 0.19657234847545624, + 0.30065369606018066, + 0.24705444276332855, + 0.33225470781326294, + 0.22146812081336975, + 0.19210413098335266, + 0.43460556864738464, + 0.3824387490749359, + 0.13800102472305298, + 0.29237836599349976, + 0.792522668838501, + 0.5520352125167847, + 0.44423186779022217, + 0.34510543942451477, + 0.3784821629524231, + 0.34530675411224365, + 0.2723683714866638, + 0.3415600061416626, + 0.18776217103004456, + 0.3295007050037384, + 0.2950626015663147, + 0.21560138463974, + 0.42598509788513184, + 0.2496587485074997, + 0.2556719183921814, + 0.23741669952869415, + 0.2699950039386749, + 0.42729946970939636, + 0.3127489686012268, + 0.17932270467281342, + 0.25401878356933594, + 0.3044126629829407, + 0.21414721012115479, + 0.41197967529296875, + 0.45978525280952454, + 0.39419329166412354, + 0.44097018241882324, + 0.24413317441940308, + 0.2986351549625397, + 0.2549826502799988, + 0.26768022775650024, + 0.23345957696437836, + 0.21673837304115295, + 0.4145328402519226, + 0.23484385013580322, + 0.3639269769191742, + 0.40599867701530457, + 0.3779575824737549, + 0.37668073177337646, + 0.2524588406085968, + 0.31641221046447754, + 0.39783644676208496, + 0.30318352580070496, + 0.2827398180961609, + 0.26917189359664917, + 0.2332092523574829, + 0.2461726814508438, + 0.20406538248062134, + 0.21677295863628387, + 0.33777478337287903, + 0.3814047574996948, + 0.24992424249649048, + 0.24793404340744019, + 0.1812022179365158, + 0.2630992829799652, + 0.5359546542167664, + 0.19327601790428162, + 0.2026141732931137, + 0.30760133266448975, + 0.3282025456428528, + 0.1832309365272522, + 0.24147404730319977, + 0.29277491569519043, + 0.3824063539505005, + 0.34679466485977173, + 0.19903826713562012, + 0.27386051416397095, + 0.27046775817871094, + 0.19065600633621216, + 0.24362485110759735, + 0.22226282954216003, + 0.3192744255065918, + 0.17106977105140686, + 0.3220664858818054, + 0.4224320352077484, + 0.26418793201446533, + 0.1596534699201584, + 0.1730385422706604, + 0.28401973843574524, + 0.07762277871370316, + 0.24175690114498138, + 0.20122863352298737, + 0.15196925401687622, + 0.1860208809375763, + 0.2749900817871094, + 0.2186141014099121, + 0.437613844871521, + 0.19282689690589905, + 0.30633991956710815, + 0.2527637481689453, + 0.17659741640090942, + 0.17723819613456726, + 0.11612221598625183, + 0.42704683542251587, + 0.41437217593193054, + 0.19426675140857697, + 0.26666951179504395, + 0.23158329725265503, + 0.397479385137558, + 0.3109046518802643, + 0.3429715037345886, + 0.3772802948951721, + 0.23100796341896057, + 0.26203981041908264, + 0.38150590658187866, + 0.36904728412628174, + 0.33709728717803955, + 0.3771951198577881, + 0.19907709956169128, + 0.17307312786579132, + 0.470270037651062, + 0.4883336126804352, + 0.2506491243839264, + 0.4643671214580536, + 0.21961329877376556, + 0.31669965386390686, + 0.29090142250061035, + 0.4060588479042053, + 0.38450783491134644, + 0.34700751304626465, + 0.32523828744888306, + 0.32990896701812744, + 0.28467339277267456, + 0.2693755030632019, + 0.21429800987243652, + 0.2898072898387909, + 0.20180827379226685, + 0.3311588168144226, + 0.23009715974330902, + 0.3612101078033447, + 0.3164447546005249, + 0.3408083915710449, + 0.11965350806713104, + 0.2777954936027527, + 0.29369455575942993, + 0.15501773357391357, + 0.3085487484931946, + 0.22452127933502197, + 0.424852192401886, + 0.19879168272018433, + 0.26017680764198303, + 0.2913983166217804, + 0.23972541093826294, + 0.18070411682128906, + 0.2581167221069336, + 0.2489633560180664, + 0.21604694426059723, + 0.12098412215709686, + 0.23561373353004456, + 0.2449021339416504, + 0.19064810872077942, + 0.20068426430225372, + 0.3589458763599396, + 0.47867244482040405, + 0.1757178008556366, + 0.35539260506629944, + 0.16862961649894714, + 0.24554038047790527, + 0.1539195328950882, + 0.39007970690727234, + 0.3714703619480133, + 0.21235518157482147, + 0.18458643555641174, + 0.13582660257816315, + 0.19860640168190002, + 0.14347799122333527, + 0.2904406189918518, + 0.15445038676261902, + 0.293259859085083, + 0.20900267362594604, + 0.2487785667181015, + 0.23064619302749634, + 0.19196215271949768, + 0.3173045516014099, + 0.2613755166530609, + 0.16291646659374237, + 0.23454394936561584, + 0.28762251138687134, + 0.24499425292015076, + 0.1441200077533722, + 0.22363515198230743, + 0.2038973867893219, + 0.2233765572309494, + 0.14956778287887573, + 0.2803899943828583, + 0.13119076192378998, + 0.3177010715007782, + 0.17841410636901855, + 0.2481905221939087, + 0.3765169084072113, + 0.22311407327651978, + 0.21485823392868042, + 0.15577012300491333, + 0.20769695937633514, + 0.22369791567325592, + 0.30286675691604614, + 0.4864262342453003, + 0.24793434143066406, + 0.2510664761066437, + 0.370930552482605, + 0.1810992956161499, + 0.2952037751674652, + 0.15990714728832245, + 0.19884365797042847, + 0.4905744194984436, + 0.49416685104370117, + 0.2162667065858841, + 0.1115676611661911, + 0.18557006120681763, + 0.36669421195983887, + 0.3783358335494995, + 0.38363489508628845, + 0.1817508488893509, + 0.32429832220077515, + 0.24820365011692047, + 0.2372015118598938, + 0.3973502814769745, + 0.40707361698150635, + 0.19164618849754333, + 0.22864601016044617, + 0.20184564590454102, + 0.255738765001297, + 0.20584753155708313, + 0.3375821113586426, + 0.39400655031204224, + 0.22309741377830505, + 0.2679714560508728, + 0.39598366618156433, + 0.13105495274066925, + 0.4073922038078308, + 0.14621467888355255, + 0.22184596955776215, + 0.22036752104759216, + 0.23647120594978333, + 0.6329737305641174, + 0.12920458614826202, + 0.21344861388206482, + 0.1598571091890335, + 0.14107120037078857, + 0.2457326054573059, + 0.16452574729919434, + 0.13258469104766846, + 0.30300992727279663, + 0.3928891718387604, + 0.23102164268493652, + 0.24334174394607544, + 0.26128333806991577, + 0.3283158838748932, + 0.2882763743400574, + 0.22126686573028564, + 0.14268821477890015, + 0.12519949674606323, + 0.1400013267993927, + 0.40567487478256226, + 0.11201446503400803, + 0.19900178909301758, + 0.1737632304430008, + 0.19722412526607513, + 0.28073930740356445, + 0.21655210852622986, + 0.2855319082736969, + 0.12461237609386444, + 0.3151480555534363, + 0.26596546173095703, + 0.3220738172531128, + 0.39024171233177185, + 0.1417694240808487, + 0.2934539318084717, + 0.09562817215919495, + 0.13137152791023254, + 0.2190639227628708, + 0.21780797839164734, + 0.26861387491226196, + 0.24028083682060242, + 0.18668967485427856, + 0.20742137730121613, + 0.24928122758865356, + 0.580712080001831, + 0.17282089591026306, + 0.2266470193862915, + 0.2662385106086731, + 0.27068445086479187, + 0.23971667885780334, + 0.306415855884552, + 0.1340416818857193, + 0.18835926055908203, + 0.35153043270111084, + 0.37398070096969604, + 0.2073577344417572, + 0.16941598057746887, + 0.2678612470626831, + 0.17797303199768066, + 0.22695952653884888, + 0.2946320176124573, + 0.31331080198287964, + 0.18844512104988098, + 0.42933857440948486, + 0.25761640071868896, + 0.21795183420181274, + 0.1809368133544922, + 0.2662700116634369, + 0.37014079093933105, + 0.20953017473220825, + 0.22960320115089417, + 0.3371022343635559, + 0.13556385040283203, + 0.32453638315200806, + 0.19455301761627197, + 0.2691726088523865, + 0.16296207904815674, + 0.16053661704063416, + 0.2318914383649826, + 0.1132531464099884, + 0.25343963503837585, + 0.11855718493461609, + 0.14766262471675873, + 0.19149714708328247, + 0.2815466523170471, + 0.33428746461868286, + 0.49930647015571594, + 0.18477162718772888, + 0.19667941331863403, + 0.21894638240337372, + 0.19939854741096497, + 0.13885605335235596, + 0.5003819465637207, + 0.15298938751220703, + 0.24798715114593506, + 0.24526256322860718, + 0.19373655319213867, + 0.19946345686912537, + 0.4663854241371155, + 0.30962350964546204, + 0.2901335656642914, + 0.18115124106407166, + 0.4039350152015686, + 0.2027161866426468, + 0.20608367025852203, + 0.22314882278442383, + 0.20964179933071136, + 0.19724535942077637, + 0.18617120385169983, + 0.23631028831005096, + 0.13031679391860962, + 0.1308784931898117, + 0.2070772647857666, + 0.24443894624710083, + 0.12951447069644928, + 0.19061869382858276, + 0.2839924693107605, + 0.17501327395439148, + 0.3277215361595154, + 0.21861734986305237, + 0.2376340925693512, + 0.14487095177173615, + 0.3218664526939392, + 0.4186013340950012, + 0.167229562997818, + 0.48294320702552795, + 0.29250144958496094, + 0.157058984041214, + 0.30976516008377075, + 0.21923047304153442, + 0.2362671047449112, + 0.22670109570026398, + 0.2366236299276352, + 0.14413312077522278, + 0.18569570779800415, + 0.3539869487285614, + 0.37940287590026855, + 0.2044859230518341, + 0.2893669605255127, + 0.25782448053359985, + 0.13709279894828796, + 0.19199024140834808, + 0.2628486454486847, + 0.22435085475444794, + 0.34552550315856934, + 0.27933838963508606, + 0.3420497477054596, + 0.27778178453445435, + 0.28258180618286133, + 0.2927253544330597, + 0.5302075147628784, + 0.1654171198606491, + 0.20787867903709412, + 0.1783493459224701, + 0.2339373230934143, + 0.42724335193634033, + 0.25114738941192627, + 0.09178382903337479, + 0.22247692942619324, + 0.14051426947116852, + 0.16036532819271088, + 0.12751106917858124, + 0.30725955963134766, + 0.2253602296113968, + 0.36128339171409607, + 0.13080190122127533, + 0.1728651225566864, + 0.16634932160377502, + 0.22424590587615967, + 0.1108262687921524, + 0.38072121143341064, + 0.22739318013191223, + 0.19592930376529694, + 0.36848676204681396, + 0.2387230098247528, + 0.2379179298877716, + 0.1298540234565735, + 0.14553609490394592, + 0.27371945977211, + 0.16144505143165588, + 0.261026531457901, + 0.1936573088169098, + 0.2752262353897095, + 0.4302822947502136, + 0.16993549466133118, + 0.34241408109664917, + 0.35928159952163696, + 0.10660918802022934, + 0.19705986976623535, + 0.21200373768806458, + 0.3574490547180176, + 0.2241107076406479, + 0.3124440908432007, + 0.2762366235256195, + 0.16435731947422028, + 0.2901562452316284, + 0.2008827030658722, + 0.21252994239330292, + 0.1889800876379013, + 0.16376084089279175, + 0.3192618489265442, + 0.16633623838424683, + 0.18131589889526367, + 0.1563592404127121, + 0.3325003385543823, + 0.2810875475406647, + 0.24432045221328735, + 0.20906899869441986, + 0.18416020274162292, + 0.1826028674840927, + 0.2117181271314621, + 0.2619202136993408, + 0.16467823088169098, + 0.3437096178531647, + 0.31104934215545654, + 0.122979074716568, + 0.17142684757709503, + 0.14930912852287292, + 0.40115806460380554, + 0.2054537534713745, + 0.1520732045173645, + 0.3465604782104492, + 0.21849238872528076, + 0.14441217482089996, + 0.18882252275943756, + 0.24324765801429749, + 0.24351975321769714, + 0.4946439862251282, + 0.2044689953327179, + 0.21101945638656616, + 0.20001566410064697, + 0.21270446479320526, + 0.10073935985565186, + 0.10901366174221039, + 0.15311172604560852, + 0.33192506432533264, + 0.0932217687368393, + 0.2565520107746124, + 0.19152018427848816, + 0.29205450415611267, + 0.32224786281585693, + 0.20979607105255127, + 0.17469346523284912, + 0.18356575071811676, + 0.3293987810611725, + 0.15834423899650574, + 0.33362191915512085, + 0.07346439361572266, + 0.20899252593517303, + 0.3504052758216858, + 0.20313145220279694, + 0.1570628136396408, + 0.16724461317062378, + 0.20873689651489258, + 0.3407520055770874, + 0.1537453830242157, + 0.2302379012107849, + 0.5382002592086792, + 0.10882124304771423, + 0.19074544310569763, + 0.17153841257095337, + 0.34962475299835205, + 0.21258226037025452, + 0.28493043780326843, + 0.18394821882247925, + 0.15388810634613037, + 0.17971481382846832, + 0.21412378549575806, + 0.22890782356262207, + 0.17444974184036255, + 0.12400753051042557, + 0.43169695138931274, + 0.30906444787979126, + 0.2431851327419281, + 0.14230023324489594, + 0.16815851628780365, + 0.28706690669059753, + 0.21689322590827942, + 0.17032954096794128, + 0.09686072915792465, + 0.18769985437393188, + 0.15629172325134277, + 0.24631761014461517, + 0.14470185339450836, + 0.1319996565580368, + 0.1697579324245453, + 0.14015576243400574, + 0.34668782353401184, + 0.2829791307449341, + 0.32119104266166687, + 0.166100412607193, + 0.19517366588115692, + 0.17637331783771515, + 0.2045217752456665, + 0.3483165502548218, + 0.17778436839580536, + 0.11767259985208511, + 0.3345232903957367, + 0.10189173370599747, + 0.19911697506904602, + 0.2261834591627121, + 0.30660879611968994, + 0.26291999220848083, + 0.255820631980896, + 0.16282325983047485, + 0.21763025224208832, + 0.22005556523799896, + 0.21814164519309998, + 0.15567004680633545, + 0.2112916111946106, + 0.1573236882686615, + 0.4854563772678375, + 0.3495527505874634, + 0.2206605225801468, + 0.17529039084911346, + 0.12122999131679535, + 0.169167160987854, + 0.40050578117370605, + 0.10340277850627899, + 0.21680369973182678, + 0.22093018889427185, + 0.3127893805503845, + 0.3957228660583496, + 0.1574784517288208, + 0.22071340680122375, + 0.11627742648124695, + 0.12477922439575195, + 0.23878450691699982, + 0.37244874238967896, + 0.4521469175815582, + 0.2336120456457138, + 0.10709106922149658, + 0.12841719388961792, + 0.165939599275589, + 0.4502921998500824, + 0.21725548803806305, + 0.19429010152816772, + 0.24550093710422516, + 0.23136398196220398, + 0.24719560146331787, + 0.12115201354026794, + 0.16507357358932495, + 0.15771445631980896, + 0.11222188174724579, + 0.2305431067943573, + 0.12510262429714203, + 0.2887539267539978, + 0.11430251598358154, + 0.1699393391609192, + 0.2553725838661194, + 0.1813780814409256, + 0.2520446181297302, + 0.0832974761724472, + 0.15081369876861572, + 0.10174526274204254, + 0.19539082050323486, + 0.20088836550712585, + 0.11679691821336746, + 0.12679752707481384, + 0.19633308053016663, + 0.22153757512569427, + 0.18450722098350525, + 0.19877946376800537, + 0.13296474516391754, + 0.22597774863243103, + 0.3281766474246979, + 0.1518074870109558, + 0.13902656733989716, + 0.2926194667816162, + 0.318151593208313, + 0.09639184176921844, + 0.1861957460641861, + 0.3367818593978882, + 0.2436227798461914, + 0.22163806855678558, + 0.16963067650794983, + 0.3087312877178192, + 0.1517033576965332, + 0.0598820261657238, + 0.2195756733417511, + 0.5442951917648315, + 0.3872811198234558, + 0.38659587502479553, + 0.30112579464912415, + 0.14171651005744934, + 0.18891847133636475, + 0.22281941771507263, + 0.1154424250125885, + 0.25115522742271423, + 0.11654698848724365, + 0.3808698058128357, + 0.1536589413881302, + 0.15220147371292114, + 0.16598175466060638, + 0.16175812482833862, + 0.2272213250398636, + 0.34597501158714294, + 0.3287469744682312, + 0.0949503481388092, + 0.1717933714389801, + 0.277523934841156, + 0.32820820808410645, + 0.15895476937294006, + 0.27238526940345764, + 0.09991219639778137, + 0.15354035794734955, + 0.12822912633419037, + 0.17543716728687286, + 0.09801562875509262, + 0.3501811921596527, + 0.22185653448104858, + 0.16663649678230286, + 0.11639758199453354, + 0.21506398916244507, + 0.09377127885818481, + 0.15584370493888855, + 0.25092247128486633, + 0.19597795605659485, + 0.1393977552652359, + 0.12320505827665329, + 0.2595716714859009, + 0.11877229064702988, + 0.14012163877487183, + 0.1736333966255188, + 0.162780299782753, + 0.18263453245162964, + 0.05860624462366104, + 0.27713480591773987, + 0.12189661711454391, + 0.14192073047161102, + 0.18259945511817932, + 0.22012211382389069, + 0.17633800208568573, + 0.18606817722320557, + 0.0938413143157959, + 0.22706685960292816, + 0.20159754157066345, + 0.18502011895179749, + 0.26651731133461, + 0.08840206265449524, + 0.09878166764974594, + 0.12373179197311401, + 0.2040935456752777, + 0.08315481245517731, + 0.07817058265209198, + 0.16869021952152252, + 0.147806316614151, + 0.16196930408477783, + 0.19217976927757263, + 0.25625643134117126, + 0.15830352902412415, + 0.17438359558582306, + 0.1393635869026184, + 0.09926897287368774, + 0.281377375125885, + 0.3770599365234375, + 0.17113488912582397, + 0.12046255171298981, + 0.0934320017695427, + 0.16895517706871033, + 0.33458009362220764, + 0.08919041603803635, + 0.18870826065540314, + 0.33836913108825684, + 0.2444867193698883, + 0.32291266322135925, + 0.17069002985954285, + 0.5397546887397766, + 0.1051880419254303, + 0.13954783976078033, + 0.14877572655677795, + 0.1248636245727539, + 0.15857498347759247, + 0.12324601411819458, + 0.44793951511383057, + 0.23582050204277039, + 0.2497071772813797, + 0.1289464384317398, + 0.2268783450126648, + 0.20395749807357788, + 0.20491282641887665, + 0.2831297516822815, + 0.20297175645828247, + 0.13873273134231567, + 0.16087259352207184, + 0.17212827503681183, + 0.0953991562128067, + 0.3898247480392456, + 0.3032417893409729, + 0.11175519973039627, + 0.2875506281852722, + 0.21398046612739563, + 0.12830811738967896, + 0.14083968102931976, + 0.2972894012928009, + 0.21215909719467163, + 0.44271472096443176, + 0.3088798522949219, + 0.2045627236366272, + 0.2547227740287781, + 0.3200996518135071, + 0.06704965978860855, + 0.12912437319755554, + 0.27107369899749756, + 0.12160750478506088, + 0.20084941387176514, + 0.12739898264408112, + 0.3335071802139282, + 0.10009977966547012, + 0.07825015485286713, + 0.17058798670768738, + 0.2522132694721222, + 0.231123149394989, + 0.14109660685062408, + 0.1485511213541031, + 0.255191445350647, + 0.05750148743391037, + 0.1887274980545044, + 0.1474664807319641, + 0.2115415781736374, + 0.2081030160188675, + 0.15634068846702576, + 0.3079553246498108, + 0.14709870517253876, + 0.051647305488586426, + 0.29970788955688477, + 0.1966628134250641, + 0.08855423331260681, + 0.23740273714065552, + 0.09980128705501556, + 0.09843023121356964, + 0.3231455087661743, + 0.08146949112415314, + 0.1677493304014206, + 0.3841918110847473, + 0.17269422113895416, + 0.21422548592090607, + 0.28332650661468506, + 0.21903249621391296, + 0.18857917189598083, + 0.20956271886825562, + 0.06858329474925995, + 0.11355310678482056, + 0.32532286643981934, + 0.12968727946281433, + 0.46097710728645325, + 0.17285819351673126, + 0.40199583768844604, + 0.3213024437427521, + 0.15420985221862793, + 0.13903436064720154, + 0.1781727522611618, + 0.13599181175231934, + 0.24453938007354736, + 0.25450241565704346, + 0.12214037030935287, + 0.26525697112083435, + 0.17957375943660736, + 0.3000493049621582, + 0.30755865573883057, + 0.23994497954845428, + 0.2168225347995758, + 0.20643699169158936, + 0.31324630975723267, + 0.22658076882362366, + 0.17479825019836426, + 0.18958501517772675, + 0.2628447413444519, + 0.15188488364219666, + 0.2375255525112152, + 0.11848811060190201, + 0.19174638390541077, + 0.19236096739768982, + 0.28497302532196045, + 0.2083507627248764, + 0.23337501287460327, + 0.12267977744340897, + 0.2667624056339264, + 0.1593530774116516, + 0.11240258067846298, + 0.278443843126297, + 0.25114259123802185, + 0.1674422323703766, + 0.1352960765361786, + 0.12894141674041748, + 0.17218917608261108, + 0.12394675612449646, + 0.253647118806839, + 0.10290729254484177, + 0.14798876643180847, + 0.1527380645275116, + 0.10975228250026703, + 0.2098216861486435, + 0.16819310188293457, + 0.07962843775749207, + 0.11957383900880814, + 0.11788206547498703, + 0.12337764352560043, + 0.17604731023311615, + 0.09305307269096375, + 0.16893400251865387, + 0.14240555465221405, + 0.2593865990638733, + 0.15986615419387817, + 0.10574576258659363, + 0.10629955679178238, + 0.1064593493938446, + 0.17416101694107056, + 0.147480309009552, + 0.13269861042499542, + 0.1620386838912964, + 0.18665000796318054, + 0.297687828540802, + 0.14625826478004456, + 0.13938573002815247, + 0.17332346737384796, + 0.27558520436286926, + 0.18871521949768066, + 0.15504923462867737, + 0.24520517885684967, + 0.19831793010234833, + 0.10882744938135147 + ] +} \ No newline at end of file diff --git a/outputs/external_vla/smolvla_cil_balanced_metrics.json b/outputs/external_vla/smolvla_cil_balanced_metrics.json new file mode 100644 index 0000000000000000000000000000000000000000..ca90473ead003534887a798f5b842655882cd516 --- /dev/null +++ b/outputs/external_vla/smolvla_cil_balanced_metrics.json @@ -0,0 +1,47 @@ +{ + "candidate_oracle_success_rate": 0.4533333333333333, + "evaluation_protocol": "nearest_executed_same_state_candidate", + "final_train_loss": 0.10882744938135147, + "mean_selected_regret": 0.17654996168634776, + "model_family": "smolvla", + "normalized_action_mse_to_selected": 0.3356558305242409, + "num_eval_groups": 600, + "num_train_groups": 2400, + "per_task": { + "LiftPegUpright-v1": { + "num_groups": 100, + "selected_reward_mean": 1.1786985996365547, + "selected_success_rate": 0.47 + }, + "PegInsertionSide-v1": { + "num_groups": 100, + "selected_reward_mean": 0.2845203054515878, + "selected_success_rate": 0.01 + }, + "PickCube-v1": { + "num_groups": 100, + "selected_reward_mean": 0.8007295456156135, + "selected_success_rate": 0.21 + }, + "PullCube-v1": { + "num_groups": 100, + "selected_reward_mean": 1.3391107024252416, + "selected_success_rate": 0.61 + }, + "PushCube-v1": { + "num_groups": 100, + "selected_reward_mean": 1.2629673214256762, + "selected_success_rate": 0.59 + }, + "StackCube-v1": { + "num_groups": 100, + "selected_reward_mean": 0.8535422113537788, + "selected_success_rate": 0.25 + } + }, + "selected_reward_mean": 0.9532614476514087, + "selected_success_rate": 0.3566666666666667, + "top1_action_selection": 0.5416666666666666, + "training_mode": "expert_only_bc", + "training_steps": 1000 +} \ No newline at end of file diff --git a/outputs/external_vla/smolvla_cil_smoke_metrics.json b/outputs/external_vla/smolvla_cil_smoke_metrics.json new file mode 100644 index 0000000000000000000000000000000000000000..40bcdc33cf312c197ac2c85390f65cca09dbe2de --- /dev/null +++ b/outputs/external_vla/smolvla_cil_smoke_metrics.json @@ -0,0 +1,47 @@ +{ + "candidate_oracle_success_rate": 0.5, + "evaluation_protocol": "nearest_executed_same_state_candidate", + "final_train_loss": 0.8980979323387146, + "mean_selected_regret": 0.8765356718795374, + "model_family": "smolvla", + "normalized_action_mse_to_selected": 0.838577705125014, + "num_eval_groups": 12, + "num_train_groups": 52, + "per_task": { + "LiftPegUpright-v1": { + "num_groups": 2, + "selected_reward_mean": 0.5819069147109985, + "selected_success_rate": 0.0 + }, + "PegInsertionSide-v1": { + "num_groups": 2, + "selected_reward_mean": 0.03161212173290551, + "selected_success_rate": 0.0 + }, + "PickCube-v1": { + "num_groups": 2, + "selected_reward_mean": 0.5634382367134094, + "selected_success_rate": 0.0 + }, + "PullCube-v1": { + "num_groups": 2, + "selected_reward_mean": 0.14262327924370766, + "selected_success_rate": 0.0 + }, + "PushCube-v1": { + "num_groups": 2, + "selected_reward_mean": 0.07729745656251907, + "selected_success_rate": 0.0 + }, + "StackCube-v1": { + "num_groups": 2, + "selected_reward_mean": 0.6672812402248383, + "selected_success_rate": 0.0 + } + }, + "selected_reward_mean": 0.3440265415313964, + "selected_success_rate": 0.0, + "top1_action_selection": 0.0, + "training_mode": "expert_only_bc", + "training_steps": 2 +} \ No newline at end of file diff --git a/outputs/external_vla_export_maniskill_full_no_images/metadata.json b/outputs/external_vla_export_maniskill_full_no_images/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..e12a34d65e205d27e944fde71a1d6bc91e0bf411 --- /dev/null +++ b/outputs/external_vla_export_maniskill_full_no_images/metadata.json @@ -0,0 +1,12 @@ +{ + "action_encoding": "flattened numeric ActionChunk values plus full action_chunk payload", + "copy_images": false, + "external_vla_note": "This is a dependency-light interchange export for external VLA baselines. It is not a measured SmolVLA/OpenVLA result by itself.", + "image_format": "jpg", + "num_episodes": 3500, + "num_tasks": 6, + "schema_version": "dovla-cil-lerobot-export/v0", + "selection": "best", + "source_dataset": "/scratch/knguy52/dovla/experiments/maniskill_presuccess_six_task_collection", + "split": "train" +} diff --git a/outputs/external_vla_export_maniskill_full_no_images/tasks.jsonl b/outputs/external_vla_export_maniskill_full_no_images/tasks.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..e7a7a115aff19acc209a6d98075e0e6fb1ac7d1a --- /dev/null +++ b/outputs/external_vla_export_maniskill_full_no_images/tasks.jsonl @@ -0,0 +1,6 @@ +{"instructions": ["Lift the peg and hold it upright."], "task_id": "LiftPegUpright-v1", "task_index": 0} +{"instructions": ["Insert the peg into the hole from the side."], "task_id": "PegInsertionSide-v1", "task_index": 1} +{"instructions": ["Pick up the cube and move it to the goal position."], "task_id": "PickCube-v1", "task_index": 2} +{"instructions": ["Pull the cube into the goal region."], "task_id": "PullCube-v1", "task_index": 3} +{"instructions": ["Push the cube into the goal region."], "task_id": "PushCube-v1", "task_index": 4} +{"instructions": ["Stack cube A on top of cube B."], "task_id": "StackCube-v1", "task_index": 5} diff --git a/outputs/external_vla_export_maniskill_full_no_images/train.jsonl b/outputs/external_vla_export_maniskill_full_no_images/train.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..c89bfe55ed7030d124f63f585282d2dc7b3811e8 --- /dev/null +++ b/outputs/external_vla_export_maniskill_full_no_images/train.jsonl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8ee77311107c226c63b0d6aa936ed067d1f95d57578fd4c2fcb583489b036c2 +size 11038222 diff --git a/outputs/external_vla_export_smoke/metadata.json b/outputs/external_vla_export_smoke/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..0a209e2dc4bd2dc8188a8f6059b3275d3514225c --- /dev/null +++ b/outputs/external_vla_export_smoke/metadata.json @@ -0,0 +1,12 @@ +{ + "action_encoding": "flattened numeric ActionChunk values plus full action_chunk payload", + "copy_images": false, + "external_vla_note": "This is a dependency-light interchange export for external VLA baselines. It is not a measured SmolVLA/OpenVLA result by itself.", + "image_format": "jpg", + "num_episodes": 12, + "num_tasks": 1, + "schema_version": "dovla-cil-lerobot-export/v0", + "selection": "best", + "source_dataset": "/scratch/knguy52/dovla/experiments/maniskill_presuccess_six_task_collection", + "split": "train" +} diff --git a/outputs/external_vla_export_smoke/tasks.jsonl b/outputs/external_vla_export_smoke/tasks.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..3b93a75431e62da2a926f92c965f85bc7d33c460 --- /dev/null +++ b/outputs/external_vla_export_smoke/tasks.jsonl @@ -0,0 +1 @@ +{"instructions": ["Pick up the cube and move it to the goal position."], "task_id": "PickCube-v1", "task_index": 0} diff --git a/outputs/external_vla_export_smoke/train.jsonl b/outputs/external_vla_export_smoke/train.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..6d49248d3d0bb890cf660bc16bb6b0345287036e --- /dev/null +++ b/outputs/external_vla_export_smoke/train.jsonl @@ -0,0 +1,12 @@ +{"action": [-1.5628260374069214, -0.6760064363479614, -1.3670138120651245, 0.011951039545238018, -1.9163702726364136, -0.16114844381809235, 4.311707973480225, -0.9735527634620667, -0.7978972792625427, -1.2788859605789185, 0.10670334845781326, -1.6345019340515137, -0.05739933252334595, 4.201030254364014, 0.1259092390537262, -0.28991422057151794, -1.5478920936584473, -0.1543567031621933, -1.1837780475616455, -0.29051971435546875, 3.35263991355896, 0.18668514490127563, 0.30432724952697754, -1.7003849744796753, -0.2195604294538498, -0.8814301490783691, -0.7409264445304871, 1.4718676805496216], "action_chunk": {"action_id": "expert-00", "horizon": 4, "metadata": {"candidate_type": "expert", "parent_action_id": null, "perturbation": {"scale": 0.0}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[-1.5628260374069214, -0.6760064363479614, -1.3670138120651245, 0.011951039545238018, -1.9163702726364136, -0.16114844381809235, 4.311707973480225], [-0.9735527634620667, -0.7978972792625427, -1.2788859605789185, 0.10670334845781326, -1.6345019340515137, -0.05739933252334595, 4.201030254364014], [0.1259092390537262, -0.28991422057151794, -1.5478920936584473, -0.1543567031621933, -1.1837780475616455, -0.29051971435546875, 3.35263991355896], [0.18668514490127563, 0.30432724952697754, -1.7003849744796753, -0.2195604294538498, -0.8814301490783691, -0.7409264445304871, 1.4718676805496216]]}, "cil": {"candidate_type": "expert", "failure_type": "partial_success", "group_id": "ms-4d4a0c1d076355ffd0a1", "rank_within_group": 0, "record_id": "rec-5369e5cfdb2f93b06805f34f", "regret": 0.0, "scene_id": "episode-1020", "source_dataset": "/scratch/knguy52/dovla/experiments/maniskill_presuccess_full_k16_n1000_seed0", "state_hash": "278644b6ee28dc010fcab4b93e73e5db6191ac912db250f5290b2a1aaa37dd7f", "task_id": "PickCube-v1"}, "episode_index": 0, "frame_index": 0, "observation": {"cil_observation_ref": "observations.h5#initial_rgb_jpeg/0", "image": null, "state": {"features": [-0.0541839599609375, -0.08368682861328125, 0.019999999552965164, 0.9984005093574524, 0.0, 0.0, -0.056537654250860214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.048946380615234375, 0.0962677001953125, 0.25899022817611694, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.03468818590044975, 0.35614410042762756, -0.009833138436079025, -1.936769962310791, -0.002558882115408778, 2.3531911373138428, 0.7486944198608398, 0.03999999910593033, 0.03999999910593033, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}, "reward": 0.15335801243782043, "success": false, "task": "Pick up the cube and move it to the goal position.", "task_index": 0, "timestamp": 0.0} +{"action": [-0.40443557500839233, 0.15195327997207642, 0.3294371962547302, -0.5992763638496399, -0.7588088512420654, -0.49525174498558044, -2.4462406635284424, -0.30573686957359314, 0.04093547537922859, 0.2394212782382965, -0.3384755551815033, -0.6182968020439148, -0.4414074420928955, -2.423753261566162, -0.252510666847229, 0.03575673699378967, 0.03673635423183441, -0.09818130731582642, -0.4163699448108673, -0.18765880167484283, -2.4663844108581543, -0.1633390337228775, 0.09333082288503647, -0.03681729733943939, -0.14803244173526764, -0.23525601625442505, -0.27691468596458435, -2.556912422180176], "action_chunk": {"action_id": "near_miss-01", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.05}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[-0.40443557500839233, 0.15195327997207642, 0.3294371962547302, -0.5992763638496399, -0.7588088512420654, -0.49525174498558044, -2.4462406635284424], [-0.30573686957359314, 0.04093547537922859, 0.2394212782382965, -0.3384755551815033, -0.6182968020439148, -0.4414074420928955, -2.423753261566162], [-0.252510666847229, 0.03575673699378967, 0.03673635423183441, -0.09818130731582642, -0.4163699448108673, -0.18765880167484283, -2.4663844108581543], [-0.1633390337228775, 0.09333082288503647, -0.03681729733943939, -0.14803244173526764, -0.23525601625442505, -0.27691468596458435, -2.556912422180176]]}, "cil": {"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-bca92beb7317318ca011", "rank_within_group": 0, "record_id": "rec-c84aaef7d7f27c87cda914f7", "regret": 0.0, "scene_id": "episode-239", "source_dataset": "/scratch/knguy52/dovla/experiments/maniskill_presuccess_full_k16_n1000_seed0", "state_hash": "bcf14b521690851540ef326b8896075a439d2acc289bb49f5792e93926d54bcb", "task_id": "PickCube-v1"}, "episode_index": 1, "frame_index": 0, "observation": {"cil_observation_ref": "observations.h5#initial_rgb_jpeg/1", "image": null, "state": {"features": [-0.019093990325927734, 0.02045440673828125, 0.07436220347881317, 0.03399929031729698, -0.04998345673084259, 0.044870324432849884, -0.9971621036529541, -0.19499041140079498, 0.06917788833379745, 0.46193182468414307, -7.807628631591797, -0.9009962677955627, 8.998115539550781, -0.05489015579223633, 0.031215667724609375, 0.11114609241485596, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149997711181641, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.06863383203744888, 0.5815295577049255, 0.07980771362781525, -1.9120534658432007, 0.11882027238607407, 2.3517379760742188, 0.6964728236198425, 0.018981605768203735, 0.019019396975636482, -0.21386092901229858, -1.1971880197525024, 0.29311615228652954, -0.7713239789009094, 0.27112236618995667, -0.7388791441917419, -0.30363333225250244, 0.08629126101732254, 0.062452446669340134]}}, "reward": 0.6064264178276062, "success": false, "task": "Pick up the cube and move it to the goal position.", "task_index": 0, "timestamp": 0.0} +{"action": [0.25490814447402954, -0.043703995645046234, 1.0, -1.0, -0.7366626858711243, -1.0, -2.906116008758545, 0.3121466040611267, -0.019728688523173332, 1.0, -1.0, -0.7567026019096375, -1.0, -2.6152353286743164, 0.13707508146762848, -0.046043578535318375, 1.0, -0.9888929128646851, -0.6925053596496582, -0.9358696937561035, -2.3858416080474854, -0.09359025210142136, -0.02185366116464138, 0.9880052208900452, -0.7964281439781189, -0.6394259929656982, -0.6999186873435974, -2.129840850830078], "action_chunk": {"action_id": "near_miss-01", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.05}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.25490814447402954, -0.043703995645046234, 1.0, -1.0, -0.7366626858711243, -1.0, -2.906116008758545], [0.3121466040611267, -0.019728688523173332, 1.0, -1.0, -0.7567026019096375, -1.0, -2.6152353286743164], [0.13707508146762848, -0.046043578535318375, 1.0, -0.9888929128646851, -0.6925053596496582, -0.9358696937561035, -2.3858416080474854], [-0.09359025210142136, -0.02185366116464138, 0.9880052208900452, -0.7964281439781189, -0.6394259929656982, -0.6999186873435974, -2.129840850830078]]}, "cil": {"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-abe94723b59a97d9763f", "rank_within_group": 0, "record_id": "rec-4c195d41b3ac570b766b9d11", "regret": 0.0, "scene_id": "episode-587", "source_dataset": "/scratch/knguy52/dovla/experiments/maniskill_presuccess_full_k16_n1000_seed0", "state_hash": "290a189c6f3584d08e1d1807e63618d6cea3903638a478cdc87086339404400b", "task_id": "PickCube-v1"}, "episode_index": 2, "frame_index": 0, "observation": {"cil_observation_ref": "observations.h5#initial_rgb_jpeg/2", "image": null, "state": {"features": [-0.007940292358398438, 0.0969095230102539, 0.03747957572340965, 0.6609684228897095, -0.01142940018326044, 0.024942221119999886, -0.749911904335022, -0.0038174018263816833, -0.09276441484689713, 0.7106754779815674, -10.978766441345215, 1.8465118408203125, -18.50157356262207, -0.016963958740234375, 0.07655715942382812, 0.25319740176200867, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000083923339844, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149997711181641, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.03658159449696541, 0.7031791806221008, 0.10627271234989166, -1.815037488937378, 0.05101632699370384, 2.374300479888916, 0.7581173181533813, 0.020984023809432983, 0.02102568745613098, -0.476231187582016, -1.1705760955810547, 0.3279920518398285, -0.02065674588084221, 0.18396227061748505, -1.391904592514038, -0.7702826261520386, 0.24117586016654968, 0.2134247124195099]}}, "reward": 0.536004364490509, "success": false, "task": "Pick up the cube and move it to the goal position.", "task_index": 0, "timestamp": 0.0} +{"action": [-0.09155034273862839, -0.2224860042333603, 0.09527984261512756, -0.33472195267677307, -0.10096851736307144, -0.32266828417778015, -2.021345615386963, -0.08139925450086594, 0.23562990128993988, -0.11173506081104279, -0.3661971092224121, -0.1256498098373413, -0.04269513115286827, -2.037240505218506, -0.08127366006374359, 0.025128714740276337, -0.21820373833179474, 0.13546231389045715, 0.01720122992992401, -0.147305428981781, -2.048769474029541, -0.11806996166706085, 0.007225414272397757, -0.0036315745674073696, -0.0010948525741696358, -0.254454106092453, -0.05180085822939873, -2.0574095249176025], "action_chunk": {"action_id": "near_miss-02", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.15}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[-0.09155034273862839, -0.2224860042333603, 0.09527984261512756, -0.33472195267677307, -0.10096851736307144, -0.32266828417778015, -2.021345615386963], [-0.08139925450086594, 0.23562990128993988, -0.11173506081104279, -0.3661971092224121, -0.1256498098373413, -0.04269513115286827, -2.037240505218506], [-0.08127366006374359, 0.025128714740276337, -0.21820373833179474, 0.13546231389045715, 0.01720122992992401, -0.147305428981781, -2.048769474029541], [-0.11806996166706085, 0.007225414272397757, -0.0036315745674073696, -0.0010948525741696358, -0.254454106092453, -0.05180085822939873, -2.0574095249176025]]}, "cil": {"candidate_type": "near_miss", "failure_type": "success", "group_id": "ms-c4ffabbc14eaeffb221e", "rank_within_group": 0, "record_id": "rec-17e7ffd2176a3d740eb05af9", "regret": 0.0, "scene_id": "episode-209", "source_dataset": "/scratch/knguy52/dovla/experiments/maniskill_presuccess_full_k16_n1000_seed0", "state_hash": "ec61a6991f978a5aad935d8f2ca14e4a866cd71a661dab4d8a259dd57fdb5531", "task_id": "PickCube-v1"}, "episode_index": 3, "frame_index": 0, "observation": {"cil_observation_ref": "observations.h5#initial_rgb_jpeg/3", "image": null, "state": {"features": [-0.046315670013427734, 0.035221099853515625, 0.2322583645582199, 0.7701006531715393, 0.010515510104596615, 0.09762848168611526, -0.6303197145462036, -0.052918922156095505, -0.040496163070201874, 0.010721586644649506, -7.1247663497924805, -1.63589608669281, 0.47000962495803833, -0.046441078186035156, 0.0363922119140625, 0.231855571269989, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149997711181641, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.10235677659511566, 0.3599659204483032, 0.13238002359867096, -1.808642029762268, 0.10925418883562088, 1.8546810150146484, 0.56473708152771, 0.01857931539416313, 0.018624702468514442, -0.03570203855633736, -0.10249791294336319, -0.01871495507657528, -0.20577512681484222, -0.003970427438616753, 0.02155376225709915, -0.036965273320674896, 0.04108690097928047, -0.007286506704986095]}}, "reward": 2.0, "success": true, "task": "Pick up the cube and move it to the goal position.", "task_index": 0, "timestamp": 0.0} +{"action": [0.8234550952911377, -0.39333590865135193, -2.045659065246582, 0.2834421694278717, -0.29677435755729675, 0.2694389224052429, 2.9280712604522705, 0.10313728451728821, -0.22221754491329193, -1.9722038507461548, 0.15917308628559113, -0.5743748545646667, -0.18963240087032318, 1.7628428936004639, -0.1889944076538086, 0.23151889443397522, -1.1360738277435303, -0.24781058728694916, -0.34082698822021484, -0.170538991689682, -0.9756835699081421, -0.5063692927360535, 0.03460731357336044, 0.7289126515388489, -0.6656671762466431, -0.5738135576248169, -0.25992345809936523, -3.7129390239715576], "action_chunk": {"action_id": "expert-00", "horizon": 4, "metadata": {"candidate_type": "expert", "parent_action_id": null, "perturbation": {"scale": 0.0}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.8234550952911377, -0.39333590865135193, -2.045659065246582, 0.2834421694278717, -0.29677435755729675, 0.2694389224052429, 2.9280712604522705], [0.10313728451728821, -0.22221754491329193, -1.9722038507461548, 0.15917308628559113, -0.5743748545646667, -0.18963240087032318, 1.7628428936004639], [-0.1889944076538086, 0.23151889443397522, -1.1360738277435303, -0.24781058728694916, -0.34082698822021484, -0.170538991689682, -0.9756835699081421], [-0.5063692927360535, 0.03460731357336044, 0.7289126515388489, -0.6656671762466431, -0.5738135576248169, -0.25992345809936523, -3.7129390239715576]]}, "cil": {"candidate_type": "expert", "failure_type": "partial_success", "group_id": "ms-b242270287e07877b824", "rank_within_group": 0, "record_id": "rec-61e1134c676f801a337c6a73", "regret": 0.0, "scene_id": "episode-797", "source_dataset": "/scratch/knguy52/dovla/experiments/maniskill_presuccess_full_k16_n1000_seed0", "state_hash": "51a43c60080582d741216ac5b68ca98751c8bda2c713848ad8a746384524fba9", "task_id": "PickCube-v1"}, "episode_index": 4, "frame_index": 0, "observation": {"cil_observation_ref": "observations.h5#initial_rgb_jpeg/4", "image": null, "state": {"features": [0.06255340576171875, -0.02100372314453125, 0.019999802112579346, 0.8229450583457947, 9.91355500445934e-06, -5.571292149397777e-06, 0.5681209564208984, 0.0004370586830191314, 0.00017391589062754065, -0.00011650443775579333, -0.004854163154959679, 0.010291452519595623, 0.00042810323066078126, -0.07491302490234375, 0.0097503662109375, 0.15170276165008545, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.01807539351284504, 0.5113353729248047, -0.01832074299454689, -1.830978274345398, 0.026638031005859375, 2.371656894683838, 0.7861020565032959, 0.039997249841690063, 0.03999991714954376, -0.14526815712451935, 2.625046491622925, -0.057904332876205444, 2.40586519241333, 0.088222436606884, 0.07613790035247803, -0.02440214529633522, 0.0015209796838462353, -0.0014612110098823905]}}, "reward": 0.46302175521850586, "success": false, "task": "Pick up the cube and move it to the goal position.", "task_index": 0, "timestamp": 0.0} +{"action": [0.7732240557670593, -0.29269447922706604, 0.479524165391922, -0.4287649691104889, -0.03655378147959709, -1.0, -2.112894296646118, 0.3012737035751343, -0.23505425453186035, 0.11112562566995621, -0.3476502299308777, 0.16826392710208893, -0.7720427513122559, -2.110785722732544, 0.12148325145244598, -0.2086387574672699, -0.18725250661373138, -0.16820640861988068, 0.35087722539901733, -0.4146888256072998, -2.215219497680664, 0.020610615611076355, -0.15581557154655457, 0.010943256318569183, 0.008966654539108276, 0.11986343562602997, -0.12302891910076141, -2.268505811691284], "action_chunk": {"action_id": "near_miss-01", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.05}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.7732240557670593, -0.29269447922706604, 0.479524165391922, -0.4287649691104889, -0.03655378147959709, -1.0, -2.112894296646118], [0.3012737035751343, -0.23505425453186035, 0.11112562566995621, -0.3476502299308777, 0.16826392710208893, -0.7720427513122559, -2.110785722732544], [0.12148325145244598, -0.2086387574672699, -0.18725250661373138, -0.16820640861988068, 0.35087722539901733, -0.4146888256072998, -2.215219497680664], [0.020610615611076355, -0.15581557154655457, 0.010943256318569183, 0.008966654539108276, 0.11986343562602997, -0.12302891910076141, -2.268505811691284]]}, "cil": {"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-c780d41a3bffb09815d1", "rank_within_group": 0, "record_id": "rec-9172a3c256656c2315553667", "regret": 0.0, "scene_id": "episode-114", "source_dataset": "/scratch/knguy52/dovla/experiments/maniskill_presuccess_full_k16_n1000_seed0", "state_hash": "21fe9927c262557f34f7f1984949425ca7b9f11187f40105b653bdae2daba930", "task_id": "PickCube-v1"}, "episode_index": 5, "frame_index": 0, "observation": {"cil_observation_ref": "observations.h5#initial_rgb_jpeg/5", "image": null, "state": {"features": [0.028700828552246094, 0.0655059814453125, 0.14895597100257874, 0.65125972032547, 0.03211274370551109, 0.00015520700253546238, 0.7581750750541687, 0.5814969539642334, -0.19313077628612518, 0.6927828788757324, -1.148125410079956, -0.012501949444413185, -7.615335464477539, 0.09989356994628906, 0.00606536865234375, 0.18480096757411957, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149988174438477, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.008372840471565723, 0.6217747926712036, 0.09794788062572479, -1.6184884309768677, -0.014663946814835072, 2.0312952995300293, 0.6737716197967529, 0.01865791715681553, 0.018702059984207153, -0.3444288671016693, 0.5771565437316895, 0.04802849143743515, 2.894660234451294, 0.012401988729834557, -2.1706244945526123, -0.907012939453125, 0.0570286326110363, 0.00033069640630856156]}}, "reward": 0.5932891964912415, "success": false, "task": "Pick up the cube and move it to the goal position.", "task_index": 0, "timestamp": 0.0} +{"action": [-0.023983854800462723, 0.018745146691799164, -0.021289434283971786, -0.11246635019779205, -0.11601042747497559, -0.2676311731338501, -1.8741012811660767, -0.014467019587755203, 0.019133679568767548, -0.01631760224699974, -0.1042390987277031, -0.10641993582248688, -0.2710961103439331, -1.8810278177261353, -0.008381742984056473, 0.01854727417230606, -0.012751217931509018, -0.09557168930768967, -0.09803362935781479, -0.2704295516014099, -1.8868783712387085, -0.00460154190659523, 0.017910249531269073, -0.010318022221326828, -0.08704736828804016, -0.0906854197382927, -0.26731300354003906, -1.8920661211013794], "action_chunk": {"action_id": "expert-00", "horizon": 4, "metadata": {"candidate_type": "expert", "parent_action_id": null, "perturbation": {"scale": 0.0}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[-0.023983854800462723, 0.018745146691799164, -0.021289434283971786, -0.11246635019779205, -0.11601042747497559, -0.2676311731338501, -1.8741012811660767], [-0.014467019587755203, 0.019133679568767548, -0.01631760224699974, -0.1042390987277031, -0.10641993582248688, -0.2710961103439331, -1.8810278177261353], [-0.008381742984056473, 0.01854727417230606, -0.012751217931509018, -0.09557168930768967, -0.09803362935781479, -0.2704295516014099, -1.8868783712387085], [-0.00460154190659523, 0.017910249531269073, -0.010318022221326828, -0.08704736828804016, -0.0906854197382927, -0.26731300354003906, -1.8920661211013794]]}, "cil": {"candidate_type": "expert", "failure_type": "success", "group_id": "ms-0cd563cc20f169c74fbe", "rank_within_group": 0, "record_id": "rec-b7bd469f454d7b7ce93ef153", "regret": 0.0, "scene_id": "episode-224", "source_dataset": "/scratch/knguy52/dovla/experiments/maniskill_presuccess_full_k16_n1000_seed0", "state_hash": "db82c86094fcb2a6a1c5c35ce1b7683ef731d6155614dd272a01038828a78fac", "task_id": "PickCube-v1"}, "episode_index": 6, "frame_index": 0, "observation": {"cil_observation_ref": "observations.h5#initial_rgb_jpeg/6", "image": null, "state": {"features": [-0.074432373046875, 0.040019989013671875, 0.22018413245677948, 0.7794306874275208, 0.1468936800956726, 0.054949868470430374, 0.6065397262573242, 0.19083064794540405, -0.018964337185025215, -0.040836405009031296, -1.8016589879989624, 6.599865436553955, -16.231740951538086, -0.0794677734375, 0.044940948486328125, 0.2078183889389038, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.09387122094631195, 0.2581423819065094, 0.11969171464443207, -1.9873038530349731, 0.1517958641052246, 2.0032057762145996, 0.6415863633155823, 0.021779298782348633, 0.021827511489391327, -0.026836197823286057, 0.02816697396337986, 0.016907230019569397, -0.010281022638082504, 0.015941768884658813, -0.15004119277000427, -0.22097183763980865, 0.28425392508506775, 0.2691417932510376]}}, "reward": 2.0, "success": true, "task": "Pick up the cube and move it to the goal position.", "task_index": 0, "timestamp": 0.0} +{"action": [-0.19244690239429474, -0.16342812776565552, 0.0347924567759037, 0.008081558160483837, -0.31800031661987305, -0.18293285369873047, -1.8377646207809448, -0.18346264958381653, -0.03947979211807251, -0.06995131820440292, 0.11359677463769913, -0.2011098563671112, -0.02423825114965439, -1.8827391862869263, -0.17082858085632324, -0.08785596489906311, 0.0044371820986270905, 0.02421420067548752, -0.22217433154582977, -0.03988654538989067, -1.935221552848816, -0.09586358815431595, 0.05334766209125519, 0.029819149523973465, 0.09933511912822723, -0.1395062953233719, -0.18966631591320038, -1.964664340019226], "action_chunk": {"action_id": "near_miss-01", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.05}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[-0.19244690239429474, -0.16342812776565552, 0.0347924567759037, 0.008081558160483837, -0.31800031661987305, -0.18293285369873047, -1.8377646207809448], [-0.18346264958381653, -0.03947979211807251, -0.06995131820440292, 0.11359677463769913, -0.2011098563671112, -0.02423825114965439, -1.8827391862869263], [-0.17082858085632324, -0.08785596489906311, 0.0044371820986270905, 0.02421420067548752, -0.22217433154582977, -0.03988654538989067, -1.935221552848816], [-0.09586358815431595, 0.05334766209125519, 0.029819149523973465, 0.09933511912822723, -0.1395062953233719, -0.18966631591320038, -1.964664340019226]]}, "cil": {"candidate_type": "near_miss", "failure_type": "success", "group_id": "ms-8d3c88198175fb4ea4ea", "rank_within_group": 0, "record_id": "rec-65b8ecfcc6577ced35e51ee2", "regret": 0.0, "scene_id": "episode-388", "source_dataset": "/scratch/knguy52/dovla/experiments/maniskill_presuccess_full_k16_n1000_seed0", "state_hash": "95f5287d5c256c2538eb58b84bcc03c3ee2668891bfcc7b581b50b1632de7748", "task_id": "PickCube-v1"}, "episode_index": 7, "frame_index": 0, "observation": {"cil_observation_ref": "observations.h5#initial_rgb_jpeg/7", "image": null, "state": {"features": [-0.054317474365234375, -0.00110626220703125, 0.20917671918869019, -0.1249999850988388, 0.06042565032839775, -0.04672222211956978, 0.9892120957374573, -0.060384850949048996, -0.05119608715176582, 0.26524391770362854, -4.279517650604248, -0.31354448199272156, -4.170334339141846, -0.0890350341796875, -0.0094451904296875, 0.2136704921722412, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.10357502102851868, 0.365913450717926, 0.09339150786399841, -1.8553439378738403, 0.035346563905477524, 1.9232416152954102, 0.48678460717201233, 0.018391933292150497, 0.018436355516314507, -0.1446506828069687, -0.47221699357032776, 0.006858167238533497, 0.02454003319144249, 0.038342028856277466, -0.7332959175109863, -0.33226603269577026, 0.06523852795362473, 0.0018311217427253723]}}, "reward": 2.0, "success": true, "task": "Pick up the cube and move it to the goal position.", "task_index": 0, "timestamp": 0.0} +{"action": [1.0, 0.4642997086048126, -0.40524372458457947, -0.4181438982486725, -0.3855776786804199, -1.0, -2.572544813156128, 1.0, -0.12252479791641235, 0.3957115113735199, -0.08444324135780334, 0.13567838072776794, -1.0, -3.2739899158477783, 1.0, 0.5217642784118652, 0.9536948800086975, -0.7208852767944336, -0.08944196999073029, -1.0, -2.8353257179260254, 1.0, 0.3923838436603546, 1.0, -0.3802013397216797, 0.11167275905609131, -1.0, -2.5073773860931396], "action_chunk": {"action_id": "wrong_direction-03", "horizon": 4, "metadata": {"candidate_type": "wrong_direction", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.35}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[1.0, 0.4642997086048126, -0.40524372458457947, -0.4181438982486725, -0.3855776786804199, -1.0, -2.572544813156128], [1.0, -0.12252479791641235, 0.3957115113735199, -0.08444324135780334, 0.13567838072776794, -1.0, -3.2739899158477783], [1.0, 0.5217642784118652, 0.9536948800086975, -0.7208852767944336, -0.08944196999073029, -1.0, -2.8353257179260254], [1.0, 0.3923838436603546, 1.0, -0.3802013397216797, 0.11167275905609131, -1.0, -2.5073773860931396]]}, "cil": {"candidate_type": "wrong_direction", "failure_type": "partial_success", "group_id": "ms-64d4fb96883ad9d71105", "rank_within_group": 0, "record_id": "rec-ccc7403fc6e42623eee0a0a6", "regret": 0.0, "scene_id": "episode-529", "source_dataset": "/scratch/knguy52/dovla/experiments/maniskill_presuccess_full_k16_n1000_seed0", "state_hash": "6eab3ca5da72c4b7b18fab3a7caab5924e786f3c037f38e4442e8392aec03b7b", "task_id": "PickCube-v1"}, "episode_index": 8, "frame_index": 0, "observation": {"cil_observation_ref": "observations.h5#initial_rgb_jpeg/8", "image": null, "state": {"features": [-0.08880138397216797, -0.09159263968467712, 0.020002268254756927, 0.944753885269165, 0.0005589941283687949, 0.00012630359560716897, 0.32777976989746094, 0.05677035450935364, -0.021088257431983948, -0.010916968807578087, -0.2162894308567047, -0.21886613965034485, -2.150670289993286, 0.05281686782836914, -0.03405817598104477, 0.10896357893943787, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149997711181641, 4.3655745685100555e-11, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.1650100201368332, 0.5031988024711609, -0.013502894900739193, -2.2127530574798584, 0.047801319509744644, 2.6145236492156982, 0.5418534874916077, 0.024410586804151535, 0.02440524473786354, -0.051426924765110016, 2.3979947566986084, 0.4740931987762451, 1.5185127258300781, 0.45796918869018555, 0.50052809715271, -0.3085905611515045, -0.2204747200012207, -0.20427802205085754]}}, "reward": 0.5698418617248535, "success": false, "task": "Pick up the cube and move it to the goal position.", "task_index": 0, "timestamp": 0.0} +{"action": [0.3033374845981598, -0.12066788226366043, 0.14544619619846344, -0.3138177990913391, -0.0170342568308115, -0.7108187675476074, -2.2996127605438232, 0.05510043725371361, -0.09708938002586365, -0.13058404624462128, -0.11618771404027939, 0.097447969019413, -0.3188478350639343, -2.385507583618164, -0.006168145686388016, -0.09650762379169464, -0.10053984820842743, -0.022903304547071457, 0.019624365493655205, -0.1267804503440857, -2.499854564666748, -0.0005009658634662628, -0.04196876287460327, -0.060361217707395554, -0.03557731583714485, -0.014296675100922585, -0.13206668198108673, -2.5627455711364746], "action_chunk": {"action_id": "expert-00", "horizon": 4, "metadata": {"candidate_type": "expert", "parent_action_id": null, "perturbation": {"scale": 0.0}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.3033374845981598, -0.12066788226366043, 0.14544619619846344, -0.3138177990913391, -0.0170342568308115, -0.7108187675476074, -2.2996127605438232], [0.05510043725371361, -0.09708938002586365, -0.13058404624462128, -0.11618771404027939, 0.097447969019413, -0.3188478350639343, -2.385507583618164], [-0.006168145686388016, -0.09650762379169464, -0.10053984820842743, -0.022903304547071457, 0.019624365493655205, -0.1267804503440857, -2.499854564666748], [-0.0005009658634662628, -0.04196876287460327, -0.060361217707395554, -0.03557731583714485, -0.014296675100922585, -0.13206668198108673, -2.5627455711364746]]}, "cil": {"candidate_type": "expert", "failure_type": "success", "group_id": "ms-1781d9c562b4425df7c8", "rank_within_group": 0, "record_id": "rec-cf9e26e1a8f09382d2e0b7b1", "regret": 0.0, "scene_id": "episode-774", "source_dataset": "/scratch/knguy52/dovla/experiments/maniskill_presuccess_full_k16_n1000_seed0", "state_hash": "2e40294ac696fc7563ca5f74e761ce0ec43fa9ecc40c40c6aed5c9ebba87c54d", "task_id": "PickCube-v1"}, "episode_index": 9, "frame_index": 0, "observation": {"cil_observation_ref": "observations.h5#initial_rgb_jpeg/9", "image": null, "state": {"features": [0.01476287841796875, -0.06786346435546875, 0.09191349893808365, 0.9993038177490234, 0.0220708679407835, 0.01285494863986969, -0.02719307877123356, 0.35307490825653076, -0.1941719800233841, 0.5391368269920349, -6.94796085357666, 0.545600950717926, -19.620615005493164, 0.0375518798828125, -0.09474945068359375, 0.10253944993019104, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.15181684494018555, 0.6465469598770142, 0.039224348962306976, -1.7328109741210938, 0.027142634615302086, 2.2319157123565674, 0.46001049876213074, 0.02076961100101471, 0.02080821804702282, -0.32788369059562683, 0.18608127534389496, 0.1342967003583908, 1.8224468231201172, 0.028002522885799408, -1.553360104560852, -0.7706471085548401, 0.20660938322544098, 0.17195142805576324]}}, "reward": 2.0, "success": true, "task": "Pick up the cube and move it to the goal position.", "task_index": 0, "timestamp": 0.0} +{"action": [0.2458915114402771, -0.15052920579910278, -1.0, 0.013746529817581177, -1.0, -0.21971148252487183, 2.714754104614258, -0.2429777830839157, 0.07430313527584076, -1.0, -0.16456840932369232, -1.0, -0.9286653995513916, 0.2025165557861328, 0.025035768747329712, 0.28885743021965027, -0.2897254228591919, -0.6306957602500916, -0.5820335745811462, -0.9942173361778259, -2.5460946559906006, 0.028109241276979446, -0.05866494029760361, 0.4426884055137634, -0.4524412751197815, -0.21268394589424133, -0.7261583805084229, -3.2692134380340576], "action_chunk": {"action_id": "near_miss-01", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.05}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.2458915114402771, -0.15052920579910278, -1.0, 0.013746529817581177, -1.0, -0.21971148252487183, 2.714754104614258], [-0.2429777830839157, 0.07430313527584076, -1.0, -0.16456840932369232, -1.0, -0.9286653995513916, 0.2025165557861328], [0.025035768747329712, 0.28885743021965027, -0.2897254228591919, -0.6306957602500916, -0.5820335745811462, -0.9942173361778259, -2.5460946559906006], [0.028109241276979446, -0.05866494029760361, 0.4426884055137634, -0.4524412751197815, -0.21268394589424133, -0.7261583805084229, -3.2692134380340576]]}, "cil": {"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-10a67a57026bb09b5d93", "rank_within_group": 0, "record_id": "rec-2418612df847b9735e84e14e", "regret": 0.0, "scene_id": "episode-252", "source_dataset": "/scratch/knguy52/dovla/experiments/maniskill_presuccess_full_k16_n1000_seed0", "state_hash": "ff0570f2474cb1f6f4e75c4921a0bd5cb308918756ed6b4ff6cb2df798f1d884", "task_id": "PickCube-v1"}, "episode_index": 10, "frame_index": 0, "observation": {"cil_observation_ref": "observations.h5#initial_rgb_jpeg/10", "image": null, "state": {"features": [0.021350860595703125, 0.0422821044921875, 0.019999928772449493, 0.9657067060470581, 5.530319413082907e-06, -3.955532520194538e-06, 0.259635329246521, 8.874305785866454e-05, 0.00019909856200683862, -0.00010172931069973856, -0.004346663132309914, 0.00043586635729297996, 0.0009438440320082009, 0.02393341064453125, 0.043304443359375, 0.0746343731880188, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.02423270232975483, 0.5300643444061279, 0.006811963859945536, -1.8714677095413208, 0.04015753045678139, 2.419536828994751, 0.8830363154411316, 0.03999907523393631, 0.03999999910593033, 0.6293052434921265, 1.8052808046340942, 0.44981449842453003, 0.9143156409263611, 0.2605507969856262, 0.20237629115581512, 0.6918536424636841, 0.0007163410191424191, -0.0007135514752008021]}}, "reward": 0.5448155999183655, "success": false, "task": "Pick up the cube and move it to the goal position.", "task_index": 0, "timestamp": 0.0} +{"action": [0.7216213941574097, 0.23776167631149292, 0.9413163661956787, -0.9285341501235962, -0.8461328744888306, -1.0, -3.2082104682922363, 0.717744767665863, 0.842609167098999, 1.0, -1.0, -0.22849977016448975, -1.0, -2.786240577697754, 0.393378883600235, 0.780874490737915, 1.0, -1.0, -0.5397374629974365, -1.0, -2.491328239440918, 0.19940781593322754, 0.033484384417533875, 0.9354397058486938, -0.973723292350769, -0.47505873441696167, -0.10541725158691406, -2.2636466026306152], "action_chunk": {"action_id": "wrong_direction-03", "horizon": 4, "metadata": {"candidate_type": "wrong_direction", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.35}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.7216213941574097, 0.23776167631149292, 0.9413163661956787, -0.9285341501235962, -0.8461328744888306, -1.0, -3.2082104682922363], [0.717744767665863, 0.842609167098999, 1.0, -1.0, -0.22849977016448975, -1.0, -2.786240577697754], [0.393378883600235, 0.780874490737915, 1.0, -1.0, -0.5397374629974365, -1.0, -2.491328239440918], [0.19940781593322754, 0.033484384417533875, 0.9354397058486938, -0.973723292350769, -0.47505873441696167, -0.10541725158691406, -2.2636466026306152]]}, "cil": {"candidate_type": "wrong_direction", "failure_type": "partial_success", "group_id": "ms-25bb20f3481a2a40b97f", "rank_within_group": 0, "record_id": "rec-ae900c27d59bf14be97166ff", "regret": 0.0, "scene_id": "episode-872", "source_dataset": "/scratch/knguy52/dovla/experiments/maniskill_presuccess_full_k16_n1000_seed0", "state_hash": "3b7f3ed5e759bccc9824e605b3d8cefb7b12e585b4aff41905b7e27e0d996a23", "task_id": "PickCube-v1"}, "episode_index": 11, "frame_index": 0, "observation": {"cil_observation_ref": "observations.h5#initial_rgb_jpeg/11", "image": null, "state": {"features": [0.03521728515625, -0.057384490966796875, 0.03253794461488724, 0.9129041433334351, -0.0028452409896999598, 0.010323070921003819, -0.4080334007740021, 0.2689715623855591, 0.46322503685951233, 0.5909228920936584, 2.109616756439209, 0.20898234844207764, 5.292329788208008, 0.0795440673828125, 0.03389739990234375, 0.2208138108253479, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.08180949836969376, 0.795208752155304, -0.01031059306114912, -1.6480636596679688, 0.03492514789104462, 2.3156821727752686, 0.5561749339103699, 0.02580047957599163, 0.025842761620879173, 0.383100301027298, -0.5445420145988464, 0.3218225836753845, 0.8863900899887085, 0.02420014515519142, -1.6891124248504639, 0.13746380805969238, 0.028009921312332153, -0.016399741172790527]}}, "reward": 0.5596571564674377, "success": false, "task": "Pick up the cube and move it to the goal position.", "task_index": 0, "timestamp": 0.0} diff --git a/outputs/external_vla_plan_probe/external_vla_baseline_plan.json b/outputs/external_vla_plan_probe/external_vla_baseline_plan.json new file mode 100644 index 0000000000000000000000000000000000000000..cd86ea99ac507b661e7476b4e471252c361dfd99 --- /dev/null +++ b/outputs/external_vla_plan_probe/external_vla_baseline_plan.json @@ -0,0 +1,45 @@ +{ + "commands": { + "create_env": "python -m venv outputs/external_vla_plan_probe/external_vla_env", + "download": "hf download lerobot/smolvla_base --revision c83c3163b8ca9b7e67c509fffd9121e66cb96205 --local-dir /scratch/knguy52/dovla/models/smolvla_base-c83c316", + "install": "outputs/external_vla_plan_probe/external_vla_env/bin/python -m pip install --upgrade pip lerobot[smolvla]", + "run": "scripts/run_external_vla_baseline.py --model-family smolvla --checkpoint /scratch/knguy52/dovla/models/smolvla_base-c83c316 --out outputs/external_vla_plan_probe --dataset outputs/external_vla_export_smoke --require-ready" + }, + "expected_adapter_contract": { + "call_signature": "function(spec_dict: dict, plan: dict) -> dict", + "entrypoint": "module:function", + "output": "A JSON-serializable metrics dictionary with measured rollout/eval metrics." + }, + "schema_version": "external-vla-baseline-plan/v0", + "spec": { + "adapter_entrypoint": null, + "checkpoint_path": "/scratch/knguy52/dovla/models/smolvla_base-c83c316", + "dataset_dir": "outputs/external_vla_export_smoke", + "metadata": {}, + "model_family": "smolvla", + "out_dir": "outputs/external_vla_plan_probe", + "package_name": "lerobot", + "python": "python", + "repo_id": "lerobot/smolvla_base", + "revision": "c83c3163b8ca9b7e67c509fffd9121e66cb96205" + }, + "status": { + "adapter_entrypoint": null, + "adapter_importable": false, + "checkpoint_exists": true, + "checkpoint_path": "/scratch/knguy52/dovla/models/smolvla_base-c83c316", + "dataset_dir": "outputs/external_vla_export_smoke", + "dataset_exists": true, + "missing": [ + "package:lerobot", + "adapter_entrypoint" + ], + "model_family": "smolvla", + "package_available": false, + "package_name": "lerobot", + "ready": false, + "warnings": [ + "Run in an isolated environment; LeRobot pins a different Transformers stack." + ] + } +} \ No newline at end of file diff --git a/outputs/external_vla_smolvla_checkpoint_manifest.json b/outputs/external_vla_smolvla_checkpoint_manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..f292a51c460bb10c43c01910dd8e38c7fbdc0ca9 --- /dev/null +++ b/outputs/external_vla_smolvla_checkpoint_manifest.json @@ -0,0 +1,179 @@ +{ + "file_count": 32, + "files": [ + { + "path": ".cache/huggingface/.gitignore", + "sha256": "684888c0ebb17f374298b65ee2807526c066094c701bcc7ebbe1c1095f494fc1", + "size_bytes": 1 + }, + { + "path": ".cache/huggingface/CACHEDIR.TAG", + "sha256": "f6572428f6d5e1575e73a1502895a8731f10757dfbb634909c6e154b849af91d", + "size_bytes": 191 + }, + { + "path": ".cache/huggingface/download/.gitattributes.lock", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "size_bytes": 0 + }, + { + "path": ".cache/huggingface/download/.gitattributes.metadata", + "sha256": "7a3b21bc4e389b1212ebbb4a06aba23837e16415c213c473a6179edcb190d519", + "size_bytes": 101 + }, + { + "path": ".cache/huggingface/download/Finetune_SmolVLA_notebook.ipynb.lock", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "size_bytes": 0 + }, + { + "path": ".cache/huggingface/download/Finetune_SmolVLA_notebook.ipynb.metadata", + "sha256": "cb6b20b53d29f9e0edc8dcd35cb448d5e7ce9a906b08e03993a08cca9e0803ab", + "size_bytes": 101 + }, + { + "path": ".cache/huggingface/download/README.md.lock", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "size_bytes": 0 + }, + { + "path": ".cache/huggingface/download/README.md.metadata", + "sha256": "0e6891a1bfed24b5044d0ecfb0296b97a4533bc3b886554bf89129bb732c27d5", + "size_bytes": 101 + }, + { + "path": ".cache/huggingface/download/collage_small.gif.lock", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "size_bytes": 0 + }, + { + "path": ".cache/huggingface/download/collage_small.gif.metadata", + "sha256": "5e7c7be68c0e602c50adebf90ae66b36167d2e968bb7d2830643a84e8d48b879", + "size_bytes": 125 + }, + { + "path": ".cache/huggingface/download/config.json.lock", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "size_bytes": 0 + }, + { + "path": ".cache/huggingface/download/config.json.metadata", + "sha256": "a26ca767fe9cbde682c09dc0b7433a843695813e8ded99e8e1102744fc03c6f9", + "size_bytes": 100 + }, + { + "path": ".cache/huggingface/download/model.safetensors.lock", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "size_bytes": 0 + }, + { + "path": ".cache/huggingface/download/model.safetensors.metadata", + "sha256": "2e9ae096f1a034577c5f18c168099b5211723118d29a5d16e947408d7216293b", + "size_bytes": 125 + }, + { + "path": ".cache/huggingface/download/policy_postprocessor.json.lock", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "size_bytes": 0 + }, + { + "path": ".cache/huggingface/download/policy_postprocessor.json.metadata", + "sha256": "ee2fab7f02469ca95442fea425b1b98288523d5dcad0d771b7744ad8cf8f620b", + "size_bytes": 100 + }, + { + "path": ".cache/huggingface/download/policy_postprocessor_step_0_unnormalizer_processor.safetensors.lock", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "size_bytes": 0 + }, + { + "path": ".cache/huggingface/download/policy_postprocessor_step_0_unnormalizer_processor.safetensors.metadata", + "sha256": "4ca95ad746b5a195476c7bb2a6a3572106e26c342101ecc1b76371f56d744af4", + "size_bytes": 125 + }, + { + "path": ".cache/huggingface/download/policy_preprocessor.json.lock", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "size_bytes": 0 + }, + { + "path": ".cache/huggingface/download/policy_preprocessor.json.metadata", + "sha256": "115e4538ec5d1c9c76e3f3ab1ab34c34b0253e10252c1989c913faef848740b1", + "size_bytes": 101 + }, + { + "path": ".cache/huggingface/download/policy_preprocessor_step_5_normalizer_processor.safetensors.lock", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "size_bytes": 0 + }, + { + "path": ".cache/huggingface/download/policy_preprocessor_step_5_normalizer_processor.safetensors.metadata", + "sha256": "888bf914735bbff54bc65c4c05d7da3ab71b2c1dd0de3d14e8e1419469383311", + "size_bytes": 125 + }, + { + "path": ".gitattributes", + "sha256": "32949ddb126c25a78e757b890078c46d0c8f8e899e56510a1efef817233149f9", + "size_bytes": 1573 + }, + { + "path": "Finetune_SmolVLA_notebook.ipynb", + "sha256": "7f445c913c508142b632245ae52494c23ac8b96109fe1f9144e34b8b9c60f92d", + "size_bytes": 6757 + }, + { + "path": "README.md", + "sha256": "adb98360b162fe40b6f7995d21c1a4250bd51ddd094973234e290482a35ea4ce", + "size_bytes": 4605 + }, + { + "path": "collage_small.gif", + "sha256": "c43f022bf1fdfbac82841ef95c7a99a7ead13ea67f2a7202f2fe57148f352c83", + "size_bytes": 8009386 + }, + { + "path": "config.json", + "sha256": "650584b56c104720f7a3c91d1ec6bec9e8de8ac11e60c92ba2fa82d93eda147d", + "size_bytes": 2299 + }, + { + "path": "model.safetensors", + "sha256": "7cd549ac2351fb069c0ddb3c34ad2d09cfc92b56a15dccdfc2e41467aaca01eb", + "size_bytes": 906712520 + }, + { + "path": "policy_postprocessor.json", + "sha256": "2b78bb742065288df2ec63b0ee35f97a1f6950171cf2272f7e34b1fe3873b17b", + "size_bytes": 660 + }, + { + "path": "policy_postprocessor_step_0_unnormalizer_processor.safetensors", + "sha256": "490ab239d96e263687c0b2e386a0afbc235a2eceb9857c36ed32f2f162a3e7c8", + "size_bytes": 640 + }, + { + "path": "policy_preprocessor.json", + "sha256": "7683d648280a72f0d51e869fb8dd1596beed90b7f84849330cf1bc26634a4bd6", + "size_bytes": 1872 + }, + { + "path": "policy_preprocessor_step_5_normalizer_processor.safetensors", + "sha256": "490ab239d96e263687c0b2e386a0afbc235a2eceb9857c36ed32f2f162a3e7c8", + "size_bytes": 640 + } + ], + "local_dir": "/scratch/knguy52/dovla/models/smolvla_base-c83c316", + "missing_required_files": [], + "model_family": "smolvla", + "ready": true, + "repo_id": "lerobot/smolvla_base", + "required_files": [ + "config.json", + "model.safetensors", + "policy_preprocessor.json", + "policy_postprocessor.json" + ], + "revision": "c83c3163b8ca9b7e67c509fffd9121e66cb96205", + "schema_version": "dovla-external-checkpoint-manifest/v0", + "total_bytes": 914742248 +} diff --git a/outputs/external_vla_smolvla_checkpoint_metadata.json b/outputs/external_vla_smolvla_checkpoint_metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..6df25aa62d12591120558f8deb319712c18c0493 --- /dev/null +++ b/outputs/external_vla_smolvla_checkpoint_metadata.json @@ -0,0 +1,16 @@ +{ + "checkpoint": "/scratch/knguy52/dovla/models/smolvla_base-c83c316", + "metadata_only": true, + "package_versions": { + "huggingface-hub": null, + "lerobot": null, + "torch": "2.12.1+computecanada", + "transformers": null + }, + "ready": false, + "required_files": [ + "config.json", + "model.safetensors" + ], + "schema_version": "smolvla-checkpoint-smoke/v0" +} \ No newline at end of file diff --git a/outputs/external_vla_smolvla_checkpoint_smoke.json b/outputs/external_vla_smolvla_checkpoint_smoke.json new file mode 100644 index 0000000000000000000000000000000000000000..6a36fd237ab4cba7c8eabdb83e640508e1804f17 --- /dev/null +++ b/outputs/external_vla_smolvla_checkpoint_smoke.json @@ -0,0 +1,24 @@ +{ + "checkpoint": "/scratch/knguy52/dovla/models/smolvla_base-c83c316", + "cuda_device": "NVIDIA H100 80GB HBM3 MIG 1g.10gb", + "device": "cuda", + "load_seconds": 21.856225808965974, + "metadata_only": false, + "package_versions": { + "huggingface-hub": "0.35.3+computecanada", + "lerobot": "0.4.3", + "torch": "2.7.1+cu128", + "transformers": "4.57.6+computecanada" + }, + "parameter_count": 450046176, + "policy_class": "lerobot.policies.smolvla.modeling_smolvla.SmolVLAPolicy", + "ready": true, + "required_files": [ + "config.json", + "model.safetensors" + ], + "schema_version": "smolvla-checkpoint-smoke/v0", + "trainable_parameter_count": 99880992, + "vlm_load_mode": "local_config_then_policy_safetensors", + "vlm_metadata": "/scratch/knguy52/dovla/models/SmolVLM2-500M-Video-Instruct-metadata-7b375e1b73b11138ff12fe22c8f2822d8fe03467" +} \ No newline at end of file diff --git a/outputs/external_vla_smolvla_full_plan/external_vla_baseline_plan.json b/outputs/external_vla_smolvla_full_plan/external_vla_baseline_plan.json new file mode 100644 index 0000000000000000000000000000000000000000..233c37a2530d7d6ab86756ccd7fb9277125d8242 --- /dev/null +++ b/outputs/external_vla_smolvla_full_plan/external_vla_baseline_plan.json @@ -0,0 +1,45 @@ +{ + "commands": { + "create_env": "python -m venv outputs/external_vla_smolvla_full_plan/external_vla_env", + "download": "hf download lerobot/smolvla_base --revision c83c3163b8ca9b7e67c509fffd9121e66cb96205 --local-dir /scratch/knguy52/dovla/models/smolvla_base-c83c316", + "install": "outputs/external_vla_smolvla_full_plan/external_vla_env/bin/python -m pip install --upgrade pip lerobot[smolvla]", + "run": "scripts/run_external_vla_baseline.py --model-family smolvla --checkpoint /scratch/knguy52/dovla/models/smolvla_base-c83c316 --out outputs/external_vla_smolvla_full_plan --dataset outputs/external_vla_export_maniskill_full_no_images --require-ready" + }, + "expected_adapter_contract": { + "call_signature": "function(spec_dict: dict, plan: dict) -> dict", + "entrypoint": "module:function", + "output": "A JSON-serializable metrics dictionary with measured rollout/eval metrics." + }, + "schema_version": "external-vla-baseline-plan/v0", + "spec": { + "adapter_entrypoint": null, + "checkpoint_path": "/scratch/knguy52/dovla/models/smolvla_base-c83c316", + "dataset_dir": "outputs/external_vla_export_maniskill_full_no_images", + "metadata": {}, + "model_family": "smolvla", + "out_dir": "outputs/external_vla_smolvla_full_plan", + "package_name": "lerobot", + "python": "python", + "repo_id": "lerobot/smolvla_base", + "revision": "c83c3163b8ca9b7e67c509fffd9121e66cb96205" + }, + "status": { + "adapter_entrypoint": null, + "adapter_importable": false, + "checkpoint_exists": true, + "checkpoint_path": "/scratch/knguy52/dovla/models/smolvla_base-c83c316", + "dataset_dir": "outputs/external_vla_export_maniskill_full_no_images", + "dataset_exists": true, + "missing": [ + "package:lerobot", + "adapter_entrypoint" + ], + "model_family": "smolvla", + "package_available": false, + "package_name": "lerobot", + "ready": false, + "warnings": [ + "Run in an isolated environment; LeRobot pins a different Transformers stack." + ] + } +} \ No newline at end of file diff --git a/outputs/hpc/maniskill_debug_cil/generation_summary.json b/outputs/hpc/maniskill_debug_cil/generation_summary.json new file mode 100644 index 0000000000000000000000000000000000000000..98903ceeb34a2891496de6112c9dd65bb0ed9764 --- /dev/null +++ b/outputs/hpc/maniskill_debug_cil/generation_summary.json @@ -0,0 +1,12 @@ +{ + "backend": "maniskill", + "demo_path": "/scratch/knguy52/dovla/maniskill_data/demos/PickCube-v1/rl/trajectory.none.pd_ee_delta_pose.physx_cuda.h5", + "env_id": "PickCube-v1", + "horizon": 4, + "k": 4, + "manifest": "/lustre09/project/6037638/knguy52/vla/outputs/hpc/maniskill_debug_cil/manifest.json", + "measurement": "exact_state_physics_branch", + "num_groups": 8, + "num_records": 32, + "seed": 0 +} diff --git a/outputs/hpc/maniskill_debug_cil/group_index.jsonl b/outputs/hpc/maniskill_debug_cil/group_index.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..d51f4846cb19349bdec3ab126ab0bf89e488433c --- /dev/null +++ b/outputs/hpc/maniskill_debug_cil/group_index.jsonl @@ -0,0 +1,8 @@ +{"candidate_type_counts": {"expert": 1, "near_miss": 2, "wrong_direction": 1}, "group_id": "ms-0feecef30a00e3157fad", "instruction": "Pick up the cube and move it to the goal position.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-613baec5f643c5f731338d0a", "rec-b5066f4365202bef592e9bf9", "rec-337da8a6cc8d1ae14def7e15", "rec-e78e2f1a483a312722d75613"], "scene_id": "episode-365", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": null, "state_hash": "9221a4c6fd498c1c5602ae1f7b7d94c2efa4272149657b66d16ac1c656326216", "success_count": 2, "task_id": "PickCube-v1"} +{"candidate_type_counts": {"expert": 1, "near_miss": 2, "wrong_direction": 1}, "group_id": "ms-b184af7bae0a47d257b9", "instruction": "Pick up the cube and move it to the goal position.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-12ba869635442cd3d34e5463", "rec-a7d4b4b90ca50c4444512c94", "rec-c3bb7ddb8d0d53439161f75f", "rec-12ec35c96fcef5f291403016"], "scene_id": "episode-504", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": null, "state_hash": "f5de84e62df5e5d266f90404a6095dd3243a227bdaf888fa97c030784c1a3a65", "success_count": 2, "task_id": "PickCube-v1"} +{"candidate_type_counts": {"expert": 1, "near_miss": 2, "wrong_direction": 1}, "group_id": "ms-309198f01df95841053b", "instruction": "Pick up the cube and move it to the goal position.", "max_reward": 0.4407064914703369, "num_records": 4, "record_ids": ["rec-c474deae0434d933441c5f27", "rec-f1111541b0b1575f6244e56b", "rec-96bc3db9d08500ba03f8dec4", "rec-e9f07e7fee064728b39f8717"], "scene_id": "episode-169", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": null, "state_hash": "d1d9d693f1d704b3a58400e41f4fdc88f4ad1a48c880f7ca5271470bb7370748", "success_count": 0, "task_id": "PickCube-v1"} +{"candidate_type_counts": {"expert": 1, "near_miss": 2, "wrong_direction": 1}, "group_id": "ms-d65ed516466738f66378", "instruction": "Pick up the cube and move it to the goal position.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-2cc34bcb883d16a29a7e47be", "rec-1398366dee93047ff0854e57", "rec-f1931b52529f5b071e1f45bb", "rec-926580e42d6a5fe65c5e7b3c"], "scene_id": "episode-777", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": null, "state_hash": "4d9bdd3bd7aaaaf23782a3058161f1fe6f35cebcc2cde70670151ce522a765f1", "success_count": 1, "task_id": "PickCube-v1"} +{"candidate_type_counts": {"expert": 1, "near_miss": 2, "wrong_direction": 1}, "group_id": "ms-ebb616f9b291184677b3", "instruction": "Pick up the cube and move it to the goal position.", "max_reward": 0.5461239218711853, "num_records": 4, "record_ids": ["rec-17086bac5797605be2d359c0", "rec-5dedbb915eb886e29f4d99f2", "rec-505064499f1c2f27da449106", "rec-056ef9b1588bbe7e55287ef2"], "scene_id": "episode-303", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": null, "state_hash": "40ee6aa04c8ffa69964c931b3f8f22abe8852c5ab8f173ab3493d54e216adcdd", "success_count": 0, "task_id": "PickCube-v1"} +{"candidate_type_counts": {"expert": 1, "near_miss": 2, "wrong_direction": 1}, "group_id": "ms-582e14e8ff5b73647798", "instruction": "Pick up the cube and move it to the goal position.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-e31df7ec300131b949aa8f00", "rec-e139b479b49c896e1284cad1", "rec-20c3d6c388b583911711fa61", "rec-8104f09b9a61f0350b7a9275"], "scene_id": "episode-927", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": null, "state_hash": "e54fc27620bd985e834a36d9cbfd51e7c19e3a3addaa1ae5cbe0db2850dc54ad", "success_count": 2, "task_id": "PickCube-v1"} +{"candidate_type_counts": {"expert": 1, "near_miss": 2, "wrong_direction": 1}, "group_id": "ms-0dd06f3328be10a87b41", "instruction": "Pick up the cube and move it to the goal position.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-668041ce103c4d8116f725d0", "rec-d326a32d3a6978a8e34f340b", "rec-a71be3fd52f3a031e6e469ab", "rec-9d9218d46673fca9a4bfd160"], "scene_id": "episode-306", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": null, "state_hash": "ac64340647d0b2ffad95bb4aee8a16b9aa5c8b85f204abc4767d191577204dd3", "success_count": 2, "task_id": "PickCube-v1"} +{"candidate_type_counts": {"expert": 1, "near_miss": 2, "wrong_direction": 1}, "group_id": "ms-5fd2e802ba562ff84bac", "instruction": "Pick up the cube and move it to the goal position.", "max_reward": 0.5593953728675842, "num_records": 4, "record_ids": ["rec-586c5011deb9f0c161521456", "rec-b07a2088c791808508257b5c", "rec-52a7d62f1a75d9cc97806dd4", "rec-246a7910d27b6a3dafd58211"], "scene_id": "episode-425", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": null, "state_hash": "4a553b30e240eac704cc850024c66c3c21142951edf75a051671eb6ae8020113", "success_count": 0, "task_id": "PickCube-v1"} diff --git a/outputs/hpc/maniskill_debug_cil/manifest.json b/outputs/hpc/maniskill_debug_cil/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..12c58375086374eb74397d87baa78188752e8b00 --- /dev/null +++ b/outputs/hpc/maniskill_debug_cil/manifest.json @@ -0,0 +1,38 @@ +{ + "backend": "maniskill", + "created_at": "2026-06-19T14:05:30.068321+00:00", + "dataset_name": "cil_pickcube-v1", + "format": "dovla_cil", + "group_count": 8, + "group_index_path": "group_index.jsonl", + "index_format": "jsonl", + "k": 4, + "num_groups": 8, + "num_records": 32, + "record_count": 32, + "record_index_path": "record_index.jsonl", + "schema_version": "0.1", + "seed": 0, + "shard_count": 1, + "shard_format": "jsonl", + "shard_size": 32, + "shards": [ + { + "format": "jsonl", + "group_ids": [ + "ms-0feecef30a00e3157fad", + "ms-b184af7bae0a47d257b9", + "ms-309198f01df95841053b", + "ms-d65ed516466738f66378", + "ms-ebb616f9b291184677b3", + "ms-582e14e8ff5b73647798", + "ms-0dd06f3328be10a87b41", + "ms-5fd2e802ba562ff84bac" + ], + "path": "shards/shard_000000.jsonl", + "record_count": 32 + } + ], + "task_count": 1, + "version": "0.1" +} diff --git a/outputs/hpc/maniskill_debug_cil/metadata.json b/outputs/hpc/maniskill_debug_cil/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..12c58375086374eb74397d87baa78188752e8b00 --- /dev/null +++ b/outputs/hpc/maniskill_debug_cil/metadata.json @@ -0,0 +1,38 @@ +{ + "backend": "maniskill", + "created_at": "2026-06-19T14:05:30.068321+00:00", + "dataset_name": "cil_pickcube-v1", + "format": "dovla_cil", + "group_count": 8, + "group_index_path": "group_index.jsonl", + "index_format": "jsonl", + "k": 4, + "num_groups": 8, + "num_records": 32, + "record_count": 32, + "record_index_path": "record_index.jsonl", + "schema_version": "0.1", + "seed": 0, + "shard_count": 1, + "shard_format": "jsonl", + "shard_size": 32, + "shards": [ + { + "format": "jsonl", + "group_ids": [ + "ms-0feecef30a00e3157fad", + "ms-b184af7bae0a47d257b9", + "ms-309198f01df95841053b", + "ms-d65ed516466738f66378", + "ms-ebb616f9b291184677b3", + "ms-582e14e8ff5b73647798", + "ms-0dd06f3328be10a87b41", + "ms-5fd2e802ba562ff84bac" + ], + "path": "shards/shard_000000.jsonl", + "record_count": 32 + } + ], + "task_count": 1, + "version": "0.1" +} diff --git a/outputs/hpc/maniskill_debug_cil/record_index.jsonl b/outputs/hpc/maniskill_debug_cil/record_index.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..e9d5f4918b1febdf14ecc98f0c38b9f5db15fb1b --- /dev/null +++ b/outputs/hpc/maniskill_debug_cil/record_index.jsonl @@ -0,0 +1,32 @@ +{"candidate_type": "expert", "failure_type": "success", "group_id": "ms-0feecef30a00e3157fad", "rank_within_group": 0, "record_id": "rec-613baec5f643c5f731338d0a", "regret": 0.0, "reward_progress": 1.0, "row_index": 0, "shard_path": "shards/shard_000000.jsonl", "state_hash": "9221a4c6fd498c1c5602ae1f7b7d94c2efa4272149657b66d16ac1c656326216", "success": true, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "ms-0feecef30a00e3157fad", "rank_within_group": 1, "record_id": "rec-b5066f4365202bef592e9bf9", "regret": 0.0, "reward_progress": 1.0, "row_index": 1, "shard_path": "shards/shard_000000.jsonl", "state_hash": "9221a4c6fd498c1c5602ae1f7b7d94c2efa4272149657b66d16ac1c656326216", "success": true, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-0feecef30a00e3157fad", "rank_within_group": 2, "record_id": "rec-337da8a6cc8d1ae14def7e15", "regret": 1.4139846563339233, "reward_progress": 0.5860153436660767, "row_index": 2, "shard_path": "shards/shard_000000.jsonl", "state_hash": "9221a4c6fd498c1c5602ae1f7b7d94c2efa4272149657b66d16ac1c656326216", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "wrong_direction", "failure_type": "partial_success", "group_id": "ms-0feecef30a00e3157fad", "rank_within_group": 3, "record_id": "rec-e78e2f1a483a312722d75613", "regret": 1.44849294424057, "reward_progress": 0.5515070557594299, "row_index": 3, "shard_path": "shards/shard_000000.jsonl", "state_hash": "9221a4c6fd498c1c5602ae1f7b7d94c2efa4272149657b66d16ac1c656326216", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "ms-b184af7bae0a47d257b9", "rank_within_group": 0, "record_id": "rec-12ba869635442cd3d34e5463", "regret": 0.0, "reward_progress": 1.0, "row_index": 4, "shard_path": "shards/shard_000000.jsonl", "state_hash": "f5de84e62df5e5d266f90404a6095dd3243a227bdaf888fa97c030784c1a3a65", "success": true, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "ms-b184af7bae0a47d257b9", "rank_within_group": 1, "record_id": "rec-a7d4b4b90ca50c4444512c94", "regret": 0.0, "reward_progress": 1.0, "row_index": 5, "shard_path": "shards/shard_000000.jsonl", "state_hash": "f5de84e62df5e5d266f90404a6095dd3243a227bdaf888fa97c030784c1a3a65", "success": true, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-b184af7bae0a47d257b9", "rank_within_group": 2, "record_id": "rec-c3bb7ddb8d0d53439161f75f", "regret": 1.4150801301002502, "reward_progress": 0.5849198698997498, "row_index": 6, "shard_path": "shards/shard_000000.jsonl", "state_hash": "f5de84e62df5e5d266f90404a6095dd3243a227bdaf888fa97c030784c1a3a65", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "wrong_direction", "failure_type": "partial_success", "group_id": "ms-b184af7bae0a47d257b9", "rank_within_group": 3, "record_id": "rec-12ec35c96fcef5f291403016", "regret": 1.4572107195854187, "reward_progress": 0.5427892804145813, "row_index": 7, "shard_path": "shards/shard_000000.jsonl", "state_hash": "f5de84e62df5e5d266f90404a6095dd3243a227bdaf888fa97c030784c1a3a65", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "expert", "failure_type": "partial_success", "group_id": "ms-309198f01df95841053b", "rank_within_group": 0, "record_id": "rec-c474deae0434d933441c5f27", "regret": 0.0, "reward_progress": 0.4407064914703369, "row_index": 8, "shard_path": "shards/shard_000000.jsonl", "state_hash": "d1d9d693f1d704b3a58400e41f4fdc88f4ad1a48c880f7ca5271470bb7370748", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-309198f01df95841053b", "rank_within_group": 1, "record_id": "rec-f1111541b0b1575f6244e56b", "regret": 0.00334891676902771, "reward_progress": 0.4373575747013092, "row_index": 9, "shard_path": "shards/shard_000000.jsonl", "state_hash": "d1d9d693f1d704b3a58400e41f4fdc88f4ad1a48c880f7ca5271470bb7370748", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-309198f01df95841053b", "rank_within_group": 2, "record_id": "rec-96bc3db9d08500ba03f8dec4", "regret": 0.006520181894302368, "reward_progress": 0.43418630957603455, "row_index": 10, "shard_path": "shards/shard_000000.jsonl", "state_hash": "d1d9d693f1d704b3a58400e41f4fdc88f4ad1a48c880f7ca5271470bb7370748", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "wrong_direction", "failure_type": "partial_success", "group_id": "ms-309198f01df95841053b", "rank_within_group": 3, "record_id": "rec-e9f07e7fee064728b39f8717", "regret": 0.013920217752456665, "reward_progress": 0.42678627371788025, "row_index": 11, "shard_path": "shards/shard_000000.jsonl", "state_hash": "d1d9d693f1d704b3a58400e41f4fdc88f4ad1a48c880f7ca5271470bb7370748", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "ms-d65ed516466738f66378", "rank_within_group": 0, "record_id": "rec-2cc34bcb883d16a29a7e47be", "regret": 0.0, "reward_progress": 1.0, "row_index": 12, "shard_path": "shards/shard_000000.jsonl", "state_hash": "4d9bdd3bd7aaaaf23782a3058161f1fe6f35cebcc2cde70670151ce522a765f1", "success": true, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-d65ed516466738f66378", "rank_within_group": 1, "record_id": "rec-1398366dee93047ff0854e57", "regret": 1.3848066926002502, "reward_progress": 0.6151933073997498, "row_index": 13, "shard_path": "shards/shard_000000.jsonl", "state_hash": "4d9bdd3bd7aaaaf23782a3058161f1fe6f35cebcc2cde70670151ce522a765f1", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-d65ed516466738f66378", "rank_within_group": 2, "record_id": "rec-f1931b52529f5b071e1f45bb", "regret": 1.417664885520935, "reward_progress": 0.5823351144790649, "row_index": 14, "shard_path": "shards/shard_000000.jsonl", "state_hash": "4d9bdd3bd7aaaaf23782a3058161f1fe6f35cebcc2cde70670151ce522a765f1", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "wrong_direction", "failure_type": "partial_success", "group_id": "ms-d65ed516466738f66378", "rank_within_group": 3, "record_id": "rec-926580e42d6a5fe65c5e7b3c", "regret": 1.4729968905448914, "reward_progress": 0.5270031094551086, "row_index": 15, "shard_path": "shards/shard_000000.jsonl", "state_hash": "4d9bdd3bd7aaaaf23782a3058161f1fe6f35cebcc2cde70670151ce522a765f1", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "expert", "failure_type": "partial_success", "group_id": "ms-ebb616f9b291184677b3", "rank_within_group": 0, "record_id": "rec-17086bac5797605be2d359c0", "regret": 0.0, "reward_progress": 0.5461239218711853, "row_index": 16, "shard_path": "shards/shard_000000.jsonl", "state_hash": "40ee6aa04c8ffa69964c931b3f8f22abe8852c5ab8f173ab3493d54e216adcdd", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-ebb616f9b291184677b3", "rank_within_group": 1, "record_id": "rec-5dedbb915eb886e29f4d99f2", "regret": 0.0037599802017211914, "reward_progress": 0.5423639416694641, "row_index": 17, "shard_path": "shards/shard_000000.jsonl", "state_hash": "40ee6aa04c8ffa69964c931b3f8f22abe8852c5ab8f173ab3493d54e216adcdd", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-ebb616f9b291184677b3", "rank_within_group": 2, "record_id": "rec-505064499f1c2f27da449106", "regret": 0.39753444492816925, "reward_progress": 0.14858947694301605, "row_index": 18, "shard_path": "shards/shard_000000.jsonl", "state_hash": "40ee6aa04c8ffa69964c931b3f8f22abe8852c5ab8f173ab3493d54e216adcdd", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "wrong_direction", "failure_type": "partial_success", "group_id": "ms-ebb616f9b291184677b3", "rank_within_group": 3, "record_id": "rec-056ef9b1588bbe7e55287ef2", "regret": 0.40211284160614014, "reward_progress": 0.14401108026504517, "row_index": 19, "shard_path": "shards/shard_000000.jsonl", "state_hash": "40ee6aa04c8ffa69964c931b3f8f22abe8852c5ab8f173ab3493d54e216adcdd", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "ms-582e14e8ff5b73647798", "rank_within_group": 1, "record_id": "rec-e31df7ec300131b949aa8f00", "regret": 0.0, "reward_progress": 1.0, "row_index": 20, "shard_path": "shards/shard_000000.jsonl", "state_hash": "e54fc27620bd985e834a36d9cbfd51e7c19e3a3addaa1ae5cbe0db2850dc54ad", "success": true, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "ms-582e14e8ff5b73647798", "rank_within_group": 0, "record_id": "rec-e139b479b49c896e1284cad1", "regret": 0.0, "reward_progress": 1.0, "row_index": 21, "shard_path": "shards/shard_000000.jsonl", "state_hash": "e54fc27620bd985e834a36d9cbfd51e7c19e3a3addaa1ae5cbe0db2850dc54ad", "success": true, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-582e14e8ff5b73647798", "rank_within_group": 2, "record_id": "rec-20c3d6c388b583911711fa61", "regret": 1.4328713417053223, "reward_progress": 0.5671286582946777, "row_index": 22, "shard_path": "shards/shard_000000.jsonl", "state_hash": "e54fc27620bd985e834a36d9cbfd51e7c19e3a3addaa1ae5cbe0db2850dc54ad", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "wrong_direction", "failure_type": "partial_success", "group_id": "ms-582e14e8ff5b73647798", "rank_within_group": 3, "record_id": "rec-8104f09b9a61f0350b7a9275", "regret": 1.4719166159629822, "reward_progress": 0.5280833840370178, "row_index": 23, "shard_path": "shards/shard_000000.jsonl", "state_hash": "e54fc27620bd985e834a36d9cbfd51e7c19e3a3addaa1ae5cbe0db2850dc54ad", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "ms-0dd06f3328be10a87b41", "rank_within_group": 0, "record_id": "rec-668041ce103c4d8116f725d0", "regret": 0.0, "reward_progress": 1.0, "row_index": 24, "shard_path": "shards/shard_000000.jsonl", "state_hash": "ac64340647d0b2ffad95bb4aee8a16b9aa5c8b85f204abc4767d191577204dd3", "success": true, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "ms-0dd06f3328be10a87b41", "rank_within_group": 1, "record_id": "rec-d326a32d3a6978a8e34f340b", "regret": 0.0, "reward_progress": 1.0, "row_index": 25, "shard_path": "shards/shard_000000.jsonl", "state_hash": "ac64340647d0b2ffad95bb4aee8a16b9aa5c8b85f204abc4767d191577204dd3", "success": true, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-0dd06f3328be10a87b41", "rank_within_group": 2, "record_id": "rec-a71be3fd52f3a031e6e469ab", "regret": 1.4249737858772278, "reward_progress": 0.5750262141227722, "row_index": 26, "shard_path": "shards/shard_000000.jsonl", "state_hash": "ac64340647d0b2ffad95bb4aee8a16b9aa5c8b85f204abc4767d191577204dd3", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "wrong_direction", "failure_type": "partial_success", "group_id": "ms-0dd06f3328be10a87b41", "rank_within_group": 3, "record_id": "rec-9d9218d46673fca9a4bfd160", "regret": 1.4484828114509583, "reward_progress": 0.5515171885490417, "row_index": 27, "shard_path": "shards/shard_000000.jsonl", "state_hash": "ac64340647d0b2ffad95bb4aee8a16b9aa5c8b85f204abc4767d191577204dd3", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "expert", "failure_type": "partial_success", "group_id": "ms-5fd2e802ba562ff84bac", "rank_within_group": 0, "record_id": "rec-586c5011deb9f0c161521456", "regret": 0.0, "reward_progress": 0.5593953728675842, "row_index": 28, "shard_path": "shards/shard_000000.jsonl", "state_hash": "4a553b30e240eac704cc850024c66c3c21142951edf75a051671eb6ae8020113", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-5fd2e802ba562ff84bac", "rank_within_group": 1, "record_id": "rec-b07a2088c791808508257b5c", "regret": 0.001103043556213379, "reward_progress": 0.5582923293113708, "row_index": 29, "shard_path": "shards/shard_000000.jsonl", "state_hash": "4a553b30e240eac704cc850024c66c3c21142951edf75a051671eb6ae8020113", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-5fd2e802ba562ff84bac", "rank_within_group": 3, "record_id": "rec-52a7d62f1a75d9cc97806dd4", "regret": 0.008804142475128174, "reward_progress": 0.550591230392456, "row_index": 30, "shard_path": "shards/shard_000000.jsonl", "state_hash": "4a553b30e240eac704cc850024c66c3c21142951edf75a051671eb6ae8020113", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "wrong_direction", "failure_type": "partial_success", "group_id": "ms-5fd2e802ba562ff84bac", "rank_within_group": 2, "record_id": "rec-246a7910d27b6a3dafd58211", "regret": 0.0029767751693725586, "reward_progress": 0.5564185976982117, "row_index": 31, "shard_path": "shards/shard_000000.jsonl", "state_hash": "4a553b30e240eac704cc850024c66c3c21142951edf75a051671eb6ae8020113", "success": false, "task_id": "PickCube-v1"} diff --git a/outputs/hpc/maniskill_debug_cil/shards/shard_000000.jsonl b/outputs/hpc/maniskill_debug_cil/shards/shard_000000.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..be97a7160bd3b4ddab9e3a92f73d04034a05cc7d --- /dev/null +++ b/outputs/hpc/maniskill_debug_cil/shards/shard_000000.jsonl @@ -0,0 +1,32 @@ +{"action_chunk": {"action_id": "expert-00", "horizon": 4, "metadata": {"candidate_type": "expert", "parent_action_id": null, "perturbation": {"scale": 0.0}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.0011609308421611786, 0.014159700833261013, 0.003821399062871933, 0.01830124482512474, -0.028823481872677803, -0.061239033937454224, -1.9374459981918335], [0.0011417381465435028, 0.014252281747758389, 0.0037882663309574127, 0.018256116658449173, -0.02795773185789585, -0.06001278758049011, -1.939263939857483], [0.0011187605559825897, 0.014240077696740627, 0.0038023777306079865, 0.01820693537592888, -0.02710636891424656, -0.058771900832653046, -1.9410724639892578], [0.0011002682149410248, 0.014267436228692532, 0.0038262493908405304, 0.018095985054969788, -0.026282967999577522, -0.057614415884017944, -1.9428471326828003]]}, "candidate_type": "expert", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "success"}, "group_id": "ms-0feecef30a00e3157fad", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_step": 37, "episode_id": 365, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [0.002802289556711912, 0.030428463593125343, 0.20296664535999298, 0.83694988489151, 0.08863463997840881, 0.06255944818258286, 0.5364187359809875, 0.0019345758482813835, -0.01752256602048874, 0.044664572924375534, -1.6745522022247314, -0.5285231471061707, -2.7453246116638184, 0.006749153137207031, 0.032901763916015625, 0.21034762263298035, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149988174438477, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0547882616519928, 0.5077266097068787, 0.08639466017484665, -1.6226662397384644, 0.06732174754142761, 1.8420361280441284, 0.5348749160766602, 0.026080401614308357, 0.02613898552954197, 0.00798130128532648, 0.017056191340088844, -0.0005517237586900592, 0.026471799239516258, -0.01902257651090622, -0.029601983726024628, -0.011893323622643948, 0.0466226302087307, -0.010594511404633522]}, "next_observation_ref": null, "observation_inline": {"features": [0.0026578903198242188, 0.031007766723632812, 0.20328156650066376, 0.8393264412879944, 0.08823442459106445, 0.05927715450525284, 0.5331339836120605, 0.025655187666416168, -0.003088700817897916, 0.05606396496295929, 3.8393421173095703, 2.098541498184204, -3.5447115898132324, 0.006749153137207031, 0.032901763916015625, 0.21034762263298035, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149988174438477, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.05662459880113602, 0.5033009052276611, 0.08662069588899612, -1.630037546157837, 0.07323185354471207, 1.8507616519927979, 0.5359422564506531, 0.02603348344564438, 0.02609173208475113, 0.007983787916600704, 0.019079843536019325, -0.00026307269581593573, 0.03032848611474037, -0.0259800236672163, -0.041387300938367844, -0.01269415020942688, 0.03629815950989723, -0.03057955391705036]}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-613baec5f643c5f731338d0a", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "episode-365", "state_hash": "9221a4c6fd498c1c5602ae1f7b7d94c2efa4272149657b66d16ac1c656326216", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 37, "episode_id": 365, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.0001443992368876934, -0.0005793031305074692, -0.00031492114067077637, -0.002376556396484375, 0.00040021538734436035, 0.003282293677330017, 0.003284752368927002]}, "relation_after": {"success": true}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-01", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.05}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.007447442039847374, 0.007554457522928715, 0.03584253042936325, 0.02354625053703785, -0.05560695007443428, -0.04315928369760513, -1.9374459981918335], [0.06634174287319183, 0.061606332659721375, -0.03139849379658699, -0.04501495882868767, -0.059121452271938324, -0.05794648826122284, -1.939263939857483], [-0.11513277888298035, 0.0033004945144057274, -0.05849317088723183, -0.01840643212199211, -0.054319318383932114, -0.0745869129896164, -1.9410724639892578], [0.02168179489672184, 0.06639310717582703, -0.0026004835963249207, 0.08641915768384933, -0.0595427006483078, -0.04003891348838806, -1.9428471326828003]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "success"}, "group_id": "ms-0feecef30a00e3157fad", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_step": 37, "episode_id": 365, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [0.0018798161763697863, 0.032415393739938736, 0.20040352642536163, 0.8375406265258789, 0.09010913968086243, 0.06402615457773209, 0.5350762009620667, 0.016550304368138313, 0.01231928076595068, 0.03741036355495453, -1.7304093837738037, -0.4959694445133209, -2.7506871223449707, 0.006749153137207031, 0.032901763916015625, 0.21034762263298035, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149988174438477, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.053121477365493774, 0.5106831192970276, 0.0874413475394249, -1.6248071193695068, 0.0689401775598526, 1.8434419631958008, 0.5395680665969849, 0.026080843061208725, 0.026138639077544212, 0.06160672381520271, 0.08572288602590561, 0.003223015461117029, 0.11873703449964523, -0.0478396937251091, -0.06568967550992966, 0.0780012235045433, 0.046181924641132355, -0.010135033167898655]}, "next_observation_ref": null, "observation_inline": {"features": [0.0026578903198242188, 0.031007766723632812, 0.20328156650066376, 0.8393264412879944, 0.08823442459106445, 0.05927715450525284, 0.5331339836120605, 0.025655187666416168, -0.003088700817897916, 0.05606396496295929, 3.8393421173095703, 2.098541498184204, -3.5447115898132324, 0.006749153137207031, 0.032901763916015625, 0.21034762263298035, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149988174438477, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.05662459880113602, 0.5033009052276611, 0.08662069588899612, -1.630037546157837, 0.07323185354471207, 1.8507616519927979, 0.5359422564506531, 0.02603348344564438, 0.02609173208475113, 0.007983787916600704, 0.019079843536019325, -0.00026307269581593573, 0.03032848611474037, -0.0259800236672163, -0.041387300938367844, -0.01269415020942688, 0.03629815950989723, -0.03057955391705036]}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-b5066f4365202bef592e9bf9", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "episode-365", "state_hash": "9221a4c6fd498c1c5602ae1f7b7d94c2efa4272149657b66d16ac1c656326216", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 37, "episode_id": 365, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.0007780741434544325, 0.0014076270163059235, -0.002878040075302124, -0.0017858147621154785, 0.0018747150897979736, 0.004749000072479248, 0.0019422173500061035]}, "relation_after": {"success": true}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-02", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.15}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.136681467294693, 0.028261546045541763, -0.10770349204540253, -0.11995755136013031, -0.0974823534488678, -0.028209764510393143, -1.9374459981918335], [-0.1503009796142578, -0.017124053090810776, -0.02009548433125019, 0.09938295185565948, 0.004241136834025383, -0.006706882268190384, -1.939263939857483], [-0.09695553779602051, -0.005201966501772404, 0.12139870226383209, 0.24222160875797272, -0.21596620976924896, 0.16831666231155396, -1.9410724639892578], [0.2029815912246704, 0.1314641386270523, 0.04349459335207939, -0.028992436826229095, 0.1924201399087906, 0.23642432689666748, -1.9428471326828003]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-0feecef30a00e3157fad", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_step": 37, "episode_id": 365, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [0.005636533722281456, 0.03172820806503296, 0.20340470969676971, 0.8442433476448059, 0.08770935982465744, 0.06329785287380219, 0.5249320268630981, 0.13504771888256073, 0.05536419153213501, 0.07900746911764145, -1.6710481643676758, -0.6396580338478088, -2.9188292026519775, 0.006749153137207031, 0.032901763916015625, 0.21034762263298035, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149988174438477, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.05101298540830612, 0.5152525901794434, 0.08358114957809448, -1.6094697713851929, 0.07115259021520615, 1.8378878831863403, 0.5620845556259155, 0.026078229770064354, 0.026136422529816628, 0.08247839659452438, 0.27729833126068115, 0.024234216660261154, 0.5208402276039124, 0.054755326360464096, -0.06723543256521225, 0.2202834039926529, 0.04620134457945824, -0.010664166882634163]}, "next_observation_ref": null, "observation_inline": {"features": [0.0026578903198242188, 0.031007766723632812, 0.20328156650066376, 0.8393264412879944, 0.08823442459106445, 0.05927715450525284, 0.5331339836120605, 0.025655187666416168, -0.003088700817897916, 0.05606396496295929, 3.8393421173095703, 2.098541498184204, -3.5447115898132324, 0.006749153137207031, 0.032901763916015625, 0.21034762263298035, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149988174438477, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.05662459880113602, 0.5033009052276611, 0.08662069588899612, -1.630037546157837, 0.07323185354471207, 1.8507616519927979, 0.5359422564506531, 0.02603348344564438, 0.02609173208475113, 0.007983787916600704, 0.019079843536019325, -0.00026307269581593573, 0.03032848611474037, -0.0259800236672163, -0.041387300938367844, -0.01269415020942688, 0.03629815950989723, -0.03057955391705036]}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-337da8a6cc8d1ae14def7e15", "regret": 1.4139846563339233, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5860153436660767}, "progress": 0.5860153436660767, "success": false, "terminal_success": false}, "scene_id": "episode-365", "state_hash": "9221a4c6fd498c1c5602ae1f7b7d94c2efa4272149657b66d16ac1c656326216", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 37, "episode_id": 365, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.0029786434024572372, 0.0007204413414001465, 0.00012314319610595703, 0.0049169063568115234, -0.0005250647664070129, 0.004020698368549347, -0.008201956748962402]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "wrong_direction-03", "horizon": 4, "metadata": {"candidate_type": "wrong_direction", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.35}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.6317331194877625, 0.47444602847099304, 0.1289045512676239, -0.404610276222229, -0.0303824283182621, 0.16852718591690063, -1.9374459981918335], [-0.4497847855091095, 0.1525449901819229, 0.15424054861068726, 0.2618710696697235, -0.4423990249633789, -0.29160869121551514, -1.939263939857483], [-0.15163357555866241, -0.395190566778183, 0.6125811338424683, -0.1553618162870407, 0.08803300559520721, -0.14927229285240173, -1.9410724639892578], [0.5553157329559326, 0.47639378905296326, 0.22549965977668762, -0.7531324625015259, -0.008072827011346817, 0.1816757470369339, -1.9428471326828003]]}, "candidate_type": "wrong_direction", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-0feecef30a00e3157fad", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_step": 37, "episode_id": 365, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [0.020558565855026245, 0.05218755826354027, 0.24448055028915405, 0.8369694948196411, 0.11136741191148758, 0.056735143065452576, 0.5327855348587036, 0.3449394106864929, 0.2181425541639328, 0.23801855742931366, -1.3307796716690063, -0.2148391157388687, -2.798497438430786, 0.006749153137207031, 0.032901763916015625, 0.21034762263298035, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149988174438477, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.049467816948890686, 0.5400928258895874, 0.10573508590459824, -1.4647539854049683, 0.10537979006767273, 1.7048665285110474, 0.5595731139183044, 0.02608443796634674, 0.02614128217101097, 0.09727346152067184, 0.981759786605835, 0.18866212666034698, 2.0142438411712646, 0.38096368312835693, -0.8200709819793701, 0.2903438210487366, 0.04504454508423805, -0.010884152725338936]}, "next_observation_ref": null, "observation_inline": {"features": [0.0026578903198242188, 0.031007766723632812, 0.20328156650066376, 0.8393264412879944, 0.08823442459106445, 0.05927715450525284, 0.5331339836120605, 0.025655187666416168, -0.003088700817897916, 0.05606396496295929, 3.8393421173095703, 2.098541498184204, -3.5447115898132324, 0.006749153137207031, 0.032901763916015625, 0.21034762263298035, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149988174438477, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.05662459880113602, 0.5033009052276611, 0.08662069588899612, -1.630037546157837, 0.07323185354471207, 1.8507616519927979, 0.5359422564506531, 0.02603348344564438, 0.02609173208475113, 0.007983787916600704, 0.019079843536019325, -0.00026307269581593573, 0.03032848611474037, -0.0259800236672163, -0.041387300938367844, -0.01269415020942688, 0.03629815950989723, -0.03057955391705036]}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-e78e2f1a483a312722d75613", "regret": 1.44849294424057, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5515070557594299}, "progress": 0.5515070557594299, "success": false, "terminal_success": false}, "scene_id": "episode-365", "state_hash": "9221a4c6fd498c1c5602ae1f7b7d94c2efa4272149657b66d16ac1c656326216", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 37, "episode_id": 365, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.017900675535202026, 0.021179791539907455, 0.041198983788490295, -0.0023569464683532715, 0.023132987320423126, -0.0025420114398002625, -0.0003484487533569336]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "expert-00", "horizon": 4, "metadata": {"candidate_type": "expert", "parent_action_id": null, "perturbation": {"scale": 0.0}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.0019729547202587128, 0.006552449427545071, 0.003895331174135208, 0.015469240956008434, -0.03576033562421799, -0.1318948119878769, -2.7456161975860596], [0.0018827877938747406, 0.006538993678987026, 0.0038836337625980377, 0.015564973466098309, -0.034915126860141754, -0.13006041944026947, -2.746753215789795], [0.001856531947851181, 0.006592399440705776, 0.00385289266705513, 0.015602151863276958, -0.03414607048034668, -0.12837456166744232, -2.7478315830230713], [0.0019051097333431244, 0.0066122328862547874, 0.0038656331598758698, 0.015623952262103558, -0.033381253480911255, -0.12676943838596344, -2.7489097118377686]]}, "candidate_type": "expert", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "success"}, "group_id": "ms-b184af7bae0a47d257b9", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_step": 45, "episode_id": 504, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.017992699518799782, -0.005022818222641945, 0.07751181721687317, 0.9725367426872253, 0.059801191091537476, 0.07543321698904037, 0.2119101583957672, -0.025489456951618195, -0.023153988644480705, 0.05128823220729828, -5.5083112716674805, -1.384052038192749, -2.8970749378204346, -0.01697540283203125, -0.0025968551635742188, 0.08844153583049774, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.09427054226398468, 0.6508883237838745, 0.08446803689002991, -1.7633544206619263, -0.022490592673420906, 2.104349374771118, 0.34023183584213257, 0.01835397630929947, 0.018395232036709785, 0.009415015578269958, 0.013477715663611889, 0.00015547533985227346, 0.026784056797623634, -0.027584224939346313, -0.027294639497995377, -0.05037958547472954, 0.030288856476545334, -0.014232593588531017]}, "next_observation_ref": null, "observation_inline": {"features": [-0.01815032958984375, -0.004826068878173828, 0.07741913944482803, 0.9752032160758972, 0.05865827947854996, 0.0712374821305275, 0.20115450024604797, -0.028433270752429962, -0.023463280871510506, 0.051879022270441055, -6.120720386505127, -1.4035989046096802, -3.667757272720337, -0.01697540283203125, -0.0025968551635742188, 0.08844153583049774, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.09645640850067139, 0.647419810295105, 0.08472197502851486, -1.7707911729812622, -0.012862615287303925, 2.1148805618286133, 0.35015642642974854, 0.01838904805481434, 0.01843014545738697, 0.00920176599174738, 0.014892869628965855, 0.00034517605672590435, 0.029686719179153442, -0.02877447009086609, -0.030690696090459824, -0.05547851324081421, 0.03235930949449539, -0.012491915374994278]}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-12ba869635442cd3d34e5463", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "episode-504", "state_hash": "f5de84e62df5e5d266f90404a6095dd3243a227bdaf888fa97c030784c1a3a65", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 45, "episode_id": 504, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.0001576300710439682, -0.00019674934446811676, 9.26777720451355e-05, -0.002666473388671875, 0.0011429116129875183, 0.004195734858512878, 0.010755658149719238]}, "relation_after": {"success": true}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-01", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.05}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.05217103287577629, -0.02434290200471878, 0.0949959009885788, -0.050552304834127426, -0.06883673369884491, -0.08514231443405151, -2.7456161975860596], [0.0043355184607207775, 0.10665862262248993, 0.013309593312442303, -0.01609472930431366, -0.05379330366849899, -0.18461772799491882, -2.746753215789795], [-0.062027473002672195, 0.03811297565698624, 0.03291118144989014, 0.08033008873462677, -0.07187636196613312, -0.043919190764427185, -2.7478315830230713], [-0.01246427558362484, 0.08533264696598053, -0.017773659899830818, -0.021150212734937668, -0.020891984924674034, -0.07519678771495819, -2.7489097118377686]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "success"}, "group_id": "ms-b184af7bae0a47d257b9", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_step": 45, "episode_id": 504, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.018813110888004303, 0.00040567282121628523, 0.08205284178256989, 0.9731662273406982, 0.06134204939007759, 0.07614628225564957, 0.208294078707695, -0.032922882586717606, 0.031844791024923325, 0.03884167969226837, -5.498437881469727, -1.3502817153930664, -2.9027626514434814, -0.01697540283203125, -0.0025968551635742188, 0.08844153583049774, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.09021787345409393, 0.6414094567298889, 0.0882224440574646, -1.7664433717727661, -0.016620907932519913, 2.095982074737549, 0.3513876497745514, 0.018353542312979698, 0.018394988030195236, 0.05467018112540245, 0.01152600534260273, 0.03512869030237198, -0.02038470469415188, 0.009787886403501034, 0.030839208513498306, 0.01918463036417961, 0.030373454093933105, -0.014352929778397083]}, "next_observation_ref": null, "observation_inline": {"features": [-0.01815032958984375, -0.004826068878173828, 0.07741913944482803, 0.9752032160758972, 0.05865827947854996, 0.0712374821305275, 0.20115450024604797, -0.028433270752429962, -0.023463280871510506, 0.051879022270441055, -6.120720386505127, -1.4035989046096802, -3.667757272720337, -0.01697540283203125, -0.0025968551635742188, 0.08844153583049774, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.09645640850067139, 0.647419810295105, 0.08472197502851486, -1.7707911729812622, -0.012862615287303925, 2.1148805618286133, 0.35015642642974854, 0.01838904805481434, 0.01843014545738697, 0.00920176599174738, 0.014892869628965855, 0.00034517605672590435, 0.029686719179153442, -0.02877447009086609, -0.030690696090459824, -0.05547851324081421, 0.03235930949449539, -0.012491915374994278]}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-a7d4b4b90ca50c4444512c94", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "episode-504", "state_hash": "f5de84e62df5e5d266f90404a6095dd3243a227bdaf888fa97c030784c1a3a65", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 45, "episode_id": 504, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.000662781298160553, 0.005231741815805435, 0.004633702337741852, -0.0020369887351989746, 0.0026837699115276337, 0.00490880012512207, 0.007139578461647034]}, "relation_after": {"success": true}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-02", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.15}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.026124391704797745, -0.08127687126398087, -0.1972876340150833, -0.19475878775119781, 0.0396420955657959, 0.016562148928642273, -2.7456161975860596], [-0.022761400789022446, -0.15461574494838715, 0.1348399519920349, -0.17649410665035248, -0.14187534153461456, -0.03690773993730545, -2.746753215789795], [-0.33566462993621826, 0.0645478367805481, -0.08339323103427887, 0.031994108110666275, -0.04550129920244217, -0.09805740416049957, -2.7478315830230713], [0.1060308963060379, -0.10714323073625565, 0.2170129269361496, 0.12453801929950714, 0.0931786447763443, 0.04796016216278076, -2.7489097118377686]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-b184af7bae0a47d257b9", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_step": 45, "episode_id": 504, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.029978107661008835, -0.015082279220223427, 0.0763799250125885, 0.9735730886459351, 0.06673397868871689, 0.07567562907934189, 0.2048780769109726, 0.051543280482292175, -0.09337351471185684, 0.1923593282699585, -5.614638805389404, -1.3835883140563965, -2.995260238647461, -0.01697540283203125, -0.0025968551635742188, 0.08844153583049774, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11513037979602814, 0.6256203651428223, 0.08373702317476273, -1.812435269355774, -0.008619443513453007, 2.123668670654297, 0.3243965208530426, 0.01835264079272747, 0.018394745886325836, -0.030219167470932007, -0.12321601063013077, -0.056262459605932236, 0.2298458069562912, -0.04263369366526604, -0.25017181038856506, -0.01469374354928732, 0.030900953337550163, -0.014590136706829071]}, "next_observation_ref": null, "observation_inline": {"features": [-0.01815032958984375, -0.004826068878173828, 0.07741913944482803, 0.9752032160758972, 0.05865827947854996, 0.0712374821305275, 0.20115450024604797, -0.028433270752429962, -0.023463280871510506, 0.051879022270441055, -6.120720386505127, -1.4035989046096802, -3.667757272720337, -0.01697540283203125, -0.0025968551635742188, 0.08844153583049774, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.09645640850067139, 0.647419810295105, 0.08472197502851486, -1.7707911729812622, -0.012862615287303925, 2.1148805618286133, 0.35015642642974854, 0.01838904805481434, 0.01843014545738697, 0.00920176599174738, 0.014892869628965855, 0.00034517605672590435, 0.029686719179153442, -0.02877447009086609, -0.030690696090459824, -0.05547851324081421, 0.03235930949449539, -0.012491915374994278]}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-c3bb7ddb8d0d53439161f75f", "regret": 1.4150801301002502, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5849198698997498}, "progress": 0.5849198698997498, "success": false, "terminal_success": false}, "scene_id": "episode-504", "state_hash": "f5de84e62df5e5d266f90404a6095dd3243a227bdaf888fa97c030784c1a3a65", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 45, "episode_id": 504, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.011827778071165085, -0.010256210342049599, -0.0010392144322395325, -0.0016301274299621582, 0.008075699210166931, 0.004438146948814392, 0.0037235766649246216]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "wrong_direction-03", "horizon": 4, "metadata": {"candidate_type": "wrong_direction", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.35}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.2776288092136383, 0.30197998881340027, 0.03035309538245201, -0.48390159010887146, -0.08302612602710724, -0.40122491121292114, -2.7456161975860596], [-0.4960768222808838, 0.09699746966362, -0.19510868191719055, -0.3448665738105774, -0.3999654948711395, -0.036114439368247986, -2.746753215789795], [0.12739171087741852, 0.46945250034332275, -0.0010172412730753422, 0.38024604320526123, 0.4566466212272644, 0.27418339252471924, -2.7478315830230713], [-0.8259512782096863, 0.4366515576839447, 0.12273263931274414, 0.16394393146038055, 0.09654834866523743, 0.007195562124252319, -2.7489097118377686]]}, "candidate_type": "wrong_direction", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-b184af7bae0a47d257b9", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_step": 45, "episode_id": 504, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.05632253736257553, 0.033334411680698395, 0.0728171318769455, 0.9756702184677124, 0.06479884684085846, 0.0700390636920929, 0.19739095866680145, -0.6269729137420654, 0.273902028799057, 0.12851259112358093, -5.658299922943115, -1.2251989841461182, -2.8829736709594727, -0.01697540283203125, -0.0025968551635742188, 0.08844153583049774, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.06576626002788544, 0.5645670890808105, 0.11148528754711151, -1.93852698802948, 0.008954126387834549, 2.203606367111206, 0.4052366018295288, 0.01834847778081894, 0.018393797799944878, 0.31533557176589966, -1.5224372148513794, 0.20046548545360565, -2.4980642795562744, 0.08312174677848816, 1.0136520862579346, 0.40025001764297485, 0.03282738849520683, -0.01592366211116314]}, "next_observation_ref": null, "observation_inline": {"features": [-0.01815032958984375, -0.004826068878173828, 0.07741913944482803, 0.9752032160758972, 0.05865827947854996, 0.0712374821305275, 0.20115450024604797, -0.028433270752429962, -0.023463280871510506, 0.051879022270441055, -6.120720386505127, -1.4035989046096802, -3.667757272720337, -0.01697540283203125, -0.0025968551635742188, 0.08844153583049774, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.09645640850067139, 0.647419810295105, 0.08472197502851486, -1.7707911729812622, -0.012862615287303925, 2.1148805618286133, 0.35015642642974854, 0.01838904805481434, 0.01843014545738697, 0.00920176599174738, 0.014892869628965855, 0.00034517605672590435, 0.029686719179153442, -0.02877447009086609, -0.030690696090459824, -0.05547851324081421, 0.03235930949449539, -0.012491915374994278]}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-12ec35c96fcef5f291403016", "regret": 1.4572107195854187, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5427892804145813}, "progress": 0.5427892804145813, "success": false, "terminal_success": false}, "scene_id": "episode-504", "state_hash": "f5de84e62df5e5d266f90404a6095dd3243a227bdaf888fa97c030784c1a3a65", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 45, "episode_id": 504, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.03817220777273178, 0.03816048055887222, -0.004602007567882538, 0.00046700239181518555, 0.006140567362308502, -0.0011984184384346008, -0.003763541579246521]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "expert-00", "horizon": 4, "metadata": {"candidate_type": "expert", "parent_action_id": null, "perturbation": {"scale": 0.0}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.17378206551074982, 0.40728017687797546, -0.7562646865844727, -0.18428924679756165, -0.9198794960975647, -1.2649991512298584, -1.8287646770477295], [0.10253308713436127, 0.440475195646286, 0.14347991347312927, -0.38255882263183594, -0.6004974246025085, -1.3592766523361206, -3.096938133239746], [0.5486119985580444, 0.34104061126708984, 1.391121506690979, -0.7648138999938965, -0.6750785112380981, -1.4938395023345947, -3.2576839923858643], [0.6058839559555054, 0.296966016292572, 1.575860619544983, -0.9118196368217468, -0.8764927983283997, -1.3790135383605957, -2.540210723876953]]}, "candidate_type": "expert", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-309198f01df95841053b", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_step": 3, "episode_id": 169, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.05517501384019852, 0.04420914873480797, 0.09117098152637482, -0.08547256886959076, 0.03489239513874054, -0.021553805097937584, 0.9954959750175476, 0.38563433289527893, 0.21611198782920837, 0.8213000893592834, -2.2447712421417236, -0.21134978532791138, -0.40748536586761475, -0.046489715576171875, 0.03903961181640625, 0.2920035123825073, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0021744207479059696, 0.517220675945282, 0.07156462222337723, -1.9820590019226074, -0.0015434995293617249, 2.2715587615966797, 0.6822609901428223, 0.018286241218447685, 0.01832597143948078, -0.029115187004208565, -0.6588972210884094, 0.3527986705303192, 1.5174428224563599, 0.20168086886405945, -2.1461641788482666, -0.41151008009910583, 0.021215245127677917, -0.024421287700533867]}, "next_observation_ref": null, "observation_inline": {"features": [-0.0816192626953125, -0.007335662841796875, 0.019999967887997627, 0.02105654589831829, 4.074722710356582e-06, 6.326065431494499e-06, 0.9997782707214355, 6.756940274499357e-05, 0.00018291630840394646, -0.00012999228783883154, -0.008000089786946774, 0.002107006497681141, 3.9740301872370765e-05, -0.046489715576171875, 0.03903961181640625, 0.2920035123825073, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.018753744661808014, 0.4759700298309326, -0.0028430717065930367, -2.194178581237793, -0.02046637237071991, 2.573242425918579, 0.7404868006706238, 0.03999914601445198, 0.039995159953832626, 0.06610046327114105, 1.4165574312210083, 0.1909925937652588, -0.04825012385845184, 0.08122598379850388, 0.7321251630783081, -0.10347622632980347, -0.002208895981311798, 0.002336867619305849]}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-c474deae0434d933441c5f27", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 0.4407064914703369}, "progress": 0.4407064914703369, "success": false, "terminal_success": false}, "scene_id": "episode-169", "state_hash": "d1d9d693f1d704b3a58400e41f4fdc88f4ad1a48c880f7ca5271470bb7370748", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 3, "episode_id": 169, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.026444248855113983, 0.05154481157660484, 0.07117101550102234, -0.1065291166305542, 0.03488831967115402, -0.021560130640864372, -0.0042822957038879395]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-01", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.05}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.18975277245044708, 0.389334499835968, -0.8513464331626892, -0.18973498046398163, -0.9600660800933838, -1.0, -1.8287646770477295], [0.08809476345777512, 0.44464895129203796, 0.100999616086483, -0.40808993577957153, -0.6010740995407104, -1.0, -3.096938133239746], [0.5636462569236755, 0.3357369899749756, 1.0, -0.8847255706787109, -0.6494259238243103, -1.0, -3.2576839923858643], [0.5793835520744324, 0.28515827655792236, 1.0, -0.9143096804618835, -0.8721618056297302, -1.0, -2.540210723876953]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-309198f01df95841053b", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_step": 3, "episode_id": 169, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.05395027995109558, 0.05934324860572815, 0.0927608460187912, -0.0892360508441925, 0.033259086310863495, -0.036400508135557175, 0.9947893023490906, 0.37679582834243774, 0.20730017125606537, 0.8033604621887207, -0.14508865773677826, 0.3829379975795746, 0.05925154313445091, -0.046489715576171875, 0.03903961181640625, 0.2920035123825073, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0034733405336737633, 0.5312198996543884, 0.09265874326229095, -1.9654407501220703, 0.016723239794373512, 2.2665934562683105, 0.6784630417823792, 0.018222922459244728, 0.018263423815369606, -0.0851064920425415, -0.6589269042015076, 0.3687056601047516, 1.5005786418914795, 0.2528771758079529, -2.176558256149292, -0.3993147909641266, 0.02293493039906025, -0.02183450385928154]}, "next_observation_ref": null, "observation_inline": {"features": [-0.0816192626953125, -0.007335662841796875, 0.019999967887997627, 0.02105654589831829, 4.074722710356582e-06, 6.326065431494499e-06, 0.9997782707214355, 6.756940274499357e-05, 0.00018291630840394646, -0.00012999228783883154, -0.008000089786946774, 0.002107006497681141, 3.9740301872370765e-05, -0.046489715576171875, 0.03903961181640625, 0.2920035123825073, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.018753744661808014, 0.4759700298309326, -0.0028430717065930367, -2.194178581237793, -0.02046637237071991, 2.573242425918579, 0.7404868006706238, 0.03999914601445198, 0.039995159953832626, 0.06610046327114105, 1.4165574312210083, 0.1909925937652588, -0.04825012385845184, 0.08122598379850388, 0.7321251630783081, -0.10347622632980347, -0.002208895981311798, 0.002336867619305849]}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-f1111541b0b1575f6244e56b", "regret": 0.00334891676902771, "reward": {"dense_components": {"maniskill_normalized_dense": 0.4373575747013092}, "progress": 0.4373575747013092, "success": false, "terminal_success": false}, "scene_id": "episode-169", "state_hash": "d1d9d693f1d704b3a58400e41f4fdc88f4ad1a48c880f7ca5271470bb7370748", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 3, "episode_id": 169, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.02766898274421692, 0.06667891144752502, 0.07276087999343872, -0.11029259860515594, 0.03325501084327698, -0.03640683367848396, -0.004988968372344971]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-02", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.15}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.4208829402923584, 0.5449033975601196, -0.5962244272232056, -0.1771383434534073, -0.7823812961578369, -1.0, -1.8287646770477295], [0.19451144337654114, 0.41764625906944275, -0.077603280544281, -0.22823067009449005, -0.8907413482666016, -1.0, -3.096938133239746], [0.5179336071014404, 0.18461158871650696, 1.0, -0.7948633432388306, -0.7406087517738342, -1.0, -3.2576839923858643], [0.5343971252441406, 0.5053130388259888, 1.0, -0.9829695820808411, -1.0, -1.0, -2.540210723876953]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-309198f01df95841053b", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_step": 3, "episode_id": 169, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.05345955118536949, 0.04607940465211868, 0.0866406112909317, -0.09287817776203156, 0.04286129027605057, -0.01870848797261715, 0.9945785403251648, 0.39316973090171814, 0.3178492784500122, 0.8159131407737732, -4.217250347137451, -2.100490093231201, 7.430259704589844, -0.046489715576171875, 0.03903961181640625, 0.2920035123825073, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.004240226931869984, 0.5557800531387329, 0.07247766852378845, -1.9193670749664307, 0.008096517063677311, 2.230116367340088, 0.7010089755058289, 0.01861860416829586, 0.01865651272237301, 0.08433129638433456, -0.638028085231781, 0.4115643799304962, 1.471720576286316, 0.2751964330673218, -2.171734094619751, -0.16275249421596527, 0.06331929564476013, 0.03650665283203125]}, "next_observation_ref": null, "observation_inline": {"features": [-0.0816192626953125, -0.007335662841796875, 0.019999967887997627, 0.02105654589831829, 4.074722710356582e-06, 6.326065431494499e-06, 0.9997782707214355, 6.756940274499357e-05, 0.00018291630840394646, -0.00012999228783883154, -0.008000089786946774, 0.002107006497681141, 3.9740301872370765e-05, -0.046489715576171875, 0.03903961181640625, 0.2920035123825073, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.018753744661808014, 0.4759700298309326, -0.0028430717065930367, -2.194178581237793, -0.02046637237071991, 2.573242425918579, 0.7404868006706238, 0.03999914601445198, 0.039995159953832626, 0.06610046327114105, 1.4165574312210083, 0.1909925937652588, -0.04825012385845184, 0.08122598379850388, 0.7321251630783081, -0.10347622632980347, -0.002208895981311798, 0.002336867619305849]}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-96bc3db9d08500ba03f8dec4", "regret": 0.006520181894302368, "reward": {"dense_components": {"maniskill_normalized_dense": 0.43418630957603455}, "progress": 0.43418630957603455, "success": false, "terminal_success": false}, "scene_id": "episode-169", "state_hash": "d1d9d693f1d704b3a58400e41f4fdc88f4ad1a48c880f7ca5271470bb7370748", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 3, "episode_id": 169, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.02815971150994301, 0.05341506749391556, 0.06664064526557922, -0.113934725522995, 0.04285721480846405, -0.018714813515543938, -0.005199730396270752]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "wrong_direction-03", "horizon": 4, "metadata": {"candidate_type": "wrong_direction", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.35}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.5541728138923645, 0.3895687460899353, -0.8553584814071655, 0.390848845243454, -1.0, -1.0, -1.8287646770477295], [-0.06287260353565216, 0.6456932425498962, -0.08875741064548492, -0.5972550511360168, -1.0, -1.0, -3.096938133239746], [0.8307607769966125, 0.17430874705314636, 1.0, -1.0, -0.8402131199836731, -1.0, -3.2576839923858643], [0.6533896923065186, 1.0, 1.0, -0.7087200880050659, -0.9449198246002197, -1.0, -2.540210723876953]]}, "candidate_type": "wrong_direction", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-309198f01df95841053b", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_step": 3, "episode_id": 169, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.041669487953186035, 0.06980055570602417, 0.0912117213010788, -0.08544832468032837, 0.04808785766363144, -0.023805636912584305, 0.9948967099189758, 0.4409812390804291, 0.6336109638214111, 0.7962750196456909, -0.35956043004989624, -1.6018283367156982, 6.35523796081543, -0.046489715576171875, 0.03903961181640625, 0.2920035123825073, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.037929948419332504, 0.6003331542015076, 0.07984545081853867, -1.850622534751892, 0.002877020975574851, 2.2237510681152344, 0.7462037801742554, 0.01830025017261505, 0.018332788720726967, 0.49585846066474915, -0.38449516892433167, 0.5032404065132141, 1.917336344718933, 0.2245398759841919, -2.373033046722412, 0.32512104511260986, 0.04978051036596298, 0.02827387861907482]}, "next_observation_ref": null, "observation_inline": {"features": [-0.0816192626953125, -0.007335662841796875, 0.019999967887997627, 0.02105654589831829, 4.074722710356582e-06, 6.326065431494499e-06, 0.9997782707214355, 6.756940274499357e-05, 0.00018291630840394646, -0.00012999228783883154, -0.008000089786946774, 0.002107006497681141, 3.9740301872370765e-05, -0.046489715576171875, 0.03903961181640625, 0.2920035123825073, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.018753744661808014, 0.4759700298309326, -0.0028430717065930367, -2.194178581237793, -0.02046637237071991, 2.573242425918579, 0.7404868006706238, 0.03999914601445198, 0.039995159953832626, 0.06610046327114105, 1.4165574312210083, 0.1909925937652588, -0.04825012385845184, 0.08122598379850388, 0.7321251630783081, -0.10347622632980347, -0.002208895981311798, 0.002336867619305849]}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-e9f07e7fee064728b39f8717", "regret": 0.013920217752456665, "reward": {"dense_components": {"maniskill_normalized_dense": 0.42678627371788025}, "progress": 0.42678627371788025, "success": false, "terminal_success": false}, "scene_id": "episode-169", "state_hash": "d1d9d693f1d704b3a58400e41f4fdc88f4ad1a48c880f7ca5271470bb7370748", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 3, "episode_id": 169, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.039949774742126465, 0.07713621854782104, 0.07121175527572632, -0.10650487244129181, 0.04808378219604492, -0.023811962455511093, -0.004881560802459717]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "expert-00", "horizon": 4, "metadata": {"candidate_type": "expert", "parent_action_id": null, "perturbation": {"scale": 0.0}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.0008330158889293671, 0.01394378300756216, -0.001225348562002182, -0.04536111652851105, -0.04768943041563034, -0.15079231560230255, -1.8901182413101196], [0.001187097281217575, 0.013597956858575344, -0.00042774900794029236, -0.041714366525411606, -0.045031510293483734, -0.1475631445646286, -1.892465353012085], [0.0012379847466945648, 0.01319947000592947, 0.00019573047757148743, -0.03824581950902939, -0.04247990995645523, -0.1440671980381012, -1.8946446180343628], [0.0013305805623531342, 0.013172662816941738, 0.0005163736641407013, -0.03501201793551445, -0.040271297097206116, -0.1409093290567398, -1.8965703248977661]]}, "candidate_type": "expert", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "success"}, "group_id": "ms-d65ed516466738f66378", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_step": 24, "episode_id": 777, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.08072153478860855, 0.017802827060222626, 0.22796519100666046, 0.9869049191474915, 0.08658101409673691, 0.1151704266667366, -0.07251199334859848, -0.03177473321557045, -0.01926357112824917, 0.04763895645737648, -11.000446319580078, 4.707568168640137, -19.615724563598633, -0.07979202270507812, 0.020999908447265625, 0.22417080402374268, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.16550421714782715, 0.2788556218147278, 0.1399121731519699, -1.931618094444275, 0.1711113154888153, 1.8771659135818481, 0.529780924320221, 0.021500997245311737, 0.021550115197896957, -0.0033284807577729225, 0.03273385763168335, 0.009025744162499905, 0.03781775385141373, -0.007559837773442268, -0.03875473514199257, -0.11420585215091705, 0.24992306530475616, 0.20125234127044678]}, "next_observation_ref": null, "observation_inline": {"features": [-0.0806732177734375, 0.017627716064453125, 0.2287747859954834, 0.9861508011817932, 0.07968265563249588, 0.11234565079212189, -0.09238889068365097, -0.03447769209742546, -0.01727529801428318, 0.047687698155641556, -12.275294303894043, 5.115230560302734, -20.387374877929688, -0.07979202270507812, 0.020999908447265625, 0.22417080402374268, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.16435661911964417, 0.2703222930431366, 0.13763873279094696, -1.9423010349273682, 0.17471539974212646, 1.8913787603378296, 0.5458055734634399, 0.021768102422356606, 0.021817348897457123, -0.005791042000055313, 0.03889458253979683, 0.010288954712450504, 0.04045560956001282, -0.0018545836210250854, -0.04479827359318733, -0.12890276312828064, 0.27531275153160095, 0.22590671479701996]}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-2cc34bcb883d16a29a7e47be", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "episode-777", "state_hash": "4d9bdd3bd7aaaaf23782a3058161f1fe6f35cebcc2cde70670151ce522a765f1", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 24, "episode_id": 777, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-4.8317015171051025e-05, 0.00017511099576950073, -0.000809594988822937, 0.0007541179656982422, 0.006898358464241028, 0.0028247758746147156, 0.01987689733505249]}, "relation_after": {"success": true}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-01", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.05}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.00047244789311662316, -0.014116122387349606, -0.04460618644952774, 0.10794071853160858, -0.05155668407678604, -0.2516253590583801, -1.8901182413101196], [-0.031242933124303818, 0.047499943524599075, -0.02542817033827305, 0.02630794420838356, 0.005088403820991516, -0.15518008172512054, -1.892465353012085], [-0.022372812032699585, -0.037040580064058304, -0.034802597016096115, -0.11190297454595566, 0.017739903181791306, -0.06453216075897217, -1.8946446180343628], [-0.06147632375359535, -0.045911483466625214, -0.08790922164916992, -0.0832047313451767, -0.1955881416797638, -0.19802327454090118, -1.8965703248977661]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-d65ed516466738f66378", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_step": 24, "episode_id": 777, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.084862619638443, 0.015183095820248127, 0.22171416878700256, 0.9873415231704712, 0.08439601212739944, 0.1148172989487648, -0.06964827328920364, -0.07476619631052017, -0.05952312797307968, -0.013476714491844177, -10.938612937927246, 4.673697471618652, -19.633867263793945, -0.07979202270507812, 0.020999908447265625, 0.22417080402374268, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.16651082038879395, 0.27542153000831604, 0.13780339062213898, -1.9532992839813232, 0.16626672446727753, 1.8950703144073486, 0.5206335186958313, 0.02150038443505764, 0.021549243479967117, -0.054646871984004974, 0.07202231884002686, -0.01892559416592121, -0.07117379456758499, -0.01077986229211092, -0.02487972378730774, -0.22261181473731995, 0.24963721632957458, 0.20128385722637177]}, "next_observation_ref": null, "observation_inline": {"features": [-0.0806732177734375, 0.017627716064453125, 0.2287747859954834, 0.9861508011817932, 0.07968265563249588, 0.11234565079212189, -0.09238889068365097, -0.03447769209742546, -0.01727529801428318, 0.047687698155641556, -12.275294303894043, 5.115230560302734, -20.387374877929688, -0.07979202270507812, 0.020999908447265625, 0.22417080402374268, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.16435661911964417, 0.2703222930431366, 0.13763873279094696, -1.9423010349273682, 0.17471539974212646, 1.8913787603378296, 0.5458055734634399, 0.021768102422356606, 0.021817348897457123, -0.005791042000055313, 0.03889458253979683, 0.010288954712450504, 0.04045560956001282, -0.0018545836210250854, -0.04479827359318733, -0.12890276312828064, 0.27531275153160095, 0.22590671479701996]}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-1398366dee93047ff0854e57", "regret": 1.3848066926002502, "reward": {"dense_components": {"maniskill_normalized_dense": 0.6151933073997498}, "progress": 0.6151933073997498, "success": false, "terminal_success": false}, "scene_id": "episode-777", "state_hash": "4d9bdd3bd7aaaaf23782a3058161f1fe6f35cebcc2cde70670151ce522a765f1", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 24, "episode_id": 777, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.004189401865005493, -0.002444620244204998, -0.007060617208480835, 0.0011907219886779785, 0.0047133564949035645, 0.002471648156642914, 0.022740617394447327]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-02", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.15}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.19537033140659332, -0.03790709376335144, 0.12696228921413422, -0.11870647966861725, 0.21641066670417786, -0.12090961635112762, -1.8901182413101196], [-0.05611324682831764, 0.3964615762233734, -0.049098528921604156, -0.22489787638187408, -0.014745010063052177, -0.1533883959054947, -1.892465353012085], [0.16118666529655457, -0.12504562735557556, 0.12090326845645905, 0.089666448533535, -0.14263300597667694, -0.11958059668540955, -1.8946446180343628], [-0.12328220903873444, 0.36504387855529785, -0.10510456562042236, -0.10297317802906036, -0.20014700293540955, -0.1928275227546692, -1.8965703248977661]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-d65ed516466738f66378", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_step": 24, "episode_id": 777, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.07309697568416595, 0.032475702464580536, 0.232767254114151, 0.9864115118980408, 0.09039421379566193, 0.11289937049150467, -0.0779411569237709, -0.12267999351024628, 0.17974451184272766, -0.02474338561296463, -10.783785820007324, 5.08278226852417, -19.664640426635742, -0.07979202270507812, 0.020999908447265625, 0.22417080402374268, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.15409187972545624, 0.290104478597641, 0.1518424153327942, -1.9046658277511597, 0.18327373266220093, 1.8711512088775635, 0.5595736503601074, 0.021503601223230362, 0.02154967375099659, 0.17242370545864105, -0.05710471794009209, 0.1561124324798584, -0.31045734882354736, 0.1131548285484314, 0.14232832193374634, 0.12317660450935364, 0.24852025508880615, 0.20333407819271088]}, "next_observation_ref": null, "observation_inline": {"features": [-0.0806732177734375, 0.017627716064453125, 0.2287747859954834, 0.9861508011817932, 0.07968265563249588, 0.11234565079212189, -0.09238889068365097, -0.03447769209742546, -0.01727529801428318, 0.047687698155641556, -12.275294303894043, 5.115230560302734, -20.387374877929688, -0.07979202270507812, 0.020999908447265625, 0.22417080402374268, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.16435661911964417, 0.2703222930431366, 0.13763873279094696, -1.9423010349273682, 0.17471539974212646, 1.8913787603378296, 0.5458055734634399, 0.021768102422356606, 0.021817348897457123, -0.005791042000055313, 0.03889458253979683, 0.010288954712450504, 0.04045560956001282, -0.0018545836210250854, -0.04479827359318733, -0.12890276312828064, 0.27531275153160095, 0.22590671479701996]}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-f1931b52529f5b071e1f45bb", "regret": 1.417664885520935, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5823351144790649}, "progress": 0.5823351144790649, "success": false, "terminal_success": false}, "scene_id": "episode-777", "state_hash": "4d9bdd3bd7aaaaf23782a3058161f1fe6f35cebcc2cde70670151ce522a765f1", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 24, "episode_id": 777, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.007576242089271545, 0.014847986400127411, 0.0039924681186676025, 0.0002607107162475586, 0.010711558163166046, 0.000553719699382782, 0.014447733759880066]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "wrong_direction-03", "horizon": 4, "metadata": {"candidate_type": "wrong_direction", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.35}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[-0.0012235934846103191, 0.2826699912548065, -0.21489568054676056, -0.11038200557231903, -0.5434607267379761, -0.44038307666778564, -1.8901182413101196], [0.9657197594642639, 0.3780330717563629, -0.27392616868019104, -0.5098034143447876, -0.3864855170249939, -0.15515494346618652, -1.892465353012085], [0.01339271105825901, -0.24732674658298492, -0.45010530948638916, 0.45958665013313293, 0.11560999602079391, -0.27516600489616394, -1.8946446180343628], [-0.0759008377790451, -0.1721630096435547, -1.0, 0.005469620227813721, -0.4149618148803711, -0.49184882640838623, -1.8965703248977661]]}, "candidate_type": "wrong_direction", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-d65ed516466738f66378", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_step": 24, "episode_id": 777, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.04160797595977783, 0.02861974760890007, 0.16682781279087067, 0.9877004027366638, 0.08348466455936432, 0.120142862200737, -0.05517049506306648, -0.1555294543504715, -0.13473261892795563, -0.6492470502853394, -11.264904975891113, 4.700666904449463, -19.26621437072754, -0.07979202270507812, 0.020999908447265625, 0.22417080402374268, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.13877227902412415, 0.4813368022441864, 0.14454294741153717, -1.794020652770996, 0.13889922201633453, 1.9326870441436768, 0.5281391739845276, 0.021500522270798683, 0.02154863439500332, -0.0563155822455883, 1.0058358907699585, -0.09800763428211212, -0.3544634282588959, -0.19722063839435577, 0.8423314690589905, -0.5229341983795166, 0.24871639907360077, 0.20060810446739197]}, "next_observation_ref": null, "observation_inline": {"features": [-0.0806732177734375, 0.017627716064453125, 0.2287747859954834, 0.9861508011817932, 0.07968265563249588, 0.11234565079212189, -0.09238889068365097, -0.03447769209742546, -0.01727529801428318, 0.047687698155641556, -12.275294303894043, 5.115230560302734, -20.387374877929688, -0.07979202270507812, 0.020999908447265625, 0.22417080402374268, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.16435661911964417, 0.2703222930431366, 0.13763873279094696, -1.9423010349273682, 0.17471539974212646, 1.8913787603378296, 0.5458055734634399, 0.021768102422356606, 0.021817348897457123, -0.005791042000055313, 0.03889458253979683, 0.010288954712450504, 0.04045560956001282, -0.0018545836210250854, -0.04479827359318733, -0.12890276312828064, 0.27531275153160095, 0.22590671479701996]}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-926580e42d6a5fe65c5e7b3c", "regret": 1.4729968905448914, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5270031094551086}, "progress": 0.5270031094551086, "success": false, "terminal_success": false}, "scene_id": "episode-777", "state_hash": "4d9bdd3bd7aaaaf23782a3058161f1fe6f35cebcc2cde70670151ce522a765f1", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 24, "episode_id": 777, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.03906524181365967, 0.010992031544446945, -0.06194697320461273, 0.0015496015548706055, 0.0038020089268684387, 0.007797211408615112, 0.03721839562058449]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "expert-00", "horizon": 4, "metadata": {"candidate_type": "expert", "parent_action_id": null, "perturbation": {"scale": 0.0}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.3721258342266083, -0.6813563704490662, -2.008131742477417, 0.34020712971687317, -0.8157401084899902, -0.1550981104373932, 1.6973540782928467], [-0.24973063170909882, 0.09233307838439941, -1.1324352025985718, -0.67401123046875, -0.3986852765083313, -1.1042499542236328, -1.359148383140564], [-0.04749015346169472, -0.6376053690910339, 0.12203916907310486, -0.029855575412511826, -0.09298177808523178, -0.08498507738113403, -3.0852878093719482], [-0.01280081644654274, -0.6005521416664124, 0.08823423087596893, -0.27860698103904724, -0.04087989404797554, -0.3430824279785156, -3.0706160068511963]]}, "candidate_type": "expert", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-ebb616f9b291184677b3", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_step": 2, "episode_id": 303, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [0.07872334867715836, -0.006883082911372185, 0.024905338883399963, 0.7109313607215881, 0.011842591688036919, 0.01197492703795433, -0.7030596137046814, -0.03583677113056183, -0.48353561758995056, 0.14786677062511444, -10.073650360107422, -0.2695053815841675, -3.3979034423828125, 0.08724594116210938, -0.053432464599609375, 0.03419885411858559, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149997711181641, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.07422249019145966, 0.8566893339157104, 0.06131434440612793, -1.5701942443847656, 0.03509122133255005, 2.4159188270568848, 0.7179145812988281, 0.018520964309573174, 0.018555423244833946, -0.7542328834533691, -0.137348473072052, 0.08076009899377823, -0.04164525493979454, 0.11329883337020874, -0.135342538356781, -0.8743098974227905, 0.06526216119527817, 0.043993137776851654]}, "next_observation_ref": null, "observation_inline": {"features": [0.08759737014770508, 0.037525177001953125, 0.0199997927993536, 0.5198809504508972, -6.201305041031446e-06, -9.365126970806159e-06, -0.8542386293411255, -0.00040566784446127713, -0.0002487958699930459, -0.00010707594628911465, 0.007350654806941748, -0.008801234886050224, -4.384671683510533e-06, 0.08724594116210938, -0.053432464599609375, 0.03419885411858559, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149997711181641, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.017570504918694496, 0.6914348602294922, 0.028651613742113113, -1.6395795345306396, 0.024628089740872383, 2.3934061527252197, 0.8927773237228394, 0.03999554365873337, 0.03999999910593033, 0.4676435887813568, 2.8736166954040527, 0.19924379885196686, 2.7435455322265625, 0.0799320787191391, -0.15863299369812012, 0.5271117091178894, 0.0026528083253651857, -0.0025924858637154102]}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-17086bac5797605be2d359c0", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5461239218711853}, "progress": 0.5461239218711853, "success": false, "terminal_success": false}, "scene_id": "episode-303", "state_hash": "40ee6aa04c8ffa69964c931b3f8f22abe8852c5ab8f173ab3493d54e216adcdd", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 2, "episode_id": 303, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.008874021470546722, -0.04440826177597046, 0.004905546084046364, 0.19105041027069092, 0.011848793365061283, 0.011984292417764664, 0.1511790156364441]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-01", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.05}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.34011271595954895, -0.6447412967681885, -1.0, 0.26849305629730225, -0.7837474942207336, -0.11737966537475586, 1.6973540782928467], [-0.29767730832099915, 0.12045296281576157, -1.0, -0.6589466333389282, -0.46173328161239624, -1.0, -1.359148383140564], [0.012672793120145798, -0.6057516932487488, 0.14995616674423218, -0.21846933662891388, -0.07995028793811798, -0.08625734597444534, -3.0852878093719482], [-0.020153092220425606, -0.6320810317993164, 0.09100247919559479, -0.2580011188983917, -0.05406930297613144, -0.36624863743782043, -3.0706160068511963]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-ebb616f9b291184677b3", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_step": 2, "episode_id": 303, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [0.07849351316690445, -0.003352017141878605, 0.02527141198515892, 0.6894249320030212, 0.008157423697412014, 0.010619203560054302, -0.7242332696914673, -0.0004473542794585228, -0.4765585660934448, 0.10557220131158829, -4.278007507324219, 1.0112123489379883, -8.623929977416992, 0.08724594116210938, -0.053432464599609375, 0.03419885411858559, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149997711181641, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.07759226858615875, 0.8529528379440308, 0.068174347281456, -1.575183391571045, 0.04259920120239258, 2.4137892723083496, 0.7153593301773071, 0.018666673451662064, 0.018701765686273575, -0.7725371718406677, -0.1561340093612671, 0.06931716203689575, -0.06191544234752655, 0.09568421542644501, -0.1632627248764038, -0.9123798608779907, 0.05706802010536194, 0.011283586733043194]}, "next_observation_ref": null, "observation_inline": {"features": [0.08759737014770508, 0.037525177001953125, 0.0199997927993536, 0.5198809504508972, -6.201305041031446e-06, -9.365126970806159e-06, -0.8542386293411255, -0.00040566784446127713, -0.0002487958699930459, -0.00010707594628911465, 0.007350654806941748, -0.008801234886050224, -4.384671683510533e-06, 0.08724594116210938, -0.053432464599609375, 0.03419885411858559, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149997711181641, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.017570504918694496, 0.6914348602294922, 0.028651613742113113, -1.6395795345306396, 0.024628089740872383, 2.3934061527252197, 0.8927773237228394, 0.03999554365873337, 0.03999999910593033, 0.4676435887813568, 2.8736166954040527, 0.19924379885196686, 2.7435455322265625, 0.0799320787191391, -0.15863299369812012, 0.5271117091178894, 0.0026528083253651857, -0.0025924858637154102]}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-5dedbb915eb886e29f4d99f2", "regret": 0.0037599802017211914, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5423639416694641}, "progress": 0.5423639416694641, "success": false, "terminal_success": false}, "scene_id": "episode-303", "state_hash": "40ee6aa04c8ffa69964c931b3f8f22abe8852c5ab8f173ab3493d54e216adcdd", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 2, "episode_id": 303, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.009103856980800629, -0.040877193212509155, 0.005271619185805321, 0.16954398155212402, 0.008163625374436378, 0.010628568939864635, 0.1300053596496582]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-02", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.15}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.556588888168335, -0.8471614122390747, -1.0, 0.3667289912700653, -0.9363859295845032, -0.19859538972377777, 1.6973540782928467], [-0.387729674577713, 0.19359275698661804, -1.0, -0.757530689239502, -0.5640180110931396, -1.0, -1.359148383140564], [0.09611769020557404, -0.6546808481216431, 0.18479204177856445, -0.08625964820384979, -0.08284639567136765, -0.12867751717567444, -3.0852878093719482], [0.03130550682544708, -0.8270180225372314, 0.18486280739307404, -0.3130968511104584, 0.012911316007375717, -0.3941289484500885, -3.0706160068511963]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-ebb616f9b291184677b3", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_step": 2, "episode_id": 303, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [0.11747460812330246, 0.010592127218842506, 0.027270536869764328, 0.7438279986381531, -0.16026383638381958, -0.19472824037075043, -0.6189637780189514, 0.25834858417510986, -0.2537423074245453, -0.03758195415139198, 6.246023178100586, 0.6220399737358093, 8.433259963989258, 0.08724594116210938, -0.053432464599609375, 0.03419885411858559, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149997711181641, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0898536816239357, 0.8379302024841309, 0.06839057803153992, -1.4974201917648315, 0.041408780962228775, 2.3792898654937744, 0.6952142119407654, 0.004714650567620993, 0.0047158668749034405, -0.950747549533844, -0.2087157964706421, 0.11829589307308197, 0.08564329147338867, 0.16851425170898438, -0.2665407955646515, -1.1086859703063965, -0.14666295051574707, -0.1480758637189865]}, "next_observation_ref": null, "observation_inline": {"features": [0.08759737014770508, 0.037525177001953125, 0.0199997927993536, 0.5198809504508972, -6.201305041031446e-06, -9.365126970806159e-06, -0.8542386293411255, -0.00040566784446127713, -0.0002487958699930459, -0.00010707594628911465, 0.007350654806941748, -0.008801234886050224, -4.384671683510533e-06, 0.08724594116210938, -0.053432464599609375, 0.03419885411858559, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149997711181641, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.017570504918694496, 0.6914348602294922, 0.028651613742113113, -1.6395795345306396, 0.024628089740872383, 2.3934061527252197, 0.8927773237228394, 0.03999554365873337, 0.03999999910593033, 0.4676435887813568, 2.8736166954040527, 0.19924379885196686, 2.7435455322265625, 0.0799320787191391, -0.15863299369812012, 0.5271117091178894, 0.0026528083253651857, -0.0025924858637154102]}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-505064499f1c2f27da449106", "regret": 0.39753444492816925, "reward": {"dense_components": {"maniskill_normalized_dense": 0.14858947694301605}, "progress": 0.14858947694301605, "success": false, "terminal_success": false}, "scene_id": "episode-303", "state_hash": "40ee6aa04c8ffa69964c931b3f8f22abe8852c5ab8f173ab3493d54e216adcdd", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 2, "episode_id": 303, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.02987723797559738, -0.02693304978311062, 0.0072707440704107285, 0.22394704818725586, -0.16025763750076294, -0.1947188824415207, 0.23527485132217407]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "wrong_direction-03", "horizon": 4, "metadata": {"candidate_type": "wrong_direction", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.35}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.4842522442340851, -1.0, -1.0, -0.25603345036506653, -1.0, -0.07261498272418976, 1.6973540782928467], [0.2622641324996948, 0.18967728316783905, -1.0, -1.0, -0.4656321108341217, -1.0, -1.359148383140564], [0.544208824634552, -0.4198615550994873, -0.4131433665752411, 0.6795171499252319, -0.23123523592948914, -0.39279597997665405, -3.0852878093719482], [0.5033870935440063, -0.6179666519165039, -0.04035668075084686, -0.20203188061714172, 0.2548311650753021, 0.004585236310958862, -3.0706160068511963]]}, "candidate_type": "wrong_direction", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-ebb616f9b291184677b3", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_step": 2, "episode_id": 303, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [0.09186887741088867, 0.01589406281709671, 0.019999971613287926, 0.3011775612831116, 5.330502617084676e-08, 1.9043103804960992e-07, -0.9535680413246155, 0.01694013923406601, -0.04071340337395668, -3.2572881991654867e-06, -0.00027091335505247116, 4.566908501146827e-06, -0.5881830453872681, 0.08724594116210938, -0.053432464599609375, 0.03419885411858559, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149997711181641, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0587080754339695, 1.1161431074142456, 0.045778509229421616, -1.1326335668563843, 0.03107050247490406, 2.2334024906158447, 0.7379159331321716, 0.0, 0.0, -0.7274987101554871, 0.9664015769958496, -0.07040050625801086, 2.0047545433044434, 0.12019456923007965, -0.7485023736953735, -0.6222476959228516, 0.4210801124572754, -1.084814429283142]}, "next_observation_ref": null, "observation_inline": {"features": [0.08759737014770508, 0.037525177001953125, 0.0199997927993536, 0.5198809504508972, -6.201305041031446e-06, -9.365126970806159e-06, -0.8542386293411255, -0.00040566784446127713, -0.0002487958699930459, -0.00010707594628911465, 0.007350654806941748, -0.008801234886050224, -4.384671683510533e-06, 0.08724594116210938, -0.053432464599609375, 0.03419885411858559, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149997711181641, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.017570504918694496, 0.6914348602294922, 0.028651613742113113, -1.6395795345306396, 0.024628089740872383, 2.3934061527252197, 0.8927773237228394, 0.03999554365873337, 0.03999999910593033, 0.4676435887813568, 2.8736166954040527, 0.19924379885196686, 2.7435455322265625, 0.0799320787191391, -0.15863299369812012, 0.5271117091178894, 0.0026528083253651857, -0.0025924858637154102]}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-056ef9b1588bbe7e55287ef2", "regret": 0.40211284160614014, "reward": {"dense_components": {"maniskill_normalized_dense": 0.14401108026504517}, "progress": 0.14401108026504517, "success": false, "terminal_success": false}, "scene_id": "episode-303", "state_hash": "40ee6aa04c8ffa69964c931b3f8f22abe8852c5ab8f173ab3493d54e216adcdd", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 2, "episode_id": 303, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.004271507263183594, -0.021631114184856415, 1.7881393432617188e-07, -0.21870338916778564, 6.254610070755007e-06, 9.555557880958077e-06, -0.09932941198348999]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "expert-00", "horizon": 4, "metadata": {"candidate_type": "expert", "parent_action_id": null, "perturbation": {"scale": 0.0}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[-0.08406451344490051, -0.009523601271212101, 0.03102550283074379, 0.1217302680015564, -0.030128629878163338, 0.1350490301847458, -2.0977671146392822], [-0.05125752463936806, 0.00815442856401205, 0.01470235362648964, 0.12155389040708542, -0.010763907805085182, 0.11566876620054245, -2.108468770980835], [-0.02973148599267006, 0.01517439540475607, 0.008007053285837173, 0.11824916303157806, -0.0001966669224202633, 0.09758339822292328, -2.1169931888580322], [-0.01639438048005104, 0.016663633286952972, 0.0052188970148563385, 0.11331938952207565, 0.005766621325165033, 0.08264394849538803, -2.1227779388427734]]}, "candidate_type": "expert", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "success"}, "group_id": "ms-582e14e8ff5b73647798", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_step": 14, "episode_id": 927, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [0.05030395835638046, -0.08438871055841446, 0.2287663072347641, 0.14126752316951752, -0.03786829486489296, 0.05476733297109604, -0.9877297282218933, -0.02269616536796093, -4.539173096418381e-05, 0.028433768078684807, -4.983142852783203, -2.0210747718811035, 1.5221588611602783, 0.05788421630859375, -0.084930419921875, 0.24437257647514343, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.2305276244878769, 0.5852941274642944, 0.09876986593008041, -1.444791555404663, 0.048332490026950836, 1.8411800861358643, 0.3529989719390869, 0.01861518621444702, 0.018661078065633774, 0.03531680628657341, -0.06123385950922966, -0.02240641601383686, -0.0909213051199913, -0.03517315909266472, 0.05736472085118294, 0.09346623718738556, 0.04381907358765602, -0.01274312287569046]}, "next_observation_ref": null, "observation_inline": {"features": [0.05756378173828125, -0.0816802978515625, 0.22458434104919434, 0.1534852832555771, -0.03710265830159187, 0.06220148876309395, -0.9854930639266968, -0.07588358968496323, -0.08773867040872574, 0.141328364610672, -11.355833053588867, -3.6427416801452637, -0.7245013117790222, 0.05788421630859375, -0.084930419921875, 0.24437257647514343, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.23357778787612915, 0.6194412112236023, 0.10720300674438477, -1.4002288579940796, 0.05730186402797699, 1.8231159448623657, 0.3291076421737671, 0.018767280504107475, 0.018812820315361023, -0.052663031965494156, -0.34448161721229553, -0.0517585389316082, -0.3827923834323883, -0.007017062045633793, 0.06557676941156387, 0.05320366472005844, 0.08125831186771393, 0.04719652235507965]}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-e31df7ec300131b949aa8f00", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "episode-927", "state_hash": "e54fc27620bd985e834a36d9cbfd51e7c19e3a3addaa1ae5cbe0db2850dc54ad", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 14, "episode_id": 927, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.007259823381900787, -0.0027084127068519592, 0.004181966185569763, -0.01221776008605957, -0.0007656365633010864, -0.0074341557919979095, -0.002236664295196533]}, "relation_after": {"success": true}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-01", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.05}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[-0.15282464027404785, 0.09040047228336334, 0.07836858183145523, 0.10277021676301956, -0.0710616260766983, 0.08659841120243073, -2.0977671146392822], [-0.04508860409259796, -0.02424638345837593, -0.023541346192359924, 0.1621166169643402, 0.007464459165930748, 0.09594020247459412, -2.108468770980835], [0.0069808922708034515, 0.0835433304309845, -0.04671776294708252, 0.08808457106351852, 0.046934425830841064, 0.1335304230451584, -2.1169931888580322], [-0.0050594378262758255, 0.07478469610214233, -0.04919169098138809, 0.03936249762773514, -0.037558745592832565, 0.08877114951610565, -2.1227779388427734]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "success"}, "group_id": "ms-582e14e8ff5b73647798", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_step": 14, "episode_id": 927, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [0.04990040883421898, -0.07807276397943497, 0.2260170876979828, 0.14095959067344666, -0.03702964633703232, 0.05589501932263374, -0.9877422451972961, -0.01790763810276985, 0.04384366050362587, -0.012604843825101852, -4.938399314880371, -1.9799457788467407, 1.5175104141235352, 0.05788421630859375, -0.084930419921875, 0.24437257647514343, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.22545886039733887, 0.5823763012886047, 0.10220234841108322, -1.4574562311172485, 0.051162272691726685, 1.852561593055725, 0.3601895272731781, 0.018615007400512695, 0.01866104267537594, 0.06724301725625992, 0.010436677373945713, 0.004988157656043768, -0.0810781791806221, -0.0032488596625626087, 0.07490932196378708, 0.12468717992305756, 0.04390169680118561, -0.012823683209717274]}, "next_observation_ref": null, "observation_inline": {"features": [0.05756378173828125, -0.0816802978515625, 0.22458434104919434, 0.1534852832555771, -0.03710265830159187, 0.06220148876309395, -0.9854930639266968, -0.07588358968496323, -0.08773867040872574, 0.141328364610672, -11.355833053588867, -3.6427416801452637, -0.7245013117790222, 0.05788421630859375, -0.084930419921875, 0.24437257647514343, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.23357778787612915, 0.6194412112236023, 0.10720300674438477, -1.4002288579940796, 0.05730186402797699, 1.8231159448623657, 0.3291076421737671, 0.018767280504107475, 0.018812820315361023, -0.052663031965494156, -0.34448161721229553, -0.0517585389316082, -0.3827923834323883, -0.007017062045633793, 0.06557676941156387, 0.05320366472005844, 0.08125831186771393, 0.04719652235507965]}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-e139b479b49c896e1284cad1", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "episode-927", "state_hash": "e54fc27620bd985e834a36d9cbfd51e7c19e3a3addaa1ae5cbe0db2850dc54ad", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 14, "episode_id": 927, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.007663372904062271, 0.003607533872127533, 0.0014327466487884521, -0.012525692582130432, 7.301196455955505e-05, -0.006306469440460205, -0.0022491812705993652]}, "relation_after": {"success": true}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-02", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.15}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[-0.20347753167152405, -0.08260632306337357, -0.11522452533245087, 0.028665892779827118, -0.180846706032753, 0.19016896188259125, -2.0977671146392822], [0.06797613203525543, -0.06391245871782303, -0.016387514770030975, 0.03439900279045105, 0.06892377883195877, 0.12902717292308807, -2.108468770980835], [0.20939205586910248, -0.1491464227437973, 0.06238242983818054, 0.1848478764295578, -0.054262690246105194, 0.18511351943016052, -2.1169931888580322], [-0.23217277228832245, 0.3344841003417969, -0.1960877776145935, 0.2512904703617096, -0.16240178048610687, 0.2552764117717743, -2.1227779388427734]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-582e14e8ff5b73647798", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_step": 14, "episode_id": 927, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [0.050588421523571014, -0.09018944948911667, 0.21783584356307983, 0.13035845756530762, -0.04113270342350006, 0.05382860451936722, -0.9891496896743774, -0.1907617300748825, 0.16672435402870178, -0.1099470853805542, -5.094542980194092, -1.746885061264038, 1.4163310527801514, 0.05788421630859375, -0.084930419921875, 0.24437257647514343, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.23334963619709015, 0.6030080318450928, 0.09266728907823563, -1.4433135986328125, 0.048163022845983505, 1.8523472547531128, 0.3658505082130432, 0.018616165965795517, 0.018657991662621498, 0.20397832989692688, -0.5268130302429199, -0.007660622708499432, -1.2117648124694824, -0.03989503160119057, 0.606475293636322, 0.43255171179771423, 0.041233863681554794, -0.010608138516545296]}, "next_observation_ref": null, "observation_inline": {"features": [0.05756378173828125, -0.0816802978515625, 0.22458434104919434, 0.1534852832555771, -0.03710265830159187, 0.06220148876309395, -0.9854930639266968, -0.07588358968496323, -0.08773867040872574, 0.141328364610672, -11.355833053588867, -3.6427416801452637, -0.7245013117790222, 0.05788421630859375, -0.084930419921875, 0.24437257647514343, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.23357778787612915, 0.6194412112236023, 0.10720300674438477, -1.4002288579940796, 0.05730186402797699, 1.8231159448623657, 0.3291076421737671, 0.018767280504107475, 0.018812820315361023, -0.052663031965494156, -0.34448161721229553, -0.0517585389316082, -0.3827923834323883, -0.007017062045633793, 0.06557676941156387, 0.05320366472005844, 0.08125831186771393, 0.04719652235507965]}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-20c3d6c388b583911711fa61", "regret": 1.4328713417053223, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5671286582946777}, "progress": 0.5671286582946777, "success": false, "terminal_success": false}, "scene_id": "episode-927", "state_hash": "e54fc27620bd985e834a36d9cbfd51e7c19e3a3addaa1ae5cbe0db2850dc54ad", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 14, "episode_id": 927, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.006975360214710236, -0.008509151637554169, -0.006748497486114502, -0.02312682569026947, -0.004030045121908188, -0.00837288424372673, -0.003656625747680664]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "wrong_direction-03", "horizon": 4, "metadata": {"candidate_type": "wrong_direction", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.35}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[-0.21873542666435242, 0.04592441767454147, 0.04969581961631775, 0.5069872140884399, -0.14267024397850037, -0.903465211391449, -2.0977671146392822], [-0.31727808713912964, 0.07245374470949173, -0.13946151733398438, 0.3909911811351776, 0.34460052847862244, 0.0639486312866211, -2.108468770980835], [-0.5511074066162109, 0.49963217973709106, 0.3870757818222046, 0.013532266020774841, 0.7377042770385742, -0.024523012340068817, -2.1169931888580322], [-0.4143862724304199, -0.037892069667577744, 0.38246068358421326, -0.21478930115699768, 0.6886954307556152, -0.23114022612571716, -2.1227779388427734]]}, "candidate_type": "wrong_direction", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-582e14e8ff5b73647798", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_step": 14, "episode_id": 927, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.007472497411072254, -0.061501163989305496, 0.24074167013168335, 0.17201781272888184, -0.016838135197758675, 0.046478502452373505, -0.9838526248931885, -0.2554163336753845, 0.0245666466653347, 0.314435750246048, -4.78028678894043, -2.841351270675659, 1.5966256856918335, 0.05788421630859375, -0.084930419921875, 0.24437257647514343, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.23387691378593445, 0.3508480489253998, 0.1184983029961586, -1.7873175144195557, 0.05815117806196213, 1.9928157329559326, 0.30366694927215576, 0.01861385442316532, 0.01866557076573372, -0.17197392880916595, -1.363755702972412, 0.10205276310443878, -1.3390923738479614, 0.2587456703186035, 0.49713343381881714, -0.4320032596588135, 0.047105178236961365, -0.01602896675467491]}, "next_observation_ref": null, "observation_inline": {"features": [0.05756378173828125, -0.0816802978515625, 0.22458434104919434, 0.1534852832555771, -0.03710265830159187, 0.06220148876309395, -0.9854930639266968, -0.07588358968496323, -0.08773867040872574, 0.141328364610672, -11.355833053588867, -3.6427416801452637, -0.7245013117790222, 0.05788421630859375, -0.084930419921875, 0.24437257647514343, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.23357778787612915, 0.6194412112236023, 0.10720300674438477, -1.4002288579940796, 0.05730186402797699, 1.8231159448623657, 0.3291076421737671, 0.018767280504107475, 0.018812820315361023, -0.052663031965494156, -0.34448161721229553, -0.0517585389316082, -0.3827923834323883, -0.007017062045633793, 0.06557676941156387, 0.05320366472005844, 0.08125831186771393, 0.04719652235507965]}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-8104f09b9a61f0350b7a9275", "regret": 1.4719166159629822, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5280833840370178}, "progress": 0.5280833840370178, "success": false, "terminal_success": false}, "scene_id": "episode-927", "state_hash": "e54fc27620bd985e834a36d9cbfd51e7c19e3a3addaa1ae5cbe0db2850dc54ad", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 14, "episode_id": 927, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.06503628194332123, 0.020179133862257004, 0.016157329082489014, 0.01853252947330475, 0.0202645231038332, -0.015722986310720444, 0.0016404390335083008]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "expert-00", "horizon": 4, "metadata": {"candidate_type": "expert", "parent_action_id": null, "perturbation": {"scale": 0.0}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[-0.0012338347733020782, 0.011215037666261196, 0.004174817353487015, 0.0280715711414814, -0.023895712569355965, -0.041008904576301575, -1.8896785974502563], [-0.0012396760284900665, 0.011043376289308071, 0.004302147775888443, 0.027750849723815918, -0.023041868582367897, -0.039991527795791626, -1.8912763595581055], [-0.0012105442583560944, 0.011131889186799526, 0.004271794110536575, 0.02720389887690544, -0.022256257012486458, -0.03934475779533386, -1.8928567171096802], [-0.0012048371136188507, 0.011300004087388515, 0.004202146083116531, 0.026678431779146194, -0.021479399874806404, -0.03871263563632965, -1.8944166898727417]]}, "candidate_type": "expert", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "success"}, "group_id": "ms-0dd06f3328be10a87b41", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_step": 40, "episode_id": 306, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.021587014198303223, 0.0867224857211113, 0.2588708996772766, 0.580122709274292, 0.10925374180078506, 0.039558399468660355, 0.8061986565589905, -0.0027330145239830017, 0.0026692075189203024, 0.00396205997094512, -3.58599591255188, -1.361465334892273, 1.714866280555725, -0.017925262451171875, 0.09138870239257812, 0.2574373185634613, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149988174438477, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0036911312490701675, 0.4740299880504608, 0.13952068984508514, -1.5556014776229858, 0.02989940159022808, 1.6493574380874634, 0.5991944670677185, 0.018498597666621208, 0.018547242507338524, 0.009437930770218372, 0.014354078099131584, -0.0011122548021376133, 0.022894952446222305, -0.019118448719382286, -0.027651071548461914, 0.004385898821055889, 0.043120939284563065, -0.016346681863069534]}, "next_observation_ref": null, "observation_inline": {"features": [-0.02151775360107422, 0.08679962158203125, 0.2589028477668762, 0.5810320973396301, 0.10721961408853531, 0.03711169213056564, 0.8059331774711609, -0.0021693790331482887, 0.0044317832216620445, 0.0012913995888084173, -4.404217720031738, -1.6034506559371948, 1.673082709312439, -0.017925262451171875, 0.09138870239257812, 0.2574373185634613, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149988174438477, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0014740311307832599, 0.4702717065811157, 0.1398564726114273, -1.5617027282714844, 0.035492729395627975, 1.657006859779358, 0.5982367992401123, 0.018543170765042305, 0.018591824918985367, 0.00987355224788189, 0.016036467626690865, -0.0012336961226537824, 0.025841807946562767, -0.02061443217098713, -0.03178805112838745, 0.002871951786801219, 0.047892410308122635, -0.012868059799075127]}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-668041ce103c4d8116f725d0", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "episode-306", "state_hash": "ac64340647d0b2ffad95bb4aee8a16b9aa5c8b85f204abc4767d191577204dd3", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 40, "episode_id": 306, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-6.92605972290039e-05, -7.713586091995239e-05, -3.1948089599609375e-05, -0.0009093880653381348, 0.002034127712249756, 0.0024467073380947113, 0.00026547908782958984]}, "relation_after": {"success": true}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-01", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.05}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.04648727923631668, 0.03843815624713898, -0.0035280357114970684, 0.08209821581840515, -0.09888564795255661, 0.02686968445777893, -1.8896785974502563], [-0.004423877224326134, -0.016078386455774307, 0.041760850697755814, 0.08074580132961273, 0.01544790156185627, 0.05998366326093674, -1.8912763595581055], [0.05282576009631157, 0.0753072202205658, -0.02272140234708786, 0.03253008797764778, 0.0058928728103637695, -0.040231868624687195, -1.8928567171096802], [0.01387692429125309, 0.03260524198412895, 0.046414341777563095, 0.021597987040877342, -0.038969360291957855, -0.08012841641902924, -1.8944166898727417]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "success"}, "group_id": "ms-0dd06f3328be10a87b41", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_step": 40, "episode_id": 306, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.017233040183782578, 0.08947955816984177, 0.26014891266822815, 0.5827150344848633, 0.10880167037248611, 0.041581589728593826, 0.8042861819267273, 0.004720484372228384, 0.02101362682878971, 0.02816568687558174, -3.5906691551208496, -1.3185040950775146, 1.7615011930465698, -0.017925262451171875, 0.09138870239257812, 0.2574373185634613, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149988174438477, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.008976546116173267, 0.4901164472103119, 0.1392718106508255, -1.5270426273345947, 0.02790004014968872, 1.6354022026062012, 0.6113755106925964, 0.018497992306947708, 0.01854715868830681, 0.030725253745913506, 0.04144067317247391, 0.011600718833506107, 0.1272355318069458, -0.022897591814398766, -0.12001682072877884, 0.005750848911702633, 0.0433851033449173, -0.016649838536977768]}, "next_observation_ref": null, "observation_inline": {"features": [-0.02151775360107422, 0.08679962158203125, 0.2589028477668762, 0.5810320973396301, 0.10721961408853531, 0.03711169213056564, 0.8059331774711609, -0.0021693790331482887, 0.0044317832216620445, 0.0012913995888084173, -4.404217720031738, -1.6034506559371948, 1.673082709312439, -0.017925262451171875, 0.09138870239257812, 0.2574373185634613, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149988174438477, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0014740311307832599, 0.4702717065811157, 0.1398564726114273, -1.5617027282714844, 0.035492729395627975, 1.657006859779358, 0.5982367992401123, 0.018543170765042305, 0.018591824918985367, 0.00987355224788189, 0.016036467626690865, -0.0012336961226537824, 0.025841807946562767, -0.02061443217098713, -0.03178805112838745, 0.002871951786801219, 0.047892410308122635, -0.012868059799075127]}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-d326a32d3a6978a8e34f340b", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "episode-306", "state_hash": "ac64340647d0b2ffad95bb4aee8a16b9aa5c8b85f204abc4767d191577204dd3", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 40, "episode_id": 306, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.004284713417291641, 0.0026799365878105164, 0.0012460649013519287, 0.0016829371452331543, 0.0015820562839508057, 0.004469897598028183, -0.0016469955444335938]}, "relation_after": {"success": true}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-02", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.15}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[-0.13499368727207184, 0.1870827078819275, -0.008503406308591366, 0.14611323177814484, -0.2185002863407135, -0.3317341208457947, -1.8896785974502563], [-0.15860335528850555, 0.1830374151468277, 0.16451376676559448, 0.07755663990974426, -0.14336739480495453, -0.05961192399263382, -1.8912763595581055], [-0.045874617993831635, -0.040614113211631775, -0.3716386556625366, -0.10148505866527557, -0.050772588700056076, 0.18811941146850586, -1.8928567171096802], [0.022906621918082237, 0.22143323719501495, -0.0548538900911808, -0.011224854737520218, -0.6063926815986633, 0.030786916613578796, -1.8944166898727417]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-0dd06f3328be10a87b41", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_step": 40, "episode_id": 306, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.032905690371990204, 0.10357128083705902, 0.2504364252090454, 0.5811474919319153, 0.1215711310505867, 0.04880831390619278, 0.8031848073005676, 0.00846108142286539, 0.12439943850040436, -0.060314472764730453, -3.519052743911743, -0.9465106725692749, 1.758771538734436, -0.017925262451171875, 0.09138870239257812, 0.2574373185634613, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149988174438477, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.01966877095401287, 0.47464901208877563, 0.15002837777137756, -1.5786689519882202, 0.0404401533305645, 1.6444370746612549, 0.6282118558883667, 0.018499169498682022, 0.018546193838119507, 0.13391703367233276, 0.4628771245479584, 0.06097070127725601, 0.5331246852874756, 0.059810787439346313, -0.4677458703517914, 0.22819896042346954, 0.042082179337739944, -0.015516999177634716]}, "next_observation_ref": null, "observation_inline": {"features": [-0.02151775360107422, 0.08679962158203125, 0.2589028477668762, 0.5810320973396301, 0.10721961408853531, 0.03711169213056564, 0.8059331774711609, -0.0021693790331482887, 0.0044317832216620445, 0.0012913995888084173, -4.404217720031738, -1.6034506559371948, 1.673082709312439, -0.017925262451171875, 0.09138870239257812, 0.2574373185634613, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149988174438477, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0014740311307832599, 0.4702717065811157, 0.1398564726114273, -1.5617027282714844, 0.035492729395627975, 1.657006859779358, 0.5982367992401123, 0.018543170765042305, 0.018591824918985367, 0.00987355224788189, 0.016036467626690865, -0.0012336961226537824, 0.025841807946562767, -0.02061443217098713, -0.03178805112838745, 0.002871951786801219, 0.047892410308122635, -0.012868059799075127]}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-a71be3fd52f3a031e6e469ab", "regret": 1.4249737858772278, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5750262141227722}, "progress": 0.5750262141227722, "success": false, "terminal_success": false}, "scene_id": "episode-306", "state_hash": "ac64340647d0b2ffad95bb4aee8a16b9aa5c8b85f204abc4767d191577204dd3", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 40, "episode_id": 306, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.011387936770915985, 0.01677165925502777, -0.00846642255783081, 0.00011539459228515625, 0.014351516962051392, 0.011696621775627136, -0.0027483701705932617]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "wrong_direction-03", "horizon": 4, "metadata": {"candidate_type": "wrong_direction", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.35}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.19024965167045593, 0.6285306811332703, -0.16619160771369934, 0.061025526374578476, -0.27083051204681396, -0.45269888639450073, -1.8896785974502563], [-0.25082746148109436, -0.1097061038017273, 0.4787054657936096, 0.028524911031126976, -0.2997325658798218, 0.009665712714195251, -1.8912763595581055], [0.07493942975997925, -0.2255493402481079, 0.40440356731414795, -0.6337181925773621, -0.09699687361717224, 0.19342836737632751, -1.8928567171096802], [-0.46965622901916504, 0.13773880898952484, 0.4567147195339203, 0.18546336889266968, -0.6130353808403015, -0.29358088970184326, -1.8944166898727417]]}, "candidate_type": "wrong_direction", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-0dd06f3328be10a87b41", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_step": 40, "episode_id": 306, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.04195188358426094, 0.09829257428646088, 0.2944316565990448, 0.5736569166183472, 0.13929612934589386, 0.05175114795565605, 0.8055035471916199, -0.2843782901763916, 0.022253407165408134, 0.32181403040885925, -3.5614120960235596, -1.1466193199157715, 1.955865740776062, -0.017925262451171875, 0.09138870239257812, 0.2574373185634613, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149988174438477, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.004471197258681059, 0.4322578012943268, 0.15540248155593872, -1.5309404134750366, 0.056308768689632416, 1.5226712226867676, 0.6056818962097168, 0.01850237511098385, 0.01854625903069973, 0.006023528054356575, -0.9111706018447876, 0.06929446011781693, -0.5763579607009888, 0.03578357398509979, -0.6426538228988647, 0.10392426699399948, 0.04020439088344574, -0.013790047727525234]}, "next_observation_ref": null, "observation_inline": {"features": [-0.02151775360107422, 0.08679962158203125, 0.2589028477668762, 0.5810320973396301, 0.10721961408853531, 0.03711169213056564, 0.8059331774711609, -0.0021693790331482887, 0.0044317832216620445, 0.0012913995888084173, -4.404217720031738, -1.6034506559371948, 1.673082709312439, -0.017925262451171875, 0.09138870239257812, 0.2574373185634613, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149988174438477, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0014740311307832599, 0.4702717065811157, 0.1398564726114273, -1.5617027282714844, 0.035492729395627975, 1.657006859779358, 0.5982367992401123, 0.018543170765042305, 0.018591824918985367, 0.00987355224788189, 0.016036467626690865, -0.0012336961226537824, 0.025841807946562767, -0.02061443217098713, -0.03178805112838745, 0.002871951786801219, 0.047892410308122635, -0.012868059799075127]}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-9d9218d46673fca9a4bfd160", "regret": 1.4484828114509583, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5515171885490417}, "progress": 0.5515171885490417, "success": false, "terminal_success": false}, "scene_id": "episode-306", "state_hash": "ac64340647d0b2ffad95bb4aee8a16b9aa5c8b85f204abc4767d191577204dd3", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 40, "episode_id": 306, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.020434129983186722, 0.011492952704429626, 0.03552880883216858, -0.007375180721282959, 0.03207651525735855, 0.014639455825090408, -0.0004296302795410156]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "expert-00", "horizon": 4, "metadata": {"candidate_type": "expert", "parent_action_id": null, "perturbation": {"scale": 0.0}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[1.0171103477478027, -0.3579079508781433, 0.889896810054779, -0.6152170896530151, -0.03146065026521683, -1.4647682905197144, -2.855980634689331], [0.8834500312805176, -0.3640652000904083, 0.746472954750061, -0.5658611059188843, -0.1270078867673874, -1.290830135345459, -2.445239543914795], [0.6176306009292603, -0.3516477644443512, 0.3665168881416321, -0.4530562460422516, 0.03565755486488342, -1.0136936902999878, -2.291059970855713], [0.26555654406547546, -0.23055918514728546, -0.09549272060394287, -0.25556519627571106, 0.26079103350639343, -0.6109674572944641, -2.287905693054199]]}, "candidate_type": "expert", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-5fd2e802ba562ff84bac", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_step": 5, "episode_id": 425, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [0.06430242955684662, 0.03533773124217987, 0.12766632437705994, 0.6559252142906189, 0.01968163438141346, -0.028443152084946632, 0.7540329098701477, 0.18262562155723572, -0.2268345057964325, -0.01953957974910736, -1.7576673030853271, 0.07846354693174362, -8.97957706451416, 0.078765869140625, 0.006859779357910156, 0.11012141406536102, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0183195099234581, 0.7055085897445679, 0.06799895316362381, -1.5459887981414795, 0.023338409140706062, 2.1206231117248535, 0.595382034778595, 0.01874290220439434, 0.018780255690217018, -0.3380395174026489, 0.437762975692749, -0.0027420087717473507, 0.6651082634925842, -0.008220953866839409, -0.03704904019832611, -0.6505011916160583, 0.06160268187522888, 0.011879077181220055]}, "next_observation_ref": null, "observation_inline": {"features": [-0.04798126220703125, 0.09635448455810547, 0.030638137832283974, 0.7058821320533752, 0.016201220452785492, 0.0047178687527775764, 0.7081282138824463, 0.5693716406822205, -0.3196718096733093, 0.5425202250480652, -4.5779266357421875, 0.5358936190605164, -12.457721710205078, 0.078765869140625, 0.006859779357910156, 0.11012141406536102, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.10317341983318329, 0.63921058177948, 0.055885691195726395, -1.9718096256256104, 0.028736816719174385, 2.4467127323150635, 0.8287563323974609, 0.018879009410738945, 0.018917914479970932, -0.5789626240730286, -0.06402236968278885, -0.06250546872615814, 1.7845169305801392, -0.21395540237426758, -1.6672121286392212, -1.0036355257034302, 0.08324004709720612, 0.05095384642481804]}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-586c5011deb9f0c161521456", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5593953728675842}, "progress": 0.5593953728675842, "success": false, "terminal_success": false}, "scene_id": "episode-425", "state_hash": "4a553b30e240eac704cc850024c66c3c21142951edf75a051671eb6ae8020113", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 5, "episode_id": 425, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.11228369176387787, -0.0610167533159256, 0.09702818840742111, -0.04995691776275635, 0.003480413928627968, -0.03316102176904678, 0.045904695987701416]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-01", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.05}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[1.0, -0.3429911732673645, 0.8894038796424866, -0.5931570529937744, 0.004591796547174454, -1.0, -2.855980634689331], [0.8689300417900085, -0.356919527053833, 0.7192750573158264, -0.5725336670875549, -0.06211429834365845, -1.0, -2.445239543914795], [0.7139637470245361, -0.2576805353164673, 0.28084492683410645, -0.46010738611221313, 0.052792131900787354, -1.0, -2.291059970855713], [0.22850251197814941, -0.2424299716949463, -0.058533817529678345, -0.28113189339637756, 0.35212573409080505, -0.5964687466621399, -2.287905693054199]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-5fd2e802ba562ff84bac", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_step": 5, "episode_id": 425, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [0.06599273532629013, 0.039463795721530914, 0.12376873195171356, 0.6573019623756409, 0.021493423730134964, -0.03430755063891411, 0.7525391578674316, 0.15415385365486145, -0.2235606163740158, -0.0038455012254416943, -1.6956031322479248, 0.15533608198165894, -8.982169151306152, 0.078765869140625, 0.006859779357910156, 0.11012141406536102, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.020129617303609848, 0.7146685719490051, 0.07452423870563507, -1.5427573919296265, 0.0319095179438591, 2.1318726539611816, 0.5963903069496155, 0.018742166459560394, 0.018780522048473358, -0.3512713313102722, 0.30672821402549744, 0.013079765252768993, 0.4717218577861786, 0.010556867346167564, 0.05058038979768753, -0.6681265830993652, 0.062098465859889984, 0.011282729916274548]}, "next_observation_ref": null, "observation_inline": {"features": [-0.04798126220703125, 0.09635448455810547, 0.030638137832283974, 0.7058821320533752, 0.016201220452785492, 0.0047178687527775764, 0.7081282138824463, 0.5693716406822205, -0.3196718096733093, 0.5425202250480652, -4.5779266357421875, 0.5358936190605164, -12.457721710205078, 0.078765869140625, 0.006859779357910156, 0.11012141406536102, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.10317341983318329, 0.63921058177948, 0.055885691195726395, -1.9718096256256104, 0.028736816719174385, 2.4467127323150635, 0.8287563323974609, 0.018879009410738945, 0.018917914479970932, -0.5789626240730286, -0.06402236968278885, -0.06250546872615814, 1.7845169305801392, -0.21395540237426758, -1.6672121286392212, -1.0036355257034302, 0.08324004709720612, 0.05095384642481804]}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-b07a2088c791808508257b5c", "regret": 0.001103043556213379, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5582923293113708}, "progress": 0.5582923293113708, "success": false, "terminal_success": false}, "scene_id": "episode-425", "state_hash": "4a553b30e240eac704cc850024c66c3c21142951edf75a051671eb6ae8020113", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 5, "episode_id": 425, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.11397399753332138, -0.056890688836574554, 0.09313059598207474, -0.048580169677734375, 0.005292203277349472, -0.03902541846036911, 0.04441094398498535]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-02", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.15}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[1.0, -0.14051899313926697, 0.9838389754295349, -0.5598240494728088, -0.081131711602211, -1.0, -2.855980634689331], [1.0, -0.39457690715789795, 0.5098930597305298, -0.5099183917045593, -0.2985689043998718, -1.0, -2.445239543914795], [0.5757578611373901, -0.30942708253860474, 0.5588890910148621, -0.41068845987319946, 0.156560480594635, -1.0, -2.291059970855713], [0.2621767222881317, -0.21192748844623566, 0.033844202756881714, -0.23815609514713287, 0.3814028799533844, -0.6865973472595215, -2.287905693054199]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-5fd2e802ba562ff84bac", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_step": 5, "episode_id": 425, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [0.06548266857862473, 0.0446733757853508, 0.13191097974777222, 0.6563935875892639, 0.022941429167985916, -0.02801264077425003, 0.7535492181777954, 0.19190403819084167, -0.20972245931625366, 0.08356206864118576, -1.8341476917266846, 0.001999350031837821, -8.909453392028809, 0.078765869140625, 0.006859779357910156, 0.11012141406536102, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.009593094699084759, 0.7071107625961304, 0.07286150753498077, -1.530802845954895, 0.025893112644553185, 2.1023645401000977, 0.6080034375190735, 0.018743040040135384, 0.018780993297696114, -0.31657668948173523, 0.24249620735645294, 0.005521336104720831, 0.5963729023933411, -0.034679312258958817, -0.05699250474572182, -0.6570826172828674, 0.0620357021689415, 0.01159126590937376]}, "next_observation_ref": null, "observation_inline": {"features": [-0.04798126220703125, 0.09635448455810547, 0.030638137832283974, 0.7058821320533752, 0.016201220452785492, 0.0047178687527775764, 0.7081282138824463, 0.5693716406822205, -0.3196718096733093, 0.5425202250480652, -4.5779266357421875, 0.5358936190605164, -12.457721710205078, 0.078765869140625, 0.006859779357910156, 0.11012141406536102, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.10317341983318329, 0.63921058177948, 0.055885691195726395, -1.9718096256256104, 0.028736816719174385, 2.4467127323150635, 0.8287563323974609, 0.018879009410738945, 0.018917914479970932, -0.5789626240730286, -0.06402236968278885, -0.06250546872615814, 1.7845169305801392, -0.21395540237426758, -1.6672121286392212, -1.0036355257034302, 0.08324004709720612, 0.05095384642481804]}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-52a7d62f1a75d9cc97806dd4", "regret": 0.008804142475128174, "reward": {"dense_components": {"maniskill_normalized_dense": 0.550591230392456}, "progress": 0.550591230392456, "success": false, "terminal_success": false}, "scene_id": "episode-425", "state_hash": "4a553b30e240eac704cc850024c66c3c21142951edf75a051671eb6ae8020113", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 5, "episode_id": 425, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.11346393078565598, -0.05168110877275467, 0.10127284377813339, -0.04948854446411133, 0.006740208715200424, -0.03273050859570503, 0.04542100429534912]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "wrong_direction-03", "horizon": 4, "metadata": {"candidate_type": "wrong_direction", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.35}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[1.0, -0.21270470321178436, 0.45247530937194824, -0.5537785887718201, -0.14358752965927124, -1.0, -2.855980634689331], [1.0, -0.49071574211120605, 0.44813644886016846, -0.6979219913482666, -0.07863777875900269, -0.7630618214607239, -2.445239543914795], [0.5595539808273315, -0.18630513548851013, 0.8472696542739868, -0.2663135528564453, 0.40965500473976135, -1.0, -2.291059970855713], [0.5354238152503967, -0.2508507966995239, 0.2805512249469757, -0.6068110466003418, -0.01205417513847351, -0.16691139340400696, -2.287905693054199]]}, "candidate_type": "wrong_direction", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-5fd2e802ba562ff84bac", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_step": 5, "episode_id": 425, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [0.07287600636482239, 0.04367485269904137, 0.12325427681207657, 0.6642701029777527, 0.03432326763868332, -0.03257257118821144, 0.7459933161735535, 0.3569154441356659, -0.21897055208683014, 0.28327685594558716, -1.631638526916504, 0.34372714161872864, -9.186593055725098, 0.078765869140625, 0.006859779357910156, 0.11012141406536102, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.021830430254340172, 0.7504981160163879, 0.08066258579492569, -1.4783833026885986, 0.04424867033958435, 2.0827996730804443, 0.6105902194976807, 0.01874072104692459, 0.01878378540277481, -0.4320289194583893, 0.5641377568244934, 0.08228545635938644, 1.7416129112243652, 0.20344407856464386, -1.0091404914855957, -0.5808374285697937, 0.06530002504587173, 0.008872505277395248]}, "next_observation_ref": null, "observation_inline": {"features": [-0.04798126220703125, 0.09635448455810547, 0.030638137832283974, 0.7058821320533752, 0.016201220452785492, 0.0047178687527775764, 0.7081282138824463, 0.5693716406822205, -0.3196718096733093, 0.5425202250480652, -4.5779266357421875, 0.5358936190605164, -12.457721710205078, 0.078765869140625, 0.006859779357910156, 0.11012141406536102, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.10317341983318329, 0.63921058177948, 0.055885691195726395, -1.9718096256256104, 0.028736816719174385, 2.4467127323150635, 0.8287563323974609, 0.018879009410738945, 0.018917914479970932, -0.5789626240730286, -0.06402236968278885, -0.06250546872615814, 1.7845169305801392, -0.21395540237426758, -1.6672121286392212, -1.0036355257034302, 0.08324004709720612, 0.05095384642481804]}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-246a7910d27b6a3dafd58211", "regret": 0.0029767751693725586, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5564185976982117}, "progress": 0.5564185976982117, "success": false, "terminal_success": false}, "scene_id": "episode-425", "state_hash": "4a553b30e240eac704cc850024c66c3c21142951edf75a051671eb6ae8020113", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 5, "episode_id": 425, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.12085726857185364, -0.0526796318590641, 0.09261614084243774, -0.04161202907562256, 0.018122047185897827, -0.03729043900966644, 0.03786510229110718]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} diff --git a/outputs/hpc/maniskill_debug_runs/comparison.json b/outputs/hpc/maniskill_debug_runs/comparison.json new file mode 100644 index 0000000000000000000000000000000000000000..d72bdc9c20689d3c30ac16f9cd24d6a23a051d14 --- /dev/null +++ b/outputs/hpc/maniskill_debug_runs/comparison.json @@ -0,0 +1,26 @@ +{ + "lattice_field": { + "bc_loss": 0.015713483095169067, + "field_effect_loss": 0.013988343067467213, + "field_potential_loss": 0.32184740900993347, + "lattice_edges": 10.0, + "progress_mae": 0.3515380024909973, + "rank_acc": 0.5454545617103577, + "rank_loss": 0.6586824655532837, + "regret_mae": 0.4206950068473816, + "success_accuracy": 0.75, + "total_loss": 0.5191720128059387 + }, + "legacy": { + "bc_loss": 0.013189111836254597, + "field_effect_loss": 0.017017558217048645, + "field_potential_loss": 0.29387572407722473, + "lattice_edges": 10.0, + "progress_mae": 0.25447025895118713, + "rank_acc": 0.6363636255264282, + "rank_loss": 0.6303808093070984, + "regret_mae": 0.3931337594985962, + "success_accuracy": 0.25, + "total_loss": 1.8003435134887695 + } +} diff --git a/outputs/hpc/maniskill_debug_runs/lattice_field/best.pt b/outputs/hpc/maniskill_debug_runs/lattice_field/best.pt new file mode 100644 index 0000000000000000000000000000000000000000..5f1db5ee6e88bab03a6ed387a86298e84c5f3db2 --- /dev/null +++ b/outputs/hpc/maniskill_debug_runs/lattice_field/best.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:53da4f40cce3360bdb7ed3fbf31109c9fb0e0025c92528262aa1250612e78854 +size 4203691 diff --git a/outputs/hpc/maniskill_debug_runs/lattice_field/latest.pt b/outputs/hpc/maniskill_debug_runs/lattice_field/latest.pt new file mode 100644 index 0000000000000000000000000000000000000000..9c91e78966462cbbf9c19d3c1a2843ac0a75893b --- /dev/null +++ b/outputs/hpc/maniskill_debug_runs/lattice_field/latest.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2310b1c96ed00a37d4e191764ccbaa225640f3acdeec295d7b473bdfe5b24d39 +size 4209003 diff --git a/outputs/hpc/maniskill_debug_runs/lattice_field/metrics.json b/outputs/hpc/maniskill_debug_runs/lattice_field/metrics.json new file mode 100644 index 0000000000000000000000000000000000000000..5f2e693dabb8420a37dc7e5fb16042b89eee1879 --- /dev/null +++ b/outputs/hpc/maniskill_debug_runs/lattice_field/metrics.json @@ -0,0 +1,286 @@ +{ + "best": { + "bc_loss": 0.015713483095169067, + "field_effect_loss": 0.013988343067467213, + "field_potential_loss": 0.32184740900993347, + "lattice_edges": 10.0, + "progress_mae": 0.3515380024909973, + "rank_acc": 0.5454545617103577, + "rank_loss": 0.6586824655532837, + "regret_mae": 0.4206950068473816, + "success_accuracy": 0.75, + "total_loss": 0.5191720128059387 + }, + "history": [ + { + "epoch": 1, + "train": { + "bc_loss": 0.025107046589255333, + "field_effect_loss": 0.012329263536230428, + "field_potential_loss": 0.3580676962325621, + "lattice_edges": 9.666666666666666, + "progress_mae": 0.21247567236423492, + "rank_acc": 0.6262626449267069, + "rank_loss": 0.6878607074419657, + "regret_mae": 0.538302067356805, + "success_accuracy": 0.375, + "total_loss": 0.597463513414065 + }, + "val": { + "bc_loss": 0.016538091003894806, + "field_effect_loss": 0.014940785244107246, + "field_potential_loss": 0.3905431926250458, + "lattice_edges": 10.0, + "progress_mae": 0.28646817803382874, + "rank_acc": 0.3636363744735718, + "rank_loss": 0.6896584630012512, + "regret_mae": 0.45756810903549194, + "success_accuracy": 0.75, + "total_loss": 0.6089601516723633 + } + }, + { + "epoch": 2, + "train": { + "bc_loss": 0.015043625297645727, + "field_effect_loss": 0.012051690101846665, + "field_potential_loss": 0.3511865297477925, + "lattice_edges": 9.666666666666666, + "progress_mae": 0.3185148040453593, + "rank_acc": 0.7838384111722311, + "rank_loss": 0.6799928943316141, + "regret_mae": 0.5321582990388075, + "success_accuracy": 0.7083333333333334, + "total_loss": 0.5606492211421331 + }, + "val": { + "bc_loss": 0.015621373429894447, + "field_effect_loss": 0.01480341237038374, + "field_potential_loss": 0.3908730745315552, + "lattice_edges": 10.0, + "progress_mae": 0.35238251090049744, + "rank_acc": 0.3636363744735718, + "rank_loss": 0.6903559565544128, + "regret_mae": 0.4577712416648865, + "success_accuracy": 0.75, + "total_loss": 0.5940551161766052 + } + }, + { + "epoch": 3, + "train": { + "bc_loss": 0.009380444263418516, + "field_effect_loss": 0.011988758908652622, + "field_potential_loss": 0.3475459635374136, + "lattice_edges": 9.666666666666666, + "progress_mae": 0.34781473875045776, + "rank_acc": 0.8141414324442545, + "rank_loss": 0.6735189954439799, + "regret_mae": 0.5316295735538006, + "success_accuracy": 0.7083333333333334, + "total_loss": 0.5502631266911825 + }, + "val": { + "bc_loss": 0.012135463766753674, + "field_effect_loss": 0.01491748820990324, + "field_potential_loss": 0.37651777267456055, + "lattice_edges": 10.0, + "progress_mae": 0.29620110988616943, + "rank_acc": 0.3636363744735718, + "rank_loss": 0.6804637312889099, + "regret_mae": 0.4485548734664917, + "success_accuracy": 0.75, + "total_loss": 0.5838127136230469 + } + }, + { + "epoch": 4, + "train": { + "bc_loss": 0.008287009006987015, + "field_effect_loss": 0.01181626304363211, + "field_potential_loss": 0.3258342742919922, + "lattice_edges": 9.666666666666666, + "progress_mae": 0.271425982316335, + "rank_acc": 0.7878788113594055, + "rank_loss": 0.652787963549296, + "regret_mae": 0.5207937856515249, + "success_accuracy": 0.7083333333333334, + "total_loss": 0.5097023745377859 + }, + "val": { + "bc_loss": 0.012338231317698956, + "field_effect_loss": 0.014766596257686615, + "field_potential_loss": 0.3464403450489044, + "lattice_edges": 10.0, + "progress_mae": 0.30351871252059937, + "rank_acc": 0.3636363744735718, + "rank_loss": 0.6630281209945679, + "regret_mae": 0.43189334869384766, + "success_accuracy": 0.75, + "total_loss": 0.5597982406616211 + } + }, + { + "epoch": 5, + "train": { + "bc_loss": 0.007553014826650421, + "field_effect_loss": 0.011741486998895804, + "field_potential_loss": 0.2994754711786906, + "lattice_edges": 9.666666666666666, + "progress_mae": 0.332120622197787, + "rank_acc": 0.7878788014252981, + "rank_loss": 0.6110636790593466, + "regret_mae": 0.4801173408826192, + "success_accuracy": 0.7083333333333334, + "total_loss": 0.4717533191045125 + }, + "val": { + "bc_loss": 0.01477073971182108, + "field_effect_loss": 0.013768509030342102, + "field_potential_loss": 0.2882639765739441, + "lattice_edges": 10.0, + "progress_mae": 0.3308906555175781, + "rank_acc": 0.5454545617103577, + "rank_loss": 0.6314737200737, + "regret_mae": 0.391757607460022, + "success_accuracy": 0.25, + "total_loss": 0.5194422602653503 + } + }, + { + "epoch": 6, + "train": { + "bc_loss": 0.006743985461071134, + "field_effect_loss": 0.012146509562929472, + "field_potential_loss": 0.31643204887708026, + "lattice_edges": 9.666666666666666, + "progress_mae": 0.4015768766403198, + "rank_acc": 0.5934343536694845, + "rank_loss": 0.6019349197546641, + "regret_mae": 0.43082918723424274, + "success_accuracy": 0.7916666666666666, + "total_loss": 0.4870709578196208 + }, + "val": { + "bc_loss": 0.014119730331003666, + "field_effect_loss": 0.014754499308764935, + "field_potential_loss": 0.3992370367050171, + "lattice_edges": 10.0, + "progress_mae": 0.39868634939193726, + "rank_acc": 0.4545454680919647, + "rank_loss": 0.7053796648979187, + "regret_mae": 0.4725562334060669, + "success_accuracy": 0.75, + "total_loss": 0.6115240454673767 + } + }, + { + "epoch": 7, + "train": { + "bc_loss": 0.006526474530498187, + "field_effect_loss": 0.011751165923972925, + "field_potential_loss": 0.3468472957611084, + "lattice_edges": 9.666666666666666, + "progress_mae": 0.4552079637845357, + "rank_acc": 0.6363636751969656, + "rank_loss": 0.6861903270085653, + "regret_mae": 0.5366347134113312, + "success_accuracy": 0.7083333333333334, + "total_loss": 0.5520239174365997 + }, + "val": { + "bc_loss": 0.011764300055801868, + "field_effect_loss": 0.014576442539691925, + "field_potential_loss": 0.37923070788383484, + "lattice_edges": 10.0, + "progress_mae": 0.33854830265045166, + "rank_acc": 0.3636363744735718, + "rank_loss": 0.6845687031745911, + "regret_mae": 0.4532663822174072, + "success_accuracy": 0.75, + "total_loss": 0.5761679410934448 + } + }, + { + "epoch": 8, + "train": { + "bc_loss": 0.005880754208192229, + "field_effect_loss": 0.011764584730068842, + "field_potential_loss": 0.3312334219614665, + "lattice_edges": 9.666666666666666, + "progress_mae": 0.32828278342882794, + "rank_acc": 0.8181818326314291, + "rank_loss": 0.6545932292938232, + "regret_mae": 0.5101240376631418, + "success_accuracy": 0.7083333333333334, + "total_loss": 0.5117850502332052 + }, + "val": { + "bc_loss": 0.01121625117957592, + "field_effect_loss": 0.014847712591290474, + "field_potential_loss": 0.36583057045936584, + "lattice_edges": 10.0, + "progress_mae": 0.2514098584651947, + "rank_acc": 0.5454545617103577, + "rank_loss": 0.673559844493866, + "regret_mae": 0.4415419101715088, + "success_accuracy": 0.25, + "total_loss": 0.5825245380401611 + } + }, + { + "epoch": 9, + "train": { + "bc_loss": 0.005200387560762465, + "field_effect_loss": 0.01215088771035274, + "field_potential_loss": 0.3263251880804698, + "lattice_edges": 9.666666666666666, + "progress_mae": 0.19108301401138306, + "rank_acc": 0.8116161823272705, + "rank_loss": 0.6374223629633585, + "regret_mae": 0.5107208887736002, + "success_accuracy": 0.75, + "total_loss": 0.5144075254599253 + }, + "val": { + "bc_loss": 0.013409866020083427, + "field_effect_loss": 0.015154040418565273, + "field_potential_loss": 0.33995920419692993, + "lattice_edges": 10.0, + "progress_mae": 0.23934222757816315, + "rank_acc": 0.5454545617103577, + "rank_loss": 0.6586282849311829, + "regret_mae": 0.42555803060531616, + "success_accuracy": 0.375, + "total_loss": 0.5708356499671936 + } + }, + { + "epoch": 10, + "train": { + "bc_loss": 0.004744097668056686, + "field_effect_loss": 0.01199881142626206, + "field_potential_loss": 0.30834607779979706, + "lattice_edges": 9.666666666666666, + "progress_mae": 0.2775923063357671, + "rank_acc": 0.7954545418421427, + "rank_loss": 0.6084671219189962, + "regret_mae": 0.47900593280792236, + "success_accuracy": 0.8333333333333334, + "total_loss": 0.46871480345726013 + }, + "val": { + "bc_loss": 0.015713483095169067, + "field_effect_loss": 0.013988343067467213, + "field_potential_loss": 0.32184740900993347, + "lattice_edges": 10.0, + "progress_mae": 0.3515380024909973, + "rank_acc": 0.5454545617103577, + "rank_loss": 0.6586824655532837, + "regret_mae": 0.4206950068473816, + "success_accuracy": 0.75, + "total_loss": 0.5191720128059387 + } + } + ] +} diff --git a/outputs/hpc/maniskill_debug_runs/lattice_field/resolved_config.json b/outputs/hpc/maniskill_debug_runs/lattice_field/resolved_config.json new file mode 100644 index 0000000000000000000000000000000000000000..4f1fb8fe370cfdb15676ba15c40dc60c3f75dbdd --- /dev/null +++ b/outputs/hpc/maniskill_debug_runs/lattice_field/resolved_config.json @@ -0,0 +1,43 @@ +{ + "action_dim": 7, + "action_horizon": 4, + "batch_groups": 2, + "batch_size_groups": null, + "dataset_dir": "/lustre09/project/6037638/knguy52/vla/outputs/hpc/maniskill_debug_cil", + "device": "cuda", + "effect_dim": 16, + "epochs": 10, + "hidden_dim": 128, + "lang_dim": 64, + "lattice_neighbors": 2, + "learning_rate": 0.001, + "losses": { + "bc": 1.0, + "bc_best_action": 1.0, + "causal_contrastive": 0.5, + "contrast": 0.5, + "effect": 1.0, + "field_anchor": 0.25, + "field_effect": 1.0, + "field_potential": 1.0, + "forward_effect_prediction": 1.0, + "lang_pair": 0.25, + "language_minimal_pair": 0.25, + "progress": 1.0, + "rank": 1.0, + "regret": 0.5, + "regret_prediction": 0.5, + "same_state_pairwise_ranking": 1.0, + "success": 1.0 + }, + "lr": null, + "objective": "lattice_field", + "obs_dim": 96, + "output_dir": "/lustre09/project/6037638/knguy52/vla/outputs/hpc/maniskill_debug_runs/lattice_field", + "pair_count_per_group": 6, + "records_per_group": 4, + "seed": 0, + "val_fraction": 0.25, + "wandb": false, + "weight_decay": 0.0 +} diff --git a/outputs/hpc/maniskill_debug_runs/legacy/best.pt b/outputs/hpc/maniskill_debug_runs/legacy/best.pt new file mode 100644 index 0000000000000000000000000000000000000000..898b92a376bb022de8d2a57ec031df0c0522b96a --- /dev/null +++ b/outputs/hpc/maniskill_debug_runs/legacy/best.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f701fdac84f18e12fab0d5cb8de0c2ceff86bd31333040614edc024ba033155 +size 4203691 diff --git a/outputs/hpc/maniskill_debug_runs/legacy/latest.pt b/outputs/hpc/maniskill_debug_runs/legacy/latest.pt new file mode 100644 index 0000000000000000000000000000000000000000..30c2f11bf2193a8c3726283555f91def470370be --- /dev/null +++ b/outputs/hpc/maniskill_debug_runs/legacy/latest.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3cdff310814854f4d98ee81828b18e57af094ad59dba2a22bb57f1b90a520b1 +size 4209003 diff --git a/outputs/hpc/maniskill_debug_runs/legacy/metrics.json b/outputs/hpc/maniskill_debug_runs/legacy/metrics.json new file mode 100644 index 0000000000000000000000000000000000000000..3b7e2314a7cb87e37394ef90869dd717685f4419 --- /dev/null +++ b/outputs/hpc/maniskill_debug_runs/legacy/metrics.json @@ -0,0 +1,286 @@ +{ + "best": { + "bc_loss": 0.013189111836254597, + "field_effect_loss": 0.017017558217048645, + "field_potential_loss": 0.29387572407722473, + "lattice_edges": 10.0, + "progress_mae": 0.25447025895118713, + "rank_acc": 0.6363636255264282, + "rank_loss": 0.6303808093070984, + "regret_mae": 0.3931337594985962, + "success_accuracy": 0.25, + "total_loss": 1.8003435134887695 + }, + "history": [ + { + "epoch": 1, + "train": { + "bc_loss": 0.025591171346604824, + "field_effect_loss": 0.012326456933199855, + "field_potential_loss": 0.3573362333633365, + "lattice_edges": 9.666666666666666, + "progress_mae": 0.21901422242323557, + "rank_acc": 0.6595959862073263, + "rank_loss": 0.6888980666796366, + "regret_mae": 0.537002253656586, + "success_accuracy": 0.375, + "total_loss": 1.8034363985061646 + }, + "val": { + "bc_loss": 0.014885861426591873, + "field_effect_loss": 0.015085132792592049, + "field_potential_loss": 0.3926161229610443, + "lattice_edges": 10.0, + "progress_mae": 0.26020878553390503, + "rank_acc": 0.3636363744735718, + "rank_loss": 0.6903001070022583, + "regret_mae": 0.4571472108364105, + "success_accuracy": 0.75, + "total_loss": 1.7003620862960815 + } + }, + { + "epoch": 2, + "train": { + "bc_loss": 0.014129580619434515, + "field_effect_loss": 0.01215511942973535, + "field_potential_loss": 0.35367791039607255, + "lattice_edges": 9.666666666666666, + "progress_mae": 0.26971834152936935, + "rank_acc": 0.7808081110318502, + "rank_loss": 0.6840624213218689, + "regret_mae": 0.5334977482755979, + "success_accuracy": 0.7083333333333334, + "total_loss": 1.6885805130004883 + }, + "val": { + "bc_loss": 0.017292482778429985, + "field_effect_loss": 0.014943385496735573, + "field_potential_loss": 0.3938952386379242, + "lattice_edges": 10.0, + "progress_mae": 0.3334730267524719, + "rank_acc": 0.3636363744735718, + "rank_loss": 0.6911578178405762, + "regret_mae": 0.45742732286453247, + "success_accuracy": 0.75, + "total_loss": 1.619221568107605 + } + }, + { + "epoch": 3, + "train": { + "bc_loss": 0.009349379067619642, + "field_effect_loss": 0.012099445076576862, + "field_potential_loss": 0.3539820229707402, + "lattice_edges": 9.666666666666666, + "progress_mae": 0.3288501352071762, + "rank_acc": 0.7808081110318502, + "rank_loss": 0.6838578184445699, + "regret_mae": 0.5345801152288914, + "success_accuracy": 0.7083333333333334, + "total_loss": 1.669329007466634 + }, + "val": { + "bc_loss": 0.013673202134668827, + "field_effect_loss": 0.014995606616139412, + "field_potential_loss": 0.38833504915237427, + "lattice_edges": 10.0, + "progress_mae": 0.3086022138595581, + "rank_acc": 0.4545454680919647, + "rank_loss": 0.6873893141746521, + "regret_mae": 0.4537907838821411, + "success_accuracy": 0.75, + "total_loss": 1.6112730503082275 + } + }, + { + "epoch": 4, + "train": { + "bc_loss": 0.00788284403582414, + "field_effect_loss": 0.011821085897584757, + "field_potential_loss": 0.3387847791115443, + "lattice_edges": 9.666666666666666, + "progress_mae": 0.30456864833831787, + "rank_acc": 0.757575790087382, + "rank_loss": 0.6760869820912679, + "regret_mae": 0.5301885505517324, + "success_accuracy": 0.7083333333333334, + "total_loss": 1.61797034740448 + }, + "val": { + "bc_loss": 0.012211043387651443, + "field_effect_loss": 0.015120822004973888, + "field_potential_loss": 0.3744632303714752, + "lattice_edges": 10.0, + "progress_mae": 0.3045307993888855, + "rank_acc": 0.5454545617103577, + "rank_loss": 0.6787681579589844, + "regret_mae": 0.44586002826690674, + "success_accuracy": 0.75, + "total_loss": 1.6002709865570068 + } + }, + { + "epoch": 5, + "train": { + "bc_loss": 0.007377410617967446, + "field_effect_loss": 0.012078483123332262, + "field_potential_loss": 0.32316920161247253, + "lattice_edges": 9.666666666666666, + "progress_mae": 0.3071807324886322, + "rank_acc": 0.7575757801532745, + "rank_loss": 0.6542336146036783, + "regret_mae": 0.513342022895813, + "success_accuracy": 0.7083333333333334, + "total_loss": 1.5576763947804768 + }, + "val": { + "bc_loss": 0.014636424370110035, + "field_effect_loss": 0.015606547705829144, + "field_potential_loss": 0.32391759753227234, + "lattice_edges": 10.0, + "progress_mae": 0.28926077485084534, + "rank_acc": 0.4545454680919647, + "rank_loss": 0.6505630612373352, + "regret_mae": 0.41559654474258423, + "success_accuracy": 0.75, + "total_loss": 1.5749156475067139 + } + }, + { + "epoch": 6, + "train": { + "bc_loss": 0.006368959400181969, + "field_effect_loss": 0.012571799258391062, + "field_potential_loss": 0.30969832837581635, + "lattice_edges": 9.666666666666666, + "progress_mae": 0.2906073232491811, + "rank_acc": 0.7954545418421427, + "rank_loss": 0.6100543936093649, + "regret_mae": 0.50547989209493, + "success_accuracy": 0.75, + "total_loss": 1.4621982177098591 + }, + "val": { + "bc_loss": 0.014442263171076775, + "field_effect_loss": 0.017379125580191612, + "field_potential_loss": 0.23795829713344574, + "lattice_edges": 10.0, + "progress_mae": 0.3015138506889343, + "rank_acc": 0.4545454680919647, + "rank_loss": 0.5773982405662537, + "regret_mae": 0.34030553698539734, + "success_accuracy": 0.375, + "total_loss": 1.6229650974273682 + } + }, + { + "epoch": 7, + "train": { + "bc_loss": 0.006340755537773172, + "field_effect_loss": 0.013756685890257359, + "field_potential_loss": 0.38257618248462677, + "lattice_edges": 9.666666666666666, + "progress_mae": 0.29080664118131, + "rank_acc": 0.6969697078069051, + "rank_loss": 0.5320082704226176, + "regret_mae": 0.4142741759618123, + "success_accuracy": 0.75, + "total_loss": 1.2695877154668171 + }, + "val": { + "bc_loss": 0.01309796143323183, + "field_effect_loss": 0.015237745828926563, + "field_potential_loss": 0.4628933072090149, + "lattice_edges": 10.0, + "progress_mae": 0.43755730986595154, + "rank_acc": 0.4545454680919647, + "rank_loss": 0.7716586589813232, + "regret_mae": 0.5979644060134888, + "success_accuracy": 0.75, + "total_loss": 1.9834096431732178 + } + }, + { + "epoch": 8, + "train": { + "bc_loss": 0.005638946313410997, + "field_effect_loss": 0.011966217309236526, + "field_potential_loss": 0.40046823521455127, + "lattice_edges": 9.666666666666666, + "progress_mae": 0.40302811066309613, + "rank_acc": 0.606060634056727, + "rank_loss": 0.5856905579566956, + "regret_mae": 0.5079595645268759, + "success_accuracy": 0.75, + "total_loss": 1.457792599995931 + }, + "val": { + "bc_loss": 0.013189111836254597, + "field_effect_loss": 0.017017558217048645, + "field_potential_loss": 0.29387572407722473, + "lattice_edges": 10.0, + "progress_mae": 0.25447025895118713, + "rank_acc": 0.6363636255264282, + "rank_loss": 0.6303808093070984, + "regret_mae": 0.3931337594985962, + "success_accuracy": 0.25, + "total_loss": 1.8003435134887695 + } + }, + { + "epoch": 9, + "train": { + "bc_loss": 0.004915446043014526, + "field_effect_loss": 0.013828844763338566, + "field_potential_loss": 0.4080343047777812, + "lattice_edges": 9.666666666666666, + "progress_mae": 0.16550238927205405, + "rank_acc": 0.7449495196342468, + "rank_loss": 0.5612581868966421, + "regret_mae": 0.5933838983376821, + "success_accuracy": 0.5, + "total_loss": 1.5972285668055217 + }, + "val": { + "bc_loss": 0.01546447817236185, + "field_effect_loss": 0.015476338565349579, + "field_potential_loss": 0.30568334460258484, + "lattice_edges": 10.0, + "progress_mae": 0.2499150037765503, + "rank_acc": 0.4545454680919647, + "rank_loss": 0.6368423104286194, + "regret_mae": 0.399535208940506, + "success_accuracy": 0.25, + "total_loss": 1.7757148742675781 + } + }, + { + "epoch": 10, + "train": { + "bc_loss": 0.004695368736671905, + "field_effect_loss": 0.012434136432905992, + "field_potential_loss": 0.3751157571872075, + "lattice_edges": 9.666666666666666, + "progress_mae": 0.25627298653125763, + "rank_acc": 0.7621212204297384, + "rank_loss": 0.5521127680937449, + "regret_mae": 0.5423632065455118, + "success_accuracy": 0.7083333333333334, + "total_loss": 1.384936253229777 + }, + "val": { + "bc_loss": 0.01660914719104767, + "field_effect_loss": 0.013469601981341839, + "field_potential_loss": 0.23491299152374268, + "lattice_edges": 10.0, + "progress_mae": 0.30615469813346863, + "rank_acc": 0.4545454680919647, + "rank_loss": 0.5876333713531494, + "regret_mae": 0.30586084723472595, + "success_accuracy": 0.75, + "total_loss": 1.4093077182769775 + } + } + ] +} diff --git a/outputs/hpc/maniskill_debug_runs/legacy/resolved_config.json b/outputs/hpc/maniskill_debug_runs/legacy/resolved_config.json new file mode 100644 index 0000000000000000000000000000000000000000..3a25e649f111070419c3b991716e248531efa8d6 --- /dev/null +++ b/outputs/hpc/maniskill_debug_runs/legacy/resolved_config.json @@ -0,0 +1,43 @@ +{ + "action_dim": 7, + "action_horizon": 4, + "batch_groups": 2, + "batch_size_groups": null, + "dataset_dir": "/lustre09/project/6037638/knguy52/vla/outputs/hpc/maniskill_debug_cil", + "device": "cuda", + "effect_dim": 16, + "epochs": 10, + "hidden_dim": 128, + "lang_dim": 64, + "lattice_neighbors": 2, + "learning_rate": 0.001, + "losses": { + "bc": 1.0, + "bc_best_action": 1.0, + "causal_contrastive": 0.5, + "contrast": 0.5, + "effect": 1.0, + "field_anchor": 0.25, + "field_effect": 1.0, + "field_potential": 1.0, + "forward_effect_prediction": 1.0, + "lang_pair": 0.25, + "language_minimal_pair": 0.25, + "progress": 1.0, + "rank": 1.0, + "regret": 0.5, + "regret_prediction": 0.5, + "same_state_pairwise_ranking": 1.0, + "success": 1.0 + }, + "lr": null, + "objective": "legacy", + "obs_dim": 96, + "output_dir": "/lustre09/project/6037638/knguy52/vla/outputs/hpc/maniskill_debug_runs/legacy", + "pair_count_per_group": 6, + "records_per_group": 4, + "seed": 0, + "val_fraction": 0.25, + "wandb": false, + "weight_decay": 0.0 +} diff --git a/outputs/hpc/maniskill_integrity_debug_cil/generation_summary.json b/outputs/hpc/maniskill_integrity_debug_cil/generation_summary.json new file mode 100644 index 0000000000000000000000000000000000000000..c162a32d3659db62a6b4aceeb0685773c4fb58e9 --- /dev/null +++ b/outputs/hpc/maniskill_integrity_debug_cil/generation_summary.json @@ -0,0 +1,16 @@ +{ + "available_unique_states": 47321, + "backend": "maniskill", + "branch_execution": "parallel", + "demo_path": "/scratch/knguy52/dovla/maniskill_data/demos/PickCube-v1/rl/trajectory.none.pd_ee_delta_pose.physx_cuda.h5", + "env_id": "PickCube-v1", + "group_offset": 0, + "horizon": 4, + "k": 4, + "manifest": "/lustre09/project/6037638/knguy52/vla/outputs/hpc/maniskill_integrity_debug_cil/manifest.json", + "measurement": "exact_state_physics_branch", + "num_groups": 8, + "num_records": 32, + "seed": 0, + "state_restore_max_error": 2.384185791015625e-07 +} diff --git a/outputs/hpc/maniskill_integrity_debug_cil/group_index.jsonl b/outputs/hpc/maniskill_integrity_debug_cil/group_index.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..9c64d7f186d1ea6dde52f73a061d0ff87bade370 --- /dev/null +++ b/outputs/hpc/maniskill_integrity_debug_cil/group_index.jsonl @@ -0,0 +1,8 @@ +{"candidate_type_counts": {"expert": 1, "near_miss": 2, "wrong_direction": 1}, "group_id": "ms-d2ca94d10b502f629e5f", "instruction": "Pick up the cube and move it to the goal position.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-8aab0b0394a953c7cbcc7e82", "rec-67d497222130df0e34d695c0", "rec-d7006f31a0a0a6bdc4bcd640", "rec-2b74b01aed96955cd9b5a5ca"], "scene_id": "episode-321", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": null, "state_hash": "ceffec751d92488c121ba47bae3eca30ef1fe7e851c504bd3a7027b6503ab17b", "success_count": 2, "task_id": "PickCube-v1"} +{"candidate_type_counts": {"expert": 1, "near_miss": 2, "wrong_direction": 1}, "group_id": "ms-cc02fd08781f3155ebf1", "instruction": "Pick up the cube and move it to the goal position.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-4daad2383ef7a23612ca0162", "rec-48c034362c81cef33870759a", "rec-96950eb94f4b84206488a5f0", "rec-3d87e9d9b8e31b9a25f182b5"], "scene_id": "episode-893", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": null, "state_hash": "0257d2f552f6a16c22a16af43cdab743cd90815c293613fba926dfafcf695f83", "success_count": 1, "task_id": "PickCube-v1"} +{"candidate_type_counts": {"expert": 1, "near_miss": 2, "wrong_direction": 1}, "group_id": "ms-e3592d0113fc85f8756d", "instruction": "Pick up the cube and move it to the goal position.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-d5cf822c5755024d4898e8ea", "rec-18f49d434f0ed5229123d040", "rec-e89d99af568f3b843e6ad76d", "rec-67b0df15ff636927c8ca3e59"], "scene_id": "episode-208", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": null, "state_hash": "e39290f6807e82bf4f2a1a458d6a01661d1c706cfbb38551bc7c4acd87165b02", "success_count": 1, "task_id": "PickCube-v1"} +{"candidate_type_counts": {"expert": 1, "near_miss": 2, "wrong_direction": 1}, "group_id": "ms-09dd5910246413a9e966", "instruction": "Pick up the cube and move it to the goal position.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-cf503c13e5ce4426cad9a17f", "rec-b1c2135ffcb58364c079d55b", "rec-d029893038d65635b4d0be70", "rec-babc0f1c582fc3c11a986f3e"], "scene_id": "episode-867", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": null, "state_hash": "de5be1ec67f2417d2acd8585e3198627c1e24c13c85c8ff1cd619e41bdc2bc31", "success_count": 2, "task_id": "PickCube-v1"} +{"candidate_type_counts": {"expert": 1, "near_miss": 2, "wrong_direction": 1}, "group_id": "ms-84f05278fbb0fa0ce314", "instruction": "Pick up the cube and move it to the goal position.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-5be902c6e5a285da154bb85d", "rec-056e42e3dd49b4b0f058f5ea", "rec-58ace0d31075ec4101b66702", "rec-cc0794dc6f6f9745919960ce"], "scene_id": "episode-646", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": null, "state_hash": "f621816b331c4c09ab8d2f7e354686608b2421ce1768f25cb56b1031be3fa39e", "success_count": 1, "task_id": "PickCube-v1"} +{"candidate_type_counts": {"expert": 1, "near_miss": 2, "wrong_direction": 1}, "group_id": "ms-0b68ada383730605d059", "instruction": "Pick up the cube and move it to the goal position.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-8d18bbe3f1603905ac016370", "rec-ba3977e6c257e18c77d83bd5", "rec-38ea452492e439c69c10eb4a", "rec-9aecc12303841d85ff206466"], "scene_id": "episode-400", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": null, "state_hash": "775d9c8c267e35ab00ec198d4cc19691a84a13dfae6c21d7cad1269f673a0c04", "success_count": 2, "task_id": "PickCube-v1"} +{"candidate_type_counts": {"expert": 1, "near_miss": 2, "wrong_direction": 1}, "group_id": "ms-0d22a304512dff4de634", "instruction": "Pick up the cube and move it to the goal position.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-84348a835351b4aa6dbd4252", "rec-531d3c619e798040d390c90d", "rec-72f20d5a5153cee3223f17ed", "rec-2a5a6f86da11cccfcf90fe8d"], "scene_id": "episode-140", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": null, "state_hash": "c9f101e4f846b15df93f61a9b81d97286c88304e24a44ae0d9a3b58b2a7d9b65", "success_count": 2, "task_id": "PickCube-v1"} +{"candidate_type_counts": {"expert": 1, "near_miss": 2, "wrong_direction": 1}, "group_id": "ms-cb70b56d6ad32b11c3cf", "instruction": "Pick up the cube and move it to the goal position.", "max_reward": 0.5899049639701843, "num_records": 4, "record_ids": ["rec-ebefb59358acf7b46f6a1ae0", "rec-b386dd5eede5de999036e216", "rec-1afda2c2ade98756949572c8", "rec-81734acb629deab1c2ddc03b"], "scene_id": "episode-73", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": null, "state_hash": "cf5e15ce3631f6947b4cd8309c5919e2570ba189984e761698b8a6925acf1a30", "success_count": 0, "task_id": "PickCube-v1"} diff --git a/outputs/hpc/maniskill_integrity_debug_cil/manifest.json b/outputs/hpc/maniskill_integrity_debug_cil/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..b03fa9668dd118bf3f2ca746e169e716ee2b7a66 --- /dev/null +++ b/outputs/hpc/maniskill_integrity_debug_cil/manifest.json @@ -0,0 +1,38 @@ +{ + "backend": "maniskill", + "created_at": "2026-06-19T14:12:33.219141+00:00", + "dataset_name": "cil_pickcube-v1", + "format": "dovla_cil", + "group_count": 8, + "group_index_path": "group_index.jsonl", + "index_format": "jsonl", + "k": 4, + "num_groups": 8, + "num_records": 32, + "record_count": 32, + "record_index_path": "record_index.jsonl", + "schema_version": "0.1", + "seed": 0, + "shard_count": 1, + "shard_format": "jsonl", + "shard_size": 32, + "shards": [ + { + "format": "jsonl", + "group_ids": [ + "ms-d2ca94d10b502f629e5f", + "ms-cc02fd08781f3155ebf1", + "ms-e3592d0113fc85f8756d", + "ms-09dd5910246413a9e966", + "ms-84f05278fbb0fa0ce314", + "ms-0b68ada383730605d059", + "ms-0d22a304512dff4de634", + "ms-cb70b56d6ad32b11c3cf" + ], + "path": "shards/shard_000000.jsonl", + "record_count": 32 + } + ], + "task_count": 1, + "version": "0.1" +} diff --git a/outputs/hpc/maniskill_integrity_debug_cil/metadata.json b/outputs/hpc/maniskill_integrity_debug_cil/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..b03fa9668dd118bf3f2ca746e169e716ee2b7a66 --- /dev/null +++ b/outputs/hpc/maniskill_integrity_debug_cil/metadata.json @@ -0,0 +1,38 @@ +{ + "backend": "maniskill", + "created_at": "2026-06-19T14:12:33.219141+00:00", + "dataset_name": "cil_pickcube-v1", + "format": "dovla_cil", + "group_count": 8, + "group_index_path": "group_index.jsonl", + "index_format": "jsonl", + "k": 4, + "num_groups": 8, + "num_records": 32, + "record_count": 32, + "record_index_path": "record_index.jsonl", + "schema_version": "0.1", + "seed": 0, + "shard_count": 1, + "shard_format": "jsonl", + "shard_size": 32, + "shards": [ + { + "format": "jsonl", + "group_ids": [ + "ms-d2ca94d10b502f629e5f", + "ms-cc02fd08781f3155ebf1", + "ms-e3592d0113fc85f8756d", + "ms-09dd5910246413a9e966", + "ms-84f05278fbb0fa0ce314", + "ms-0b68ada383730605d059", + "ms-0d22a304512dff4de634", + "ms-cb70b56d6ad32b11c3cf" + ], + "path": "shards/shard_000000.jsonl", + "record_count": 32 + } + ], + "task_count": 1, + "version": "0.1" +} diff --git a/outputs/hpc/maniskill_integrity_debug_cil/record_index.jsonl b/outputs/hpc/maniskill_integrity_debug_cil/record_index.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..3b0c2d20249f277e4180ffc1091680e0fdb66c3c --- /dev/null +++ b/outputs/hpc/maniskill_integrity_debug_cil/record_index.jsonl @@ -0,0 +1,32 @@ +{"candidate_type": "expert", "failure_type": "success", "group_id": "ms-d2ca94d10b502f629e5f", "rank_within_group": 1, "record_id": "rec-8aab0b0394a953c7cbcc7e82", "regret": 0.0, "reward_progress": 1.0, "row_index": 0, "shard_path": "shards/shard_000000.jsonl", "state_hash": "ceffec751d92488c121ba47bae3eca30ef1fe7e851c504bd3a7027b6503ab17b", "success": true, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "ms-d2ca94d10b502f629e5f", "rank_within_group": 0, "record_id": "rec-67d497222130df0e34d695c0", "regret": 0.0, "reward_progress": 1.0, "row_index": 1, "shard_path": "shards/shard_000000.jsonl", "state_hash": "ceffec751d92488c121ba47bae3eca30ef1fe7e851c504bd3a7027b6503ab17b", "success": true, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-d2ca94d10b502f629e5f", "rank_within_group": 2, "record_id": "rec-d7006f31a0a0a6bdc4bcd640", "regret": 1.4161138534545898, "reward_progress": 0.5838861465454102, "row_index": 2, "shard_path": "shards/shard_000000.jsonl", "state_hash": "ceffec751d92488c121ba47bae3eca30ef1fe7e851c504bd3a7027b6503ab17b", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "wrong_direction", "failure_type": "partial_success", "group_id": "ms-d2ca94d10b502f629e5f", "rank_within_group": 3, "record_id": "rec-2b74b01aed96955cd9b5a5ca", "regret": 1.4195680618286133, "reward_progress": 0.5804319381713867, "row_index": 3, "shard_path": "shards/shard_000000.jsonl", "state_hash": "ceffec751d92488c121ba47bae3eca30ef1fe7e851c504bd3a7027b6503ab17b", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "ms-cc02fd08781f3155ebf1", "rank_within_group": 0, "record_id": "rec-4daad2383ef7a23612ca0162", "regret": 0.0, "reward_progress": 1.0, "row_index": 4, "shard_path": "shards/shard_000000.jsonl", "state_hash": "0257d2f552f6a16c22a16af43cdab743cd90815c293613fba926dfafcf695f83", "success": true, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-cc02fd08781f3155ebf1", "rank_within_group": 1, "record_id": "rec-48c034362c81cef33870759a", "regret": 1.4200182557106018, "reward_progress": 0.5799817442893982, "row_index": 5, "shard_path": "shards/shard_000000.jsonl", "state_hash": "0257d2f552f6a16c22a16af43cdab743cd90815c293613fba926dfafcf695f83", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-cc02fd08781f3155ebf1", "rank_within_group": 3, "record_id": "rec-96950eb94f4b84206488a5f0", "regret": 1.4446043968200684, "reward_progress": 0.5553956031799316, "row_index": 6, "shard_path": "shards/shard_000000.jsonl", "state_hash": "0257d2f552f6a16c22a16af43cdab743cd90815c293613fba926dfafcf695f83", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "wrong_direction", "failure_type": "partial_success", "group_id": "ms-cc02fd08781f3155ebf1", "rank_within_group": 2, "record_id": "rec-3d87e9d9b8e31b9a25f182b5", "regret": 1.4299545288085938, "reward_progress": 0.5700454711914062, "row_index": 7, "shard_path": "shards/shard_000000.jsonl", "state_hash": "0257d2f552f6a16c22a16af43cdab743cd90815c293613fba926dfafcf695f83", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "ms-e3592d0113fc85f8756d", "rank_within_group": 0, "record_id": "rec-d5cf822c5755024d4898e8ea", "regret": 0.0, "reward_progress": 1.0, "row_index": 8, "shard_path": "shards/shard_000000.jsonl", "state_hash": "e39290f6807e82bf4f2a1a458d6a01661d1c706cfbb38551bc7c4acd87165b02", "success": true, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-e3592d0113fc85f8756d", "rank_within_group": 1, "record_id": "rec-18f49d434f0ed5229123d040", "regret": 1.4115594029426575, "reward_progress": 0.5884405970573425, "row_index": 9, "shard_path": "shards/shard_000000.jsonl", "state_hash": "e39290f6807e82bf4f2a1a458d6a01661d1c706cfbb38551bc7c4acd87165b02", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-e3592d0113fc85f8756d", "rank_within_group": 2, "record_id": "rec-e89d99af568f3b843e6ad76d", "regret": 1.4259684681892395, "reward_progress": 0.5740315318107605, "row_index": 10, "shard_path": "shards/shard_000000.jsonl", "state_hash": "e39290f6807e82bf4f2a1a458d6a01661d1c706cfbb38551bc7c4acd87165b02", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "wrong_direction", "failure_type": "partial_success", "group_id": "ms-e3592d0113fc85f8756d", "rank_within_group": 3, "record_id": "rec-67b0df15ff636927c8ca3e59", "regret": 1.4326505064964294, "reward_progress": 0.5673494935035706, "row_index": 11, "shard_path": "shards/shard_000000.jsonl", "state_hash": "e39290f6807e82bf4f2a1a458d6a01661d1c706cfbb38551bc7c4acd87165b02", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "ms-09dd5910246413a9e966", "rank_within_group": 1, "record_id": "rec-cf503c13e5ce4426cad9a17f", "regret": 0.0, "reward_progress": 1.0, "row_index": 12, "shard_path": "shards/shard_000000.jsonl", "state_hash": "de5be1ec67f2417d2acd8585e3198627c1e24c13c85c8ff1cd619e41bdc2bc31", "success": true, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "ms-09dd5910246413a9e966", "rank_within_group": 0, "record_id": "rec-b1c2135ffcb58364c079d55b", "regret": 0.0, "reward_progress": 1.0, "row_index": 13, "shard_path": "shards/shard_000000.jsonl", "state_hash": "de5be1ec67f2417d2acd8585e3198627c1e24c13c85c8ff1cd619e41bdc2bc31", "success": true, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-09dd5910246413a9e966", "rank_within_group": 2, "record_id": "rec-d029893038d65635b4d0be70", "regret": 1.4249022006988525, "reward_progress": 0.5750977993011475, "row_index": 14, "shard_path": "shards/shard_000000.jsonl", "state_hash": "de5be1ec67f2417d2acd8585e3198627c1e24c13c85c8ff1cd619e41bdc2bc31", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "wrong_direction", "failure_type": "partial_success", "group_id": "ms-09dd5910246413a9e966", "rank_within_group": 3, "record_id": "rec-babc0f1c582fc3c11a986f3e", "regret": 1.4433188438415527, "reward_progress": 0.5566811561584473, "row_index": 15, "shard_path": "shards/shard_000000.jsonl", "state_hash": "de5be1ec67f2417d2acd8585e3198627c1e24c13c85c8ff1cd619e41bdc2bc31", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "ms-84f05278fbb0fa0ce314", "rank_within_group": 0, "record_id": "rec-5be902c6e5a285da154bb85d", "regret": 0.0, "reward_progress": 1.0, "row_index": 16, "shard_path": "shards/shard_000000.jsonl", "state_hash": "f621816b331c4c09ab8d2f7e354686608b2421ce1768f25cb56b1031be3fa39e", "success": true, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-84f05278fbb0fa0ce314", "rank_within_group": 1, "record_id": "rec-056e42e3dd49b4b0f058f5ea", "regret": 1.3763341903686523, "reward_progress": 0.6236658096313477, "row_index": 17, "shard_path": "shards/shard_000000.jsonl", "state_hash": "f621816b331c4c09ab8d2f7e354686608b2421ce1768f25cb56b1031be3fa39e", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-84f05278fbb0fa0ce314", "rank_within_group": 2, "record_id": "rec-58ace0d31075ec4101b66702", "regret": 1.4118500351905823, "reward_progress": 0.5881499648094177, "row_index": 18, "shard_path": "shards/shard_000000.jsonl", "state_hash": "f621816b331c4c09ab8d2f7e354686608b2421ce1768f25cb56b1031be3fa39e", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "wrong_direction", "failure_type": "partial_success", "group_id": "ms-84f05278fbb0fa0ce314", "rank_within_group": 3, "record_id": "rec-cc0794dc6f6f9745919960ce", "regret": 1.4462323784828186, "reward_progress": 0.5537676215171814, "row_index": 19, "shard_path": "shards/shard_000000.jsonl", "state_hash": "f621816b331c4c09ab8d2f7e354686608b2421ce1768f25cb56b1031be3fa39e", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "ms-0b68ada383730605d059", "rank_within_group": 1, "record_id": "rec-8d18bbe3f1603905ac016370", "regret": 0.0, "reward_progress": 1.0, "row_index": 20, "shard_path": "shards/shard_000000.jsonl", "state_hash": "775d9c8c267e35ab00ec198d4cc19691a84a13dfae6c21d7cad1269f673a0c04", "success": true, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-0b68ada383730605d059", "rank_within_group": 2, "record_id": "rec-ba3977e6c257e18c77d83bd5", "regret": 1.3935168385505676, "reward_progress": 0.6064831614494324, "row_index": 21, "shard_path": "shards/shard_000000.jsonl", "state_hash": "775d9c8c267e35ab00ec198d4cc19691a84a13dfae6c21d7cad1269f673a0c04", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "ms-0b68ada383730605d059", "rank_within_group": 0, "record_id": "rec-38ea452492e439c69c10eb4a", "regret": 0.0, "reward_progress": 1.0, "row_index": 22, "shard_path": "shards/shard_000000.jsonl", "state_hash": "775d9c8c267e35ab00ec198d4cc19691a84a13dfae6c21d7cad1269f673a0c04", "success": true, "task_id": "PickCube-v1"} +{"candidate_type": "wrong_direction", "failure_type": "partial_success", "group_id": "ms-0b68ada383730605d059", "rank_within_group": 3, "record_id": "rec-9aecc12303841d85ff206466", "regret": 1.4437241554260254, "reward_progress": 0.5562758445739746, "row_index": 23, "shard_path": "shards/shard_000000.jsonl", "state_hash": "775d9c8c267e35ab00ec198d4cc19691a84a13dfae6c21d7cad1269f673a0c04", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "ms-0d22a304512dff4de634", "rank_within_group": 1, "record_id": "rec-84348a835351b4aa6dbd4252", "regret": 0.0, "reward_progress": 1.0, "row_index": 24, "shard_path": "shards/shard_000000.jsonl", "state_hash": "c9f101e4f846b15df93f61a9b81d97286c88304e24a44ae0d9a3b58b2a7d9b65", "success": true, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "ms-0d22a304512dff4de634", "rank_within_group": 0, "record_id": "rec-531d3c619e798040d390c90d", "regret": 0.0, "reward_progress": 1.0, "row_index": 25, "shard_path": "shards/shard_000000.jsonl", "state_hash": "c9f101e4f846b15df93f61a9b81d97286c88304e24a44ae0d9a3b58b2a7d9b65", "success": true, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-0d22a304512dff4de634", "rank_within_group": 2, "record_id": "rec-72f20d5a5153cee3223f17ed", "regret": 1.4218986630439758, "reward_progress": 0.5781013369560242, "row_index": 26, "shard_path": "shards/shard_000000.jsonl", "state_hash": "c9f101e4f846b15df93f61a9b81d97286c88304e24a44ae0d9a3b58b2a7d9b65", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "wrong_direction", "failure_type": "partial_success", "group_id": "ms-0d22a304512dff4de634", "rank_within_group": 3, "record_id": "rec-2a5a6f86da11cccfcf90fe8d", "regret": 1.4425843358039856, "reward_progress": 0.5574156641960144, "row_index": 27, "shard_path": "shards/shard_000000.jsonl", "state_hash": "c9f101e4f846b15df93f61a9b81d97286c88304e24a44ae0d9a3b58b2a7d9b65", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "expert", "failure_type": "partial_success", "group_id": "ms-cb70b56d6ad32b11c3cf", "rank_within_group": 2, "record_id": "rec-ebefb59358acf7b46f6a1ae0", "regret": 0.013822436332702637, "reward_progress": 0.5760825276374817, "row_index": 28, "shard_path": "shards/shard_000000.jsonl", "state_hash": "cf5e15ce3631f6947b4cd8309c5919e2570ba189984e761698b8a6925acf1a30", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-cb70b56d6ad32b11c3cf", "rank_within_group": 1, "record_id": "rec-b386dd5eede5de999036e216", "regret": 0.00848841667175293, "reward_progress": 0.5814165472984314, "row_index": 29, "shard_path": "shards/shard_000000.jsonl", "state_hash": "cf5e15ce3631f6947b4cd8309c5919e2570ba189984e761698b8a6925acf1a30", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-cb70b56d6ad32b11c3cf", "rank_within_group": 0, "record_id": "rec-1afda2c2ade98756949572c8", "regret": 0.0, "reward_progress": 0.5899049639701843, "row_index": 30, "shard_path": "shards/shard_000000.jsonl", "state_hash": "cf5e15ce3631f6947b4cd8309c5919e2570ba189984e761698b8a6925acf1a30", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "wrong_direction", "failure_type": "partial_success", "group_id": "ms-cb70b56d6ad32b11c3cf", "rank_within_group": 3, "record_id": "rec-81734acb629deab1c2ddc03b", "regret": 0.07831597328186035, "reward_progress": 0.511588990688324, "row_index": 31, "shard_path": "shards/shard_000000.jsonl", "state_hash": "cf5e15ce3631f6947b4cd8309c5919e2570ba189984e761698b8a6925acf1a30", "success": false, "task_id": "PickCube-v1"} diff --git a/outputs/hpc/maniskill_integrity_debug_cil/shards/shard_000000.jsonl b/outputs/hpc/maniskill_integrity_debug_cil/shards/shard_000000.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..fdb69728d6f2060f1ebfed3d8d105e292925c7e6 --- /dev/null +++ b/outputs/hpc/maniskill_integrity_debug_cil/shards/shard_000000.jsonl @@ -0,0 +1,32 @@ +{"action_chunk": {"action_id": "expert-00", "horizon": 4, "metadata": {"candidate_type": "expert", "parent_action_id": null, "perturbation": {"scale": 0.0}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.0025664977729320526, 0.007215104065835476, 0.003994468599557877, 0.0024615107104182243, -0.06412338465452194, -0.14236067235469818, -2.9101498126983643], [0.0024625323712825775, 0.007117546163499355, 0.004091653972864151, 0.0032541705295443535, -0.06275510787963867, -0.13953682780265808, -2.912224769592285], [0.0025322847068309784, 0.007213315926492214, 0.004127923399209976, 0.0038562817499041557, -0.06144643574953079, -0.13710710406303406, -2.914276123046875], [0.002467554062604904, 0.007209143601357937, 0.004182774573564529, 0.004425737075507641, -0.060069747269153595, -0.13463576138019562, -2.9163742065429688]]}, "candidate_type": "expert", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "success"}, "group_id": "ms-d2ca94d10b502f629e5f", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 32, "episode_id": 321, "measurement": "physical_simulation", "state_restore_max_error": 1.1920928955078125e-07}, "next_observation_inline": {"features": [0.046460628509521484, -0.09451150894165039, 0.0675010159611702, 0.8395286798477173, -0.004278229549527168, 0.04095349460840225, -0.5417526960372925, 0.005935462657362223, -0.013673633337020874, 0.04923142120242119, -7.884498596191406, -3.8017807006835938, 1.056707501411438, 0.05388641357421875, -0.09618568420410156, 0.08348260819911957, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 0.0, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.19027364253997803, 0.7964445352554321, 0.05596061050891876, -1.539614200592041, -0.024380357936024666, 2.1710257530212402, 0.24543794989585876, 0.01865987665951252, 0.018700581043958664, 0.003802554216235876, 0.021678509190678596, 0.002299928106367588, 0.04842573031783104, -0.023360319435596466, -0.06818034499883652, -0.05544712767004967, 0.051809683442115784, 0.01475317683070898]}, "next_observation_ref": null, "observation_inline": {"features": [0.04639434814453125, -0.09420585632324219, 0.06735333800315857, 0.8344621062278748, -0.002932446077466011, 0.03291767090559006, -0.5500733852386475, 0.00621820567175746, -0.013708187267184258, 0.0508379302918911, -8.840024948120117, -4.056471824645996, 0.7231269478797913, 0.05388641357421875, -0.09618568420410156, 0.08348260819911957, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.19096380472183228, 0.7907413840293884, 0.05536438897252083, -1.552422046661377, -0.016650421544909477, 2.1886796951293945, 0.2592680752277374, 0.018740631639957428, 0.01878109760582447, 0.0021556224673986435, 0.024341147392988205, 0.003605527337640524, 0.05362878367304802, -0.02383911795914173, -0.0756029412150383, -0.0625828206539154, 0.056977126747369766, 0.020083848387002945]}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-8aab0b0394a953c7cbcc7e82", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "episode-321", "state_hash": "ceffec751d92488c121ba47bae3eca30ef1fe7e851c504bd3a7027b6503ab17b", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 32, "episode_id": 321, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [6.628036499023438e-05, -0.0003056526184082031, 0.0001476779580116272, 0.005066573619842529, -0.0013457834720611572, 0.008035823702812195, 0.00832068920135498]}, "relation_after": {"success": true}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-01", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.05}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.0696394294500351, -0.050614576786756516, -0.08452507853507996, 0.03261230140924454, -0.03753596544265747, -0.17428186535835266, -2.9101498126983643], [0.10069400072097778, -0.05969161540269852, 0.0843278020620346, -0.007540234364569187, -0.03908371925354004, -0.1847197711467743, -2.912224769592285], [-0.028582872822880745, -0.0047920336946845055, 0.04074115306138992, 0.04279794916510582, -0.057987261563539505, -0.203689843416214, -2.914276123046875], [-0.029584825038909912, 0.08587723970413208, 0.07835499942302704, 0.06918491423130035, -0.013457611203193665, -0.24730995297431946, -2.9163742065429688]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "success"}, "group_id": "ms-d2ca94d10b502f629e5f", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 32, "episode_id": 321, "measurement": "physical_simulation", "state_restore_max_error": 1.1920928955078125e-07}, "next_observation_inline": {"features": [0.04929429292678833, -0.0985112190246582, 0.0698431059718132, 0.8415906429290771, -0.0062275053933262825, 0.03909170255064964, -0.5386632680892944, -0.012343578040599823, 0.029545720666646957, 0.10094677656888962, -7.898069381713867, -3.888131618499756, 1.1319408416748047, 0.05388641357421875, -0.09618568420410156, 0.08348260819911957, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 0.0, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.191650852560997, 0.8011922240257263, 0.05345993489027023, -1.523917555809021, -0.03012308105826378, 2.1617677211761475, 0.2381468266248703, 0.01866118237376213, 0.01870148256421089, 0.06308499723672867, -0.17055435478687286, 0.006879444234073162, -0.1593240648508072, -0.06229225546121597, -0.011412175372242928, -0.021973270922899246, 0.05165264382958412, 0.015108910389244556]}, "next_observation_ref": null, "observation_inline": {"features": [0.04639434814453125, -0.09420585632324219, 0.06735333800315857, 0.8344621062278748, -0.002932446077466011, 0.03291767090559006, -0.5500733852386475, 0.00621820567175746, -0.013708187267184258, 0.0508379302918911, -8.840024948120117, -4.056471824645996, 0.7231269478797913, 0.05388641357421875, -0.09618568420410156, 0.08348260819911957, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.19096380472183228, 0.7907413840293884, 0.05536438897252083, -1.552422046661377, -0.016650421544909477, 2.1886796951293945, 0.2592680752277374, 0.018740631639957428, 0.01878109760582447, 0.0021556224673986435, 0.024341147392988205, 0.003605527337640524, 0.05362878367304802, -0.02383911795914173, -0.0756029412150383, -0.0625828206539154, 0.056977126747369766, 0.020083848387002945]}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-67d497222130df0e34d695c0", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "episode-321", "state_hash": "ceffec751d92488c121ba47bae3eca30ef1fe7e851c504bd3a7027b6503ab17b", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 32, "episode_id": 321, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.00289994478225708, -0.004305362701416016, 0.0024897679686546326, 0.007128536701202393, -0.0032950593158602715, 0.006174031645059586, 0.011410117149353027]}, "relation_after": {"success": true}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-02", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.15}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.04406207427382469, -0.10411237925291061, 0.0976787805557251, -0.004781210795044899, 0.11277880519628525, 0.24010823667049408, -2.9101498126983643], [-0.07427173852920532, -0.09596166014671326, 0.32503604888916016, 0.2622348964214325, -0.01711609959602356, -0.22559812664985657, -2.912224769592285], [-0.19582322239875793, 0.15709830820560455, -0.07568705081939697, 0.0976419672369957, -0.15690180659294128, 0.008015364408493042, -2.914276123046875], [0.010279560461640358, 0.041031911969184875, -0.1510026603937149, 0.3959757089614868, -0.2607157230377197, -0.19407498836517334, -2.9163742065429688]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-d2ca94d10b502f629e5f", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 32, "episode_id": 321, "measurement": "physical_simulation", "state_restore_max_error": 1.1920928955078125e-07}, "next_observation_inline": {"features": [0.03850603103637695, -0.09891277551651001, 0.07768382132053375, 0.8341903686523438, -0.01609896682202816, 0.03135816007852554, -0.5503488183021545, 0.014039906673133373, 0.02183825522661209, -0.05129081383347511, -8.21494197845459, -3.503065586090088, 1.2095108032226562, 0.05388641357421875, -0.09618568420410156, 0.08348260819911957, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.17910334467887878, 0.7523049116134644, 0.03875652700662613, -1.5905025005340576, -0.04101908951997757, 2.1855313777923584, 0.27699151635169983, 0.018658535555005074, 0.01869777962565422, 0.2083434909582138, 0.25538721680641174, -0.11227072775363922, 0.19079232215881348, -0.23229433596134186, -0.06008687987923622, 0.15073145925998688, 0.05091734230518341, 0.01559891365468502]}, "next_observation_ref": null, "observation_inline": {"features": [0.04639434814453125, -0.09420585632324219, 0.06735333800315857, 0.8344621062278748, -0.002932446077466011, 0.03291767090559006, -0.5500733852386475, 0.00621820567175746, -0.013708187267184258, 0.0508379302918911, -8.840024948120117, -4.056471824645996, 0.7231269478797913, 0.05388641357421875, -0.09618568420410156, 0.08348260819911957, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.19096380472183228, 0.7907413840293884, 0.05536438897252083, -1.552422046661377, -0.016650421544909477, 2.1886796951293945, 0.2592680752277374, 0.018740631639957428, 0.01878109760582447, 0.0021556224673986435, 0.024341147392988205, 0.003605527337640524, 0.05362878367304802, -0.02383911795914173, -0.0756029412150383, -0.0625828206539154, 0.056977126747369766, 0.020083848387002945]}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-d7006f31a0a0a6bdc4bcd640", "regret": 1.4161138534545898, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5838861465454102}, "progress": 0.5838861465454102, "success": false, "terminal_success": false}, "scene_id": "episode-321", "state_hash": "ceffec751d92488c121ba47bae3eca30ef1fe7e851c504bd3a7027b6503ab17b", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 32, "episode_id": 321, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.007888317108154297, -0.004706919193267822, 0.010330483317375183, -0.00027173757553100586, -0.013166520744562149, -0.0015595108270645142, -0.0002754330635070801]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "wrong_direction-03", "horizon": 4, "metadata": {"candidate_type": "wrong_direction", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.35}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.11223064363002777, -0.17136059701442719, 0.37127330899238586, 0.38636478781700134, -0.23637458682060242, -0.4773327112197876, -2.9101498126983643], [0.03056008741259575, 0.2771700620651245, -0.05087734013795853, -0.41635966300964355, -0.09837165474891663, -0.31713223457336426, -2.912224769592285], [0.1111791580915451, 0.08272432535886765, 0.09109535813331604, -0.8735426664352417, -0.29470786452293396, -0.5652467608451843, -2.914276123046875], [-0.09332035481929779, 0.2914726436138153, 0.18547716736793518, -0.6102011203765869, 0.23694777488708496, -0.12267737090587616, -2.9163742065429688]]}, "candidate_type": "wrong_direction", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-d2ca94d10b502f629e5f", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 32, "episode_id": 321, "measurement": "physical_simulation", "state_restore_max_error": 1.1920928955078125e-07}, "next_observation_inline": {"features": [0.04967896640300751, -0.0799013152718544, 0.08670929074287415, 0.8472945690155029, 0.016199389472603798, 0.06059519946575165, -0.527406632900238, -0.06007559970021248, 0.1520557850599289, 0.17050893604755402, -7.3693976402282715, -4.254047393798828, 0.9027392268180847, 0.05388641357421875, -0.09618568420410156, 0.08348260819911957, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.20717677474021912, 0.7789730429649353, 0.0907859206199646, -1.5155822038650513, 0.007983114570379257, 2.1089389324188232, 0.20148465037345886, 0.01866389997303486, 0.01870669238269329, -0.07524170726537704, -0.5213823914527893, 0.2508378028869629, -0.6366459131240845, 0.27921998500823975, 0.19392716884613037, -0.11990268528461456, 0.05308069288730621, 0.013693364337086678]}, "next_observation_ref": null, "observation_inline": {"features": [0.04639434814453125, -0.09420585632324219, 0.06735333800315857, 0.8344621062278748, -0.002932446077466011, 0.03291767090559006, -0.5500733852386475, 0.00621820567175746, -0.013708187267184258, 0.0508379302918911, -8.840024948120117, -4.056471824645996, 0.7231269478797913, 0.05388641357421875, -0.09618568420410156, 0.08348260819911957, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.19096380472183228, 0.7907413840293884, 0.05536438897252083, -1.552422046661377, -0.016650421544909477, 2.1886796951293945, 0.2592680752277374, 0.018740631639957428, 0.01878109760582447, 0.0021556224673986435, 0.024341147392988205, 0.003605527337640524, 0.05362878367304802, -0.02383911795914173, -0.0756029412150383, -0.0625828206539154, 0.056977126747369766, 0.020083848387002945]}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-2b74b01aed96955cd9b5a5ca", "regret": 1.4195680618286133, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5804319381713867}, "progress": 0.5804319381713867, "success": false, "terminal_success": false}, "scene_id": "episode-321", "state_hash": "ceffec751d92488c121ba47bae3eca30ef1fe7e851c504bd3a7027b6503ab17b", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 32, "episode_id": 321, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.0032846182584762573, 0.014304541051387787, 0.019355952739715576, 0.012832462787628174, 0.01913183555006981, 0.02767752856016159, 0.022666752338409424]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "expert-00", "horizon": 4, "metadata": {"candidate_type": "expert", "parent_action_id": null, "perturbation": {"scale": 0.0}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[-0.010282892733812332, 0.015104777179658413, -0.054676707834005356, -0.14234517514705658, -0.023559221997857094, -0.2177748829126358, -2.852457046508789], [-0.0006742514669895172, 0.018414847552776337, -0.03570091351866722, -0.13365595042705536, -0.026783408597111702, -0.22704719007015228, -2.86651873588562], [0.0035433433949947357, 0.01752694696187973, -0.02260572835803032, -0.12465258687734604, -0.02848629839718342, -0.22878716886043549, -2.874162197113037], [0.004709374159574509, 0.0152477091178298, -0.013824742287397385, -0.11488338559865952, -0.02889384515583515, -0.22514186799526215, -2.878391981124878]]}, "candidate_type": "expert", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "success"}, "group_id": "ms-cc02fd08781f3155ebf1", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 12, "episode_id": 893, "measurement": "physical_simulation", "state_restore_max_error": 1.1920928955078125e-07}, "next_observation_inline": {"features": [0.05564165115356445, 0.029945850372314453, 0.07781075686216354, 0.8222304582595825, 0.03978728502988815, 0.04188981652259827, -0.566214919090271, 0.04438694566488266, -0.009912208653986454, 0.02495253086090088, -6.910996913909912, -3.8188700675964355, 17.5252742767334, 0.05950927734375, 0.027736663818359375, 0.08947497606277466, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 0.0, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.09661898761987686, 0.7517607808113098, 0.13056574761867523, -1.610079288482666, 0.06302845478057861, 2.2414326667785645, 0.5306586027145386, 0.019877972081303596, 0.01991821639239788, -0.048656534403562546, 0.05569690838456154, 0.047785211354494095, 0.055918533354997635, 0.016447555273771286, -0.06468180567026138, -0.11320704221725464, 0.15265867114067078, 0.12311908602714539]}, "next_observation_ref": null, "observation_inline": {"features": [0.05693817138671875, 0.02985382080078125, 0.08510978519916534, 0.8189021944999695, 0.032468196004629135, 0.0288686566054821, -0.5722861289978027, 0.017956260591745377, -0.03346012160181999, -0.026043079793453217, -7.800528526306152, -3.5776984691619873, 18.186418533325195, 0.05950927734375, 0.027736663818359375, 0.08947497606277466, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.08231671899557114, 0.7345389127731323, 0.11721593141555786, -1.6194889545440674, 0.057598765939474106, 2.247581720352173, 0.5715540647506714, 0.020161446183919907, 0.020201049745082855, -0.09026462584733963, 0.07507321983575821, 0.04811368137598038, -0.062094174325466156, 0.04550357535481453, 0.05983579903841019, -0.14328345656394958, 0.16949431598186493, 0.14139682054519653]}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-4daad2383ef7a23612ca0162", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "episode-893", "state_hash": "0257d2f552f6a16c22a16af43cdab743cd90815c293613fba926dfafcf695f83", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 12, "episode_id": 893, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.0012965202331542969, 9.202957153320312e-05, -0.0072990283370018005, 0.003328263759613037, 0.007319089025259018, 0.013021159917116165, 0.006071209907531738]}, "relation_after": {"success": true}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-01", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.05}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[-0.033241383731365204, -0.07858330756425858, -0.09179941564798355, -0.16215834021568298, -0.08866818249225616, -0.2141016721725464, -2.852457046508789], [-0.032189518213272095, -0.045286111533641815, -0.15917107462882996, -0.17609497904777527, -0.06647534668445587, -0.26512736082077026, -2.86651873588562], [0.021808551624417305, 0.08906671404838562, -0.044821903109550476, -0.10047055780887604, 0.0019681472331285477, -0.19465652108192444, -2.874162197113037], [0.10423435270786285, -0.04154806584119797, 0.0009164167568087578, -0.11154822260141373, -0.09550037235021591, -0.21969671547412872, -2.878391981124878]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-cc02fd08781f3155ebf1", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 12, "episode_id": 893, "measurement": "physical_simulation", "state_restore_max_error": 1.1920928955078125e-07}, "next_observation_inline": {"features": [0.05771588906645775, 0.02537822723388672, 0.07112578302621841, 0.822405993938446, 0.03881877660751343, 0.04487946629524231, -0.5657979249954224, 0.10474751144647598, -0.03694469481706619, 0.031027261167764664, -6.806709289550781, -3.820786476135254, 17.56685447692871, 0.05950927734375, 0.027736663818359375, 0.08947497606277466, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 0.0, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.10155649483203888, 0.7729465961456299, 0.12885808944702148, -1.5899372100830078, 0.06260643899440765, 2.2353992462158203, 0.5224943161010742, 0.019877582788467407, 0.01991906948387623, -0.05860279127955437, 0.2364095151424408, 0.028500912711024284, 0.41922426223754883, -0.0049735791981220245, -0.2904464900493622, -0.13240377604961395, 0.1533694565296173, 0.12245264649391174]}, "next_observation_ref": null, "observation_inline": {"features": [0.05693817138671875, 0.02985382080078125, 0.08510978519916534, 0.8189021944999695, 0.032468196004629135, 0.0288686566054821, -0.5722861289978027, 0.017956260591745377, -0.03346012160181999, -0.026043079793453217, -7.800528526306152, -3.5776984691619873, 18.186418533325195, 0.05950927734375, 0.027736663818359375, 0.08947497606277466, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.08231671899557114, 0.7345389127731323, 0.11721593141555786, -1.6194889545440674, 0.057598765939474106, 2.247581720352173, 0.5715540647506714, 0.020161446183919907, 0.020201049745082855, -0.09026462584733963, 0.07507321983575821, 0.04811368137598038, -0.062094174325466156, 0.04550357535481453, 0.05983579903841019, -0.14328345656394958, 0.16949431598186493, 0.14139682054519653]}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-48c034362c81cef33870759a", "regret": 1.4200182557106018, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5799817442893982}, "progress": 0.5799817442893982, "success": false, "terminal_success": false}, "scene_id": "episode-893", "state_hash": "0257d2f552f6a16c22a16af43cdab743cd90815c293613fba926dfafcf695f83", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 12, "episode_id": 893, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.0007777176797389984, -0.004475593566894531, -0.01398400217294693, 0.0035037994384765625, 0.006350580602884293, 0.016010809689760208, 0.006488204002380371]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-02", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.15}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[-0.009987503290176392, -0.06272764503955841, -0.37799233198165894, -0.1437239646911621, -0.04242899268865585, -0.3371429145336151, -2.852457046508789], [-0.03160351514816284, -0.18906471133232117, -0.14378945529460907, -0.26784610748291016, -0.018053732812404633, -0.15766297280788422, -2.86651873588562], [-0.13133539259433746, -0.049246616661548615, -0.2604799270629883, -0.2352432906627655, 0.06319353729486465, -0.26531127095222473, -2.874162197113037], [0.12186206877231598, 0.32539787888526917, -0.2347775101661682, -0.04639443755149841, -0.028825635090470314, -0.16259947419166565, -2.878391981124878]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-cc02fd08781f3155ebf1", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 12, "episode_id": 893, "measurement": "physical_simulation", "state_restore_max_error": 1.1920928955078125e-07}, "next_observation_inline": {"features": [0.05585908889770508, 0.021897202357649803, 0.047472033649683, 0.8200072050094604, 0.04493643343448639, 0.038090359419584274, -0.5693135857582092, 0.09895133972167969, 0.1589735448360443, -0.14441828429698944, -7.19098424911499, -3.790964126586914, 17.33045768737793, 0.05950927734375, 0.027736663818359375, 0.08947497606277466, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.10717541724443436, 0.8041564226150513, 0.12848065793514252, -1.6084773540496826, 0.06614605337381363, 2.3024954795837402, 0.5159397125244141, 0.01988058350980282, 0.019913434982299805, 0.2410319298505783, 0.555375337600708, 0.026672646403312683, 0.4697098731994629, -0.04262373968958855, 0.02378825470805168, 0.22647368907928467, 0.1481148898601532, 0.12699629366397858]}, "next_observation_ref": null, "observation_inline": {"features": [0.05693817138671875, 0.02985382080078125, 0.08510978519916534, 0.8189021944999695, 0.032468196004629135, 0.0288686566054821, -0.5722861289978027, 0.017956260591745377, -0.03346012160181999, -0.026043079793453217, -7.800528526306152, -3.5776984691619873, 18.186418533325195, 0.05950927734375, 0.027736663818359375, 0.08947497606277466, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.08231671899557114, 0.7345389127731323, 0.11721593141555786, -1.6194889545440674, 0.057598765939474106, 2.247581720352173, 0.5715540647506714, 0.020161446183919907, 0.020201049745082855, -0.09026462584733963, 0.07507321983575821, 0.04811368137598038, -0.062094174325466156, 0.04550357535481453, 0.05983579903841019, -0.14328345656394958, 0.16949431598186493, 0.14139682054519653]}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-96950eb94f4b84206488a5f0", "regret": 1.4446043968200684, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5553956031799316}, "progress": 0.5553956031799316, "success": false, "terminal_success": false}, "scene_id": "episode-893", "state_hash": "0257d2f552f6a16c22a16af43cdab743cd90815c293613fba926dfafcf695f83", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 12, "episode_id": 893, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.0010790824890136719, -0.007956618443131447, -0.037637751549482346, 0.0011050105094909668, 0.012468237429857254, 0.009221702814102173, 0.002972543239593506]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "wrong_direction-03", "horizon": 4, "metadata": {"candidate_type": "wrong_direction", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.35}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.9939688444137573, 0.1546221375465393, -0.13718445599079132, -0.18152636289596558, -0.20523203909397125, -0.17258545756340027, -2.852457046508789], [-0.01835549622774124, 0.19376331567764282, 0.3538019061088562, -0.15460434556007385, 0.6132307648658752, 0.05873008072376251, -2.86651873588562], [-1.0, 0.19348838925361633, 0.21948376297950745, 0.2633695900440216, 0.04823586344718933, -0.10351400077342987, -2.874162197113037], [0.1144285649061203, 0.3299570679664612, 0.0998300164937973, -0.09530913829803467, 0.6665171384811401, 0.10410816967487335, -2.878391981124878]]}, "candidate_type": "wrong_direction", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-cc02fd08781f3155ebf1", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 12, "episode_id": 893, "measurement": "physical_simulation", "state_restore_max_error": 1.1920928955078125e-07}, "next_observation_inline": {"features": [0.04833880439400673, 0.051814306527376175, 0.09647557139396667, 0.8108820915222168, 0.04348887503147125, 0.02016228437423706, -0.5832428932189941, 0.1458480954170227, 0.2273847907781601, 0.14009064435958862, -7.635743141174316, -3.7393391132354736, 17.225786209106445, 0.05950927734375, 0.027736663818359375, 0.08947497606277466, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.05988968908786774, 0.6781700253486633, 0.12718072533607483, -1.695447325706482, 0.06236131116747856, 2.301452159881592, 0.608495831489563, 0.019870342686772346, 0.019909944385290146, 0.24598434567451477, -0.08419816195964813, 0.11694428324699402, 0.009908713400363922, 0.05852089449763298, 0.4364703297615051, 0.296489953994751, 0.1516612470149994, 0.12315531820058823]}, "next_observation_ref": null, "observation_inline": {"features": [0.05693817138671875, 0.02985382080078125, 0.08510978519916534, 0.8189021944999695, 0.032468196004629135, 0.0288686566054821, -0.5722861289978027, 0.017956260591745377, -0.03346012160181999, -0.026043079793453217, -7.800528526306152, -3.5776984691619873, 18.186418533325195, 0.05950927734375, 0.027736663818359375, 0.08947497606277466, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.08231671899557114, 0.7345389127731323, 0.11721593141555786, -1.6194889545440674, 0.057598765939474106, 2.247581720352173, 0.5715540647506714, 0.020161446183919907, 0.020201049745082855, -0.09026462584733963, 0.07507321983575821, 0.04811368137598038, -0.062094174325466156, 0.04550357535481453, 0.05983579903841019, -0.14328345656394958, 0.16949431598186493, 0.14139682054519653]}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-3d87e9d9b8e31b9a25f182b5", "regret": 1.4299545288085938, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5700454711914062}, "progress": 0.5700454711914062, "success": false, "terminal_success": false}, "scene_id": "episode-893", "state_hash": "0257d2f552f6a16c22a16af43cdab743cd90815c293613fba926dfafcf695f83", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 12, "episode_id": 893, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.008599366992712021, 0.021960485726594925, 0.01136578619480133, -0.008020102977752686, 0.011020679026842117, -0.008706372231245041, -0.010956764221191406]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "expert-00", "horizon": 4, "metadata": {"candidate_type": "expert", "parent_action_id": null, "perturbation": {"scale": 0.0}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.0011077634990215302, 0.007599434815347195, 0.0006214715540409088, 0.01730268821120262, -0.06550469994544983, -0.15825162827968597, -2.7522671222686768], [0.0010734312236309052, 0.0077175116166472435, 0.0007020421326160431, 0.017892222851514816, -0.06416407227516174, -0.15610142052173615, -2.7555992603302], [0.0010405592620372772, 0.007637388072907925, 0.0008117593824863434, 0.018465664237737656, -0.0628427267074585, -0.15394830703735352, -2.7588634490966797], [0.001009088009595871, 0.00764197763055563, 0.0008850730955600739, 0.018883559852838516, -0.06153830140829086, -0.1519792526960373, -2.7620742321014404]]}, "candidate_type": "expert", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "success"}, "group_id": "ms-e3592d0113fc85f8756d", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 37, "episode_id": 208, "measurement": "physical_simulation", "state_restore_max_error": 2.384185791015625e-07}, "next_observation_inline": {"features": [-0.015217781066894531, 0.022745609283447266, 0.06783007830381393, 0.528230607509613, 0.08538021147251129, 0.02358677238225937, 0.8444680571556091, 0.032949358224868774, -0.014190866611897945, 0.05162499472498894, -7.084773540496826, -4.3387250900268555, 5.411398410797119, -0.015824317932128906, 0.026874542236328125, 0.0823424682021141, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149997711181641, 0.0, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.05857918784022331, 0.6994882225990295, 0.10457862168550491, -1.6981791257858276, -0.042229462414979935, 2.074331045150757, 0.4201285243034363, 0.018744103610515594, 0.018786603584885597, 0.012940471060574055, 0.02773423120379448, -0.0009392304345965385, 0.04771433770656586, -0.03614887222647667, -0.07089116424322128, -0.04395589604973793, 0.07101134955883026, 0.040017019957304]}, "next_observation_ref": null, "observation_inline": {"features": [-0.015391269698739052, 0.02341461181640625, 0.06824443489313126, 0.535605251789093, 0.07774380594491959, 0.020673727616667747, 0.8406279683113098, -0.004053785465657711, -0.0014844166580587626, 0.015526502393186092, -3.810892105102539, -2.566704511642456, 4.978596210479736, -0.0158243328332901, 0.026874542236328125, 0.0823424682021141, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999999731779099, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150000095367432, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.06142401695251465, 0.6923748254776001, 0.10483993589878082, -1.7109527587890625, -0.031187629327178, 2.0915656089782715, 0.43273505568504333, 0.018767371773719788, 0.01880991831421852, 0.011678986251354218, 0.030263643711805344, 9.382730786455795e-05, 0.05256349965929985, -0.03975524753332138, -0.06843295693397522, -0.044171638786792755, 0.048385996371507645, -0.005045280791819096]}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-d5cf822c5755024d4898e8ea", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "episode-208", "state_hash": "e39290f6807e82bf4f2a1a458d6a01661d1c706cfbb38551bc7c4acd87165b02", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 37, "episode_id": 208, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.00017348863184452057, -0.0006690025329589844, -0.0004143565893173218, -0.0073746442794799805, 0.007636405527591705, 0.0029130447655916214, 0.0038400888442993164]}, "relation_after": {"success": true}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-01", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.05}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.05399337783455849, -0.05327942222356796, 0.00035020362702198327, -0.04960693046450615, -0.10149552673101425, -0.19421662390232086, -2.7522671222686768], [-0.004914124496281147, -0.07270000129938126, 0.006799021735787392, 0.015459246933460236, -0.0538351945579052, -0.18289269506931305, -2.7555992603302], [0.11968813836574554, 0.06000729650259018, -0.05562933534383774, -0.07918553054332733, -0.04169338196516037, -0.30377840995788574, -2.7588634490966797], [0.05243043601512909, -0.0627293810248375, -0.028943877667188644, 0.05467712879180908, -0.06860851496458054, -0.23345336318016052, -2.7620742321014404]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-e3592d0113fc85f8756d", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 37, "episode_id": 208, "measurement": "physical_simulation", "state_restore_max_error": 2.384185791015625e-07}, "next_observation_inline": {"features": [-0.006463800091296434, 0.01755666732788086, 0.06530395150184631, 0.5224210023880005, 0.08642269670963287, 0.021610384806990623, 0.848021388053894, 0.05965382233262062, -0.055414482951164246, 0.027648480609059334, -7.053205490112305, -4.443502902984619, 5.438160419464111, -0.0158243328332901, 0.026874542236328125, 0.0823424682021141, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999999731779099, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150000095367432, 0.0, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.06486363708972931, 0.7270632982254028, 0.10381194949150085, -1.6554261445999146, -0.04545532166957855, 2.059206962585449, 0.3990863561630249, 0.018745770677924156, 0.018788954243063927, -0.00862898863852024, 0.1528194546699524, -0.031610652804374695, 0.2074892222881317, -0.08382415771484375, -0.12534333765506744, -0.1201665922999382, 0.07149498164653778, 0.039726223796606064]}, "next_observation_ref": null, "observation_inline": {"features": [-0.015391269698739052, 0.02341461181640625, 0.06824443489313126, 0.535605251789093, 0.07774380594491959, 0.020673727616667747, 0.8406279683113098, -0.004053785465657711, -0.0014844166580587626, 0.015526502393186092, -3.810892105102539, -2.566704511642456, 4.978596210479736, -0.0158243328332901, 0.026874542236328125, 0.0823424682021141, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999999731779099, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150000095367432, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.06142401695251465, 0.6923748254776001, 0.10483993589878082, -1.7109527587890625, -0.031187629327178, 2.0915656089782715, 0.43273505568504333, 0.018767371773719788, 0.01880991831421852, 0.011678986251354218, 0.030263643711805344, 9.382730786455795e-05, 0.05256349965929985, -0.03975524753332138, -0.06843295693397522, -0.044171638786792755, 0.048385996371507645, -0.005045280791819096]}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-18f49d434f0ed5229123d040", "regret": 1.4115594029426575, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5884405970573425}, "progress": 0.5884405970573425, "success": false, "terminal_success": false}, "scene_id": "episode-208", "state_hash": "e39290f6807e82bf4f2a1a458d6a01661d1c706cfbb38551bc7c4acd87165b02", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 37, "episode_id": 208, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.008927470073103905, -0.005857944488525391, -0.0029404833912849426, -0.01318424940109253, 0.008678890764713287, 0.000936657190322876, 0.0073934197425842285]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-02", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.15}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[-0.16399171948432922, 0.15399104356765747, 0.12957818806171417, -0.08964607119560242, 0.005497857928276062, -0.02308116853237152, -2.7522671222686768], [-0.16060322523117065, -0.09123338758945465, 0.15370675921440125, 0.07502105832099915, -0.05388933792710304, -0.3206574320793152, -2.7555992603302], [0.012897942215204239, -0.07827813178300858, -0.1275928020477295, 0.1616562157869339, -0.007905103266239166, -0.07518169283866882, -2.7588634490966797], [-0.13383649289608002, -0.09152159839868546, 0.18020211160182953, 0.09765768051147461, 0.15851271152496338, -0.2425934374332428, -2.7620742321014404]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-e3592d0113fc85f8756d", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 37, "episode_id": 208, "measurement": "physical_simulation", "state_restore_max_error": 2.384185791015625e-07}, "next_observation_inline": {"features": [-0.034770965576171875, 0.01896251179277897, 0.0778806060552597, 0.5267958045005798, 0.08014267683029175, 0.024080002680420876, 0.8458625078201294, -0.059311576187610626, -0.08411617577075958, 0.1655457764863968, -7.170680522918701, -4.4682440757751465, 5.427278518676758, -0.015824317932128906, 0.026874542236328125, 0.0823424682021141, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149997711181641, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.06452736258506775, 0.624918520450592, 0.10410718619823456, -1.8016834259033203, -0.04516975209116936, 2.111530303955078, 0.4169619679450989, 0.018744414672255516, 0.01878722757101059, -0.0703205093741417, -0.49652472138404846, -0.027092821896076202, -0.5365946888923645, -0.07843796908855438, 0.10836555808782578, -0.1293051540851593, 0.07167479395866394, 0.04045713692903519]}, "next_observation_ref": null, "observation_inline": {"features": [-0.015391269698739052, 0.02341461181640625, 0.06824443489313126, 0.535605251789093, 0.07774380594491959, 0.020673727616667747, 0.8406279683113098, -0.004053785465657711, -0.0014844166580587626, 0.015526502393186092, -3.810892105102539, -2.566704511642456, 4.978596210479736, -0.0158243328332901, 0.026874542236328125, 0.0823424682021141, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999999731779099, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150000095367432, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.06142401695251465, 0.6923748254776001, 0.10483993589878082, -1.7109527587890625, -0.031187629327178, 2.0915656089782715, 0.43273505568504333, 0.018767371773719788, 0.01880991831421852, 0.011678986251354218, 0.030263643711805344, 9.382730786455795e-05, 0.05256349965929985, -0.03975524753332138, -0.06843295693397522, -0.044171638786792755, 0.048385996371507645, -0.005045280791819096]}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-e89d99af568f3b843e6ad76d", "regret": 1.4259684681892395, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5740315318107605}, "progress": 0.5740315318107605, "success": false, "terminal_success": false}, "scene_id": "episode-208", "state_hash": "e39290f6807e82bf4f2a1a458d6a01661d1c706cfbb38551bc7c4acd87165b02", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 37, "episode_id": 208, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.019379695877432823, -0.004452100023627281, 0.009636171162128448, -0.008809447288513184, 0.002398870885372162, 0.003406275063753128, 0.00523453950881958]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "wrong_direction-03", "horizon": 4, "metadata": {"candidate_type": "wrong_direction", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.35}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[-0.16332624852657318, -0.4743497669696808, 0.08095520734786987, -0.03328981250524521, 0.013775564730167389, -0.07772330194711685, -2.7522671222686768], [0.45005595684051514, 0.34253254532814026, 0.04967442899942398, -0.2616366744041443, -0.5704004764556885, 0.2881108522415161, -2.7555992603302], [0.0755780041217804, -0.2407156080007553, -0.42567703127861023, -0.5523263812065125, -0.43039125204086304, 0.005691036581993103, -2.7588634490966797], [-0.1798691600561142, 0.07182923704385757, 0.15075041353702545, -0.27328312397003174, -0.26452359557151794, -0.2734508216381073, -2.7620742321014404]]}, "candidate_type": "wrong_direction", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-e3592d0113fc85f8756d", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 37, "episode_id": 208, "measurement": "physical_simulation", "state_restore_max_error": 2.384185791015625e-07}, "next_observation_inline": {"features": [-0.010551347397267818, 0.010927085764706135, 0.06045638024806976, 0.5343783497810364, 0.11600369215011597, 0.013596344739198685, 0.8371368050575256, -0.1078498363494873, -0.02018827013671398, 0.11289127171039581, -6.749946594238281, -4.201796531677246, 5.48568868637085, -0.0158243328332901, 0.026874542236328125, 0.0823424682021141, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999999731779099, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150000095367432, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.09558992087841034, 0.7512877583503723, 0.11379093676805496, -1.626976728439331, -0.005254165269434452, 2.0125820636749268, 0.38045668601989746, 0.01874675415456295, 0.018787996843457222, -0.11835916340351105, -0.34426507353782654, 0.07920162379741669, -0.461150199174881, 0.08905128389596939, -0.15868555009365082, -0.17819365859031677, 0.07074107974767685, 0.04131656885147095]}, "next_observation_ref": null, "observation_inline": {"features": [-0.015391269698739052, 0.02341461181640625, 0.06824443489313126, 0.535605251789093, 0.07774380594491959, 0.020673727616667747, 0.8406279683113098, -0.004053785465657711, -0.0014844166580587626, 0.015526502393186092, -3.810892105102539, -2.566704511642456, 4.978596210479736, -0.0158243328332901, 0.026874542236328125, 0.0823424682021141, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999999731779099, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150000095367432, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.06142401695251465, 0.6923748254776001, 0.10483993589878082, -1.7109527587890625, -0.031187629327178, 2.0915656089782715, 0.43273505568504333, 0.018767371773719788, 0.01880991831421852, 0.011678986251354218, 0.030263643711805344, 9.382730786455795e-05, 0.05256349965929985, -0.03975524753332138, -0.06843295693397522, -0.044171638786792755, 0.048385996371507645, -0.005045280791819096]}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-67b0df15ff636927c8ca3e59", "regret": 1.4326505064964294, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5673494935035706}, "progress": 0.5673494935035706, "success": false, "terminal_success": false}, "scene_id": "episode-208", "state_hash": "e39290f6807e82bf4f2a1a458d6a01661d1c706cfbb38551bc7c4acd87165b02", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 37, "episode_id": 208, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.004839922301471233, -0.012487526051700115, -0.007788054645061493, -0.0012269020080566406, 0.03825988620519638, -0.007077382877469063, -0.0034911632537841797]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "expert-00", "horizon": 4, "metadata": {"candidate_type": "expert", "parent_action_id": null, "perturbation": {"scale": 0.0}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.0010438226163387299, 0.011721736751496792, 0.0037478692829608917, -0.017117802053689957, -0.001018525566905737, -0.08695316314697266, -2.6469945907592773], [0.0009272061288356781, 0.011732629500329494, 0.003880176693201065, -0.015544106252491474, -0.0006041391752660275, -0.08546239137649536, -2.647573709487915], [0.0007714740931987762, 0.011785752139985561, 0.0038204826414585114, -0.01389054674655199, -0.00031838705763220787, -0.08401359617710114, -2.647928237915039], [0.0009108744561672211, 0.01170430239289999, 0.0039347149431705475, -0.012388748116791248, -6.044795736670494e-05, -0.08276277780532837, -2.648388385772705]]}, "candidate_type": "expert", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "success"}, "group_id": "ms-09dd5910246413a9e966", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 37, "episode_id": 867, "measurement": "physical_simulation", "state_restore_max_error": 1.1920928955078125e-07}, "next_observation_inline": {"features": [0.06465291976928711, 0.0715184211730957, 0.09027232229709625, -0.08270614594221115, 0.029422836378216743, -0.07522648572921753, 0.9932950139045715, -0.015665464103221893, -0.02890816144645214, 0.0730481743812561, -8.76288890838623, -0.7294753789901733, -16.987382888793945, 0.0625152587890625, 0.07606124877929688, 0.09958761930465698, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 0.0, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.04219378903508186, 0.8233503699302673, 0.14744797348976135, -1.4128855466842651, 0.04061198979616165, 2.0478978157043457, 0.47275155782699585, 0.01996394619345665, 0.02000816911458969, -0.0019785482436418533, 0.008777347393333912, 0.005910438951104879, 0.012018134817481041, -0.002158637158572674, -0.007890734821557999, -0.08208207786083221, 0.15103784203529358, 0.11080341041088104]}, "next_observation_ref": null, "observation_inline": {"features": [0.0645599365234375, 0.07199478149414062, 0.09066466242074966, -0.0691051334142685, 0.028243402019143105, -0.06932378560304642, 0.9947969317436218, 0.07616128027439117, 0.04119815304875374, 0.062422867864370346, -2.9409806728363037, 5.1565327644348145, -19.602210998535156, 0.0625152587890625, 0.07606124877929688, 0.09958761930465698, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.04140710085630417, 0.8210992813110352, 0.14582163095474243, -1.4165518283843994, 0.04330219700932503, 2.0520107746124268, 0.48214778304100037, 0.020259378477931023, 0.020304568111896515, -0.004454408772289753, 0.0100174555554986, 0.006637696176767349, 0.017978282645344734, -0.01959747076034546, -0.04809854179620743, -0.09480778872966766, 0.247420072555542, 0.1692054569721222]}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-cf503c13e5ce4426cad9a17f", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "episode-867", "state_hash": "de5be1ec67f2417d2acd8585e3198627c1e24c13c85c8ff1cd619e41bdc2bc31", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 37, "episode_id": 867, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [9.298324584960938e-05, -0.0004763603210449219, -0.00039234012365341187, -0.013601012527942657, 0.001179434359073639, -0.005902700126171112, -0.001501917839050293]}, "relation_after": {"success": true}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-01", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.05}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[-0.022019490599632263, -0.06454279273748398, 0.05094093084335327, -0.019040215760469437, 0.025731632485985756, -0.09017138183116913, -2.6469945907592773], [-0.041228026151657104, 0.004437841475009918, -0.02613907866179943, -0.06107312813401222, 0.0045331139117479324, -0.08599540591239929, -2.647573709487915], [0.0349283330142498, 0.04377714544534683, -0.02234841324388981, 0.011292663402855396, -0.060671161860227585, -0.03965471312403679, -2.647928237915039], [0.028598802164196968, 0.018037207424640656, 0.08147270977497101, 0.02787841111421585, -0.010426856577396393, -0.12028563022613525, -2.648388385772705]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "success"}, "group_id": "ms-09dd5910246413a9e966", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 37, "episode_id": 867, "measurement": "physical_simulation", "state_restore_max_error": 1.1920928955078125e-07}, "next_observation_inline": {"features": [0.06382391601800919, 0.06929826736450195, 0.09169207513332367, -0.08222197741270065, 0.031328052282333374, -0.07491593807935715, 0.9933003187179565, -0.0007183076813817024, -0.02274421416223049, 0.11834997683763504, -8.850991249084473, -0.7252828478813171, -16.92432403564453, 0.0625152587890625, 0.07606124877929688, 0.09958761930465698, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 0.0, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.04452447593212128, 0.8203122019767761, 0.1465511918067932, -1.4136724472045898, 0.040420230478048325, 2.0416100025177, 0.4715277850627899, 0.019963426515460014, 0.020007824525237083, 0.020916366949677467, -0.003847787156701088, 0.000712660257704556, 0.1203160360455513, -0.025906464084982872, -0.14169059693813324, -0.06721526384353638, 0.15106463432312012, 0.11066914349794388]}, "next_observation_ref": null, "observation_inline": {"features": [0.0645599365234375, 0.07199478149414062, 0.09066466242074966, -0.0691051334142685, 0.028243402019143105, -0.06932378560304642, 0.9947969317436218, 0.07616128027439117, 0.04119815304875374, 0.062422867864370346, -2.9409806728363037, 5.1565327644348145, -19.602210998535156, 0.0625152587890625, 0.07606124877929688, 0.09958761930465698, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.04140710085630417, 0.8210992813110352, 0.14582163095474243, -1.4165518283843994, 0.04330219700932503, 2.0520107746124268, 0.48214778304100037, 0.020259378477931023, 0.020304568111896515, -0.004454408772289753, 0.0100174555554986, 0.006637696176767349, 0.017978282645344734, -0.01959747076034546, -0.04809854179620743, -0.09480778872966766, 0.247420072555542, 0.1692054569721222]}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-b1c2135ffcb58364c079d55b", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "episode-867", "state_hash": "de5be1ec67f2417d2acd8585e3198627c1e24c13c85c8ff1cd619e41bdc2bc31", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 37, "episode_id": 867, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.0007360205054283142, -0.002696514129638672, 0.0010274127125740051, -0.01311684399843216, 0.0030846502631902695, -0.00559215247631073, -0.0014966130256652832]}, "relation_after": {"success": true}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-02", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.15}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.152962327003479, -0.08595331013202667, -0.2898520529270172, 0.21968047320842743, 0.14211678504943848, 0.013146936893463135, -2.6469945907592773], [-0.3447721004486084, 0.25532087683677673, 0.040350042283535004, 0.013075157068669796, -0.02064223401248455, -0.1802302896976471, -2.647573709487915], [-0.07539661228656769, 0.09671027213335037, 0.1426837295293808, 0.11021067947149277, -0.1959371268749237, 0.24212591350078583, -2.647928237915039], [-0.048692699521780014, -0.11392887681722641, 0.10647149384021759, -0.07123811542987823, 0.10268351435661316, -0.10890653729438782, -2.648388385772705]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-09dd5910246413a9e966", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 37, "episode_id": 867, "measurement": "physical_simulation", "state_restore_max_error": 1.1920928955078125e-07}, "next_observation_inline": {"features": [0.0496211051940918, 0.07740703225135803, 0.08688487112522125, -0.07814222574234009, 0.03141549974679947, -0.06904084980487823, 0.9940524101257324, -0.04066157713532448, -0.0797283723950386, 0.15470361709594727, -8.80712604522705, -0.9680253863334656, -16.879501342773438, 0.0625152587890625, 0.07606124877929688, 0.09958761930465698, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0319906584918499, 0.7828570604324341, 0.14477919042110443, -1.494696021080017, 0.03835334628820419, 2.0880041122436523, 0.49489906430244446, 0.019959580153226852, 0.020006736740469933, -0.11146587133407593, -0.2788209319114685, 0.0298079252243042, -0.2842431366443634, 0.03030691295862198, 0.07781847566366196, -0.22938697040081024, 0.1524379849433899, 0.10897671431303024]}, "next_observation_ref": null, "observation_inline": {"features": [0.0645599365234375, 0.07199478149414062, 0.09066466242074966, -0.0691051334142685, 0.028243402019143105, -0.06932378560304642, 0.9947969317436218, 0.07616128027439117, 0.04119815304875374, 0.062422867864370346, -2.9409806728363037, 5.1565327644348145, -19.602210998535156, 0.0625152587890625, 0.07606124877929688, 0.09958761930465698, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.04140710085630417, 0.8210992813110352, 0.14582163095474243, -1.4165518283843994, 0.04330219700932503, 2.0520107746124268, 0.48214778304100037, 0.020259378477931023, 0.020304568111896515, -0.004454408772289753, 0.0100174555554986, 0.006637696176767349, 0.017978282645344734, -0.01959747076034546, -0.04809854179620743, -0.09480778872966766, 0.247420072555542, 0.1692054569721222]}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-d029893038d65635b4d0be70", "regret": 1.4249022006988525, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5750977993011475}, "progress": 0.5750977993011475, "success": false, "terminal_success": false}, "scene_id": "episode-867", "state_hash": "de5be1ec67f2417d2acd8585e3198627c1e24c13c85c8ff1cd619e41bdc2bc31", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 37, "episode_id": 867, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.014938831329345703, 0.005412250757217407, -0.003779791295528412, -0.009037092328071594, 0.0031720977276563644, 0.0002829357981681824, -0.0007445216178894043]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "wrong_direction-03", "horizon": 4, "metadata": {"candidate_type": "wrong_direction", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.35}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[-0.2195589244365692, -0.5377060770988464, 0.2665383815765381, 0.4320979118347168, 0.3823278844356537, -0.44242894649505615, -2.6469945907592773], [-0.34277549386024475, -0.019867729395627975, 0.04149555787444115, 0.03973979875445366, -0.07121608406305313, 0.3568418025970459, -2.647573709487915], [0.001606909791007638, 0.04549628868699074, -0.08169823884963989, -0.41055700182914734, -0.22310076653957367, 0.2578001618385315, -2.647928237915039], [-0.0015573215205222368, -0.07567897439002991, -0.3203178644180298, -0.07577195763587952, -0.08130189776420593, 0.10347624123096466, -2.648388385772705]]}, "candidate_type": "wrong_direction", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-09dd5910246413a9e966", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 37, "episode_id": 867, "measurement": "physical_simulation", "state_restore_max_error": 1.1920928955078125e-07}, "next_observation_inline": {"features": [0.044190991669893265, 0.04895168915390968, 0.09195176512002945, -0.07220153510570526, 0.023411821573972702, -0.07462029159069061, 0.9943191409111023, -0.030032072216272354, -0.08743145316839218, -0.14382892847061157, -8.528361320495605, -0.48573291301727295, -17.250978469848633, 0.0625152587890625, 0.07606124877929688, 0.09958761930465698, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.07592978328466415, 0.7422257661819458, 0.14214742183685303, -1.5541762113571167, 0.052668385207653046, 2.117441177368164, 0.4537918269634247, 0.019962389022111893, 0.020005222409963608, -0.0675416961312294, 0.36653319001197815, -0.0332595556974411, 0.03553716465830803, 0.036253977566957474, 0.2507691979408264, -0.11705838143825531, 0.15071111917495728, 0.11195119470357895]}, "next_observation_ref": null, "observation_inline": {"features": [0.0645599365234375, 0.07199478149414062, 0.09066466242074966, -0.0691051334142685, 0.028243402019143105, -0.06932378560304642, 0.9947969317436218, 0.07616128027439117, 0.04119815304875374, 0.062422867864370346, -2.9409806728363037, 5.1565327644348145, -19.602210998535156, 0.0625152587890625, 0.07606124877929688, 0.09958761930465698, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.04140710085630417, 0.8210992813110352, 0.14582163095474243, -1.4165518283843994, 0.04330219700932503, 2.0520107746124268, 0.48214778304100037, 0.020259378477931023, 0.020304568111896515, -0.004454408772289753, 0.0100174555554986, 0.006637696176767349, 0.017978282645344734, -0.01959747076034546, -0.04809854179620743, -0.09480778872966766, 0.247420072555542, 0.1692054569721222]}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-babc0f1c582fc3c11a986f3e", "regret": 1.4433188438415527, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5566811561584473}, "progress": 0.5566811561584473, "success": false, "terminal_success": false}, "scene_id": "episode-867", "state_hash": "de5be1ec67f2417d2acd8585e3198627c1e24c13c85c8ff1cd619e41bdc2bc31", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 37, "episode_id": 867, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.020368944853544235, -0.023043092340230942, 0.0012871026992797852, -0.0030964016914367676, -0.0048315804451704025, -0.0052965059876441956, -0.00047779083251953125]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "expert-00", "horizon": 4, "metadata": {"candidate_type": "expert", "parent_action_id": null, "perturbation": {"scale": 0.0}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[-0.06795269250869751, 0.03774597495794296, -0.08810089528560638, -0.05046897754073143, -0.1968887597322464, -0.2846447229385376, -3.0067877769470215], [-0.06824885308742523, 0.03919869661331177, -0.08892017602920532, -0.04468657448887825, -0.19744254648685455, -0.27879661321640015, -3.0066895484924316], [-0.0687376856803894, 0.04049288481473923, -0.0893811285495758, -0.0401996411383152, -0.1977950632572174, -0.27375054359436035, -3.0068249702453613], [-0.0691552460193634, 0.041279323399066925, -0.08985772728919983, -0.036200542002916336, -0.19831103086471558, -0.2690778374671936, -3.006392002105713]]}, "candidate_type": "expert", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "success"}, "group_id": "ms-84f05278fbb0fa0ce314", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 18, "episode_id": 646, "measurement": "physical_simulation", "state_restore_max_error": 1.1920928955078125e-07}, "next_observation_inline": {"features": [-0.058719635009765625, -0.03538799285888672, 0.021127309650182724, 0.7918317317962646, 0.016046421602368355, 0.024971656501293182, -0.6100174188613892, -0.025498665869235992, 0.013491121120750904, -0.10388036072254181, -1.8941878080368042, -0.426980197429657, -0.4914884865283966, -0.056362152099609375, -0.03152275085449219, 0.02190544828772545, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.15705057978630066, 0.6188392043113708, 0.07891889661550522, -2.0361709594726562, 0.03217840939760208, 2.496347188949585, 0.4112321734428406, 0.01854606717824936, 0.018634267151355743, -0.007476016413420439, 0.0054562874138355255, 0.008557239547371864, 0.016088956966996193, -0.05292543023824692, -0.014986386522650719, -0.08102260529994965, 0.05275915935635567, -0.025412635877728462]}, "next_observation_ref": null, "observation_inline": {"features": [-0.059116363525390625, -0.03501701354980469, 0.021174974739551544, 0.7814967036247253, 0.01697498746216297, 0.025830263271927834, -0.6231431365013123, -0.019917143508791924, 0.020003147423267365, -0.09693031758069992, -1.609221339225769, -0.30961403250694275, -0.7444759607315063, -0.056362152099609375, -0.03152275085449219, 0.02190544828772545, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.15392135083675385, 0.6162732243537903, 0.07561429589986801, -2.040565252304077, 0.0442635603249073, 2.501309394836426, 0.43628913164138794, 0.01851757988333702, 0.018613282591104507, -0.023328572511672974, 0.007683183066546917, 0.01907087303698063, 0.021830642595887184, -0.04545915126800537, -0.016812678426504135, -0.11858879029750824, 0.05712641775608063, -0.03041248768568039]}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-5be902c6e5a285da154bb85d", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "episode-646", "state_hash": "f621816b331c4c09ab8d2f7e354686608b2421ce1768f25cb56b1031be3fa39e", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 18, "episode_id": 646, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.000396728515625, -0.00037097930908203125, -4.766508936882019e-05, 0.010335028171539307, -0.0009285658597946167, -0.0008586067706346512, 0.013125717639923096]}, "relation_after": {"success": true}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-01", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.05}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[-0.06015036255121231, 0.05383424460887909, -0.07944267988204956, -0.10842771828174591, -0.18085788190364838, -0.29030486941337585, -3.0067877769470215], [-0.05243422091007233, 0.07576505839824677, -0.1344478875398636, -0.025725077837705612, -0.14338651299476624, -0.26573657989501953, -3.0066895484924316], [-0.013296052813529968, 0.006467252969741821, 0.019920945167541504, -0.05212884396314621, -0.1608157902956009, -0.27449682354927063, -3.0068249702453613], [-0.09491398185491562, -0.0006787814199924469, -0.16215890645980835, -0.11035233736038208, -0.1450587511062622, -0.32862597703933716, -3.006392002105713]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-84f05278fbb0fa0ce314", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 18, "episode_id": 646, "measurement": "physical_simulation", "state_restore_max_error": 1.1920928955078125e-07}, "next_observation_inline": {"features": [-0.05781186744570732, -0.034171104431152344, 0.020504456013441086, 0.7941015958786011, 0.007085648365318775, 0.011876514181494713, -0.6076275706291199, 0.007736639119684696, 0.01625470258295536, -0.1600150316953659, -4.661375999450684, 0.35081353783607483, 5.611293792724609, -0.056362152099609375, -0.03152275085449219, 0.02190544828772545, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.16126514971256256, 0.6237362027168274, 0.08369298279285431, -2.033398389816284, 0.03584221005439758, 2.5003409385681152, 0.4021971523761749, 0.018647270277142525, 0.018825970590114594, -0.08141578733921051, 0.0353563167154789, 0.039721544831991196, 0.016298847272992134, -0.027094880118966103, 0.11254585534334183, -0.20961004495620728, 0.12188065052032471, -0.05114882066845894]}, "next_observation_ref": null, "observation_inline": {"features": [-0.059116363525390625, -0.03501701354980469, 0.021174974739551544, 0.7814967036247253, 0.01697498746216297, 0.025830263271927834, -0.6231431365013123, -0.019917143508791924, 0.020003147423267365, -0.09693031758069992, -1.609221339225769, -0.30961403250694275, -0.7444759607315063, -0.056362152099609375, -0.03152275085449219, 0.02190544828772545, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.15392135083675385, 0.6162732243537903, 0.07561429589986801, -2.040565252304077, 0.0442635603249073, 2.501309394836426, 0.43628913164138794, 0.01851757988333702, 0.018613282591104507, -0.023328572511672974, 0.007683183066546917, 0.01907087303698063, 0.021830642595887184, -0.04545915126800537, -0.016812678426504135, -0.11858879029750824, 0.05712641775608063, -0.03041248768568039]}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-056e42e3dd49b4b0f058f5ea", "regret": 1.3763341903686523, "reward": {"dense_components": {"maniskill_normalized_dense": 0.6236658096313477}, "progress": 0.6236658096313477, "success": false, "terminal_success": false}, "scene_id": "episode-646", "state_hash": "f621816b331c4c09ab8d2f7e354686608b2421ce1768f25cb56b1031be3fa39e", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 18, "episode_id": 646, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.0013044960796833038, 0.0008459091186523438, -0.0006705187261104584, 0.012604892253875732, -0.009889339096844196, -0.01395374909043312, 0.015515565872192383]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-02", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.15}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.1426173895597458, -0.0902567133307457, 0.12746551632881165, 0.22631362080574036, -0.5435505509376526, -0.12393350899219513, -3.0067877769470215], [-0.010704118758440018, 0.09766486287117004, -0.053937703371047974, -0.33861780166625977, -0.2851536273956299, -0.3449370265007019, -3.0066895484924316], [0.14202916622161865, -0.16038689017295837, 0.08227288722991943, -0.01912054792046547, -0.251777321100235, -0.5287412405014038, -3.0068249702453613], [-0.1878577470779419, -0.045606017112731934, -0.10397925227880478, 0.012929502874612808, 0.020671099424362183, -0.04297761619091034, -3.006392002105713]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-84f05278fbb0fa0ce314", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 18, "episode_id": 646, "measurement": "physical_simulation", "state_restore_max_error": 1.1920928955078125e-07}, "next_observation_inline": {"features": [-0.053856849670410156, -0.04322776943445206, 0.025402115657925606, 0.7941571474075317, 0.009224941022694111, 0.045442696660757065, -0.6059406995773315, -0.14380115270614624, -0.0645194798707962, -0.01396188884973526, -9.008127212524414, -2.257486581802368, -1.4859774112701416, -0.056362152099609375, -0.03152275085449219, 0.02190544828772545, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.1626039296388626, 0.6308643817901611, 0.07290196418762207, -1.986979365348816, 0.026556890457868576, 2.4228157997131348, 0.40131011605262756, 0.01860629767179489, 0.01864015869796276, -0.07853115350008011, -0.10466897487640381, -0.025765612721443176, -0.4559060037136078, 0.0006946511566638947, 0.33438625931739807, -0.10037025809288025, 0.046549271792173386, 0.015884265303611755]}, "next_observation_ref": null, "observation_inline": {"features": [-0.059116363525390625, -0.03501701354980469, 0.021174974739551544, 0.7814967036247253, 0.01697498746216297, 0.025830263271927834, -0.6231431365013123, -0.019917143508791924, 0.020003147423267365, -0.09693031758069992, -1.609221339225769, -0.30961403250694275, -0.7444759607315063, -0.056362152099609375, -0.03152275085449219, 0.02190544828772545, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.15392135083675385, 0.6162732243537903, 0.07561429589986801, -2.040565252304077, 0.0442635603249073, 2.501309394836426, 0.43628913164138794, 0.01851757988333702, 0.018613282591104507, -0.023328572511672974, 0.007683183066546917, 0.01907087303698063, 0.021830642595887184, -0.04545915126800537, -0.016812678426504135, -0.11858879029750824, 0.05712641775608063, -0.03041248768568039]}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-58ace0d31075ec4101b66702", "regret": 1.4118500351905823, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5881499648094177}, "progress": 0.5881499648094177, "success": false, "terminal_success": false}, "scene_id": "episode-646", "state_hash": "f621816b331c4c09ab8d2f7e354686608b2421ce1768f25cb56b1031be3fa39e", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 18, "episode_id": 646, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.005259513854980469, -0.00821075588464737, 0.004227140918374062, 0.012660443782806396, -0.007750046439468861, 0.01961243338882923, 0.017202436923980713]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "wrong_direction-03", "horizon": 4, "metadata": {"candidate_type": "wrong_direction", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.35}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[-0.11654216051101685, 0.3300993740558624, -0.1319064199924469, -0.6342054605484009, -0.03266783058643341, -0.6451255083084106, -3.0067877769470215], [-0.3634369969367981, 0.022476132959127426, 0.4172612428665161, -0.43147122859954834, -0.06827260553836823, -0.4231646656990051, -3.0066895484924316], [-0.47769322991371155, 0.7599477767944336, 0.08570630848407745, -0.49536633491516113, -0.35200589895248413, -0.2034192979335785, -3.0068249702453613], [0.1130170077085495, -0.13820773363113403, -0.18352042138576508, 0.38525721430778503, -0.40498942136764526, -0.5311747789382935, -3.006392002105713]]}, "candidate_type": "wrong_direction", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-84f05278fbb0fa0ce314", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 18, "episode_id": 646, "measurement": "physical_simulation", "state_restore_max_error": 1.1920928955078125e-07}, "next_observation_inline": {"features": [-0.08923378586769104, -0.0004935363540425897, 0.0343405157327652, 0.8030775785446167, 0.01986432448029518, 0.04411906376481056, -0.593906819820404, 0.06715472787618637, -0.06172572448849678, -0.07617174088954926, -11.514382362365723, -2.9567413330078125, -1.8006685972213745, -0.056362152099609375, -0.03152275085449219, 0.02190544828772545, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.15669015049934387, 0.5361765623092651, 0.12942196428775787, -2.1478607654571533, 0.06533650308847427, 2.499333620071411, 0.3967493772506714, 0.018796784803271294, 0.01883702352643013, 0.21987003087997437, 0.5321605205535889, -0.22744083404541016, 0.5925928950309753, -0.4586489796638489, -0.30409935116767883, 0.0075500644743442535, 0.06495652347803116, 0.027708422392606735]}, "next_observation_ref": null, "observation_inline": {"features": [-0.059116363525390625, -0.03501701354980469, 0.021174974739551544, 0.7814967036247253, 0.01697498746216297, 0.025830263271927834, -0.6231431365013123, -0.019917143508791924, 0.020003147423267365, -0.09693031758069992, -1.609221339225769, -0.30961403250694275, -0.7444759607315063, -0.056362152099609375, -0.03152275085449219, 0.02190544828772545, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.15392135083675385, 0.6162732243537903, 0.07561429589986801, -2.040565252304077, 0.0442635603249073, 2.501309394836426, 0.43628913164138794, 0.01851757988333702, 0.018613282591104507, -0.023328572511672974, 0.007683183066546917, 0.01907087303698063, 0.021830642595887184, -0.04545915126800537, -0.016812678426504135, -0.11858879029750824, 0.05712641775608063, -0.03041248768568039]}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-cc0794dc6f6f9745919960ce", "regret": 1.4462323784828186, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5537676215171814}, "progress": 0.5537676215171814, "success": false, "terminal_success": false}, "scene_id": "episode-646", "state_hash": "f621816b331c4c09ab8d2f7e354686608b2421ce1768f25cb56b1031be3fa39e", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 18, "episode_id": 646, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.030117422342300415, 0.03452347591519356, 0.013165540993213654, 0.021580874919891357, 0.0028893370181322098, 0.01828880049288273, 0.029236316680908203]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "expert-00", "horizon": 4, "metadata": {"candidate_type": "expert", "parent_action_id": null, "perturbation": {"scale": 0.0}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[-0.001061026006937027, 0.017367981374263763, -0.0008409284055233002, -0.007691771723330021, 0.010820051655173302, -0.006867535412311554, -2.1524879932403564], [0.0005487166345119476, 0.017298780381679535, 0.00040651485323905945, -0.008644749410450459, 0.010999424383044243, -0.009624533355236053, -2.1541748046875], [0.0013713948428630829, 0.016910918056964874, 0.0016237683594226837, -0.009684194810688496, 0.011049328371882439, -0.011628642678260803, -2.1552927494049072], [0.0017304085195064545, 0.016599737107753754, 0.002570752054452896, -0.010586575604975224, 0.01097836159169674, -0.013079099357128143, -2.1559882164001465]]}, "candidate_type": "expert", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "success"}, "group_id": "ms-0b68ada383730605d059", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 15, "episode_id": 400, "measurement": "physical_simulation", "state_restore_max_error": 2.384185791015625e-07}, "next_observation_inline": {"features": [0.0820775032043457, -0.0006303787231445312, 0.18708573281764984, 0.86750328540802, 0.04630114510655403, -0.009896606206893921, 0.4951728582382202, -0.0064362045377492905, 0.000371718080714345, -0.0038674334064126015, 2.6845672130584717, 0.476497620344162, -1.4890450239181519, 0.08658504486083984, -0.001461029052734375, 0.19299988448619843, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149997711181641, 0.0, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.08220233023166656, 0.7081855535507202, 0.08368954807519913, -1.3599157333374023, 0.028648803010582924, 1.9073094129562378, 0.5537671446800232, 0.026085037738084793, 0.026142667979002, 0.00014647234638687223, 0.0007838539313524961, 0.000978528754785657, -0.003602497512474656, -0.0010681289713829756, 0.00897822342813015, 0.0016863179625943303, 0.02955455332994461, -0.03739774227142334]}, "next_observation_ref": null, "observation_inline": {"features": [0.08222924172878265, -0.000789642333984375, 0.18782344460487366, 0.8674437999725342, 0.04751128330826759, -0.010471798479557037, 0.4951506555080414, -0.011699172668159008, -0.0014174419920891523, -0.010118061676621437, 2.8563919067382812, 1.3878493309020996, -1.3484596014022827, 0.0865851566195488, -0.001461029052734375, 0.19299988448619843, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999999731779099, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150000095367432, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.08231474459171295, 0.7083981037139893, 0.08363498747348785, -1.3575186729431152, 0.028591888025403023, 1.90458083152771, 0.5523387789726257, 0.02607525885105133, 0.026132771745324135, -0.001429407624527812, -0.010005883872509003, -0.0011519331019371748, -0.02851266600191593, -0.0008070559124462306, 0.023801561444997787, 0.006997405551373959, 0.029387129470705986, -0.037348490208387375]}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-8d18bbe3f1603905ac016370", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "episode-400", "state_hash": "775d9c8c267e35ab00ec198d4cc19691a84a13dfae6c21d7cad1269f673a0c04", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 15, "episode_id": 400, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.00015173852443695068, 0.00015926361083984375, -0.0007377117872238159, 5.9485435485839844e-05, -0.001210138201713562, 0.0005751922726631165, 2.2202730178833008e-05]}, "relation_after": {"success": true}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-01", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.05}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[-0.007748883683234453, 0.05870112404227257, -0.023059697821736336, 0.05674024671316147, -0.02491856925189495, 0.008962918072938919, -2.1524879932403564], [-0.006408157758414745, -0.02038808912038803, 0.06046168878674507, 0.0024307332932949066, 0.03507426381111145, 0.0005808863788843155, -2.1541748046875], [0.09816619753837585, 0.07434285432100296, -0.014238549396395683, -0.00867438968271017, -0.05185640603303909, 0.026960428804159164, -2.1552927494049072], [0.07152809202671051, 0.004921725019812584, -0.011629757471382618, -0.022330809384584427, 0.024203971028327942, -0.06218409165740013, -2.1559882164001465]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-0b68ada383730605d059", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 15, "episode_id": 400, "measurement": "physical_simulation", "state_restore_max_error": 2.384185791015625e-07}, "next_observation_inline": {"features": [0.08819270879030228, 0.0013689994812011719, 0.18825359642505646, 0.8677000403404236, 0.04542190954089165, -0.008819548413157463, 0.49492979049682617, 0.03385978192090988, 0.0005657623987644911, -0.017899973317980766, 2.692678689956665, 0.46924152970314026, -1.4546016454696655, 0.0865851566195488, -0.001461029052734375, 0.19299988448619843, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999999731779099, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150000095367432, 0.0, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.07674387842416763, 0.7309754490852356, 0.08282391726970673, -1.3175690174102783, 0.02552829310297966, 1.8871653079986572, 0.5599318146705627, 0.026084257289767265, 0.02614285610616207, 0.007161350920796394, 0.17693465948104858, 0.004239431116729975, 0.26176977157592773, -0.01183361653238535, -0.08189968764781952, -0.0318293534219265, 0.030106551945209503, -0.03792488947510719]}, "next_observation_ref": null, "observation_inline": {"features": [0.08222924172878265, -0.000789642333984375, 0.18782344460487366, 0.8674437999725342, 0.04751128330826759, -0.010471798479557037, 0.4951506555080414, -0.011699172668159008, -0.0014174419920891523, -0.010118061676621437, 2.8563919067382812, 1.3878493309020996, -1.3484596014022827, 0.0865851566195488, -0.001461029052734375, 0.19299988448619843, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999999731779099, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150000095367432, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.08231474459171295, 0.7083981037139893, 0.08363498747348785, -1.3575186729431152, 0.028591888025403023, 1.90458083152771, 0.5523387789726257, 0.02607525885105133, 0.026132771745324135, -0.001429407624527812, -0.010005883872509003, -0.0011519331019371748, -0.02851266600191593, -0.0008070559124462306, 0.023801561444997787, 0.006997405551373959, 0.029387129470705986, -0.037348490208387375]}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-ba3977e6c257e18c77d83bd5", "regret": 1.3935168385505676, "reward": {"dense_components": {"maniskill_normalized_dense": 0.6064831614494324}, "progress": 0.6064831614494324, "success": false, "terminal_success": false}, "scene_id": "episode-400", "state_hash": "775d9c8c267e35ab00ec198d4cc19691a84a13dfae6c21d7cad1269f673a0c04", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 15, "episode_id": 400, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.005963467061519623, 0.002158641815185547, 0.0004301518201828003, 0.0002562403678894043, -0.002089373767375946, 0.0016522500663995743, -0.00022086501121520996]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-02", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.15}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.16191789507865906, -0.07390096783638, 0.22958961129188538, -0.10214807838201523, -0.03279634565114975, 0.22939804196357727, -2.1524879932403564], [-0.012497620657086372, 0.0644175261259079, 0.09871011972427368, -0.05202711001038551, 0.27402666211128235, -0.1374933123588562, -2.1541748046875], [-0.10021579265594482, -0.019350789487361908, -0.0011489239986985922, 0.24056269228458405, 0.11628516763448715, -0.010112302377820015, -2.1552927494049072], [-0.07321828603744507, -0.17748960852622986, -0.237823948264122, 0.13078856468200684, -0.292702853679657, 0.19891753792762756, -2.1559882164001465]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "success"}, "group_id": "ms-0b68ada383730605d059", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 15, "episode_id": 400, "measurement": "physical_simulation", "state_restore_max_error": 2.384185791015625e-07}, "next_observation_inline": {"features": [0.08217477798461914, -0.007789572700858116, 0.1949353963136673, 0.8694705963134766, 0.04024578258395195, -0.011496300809085369, 0.4922083020210266, -0.05088535696268082, -0.10949944704771042, -0.1453225314617157, 2.6186776161193848, 0.6296449899673462, -1.5867128372192383, 0.08658504486083984, -0.001461029052734375, 0.19299988448619843, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149997711181641, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.08584512770175934, 0.6932328939437866, 0.0774572417140007, -1.3651012182235718, 0.024428892880678177, 1.9064362049102783, 0.5550703406333923, 0.02608303911983967, 0.026142532005906105, -0.07389792054891586, 0.12005265802145004, -0.08749522268772125, -0.13965624570846558, -0.04405226185917854, 0.09547557681798935, -0.0023438059724867344, 0.03055054508149624, -0.03861016780138016]}, "next_observation_ref": null, "observation_inline": {"features": [0.08222924172878265, -0.000789642333984375, 0.18782344460487366, 0.8674437999725342, 0.04751128330826759, -0.010471798479557037, 0.4951506555080414, -0.011699172668159008, -0.0014174419920891523, -0.010118061676621437, 2.8563919067382812, 1.3878493309020996, -1.3484596014022827, 0.0865851566195488, -0.001461029052734375, 0.19299988448619843, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999999731779099, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150000095367432, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.08231474459171295, 0.7083981037139893, 0.08363498747348785, -1.3575186729431152, 0.028591888025403023, 1.90458083152771, 0.5523387789726257, 0.02607525885105133, 0.026132771745324135, -0.001429407624527812, -0.010005883872509003, -0.0011519331019371748, -0.02851266600191593, -0.0008070559124462306, 0.023801561444997787, 0.006997405551373959, 0.029387129470705986, -0.037348490208387375]}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-38ea452492e439c69c10eb4a", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "episode-400", "state_hash": "775d9c8c267e35ab00ec198d4cc19691a84a13dfae6c21d7cad1269f673a0c04", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 15, "episode_id": 400, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-5.4463744163513184e-05, -0.006999930366873741, 0.00711195170879364, 0.002026796340942383, -0.007265500724315643, -0.0010245023295283318, -0.0029423534870147705]}, "relation_after": {"success": true}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "wrong_direction-03", "horizon": 4, "metadata": {"candidate_type": "wrong_direction", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.35}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.6864356994628906, 0.26999059319496155, 0.028157174587249756, -0.32155218720436096, 0.555658221244812, 0.07468698918819427, -2.1524879932403564], [0.08635939657688141, 0.05635954439640045, 0.00767293618991971, 0.6753722429275513, 0.00508149154484272, -0.1333610713481903, -2.1541748046875], [0.04817882180213928, -0.49859392642974854, 0.6823527216911316, -0.36970797181129456, 0.9875984191894531, 0.016604147851467133, -2.1552927494049072], [0.06453457474708557, 0.272859662771225, 0.929679811000824, -0.46067699790000916, 0.6489315032958984, -0.028266798704862595, -2.1559882164001465]]}, "candidate_type": "wrong_direction", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-0b68ada383730605d059", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 15, "episode_id": 400, "measurement": "physical_simulation", "state_restore_max_error": 2.384185791015625e-07}, "next_observation_inline": {"features": [0.10751789063215256, -0.0006702585960738361, 0.2294948250055313, 0.8667557239532471, 0.04146870598196983, -0.03498325124382973, 0.4957731366157532, 0.034662771970033646, 0.07409662008285522, 0.6458529829978943, 2.97749400138855, -0.05095549300312996, -1.4485164880752563, 0.0865851566195488, -0.001461029052734375, 0.19299988448619843, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999999731779099, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150000095367432, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0864887684583664, 0.7322121858596802, 0.09100878983736038, -1.2163854837417603, 0.03905481845140457, 1.8354458808898926, 0.5493160486221313, 0.026090318337082863, 0.026142247021198273, -0.0638841837644577, -0.7962353825569153, 0.1441323310136795, 0.21214383840560913, 0.2207929491996765, -0.4705350995063782, 0.08140170574188232, 0.02615680918097496, -0.034271713346242905]}, "next_observation_ref": null, "observation_inline": {"features": [0.08222924172878265, -0.000789642333984375, 0.18782344460487366, 0.8674437999725342, 0.04751128330826759, -0.010471798479557037, 0.4951506555080414, -0.011699172668159008, -0.0014174419920891523, -0.010118061676621437, 2.8563919067382812, 1.3878493309020996, -1.3484596014022827, 0.0865851566195488, -0.001461029052734375, 0.19299988448619843, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999999731779099, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150000095367432, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.08231474459171295, 0.7083981037139893, 0.08363498747348785, -1.3575186729431152, 0.028591888025403023, 1.90458083152771, 0.5523387789726257, 0.02607525885105133, 0.026132771745324135, -0.001429407624527812, -0.010005883872509003, -0.0011519331019371748, -0.02851266600191593, -0.0008070559124462306, 0.023801561444997787, 0.006997405551373959, 0.029387129470705986, -0.037348490208387375]}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-9aecc12303841d85ff206466", "regret": 1.4437241554260254, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5562758445739746}, "progress": 0.5562758445739746, "success": false, "terminal_success": false}, "scene_id": "episode-400", "state_hash": "775d9c8c267e35ab00ec198d4cc19691a84a13dfae6c21d7cad1269f673a0c04", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 15, "episode_id": 400, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.025288648903369904, 0.00011938373791053891, 0.041671380400657654, -0.0006880760192871094, -0.00604257732629776, -0.02451145276427269, 0.000622481107711792]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "expert-00", "horizon": 4, "metadata": {"candidate_type": "expert", "parent_action_id": null, "perturbation": {"scale": 0.0}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.0056862495839595795, 0.007792062126100063, -0.0016587190330028534, -0.046240221709012985, -0.05517684668302536, -0.1732744723558426, -2.302699089050293], [0.005593772977590561, 0.0073131388053298, -0.000482168048620224, -0.04134856536984444, -0.05364086478948593, -0.16760937869548798, -2.3043410778045654], [0.005486782640218735, 0.007044247351586819, 0.0004327036440372467, -0.036722104996442795, -0.05226494371891022, -0.16180245578289032, -2.3058109283447266], [0.005284931510686874, 0.006894431076943874, 0.001001644879579544, -0.03239233419299126, -0.05093592405319214, -0.15611571073532104, -2.3072094917297363]]}, "candidate_type": "expert", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "success"}, "group_id": "ms-0d22a304512dff4de634", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 18, "episode_id": 140, "measurement": "physical_simulation", "state_restore_max_error": 1.1920928955078125e-07}, "next_observation_inline": {"features": [-0.05516529083251953, -0.04473876953125, 0.1371064931154251, 0.7845485210418701, 0.0038523958064615726, 0.09229960292577744, -0.6131471991539001, -0.02217288501560688, -0.02421979233622551, 0.08325611054897308, -5.285789966583252, -0.3219745457172394, 0.20333823561668396, -0.04826164245605469, -0.0446014404296875, 0.15121927857398987, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000083923339844, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149997711181641, 0.0, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.15309204161167145, 0.42574837803840637, 0.058670125901699066, -1.931337833404541, 0.025727197527885437, 2.053523063659668, 0.4344998002052307, 0.018226170912384987, 0.018268238753080368, -0.0065996162593364716, 0.031406763941049576, 0.01003206241875887, 0.04472003132104874, -0.01017195638269186, -0.04304416850209236, -0.07806981354951859, 0.026969347149133682, -0.0158369243144989]}, "next_observation_ref": null, "observation_inline": {"features": [-0.055675506591796875, -0.044284820556640625, 0.13789434731006622, 0.7773057222366333, 0.0034626859705895185, 0.0842718705534935, -0.6234436631202698, -0.048255983740091324, -0.010483299382030964, 0.08173879235982895, 5.665621757507324, 0.03412323072552681, 5.5458502769470215, -0.04826164245605469, -0.0446014404296875, 0.15121927857398987, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000083923339844, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149997711181641, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.15094807744026184, 0.4173718988895416, 0.05586022511124611, -1.9438515901565552, 0.03050217777490616, 2.0685648918151855, 0.4550822675228119, 0.018289679661393166, 0.01833159849047661, -0.011368108913302422, 0.0402437224984169, 0.014698892831802368, 0.04797408729791641, -0.007770489901304245, -0.035818397998809814, -0.07161416858434677, 0.05780956894159317, -0.0012373441131785512]}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-84348a835351b4aa6dbd4252", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "episode-140", "state_hash": "c9f101e4f846b15df93f61a9b81d97286c88304e24a44ae0d9a3b58b2a7d9b65", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 18, "episode_id": 140, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.0005102157592773438, -0.000453948974609375, -0.0007878541946411133, 0.007242798805236816, 0.0003897098358720541, 0.008027732372283936, 0.010296463966369629]}, "relation_after": {"success": true}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-01", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.05}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[-0.025954019278287888, -0.038123056292533875, -0.052742745727300644, 0.02824760600924492, -0.06295394152402878, -0.1680106222629547, -2.302699089050293], [-0.04545408487319946, -0.08016922324895859, 0.10430888831615448, -0.03534335270524025, -0.034590944647789, -0.20008747279644012, -2.3043410778045654], [0.09310038387775421, -0.009288140572607517, 0.07560275495052338, 0.0031486041843891144, -0.1053982600569725, -0.0920005813241005, -2.3058109283447266], [0.024680083617568016, 0.022598259150981903, -0.04758397862315178, -0.04015111178159714, -0.008651338517665863, -0.05186138302087784, -2.3072094917297363]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "success"}, "group_id": "ms-0d22a304512dff4de634", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 18, "episode_id": 140, "measurement": "physical_simulation", "state_restore_max_error": 1.1920928955078125e-07}, "next_observation_inline": {"features": [-0.053896524012088776, -0.05029630661010742, 0.1409919410943985, 0.7827561497688293, 0.002775762230157852, 0.09024511277675629, -0.6157442331314087, -0.012051092460751534, -0.016854774206876755, 0.05245579406619072, -5.273306369781494, -0.310465008020401, 0.13328395783901215, -0.04826164245605469, -0.0446014404296875, 0.15121927857398987, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000083923339844, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149997711181641, 0.0, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.15669508278369904, 0.42257198691368103, 0.05389300733804703, -1.9245834350585938, 0.022463934496045113, 2.0456607341766357, 0.43509534001350403, 0.018226196989417076, 0.01826789788901806, -0.0007384632481262088, 0.09255509078502655, 0.011079414747655392, 0.049328580498695374, 0.018697643652558327, 0.03915564343333244, -0.024662068113684654, 0.026777777820825577, -0.01557882223278284]}, "next_observation_ref": null, "observation_inline": {"features": [-0.055675506591796875, -0.044284820556640625, 0.13789434731006622, 0.7773057222366333, 0.0034626859705895185, 0.0842718705534935, -0.6234436631202698, -0.048255983740091324, -0.010483299382030964, 0.08173879235982895, 5.665621757507324, 0.03412323072552681, 5.5458502769470215, -0.04826164245605469, -0.0446014404296875, 0.15121927857398987, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000083923339844, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149997711181641, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.15094807744026184, 0.4173718988895416, 0.05586022511124611, -1.9438515901565552, 0.03050217777490616, 2.0685648918151855, 0.4550822675228119, 0.018289679661393166, 0.01833159849047661, -0.011368108913302422, 0.0402437224984169, 0.014698892831802368, 0.04797408729791641, -0.007770489901304245, -0.035818397998809814, -0.07161416858434677, 0.05780956894159317, -0.0012373441131785512]}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-531d3c619e798040d390c90d", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "episode-140", "state_hash": "c9f101e4f846b15df93f61a9b81d97286c88304e24a44ae0d9a3b58b2a7d9b65", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 18, "episode_id": 140, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.0017789825797080994, -0.006011486053466797, 0.0030975937843322754, 0.005450427532196045, -0.0006869237404316664, 0.005973242223262787, 0.007699429988861084]}, "relation_after": {"success": true}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-02", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.15}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.299454927444458, -0.24636942148208618, 0.08990879356861115, -0.15856489539146423, 0.09916778653860092, -0.07440011948347092, -2.302699089050293], [0.1342962086200714, -0.08974606543779373, -0.06500047445297241, -0.08978439122438431, -0.17190337181091309, 0.006029203534126282, -2.3043410778045654], [-0.23471499979496002, -0.06631222367286682, 0.15986387431621552, 0.12719829380512238, -0.24084848165512085, -0.12543241679668427, -2.3058109283447266], [-0.07622957229614258, -0.19038274884223938, 0.031526729464530945, 0.02643159031867981, -0.34691596031188965, 0.01284646987915039, -2.3072094917297363]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-0d22a304512dff4de634", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 18, "episode_id": 140, "measurement": "physical_simulation", "state_restore_max_error": 1.1920928955078125e-07}, "next_observation_inline": {"features": [-0.051651954650878906, -0.06529637426137924, 0.14498984813690186, 0.7799803614616394, -0.0017687189392745495, 0.09899227321147919, -0.6179221868515015, -0.0633033812046051, -0.15628033876419067, 0.11200738698244095, -5.328490734100342, -0.11168414354324341, 0.17066770792007446, -0.04826164245605469, -0.0446014404296875, 0.15121927857398987, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000083923339844, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149997711181641, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.1712074726819992, 0.4380713999271393, 0.043213848024606705, -1.8856730461120605, 0.020736465230584145, 2.0016674995422363, 0.4179847836494446, 0.0182260163128376, 0.018269607797265053, -0.12390078604221344, 0.00042386347195133567, -0.09593778103590012, 0.0952337235212326, -0.05982176214456558, -0.2686559557914734, -0.13205157220363617, 0.027861159294843674, -0.016712220385670662]}, "next_observation_ref": null, "observation_inline": {"features": [-0.055675506591796875, -0.044284820556640625, 0.13789434731006622, 0.7773057222366333, 0.0034626859705895185, 0.0842718705534935, -0.6234436631202698, -0.048255983740091324, -0.010483299382030964, 0.08173879235982895, 5.665621757507324, 0.03412323072552681, 5.5458502769470215, -0.04826164245605469, -0.0446014404296875, 0.15121927857398987, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000083923339844, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149997711181641, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.15094807744026184, 0.4173718988895416, 0.05586022511124611, -1.9438515901565552, 0.03050217777490616, 2.0685648918151855, 0.4550822675228119, 0.018289679661393166, 0.01833159849047661, -0.011368108913302422, 0.0402437224984169, 0.014698892831802368, 0.04797408729791641, -0.007770489901304245, -0.035818397998809814, -0.07161416858434677, 0.05780956894159317, -0.0012373441131785512]}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-72f20d5a5153cee3223f17ed", "regret": 1.4218986630439758, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5781013369560242}, "progress": 0.5781013369560242, "success": false, "terminal_success": false}, "scene_id": "episode-140", "state_hash": "c9f101e4f846b15df93f61a9b81d97286c88304e24a44ae0d9a3b58b2a7d9b65", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 18, "episode_id": 140, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.004023551940917969, -0.021011553704738617, 0.007095500826835632, 0.0026746392250061035, -0.005231404677033424, 0.014720402657985687, 0.0055214762687683105]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "wrong_direction-03", "horizon": 4, "metadata": {"candidate_type": "wrong_direction", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.35}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.273457795381546, 0.06917249411344528, -0.16653993725776672, 0.3505486249923706, -0.6057392954826355, -0.35722798109054565, -2.302699089050293], [0.2961297929286957, -0.23806855082511902, 0.022761965170502663, -0.2013922482728958, 0.674582839012146, -0.1604180485010147, -2.3043410778045654], [0.49738118052482605, 0.06479253619909286, 0.34719350934028625, 0.5604190826416016, 0.34967029094696045, -0.012228026986122131, -2.3058109283447266], [-0.0006176908500492573, 0.5489177703857422, 0.11510083079338074, 0.342405766248703, -0.22373400628566742, 0.6303496956825256, -2.3072094917297363]]}, "candidate_type": "wrong_direction", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-0d22a304512dff4de634", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 18, "episode_id": 140, "measurement": "physical_simulation", "state_restore_max_error": 1.1920928955078125e-07}, "next_observation_inline": {"features": [-0.017013145610690117, -0.04127262905240059, 0.1471119225025177, 0.7694562077522278, -0.010959873907268047, 0.07149121165275574, -0.6345911026000977, -0.030738817527890205, 0.3182235360145569, 0.17516334354877472, -5.447329998016357, -0.02934206835925579, -0.28197628259658813, -0.04826164245605469, -0.0446014404296875, 0.15121927857398987, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000083923339844, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149997711181641, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11876031756401062, 0.4992719292640686, 0.04668679088354111, -1.7818373441696167, -0.004420487675815821, 1.9964524507522583, 0.5305420160293579, 0.018229126930236816, 0.018268471583724022, 0.47035062313079834, -0.17973297834396362, 0.09516994655132294, -0.03041895106434822, 0.023773303255438805, -0.20960645377635956, 0.9561150670051575, 0.025251805782318115, -0.014396600425243378]}, "next_observation_ref": null, "observation_inline": {"features": [-0.055675506591796875, -0.044284820556640625, 0.13789434731006622, 0.7773057222366333, 0.0034626859705895185, 0.0842718705534935, -0.6234436631202698, -0.048255983740091324, -0.010483299382030964, 0.08173879235982895, 5.665621757507324, 0.03412323072552681, 5.5458502769470215, -0.04826164245605469, -0.0446014404296875, 0.15121927857398987, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000083923339844, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149997711181641, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.15094807744026184, 0.4173718988895416, 0.05586022511124611, -1.9438515901565552, 0.03050217777490616, 2.0685648918151855, 0.4550822675228119, 0.018289679661393166, 0.01833159849047661, -0.011368108913302422, 0.0402437224984169, 0.014698892831802368, 0.04797408729791641, -0.007770489901304245, -0.035818397998809814, -0.07161416858434677, 0.05780956894159317, -0.0012373441131785512]}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-2a5a6f86da11cccfcf90fe8d", "regret": 1.4425843358039856, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5574156641960144}, "progress": 0.5574156641960144, "success": false, "terminal_success": false}, "scene_id": "episode-140", "state_hash": "c9f101e4f846b15df93f61a9b81d97286c88304e24a44ae0d9a3b58b2a7d9b65", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 18, "episode_id": 140, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.03866235911846161, 0.003012191504240036, 0.009217575192451477, -0.007849514484405518, -0.01442256011068821, -0.012780658900737762, -0.01114743947982788]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "expert-00", "horizon": 4, "metadata": {"candidate_type": "expert", "parent_action_id": null, "perturbation": {"scale": 0.0}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.4275705814361572, -0.28680160641670227, 1.3004264831542969, -0.8447794914245605, -0.5604732632637024, -1.2273941040039062, -2.666771650314331], [0.3795754015445709, -0.2459244579076767, 1.0236749649047852, -0.7221200466156006, -0.5555773377418518, -1.0598609447479248, -2.268490791320801], [0.16105282306671143, -0.1693854182958603, 0.6299942135810852, -0.5671059489250183, -0.49123623967170715, -0.7955993413925171, -2.037127733230591], [-0.13077454268932343, -0.10631337761878967, 0.15984541177749634, -0.3332792818546295, -0.2796996235847473, -0.4390633702278137, -1.955733060836792]]}, "candidate_type": "expert", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-cb70b56d6ad32b11c3cf", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 5, "episode_id": 73, "measurement": "physical_simulation", "state_restore_max_error": 1.1920928955078125e-07}, "next_observation_inline": {"features": [-0.038947105407714844, 0.01583242416381836, 0.15855085849761963, 0.7010400295257568, 0.05496634542942047, -0.00432497588917613, 0.7109871506690979, -0.10973550379276276, -0.13787730038166046, 0.16842688620090485, -3.302680730819702, 1.357681155204773, -18.17972755432129, -0.058391571044921875, 0.0064239501953125, 0.14829808473587036, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.06878220289945602, 0.4320071041584015, 0.08591855317354202, -1.8918077945709229, 0.031348321586847305, 2.069019317626953, 0.5794752240180969, 0.01996275596320629, 0.020004896447062492, -0.2408999353647232, -0.34399309754371643, 0.02617279812693596, -0.1260463446378708, 0.10954439640045166, -0.30443689227104187, -0.5224324464797974, 0.1675543189048767, 0.13762237131595612]}, "next_observation_ref": null, "observation_inline": {"features": [-0.074951171875, 0.060333251953125, 0.03390136733651161, 0.7401302456855774, 0.017530197277665138, 0.009920858778059483, 0.6721616387367249, 0.21018795669078827, -0.3669221103191376, 0.6306670308113098, 0.5914819240570068, 1.0889976024627686, -19.768714904785156, -0.058391571044921875, 0.0064239501953125, 0.14829808473587036, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.03997798264026642, 0.5823440551757812, 0.06295178085565567, -2.04608154296875, -0.00403695460408926, 2.4088644981384277, 0.781220555305481, 0.020211199298501015, 0.02025730349123478, -0.8311480283737183, -1.0987474918365479, 0.11357114464044571, 0.20922206342220306, 0.07965876907110214, -1.5388411283493042, -1.327563762664795, 0.19584988057613373, 0.13232089579105377]}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-ebefb59358acf7b46f6a1ae0", "regret": 0.013822436332702637, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5760825276374817}, "progress": 0.5760825276374817, "success": false, "terminal_success": false}, "scene_id": "episode-73", "state_hash": "cf5e15ce3631f6947b4cd8309c5919e2570ba189984e761698b8a6925acf1a30", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 5, "episode_id": 73, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.036004066467285156, -0.04450082778930664, 0.12464949488639832, -0.03909021615982056, 0.03743615001440048, -0.014245834201574326, 0.03882551193237305]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-01", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.05}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.37937599420547485, -0.35001593828201294, 1.0, -0.7603095769882202, -0.48428234457969666, -1.0, -2.666771650314331], [0.3737316429615021, -0.2531575858592987, 0.9907518029212952, -0.7501277923583984, -0.5685387849807739, -1.0, -2.268490791320801], [0.12540203332901, -0.14906081557273865, 0.6578637361526489, -0.5165913701057434, -0.45813727378845215, -0.7414507269859314, -2.037127733230591], [-0.2079887092113495, -0.13103856146335602, 0.20670288801193237, -0.2935568392276764, -0.32270050048828125, -0.4453688859939575, -1.955733060836792]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-cb70b56d6ad32b11c3cf", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 5, "episode_id": 73, "measurement": "physical_simulation", "state_restore_max_error": 1.1920928955078125e-07}, "next_observation_inline": {"features": [-0.04587596654891968, 0.013051509857177734, 0.15997977554798126, 0.7016675472259521, 0.056763146072626114, -0.0031600985676050186, 0.710232675075531, -0.15882383286952972, -0.14977476000785828, 0.19978143274784088, -3.408064842224121, 1.4063540697097778, -18.160505294799805, -0.058391571044921875, 0.0064239501953125, 0.14829808473587036, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.07380279898643494, 0.4135962128639221, 0.0855926126241684, -1.9166374206542969, 0.03327905759215355, 2.0709991455078125, 0.5752660036087036, 0.019962314516305923, 0.02000482752919197, -0.24940970540046692, -0.5130810737609863, 0.014766636304557323, -0.2940267324447632, 0.09516864269971848, -0.3283495604991913, -0.5305541753768921, 0.16764894127845764, 0.13733156025409698]}, "next_observation_ref": null, "observation_inline": {"features": [-0.074951171875, 0.060333251953125, 0.03390136733651161, 0.7401302456855774, 0.017530197277665138, 0.009920858778059483, 0.6721616387367249, 0.21018795669078827, -0.3669221103191376, 0.6306670308113098, 0.5914819240570068, 1.0889976024627686, -19.768714904785156, -0.058391571044921875, 0.0064239501953125, 0.14829808473587036, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.03997798264026642, 0.5823440551757812, 0.06295178085565567, -2.04608154296875, -0.00403695460408926, 2.4088644981384277, 0.781220555305481, 0.020211199298501015, 0.02025730349123478, -0.8311480283737183, -1.0987474918365479, 0.11357114464044571, 0.20922206342220306, 0.07965876907110214, -1.5388411283493042, -1.327563762664795, 0.19584988057613373, 0.13232089579105377]}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-b386dd5eede5de999036e216", "regret": 0.00848841667175293, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5814165472984314}, "progress": 0.5814165472984314, "success": false, "terminal_success": false}, "scene_id": "episode-73", "state_hash": "cf5e15ce3631f6947b4cd8309c5919e2570ba189984e761698b8a6925acf1a30", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 5, "episode_id": 73, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.029075205326080322, -0.047281742095947266, 0.12607841193675995, -0.038462698459625244, 0.039232946932315826, -0.013080957345664501, 0.03807103633880615]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-02", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.15}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.2880159616470337, -0.3471675515174866, 1.0, -1.0, -0.4090467095375061, -1.0, -2.666771650314331], [0.20006708800792694, -0.32610365748405457, 1.0, -0.7092965841293335, -0.35576555132865906, -1.0, -2.268490791320801], [0.21139124035835266, -0.015228480100631714, 0.5139644742012024, -0.25228655338287354, -0.37552934885025024, -0.8928483724594116, -2.037127733230591], [-0.4726043939590454, -0.06301800161600113, -0.017507269978523254, -0.28140515089035034, -0.32837823033332825, -0.5413374900817871, -1.955733060836792]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-cb70b56d6ad32b11c3cf", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 5, "episode_id": 73, "measurement": "physical_simulation", "state_restore_max_error": 1.1920928955078125e-07}, "next_observation_inline": {"features": [-0.06011390686035156, 0.016038205474615097, 0.14781582355499268, 0.700190544128418, 0.04763522744178772, -0.007000320591032505, 0.7123306393623352, -0.35033300518989563, -0.08919098973274231, 0.032887279987335205, -3.0820560455322266, 1.3426806926727295, -18.141773223876953, -0.058391571044921875, 0.0064239501953125, 0.14829808473587036, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.07000843435525894, 0.3874877393245697, 0.08823014050722122, -1.997080683708191, 0.028094744309782982, 2.144064426422119, 0.5795117020606995, 0.01996038481593132, 0.020002534613013268, -0.19537830352783203, -0.6826709508895874, 0.06190044432878494, -1.0522152185440063, 0.10881106555461884, 0.1829354166984558, -0.5368821024894714, 0.1670963168144226, 0.13726353645324707]}, "next_observation_ref": null, "observation_inline": {"features": [-0.074951171875, 0.060333251953125, 0.03390136733651161, 0.7401302456855774, 0.017530197277665138, 0.009920858778059483, 0.6721616387367249, 0.21018795669078827, -0.3669221103191376, 0.6306670308113098, 0.5914819240570068, 1.0889976024627686, -19.768714904785156, -0.058391571044921875, 0.0064239501953125, 0.14829808473587036, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.03997798264026642, 0.5823440551757812, 0.06295178085565567, -2.04608154296875, -0.00403695460408926, 2.4088644981384277, 0.781220555305481, 0.020211199298501015, 0.02025730349123478, -0.8311480283737183, -1.0987474918365479, 0.11357114464044571, 0.20922206342220306, 0.07965876907110214, -1.5388411283493042, -1.327563762664795, 0.19584988057613373, 0.13232089579105377]}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-1afda2c2ade98756949572c8", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5899049639701843}, "progress": 0.5899049639701843, "success": false, "terminal_success": false}, "scene_id": "episode-73", "state_hash": "cf5e15ce3631f6947b4cd8309c5919e2570ba189984e761698b8a6925acf1a30", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 5, "episode_id": 73, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.014837265014648438, -0.0442950464785099, 0.11391445994377136, -0.039939701557159424, 0.03010503016412258, -0.016921179369091988, 0.04016900062561035]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "wrong_direction-03", "horizon": 4, "metadata": {"candidate_type": "wrong_direction", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.35}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.43689125776290894, 0.026019752025604248, 1.0, -1.0, -0.0755758285522461, -0.9666061401367188, -2.666771650314331], [0.41374772787094116, -0.0745278149843216, 1.0, -0.9887229204177856, -0.47685736417770386, -0.744124174118042, -2.268490791320801], [0.5683298110961914, 0.918219804763794, 1.0, -0.6326462626457214, -0.6330283880233765, -0.8649030327796936, -2.037127733230591], [0.6732937693595886, -0.48984774947166443, 0.005937159061431885, -0.38976138830184937, 0.009931504726409912, -0.8618770837783813, -1.955733060836792]]}, "candidate_type": "wrong_direction", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-cb70b56d6ad32b11c3cf", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 5, "episode_id": 73, "measurement": "physical_simulation", "state_restore_max_error": 1.1920928955078125e-07}, "next_observation_inline": {"features": [0.007002828177064657, 0.06985078752040863, 0.17356902360916138, 0.6943880319595337, 0.05317530781030655, -0.020399637520313263, 0.7173433303833008, 0.37680280208587646, -0.24112537503242493, 0.1052187904715538, -2.9088363647460938, 1.3943839073181152, -17.556774139404297, -0.058391571044921875, 0.0064239501953125, 0.14829808473587036, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.015354267321527004, 0.5322234034538269, 0.1183142140507698, -1.6921677589416504, 0.04124751314520836, 1.999173641204834, 0.637027382850647, 0.019953051581978798, 0.020013682544231415, -0.2871910333633423, 1.0030779838562012, -0.042927779257297516, 1.8696835041046143, -0.12569750845432281, -0.7322306632995605, -1.0445594787597656, 0.17702752351760864, 0.12542219460010529]}, "next_observation_ref": null, "observation_inline": {"features": [-0.074951171875, 0.060333251953125, 0.03390136733651161, 0.7401302456855774, 0.017530197277665138, 0.009920858778059483, 0.6721616387367249, 0.21018795669078827, -0.3669221103191376, 0.6306670308113098, 0.5914819240570068, 1.0889976024627686, -19.768714904785156, -0.058391571044921875, 0.0064239501953125, 0.14829808473587036, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.03997798264026642, 0.5823440551757812, 0.06295178085565567, -2.04608154296875, -0.00403695460408926, 2.4088644981384277, 0.781220555305481, 0.020211199298501015, 0.02025730349123478, -0.8311480283737183, -1.0987474918365479, 0.11357114464044571, 0.20922206342220306, 0.07965876907110214, -1.5388411283493042, -1.327563762664795, 0.19584988057613373, 0.13232089579105377]}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-81734acb629deab1c2ddc03b", "regret": 0.07831597328186035, "reward": {"dense_components": {"maniskill_normalized_dense": 0.511588990688324}, "progress": 0.511588990688324, "success": false, "terminal_success": false}, "scene_id": "episode-73", "state_hash": "cf5e15ce3631f6947b4cd8309c5919e2570ba189984e761698b8a6925acf1a30", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 5, "episode_id": 73, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.0819540023803711, 0.00951753556728363, 0.13966765999794006, -0.0457422137260437, 0.03564511239528656, -0.03032049536705017, 0.04518169164657593]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} diff --git a/outputs/hpc/maniskill_parallel_debug_cil/generation_summary.json b/outputs/hpc/maniskill_parallel_debug_cil/generation_summary.json new file mode 100644 index 0000000000000000000000000000000000000000..4307af8fa6f3988a221b17e34964f035a2e14a7e --- /dev/null +++ b/outputs/hpc/maniskill_parallel_debug_cil/generation_summary.json @@ -0,0 +1,13 @@ +{ + "backend": "maniskill", + "branch_execution": "parallel", + "demo_path": "/scratch/knguy52/dovla/maniskill_data/demos/PickCube-v1/rl/trajectory.none.pd_ee_delta_pose.physx_cuda.h5", + "env_id": "PickCube-v1", + "horizon": 4, + "k": 4, + "manifest": "/lustre09/project/6037638/knguy52/vla/outputs/hpc/maniskill_parallel_debug_cil/manifest.json", + "measurement": "exact_state_physics_branch", + "num_groups": 8, + "num_records": 32, + "seed": 0 +} diff --git a/outputs/hpc/maniskill_parallel_debug_cil/group_index.jsonl b/outputs/hpc/maniskill_parallel_debug_cil/group_index.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..fb9d1a718b9c204bf497bfcb21a62db6aafabd94 --- /dev/null +++ b/outputs/hpc/maniskill_parallel_debug_cil/group_index.jsonl @@ -0,0 +1,8 @@ +{"candidate_type_counts": {"expert": 1, "near_miss": 2, "wrong_direction": 1}, "group_id": "ms-0feecef30a00e3157fad", "instruction": "Pick up the cube and move it to the goal position.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-613baec5f643c5f731338d0a", "rec-b5066f4365202bef592e9bf9", "rec-337da8a6cc8d1ae14def7e15", "rec-e78e2f1a483a312722d75613"], "scene_id": "episode-365", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": null, "state_hash": "9221a4c6fd498c1c5602ae1f7b7d94c2efa4272149657b66d16ac1c656326216", "success_count": 2, "task_id": "PickCube-v1"} +{"candidate_type_counts": {"expert": 1, "near_miss": 2, "wrong_direction": 1}, "group_id": "ms-b184af7bae0a47d257b9", "instruction": "Pick up the cube and move it to the goal position.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-12ba869635442cd3d34e5463", "rec-a7d4b4b90ca50c4444512c94", "rec-c3bb7ddb8d0d53439161f75f", "rec-12ec35c96fcef5f291403016"], "scene_id": "episode-504", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": null, "state_hash": "f5de84e62df5e5d266f90404a6095dd3243a227bdaf888fa97c030784c1a3a65", "success_count": 2, "task_id": "PickCube-v1"} +{"candidate_type_counts": {"expert": 1, "near_miss": 2, "wrong_direction": 1}, "group_id": "ms-309198f01df95841053b", "instruction": "Pick up the cube and move it to the goal position.", "max_reward": 0.44070664048194885, "num_records": 4, "record_ids": ["rec-c474deae0434d933441c5f27", "rec-f1111541b0b1575f6244e56b", "rec-96bc3db9d08500ba03f8dec4", "rec-e9f07e7fee064728b39f8717"], "scene_id": "episode-169", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": null, "state_hash": "d1d9d693f1d704b3a58400e41f4fdc88f4ad1a48c880f7ca5271470bb7370748", "success_count": 0, "task_id": "PickCube-v1"} +{"candidate_type_counts": {"expert": 1, "near_miss": 2, "wrong_direction": 1}, "group_id": "ms-d65ed516466738f66378", "instruction": "Pick up the cube and move it to the goal position.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-2cc34bcb883d16a29a7e47be", "rec-1398366dee93047ff0854e57", "rec-f1931b52529f5b071e1f45bb", "rec-926580e42d6a5fe65c5e7b3c"], "scene_id": "episode-777", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": null, "state_hash": "4d9bdd3bd7aaaaf23782a3058161f1fe6f35cebcc2cde70670151ce522a765f1", "success_count": 1, "task_id": "PickCube-v1"} +{"candidate_type_counts": {"expert": 1, "near_miss": 2, "wrong_direction": 1}, "group_id": "ms-ebb616f9b291184677b3", "instruction": "Pick up the cube and move it to the goal position.", "max_reward": 0.545483410358429, "num_records": 4, "record_ids": ["rec-17086bac5797605be2d359c0", "rec-5dedbb915eb886e29f4d99f2", "rec-505064499f1c2f27da449106", "rec-056ef9b1588bbe7e55287ef2"], "scene_id": "episode-303", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": null, "state_hash": "40ee6aa04c8ffa69964c931b3f8f22abe8852c5ab8f173ab3493d54e216adcdd", "success_count": 0, "task_id": "PickCube-v1"} +{"candidate_type_counts": {"expert": 1, "near_miss": 2, "wrong_direction": 1}, "group_id": "ms-582e14e8ff5b73647798", "instruction": "Pick up the cube and move it to the goal position.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-e31df7ec300131b949aa8f00", "rec-e139b479b49c896e1284cad1", "rec-20c3d6c388b583911711fa61", "rec-8104f09b9a61f0350b7a9275"], "scene_id": "episode-927", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": null, "state_hash": "e54fc27620bd985e834a36d9cbfd51e7c19e3a3addaa1ae5cbe0db2850dc54ad", "success_count": 2, "task_id": "PickCube-v1"} +{"candidate_type_counts": {"expert": 1, "near_miss": 2, "wrong_direction": 1}, "group_id": "ms-0dd06f3328be10a87b41", "instruction": "Pick up the cube and move it to the goal position.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-668041ce103c4d8116f725d0", "rec-d326a32d3a6978a8e34f340b", "rec-a71be3fd52f3a031e6e469ab", "rec-9d9218d46673fca9a4bfd160"], "scene_id": "episode-306", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": null, "state_hash": "ac64340647d0b2ffad95bb4aee8a16b9aa5c8b85f204abc4767d191577204dd3", "success_count": 2, "task_id": "PickCube-v1"} +{"candidate_type_counts": {"expert": 1, "near_miss": 2, "wrong_direction": 1}, "group_id": "ms-5fd2e802ba562ff84bac", "instruction": "Pick up the cube and move it to the goal position.", "max_reward": 0.559394359588623, "num_records": 4, "record_ids": ["rec-586c5011deb9f0c161521456", "rec-b07a2088c791808508257b5c", "rec-52a7d62f1a75d9cc97806dd4", "rec-246a7910d27b6a3dafd58211"], "scene_id": "episode-425", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": null, "state_hash": "4a553b30e240eac704cc850024c66c3c21142951edf75a051671eb6ae8020113", "success_count": 0, "task_id": "PickCube-v1"} diff --git a/outputs/hpc/maniskill_parallel_debug_cil/manifest.json b/outputs/hpc/maniskill_parallel_debug_cil/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..2b512eb7cf603e1b666f8468baae29f761c4105e --- /dev/null +++ b/outputs/hpc/maniskill_parallel_debug_cil/manifest.json @@ -0,0 +1,38 @@ +{ + "backend": "maniskill", + "created_at": "2026-06-19T14:09:18.986221+00:00", + "dataset_name": "cil_pickcube-v1", + "format": "dovla_cil", + "group_count": 8, + "group_index_path": "group_index.jsonl", + "index_format": "jsonl", + "k": 4, + "num_groups": 8, + "num_records": 32, + "record_count": 32, + "record_index_path": "record_index.jsonl", + "schema_version": "0.1", + "seed": 0, + "shard_count": 1, + "shard_format": "jsonl", + "shard_size": 32, + "shards": [ + { + "format": "jsonl", + "group_ids": [ + "ms-0feecef30a00e3157fad", + "ms-b184af7bae0a47d257b9", + "ms-309198f01df95841053b", + "ms-d65ed516466738f66378", + "ms-ebb616f9b291184677b3", + "ms-582e14e8ff5b73647798", + "ms-0dd06f3328be10a87b41", + "ms-5fd2e802ba562ff84bac" + ], + "path": "shards/shard_000000.jsonl", + "record_count": 32 + } + ], + "task_count": 1, + "version": "0.1" +} diff --git a/outputs/hpc/maniskill_parallel_debug_cil/metadata.json b/outputs/hpc/maniskill_parallel_debug_cil/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..2b512eb7cf603e1b666f8468baae29f761c4105e --- /dev/null +++ b/outputs/hpc/maniskill_parallel_debug_cil/metadata.json @@ -0,0 +1,38 @@ +{ + "backend": "maniskill", + "created_at": "2026-06-19T14:09:18.986221+00:00", + "dataset_name": "cil_pickcube-v1", + "format": "dovla_cil", + "group_count": 8, + "group_index_path": "group_index.jsonl", + "index_format": "jsonl", + "k": 4, + "num_groups": 8, + "num_records": 32, + "record_count": 32, + "record_index_path": "record_index.jsonl", + "schema_version": "0.1", + "seed": 0, + "shard_count": 1, + "shard_format": "jsonl", + "shard_size": 32, + "shards": [ + { + "format": "jsonl", + "group_ids": [ + "ms-0feecef30a00e3157fad", + "ms-b184af7bae0a47d257b9", + "ms-309198f01df95841053b", + "ms-d65ed516466738f66378", + "ms-ebb616f9b291184677b3", + "ms-582e14e8ff5b73647798", + "ms-0dd06f3328be10a87b41", + "ms-5fd2e802ba562ff84bac" + ], + "path": "shards/shard_000000.jsonl", + "record_count": 32 + } + ], + "task_count": 1, + "version": "0.1" +} diff --git a/outputs/hpc/maniskill_parallel_debug_cil/record_index.jsonl b/outputs/hpc/maniskill_parallel_debug_cil/record_index.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..ad14912090d37fce88a8b3bf29516ce0f758908e --- /dev/null +++ b/outputs/hpc/maniskill_parallel_debug_cil/record_index.jsonl @@ -0,0 +1,32 @@ +{"candidate_type": "expert", "failure_type": "success", "group_id": "ms-0feecef30a00e3157fad", "rank_within_group": 0, "record_id": "rec-613baec5f643c5f731338d0a", "regret": 0.0, "reward_progress": 1.0, "row_index": 0, "shard_path": "shards/shard_000000.jsonl", "state_hash": "9221a4c6fd498c1c5602ae1f7b7d94c2efa4272149657b66d16ac1c656326216", "success": true, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "ms-0feecef30a00e3157fad", "rank_within_group": 1, "record_id": "rec-b5066f4365202bef592e9bf9", "regret": 0.0, "reward_progress": 1.0, "row_index": 1, "shard_path": "shards/shard_000000.jsonl", "state_hash": "9221a4c6fd498c1c5602ae1f7b7d94c2efa4272149657b66d16ac1c656326216", "success": true, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-0feecef30a00e3157fad", "rank_within_group": 2, "record_id": "rec-337da8a6cc8d1ae14def7e15", "regret": 1.413985013961792, "reward_progress": 0.586014986038208, "row_index": 2, "shard_path": "shards/shard_000000.jsonl", "state_hash": "9221a4c6fd498c1c5602ae1f7b7d94c2efa4272149657b66d16ac1c656326216", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "wrong_direction", "failure_type": "partial_success", "group_id": "ms-0feecef30a00e3157fad", "rank_within_group": 3, "record_id": "rec-e78e2f1a483a312722d75613", "regret": 1.4484928250312805, "reward_progress": 0.5515071749687195, "row_index": 3, "shard_path": "shards/shard_000000.jsonl", "state_hash": "9221a4c6fd498c1c5602ae1f7b7d94c2efa4272149657b66d16ac1c656326216", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "ms-b184af7bae0a47d257b9", "rank_within_group": 0, "record_id": "rec-12ba869635442cd3d34e5463", "regret": 0.0, "reward_progress": 1.0, "row_index": 4, "shard_path": "shards/shard_000000.jsonl", "state_hash": "f5de84e62df5e5d266f90404a6095dd3243a227bdaf888fa97c030784c1a3a65", "success": true, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "ms-b184af7bae0a47d257b9", "rank_within_group": 1, "record_id": "rec-a7d4b4b90ca50c4444512c94", "regret": 0.0, "reward_progress": 1.0, "row_index": 5, "shard_path": "shards/shard_000000.jsonl", "state_hash": "f5de84e62df5e5d266f90404a6095dd3243a227bdaf888fa97c030784c1a3a65", "success": true, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-b184af7bae0a47d257b9", "rank_within_group": 2, "record_id": "rec-c3bb7ddb8d0d53439161f75f", "regret": 1.415079951286316, "reward_progress": 0.5849200487136841, "row_index": 6, "shard_path": "shards/shard_000000.jsonl", "state_hash": "f5de84e62df5e5d266f90404a6095dd3243a227bdaf888fa97c030784c1a3a65", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "wrong_direction", "failure_type": "partial_success", "group_id": "ms-b184af7bae0a47d257b9", "rank_within_group": 3, "record_id": "rec-12ec35c96fcef5f291403016", "regret": 1.457210898399353, "reward_progress": 0.542789101600647, "row_index": 7, "shard_path": "shards/shard_000000.jsonl", "state_hash": "f5de84e62df5e5d266f90404a6095dd3243a227bdaf888fa97c030784c1a3a65", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "expert", "failure_type": "partial_success", "group_id": "ms-309198f01df95841053b", "rank_within_group": 0, "record_id": "rec-c474deae0434d933441c5f27", "regret": 0.0, "reward_progress": 0.44070664048194885, "row_index": 8, "shard_path": "shards/shard_000000.jsonl", "state_hash": "d1d9d693f1d704b3a58400e41f4fdc88f4ad1a48c880f7ca5271470bb7370748", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-309198f01df95841053b", "rank_within_group": 1, "record_id": "rec-f1111541b0b1575f6244e56b", "regret": 0.003349006175994873, "reward_progress": 0.437357634305954, "row_index": 9, "shard_path": "shards/shard_000000.jsonl", "state_hash": "d1d9d693f1d704b3a58400e41f4fdc88f4ad1a48c880f7ca5271470bb7370748", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-309198f01df95841053b", "rank_within_group": 2, "record_id": "rec-96bc3db9d08500ba03f8dec4", "regret": 0.00651898980140686, "reward_progress": 0.434187650680542, "row_index": 10, "shard_path": "shards/shard_000000.jsonl", "state_hash": "d1d9d693f1d704b3a58400e41f4fdc88f4ad1a48c880f7ca5271470bb7370748", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "wrong_direction", "failure_type": "partial_success", "group_id": "ms-309198f01df95841053b", "rank_within_group": 3, "record_id": "rec-e9f07e7fee064728b39f8717", "regret": 0.013920247554779053, "reward_progress": 0.4267863929271698, "row_index": 11, "shard_path": "shards/shard_000000.jsonl", "state_hash": "d1d9d693f1d704b3a58400e41f4fdc88f4ad1a48c880f7ca5271470bb7370748", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "ms-d65ed516466738f66378", "rank_within_group": 0, "record_id": "rec-2cc34bcb883d16a29a7e47be", "regret": 0.0, "reward_progress": 1.0, "row_index": 12, "shard_path": "shards/shard_000000.jsonl", "state_hash": "4d9bdd3bd7aaaaf23782a3058161f1fe6f35cebcc2cde70670151ce522a765f1", "success": true, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-d65ed516466738f66378", "rank_within_group": 1, "record_id": "rec-1398366dee93047ff0854e57", "regret": 1.3848078846931458, "reward_progress": 0.6151921153068542, "row_index": 13, "shard_path": "shards/shard_000000.jsonl", "state_hash": "4d9bdd3bd7aaaaf23782a3058161f1fe6f35cebcc2cde70670151ce522a765f1", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-d65ed516466738f66378", "rank_within_group": 2, "record_id": "rec-f1931b52529f5b071e1f45bb", "regret": 1.4176644682884216, "reward_progress": 0.5823355317115784, "row_index": 14, "shard_path": "shards/shard_000000.jsonl", "state_hash": "4d9bdd3bd7aaaaf23782a3058161f1fe6f35cebcc2cde70670151ce522a765f1", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "wrong_direction", "failure_type": "partial_success", "group_id": "ms-d65ed516466738f66378", "rank_within_group": 3, "record_id": "rec-926580e42d6a5fe65c5e7b3c", "regret": 1.4729971289634705, "reward_progress": 0.5270028710365295, "row_index": 15, "shard_path": "shards/shard_000000.jsonl", "state_hash": "4d9bdd3bd7aaaaf23782a3058161f1fe6f35cebcc2cde70670151ce522a765f1", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "expert", "failure_type": "partial_success", "group_id": "ms-ebb616f9b291184677b3", "rank_within_group": 0, "record_id": "rec-17086bac5797605be2d359c0", "regret": 0.0, "reward_progress": 0.545483410358429, "row_index": 16, "shard_path": "shards/shard_000000.jsonl", "state_hash": "40ee6aa04c8ffa69964c931b3f8f22abe8852c5ab8f173ab3493d54e216adcdd", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-ebb616f9b291184677b3", "rank_within_group": 1, "record_id": "rec-5dedbb915eb886e29f4d99f2", "regret": 0.0031185150146484375, "reward_progress": 0.5423648953437805, "row_index": 17, "shard_path": "shards/shard_000000.jsonl", "state_hash": "40ee6aa04c8ffa69964c931b3f8f22abe8852c5ab8f173ab3493d54e216adcdd", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-ebb616f9b291184677b3", "rank_within_group": 2, "record_id": "rec-505064499f1c2f27da449106", "regret": 0.3968952000141144, "reward_progress": 0.14858821034431458, "row_index": 18, "shard_path": "shards/shard_000000.jsonl", "state_hash": "40ee6aa04c8ffa69964c931b3f8f22abe8852c5ab8f173ab3493d54e216adcdd", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "wrong_direction", "failure_type": "partial_success", "group_id": "ms-ebb616f9b291184677b3", "rank_within_group": 3, "record_id": "rec-056ef9b1588bbe7e55287ef2", "regret": 0.4014723598957062, "reward_progress": 0.14401105046272278, "row_index": 19, "shard_path": "shards/shard_000000.jsonl", "state_hash": "40ee6aa04c8ffa69964c931b3f8f22abe8852c5ab8f173ab3493d54e216adcdd", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "ms-582e14e8ff5b73647798", "rank_within_group": 1, "record_id": "rec-e31df7ec300131b949aa8f00", "regret": 0.0, "reward_progress": 1.0, "row_index": 20, "shard_path": "shards/shard_000000.jsonl", "state_hash": "e54fc27620bd985e834a36d9cbfd51e7c19e3a3addaa1ae5cbe0db2850dc54ad", "success": true, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "ms-582e14e8ff5b73647798", "rank_within_group": 0, "record_id": "rec-e139b479b49c896e1284cad1", "regret": 0.0, "reward_progress": 1.0, "row_index": 21, "shard_path": "shards/shard_000000.jsonl", "state_hash": "e54fc27620bd985e834a36d9cbfd51e7c19e3a3addaa1ae5cbe0db2850dc54ad", "success": true, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-582e14e8ff5b73647798", "rank_within_group": 2, "record_id": "rec-20c3d6c388b583911711fa61", "regret": 1.4328718185424805, "reward_progress": 0.5671281814575195, "row_index": 22, "shard_path": "shards/shard_000000.jsonl", "state_hash": "e54fc27620bd985e834a36d9cbfd51e7c19e3a3addaa1ae5cbe0db2850dc54ad", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "wrong_direction", "failure_type": "partial_success", "group_id": "ms-582e14e8ff5b73647798", "rank_within_group": 3, "record_id": "rec-8104f09b9a61f0350b7a9275", "regret": 1.4719169735908508, "reward_progress": 0.5280830264091492, "row_index": 23, "shard_path": "shards/shard_000000.jsonl", "state_hash": "e54fc27620bd985e834a36d9cbfd51e7c19e3a3addaa1ae5cbe0db2850dc54ad", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "ms-0dd06f3328be10a87b41", "rank_within_group": 0, "record_id": "rec-668041ce103c4d8116f725d0", "regret": 0.0, "reward_progress": 1.0, "row_index": 24, "shard_path": "shards/shard_000000.jsonl", "state_hash": "ac64340647d0b2ffad95bb4aee8a16b9aa5c8b85f204abc4767d191577204dd3", "success": true, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "ms-0dd06f3328be10a87b41", "rank_within_group": 1, "record_id": "rec-d326a32d3a6978a8e34f340b", "regret": 0.0, "reward_progress": 1.0, "row_index": 25, "shard_path": "shards/shard_000000.jsonl", "state_hash": "ac64340647d0b2ffad95bb4aee8a16b9aa5c8b85f204abc4767d191577204dd3", "success": true, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-0dd06f3328be10a87b41", "rank_within_group": 2, "record_id": "rec-a71be3fd52f3a031e6e469ab", "regret": 1.4249740242958069, "reward_progress": 0.5750259757041931, "row_index": 26, "shard_path": "shards/shard_000000.jsonl", "state_hash": "ac64340647d0b2ffad95bb4aee8a16b9aa5c8b85f204abc4767d191577204dd3", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "wrong_direction", "failure_type": "partial_success", "group_id": "ms-0dd06f3328be10a87b41", "rank_within_group": 3, "record_id": "rec-9d9218d46673fca9a4bfd160", "regret": 1.4484829902648926, "reward_progress": 0.5515170097351074, "row_index": 27, "shard_path": "shards/shard_000000.jsonl", "state_hash": "ac64340647d0b2ffad95bb4aee8a16b9aa5c8b85f204abc4767d191577204dd3", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "expert", "failure_type": "partial_success", "group_id": "ms-5fd2e802ba562ff84bac", "rank_within_group": 0, "record_id": "rec-586c5011deb9f0c161521456", "regret": 0.0, "reward_progress": 0.559394359588623, "row_index": 28, "shard_path": "shards/shard_000000.jsonl", "state_hash": "4a553b30e240eac704cc850024c66c3c21142951edf75a051671eb6ae8020113", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-5fd2e802ba562ff84bac", "rank_within_group": 1, "record_id": "rec-b07a2088c791808508257b5c", "regret": 0.0011009573936462402, "reward_progress": 0.5582934021949768, "row_index": 29, "shard_path": "shards/shard_000000.jsonl", "state_hash": "4a553b30e240eac704cc850024c66c3c21142951edf75a051671eb6ae8020113", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "near_miss", "failure_type": "partial_success", "group_id": "ms-5fd2e802ba562ff84bac", "rank_within_group": 3, "record_id": "rec-52a7d62f1a75d9cc97806dd4", "regret": 0.008802294731140137, "reward_progress": 0.5505920648574829, "row_index": 30, "shard_path": "shards/shard_000000.jsonl", "state_hash": "4a553b30e240eac704cc850024c66c3c21142951edf75a051671eb6ae8020113", "success": false, "task_id": "PickCube-v1"} +{"candidate_type": "wrong_direction", "failure_type": "partial_success", "group_id": "ms-5fd2e802ba562ff84bac", "rank_within_group": 2, "record_id": "rec-246a7910d27b6a3dafd58211", "regret": 0.0029760003089904785, "reward_progress": 0.5564183592796326, "row_index": 31, "shard_path": "shards/shard_000000.jsonl", "state_hash": "4a553b30e240eac704cc850024c66c3c21142951edf75a051671eb6ae8020113", "success": false, "task_id": "PickCube-v1"} diff --git a/outputs/hpc/maniskill_parallel_debug_cil/shards/shard_000000.jsonl b/outputs/hpc/maniskill_parallel_debug_cil/shards/shard_000000.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..98be9bf507f4fc017df68b01f68ea39a44a026a4 --- /dev/null +++ b/outputs/hpc/maniskill_parallel_debug_cil/shards/shard_000000.jsonl @@ -0,0 +1,32 @@ +{"action_chunk": {"action_id": "expert-00", "horizon": 4, "metadata": {"candidate_type": "expert", "parent_action_id": null, "perturbation": {"scale": 0.0}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.0011609308421611786, 0.014159700833261013, 0.003821399062871933, 0.01830124482512474, -0.028823481872677803, -0.061239033937454224, -1.9374459981918335], [0.0011417381465435028, 0.014252281747758389, 0.0037882663309574127, 0.018256116658449173, -0.02795773185789585, -0.06001278758049011, -1.939263939857483], [0.0011187605559825897, 0.014240077696740627, 0.0038023777306079865, 0.01820693537592888, -0.02710636891424656, -0.058771900832653046, -1.9410724639892578], [0.0011002682149410248, 0.014267436228692532, 0.0038262493908405304, 0.018095985054969788, -0.026282967999577522, -0.057614415884017944, -1.9428471326828003]]}, "candidate_type": "expert", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "success"}, "group_id": "ms-0feecef30a00e3157fad", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 37, "episode_id": 365, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [0.0028023719787597656, 0.03042888641357422, 0.2029666155576706, 0.8369505405426025, 0.08863591402769089, 0.06256119906902313, 0.5364172458648682, 0.0019189954036846757, -0.017528872936964035, 0.04466656222939491, -1.6750715970993042, -0.5269386768341064, -2.744894027709961, 0.006749153137207031, 0.032901763916015625, 0.21034762263298035, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149988174438477, 0.0, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.054786376655101776, 0.5077264308929443, 0.08639233559370041, -1.6226661205291748, 0.06732281297445297, 1.8420358896255493, 0.534874439239502, 0.026080507785081863, 0.026139095425605774, 0.007992210797965527, 0.017056575044989586, -0.0005646134377457201, 0.02647492103278637, -0.019018150866031647, -0.029603922739624977, -0.011897936463356018, 0.046625956892967224, -0.010596154257655144]}, "next_observation_ref": null, "observation_inline": {"features": [0.0026578903198242188, 0.031007766723632812, 0.20328156650066376, 0.8393264412879944, 0.08823442459106445, 0.05927715450525284, 0.5331339836120605, 0.025655187666416168, -0.003088700817897916, 0.05606396496295929, 3.8393421173095703, 2.098541498184204, -3.5447115898132324, 0.006749153137207031, 0.032901763916015625, 0.21034762263298035, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149988174438477, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.05662459880113602, 0.5033009052276611, 0.08662069588899612, -1.630037546157837, 0.07323185354471207, 1.8507616519927979, 0.5359422564506531, 0.02603348344564438, 0.02609173208475113, 0.007983787916600704, 0.019079843536019325, -0.00026307269581593573, 0.03032848611474037, -0.0259800236672163, -0.041387300938367844, -0.01269415020942688, 0.03629815950989723, -0.03057955391705036]}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-613baec5f643c5f731338d0a", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "episode-365", "state_hash": "9221a4c6fd498c1c5602ae1f7b7d94c2efa4272149657b66d16ac1c656326216", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 37, "episode_id": 365, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.00014448165893554688, -0.0005788803100585938, -0.00031495094299316406, -0.0023759007453918457, 0.0004014894366264343, 0.003284044563770294, 0.003283262252807617]}, "relation_after": {"success": true}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-01", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.05}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.007447442039847374, 0.007554457522928715, 0.03584253042936325, 0.02354625053703785, -0.05560695007443428, -0.04315928369760513, -1.9374459981918335], [0.06634174287319183, 0.061606332659721375, -0.03139849379658699, -0.04501495882868767, -0.059121452271938324, -0.05794648826122284, -1.939263939857483], [-0.11513277888298035, 0.0033004945144057274, -0.05849317088723183, -0.01840643212199211, -0.054319318383932114, -0.0745869129896164, -1.9410724639892578], [0.02168179489672184, 0.06639310717582703, -0.0026004835963249207, 0.08641915768384933, -0.0595427006483078, -0.04003891348838806, -1.9428471326828003]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "success"}, "group_id": "ms-0feecef30a00e3157fad", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 37, "episode_id": 365, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [0.001879966352134943, 0.03241539001464844, 0.2004038244485855, 0.8375406265258789, 0.09010916948318481, 0.06402697414159775, 0.5350761413574219, 0.016539519652724266, 0.012312745675444603, 0.03740549832582474, -1.730771541595459, -0.49494290351867676, -2.750333070755005, 0.006749153137207031, 0.032901763916015625, 0.21034762263298035, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149988174438477, 0.0, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.053118765354156494, 0.510683000087738, 0.08743813633918762, -1.6248070001602173, 0.06894173473119736, 1.843442440032959, 0.5395668745040894, 0.026080796495079994, 0.02613859437406063, 0.0615832582116127, 0.08572394400835037, 0.0032515183556824923, 0.11873724311590195, -0.047855280339717865, -0.06569144129753113, 0.0780097022652626, 0.04618503898382187, -0.010135756805539131]}, "next_observation_ref": null, "observation_inline": {"features": [0.0026578903198242188, 0.031007766723632812, 0.20328156650066376, 0.8393264412879944, 0.08823442459106445, 0.05927715450525284, 0.5331339836120605, 0.025655187666416168, -0.003088700817897916, 0.05606396496295929, 3.8393421173095703, 2.098541498184204, -3.5447115898132324, 0.006749153137207031, 0.032901763916015625, 0.21034762263298035, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149988174438477, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.05662459880113602, 0.5033009052276611, 0.08662069588899612, -1.630037546157837, 0.07323185354471207, 1.8507616519927979, 0.5359422564506531, 0.02603348344564438, 0.02609173208475113, 0.007983787916600704, 0.019079843536019325, -0.00026307269581593573, 0.03032848611474037, -0.0259800236672163, -0.041387300938367844, -0.01269415020942688, 0.03629815950989723, -0.03057955391705036]}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-b5066f4365202bef592e9bf9", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "episode-365", "state_hash": "9221a4c6fd498c1c5602ae1f7b7d94c2efa4272149657b66d16ac1c656326216", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 37, "episode_id": 365, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.0007779239676892757, 0.001407623291015625, -0.002877742052078247, -0.0017858147621154785, 0.0018747448921203613, 0.00474981963634491, 0.0019421577453613281]}, "relation_after": {"success": true}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-02", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.15}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.136681467294693, 0.028261546045541763, -0.10770349204540253, -0.11995755136013031, -0.0974823534488678, -0.028209764510393143, -1.9374459981918335], [-0.1503009796142578, -0.017124053090810776, -0.02009548433125019, 0.09938295185565948, 0.004241136834025383, -0.006706882268190384, -1.939263939857483], [-0.09695553779602051, -0.005201966501772404, 0.12139870226383209, 0.24222160875797272, -0.21596620976924896, 0.16831666231155396, -1.9410724639892578], [0.2029815912246704, 0.1314641386270523, 0.04349459335207939, -0.028992436826229095, 0.1924201399087906, 0.23642432689666748, -1.9428471326828003]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-0feecef30a00e3157fad", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 37, "episode_id": 365, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [0.005636692047119141, 0.03172805905342102, 0.20340467989444733, 0.844245195388794, 0.08770959824323654, 0.0632970929145813, 0.5249289870262146, 0.13506637513637543, 0.05536837503314018, 0.07900788635015488, -1.6703479290008545, -0.6413205862045288, -2.919113874435425, 0.006749153137207031, 0.032901763916015625, 0.21034762263298035, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149988174438477, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.051004692912101746, 0.5152522325515747, 0.08357080072164536, -1.6094692945480347, 0.07115744799375534, 1.8378876447677612, 0.5620816349983215, 0.026078248396515846, 0.02613644301891327, 0.0825539380311966, 0.27729523181915283, 0.02414271980524063, 0.5208407640457153, 0.0547991618514061, -0.067236989736557, 0.22025592625141144, 0.04620150104165077, -0.010667814873158932]}, "next_observation_ref": null, "observation_inline": {"features": [0.0026578903198242188, 0.031007766723632812, 0.20328156650066376, 0.8393264412879944, 0.08823442459106445, 0.05927715450525284, 0.5331339836120605, 0.025655187666416168, -0.003088700817897916, 0.05606396496295929, 3.8393421173095703, 2.098541498184204, -3.5447115898132324, 0.006749153137207031, 0.032901763916015625, 0.21034762263298035, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149988174438477, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.05662459880113602, 0.5033009052276611, 0.08662069588899612, -1.630037546157837, 0.07323185354471207, 1.8507616519927979, 0.5359422564506531, 0.02603348344564438, 0.02609173208475113, 0.007983787916600704, 0.019079843536019325, -0.00026307269581593573, 0.03032848611474037, -0.0259800236672163, -0.041387300938367844, -0.01269415020942688, 0.03629815950989723, -0.03057955391705036]}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-337da8a6cc8d1ae14def7e15", "regret": 1.413985013961792, "reward": {"dense_components": {"maniskill_normalized_dense": 0.586014986038208}, "progress": 0.586014986038208, "success": false, "terminal_success": false}, "scene_id": "episode-365", "state_hash": "9221a4c6fd498c1c5602ae1f7b7d94c2efa4272149657b66d16ac1c656326216", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 37, "episode_id": 365, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.002978801727294922, 0.000720292329788208, 0.00012311339378356934, 0.0049187541007995605, -0.0005248263478279114, 0.004019938409328461, -0.008204996585845947]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "wrong_direction-03", "horizon": 4, "metadata": {"candidate_type": "wrong_direction", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.35}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.6317331194877625, 0.47444602847099304, 0.1289045512676239, -0.404610276222229, -0.0303824283182621, 0.16852718591690063, -1.9374459981918335], [-0.4497847855091095, 0.1525449901819229, 0.15424054861068726, 0.2618710696697235, -0.4423990249633789, -0.29160869121551514, -1.939263939857483], [-0.15163357555866241, -0.395190566778183, 0.6125811338424683, -0.1553618162870407, 0.08803300559520721, -0.14927229285240173, -1.9410724639892578], [0.5553157329559326, 0.47639378905296326, 0.22549965977668762, -0.7531324625015259, -0.008072827011346817, 0.1816757470369339, -1.9428471326828003]]}, "candidate_type": "wrong_direction", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-0feecef30a00e3157fad", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 37, "episode_id": 365, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [0.020558537915349007, 0.05218730494379997, 0.24448053538799286, 0.8369694948196411, 0.11136729270219803, 0.05673524737358093, 0.5327855944633484, 0.3449332118034363, 0.21814824640750885, 0.23801130056381226, -1.3308923244476318, -0.21457399427890778, -2.7983689308166504, 0.006749153137207031, 0.032901763916015625, 0.21034762263298035, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149988174438477, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.049470268189907074, 0.5400920510292053, 0.10573828965425491, -1.464755654335022, 0.1053779199719429, 1.7048676013946533, 0.5595735311508179, 0.026084432378411293, 0.026141280308365822, 0.09732060879468918, 0.9817498922348022, 0.18860842287540436, 2.014228582382202, 0.38098257780075073, -0.8200647830963135, 0.2903295159339905, 0.04504489526152611, -0.010885362513363361]}, "next_observation_ref": null, "observation_inline": {"features": [0.0026578903198242188, 0.031007766723632812, 0.20328156650066376, 0.8393264412879944, 0.08823442459106445, 0.05927715450525284, 0.5331339836120605, 0.025655187666416168, -0.003088700817897916, 0.05606396496295929, 3.8393421173095703, 2.098541498184204, -3.5447115898132324, 0.006749153137207031, 0.032901763916015625, 0.21034762263298035, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149988174438477, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.05662459880113602, 0.5033009052276611, 0.08662069588899612, -1.630037546157837, 0.07323185354471207, 1.8507616519927979, 0.5359422564506531, 0.02603348344564438, 0.02609173208475113, 0.007983787916600704, 0.019079843536019325, -0.00026307269581593573, 0.03032848611474037, -0.0259800236672163, -0.041387300938367844, -0.01269415020942688, 0.03629815950989723, -0.03057955391705036]}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-e78e2f1a483a312722d75613", "regret": 1.4484928250312805, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5515071749687195}, "progress": 0.5515071749687195, "success": false, "terminal_success": false}, "scene_id": "episode-365", "state_hash": "9221a4c6fd498c1c5602ae1f7b7d94c2efa4272149657b66d16ac1c656326216", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 37, "episode_id": 365, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.017900647595524788, 0.02117953822016716, 0.0411989688873291, -0.0023569464683532715, 0.023132868111133575, -0.0025419071316719055, -0.0003483891487121582]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "expert-00", "horizon": 4, "metadata": {"candidate_type": "expert", "parent_action_id": null, "perturbation": {"scale": 0.0}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.0019729547202587128, 0.006552449427545071, 0.003895331174135208, 0.015469240956008434, -0.03576033562421799, -0.1318948119878769, -2.7456161975860596], [0.0018827877938747406, 0.006538993678987026, 0.0038836337625980377, 0.015564973466098309, -0.034915126860141754, -0.13006041944026947, -2.746753215789795], [0.001856531947851181, 0.006592399440705776, 0.00385289266705513, 0.015602151863276958, -0.03414607048034668, -0.12837456166744232, -2.7478315830230713], [0.0019051097333431244, 0.0066122328862547874, 0.0038656331598758698, 0.015623952262103558, -0.033381253480911255, -0.12676943838596344, -2.7489097118377686]]}, "candidate_type": "expert", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "success"}, "group_id": "ms-b184af7bae0a47d257b9", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 45, "episode_id": 504, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.017992019653320312, -0.005022525787353516, 0.07751163095235825, 0.9725368022918701, 0.05980180576443672, 0.07543393224477768, 0.2119094878435135, -0.02548542059957981, -0.023150011897087097, 0.05129024386405945, -5.508452415466309, -1.384171724319458, -2.8965442180633545, -0.01697540283203125, -0.0025968551635742188, 0.08844153583049774, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.09427270293235779, 0.6508885622024536, 0.08447042852640152, -1.7633545398712158, -0.022492296993732452, 2.104349136352539, 0.3402327001094818, 0.018354076892137527, 0.018395334482192993, 0.009421268478035927, 0.013478107750415802, 0.0001477902987971902, 0.026786217465996742, -0.027580413967370987, -0.027298636734485626, -0.050380535423755646, 0.030290069058537483, -0.014232005923986435]}, "next_observation_ref": null, "observation_inline": {"features": [-0.01815032958984375, -0.004826068878173828, 0.07741913944482803, 0.9752032160758972, 0.05865827947854996, 0.0712374821305275, 0.20115450024604797, -0.028433270752429962, -0.023463280871510506, 0.051879022270441055, -6.120720386505127, -1.4035989046096802, -3.667757272720337, -0.01697540283203125, -0.0025968551635742188, 0.08844153583049774, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.09645640850067139, 0.647419810295105, 0.08472197502851486, -1.7707911729812622, -0.012862615287303925, 2.1148805618286133, 0.35015642642974854, 0.01838904805481434, 0.01843014545738697, 0.00920176599174738, 0.014892869628965855, 0.00034517605672590435, 0.029686719179153442, -0.02877447009086609, -0.030690696090459824, -0.05547851324081421, 0.03235930949449539, -0.012491915374994278]}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-12ba869635442cd3d34e5463", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "episode-504", "state_hash": "f5de84e62df5e5d266f90404a6095dd3243a227bdaf888fa97c030784c1a3a65", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 45, "episode_id": 504, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.0001583099365234375, -0.0001964569091796875, 9.24915075302124e-05, -0.0026664137840270996, 0.0011435262858867645, 0.004196450114250183, 0.010754987597465515]}, "relation_after": {"success": true}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-01", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.05}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.05217103287577629, -0.02434290200471878, 0.0949959009885788, -0.050552304834127426, -0.06883673369884491, -0.08514231443405151, -2.7456161975860596], [0.0043355184607207775, 0.10665862262248993, 0.013309593312442303, -0.01609472930431366, -0.05379330366849899, -0.18461772799491882, -2.746753215789795], [-0.062027473002672195, 0.03811297565698624, 0.03291118144989014, 0.08033008873462677, -0.07187636196613312, -0.043919190764427185, -2.7478315830230713], [-0.01246427558362484, 0.08533264696598053, -0.017773659899830818, -0.021150212734937668, -0.020891984924674034, -0.07519678771495819, -2.7489097118377686]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "success"}, "group_id": "ms-b184af7bae0a47d257b9", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 45, "episode_id": 504, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.018813174217939377, 0.00040531158447265625, 0.08205275982618332, 0.9731667041778564, 0.06134125962853432, 0.07614636421203613, 0.208291694521904, -0.03292378410696983, 0.0318477526307106, 0.03883993253111839, -5.498338222503662, -1.3502604961395264, -2.903017282485962, -0.01697540283203125, -0.0025968551635742188, 0.08844153583049774, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.09021379053592682, 0.6414092779159546, 0.08821798861026764, -1.7664433717727661, -0.016617778688669205, 2.0959818363189697, 0.3513854146003723, 0.018353477120399475, 0.018394919112324715, 0.054665837436914444, 0.011526396498084068, 0.03513424098491669, -0.020384641364216805, 0.009785544127225876, 0.030838795006275177, 0.0191862303763628, 0.030368490144610405, -0.014352759346365929]}, "next_observation_ref": null, "observation_inline": {"features": [-0.01815032958984375, -0.004826068878173828, 0.07741913944482803, 0.9752032160758972, 0.05865827947854996, 0.0712374821305275, 0.20115450024604797, -0.028433270752429962, -0.023463280871510506, 0.051879022270441055, -6.120720386505127, -1.4035989046096802, -3.667757272720337, -0.01697540283203125, -0.0025968551635742188, 0.08844153583049774, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.09645640850067139, 0.647419810295105, 0.08472197502851486, -1.7707911729812622, -0.012862615287303925, 2.1148805618286133, 0.35015642642974854, 0.01838904805481434, 0.01843014545738697, 0.00920176599174738, 0.014892869628965855, 0.00034517605672590435, 0.029686719179153442, -0.02877447009086609, -0.030690696090459824, -0.05547851324081421, 0.03235930949449539, -0.012491915374994278]}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-a7d4b4b90ca50c4444512c94", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "episode-504", "state_hash": "f5de84e62df5e5d266f90404a6095dd3243a227bdaf888fa97c030784c1a3a65", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 45, "episode_id": 504, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.0006628446280956268, 0.005231380462646484, 0.004633620381355286, -0.0020365118980407715, 0.0026829801499843597, 0.0049088820815086365, 0.007137194275856018]}, "relation_after": {"success": true}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-02", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.15}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.026124391704797745, -0.08127687126398087, -0.1972876340150833, -0.19475878775119781, 0.0396420955657959, 0.016562148928642273, -2.7456161975860596], [-0.022761400789022446, -0.15461574494838715, 0.1348399519920349, -0.17649410665035248, -0.14187534153461456, -0.03690773993730545, -2.746753215789795], [-0.33566462993621826, 0.0645478367805481, -0.08339323103427887, 0.031994108110666275, -0.04550129920244217, -0.09805740416049957, -2.7478315830230713], [0.1060308963060379, -0.10714323073625565, 0.2170129269361496, 0.12453801929950714, 0.0931786447763443, 0.04796016216278076, -2.7489097118377686]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-b184af7bae0a47d257b9", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 45, "episode_id": 504, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.029978275299072266, -0.015081964433193207, 0.07637956738471985, 0.9735735058784485, 0.06673447787761688, 0.07567711919546127, 0.20487543940544128, 0.05154122784733772, -0.09337717294692993, 0.1923571228981018, -5.614452838897705, -1.383723497390747, -2.9954442977905273, -0.01697540283203125, -0.0025968551635742188, 0.08844153583049774, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11514321714639664, 0.6256210803985596, 0.0837511420249939, -1.8124353885650635, -0.008629261516034603, 2.1236681938171387, 0.324402779340744, 0.01835264451801777, 0.018394751474261284, -0.03023725189268589, -0.12321511656045914, -0.056242942810058594, 0.2298460453748703, -0.04264397919178009, -0.2501685917377472, -0.014686591923236847, 0.030901003628969193, -0.014594197273254395]}, "next_observation_ref": null, "observation_inline": {"features": [-0.01815032958984375, -0.004826068878173828, 0.07741913944482803, 0.9752032160758972, 0.05865827947854996, 0.0712374821305275, 0.20115450024604797, -0.028433270752429962, -0.023463280871510506, 0.051879022270441055, -6.120720386505127, -1.4035989046096802, -3.667757272720337, -0.01697540283203125, -0.0025968551635742188, 0.08844153583049774, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.09645640850067139, 0.647419810295105, 0.08472197502851486, -1.7707911729812622, -0.012862615287303925, 2.1148805618286133, 0.35015642642974854, 0.01838904805481434, 0.01843014545738697, 0.00920176599174738, 0.014892869628965855, 0.00034517605672590435, 0.029686719179153442, -0.02877447009086609, -0.030690696090459824, -0.05547851324081421, 0.03235930949449539, -0.012491915374994278]}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-c3bb7ddb8d0d53439161f75f", "regret": 1.415079951286316, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5849200487136841}, "progress": 0.5849200487136841, "success": false, "terminal_success": false}, "scene_id": "episode-504", "state_hash": "f5de84e62df5e5d266f90404a6095dd3243a227bdaf888fa97c030784c1a3a65", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 45, "episode_id": 504, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.011827945709228516, -0.010255895555019379, -0.0010395720601081848, -0.0016297101974487305, 0.008076198399066925, 0.004439637064933777, 0.0037209391593933105]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "wrong_direction-03", "horizon": 4, "metadata": {"candidate_type": "wrong_direction", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.35}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.2776288092136383, 0.30197998881340027, 0.03035309538245201, -0.48390159010887146, -0.08302612602710724, -0.40122491121292114, -2.7456161975860596], [-0.4960768222808838, 0.09699746966362, -0.19510868191719055, -0.3448665738105774, -0.3999654948711395, -0.036114439368247986, -2.746753215789795], [0.12739171087741852, 0.46945250034332275, -0.0010172412730753422, 0.38024604320526123, 0.4566466212272644, 0.27418339252471924, -2.7478315830230713], [-0.8259512782096863, 0.4366515576839447, 0.12273263931274414, 0.16394393146038055, 0.09654834866523743, 0.007195562124252319, -2.7489097118377686]]}, "candidate_type": "wrong_direction", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-b184af7bae0a47d257b9", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 45, "episode_id": 504, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.05632277578115463, 0.03333418071269989, 0.07281721383333206, 0.9756701588630676, 0.06479883939027786, 0.07003917545080185, 0.19739088416099548, -0.6269756555557251, 0.2739018201828003, 0.12851302325725555, -5.658349514007568, -1.2252346277236938, -2.883060932159424, -0.01697540283203125, -0.0025968551635742188, 0.08844153583049774, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.06577219069004059, 0.5645673871040344, 0.11149167269468307, -1.9385275840759277, 0.00894984882324934, 2.2036068439483643, 0.4052395522594452, 0.01834847964346409, 0.018393797799944878, 0.31531986594200134, -1.522437572479248, 0.20047686994075775, -2.4980664253234863, 0.08311988413333893, 1.0136533975601196, 0.4002542793750763, 0.03282565250992775, -0.01592278853058815]}, "next_observation_ref": null, "observation_inline": {"features": [-0.01815032958984375, -0.004826068878173828, 0.07741913944482803, 0.9752032160758972, 0.05865827947854996, 0.0712374821305275, 0.20115450024604797, -0.028433270752429962, -0.023463280871510506, 0.051879022270441055, -6.120720386505127, -1.4035989046096802, -3.667757272720337, -0.01697540283203125, -0.0025968551635742188, 0.08844153583049774, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.09645640850067139, 0.647419810295105, 0.08472197502851486, -1.7707911729812622, -0.012862615287303925, 2.1148805618286133, 0.35015642642974854, 0.01838904805481434, 0.01843014545738697, 0.00920176599174738, 0.014892869628965855, 0.00034517605672590435, 0.029686719179153442, -0.02877447009086609, -0.030690696090459824, -0.05547851324081421, 0.03235930949449539, -0.012491915374994278]}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-12ec35c96fcef5f291403016", "regret": 1.457210898399353, "reward": {"dense_components": {"maniskill_normalized_dense": 0.542789101600647}, "progress": 0.542789101600647, "success": false, "terminal_success": false}, "scene_id": "episode-504", "state_hash": "f5de84e62df5e5d266f90404a6095dd3243a227bdaf888fa97c030784c1a3a65", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 45, "episode_id": 504, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.03817244619131088, 0.03816024959087372, -0.004601925611495972, 0.00046694278717041016, 0.006140559911727905, -0.001198306679725647, -0.0037636160850524902]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "expert-00", "horizon": 4, "metadata": {"candidate_type": "expert", "parent_action_id": null, "perturbation": {"scale": 0.0}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.17378206551074982, 0.40728017687797546, -0.7562646865844727, -0.18428924679756165, -0.9198794960975647, -1.2649991512298584, -1.8287646770477295], [0.10253308713436127, 0.440475195646286, 0.14347991347312927, -0.38255882263183594, -0.6004974246025085, -1.3592766523361206, -3.096938133239746], [0.5486119985580444, 0.34104061126708984, 1.391121506690979, -0.7648138999938965, -0.6750785112380981, -1.4938395023345947, -3.2576839923858643], [0.6058839559555054, 0.296966016292572, 1.575860619544983, -0.9118196368217468, -0.8764927983283997, -1.3790135383605957, -2.540210723876953]]}, "candidate_type": "expert", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-309198f01df95841053b", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 3, "episode_id": 169, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.055173397064208984, 0.04420900344848633, 0.09117106348276138, -0.0854838639497757, 0.03489123284816742, -0.02155350334942341, 0.9954951405525208, 0.3856591582298279, 0.21613353490829468, 0.8213005065917969, -2.2456018924713135, -0.21162475645542145, -0.40353772044181824, -0.046489715576171875, 0.03903961181640625, 0.2920035123825073, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.002161935670301318, 0.5172218084335327, 0.07157684862613678, -1.982057809829712, -0.0015482812887057662, 2.2715580463409424, 0.6822638511657715, 0.018286488950252533, 0.01832621917128563, -0.02890041284263134, -0.6588943004608154, 0.3526047170162201, 1.5174565315246582, 0.20190952718257904, -2.1461739540100098, -0.41165852546691895, 0.02122180536389351, -0.02440972998738289]}, "next_observation_ref": null, "observation_inline": {"features": [-0.0816192626953125, -0.007335662841796875, 0.019999967887997627, 0.02105654589831829, 4.074722710356582e-06, 6.326065431494499e-06, 0.9997782707214355, 6.756940274499357e-05, 0.00018291630840394646, -0.00012999228783883154, -0.008000089786946774, 0.002107006497681141, 3.9740301872370765e-05, -0.046489715576171875, 0.03903961181640625, 0.2920035123825073, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.018753744661808014, 0.4759700298309326, -0.0028430717065930367, -2.194178581237793, -0.02046637237071991, 2.573242425918579, 0.7404868006706238, 0.03999914601445198, 0.039995159953832626, 0.06610046327114105, 1.4165574312210083, 0.1909925937652588, -0.04825012385845184, 0.08122598379850388, 0.7321251630783081, -0.10347622632980347, -0.002208895981311798, 0.002336867619305849]}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-c474deae0434d933441c5f27", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 0.44070664048194885}, "progress": 0.44070664048194885, "success": false, "terminal_success": false}, "scene_id": "episode-169", "state_hash": "d1d9d693f1d704b3a58400e41f4fdc88f4ad1a48c880f7ca5271470bb7370748", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 3, "episode_id": 169, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.026445865631103516, 0.0515446662902832, 0.0711710974574089, -0.10654041171073914, 0.0348871573805809, -0.021559828892350197, -0.004283130168914795]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-01", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.05}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.18975277245044708, 0.389334499835968, -0.8513464331626892, -0.18973498046398163, -0.9600660800933838, -1.0, -1.8287646770477295], [0.08809476345777512, 0.44464895129203796, 0.100999616086483, -0.40808993577957153, -0.6010740995407104, -1.0, -3.096938133239746], [0.5636462569236755, 0.3357369899749756, 1.0, -0.8847255706787109, -0.6494259238243103, -1.0, -3.2576839923858643], [0.5793835520744324, 0.28515827655792236, 1.0, -0.9143096804618835, -0.8721618056297302, -1.0, -2.540210723876953]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-309198f01df95841053b", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 3, "episode_id": 169, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.05394979566335678, 0.059342384338378906, 0.09276148676872253, -0.08923467993736267, 0.0332699753344059, -0.03643370792269707, 0.9947878122329712, 0.37680646777153015, 0.20728980004787445, 0.8033198118209839, -0.1326940506696701, 0.3840165138244629, 0.06260472536087036, -0.046489715576171875, 0.03903961181640625, 0.2920035123825073, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0034765659365803003, 0.5312199592590332, 0.0926557406783104, -1.9654395580291748, 0.01672551967203617, 2.2665929794311523, 0.6784608960151672, 0.018222801387310028, 0.018263306468725204, -0.08515128493309021, -0.6589259505271912, 0.36874881386756897, 1.5005762577056885, 0.2528170347213745, -2.1765570640563965, -0.3992573618888855, 0.022973980754613876, -0.02177128940820694]}, "next_observation_ref": null, "observation_inline": {"features": [-0.0816192626953125, -0.007335662841796875, 0.019999967887997627, 0.02105654589831829, 4.074722710356582e-06, 6.326065431494499e-06, 0.9997782707214355, 6.756940274499357e-05, 0.00018291630840394646, -0.00012999228783883154, -0.008000089786946774, 0.002107006497681141, 3.9740301872370765e-05, -0.046489715576171875, 0.03903961181640625, 0.2920035123825073, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.018753744661808014, 0.4759700298309326, -0.0028430717065930367, -2.194178581237793, -0.02046637237071991, 2.573242425918579, 0.7404868006706238, 0.03999914601445198, 0.039995159953832626, 0.06610046327114105, 1.4165574312210083, 0.1909925937652588, -0.04825012385845184, 0.08122598379850388, 0.7321251630783081, -0.10347622632980347, -0.002208895981311798, 0.002336867619305849]}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-f1111541b0b1575f6244e56b", "regret": 0.003349006175994873, "reward": {"dense_components": {"maniskill_normalized_dense": 0.437357634305954}, "progress": 0.437357634305954, "success": false, "terminal_success": false}, "scene_id": "episode-169", "state_hash": "d1d9d693f1d704b3a58400e41f4fdc88f4ad1a48c880f7ca5271470bb7370748", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 3, "episode_id": 169, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.02766946703195572, 0.06667804718017578, 0.07276152074337006, -0.11029122769832611, 0.03326589986681938, -0.036440033465623856, -0.0049904584884643555]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-02", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.15}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.4208829402923584, 0.5449033975601196, -0.5962244272232056, -0.1771383434534073, -0.7823812961578369, -1.0, -1.8287646770477295], [0.19451144337654114, 0.41764625906944275, -0.077603280544281, -0.22823067009449005, -0.8907413482666016, -1.0, -3.096938133239746], [0.5179336071014404, 0.18461158871650696, 1.0, -0.7948633432388306, -0.7406087517738342, -1.0, -3.2576839923858643], [0.5343971252441406, 0.5053130388259888, 1.0, -0.9829695820808411, -1.0, -1.0, -2.540210723876953]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-309198f01df95841053b", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 3, "episode_id": 169, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.053458213806152344, 0.04608052223920822, 0.08664096146821976, -0.09286942332983017, 0.042861029505729675, -0.018708139657974243, 0.9945793747901917, 0.39316827058792114, 0.3178340792655945, 0.8159309029579163, -4.217980861663818, -2.099681854248047, 7.428080081939697, -0.046489715576171875, 0.03903961181640625, 0.2920035123825073, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.004244688898324966, 0.5557799339294434, 0.07247401773929596, -1.9193665981292725, 0.008099841885268688, 2.230116367340088, 0.7010068297386169, 0.018618522211909294, 0.01865643635392189, 0.08413334935903549, -0.6380245089530945, 0.41175875067710876, 1.4717214107513428, 0.2749853730201721, -2.1717357635498047, -0.162611722946167, 0.06331107020378113, 0.03648646920919418]}, "next_observation_ref": null, "observation_inline": {"features": [-0.0816192626953125, -0.007335662841796875, 0.019999967887997627, 0.02105654589831829, 4.074722710356582e-06, 6.326065431494499e-06, 0.9997782707214355, 6.756940274499357e-05, 0.00018291630840394646, -0.00012999228783883154, -0.008000089786946774, 0.002107006497681141, 3.9740301872370765e-05, -0.046489715576171875, 0.03903961181640625, 0.2920035123825073, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.018753744661808014, 0.4759700298309326, -0.0028430717065930367, -2.194178581237793, -0.02046637237071991, 2.573242425918579, 0.7404868006706238, 0.03999914601445198, 0.039995159953832626, 0.06610046327114105, 1.4165574312210083, 0.1909925937652588, -0.04825012385845184, 0.08122598379850388, 0.7321251630783081, -0.10347622632980347, -0.002208895981311798, 0.002336867619305849]}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-96bc3db9d08500ba03f8dec4", "regret": 0.00651898980140686, "reward": {"dense_components": {"maniskill_normalized_dense": 0.434187650680542}, "progress": 0.434187650680542, "success": false, "terminal_success": false}, "scene_id": "episode-169", "state_hash": "d1d9d693f1d704b3a58400e41f4fdc88f4ad1a48c880f7ca5271470bb7370748", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 3, "episode_id": 169, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.028161048889160156, 0.053416185081005096, 0.06664099544286728, -0.11392597109079361, 0.04285695403814316, -0.01871446520090103, -0.0051988959312438965]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "wrong_direction-03", "horizon": 4, "metadata": {"candidate_type": "wrong_direction", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.35}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.5541728138923645, 0.3895687460899353, -0.8553584814071655, 0.390848845243454, -1.0, -1.0, -1.8287646770477295], [-0.06287260353565216, 0.6456932425498962, -0.08875741064548492, -0.5972550511360168, -1.0, -1.0, -3.096938133239746], [0.8307607769966125, 0.17430874705314636, 1.0, -1.0, -0.8402131199836731, -1.0, -3.2576839923858643], [0.6533896923065186, 1.0, 1.0, -0.7087200880050659, -0.9449198246002197, -1.0, -2.540210723876953]]}, "candidate_type": "wrong_direction", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-309198f01df95841053b", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 3, "episode_id": 169, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.041669681668281555, 0.06979858875274658, 0.09121163934469223, -0.08544974774122238, 0.04808802902698517, -0.02380402758717537, 0.9948965907096863, 0.4409736394882202, 0.6335882544517517, 0.7962557077407837, -0.3591904938220978, -1.6028207540512085, 6.355499744415283, -0.046489715576171875, 0.03903961181640625, 0.2920035123825073, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.03790570795536041, 0.6003332734107971, 0.07986871898174286, -1.850624442100525, 0.0028548361733555794, 2.2237508296966553, 0.7462189197540283, 0.018300293013453484, 0.0183328315615654, 0.4958077371120453, -0.384491890668869, 0.503303050994873, 1.91732919216156, 0.2245510220527649, -2.373030662536621, 0.32510024309158325, 0.049786780029535294, 0.028276842087507248]}, "next_observation_ref": null, "observation_inline": {"features": [-0.0816192626953125, -0.007335662841796875, 0.019999967887997627, 0.02105654589831829, 4.074722710356582e-06, 6.326065431494499e-06, 0.9997782707214355, 6.756940274499357e-05, 0.00018291630840394646, -0.00012999228783883154, -0.008000089786946774, 0.002107006497681141, 3.9740301872370765e-05, -0.046489715576171875, 0.03903961181640625, 0.2920035123825073, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.018753744661808014, 0.4759700298309326, -0.0028430717065930367, -2.194178581237793, -0.02046637237071991, 2.573242425918579, 0.7404868006706238, 0.03999914601445198, 0.039995159953832626, 0.06610046327114105, 1.4165574312210083, 0.1909925937652588, -0.04825012385845184, 0.08122598379850388, 0.7321251630783081, -0.10347622632980347, -0.002208895981311798, 0.002336867619305849]}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-e9f07e7fee064728b39f8717", "regret": 0.013920247554779053, "reward": {"dense_components": {"maniskill_normalized_dense": 0.4267863929271698}, "progress": 0.4267863929271698, "success": false, "terminal_success": false}, "scene_id": "episode-169", "state_hash": "d1d9d693f1d704b3a58400e41f4fdc88f4ad1a48c880f7ca5271470bb7370748", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 3, "episode_id": 169, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.039949581027030945, 0.07713425159454346, 0.07121167331933975, -0.10650629550218582, 0.04808395355939865, -0.023810353130102158, -0.004881680011749268]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "expert-00", "horizon": 4, "metadata": {"candidate_type": "expert", "parent_action_id": null, "perturbation": {"scale": 0.0}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.0008330158889293671, 0.01394378300756216, -0.001225348562002182, -0.04536111652851105, -0.04768943041563034, -0.15079231560230255, -1.8901182413101196], [0.001187097281217575, 0.013597956858575344, -0.00042774900794029236, -0.041714366525411606, -0.045031510293483734, -0.1475631445646286, -1.892465353012085], [0.0012379847466945648, 0.01319947000592947, 0.00019573047757148743, -0.03824581950902939, -0.04247990995645523, -0.1440671980381012, -1.8946446180343628], [0.0013305805623531342, 0.013172662816941738, 0.0005163736641407013, -0.03501201793551445, -0.040271297097206116, -0.1409093290567398, -1.8965703248977661]]}, "candidate_type": "expert", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "success"}, "group_id": "ms-d65ed516466738f66378", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 24, "episode_id": 777, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.08072185516357422, 0.017803192138671875, 0.2279651015996933, 0.9869049787521362, 0.08657991141080856, 0.11517131328582764, -0.07251223921775818, -0.03177250921726227, -0.01926625706255436, 0.047648023813962936, -10.99992847442627, 4.707256317138672, -19.61707305908203, -0.07979202270507812, 0.020999908447265625, 0.22417080402374268, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.1655074656009674, 0.27885568141937256, 0.13991579413414001, -1.931618094444275, 0.1711103469133377, 1.8771662712097168, 0.529781699180603, 0.021500954404473305, 0.021550076082348824, -0.003387299133464694, 0.03273507207632065, 0.009088749997317791, 0.037815216928720474, -0.007577059790492058, -0.038751162588596344, -0.11419609934091568, 0.24993881583213806, 0.20126621425151825]}, "next_observation_ref": null, "observation_inline": {"features": [-0.0806732177734375, 0.017627716064453125, 0.2287747859954834, 0.9861508011817932, 0.07968265563249588, 0.11234565079212189, -0.09238889068365097, -0.03447769209742546, -0.01727529801428318, 0.047687698155641556, -12.275294303894043, 5.115230560302734, -20.387374877929688, -0.07979202270507812, 0.020999908447265625, 0.22417080402374268, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.16435661911964417, 0.2703222930431366, 0.13763873279094696, -1.9423010349273682, 0.17471539974212646, 1.8913787603378296, 0.5458055734634399, 0.021768102422356606, 0.021817348897457123, -0.005791042000055313, 0.03889458253979683, 0.010288954712450504, 0.04045560956001282, -0.0018545836210250854, -0.04479827359318733, -0.12890276312828064, 0.27531275153160095, 0.22590671479701996]}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-2cc34bcb883d16a29a7e47be", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "episode-777", "state_hash": "4d9bdd3bd7aaaaf23782a3058161f1fe6f35cebcc2cde70670151ce522a765f1", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 24, "episode_id": 777, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-4.863739013671875e-05, 0.00017547607421875, -0.0008096843957901001, 0.0007541775703430176, 0.006897255778312683, 0.0028256624937057495, 0.019876651465892792]}, "relation_after": {"success": true}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-01", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.05}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.00047244789311662316, -0.014116122387349606, -0.04460618644952774, 0.10794071853160858, -0.05155668407678604, -0.2516253590583801, -1.8901182413101196], [-0.031242933124303818, 0.047499943524599075, -0.02542817033827305, 0.02630794420838356, 0.005088403820991516, -0.15518008172512054, -1.892465353012085], [-0.022372812032699585, -0.037040580064058304, -0.034802597016096115, -0.11190297454595566, 0.017739903181791306, -0.06453216075897217, -1.8946446180343628], [-0.06147632375359535, -0.045911483466625214, -0.08790922164916992, -0.0832047313451767, -0.1955881416797638, -0.19802327454090118, -1.8965703248977661]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-d65ed516466738f66378", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 24, "episode_id": 777, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.08486288785934448, 0.015182971954345703, 0.22171416878700256, 0.9873416423797607, 0.0843956246972084, 0.11481738835573196, -0.06964684277772903, -0.07476509362459183, -0.05952597036957741, -0.01347418874502182, -10.939173698425293, 4.673908233642578, -19.634855270385742, -0.07979202270507812, 0.020999908447265625, 0.22417080402374268, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.1665092408657074, 0.2754214406013489, 0.13780198991298676, -1.9532992839813232, 0.16626718640327454, 1.8950700759887695, 0.520633339881897, 0.021500464528799057, 0.02154933102428913, -0.054641447961330414, 0.0720219686627388, -0.01893124356865883, -0.07117476314306259, -0.010779284872114658, -0.024879751726984978, -0.22261546552181244, 0.24965612590312958, 0.2012947052717209]}, "next_observation_ref": null, "observation_inline": {"features": [-0.0806732177734375, 0.017627716064453125, 0.2287747859954834, 0.9861508011817932, 0.07968265563249588, 0.11234565079212189, -0.09238889068365097, -0.03447769209742546, -0.01727529801428318, 0.047687698155641556, -12.275294303894043, 5.115230560302734, -20.387374877929688, -0.07979202270507812, 0.020999908447265625, 0.22417080402374268, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.16435661911964417, 0.2703222930431366, 0.13763873279094696, -1.9423010349273682, 0.17471539974212646, 1.8913787603378296, 0.5458055734634399, 0.021768102422356606, 0.021817348897457123, -0.005791042000055313, 0.03889458253979683, 0.010288954712450504, 0.04045560956001282, -0.0018545836210250854, -0.04479827359318733, -0.12890276312828064, 0.27531275153160095, 0.22590671479701996]}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-1398366dee93047ff0854e57", "regret": 1.3848078846931458, "reward": {"dense_components": {"maniskill_normalized_dense": 0.6151921153068542}, "progress": 0.6151921153068542, "success": false, "terminal_success": false}, "scene_id": "episode-777", "state_hash": "4d9bdd3bd7aaaaf23782a3058161f1fe6f35cebcc2cde70670151ce522a765f1", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 24, "episode_id": 777, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.004189670085906982, -0.002444744110107422, -0.007060617208480835, 0.0011908411979675293, 0.004712969064712524, 0.002471737563610077, 0.022742047905921936]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-02", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.15}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.19537033140659332, -0.03790709376335144, 0.12696228921413422, -0.11870647966861725, 0.21641066670417786, -0.12090961635112762, -1.8901182413101196], [-0.05611324682831764, 0.3964615762233734, -0.049098528921604156, -0.22489787638187408, -0.014745010063052177, -0.1533883959054947, -1.892465353012085], [0.16118666529655457, -0.12504562735557556, 0.12090326845645905, 0.089666448533535, -0.14263300597667694, -0.11958059668540955, -1.8946446180343628], [-0.12328220903873444, 0.36504387855529785, -0.10510456562042236, -0.10297317802906036, -0.20014700293540955, -0.1928275227546692, -1.8965703248977661]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-d65ed516466738f66378", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 24, "episode_id": 777, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.07309579849243164, 0.032475441694259644, 0.23276707530021667, 0.9864112734794617, 0.0903945043683052, 0.11289971321821213, -0.0779443010687828, -0.12268242985010147, 0.17974652349948883, -0.024752065539360046, -10.784139633178711, 5.082561492919922, -19.664432525634766, -0.07979202270507812, 0.020999908447265625, 0.22417080402374268, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.15407247841358185, 0.29010382294654846, 0.151821106672287, -1.9046658277511597, 0.18327946960926056, 1.8711504936218262, 0.5595691800117493, 0.021503619849681854, 0.021549686789512634, 0.1725536733865738, -0.05711091682314873, 0.15597403049468994, -0.310453325510025, 0.1131928414106369, 0.14231809973716736, 0.12314780056476593, 0.24850773811340332, 0.20332486927509308]}, "next_observation_ref": null, "observation_inline": {"features": [-0.0806732177734375, 0.017627716064453125, 0.2287747859954834, 0.9861508011817932, 0.07968265563249588, 0.11234565079212189, -0.09238889068365097, -0.03447769209742546, -0.01727529801428318, 0.047687698155641556, -12.275294303894043, 5.115230560302734, -20.387374877929688, -0.07979202270507812, 0.020999908447265625, 0.22417080402374268, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.16435661911964417, 0.2703222930431366, 0.13763873279094696, -1.9423010349273682, 0.17471539974212646, 1.8913787603378296, 0.5458055734634399, 0.021768102422356606, 0.021817348897457123, -0.005791042000055313, 0.03889458253979683, 0.010288954712450504, 0.04045560956001282, -0.0018545836210250854, -0.04479827359318733, -0.12890276312828064, 0.27531275153160095, 0.22590671479701996]}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-f1931b52529f5b071e1f45bb", "regret": 1.4176644682884216, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5823355317115784}, "progress": 0.5823355317115784, "success": false, "terminal_success": false}, "scene_id": "episode-777", "state_hash": "4d9bdd3bd7aaaaf23782a3058161f1fe6f35cebcc2cde70670151ce522a765f1", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 24, "episode_id": 777, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.007577419281005859, 0.014847725629806519, 0.003992289304733276, 0.00026047229766845703, 0.010711848735809326, 0.0005540624260902405, 0.014444589614868164]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "wrong_direction-03", "horizon": 4, "metadata": {"candidate_type": "wrong_direction", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.35}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[-0.0012235934846103191, 0.2826699912548065, -0.21489568054676056, -0.11038200557231903, -0.5434607267379761, -0.44038307666778564, -1.8901182413101196], [0.9657197594642639, 0.3780330717563629, -0.27392616868019104, -0.5098034143447876, -0.3864855170249939, -0.15515494346618652, -1.892465353012085], [0.01339271105825901, -0.24732674658298492, -0.45010530948638916, 0.45958665013313293, 0.11560999602079391, -0.27516600489616394, -1.8946446180343628], [-0.0759008377790451, -0.1721630096435547, -1.0, 0.005469620227813721, -0.4149618148803711, -0.49184882640838623, -1.8965703248977661]]}, "candidate_type": "wrong_direction", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-d65ed516466738f66378", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 24, "episode_id": 777, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.0416083000600338, 0.028619889169931412, 0.16682757437229156, 0.9877004027366638, 0.08348431438207626, 0.12014302611351013, -0.05517086759209633, -0.15553022921085358, -0.13473549485206604, -0.6492480635643005, -11.264759063720703, 4.700469017028809, -19.266338348388672, -0.07979202270507812, 0.020999908447265625, 0.22417080402374268, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.13876134157180786, 0.48133644461631775, 0.14453087747097015, -1.7940202951431274, 0.1389039307832718, 1.93268620967865, 0.5281361937522888, 0.02150052599608898, 0.02154863439500332, -0.056277595460414886, 1.005834937095642, -0.09804952889680862, -0.35445865988731384, -0.1971956193447113, 0.8423280119895935, -0.5229505896568298, 0.2487155944108963, 0.2006109207868576]}, "next_observation_ref": null, "observation_inline": {"features": [-0.0806732177734375, 0.017627716064453125, 0.2287747859954834, 0.9861508011817932, 0.07968265563249588, 0.11234565079212189, -0.09238889068365097, -0.03447769209742546, -0.01727529801428318, 0.047687698155641556, -12.275294303894043, 5.115230560302734, -20.387374877929688, -0.07979202270507812, 0.020999908447265625, 0.22417080402374268, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.16435661911964417, 0.2703222930431366, 0.13763873279094696, -1.9423010349273682, 0.17471539974212646, 1.8913787603378296, 0.5458055734634399, 0.021768102422356606, 0.021817348897457123, -0.005791042000055313, 0.03889458253979683, 0.010288954712450504, 0.04045560956001282, -0.0018545836210250854, -0.04479827359318733, -0.12890276312828064, 0.27531275153160095, 0.22590671479701996]}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-926580e42d6a5fe65c5e7b3c", "regret": 1.4729971289634705, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5270028710365295}, "progress": 0.5270028710365295, "success": false, "terminal_success": false}, "scene_id": "episode-777", "state_hash": "4d9bdd3bd7aaaaf23782a3058161f1fe6f35cebcc2cde70670151ce522a765f1", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 24, "episode_id": 777, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.0390649177134037, 0.010992173105478287, -0.061947211623191833, 0.0015496015548706055, 0.0038016587495803833, 0.007797375321388245, 0.03721802309155464]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "expert-00", "horizon": 4, "metadata": {"candidate_type": "expert", "parent_action_id": null, "perturbation": {"scale": 0.0}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.3721258342266083, -0.6813563704490662, -2.008131742477417, 0.34020712971687317, -0.8157401084899902, -0.1550981104373932, 1.6973540782928467], [-0.24973063170909882, 0.09233307838439941, -1.1324352025985718, -0.67401123046875, -0.3986852765083313, -1.1042499542236328, -1.359148383140564], [-0.04749015346169472, -0.6376053690910339, 0.12203916907310486, -0.029855575412511826, -0.09298177808523178, -0.08498507738113403, -3.0852878093719482], [-0.01280081644654274, -0.6005521416664124, 0.08823423087596893, -0.27860698103904724, -0.04087989404797554, -0.3430824279785156, -3.0706160068511963]]}, "candidate_type": "expert", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-ebb616f9b291184677b3", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 2, "episode_id": 303, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [0.07778072357177734, -0.006429195404052734, 0.02456570230424404, 0.7061628103256226, 0.008297191932797432, 0.009390417486429214, -0.707938551902771, -0.01497275847941637, -0.4615718424320221, 0.10954016447067261, -2.712318181991577, -0.13355550169944763, -2.476088285446167, 0.08724594116210938, -0.053432464599609375, 0.03419885411858559, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149997711181641, 0.0, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.07420074939727783, 0.8570231795310974, 0.061308953911066055, -1.5704039335250854, 0.03510713949799538, 2.415879487991333, 0.717922031879425, 0.018413051962852478, 0.018447304144501686, -0.753774881362915, -0.13678158819675446, 0.07986684888601303, -0.042003024369478226, 0.10645688325166702, -0.1407083421945572, -0.8675482273101807, 0.02224229834973812, -0.017672285437583923]}, "next_observation_ref": null, "observation_inline": {"features": [0.08759737014770508, 0.037525177001953125, 0.0199997927993536, 0.5198809504508972, -6.201305041031446e-06, -9.365126970806159e-06, -0.8542386293411255, -0.00040566784446127713, -0.0002487958699930459, -0.00010707594628911465, 0.007350654806941748, -0.008801234886050224, -4.384671683510533e-06, 0.08724594116210938, -0.053432464599609375, 0.03419885411858559, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149997711181641, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.017570504918694496, 0.6914348602294922, 0.028651613742113113, -1.6395795345306396, 0.024628089740872383, 2.3934061527252197, 0.8927773237228394, 0.03999554365873337, 0.03999999910593033, 0.4676435887813568, 2.8736166954040527, 0.19924379885196686, 2.7435455322265625, 0.0799320787191391, -0.15863299369812012, 0.5271117091178894, 0.0026528083253651857, -0.0025924858637154102]}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-17086bac5797605be2d359c0", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 0.545483410358429}, "progress": 0.545483410358429, "success": false, "terminal_success": false}, "scene_id": "episode-303", "state_hash": "40ee6aa04c8ffa69964c931b3f8f22abe8852c5ab8f173ab3493d54e216adcdd", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 2, "episode_id": 303, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.009816646575927734, -0.04395437240600586, 0.004565909504890442, 0.18628185987472534, 0.008303393609821796, 0.009399782866239548, 0.1463000774383545]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-01", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.05}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.34011271595954895, -0.6447412967681885, -1.0, 0.26849305629730225, -0.7837474942207336, -0.11737966537475586, 1.6973540782928467], [-0.29767730832099915, 0.12045296281576157, -1.0, -0.6589466333389282, -0.46173328161239624, -1.0, -1.359148383140564], [0.012672793120145798, -0.6057516932487488, 0.14995616674423218, -0.21846933662891388, -0.07995028793811798, -0.08625734597444534, -3.0852878093719482], [-0.020153092220425606, -0.6320810317993164, 0.09100247919559479, -0.2580011188983917, -0.05406930297613144, -0.36624863743782043, -3.0706160068511963]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-ebb616f9b291184677b3", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 2, "episode_id": 303, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [0.0784926488995552, -0.003352642059326172, 0.025271937251091003, 0.6894181370735168, 0.008160504512488842, 0.010618234984576702, -0.7242396473884583, -0.00044722482562065125, -0.47652554512023926, 0.1055726706981659, -4.278221130371094, 1.0116642713546753, -8.624736785888672, 0.08724594116210938, -0.053432464599609375, 0.03419885411858559, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149997711181641, 0.0, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.07762394845485687, 0.8529539108276367, 0.0682118833065033, -1.5751844644546509, 0.04255971685051918, 2.413790464401245, 0.7153814435005188, 0.018666895106434822, 0.018701976165175438, -0.7725462317466736, -0.15613332390785217, 0.06931902468204498, -0.06191585585474968, 0.09569701552391052, -0.16326366364955902, -0.9123886823654175, 0.05704961344599724, 0.01130207721143961]}, "next_observation_ref": null, "observation_inline": {"features": [0.08759737014770508, 0.037525177001953125, 0.0199997927993536, 0.5198809504508972, -6.201305041031446e-06, -9.365126970806159e-06, -0.8542386293411255, -0.00040566784446127713, -0.0002487958699930459, -0.00010707594628911465, 0.007350654806941748, -0.008801234886050224, -4.384671683510533e-06, 0.08724594116210938, -0.053432464599609375, 0.03419885411858559, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149997711181641, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.017570504918694496, 0.6914348602294922, 0.028651613742113113, -1.6395795345306396, 0.024628089740872383, 2.3934061527252197, 0.8927773237228394, 0.03999554365873337, 0.03999999910593033, 0.4676435887813568, 2.8736166954040527, 0.19924379885196686, 2.7435455322265625, 0.0799320787191391, -0.15863299369812012, 0.5271117091178894, 0.0026528083253651857, -0.0025924858637154102]}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-5dedbb915eb886e29f4d99f2", "regret": 0.0031185150146484375, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5423648953437805}, "progress": 0.5423648953437805, "success": false, "terminal_success": false}, "scene_id": "episode-303", "state_hash": "40ee6aa04c8ffa69964c931b3f8f22abe8852c5ab8f173ab3493d54e216adcdd", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 2, "episode_id": 303, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.009104721248149872, -0.0408778190612793, 0.005272144451737404, 0.16953718662261963, 0.008166706189513206, 0.010627600364387035, 0.12999898195266724]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-02", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.15}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.556588888168335, -0.8471614122390747, -1.0, 0.3667289912700653, -0.9363859295845032, -0.19859538972377777, 1.6973540782928467], [-0.387729674577713, 0.19359275698661804, -1.0, -0.757530689239502, -0.5640180110931396, -1.0, -1.359148383140564], [0.09611769020557404, -0.6546808481216431, 0.18479204177856445, -0.08625964820384979, -0.08284639567136765, -0.12867751717567444, -3.0852878093719482], [0.03130550682544708, -0.8270180225372314, 0.18486280739307404, -0.3130968511104584, 0.012911316007375717, -0.3941289484500885, -3.0706160068511963]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-ebb616f9b291184677b3", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 2, "episode_id": 303, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [0.11748647689819336, 0.010584269650280476, 0.02726691961288452, 0.7436894774436951, -0.16015855967998505, -0.1944839060306549, -0.6192343831062317, 0.25855085253715515, -0.25451698899269104, -0.03778814524412155, 6.272871494293213, 0.6223578453063965, 8.408894538879395, 0.08724594116210938, -0.053432464599609375, 0.03419885411858559, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149997711181641, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0898711234331131, 0.8379309773445129, 0.068412646651268, -1.4974206686019897, 0.041384849697351456, 2.3792901039123535, 0.6952271461486816, 0.004714784678071737, 0.004715996794402599, -0.950882613658905, -0.20870892703533173, 0.11845645308494568, 0.08563834428787231, 0.1683439165353775, -0.26653459668159485, -1.1085907220840454, -0.14666688442230225, -0.1480746865272522]}, "next_observation_ref": null, "observation_inline": {"features": [0.08759737014770508, 0.037525177001953125, 0.0199997927993536, 0.5198809504508972, -6.201305041031446e-06, -9.365126970806159e-06, -0.8542386293411255, -0.00040566784446127713, -0.0002487958699930459, -0.00010707594628911465, 0.007350654806941748, -0.008801234886050224, -4.384671683510533e-06, 0.08724594116210938, -0.053432464599609375, 0.03419885411858559, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149997711181641, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.017570504918694496, 0.6914348602294922, 0.028651613742113113, -1.6395795345306396, 0.024628089740872383, 2.3934061527252197, 0.8927773237228394, 0.03999554365873337, 0.03999999910593033, 0.4676435887813568, 2.8736166954040527, 0.19924379885196686, 2.7435455322265625, 0.0799320787191391, -0.15863299369812012, 0.5271117091178894, 0.0026528083253651857, -0.0025924858637154102]}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-505064499f1c2f27da449106", "regret": 0.3968952000141144, "reward": {"dense_components": {"maniskill_normalized_dense": 0.14858821034431458}, "progress": 0.14858821034431458, "success": false, "terminal_success": false}, "scene_id": "episode-303", "state_hash": "40ee6aa04c8ffa69964c931b3f8f22abe8852c5ab8f173ab3493d54e216adcdd", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 2, "episode_id": 303, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.02988910675048828, -0.026940908282995224, 0.007267126813530922, 0.22380852699279785, -0.1601523607969284, -0.19447454810142517, 0.2350042462348938]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "wrong_direction-03", "horizon": 4, "metadata": {"candidate_type": "wrong_direction", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.35}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.4842522442340851, -1.0, -1.0, -0.25603345036506653, -1.0, -0.07261498272418976, 1.6973540782928467], [0.2622641324996948, 0.18967728316783905, -1.0, -1.0, -0.4656321108341217, -1.0, -1.359148383140564], [0.544208824634552, -0.4198615550994873, -0.4131433665752411, 0.6795171499252319, -0.23123523592948914, -0.39279597997665405, -3.0852878093719482], [0.5033870935440063, -0.6179666519165039, -0.04035668075084686, -0.20203188061714172, 0.2548311650753021, 0.004585236310958862, -3.0706160068511963]]}, "candidate_type": "wrong_direction", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-ebb616f9b291184677b3", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 2, "episode_id": 303, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [0.09186956286430359, 0.015894046053290367, 0.019999971613287926, 0.30116814374923706, 1.1251766096620486e-07, 1.0423879359677812e-07, -0.9535710215568542, 0.016943342983722687, -0.04071560129523277, -3.2644768452883e-06, -0.0002716032031457871, 4.8728761612437665e-06, -0.5881608128547668, 0.08724594116210938, -0.053432464599609375, 0.03419885411858559, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149997711181641, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.05871107056736946, 1.1161432266235352, 0.04578172415494919, -1.1326327323913574, 0.031064672395586967, 2.233402729034424, 0.7379184365272522, 0.0, 0.0, -0.7276090979576111, 0.9664672613143921, -0.0703803077340126, 2.004854679107666, 0.12016952782869339, -0.7482184767723083, -0.6222609281539917, 0.42080384492874146, -1.08421790599823]}, "next_observation_ref": null, "observation_inline": {"features": [0.08759737014770508, 0.037525177001953125, 0.0199997927993536, 0.5198809504508972, -6.201305041031446e-06, -9.365126970806159e-06, -0.8542386293411255, -0.00040566784446127713, -0.0002487958699930459, -0.00010707594628911465, 0.007350654806941748, -0.008801234886050224, -4.384671683510533e-06, 0.08724594116210938, -0.053432464599609375, 0.03419885411858559, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149997711181641, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.017570504918694496, 0.6914348602294922, 0.028651613742113113, -1.6395795345306396, 0.024628089740872383, 2.3934061527252197, 0.8927773237228394, 0.03999554365873337, 0.03999999910593033, 0.4676435887813568, 2.8736166954040527, 0.19924379885196686, 2.7435455322265625, 0.0799320787191391, -0.15863299369812012, 0.5271117091178894, 0.0026528083253651857, -0.0025924858637154102]}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-056ef9b1588bbe7e55287ef2", "regret": 0.4014723598957062, "reward": {"dense_components": {"maniskill_normalized_dense": 0.14401105046272278}, "progress": 0.14401105046272278, "success": false, "terminal_success": false}, "scene_id": "episode-303", "state_hash": "40ee6aa04c8ffa69964c931b3f8f22abe8852c5ab8f173ab3493d54e216adcdd", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 2, "episode_id": 303, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.004272192716598511, -0.021631130948662758, 1.7881393432617188e-07, -0.21871280670166016, 6.313822723313933e-06, 9.469365977565758e-06, -0.09933239221572876]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "expert-00", "horizon": 4, "metadata": {"candidate_type": "expert", "parent_action_id": null, "perturbation": {"scale": 0.0}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[-0.08406451344490051, -0.009523601271212101, 0.03102550283074379, 0.1217302680015564, -0.030128629878163338, 0.1350490301847458, -2.0977671146392822], [-0.05125752463936806, 0.00815442856401205, 0.01470235362648964, 0.12155389040708542, -0.010763907805085182, 0.11566876620054245, -2.108468770980835], [-0.02973148599267006, 0.01517439540475607, 0.008007053285837173, 0.11824916303157806, -0.0001966669224202633, 0.09758339822292328, -2.1169931888580322], [-0.01639438048005104, 0.016663633286952972, 0.0052188970148563385, 0.11331938952207565, 0.005766621325165033, 0.08264394849538803, -2.1227779388427734]]}, "candidate_type": "expert", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "success"}, "group_id": "ms-582e14e8ff5b73647798", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 14, "episode_id": 927, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [0.050302982330322266, -0.08438920974731445, 0.22876667976379395, 0.14126455783843994, -0.03786902502179146, 0.05476725101470947, -0.9877301454544067, -0.022694844752550125, -4.560197703540325e-05, 0.0284341461956501, -4.982963562011719, -2.021073818206787, 1.5215585231781006, 0.05788421630859375, -0.084930419921875, 0.24437257647514343, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 0.0, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.2305203229188919, 0.5852935910224915, 0.0987599715590477, -1.444791316986084, 0.048338014632463455, 1.8411797285079956, 0.35299596190452576, 0.018615148961544037, 0.01866103895008564, 0.03535344451665878, -0.06123620644211769, -0.022453617304563522, -0.09092143177986145, -0.03514835610985756, 0.05736219137907028, 0.09345010668039322, 0.04381485655903816, -0.012744467705488205]}, "next_observation_ref": null, "observation_inline": {"features": [0.05756378173828125, -0.0816802978515625, 0.22458434104919434, 0.1534852832555771, -0.03710265830159187, 0.06220148876309395, -0.9854930639266968, -0.07588358968496323, -0.08773867040872574, 0.141328364610672, -11.355833053588867, -3.6427416801452637, -0.7245013117790222, 0.05788421630859375, -0.084930419921875, 0.24437257647514343, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.23357778787612915, 0.6194412112236023, 0.10720300674438477, -1.4002288579940796, 0.05730186402797699, 1.8231159448623657, 0.3291076421737671, 0.018767280504107475, 0.018812820315361023, -0.052663031965494156, -0.34448161721229553, -0.0517585389316082, -0.3827923834323883, -0.007017062045633793, 0.06557676941156387, 0.05320366472005844, 0.08125831186771393, 0.04719652235507965]}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-e31df7ec300131b949aa8f00", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "episode-927", "state_hash": "e54fc27620bd985e834a36d9cbfd51e7c19e3a3addaa1ae5cbe0db2850dc54ad", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 14, "episode_id": 927, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.007260799407958984, -0.002708911895751953, 0.004182338714599609, -0.012220725417137146, -0.000766366720199585, -0.007434237748384476, -0.002237081527709961]}, "relation_after": {"success": true}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-01", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.05}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[-0.15282464027404785, 0.09040047228336334, 0.07836858183145523, 0.10277021676301956, -0.0710616260766983, 0.08659841120243073, -2.0977671146392822], [-0.04508860409259796, -0.02424638345837593, -0.023541346192359924, 0.1621166169643402, 0.007464459165930748, 0.09594020247459412, -2.108468770980835], [0.0069808922708034515, 0.0835433304309845, -0.04671776294708252, 0.08808457106351852, 0.046934425830841064, 0.1335304230451584, -2.1169931888580322], [-0.0050594378262758255, 0.07478469610214233, -0.04919169098138809, 0.03936249762773514, -0.037558745592832565, 0.08877114951610565, -2.1227779388427734]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "success"}, "group_id": "ms-582e14e8ff5b73647798", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 14, "episode_id": 927, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [0.049900397658348083, -0.07807254791259766, 0.2260167896747589, 0.14096035063266754, -0.03702940791845322, 0.05589553713798523, -0.9877421259880066, -0.017906034365296364, 0.04383965581655502, -0.01260538399219513, -4.938169956207275, -1.9798858165740967, 1.5179227590560913, 0.05788421630859375, -0.084930419921875, 0.24437257647514343, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 0.0, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.2254515141248703, 0.5823760032653809, 0.10219284892082214, -1.4574562311172485, 0.05116761103272438, 1.8525612354278564, 0.3601864278316498, 0.0186149962246418, 0.01866103708744049, 0.0672186091542244, 0.010437939316034317, 0.005022783763706684, -0.08107814192771912, -0.0032686954364180565, 0.07491239160299301, 0.12469921261072159, 0.043905794620513916, -0.012829173356294632]}, "next_observation_ref": null, "observation_inline": {"features": [0.05756378173828125, -0.0816802978515625, 0.22458434104919434, 0.1534852832555771, -0.03710265830159187, 0.06220148876309395, -0.9854930639266968, -0.07588358968496323, -0.08773867040872574, 0.141328364610672, -11.355833053588867, -3.6427416801452637, -0.7245013117790222, 0.05788421630859375, -0.084930419921875, 0.24437257647514343, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.23357778787612915, 0.6194412112236023, 0.10720300674438477, -1.4002288579940796, 0.05730186402797699, 1.8231159448623657, 0.3291076421737671, 0.018767280504107475, 0.018812820315361023, -0.052663031965494156, -0.34448161721229553, -0.0517585389316082, -0.3827923834323883, -0.007017062045633793, 0.06557676941156387, 0.05320366472005844, 0.08125831186771393, 0.04719652235507965]}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-e139b479b49c896e1284cad1", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "episode-927", "state_hash": "e54fc27620bd985e834a36d9cbfd51e7c19e3a3addaa1ae5cbe0db2850dc54ad", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 14, "episode_id": 927, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.0076633840799331665, 0.0036077499389648438, 0.0014324486255645752, -0.012524932622909546, 7.325038313865662e-05, -0.006305951625108719, -0.0022490620613098145]}, "relation_after": {"success": true}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-02", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.15}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[-0.20347753167152405, -0.08260632306337357, -0.11522452533245087, 0.028665892779827118, -0.180846706032753, 0.19016896188259125, -2.0977671146392822], [0.06797613203525543, -0.06391245871782303, -0.016387514770030975, 0.03439900279045105, 0.06892377883195877, 0.12902717292308807, -2.108468770980835], [0.20939205586910248, -0.1491464227437973, 0.06238242983818054, 0.1848478764295578, -0.054262690246105194, 0.18511351943016052, -2.1169931888580322], [-0.23217277228832245, 0.3344841003417969, -0.1960877776145935, 0.2512904703617096, -0.16240178048610687, 0.2552764117717743, -2.1227779388427734]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-582e14e8ff5b73647798", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 14, "episode_id": 927, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [0.05058765411376953, -0.09018949419260025, 0.2178356647491455, 0.13035081326961517, -0.04113379865884781, 0.05382925271987915, -0.9891507029533386, -0.19075638055801392, 0.16672652959823608, -0.10994802415370941, -5.094778537750244, -1.7466521263122559, 1.4151734113693237, 0.05788421630859375, -0.084930419921875, 0.24437257647514343, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.23334495723247528, 0.6030073165893555, 0.09266113489866257, -1.4433146715164185, 0.04816658794879913, 1.852347493171692, 0.3658486604690552, 0.018616097047924995, 0.018657920882105827, 0.20398744940757751, -0.5268197655677795, -0.0076668416149914265, -1.2117764949798584, -0.039892230182886124, 0.6064765453338623, 0.43254563212394714, 0.04122951254248619, -0.010610029101371765]}, "next_observation_ref": null, "observation_inline": {"features": [0.05756378173828125, -0.0816802978515625, 0.22458434104919434, 0.1534852832555771, -0.03710265830159187, 0.06220148876309395, -0.9854930639266968, -0.07588358968496323, -0.08773867040872574, 0.141328364610672, -11.355833053588867, -3.6427416801452637, -0.7245013117790222, 0.05788421630859375, -0.084930419921875, 0.24437257647514343, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.23357778787612915, 0.6194412112236023, 0.10720300674438477, -1.4002288579940796, 0.05730186402797699, 1.8231159448623657, 0.3291076421737671, 0.018767280504107475, 0.018812820315361023, -0.052663031965494156, -0.34448161721229553, -0.0517585389316082, -0.3827923834323883, -0.007017062045633793, 0.06557676941156387, 0.05320366472005844, 0.08125831186771393, 0.04719652235507965]}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-20c3d6c388b583911711fa61", "regret": 1.4328718185424805, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5671281814575195}, "progress": 0.5671281814575195, "success": false, "terminal_success": false}, "scene_id": "episode-927", "state_hash": "e54fc27620bd985e834a36d9cbfd51e7c19e3a3addaa1ae5cbe0db2850dc54ad", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 14, "episode_id": 927, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.006976127624511719, -0.00850919634103775, -0.006748676300048828, -0.023134469985961914, -0.004031140357255936, -0.008372236043214798, -0.0036576390266418457]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "wrong_direction-03", "horizon": 4, "metadata": {"candidate_type": "wrong_direction", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.35}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[-0.21873542666435242, 0.04592441767454147, 0.04969581961631775, 0.5069872140884399, -0.14267024397850037, -0.903465211391449, -2.0977671146392822], [-0.31727808713912964, 0.07245374470949173, -0.13946151733398438, 0.3909911811351776, 0.34460052847862244, 0.0639486312866211, -2.108468770980835], [-0.5511074066162109, 0.49963217973709106, 0.3870757818222046, 0.013532266020774841, 0.7377042770385742, -0.024523012340068817, -2.1169931888580322], [-0.4143862724304199, -0.037892069667577744, 0.38246068358421326, -0.21478930115699768, 0.6886954307556152, -0.23114022612571716, -2.1227779388427734]]}, "candidate_type": "wrong_direction", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-582e14e8ff5b73647798", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 14, "episode_id": 927, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.00747279729694128, -0.061500973999500275, 0.24074141681194305, 0.1720178872346878, -0.016838226467370987, 0.04647808521986008, -0.9838526844978333, -0.25541675090789795, 0.024568842723965645, 0.3144344985485077, -4.78043270111084, -2.841259479522705, 1.5965029001235962, 0.05788421630859375, -0.084930419921875, 0.24437257647514343, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.2338850349187851, 0.3508473038673401, 0.11850780248641968, -1.787319302558899, 0.05814718082547188, 1.9928162097930908, 0.30366986989974976, 0.01861386001110077, 0.018665576353669167, -0.1721092313528061, -1.3637515306472778, 0.10220518708229065, -1.3390934467315674, 0.25867846608161926, 0.497135728597641, -0.4319615066051483, 0.04710456356406212, -0.01602848991751671]}, "next_observation_ref": null, "observation_inline": {"features": [0.05756378173828125, -0.0816802978515625, 0.22458434104919434, 0.1534852832555771, -0.03710265830159187, 0.06220148876309395, -0.9854930639266968, -0.07588358968496323, -0.08773867040872574, 0.141328364610672, -11.355833053588867, -3.6427416801452637, -0.7245013117790222, 0.05788421630859375, -0.084930419921875, 0.24437257647514343, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.12000274658203125, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149978637695312, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.23357778787612915, 0.6194412112236023, 0.10720300674438477, -1.4002288579940796, 0.05730186402797699, 1.8231159448623657, 0.3291076421737671, 0.018767280504107475, 0.018812820315361023, -0.052663031965494156, -0.34448161721229553, -0.0517585389316082, -0.3827923834323883, -0.007017062045633793, 0.06557676941156387, 0.05320366472005844, 0.08125831186771393, 0.04719652235507965]}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-8104f09b9a61f0350b7a9275", "regret": 1.4719169735908508, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5280830264091492}, "progress": 0.5280830264091492, "success": false, "terminal_success": false}, "scene_id": "episode-927", "state_hash": "e54fc27620bd985e834a36d9cbfd51e7c19e3a3addaa1ae5cbe0db2850dc54ad", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 14, "episode_id": 927, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.0650365799665451, 0.020179323852062225, 0.016157075762748718, 0.018532603979110718, 0.020264431834220886, -0.01572340354323387, 0.0016403794288635254]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "expert-00", "horizon": 4, "metadata": {"candidate_type": "expert", "parent_action_id": null, "perturbation": {"scale": 0.0}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[-0.0012338347733020782, 0.011215037666261196, 0.004174817353487015, 0.0280715711414814, -0.023895712569355965, -0.041008904576301575, -1.8896785974502563], [-0.0012396760284900665, 0.011043376289308071, 0.004302147775888443, 0.027750849723815918, -0.023041868582367897, -0.039991527795791626, -1.8912763595581055], [-0.0012105442583560944, 0.011131889186799526, 0.004271794110536575, 0.02720389887690544, -0.022256257012486458, -0.03934475779533386, -1.8928567171096802], [-0.0012048371136188507, 0.011300004087388515, 0.004202146083116531, 0.026678431779146194, -0.021479399874806404, -0.03871263563632965, -1.8944166898727417]]}, "candidate_type": "expert", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "success"}, "group_id": "ms-0dd06f3328be10a87b41", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 40, "episode_id": 306, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.021586894989013672, 0.08672332763671875, 0.25887104868888855, 0.5801208019256592, 0.10925409197807312, 0.03955874592065811, 0.8062000274658203, -0.002732188208028674, 0.002666121581569314, 0.003961485344916582, -3.585866689682007, -1.3616466522216797, 1.7157567739486694, -0.017925262451171875, 0.09138870239257812, 0.2574373185634613, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149988174438477, 0.0, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0036914944648742676, 0.4740299880504608, 0.13952010869979858, -1.5556015968322754, 0.029899585992097855, 1.6493571996688843, 0.599194347858429, 0.018498515710234642, 0.018547164276242256, 0.009454302489757538, 0.014352933503687382, -0.0011319599580019712, 0.02289474755525589, -0.019113052636384964, -0.027648434042930603, 0.004382485523819923, 0.04312581196427345, -0.01634911820292473]}, "next_observation_ref": null, "observation_inline": {"features": [-0.02151775360107422, 0.08679962158203125, 0.2589028477668762, 0.5810320973396301, 0.10721961408853531, 0.03711169213056564, 0.8059331774711609, -0.0021693790331482887, 0.0044317832216620445, 0.0012913995888084173, -4.404217720031738, -1.6034506559371948, 1.673082709312439, -0.017925262451171875, 0.09138870239257812, 0.2574373185634613, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149988174438477, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0014740311307832599, 0.4702717065811157, 0.1398564726114273, -1.5617027282714844, 0.035492729395627975, 1.657006859779358, 0.5982367992401123, 0.018543170765042305, 0.018591824918985367, 0.00987355224788189, 0.016036467626690865, -0.0012336961226537824, 0.025841807946562767, -0.02061443217098713, -0.03178805112838745, 0.002871951786801219, 0.047892410308122635, -0.012868059799075127]}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-668041ce103c4d8116f725d0", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "episode-306", "state_hash": "ac64340647d0b2ffad95bb4aee8a16b9aa5c8b85f204abc4767d191577204dd3", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 40, "episode_id": 306, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-6.914138793945312e-05, -7.62939453125e-05, -3.17990779876709e-05, -0.0009112954139709473, 0.0020344778895378113, 0.0024470537900924683, 0.00026684999465942383]}, "relation_after": {"success": true}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-01", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.05}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.04648727923631668, 0.03843815624713898, -0.0035280357114970684, 0.08209821581840515, -0.09888564795255661, 0.02686968445777893, -1.8896785974502563], [-0.004423877224326134, -0.016078386455774307, 0.041760850697755814, 0.08074580132961273, 0.01544790156185627, 0.05998366326093674, -1.8912763595581055], [0.05282576009631157, 0.0753072202205658, -0.02272140234708786, 0.03253008797764778, 0.0058928728103637695, -0.040231868624687195, -1.8928567171096802], [0.01387692429125309, 0.03260524198412895, 0.046414341777563095, 0.021597987040877342, -0.038969360291957855, -0.08012841641902924, -1.8944166898727417]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "success"}, "group_id": "ms-0dd06f3328be10a87b41", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 40, "episode_id": 306, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.017233261838555336, 0.08947992324829102, 0.2601490914821625, 0.5827146172523499, 0.10880153626203537, 0.041581492871046066, 0.8042864799499512, 0.004722726531326771, 0.021009288728237152, 0.028165917843580246, -3.590604543685913, -1.318467378616333, 1.7617062330245972, -0.017925262451171875, 0.09138870239257812, 0.2574373185634613, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149988174438477, 0.0, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00897540058940649, 0.4901163876056671, 0.1392732560634613, -1.5270425081253052, 0.02789945714175701, 1.6354022026062012, 0.6113757491111755, 0.01849798858165741, 0.01854715496301651, 0.030737388879060745, 0.04143909737467766, 0.011585887521505356, 0.12723331153392792, -0.02289283461868763, -0.12001609057188034, 0.005746885202825069, 0.04338710010051727, -0.016650233417749405]}, "next_observation_ref": null, "observation_inline": {"features": [-0.02151775360107422, 0.08679962158203125, 0.2589028477668762, 0.5810320973396301, 0.10721961408853531, 0.03711169213056564, 0.8059331774711609, -0.0021693790331482887, 0.0044317832216620445, 0.0012913995888084173, -4.404217720031738, -1.6034506559371948, 1.673082709312439, -0.017925262451171875, 0.09138870239257812, 0.2574373185634613, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149988174438477, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0014740311307832599, 0.4702717065811157, 0.1398564726114273, -1.5617027282714844, 0.035492729395627975, 1.657006859779358, 0.5982367992401123, 0.018543170765042305, 0.018591824918985367, 0.00987355224788189, 0.016036467626690865, -0.0012336961226537824, 0.025841807946562767, -0.02061443217098713, -0.03178805112838745, 0.002871951786801219, 0.047892410308122635, -0.012868059799075127]}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-d326a32d3a6978a8e34f340b", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "episode-306", "state_hash": "ac64340647d0b2ffad95bb4aee8a16b9aa5c8b85f204abc4767d191577204dd3", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 40, "episode_id": 306, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.004284491762518883, 0.0026803016662597656, 0.0012462437152862549, 0.0016825199127197266, 0.001581922173500061, 0.004469800740480423, -0.0016466975212097168]}, "relation_after": {"success": true}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-02", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.15}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[-0.13499368727207184, 0.1870827078819275, -0.008503406308591366, 0.14611323177814484, -0.2185002863407135, -0.3317341208457947, -1.8896785974502563], [-0.15860335528850555, 0.1830374151468277, 0.16451376676559448, 0.07755663990974426, -0.14336739480495453, -0.05961192399263382, -1.8912763595581055], [-0.045874617993831635, -0.040614113211631775, -0.3716386556625366, -0.10148505866527557, -0.050772588700056076, 0.18811941146850586, -1.8928567171096802], [0.022906621918082237, 0.22143323719501495, -0.0548538900911808, -0.011224854737520218, -0.6063926815986633, 0.030786916613578796, -1.8944166898727417]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-0dd06f3328be10a87b41", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 40, "episode_id": 306, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.03290557861328125, 0.10357189923524857, 0.25043678283691406, 0.5811446905136108, 0.12157130241394043, 0.048807594925165176, 0.8031867146492004, 0.008455106057226658, 0.12439797818660736, -0.060315605252981186, -3.519138813018799, -0.9467426538467407, 1.7598334550857544, -0.017925262451171875, 0.09138870239257812, 0.2574373185634613, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149988174438477, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.019662532955408096, 0.4746492803096771, 0.15003636479377747, -1.5786688327789307, 0.04043734446167946, 1.644437313079834, 0.6282140016555786, 0.018499158322811127, 0.01854618266224861, 0.13378259539604187, 0.4628874659538269, 0.061133723706007004, 0.5331245064735413, 0.059749796986579895, -0.46774131059646606, 0.22824376821517944, 0.0420861653983593, -0.015514370054006577]}, "next_observation_ref": null, "observation_inline": {"features": [-0.02151775360107422, 0.08679962158203125, 0.2589028477668762, 0.5810320973396301, 0.10721961408853531, 0.03711169213056564, 0.8059331774711609, -0.0021693790331482887, 0.0044317832216620445, 0.0012913995888084173, -4.404217720031738, -1.6034506559371948, 1.673082709312439, -0.017925262451171875, 0.09138870239257812, 0.2574373185634613, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149988174438477, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0014740311307832599, 0.4702717065811157, 0.1398564726114273, -1.5617027282714844, 0.035492729395627975, 1.657006859779358, 0.5982367992401123, 0.018543170765042305, 0.018591824918985367, 0.00987355224788189, 0.016036467626690865, -0.0012336961226537824, 0.025841807946562767, -0.02061443217098713, -0.03178805112838745, 0.002871951786801219, 0.047892410308122635, -0.012868059799075127]}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-a71be3fd52f3a031e6e469ab", "regret": 1.4249740242958069, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5750259757041931}, "progress": 0.5750259757041931, "success": false, "terminal_success": false}, "scene_id": "episode-306", "state_hash": "ac64340647d0b2ffad95bb4aee8a16b9aa5c8b85f204abc4767d191577204dd3", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 40, "episode_id": 306, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.011387825012207031, 0.016772277653217316, -0.008466064929962158, 0.00011259317398071289, 0.01435168832540512, 0.011695902794599533, -0.0027464628219604492]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "wrong_direction-03", "horizon": 4, "metadata": {"candidate_type": "wrong_direction", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.35}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[0.19024965167045593, 0.6285306811332703, -0.16619160771369934, 0.061025526374578476, -0.27083051204681396, -0.45269888639450073, -1.8896785974502563], [-0.25082746148109436, -0.1097061038017273, 0.4787054657936096, 0.028524911031126976, -0.2997325658798218, 0.009665712714195251, -1.8912763595581055], [0.07493942975997925, -0.2255493402481079, 0.40440356731414795, -0.6337181925773621, -0.09699687361717224, 0.19342836737632751, -1.8928567171096802], [-0.46965622901916504, 0.13773880898952484, 0.4567147195339203, 0.18546336889266968, -0.6130353808403015, -0.29358088970184326, -1.8944166898727417]]}, "candidate_type": "wrong_direction", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-0dd06f3328be10a87b41", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 40, "episode_id": 306, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [-0.041951991617679596, 0.09829268604516983, 0.2944316565990448, 0.5736565589904785, 0.13929583132266998, 0.051751330494880676, 0.8055039644241333, -0.2843794524669647, 0.02225225232541561, 0.3218134641647339, -3.5614163875579834, -1.1465952396392822, 1.9559825658798218, -0.017925262451171875, 0.09138870239257812, 0.2574373185634613, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149988174438477, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.004470625426620245, 0.432257741689682, 0.15540356934070587, -1.5309404134750366, 0.05630800873041153, 1.5226715803146362, 0.6056816577911377, 0.018502380698919296, 0.018546264618635178, 0.005965514108538628, -0.9111679196357727, 0.0693676769733429, -0.5763601660728455, 0.0357525460422039, -0.642650306224823, 0.10394679009914398, 0.0402049720287323, -0.013789701275527477]}, "next_observation_ref": null, "observation_inline": {"features": [-0.02151775360107422, 0.08679962158203125, 0.2589028477668762, 0.5810320973396301, 0.10721961408853531, 0.03711169213056564, 0.8059331774711609, -0.0021693790331482887, 0.0044317832216620445, 0.0012913995888084173, -4.404217720031738, -1.6034506559371948, 1.673082709312439, -0.017925262451171875, 0.09138870239257812, 0.2574373185634613, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999988555908203, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6149988174438477, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0014740311307832599, 0.4702717065811157, 0.1398564726114273, -1.5617027282714844, 0.035492729395627975, 1.657006859779358, 0.5982367992401123, 0.018543170765042305, 0.018591824918985367, 0.00987355224788189, 0.016036467626690865, -0.0012336961226537824, 0.025841807946562767, -0.02061443217098713, -0.03178805112838745, 0.002871951786801219, 0.047892410308122635, -0.012868059799075127]}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-9d9218d46673fca9a4bfd160", "regret": 1.4484829902648926, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5515170097351074}, "progress": 0.5515170097351074, "success": false, "terminal_success": false}, "scene_id": "episode-306", "state_hash": "ac64340647d0b2ffad95bb4aee8a16b9aa5c8b85f204abc4767d191577204dd3", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 40, "episode_id": 306, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [-0.020434238016605377, 0.01149306446313858, 0.03552880883216858, -0.007375538349151611, 0.032076217234134674, 0.014639638364315033, -0.0004292130470275879]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "expert-00", "horizon": 4, "metadata": {"candidate_type": "expert", "parent_action_id": null, "perturbation": {"scale": 0.0}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[1.0171103477478027, -0.3579079508781433, 0.889896810054779, -0.6152170896530151, -0.03146065026521683, -1.4647682905197144, -2.855980634689331], [0.8834500312805176, -0.3640652000904083, 0.746472954750061, -0.5658611059188843, -0.1270078867673874, -1.290830135345459, -2.445239543914795], [0.6176306009292603, -0.3516477644443512, 0.3665168881416321, -0.4530562460422516, 0.03565755486488342, -1.0136936902999878, -2.291059970855713], [0.26555654406547546, -0.23055918514728546, -0.09549272060394287, -0.25556519627571106, 0.26079103350639343, -0.6109674572944641, -2.287905693054199]]}, "candidate_type": "expert", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-5fd2e802ba562ff84bac", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 5, "episode_id": 425, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [0.06430196762084961, 0.0353388786315918, 0.1276669055223465, 0.6559216976165771, 0.019681734964251518, -0.028444945812225342, 0.7540359497070312, 0.1826135516166687, -0.22684068977832794, -0.019537299871444702, -1.7574620246887207, 0.07861790806055069, -8.978490829467773, 0.078765869140625, 0.006859779357910156, 0.11012141406536102, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.01831449382007122, 0.7055075168609619, 0.06799524277448654, -1.5459892749786377, 0.023344341665506363, 2.120623826980591, 0.5953785181045532, 0.018743112683296204, 0.018780475482344627, -0.33825820684432983, 0.4377683103084564, -0.002482358831912279, 0.6650996208190918, -0.008402673527598381, -0.03704028204083443, -0.650389552116394, 0.06159944832324982, 0.011868367902934551]}, "next_observation_ref": null, "observation_inline": {"features": [-0.04798126220703125, 0.09635448455810547, 0.030638137832283974, 0.7058821320533752, 0.016201220452785492, 0.0047178687527775764, 0.7081282138824463, 0.5693716406822205, -0.3196718096733093, 0.5425202250480652, -4.5779266357421875, 0.5358936190605164, -12.457721710205078, 0.078765869140625, 0.006859779357910156, 0.11012141406536102, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.10317341983318329, 0.63921058177948, 0.055885691195726395, -1.9718096256256104, 0.028736816719174385, 2.4467127323150635, 0.8287563323974609, 0.018879009410738945, 0.018917914479970932, -0.5789626240730286, -0.06402236968278885, -0.06250546872615814, 1.7845169305801392, -0.21395540237426758, -1.6672121286392212, -1.0036355257034302, 0.08324004709720612, 0.05095384642481804]}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-586c5011deb9f0c161521456", "regret": 0.0, "reward": {"dense_components": {"maniskill_normalized_dense": 0.559394359588623}, "progress": 0.559394359588623, "success": false, "terminal_success": false}, "scene_id": "episode-425", "state_hash": "4a553b30e240eac704cc850024c66c3c21142951edf75a051671eb6ae8020113", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 5, "episode_id": 425, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.11228322982788086, -0.06101560592651367, 0.09702876955270767, -0.049960434436798096, 0.0034805145114660263, -0.033162813633680344, 0.04590773582458496]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-01", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.05}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[1.0, -0.3429911732673645, 0.8894038796424866, -0.5931570529937744, 0.004591796547174454, -1.0, -2.855980634689331], [0.8689300417900085, -0.356919527053833, 0.7192750573158264, -0.5725336670875549, -0.06211429834365845, -1.0, -2.445239543914795], [0.7139637470245361, -0.2576805353164673, 0.28084492683410645, -0.46010738611221313, 0.052792131900787354, -1.0, -2.291059970855713], [0.22850251197814941, -0.2424299716949463, -0.058533817529678345, -0.28113189339637756, 0.35212573409080505, -0.5964687466621399, -2.287905693054199]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-5fd2e802ba562ff84bac", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 5, "episode_id": 425, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [0.06599246710538864, 0.03946256637573242, 0.1237686350941658, 0.6573014259338379, 0.02149335853755474, -0.0343070887029171, 0.7525396347045898, 0.15415030717849731, -0.2235499769449234, -0.003843412734568119, -1.695529580116272, 0.15544819831848145, -8.982131958007812, 0.078765869140625, 0.006859779357910156, 0.11012141406536102, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.02013063058257103, 0.7146686315536499, 0.07452516257762909, -1.5427576303482056, 0.0319070965051651, 2.1318724155426025, 0.5963914394378662, 0.01874232292175293, 0.018780682235956192, -0.35129258036613464, 0.30672940611839294, 0.013116098940372467, 0.4717216491699219, 0.010535335168242455, 0.050582531839609146, -0.6681116223335266, 0.06209883838891983, 0.011282410472631454]}, "next_observation_ref": null, "observation_inline": {"features": [-0.04798126220703125, 0.09635448455810547, 0.030638137832283974, 0.7058821320533752, 0.016201220452785492, 0.0047178687527775764, 0.7081282138824463, 0.5693716406822205, -0.3196718096733093, 0.5425202250480652, -4.5779266357421875, 0.5358936190605164, -12.457721710205078, 0.078765869140625, 0.006859779357910156, 0.11012141406536102, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.10317341983318329, 0.63921058177948, 0.055885691195726395, -1.9718096256256104, 0.028736816719174385, 2.4467127323150635, 0.8287563323974609, 0.018879009410738945, 0.018917914479970932, -0.5789626240730286, -0.06402236968278885, -0.06250546872615814, 1.7845169305801392, -0.21395540237426758, -1.6672121286392212, -1.0036355257034302, 0.08324004709720612, 0.05095384642481804]}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-b07a2088c791808508257b5c", "regret": 0.0011009573936462402, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5582934021949768}, "progress": 0.5582934021949768, "success": false, "terminal_success": false}, "scene_id": "episode-425", "state_hash": "4a553b30e240eac704cc850024c66c3c21142951edf75a051671eb6ae8020113", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 5, "episode_id": 425, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.11397372931241989, -0.05689191818237305, 0.09313049912452698, -0.048580706119537354, 0.005292138084769249, -0.0390249565243721, 0.044411420822143555]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "near_miss-02", "horizon": 4, "metadata": {"candidate_type": "near_miss", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.15}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[1.0, -0.14051899313926697, 0.9838389754295349, -0.5598240494728088, -0.081131711602211, -1.0, -2.855980634689331], [1.0, -0.39457690715789795, 0.5098930597305298, -0.5099183917045593, -0.2985689043998718, -1.0, -2.445239543914795], [0.5757578611373901, -0.30942708253860474, 0.5588890910148621, -0.41068845987319946, 0.156560480594635, -1.0, -2.291059970855713], [0.2621767222881317, -0.21192748844623566, 0.033844202756881714, -0.23815609514713287, 0.3814028799533844, -0.6865973472595215, -2.287905693054199]]}, "candidate_type": "near_miss", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-5fd2e802ba562ff84bac", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 5, "episode_id": 425, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [0.06548261642456055, 0.04467225819826126, 0.1319110095500946, 0.6563927531242371, 0.022940821945667267, -0.028012951835989952, 0.7535499930381775, 0.19190256297588348, -0.20972512662410736, 0.08356381952762604, -1.8340650796890259, 0.0021535081323236227, -8.909250259399414, 0.078765869140625, 0.006859779357910156, 0.11012141406536102, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.009607017040252686, 0.7071123123168945, 0.07287716865539551, -1.5308021306991577, 0.025880735367536545, 2.1023645401000977, 0.6080112457275391, 0.018743004649877548, 0.01878095231950283, -0.3165114223957062, 0.2424970269203186, 0.00544086704030633, 0.596380889415741, -0.03462626785039902, -0.05700035020709038, -0.6571155190467834, 0.062031716108322144, 0.011594417504966259]}, "next_observation_ref": null, "observation_inline": {"features": [-0.04798126220703125, 0.09635448455810547, 0.030638137832283974, 0.7058821320533752, 0.016201220452785492, 0.0047178687527775764, 0.7081282138824463, 0.5693716406822205, -0.3196718096733093, 0.5425202250480652, -4.5779266357421875, 0.5358936190605164, -12.457721710205078, 0.078765869140625, 0.006859779357910156, 0.11012141406536102, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.10317341983318329, 0.63921058177948, 0.055885691195726395, -1.9718096256256104, 0.028736816719174385, 2.4467127323150635, 0.8287563323974609, 0.018879009410738945, 0.018917914479970932, -0.5789626240730286, -0.06402236968278885, -0.06250546872615814, 1.7845169305801392, -0.21395540237426758, -1.6672121286392212, -1.0036355257034302, 0.08324004709720612, 0.05095384642481804]}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-52a7d62f1a75d9cc97806dd4", "regret": 0.008802294731140137, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5505920648574829}, "progress": 0.5505920648574829, "success": false, "terminal_success": false}, "scene_id": "episode-425", "state_hash": "4a553b30e240eac704cc850024c66c3c21142951edf75a051671eb6ae8020113", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 5, "episode_id": 425, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.1134638786315918, -0.05168222635984421, 0.10127287358045578, -0.049489378929138184, 0.006739601492881775, -0.0327308215200901, 0.0454217791557312]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} +{"action_chunk": {"action_id": "wrong_direction-03", "horizon": 4, "metadata": {"candidate_type": "wrong_direction", "parent_action_id": "expert", "perturbation": {"kind": "gaussian_action_offset", "scale": 0.35}, "source": "measured_physics_branch"}, "representation": "maniskill_pd_ee_delta_pose", "skill_type": "pick_cube", "values": [[1.0, -0.21270470321178436, 0.45247530937194824, -0.5537785887718201, -0.14358752965927124, -1.0, -2.855980634689331], [1.0, -0.49071574211120605, 0.44813644886016846, -0.6979219913482666, -0.07863777875900269, -0.7630618214607239, -2.445239543914795], [0.5595539808273315, -0.18630513548851013, 0.8472696542739868, -0.2663135528564453, 0.40965500473976135, -1.0, -2.291059970855713], [0.5354238152503967, -0.2508507966995239, 0.2805512249469757, -0.6068110466003418, -0.01205417513847351, -0.16691139340400696, -2.287905693054199]]}, "candidate_type": "wrong_direction", "failure": {"language_explanation": null, "metadata": {}, "symbolic_reason": "ManiSkill normalized dense reward and success flag.", "type": "partial_success"}, "group_id": "ms-5fd2e802ba562ff84bac", "instruction": "Pick up the cube and move it to the goal position.", "instruction_family": {"benchmark": "ManiSkill3", "environment": "PickCube-v1"}, "metadata": {"backend": "maniskill", "branch_execution": "parallel", "branch_step": 5, "episode_id": 425, "measurement": "physical_simulation"}, "next_observation_inline": {"features": [0.07287641614675522, 0.043675173074007034, 0.12325441092252731, 0.6642699837684631, 0.03432377427816391, -0.03257348760962486, 0.7459933757781982, 0.3569144904613495, -0.21896211802959442, 0.28327423334121704, -1.6317018270492554, 0.343574583530426, -9.186544418334961, 0.078765869140625, 0.006859779357910156, 0.11012141406536102, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 2.473825588822365e-10, -4.0978193283081055e-08, 1.000000238418579, 2.722068126459476e-10, -3.3057123705049207e-09, -1.7675326480226516e-11, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.021813329309225082, 0.750497043132782, 0.08064093440771103, -1.4783823490142822, 0.0442669503390789, 2.082799196243286, 0.6105800867080688, 0.018740709871053696, 0.018783776089549065, -0.43198972940444946, 0.5641388893127441, 0.08223390579223633, 1.741620421409607, 0.20348632335662842, -1.0091482400894165, -0.5808548927307129, 0.06530271470546722, 0.008871076628565788]}, "next_observation_ref": null, "observation_inline": {"features": [-0.04798126220703125, 0.09635448455810547, 0.030638137832283974, 0.7058821320533752, 0.016201220452785492, 0.0047178687527775764, 0.7081282138824463, 0.5693716406822205, -0.3196718096733093, 0.5425202250480652, -4.5779266357421875, 0.5358936190605164, -12.457721710205078, 0.078765869140625, 0.006859779357910156, 0.11012141406536102, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11999893188476562, 0.0, -0.9196429252624512, 0.7071067690849304, 0.0, 0.0, 0.7071067690849304, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.6150016784667969, 0.0, -1.862645149230957e-08, 1.0000001192092896, 2.720872971373467e-10, -3.2895179913339234e-09, -3.588018770983581e-12, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.10317341983318329, 0.63921058177948, 0.055885691195726395, -1.9718096256256104, 0.028736816719174385, 2.4467127323150635, 0.8287563323974609, 0.018879009410738945, 0.018917914479970932, -0.5789626240730286, -0.06402236968278885, -0.06250546872615814, 1.7845169305801392, -0.21395540237426758, -1.6672121286392212, -1.0036355257034302, 0.08324004709720612, 0.05095384642481804]}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-246a7910d27b6a3dafd58211", "regret": 0.0029760003089904785, "reward": {"dense_components": {"maniskill_normalized_dense": 0.5564183592796326}, "progress": 0.5564183592796326, "success": false, "terminal_success": false}, "scene_id": "episode-425", "state_hash": "4a553b30e240eac704cc850024c66c3c21142951edf75a051671eb6ae8020113", "structured_effect": {"articulation_delta": {}, "contact_events": [], "grasp_success": null, "metadata": {"branch_step": 5, "episode_id": 425, "source": "ManiSkill3 exact state restore"}, "moved_objects": ["cube"], "object_pose_delta": {"cube": [0.12085767835378647, -0.052679311484098434, 0.09261627495288849, -0.04161214828491211, 0.018122553825378418, -0.037291355431079865, 0.03786516189575195]}, "relation_after": {"success": false}, "relation_before": {"success": false}, "symbolic_after": {}, "symbolic_before": {}}, "task_id": "PickCube-v1", "version": "0.1"} diff --git a/outputs/manifest_execute_smoke.yaml b/outputs/manifest_execute_smoke.yaml new file mode 100644 index 0000000000000000000000000000000000000000..3f4ae077eb0a223f96ce24e971ba5bb04743747e --- /dev/null +++ b/outputs/manifest_execute_smoke.yaml @@ -0,0 +1,53 @@ + +name: execute_smoke +run_dir: outputs/manifest_execute_smoke_run +dataset_generation: + backend: toy + simulator_params: {} + task_source: builtins + num_tasks: 1 + num_states_per_task: 1 + k: 2 + shard_size: 8 + output_path: outputs/manifest_execute_smoke_cil + seed: 0 +vlm_annotation: + enabled: false + cache_path: outputs/manifest_execute_smoke_cache.json + model_env_var: OPENCLAUDE_MODEL +training: + model_size: tiny + hidden_dim: 32 + batch_groups: 1 + records_per_group: 2 + learning_rate: 0.001 + loss_weights: + bc: 1.0 + effect: 1.0 + success: 1.0 + progress: 1.0 + rank: 1.0 + regret: 0.5 + epochs: 1 + steps: null + checkpoint_path: outputs/manifest_execute_smoke_train/best.pt +evaluation: + causalstress: + enabled: true + backend: toy + num_tasks: 1 + k: 2 + output_path: outputs/manifest_execute_smoke_eval/causalstress.json + libero: {enabled: false, placeholder: true} + maniskill: {enabled: false, placeholder: true} + simpler: {enabled: false, placeholder: true} +baselines: + enabled: false + output_root: outputs/manifest_execute_smoke_baselines + names: [] +scaling_sweeps: + enabled: false + output_path: outputs/manifest_execute_smoke_scaling + total_records: 4 + k_values: [1, 2] + epochs: 1 diff --git a/outputs/manifest_execute_smoke_cil/group_index.jsonl b/outputs/manifest_execute_smoke_cil/group_index.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..a238b999508cdd1542e216618687e8f8b2804411 --- /dev/null +++ b/outputs/manifest_execute_smoke_cil/group_index.jsonl @@ -0,0 +1 @@ +{"candidate_type_counts": {"expert": 1, "near_miss": 1}, "group_id": "toy_pick_red_mug-s0000-17e042f49531", "instruction": "Pick up the red mug.", "max_reward": 1.0, "num_records": 2, "record_ids": ["rec-9f8b0a943e9c75f4f9d349a9", "rec-bf2c857463b59e1a818dc2dd"], "scene_id": "toy_pick_red_mug-scene-0000", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": "states/toy_pick_red_mug-s0000-17e042f49531.pkl", "state_hash": "17e042f495319a9cfb7cc0550bf1496f49a50e85f317c587adc52ca96436d92f", "success_count": 2, "task_id": "toy_pick_red_mug"} diff --git a/outputs/manifest_execute_smoke_cil/manifest.json b/outputs/manifest_execute_smoke_cil/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..365ac8b73d335ba10478f5e953ad51e335af882d --- /dev/null +++ b/outputs/manifest_execute_smoke_cil/manifest.json @@ -0,0 +1,31 @@ +{ + "backend": "toy", + "created_at": "2026-06-19T13:36:15.550715+00:00", + "dataset_name": "cil_toy", + "format": "dovla_cil", + "group_count": 1, + "group_index_path": "group_index.jsonl", + "index_format": "jsonl", + "k": 2, + "num_groups": 1, + "num_records": 2, + "record_count": 2, + "record_index_path": "record_index.jsonl", + "schema_version": "0.1", + "seed": 0, + "shard_count": 1, + "shard_format": "jsonl", + "shard_size": 8, + "shards": [ + { + "format": "jsonl", + "group_ids": [ + "toy_pick_red_mug-s0000-17e042f49531" + ], + "path": "shards/shard_000000.jsonl", + "record_count": 2 + } + ], + "task_count": 1, + "version": "0.1" +} diff --git a/outputs/manifest_execute_smoke_cil/metadata.json b/outputs/manifest_execute_smoke_cil/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..365ac8b73d335ba10478f5e953ad51e335af882d --- /dev/null +++ b/outputs/manifest_execute_smoke_cil/metadata.json @@ -0,0 +1,31 @@ +{ + "backend": "toy", + "created_at": "2026-06-19T13:36:15.550715+00:00", + "dataset_name": "cil_toy", + "format": "dovla_cil", + "group_count": 1, + "group_index_path": "group_index.jsonl", + "index_format": "jsonl", + "k": 2, + "num_groups": 1, + "num_records": 2, + "record_count": 2, + "record_index_path": "record_index.jsonl", + "schema_version": "0.1", + "seed": 0, + "shard_count": 1, + "shard_format": "jsonl", + "shard_size": 8, + "shards": [ + { + "format": "jsonl", + "group_ids": [ + "toy_pick_red_mug-s0000-17e042f49531" + ], + "path": "shards/shard_000000.jsonl", + "record_count": 2 + } + ], + "task_count": 1, + "version": "0.1" +} diff --git a/outputs/manifest_execute_smoke_cil/record_index.jsonl b/outputs/manifest_execute_smoke_cil/record_index.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..4a6073b6d10ac3240a9f9df046ec48f1152e618e --- /dev/null +++ b/outputs/manifest_execute_smoke_cil/record_index.jsonl @@ -0,0 +1,2 @@ +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_pick_red_mug-s0000-17e042f49531", "rank_within_group": 0, "record_id": "rec-9f8b0a943e9c75f4f9d349a9", "regret": 0.0, "reward_progress": 1.0, "row_index": 0, "shard_path": "shards/shard_000000.jsonl", "state_hash": "17e042f495319a9cfb7cc0550bf1496f49a50e85f317c587adc52ca96436d92f", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_pick_red_mug-s0000-17e042f49531", "rank_within_group": 1, "record_id": "rec-bf2c857463b59e1a818dc2dd", "regret": 0.0, "reward_progress": 1.0, "row_index": 1, "shard_path": "shards/shard_000000.jsonl", "state_hash": "17e042f495319a9cfb7cc0550bf1496f49a50e85f317c587adc52ca96436d92f", "success": true, "task_id": "toy_pick_red_mug"} diff --git a/outputs/manifest_execute_smoke_cil/shards/shard_000000.jsonl b/outputs/manifest_execute_smoke_cil/shards/shard_000000.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..cfedaff1d44d418c2c2dbbc09e7a44dea68de5ff --- /dev/null +++ b/outputs/manifest_execute_smoke_cil/shards/shard_000000.jsonl @@ -0,0 +1,2 @@ +{"action_chunk": {"action_id": "expert-0", "horizon": 2, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0000-17e042f49531", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 3269563184, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0000-17e042f49531.pkl", "state_index": 0, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-9f8b0a943e9c75f4f9d349a9", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0000", "state_hash": "17e042f495319a9cfb7cc0550bf1496f49a50e85f317c587adc52ca96436d92f", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.15]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-3269563184", "horizon": 3, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": "expert-grasp-red_mug", "perturbation": {"dx": -0.08, "dy": -0.1, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "move_to", "position": [-0.08, -0.1, 0.0]}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0000-17e042f49531", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 3269563184, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0000-17e042f49531.pkl", "state_index": 0, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.08, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.08, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.08, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.08, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-bf2c857463b59e1a818dc2dd", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0000", "state_hash": "17e042f495319a9cfb7cc0550bf1496f49a50e85f317c587adc52ca96436d92f", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.3236, -0.0913, -0.03]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.08, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.08, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} diff --git a/outputs/manifest_execute_smoke_eval/causalstress.json b/outputs/manifest_execute_smoke_eval/causalstress.json new file mode 100644 index 0000000000000000000000000000000000000000..c50751d2620e3fe4b3fbf0208b37445633da7c2d --- /dev/null +++ b/outputs/manifest_execute_smoke_eval/causalstress.json @@ -0,0 +1,50 @@ +{ + "categories": [ + "minimal_language_change" + ], + "config": { + "backend": "toy", + "checkpoint": "outputs/manifest_execute_smoke_train/best.pt", + "k": 2, + "num_tasks": 1, + "seed": 0 + }, + "effect_prediction_mae": 0.20071302912547254, + "instruction_switch_accuracy": 0.0, + "ndcg_at_k": 0.6309297535714574, + "num_groups": 1, + "num_records": 2, + "pairwise_ranking_accuracy": 0.0, + "per_category": { + "minimal_language_change": { + "effect_mae": 0.20071302912547254, + "failure_rate": 0.5, + "instruction_switch": 0.0, + "ndcg": 0.6309297535714574, + "pair_correct": 0.0, + "progress_mae": 0.5025858283042908, + "regret_ece": 0.9978629350662231, + "selected_failure_rate": 1.0, + "selected_success": 0.0, + "success": 0.5, + "success_pred": 0.5, + "top1": 0.0 + } + }, + "regret_calibration_error": 0.9978629350662231, + "success_prediction_accuracy": 0.5, + "target_confusion_matrix": { + "red_mug": { + "blue_mug": 1 + } + }, + "target_confusion_matrix_by_category": { + "minimal_language_change": { + "red_mug": { + "blue_mug": 1 + } + } + }, + "task_success_rate": 0.0, + "top1_action_selection": 0.0 +} diff --git a/outputs/manifest_execute_smoke_run/planned_jobs.json b/outputs/manifest_execute_smoke_run/planned_jobs.json new file mode 100644 index 0000000000000000000000000000000000000000..fdbdb2271edd9b2abc4ae4d076d462a3f178432c --- /dev/null +++ b/outputs/manifest_execute_smoke_run/planned_jobs.json @@ -0,0 +1,121 @@ +[ + { + "command": [ + "python", + "scripts/generate_cil.py", + "--backend", + "toy", + "--out", + "outputs/manifest_execute_smoke_cil", + "--num-tasks", + "1", + "--num-states-per-task", + "1", + "--k", + "2", + "--seed", + "0", + "--shard-size", + "8", + "--inline-observations" + ], + "local_executable": true, + "name": "generate_cil", + "placeholder": false, + "reason": "", + "shell_command": "python scripts/generate_cil.py --backend toy --out outputs/manifest_execute_smoke_cil --num-tasks 1 --num-states-per-task 1 --k 2 --seed 0 --shard-size 8 --inline-observations", + "stage": "dataset_generation" + }, + { + "command": [ + "python", + "scripts/train_dovla.py", + "--dataset", + "outputs/manifest_execute_smoke_cil", + "--out", + "outputs/manifest_execute_smoke_train", + "--epochs", + "1", + "--batch-groups", + "1", + "--records-per-group", + "2", + "--hidden-dim", + "32", + "--lr", + "0.001", + "--device", + "auto", + "--seed", + "0" + ], + "local_executable": true, + "name": "train_dovla", + "placeholder": false, + "reason": "local execution requires generated dataset and torch for full training", + "shell_command": "python scripts/train_dovla.py --dataset outputs/manifest_execute_smoke_cil --out outputs/manifest_execute_smoke_train --epochs 1 --batch-groups 1 --records-per-group 2 --hidden-dim 32 --lr 0.001 --device auto --seed 0", + "stage": "training" + }, + { + "command": [ + "python", + "scripts/eval_causalstress.py", + "--checkpoint", + "outputs/manifest_execute_smoke_train/best.pt", + "--backend", + "toy", + "--out", + "outputs/manifest_execute_smoke_eval/causalstress.json", + "--num-tasks", + "1", + "--k", + "2", + "--seed", + "0", + "--device", + "auto" + ], + "local_executable": true, + "name": "eval_causalstress", + "placeholder": false, + "reason": "", + "shell_command": "python scripts/eval_causalstress.py --checkpoint outputs/manifest_execute_smoke_train/best.pt --backend toy --out outputs/manifest_execute_smoke_eval/causalstress.json --num-tasks 1 --k 2 --seed 0 --device auto", + "stage": "evaluation" + }, + { + "command": [ + "echo", + "libero evaluation placeholder" + ], + "local_executable": false, + "name": "eval_libero", + "placeholder": true, + "reason": "LIBERO evaluation is a placeholder in this scaffold", + "shell_command": "echo 'libero evaluation placeholder'", + "stage": "evaluation" + }, + { + "command": [ + "echo", + "maniskill evaluation placeholder" + ], + "local_executable": false, + "name": "eval_maniskill", + "placeholder": true, + "reason": "MANISKILL evaluation is a placeholder in this scaffold", + "shell_command": "echo 'maniskill evaluation placeholder'", + "stage": "evaluation" + }, + { + "command": [ + "echo", + "simpler evaluation placeholder" + ], + "local_executable": false, + "name": "eval_simpler", + "placeholder": true, + "reason": "SIMPLER evaluation is a placeholder in this scaffold", + "shell_command": "echo 'simpler evaluation placeholder'", + "stage": "evaluation" + } +] diff --git a/outputs/manifest_execute_smoke_run/resolved_manifest.yaml b/outputs/manifest_execute_smoke_run/resolved_manifest.yaml new file mode 100644 index 0000000000000000000000000000000000000000..c6b28462241730f3eb586177170a38f176f05454 --- /dev/null +++ b/outputs/manifest_execute_smoke_run/resolved_manifest.yaml @@ -0,0 +1,60 @@ +name: execute_smoke +run_dir: outputs/manifest_execute_smoke_run +dataset_generation: + backend: toy + simulator_params: {} + task_source: builtins + num_tasks: 1 + num_states_per_task: 1 + k: 2 + shard_size: 8 + output_path: outputs/manifest_execute_smoke_cil + seed: 0 +vlm_annotation: + enabled: false + cache_path: outputs/manifest_execute_smoke_cache.json + model_env_var: OPENCLAUDE_MODEL +training: + model_size: tiny + hidden_dim: 32 + batch_groups: 1 + records_per_group: 2 + learning_rate: 0.001 + loss_weights: + bc: 1.0 + effect: 1.0 + success: 1.0 + progress: 1.0 + rank: 1.0 + regret: 0.5 + epochs: 1 + steps: null + checkpoint_path: outputs/manifest_execute_smoke_train/best.pt +evaluation: + causalstress: + enabled: true + backend: toy + num_tasks: 1 + k: 2 + output_path: outputs/manifest_execute_smoke_eval/causalstress.json + libero: + enabled: false + placeholder: true + maniskill: + enabled: false + placeholder: true + simpler: + enabled: false + placeholder: true +baselines: + enabled: false + output_root: outputs/manifest_execute_smoke_baselines + names: [] +scaling_sweeps: + enabled: false + output_path: outputs/manifest_execute_smoke_scaling + total_records: 4 + k_values: + - 1 + - 2 + epochs: 1 diff --git a/outputs/manifest_execute_smoke_train/best.pt b/outputs/manifest_execute_smoke_train/best.pt new file mode 100644 index 0000000000000000000000000000000000000000..2fc4ddab7c289bbe374246a371f8e47697710f3a --- /dev/null +++ b/outputs/manifest_execute_smoke_train/best.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:055db59e0b4f5c55c13c01ef50ff6baadb1a0a021953833c946c47f8c6b3dbec +size 1778987 diff --git a/outputs/manifest_execute_smoke_train/latest.pt b/outputs/manifest_execute_smoke_train/latest.pt new file mode 100644 index 0000000000000000000000000000000000000000..9343187cae4401d8ff53795393ec7961628f882c --- /dev/null +++ b/outputs/manifest_execute_smoke_train/latest.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:493e48706605481ef9f19b21925cfbe9ecacf16196f098ee1a090dd5ae934033 +size 1784427 diff --git a/outputs/manifest_execute_smoke_train/metrics.json b/outputs/manifest_execute_smoke_train/metrics.json new file mode 100644 index 0000000000000000000000000000000000000000..7c9db2af5e2909e75f5a7315d570c81e8ef90931 --- /dev/null +++ b/outputs/manifest_execute_smoke_train/metrics.json @@ -0,0 +1,43 @@ +{ + "best": { + "bc_loss": 0.018780866637825966, + "field_effect_loss": 0.0023088622838258743, + "field_potential_loss": 0.00017760561604518443, + "lattice_edges": 1.0, + "progress_mae": 0.3575172424316406, + "rank_acc": 0.0, + "rank_loss": 0.0, + "regret_mae": 0.009423524141311646, + "success_accuracy": 1.0, + "total_loss": 0.18831059336662292 + }, + "history": [ + { + "epoch": 1, + "train": { + "bc_loss": 0.02738523855805397, + "field_effect_loss": 0.0023597392719238997, + "field_potential_loss": 0.0001408590323990211, + "lattice_edges": 1.0, + "progress_mae": 0.451617568731308, + "rank_acc": 0.0, + "rank_loss": 0.0, + "regret_mae": 0.008392229676246643, + "success_accuracy": 1.0, + "total_loss": 0.25132647156715393 + }, + "val": { + "bc_loss": 0.018780866637825966, + "field_effect_loss": 0.0023088622838258743, + "field_potential_loss": 0.00017760561604518443, + "lattice_edges": 1.0, + "progress_mae": 0.3575172424316406, + "rank_acc": 0.0, + "rank_loss": 0.0, + "regret_mae": 0.009423524141311646, + "success_accuracy": 1.0, + "total_loss": 0.18831059336662292 + } + } + ] +} diff --git a/outputs/manifest_execute_smoke_train/resolved_config.json b/outputs/manifest_execute_smoke_train/resolved_config.json new file mode 100644 index 0000000000000000000000000000000000000000..4fd6e2cb287493e2c430d897dbb53e2ad1060165 --- /dev/null +++ b/outputs/manifest_execute_smoke_train/resolved_config.json @@ -0,0 +1,43 @@ +{ + "action_dim": 8, + "action_horizon": 4, + "batch_groups": 1, + "batch_size_groups": null, + "dataset_dir": "outputs/manifest_execute_smoke_cil", + "device": "auto", + "effect_dim": 32, + "epochs": 1, + "hidden_dim": 32, + "lang_dim": 64, + "lattice_neighbors": 2, + "learning_rate": 0.001, + "losses": { + "bc": 1.0, + "bc_best_action": 1.0, + "causal_contrastive": 0.5, + "contrast": 0.5, + "effect": 1.0, + "field_anchor": 0.25, + "field_effect": 1.0, + "field_potential": 1.0, + "forward_effect_prediction": 1.0, + "lang_pair": 0.25, + "language_minimal_pair": 0.25, + "progress": 1.0, + "rank": 1.0, + "regret": 0.5, + "regret_prediction": 0.5, + "same_state_pairwise_ranking": 1.0, + "success": 1.0 + }, + "lr": null, + "objective": "lattice_field", + "obs_dim": 32, + "output_dir": "outputs/manifest_execute_smoke_train", + "pair_count_per_group": 8, + "records_per_group": 2, + "seed": 0, + "val_fraction": 0.2, + "wandb": false, + "weight_decay": 0.0 +} diff --git a/outputs/manifest_smoke/planned_jobs.json b/outputs/manifest_smoke/planned_jobs.json new file mode 100644 index 0000000000000000000000000000000000000000..d61af17a3871b2e876ce4bbe9844f3203ec6830c --- /dev/null +++ b/outputs/manifest_smoke/planned_jobs.json @@ -0,0 +1,159 @@ +[ + { + "command": [ + "python", + "scripts/generate_cil.py", + "--backend", + "toy", + "--out", + "data/scaling_seed_dataset", + "--num-tasks", + "10", + "--num-states-per-task", + "128", + "--k", + "8", + "--seed", + "0", + "--shard-size", + "1000", + "--inline-observations" + ], + "local_executable": true, + "name": "generate_cil", + "placeholder": false, + "reason": "", + "shell_command": "python scripts/generate_cil.py --backend toy --out data/scaling_seed_dataset --num-tasks 10 --num-states-per-task 128 --k 8 --seed 0 --shard-size 1000 --inline-observations", + "stage": "dataset_generation" + }, + { + "command": [ + "python", + "scripts/train_dovla.py", + "--dataset", + "data/scaling_seed_dataset", + "--out", + "runs/scaling_k_sweep/train", + "--epochs", + "3", + "--batch-groups", + "8", + "--records-per-group", + "8", + "--hidden-dim", + "256", + "--lr", + "0.001", + "--device", + "auto", + "--seed", + "0" + ], + "local_executable": true, + "name": "train_dovla", + "placeholder": false, + "reason": "local execution requires generated dataset and torch for full training", + "shell_command": "python scripts/train_dovla.py --dataset data/scaling_seed_dataset --out runs/scaling_k_sweep/train --epochs 3 --batch-groups 8 --records-per-group 8 --hidden-dim 256 --lr 0.001 --device auto --seed 0", + "stage": "training" + }, + { + "command": [ + "python", + "scripts/eval_causalstress.py", + "--checkpoint", + "runs/scaling_k_sweep/train/best.pt", + "--backend", + "toy", + "--out", + "runs/scaling_k_sweep/eval/causalstress.json", + "--num-tasks", + "100", + "--k", + "16", + "--seed", + "0", + "--device", + "auto" + ], + "local_executable": true, + "name": "eval_causalstress", + "placeholder": false, + "reason": "", + "shell_command": "python scripts/eval_causalstress.py --checkpoint runs/scaling_k_sweep/train/best.pt --backend toy --out runs/scaling_k_sweep/eval/causalstress.json --num-tasks 100 --k 16 --seed 0 --device auto", + "stage": "evaluation" + }, + { + "command": [ + "echo", + "libero evaluation placeholder" + ], + "local_executable": false, + "name": "eval_libero", + "placeholder": true, + "reason": "LIBERO evaluation is a placeholder in this scaffold", + "shell_command": "echo 'libero evaluation placeholder'", + "stage": "evaluation" + }, + { + "command": [ + "echo", + "maniskill evaluation placeholder" + ], + "local_executable": false, + "name": "eval_maniskill", + "placeholder": true, + "reason": "MANISKILL evaluation is a placeholder in this scaffold", + "shell_command": "echo 'maniskill evaluation placeholder'", + "stage": "evaluation" + }, + { + "command": [ + "echo", + "simpler evaluation placeholder" + ], + "local_executable": false, + "name": "eval_simpler", + "placeholder": true, + "reason": "SIMPLER evaluation is a placeholder in this scaffold", + "shell_command": "echo 'simpler evaluation placeholder'", + "stage": "evaluation" + }, + { + "command": [ + "python", + "scripts/run_scaling.py", + "--backend", + "toy", + "--tasks", + "builtins", + "--out", + "runs/scaling_k_sweep/scaling", + "--total-records", + "4096", + "--k-values", + "1,2,4,8,16,32", + "--epochs", + "3", + "--seed", + "0", + "--shard-size", + "1000", + "--batch-groups", + "8", + "--records-per-group", + "8", + "--hidden-dim", + "256", + "--lr", + "0.001", + "--eval-num-tasks", + "50" + ], + "local_executable": true, + "name": "scaling_k_sweep", + "placeholder": false, + "reason": "", + "shell_command": "python scripts/run_scaling.py --backend toy --tasks builtins --out runs/scaling_k_sweep/scaling --total-records 4096 --k-values 1,2,4,8,16,32 --epochs 3 --seed 0 --shard-size 1000 --batch-groups 8 --records-per-group 8 --hidden-dim 256 --lr 0.001 --eval-num-tasks 50", + "stage": "scaling_sweeps" + } +] diff --git a/outputs/manifest_smoke/resolved_manifest.yaml b/outputs/manifest_smoke/resolved_manifest.yaml new file mode 100644 index 0000000000000000000000000000000000000000..5586a31377c52251c6b5ffb460bbe10fe982043a --- /dev/null +++ b/outputs/manifest_smoke/resolved_manifest.yaml @@ -0,0 +1,74 @@ +name: scaling_k_sweep +description: Controlled K sweep with fixed total record budget. +run_dir: runs/scaling_k_sweep +dataset_generation: + backend: toy + simulator_params: {} + task_source: builtins + num_tasks: 10 + num_states_per_task: 128 + k: 8 + shard_size: 1000 + output_path: data/scaling_seed_dataset + seed: '0' +vlm_annotation: + enabled: false + cache_path: .cache/dovla_cil/vlm_annotations_scaling.json + model_env_var: OPENCLAUDE_MODEL +training: + model_size: small + hidden_dim: 256 + batch_groups: 8 + records_per_group: 8 + learning_rate: 0.001 + loss_weights: + bc: 1.0 + effect: 1.0 + success: 1.0 + progress: 1.0 + rank: 1.0 + regret: 0.5 + epochs: 3 + steps: null + checkpoint_path: runs/scaling_k_sweep/train/best.pt +evaluation: + causalstress: + enabled: true + backend: toy + num_tasks: 100 + k: 16 + output_path: runs/scaling_k_sweep/eval/causalstress.json + libero: + enabled: false + placeholder: true + maniskill: + enabled: false + placeholder: true + simpler: + enabled: false + placeholder: true +baselines: + enabled: false + output_root: runs/scaling_k_sweep/baselines + names: [] +scaling_sweeps: + enabled: true + backend: toy + task_source: builtins + output_path: runs/scaling_k_sweep/scaling + total_records: 4096 + k_values: + - 1 + - 2 + - 4 + - 8 + - 16 + - 32 + epochs: 3 + seed: '0' + shard_size: 1000 + batch_groups: 8 + records_per_group: 8 + hidden_dim: 256 + learning_rate: 0.001 + eval_num_tasks: 50 diff --git a/outputs/manifest_smoke/slurm/00_generate_cil.sbatch b/outputs/manifest_smoke/slurm/00_generate_cil.sbatch new file mode 100644 index 0000000000000000000000000000000000000000..9ba54827397be3906eb00aa821e8e93cc09faec7 --- /dev/null +++ b/outputs/manifest_smoke/slurm/00_generate_cil.sbatch @@ -0,0 +1,21 @@ +#!/bin/bash +#SBATCH --job-name=dovla_generate_cil +#SBATCH --partition=${DOVLA_PARTITION:-compute} +#SBATCH --nodes=1 +#SBATCH --ntasks=1 +#SBATCH --cpus-per-task=${DOVLA_CPUS_PER_TASK:-8} +#SBATCH --gres=gpu:${DOVLA_GPUS_PER_TASK:-0} +#SBATCH --mem=${DOVLA_MEM:-32G} +#SBATCH --time=${DOVLA_TIME:-12:00:00} +#SBATCH --output=${DOVLA_LOG_DIR:-logs/slurm}/%x_%j.out +#SBATCH --error=${DOVLA_LOG_DIR:-logs/slurm}/%x_%j.err + +set -euo pipefail +cd /lustre09/project/6037638/knguy52/vla + +if [ -f .venv/bin/activate ]; then + source .venv/bin/activate +fi + +# Set OPENCLAUDE_API_KEY in the scheduler environment if VLM calls are enabled. +python scripts/generate_cil.py --backend toy --out data/scaling_seed_dataset --num-tasks 10 --num-states-per-task 128 --k 8 --seed 0 --shard-size 1000 --inline-observations diff --git a/outputs/manifest_smoke/slurm/01_train_dovla.sbatch b/outputs/manifest_smoke/slurm/01_train_dovla.sbatch new file mode 100644 index 0000000000000000000000000000000000000000..58d60f47edd8feb302a5071aca6d1c20a9147447 --- /dev/null +++ b/outputs/manifest_smoke/slurm/01_train_dovla.sbatch @@ -0,0 +1,21 @@ +#!/bin/bash +#SBATCH --job-name=dovla_train_dovla +#SBATCH --partition=${DOVLA_PARTITION:-compute} +#SBATCH --nodes=1 +#SBATCH --ntasks=1 +#SBATCH --cpus-per-task=${DOVLA_CPUS_PER_TASK:-8} +#SBATCH --gres=gpu:${DOVLA_GPUS_PER_TASK:-0} +#SBATCH --mem=${DOVLA_MEM:-32G} +#SBATCH --time=${DOVLA_TIME:-12:00:00} +#SBATCH --output=${DOVLA_LOG_DIR:-logs/slurm}/%x_%j.out +#SBATCH --error=${DOVLA_LOG_DIR:-logs/slurm}/%x_%j.err + +set -euo pipefail +cd /lustre09/project/6037638/knguy52/vla + +if [ -f .venv/bin/activate ]; then + source .venv/bin/activate +fi + +# Set OPENCLAUDE_API_KEY in the scheduler environment if VLM calls are enabled. +python scripts/train_dovla.py --dataset data/scaling_seed_dataset --out runs/scaling_k_sweep/train --epochs 3 --batch-groups 8 --records-per-group 8 --hidden-dim 256 --lr 0.001 --device auto --seed 0 diff --git a/outputs/manifest_smoke/slurm/02_eval_causalstress.sbatch b/outputs/manifest_smoke/slurm/02_eval_causalstress.sbatch new file mode 100644 index 0000000000000000000000000000000000000000..225558886faa91f2c995eed0080e65156393c2a2 --- /dev/null +++ b/outputs/manifest_smoke/slurm/02_eval_causalstress.sbatch @@ -0,0 +1,21 @@ +#!/bin/bash +#SBATCH --job-name=dovla_eval_causalstress +#SBATCH --partition=${DOVLA_PARTITION:-compute} +#SBATCH --nodes=1 +#SBATCH --ntasks=1 +#SBATCH --cpus-per-task=${DOVLA_CPUS_PER_TASK:-8} +#SBATCH --gres=gpu:${DOVLA_GPUS_PER_TASK:-0} +#SBATCH --mem=${DOVLA_MEM:-32G} +#SBATCH --time=${DOVLA_TIME:-12:00:00} +#SBATCH --output=${DOVLA_LOG_DIR:-logs/slurm}/%x_%j.out +#SBATCH --error=${DOVLA_LOG_DIR:-logs/slurm}/%x_%j.err + +set -euo pipefail +cd /lustre09/project/6037638/knguy52/vla + +if [ -f .venv/bin/activate ]; then + source .venv/bin/activate +fi + +# Set OPENCLAUDE_API_KEY in the scheduler environment if VLM calls are enabled. +python scripts/eval_causalstress.py --checkpoint runs/scaling_k_sweep/train/best.pt --backend toy --out runs/scaling_k_sweep/eval/causalstress.json --num-tasks 100 --k 16 --seed 0 --device auto diff --git a/outputs/manifest_smoke/slurm/03_eval_libero.sbatch b/outputs/manifest_smoke/slurm/03_eval_libero.sbatch new file mode 100644 index 0000000000000000000000000000000000000000..ceb5c0ffc552c7fa50c09129f7777c5f3c9dc7e9 --- /dev/null +++ b/outputs/manifest_smoke/slurm/03_eval_libero.sbatch @@ -0,0 +1,21 @@ +#!/bin/bash +#SBATCH --job-name=dovla_eval_libero +#SBATCH --partition=${DOVLA_PARTITION:-compute} +#SBATCH --nodes=1 +#SBATCH --ntasks=1 +#SBATCH --cpus-per-task=${DOVLA_CPUS_PER_TASK:-8} +#SBATCH --gres=gpu:${DOVLA_GPUS_PER_TASK:-0} +#SBATCH --mem=${DOVLA_MEM:-32G} +#SBATCH --time=${DOVLA_TIME:-12:00:00} +#SBATCH --output=${DOVLA_LOG_DIR:-logs/slurm}/%x_%j.out +#SBATCH --error=${DOVLA_LOG_DIR:-logs/slurm}/%x_%j.err + +set -euo pipefail +cd /lustre09/project/6037638/knguy52/vla + +if [ -f .venv/bin/activate ]; then + source .venv/bin/activate +fi + +# Set OPENCLAUDE_API_KEY in the scheduler environment if VLM calls are enabled. +echo 'libero evaluation placeholder' diff --git a/outputs/manifest_smoke/slurm/04_eval_maniskill.sbatch b/outputs/manifest_smoke/slurm/04_eval_maniskill.sbatch new file mode 100644 index 0000000000000000000000000000000000000000..da5f385909854f68e943303247601b309683d0d2 --- /dev/null +++ b/outputs/manifest_smoke/slurm/04_eval_maniskill.sbatch @@ -0,0 +1,21 @@ +#!/bin/bash +#SBATCH --job-name=dovla_eval_maniskill +#SBATCH --partition=${DOVLA_PARTITION:-compute} +#SBATCH --nodes=1 +#SBATCH --ntasks=1 +#SBATCH --cpus-per-task=${DOVLA_CPUS_PER_TASK:-8} +#SBATCH --gres=gpu:${DOVLA_GPUS_PER_TASK:-0} +#SBATCH --mem=${DOVLA_MEM:-32G} +#SBATCH --time=${DOVLA_TIME:-12:00:00} +#SBATCH --output=${DOVLA_LOG_DIR:-logs/slurm}/%x_%j.out +#SBATCH --error=${DOVLA_LOG_DIR:-logs/slurm}/%x_%j.err + +set -euo pipefail +cd /lustre09/project/6037638/knguy52/vla + +if [ -f .venv/bin/activate ]; then + source .venv/bin/activate +fi + +# Set OPENCLAUDE_API_KEY in the scheduler environment if VLM calls are enabled. +echo 'maniskill evaluation placeholder' diff --git a/outputs/manifest_smoke/slurm/05_eval_simpler.sbatch b/outputs/manifest_smoke/slurm/05_eval_simpler.sbatch new file mode 100644 index 0000000000000000000000000000000000000000..5dd4388e110b03147e649e67536acd4a7e871a00 --- /dev/null +++ b/outputs/manifest_smoke/slurm/05_eval_simpler.sbatch @@ -0,0 +1,21 @@ +#!/bin/bash +#SBATCH --job-name=dovla_eval_simpler +#SBATCH --partition=${DOVLA_PARTITION:-compute} +#SBATCH --nodes=1 +#SBATCH --ntasks=1 +#SBATCH --cpus-per-task=${DOVLA_CPUS_PER_TASK:-8} +#SBATCH --gres=gpu:${DOVLA_GPUS_PER_TASK:-0} +#SBATCH --mem=${DOVLA_MEM:-32G} +#SBATCH --time=${DOVLA_TIME:-12:00:00} +#SBATCH --output=${DOVLA_LOG_DIR:-logs/slurm}/%x_%j.out +#SBATCH --error=${DOVLA_LOG_DIR:-logs/slurm}/%x_%j.err + +set -euo pipefail +cd /lustre09/project/6037638/knguy52/vla + +if [ -f .venv/bin/activate ]; then + source .venv/bin/activate +fi + +# Set OPENCLAUDE_API_KEY in the scheduler environment if VLM calls are enabled. +echo 'simpler evaluation placeholder' diff --git a/outputs/manifest_smoke/slurm/06_scaling_k_sweep.sbatch b/outputs/manifest_smoke/slurm/06_scaling_k_sweep.sbatch new file mode 100644 index 0000000000000000000000000000000000000000..56342eee3f856267117e33ebeb227fe050968f96 --- /dev/null +++ b/outputs/manifest_smoke/slurm/06_scaling_k_sweep.sbatch @@ -0,0 +1,21 @@ +#!/bin/bash +#SBATCH --job-name=dovla_scaling_k_sweep +#SBATCH --partition=${DOVLA_PARTITION:-compute} +#SBATCH --nodes=1 +#SBATCH --ntasks=1 +#SBATCH --cpus-per-task=${DOVLA_CPUS_PER_TASK:-8} +#SBATCH --gres=gpu:${DOVLA_GPUS_PER_TASK:-0} +#SBATCH --mem=${DOVLA_MEM:-32G} +#SBATCH --time=${DOVLA_TIME:-12:00:00} +#SBATCH --output=${DOVLA_LOG_DIR:-logs/slurm}/%x_%j.out +#SBATCH --error=${DOVLA_LOG_DIR:-logs/slurm}/%x_%j.err + +set -euo pipefail +cd /lustre09/project/6037638/knguy52/vla + +if [ -f .venv/bin/activate ]; then + source .venv/bin/activate +fi + +# Set OPENCLAUDE_API_KEY in the scheduler environment if VLM calls are enabled. +python scripts/run_scaling.py --backend toy --tasks builtins --out runs/scaling_k_sweep/scaling --total-records 4096 --k-values 1,2,4,8,16,32 --epochs 3 --seed 0 --shard-size 1000 --batch-groups 8 --records-per-group 8 --hidden-dim 256 --lr 0.001 --eval-num-tasks 50 diff --git a/outputs/manifest_smoke_2/planned_jobs.json b/outputs/manifest_smoke_2/planned_jobs.json new file mode 100644 index 0000000000000000000000000000000000000000..d61af17a3871b2e876ce4bbe9844f3203ec6830c --- /dev/null +++ b/outputs/manifest_smoke_2/planned_jobs.json @@ -0,0 +1,159 @@ +[ + { + "command": [ + "python", + "scripts/generate_cil.py", + "--backend", + "toy", + "--out", + "data/scaling_seed_dataset", + "--num-tasks", + "10", + "--num-states-per-task", + "128", + "--k", + "8", + "--seed", + "0", + "--shard-size", + "1000", + "--inline-observations" + ], + "local_executable": true, + "name": "generate_cil", + "placeholder": false, + "reason": "", + "shell_command": "python scripts/generate_cil.py --backend toy --out data/scaling_seed_dataset --num-tasks 10 --num-states-per-task 128 --k 8 --seed 0 --shard-size 1000 --inline-observations", + "stage": "dataset_generation" + }, + { + "command": [ + "python", + "scripts/train_dovla.py", + "--dataset", + "data/scaling_seed_dataset", + "--out", + "runs/scaling_k_sweep/train", + "--epochs", + "3", + "--batch-groups", + "8", + "--records-per-group", + "8", + "--hidden-dim", + "256", + "--lr", + "0.001", + "--device", + "auto", + "--seed", + "0" + ], + "local_executable": true, + "name": "train_dovla", + "placeholder": false, + "reason": "local execution requires generated dataset and torch for full training", + "shell_command": "python scripts/train_dovla.py --dataset data/scaling_seed_dataset --out runs/scaling_k_sweep/train --epochs 3 --batch-groups 8 --records-per-group 8 --hidden-dim 256 --lr 0.001 --device auto --seed 0", + "stage": "training" + }, + { + "command": [ + "python", + "scripts/eval_causalstress.py", + "--checkpoint", + "runs/scaling_k_sweep/train/best.pt", + "--backend", + "toy", + "--out", + "runs/scaling_k_sweep/eval/causalstress.json", + "--num-tasks", + "100", + "--k", + "16", + "--seed", + "0", + "--device", + "auto" + ], + "local_executable": true, + "name": "eval_causalstress", + "placeholder": false, + "reason": "", + "shell_command": "python scripts/eval_causalstress.py --checkpoint runs/scaling_k_sweep/train/best.pt --backend toy --out runs/scaling_k_sweep/eval/causalstress.json --num-tasks 100 --k 16 --seed 0 --device auto", + "stage": "evaluation" + }, + { + "command": [ + "echo", + "libero evaluation placeholder" + ], + "local_executable": false, + "name": "eval_libero", + "placeholder": true, + "reason": "LIBERO evaluation is a placeholder in this scaffold", + "shell_command": "echo 'libero evaluation placeholder'", + "stage": "evaluation" + }, + { + "command": [ + "echo", + "maniskill evaluation placeholder" + ], + "local_executable": false, + "name": "eval_maniskill", + "placeholder": true, + "reason": "MANISKILL evaluation is a placeholder in this scaffold", + "shell_command": "echo 'maniskill evaluation placeholder'", + "stage": "evaluation" + }, + { + "command": [ + "echo", + "simpler evaluation placeholder" + ], + "local_executable": false, + "name": "eval_simpler", + "placeholder": true, + "reason": "SIMPLER evaluation is a placeholder in this scaffold", + "shell_command": "echo 'simpler evaluation placeholder'", + "stage": "evaluation" + }, + { + "command": [ + "python", + "scripts/run_scaling.py", + "--backend", + "toy", + "--tasks", + "builtins", + "--out", + "runs/scaling_k_sweep/scaling", + "--total-records", + "4096", + "--k-values", + "1,2,4,8,16,32", + "--epochs", + "3", + "--seed", + "0", + "--shard-size", + "1000", + "--batch-groups", + "8", + "--records-per-group", + "8", + "--hidden-dim", + "256", + "--lr", + "0.001", + "--eval-num-tasks", + "50" + ], + "local_executable": true, + "name": "scaling_k_sweep", + "placeholder": false, + "reason": "", + "shell_command": "python scripts/run_scaling.py --backend toy --tasks builtins --out runs/scaling_k_sweep/scaling --total-records 4096 --k-values 1,2,4,8,16,32 --epochs 3 --seed 0 --shard-size 1000 --batch-groups 8 --records-per-group 8 --hidden-dim 256 --lr 0.001 --eval-num-tasks 50", + "stage": "scaling_sweeps" + } +] diff --git a/outputs/manifest_smoke_2/resolved_manifest.yaml b/outputs/manifest_smoke_2/resolved_manifest.yaml new file mode 100644 index 0000000000000000000000000000000000000000..5586a31377c52251c6b5ffb460bbe10fe982043a --- /dev/null +++ b/outputs/manifest_smoke_2/resolved_manifest.yaml @@ -0,0 +1,74 @@ +name: scaling_k_sweep +description: Controlled K sweep with fixed total record budget. +run_dir: runs/scaling_k_sweep +dataset_generation: + backend: toy + simulator_params: {} + task_source: builtins + num_tasks: 10 + num_states_per_task: 128 + k: 8 + shard_size: 1000 + output_path: data/scaling_seed_dataset + seed: '0' +vlm_annotation: + enabled: false + cache_path: .cache/dovla_cil/vlm_annotations_scaling.json + model_env_var: OPENCLAUDE_MODEL +training: + model_size: small + hidden_dim: 256 + batch_groups: 8 + records_per_group: 8 + learning_rate: 0.001 + loss_weights: + bc: 1.0 + effect: 1.0 + success: 1.0 + progress: 1.0 + rank: 1.0 + regret: 0.5 + epochs: 3 + steps: null + checkpoint_path: runs/scaling_k_sweep/train/best.pt +evaluation: + causalstress: + enabled: true + backend: toy + num_tasks: 100 + k: 16 + output_path: runs/scaling_k_sweep/eval/causalstress.json + libero: + enabled: false + placeholder: true + maniskill: + enabled: false + placeholder: true + simpler: + enabled: false + placeholder: true +baselines: + enabled: false + output_root: runs/scaling_k_sweep/baselines + names: [] +scaling_sweeps: + enabled: true + backend: toy + task_source: builtins + output_path: runs/scaling_k_sweep/scaling + total_records: 4096 + k_values: + - 1 + - 2 + - 4 + - 8 + - 16 + - 32 + epochs: 3 + seed: '0' + shard_size: 1000 + batch_groups: 8 + records_per_group: 8 + hidden_dim: 256 + learning_rate: 0.001 + eval_num_tasks: 50 diff --git a/outputs/phase5_baseline_expert_only/baseline_config.json b/outputs/phase5_baseline_expert_only/baseline_config.json new file mode 100644 index 0000000000000000000000000000000000000000..b23bc1d4aa5caaf762825198ed1a1d9ed9deeb72 --- /dev/null +++ b/outputs/phase5_baseline_expert_only/baseline_config.json @@ -0,0 +1,18 @@ +{ + "backend": "toy", + "baseline": "expert_only_bc", + "batch_groups": 1, + "dataset": "outputs/phase5_train_debug/cil", + "device": "auto", + "epochs": 1, + "eval_k": 4, + "eval_num_tasks": 6, + "hidden_dim": 32, + "lr": 0.001, + "metadata": {}, + "out": "outputs/phase5_baseline_expert_only", + "records_per_group": 1, + "seed": 0, + "shard_size": 1024, + "success_loss_weight": 1.0 +} diff --git a/outputs/phase5_baseline_expert_only/causalstress.json b/outputs/phase5_baseline_expert_only/causalstress.json new file mode 100644 index 0000000000000000000000000000000000000000..71c4b47f40e68ba72d28ff52a2d506290b7fb7bb --- /dev/null +++ b/outputs/phase5_baseline_expert_only/causalstress.json @@ -0,0 +1,154 @@ +{ + "categories": [ + "counterfactual_ranking", + "effect_query", + "minimal_language_change", + "near_miss_boundary", + "physics_shift_placeholder", + "wrong_target_distractor" + ], + "checkpoint": "outputs/phase5_baseline_expert_only/train/best.pt", + "effect_prediction_mae": 0.2585304216000407, + "instruction_switch_accuracy": 0.3333333333333333, + "ndcg_at_k": 0.8978088012057569, + "num_groups": 6, + "num_records": 24, + "pairwise_ranking_accuracy": 0.7333333333333333, + "per_category": { + "counterfactual_ranking": { + "effect_mae": 0.267966323755309, + "failure_rate": 0.0, + "instruction_switch": 0.0, + "ndcg": 1.0, + "progress_mae": 0.4270397275686264, + "regret_ece": 0.6160482317209244, + "selected_failure_rate": 0.0, + "selected_success": 1.0, + "success": 1.0, + "success_pred": 1.0, + "top1": 1.0 + }, + "effect_query": { + "effect_mae": 0.24056764133274555, + "effect_query_progress_mae": 0.45539142191410065, + "failure_rate": 0.25, + "instruction_switch": 1.0, + "ndcg": 1.0, + "pair_correct": 1.0, + "progress_mae": 0.45539142191410065, + "regret_ece": 0.820351704955101, + "selected_failure_rate": 0.0, + "selected_success": 1.0, + "success": 0.75, + "success_pred": 0.75, + "top1": 1.0 + }, + "minimal_language_change": { + "effect_mae": 0.251421893782448, + "failure_rate": 0.5, + "instruction_switch": 1.0, + "ndcg": 1.0, + "pair_correct": 1.0, + "progress_mae": 0.5014246702194214, + "regret_ece": 1.0055333077907562, + "selected_failure_rate": 0.0, + "selected_success": 1.0, + "success": 0.5, + "success_pred": 0.5, + "top1": 1.0 + }, + "near_miss_boundary": { + "effect_mae": 0.3107581769319717, + "failure_rate": 0.0, + "instruction_switch": 0.0, + "ndcg": 1.0, + "progress_mae": 0.4298369884490967, + "regret_ece": 0.6276737749576569, + "selected_failure_rate": 0.0, + "selected_success": 1.0, + "success": 1.0, + "success_pred": 1.0, + "top1": 1.0 + }, + "physics_shift_placeholder": { + "effect_mae": 0.2277660372179933, + "failure_rate": 0.5, + "instruction_switch": 0.0, + "ndcg": 0.6934264036172708, + "pair_correct": 0.5, + "progress_mae": 0.4995899945497513, + "regret_ece": 1.0009315013885498, + "selected_failure_rate": 1.0, + "selected_success": 0.0, + "success": 0.5, + "success_pred": 0.5, + "top1": 0.0 + }, + "wrong_target_distractor": { + "effect_mae": 0.25270245657977647, + "failure_rate": 0.5, + "instruction_switch": 0.0, + "ndcg": 0.6934264036172708, + "pair_correct": 0.5, + "progress_mae": 0.49957288801670074, + "regret_ece": 0.9997262060642242, + "selected_failure_rate": 1.0, + "selected_success": 0.0, + "success": 0.5, + "success_pred": 0.5, + "top1": 0.0 + } + }, + "regret_calibration_error": 0.8450441211462021, + "success_prediction_accuracy": 0.7083333333333334, + "target_confusion_matrix": { + "cube": { + "target_zone": 1 + }, + "drawer": { + "drawer": 1 + }, + "green_block": { + "yellow_block": 1 + }, + "red_mug": { + "blue_bowl": 1, + "red_cup": 1, + "red_mug": 1 + } + }, + "target_confusion_matrix_by_category": { + "counterfactual_ranking": { + "green_block": { + "yellow_block": 1 + } + }, + "effect_query": { + "drawer": { + "drawer": 1 + } + }, + "minimal_language_change": { + "red_mug": { + "red_mug": 1 + } + }, + "near_miss_boundary": { + "red_mug": { + "blue_bowl": 1 + } + }, + "physics_shift_placeholder": { + "cube": { + "target_zone": 1 + } + }, + "wrong_target_distractor": { + "red_mug": { + "red_cup": 1 + } + } + }, + "task_success_rate": 0.16666666666666666, + "top1_action_selection": 0.6666666666666666 +} diff --git a/outputs/phase5_baseline_expert_only/dataset/baseline_metadata.json b/outputs/phase5_baseline_expert_only/dataset/baseline_metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..b22029ba8b48d6ab752e92188cc5220eab77305a --- /dev/null +++ b/outputs/phase5_baseline_expert_only/dataset/baseline_metadata.json @@ -0,0 +1,9 @@ +{ + "approximate": false, + "baseline": "expert_only_bc", + "notes": "One best/expert action per group; ranking and regret losses disabled.", + "num_groups": 6, + "num_records": 6, + "prepared_dataset": "outputs/phase5_baseline_expert_only/dataset", + "source_dataset": "outputs/phase5_train_debug/cil" +} diff --git a/outputs/phase5_baseline_expert_only/dataset/group_index.jsonl b/outputs/phase5_baseline_expert_only/dataset/group_index.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..a5c98107b96be1096d54c8787f91f0c8d3a1ac09 --- /dev/null +++ b/outputs/phase5_baseline_expert_only/dataset/group_index.jsonl @@ -0,0 +1,6 @@ +{"candidate_type_counts": {"expert": 1}, "group_id": "toy_pick_red_mug-s0000-07d8558fd93e", "instruction": "Pick up the red mug.", "max_reward": 1.0, "num_records": 1, "record_ids": ["rec-33249a76c7f96e9c002537e5"], "scene_id": "toy_pick_red_mug-scene-0000", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": "states/toy_pick_red_mug-s0000-07d8558fd93e.pkl", "state_hash": "07d8558fd93e39692be8bdd366e5b31f9afbc61e3e91f99f22702d8a4e67cb95", "success_count": 1, "task_id": "toy_pick_red_mug"} +{"candidate_type_counts": {"expert": 1}, "group_id": "toy_pick_red_mug-s0001-a3f87a69e3e5", "instruction": "Pick up the red mug.", "max_reward": 1.0, "num_records": 1, "record_ids": ["rec-137cf57afd46c64bc77dbdee"], "scene_id": "toy_pick_red_mug-scene-0001", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": "states/toy_pick_red_mug-s0001-a3f87a69e3e5.pkl", "state_hash": "a3f87a69e3e5c1a4408ebbad970c4a0d1555d03d33b960481657161af70c5f1b", "success_count": 1, "task_id": "toy_pick_red_mug"} +{"candidate_type_counts": {"expert": 1}, "group_id": "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", "instruction": "Put the red mug in the blue bowl.", "max_reward": 1.0, "num_records": 1, "record_ids": ["rec-0a6971a4e4ad6ee040149a97"], "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2.pkl", "state_hash": "c46dabefe4b2286bd2d0e7204047dd05d0f212208ea8eac3c454f34bab3d0e9e", "success_count": 1, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type_counts": {"expert": 1}, "group_id": "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca", "instruction": "Put the red mug in the blue bowl.", "max_reward": 1.0, "num_records": 1, "record_ids": ["rec-3ad6215f5852f6bf59e36bad"], "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca.pkl", "state_hash": "5050f098a0cac7fcc9ed3303ba80ff44f7efbb48d7a119c2a27c6d706bd86f62", "success_count": 1, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type_counts": {"expert": 1}, "group_id": "toy_green_block_left_of_yellow_block-s0000-f077d62b18f4", "instruction": "Put the green block left of the yellow block.", "max_reward": 1.0, "num_records": 1, "record_ids": ["rec-f0684fcbb4c1312e3715f346"], "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0000-f077d62b18f4.pkl", "state_hash": "f077d62b18f4faffec21b3d952cca1ba1df312cfbf70dd7e9874a8b52483846a", "success_count": 1, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type_counts": {"expert": 1}, "group_id": "toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10", "instruction": "Put the green block left of the yellow block.", "max_reward": 1.0, "num_records": 1, "record_ids": ["rec-05f1a7aff1c6ad66149bb5a6"], "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10.pkl", "state_hash": "6ff1dfaa9b1073cc916098cafbb45e7a9ca54d9e0ade57b91197b0605a47521b", "success_count": 1, "task_id": "toy_green_block_left_of_yellow_block"} diff --git a/outputs/phase5_baseline_expert_only/dataset/manifest.json b/outputs/phase5_baseline_expert_only/dataset/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..1291a4a32bb0e69f05e97e78c17574cff51951c6 --- /dev/null +++ b/outputs/phase5_baseline_expert_only/dataset/manifest.json @@ -0,0 +1,36 @@ +{ + "backend": "toy", + "created_at": "2026-06-19T04:44:16.592231+00:00", + "dataset_name": "cil_toy_expert_only_bc", + "format": "dovla_cil", + "group_count": 6, + "group_index_path": "group_index.jsonl", + "index_format": "jsonl", + "k": 1, + "num_groups": 6, + "num_records": 6, + "record_count": 6, + "record_index_path": "record_index.jsonl", + "schema_version": "0.1", + "seed": 0, + "shard_count": 1, + "shard_format": "jsonl", + "shard_size": 1024, + "shards": [ + { + "format": "jsonl", + "group_ids": [ + "toy_pick_red_mug-s0000-07d8558fd93e", + "toy_pick_red_mug-s0001-a3f87a69e3e5", + "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", + "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca", + "toy_green_block_left_of_yellow_block-s0000-f077d62b18f4", + "toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10" + ], + "path": "shards/shard_000000.jsonl", + "record_count": 6 + } + ], + "task_count": 3, + "version": "0.1" +} diff --git a/outputs/phase5_baseline_expert_only/dataset/metadata.json b/outputs/phase5_baseline_expert_only/dataset/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..1291a4a32bb0e69f05e97e78c17574cff51951c6 --- /dev/null +++ b/outputs/phase5_baseline_expert_only/dataset/metadata.json @@ -0,0 +1,36 @@ +{ + "backend": "toy", + "created_at": "2026-06-19T04:44:16.592231+00:00", + "dataset_name": "cil_toy_expert_only_bc", + "format": "dovla_cil", + "group_count": 6, + "group_index_path": "group_index.jsonl", + "index_format": "jsonl", + "k": 1, + "num_groups": 6, + "num_records": 6, + "record_count": 6, + "record_index_path": "record_index.jsonl", + "schema_version": "0.1", + "seed": 0, + "shard_count": 1, + "shard_format": "jsonl", + "shard_size": 1024, + "shards": [ + { + "format": "jsonl", + "group_ids": [ + "toy_pick_red_mug-s0000-07d8558fd93e", + "toy_pick_red_mug-s0001-a3f87a69e3e5", + "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", + "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca", + "toy_green_block_left_of_yellow_block-s0000-f077d62b18f4", + "toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10" + ], + "path": "shards/shard_000000.jsonl", + "record_count": 6 + } + ], + "task_count": 3, + "version": "0.1" +} diff --git a/outputs/phase5_baseline_expert_only/dataset/record_index.jsonl b/outputs/phase5_baseline_expert_only/dataset/record_index.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..39bca411c86585d77556248cbe1df69fea71c177 --- /dev/null +++ b/outputs/phase5_baseline_expert_only/dataset/record_index.jsonl @@ -0,0 +1,6 @@ +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_pick_red_mug-s0000-07d8558fd93e", "rank_within_group": 0, "record_id": "rec-33249a76c7f96e9c002537e5", "regret": 0.0, "reward_progress": 1.0, "row_index": 0, "shard_path": "shards/shard_000000.jsonl", "state_hash": "07d8558fd93e39692be8bdd366e5b31f9afbc61e3e91f99f22702d8a4e67cb95", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_pick_red_mug-s0001-a3f87a69e3e5", "rank_within_group": 0, "record_id": "rec-137cf57afd46c64bc77dbdee", "regret": 0.0, "reward_progress": 1.0, "row_index": 1, "shard_path": "shards/shard_000000.jsonl", "state_hash": "a3f87a69e3e5c1a4408ebbad970c4a0d1555d03d33b960481657161af70c5f1b", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", "rank_within_group": 0, "record_id": "rec-0a6971a4e4ad6ee040149a97", "regret": 0.0, "reward_progress": 1.0, "row_index": 2, "shard_path": "shards/shard_000000.jsonl", "state_hash": "c46dabefe4b2286bd2d0e7204047dd05d0f212208ea8eac3c454f34bab3d0e9e", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca", "rank_within_group": 0, "record_id": "rec-3ad6215f5852f6bf59e36bad", "regret": 0.0, "reward_progress": 1.0, "row_index": 3, "shard_path": "shards/shard_000000.jsonl", "state_hash": "5050f098a0cac7fcc9ed3303ba80ff44f7efbb48d7a119c2a27c6d706bd86f62", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0000-f077d62b18f4", "rank_within_group": 0, "record_id": "rec-f0684fcbb4c1312e3715f346", "regret": 0.0, "reward_progress": 1.0, "row_index": 4, "shard_path": "shards/shard_000000.jsonl", "state_hash": "f077d62b18f4faffec21b3d952cca1ba1df312cfbf70dd7e9874a8b52483846a", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10", "rank_within_group": 0, "record_id": "rec-05f1a7aff1c6ad66149bb5a6", "regret": 0.0, "reward_progress": 1.0, "row_index": 5, "shard_path": "shards/shard_000000.jsonl", "state_hash": "6ff1dfaa9b1073cc916098cafbb45e7a9ca54d9e0ade57b91197b0605a47521b", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} diff --git a/outputs/phase5_baseline_expert_only/dataset/shards/shard_000000.jsonl b/outputs/phase5_baseline_expert_only/dataset/shards/shard_000000.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..7f1b1a6e9f767e89ba75c0780adfd60e9d014f82 --- /dev/null +++ b/outputs/phase5_baseline_expert_only/dataset/shards/shard_000000.jsonl @@ -0,0 +1,6 @@ +{"action_chunk": {"action_id": "expert-0", "horizon": 2, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0000-07d8558fd93e", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 0, "backend": "toy", "baseline": "expert_only_bc", "baseline_approximate": false, "group_seed": 3269563184, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0000-07d8558fd93e.pkl", "state_index": 0, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-33249a76c7f96e9c002537e5", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0000", "state_hash": "07d8558fd93e39692be8bdd366e5b31f9afbc61e3e91f99f22702d8a4e67cb95", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.15]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "expert-0", "horizon": 2, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0001-a3f87a69e3e5", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 0, "backend": "toy", "baseline": "expert_only_bc", "baseline_approximate": false, "group_seed": 1101978868, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0001-a3f87a69e3e5.pkl", "state_index": 1, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.4197, 0.0115, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4197, 0.0115, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-137cf57afd46c64bc77dbdee", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0001", "state_hash": "a3f87a69e3e5c1a4408ebbad970c4a0d1555d03d33b960481657161af70c5f1b", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.15]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4197, 0.0115, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "expert-0", "horizon": 3, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "inside", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.128, 0.0528, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 0, "backend": "toy", "baseline": "expert_only_bc", "baseline_approximate": false, "group_seed": 3813448054, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2.pkl", "state_index": 0, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.128, 0.0528, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.128, 0.0528, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.128, 0.0528, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.128, 0.0528, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-0a6971a4e4ad6ee040149a97", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.8699312987941002}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "state_hash": "c46dabefe4b2286bd2d0e7204047dd05d0f212208ea8eac3c454f34bab3d0e9e", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.3016, 0.0601, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.128, 0.0528, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.128, 0.0528, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "expert-0", "horizon": 3, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "inside", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.168, 0.0095, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 0, "backend": "toy", "baseline": "expert_only_bc", "baseline_approximate": false, "group_seed": 1965660509, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca.pkl", "state_index": 1, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.168, 0.0095, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.168, 0.0095, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.168, 0.0095, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.168, 0.0095, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-3ad6215f5852f6bf59e36bad", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.839960215566157}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "state_hash": "5050f098a0cac7fcc9ed3303ba80ff44f7efbb48d7a119c2a27c6d706bd86f62", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.2498, 0.0083, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.168, 0.0095, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.168, 0.0095, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "expert-0", "horizon": 1, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "left_of", "intended_target": "green_block", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": 0.0683, "dy": 0.0285, "object": "green_block"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0000-f077d62b18f4", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 0, "backend": "toy", "baseline": "expert_only_bc", "baseline_approximate": false, "group_seed": 4089500932, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0000-f077d62b18f4.pkl", "state_index": 0, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.326, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.326, 0.0487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.326, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.326, 0.0487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-f0684fcbb4c1312e3715f346", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.25873612265544277}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "state_hash": "f077d62b18f4faffec21b3d952cca1ba1df312cfbf70dd7e9874a8b52483846a", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": 0.0683, "dy": 0.0285, "object": "green_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": 0.0683, "dy": 0.0285, "object": "green_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["green_block"], "object_pose_delta": {"green_block": [0.06829999999999997, 0.0285, 0.0], "yellow_block": [0.0, 0.0, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.326, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.326, 0.0487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "expert-0", "horizon": 1, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "left_of", "intended_target": "green_block", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": 0.0434, "dy": 0.0368, "object": "green_block"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 0, "backend": "toy", "baseline": "expert_only_bc", "baseline_approximate": false, "group_seed": 3905794541, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10.pkl", "state_index": 1, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.3599, 0.0439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.3599, 0.0439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-05f1a7aff1c6ad66149bb5a6", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.1875407885543134}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "state_hash": "6ff1dfaa9b1073cc916098cafbb45e7a9ca54d9e0ade57b91197b0605a47521b", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": 0.0434, "dy": 0.0368, "object": "green_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": 0.0434, "dy": 0.0368, "object": "green_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["green_block"], "object_pose_delta": {"green_block": [0.043399999999999994, 0.0368, 0.0], "yellow_block": [0.0, 0.0, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.3599, 0.0439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} diff --git a/outputs/phase5_baseline_expert_only/metrics.json b/outputs/phase5_baseline_expert_only/metrics.json new file mode 100644 index 0000000000000000000000000000000000000000..e11f19d1bab227bd9004aecac57e79cf9e47c6f2 --- /dev/null +++ b/outputs/phase5_baseline_expert_only/metrics.json @@ -0,0 +1,222 @@ +{ + "baseline": "expert_only_bc", + "checkpoint": "outputs/phase5_baseline_expert_only/train/best.pt", + "config": { + "backend": "toy", + "baseline": "expert_only_bc", + "batch_groups": 1, + "dataset": "outputs/phase5_train_debug/cil", + "device": "auto", + "epochs": 1, + "eval_k": 4, + "eval_num_tasks": 6, + "hidden_dim": 32, + "lr": 0.001, + "metadata": {}, + "out": "outputs/phase5_baseline_expert_only", + "records_per_group": 1, + "seed": 0, + "shard_size": 1024, + "success_loss_weight": 1.0 + }, + "eval": { + "categories": [ + "counterfactual_ranking", + "effect_query", + "minimal_language_change", + "near_miss_boundary", + "physics_shift_placeholder", + "wrong_target_distractor" + ], + "checkpoint": "outputs/phase5_baseline_expert_only/train/best.pt", + "effect_prediction_mae": 0.2585304216000407, + "instruction_switch_accuracy": 0.3333333333333333, + "ndcg_at_k": 0.8978088012057569, + "num_groups": 6, + "num_records": 24, + "pairwise_ranking_accuracy": 0.7333333333333333, + "per_category": { + "counterfactual_ranking": { + "effect_mae": 0.267966323755309, + "failure_rate": 0.0, + "instruction_switch": 0.0, + "ndcg": 1.0, + "progress_mae": 0.4270397275686264, + "regret_ece": 0.6160482317209244, + "selected_failure_rate": 0.0, + "selected_success": 1.0, + "success": 1.0, + "success_pred": 1.0, + "top1": 1.0 + }, + "effect_query": { + "effect_mae": 0.24056764133274555, + "effect_query_progress_mae": 0.45539142191410065, + "failure_rate": 0.25, + "instruction_switch": 1.0, + "ndcg": 1.0, + "pair_correct": 1.0, + "progress_mae": 0.45539142191410065, + "regret_ece": 0.820351704955101, + "selected_failure_rate": 0.0, + "selected_success": 1.0, + "success": 0.75, + "success_pred": 0.75, + "top1": 1.0 + }, + "minimal_language_change": { + "effect_mae": 0.251421893782448, + "failure_rate": 0.5, + "instruction_switch": 1.0, + "ndcg": 1.0, + "pair_correct": 1.0, + "progress_mae": 0.5014246702194214, + "regret_ece": 1.0055333077907562, + "selected_failure_rate": 0.0, + "selected_success": 1.0, + "success": 0.5, + "success_pred": 0.5, + "top1": 1.0 + }, + "near_miss_boundary": { + "effect_mae": 0.3107581769319717, + "failure_rate": 0.0, + "instruction_switch": 0.0, + "ndcg": 1.0, + "progress_mae": 0.4298369884490967, + "regret_ece": 0.6276737749576569, + "selected_failure_rate": 0.0, + "selected_success": 1.0, + "success": 1.0, + "success_pred": 1.0, + "top1": 1.0 + }, + "physics_shift_placeholder": { + "effect_mae": 0.2277660372179933, + "failure_rate": 0.5, + "instruction_switch": 0.0, + "ndcg": 0.6934264036172708, + "pair_correct": 0.5, + "progress_mae": 0.4995899945497513, + "regret_ece": 1.0009315013885498, + "selected_failure_rate": 1.0, + "selected_success": 0.0, + "success": 0.5, + "success_pred": 0.5, + "top1": 0.0 + }, + "wrong_target_distractor": { + "effect_mae": 0.25270245657977647, + "failure_rate": 0.5, + "instruction_switch": 0.0, + "ndcg": 0.6934264036172708, + "pair_correct": 0.5, + "progress_mae": 0.49957288801670074, + "regret_ece": 0.9997262060642242, + "selected_failure_rate": 1.0, + "selected_success": 0.0, + "success": 0.5, + "success_pred": 0.5, + "top1": 0.0 + } + }, + "regret_calibration_error": 0.8450441211462021, + "success_prediction_accuracy": 0.7083333333333334, + "target_confusion_matrix": { + "cube": { + "target_zone": 1 + }, + "drawer": { + "drawer": 1 + }, + "green_block": { + "yellow_block": 1 + }, + "red_mug": { + "blue_bowl": 1, + "red_cup": 1, + "red_mug": 1 + } + }, + "target_confusion_matrix_by_category": { + "counterfactual_ranking": { + "green_block": { + "yellow_block": 1 + } + }, + "effect_query": { + "drawer": { + "drawer": 1 + } + }, + "minimal_language_change": { + "red_mug": { + "red_mug": 1 + } + }, + "near_miss_boundary": { + "red_mug": { + "blue_bowl": 1 + } + }, + "physics_shift_placeholder": { + "cube": { + "target_zone": 1 + } + }, + "wrong_target_distractor": { + "red_mug": { + "red_cup": 1 + } + } + }, + "task_success_rate": 0.16666666666666666, + "top1_action_selection": 0.6666666666666666 + }, + "loss_weights": { + "bc": 1.0, + "contrast": 0.0, + "effect": 0.0, + "lang_pair": 0.0, + "progress": 0.0, + "rank": 0.0, + "regret": 0.0, + "success": 1.0 + }, + "prepared_dataset": "outputs/phase5_baseline_expert_only/dataset", + "train": { + "best": { + "bc_loss": 0.014749247580766678, + "progress_mae": 0.426452100276947, + "rank_acc": 0.0, + "rank_loss": 0.0, + "regret_mae": 0.6157722473144531, + "success_accuracy": 1.0, + "total_loss": 0.38278165459632874 + }, + "history": [ + { + "epoch": 1, + "train": { + "bc_loss": 0.02814817912876606, + "progress_mae": 0.44632707834243773, + "rank_acc": 0.0, + "rank_loss": 0.0, + "regret_mae": 0.5952274680137635, + "success_accuracy": 1.0, + "total_loss": 0.5427382230758667 + }, + "val": { + "bc_loss": 0.014749247580766678, + "progress_mae": 0.426452100276947, + "rank_acc": 0.0, + "rank_loss": 0.0, + "regret_mae": 0.6157722473144531, + "success_accuracy": 1.0, + "total_loss": 0.38278165459632874 + } + } + ] + }, + "train_dir": "outputs/phase5_baseline_expert_only/train" +} diff --git a/outputs/phase5_baseline_expert_only/train/best.pt b/outputs/phase5_baseline_expert_only/train/best.pt new file mode 100644 index 0000000000000000000000000000000000000000..afc6c6ae7e65baf9736378a9677f4d99090a4c9a --- /dev/null +++ b/outputs/phase5_baseline_expert_only/train/best.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb4aa8bcab62fc7453d920b2bf64d14815510bfe6fac9dfa8ab9edd1b87863ae +size 1822987 diff --git a/outputs/phase5_baseline_expert_only/train/latest.pt b/outputs/phase5_baseline_expert_only/train/latest.pt new file mode 100644 index 0000000000000000000000000000000000000000..abbe28b9247c1fb3d072cca8beb0d529f36d7eb8 --- /dev/null +++ b/outputs/phase5_baseline_expert_only/train/latest.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dad80ebf598f0128b347bc445a19d4744b32b2f851272b08c050e3f5979034ac +size 1829451 diff --git a/outputs/phase5_baseline_expert_only/train/metrics.json b/outputs/phase5_baseline_expert_only/train/metrics.json new file mode 100644 index 0000000000000000000000000000000000000000..940936aced1acbb7d7135ad8f7e796e4c4ef6cd6 --- /dev/null +++ b/outputs/phase5_baseline_expert_only/train/metrics.json @@ -0,0 +1,34 @@ +{ + "best": { + "bc_loss": 0.014749247580766678, + "progress_mae": 0.426452100276947, + "rank_acc": 0.0, + "rank_loss": 0.0, + "regret_mae": 0.6157722473144531, + "success_accuracy": 1.0, + "total_loss": 0.38278165459632874 + }, + "history": [ + { + "epoch": 1, + "train": { + "bc_loss": 0.02814817912876606, + "progress_mae": 0.44632707834243773, + "rank_acc": 0.0, + "rank_loss": 0.0, + "regret_mae": 0.5952274680137635, + "success_accuracy": 1.0, + "total_loss": 0.5427382230758667 + }, + "val": { + "bc_loss": 0.014749247580766678, + "progress_mae": 0.426452100276947, + "rank_acc": 0.0, + "rank_loss": 0.0, + "regret_mae": 0.6157722473144531, + "success_accuracy": 1.0, + "total_loss": 0.38278165459632874 + } + } + ] +} diff --git a/outputs/phase5_baseline_expert_only/train/resolved_config.json b/outputs/phase5_baseline_expert_only/train/resolved_config.json new file mode 100644 index 0000000000000000000000000000000000000000..225f1520c961cc49ba23d020ed051108b0bba933 --- /dev/null +++ b/outputs/phase5_baseline_expert_only/train/resolved_config.json @@ -0,0 +1,38 @@ +{ + "action_dim": 8, + "action_horizon": 4, + "batch_groups": 1, + "batch_size_groups": null, + "dataset_dir": "outputs/phase5_baseline_expert_only/dataset", + "device": "auto", + "effect_dim": 32, + "epochs": 1, + "hidden_dim": 32, + "lang_dim": 64, + "learning_rate": 0.001, + "losses": { + "bc": 1.0, + "bc_best_action": 1.0, + "causal_contrastive": 0.5, + "contrast": 0.0, + "effect": 0.0, + "forward_effect_prediction": 1.0, + "lang_pair": 0.0, + "language_minimal_pair": 0.25, + "progress": 0.0, + "rank": 0.0, + "regret": 0.0, + "regret_prediction": 0.5, + "same_state_pairwise_ranking": 1.0, + "success": 1.0 + }, + "lr": null, + "obs_dim": 32, + "output_dir": "outputs/phase5_baseline_expert_only/train", + "pair_count_per_group": 8, + "records_per_group": 1, + "seed": 0, + "val_fraction": 0.2, + "wandb": false, + "weight_decay": 0.0 +} diff --git a/outputs/phase5_eval/causalstress.json b/outputs/phase5_eval/causalstress.json new file mode 100644 index 0000000000000000000000000000000000000000..6bbcc75a9cac088b0335221475edc434cb26e013 --- /dev/null +++ b/outputs/phase5_eval/causalstress.json @@ -0,0 +1,160 @@ +{ + "categories": [ + "counterfactual_ranking", + "effect_query", + "minimal_language_change", + "near_miss_boundary", + "physics_shift_placeholder", + "wrong_target_distractor" + ], + "config": { + "backend": "toy", + "checkpoint": "outputs/phase5_train_debug/run/best.pt", + "k": 4, + "num_tasks": 6, + "seed": 0 + }, + "effect_prediction_mae": 0.1568650966634285, + "instruction_switch_accuracy": 0.3333333333333333, + "ndcg_at_k": 0.8978088012057569, + "num_groups": 6, + "num_records": 24, + "pairwise_ranking_accuracy": 0.7333333333333333, + "per_category": { + "counterfactual_ranking": { + "effect_mae": 0.14521079774972168, + "failure_rate": 0.0, + "instruction_switch": 0.0, + "ndcg": 1.0, + "progress_mae": 0.42887312173843384, + "regret_ece": 0.40484361350536346, + "selected_failure_rate": 0.0, + "selected_success": 1.0, + "success": 1.0, + "success_pred": 1.0, + "top1": 1.0 + }, + "effect_query": { + "effect_mae": 0.14961658866377547, + "effect_query_progress_mae": 0.4636450409889221, + "failure_rate": 0.25, + "instruction_switch": 1.0, + "ndcg": 1.0, + "pair_correct": 1.0, + "progress_mae": 0.4636450409889221, + "regret_ece": 0.7061460018157959, + "selected_failure_rate": 0.0, + "selected_success": 1.0, + "success": 0.75, + "success_pred": 0.75, + "top1": 1.0 + }, + "minimal_language_change": { + "effect_mae": 0.15910413572832477, + "failure_rate": 0.5, + "instruction_switch": 1.0, + "ndcg": 1.0, + "pair_correct": 1.0, + "progress_mae": 0.49721919000148773, + "regret_ece": 0.9990267902612686, + "selected_failure_rate": 0.0, + "selected_success": 1.0, + "success": 0.5, + "success_pred": 0.5, + "top1": 1.0 + }, + "near_miss_boundary": { + "effect_mae": 0.1769647250964539, + "failure_rate": 0.0, + "instruction_switch": 0.0, + "ndcg": 1.0, + "progress_mae": 0.4332936853170395, + "regret_ece": 0.399145744740963, + "selected_failure_rate": 0.0, + "selected_success": 1.0, + "success": 1.0, + "success_pred": 1.0, + "top1": 1.0 + }, + "physics_shift_placeholder": { + "effect_mae": 0.1439706407815218, + "failure_rate": 0.5, + "instruction_switch": 0.0, + "ndcg": 0.6934264036172708, + "pair_correct": 0.5, + "progress_mae": 0.49999795854091644, + "regret_ece": 1.0004621520638466, + "selected_failure_rate": 1.0, + "selected_success": 0.0, + "success": 0.5, + "success_pred": 0.5, + "top1": 0.0 + }, + "wrong_target_distractor": { + "effect_mae": 0.16632369196077343, + "failure_rate": 0.5, + "instruction_switch": 0.0, + "ndcg": 0.6934264036172708, + "pair_correct": 0.5, + "progress_mae": 0.5003969520330429, + "regret_ece": 1.0000202730298042, + "selected_failure_rate": 1.0, + "selected_success": 0.0, + "success": 0.5, + "success_pred": 0.5, + "top1": 0.0 + } + }, + "regret_calibration_error": 0.7516074292361736, + "success_prediction_accuracy": 0.7083333333333334, + "target_confusion_matrix": { + "cube": { + "target_zone": 1 + }, + "drawer": { + "drawer": 1 + }, + "green_block": { + "yellow_block": 1 + }, + "red_mug": { + "blue_bowl": 1, + "red_cup": 1, + "red_mug": 1 + } + }, + "target_confusion_matrix_by_category": { + "counterfactual_ranking": { + "green_block": { + "yellow_block": 1 + } + }, + "effect_query": { + "drawer": { + "drawer": 1 + } + }, + "minimal_language_change": { + "red_mug": { + "red_mug": 1 + } + }, + "near_miss_boundary": { + "red_mug": { + "blue_bowl": 1 + } + }, + "physics_shift_placeholder": { + "cube": { + "target_zone": 1 + } + }, + "wrong_target_distractor": { + "red_mug": { + "red_cup": 1 + } + } + }, + "task_success_rate": 0.16666666666666666, + "top1_action_selection": 0.6666666666666666 +} diff --git a/outputs/phase5_inference/inference.json b/outputs/phase5_inference/inference.json new file mode 100644 index 0000000000000000000000000000000000000000..901dc725ef9068c8bfe1745c7284dd396e711128 --- /dev/null +++ b/outputs/phase5_inference/inference.json @@ -0,0 +1,59 @@ +{ + "checkpoint": "outputs/phase5_train_debug/run/best.pt", + "dataset": "outputs/phase5_train_debug/cil", + "group_id": "toy_pick_red_mug-s0000-07d8558fd93e", + "instruction": "Pick up the red mug.", + "prediction": { + "action_chunk": { + "action_id": "act-f59339b87f55c34c-task-bound", + "horizon": 4, + "metadata": { + "bound_target": "red_mug", + "source": "devectorized_toy_policy", + "task_bound": true + }, + "representation": "semantic", + "skill_type": null, + "values": [ + { + "command": "move_to", + "object": "red_mug", + "position": [ + -0.05678968504071236, + 0.007661838084459305, + 0.022968538105487823 + ], + "target": "red_mug" + }, + { + "command": "grasp", + "object": "red_mug", + "target": "red_mug" + }, + { + "command": "noop" + }, + { + "command": "noop" + } + ] + }, + "mode": "model_policy", + "model_config": { + "action_dim": 8, + "action_horizon": 4, + "dropout": 0.0, + "effect_dim": 32, + "hidden_dim": 64, + "intervention_dim": 128, + "lang_dim": 64, + "language_dim": null, + "obs_dim": 32, + "observation_dim": null, + "skill_vocab_size": 32, + "text_vocab_size": 4096 + } + }, + "query_record_id": "rec-33249a76c7f96e9c002537e5", + "task_id": "toy_pick_red_mug" +} diff --git a/outputs/phase5_smoke/cil/group_index.jsonl b/outputs/phase5_smoke/cil/group_index.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..660c2026971d8cb3017d9c52cb975720e943006a --- /dev/null +++ b/outputs/phase5_smoke/cil/group_index.jsonl @@ -0,0 +1,6 @@ +{"candidate_type_counts": {"delayed": 1, "expert": 1, "near_miss": 1, "random_negative": 1}, "group_id": "toy_pick_red_mug-s0000-07d8558fd93e", "instruction": "Pick up the red mug.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-33249a76c7f96e9c002537e5", "rec-34767691b146b54c935959e4", "rec-66157ca007873d3c0f5e37f7", "rec-3dbbe6ccebd0c476b880d6f2"], "scene_id": "toy_pick_red_mug-scene-0000", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": "states/toy_pick_red_mug-s0000-07d8558fd93e.pkl", "state_hash": "07d8558fd93e39692be8bdd366e5b31f9afbc61e3e91f99f22702d8a4e67cb95", "success_count": 3, "task_id": "toy_pick_red_mug"} +{"candidate_type_counts": {"expert": 1, "near_miss": 1, "noop": 1, "random_negative": 1}, "group_id": "toy_pick_red_mug-s0001-a3f87a69e3e5", "instruction": "Pick up the red mug.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-137cf57afd46c64bc77dbdee", "rec-5c4f505b20813a8edaa3230f", "rec-917430f79fdde23b4d2e199d", "rec-db69cd83f54de633364e33d3"], "scene_id": "toy_pick_red_mug-scene-0001", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": "states/toy_pick_red_mug-s0001-a3f87a69e3e5.pkl", "state_hash": "a3f87a69e3e5c1a4408ebbad970c4a0d1555d03d33b960481657161af70c5f1b", "success_count": 3, "task_id": "toy_pick_red_mug"} +{"candidate_type_counts": {"expert": 1, "near_miss": 1, "wrong_relation": 1, "wrong_target": 1}, "group_id": "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", "instruction": "Put the red mug in the blue bowl.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-0a6971a4e4ad6ee040149a97", "rec-3b6c7f5495d01889a41ba868", "rec-228c7644bb33f0e5c2f13efe", "rec-6780cfa0c2a082695d539b53"], "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "shard_path": "shards/shard_000001.jsonl", "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2.pkl", "state_hash": "c46dabefe4b2286bd2d0e7204047dd05d0f212208ea8eac3c454f34bab3d0e9e", "success_count": 4, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type_counts": {"expert": 1, "near_miss": 1, "noop": 1, "wrong_target": 1}, "group_id": "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca", "instruction": "Put the red mug in the blue bowl.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-3ad6215f5852f6bf59e36bad", "rec-0c0239208e2fecee942d1d07", "rec-4ccaf6819687a8dbeaae3caa", "rec-69b30165834e9a26db9a33a7"], "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "shard_path": "shards/shard_000001.jsonl", "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca.pkl", "state_hash": "5050f098a0cac7fcc9ed3303ba80ff44f7efbb48d7a119c2a27c6d706bd86f62", "success_count": 3, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type_counts": {"expert": 1, "near_miss": 2, "wrong_target": 1}, "group_id": "toy_green_block_left_of_yellow_block-s0000-f077d62b18f4", "instruction": "Put the green block left of the yellow block.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-f0684fcbb4c1312e3715f346", "rec-2d7b5692f4e59dbbcbb0bfc0", "rec-2612aadafc47f9be4a6eacf1", "rec-8d4e34619b3b55e38260272c"], "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "shard_path": "shards/shard_000002.jsonl", "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0000-f077d62b18f4.pkl", "state_hash": "f077d62b18f4faffec21b3d952cca1ba1df312cfbf70dd7e9874a8b52483846a", "success_count": 4, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type_counts": {"expert": 1, "near_miss": 2, "wrong_target": 1}, "group_id": "toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10", "instruction": "Put the green block left of the yellow block.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-05f1a7aff1c6ad66149bb5a6", "rec-35d27ade74177b7a36b9f958", "rec-4c39137c73eeabc99dab1f8d", "rec-95ffda0ecf4ead6777f905da"], "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "shard_path": "shards/shard_000002.jsonl", "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10.pkl", "state_hash": "6ff1dfaa9b1073cc916098cafbb45e7a9ca54d9e0ade57b91197b0605a47521b", "success_count": 4, "task_id": "toy_green_block_left_of_yellow_block"} diff --git a/outputs/phase5_smoke/cil/manifest.json b/outputs/phase5_smoke/cil/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..a1d74ab645e815b4daed26cef627fe7b6ba762b3 --- /dev/null +++ b/outputs/phase5_smoke/cil/manifest.json @@ -0,0 +1,50 @@ +{ + "backend": "toy", + "created_at": "2026-06-19T04:42:29.711328+00:00", + "dataset_name": "cil_toy", + "format": "dovla_cil", + "group_count": 6, + "group_index_path": "group_index.jsonl", + "index_format": "jsonl", + "k": 4, + "num_groups": 6, + "num_records": 24, + "record_count": 24, + "record_index_path": "record_index.jsonl", + "schema_version": "0.1", + "seed": 0, + "shard_count": 3, + "shard_format": "jsonl", + "shard_size": 8, + "shards": [ + { + "format": "jsonl", + "group_ids": [ + "toy_pick_red_mug-s0000-07d8558fd93e", + "toy_pick_red_mug-s0001-a3f87a69e3e5" + ], + "path": "shards/shard_000000.jsonl", + "record_count": 8 + }, + { + "format": "jsonl", + "group_ids": [ + "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", + "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca" + ], + "path": "shards/shard_000001.jsonl", + "record_count": 8 + }, + { + "format": "jsonl", + "group_ids": [ + "toy_green_block_left_of_yellow_block-s0000-f077d62b18f4", + "toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10" + ], + "path": "shards/shard_000002.jsonl", + "record_count": 8 + } + ], + "task_count": 3, + "version": "0.1" +} diff --git a/outputs/phase5_smoke/cil/metadata.json b/outputs/phase5_smoke/cil/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..a1d74ab645e815b4daed26cef627fe7b6ba762b3 --- /dev/null +++ b/outputs/phase5_smoke/cil/metadata.json @@ -0,0 +1,50 @@ +{ + "backend": "toy", + "created_at": "2026-06-19T04:42:29.711328+00:00", + "dataset_name": "cil_toy", + "format": "dovla_cil", + "group_count": 6, + "group_index_path": "group_index.jsonl", + "index_format": "jsonl", + "k": 4, + "num_groups": 6, + "num_records": 24, + "record_count": 24, + "record_index_path": "record_index.jsonl", + "schema_version": "0.1", + "seed": 0, + "shard_count": 3, + "shard_format": "jsonl", + "shard_size": 8, + "shards": [ + { + "format": "jsonl", + "group_ids": [ + "toy_pick_red_mug-s0000-07d8558fd93e", + "toy_pick_red_mug-s0001-a3f87a69e3e5" + ], + "path": "shards/shard_000000.jsonl", + "record_count": 8 + }, + { + "format": "jsonl", + "group_ids": [ + "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", + "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca" + ], + "path": "shards/shard_000001.jsonl", + "record_count": 8 + }, + { + "format": "jsonl", + "group_ids": [ + "toy_green_block_left_of_yellow_block-s0000-f077d62b18f4", + "toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10" + ], + "path": "shards/shard_000002.jsonl", + "record_count": 8 + } + ], + "task_count": 3, + "version": "0.1" +} diff --git a/outputs/phase5_smoke/cil/record_index.jsonl b/outputs/phase5_smoke/cil/record_index.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..f6e8046ce7da8968343867013ff8a871fdcf16ca --- /dev/null +++ b/outputs/phase5_smoke/cil/record_index.jsonl @@ -0,0 +1,24 @@ +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_pick_red_mug-s0000-07d8558fd93e", "rank_within_group": 0, "record_id": "rec-33249a76c7f96e9c002537e5", "regret": 0.0, "reward_progress": 1.0, "row_index": 0, "shard_path": "shards/shard_000000.jsonl", "state_hash": "07d8558fd93e39692be8bdd366e5b31f9afbc61e3e91f99f22702d8a4e67cb95", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_pick_red_mug-s0000-07d8558fd93e", "rank_within_group": 1, "record_id": "rec-34767691b146b54c935959e4", "regret": 0.0, "reward_progress": 1.0, "row_index": 1, "shard_path": "shards/shard_000000.jsonl", "state_hash": "07d8558fd93e39692be8bdd366e5b31f9afbc61e3e91f99f22702d8a4e67cb95", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "delayed", "failure_type": "no_motion", "group_id": "toy_pick_red_mug-s0000-07d8558fd93e", "rank_within_group": 3, "record_id": "rec-66157ca007873d3c0f5e37f7", "regret": 2.0, "reward_progress": 0.0, "row_index": 2, "shard_path": "shards/shard_000000.jsonl", "state_hash": "07d8558fd93e39692be8bdd366e5b31f9afbc61e3e91f99f22702d8a4e67cb95", "success": false, "task_id": "toy_pick_red_mug"} +{"candidate_type": "random_negative", "failure_type": "success", "group_id": "toy_pick_red_mug-s0000-07d8558fd93e", "rank_within_group": 2, "record_id": "rec-3dbbe6ccebd0c476b880d6f2", "regret": 0.0, "reward_progress": 1.0, "row_index": 3, "shard_path": "shards/shard_000000.jsonl", "state_hash": "07d8558fd93e39692be8bdd366e5b31f9afbc61e3e91f99f22702d8a4e67cb95", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_pick_red_mug-s0001-a3f87a69e3e5", "rank_within_group": 0, "record_id": "rec-137cf57afd46c64bc77dbdee", "regret": 0.0, "reward_progress": 1.0, "row_index": 4, "shard_path": "shards/shard_000000.jsonl", "state_hash": "a3f87a69e3e5c1a4408ebbad970c4a0d1555d03d33b960481657161af70c5f1b", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_pick_red_mug-s0001-a3f87a69e3e5", "rank_within_group": 1, "record_id": "rec-5c4f505b20813a8edaa3230f", "regret": 0.0, "reward_progress": 1.0, "row_index": 5, "shard_path": "shards/shard_000000.jsonl", "state_hash": "a3f87a69e3e5c1a4408ebbad970c4a0d1555d03d33b960481657161af70c5f1b", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "random_negative", "failure_type": "success", "group_id": "toy_pick_red_mug-s0001-a3f87a69e3e5", "rank_within_group": 2, "record_id": "rec-917430f79fdde23b4d2e199d", "regret": 0.0, "reward_progress": 1.0, "row_index": 6, "shard_path": "shards/shard_000000.jsonl", "state_hash": "a3f87a69e3e5c1a4408ebbad970c4a0d1555d03d33b960481657161af70c5f1b", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "noop", "failure_type": "no_motion", "group_id": "toy_pick_red_mug-s0001-a3f87a69e3e5", "rank_within_group": 3, "record_id": "rec-db69cd83f54de633364e33d3", "regret": 2.0, "reward_progress": 0.0, "row_index": 7, "shard_path": "shards/shard_000000.jsonl", "state_hash": "a3f87a69e3e5c1a4408ebbad970c4a0d1555d03d33b960481657161af70c5f1b", "success": false, "task_id": "toy_pick_red_mug"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", "rank_within_group": 0, "record_id": "rec-0a6971a4e4ad6ee040149a97", "regret": 0.0, "reward_progress": 1.0, "row_index": 0, "shard_path": "shards/shard_000001.jsonl", "state_hash": "c46dabefe4b2286bd2d0e7204047dd05d0f212208ea8eac3c454f34bab3d0e9e", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "wrong_target", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", "rank_within_group": 2, "record_id": "rec-3b6c7f5495d01889a41ba868", "regret": 0.0, "reward_progress": 1.0, "row_index": 1, "shard_path": "shards/shard_000001.jsonl", "state_hash": "c46dabefe4b2286bd2d0e7204047dd05d0f212208ea8eac3c454f34bab3d0e9e", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", "rank_within_group": 1, "record_id": "rec-228c7644bb33f0e5c2f13efe", "regret": 0.0, "reward_progress": 1.0, "row_index": 2, "shard_path": "shards/shard_000001.jsonl", "state_hash": "c46dabefe4b2286bd2d0e7204047dd05d0f212208ea8eac3c454f34bab3d0e9e", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "wrong_relation", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", "rank_within_group": 3, "record_id": "rec-6780cfa0c2a082695d539b53", "regret": 0.0, "reward_progress": 1.0, "row_index": 3, "shard_path": "shards/shard_000001.jsonl", "state_hash": "c46dabefe4b2286bd2d0e7204047dd05d0f212208ea8eac3c454f34bab3d0e9e", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca", "rank_within_group": 1, "record_id": "rec-3ad6215f5852f6bf59e36bad", "regret": 0.0, "reward_progress": 1.0, "row_index": 4, "shard_path": "shards/shard_000001.jsonl", "state_hash": "5050f098a0cac7fcc9ed3303ba80ff44f7efbb48d7a119c2a27c6d706bd86f62", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "wrong_target", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca", "rank_within_group": 0, "record_id": "rec-0c0239208e2fecee942d1d07", "regret": 0.0, "reward_progress": 1.0, "row_index": 5, "shard_path": "shards/shard_000001.jsonl", "state_hash": "5050f098a0cac7fcc9ed3303ba80ff44f7efbb48d7a119c2a27c6d706bd86f62", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca", "rank_within_group": 2, "record_id": "rec-4ccaf6819687a8dbeaae3caa", "regret": 0.0, "reward_progress": 1.0, "row_index": 6, "shard_path": "shards/shard_000001.jsonl", "state_hash": "5050f098a0cac7fcc9ed3303ba80ff44f7efbb48d7a119c2a27c6d706bd86f62", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "noop", "failure_type": "no_motion", "group_id": "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca", "rank_within_group": 3, "record_id": "rec-69b30165834e9a26db9a33a7", "regret": 2.0, "reward_progress": 0.0, "row_index": 7, "shard_path": "shards/shard_000001.jsonl", "state_hash": "5050f098a0cac7fcc9ed3303ba80ff44f7efbb48d7a119c2a27c6d706bd86f62", "success": false, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0000-f077d62b18f4", "rank_within_group": 3, "record_id": "rec-f0684fcbb4c1312e3715f346", "regret": 0.0, "reward_progress": 1.0, "row_index": 0, "shard_path": "shards/shard_000002.jsonl", "state_hash": "f077d62b18f4faffec21b3d952cca1ba1df312cfbf70dd7e9874a8b52483846a", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "wrong_target", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0000-f077d62b18f4", "rank_within_group": 1, "record_id": "rec-2d7b5692f4e59dbbcbb0bfc0", "regret": 0.0, "reward_progress": 1.0, "row_index": 1, "shard_path": "shards/shard_000002.jsonl", "state_hash": "f077d62b18f4faffec21b3d952cca1ba1df312cfbf70dd7e9874a8b52483846a", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0000-f077d62b18f4", "rank_within_group": 0, "record_id": "rec-2612aadafc47f9be4a6eacf1", "regret": 0.0, "reward_progress": 1.0, "row_index": 2, "shard_path": "shards/shard_000002.jsonl", "state_hash": "f077d62b18f4faffec21b3d952cca1ba1df312cfbf70dd7e9874a8b52483846a", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0000-f077d62b18f4", "rank_within_group": 2, "record_id": "rec-8d4e34619b3b55e38260272c", "regret": 0.0, "reward_progress": 1.0, "row_index": 3, "shard_path": "shards/shard_000002.jsonl", "state_hash": "f077d62b18f4faffec21b3d952cca1ba1df312cfbf70dd7e9874a8b52483846a", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10", "rank_within_group": 0, "record_id": "rec-05f1a7aff1c6ad66149bb5a6", "regret": 0.0, "reward_progress": 1.0, "row_index": 4, "shard_path": "shards/shard_000002.jsonl", "state_hash": "6ff1dfaa9b1073cc916098cafbb45e7a9ca54d9e0ade57b91197b0605a47521b", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "wrong_target", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10", "rank_within_group": 1, "record_id": "rec-35d27ade74177b7a36b9f958", "regret": 0.0, "reward_progress": 1.0, "row_index": 5, "shard_path": "shards/shard_000002.jsonl", "state_hash": "6ff1dfaa9b1073cc916098cafbb45e7a9ca54d9e0ade57b91197b0605a47521b", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10", "rank_within_group": 2, "record_id": "rec-4c39137c73eeabc99dab1f8d", "regret": 0.0, "reward_progress": 1.0, "row_index": 6, "shard_path": "shards/shard_000002.jsonl", "state_hash": "6ff1dfaa9b1073cc916098cafbb45e7a9ca54d9e0ade57b91197b0605a47521b", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10", "rank_within_group": 3, "record_id": "rec-95ffda0ecf4ead6777f905da", "regret": 0.0, "reward_progress": 1.0, "row_index": 7, "shard_path": "shards/shard_000002.jsonl", "state_hash": "6ff1dfaa9b1073cc916098cafbb45e7a9ca54d9e0ade57b91197b0605a47521b", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} diff --git a/outputs/phase5_smoke/cil/shards/shard_000000.jsonl b/outputs/phase5_smoke/cil/shards/shard_000000.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..8150d0d081155760b74fe5800d736e63e688c3e4 --- /dev/null +++ b/outputs/phase5_smoke/cil/shards/shard_000000.jsonl @@ -0,0 +1,8 @@ +{"action_chunk": {"action_id": "expert-0", "horizon": 2, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0000-07d8558fd93e", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 3269563184, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0000-07d8558fd93e.pkl", "state_index": 0, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-33249a76c7f96e9c002537e5", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0000", "state_hash": "07d8558fd93e39692be8bdd366e5b31f9afbc61e3e91f99f22702d8a4e67cb95", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.15]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-3269563184", "horizon": 3, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": "expert-grasp-red_mug", "perturbation": {"dx": -0.08, "dy": -0.1, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "move_to", "position": [-0.08, -0.1, 0.0]}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0000-07d8558fd93e", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 3269563184, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0000-07d8558fd93e.pkl", "state_index": 0, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.08, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.08, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.08, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.08, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-34767691b146b54c935959e4", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0000", "state_hash": "07d8558fd93e39692be8bdd366e5b31f9afbc61e3e91f99f22702d8a4e67cb95", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.3236, -0.0913, -0.03]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.08, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.08, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "delay-3269563184", "horizon": 2, "metadata": {"candidate_type": "delayed", "difficulty": 0.9, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "delay", "steps": 2}}, "representation": "semantic", "skill_type": "delay", "values": [{"command": "delay", "steps": 2}, {"command": "noop"}]}, "candidate_type": "delayed", "failure": {"language_explanation": "The action did not produce meaningful motion.", "metadata": {}, "symbolic_reason": "no object pose, grasp, or articulation change was observed", "type": "no_motion"}, "group_id": "toy_pick_red_mug-s0000-07d8558fd93e", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 3269563184, "local_symbolic_explanation": "The action did not produce meaningful motion.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0000-07d8558fd93e.pkl", "state_index": 0, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-66157ca007873d3c0f5e37f7", "regret": 2.0, "reward": {"dense_components": {"relation_partial": 0.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 0.0}, "progress": 0.0, "success": false, "terminal_success": false}, "scene_id": "toy_pick_red_mug-scene-0000", "state_hash": "07d8558fd93e39692be8bdd366e5b31f9afbc61e3e91f99f22702d8a4e67cb95", "structured_effect": {"articulation_delta": {}, "contact_events": [{"steps": 2, "type": "delay"}, {"type": "noop"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"steps": 2, "type": "delay"}, {"type": "noop"}], "explanation": "Task predicates were not satisfied.", "failure_type": "task_not_satisfied", "success": false}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": false, "success": false}}, "moved_objects": [], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.0]}, "relation_after": {"grasped(red_mug)": false, "success": false}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "random-neg-0-3269563184", "horizon": 2, "metadata": {"candidate_type": "random_negative", "difficulty": 0.8, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "random_negative"}}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}]}, "candidate_type": "random_negative", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0000-07d8558fd93e", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 3269563184, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0000-07d8558fd93e.pkl", "state_index": 0, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-3dbbe6ccebd0c476b880d6f2", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0000", "state_hash": "07d8558fd93e39692be8bdd366e5b31f9afbc61e3e91f99f22702d8a4e67cb95", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.15]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "expert-0", "horizon": 2, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0001-a3f87a69e3e5", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 1101978868, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0001-a3f87a69e3e5.pkl", "state_index": 1, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.4197, 0.0115, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4197, 0.0115, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-137cf57afd46c64bc77dbdee", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0001", "state_hash": "a3f87a69e3e5c1a4408ebbad970c4a0d1555d03d33b960481657161af70c5f1b", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.15]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4197, 0.0115, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-1101978868", "horizon": 3, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": "expert-grasp-red_mug", "perturbation": {"dx": 0.12, "dy": -0.1, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "move_to", "position": [0.12, -0.1, 0.0]}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0001-a3f87a69e3e5", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 1101978868, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0001-a3f87a69e3e5.pkl", "state_index": 1, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [0.12, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.12, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [0.12, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.12, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-5c4f505b20813a8edaa3230f", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0001", "state_hash": "a3f87a69e3e5c1a4408ebbad970c4a0d1555d03d33b960481657161af70c5f1b", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.5397000000000001, -0.1115, -0.03]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [0.12, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.12, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "random-neg-0-1101978868", "horizon": 2, "metadata": {"candidate_type": "random_negative", "difficulty": 0.8, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "random_negative"}}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}]}, "candidate_type": "random_negative", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0001-a3f87a69e3e5", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 1101978868, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0001-a3f87a69e3e5.pkl", "state_index": 1, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.4197, 0.0115, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4197, 0.0115, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-917430f79fdde23b4d2e199d", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0001", "state_hash": "a3f87a69e3e5c1a4408ebbad970c4a0d1555d03d33b960481657161af70c5f1b", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.15]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4197, 0.0115, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "noop-1101978868", "horizon": 1, "metadata": {"candidate_type": "noop", "difficulty": 0.95, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "no_op"}}, "representation": "semantic", "skill_type": "noop", "values": [{"command": "noop"}]}, "candidate_type": "noop", "failure": {"language_explanation": "The action did not produce meaningful motion.", "metadata": {}, "symbolic_reason": "no object pose, grasp, or articulation change was observed", "type": "no_motion"}, "group_id": "toy_pick_red_mug-s0001-a3f87a69e3e5", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 1101978868, "local_symbolic_explanation": "The action did not produce meaningful motion.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0001-a3f87a69e3e5.pkl", "state_index": 1, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-db69cd83f54de633364e33d3", "regret": 2.0, "reward": {"dense_components": {"relation_partial": 0.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 0.0}, "progress": 0.0, "success": false, "terminal_success": false}, "scene_id": "toy_pick_red_mug-scene-0001", "state_hash": "a3f87a69e3e5c1a4408ebbad970c4a0d1555d03d33b960481657161af70c5f1b", "structured_effect": {"articulation_delta": {}, "contact_events": [{"type": "noop"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"type": "noop"}], "explanation": "Task predicates were not satisfied.", "failure_type": "task_not_satisfied", "success": false}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": false, "success": false}}, "moved_objects": [], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.0]}, "relation_after": {"grasped(red_mug)": false, "success": false}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} diff --git a/outputs/phase5_smoke/cil/shards/shard_000001.jsonl b/outputs/phase5_smoke/cil/shards/shard_000001.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..2801f4aa8763c8682ec13fbeeea04a0d30a2258b --- /dev/null +++ b/outputs/phase5_smoke/cil/shards/shard_000001.jsonl @@ -0,0 +1,8 @@ +{"action_chunk": {"action_id": "expert-0", "horizon": 3, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "inside", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.128, 0.0528, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 3813448054, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2.pkl", "state_index": 0, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.128, 0.0528, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.128, 0.0528, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.128, 0.0528, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.128, 0.0528, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-0a6971a4e4ad6ee040149a97", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.8699312987941002}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "state_hash": "c46dabefe4b2286bd2d0e7204047dd05d0f212208ea8eac3c454f34bab3d0e9e", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.3016, 0.0601, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.128, 0.0528, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.128, 0.0528, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "wrong-target-blue_bowl-0-3813448054", "horizon": 3, "metadata": {"candidate_type": "wrong_target", "difficulty": 0.6, "intended_relation": "inside", "intended_target": "blue_bowl", "parent_action_id": "expert-place-red_mug-inside-blue_bowl", "perturbation": {"kind": "target_swap"}, "planner": "toy_symbolic", "target_replacement": "blue_bowl"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "blue_bowl"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.128, 0.0528, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "wrong_target", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 3813448054, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2.pkl", "state_index": 0, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.128, 0.0528, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.128, 0.0528, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.128, 0.0528, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.128, 0.0528, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-3b6c7f5495d01889a41ba868", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.8699312987941002}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "state_hash": "c46dabefe4b2286bd2d0e7204047dd05d0f212208ea8eac3c454f34bab3d0e9e", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "blue_bowl", "type": "proximity"}, {"distance": 0.3421616138610525, "object": "red_mug", "type": "failed_grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": false, "metadata": {"info": {"contacts": [{"object": "blue_bowl", "type": "proximity"}, {"distance": 0.3421616138610525, "object": "red_mug", "type": "failed_grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.3016, 0.0601, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.128, 0.0528, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.128, 0.0528, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-3813448054", "horizon": 3, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "inside", "intended_target": "red_mug", "parent_action_id": "expert-place-red_mug-inside-blue_bowl", "perturbation": {"dx": -0.12, "dy": -0.04, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.248, 0.012799999999999999, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 3813448054, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2.pkl", "state_index": 0, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.248, 0.012799999999999999, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.248, 0.012799999999999999, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.248, 0.012799999999999999, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.248, 0.012799999999999999, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-228c7644bb33f0e5c2f13efe", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.5686109211311835}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "state_hash": "c46dabefe4b2286bd2d0e7204047dd05d0f212208ea8eac3c454f34bab3d0e9e", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.18159999999999998, 0.0201, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.248, 0.012799999999999999, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.248, 0.012799999999999999, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "wrong-relation-red_mug-next_to-3813448054", "horizon": 3, "metadata": {"candidate_type": "wrong_relation", "difficulty": 0.55, "intended_relation": "next_to", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"from": "inside", "kind": "relation_swap", "to": "next_to"}}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "object": "red_mug", "position": [-0.048, 0.0528, 0.06], "reference": "blue_bowl", "relation": "next_to"}]}, "candidate_type": "wrong_relation", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 3813448054, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2.pkl", "state_index": 0, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.048, 0.0528, 0.06], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.048, 0.0528, 0.21], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.048, 0.0528, 0.06], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.048, 0.0528, 0.21], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-6780cfa0c2a082695d539b53", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.7221731324370514}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "state_hash": "c46dabefe4b2286bd2d0e7204047dd05d0f212208ea8eac3c454f34bab3d0e9e", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "next_to", "type": "place"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "next_to", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.3816, 0.0601, 0.03]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.048, 0.0528, 0.06], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.048, 0.0528, 0.21], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "expert-0", "horizon": 3, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "inside", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.168, 0.0095, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 1965660509, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca.pkl", "state_index": 1, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.168, 0.0095, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.168, 0.0095, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.168, 0.0095, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.168, 0.0095, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-3ad6215f5852f6bf59e36bad", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.839960215566157}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "state_hash": "5050f098a0cac7fcc9ed3303ba80ff44f7efbb48d7a119c2a27c6d706bd86f62", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.2498, 0.0083, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.168, 0.0095, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.168, 0.0095, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "wrong-target-blue_bowl-0-1965660509", "horizon": 3, "metadata": {"candidate_type": "wrong_target", "difficulty": 0.6, "intended_relation": "inside", "intended_target": "blue_bowl", "parent_action_id": "expert-place-red_mug-inside-blue_bowl", "perturbation": {"kind": "target_swap"}, "planner": "toy_symbolic", "target_replacement": "blue_bowl"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "blue_bowl"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.168, 0.0095, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "wrong_target", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 1965660509, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca.pkl", "state_index": 1, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.168, 0.0095, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.168, 0.0095, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.168, 0.0095, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.168, 0.0095, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-0c0239208e2fecee942d1d07", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.839960215566157}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "state_hash": "5050f098a0cac7fcc9ed3303ba80ff44f7efbb48d7a119c2a27c6d706bd86f62", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "blue_bowl", "type": "proximity"}, {"distance": 0.29149430526169806, "object": "red_mug", "type": "failed_grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": false, "metadata": {"info": {"contacts": [{"object": "blue_bowl", "type": "proximity"}, {"distance": 0.29149430526169806, "object": "red_mug", "type": "failed_grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.2498, 0.0083, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.168, 0.0095, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.168, 0.0095, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-1965660509", "horizon": 3, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "inside", "intended_target": "red_mug", "parent_action_id": "expert-place-red_mug-inside-blue_bowl", "perturbation": {"dx": 0.08, "dy": -0.1, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.08800000000000001, -0.09050000000000001, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 1965660509, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca.pkl", "state_index": 1, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.08800000000000001, -0.09050000000000001, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.08800000000000001, -0.09050000000000001, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.08800000000000001, -0.09050000000000001, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.08800000000000001, -0.09050000000000001, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-4ccaf6819687a8dbeaae3caa", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.46321024435227165}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "state_hash": "5050f098a0cac7fcc9ed3303ba80ff44f7efbb48d7a119c2a27c6d706bd86f62", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.3298, -0.09170000000000002, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.08800000000000001, -0.09050000000000001, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.08800000000000001, -0.09050000000000001, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "noop-1965660509", "horizon": 1, "metadata": {"candidate_type": "noop", "difficulty": 0.95, "intended_relation": "inside", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "no_op"}}, "representation": "semantic", "skill_type": "noop", "values": [{"command": "noop"}]}, "candidate_type": "noop", "failure": {"language_explanation": "The action did not produce meaningful motion.", "metadata": {}, "symbolic_reason": "no object pose, grasp, or articulation change was observed", "type": "no_motion"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 1965660509, "local_symbolic_explanation": "The action did not produce meaningful motion.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca.pkl", "state_index": 1, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-69b30165834e9a26db9a33a7", "regret": 2.0, "reward": {"dense_components": {"relation_partial": 0.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 0.0, "target_moved_closer": 0.0}, "progress": 0.0, "success": false, "terminal_success": false}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "state_hash": "5050f098a0cac7fcc9ed3303ba80ff44f7efbb48d7a119c2a27c6d706bd86f62", "structured_effect": {"articulation_delta": {}, "contact_events": [{"type": "noop"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"type": "noop"}], "explanation": "Task predicates were not satisfied.", "failure_type": "task_not_satisfied", "success": false}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": false, "success": false}}, "moved_objects": [], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.0, 0.0, 0.0]}, "relation_after": {"inside(red_mug,blue_bowl)": false, "success": false}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} diff --git a/outputs/phase5_smoke/cil/shards/shard_000002.jsonl b/outputs/phase5_smoke/cil/shards/shard_000002.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..adf5787364c069a3f0246974cf07e79000fd2100 --- /dev/null +++ b/outputs/phase5_smoke/cil/shards/shard_000002.jsonl @@ -0,0 +1,8 @@ +{"action_chunk": {"action_id": "expert-0", "horizon": 1, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "left_of", "intended_target": "green_block", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": 0.0683, "dy": 0.0285, "object": "green_block"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0000-f077d62b18f4", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 4089500932, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0000-f077d62b18f4.pkl", "state_index": 0, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.326, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.326, 0.0487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.326, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.326, 0.0487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-f0684fcbb4c1312e3715f346", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.25873612265544277}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "state_hash": "f077d62b18f4faffec21b3d952cca1ba1df312cfbf70dd7e9874a8b52483846a", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": 0.0683, "dy": 0.0285, "object": "green_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": 0.0683, "dy": 0.0285, "object": "green_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["green_block"], "object_pose_delta": {"green_block": [0.06829999999999997, 0.0285, 0.0], "yellow_block": [0.0, 0.0, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.326, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.326, 0.0487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "wrong-target-yellow_block-0-4089500932", "horizon": 1, "metadata": {"candidate_type": "wrong_target", "difficulty": 0.6, "intended_relation": "left_of", "intended_target": "yellow_block", "parent_action_id": "expert-push-green_block-left_of-yellow_block", "perturbation": {"kind": "target_swap"}, "planner": "toy_symbolic", "target_replacement": "yellow_block"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": 0.0683, "dy": 0.0285, "object": "yellow_block"}]}, "candidate_type": "wrong_target", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0000-f077d62b18f4", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 4089500932, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0000-f077d62b18f4.pkl", "state_index": 0, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.0577, 0.0772, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.0577, 0.0772, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.0577, 0.0772, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.0577, 0.0772, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-2d7b5692f4e59dbbcbb0bfc0", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 0.0, "target_moved_closer": 0.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "state_hash": "f077d62b18f4faffec21b3d952cca1ba1df312cfbf70dd7e9874a8b52483846a", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": 0.0683, "dy": 0.0285, "object": "yellow_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": 0.0683, "dy": 0.0285, "object": "yellow_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["yellow_block"], "object_pose_delta": {"green_block": [0.0, 0.0, 0.0], "yellow_block": [0.0683, 0.028500000000000004, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.0577, 0.0772, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.0577, 0.0772, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-4089500932", "horizon": 1, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "left_of", "intended_target": "green_block", "parent_action_id": "expert-push-green_block-left_of-yellow_block", "perturbation": {"dx": -0.12, "dy": 0.1, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": -0.051699999999999996, "dy": 0.1285, "object": "green_block"}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0000-f077d62b18f4", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 4089500932, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0000-f077d62b18f4.pkl", "state_index": 0, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.446, 0.1487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.446, 0.1487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.446, 0.1487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.446, 0.1487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-2612aadafc47f9be4a6eacf1", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "state_hash": "f077d62b18f4faffec21b3d952cca1ba1df312cfbf70dd7e9874a8b52483846a", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": -0.051699999999999996, "dy": 0.1285, "object": "green_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": -0.051699999999999996, "dy": 0.1285, "object": "green_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["green_block"], "object_pose_delta": {"green_block": [-0.051700000000000024, 0.1285, 0.0], "yellow_block": [0.0, 0.0, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.446, 0.1487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.446, 0.1487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-1-4089500932", "horizon": 1, "metadata": {"candidate_type": "near_miss", "difficulty": 0.39999999999999997, "intended_relation": "left_of", "intended_target": "green_block", "parent_action_id": "expert-push-green_block-left_of-yellow_block", "perturbation": {"dx": -0.06, "dy": 0.05, "kind": "release_offset"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": 0.0683, "dy": 0.0285, "object": "green_block"}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0000-f077d62b18f4", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 4089500932, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0000-f077d62b18f4.pkl", "state_index": 0, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.326, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.326, 0.0487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.326, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.326, 0.0487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-8d4e34619b3b55e38260272c", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.25873612265544277}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "state_hash": "f077d62b18f4faffec21b3d952cca1ba1df312cfbf70dd7e9874a8b52483846a", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": 0.0683, "dy": 0.0285, "object": "green_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": 0.0683, "dy": 0.0285, "object": "green_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["green_block"], "object_pose_delta": {"green_block": [0.06829999999999997, 0.0285, 0.0], "yellow_block": [0.0, 0.0, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.326, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.326, 0.0487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "expert-0", "horizon": 1, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "left_of", "intended_target": "green_block", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": 0.0434, "dy": 0.0368, "object": "green_block"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 3905794541, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10.pkl", "state_index": 1, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.3599, 0.0439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.3599, 0.0439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-05f1a7aff1c6ad66149bb5a6", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.1875407885543134}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "state_hash": "6ff1dfaa9b1073cc916098cafbb45e7a9ca54d9e0ade57b91197b0605a47521b", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": 0.0434, "dy": 0.0368, "object": "green_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": 0.0434, "dy": 0.0368, "object": "green_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["green_block"], "object_pose_delta": {"green_block": [0.043399999999999994, 0.0368, 0.0], "yellow_block": [0.0, 0.0, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.3599, 0.0439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "wrong-target-yellow_block-0-3905794541", "horizon": 1, "metadata": {"candidate_type": "wrong_target", "difficulty": 0.6, "intended_relation": "left_of", "intended_target": "yellow_block", "parent_action_id": "expert-push-green_block-left_of-yellow_block", "perturbation": {"kind": "target_swap"}, "planner": "toy_symbolic", "target_replacement": "yellow_block"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": 0.0434, "dy": 0.0368, "object": "yellow_block"}]}, "candidate_type": "wrong_target", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 3905794541, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10.pkl", "state_index": 1, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1165, 0.0807, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.1165, 0.0807, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1165, 0.0807, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.1165, 0.0807, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-35d27ade74177b7a36b9f958", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 0.0, "target_moved_closer": 0.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "state_hash": "6ff1dfaa9b1073cc916098cafbb45e7a9ca54d9e0ade57b91197b0605a47521b", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": 0.0434, "dy": 0.0368, "object": "yellow_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": 0.0434, "dy": 0.0368, "object": "yellow_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["yellow_block"], "object_pose_delta": {"green_block": [0.0, 0.0, 0.0], "yellow_block": [0.04339999999999998, 0.03679999999999999, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1165, 0.0807, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.1165, 0.0807, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-3905794541", "horizon": 1, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "left_of", "intended_target": "green_block", "parent_action_id": "expert-push-green_block-left_of-yellow_block", "perturbation": {"dx": -0.08, "dy": 0.1, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": -0.0366, "dy": 0.1368, "object": "green_block"}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 3905794541, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10.pkl", "state_index": 1, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4399, 0.1439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.4399, 0.1439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4399, 0.1439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.4399, 0.1439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-4c39137c73eeabc99dab1f8d", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "state_hash": "6ff1dfaa9b1073cc916098cafbb45e7a9ca54d9e0ade57b91197b0605a47521b", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": -0.0366, "dy": 0.1368, "object": "green_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": -0.0366, "dy": 0.1368, "object": "green_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["green_block"], "object_pose_delta": {"green_block": [-0.03660000000000002, 0.1368, 0.0], "yellow_block": [0.0, 0.0, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4399, 0.1439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.4399, 0.1439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-1-3905794541", "horizon": 1, "metadata": {"candidate_type": "near_miss", "difficulty": 0.39999999999999997, "intended_relation": "left_of", "intended_target": "green_block", "parent_action_id": "expert-push-green_block-left_of-yellow_block", "perturbation": {"dx": -0.04, "dy": 0.05, "kind": "release_offset"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": 0.0434, "dy": 0.0368, "object": "green_block"}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 3905794541, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10.pkl", "state_index": 1, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.3599, 0.0439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.3599, 0.0439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-95ffda0ecf4ead6777f905da", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.1875407885543134}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "state_hash": "6ff1dfaa9b1073cc916098cafbb45e7a9ca54d9e0ade57b91197b0605a47521b", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": 0.0434, "dy": 0.0368, "object": "green_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": 0.0434, "dy": 0.0368, "object": "green_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["green_block"], "object_pose_delta": {"green_block": [0.043399999999999994, 0.0368, 0.0], "yellow_block": [0.0, 0.0, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.3599, 0.0439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} diff --git a/outputs/phase5_smoke/tasks.jsonl b/outputs/phase5_smoke/tasks.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..35f0f38f5e7221913a433e9a09364bbf80510c23 --- /dev/null +++ b/outputs/phase5_smoke/tasks.jsonl @@ -0,0 +1,3 @@ +{"allowed_skills": ["reach", "grasp"], "distractor_object_ids": [], "family": "pick", "instruction_templates": ["Pick up the red mug."], "metadata": {"target_position": 1.0, "tolerance": 0.05}, "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "objects": [{"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "mass": 0.3, "object_id": "red_mug", "scale": 1.0, "shape": "cylindrical"}], "reference_object_ids": [], "success_predicates": [{"args": ["red_mug"], "name": "grasped"}], "target_object_ids": ["red_mug"], "task_id": "toy_pick_red_mug"} +{"allowed_skills": ["reach", "grasp", "place"], "distractor_object_ids": [], "family": "place_inside", "instruction_templates": ["Put the red mug in the blue bowl."], "metadata": {"target_position": 1.1, "tolerance": 0.05}, "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "objects": [{"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "mass": 0.3, "object_id": "red_mug", "scale": 1.0, "shape": "cylindrical"}, {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "mass": 0.4, "object_id": "blue_bowl", "scale": 1.1, "shape": "round"}], "reference_object_ids": ["blue_bowl"], "success_predicates": [{"args": ["red_mug", "blue_bowl"], "name": "inside"}], "target_object_ids": ["red_mug"], "task_id": "toy_put_red_mug_in_blue_bowl"} +{"allowed_skills": ["push", "place"], "distractor_object_ids": [], "family": "spatial_place", "instruction_templates": ["Put the green block left of the yellow block."], "metadata": {"target_position": 1.2, "tolerance": 0.05}, "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "objects": [{"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "mass": 0.5, "object_id": "green_block", "scale": 1.0, "shape": "cube"}, {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "mass": 0.5, "object_id": "yellow_block", "scale": 1.0, "shape": "cube"}], "reference_object_ids": ["yellow_block"], "success_predicates": [{"args": ["green_block", "yellow_block"], "name": "left_of"}], "target_object_ids": ["green_block"], "task_id": "toy_green_block_left_of_yellow_block"} diff --git a/outputs/phase5_train_debug/cil/group_index.jsonl b/outputs/phase5_train_debug/cil/group_index.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..660c2026971d8cb3017d9c52cb975720e943006a --- /dev/null +++ b/outputs/phase5_train_debug/cil/group_index.jsonl @@ -0,0 +1,6 @@ +{"candidate_type_counts": {"delayed": 1, "expert": 1, "near_miss": 1, "random_negative": 1}, "group_id": "toy_pick_red_mug-s0000-07d8558fd93e", "instruction": "Pick up the red mug.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-33249a76c7f96e9c002537e5", "rec-34767691b146b54c935959e4", "rec-66157ca007873d3c0f5e37f7", "rec-3dbbe6ccebd0c476b880d6f2"], "scene_id": "toy_pick_red_mug-scene-0000", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": "states/toy_pick_red_mug-s0000-07d8558fd93e.pkl", "state_hash": "07d8558fd93e39692be8bdd366e5b31f9afbc61e3e91f99f22702d8a4e67cb95", "success_count": 3, "task_id": "toy_pick_red_mug"} +{"candidate_type_counts": {"expert": 1, "near_miss": 1, "noop": 1, "random_negative": 1}, "group_id": "toy_pick_red_mug-s0001-a3f87a69e3e5", "instruction": "Pick up the red mug.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-137cf57afd46c64bc77dbdee", "rec-5c4f505b20813a8edaa3230f", "rec-917430f79fdde23b4d2e199d", "rec-db69cd83f54de633364e33d3"], "scene_id": "toy_pick_red_mug-scene-0001", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": "states/toy_pick_red_mug-s0001-a3f87a69e3e5.pkl", "state_hash": "a3f87a69e3e5c1a4408ebbad970c4a0d1555d03d33b960481657161af70c5f1b", "success_count": 3, "task_id": "toy_pick_red_mug"} +{"candidate_type_counts": {"expert": 1, "near_miss": 1, "wrong_relation": 1, "wrong_target": 1}, "group_id": "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", "instruction": "Put the red mug in the blue bowl.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-0a6971a4e4ad6ee040149a97", "rec-3b6c7f5495d01889a41ba868", "rec-228c7644bb33f0e5c2f13efe", "rec-6780cfa0c2a082695d539b53"], "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "shard_path": "shards/shard_000001.jsonl", "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2.pkl", "state_hash": "c46dabefe4b2286bd2d0e7204047dd05d0f212208ea8eac3c454f34bab3d0e9e", "success_count": 4, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type_counts": {"expert": 1, "near_miss": 1, "noop": 1, "wrong_target": 1}, "group_id": "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca", "instruction": "Put the red mug in the blue bowl.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-3ad6215f5852f6bf59e36bad", "rec-0c0239208e2fecee942d1d07", "rec-4ccaf6819687a8dbeaae3caa", "rec-69b30165834e9a26db9a33a7"], "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "shard_path": "shards/shard_000001.jsonl", "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca.pkl", "state_hash": "5050f098a0cac7fcc9ed3303ba80ff44f7efbb48d7a119c2a27c6d706bd86f62", "success_count": 3, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type_counts": {"expert": 1, "near_miss": 2, "wrong_target": 1}, "group_id": "toy_green_block_left_of_yellow_block-s0000-f077d62b18f4", "instruction": "Put the green block left of the yellow block.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-f0684fcbb4c1312e3715f346", "rec-2d7b5692f4e59dbbcbb0bfc0", "rec-2612aadafc47f9be4a6eacf1", "rec-8d4e34619b3b55e38260272c"], "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "shard_path": "shards/shard_000002.jsonl", "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0000-f077d62b18f4.pkl", "state_hash": "f077d62b18f4faffec21b3d952cca1ba1df312cfbf70dd7e9874a8b52483846a", "success_count": 4, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type_counts": {"expert": 1, "near_miss": 2, "wrong_target": 1}, "group_id": "toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10", "instruction": "Put the green block left of the yellow block.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-05f1a7aff1c6ad66149bb5a6", "rec-35d27ade74177b7a36b9f958", "rec-4c39137c73eeabc99dab1f8d", "rec-95ffda0ecf4ead6777f905da"], "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "shard_path": "shards/shard_000002.jsonl", "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10.pkl", "state_hash": "6ff1dfaa9b1073cc916098cafbb45e7a9ca54d9e0ade57b91197b0605a47521b", "success_count": 4, "task_id": "toy_green_block_left_of_yellow_block"} diff --git a/outputs/phase5_train_debug/cil/manifest.json b/outputs/phase5_train_debug/cil/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..4fce3875dc92609d47fc819769a5b4bca4c5969d --- /dev/null +++ b/outputs/phase5_train_debug/cil/manifest.json @@ -0,0 +1,50 @@ +{ + "backend": "toy", + "created_at": "2026-06-19T04:42:38.175564+00:00", + "dataset_name": "cil_toy", + "format": "dovla_cil", + "group_count": 6, + "group_index_path": "group_index.jsonl", + "index_format": "jsonl", + "k": 4, + "num_groups": 6, + "num_records": 24, + "record_count": 24, + "record_index_path": "record_index.jsonl", + "schema_version": "0.1", + "seed": 0, + "shard_count": 3, + "shard_format": "jsonl", + "shard_size": 8, + "shards": [ + { + "format": "jsonl", + "group_ids": [ + "toy_pick_red_mug-s0000-07d8558fd93e", + "toy_pick_red_mug-s0001-a3f87a69e3e5" + ], + "path": "shards/shard_000000.jsonl", + "record_count": 8 + }, + { + "format": "jsonl", + "group_ids": [ + "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", + "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca" + ], + "path": "shards/shard_000001.jsonl", + "record_count": 8 + }, + { + "format": "jsonl", + "group_ids": [ + "toy_green_block_left_of_yellow_block-s0000-f077d62b18f4", + "toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10" + ], + "path": "shards/shard_000002.jsonl", + "record_count": 8 + } + ], + "task_count": 3, + "version": "0.1" +} diff --git a/outputs/phase5_train_debug/cil/metadata.json b/outputs/phase5_train_debug/cil/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..4fce3875dc92609d47fc819769a5b4bca4c5969d --- /dev/null +++ b/outputs/phase5_train_debug/cil/metadata.json @@ -0,0 +1,50 @@ +{ + "backend": "toy", + "created_at": "2026-06-19T04:42:38.175564+00:00", + "dataset_name": "cil_toy", + "format": "dovla_cil", + "group_count": 6, + "group_index_path": "group_index.jsonl", + "index_format": "jsonl", + "k": 4, + "num_groups": 6, + "num_records": 24, + "record_count": 24, + "record_index_path": "record_index.jsonl", + "schema_version": "0.1", + "seed": 0, + "shard_count": 3, + "shard_format": "jsonl", + "shard_size": 8, + "shards": [ + { + "format": "jsonl", + "group_ids": [ + "toy_pick_red_mug-s0000-07d8558fd93e", + "toy_pick_red_mug-s0001-a3f87a69e3e5" + ], + "path": "shards/shard_000000.jsonl", + "record_count": 8 + }, + { + "format": "jsonl", + "group_ids": [ + "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", + "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca" + ], + "path": "shards/shard_000001.jsonl", + "record_count": 8 + }, + { + "format": "jsonl", + "group_ids": [ + "toy_green_block_left_of_yellow_block-s0000-f077d62b18f4", + "toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10" + ], + "path": "shards/shard_000002.jsonl", + "record_count": 8 + } + ], + "task_count": 3, + "version": "0.1" +} diff --git a/outputs/phase5_train_debug/cil/record_index.jsonl b/outputs/phase5_train_debug/cil/record_index.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..f6e8046ce7da8968343867013ff8a871fdcf16ca --- /dev/null +++ b/outputs/phase5_train_debug/cil/record_index.jsonl @@ -0,0 +1,24 @@ +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_pick_red_mug-s0000-07d8558fd93e", "rank_within_group": 0, "record_id": "rec-33249a76c7f96e9c002537e5", "regret": 0.0, "reward_progress": 1.0, "row_index": 0, "shard_path": "shards/shard_000000.jsonl", "state_hash": "07d8558fd93e39692be8bdd366e5b31f9afbc61e3e91f99f22702d8a4e67cb95", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_pick_red_mug-s0000-07d8558fd93e", "rank_within_group": 1, "record_id": "rec-34767691b146b54c935959e4", "regret": 0.0, "reward_progress": 1.0, "row_index": 1, "shard_path": "shards/shard_000000.jsonl", "state_hash": "07d8558fd93e39692be8bdd366e5b31f9afbc61e3e91f99f22702d8a4e67cb95", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "delayed", "failure_type": "no_motion", "group_id": "toy_pick_red_mug-s0000-07d8558fd93e", "rank_within_group": 3, "record_id": "rec-66157ca007873d3c0f5e37f7", "regret": 2.0, "reward_progress": 0.0, "row_index": 2, "shard_path": "shards/shard_000000.jsonl", "state_hash": "07d8558fd93e39692be8bdd366e5b31f9afbc61e3e91f99f22702d8a4e67cb95", "success": false, "task_id": "toy_pick_red_mug"} +{"candidate_type": "random_negative", "failure_type": "success", "group_id": "toy_pick_red_mug-s0000-07d8558fd93e", "rank_within_group": 2, "record_id": "rec-3dbbe6ccebd0c476b880d6f2", "regret": 0.0, "reward_progress": 1.0, "row_index": 3, "shard_path": "shards/shard_000000.jsonl", "state_hash": "07d8558fd93e39692be8bdd366e5b31f9afbc61e3e91f99f22702d8a4e67cb95", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_pick_red_mug-s0001-a3f87a69e3e5", "rank_within_group": 0, "record_id": "rec-137cf57afd46c64bc77dbdee", "regret": 0.0, "reward_progress": 1.0, "row_index": 4, "shard_path": "shards/shard_000000.jsonl", "state_hash": "a3f87a69e3e5c1a4408ebbad970c4a0d1555d03d33b960481657161af70c5f1b", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_pick_red_mug-s0001-a3f87a69e3e5", "rank_within_group": 1, "record_id": "rec-5c4f505b20813a8edaa3230f", "regret": 0.0, "reward_progress": 1.0, "row_index": 5, "shard_path": "shards/shard_000000.jsonl", "state_hash": "a3f87a69e3e5c1a4408ebbad970c4a0d1555d03d33b960481657161af70c5f1b", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "random_negative", "failure_type": "success", "group_id": "toy_pick_red_mug-s0001-a3f87a69e3e5", "rank_within_group": 2, "record_id": "rec-917430f79fdde23b4d2e199d", "regret": 0.0, "reward_progress": 1.0, "row_index": 6, "shard_path": "shards/shard_000000.jsonl", "state_hash": "a3f87a69e3e5c1a4408ebbad970c4a0d1555d03d33b960481657161af70c5f1b", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "noop", "failure_type": "no_motion", "group_id": "toy_pick_red_mug-s0001-a3f87a69e3e5", "rank_within_group": 3, "record_id": "rec-db69cd83f54de633364e33d3", "regret": 2.0, "reward_progress": 0.0, "row_index": 7, "shard_path": "shards/shard_000000.jsonl", "state_hash": "a3f87a69e3e5c1a4408ebbad970c4a0d1555d03d33b960481657161af70c5f1b", "success": false, "task_id": "toy_pick_red_mug"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", "rank_within_group": 0, "record_id": "rec-0a6971a4e4ad6ee040149a97", "regret": 0.0, "reward_progress": 1.0, "row_index": 0, "shard_path": "shards/shard_000001.jsonl", "state_hash": "c46dabefe4b2286bd2d0e7204047dd05d0f212208ea8eac3c454f34bab3d0e9e", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "wrong_target", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", "rank_within_group": 2, "record_id": "rec-3b6c7f5495d01889a41ba868", "regret": 0.0, "reward_progress": 1.0, "row_index": 1, "shard_path": "shards/shard_000001.jsonl", "state_hash": "c46dabefe4b2286bd2d0e7204047dd05d0f212208ea8eac3c454f34bab3d0e9e", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", "rank_within_group": 1, "record_id": "rec-228c7644bb33f0e5c2f13efe", "regret": 0.0, "reward_progress": 1.0, "row_index": 2, "shard_path": "shards/shard_000001.jsonl", "state_hash": "c46dabefe4b2286bd2d0e7204047dd05d0f212208ea8eac3c454f34bab3d0e9e", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "wrong_relation", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", "rank_within_group": 3, "record_id": "rec-6780cfa0c2a082695d539b53", "regret": 0.0, "reward_progress": 1.0, "row_index": 3, "shard_path": "shards/shard_000001.jsonl", "state_hash": "c46dabefe4b2286bd2d0e7204047dd05d0f212208ea8eac3c454f34bab3d0e9e", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca", "rank_within_group": 1, "record_id": "rec-3ad6215f5852f6bf59e36bad", "regret": 0.0, "reward_progress": 1.0, "row_index": 4, "shard_path": "shards/shard_000001.jsonl", "state_hash": "5050f098a0cac7fcc9ed3303ba80ff44f7efbb48d7a119c2a27c6d706bd86f62", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "wrong_target", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca", "rank_within_group": 0, "record_id": "rec-0c0239208e2fecee942d1d07", "regret": 0.0, "reward_progress": 1.0, "row_index": 5, "shard_path": "shards/shard_000001.jsonl", "state_hash": "5050f098a0cac7fcc9ed3303ba80ff44f7efbb48d7a119c2a27c6d706bd86f62", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca", "rank_within_group": 2, "record_id": "rec-4ccaf6819687a8dbeaae3caa", "regret": 0.0, "reward_progress": 1.0, "row_index": 6, "shard_path": "shards/shard_000001.jsonl", "state_hash": "5050f098a0cac7fcc9ed3303ba80ff44f7efbb48d7a119c2a27c6d706bd86f62", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "noop", "failure_type": "no_motion", "group_id": "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca", "rank_within_group": 3, "record_id": "rec-69b30165834e9a26db9a33a7", "regret": 2.0, "reward_progress": 0.0, "row_index": 7, "shard_path": "shards/shard_000001.jsonl", "state_hash": "5050f098a0cac7fcc9ed3303ba80ff44f7efbb48d7a119c2a27c6d706bd86f62", "success": false, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0000-f077d62b18f4", "rank_within_group": 3, "record_id": "rec-f0684fcbb4c1312e3715f346", "regret": 0.0, "reward_progress": 1.0, "row_index": 0, "shard_path": "shards/shard_000002.jsonl", "state_hash": "f077d62b18f4faffec21b3d952cca1ba1df312cfbf70dd7e9874a8b52483846a", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "wrong_target", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0000-f077d62b18f4", "rank_within_group": 1, "record_id": "rec-2d7b5692f4e59dbbcbb0bfc0", "regret": 0.0, "reward_progress": 1.0, "row_index": 1, "shard_path": "shards/shard_000002.jsonl", "state_hash": "f077d62b18f4faffec21b3d952cca1ba1df312cfbf70dd7e9874a8b52483846a", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0000-f077d62b18f4", "rank_within_group": 0, "record_id": "rec-2612aadafc47f9be4a6eacf1", "regret": 0.0, "reward_progress": 1.0, "row_index": 2, "shard_path": "shards/shard_000002.jsonl", "state_hash": "f077d62b18f4faffec21b3d952cca1ba1df312cfbf70dd7e9874a8b52483846a", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0000-f077d62b18f4", "rank_within_group": 2, "record_id": "rec-8d4e34619b3b55e38260272c", "regret": 0.0, "reward_progress": 1.0, "row_index": 3, "shard_path": "shards/shard_000002.jsonl", "state_hash": "f077d62b18f4faffec21b3d952cca1ba1df312cfbf70dd7e9874a8b52483846a", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10", "rank_within_group": 0, "record_id": "rec-05f1a7aff1c6ad66149bb5a6", "regret": 0.0, "reward_progress": 1.0, "row_index": 4, "shard_path": "shards/shard_000002.jsonl", "state_hash": "6ff1dfaa9b1073cc916098cafbb45e7a9ca54d9e0ade57b91197b0605a47521b", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "wrong_target", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10", "rank_within_group": 1, "record_id": "rec-35d27ade74177b7a36b9f958", "regret": 0.0, "reward_progress": 1.0, "row_index": 5, "shard_path": "shards/shard_000002.jsonl", "state_hash": "6ff1dfaa9b1073cc916098cafbb45e7a9ca54d9e0ade57b91197b0605a47521b", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10", "rank_within_group": 2, "record_id": "rec-4c39137c73eeabc99dab1f8d", "regret": 0.0, "reward_progress": 1.0, "row_index": 6, "shard_path": "shards/shard_000002.jsonl", "state_hash": "6ff1dfaa9b1073cc916098cafbb45e7a9ca54d9e0ade57b91197b0605a47521b", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10", "rank_within_group": 3, "record_id": "rec-95ffda0ecf4ead6777f905da", "regret": 0.0, "reward_progress": 1.0, "row_index": 7, "shard_path": "shards/shard_000002.jsonl", "state_hash": "6ff1dfaa9b1073cc916098cafbb45e7a9ca54d9e0ade57b91197b0605a47521b", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} diff --git a/outputs/phase5_train_debug/cil/shards/shard_000000.jsonl b/outputs/phase5_train_debug/cil/shards/shard_000000.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..8150d0d081155760b74fe5800d736e63e688c3e4 --- /dev/null +++ b/outputs/phase5_train_debug/cil/shards/shard_000000.jsonl @@ -0,0 +1,8 @@ +{"action_chunk": {"action_id": "expert-0", "horizon": 2, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0000-07d8558fd93e", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 3269563184, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0000-07d8558fd93e.pkl", "state_index": 0, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-33249a76c7f96e9c002537e5", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0000", "state_hash": "07d8558fd93e39692be8bdd366e5b31f9afbc61e3e91f99f22702d8a4e67cb95", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.15]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-3269563184", "horizon": 3, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": "expert-grasp-red_mug", "perturbation": {"dx": -0.08, "dy": -0.1, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "move_to", "position": [-0.08, -0.1, 0.0]}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0000-07d8558fd93e", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 3269563184, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0000-07d8558fd93e.pkl", "state_index": 0, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.08, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.08, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.08, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.08, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-34767691b146b54c935959e4", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0000", "state_hash": "07d8558fd93e39692be8bdd366e5b31f9afbc61e3e91f99f22702d8a4e67cb95", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.3236, -0.0913, -0.03]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.08, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.08, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "delay-3269563184", "horizon": 2, "metadata": {"candidate_type": "delayed", "difficulty": 0.9, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "delay", "steps": 2}}, "representation": "semantic", "skill_type": "delay", "values": [{"command": "delay", "steps": 2}, {"command": "noop"}]}, "candidate_type": "delayed", "failure": {"language_explanation": "The action did not produce meaningful motion.", "metadata": {}, "symbolic_reason": "no object pose, grasp, or articulation change was observed", "type": "no_motion"}, "group_id": "toy_pick_red_mug-s0000-07d8558fd93e", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 3269563184, "local_symbolic_explanation": "The action did not produce meaningful motion.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0000-07d8558fd93e.pkl", "state_index": 0, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-66157ca007873d3c0f5e37f7", "regret": 2.0, "reward": {"dense_components": {"relation_partial": 0.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 0.0}, "progress": 0.0, "success": false, "terminal_success": false}, "scene_id": "toy_pick_red_mug-scene-0000", "state_hash": "07d8558fd93e39692be8bdd366e5b31f9afbc61e3e91f99f22702d8a4e67cb95", "structured_effect": {"articulation_delta": {}, "contact_events": [{"steps": 2, "type": "delay"}, {"type": "noop"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"steps": 2, "type": "delay"}, {"type": "noop"}], "explanation": "Task predicates were not satisfied.", "failure_type": "task_not_satisfied", "success": false}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": false, "success": false}}, "moved_objects": [], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.0]}, "relation_after": {"grasped(red_mug)": false, "success": false}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "random-neg-0-3269563184", "horizon": 2, "metadata": {"candidate_type": "random_negative", "difficulty": 0.8, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "random_negative"}}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}]}, "candidate_type": "random_negative", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0000-07d8558fd93e", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 3269563184, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0000-07d8558fd93e.pkl", "state_index": 0, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-3dbbe6ccebd0c476b880d6f2", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0000", "state_hash": "07d8558fd93e39692be8bdd366e5b31f9afbc61e3e91f99f22702d8a4e67cb95", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.15]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "expert-0", "horizon": 2, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0001-a3f87a69e3e5", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 1101978868, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0001-a3f87a69e3e5.pkl", "state_index": 1, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.4197, 0.0115, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4197, 0.0115, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-137cf57afd46c64bc77dbdee", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0001", "state_hash": "a3f87a69e3e5c1a4408ebbad970c4a0d1555d03d33b960481657161af70c5f1b", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.15]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4197, 0.0115, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-1101978868", "horizon": 3, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": "expert-grasp-red_mug", "perturbation": {"dx": 0.12, "dy": -0.1, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "move_to", "position": [0.12, -0.1, 0.0]}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0001-a3f87a69e3e5", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 1101978868, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0001-a3f87a69e3e5.pkl", "state_index": 1, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [0.12, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.12, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [0.12, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.12, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-5c4f505b20813a8edaa3230f", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0001", "state_hash": "a3f87a69e3e5c1a4408ebbad970c4a0d1555d03d33b960481657161af70c5f1b", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.5397000000000001, -0.1115, -0.03]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [0.12, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.12, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "random-neg-0-1101978868", "horizon": 2, "metadata": {"candidate_type": "random_negative", "difficulty": 0.8, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "random_negative"}}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}]}, "candidate_type": "random_negative", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0001-a3f87a69e3e5", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 1101978868, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0001-a3f87a69e3e5.pkl", "state_index": 1, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.4197, 0.0115, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4197, 0.0115, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-917430f79fdde23b4d2e199d", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0001", "state_hash": "a3f87a69e3e5c1a4408ebbad970c4a0d1555d03d33b960481657161af70c5f1b", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.15]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4197, 0.0115, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "noop-1101978868", "horizon": 1, "metadata": {"candidate_type": "noop", "difficulty": 0.95, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "no_op"}}, "representation": "semantic", "skill_type": "noop", "values": [{"command": "noop"}]}, "candidate_type": "noop", "failure": {"language_explanation": "The action did not produce meaningful motion.", "metadata": {}, "symbolic_reason": "no object pose, grasp, or articulation change was observed", "type": "no_motion"}, "group_id": "toy_pick_red_mug-s0001-a3f87a69e3e5", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 1101978868, "local_symbolic_explanation": "The action did not produce meaningful motion.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0001-a3f87a69e3e5.pkl", "state_index": 1, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-db69cd83f54de633364e33d3", "regret": 2.0, "reward": {"dense_components": {"relation_partial": 0.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 0.0}, "progress": 0.0, "success": false, "terminal_success": false}, "scene_id": "toy_pick_red_mug-scene-0001", "state_hash": "a3f87a69e3e5c1a4408ebbad970c4a0d1555d03d33b960481657161af70c5f1b", "structured_effect": {"articulation_delta": {}, "contact_events": [{"type": "noop"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"type": "noop"}], "explanation": "Task predicates were not satisfied.", "failure_type": "task_not_satisfied", "success": false}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": false, "success": false}}, "moved_objects": [], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.0]}, "relation_after": {"grasped(red_mug)": false, "success": false}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} diff --git a/outputs/phase5_train_debug/cil/shards/shard_000001.jsonl b/outputs/phase5_train_debug/cil/shards/shard_000001.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..2801f4aa8763c8682ec13fbeeea04a0d30a2258b --- /dev/null +++ b/outputs/phase5_train_debug/cil/shards/shard_000001.jsonl @@ -0,0 +1,8 @@ +{"action_chunk": {"action_id": "expert-0", "horizon": 3, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "inside", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.128, 0.0528, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 3813448054, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2.pkl", "state_index": 0, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.128, 0.0528, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.128, 0.0528, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.128, 0.0528, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.128, 0.0528, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-0a6971a4e4ad6ee040149a97", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.8699312987941002}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "state_hash": "c46dabefe4b2286bd2d0e7204047dd05d0f212208ea8eac3c454f34bab3d0e9e", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.3016, 0.0601, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.128, 0.0528, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.128, 0.0528, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "wrong-target-blue_bowl-0-3813448054", "horizon": 3, "metadata": {"candidate_type": "wrong_target", "difficulty": 0.6, "intended_relation": "inside", "intended_target": "blue_bowl", "parent_action_id": "expert-place-red_mug-inside-blue_bowl", "perturbation": {"kind": "target_swap"}, "planner": "toy_symbolic", "target_replacement": "blue_bowl"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "blue_bowl"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.128, 0.0528, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "wrong_target", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 3813448054, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2.pkl", "state_index": 0, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.128, 0.0528, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.128, 0.0528, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.128, 0.0528, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.128, 0.0528, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-3b6c7f5495d01889a41ba868", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.8699312987941002}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "state_hash": "c46dabefe4b2286bd2d0e7204047dd05d0f212208ea8eac3c454f34bab3d0e9e", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "blue_bowl", "type": "proximity"}, {"distance": 0.3421616138610525, "object": "red_mug", "type": "failed_grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": false, "metadata": {"info": {"contacts": [{"object": "blue_bowl", "type": "proximity"}, {"distance": 0.3421616138610525, "object": "red_mug", "type": "failed_grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.3016, 0.0601, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.128, 0.0528, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.128, 0.0528, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-3813448054", "horizon": 3, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "inside", "intended_target": "red_mug", "parent_action_id": "expert-place-red_mug-inside-blue_bowl", "perturbation": {"dx": -0.12, "dy": -0.04, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.248, 0.012799999999999999, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 3813448054, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2.pkl", "state_index": 0, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.248, 0.012799999999999999, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.248, 0.012799999999999999, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.248, 0.012799999999999999, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.248, 0.012799999999999999, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-228c7644bb33f0e5c2f13efe", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.5686109211311835}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "state_hash": "c46dabefe4b2286bd2d0e7204047dd05d0f212208ea8eac3c454f34bab3d0e9e", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.18159999999999998, 0.0201, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.248, 0.012799999999999999, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.248, 0.012799999999999999, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "wrong-relation-red_mug-next_to-3813448054", "horizon": 3, "metadata": {"candidate_type": "wrong_relation", "difficulty": 0.55, "intended_relation": "next_to", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"from": "inside", "kind": "relation_swap", "to": "next_to"}}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "object": "red_mug", "position": [-0.048, 0.0528, 0.06], "reference": "blue_bowl", "relation": "next_to"}]}, "candidate_type": "wrong_relation", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 3813448054, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2.pkl", "state_index": 0, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.048, 0.0528, 0.06], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.048, 0.0528, 0.21], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.048, 0.0528, 0.06], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.048, 0.0528, 0.21], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-6780cfa0c2a082695d539b53", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.7221731324370514}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "state_hash": "c46dabefe4b2286bd2d0e7204047dd05d0f212208ea8eac3c454f34bab3d0e9e", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "next_to", "type": "place"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "next_to", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.3816, 0.0601, 0.03]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.048, 0.0528, 0.06], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.048, 0.0528, 0.21], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "expert-0", "horizon": 3, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "inside", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.168, 0.0095, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 1965660509, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca.pkl", "state_index": 1, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.168, 0.0095, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.168, 0.0095, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.168, 0.0095, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.168, 0.0095, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-3ad6215f5852f6bf59e36bad", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.839960215566157}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "state_hash": "5050f098a0cac7fcc9ed3303ba80ff44f7efbb48d7a119c2a27c6d706bd86f62", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.2498, 0.0083, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.168, 0.0095, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.168, 0.0095, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "wrong-target-blue_bowl-0-1965660509", "horizon": 3, "metadata": {"candidate_type": "wrong_target", "difficulty": 0.6, "intended_relation": "inside", "intended_target": "blue_bowl", "parent_action_id": "expert-place-red_mug-inside-blue_bowl", "perturbation": {"kind": "target_swap"}, "planner": "toy_symbolic", "target_replacement": "blue_bowl"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "blue_bowl"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.168, 0.0095, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "wrong_target", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 1965660509, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca.pkl", "state_index": 1, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.168, 0.0095, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.168, 0.0095, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.168, 0.0095, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.168, 0.0095, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-0c0239208e2fecee942d1d07", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.839960215566157}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "state_hash": "5050f098a0cac7fcc9ed3303ba80ff44f7efbb48d7a119c2a27c6d706bd86f62", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "blue_bowl", "type": "proximity"}, {"distance": 0.29149430526169806, "object": "red_mug", "type": "failed_grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": false, "metadata": {"info": {"contacts": [{"object": "blue_bowl", "type": "proximity"}, {"distance": 0.29149430526169806, "object": "red_mug", "type": "failed_grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.2498, 0.0083, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.168, 0.0095, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.168, 0.0095, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-1965660509", "horizon": 3, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "inside", "intended_target": "red_mug", "parent_action_id": "expert-place-red_mug-inside-blue_bowl", "perturbation": {"dx": 0.08, "dy": -0.1, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.08800000000000001, -0.09050000000000001, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 1965660509, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca.pkl", "state_index": 1, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.08800000000000001, -0.09050000000000001, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.08800000000000001, -0.09050000000000001, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.08800000000000001, -0.09050000000000001, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.08800000000000001, -0.09050000000000001, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-4ccaf6819687a8dbeaae3caa", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.46321024435227165}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "state_hash": "5050f098a0cac7fcc9ed3303ba80ff44f7efbb48d7a119c2a27c6d706bd86f62", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.3298, -0.09170000000000002, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.08800000000000001, -0.09050000000000001, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.08800000000000001, -0.09050000000000001, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "noop-1965660509", "horizon": 1, "metadata": {"candidate_type": "noop", "difficulty": 0.95, "intended_relation": "inside", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "no_op"}}, "representation": "semantic", "skill_type": "noop", "values": [{"command": "noop"}]}, "candidate_type": "noop", "failure": {"language_explanation": "The action did not produce meaningful motion.", "metadata": {}, "symbolic_reason": "no object pose, grasp, or articulation change was observed", "type": "no_motion"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 1965660509, "local_symbolic_explanation": "The action did not produce meaningful motion.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca.pkl", "state_index": 1, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-69b30165834e9a26db9a33a7", "regret": 2.0, "reward": {"dense_components": {"relation_partial": 0.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 0.0, "target_moved_closer": 0.0}, "progress": 0.0, "success": false, "terminal_success": false}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "state_hash": "5050f098a0cac7fcc9ed3303ba80ff44f7efbb48d7a119c2a27c6d706bd86f62", "structured_effect": {"articulation_delta": {}, "contact_events": [{"type": "noop"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"type": "noop"}], "explanation": "Task predicates were not satisfied.", "failure_type": "task_not_satisfied", "success": false}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": false, "success": false}}, "moved_objects": [], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.0, 0.0, 0.0]}, "relation_after": {"inside(red_mug,blue_bowl)": false, "success": false}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} diff --git a/outputs/phase5_train_debug/cil/shards/shard_000002.jsonl b/outputs/phase5_train_debug/cil/shards/shard_000002.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..adf5787364c069a3f0246974cf07e79000fd2100 --- /dev/null +++ b/outputs/phase5_train_debug/cil/shards/shard_000002.jsonl @@ -0,0 +1,8 @@ +{"action_chunk": {"action_id": "expert-0", "horizon": 1, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "left_of", "intended_target": "green_block", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": 0.0683, "dy": 0.0285, "object": "green_block"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0000-f077d62b18f4", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 4089500932, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0000-f077d62b18f4.pkl", "state_index": 0, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.326, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.326, 0.0487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.326, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.326, 0.0487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-f0684fcbb4c1312e3715f346", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.25873612265544277}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "state_hash": "f077d62b18f4faffec21b3d952cca1ba1df312cfbf70dd7e9874a8b52483846a", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": 0.0683, "dy": 0.0285, "object": "green_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": 0.0683, "dy": 0.0285, "object": "green_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["green_block"], "object_pose_delta": {"green_block": [0.06829999999999997, 0.0285, 0.0], "yellow_block": [0.0, 0.0, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.326, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.326, 0.0487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "wrong-target-yellow_block-0-4089500932", "horizon": 1, "metadata": {"candidate_type": "wrong_target", "difficulty": 0.6, "intended_relation": "left_of", "intended_target": "yellow_block", "parent_action_id": "expert-push-green_block-left_of-yellow_block", "perturbation": {"kind": "target_swap"}, "planner": "toy_symbolic", "target_replacement": "yellow_block"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": 0.0683, "dy": 0.0285, "object": "yellow_block"}]}, "candidate_type": "wrong_target", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0000-f077d62b18f4", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 4089500932, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0000-f077d62b18f4.pkl", "state_index": 0, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.0577, 0.0772, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.0577, 0.0772, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.0577, 0.0772, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.0577, 0.0772, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-2d7b5692f4e59dbbcbb0bfc0", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 0.0, "target_moved_closer": 0.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "state_hash": "f077d62b18f4faffec21b3d952cca1ba1df312cfbf70dd7e9874a8b52483846a", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": 0.0683, "dy": 0.0285, "object": "yellow_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": 0.0683, "dy": 0.0285, "object": "yellow_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["yellow_block"], "object_pose_delta": {"green_block": [0.0, 0.0, 0.0], "yellow_block": [0.0683, 0.028500000000000004, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.0577, 0.0772, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.0577, 0.0772, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-4089500932", "horizon": 1, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "left_of", "intended_target": "green_block", "parent_action_id": "expert-push-green_block-left_of-yellow_block", "perturbation": {"dx": -0.12, "dy": 0.1, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": -0.051699999999999996, "dy": 0.1285, "object": "green_block"}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0000-f077d62b18f4", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 4089500932, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0000-f077d62b18f4.pkl", "state_index": 0, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.446, 0.1487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.446, 0.1487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.446, 0.1487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.446, 0.1487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-2612aadafc47f9be4a6eacf1", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "state_hash": "f077d62b18f4faffec21b3d952cca1ba1df312cfbf70dd7e9874a8b52483846a", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": -0.051699999999999996, "dy": 0.1285, "object": "green_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": -0.051699999999999996, "dy": 0.1285, "object": "green_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["green_block"], "object_pose_delta": {"green_block": [-0.051700000000000024, 0.1285, 0.0], "yellow_block": [0.0, 0.0, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.446, 0.1487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.446, 0.1487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-1-4089500932", "horizon": 1, "metadata": {"candidate_type": "near_miss", "difficulty": 0.39999999999999997, "intended_relation": "left_of", "intended_target": "green_block", "parent_action_id": "expert-push-green_block-left_of-yellow_block", "perturbation": {"dx": -0.06, "dy": 0.05, "kind": "release_offset"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": 0.0683, "dy": 0.0285, "object": "green_block"}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0000-f077d62b18f4", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 4089500932, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0000-f077d62b18f4.pkl", "state_index": 0, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.326, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.326, 0.0487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.326, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.326, 0.0487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-8d4e34619b3b55e38260272c", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.25873612265544277}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "state_hash": "f077d62b18f4faffec21b3d952cca1ba1df312cfbf70dd7e9874a8b52483846a", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": 0.0683, "dy": 0.0285, "object": "green_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": 0.0683, "dy": 0.0285, "object": "green_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["green_block"], "object_pose_delta": {"green_block": [0.06829999999999997, 0.0285, 0.0], "yellow_block": [0.0, 0.0, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.326, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.326, 0.0487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "expert-0", "horizon": 1, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "left_of", "intended_target": "green_block", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": 0.0434, "dy": 0.0368, "object": "green_block"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 3905794541, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10.pkl", "state_index": 1, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.3599, 0.0439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.3599, 0.0439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-05f1a7aff1c6ad66149bb5a6", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.1875407885543134}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "state_hash": "6ff1dfaa9b1073cc916098cafbb45e7a9ca54d9e0ade57b91197b0605a47521b", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": 0.0434, "dy": 0.0368, "object": "green_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": 0.0434, "dy": 0.0368, "object": "green_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["green_block"], "object_pose_delta": {"green_block": [0.043399999999999994, 0.0368, 0.0], "yellow_block": [0.0, 0.0, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.3599, 0.0439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "wrong-target-yellow_block-0-3905794541", "horizon": 1, "metadata": {"candidate_type": "wrong_target", "difficulty": 0.6, "intended_relation": "left_of", "intended_target": "yellow_block", "parent_action_id": "expert-push-green_block-left_of-yellow_block", "perturbation": {"kind": "target_swap"}, "planner": "toy_symbolic", "target_replacement": "yellow_block"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": 0.0434, "dy": 0.0368, "object": "yellow_block"}]}, "candidate_type": "wrong_target", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 3905794541, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10.pkl", "state_index": 1, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1165, 0.0807, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.1165, 0.0807, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1165, 0.0807, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.1165, 0.0807, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-35d27ade74177b7a36b9f958", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 0.0, "target_moved_closer": 0.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "state_hash": "6ff1dfaa9b1073cc916098cafbb45e7a9ca54d9e0ade57b91197b0605a47521b", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": 0.0434, "dy": 0.0368, "object": "yellow_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": 0.0434, "dy": 0.0368, "object": "yellow_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["yellow_block"], "object_pose_delta": {"green_block": [0.0, 0.0, 0.0], "yellow_block": [0.04339999999999998, 0.03679999999999999, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1165, 0.0807, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.1165, 0.0807, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-3905794541", "horizon": 1, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "left_of", "intended_target": "green_block", "parent_action_id": "expert-push-green_block-left_of-yellow_block", "perturbation": {"dx": -0.08, "dy": 0.1, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": -0.0366, "dy": 0.1368, "object": "green_block"}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 3905794541, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10.pkl", "state_index": 1, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4399, 0.1439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.4399, 0.1439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4399, 0.1439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.4399, 0.1439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-4c39137c73eeabc99dab1f8d", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "state_hash": "6ff1dfaa9b1073cc916098cafbb45e7a9ca54d9e0ade57b91197b0605a47521b", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": -0.0366, "dy": 0.1368, "object": "green_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": -0.0366, "dy": 0.1368, "object": "green_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["green_block"], "object_pose_delta": {"green_block": [-0.03660000000000002, 0.1368, 0.0], "yellow_block": [0.0, 0.0, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4399, 0.1439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.4399, 0.1439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-1-3905794541", "horizon": 1, "metadata": {"candidate_type": "near_miss", "difficulty": 0.39999999999999997, "intended_relation": "left_of", "intended_target": "green_block", "parent_action_id": "expert-push-green_block-left_of-yellow_block", "perturbation": {"dx": -0.04, "dy": 0.05, "kind": "release_offset"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": 0.0434, "dy": 0.0368, "object": "green_block"}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 3905794541, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0001-6ff1dfaa9b10.pkl", "state_index": 1, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.3599, 0.0439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.3599, 0.0439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-95ffda0ecf4ead6777f905da", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.1875407885543134}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "state_hash": "6ff1dfaa9b1073cc916098cafbb45e7a9ca54d9e0ade57b91197b0605a47521b", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": 0.0434, "dy": 0.0368, "object": "green_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": 0.0434, "dy": 0.0368, "object": "green_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["green_block"], "object_pose_delta": {"green_block": [0.043399999999999994, 0.0368, 0.0], "yellow_block": [0.0, 0.0, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.3599, 0.0439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} diff --git a/outputs/phase5_train_debug/run/best.pt b/outputs/phase5_train_debug/run/best.pt new file mode 100644 index 0000000000000000000000000000000000000000..b40e6f007ea315ceeb1cabdc568314b8c10765cb --- /dev/null +++ b/outputs/phase5_train_debug/run/best.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5787a7f9e9fd94eb29074428695a4e81ffdd9afb5ecbd7c8e7bab31814747910 +size 2343563 diff --git a/outputs/phase5_train_debug/run/latest.pt b/outputs/phase5_train_debug/run/latest.pt new file mode 100644 index 0000000000000000000000000000000000000000..59d7a68c667dabc0d6d835cdda21c4eed4e4d7a9 --- /dev/null +++ b/outputs/phase5_train_debug/run/latest.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2cac64616884ff013ebd2f6df609e2cca88474e1ffb8bd330a525af05351b15 +size 2350027 diff --git a/outputs/phase5_train_debug/run/metrics.json b/outputs/phase5_train_debug/run/metrics.json new file mode 100644 index 0000000000000000000000000000000000000000..dcca5b4e358f180659b7f6d6d1e157ac1b1ad0d6 --- /dev/null +++ b/outputs/phase5_train_debug/run/metrics.json @@ -0,0 +1,34 @@ +{ + "best": { + "bc_loss": 0.026328036561608315, + "progress_mae": 0.42800480127334595, + "rank_acc": 0.0, + "rank_loss": 0.0, + "regret_mae": 0.40526825189590454, + "success_accuracy": 1.0, + "total_loss": 0.7932133674621582 + }, + "history": [ + { + "epoch": 1, + "train": { + "bc_loss": 0.03579872287809849, + "progress_mae": 0.49635080496470135, + "rank_acc": 1.0, + "rank_loss": 0.6876868406931559, + "regret_mae": 0.6742549737294515, + "success_accuracy": 0.8333333333333334, + "total_loss": 1.9107435941696167 + }, + "val": { + "bc_loss": 0.026328036561608315, + "progress_mae": 0.42800480127334595, + "rank_acc": 0.0, + "rank_loss": 0.0, + "regret_mae": 0.40526825189590454, + "success_accuracy": 1.0, + "total_loss": 0.7932133674621582 + } + } + ] +} diff --git a/outputs/phase5_train_debug/run/resolved_config.json b/outputs/phase5_train_debug/run/resolved_config.json new file mode 100644 index 0000000000000000000000000000000000000000..d72e74af441e908defdda45f8e929b4f2466ba2b --- /dev/null +++ b/outputs/phase5_train_debug/run/resolved_config.json @@ -0,0 +1,38 @@ +{ + "action_dim": 8, + "action_horizon": 4, + "batch_groups": 2, + "batch_size_groups": null, + "dataset_dir": "outputs/phase5_train_debug/cil", + "device": "auto", + "effect_dim": 32, + "epochs": 1, + "hidden_dim": 64, + "lang_dim": 64, + "learning_rate": 0.001, + "losses": { + "bc": 1.0, + "bc_best_action": 1.0, + "causal_contrastive": 0.5, + "contrast": 0.5, + "effect": 1.0, + "forward_effect_prediction": 1.0, + "lang_pair": 0.25, + "language_minimal_pair": 0.25, + "progress": 1.0, + "rank": 1.0, + "regret": 0.5, + "regret_prediction": 0.5, + "same_state_pairwise_ranking": 1.0, + "success": 1.0 + }, + "lr": null, + "obs_dim": 32, + "output_dir": "outputs/phase5_train_debug/run", + "pair_count_per_group": 8, + "records_per_group": 4, + "seed": 0, + "val_fraction": 0.2, + "wandb": false, + "weight_decay": 0.0 +} diff --git a/outputs/phase5_train_debug/tasks.jsonl b/outputs/phase5_train_debug/tasks.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..35f0f38f5e7221913a433e9a09364bbf80510c23 --- /dev/null +++ b/outputs/phase5_train_debug/tasks.jsonl @@ -0,0 +1,3 @@ +{"allowed_skills": ["reach", "grasp"], "distractor_object_ids": [], "family": "pick", "instruction_templates": ["Pick up the red mug."], "metadata": {"target_position": 1.0, "tolerance": 0.05}, "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "objects": [{"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "mass": 0.3, "object_id": "red_mug", "scale": 1.0, "shape": "cylindrical"}], "reference_object_ids": [], "success_predicates": [{"args": ["red_mug"], "name": "grasped"}], "target_object_ids": ["red_mug"], "task_id": "toy_pick_red_mug"} +{"allowed_skills": ["reach", "grasp", "place"], "distractor_object_ids": [], "family": "place_inside", "instruction_templates": ["Put the red mug in the blue bowl."], "metadata": {"target_position": 1.1, "tolerance": 0.05}, "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "objects": [{"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "mass": 0.3, "object_id": "red_mug", "scale": 1.0, "shape": "cylindrical"}, {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "mass": 0.4, "object_id": "blue_bowl", "scale": 1.1, "shape": "round"}], "reference_object_ids": ["blue_bowl"], "success_predicates": [{"args": ["red_mug", "blue_bowl"], "name": "inside"}], "target_object_ids": ["red_mug"], "task_id": "toy_put_red_mug_in_blue_bowl"} +{"allowed_skills": ["push", "place"], "distractor_object_ids": [], "family": "spatial_place", "instruction_templates": ["Put the green block left of the yellow block."], "metadata": {"target_position": 1.2, "tolerance": 0.05}, "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "objects": [{"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "mass": 0.5, "object_id": "green_block", "scale": 1.0, "shape": "cube"}, {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "mass": 0.5, "object_id": "yellow_block", "scale": 1.0, "shape": "cube"}], "reference_object_ids": ["yellow_block"], "success_predicates": [{"args": ["green_block", "yellow_block"], "name": "left_of"}], "target_object_ids": ["green_block"], "task_id": "toy_green_block_left_of_yellow_block"} diff --git a/outputs/smoke_cil/group_index.jsonl b/outputs/smoke_cil/group_index.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..874c6ce1235e5bb645e4bfb0121409907f8cb70c --- /dev/null +++ b/outputs/smoke_cil/group_index.jsonl @@ -0,0 +1,4 @@ +{"candidate_type_counts": {"delayed": 1, "expert": 1, "near_miss": 1, "random_negative": 1}, "group_id": "toy_pick_red_mug-s0000-07d8558fd93e", "instruction": "Pick up the red mug.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-33249a76c7f96e9c002537e5", "rec-34767691b146b54c935959e4", "rec-66157ca007873d3c0f5e37f7", "rec-3dbbe6ccebd0c476b880d6f2"], "scene_id": "toy_pick_red_mug-scene-0000", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": "states/toy_pick_red_mug-s0000-07d8558fd93e.pkl", "state_hash": "07d8558fd93e39692be8bdd366e5b31f9afbc61e3e91f99f22702d8a4e67cb95", "success_count": 3, "task_id": "toy_pick_red_mug"} +{"candidate_type_counts": {"expert": 1, "near_miss": 1, "noop": 1, "random_negative": 1}, "group_id": "toy_pick_red_mug-s0001-a3f87a69e3e5", "instruction": "Pick up the red mug.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-137cf57afd46c64bc77dbdee", "rec-5c4f505b20813a8edaa3230f", "rec-917430f79fdde23b4d2e199d", "rec-db69cd83f54de633364e33d3"], "scene_id": "toy_pick_red_mug-scene-0001", "shard_path": "shards/shard_000001.jsonl", "state_blob_ref": "states/toy_pick_red_mug-s0001-a3f87a69e3e5.pkl", "state_hash": "a3f87a69e3e5c1a4408ebbad970c4a0d1555d03d33b960481657161af70c5f1b", "success_count": 3, "task_id": "toy_pick_red_mug"} +{"candidate_type_counts": {"expert": 1, "near_miss": 1, "wrong_relation": 1, "wrong_target": 1}, "group_id": "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", "instruction": "Put the red mug in the blue bowl.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-0a6971a4e4ad6ee040149a97", "rec-3b6c7f5495d01889a41ba868", "rec-228c7644bb33f0e5c2f13efe", "rec-6780cfa0c2a082695d539b53"], "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "shard_path": "shards/shard_000002.jsonl", "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2.pkl", "state_hash": "c46dabefe4b2286bd2d0e7204047dd05d0f212208ea8eac3c454f34bab3d0e9e", "success_count": 4, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type_counts": {"expert": 1, "near_miss": 1, "noop": 1, "wrong_target": 1}, "group_id": "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca", "instruction": "Put the red mug in the blue bowl.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-3ad6215f5852f6bf59e36bad", "rec-0c0239208e2fecee942d1d07", "rec-4ccaf6819687a8dbeaae3caa", "rec-69b30165834e9a26db9a33a7"], "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "shard_path": "shards/shard_000003.jsonl", "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca.pkl", "state_hash": "5050f098a0cac7fcc9ed3303ba80ff44f7efbb48d7a119c2a27c6d706bd86f62", "success_count": 3, "task_id": "toy_put_red_mug_in_blue_bowl"} diff --git a/outputs/smoke_cil/manifest.json b/outputs/smoke_cil/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..53d8dae49c4a8385b56d053c0d2b30a8030b40c6 --- /dev/null +++ b/outputs/smoke_cil/manifest.json @@ -0,0 +1,55 @@ +{ + "backend": "toy", + "created_at": "2026-06-19T05:56:55.941447+00:00", + "dataset_name": "cil_toy", + "format": "dovla_cil", + "group_count": 4, + "group_index_path": "group_index.jsonl", + "index_format": "jsonl", + "k": 4, + "num_groups": 4, + "num_records": 16, + "record_count": 16, + "record_index_path": "record_index.jsonl", + "schema_version": "0.1", + "seed": 0, + "shard_count": 4, + "shard_format": "jsonl", + "shard_size": 4, + "shards": [ + { + "format": "jsonl", + "group_ids": [ + "toy_pick_red_mug-s0000-07d8558fd93e" + ], + "path": "shards/shard_000000.jsonl", + "record_count": 4 + }, + { + "format": "jsonl", + "group_ids": [ + "toy_pick_red_mug-s0001-a3f87a69e3e5" + ], + "path": "shards/shard_000001.jsonl", + "record_count": 4 + }, + { + "format": "jsonl", + "group_ids": [ + "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2" + ], + "path": "shards/shard_000002.jsonl", + "record_count": 4 + }, + { + "format": "jsonl", + "group_ids": [ + "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca" + ], + "path": "shards/shard_000003.jsonl", + "record_count": 4 + } + ], + "task_count": 2, + "version": "0.1" +} diff --git a/outputs/smoke_cil/metadata.json b/outputs/smoke_cil/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..53d8dae49c4a8385b56d053c0d2b30a8030b40c6 --- /dev/null +++ b/outputs/smoke_cil/metadata.json @@ -0,0 +1,55 @@ +{ + "backend": "toy", + "created_at": "2026-06-19T05:56:55.941447+00:00", + "dataset_name": "cil_toy", + "format": "dovla_cil", + "group_count": 4, + "group_index_path": "group_index.jsonl", + "index_format": "jsonl", + "k": 4, + "num_groups": 4, + "num_records": 16, + "record_count": 16, + "record_index_path": "record_index.jsonl", + "schema_version": "0.1", + "seed": 0, + "shard_count": 4, + "shard_format": "jsonl", + "shard_size": 4, + "shards": [ + { + "format": "jsonl", + "group_ids": [ + "toy_pick_red_mug-s0000-07d8558fd93e" + ], + "path": "shards/shard_000000.jsonl", + "record_count": 4 + }, + { + "format": "jsonl", + "group_ids": [ + "toy_pick_red_mug-s0001-a3f87a69e3e5" + ], + "path": "shards/shard_000001.jsonl", + "record_count": 4 + }, + { + "format": "jsonl", + "group_ids": [ + "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2" + ], + "path": "shards/shard_000002.jsonl", + "record_count": 4 + }, + { + "format": "jsonl", + "group_ids": [ + "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca" + ], + "path": "shards/shard_000003.jsonl", + "record_count": 4 + } + ], + "task_count": 2, + "version": "0.1" +} diff --git a/outputs/smoke_cil/record_index.jsonl b/outputs/smoke_cil/record_index.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..f02b6dd00f724f7865e7cf2291a9cdc8468f1606 --- /dev/null +++ b/outputs/smoke_cil/record_index.jsonl @@ -0,0 +1,16 @@ +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_pick_red_mug-s0000-07d8558fd93e", "rank_within_group": 0, "record_id": "rec-33249a76c7f96e9c002537e5", "regret": 0.0, "reward_progress": 1.0, "row_index": 0, "shard_path": "shards/shard_000000.jsonl", "state_hash": "07d8558fd93e39692be8bdd366e5b31f9afbc61e3e91f99f22702d8a4e67cb95", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_pick_red_mug-s0000-07d8558fd93e", "rank_within_group": 1, "record_id": "rec-34767691b146b54c935959e4", "regret": 0.0, "reward_progress": 1.0, "row_index": 1, "shard_path": "shards/shard_000000.jsonl", "state_hash": "07d8558fd93e39692be8bdd366e5b31f9afbc61e3e91f99f22702d8a4e67cb95", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "delayed", "failure_type": "no_motion", "group_id": "toy_pick_red_mug-s0000-07d8558fd93e", "rank_within_group": 3, "record_id": "rec-66157ca007873d3c0f5e37f7", "regret": 2.0, "reward_progress": 0.0, "row_index": 2, "shard_path": "shards/shard_000000.jsonl", "state_hash": "07d8558fd93e39692be8bdd366e5b31f9afbc61e3e91f99f22702d8a4e67cb95", "success": false, "task_id": "toy_pick_red_mug"} +{"candidate_type": "random_negative", "failure_type": "success", "group_id": "toy_pick_red_mug-s0000-07d8558fd93e", "rank_within_group": 2, "record_id": "rec-3dbbe6ccebd0c476b880d6f2", "regret": 0.0, "reward_progress": 1.0, "row_index": 3, "shard_path": "shards/shard_000000.jsonl", "state_hash": "07d8558fd93e39692be8bdd366e5b31f9afbc61e3e91f99f22702d8a4e67cb95", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_pick_red_mug-s0001-a3f87a69e3e5", "rank_within_group": 0, "record_id": "rec-137cf57afd46c64bc77dbdee", "regret": 0.0, "reward_progress": 1.0, "row_index": 0, "shard_path": "shards/shard_000001.jsonl", "state_hash": "a3f87a69e3e5c1a4408ebbad970c4a0d1555d03d33b960481657161af70c5f1b", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_pick_red_mug-s0001-a3f87a69e3e5", "rank_within_group": 1, "record_id": "rec-5c4f505b20813a8edaa3230f", "regret": 0.0, "reward_progress": 1.0, "row_index": 1, "shard_path": "shards/shard_000001.jsonl", "state_hash": "a3f87a69e3e5c1a4408ebbad970c4a0d1555d03d33b960481657161af70c5f1b", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "random_negative", "failure_type": "success", "group_id": "toy_pick_red_mug-s0001-a3f87a69e3e5", "rank_within_group": 2, "record_id": "rec-917430f79fdde23b4d2e199d", "regret": 0.0, "reward_progress": 1.0, "row_index": 2, "shard_path": "shards/shard_000001.jsonl", "state_hash": "a3f87a69e3e5c1a4408ebbad970c4a0d1555d03d33b960481657161af70c5f1b", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "noop", "failure_type": "no_motion", "group_id": "toy_pick_red_mug-s0001-a3f87a69e3e5", "rank_within_group": 3, "record_id": "rec-db69cd83f54de633364e33d3", "regret": 2.0, "reward_progress": 0.0, "row_index": 3, "shard_path": "shards/shard_000001.jsonl", "state_hash": "a3f87a69e3e5c1a4408ebbad970c4a0d1555d03d33b960481657161af70c5f1b", "success": false, "task_id": "toy_pick_red_mug"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", "rank_within_group": 0, "record_id": "rec-0a6971a4e4ad6ee040149a97", "regret": 0.0, "reward_progress": 1.0, "row_index": 0, "shard_path": "shards/shard_000002.jsonl", "state_hash": "c46dabefe4b2286bd2d0e7204047dd05d0f212208ea8eac3c454f34bab3d0e9e", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "wrong_target", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", "rank_within_group": 2, "record_id": "rec-3b6c7f5495d01889a41ba868", "regret": 0.0, "reward_progress": 1.0, "row_index": 1, "shard_path": "shards/shard_000002.jsonl", "state_hash": "c46dabefe4b2286bd2d0e7204047dd05d0f212208ea8eac3c454f34bab3d0e9e", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", "rank_within_group": 1, "record_id": "rec-228c7644bb33f0e5c2f13efe", "regret": 0.0, "reward_progress": 1.0, "row_index": 2, "shard_path": "shards/shard_000002.jsonl", "state_hash": "c46dabefe4b2286bd2d0e7204047dd05d0f212208ea8eac3c454f34bab3d0e9e", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "wrong_relation", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", "rank_within_group": 3, "record_id": "rec-6780cfa0c2a082695d539b53", "regret": 0.0, "reward_progress": 1.0, "row_index": 3, "shard_path": "shards/shard_000002.jsonl", "state_hash": "c46dabefe4b2286bd2d0e7204047dd05d0f212208ea8eac3c454f34bab3d0e9e", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca", "rank_within_group": 1, "record_id": "rec-3ad6215f5852f6bf59e36bad", "regret": 0.0, "reward_progress": 1.0, "row_index": 0, "shard_path": "shards/shard_000003.jsonl", "state_hash": "5050f098a0cac7fcc9ed3303ba80ff44f7efbb48d7a119c2a27c6d706bd86f62", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "wrong_target", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca", "rank_within_group": 0, "record_id": "rec-0c0239208e2fecee942d1d07", "regret": 0.0, "reward_progress": 1.0, "row_index": 1, "shard_path": "shards/shard_000003.jsonl", "state_hash": "5050f098a0cac7fcc9ed3303ba80ff44f7efbb48d7a119c2a27c6d706bd86f62", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca", "rank_within_group": 2, "record_id": "rec-4ccaf6819687a8dbeaae3caa", "regret": 0.0, "reward_progress": 1.0, "row_index": 2, "shard_path": "shards/shard_000003.jsonl", "state_hash": "5050f098a0cac7fcc9ed3303ba80ff44f7efbb48d7a119c2a27c6d706bd86f62", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "noop", "failure_type": "no_motion", "group_id": "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca", "rank_within_group": 3, "record_id": "rec-69b30165834e9a26db9a33a7", "regret": 2.0, "reward_progress": 0.0, "row_index": 3, "shard_path": "shards/shard_000003.jsonl", "state_hash": "5050f098a0cac7fcc9ed3303ba80ff44f7efbb48d7a119c2a27c6d706bd86f62", "success": false, "task_id": "toy_put_red_mug_in_blue_bowl"} diff --git a/outputs/smoke_cil/shards/shard_000000.jsonl b/outputs/smoke_cil/shards/shard_000000.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..bdc4d4235970dfeb9f9b87a3330b75e301b6eaa8 --- /dev/null +++ b/outputs/smoke_cil/shards/shard_000000.jsonl @@ -0,0 +1,4 @@ +{"action_chunk": {"action_id": "expert-0", "horizon": 2, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0000-07d8558fd93e", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 3269563184, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0000-07d8558fd93e.pkl", "state_index": 0, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-33249a76c7f96e9c002537e5", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0000", "state_hash": "07d8558fd93e39692be8bdd366e5b31f9afbc61e3e91f99f22702d8a4e67cb95", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.15]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-3269563184", "horizon": 3, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": "expert-grasp-red_mug", "perturbation": {"dx": -0.08, "dy": -0.1, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "move_to", "position": [-0.08, -0.1, 0.0]}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0000-07d8558fd93e", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 3269563184, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0000-07d8558fd93e.pkl", "state_index": 0, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.08, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.08, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.08, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.08, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-34767691b146b54c935959e4", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0000", "state_hash": "07d8558fd93e39692be8bdd366e5b31f9afbc61e3e91f99f22702d8a4e67cb95", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.3236, -0.0913, -0.03]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.08, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.08, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "delay-3269563184", "horizon": 2, "metadata": {"candidate_type": "delayed", "difficulty": 0.9, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "delay", "steps": 2}}, "representation": "semantic", "skill_type": "delay", "values": [{"command": "delay", "steps": 2}, {"command": "noop"}]}, "candidate_type": "delayed", "failure": {"language_explanation": "The action did not produce meaningful motion.", "metadata": {}, "symbolic_reason": "no object pose, grasp, or articulation change was observed", "type": "no_motion"}, "group_id": "toy_pick_red_mug-s0000-07d8558fd93e", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 3269563184, "local_symbolic_explanation": "The action did not produce meaningful motion.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0000-07d8558fd93e.pkl", "state_index": 0, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-66157ca007873d3c0f5e37f7", "regret": 2.0, "reward": {"dense_components": {"relation_partial": 0.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 0.0}, "progress": 0.0, "success": false, "terminal_success": false}, "scene_id": "toy_pick_red_mug-scene-0000", "state_hash": "07d8558fd93e39692be8bdd366e5b31f9afbc61e3e91f99f22702d8a4e67cb95", "structured_effect": {"articulation_delta": {}, "contact_events": [{"steps": 2, "type": "delay"}, {"type": "noop"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"steps": 2, "type": "delay"}, {"type": "noop"}], "explanation": "Task predicates were not satisfied.", "failure_type": "task_not_satisfied", "success": false}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": false, "success": false}}, "moved_objects": [], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.0]}, "relation_after": {"grasped(red_mug)": false, "success": false}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "random-neg-0-3269563184", "horizon": 2, "metadata": {"candidate_type": "random_negative", "difficulty": 0.8, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "random_negative"}}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}]}, "candidate_type": "random_negative", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0000-07d8558fd93e", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 3269563184, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0000-07d8558fd93e.pkl", "state_index": 0, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-3dbbe6ccebd0c476b880d6f2", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0000", "state_hash": "07d8558fd93e39692be8bdd366e5b31f9afbc61e3e91f99f22702d8a4e67cb95", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.15]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} diff --git a/outputs/smoke_cil/shards/shard_000001.jsonl b/outputs/smoke_cil/shards/shard_000001.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..c9195380518dfd44a32069d888853d364469f194 --- /dev/null +++ b/outputs/smoke_cil/shards/shard_000001.jsonl @@ -0,0 +1,4 @@ +{"action_chunk": {"action_id": "expert-0", "horizon": 2, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0001-a3f87a69e3e5", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 1101978868, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0001-a3f87a69e3e5.pkl", "state_index": 1, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.4197, 0.0115, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4197, 0.0115, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-137cf57afd46c64bc77dbdee", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0001", "state_hash": "a3f87a69e3e5c1a4408ebbad970c4a0d1555d03d33b960481657161af70c5f1b", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.15]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4197, 0.0115, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-1101978868", "horizon": 3, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": "expert-grasp-red_mug", "perturbation": {"dx": 0.12, "dy": -0.1, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "move_to", "position": [0.12, -0.1, 0.0]}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0001-a3f87a69e3e5", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 1101978868, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0001-a3f87a69e3e5.pkl", "state_index": 1, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [0.12, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.12, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [0.12, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.12, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-5c4f505b20813a8edaa3230f", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0001", "state_hash": "a3f87a69e3e5c1a4408ebbad970c4a0d1555d03d33b960481657161af70c5f1b", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.5397000000000001, -0.1115, -0.03]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [0.12, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.12, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "random-neg-0-1101978868", "horizon": 2, "metadata": {"candidate_type": "random_negative", "difficulty": 0.8, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "random_negative"}}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}]}, "candidate_type": "random_negative", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0001-a3f87a69e3e5", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 1101978868, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0001-a3f87a69e3e5.pkl", "state_index": 1, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.4197, 0.0115, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4197, 0.0115, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-917430f79fdde23b4d2e199d", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0001", "state_hash": "a3f87a69e3e5c1a4408ebbad970c4a0d1555d03d33b960481657161af70c5f1b", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.15]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4197, 0.0115, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "noop-1101978868", "horizon": 1, "metadata": {"candidate_type": "noop", "difficulty": 0.95, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "no_op"}}, "representation": "semantic", "skill_type": "noop", "values": [{"command": "noop"}]}, "candidate_type": "noop", "failure": {"language_explanation": "The action did not produce meaningful motion.", "metadata": {}, "symbolic_reason": "no object pose, grasp, or articulation change was observed", "type": "no_motion"}, "group_id": "toy_pick_red_mug-s0001-a3f87a69e3e5", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 1101978868, "local_symbolic_explanation": "The action did not produce meaningful motion.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0001-a3f87a69e3e5.pkl", "state_index": 1, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-db69cd83f54de633364e33d3", "regret": 2.0, "reward": {"dense_components": {"relation_partial": 0.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 0.0}, "progress": 0.0, "success": false, "terminal_success": false}, "scene_id": "toy_pick_red_mug-scene-0001", "state_hash": "a3f87a69e3e5c1a4408ebbad970c4a0d1555d03d33b960481657161af70c5f1b", "structured_effect": {"articulation_delta": {}, "contact_events": [{"type": "noop"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"type": "noop"}], "explanation": "Task predicates were not satisfied.", "failure_type": "task_not_satisfied", "success": false}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": false, "success": false}}, "moved_objects": [], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.0]}, "relation_after": {"grasped(red_mug)": false, "success": false}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} diff --git a/outputs/smoke_cil/shards/shard_000002.jsonl b/outputs/smoke_cil/shards/shard_000002.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..041214cebfd199e8d6d7fd0abc41156d94a761bd --- /dev/null +++ b/outputs/smoke_cil/shards/shard_000002.jsonl @@ -0,0 +1,4 @@ +{"action_chunk": {"action_id": "expert-0", "horizon": 3, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "inside", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.128, 0.0528, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 3813448054, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2.pkl", "state_index": 0, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.128, 0.0528, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.128, 0.0528, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.128, 0.0528, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.128, 0.0528, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-0a6971a4e4ad6ee040149a97", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.8699312987941002}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "state_hash": "c46dabefe4b2286bd2d0e7204047dd05d0f212208ea8eac3c454f34bab3d0e9e", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.3016, 0.0601, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.128, 0.0528, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.128, 0.0528, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "wrong-target-blue_bowl-0-3813448054", "horizon": 3, "metadata": {"candidate_type": "wrong_target", "difficulty": 0.6, "intended_relation": "inside", "intended_target": "blue_bowl", "parent_action_id": "expert-place-red_mug-inside-blue_bowl", "perturbation": {"kind": "target_swap"}, "planner": "toy_symbolic", "target_replacement": "blue_bowl"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "blue_bowl"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.128, 0.0528, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "wrong_target", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 3813448054, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2.pkl", "state_index": 0, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.128, 0.0528, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.128, 0.0528, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.128, 0.0528, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.128, 0.0528, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-3b6c7f5495d01889a41ba868", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.8699312987941002}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "state_hash": "c46dabefe4b2286bd2d0e7204047dd05d0f212208ea8eac3c454f34bab3d0e9e", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "blue_bowl", "type": "proximity"}, {"distance": 0.3421616138610525, "object": "red_mug", "type": "failed_grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": false, "metadata": {"info": {"contacts": [{"object": "blue_bowl", "type": "proximity"}, {"distance": 0.3421616138610525, "object": "red_mug", "type": "failed_grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.3016, 0.0601, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.128, 0.0528, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.128, 0.0528, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-3813448054", "horizon": 3, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "inside", "intended_target": "red_mug", "parent_action_id": "expert-place-red_mug-inside-blue_bowl", "perturbation": {"dx": -0.12, "dy": -0.04, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.248, 0.012799999999999999, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 3813448054, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2.pkl", "state_index": 0, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.248, 0.012799999999999999, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.248, 0.012799999999999999, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.248, 0.012799999999999999, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.248, 0.012799999999999999, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-228c7644bb33f0e5c2f13efe", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.5686109211311835}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "state_hash": "c46dabefe4b2286bd2d0e7204047dd05d0f212208ea8eac3c454f34bab3d0e9e", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.18159999999999998, 0.0201, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.248, 0.012799999999999999, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.248, 0.012799999999999999, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "wrong-relation-red_mug-next_to-3813448054", "horizon": 3, "metadata": {"candidate_type": "wrong_relation", "difficulty": 0.55, "intended_relation": "next_to", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"from": "inside", "kind": "relation_swap", "to": "next_to"}}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "object": "red_mug", "position": [-0.048, 0.0528, 0.06], "reference": "blue_bowl", "relation": "next_to"}]}, "candidate_type": "wrong_relation", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 3813448054, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0000-c46dabefe4b2.pkl", "state_index": 0, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.048, 0.0528, 0.06], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.048, 0.0528, 0.21], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.048, 0.0528, 0.06], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.048, 0.0528, 0.21], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-6780cfa0c2a082695d539b53", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.7221731324370514}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "state_hash": "c46dabefe4b2286bd2d0e7204047dd05d0f212208ea8eac3c454f34bab3d0e9e", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "next_to", "type": "place"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "next_to", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.3816, 0.0601, 0.03]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.048, 0.0528, 0.06], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.048, 0.0528, 0.21], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} diff --git a/outputs/smoke_cil/shards/shard_000003.jsonl b/outputs/smoke_cil/shards/shard_000003.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..e2a2fc8e1b31af65e2feef43f2c8d50573c3f806 --- /dev/null +++ b/outputs/smoke_cil/shards/shard_000003.jsonl @@ -0,0 +1,4 @@ +{"action_chunk": {"action_id": "expert-0", "horizon": 3, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "inside", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.168, 0.0095, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 1965660509, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca.pkl", "state_index": 1, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.168, 0.0095, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.168, 0.0095, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.168, 0.0095, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.168, 0.0095, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-3ad6215f5852f6bf59e36bad", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.839960215566157}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "state_hash": "5050f098a0cac7fcc9ed3303ba80ff44f7efbb48d7a119c2a27c6d706bd86f62", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.2498, 0.0083, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.168, 0.0095, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.168, 0.0095, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "wrong-target-blue_bowl-0-1965660509", "horizon": 3, "metadata": {"candidate_type": "wrong_target", "difficulty": 0.6, "intended_relation": "inside", "intended_target": "blue_bowl", "parent_action_id": "expert-place-red_mug-inside-blue_bowl", "perturbation": {"kind": "target_swap"}, "planner": "toy_symbolic", "target_replacement": "blue_bowl"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "blue_bowl"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.168, 0.0095, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "wrong_target", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 1965660509, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca.pkl", "state_index": 1, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.168, 0.0095, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.168, 0.0095, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.168, 0.0095, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.168, 0.0095, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-0c0239208e2fecee942d1d07", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.839960215566157}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "state_hash": "5050f098a0cac7fcc9ed3303ba80ff44f7efbb48d7a119c2a27c6d706bd86f62", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "blue_bowl", "type": "proximity"}, {"distance": 0.29149430526169806, "object": "red_mug", "type": "failed_grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": false, "metadata": {"info": {"contacts": [{"object": "blue_bowl", "type": "proximity"}, {"distance": 0.29149430526169806, "object": "red_mug", "type": "failed_grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.2498, 0.0083, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.168, 0.0095, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.168, 0.0095, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-1965660509", "horizon": 3, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "inside", "intended_target": "red_mug", "parent_action_id": "expert-place-red_mug-inside-blue_bowl", "perturbation": {"dx": 0.08, "dy": -0.1, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.08800000000000001, -0.09050000000000001, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 1965660509, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca.pkl", "state_index": 1, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.08800000000000001, -0.09050000000000001, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.08800000000000001, -0.09050000000000001, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.08800000000000001, -0.09050000000000001, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.08800000000000001, -0.09050000000000001, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-4ccaf6819687a8dbeaae3caa", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.46321024435227165}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "state_hash": "5050f098a0cac7fcc9ed3303ba80ff44f7efbb48d7a119c2a27c6d706bd86f62", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.3298, -0.09170000000000002, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.08800000000000001, -0.09050000000000001, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.08800000000000001, -0.09050000000000001, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "noop-1965660509", "horizon": 1, "metadata": {"candidate_type": "noop", "difficulty": 0.95, "intended_relation": "inside", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "no_op"}}, "representation": "semantic", "skill_type": "noop", "values": [{"command": "noop"}]}, "candidate_type": "noop", "failure": {"language_explanation": "The action did not produce meaningful motion.", "metadata": {}, "symbolic_reason": "no object pose, grasp, or articulation change was observed", "type": "no_motion"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 1965660509, "local_symbolic_explanation": "The action did not produce meaningful motion.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0001-5050f098a0ca.pkl", "state_index": 1, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-69b30165834e9a26db9a33a7", "regret": 2.0, "reward": {"dense_components": {"relation_partial": 0.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 0.0, "target_moved_closer": 0.0}, "progress": 0.0, "success": false, "terminal_success": false}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "state_hash": "5050f098a0cac7fcc9ed3303ba80ff44f7efbb48d7a119c2a27c6d706bd86f62", "structured_effect": {"articulation_delta": {}, "contact_events": [{"type": "noop"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"type": "noop"}], "explanation": "Task predicates were not satisfied.", "failure_type": "task_not_satisfied", "success": false}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": false, "success": false}}, "moved_objects": [], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.0, 0.0, 0.0]}, "relation_after": {"inside(red_mug,blue_bowl)": false, "success": false}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} diff --git a/outputs/smoke_full/causalstress/metrics.json b/outputs/smoke_full/causalstress/metrics.json new file mode 100644 index 0000000000000000000000000000000000000000..3fdf94ca88108a600e5b5003cdebba2f6b2417e6 --- /dev/null +++ b/outputs/smoke_full/causalstress/metrics.json @@ -0,0 +1,158 @@ +{ + "categories": [ + "counterfactual_ranking", + "effect_query", + "minimal_language_change", + "near_miss_boundary", + "physics_shift_placeholder", + "wrong_target_distractor" + ], + "config": { + "backend": "toy", + "checkpoint": "outputs/smoke_full/train/best.pt", + "k": 4, + "num_tasks": 6, + "seed": 0 + }, + "effect_prediction_mae": 0.0, + "instruction_switch_accuracy": 1.0, + "ndcg_at_k": 1.0, + "num_groups": 6, + "num_records": 24, + "pairwise_ranking_accuracy": 1.0, + "per_category": { + "counterfactual_ranking": { + "effect_mae": 0.0, + "failure_rate": 0.0, + "instruction_switch": 1.0, + "ndcg": 1.0, + "progress_mae": 0.0, + "regret_ece": 0.0, + "selected_failure_rate": 0.0, + "selected_success": 1.0, + "success": 1.0, + "success_pred": 1.0, + "top1": 1.0 + }, + "effect_query": { + "effect_mae": 0.0, + "effect_query_progress_mae": 0.0, + "failure_rate": 0.25, + "instruction_switch": 1.0, + "ndcg": 1.0, + "pair_correct": 1.0, + "progress_mae": 0.0, + "regret_ece": 0.0, + "selected_failure_rate": 0.0, + "selected_success": 1.0, + "success": 0.75, + "success_pred": 1.0, + "top1": 1.0 + }, + "minimal_language_change": { + "effect_mae": 0.0, + "failure_rate": 0.5, + "instruction_switch": 1.0, + "ndcg": 1.0, + "pair_correct": 1.0, + "progress_mae": 0.0, + "regret_ece": 0.0, + "selected_failure_rate": 0.0, + "selected_success": 1.0, + "success": 0.5, + "success_pred": 1.0, + "top1": 1.0 + }, + "near_miss_boundary": { + "effect_mae": 0.0, + "failure_rate": 0.0, + "instruction_switch": 1.0, + "ndcg": 1.0, + "progress_mae": 0.0, + "regret_ece": 0.0, + "selected_failure_rate": 0.0, + "selected_success": 1.0, + "success": 1.0, + "success_pred": 1.0, + "top1": 1.0 + }, + "physics_shift_placeholder": { + "effect_mae": 0.0, + "failure_rate": 0.5, + "instruction_switch": 1.0, + "ndcg": 1.0, + "pair_correct": 1.0, + "progress_mae": 0.0, + "regret_ece": 0.0, + "selected_failure_rate": 0.0, + "selected_success": 1.0, + "success": 0.5, + "success_pred": 1.0, + "top1": 1.0 + }, + "wrong_target_distractor": { + "effect_mae": 0.0, + "failure_rate": 0.5, + "instruction_switch": 1.0, + "ndcg": 1.0, + "pair_correct": 1.0, + "progress_mae": 0.0, + "regret_ece": 0.0, + "selected_failure_rate": 0.0, + "selected_success": 1.0, + "success": 0.5, + "success_pred": 1.0, + "top1": 1.0 + } + }, + "regret_calibration_error": 0.0, + "success_prediction_accuracy": 1.0, + "target_confusion_matrix": { + "cube": { + "cube": 1 + }, + "drawer": { + "drawer": 1 + }, + "green_block": { + "green_block": 1 + }, + "red_mug": { + "red_mug": 3 + } + }, + "target_confusion_matrix_by_category": { + "counterfactual_ranking": { + "green_block": { + "green_block": 1 + } + }, + "effect_query": { + "drawer": { + "drawer": 1 + } + }, + "minimal_language_change": { + "red_mug": { + "red_mug": 1 + } + }, + "near_miss_boundary": { + "red_mug": { + "red_mug": 1 + } + }, + "physics_shift_placeholder": { + "cube": { + "cube": 1 + } + }, + "wrong_target_distractor": { + "red_mug": { + "red_mug": 1 + } + } + }, + "task_success_rate": 1.0, + "top1_action_selection": 1.0 +} diff --git a/outputs/smoke_full/cil_toy/group_index.jsonl b/outputs/smoke_full/cil_toy/group_index.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..200a9e527dd3b08300b065f74d5ce4c026c85624 --- /dev/null +++ b/outputs/smoke_full/cil_toy/group_index.jsonl @@ -0,0 +1,12 @@ +{"candidate_type_counts": {"delayed": 1, "expert": 1, "near_miss": 1, "random_negative": 1}, "group_id": "toy_pick_red_mug-s0000-586344cdc593", "instruction": "Pick up the red mug.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-dc18ebd63ea374a0e6c75030", "rec-3d0eea162bc56a2245af71dd", "rec-d93d5aee82fa00fdce043810", "rec-88743cf092ac7e529f708d57"], "scene_id": "toy_pick_red_mug-scene-0000", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": "states/toy_pick_red_mug-s0000-586344cdc593.pkl", "state_hash": "586344cdc593a334619162a1539bcbdd2c6cea08d3b7b6217385f6425e2e39c1", "success_count": 3, "task_id": "toy_pick_red_mug"} +{"candidate_type_counts": {"expert": 1, "near_miss": 1, "noop": 1, "random_negative": 1}, "group_id": "toy_pick_red_mug-s0001-6f757ba8aaf5", "instruction": "Pick up the red mug.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-9c35c0e2b0d8f0177deca3f4", "rec-efa3f478ee63ffeb9e0d5433", "rec-201f911e1605197264d9e111", "rec-abafd5d382c564beba859670"], "scene_id": "toy_pick_red_mug-scene-0001", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": "states/toy_pick_red_mug-s0001-6f757ba8aaf5.pkl", "state_hash": "6f757ba8aaf57930de9f9359f70de48518191d11e955a896e47626cb726f29d4", "success_count": 3, "task_id": "toy_pick_red_mug"} +{"candidate_type_counts": {"expert": 1, "near_miss": 2, "random_negative": 1}, "group_id": "toy_pick_red_mug-s0002-06f82d14b727", "instruction": "Pick up the red mug.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-9eea96f5bca72ada9c8e867f", "rec-b8557672e91d845b30611e41", "rec-c15228099eafc5f8717c4cd1", "rec-2468690113ecdaafe142070c"], "scene_id": "toy_pick_red_mug-scene-0002", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": "states/toy_pick_red_mug-s0002-06f82d14b727.pkl", "state_hash": "06f82d14b727818f93a3b1ffce87156966da7fd1c89745405d5d2d6963faef7a", "success_count": 4, "task_id": "toy_pick_red_mug"} +{"candidate_type_counts": {"expert": 1, "near_miss": 1, "noop": 1, "random_negative": 1}, "group_id": "toy_pick_red_mug-s0003-c8436f335506", "instruction": "Pick up the red mug.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-0a914a6fe4a0f0cc55a5d77e", "rec-b35cc541d997c6ddb55a9300", "rec-c6f4caeab9f4e96d1b3fd3a7", "rec-9e1e2d36ef89f8ecc24cf124"], "scene_id": "toy_pick_red_mug-scene-0003", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": "states/toy_pick_red_mug-s0003-c8436f335506.pkl", "state_hash": "c8436f335506abf030900fcba5c30460a1af34103dfeeb68438763b088683e19", "success_count": 3, "task_id": "toy_pick_red_mug"} +{"candidate_type_counts": {"expert": 1, "near_miss": 1, "wrong_relation": 1, "wrong_target": 1}, "group_id": "toy_put_red_mug_in_blue_bowl-s0000-27c5c6f7fcc9", "instruction": "Put the red mug in the blue bowl.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-2d553e1113091b7e2dda8cc0", "rec-1977206f5f085e871cb7bdb8", "rec-0f0d0bd369b1c0d8faab3754", "rec-8ec61d6ce865df225f30aaa0"], "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0000-27c5c6f7fcc9.pkl", "state_hash": "27c5c6f7fcc9f641c306027bc75665408bfecdce16f2a22d01b880f98bd09487", "success_count": 4, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type_counts": {"expert": 1, "near_miss": 1, "noop": 1, "wrong_target": 1}, "group_id": "toy_put_red_mug_in_blue_bowl-s0001-08f771b15b3d", "instruction": "Put the red mug in the blue bowl.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-bed42f016fc41ca97d7ffaa0", "rec-ca049bb5d88ad770a8aa1aaf", "rec-200ea59b16ebe8f4f7b3033f", "rec-81e9e7dfe565a96fc17e1f31"], "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0001-08f771b15b3d.pkl", "state_hash": "08f771b15b3dc1a31dbd6462d4a8d5695537691c82689b24e06531eae1e98b10", "success_count": 3, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type_counts": {"delayed": 1, "expert": 1, "near_miss": 1, "wrong_target": 1}, "group_id": "toy_put_red_mug_in_blue_bowl-s0002-53bbb3e0b31f", "instruction": "Put the red mug in the blue bowl.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-0cf2b2b7c17c6b02bbb4d0df", "rec-4dc92c05bfb5976e1095c2f6", "rec-35b7c765d704803e37df434e", "rec-6e1bc0e2c2724243bfc43aca"], "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0002", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0002-53bbb3e0b31f.pkl", "state_hash": "53bbb3e0b31fec001805100a21fb3f6d20e5dae706f0d7aa39ee93fa79ea9d4b", "success_count": 3, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type_counts": {"delayed": 1, "expert": 1, "near_miss": 1, "wrong_target": 1}, "group_id": "toy_put_red_mug_in_blue_bowl-s0003-ea81e044cc91", "instruction": "Put the red mug in the blue bowl.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-d5a84dd3069a5b640b8e22a0", "rec-ad28ff23b904e641fa5f46e2", "rec-2459025770be61bf4078653e", "rec-d4560f94bf1423b4fe5c9cc0"], "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0003", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0003-ea81e044cc91.pkl", "state_hash": "ea81e044cc912635ca9d64f6537e11c6f748e657a79366e15093d58a445e825a", "success_count": 3, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type_counts": {"expert": 1, "near_miss": 2, "wrong_target": 1}, "group_id": "toy_green_block_left_of_yellow_block-s0000-c3c9be1f03a9", "instruction": "Put the green block left of the yellow block.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-2f2472ca239a50aae7cb08c1", "rec-1d215a54a47965ed011eeb8f", "rec-8ed65de6fc87f2b560ca2482", "rec-77e56e88c5e1debd5a6e9025"], "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "shard_path": "shards/shard_000001.jsonl", "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0000-c3c9be1f03a9.pkl", "state_hash": "c3c9be1f03a96485fe6769089a7789ac6ade3c4d8346e8cd658288648788405a", "success_count": 4, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type_counts": {"expert": 1, "near_miss": 2, "wrong_target": 1}, "group_id": "toy_green_block_left_of_yellow_block-s0001-0c030436495a", "instruction": "Put the green block left of the yellow block.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-966e67aec9ec7e5909a3150f", "rec-9817348388947a28a5081a32", "rec-23d330c81ec3dc1ce096212a", "rec-84bbf672956447f527c7744e"], "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "shard_path": "shards/shard_000001.jsonl", "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0001-0c030436495a.pkl", "state_hash": "0c030436495aceda58392bfa58f785e409127cc5834bfe62db1d29dd2760619a", "success_count": 4, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type_counts": {"delayed": 1, "expert": 1, "near_miss": 1, "wrong_target": 1}, "group_id": "toy_green_block_left_of_yellow_block-s0002-11c665a5eda3", "instruction": "Put the green block left of the yellow block.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-621ec9a357c50a129ad8a9f4", "rec-6eebd4d8930e14931ed6197c", "rec-1a045842507c8e29c1e62673", "rec-75f3c355b20290baecea329e"], "scene_id": "toy_green_block_left_of_yellow_block-scene-0002", "shard_path": "shards/shard_000001.jsonl", "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0002-11c665a5eda3.pkl", "state_hash": "11c665a5eda32c8f18c98450e578f04c7bb6f4e89bf533d40a930c189544e916", "success_count": 4, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type_counts": {"expert": 1, "near_miss": 1, "random_negative": 1, "wrong_target": 1}, "group_id": "toy_green_block_left_of_yellow_block-s0003-c8edc6dcf524", "instruction": "Put the green block left of the yellow block.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-b77f352775370c10ed4fe85c", "rec-b421a2c10d51afdbf2f0a550", "rec-89bb606fb10a16368c1d2338", "rec-3114a704be5504c05fe334d0"], "scene_id": "toy_green_block_left_of_yellow_block-scene-0003", "shard_path": "shards/shard_000001.jsonl", "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0003-c8edc6dcf524.pkl", "state_hash": "c8edc6dcf52463a131a2904fe46d908dd3dd7fb45f13386a4970df58a804732f", "success_count": 4, "task_id": "toy_green_block_left_of_yellow_block"} diff --git a/outputs/smoke_full/cil_toy/manifest.json b/outputs/smoke_full/cil_toy/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..1e7a73246f46f202c5d1484ca19fc8af16320a79 --- /dev/null +++ b/outputs/smoke_full/cil_toy/manifest.json @@ -0,0 +1,49 @@ +{ + "backend": "toy", + "created_at": "2026-06-19T03:36:03.777618+00:00", + "dataset_name": "cil_toy", + "format": "dovla_cil", + "group_count": 12, + "group_index_path": "group_index.jsonl", + "index_format": "jsonl", + "k": 4, + "num_groups": 12, + "num_records": 48, + "record_count": 48, + "record_index_path": "record_index.jsonl", + "schema_version": "0.1", + "seed": 0, + "shard_count": 2, + "shard_format": "jsonl", + "shard_size": 32, + "shards": [ + { + "format": "jsonl", + "group_ids": [ + "toy_pick_red_mug-s0000-586344cdc593", + "toy_pick_red_mug-s0001-6f757ba8aaf5", + "toy_pick_red_mug-s0002-06f82d14b727", + "toy_pick_red_mug-s0003-c8436f335506", + "toy_put_red_mug_in_blue_bowl-s0000-27c5c6f7fcc9", + "toy_put_red_mug_in_blue_bowl-s0001-08f771b15b3d", + "toy_put_red_mug_in_blue_bowl-s0002-53bbb3e0b31f", + "toy_put_red_mug_in_blue_bowl-s0003-ea81e044cc91" + ], + "path": "shards/shard_000000.jsonl", + "record_count": 32 + }, + { + "format": "jsonl", + "group_ids": [ + "toy_green_block_left_of_yellow_block-s0000-c3c9be1f03a9", + "toy_green_block_left_of_yellow_block-s0001-0c030436495a", + "toy_green_block_left_of_yellow_block-s0002-11c665a5eda3", + "toy_green_block_left_of_yellow_block-s0003-c8edc6dcf524" + ], + "path": "shards/shard_000001.jsonl", + "record_count": 16 + } + ], + "task_count": 3, + "version": "0.1" +} diff --git a/outputs/smoke_full/cil_toy/metadata.json b/outputs/smoke_full/cil_toy/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..1e7a73246f46f202c5d1484ca19fc8af16320a79 --- /dev/null +++ b/outputs/smoke_full/cil_toy/metadata.json @@ -0,0 +1,49 @@ +{ + "backend": "toy", + "created_at": "2026-06-19T03:36:03.777618+00:00", + "dataset_name": "cil_toy", + "format": "dovla_cil", + "group_count": 12, + "group_index_path": "group_index.jsonl", + "index_format": "jsonl", + "k": 4, + "num_groups": 12, + "num_records": 48, + "record_count": 48, + "record_index_path": "record_index.jsonl", + "schema_version": "0.1", + "seed": 0, + "shard_count": 2, + "shard_format": "jsonl", + "shard_size": 32, + "shards": [ + { + "format": "jsonl", + "group_ids": [ + "toy_pick_red_mug-s0000-586344cdc593", + "toy_pick_red_mug-s0001-6f757ba8aaf5", + "toy_pick_red_mug-s0002-06f82d14b727", + "toy_pick_red_mug-s0003-c8436f335506", + "toy_put_red_mug_in_blue_bowl-s0000-27c5c6f7fcc9", + "toy_put_red_mug_in_blue_bowl-s0001-08f771b15b3d", + "toy_put_red_mug_in_blue_bowl-s0002-53bbb3e0b31f", + "toy_put_red_mug_in_blue_bowl-s0003-ea81e044cc91" + ], + "path": "shards/shard_000000.jsonl", + "record_count": 32 + }, + { + "format": "jsonl", + "group_ids": [ + "toy_green_block_left_of_yellow_block-s0000-c3c9be1f03a9", + "toy_green_block_left_of_yellow_block-s0001-0c030436495a", + "toy_green_block_left_of_yellow_block-s0002-11c665a5eda3", + "toy_green_block_left_of_yellow_block-s0003-c8edc6dcf524" + ], + "path": "shards/shard_000001.jsonl", + "record_count": 16 + } + ], + "task_count": 3, + "version": "0.1" +} diff --git a/outputs/smoke_full/cil_toy/record_index.jsonl b/outputs/smoke_full/cil_toy/record_index.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..5bd78274f468c5c572d5fe4455294b03ec0468dd --- /dev/null +++ b/outputs/smoke_full/cil_toy/record_index.jsonl @@ -0,0 +1,48 @@ +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_pick_red_mug-s0000-586344cdc593", "rank_within_group": 2, "record_id": "rec-dc18ebd63ea374a0e6c75030", "regret": 0.0, "reward_progress": 1.0, "row_index": 0, "shard_path": "shards/shard_000000.jsonl", "state_hash": "586344cdc593a334619162a1539bcbdd2c6cea08d3b7b6217385f6425e2e39c1", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_pick_red_mug-s0000-586344cdc593", "rank_within_group": 0, "record_id": "rec-3d0eea162bc56a2245af71dd", "regret": 0.0, "reward_progress": 1.0, "row_index": 1, "shard_path": "shards/shard_000000.jsonl", "state_hash": "586344cdc593a334619162a1539bcbdd2c6cea08d3b7b6217385f6425e2e39c1", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "delayed", "failure_type": "no_motion", "group_id": "toy_pick_red_mug-s0000-586344cdc593", "rank_within_group": 3, "record_id": "rec-d93d5aee82fa00fdce043810", "regret": 2.0, "reward_progress": 0.0, "row_index": 2, "shard_path": "shards/shard_000000.jsonl", "state_hash": "586344cdc593a334619162a1539bcbdd2c6cea08d3b7b6217385f6425e2e39c1", "success": false, "task_id": "toy_pick_red_mug"} +{"candidate_type": "random_negative", "failure_type": "success", "group_id": "toy_pick_red_mug-s0000-586344cdc593", "rank_within_group": 1, "record_id": "rec-88743cf092ac7e529f708d57", "regret": 0.0, "reward_progress": 1.0, "row_index": 3, "shard_path": "shards/shard_000000.jsonl", "state_hash": "586344cdc593a334619162a1539bcbdd2c6cea08d3b7b6217385f6425e2e39c1", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_pick_red_mug-s0001-6f757ba8aaf5", "rank_within_group": 1, "record_id": "rec-9c35c0e2b0d8f0177deca3f4", "regret": 0.0, "reward_progress": 1.0, "row_index": 4, "shard_path": "shards/shard_000000.jsonl", "state_hash": "6f757ba8aaf57930de9f9359f70de48518191d11e955a896e47626cb726f29d4", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_pick_red_mug-s0001-6f757ba8aaf5", "rank_within_group": 2, "record_id": "rec-efa3f478ee63ffeb9e0d5433", "regret": 0.0, "reward_progress": 1.0, "row_index": 5, "shard_path": "shards/shard_000000.jsonl", "state_hash": "6f757ba8aaf57930de9f9359f70de48518191d11e955a896e47626cb726f29d4", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "random_negative", "failure_type": "success", "group_id": "toy_pick_red_mug-s0001-6f757ba8aaf5", "rank_within_group": 0, "record_id": "rec-201f911e1605197264d9e111", "regret": 0.0, "reward_progress": 1.0, "row_index": 6, "shard_path": "shards/shard_000000.jsonl", "state_hash": "6f757ba8aaf57930de9f9359f70de48518191d11e955a896e47626cb726f29d4", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "noop", "failure_type": "no_motion", "group_id": "toy_pick_red_mug-s0001-6f757ba8aaf5", "rank_within_group": 3, "record_id": "rec-abafd5d382c564beba859670", "regret": 2.0, "reward_progress": 0.0, "row_index": 7, "shard_path": "shards/shard_000000.jsonl", "state_hash": "6f757ba8aaf57930de9f9359f70de48518191d11e955a896e47626cb726f29d4", "success": false, "task_id": "toy_pick_red_mug"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_pick_red_mug-s0002-06f82d14b727", "rank_within_group": 1, "record_id": "rec-9eea96f5bca72ada9c8e867f", "regret": 0.0, "reward_progress": 1.0, "row_index": 8, "shard_path": "shards/shard_000000.jsonl", "state_hash": "06f82d14b727818f93a3b1ffce87156966da7fd1c89745405d5d2d6963faef7a", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_pick_red_mug-s0002-06f82d14b727", "rank_within_group": 2, "record_id": "rec-b8557672e91d845b30611e41", "regret": 0.0, "reward_progress": 1.0, "row_index": 9, "shard_path": "shards/shard_000000.jsonl", "state_hash": "06f82d14b727818f93a3b1ffce87156966da7fd1c89745405d5d2d6963faef7a", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_pick_red_mug-s0002-06f82d14b727", "rank_within_group": 3, "record_id": "rec-c15228099eafc5f8717c4cd1", "regret": 0.0, "reward_progress": 1.0, "row_index": 10, "shard_path": "shards/shard_000000.jsonl", "state_hash": "06f82d14b727818f93a3b1ffce87156966da7fd1c89745405d5d2d6963faef7a", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "random_negative", "failure_type": "success", "group_id": "toy_pick_red_mug-s0002-06f82d14b727", "rank_within_group": 0, "record_id": "rec-2468690113ecdaafe142070c", "regret": 0.0, "reward_progress": 1.0, "row_index": 11, "shard_path": "shards/shard_000000.jsonl", "state_hash": "06f82d14b727818f93a3b1ffce87156966da7fd1c89745405d5d2d6963faef7a", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_pick_red_mug-s0003-c8436f335506", "rank_within_group": 0, "record_id": "rec-0a914a6fe4a0f0cc55a5d77e", "regret": 0.0, "reward_progress": 1.0, "row_index": 12, "shard_path": "shards/shard_000000.jsonl", "state_hash": "c8436f335506abf030900fcba5c30460a1af34103dfeeb68438763b088683e19", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_pick_red_mug-s0003-c8436f335506", "rank_within_group": 2, "record_id": "rec-b35cc541d997c6ddb55a9300", "regret": 0.0, "reward_progress": 1.0, "row_index": 13, "shard_path": "shards/shard_000000.jsonl", "state_hash": "c8436f335506abf030900fcba5c30460a1af34103dfeeb68438763b088683e19", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "noop", "failure_type": "no_motion", "group_id": "toy_pick_red_mug-s0003-c8436f335506", "rank_within_group": 3, "record_id": "rec-c6f4caeab9f4e96d1b3fd3a7", "regret": 2.0, "reward_progress": 0.0, "row_index": 14, "shard_path": "shards/shard_000000.jsonl", "state_hash": "c8436f335506abf030900fcba5c30460a1af34103dfeeb68438763b088683e19", "success": false, "task_id": "toy_pick_red_mug"} +{"candidate_type": "random_negative", "failure_type": "success", "group_id": "toy_pick_red_mug-s0003-c8436f335506", "rank_within_group": 1, "record_id": "rec-9e1e2d36ef89f8ecc24cf124", "regret": 0.0, "reward_progress": 1.0, "row_index": 15, "shard_path": "shards/shard_000000.jsonl", "state_hash": "c8436f335506abf030900fcba5c30460a1af34103dfeeb68438763b088683e19", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0000-27c5c6f7fcc9", "rank_within_group": 2, "record_id": "rec-2d553e1113091b7e2dda8cc0", "regret": 0.0, "reward_progress": 1.0, "row_index": 16, "shard_path": "shards/shard_000000.jsonl", "state_hash": "27c5c6f7fcc9f641c306027bc75665408bfecdce16f2a22d01b880f98bd09487", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "wrong_target", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0000-27c5c6f7fcc9", "rank_within_group": 1, "record_id": "rec-1977206f5f085e871cb7bdb8", "regret": 0.0, "reward_progress": 1.0, "row_index": 17, "shard_path": "shards/shard_000000.jsonl", "state_hash": "27c5c6f7fcc9f641c306027bc75665408bfecdce16f2a22d01b880f98bd09487", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0000-27c5c6f7fcc9", "rank_within_group": 0, "record_id": "rec-0f0d0bd369b1c0d8faab3754", "regret": 0.0, "reward_progress": 1.0, "row_index": 18, "shard_path": "shards/shard_000000.jsonl", "state_hash": "27c5c6f7fcc9f641c306027bc75665408bfecdce16f2a22d01b880f98bd09487", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "wrong_relation", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0000-27c5c6f7fcc9", "rank_within_group": 3, "record_id": "rec-8ec61d6ce865df225f30aaa0", "regret": 0.0, "reward_progress": 1.0, "row_index": 19, "shard_path": "shards/shard_000000.jsonl", "state_hash": "27c5c6f7fcc9f641c306027bc75665408bfecdce16f2a22d01b880f98bd09487", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0001-08f771b15b3d", "rank_within_group": 1, "record_id": "rec-bed42f016fc41ca97d7ffaa0", "regret": 0.0, "reward_progress": 1.0, "row_index": 20, "shard_path": "shards/shard_000000.jsonl", "state_hash": "08f771b15b3dc1a31dbd6462d4a8d5695537691c82689b24e06531eae1e98b10", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "wrong_target", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0001-08f771b15b3d", "rank_within_group": 2, "record_id": "rec-ca049bb5d88ad770a8aa1aaf", "regret": 0.0, "reward_progress": 1.0, "row_index": 21, "shard_path": "shards/shard_000000.jsonl", "state_hash": "08f771b15b3dc1a31dbd6462d4a8d5695537691c82689b24e06531eae1e98b10", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0001-08f771b15b3d", "rank_within_group": 0, "record_id": "rec-200ea59b16ebe8f4f7b3033f", "regret": 0.0, "reward_progress": 1.0, "row_index": 22, "shard_path": "shards/shard_000000.jsonl", "state_hash": "08f771b15b3dc1a31dbd6462d4a8d5695537691c82689b24e06531eae1e98b10", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "noop", "failure_type": "no_motion", "group_id": "toy_put_red_mug_in_blue_bowl-s0001-08f771b15b3d", "rank_within_group": 3, "record_id": "rec-81e9e7dfe565a96fc17e1f31", "regret": 2.0, "reward_progress": 0.0, "row_index": 23, "shard_path": "shards/shard_000000.jsonl", "state_hash": "08f771b15b3dc1a31dbd6462d4a8d5695537691c82689b24e06531eae1e98b10", "success": false, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0002-53bbb3e0b31f", "rank_within_group": 0, "record_id": "rec-0cf2b2b7c17c6b02bbb4d0df", "regret": 0.0, "reward_progress": 1.0, "row_index": 24, "shard_path": "shards/shard_000000.jsonl", "state_hash": "53bbb3e0b31fec001805100a21fb3f6d20e5dae706f0d7aa39ee93fa79ea9d4b", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "wrong_target", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0002-53bbb3e0b31f", "rank_within_group": 2, "record_id": "rec-4dc92c05bfb5976e1095c2f6", "regret": 0.0, "reward_progress": 1.0, "row_index": 25, "shard_path": "shards/shard_000000.jsonl", "state_hash": "53bbb3e0b31fec001805100a21fb3f6d20e5dae706f0d7aa39ee93fa79ea9d4b", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0002-53bbb3e0b31f", "rank_within_group": 1, "record_id": "rec-35b7c765d704803e37df434e", "regret": 0.0, "reward_progress": 1.0, "row_index": 26, "shard_path": "shards/shard_000000.jsonl", "state_hash": "53bbb3e0b31fec001805100a21fb3f6d20e5dae706f0d7aa39ee93fa79ea9d4b", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "delayed", "failure_type": "no_motion", "group_id": "toy_put_red_mug_in_blue_bowl-s0002-53bbb3e0b31f", "rank_within_group": 3, "record_id": "rec-6e1bc0e2c2724243bfc43aca", "regret": 2.0, "reward_progress": 0.0, "row_index": 27, "shard_path": "shards/shard_000000.jsonl", "state_hash": "53bbb3e0b31fec001805100a21fb3f6d20e5dae706f0d7aa39ee93fa79ea9d4b", "success": false, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0003-ea81e044cc91", "rank_within_group": 2, "record_id": "rec-d5a84dd3069a5b640b8e22a0", "regret": 0.0, "reward_progress": 1.0, "row_index": 28, "shard_path": "shards/shard_000000.jsonl", "state_hash": "ea81e044cc912635ca9d64f6537e11c6f748e657a79366e15093d58a445e825a", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "wrong_target", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0003-ea81e044cc91", "rank_within_group": 1, "record_id": "rec-ad28ff23b904e641fa5f46e2", "regret": 0.0, "reward_progress": 1.0, "row_index": 29, "shard_path": "shards/shard_000000.jsonl", "state_hash": "ea81e044cc912635ca9d64f6537e11c6f748e657a79366e15093d58a445e825a", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0003-ea81e044cc91", "rank_within_group": 0, "record_id": "rec-2459025770be61bf4078653e", "regret": 0.0, "reward_progress": 1.0, "row_index": 30, "shard_path": "shards/shard_000000.jsonl", "state_hash": "ea81e044cc912635ca9d64f6537e11c6f748e657a79366e15093d58a445e825a", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "delayed", "failure_type": "no_motion", "group_id": "toy_put_red_mug_in_blue_bowl-s0003-ea81e044cc91", "rank_within_group": 3, "record_id": "rec-d4560f94bf1423b4fe5c9cc0", "regret": 2.0, "reward_progress": 0.0, "row_index": 31, "shard_path": "shards/shard_000000.jsonl", "state_hash": "ea81e044cc912635ca9d64f6537e11c6f748e657a79366e15093d58a445e825a", "success": false, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0000-c3c9be1f03a9", "rank_within_group": 1, "record_id": "rec-2f2472ca239a50aae7cb08c1", "regret": 0.0, "reward_progress": 1.0, "row_index": 0, "shard_path": "shards/shard_000001.jsonl", "state_hash": "c3c9be1f03a96485fe6769089a7789ac6ade3c4d8346e8cd658288648788405a", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "wrong_target", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0000-c3c9be1f03a9", "rank_within_group": 0, "record_id": "rec-1d215a54a47965ed011eeb8f", "regret": 0.0, "reward_progress": 1.0, "row_index": 1, "shard_path": "shards/shard_000001.jsonl", "state_hash": "c3c9be1f03a96485fe6769089a7789ac6ade3c4d8346e8cd658288648788405a", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0000-c3c9be1f03a9", "rank_within_group": 3, "record_id": "rec-8ed65de6fc87f2b560ca2482", "regret": 0.0, "reward_progress": 1.0, "row_index": 2, "shard_path": "shards/shard_000001.jsonl", "state_hash": "c3c9be1f03a96485fe6769089a7789ac6ade3c4d8346e8cd658288648788405a", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0000-c3c9be1f03a9", "rank_within_group": 2, "record_id": "rec-77e56e88c5e1debd5a6e9025", "regret": 0.0, "reward_progress": 1.0, "row_index": 3, "shard_path": "shards/shard_000001.jsonl", "state_hash": "c3c9be1f03a96485fe6769089a7789ac6ade3c4d8346e8cd658288648788405a", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0001-0c030436495a", "rank_within_group": 2, "record_id": "rec-966e67aec9ec7e5909a3150f", "regret": 0.0, "reward_progress": 1.0, "row_index": 4, "shard_path": "shards/shard_000001.jsonl", "state_hash": "0c030436495aceda58392bfa58f785e409127cc5834bfe62db1d29dd2760619a", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "wrong_target", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0001-0c030436495a", "rank_within_group": 3, "record_id": "rec-9817348388947a28a5081a32", "regret": 0.0, "reward_progress": 1.0, "row_index": 5, "shard_path": "shards/shard_000001.jsonl", "state_hash": "0c030436495aceda58392bfa58f785e409127cc5834bfe62db1d29dd2760619a", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0001-0c030436495a", "rank_within_group": 0, "record_id": "rec-23d330c81ec3dc1ce096212a", "regret": 0.0, "reward_progress": 1.0, "row_index": 6, "shard_path": "shards/shard_000001.jsonl", "state_hash": "0c030436495aceda58392bfa58f785e409127cc5834bfe62db1d29dd2760619a", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0001-0c030436495a", "rank_within_group": 1, "record_id": "rec-84bbf672956447f527c7744e", "regret": 0.0, "reward_progress": 1.0, "row_index": 7, "shard_path": "shards/shard_000001.jsonl", "state_hash": "0c030436495aceda58392bfa58f785e409127cc5834bfe62db1d29dd2760619a", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0002-11c665a5eda3", "rank_within_group": 1, "record_id": "rec-621ec9a357c50a129ad8a9f4", "regret": 0.0, "reward_progress": 1.0, "row_index": 8, "shard_path": "shards/shard_000001.jsonl", "state_hash": "11c665a5eda32c8f18c98450e578f04c7bb6f4e89bf533d40a930c189544e916", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "wrong_target", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0002-11c665a5eda3", "rank_within_group": 2, "record_id": "rec-6eebd4d8930e14931ed6197c", "regret": 0.0, "reward_progress": 1.0, "row_index": 9, "shard_path": "shards/shard_000001.jsonl", "state_hash": "11c665a5eda32c8f18c98450e578f04c7bb6f4e89bf533d40a930c189544e916", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0002-11c665a5eda3", "rank_within_group": 0, "record_id": "rec-1a045842507c8e29c1e62673", "regret": 0.0, "reward_progress": 1.0, "row_index": 10, "shard_path": "shards/shard_000001.jsonl", "state_hash": "11c665a5eda32c8f18c98450e578f04c7bb6f4e89bf533d40a930c189544e916", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "delayed", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0002-11c665a5eda3", "rank_within_group": 3, "record_id": "rec-75f3c355b20290baecea329e", "regret": 0.0, "reward_progress": 1.0, "row_index": 11, "shard_path": "shards/shard_000001.jsonl", "state_hash": "11c665a5eda32c8f18c98450e578f04c7bb6f4e89bf533d40a930c189544e916", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0003-c8edc6dcf524", "rank_within_group": 3, "record_id": "rec-b77f352775370c10ed4fe85c", "regret": 0.0, "reward_progress": 1.0, "row_index": 12, "shard_path": "shards/shard_000001.jsonl", "state_hash": "c8edc6dcf52463a131a2904fe46d908dd3dd7fb45f13386a4970df58a804732f", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "wrong_target", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0003-c8edc6dcf524", "rank_within_group": 2, "record_id": "rec-b421a2c10d51afdbf2f0a550", "regret": 0.0, "reward_progress": 1.0, "row_index": 13, "shard_path": "shards/shard_000001.jsonl", "state_hash": "c8edc6dcf52463a131a2904fe46d908dd3dd7fb45f13386a4970df58a804732f", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0003-c8edc6dcf524", "rank_within_group": 1, "record_id": "rec-89bb606fb10a16368c1d2338", "regret": 0.0, "reward_progress": 1.0, "row_index": 14, "shard_path": "shards/shard_000001.jsonl", "state_hash": "c8edc6dcf52463a131a2904fe46d908dd3dd7fb45f13386a4970df58a804732f", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "random_negative", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0003-c8edc6dcf524", "rank_within_group": 0, "record_id": "rec-3114a704be5504c05fe334d0", "regret": 0.0, "reward_progress": 1.0, "row_index": 15, "shard_path": "shards/shard_000001.jsonl", "state_hash": "c8edc6dcf52463a131a2904fe46d908dd3dd7fb45f13386a4970df58a804732f", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} diff --git a/outputs/smoke_full/cil_toy/shards/shard_000000.jsonl b/outputs/smoke_full/cil_toy/shards/shard_000000.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..fabaabbec04b80300c1cc3daf3083189d9f6211b --- /dev/null +++ b/outputs/smoke_full/cil_toy/shards/shard_000000.jsonl @@ -0,0 +1,32 @@ +{"action_chunk": {"action_id": "expert-0", "horizon": 2, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0000-586344cdc593", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 3269563184, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0000-586344cdc593.pkl", "state_index": 0, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-dc18ebd63ea374a0e6c75030", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0000", "state_hash": "586344cdc593a334619162a1539bcbdd2c6cea08d3b7b6217385f6425e2e39c1", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.15]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-3269563184", "horizon": 3, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": "expert-grasp-red_mug", "perturbation": {"dx": -0.08, "dy": -0.1, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "move_to", "position": [-0.08, -0.1, 0.0]}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0000-586344cdc593", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 3269563184, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0000-586344cdc593.pkl", "state_index": 0, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.08, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.08, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.08, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.08, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-3d0eea162bc56a2245af71dd", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0000", "state_hash": "586344cdc593a334619162a1539bcbdd2c6cea08d3b7b6217385f6425e2e39c1", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.3236, -0.0913, -0.03]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.08, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.08, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "delay-3269563184", "horizon": 2, "metadata": {"candidate_type": "delayed", "difficulty": 0.9, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "delay", "steps": 2}}, "representation": "semantic", "skill_type": "delay", "values": [{"command": "delay", "steps": 2}, {"command": "noop"}]}, "candidate_type": "delayed", "failure": {"language_explanation": "The action did not produce meaningful motion.", "metadata": {}, "symbolic_reason": "no object pose, grasp, or articulation change was observed", "type": "no_motion"}, "group_id": "toy_pick_red_mug-s0000-586344cdc593", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 3269563184, "local_symbolic_explanation": "The action did not produce meaningful motion.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0000-586344cdc593.pkl", "state_index": 0, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-d93d5aee82fa00fdce043810", "regret": 2.0, "reward": {"dense_components": {"relation_partial": 0.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 0.0}, "progress": 0.0, "success": false, "terminal_success": false}, "scene_id": "toy_pick_red_mug-scene-0000", "state_hash": "586344cdc593a334619162a1539bcbdd2c6cea08d3b7b6217385f6425e2e39c1", "structured_effect": {"articulation_delta": {}, "contact_events": [{"steps": 2, "type": "delay"}, {"type": "noop"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"steps": 2, "type": "delay"}, {"type": "noop"}], "explanation": "Task predicates were not satisfied.", "failure_type": "task_not_satisfied", "success": false}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": false, "success": false}}, "moved_objects": [], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.0]}, "relation_after": {"grasped(red_mug)": false, "success": false}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "random-neg-0-3269563184", "horizon": 2, "metadata": {"candidate_type": "random_negative", "difficulty": 0.8, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "random_negative"}}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}]}, "candidate_type": "random_negative", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0000-586344cdc593", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 3269563184, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0000-586344cdc593.pkl", "state_index": 0, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-88743cf092ac7e529f708d57", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0000", "state_hash": "586344cdc593a334619162a1539bcbdd2c6cea08d3b7b6217385f6425e2e39c1", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.15]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "expert-0", "horizon": 2, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0001-6f757ba8aaf5", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 1101978868, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0001-6f757ba8aaf5.pkl", "state_index": 1, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.4197, 0.0115, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4197, 0.0115, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-9c35c0e2b0d8f0177deca3f4", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0001", "state_hash": "6f757ba8aaf57930de9f9359f70de48518191d11e955a896e47626cb726f29d4", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.15]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4197, 0.0115, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-1101978868", "horizon": 3, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": "expert-grasp-red_mug", "perturbation": {"dx": 0.12, "dy": -0.1, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "move_to", "position": [0.12, -0.1, 0.0]}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0001-6f757ba8aaf5", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 1101978868, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0001-6f757ba8aaf5.pkl", "state_index": 1, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [0.12, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.12, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [0.12, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.12, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-efa3f478ee63ffeb9e0d5433", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0001", "state_hash": "6f757ba8aaf57930de9f9359f70de48518191d11e955a896e47626cb726f29d4", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.5397000000000001, -0.1115, -0.03]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [0.12, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.12, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "random-neg-0-1101978868", "horizon": 2, "metadata": {"candidate_type": "random_negative", "difficulty": 0.8, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "random_negative"}}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}]}, "candidate_type": "random_negative", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0001-6f757ba8aaf5", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 1101978868, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0001-6f757ba8aaf5.pkl", "state_index": 1, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.4197, 0.0115, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4197, 0.0115, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-201f911e1605197264d9e111", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0001", "state_hash": "6f757ba8aaf57930de9f9359f70de48518191d11e955a896e47626cb726f29d4", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.15]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4197, 0.0115, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "noop-1101978868", "horizon": 1, "metadata": {"candidate_type": "noop", "difficulty": 0.95, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "no_op"}}, "representation": "semantic", "skill_type": "noop", "values": [{"command": "noop"}]}, "candidate_type": "noop", "failure": {"language_explanation": "The action did not produce meaningful motion.", "metadata": {}, "symbolic_reason": "no object pose, grasp, or articulation change was observed", "type": "no_motion"}, "group_id": "toy_pick_red_mug-s0001-6f757ba8aaf5", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 1101978868, "local_symbolic_explanation": "The action did not produce meaningful motion.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0001-6f757ba8aaf5.pkl", "state_index": 1, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-abafd5d382c564beba859670", "regret": 2.0, "reward": {"dense_components": {"relation_partial": 0.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 0.0}, "progress": 0.0, "success": false, "terminal_success": false}, "scene_id": "toy_pick_red_mug-scene-0001", "state_hash": "6f757ba8aaf57930de9f9359f70de48518191d11e955a896e47626cb726f29d4", "structured_effect": {"articulation_delta": {}, "contact_events": [{"type": "noop"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"type": "noop"}], "explanation": "Task predicates were not satisfied.", "failure_type": "task_not_satisfied", "success": false}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": false, "success": false}}, "moved_objects": [], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.0]}, "relation_after": {"grasped(red_mug)": false, "success": false}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "expert-0", "horizon": 2, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0002-06f82d14b727", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 2519304748, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0002-06f82d14b727.pkl", "state_index": 2, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.3863, 0.0218, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.3863, 0.0218, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0002", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.3863, 0.0218, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.3863, 0.0218, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0002", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.3863, 0.0218, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0002", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.3863, 0.0218, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0002", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-9eea96f5bca72ada9c8e867f", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0002", "state_hash": "06f82d14b727818f93a3b1ffce87156966da7fd1c89745405d5d2d6963faef7a", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.15]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.3863, 0.0218, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.3863, 0.0218, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0002", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.3863, 0.0218, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0002", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-2519304748", "horizon": 3, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": "expert-grasp-red_mug", "perturbation": {"dx": 0.08, "dy": -0.04, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "move_to", "position": [0.08, -0.04, 0.0]}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0002-06f82d14b727", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 2519304748, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0002-06f82d14b727.pkl", "state_index": 2, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [0.08, -0.04, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.08, -0.04, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0002", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [0.08, -0.04, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.08, -0.04, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0002", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.3863, 0.0218, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0002", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.3863, 0.0218, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0002", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-b8557672e91d845b30611e41", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0002", "state_hash": "06f82d14b727818f93a3b1ffce87156966da7fd1c89745405d5d2d6963faef7a", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.4663, -0.0618, -0.03]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [0.08, -0.04, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.08, -0.04, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0002", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.3863, 0.0218, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0002", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-1-2519304748", "horizon": 2, "metadata": {"candidate_type": "near_miss", "difficulty": 0.39999999999999997, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": "expert-grasp-red_mug", "perturbation": {"dx": 0.04, "dy": -0.02, "kind": "release_offset"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0002-06f82d14b727", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 2519304748, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0002-06f82d14b727.pkl", "state_index": 2, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.3863, 0.0218, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.3863, 0.0218, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0002", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.3863, 0.0218, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.3863, 0.0218, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0002", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.3863, 0.0218, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0002", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.3863, 0.0218, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0002", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-c15228099eafc5f8717c4cd1", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0002", "state_hash": "06f82d14b727818f93a3b1ffce87156966da7fd1c89745405d5d2d6963faef7a", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.15]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.3863, 0.0218, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.3863, 0.0218, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0002", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.3863, 0.0218, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0002", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "random-neg-0-2519304748", "horizon": 2, "metadata": {"candidate_type": "random_negative", "difficulty": 0.8, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "random_negative"}}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}]}, "candidate_type": "random_negative", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0002-06f82d14b727", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 2519304748, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0002-06f82d14b727.pkl", "state_index": 2, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.3863, 0.0218, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.3863, 0.0218, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0002", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.3863, 0.0218, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.3863, 0.0218, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0002", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.3863, 0.0218, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0002", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.3863, 0.0218, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0002", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-2468690113ecdaafe142070c", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0002", "state_hash": "06f82d14b727818f93a3b1ffce87156966da7fd1c89745405d5d2d6963faef7a", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.15]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.3863, 0.0218, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.3863, 0.0218, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0002", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.3863, 0.0218, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0002", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "expert-0", "horizon": 2, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0003-c8436f335506", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 240421787, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0003-c8436f335506.pkl", "state_index": 3, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4018, 0.018, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.4018, 0.018, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0003", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4018, 0.018, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4018, 0.018, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0003", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4018, 0.018, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0003", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4018, 0.018, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0003", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-0a914a6fe4a0f0cc55a5d77e", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0003", "state_hash": "c8436f335506abf030900fcba5c30460a1af34103dfeeb68438763b088683e19", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.15]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4018, 0.018, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4018, 0.018, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0003", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4018, 0.018, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0003", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-240421787", "horizon": 3, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": "expert-grasp-red_mug", "perturbation": {"dx": 0.12, "dy": -0.1, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "move_to", "position": [0.12, -0.1, 0.0]}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0003-c8436f335506", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 240421787, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0003-c8436f335506.pkl", "state_index": 3, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [0.12, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.12, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0003", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [0.12, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.12, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0003", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4018, 0.018, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0003", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4018, 0.018, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0003", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-b35cc541d997c6ddb55a9300", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0003", "state_hash": "c8436f335506abf030900fcba5c30460a1af34103dfeeb68438763b088683e19", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.5218, -0.11800000000000001, -0.03]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [0.12, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.12, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0003", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4018, 0.018, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0003", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "noop-240421787", "horizon": 1, "metadata": {"candidate_type": "noop", "difficulty": 0.95, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "no_op"}}, "representation": "semantic", "skill_type": "noop", "values": [{"command": "noop"}]}, "candidate_type": "noop", "failure": {"language_explanation": "The action did not produce meaningful motion.", "metadata": {}, "symbolic_reason": "no object pose, grasp, or articulation change was observed", "type": "no_motion"}, "group_id": "toy_pick_red_mug-s0003-c8436f335506", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 240421787, "local_symbolic_explanation": "The action did not produce meaningful motion.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0003-c8436f335506.pkl", "state_index": 3, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4018, 0.018, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0003", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4018, 0.018, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0003", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4018, 0.018, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0003", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4018, 0.018, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0003", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-c6f4caeab9f4e96d1b3fd3a7", "regret": 2.0, "reward": {"dense_components": {"relation_partial": 0.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 0.0}, "progress": 0.0, "success": false, "terminal_success": false}, "scene_id": "toy_pick_red_mug-scene-0003", "state_hash": "c8436f335506abf030900fcba5c30460a1af34103dfeeb68438763b088683e19", "structured_effect": {"articulation_delta": {}, "contact_events": [{"type": "noop"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"type": "noop"}], "explanation": "Task predicates were not satisfied.", "failure_type": "task_not_satisfied", "success": false}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": false, "success": false}}, "moved_objects": [], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.0]}, "relation_after": {"grasped(red_mug)": false, "success": false}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4018, 0.018, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0003", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4018, 0.018, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0003", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "random-neg-0-240421787", "horizon": 2, "metadata": {"candidate_type": "random_negative", "difficulty": 0.8, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "random_negative"}}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}]}, "candidate_type": "random_negative", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0003-c8436f335506", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 240421787, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0003-c8436f335506.pkl", "state_index": 3, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4018, 0.018, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.4018, 0.018, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0003", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4018, 0.018, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4018, 0.018, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0003", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4018, 0.018, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0003", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4018, 0.018, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0003", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-9e1e2d36ef89f8ecc24cf124", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0003", "state_hash": "c8436f335506abf030900fcba5c30460a1af34103dfeeb68438763b088683e19", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.15]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4018, 0.018, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4018, 0.018, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0003", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4018, 0.018, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0003", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "expert-0", "horizon": 3, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "inside", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.128, 0.0528, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0000-27c5c6f7fcc9", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 3813448054, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0000-27c5c6f7fcc9.pkl", "state_index": 0, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.128, 0.0528, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.128, 0.0528, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.128, 0.0528, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.128, 0.0528, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-2d553e1113091b7e2dda8cc0", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.8699312987941002}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "state_hash": "27c5c6f7fcc9f641c306027bc75665408bfecdce16f2a22d01b880f98bd09487", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.3016, 0.0601, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.128, 0.0528, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.128, 0.0528, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "wrong-target-blue_bowl-0-3813448054", "horizon": 3, "metadata": {"candidate_type": "wrong_target", "difficulty": 0.6, "intended_relation": "inside", "intended_target": "blue_bowl", "parent_action_id": "expert-place-red_mug-inside-blue_bowl", "perturbation": {"kind": "target_swap"}, "planner": "toy_symbolic", "target_replacement": "blue_bowl"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "blue_bowl"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.128, 0.0528, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "wrong_target", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0000-27c5c6f7fcc9", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 3813448054, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0000-27c5c6f7fcc9.pkl", "state_index": 0, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.128, 0.0528, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.128, 0.0528, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.128, 0.0528, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.128, 0.0528, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-1977206f5f085e871cb7bdb8", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.8699312987941002}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "state_hash": "27c5c6f7fcc9f641c306027bc75665408bfecdce16f2a22d01b880f98bd09487", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "blue_bowl", "type": "proximity"}, {"distance": 0.3421616138610525, "object": "red_mug", "type": "failed_grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": false, "metadata": {"info": {"contacts": [{"object": "blue_bowl", "type": "proximity"}, {"distance": 0.3421616138610525, "object": "red_mug", "type": "failed_grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.3016, 0.0601, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.128, 0.0528, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.128, 0.0528, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-3813448054", "horizon": 3, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "inside", "intended_target": "red_mug", "parent_action_id": "expert-place-red_mug-inside-blue_bowl", "perturbation": {"dx": -0.12, "dy": -0.04, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.248, 0.012799999999999999, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0000-27c5c6f7fcc9", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 3813448054, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0000-27c5c6f7fcc9.pkl", "state_index": 0, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.248, 0.012799999999999999, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.248, 0.012799999999999999, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.248, 0.012799999999999999, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.248, 0.012799999999999999, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-0f0d0bd369b1c0d8faab3754", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.5686109211311835}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "state_hash": "27c5c6f7fcc9f641c306027bc75665408bfecdce16f2a22d01b880f98bd09487", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.18159999999999998, 0.0201, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.248, 0.012799999999999999, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.248, 0.012799999999999999, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "wrong-relation-red_mug-next_to-3813448054", "horizon": 3, "metadata": {"candidate_type": "wrong_relation", "difficulty": 0.55, "intended_relation": "next_to", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"from": "inside", "kind": "relation_swap", "to": "next_to"}}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "object": "red_mug", "position": [-0.048, 0.0528, 0.06], "reference": "blue_bowl", "relation": "next_to"}]}, "candidate_type": "wrong_relation", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0000-27c5c6f7fcc9", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 3813448054, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0000-27c5c6f7fcc9.pkl", "state_index": 0, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.048, 0.0528, 0.06], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.048, 0.0528, 0.21], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.048, 0.0528, 0.06], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.048, 0.0528, 0.21], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-8ec61d6ce865df225f30aaa0", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.7221731324370514}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "state_hash": "27c5c6f7fcc9f641c306027bc75665408bfecdce16f2a22d01b880f98bd09487", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "next_to", "type": "place"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "next_to", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.3816, 0.0601, 0.03]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.048, 0.0528, 0.06], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.048, 0.0528, 0.21], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "expert-0", "horizon": 3, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "inside", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.168, 0.0095, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0001-08f771b15b3d", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 1965660509, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0001-08f771b15b3d.pkl", "state_index": 1, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.168, 0.0095, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.168, 0.0095, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.168, 0.0095, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.168, 0.0095, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-bed42f016fc41ca97d7ffaa0", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.839960215566157}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "state_hash": "08f771b15b3dc1a31dbd6462d4a8d5695537691c82689b24e06531eae1e98b10", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.2498, 0.0083, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.168, 0.0095, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.168, 0.0095, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "wrong-target-blue_bowl-0-1965660509", "horizon": 3, "metadata": {"candidate_type": "wrong_target", "difficulty": 0.6, "intended_relation": "inside", "intended_target": "blue_bowl", "parent_action_id": "expert-place-red_mug-inside-blue_bowl", "perturbation": {"kind": "target_swap"}, "planner": "toy_symbolic", "target_replacement": "blue_bowl"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "blue_bowl"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.168, 0.0095, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "wrong_target", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0001-08f771b15b3d", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 1965660509, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0001-08f771b15b3d.pkl", "state_index": 1, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.168, 0.0095, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.168, 0.0095, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.168, 0.0095, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.168, 0.0095, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-ca049bb5d88ad770a8aa1aaf", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.839960215566157}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "state_hash": "08f771b15b3dc1a31dbd6462d4a8d5695537691c82689b24e06531eae1e98b10", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "blue_bowl", "type": "proximity"}, {"distance": 0.29149430526169806, "object": "red_mug", "type": "failed_grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": false, "metadata": {"info": {"contacts": [{"object": "blue_bowl", "type": "proximity"}, {"distance": 0.29149430526169806, "object": "red_mug", "type": "failed_grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.2498, 0.0083, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.168, 0.0095, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.168, 0.0095, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-1965660509", "horizon": 3, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "inside", "intended_target": "red_mug", "parent_action_id": "expert-place-red_mug-inside-blue_bowl", "perturbation": {"dx": 0.08, "dy": -0.1, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.08800000000000001, -0.09050000000000001, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0001-08f771b15b3d", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 1965660509, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0001-08f771b15b3d.pkl", "state_index": 1, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.08800000000000001, -0.09050000000000001, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.08800000000000001, -0.09050000000000001, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.08800000000000001, -0.09050000000000001, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.08800000000000001, -0.09050000000000001, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-200ea59b16ebe8f4f7b3033f", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.46321024435227165}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "state_hash": "08f771b15b3dc1a31dbd6462d4a8d5695537691c82689b24e06531eae1e98b10", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.3298, -0.09170000000000002, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.08800000000000001, -0.09050000000000001, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.08800000000000001, -0.09050000000000001, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "noop-1965660509", "horizon": 1, "metadata": {"candidate_type": "noop", "difficulty": 0.95, "intended_relation": "inside", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "no_op"}}, "representation": "semantic", "skill_type": "noop", "values": [{"command": "noop"}]}, "candidate_type": "noop", "failure": {"language_explanation": "The action did not produce meaningful motion.", "metadata": {}, "symbolic_reason": "no object pose, grasp, or articulation change was observed", "type": "no_motion"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0001-08f771b15b3d", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 1965660509, "local_symbolic_explanation": "The action did not produce meaningful motion.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0001-08f771b15b3d.pkl", "state_index": 1, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-81e9e7dfe565a96fc17e1f31", "regret": 2.0, "reward": {"dense_components": {"relation_partial": 0.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 0.0, "target_moved_closer": 0.0}, "progress": 0.0, "success": false, "terminal_success": false}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "state_hash": "08f771b15b3dc1a31dbd6462d4a8d5695537691c82689b24e06531eae1e98b10", "structured_effect": {"articulation_delta": {}, "contact_events": [{"type": "noop"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"type": "noop"}], "explanation": "Task predicates were not satisfied.", "failure_type": "task_not_satisfied", "success": false}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": false, "success": false}}, "moved_objects": [], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.0, 0.0, 0.0]}, "relation_after": {"inside(red_mug,blue_bowl)": false, "success": false}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "expert-0", "horizon": 3, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "inside", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.1509, 0.0349, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0002-53bbb3e0b31f", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 1190785686, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0002-53bbb3e0b31f.pkl", "state_index": 2, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1509, 0.0349, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.1509, 0.0349, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.1509, 0.0349, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0002", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1509, 0.0349, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.1509, 0.0349, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.1509, 0.0349, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0002", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1509, 0.0349, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.427, 0.0449, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0002", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1509, 0.0349, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.427, 0.0449, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0002", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-0cf2b2b7c17c6b02bbb4d0df", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.8552198847858642}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0002", "state_hash": "53bbb3e0b31fec001805100a21fb3f6d20e5dae706f0d7aa39ee93fa79ea9d4b", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.2761, -0.010000000000000002, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1509, 0.0349, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.1509, 0.0349, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.1509, 0.0349, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0002", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1509, 0.0349, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.427, 0.0449, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0002", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "wrong-target-blue_bowl-0-1190785686", "horizon": 3, "metadata": {"candidate_type": "wrong_target", "difficulty": 0.6, "intended_relation": "inside", "intended_target": "blue_bowl", "parent_action_id": "expert-place-red_mug-inside-blue_bowl", "perturbation": {"kind": "target_swap"}, "planner": "toy_symbolic", "target_replacement": "blue_bowl"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "blue_bowl"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.1509, 0.0349, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "wrong_target", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0002-53bbb3e0b31f", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 1190785686, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0002-53bbb3e0b31f.pkl", "state_index": 2, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1509, 0.0349, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.1509, 0.0349, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.1509, 0.0349, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0002", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1509, 0.0349, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.1509, 0.0349, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.1509, 0.0349, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0002", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1509, 0.0349, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.427, 0.0449, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0002", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1509, 0.0349, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.427, 0.0449, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0002", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-4dc92c05bfb5976e1095c2f6", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.8552198847858642}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0002", "state_hash": "53bbb3e0b31fec001805100a21fb3f6d20e5dae706f0d7aa39ee93fa79ea9d4b", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "blue_bowl", "type": "proximity"}, {"distance": 0.31437431510859787, "object": "red_mug", "type": "failed_grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": false, "metadata": {"info": {"contacts": [{"object": "blue_bowl", "type": "proximity"}, {"distance": 0.31437431510859787, "object": "red_mug", "type": "failed_grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.2761, -0.010000000000000002, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1509, 0.0349, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.1509, 0.0349, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.1509, 0.0349, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0002", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1509, 0.0349, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.427, 0.0449, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0002", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-1190785686", "horizon": 3, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "inside", "intended_target": "red_mug", "parent_action_id": "expert-place-red_mug-inside-blue_bowl", "perturbation": {"dx": 0.12, "dy": -0.04, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.03090000000000001, -0.0051, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0002-53bbb3e0b31f", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 1190785686, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0002-53bbb3e0b31f.pkl", "state_index": 2, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1509, 0.0349, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.03090000000000001, -0.0051, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.03090000000000001, -0.0051, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0002", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1509, 0.0349, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.03090000000000001, -0.0051, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.03090000000000001, -0.0051, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0002", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1509, 0.0349, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.427, 0.0449, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0002", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1509, 0.0349, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.427, 0.0449, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0002", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-35b7c765d704803e37df434e", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.5198186807302864}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0002", "state_hash": "53bbb3e0b31fec001805100a21fb3f6d20e5dae706f0d7aa39ee93fa79ea9d4b", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.3961, -0.05, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1509, 0.0349, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.03090000000000001, -0.0051, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.03090000000000001, -0.0051, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0002", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1509, 0.0349, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.427, 0.0449, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0002", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "delay-1190785686", "horizon": 2, "metadata": {"candidate_type": "delayed", "difficulty": 0.9, "intended_relation": "inside", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "delay", "steps": 2}}, "representation": "semantic", "skill_type": "delay", "values": [{"command": "delay", "steps": 2}, {"command": "noop"}]}, "candidate_type": "delayed", "failure": {"language_explanation": "The action did not produce meaningful motion.", "metadata": {}, "symbolic_reason": "no object pose, grasp, or articulation change was observed", "type": "no_motion"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0002-53bbb3e0b31f", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 1190785686, "local_symbolic_explanation": "The action did not produce meaningful motion.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0002-53bbb3e0b31f.pkl", "state_index": 2, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1509, 0.0349, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.427, 0.0449, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0002", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1509, 0.0349, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.427, 0.0449, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0002", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1509, 0.0349, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.427, 0.0449, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0002", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1509, 0.0349, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.427, 0.0449, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0002", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-6e1bc0e2c2724243bfc43aca", "regret": 2.0, "reward": {"dense_components": {"relation_partial": 0.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 0.0, "target_moved_closer": 0.0}, "progress": 0.0, "success": false, "terminal_success": false}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0002", "state_hash": "53bbb3e0b31fec001805100a21fb3f6d20e5dae706f0d7aa39ee93fa79ea9d4b", "structured_effect": {"articulation_delta": {}, "contact_events": [{"steps": 2, "type": "delay"}, {"type": "noop"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"steps": 2, "type": "delay"}, {"type": "noop"}], "explanation": "Task predicates were not satisfied.", "failure_type": "task_not_satisfied", "success": false}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": false, "success": false}}, "moved_objects": [], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.0, 0.0, 0.0]}, "relation_after": {"inside(red_mug,blue_bowl)": false, "success": false}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1509, 0.0349, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.427, 0.0449, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0002", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1509, 0.0349, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.427, 0.0449, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0002", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "expert-0", "horizon": 3, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "inside", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.1681, 0.012, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0003-ea81e044cc91", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 2575892546, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0003-ea81e044cc91.pkl", "state_index": 3, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1681, 0.012, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.1681, 0.012, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.1681, 0.012, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0003", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1681, 0.012, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.1681, 0.012, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.1681, 0.012, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0003", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1681, 0.012, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.3869, 0.0007, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0003", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1681, 0.012, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.3869, 0.0007, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0003", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-d5a84dd3069a5b640b8e22a0", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.8174279631773136}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0003", "state_hash": "ea81e044cc912635ca9d64f6537e11c6f748e657a79366e15093d58a445e825a", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.21880000000000002, 0.011300000000000001, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1681, 0.012, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.1681, 0.012, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.1681, 0.012, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0003", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1681, 0.012, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.3869, 0.0007, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0003", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "wrong-target-blue_bowl-0-2575892546", "horizon": 3, "metadata": {"candidate_type": "wrong_target", "difficulty": 0.6, "intended_relation": "inside", "intended_target": "blue_bowl", "parent_action_id": "expert-place-red_mug-inside-blue_bowl", "perturbation": {"kind": "target_swap"}, "planner": "toy_symbolic", "target_replacement": "blue_bowl"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "blue_bowl"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.1681, 0.012, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "wrong_target", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0003-ea81e044cc91", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 2575892546, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0003-ea81e044cc91.pkl", "state_index": 3, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1681, 0.012, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.1681, 0.012, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.1681, 0.012, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0003", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1681, 0.012, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.1681, 0.012, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.1681, 0.012, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0003", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1681, 0.012, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.3869, 0.0007, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0003", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1681, 0.012, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.3869, 0.0007, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0003", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-ad28ff23b904e641fa5f46e2", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.8174279631773136}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0003", "state_hash": "ea81e044cc912635ca9d64f6537e11c6f748e657a79366e15093d58a445e825a", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "blue_bowl", "type": "proximity"}, {"distance": 0.2655204888516139, "object": "red_mug", "type": "failed_grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": false, "metadata": {"info": {"contacts": [{"object": "blue_bowl", "type": "proximity"}, {"distance": 0.2655204888516139, "object": "red_mug", "type": "failed_grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.21880000000000002, 0.011300000000000001, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1681, 0.012, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.1681, 0.012, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.1681, 0.012, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0003", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1681, 0.012, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.3869, 0.0007, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0003", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-2575892546", "horizon": 3, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "inside", "intended_target": "red_mug", "parent_action_id": "expert-place-red_mug-inside-blue_bowl", "perturbation": {"dx": 0.08, "dy": -0.04, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.0881, -0.028, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0003-ea81e044cc91", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 2575892546, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0003-ea81e044cc91.pkl", "state_index": 3, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1681, 0.012, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.0881, -0.028, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.0881, -0.028, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0003", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1681, 0.012, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.0881, -0.028, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.0881, -0.028, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0003", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1681, 0.012, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.3869, 0.0007, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0003", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1681, 0.012, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.3869, 0.0007, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0003", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-2459025770be61bf4078653e", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.5527916684837971}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0003", "state_hash": "ea81e044cc912635ca9d64f6537e11c6f748e657a79366e15093d58a445e825a", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.2988, -0.0287, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1681, 0.012, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.0881, -0.028, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.0881, -0.028, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0003", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1681, 0.012, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.3869, 0.0007, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0003", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "delay-2575892546", "horizon": 2, "metadata": {"candidate_type": "delayed", "difficulty": 0.9, "intended_relation": "inside", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "delay", "steps": 2}}, "representation": "semantic", "skill_type": "delay", "values": [{"command": "delay", "steps": 2}, {"command": "noop"}]}, "candidate_type": "delayed", "failure": {"language_explanation": "The action did not produce meaningful motion.", "metadata": {}, "symbolic_reason": "no object pose, grasp, or articulation change was observed", "type": "no_motion"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0003-ea81e044cc91", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 2575892546, "local_symbolic_explanation": "The action did not produce meaningful motion.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0003-ea81e044cc91.pkl", "state_index": 3, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1681, 0.012, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.3869, 0.0007, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0003", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1681, 0.012, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.3869, 0.0007, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0003", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1681, 0.012, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.3869, 0.0007, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0003", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1681, 0.012, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.3869, 0.0007, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0003", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-d4560f94bf1423b4fe5c9cc0", "regret": 2.0, "reward": {"dense_components": {"relation_partial": 0.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 0.0, "target_moved_closer": 0.0}, "progress": 0.0, "success": false, "terminal_success": false}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0003", "state_hash": "ea81e044cc912635ca9d64f6537e11c6f748e657a79366e15093d58a445e825a", "structured_effect": {"articulation_delta": {}, "contact_events": [{"steps": 2, "type": "delay"}, {"type": "noop"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"steps": 2, "type": "delay"}, {"type": "noop"}], "explanation": "Task predicates were not satisfied.", "failure_type": "task_not_satisfied", "success": false}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": false, "success": false}}, "moved_objects": [], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.0, 0.0, 0.0]}, "relation_after": {"inside(red_mug,blue_bowl)": false, "success": false}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1681, 0.012, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.3869, 0.0007, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0003", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.1681, 0.012, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.3869, 0.0007, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0003", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} diff --git a/outputs/smoke_full/cil_toy/shards/shard_000001.jsonl b/outputs/smoke_full/cil_toy/shards/shard_000001.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..c3f4248b1013a67812c8db6b7cb4ae45cbe27fc2 --- /dev/null +++ b/outputs/smoke_full/cil_toy/shards/shard_000001.jsonl @@ -0,0 +1,16 @@ +{"action_chunk": {"action_id": "expert-0", "horizon": 1, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "left_of", "intended_target": "green_block", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": 0.0683, "dy": 0.0285, "object": "green_block"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0000-c3c9be1f03a9", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 4089500932, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0000-c3c9be1f03a9.pkl", "state_index": 0, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.326, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.326, 0.0487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.326, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.326, 0.0487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-2f2472ca239a50aae7cb08c1", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.25873612265544277}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "state_hash": "c3c9be1f03a96485fe6769089a7789ac6ade3c4d8346e8cd658288648788405a", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": 0.0683, "dy": 0.0285, "object": "green_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": 0.0683, "dy": 0.0285, "object": "green_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["green_block"], "object_pose_delta": {"green_block": [0.06829999999999997, 0.0285, 0.0], "yellow_block": [0.0, 0.0, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.326, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.326, 0.0487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "wrong-target-yellow_block-0-4089500932", "horizon": 1, "metadata": {"candidate_type": "wrong_target", "difficulty": 0.6, "intended_relation": "left_of", "intended_target": "yellow_block", "parent_action_id": "expert-push-green_block-left_of-yellow_block", "perturbation": {"kind": "target_swap"}, "planner": "toy_symbolic", "target_replacement": "yellow_block"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": 0.0683, "dy": 0.0285, "object": "yellow_block"}]}, "candidate_type": "wrong_target", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0000-c3c9be1f03a9", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 4089500932, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0000-c3c9be1f03a9.pkl", "state_index": 0, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.0577, 0.0772, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.0577, 0.0772, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.0577, 0.0772, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.0577, 0.0772, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-1d215a54a47965ed011eeb8f", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 0.0, "target_moved_closer": 0.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "state_hash": "c3c9be1f03a96485fe6769089a7789ac6ade3c4d8346e8cd658288648788405a", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": 0.0683, "dy": 0.0285, "object": "yellow_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": 0.0683, "dy": 0.0285, "object": "yellow_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["yellow_block"], "object_pose_delta": {"green_block": [0.0, 0.0, 0.0], "yellow_block": [0.0683, 0.028500000000000004, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.0577, 0.0772, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.0577, 0.0772, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-4089500932", "horizon": 1, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "left_of", "intended_target": "green_block", "parent_action_id": "expert-push-green_block-left_of-yellow_block", "perturbation": {"dx": -0.12, "dy": 0.1, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": -0.051699999999999996, "dy": 0.1285, "object": "green_block"}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0000-c3c9be1f03a9", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 4089500932, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0000-c3c9be1f03a9.pkl", "state_index": 0, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.446, 0.1487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.446, 0.1487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.446, 0.1487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.446, 0.1487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-8ed65de6fc87f2b560ca2482", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "state_hash": "c3c9be1f03a96485fe6769089a7789ac6ade3c4d8346e8cd658288648788405a", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": -0.051699999999999996, "dy": 0.1285, "object": "green_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": -0.051699999999999996, "dy": 0.1285, "object": "green_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["green_block"], "object_pose_delta": {"green_block": [-0.051700000000000024, 0.1285, 0.0], "yellow_block": [0.0, 0.0, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.446, 0.1487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.446, 0.1487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-1-4089500932", "horizon": 1, "metadata": {"candidate_type": "near_miss", "difficulty": 0.39999999999999997, "intended_relation": "left_of", "intended_target": "green_block", "parent_action_id": "expert-push-green_block-left_of-yellow_block", "perturbation": {"dx": -0.06, "dy": 0.05, "kind": "release_offset"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": 0.0683, "dy": 0.0285, "object": "green_block"}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0000-c3c9be1f03a9", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 4089500932, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0000-c3c9be1f03a9.pkl", "state_index": 0, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.326, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.326, 0.0487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.326, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.326, 0.0487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-77e56e88c5e1debd5a6e9025", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.25873612265544277}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "state_hash": "c3c9be1f03a96485fe6769089a7789ac6ade3c4d8346e8cd658288648788405a", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": 0.0683, "dy": 0.0285, "object": "green_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": 0.0683, "dy": 0.0285, "object": "green_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["green_block"], "object_pose_delta": {"green_block": [0.06829999999999997, 0.0285, 0.0], "yellow_block": [0.0, 0.0, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.326, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.326, 0.0487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "expert-0", "horizon": 1, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "left_of", "intended_target": "green_block", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": 0.0434, "dy": 0.0368, "object": "green_block"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0001-0c030436495a", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 3905794541, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0001-0c030436495a.pkl", "state_index": 1, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.3599, 0.0439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.3599, 0.0439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-966e67aec9ec7e5909a3150f", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.1875407885543134}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "state_hash": "0c030436495aceda58392bfa58f785e409127cc5834bfe62db1d29dd2760619a", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": 0.0434, "dy": 0.0368, "object": "green_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": 0.0434, "dy": 0.0368, "object": "green_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["green_block"], "object_pose_delta": {"green_block": [0.043399999999999994, 0.0368, 0.0], "yellow_block": [0.0, 0.0, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.3599, 0.0439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "wrong-target-yellow_block-0-3905794541", "horizon": 1, "metadata": {"candidate_type": "wrong_target", "difficulty": 0.6, "intended_relation": "left_of", "intended_target": "yellow_block", "parent_action_id": "expert-push-green_block-left_of-yellow_block", "perturbation": {"kind": "target_swap"}, "planner": "toy_symbolic", "target_replacement": "yellow_block"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": 0.0434, "dy": 0.0368, "object": "yellow_block"}]}, "candidate_type": "wrong_target", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0001-0c030436495a", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 3905794541, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0001-0c030436495a.pkl", "state_index": 1, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1165, 0.0807, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.1165, 0.0807, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1165, 0.0807, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.1165, 0.0807, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-9817348388947a28a5081a32", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 0.0, "target_moved_closer": 0.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "state_hash": "0c030436495aceda58392bfa58f785e409127cc5834bfe62db1d29dd2760619a", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": 0.0434, "dy": 0.0368, "object": "yellow_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": 0.0434, "dy": 0.0368, "object": "yellow_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["yellow_block"], "object_pose_delta": {"green_block": [0.0, 0.0, 0.0], "yellow_block": [0.04339999999999998, 0.03679999999999999, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1165, 0.0807, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.1165, 0.0807, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-3905794541", "horizon": 1, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "left_of", "intended_target": "green_block", "parent_action_id": "expert-push-green_block-left_of-yellow_block", "perturbation": {"dx": -0.08, "dy": 0.1, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": -0.0366, "dy": 0.1368, "object": "green_block"}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0001-0c030436495a", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 3905794541, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0001-0c030436495a.pkl", "state_index": 1, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4399, 0.1439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.4399, 0.1439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4399, 0.1439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.4399, 0.1439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-23d330c81ec3dc1ce096212a", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "state_hash": "0c030436495aceda58392bfa58f785e409127cc5834bfe62db1d29dd2760619a", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": -0.0366, "dy": 0.1368, "object": "green_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": -0.0366, "dy": 0.1368, "object": "green_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["green_block"], "object_pose_delta": {"green_block": [-0.03660000000000002, 0.1368, 0.0], "yellow_block": [0.0, 0.0, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4399, 0.1439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.4399, 0.1439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-1-3905794541", "horizon": 1, "metadata": {"candidate_type": "near_miss", "difficulty": 0.39999999999999997, "intended_relation": "left_of", "intended_target": "green_block", "parent_action_id": "expert-push-green_block-left_of-yellow_block", "perturbation": {"dx": -0.04, "dy": 0.05, "kind": "release_offset"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": 0.0434, "dy": 0.0368, "object": "green_block"}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0001-0c030436495a", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 3905794541, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0001-0c030436495a.pkl", "state_index": 1, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.3599, 0.0439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.3599, 0.0439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-84bbf672956447f527c7744e", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.1875407885543134}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "state_hash": "0c030436495aceda58392bfa58f785e409127cc5834bfe62db1d29dd2760619a", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": 0.0434, "dy": 0.0368, "object": "green_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": 0.0434, "dy": 0.0368, "object": "green_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["green_block"], "object_pose_delta": {"green_block": [0.043399999999999994, 0.0368, 0.0], "yellow_block": [0.0, 0.0, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.3599, 0.0439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "expert-0", "horizon": 1, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "left_of", "intended_target": "green_block", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": 0.0911, "dy": 0.058, "object": "green_block"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0002-11c665a5eda3", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 817791326, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0002-11c665a5eda3.pkl", "state_index": 2, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3165, 0.0519, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1165, 0.0519, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.3165, 0.0519, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0002", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3165, 0.0519, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1165, 0.0519, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.3165, 0.0519, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0002", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4076, -0.0061, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1165, 0.0519, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0002", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4076, -0.0061, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1165, 0.0519, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0002", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-621ec9a357c50a129ad8a9f4", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.3261951546912898}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0002", "state_hash": "11c665a5eda32c8f18c98450e578f04c7bb6f4e89bf533d40a930c189544e916", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": 0.0911, "dy": 0.058, "object": "green_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": 0.0911, "dy": 0.058, "object": "green_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["green_block"], "object_pose_delta": {"green_block": [0.09110000000000001, 0.058, 0.0], "yellow_block": [0.0, 0.0, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3165, 0.0519, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1165, 0.0519, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.3165, 0.0519, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0002", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4076, -0.0061, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1165, 0.0519, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0002", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "wrong-target-yellow_block-0-817791326", "horizon": 1, "metadata": {"candidate_type": "wrong_target", "difficulty": 0.6, "intended_relation": "left_of", "intended_target": "yellow_block", "parent_action_id": "expert-push-green_block-left_of-yellow_block", "perturbation": {"kind": "target_swap"}, "planner": "toy_symbolic", "target_replacement": "yellow_block"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": 0.0911, "dy": 0.058, "object": "yellow_block"}]}, "candidate_type": "wrong_target", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0002-11c665a5eda3", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 817791326, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0002-11c665a5eda3.pkl", "state_index": 2, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4076, -0.0061, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.0254, 0.1099, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.0254, 0.1099, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0002", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4076, -0.0061, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.0254, 0.1099, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.0254, 0.1099, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0002", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4076, -0.0061, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1165, 0.0519, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0002", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4076, -0.0061, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1165, 0.0519, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0002", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-6eebd4d8930e14931ed6197c", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 0.0, "target_moved_closer": 0.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0002", "state_hash": "11c665a5eda32c8f18c98450e578f04c7bb6f4e89bf533d40a930c189544e916", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": 0.0911, "dy": 0.058, "object": "yellow_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": 0.0911, "dy": 0.058, "object": "yellow_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["yellow_block"], "object_pose_delta": {"green_block": [0.0, 0.0, 0.0], "yellow_block": [0.09110000000000001, 0.057999999999999996, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4076, -0.0061, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.0254, 0.1099, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.0254, 0.1099, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0002", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4076, -0.0061, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1165, 0.0519, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0002", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-817791326", "horizon": 1, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "left_of", "intended_target": "green_block", "parent_action_id": "expert-push-green_block-left_of-yellow_block", "perturbation": {"dx": -0.08, "dy": 0.04, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": 0.011099999999999999, "dy": 0.098, "object": "green_block"}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0002-11c665a5eda3", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 817791326, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0002-11c665a5eda3.pkl", "state_index": 2, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3965, 0.0919, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1165, 0.0519, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.3965, 0.0919, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0002", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3965, 0.0919, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1165, 0.0519, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.3965, 0.0919, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0002", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4076, -0.0061, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1165, 0.0519, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0002", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4076, -0.0061, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1165, 0.0519, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0002", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-1a045842507c8e29c1e62673", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.04709604937171658}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0002", "state_hash": "11c665a5eda32c8f18c98450e578f04c7bb6f4e89bf533d40a930c189544e916", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": 0.011099999999999999, "dy": 0.098, "object": "green_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": 0.011099999999999999, "dy": 0.098, "object": "green_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["green_block"], "object_pose_delta": {"green_block": [0.011099999999999999, 0.09799999999999999, 0.0], "yellow_block": [0.0, 0.0, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3965, 0.0919, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1165, 0.0519, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.3965, 0.0919, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0002", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4076, -0.0061, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1165, 0.0519, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0002", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "delay-817791326", "horizon": 2, "metadata": {"candidate_type": "delayed", "difficulty": 0.9, "intended_relation": "left_of", "intended_target": "green_block", "parent_action_id": null, "perturbation": {"kind": "delay", "steps": 2}}, "representation": "semantic", "skill_type": "delay", "values": [{"command": "delay", "steps": 2}, {"command": "noop"}]}, "candidate_type": "delayed", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0002-11c665a5eda3", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 817791326, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0002-11c665a5eda3.pkl", "state_index": 2, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4076, -0.0061, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1165, 0.0519, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0002", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4076, -0.0061, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1165, 0.0519, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0002", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4076, -0.0061, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1165, 0.0519, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0002", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4076, -0.0061, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1165, 0.0519, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0002", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-75f3c355b20290baecea329e", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 0.0, "target_moved_closer": 0.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0002", "state_hash": "11c665a5eda32c8f18c98450e578f04c7bb6f4e89bf533d40a930c189544e916", "structured_effect": {"articulation_delta": {}, "contact_events": [{"steps": 2, "type": "delay"}, {"type": "noop"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"steps": 2, "type": "delay"}, {"type": "noop"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": [], "object_pose_delta": {"green_block": [0.0, 0.0, 0.0], "yellow_block": [0.0, 0.0, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4076, -0.0061, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1165, 0.0519, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0002", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4076, -0.0061, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1165, 0.0519, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0002", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "expert-0", "horizon": 1, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "left_of", "intended_target": "green_block", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": 0.1055, "dy": -0.0177, "object": "green_block"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0003-c8edc6dcf524", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 3116481421, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0003-c8edc6dcf524.pkl", "state_index": 3, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.328, 0.0296, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.128, 0.0296, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.328, 0.0296, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0003", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.328, 0.0296, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.128, 0.0296, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.328, 0.0296, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0003", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4335, 0.0473, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.128, 0.0296, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0003", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4335, 0.0473, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.128, 0.0296, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0003", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-b77f352775370c10ed4fe85c", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.3464315423927225}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0003", "state_hash": "c8edc6dcf52463a131a2904fe46d908dd3dd7fb45f13386a4970df58a804732f", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": 0.1055, "dy": -0.0177, "object": "green_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": 0.1055, "dy": -0.0177, "object": "green_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["green_block"], "object_pose_delta": {"green_block": [0.10549999999999998, -0.0177, 0.0], "yellow_block": [0.0, 0.0, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.328, 0.0296, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.128, 0.0296, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.328, 0.0296, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0003", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4335, 0.0473, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.128, 0.0296, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0003", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "wrong-target-yellow_block-0-3116481421", "horizon": 1, "metadata": {"candidate_type": "wrong_target", "difficulty": 0.6, "intended_relation": "left_of", "intended_target": "yellow_block", "parent_action_id": "expert-push-green_block-left_of-yellow_block", "perturbation": {"kind": "target_swap"}, "planner": "toy_symbolic", "target_replacement": "yellow_block"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": 0.1055, "dy": -0.0177, "object": "yellow_block"}]}, "candidate_type": "wrong_target", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0003-c8edc6dcf524", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 3116481421, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0003-c8edc6dcf524.pkl", "state_index": 3, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4335, 0.0473, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.0225, 0.0119, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.0225, 0.0119, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0003", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4335, 0.0473, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.0225, 0.0119, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.0225, 0.0119, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0003", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4335, 0.0473, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.128, 0.0296, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0003", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4335, 0.0473, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.128, 0.0296, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0003", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-b421a2c10d51afdbf2f0a550", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 0.0, "target_moved_closer": 0.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0003", "state_hash": "c8edc6dcf52463a131a2904fe46d908dd3dd7fb45f13386a4970df58a804732f", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": 0.1055, "dy": -0.0177, "object": "yellow_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": 0.1055, "dy": -0.0177, "object": "yellow_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["yellow_block"], "object_pose_delta": {"green_block": [0.0, 0.0, 0.0], "yellow_block": [0.10550000000000001, -0.0177, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4335, 0.0473, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.0225, 0.0119, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.0225, 0.0119, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0003", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4335, 0.0473, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.128, 0.0296, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0003", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-3116481421", "horizon": 1, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "left_of", "intended_target": "green_block", "parent_action_id": "expert-push-green_block-left_of-yellow_block", "perturbation": {"dx": -0.12, "dy": -0.04, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": -0.014499999999999999, "dy": -0.0577, "object": "green_block"}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0003-c8edc6dcf524", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 3116481421, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0003-c8edc6dcf524.pkl", "state_index": 3, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.448, -0.0104, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.128, 0.0296, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.448, -0.0104, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0003", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.448, -0.0104, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.128, 0.0296, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.448, -0.0104, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0003", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4335, 0.0473, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.128, 0.0296, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0003", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4335, 0.0473, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.128, 0.0296, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0003", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-89bb606fb10a16368c1d2338", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0003", "state_hash": "c8edc6dcf52463a131a2904fe46d908dd3dd7fb45f13386a4970df58a804732f", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": -0.014499999999999999, "dy": -0.0577, "object": "green_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": -0.014499999999999999, "dy": -0.0577, "object": "green_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["green_block"], "object_pose_delta": {"green_block": [-0.014500000000000013, -0.0577, 0.0], "yellow_block": [0.0, 0.0, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.448, -0.0104, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.128, 0.0296, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.448, -0.0104, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0003", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4335, 0.0473, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.128, 0.0296, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0003", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "random-neg-0-3116481421", "horizon": 1, "metadata": {"candidate_type": "random_negative", "difficulty": 0.8, "intended_relation": "left_of", "intended_target": "green_block", "parent_action_id": null, "perturbation": {"kind": "random_negative"}}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": 0.10549999999999998, "dy": -0.0177, "object": "green_block"}]}, "candidate_type": "random_negative", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0003-c8edc6dcf524", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 3116481421, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0003-c8edc6dcf524.pkl", "state_index": 3, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.328, 0.0296, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.128, 0.0296, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.328, 0.0296, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0003", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.328, 0.0296, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.128, 0.0296, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.328, 0.0296, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0003", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4335, 0.0473, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.128, 0.0296, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0003", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4335, 0.0473, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.128, 0.0296, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0003", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-3114a704be5504c05fe334d0", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.3464315423927225}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0003", "state_hash": "c8edc6dcf52463a131a2904fe46d908dd3dd7fb45f13386a4970df58a804732f", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": 0.10549999999999998, "dy": -0.0177, "object": "green_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": 0.10549999999999998, "dy": -0.0177, "object": "green_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["green_block"], "object_pose_delta": {"green_block": [0.10549999999999998, -0.0177, 0.0], "yellow_block": [0.0, 0.0, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.328, 0.0296, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.128, 0.0296, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.328, 0.0296, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0003", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4335, 0.0473, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.128, 0.0296, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0003", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} diff --git a/outputs/smoke_full/dataset_report/candidate_type_counts.csv b/outputs/smoke_full/dataset_report/candidate_type_counts.csv new file mode 100644 index 0000000000000000000000000000000000000000..65437fae6c6902b51a85f415a166058235507695 --- /dev/null +++ b/outputs/smoke_full/dataset_report/candidate_type_counts.csv @@ -0,0 +1,8 @@ +candidate_type,count +delayed,4 +expert,12 +near_miss,15 +noop,3 +random_negative,5 +wrong_relation,1 +wrong_target,8 diff --git a/outputs/smoke_full/dataset_report/examples.md b/outputs/smoke_full/dataset_report/examples.md new file mode 100644 index 0000000000000000000000000000000000000000..8925d9b771cbf8ab32e47a59cc32c36d4dc21037 --- /dev/null +++ b/outputs/smoke_full/dataset_report/examples.md @@ -0,0 +1,37 @@ +# Sample CIL Groups + +## toy_pick_red_mug-s0001-6f757ba8aaf5 + +- task: `toy_pick_red_mug` +- instruction: Pick up the red mug. + +| record_id | candidate_type | reward.progress | success | regret | rank | failure.type | +| --- | --- | ---: | --- | ---: | ---: | --- | +| rec-201f911e1605197264d9e111 | random_negative | 1.0000 | True | 0.0000 | 0 | success | +| rec-9c35c0e2b0d8f0177deca3f4 | expert | 1.0000 | True | 0.0000 | 1 | success | +| rec-efa3f478ee63ffeb9e0d5433 | near_miss | 1.0000 | True | 0.0000 | 2 | success | +| rec-abafd5d382c564beba859670 | noop | 0.0000 | False | 2.0000 | 3 | no_motion | + +## toy_green_block_left_of_yellow_block-s0001-0c030436495a + +- task: `toy_green_block_left_of_yellow_block` +- instruction: Put the green block left of the yellow block. + +| record_id | candidate_type | reward.progress | success | regret | rank | failure.type | +| --- | --- | ---: | --- | ---: | ---: | --- | +| rec-23d330c81ec3dc1ce096212a | near_miss | 1.0000 | True | 0.0000 | 0 | success | +| rec-84bbf672956447f527c7744e | near_miss | 1.0000 | True | 0.0000 | 1 | success | +| rec-966e67aec9ec7e5909a3150f | expert | 1.0000 | True | 0.0000 | 2 | success | +| rec-9817348388947a28a5081a32 | wrong_target | 1.0000 | True | 0.0000 | 3 | success | + +## toy_green_block_left_of_yellow_block-s0000-c3c9be1f03a9 + +- task: `toy_green_block_left_of_yellow_block` +- instruction: Put the green block left of the yellow block. + +| record_id | candidate_type | reward.progress | success | regret | rank | failure.type | +| --- | --- | ---: | --- | ---: | ---: | --- | +| rec-1d215a54a47965ed011eeb8f | wrong_target | 1.0000 | True | 0.0000 | 0 | success | +| rec-2f2472ca239a50aae7cb08c1 | expert | 1.0000 | True | 0.0000 | 1 | success | +| rec-77e56e88c5e1debd5a6e9025 | near_miss | 1.0000 | True | 0.0000 | 2 | success | +| rec-8ed65de6fc87f2b560ca2482 | near_miss | 1.0000 | True | 0.0000 | 3 | success | diff --git a/outputs/smoke_full/dataset_report/failure_type_counts.csv b/outputs/smoke_full/dataset_report/failure_type_counts.csv new file mode 100644 index 0000000000000000000000000000000000000000..96d9e4e2f871722a6b873d78b09c58f0a3812b93 --- /dev/null +++ b/outputs/smoke_full/dataset_report/failure_type_counts.csv @@ -0,0 +1,3 @@ +failure_type,count,rate,success_count,mean_reward +no_motion,6,0.125,0,0.0 +success,42,0.875,42,1.0 diff --git a/outputs/smoke_full/dataset_report/failure_type_counts.png b/outputs/smoke_full/dataset_report/failure_type_counts.png new file mode 100644 index 0000000000000000000000000000000000000000..818e55f4eb2ffb17840c1e86b0b5584171e2d262 Binary files /dev/null and b/outputs/smoke_full/dataset_report/failure_type_counts.png differ diff --git a/outputs/smoke_full/dataset_report/group_size_distribution.png b/outputs/smoke_full/dataset_report/group_size_distribution.png new file mode 100644 index 0000000000000000000000000000000000000000..818e55f4eb2ffb17840c1e86b0b5584171e2d262 Binary files /dev/null and b/outputs/smoke_full/dataset_report/group_size_distribution.png differ diff --git a/outputs/smoke_full/dataset_report/regret_histogram.png b/outputs/smoke_full/dataset_report/regret_histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..818e55f4eb2ffb17840c1e86b0b5584171e2d262 Binary files /dev/null and b/outputs/smoke_full/dataset_report/regret_histogram.png differ diff --git a/outputs/smoke_full/dataset_report/reward_histogram.png b/outputs/smoke_full/dataset_report/reward_histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..818e55f4eb2ffb17840c1e86b0b5584171e2d262 Binary files /dev/null and b/outputs/smoke_full/dataset_report/reward_histogram.png differ diff --git a/outputs/smoke_full/dataset_report/success_by_candidate_type.csv b/outputs/smoke_full/dataset_report/success_by_candidate_type.csv new file mode 100644 index 0000000000000000000000000000000000000000..7e818dea5a59a3757d82b7c62942107155f6d461 --- /dev/null +++ b/outputs/smoke_full/dataset_report/success_by_candidate_type.csv @@ -0,0 +1,8 @@ +candidate_type,count,success_count,success_rate,mean_reward,mean_regret +delayed,4,1,0.25,0.25,1.5 +expert,12,12,1.0,1.0,0.0 +near_miss,15,15,1.0,1.0,0.0 +noop,3,0,0.0,0.0,2.0 +random_negative,5,5,1.0,1.0,0.0 +wrong_relation,1,1,1.0,1.0,0.0 +wrong_target,8,8,1.0,1.0,0.0 diff --git a/outputs/smoke_full/dataset_report/success_by_candidate_type.png b/outputs/smoke_full/dataset_report/success_by_candidate_type.png new file mode 100644 index 0000000000000000000000000000000000000000..818e55f4eb2ffb17840c1e86b0b5584171e2d262 Binary files /dev/null and b/outputs/smoke_full/dataset_report/success_by_candidate_type.png differ diff --git a/outputs/smoke_full/dataset_report/summary.json b/outputs/smoke_full/dataset_report/summary.json new file mode 100644 index 0000000000000000000000000000000000000000..a9d13270303977876c1b84c46653bc93d37f86a8 --- /dev/null +++ b/outputs/smoke_full/dataset_report/summary.json @@ -0,0 +1,89 @@ +{ + "candidate_type_counts": { + "delayed": 4, + "expert": 12, + "near_miss": 15, + "noop": 3, + "random_negative": 5, + "wrong_relation": 1, + "wrong_target": 8 + }, + "dataset_dir": "outputs/smoke_full/cil_toy", + "failure_type_counts": { + "no_motion": 6, + "success": 42 + }, + "group_size": { + "max": 4.0, + "mean": 4.0, + "min": 4.0 + }, + "metadata": { + "backend": "toy", + "created_at": "2026-06-19T03:36:03.777618+00:00", + "dataset_name": "cil_toy", + "format": "dovla_cil", + "group_count": 12, + "group_index_path": "group_index.jsonl", + "index_format": "jsonl", + "k": 4, + "num_groups": 12, + "num_records": 48, + "record_count": 48, + "record_index_path": "record_index.jsonl", + "schema_version": "0.1", + "seed": 0, + "shard_count": 2, + "shard_format": "jsonl", + "shard_size": 32, + "shards": [ + { + "format": "jsonl", + "group_ids": [ + "toy_pick_red_mug-s0000-586344cdc593", + "toy_pick_red_mug-s0001-6f757ba8aaf5", + "toy_pick_red_mug-s0002-06f82d14b727", + "toy_pick_red_mug-s0003-c8436f335506", + "toy_put_red_mug_in_blue_bowl-s0000-27c5c6f7fcc9", + "toy_put_red_mug_in_blue_bowl-s0001-08f771b15b3d", + "toy_put_red_mug_in_blue_bowl-s0002-53bbb3e0b31f", + "toy_put_red_mug_in_blue_bowl-s0003-ea81e044cc91" + ], + "path": "shards/shard_000000.jsonl", + "record_count": 32 + }, + { + "format": "jsonl", + "group_ids": [ + "toy_green_block_left_of_yellow_block-s0000-c3c9be1f03a9", + "toy_green_block_left_of_yellow_block-s0001-0c030436495a", + "toy_green_block_left_of_yellow_block-s0002-11c665a5eda3", + "toy_green_block_left_of_yellow_block-s0003-c8edc6dcf524" + ], + "path": "shards/shard_000001.jsonl", + "record_count": 16 + } + ], + "task_count": 3, + "version": "0.1" + }, + "num_groups": 12, + "num_records": 48, + "num_tasks": 3, + "regret": { + "max": 2.0, + "mean": 0.25, + "min": 0.0 + }, + "reward": { + "max": 1.0, + "mean": 0.875, + "min": 0.0 + }, + "success_rate": 0.875, + "task_counts": { + "toy_green_block_left_of_yellow_block": 16, + "toy_pick_red_mug": 16, + "toy_put_red_mug_in_blue_bowl": 16 + } +} diff --git a/outputs/smoke_full/eval_report/aggregate_metrics.csv b/outputs/smoke_full/eval_report/aggregate_metrics.csv new file mode 100644 index 0000000000000000000000000000000000000000..40b65d9804e7dc238f6074ebddb85516d9442b64 --- /dev/null +++ b/outputs/smoke_full/eval_report/aggregate_metrics.csv @@ -0,0 +1,2 @@ +run_name,source_path,k,num_tasks,checkpoint,success_rate,ranking_acc,top1_action_selection,instruction_switch_acc,effect_mae,regret_ece,score +causalstress,outputs/smoke_full/causalstress/metrics.json,4,6,outputs/smoke_full/train/best.pt,1.0,1.0,1.0,1.0,0.0,0.0,1.0 diff --git a/outputs/smoke_full/eval_report/effect_mae.png b/outputs/smoke_full/eval_report/effect_mae.png new file mode 100644 index 0000000000000000000000000000000000000000..818e55f4eb2ffb17840c1e86b0b5584171e2d262 Binary files /dev/null and b/outputs/smoke_full/eval_report/effect_mae.png differ diff --git a/outputs/smoke_full/eval_report/instruction_switch_accuracy.png b/outputs/smoke_full/eval_report/instruction_switch_accuracy.png new file mode 100644 index 0000000000000000000000000000000000000000..818e55f4eb2ffb17840c1e86b0b5584171e2d262 Binary files /dev/null and b/outputs/smoke_full/eval_report/instruction_switch_accuracy.png differ diff --git a/outputs/smoke_full/eval_report/ranking_accuracy.png b/outputs/smoke_full/eval_report/ranking_accuracy.png new file mode 100644 index 0000000000000000000000000000000000000000..818e55f4eb2ffb17840c1e86b0b5584171e2d262 Binary files /dev/null and b/outputs/smoke_full/eval_report/ranking_accuracy.png differ diff --git a/outputs/smoke_full/eval_report/regret_calibration_error.png b/outputs/smoke_full/eval_report/regret_calibration_error.png new file mode 100644 index 0000000000000000000000000000000000000000..818e55f4eb2ffb17840c1e86b0b5584171e2d262 Binary files /dev/null and b/outputs/smoke_full/eval_report/regret_calibration_error.png differ diff --git a/outputs/smoke_full/eval_report/report.md b/outputs/smoke_full/eval_report/report.md new file mode 100644 index 0000000000000000000000000000000000000000..bdb44b580b8ea949d6be9a51e771bed12c32f477 --- /dev/null +++ b/outputs/smoke_full/eval_report/report.md @@ -0,0 +1,31 @@ +# smoke_full + +## Config Summary + +- runs: 1 +- scaling: False +- K values: 4 + +## Metrics + +| run_name | k | success_rate | ranking_acc | top1_action_selection | instruction_switch_acc | effect_mae | regret_ece | +| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | +| causalstress | 4 | 1.0000 | 1.0000 | 1.0000 | 1.0000 | 0.0000 | 0.0000 | + +## Interpretation + +- Best K by ranking_acc: `4` (1.0000). +- Best K by success: `4` (1.0000). +- `ranking_acc` beta_log_k: 0. +- `success_rate` beta_log_k: 0. +- `instruction_switch_acc` beta_log_k: 0. + +## Plots + +- `effect_mae`: `outputs/smoke_full/eval_report/effect_mae.png` +- `instruction_switch_acc`: `outputs/smoke_full/eval_report/instruction_switch_accuracy.png` +- `ranking_acc`: `outputs/smoke_full/eval_report/ranking_accuracy.png` +- `regret_ece`: `outputs/smoke_full/eval_report/regret_calibration_error.png` +- `score_vs_k`: `outputs/smoke_full/eval_report/score_vs_k.png` +- `success_rate`: `outputs/smoke_full/eval_report/success_rate.png` +- `top1_action_selection`: `outputs/smoke_full/eval_report/top1_action_selection.png` diff --git a/outputs/smoke_full/eval_report/score_vs_k.png b/outputs/smoke_full/eval_report/score_vs_k.png new file mode 100644 index 0000000000000000000000000000000000000000..818e55f4eb2ffb17840c1e86b0b5584171e2d262 Binary files /dev/null and b/outputs/smoke_full/eval_report/score_vs_k.png differ diff --git a/outputs/smoke_full/eval_report/success_rate.png b/outputs/smoke_full/eval_report/success_rate.png new file mode 100644 index 0000000000000000000000000000000000000000..818e55f4eb2ffb17840c1e86b0b5584171e2d262 Binary files /dev/null and b/outputs/smoke_full/eval_report/success_rate.png differ diff --git a/outputs/smoke_full/eval_report/summary.json b/outputs/smoke_full/eval_report/summary.json new file mode 100644 index 0000000000000000000000000000000000000000..e57709130f5a195c8094dfd3e508f1b119ac0945 --- /dev/null +++ b/outputs/smoke_full/eval_report/summary.json @@ -0,0 +1,41 @@ +{ + "aggregate_csv": "outputs/smoke_full/eval_report/aggregate_metrics.csv", + "experiment_name": "smoke_full", + "markdown_report": "outputs/smoke_full/eval_report/report.md", + "num_runs": 1, + "plots": { + "effect_mae": "outputs/smoke_full/eval_report/effect_mae.png", + "instruction_switch_acc": "outputs/smoke_full/eval_report/instruction_switch_accuracy.png", + "ranking_acc": "outputs/smoke_full/eval_report/ranking_accuracy.png", + "regret_ece": "outputs/smoke_full/eval_report/regret_calibration_error.png", + "score_vs_k": "outputs/smoke_full/eval_report/score_vs_k.png", + "success_rate": "outputs/smoke_full/eval_report/success_rate.png", + "top1_action_selection": "outputs/smoke_full/eval_report/top1_action_selection.png" + }, + "regression": { + "effect_mae": { + "alpha": 0.0, + "beta_log_k": 0.0 + }, + "instruction_switch_acc": { + "alpha": 1.0, + "beta_log_k": 0.0 + }, + "ranking_acc": { + "alpha": 1.0, + "beta_log_k": 0.0 + }, + "regret_ece": { + "alpha": 0.0, + "beta_log_k": 0.0 + }, + "success_rate": { + "alpha": 1.0, + "beta_log_k": 0.0 + }, + "top1_action_selection": { + "alpha": 1.0, + "beta_log_k": 0.0 + } + } +} diff --git a/outputs/smoke_full/eval_report/top1_action_selection.png b/outputs/smoke_full/eval_report/top1_action_selection.png new file mode 100644 index 0000000000000000000000000000000000000000..818e55f4eb2ffb17840c1e86b0b5584171e2d262 Binary files /dev/null and b/outputs/smoke_full/eval_report/top1_action_selection.png differ diff --git a/outputs/smoke_full/inspect.txt b/outputs/smoke_full/inspect.txt new file mode 100644 index 0000000000000000000000000000000000000000..518c6af060eb70a5fb70a8a566ec1128322134db --- /dev/null +++ b/outputs/smoke_full/inspect.txt @@ -0,0 +1,27 @@ +dataset: cil_toy +path: outputs/smoke_full/cil_toy +version: 0.1 +schema_version: 0.1 +backend: toy +created_at: 2026-06-19T03:36:03.777618+00:00 +num_groups: 12 +num_records: 48 +k: 4 +task_count: 3 +seed: 0 +shard_count: 2 +group_index: outputs/smoke_full/cil_toy/group_index.jsonl +record_index: outputs/smoke_full/cil_toy/record_index.jsonl +sample_group: toy_pick_red_mug-s0000-586344cdc593 +sample_group_task: toy_pick_red_mug +sample_group_shard: shards/shard_000000.jsonl +sample_group_records: 4 +sample_group_max_reward: 1.0 +sample_group_success_count: 3 +sample_group_candidate_type_counts: {'delayed': 1, 'expert': 1, 'near_miss': 1, 'random_negative': 1} +ranking: +record_id candidate_type reward.progress success regret rank failure.type +rec-3d0eea162bc56a2245af71dd near_miss 1 True 0 0 success +rec-88743cf092ac7e529f708d57 random_negative 1 True 0 1 success +rec-dc18ebd63ea374a0e6c75030 expert 1 True 0 2 success +rec-d93d5aee82fa00fdce043810 delayed 0 False 2 3 no_motion diff --git a/outputs/smoke_full/tasks.jsonl b/outputs/smoke_full/tasks.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..35f0f38f5e7221913a433e9a09364bbf80510c23 --- /dev/null +++ b/outputs/smoke_full/tasks.jsonl @@ -0,0 +1,3 @@ +{"allowed_skills": ["reach", "grasp"], "distractor_object_ids": [], "family": "pick", "instruction_templates": ["Pick up the red mug."], "metadata": {"target_position": 1.0, "tolerance": 0.05}, "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "objects": [{"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "mass": 0.3, "object_id": "red_mug", "scale": 1.0, "shape": "cylindrical"}], "reference_object_ids": [], "success_predicates": [{"args": ["red_mug"], "name": "grasped"}], "target_object_ids": ["red_mug"], "task_id": "toy_pick_red_mug"} +{"allowed_skills": ["reach", "grasp", "place"], "distractor_object_ids": [], "family": "place_inside", "instruction_templates": ["Put the red mug in the blue bowl."], "metadata": {"target_position": 1.1, "tolerance": 0.05}, "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "objects": [{"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "mass": 0.3, "object_id": "red_mug", "scale": 1.0, "shape": "cylindrical"}, {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "mass": 0.4, "object_id": "blue_bowl", "scale": 1.1, "shape": "round"}], "reference_object_ids": ["blue_bowl"], "success_predicates": [{"args": ["red_mug", "blue_bowl"], "name": "inside"}], "target_object_ids": ["red_mug"], "task_id": "toy_put_red_mug_in_blue_bowl"} +{"allowed_skills": ["push", "place"], "distractor_object_ids": [], "family": "spatial_place", "instruction_templates": ["Put the green block left of the yellow block."], "metadata": {"target_position": 1.2, "tolerance": 0.05}, "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "objects": [{"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "mass": 0.5, "object_id": "green_block", "scale": 1.0, "shape": "cube"}, {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "mass": 0.5, "object_id": "yellow_block", "scale": 1.0, "shape": "cube"}], "reference_object_ids": ["yellow_block"], "success_predicates": [{"args": ["green_block", "yellow_block"], "name": "left_of"}], "target_object_ids": ["green_block"], "task_id": "toy_green_block_left_of_yellow_block"} diff --git a/outputs/smoke_full/train/best.pt b/outputs/smoke_full/train/best.pt new file mode 100644 index 0000000000000000000000000000000000000000..48048b39bc97712c6c97810b2ab879a151cbb061 --- /dev/null +++ b/outputs/smoke_full/train/best.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5143e397f52b2714ef450d0f8fce257e0f315b633cdebdfde768d9cc2486825 +size 1697 diff --git a/outputs/smoke_full/train/latest.pt b/outputs/smoke_full/train/latest.pt new file mode 100644 index 0000000000000000000000000000000000000000..48048b39bc97712c6c97810b2ab879a151cbb061 --- /dev/null +++ b/outputs/smoke_full/train/latest.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5143e397f52b2714ef450d0f8fce257e0f315b633cdebdfde768d9cc2486825 +size 1697 diff --git a/outputs/smoke_full/train/metrics.json b/outputs/smoke_full/train/metrics.json new file mode 100644 index 0000000000000000000000000000000000000000..2c58366424bb689d631256bb6a0bf332cee9c86f --- /dev/null +++ b/outputs/smoke_full/train/metrics.json @@ -0,0 +1,35 @@ +{ + "best": { + "bc_loss": 0.0, + "progress_mae": 0.0, + "rank_acc": 0.5, + "rank_loss": 0.0, + "regret_mae": 0.0, + "success_accuracy": 1.0, + "total_loss": 0.0 + }, + "history": [ + { + "epoch": 1, + "train": { + "bc_loss": 0.0, + "progress_mae": 0.0, + "rank_acc": 0.5, + "rank_loss": 0.0, + "regret_mae": 0.0, + "success_accuracy": 1.0, + "total_loss": 0.0 + }, + "val": { + "bc_loss": 0.0, + "progress_mae": 0.0, + "rank_acc": 0.5, + "rank_loss": 0.0, + "regret_mae": 0.0, + "success_accuracy": 1.0, + "total_loss": 0.0 + } + } + ], + "torch_available": false +} diff --git a/outputs/smoke_full/train/resolved_config.json b/outputs/smoke_full/train/resolved_config.json new file mode 100644 index 0000000000000000000000000000000000000000..beeab3804594c6c16301b6fb351f57b421c02fdf --- /dev/null +++ b/outputs/smoke_full/train/resolved_config.json @@ -0,0 +1,38 @@ +{ + "action_dim": 8, + "action_horizon": 4, + "batch_groups": 2, + "batch_size_groups": null, + "dataset_dir": "outputs/smoke_full/cil_toy", + "device": "cpu", + "effect_dim": 32, + "epochs": 1, + "hidden_dim": 64, + "lang_dim": 64, + "learning_rate": 0.001, + "losses": { + "bc": 1.0, + "bc_best_action": 1.0, + "causal_contrastive": 0.5, + "contrast": 0.5, + "effect": 1.0, + "forward_effect_prediction": 1.0, + "lang_pair": 0.25, + "language_minimal_pair": 0.25, + "progress": 1.0, + "rank": 1.0, + "regret": 0.5, + "regret_prediction": 0.5, + "same_state_pairwise_ranking": 1.0, + "success": 1.0 + }, + "lr": null, + "obs_dim": 32, + "output_dir": "outputs/smoke_full/train", + "pair_count_per_group": 4, + "records_per_group": 4, + "seed": 0, + "val_fraction": 0.25, + "wandb": false, + "weight_decay": 0.0 +} diff --git a/outputs/smoke_tasks.jsonl b/outputs/smoke_tasks.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..3eb27a72f2dcd909733b7c337ffdad90f1240dcd --- /dev/null +++ b/outputs/smoke_tasks.jsonl @@ -0,0 +1,2 @@ +{"allowed_skills": ["reach", "grasp"], "distractor_object_ids": [], "family": "pick", "instruction_templates": ["Pick up the red mug."], "metadata": {"target_position": 1.0, "tolerance": 0.05}, "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "objects": [{"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "mass": 0.3, "object_id": "red_mug", "scale": 1.0, "shape": "cylindrical"}], "reference_object_ids": [], "success_predicates": [{"args": ["red_mug"], "name": "grasped"}], "target_object_ids": ["red_mug"], "task_id": "toy_pick_red_mug"} +{"allowed_skills": ["reach", "grasp", "place"], "distractor_object_ids": [], "family": "place_inside", "instruction_templates": ["Put the red mug in the blue bowl."], "metadata": {"target_position": 1.1, "tolerance": 0.05}, "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "objects": [{"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "mass": 0.3, "object_id": "red_mug", "scale": 1.0, "shape": "cylindrical"}, {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "mass": 0.4, "object_id": "blue_bowl", "scale": 1.1, "shape": "round"}], "reference_object_ids": ["blue_bowl"], "success_predicates": [{"args": ["red_mug", "blue_bowl"], "name": "inside"}], "target_object_ids": ["red_mug"], "task_id": "toy_put_red_mug_in_blue_bowl"} diff --git a/outputs/train_smoke_cil/group_index.jsonl b/outputs/train_smoke_cil/group_index.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..441ba972e5a4596f1f77d4670404baaff3ecdaea --- /dev/null +++ b/outputs/train_smoke_cil/group_index.jsonl @@ -0,0 +1,6 @@ +{"candidate_type_counts": {"delayed": 1, "expert": 1, "near_miss": 1, "random_negative": 1}, "group_id": "toy_pick_red_mug-s0000-c169878e08f4", "instruction": "Pick up the red mug.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-42f8019cf00d6724273e97b7", "rec-a917843b2a720b9fb7f3c395", "rec-ca99954c1c7f8fe0108495dd", "rec-4f2382e74eac26053350cbb4"], "scene_id": "toy_pick_red_mug-scene-0000", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": "states/toy_pick_red_mug-s0000-c169878e08f4.pkl", "state_hash": "c169878e08f4cbe5378b3bdde5d0d3f5ed33a5da84fc4a5adaa2883abf6b8e54", "success_count": 3, "task_id": "toy_pick_red_mug"} +{"candidate_type_counts": {"expert": 1, "near_miss": 1, "noop": 1, "random_negative": 1}, "group_id": "toy_pick_red_mug-s0001-465ee4d18847", "instruction": "Pick up the red mug.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-67520e5b556277bf2597d277", "rec-46f2ba8446949849b5b93973", "rec-2cdff60151815188f165e930", "rec-2660aaa4ac89153ca3130734"], "scene_id": "toy_pick_red_mug-scene-0001", "shard_path": "shards/shard_000000.jsonl", "state_blob_ref": "states/toy_pick_red_mug-s0001-465ee4d18847.pkl", "state_hash": "465ee4d188473a26d86e4e47ba3c05ae1e193a2049638328b3e344bd6b106ca9", "success_count": 3, "task_id": "toy_pick_red_mug"} +{"candidate_type_counts": {"expert": 1, "near_miss": 1, "wrong_relation": 1, "wrong_target": 1}, "group_id": "toy_put_red_mug_in_blue_bowl-s0000-6b12d362f826", "instruction": "Put the red mug in the blue bowl.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-1d5b4432c9023e08ff69244f", "rec-c7f15539818205d3f5a7209f", "rec-87241154bc2a039a923ea00f", "rec-6d0b3e160a3e7f6e160d7b17"], "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "shard_path": "shards/shard_000001.jsonl", "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0000-6b12d362f826.pkl", "state_hash": "6b12d362f8262b2ebfc993bf5891780e9ba21c5b543596a56d735cde8551b52f", "success_count": 4, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type_counts": {"expert": 1, "near_miss": 1, "noop": 1, "wrong_target": 1}, "group_id": "toy_put_red_mug_in_blue_bowl-s0001-24ada188b8c9", "instruction": "Put the red mug in the blue bowl.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-b61b3e8e9dd5b4b9519d48aa", "rec-2b026f471b4bf13d6e338ea0", "rec-89542dbe4b01b6829161e313", "rec-989a8dd832f1b554f60cfadb"], "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "shard_path": "shards/shard_000001.jsonl", "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0001-24ada188b8c9.pkl", "state_hash": "24ada188b8c95e11e6b4f3f3ea52cbc6a70458d64ac67356bc2b6c3e4e428fef", "success_count": 3, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type_counts": {"expert": 1, "near_miss": 2, "wrong_target": 1}, "group_id": "toy_green_block_left_of_yellow_block-s0000-65ea39bacce8", "instruction": "Put the green block left of the yellow block.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-beef9c8559b4103d9b488743", "rec-ec37ddf00cf80148f1679778", "rec-d5c14b3835255e839bd12d69", "rec-f6f83e32ce67baea3eca9c63"], "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "shard_path": "shards/shard_000002.jsonl", "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0000-65ea39bacce8.pkl", "state_hash": "65ea39bacce8bf31ab4de353d56e0f8d15a7b79cafeb518ca164669fddd758f9", "success_count": 4, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type_counts": {"expert": 1, "near_miss": 2, "wrong_target": 1}, "group_id": "toy_green_block_left_of_yellow_block-s0001-a370f0947a48", "instruction": "Put the green block left of the yellow block.", "max_reward": 1.0, "num_records": 4, "record_ids": ["rec-c32bed89f3e1405fb71983fd", "rec-857fd901b3afc25de53429af", "rec-d6a226b104be9a0658cd0907", "rec-20825f957358f3310baba4e7"], "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "shard_path": "shards/shard_000002.jsonl", "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0001-a370f0947a48.pkl", "state_hash": "a370f0947a48434bd2f0d4f3ac16e8ee85aca6600f46a5d621fe8d49280e0e86", "success_count": 4, "task_id": "toy_green_block_left_of_yellow_block"} diff --git a/outputs/train_smoke_cil/manifest.json b/outputs/train_smoke_cil/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..5200aeee79ea88ada90cb7485367fbd47c232119 --- /dev/null +++ b/outputs/train_smoke_cil/manifest.json @@ -0,0 +1,50 @@ +{ + "backend": "toy", + "created_at": "2026-06-19T03:58:08.061598+00:00", + "dataset_name": "cil_toy", + "format": "dovla_cil", + "group_count": 6, + "group_index_path": "group_index.jsonl", + "index_format": "jsonl", + "k": 4, + "num_groups": 6, + "num_records": 24, + "record_count": 24, + "record_index_path": "record_index.jsonl", + "schema_version": "0.1", + "seed": 0, + "shard_count": 3, + "shard_format": "jsonl", + "shard_size": 8, + "shards": [ + { + "format": "jsonl", + "group_ids": [ + "toy_pick_red_mug-s0000-c169878e08f4", + "toy_pick_red_mug-s0001-465ee4d18847" + ], + "path": "shards/shard_000000.jsonl", + "record_count": 8 + }, + { + "format": "jsonl", + "group_ids": [ + "toy_put_red_mug_in_blue_bowl-s0000-6b12d362f826", + "toy_put_red_mug_in_blue_bowl-s0001-24ada188b8c9" + ], + "path": "shards/shard_000001.jsonl", + "record_count": 8 + }, + { + "format": "jsonl", + "group_ids": [ + "toy_green_block_left_of_yellow_block-s0000-65ea39bacce8", + "toy_green_block_left_of_yellow_block-s0001-a370f0947a48" + ], + "path": "shards/shard_000002.jsonl", + "record_count": 8 + } + ], + "task_count": 3, + "version": "0.1" +} diff --git a/outputs/train_smoke_cil/metadata.json b/outputs/train_smoke_cil/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..5200aeee79ea88ada90cb7485367fbd47c232119 --- /dev/null +++ b/outputs/train_smoke_cil/metadata.json @@ -0,0 +1,50 @@ +{ + "backend": "toy", + "created_at": "2026-06-19T03:58:08.061598+00:00", + "dataset_name": "cil_toy", + "format": "dovla_cil", + "group_count": 6, + "group_index_path": "group_index.jsonl", + "index_format": "jsonl", + "k": 4, + "num_groups": 6, + "num_records": 24, + "record_count": 24, + "record_index_path": "record_index.jsonl", + "schema_version": "0.1", + "seed": 0, + "shard_count": 3, + "shard_format": "jsonl", + "shard_size": 8, + "shards": [ + { + "format": "jsonl", + "group_ids": [ + "toy_pick_red_mug-s0000-c169878e08f4", + "toy_pick_red_mug-s0001-465ee4d18847" + ], + "path": "shards/shard_000000.jsonl", + "record_count": 8 + }, + { + "format": "jsonl", + "group_ids": [ + "toy_put_red_mug_in_blue_bowl-s0000-6b12d362f826", + "toy_put_red_mug_in_blue_bowl-s0001-24ada188b8c9" + ], + "path": "shards/shard_000001.jsonl", + "record_count": 8 + }, + { + "format": "jsonl", + "group_ids": [ + "toy_green_block_left_of_yellow_block-s0000-65ea39bacce8", + "toy_green_block_left_of_yellow_block-s0001-a370f0947a48" + ], + "path": "shards/shard_000002.jsonl", + "record_count": 8 + } + ], + "task_count": 3, + "version": "0.1" +} diff --git a/outputs/train_smoke_cil/record_index.jsonl b/outputs/train_smoke_cil/record_index.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..1a3da9ad73fbd86c181bd7d52051756c706665e1 --- /dev/null +++ b/outputs/train_smoke_cil/record_index.jsonl @@ -0,0 +1,24 @@ +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_pick_red_mug-s0000-c169878e08f4", "rank_within_group": 0, "record_id": "rec-42f8019cf00d6724273e97b7", "regret": 0.0, "reward_progress": 1.0, "row_index": 0, "shard_path": "shards/shard_000000.jsonl", "state_hash": "c169878e08f4cbe5378b3bdde5d0d3f5ed33a5da84fc4a5adaa2883abf6b8e54", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_pick_red_mug-s0000-c169878e08f4", "rank_within_group": 2, "record_id": "rec-a917843b2a720b9fb7f3c395", "regret": 0.0, "reward_progress": 1.0, "row_index": 1, "shard_path": "shards/shard_000000.jsonl", "state_hash": "c169878e08f4cbe5378b3bdde5d0d3f5ed33a5da84fc4a5adaa2883abf6b8e54", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "delayed", "failure_type": "no_motion", "group_id": "toy_pick_red_mug-s0000-c169878e08f4", "rank_within_group": 3, "record_id": "rec-ca99954c1c7f8fe0108495dd", "regret": 2.0, "reward_progress": 0.0, "row_index": 2, "shard_path": "shards/shard_000000.jsonl", "state_hash": "c169878e08f4cbe5378b3bdde5d0d3f5ed33a5da84fc4a5adaa2883abf6b8e54", "success": false, "task_id": "toy_pick_red_mug"} +{"candidate_type": "random_negative", "failure_type": "success", "group_id": "toy_pick_red_mug-s0000-c169878e08f4", "rank_within_group": 1, "record_id": "rec-4f2382e74eac26053350cbb4", "regret": 0.0, "reward_progress": 1.0, "row_index": 3, "shard_path": "shards/shard_000000.jsonl", "state_hash": "c169878e08f4cbe5378b3bdde5d0d3f5ed33a5da84fc4a5adaa2883abf6b8e54", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_pick_red_mug-s0001-465ee4d18847", "rank_within_group": 2, "record_id": "rec-67520e5b556277bf2597d277", "regret": 0.0, "reward_progress": 1.0, "row_index": 4, "shard_path": "shards/shard_000000.jsonl", "state_hash": "465ee4d188473a26d86e4e47ba3c05ae1e193a2049638328b3e344bd6b106ca9", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_pick_red_mug-s0001-465ee4d18847", "rank_within_group": 1, "record_id": "rec-46f2ba8446949849b5b93973", "regret": 0.0, "reward_progress": 1.0, "row_index": 5, "shard_path": "shards/shard_000000.jsonl", "state_hash": "465ee4d188473a26d86e4e47ba3c05ae1e193a2049638328b3e344bd6b106ca9", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "random_negative", "failure_type": "success", "group_id": "toy_pick_red_mug-s0001-465ee4d18847", "rank_within_group": 0, "record_id": "rec-2cdff60151815188f165e930", "regret": 0.0, "reward_progress": 1.0, "row_index": 6, "shard_path": "shards/shard_000000.jsonl", "state_hash": "465ee4d188473a26d86e4e47ba3c05ae1e193a2049638328b3e344bd6b106ca9", "success": true, "task_id": "toy_pick_red_mug"} +{"candidate_type": "noop", "failure_type": "no_motion", "group_id": "toy_pick_red_mug-s0001-465ee4d18847", "rank_within_group": 3, "record_id": "rec-2660aaa4ac89153ca3130734", "regret": 2.0, "reward_progress": 0.0, "row_index": 7, "shard_path": "shards/shard_000000.jsonl", "state_hash": "465ee4d188473a26d86e4e47ba3c05ae1e193a2049638328b3e344bd6b106ca9", "success": false, "task_id": "toy_pick_red_mug"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0000-6b12d362f826", "rank_within_group": 0, "record_id": "rec-1d5b4432c9023e08ff69244f", "regret": 0.0, "reward_progress": 1.0, "row_index": 0, "shard_path": "shards/shard_000001.jsonl", "state_hash": "6b12d362f8262b2ebfc993bf5891780e9ba21c5b543596a56d735cde8551b52f", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "wrong_target", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0000-6b12d362f826", "rank_within_group": 3, "record_id": "rec-c7f15539818205d3f5a7209f", "regret": 0.0, "reward_progress": 1.0, "row_index": 1, "shard_path": "shards/shard_000001.jsonl", "state_hash": "6b12d362f8262b2ebfc993bf5891780e9ba21c5b543596a56d735cde8551b52f", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0000-6b12d362f826", "rank_within_group": 2, "record_id": "rec-87241154bc2a039a923ea00f", "regret": 0.0, "reward_progress": 1.0, "row_index": 2, "shard_path": "shards/shard_000001.jsonl", "state_hash": "6b12d362f8262b2ebfc993bf5891780e9ba21c5b543596a56d735cde8551b52f", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "wrong_relation", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0000-6b12d362f826", "rank_within_group": 1, "record_id": "rec-6d0b3e160a3e7f6e160d7b17", "regret": 0.0, "reward_progress": 1.0, "row_index": 3, "shard_path": "shards/shard_000001.jsonl", "state_hash": "6b12d362f8262b2ebfc993bf5891780e9ba21c5b543596a56d735cde8551b52f", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0001-24ada188b8c9", "rank_within_group": 2, "record_id": "rec-b61b3e8e9dd5b4b9519d48aa", "regret": 0.0, "reward_progress": 1.0, "row_index": 4, "shard_path": "shards/shard_000001.jsonl", "state_hash": "24ada188b8c95e11e6b4f3f3ea52cbc6a70458d64ac67356bc2b6c3e4e428fef", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "wrong_target", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0001-24ada188b8c9", "rank_within_group": 0, "record_id": "rec-2b026f471b4bf13d6e338ea0", "regret": 0.0, "reward_progress": 1.0, "row_index": 5, "shard_path": "shards/shard_000001.jsonl", "state_hash": "24ada188b8c95e11e6b4f3f3ea52cbc6a70458d64ac67356bc2b6c3e4e428fef", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_put_red_mug_in_blue_bowl-s0001-24ada188b8c9", "rank_within_group": 1, "record_id": "rec-89542dbe4b01b6829161e313", "regret": 0.0, "reward_progress": 1.0, "row_index": 6, "shard_path": "shards/shard_000001.jsonl", "state_hash": "24ada188b8c95e11e6b4f3f3ea52cbc6a70458d64ac67356bc2b6c3e4e428fef", "success": true, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "noop", "failure_type": "no_motion", "group_id": "toy_put_red_mug_in_blue_bowl-s0001-24ada188b8c9", "rank_within_group": 3, "record_id": "rec-989a8dd832f1b554f60cfadb", "regret": 2.0, "reward_progress": 0.0, "row_index": 7, "shard_path": "shards/shard_000001.jsonl", "state_hash": "24ada188b8c95e11e6b4f3f3ea52cbc6a70458d64ac67356bc2b6c3e4e428fef", "success": false, "task_id": "toy_put_red_mug_in_blue_bowl"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0000-65ea39bacce8", "rank_within_group": 0, "record_id": "rec-beef9c8559b4103d9b488743", "regret": 0.0, "reward_progress": 1.0, "row_index": 0, "shard_path": "shards/shard_000002.jsonl", "state_hash": "65ea39bacce8bf31ab4de353d56e0f8d15a7b79cafeb518ca164669fddd758f9", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "wrong_target", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0000-65ea39bacce8", "rank_within_group": 2, "record_id": "rec-ec37ddf00cf80148f1679778", "regret": 0.0, "reward_progress": 1.0, "row_index": 1, "shard_path": "shards/shard_000002.jsonl", "state_hash": "65ea39bacce8bf31ab4de353d56e0f8d15a7b79cafeb518ca164669fddd758f9", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0000-65ea39bacce8", "rank_within_group": 1, "record_id": "rec-d5c14b3835255e839bd12d69", "regret": 0.0, "reward_progress": 1.0, "row_index": 2, "shard_path": "shards/shard_000002.jsonl", "state_hash": "65ea39bacce8bf31ab4de353d56e0f8d15a7b79cafeb518ca164669fddd758f9", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0000-65ea39bacce8", "rank_within_group": 3, "record_id": "rec-f6f83e32ce67baea3eca9c63", "regret": 0.0, "reward_progress": 1.0, "row_index": 3, "shard_path": "shards/shard_000002.jsonl", "state_hash": "65ea39bacce8bf31ab4de353d56e0f8d15a7b79cafeb518ca164669fddd758f9", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "expert", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0001-a370f0947a48", "rank_within_group": 2, "record_id": "rec-c32bed89f3e1405fb71983fd", "regret": 0.0, "reward_progress": 1.0, "row_index": 4, "shard_path": "shards/shard_000002.jsonl", "state_hash": "a370f0947a48434bd2f0d4f3ac16e8ee85aca6600f46a5d621fe8d49280e0e86", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "wrong_target", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0001-a370f0947a48", "rank_within_group": 1, "record_id": "rec-857fd901b3afc25de53429af", "regret": 0.0, "reward_progress": 1.0, "row_index": 5, "shard_path": "shards/shard_000002.jsonl", "state_hash": "a370f0947a48434bd2f0d4f3ac16e8ee85aca6600f46a5d621fe8d49280e0e86", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0001-a370f0947a48", "rank_within_group": 3, "record_id": "rec-d6a226b104be9a0658cd0907", "regret": 0.0, "reward_progress": 1.0, "row_index": 6, "shard_path": "shards/shard_000002.jsonl", "state_hash": "a370f0947a48434bd2f0d4f3ac16e8ee85aca6600f46a5d621fe8d49280e0e86", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} +{"candidate_type": "near_miss", "failure_type": "success", "group_id": "toy_green_block_left_of_yellow_block-s0001-a370f0947a48", "rank_within_group": 0, "record_id": "rec-20825f957358f3310baba4e7", "regret": 0.0, "reward_progress": 1.0, "row_index": 7, "shard_path": "shards/shard_000002.jsonl", "state_hash": "a370f0947a48434bd2f0d4f3ac16e8ee85aca6600f46a5d621fe8d49280e0e86", "success": true, "task_id": "toy_green_block_left_of_yellow_block"} diff --git a/outputs/train_smoke_cil/shards/shard_000000.jsonl b/outputs/train_smoke_cil/shards/shard_000000.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..b27a2cf48b4f3fb08175b0d77f9ac14b40215f13 --- /dev/null +++ b/outputs/train_smoke_cil/shards/shard_000000.jsonl @@ -0,0 +1,8 @@ +{"action_chunk": {"action_id": "expert-0", "horizon": 2, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0000-c169878e08f4", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 3269563184, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0000-c169878e08f4.pkl", "state_index": 0, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-42f8019cf00d6724273e97b7", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0000", "state_hash": "c169878e08f4cbe5378b3bdde5d0d3f5ed33a5da84fc4a5adaa2883abf6b8e54", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.15]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-3269563184", "horizon": 3, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": "expert-grasp-red_mug", "perturbation": {"dx": -0.08, "dy": -0.1, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "move_to", "position": [-0.08, -0.1, 0.0]}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0000-c169878e08f4", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 3269563184, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0000-c169878e08f4.pkl", "state_index": 0, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.08, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.08, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.08, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.08, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-a917843b2a720b9fb7f3c395", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0000", "state_hash": "c169878e08f4cbe5378b3bdde5d0d3f5ed33a5da84fc4a5adaa2883abf6b8e54", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.3236, -0.0913, -0.03]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.08, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.08, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "delay-3269563184", "horizon": 2, "metadata": {"candidate_type": "delayed", "difficulty": 0.9, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "delay", "steps": 2}}, "representation": "semantic", "skill_type": "delay", "values": [{"command": "delay", "steps": 2}, {"command": "noop"}]}, "candidate_type": "delayed", "failure": {"language_explanation": "The action did not produce meaningful motion.", "metadata": {}, "symbolic_reason": "no object pose, grasp, or articulation change was observed", "type": "no_motion"}, "group_id": "toy_pick_red_mug-s0000-c169878e08f4", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 3269563184, "local_symbolic_explanation": "The action did not produce meaningful motion.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0000-c169878e08f4.pkl", "state_index": 0, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-ca99954c1c7f8fe0108495dd", "regret": 2.0, "reward": {"dense_components": {"relation_partial": 0.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 0.0}, "progress": 0.0, "success": false, "terminal_success": false}, "scene_id": "toy_pick_red_mug-scene-0000", "state_hash": "c169878e08f4cbe5378b3bdde5d0d3f5ed33a5da84fc4a5adaa2883abf6b8e54", "structured_effect": {"articulation_delta": {}, "contact_events": [{"steps": 2, "type": "delay"}, {"type": "noop"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"steps": 2, "type": "delay"}, {"type": "noop"}], "explanation": "Task predicates were not satisfied.", "failure_type": "task_not_satisfied", "success": false}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": false, "success": false}}, "moved_objects": [], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.0]}, "relation_after": {"grasped(red_mug)": false, "success": false}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "random-neg-0-3269563184", "horizon": 2, "metadata": {"candidate_type": "random_negative", "difficulty": 0.8, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "random_negative"}}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}]}, "candidate_type": "random_negative", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0000-c169878e08f4", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 3269563184, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0000-c169878e08f4.pkl", "state_index": 0, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-4f2382e74eac26053350cbb4", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0000", "state_hash": "c169878e08f4cbe5378b3bdde5d0d3f5ed33a5da84fc4a5adaa2883abf6b8e54", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.15]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4036, -0.0087, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4036, -0.0087, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0000", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "expert-0", "horizon": 2, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0001-465ee4d18847", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 1101978868, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0001-465ee4d18847.pkl", "state_index": 1, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.4197, 0.0115, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4197, 0.0115, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-67520e5b556277bf2597d277", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0001", "state_hash": "465ee4d188473a26d86e4e47ba3c05ae1e193a2049638328b3e344bd6b106ca9", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.15]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4197, 0.0115, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-1101978868", "horizon": 3, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": "expert-grasp-red_mug", "perturbation": {"dx": 0.12, "dy": -0.1, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "move_to", "position": [0.12, -0.1, 0.0]}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0001-465ee4d18847", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 1101978868, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0001-465ee4d18847.pkl", "state_index": 1, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [0.12, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.12, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [0.12, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.12, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-46f2ba8446949849b5b93973", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0001", "state_hash": "465ee4d188473a26d86e4e47ba3c05ae1e193a2049638328b3e344bd6b106ca9", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.5397000000000001, -0.1115, -0.03]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [0.12, -0.1, 0.0], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.12, -0.1, 0.0], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "random-neg-0-1101978868", "horizon": 2, "metadata": {"candidate_type": "random_negative", "difficulty": 0.8, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "random_negative"}}, "representation": "semantic", "skill_type": "grasp", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}]}, "candidate_type": "random_negative", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_pick_red_mug-s0001-465ee4d18847", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 1101978868, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0001-465ee4d18847.pkl", "state_index": 1, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.4197, 0.0115, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 2, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4197, 0.0115, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-2cdff60151815188f165e930", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 1.0, "target_moved": 1.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_pick_red_mug-scene-0001", "state_hash": "465ee4d188473a26d86e4e47ba3c05ae1e193a2049638328b3e344bd6b106ca9", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.15]}, "relation_after": {"grasped(red_mug)": true, "success": true}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": true, "lifted": true, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.18], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.4197, 0.0115, 0.18], "gripper": "closed", "held_object": "red_mug"}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} +{"action_chunk": {"action_id": "noop-1101978868", "horizon": 1, "metadata": {"candidate_type": "noop", "difficulty": 0.95, "intended_relation": "grasped", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "no_op"}}, "representation": "semantic", "skill_type": "noop", "values": [{"command": "noop"}]}, "candidate_type": "noop", "failure": {"language_explanation": "The action did not produce meaningful motion.", "metadata": {}, "symbolic_reason": "no object pose, grasp, or articulation change was observed", "type": "no_motion"}, "group_id": "toy_pick_red_mug-s0001-465ee4d18847", "instruction": "Pick up the red mug.", "instruction_family": {"family": "pick", "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "templates": ["Pick up the red mug."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 1101978868, "local_symbolic_explanation": "The action did not produce meaningful motion.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_pick_red_mug-s0001-465ee4d18847.pkl", "state_index": 1, "task_index": 0}, "next_observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "target_position": 1.0, "task_id": "toy_pick_red_mug"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-2660aaa4ac89153ca3130734", "regret": 2.0, "reward": {"dense_components": {"relation_partial": 0.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 0.0}, "progress": 0.0, "success": false, "terminal_success": false}, "scene_id": "toy_pick_red_mug-scene-0001", "state_hash": "465ee4d188473a26d86e4e47ba3c05ae1e193a2049638328b3e344bd6b106ca9", "structured_effect": {"articulation_delta": {}, "contact_events": [{"type": "noop"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"type": "noop"}], "explanation": "Task predicates were not satisfied.", "failure_type": "task_not_satisfied", "success": false}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"grasped(red_mug)": false, "success": false}}, "moved_objects": [], "object_pose_delta": {"red_mug": [0.0, 0.0, 0.0]}, "relation_after": {"grasped(red_mug)": false, "success": false}, "relation_before": {"grasped(red_mug)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4197, 0.0115, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_pick_red_mug-scene-0001", "task_id": "toy_pick_red_mug", "workspace": null}}, "task_id": "toy_pick_red_mug", "version": "0.1"} diff --git a/outputs/train_smoke_cil/shards/shard_000001.jsonl b/outputs/train_smoke_cil/shards/shard_000001.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..cf580310aa29e0feac4e059bc66eae13017e95bf --- /dev/null +++ b/outputs/train_smoke_cil/shards/shard_000001.jsonl @@ -0,0 +1,8 @@ +{"action_chunk": {"action_id": "expert-0", "horizon": 3, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "inside", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.128, 0.0528, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0000-6b12d362f826", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 3813448054, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0000-6b12d362f826.pkl", "state_index": 0, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.128, 0.0528, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.128, 0.0528, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.128, 0.0528, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.128, 0.0528, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-1d5b4432c9023e08ff69244f", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.8699312987941002}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "state_hash": "6b12d362f8262b2ebfc993bf5891780e9ba21c5b543596a56d735cde8551b52f", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.3016, 0.0601, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.128, 0.0528, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.128, 0.0528, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "wrong-target-blue_bowl-0-3813448054", "horizon": 3, "metadata": {"candidate_type": "wrong_target", "difficulty": 0.6, "intended_relation": "inside", "intended_target": "blue_bowl", "parent_action_id": "expert-place-red_mug-inside-blue_bowl", "perturbation": {"kind": "target_swap"}, "planner": "toy_symbolic", "target_replacement": "blue_bowl"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "blue_bowl"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.128, 0.0528, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "wrong_target", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0000-6b12d362f826", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 3813448054, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0000-6b12d362f826.pkl", "state_index": 0, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.128, 0.0528, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.128, 0.0528, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.128, 0.0528, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.128, 0.0528, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-c7f15539818205d3f5a7209f", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.8699312987941002}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "state_hash": "6b12d362f8262b2ebfc993bf5891780e9ba21c5b543596a56d735cde8551b52f", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "blue_bowl", "type": "proximity"}, {"distance": 0.3421616138610525, "object": "red_mug", "type": "failed_grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": false, "metadata": {"info": {"contacts": [{"object": "blue_bowl", "type": "proximity"}, {"distance": 0.3421616138610525, "object": "red_mug", "type": "failed_grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.3016, 0.0601, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.128, 0.0528, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.128, 0.0528, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-3813448054", "horizon": 3, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "inside", "intended_target": "red_mug", "parent_action_id": "expert-place-red_mug-inside-blue_bowl", "perturbation": {"dx": -0.12, "dy": -0.04, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.248, 0.012799999999999999, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0000-6b12d362f826", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 3813448054, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0000-6b12d362f826.pkl", "state_index": 0, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.248, 0.012799999999999999, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.248, 0.012799999999999999, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.248, 0.012799999999999999, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.248, 0.012799999999999999, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-87241154bc2a039a923ea00f", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.5686109211311835}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "state_hash": "6b12d362f8262b2ebfc993bf5891780e9ba21c5b543596a56d735cde8551b52f", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.18159999999999998, 0.0201, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.248, 0.012799999999999999, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.248, 0.012799999999999999, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "wrong-relation-red_mug-next_to-3813448054", "horizon": 3, "metadata": {"candidate_type": "wrong_relation", "difficulty": 0.55, "intended_relation": "next_to", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"from": "inside", "kind": "relation_swap", "to": "next_to"}}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "object": "red_mug", "position": [-0.048, 0.0528, 0.06], "reference": "blue_bowl", "relation": "next_to"}]}, "candidate_type": "wrong_relation", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0000-6b12d362f826", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 3813448054, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0000-6b12d362f826.pkl", "state_index": 0, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.048, 0.0528, 0.06], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.048, 0.0528, 0.21], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.048, 0.0528, 0.06], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.048, 0.0528, 0.21], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-6d0b3e160a3e7f6e160d7b17", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.7221731324370514}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "state_hash": "6b12d362f8262b2ebfc993bf5891780e9ba21c5b543596a56d735cde8551b52f", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "next_to", "type": "place"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "next_to", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.3816, 0.0601, 0.03]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.048, 0.0528, 0.06], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.048, 0.0528, 0.21], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.128, 0.0528, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4296, -0.0073, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0000", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "expert-0", "horizon": 3, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "inside", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.168, 0.0095, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0001-24ada188b8c9", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 1965660509, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0001-24ada188b8c9.pkl", "state_index": 1, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.168, 0.0095, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.168, 0.0095, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.168, 0.0095, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.168, 0.0095, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-b61b3e8e9dd5b4b9519d48aa", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.839960215566157}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "state_hash": "24ada188b8c95e11e6b4f3f3ea52cbc6a70458d64ac67356bc2b6c3e4e428fef", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.2498, 0.0083, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.168, 0.0095, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.168, 0.0095, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "wrong-target-blue_bowl-0-1965660509", "horizon": 3, "metadata": {"candidate_type": "wrong_target", "difficulty": 0.6, "intended_relation": "inside", "intended_target": "blue_bowl", "parent_action_id": "expert-place-red_mug-inside-blue_bowl", "perturbation": {"kind": "target_swap"}, "planner": "toy_symbolic", "target_replacement": "blue_bowl"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "blue_bowl"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.168, 0.0095, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "wrong_target", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0001-24ada188b8c9", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 1965660509, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0001-24ada188b8c9.pkl", "state_index": 1, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.168, 0.0095, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.168, 0.0095, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.168, 0.0095, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.168, 0.0095, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-2b026f471b4bf13d6e338ea0", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.839960215566157}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "state_hash": "24ada188b8c95e11e6b4f3f3ea52cbc6a70458d64ac67356bc2b6c3e4e428fef", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "blue_bowl", "type": "proximity"}, {"distance": 0.29149430526169806, "object": "red_mug", "type": "failed_grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": false, "metadata": {"info": {"contacts": [{"object": "blue_bowl", "type": "proximity"}, {"distance": 0.29149430526169806, "object": "red_mug", "type": "failed_grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.2498, 0.0083, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.168, 0.0095, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.168, 0.0095, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-1965660509", "horizon": 3, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "inside", "intended_target": "red_mug", "parent_action_id": "expert-place-red_mug-inside-blue_bowl", "perturbation": {"dx": 0.08, "dy": -0.1, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "place_at", "values": [{"command": "move_to", "object": "red_mug"}, {"command": "grasp", "object": "red_mug"}, {"command": "place_at", "container": "blue_bowl", "object": "red_mug", "position": [-0.08800000000000001, -0.09050000000000001, 0.07], "reference": "blue_bowl", "relation": "inside"}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0001-24ada188b8c9", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 1965660509, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0001-24ada188b8c9.pkl", "state_index": 1, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.08800000000000001, -0.09050000000000001, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [-0.08800000000000001, -0.09050000000000001, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 3, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.08800000000000001, -0.09050000000000001, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.08800000000000001, -0.09050000000000001, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-89542dbe4b01b6829161e313", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 1.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.46321024435227165}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "state_hash": "24ada188b8c95e11e6b4f3f3ea52cbc6a70458d64ac67356bc2b6c3e4e428fef", "structured_effect": {"articulation_delta": {}, "contact_events": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "grasp_success": true, "metadata": {"info": {"contacts": [{"object": "red_mug", "type": "proximity"}, {"object": "red_mug", "type": "grasp"}, {"object": "red_mug", "reference": "blue_bowl", "relation": "inside", "type": "place"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": true, "success": true}}, "moved_objects": ["red_mug"], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.3298, -0.09170000000000002, 0.04000000000000001]}, "relation_after": {"inside(red_mug,blue_bowl)": true, "success": true}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "inside": "blue_bowl", "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.08800000000000001, -0.09050000000000001, 0.07], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [-0.08800000000000001, -0.09050000000000001, 0.22], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} +{"action_chunk": {"action_id": "noop-1965660509", "horizon": 1, "metadata": {"candidate_type": "noop", "difficulty": 0.95, "intended_relation": "inside", "intended_target": "red_mug", "parent_action_id": null, "perturbation": {"kind": "no_op"}}, "representation": "semantic", "skill_type": "noop", "values": [{"command": "noop"}]}, "candidate_type": "noop", "failure": {"language_explanation": "The action did not produce meaningful motion.", "metadata": {}, "symbolic_reason": "no object pose, grasp, or articulation change was observed", "type": "no_motion"}, "group_id": "toy_put_red_mug_in_blue_bowl-s0001-24ada188b8c9", "instruction": "Put the red mug in the blue bowl.", "instruction_family": {"family": "place_inside", "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "templates": ["Put the red mug in the blue bowl."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 1965660509, "local_symbolic_explanation": "The action did not produce meaningful motion.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_put_red_mug_in_blue_bowl-s0001-24ada188b8c9.pkl", "state_index": 1, "task_index": 1}, "next_observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "target_position": 1.1, "task_id": "toy_put_red_mug_in_blue_bowl"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-989a8dd832f1b554f60cfadb", "regret": 2.0, "reward": {"dense_components": {"relation_partial": 0.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 0.0, "target_moved_closer": 0.0}, "progress": 0.0, "success": false, "terminal_success": false}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "state_hash": "24ada188b8c95e11e6b4f3f3ea52cbc6a70458d64ac67356bc2b6c3e4e428fef", "structured_effect": {"articulation_delta": {}, "contact_events": [{"type": "noop"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"type": "noop"}], "explanation": "Task predicates were not satisfied.", "failure_type": "task_not_satisfied", "success": false}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"inside(red_mug,blue_bowl)": false, "success": false}}, "moved_objects": [], "object_pose_delta": {"blue_bowl": [0.0, 0.0, 0.0], "red_mug": [0.0, 0.0, 0.0]}, "relation_after": {"inside(red_mug,blue_bowl)": false, "success": false}, "relation_before": {"inside(red_mug,blue_bowl)": false}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"blue_bowl": {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "grasped": false, "lifted": false, "mass": 0.4, "object_id": "blue_bowl", "position": [-0.168, 0.0095, 0.03], "scale": 1.1, "shape": "round"}, "red_mug": {"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "grasped": false, "lifted": false, "mass": 0.3, "object_id": "red_mug", "position": [-0.4178, 0.0012, 0.03], "scale": 1.0, "shape": "cylindrical"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_put_red_mug_in_blue_bowl-scene-0001", "task_id": "toy_put_red_mug_in_blue_bowl", "workspace": null}}, "task_id": "toy_put_red_mug_in_blue_bowl", "version": "0.1"} diff --git a/outputs/train_smoke_cil/shards/shard_000002.jsonl b/outputs/train_smoke_cil/shards/shard_000002.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..55d4ff8d7109528f2ca9d711eed0afee1774e749 --- /dev/null +++ b/outputs/train_smoke_cil/shards/shard_000002.jsonl @@ -0,0 +1,8 @@ +{"action_chunk": {"action_id": "expert-0", "horizon": 1, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "left_of", "intended_target": "green_block", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": 0.0683, "dy": 0.0285, "object": "green_block"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0000-65ea39bacce8", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 4089500932, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0000-65ea39bacce8.pkl", "state_index": 0, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.326, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.326, 0.0487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.326, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.326, 0.0487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-beef9c8559b4103d9b488743", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.25873612265544277}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "state_hash": "65ea39bacce8bf31ab4de353d56e0f8d15a7b79cafeb518ca164669fddd758f9", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": 0.0683, "dy": 0.0285, "object": "green_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": 0.0683, "dy": 0.0285, "object": "green_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["green_block"], "object_pose_delta": {"green_block": [0.06829999999999997, 0.0285, 0.0], "yellow_block": [0.0, 0.0, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.326, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.326, 0.0487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "wrong-target-yellow_block-0-4089500932", "horizon": 1, "metadata": {"candidate_type": "wrong_target", "difficulty": 0.6, "intended_relation": "left_of", "intended_target": "yellow_block", "parent_action_id": "expert-push-green_block-left_of-yellow_block", "perturbation": {"kind": "target_swap"}, "planner": "toy_symbolic", "target_replacement": "yellow_block"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": 0.0683, "dy": 0.0285, "object": "yellow_block"}]}, "candidate_type": "wrong_target", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0000-65ea39bacce8", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 4089500932, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0000-65ea39bacce8.pkl", "state_index": 0, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.0577, 0.0772, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.0577, 0.0772, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.0577, 0.0772, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.0577, 0.0772, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-ec37ddf00cf80148f1679778", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 0.0, "target_moved_closer": 0.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "state_hash": "65ea39bacce8bf31ab4de353d56e0f8d15a7b79cafeb518ca164669fddd758f9", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": 0.0683, "dy": 0.0285, "object": "yellow_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": 0.0683, "dy": 0.0285, "object": "yellow_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["yellow_block"], "object_pose_delta": {"green_block": [0.0, 0.0, 0.0], "yellow_block": [0.0683, 0.028500000000000004, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.0577, 0.0772, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.0577, 0.0772, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-4089500932", "horizon": 1, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "left_of", "intended_target": "green_block", "parent_action_id": "expert-push-green_block-left_of-yellow_block", "perturbation": {"dx": -0.12, "dy": 0.1, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": -0.051699999999999996, "dy": 0.1285, "object": "green_block"}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0000-65ea39bacce8", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 4089500932, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0000-65ea39bacce8.pkl", "state_index": 0, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.446, 0.1487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.446, 0.1487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.446, 0.1487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.446, 0.1487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-d5c14b3835255e839bd12d69", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "state_hash": "65ea39bacce8bf31ab4de353d56e0f8d15a7b79cafeb518ca164669fddd758f9", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": -0.051699999999999996, "dy": 0.1285, "object": "green_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": -0.051699999999999996, "dy": 0.1285, "object": "green_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["green_block"], "object_pose_delta": {"green_block": [-0.051700000000000024, 0.1285, 0.0], "yellow_block": [0.0, 0.0, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.446, 0.1487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.446, 0.1487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-1-4089500932", "horizon": 1, "metadata": {"candidate_type": "near_miss", "difficulty": 0.39999999999999997, "intended_relation": "left_of", "intended_target": "green_block", "parent_action_id": "expert-push-green_block-left_of-yellow_block", "perturbation": {"dx": -0.06, "dy": 0.05, "kind": "release_offset"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": 0.0683, "dy": 0.0285, "object": "green_block"}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0000-65ea39bacce8", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 4089500932, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0000-65ea39bacce8.pkl", "state_index": 0, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.326, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.326, 0.0487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.326, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.326, 0.0487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-f6f83e32ce67baea3eca9c63", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.25873612265544277}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "state_hash": "65ea39bacce8bf31ab4de353d56e0f8d15a7b79cafeb518ca164669fddd758f9", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": 0.0683, "dy": 0.0285, "object": "green_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": 0.0683, "dy": 0.0285, "object": "green_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["green_block"], "object_pose_delta": {"green_block": [0.06829999999999997, 0.0285, 0.0], "yellow_block": [0.0, 0.0, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.326, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.326, 0.0487, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3943, 0.0202, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.126, 0.0487, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0000", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "expert-0", "horizon": 1, "metadata": {"candidate_type": "expert", "difficulty": 0.0, "intended_relation": "left_of", "intended_target": "green_block", "parent_action_id": null, "perturbation": {"kind": "none"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": 0.0434, "dy": 0.0368, "object": "green_block"}]}, "candidate_type": "expert", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0001-a370f0947a48", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 0, "backend": "toy", "group_seed": 3905794541, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0001-a370f0947a48.pkl", "state_index": 1, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.3599, 0.0439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.3599, 0.0439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 2, "record_id": "rec-c32bed89f3e1405fb71983fd", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.1875407885543134}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "state_hash": "a370f0947a48434bd2f0d4f3ac16e8ee85aca6600f46a5d621fe8d49280e0e86", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": 0.0434, "dy": 0.0368, "object": "green_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": 0.0434, "dy": 0.0368, "object": "green_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["green_block"], "object_pose_delta": {"green_block": [0.043399999999999994, 0.0368, 0.0], "yellow_block": [0.0, 0.0, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.3599, 0.0439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "wrong-target-yellow_block-0-3905794541", "horizon": 1, "metadata": {"candidate_type": "wrong_target", "difficulty": 0.6, "intended_relation": "left_of", "intended_target": "yellow_block", "parent_action_id": "expert-push-green_block-left_of-yellow_block", "perturbation": {"kind": "target_swap"}, "planner": "toy_symbolic", "target_replacement": "yellow_block"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": 0.0434, "dy": 0.0368, "object": "yellow_block"}]}, "candidate_type": "wrong_target", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0001-a370f0947a48", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 1, "backend": "toy", "group_seed": 3905794541, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0001-a370f0947a48.pkl", "state_index": 1, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1165, 0.0807, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.1165, 0.0807, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1165, 0.0807, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.1165, 0.0807, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 1, "record_id": "rec-857fd901b3afc25de53429af", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 0.0, "target_moved_closer": 0.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "state_hash": "a370f0947a48434bd2f0d4f3ac16e8ee85aca6600f46a5d621fe8d49280e0e86", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": 0.0434, "dy": 0.0368, "object": "yellow_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": 0.0434, "dy": 0.0368, "object": "yellow_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["yellow_block"], "object_pose_delta": {"green_block": [0.0, 0.0, 0.0], "yellow_block": [0.04339999999999998, 0.03679999999999999, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1165, 0.0807, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.1165, 0.0807, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-0-3905794541", "horizon": 1, "metadata": {"candidate_type": "near_miss", "difficulty": 0.35, "intended_relation": "left_of", "intended_target": "green_block", "parent_action_id": "expert-push-green_block-left_of-yellow_block", "perturbation": {"dx": -0.08, "dy": 0.1, "dz": 0.0, "kind": "position_offset", "units": "normalized"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": -0.0366, "dy": 0.1368, "object": "green_block"}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0001-a370f0947a48", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 2, "backend": "toy", "group_seed": 3905794541, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0001-a370f0947a48.pkl", "state_index": 1, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4399, 0.1439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.4399, 0.1439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4399, 0.1439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.4399, 0.1439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 3, "record_id": "rec-d6a226b104be9a0658cd0907", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.0}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "state_hash": "a370f0947a48434bd2f0d4f3ac16e8ee85aca6600f46a5d621fe8d49280e0e86", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": -0.0366, "dy": 0.1368, "object": "green_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": -0.0366, "dy": 0.1368, "object": "green_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["green_block"], "object_pose_delta": {"green_block": [-0.03660000000000002, 0.1368, 0.0], "yellow_block": [0.0, 0.0, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4399, 0.1439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.4399, 0.1439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} +{"action_chunk": {"action_id": "near-0-1-3905794541", "horizon": 1, "metadata": {"candidate_type": "near_miss", "difficulty": 0.39999999999999997, "intended_relation": "left_of", "intended_target": "green_block", "parent_action_id": "expert-push-green_block-left_of-yellow_block", "perturbation": {"dx": -0.04, "dy": 0.05, "kind": "release_offset"}, "planner": "toy_symbolic"}, "representation": "semantic", "skill_type": "push", "values": [{"command": "push", "dx": 0.0434, "dy": 0.0368, "object": "green_block"}]}, "candidate_type": "near_miss", "failure": {"language_explanation": "The task was completed successfully.", "metadata": {}, "symbolic_reason": "all success predicates are satisfied", "type": "success"}, "group_id": "toy_green_block_left_of_yellow_block-s0001-a370f0947a48", "instruction": "Put the green block left of the yellow block.", "instruction_family": {"family": "spatial_place", "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "templates": ["Put the green block left of the yellow block."]}, "metadata": {"action_index": 3, "backend": "toy", "group_seed": 3905794541, "local_symbolic_explanation": "The task was completed successfully.", "semantic_annotation_enabled": false, "state_blob_ref": "states/toy_green_block_left_of_yellow_block-s0001-a370f0947a48.pkl", "state_index": 1, "task_index": 2}, "next_observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [-0.3599, 0.0439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 1, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.3599, 0.0439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "next_observation_ref": null, "observation_inline": {"backend": "toy", "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "step_count": 0, "symbolic_state": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "target_position": 1.2, "task_id": "toy_green_block_left_of_yellow_block"}, "observation_ref": null, "rank_within_group": 0, "record_id": "rec-20825f957358f3310baba4e7", "regret": 0.0, "reward": {"dense_components": {"relation_partial": 1.0, "target_grasped": 0.0, "target_lifted": 0.0, "target_moved": 1.0, "target_moved_closer": 0.1875407885543134}, "progress": 1.0, "success": true, "terminal_success": true}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "state_hash": "a370f0947a48434bd2f0d4f3ac16e8ee85aca6600f46a5d621fe8d49280e0e86", "structured_effect": {"articulation_delta": {}, "contact_events": [{"dx": 0.0434, "dy": 0.0368, "object": "green_block", "type": "push"}], "grasp_success": null, "metadata": {"info": {"contacts": [{"dx": 0.0434, "dy": 0.0368, "object": "green_block", "type": "push"}], "explanation": "Task predicates satisfied.", "failure_type": null, "success": true}, "metrics": {"delta_lifted_z": 0.0, "delta_near_threshold": 0.0}, "predicates": {"left_of(green_block,yellow_block)": true, "success": true}}, "moved_objects": ["green_block"], "object_pose_delta": {"green_block": [0.043399999999999994, 0.0368, 0.0], "yellow_block": [0.0, 0.0, 0.0]}, "relation_after": {"left_of(green_block,yellow_block)": true, "success": true}, "relation_before": {"left_of(green_block,yellow_block)": true}, "symbolic_after": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.3599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [-0.3599, 0.0439, 0.18], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}, "symbolic_before": {"lifted_z": 0.12, "near_threshold": 0.25, "objects": {"green_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "green_block", "position": [-0.4033, 0.0071, 0.03], "scale": 1.0, "shape": "cube"}, "yellow_block": {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "grasped": false, "lifted": false, "mass": 0.5, "object_id": "yellow_block", "position": [-0.1599, 0.0439, 0.03], "scale": 1.0, "shape": "cube"}}, "relations": {}, "robot": {"eef_position": [0.0, -0.6, 0.25], "gripper": "open", "held_object": null}, "scene_id": "toy_green_block_left_of_yellow_block-scene-0001", "task_id": "toy_green_block_left_of_yellow_block", "workspace": null}}, "task_id": "toy_green_block_left_of_yellow_block", "version": "0.1"} diff --git a/outputs/train_smoke_run/best.pt b/outputs/train_smoke_run/best.pt new file mode 100644 index 0000000000000000000000000000000000000000..8eff95c2798eb67a8da67d770f1eac921b338ab3 --- /dev/null +++ b/outputs/train_smoke_run/best.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a444c14f94051a829bcccf35186c250073dbe60fc75e0e0bd255bf8f915499e +size 1693 diff --git a/outputs/train_smoke_run/latest.pt b/outputs/train_smoke_run/latest.pt new file mode 100644 index 0000000000000000000000000000000000000000..8eff95c2798eb67a8da67d770f1eac921b338ab3 --- /dev/null +++ b/outputs/train_smoke_run/latest.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a444c14f94051a829bcccf35186c250073dbe60fc75e0e0bd255bf8f915499e +size 1693 diff --git a/outputs/train_smoke_run/metrics.json b/outputs/train_smoke_run/metrics.json new file mode 100644 index 0000000000000000000000000000000000000000..17ef522a16809b1279fa27360f8d2e8ef2dca883 --- /dev/null +++ b/outputs/train_smoke_run/metrics.json @@ -0,0 +1,35 @@ +{ + "best": { + "bc_loss": 0.0, + "progress_mae": 0.0, + "rank_acc": 0.0, + "rank_loss": 0.0, + "regret_mae": 0.0, + "success_accuracy": 1.0, + "total_loss": 0.0 + }, + "history": [ + { + "epoch": 1, + "train": { + "bc_loss": 0.0, + "progress_mae": 0.0, + "rank_acc": 0.5, + "rank_loss": 0.0, + "regret_mae": 0.0, + "success_accuracy": 1.0, + "total_loss": 0.0 + }, + "val": { + "bc_loss": 0.0, + "progress_mae": 0.0, + "rank_acc": 0.0, + "rank_loss": 0.0, + "regret_mae": 0.0, + "success_accuracy": 1.0, + "total_loss": 0.0 + } + } + ], + "torch_available": false +} diff --git a/outputs/train_smoke_run/resolved_config.json b/outputs/train_smoke_run/resolved_config.json new file mode 100644 index 0000000000000000000000000000000000000000..3f0eb2d227928af4deb939ccdba401d132dd4b49 --- /dev/null +++ b/outputs/train_smoke_run/resolved_config.json @@ -0,0 +1,38 @@ +{ + "action_dim": 8, + "action_horizon": 4, + "batch_groups": 2, + "batch_size_groups": null, + "dataset_dir": "outputs/train_smoke_cil", + "device": "auto", + "effect_dim": 32, + "epochs": 1, + "hidden_dim": 64, + "lang_dim": 64, + "learning_rate": 0.001, + "losses": { + "bc": 1.0, + "bc_best_action": 1.0, + "causal_contrastive": 0.5, + "contrast": 0.5, + "effect": 1.0, + "forward_effect_prediction": 1.0, + "lang_pair": 0.25, + "language_minimal_pair": 0.25, + "progress": 1.0, + "rank": 1.0, + "regret": 0.5, + "regret_prediction": 0.5, + "same_state_pairwise_ranking": 1.0, + "success": 1.0 + }, + "lr": null, + "obs_dim": 32, + "output_dir": "outputs/train_smoke_run", + "pair_count_per_group": 8, + "records_per_group": 4, + "seed": 0, + "val_fraction": 0.2, + "wandb": false, + "weight_decay": 0.0 +} diff --git a/outputs/train_smoke_tasks.jsonl b/outputs/train_smoke_tasks.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..35f0f38f5e7221913a433e9a09364bbf80510c23 --- /dev/null +++ b/outputs/train_smoke_tasks.jsonl @@ -0,0 +1,3 @@ +{"allowed_skills": ["reach", "grasp"], "distractor_object_ids": [], "family": "pick", "instruction_templates": ["Pick up the red mug."], "metadata": {"target_position": 1.0, "tolerance": 0.05}, "minimal_pair_factors": {"reference_object": [], "relation": ["grasped", "lifted"], "target_object": ["red_mug"]}, "objects": [{"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "mass": 0.3, "object_id": "red_mug", "scale": 1.0, "shape": "cylindrical"}], "reference_object_ids": [], "success_predicates": [{"args": ["red_mug"], "name": "grasped"}], "target_object_ids": ["red_mug"], "task_id": "toy_pick_red_mug"} +{"allowed_skills": ["reach", "grasp", "place"], "distractor_object_ids": [], "family": "place_inside", "instruction_templates": ["Put the red mug in the blue bowl."], "metadata": {"target_position": 1.1, "tolerance": 0.05}, "minimal_pair_factors": {"reference_object": ["blue_bowl"], "relation": ["inside", "near"], "target_object": ["red_mug"]}, "objects": [{"affordances": ["graspable", "container"], "category": "mug", "color": "red", "friction": 0.8, "mass": 0.3, "object_id": "red_mug", "scale": 1.0, "shape": "cylindrical"}, {"affordances": ["container"], "category": "bowl", "color": "blue", "friction": 0.7, "mass": 0.4, "object_id": "blue_bowl", "scale": 1.1, "shape": "round"}], "reference_object_ids": ["blue_bowl"], "success_predicates": [{"args": ["red_mug", "blue_bowl"], "name": "inside"}], "target_object_ids": ["red_mug"], "task_id": "toy_put_red_mug_in_blue_bowl"} +{"allowed_skills": ["push", "place"], "distractor_object_ids": [], "family": "spatial_place", "instruction_templates": ["Put the green block left of the yellow block."], "metadata": {"target_position": 1.2, "tolerance": 0.05}, "minimal_pair_factors": {"reference_object": ["yellow_block"], "relation": ["left_of", "right_of"], "target_object": ["green_block"]}, "objects": [{"affordances": ["pushable", "graspable"], "category": "block", "color": "green", "friction": 0.9, "mass": 0.5, "object_id": "green_block", "scale": 1.0, "shape": "cube"}, {"affordances": ["pushable", "graspable"], "category": "block", "color": "yellow", "friction": 0.9, "mass": 0.5, "object_id": "yellow_block", "scale": 1.0, "shape": "cube"}], "reference_object_ids": ["yellow_block"], "success_predicates": [{"args": ["green_block", "yellow_block"], "name": "left_of"}], "target_object_ids": ["green_block"], "task_id": "toy_green_block_left_of_yellow_block"} diff --git a/outputs/wheels/pyserial-3.5-py2.py3-none-any.whl b/outputs/wheels/pyserial-3.5-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..775128811668ca9442c8f3fddea83ea5613e1493 Binary files /dev/null and b/outputs/wheels/pyserial-3.5-py2.py3-none-any.whl differ diff --git a/scripts/auto_sync_hf.py b/scripts/auto_sync_hf.py index 481369e78a332d01b71aeed4e2a6034627a2d7ed..e7e1c0995e37749409fee7e3c29429ce34299d92 100644 --- a/scripts/auto_sync_hf.py +++ b/scripts/auto_sync_hf.py @@ -18,21 +18,24 @@ REPO_ROOT = Path("/lustre09/project/6037638/knguy52/vla") IGNORE_PATTERNS = [ ".git/*", ".venv/*", - "*.pt", - "*.pth", - "*.ckpt", + # Don't ignore checkpoints - we want them synced! + # "*.pt", + # "*.pth", + # "*.ckpt", "*.h5", "*.hdf5", "*.pkl", - "logs/*", - "*.log", + "*.pickle", + # Keep logs for monitoring + # "logs/*", "*.out", "*.err", "slurm-*.out", "__pycache__/*", ".pytest_cache/*", ".ruff_cache/*", - "outputs/*", + # Don't ignore outputs - want results synced + # "outputs/*", "wandb/*", "scratch/*", "*token*", diff --git a/scripts/sync_training_outputs.py b/scripts/sync_training_outputs.py new file mode 100644 index 0000000000000000000000000000000000000000..5176c1d85aecb54aaa5fb54e11219fb22f2746d8 --- /dev/null +++ b/scripts/sync_training_outputs.py @@ -0,0 +1,126 @@ +#!/usr/bin/env python3 +""" +Sync training outputs and checkpoints to Hugging Face. +Monitors training jobs and uploads results when complete. +""" +import time +import subprocess +import json +from pathlib import Path +from huggingface_hub import HfApi, upload_file, upload_folder + +REPO_ID = "anhtld/vla" +TRAINING_JOBS = [14749139] # Add job IDs to monitor +CHECK_INTERVAL = 300 # 5 minutes +SCRATCH = Path("/scratch/knguy52/dovla/experiments") + +def check_job_status(job_id): + """Check if SLURM job completed""" + try: + result = subprocess.run( + ["sacct", "-j", str(job_id), "--format=State", "--noheader"], + capture_output=True, + text=True, + check=True + ) + state = result.stdout.strip().split()[0] + return state + except: + return "UNKNOWN" + +def upload_checkpoint(checkpoint_path, seed): + """Upload single checkpoint to HF""" + try: + print(f"📦 Uploading checkpoint: {checkpoint_path.name}") + upload_file( + path_or_fileobj=str(checkpoint_path), + path_in_repo=f"checkpoints/h16_seed{seed}_{checkpoint_path.name}", + repo_id=REPO_ID, + commit_message=f"Add h=16 training checkpoint (seed {seed})" + ) + print(f"✅ Uploaded: {checkpoint_path.name}") + return True + except Exception as e: + print(f"❌ Upload failed: {e}") + return False + +def upload_training_results(run_dir, seed): + """Upload training logs and results""" + try: + print(f"📊 Uploading training results (seed {seed})...") + + # Upload best checkpoint + best_pt = run_dir / "best.pt" + if best_pt.exists(): + upload_checkpoint(best_pt, seed) + + # Upload training log + log_files = list(Path("logs").glob(f"train_h16_*_{seed}.out")) + for log_file in log_files: + if log_file.exists(): + upload_file( + path_or_fileobj=str(log_file), + path_in_repo=f"training_logs/{log_file.name}", + repo_id=REPO_ID, + commit_message=f"Add training log (seed {seed})" + ) + print(f"✅ Uploaded log: {log_file.name}") + + # Upload results JSON if exists + results_json = run_dir / "results.json" + if results_json.exists(): + upload_file( + path_or_fileobj=str(results_json), + path_in_repo=f"results/h16_seed{seed}_results.json", + repo_id=REPO_ID, + commit_message=f"Add training results (seed {seed})" + ) + print(f"✅ Uploaded: results.json") + + return True + except Exception as e: + print(f"❌ Upload failed: {e}") + return False + +def main(): + print("="*60) + print("🔄 Training Output Monitor & Uploader") + print(f"Monitoring jobs: {TRAINING_JOBS}") + print(f"Check interval: {CHECK_INTERVAL}s") + print("="*60) + print() + + uploaded = set() + + while True: + for job_id in TRAINING_JOBS: + if job_id in uploaded: + continue + + status = check_job_status(job_id) + print(f"[{time.strftime('%H:%M:%S')}] Job {job_id}: {status}") + + if status == "COMPLETED": + print(f"🎉 Job {job_id} completed! Uploading outputs...") + + # Upload for each seed (0, 1, 2) + for seed in range(3): + run_dir = SCRATCH / f"h16_policy_runs/seed_{seed}" + if run_dir.exists(): + upload_training_results(run_dir, seed) + + uploaded.add(job_id) + print(f"✅ All outputs uploaded for job {job_id}") + + elif status == "FAILED": + print(f"❌ Job {job_id} failed, skipping upload") + uploaded.add(job_id) + + if len(uploaded) == len(TRAINING_JOBS): + print("✅ All jobs processed, exiting") + break + + time.sleep(CHECK_INTERVAL) + +if __name__ == "__main__": + main()