From 63950d1412f2ddc3baedd08a00a1aa0b510f36ad Mon Sep 17 00:00:00 2001 From: fenghaolin Date: Wed, 14 Jul 2021 21:27:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E7=89=88=E6=9C=AC=E8=B5=84=E6=96=99?= =?UTF-8?q?=E5=BD=92=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...27\345\255\220\346\270\205\345\215\225.md" | 1320 ++-- .../public_sys-resources/icon-caution.gif" | Bin 580 -> 0 bytes .../public_sys-resources/icon-danger.gif" | Bin 580 -> 0 bytes .../public_sys-resources/icon-note.gif" | Bin 394 -> 0 bytes .../public_sys-resources/icon-notice.gif" | Bin 406 -> 0 bytes .../public_sys-resources/icon-tip.gif" | Bin 253 -> 0 bytes .../public_sys-resources/icon-warning.gif" | Bin 580 -> 0 bytes ...346\214\201\346\270\205\345\215\225 01.md" | 132 +- ...347\220\206\346\214\207\345\215\227 01.md" | 0 .../figures/zh-cn_image_0000001152776305.png" | Bin ...6\346\265\201\347\250\213\345\233\276.png" | Bin 0 -> 16410 bytes ...3\347\244\272\346\204\217\345\233\276.png" | Bin 0 -> 10725 bytes ...345\217\221\346\214\207\345\215\227 01.md" | 309 +- .../public_sys-resources/icon-caution.gif" | Bin 580 -> 0 bytes .../public_sys-resources/icon-danger.gif" | Bin 580 -> 0 bytes .../public_sys-resources/icon-note.gif" | Bin 394 -> 0 bytes .../public_sys-resources/icon-notice.gif" | Bin 406 -> 0 bytes .../public_sys-resources/icon-tip.gif" | Bin 253 -> 0 bytes .../public_sys-resources/icon-warning.gif" | Bin 580 -> 0 bytes ...347\273\203\346\214\207\345\215\227 01.md" | 315 +- .../figures/1234.png" | Bin 0 -> 52544 bytes .../figures/FAQ1.png" | Bin .../figures/FAQ10-1.png" | Bin .../figures/FAQ10.png" | Bin .../figures/FAQ11.png" | Bin .../figures/FAQ12.png" | Bin .../figures/FAQ13.png" | Bin .../figures/FAQ14.png" | Bin .../figures/FAQ15.png" | Bin .../figures/FAQ18-1.png" | Bin .../figures/FAQ18.png" | Bin .../figures/FAQ19.png" | Bin .../figures/FAQ2.png" | Bin .../figures/FAQ3.png" | Bin .../figures/FAQ4.png" | Bin .../figures/FAQ5.png" | Bin .../figures/FAQ6-1.png" | Bin .../figures/FAQ6.png" | Bin .../figures/FAQ7.png" | Bin .../figures/FAQ8-1.png" | Bin .../figures/FAQ8.png" | Bin .../figures/FAQ9-1.png" | Bin .../figures/FAQ9.png" | Bin .../figures/Performance-Config.png" | Bin .../figures/Pth\346\226\207\344\273\266.jpg" | Bin .../figures/Socket-Configuration.png" | Bin ...\345\233\276-\344\274\230\345\214\226.png" | Bin .../figures/zh-cn_image_0000001106016350.png" | Bin .../figures/zh-cn_image_0000001106176216.png" | Bin 0 -> 44685 bytes .../figures/zh-cn_image_0000001106176222.png" | Bin .../figures/zh-cn_image_0000001152616281.png" | Bin .../figures/zh-cn_image_0000001152616289.png" | Bin .../figures/zh-cn_image_0000001152736233.png" | Bin ...351\241\271\345\267\245\345\205\267-1.png" | Bin ...0\351\241\271\345\267\245\345\205\267.png" | Bin ...3\345\214\226\346\226\271\345\274\217.png" | Bin ...7\346\265\201\347\250\213\345\233\276.png" | Bin ...346\272\220\347\255\226\347\225\245-2.png" | Bin ...5\346\272\220\347\255\226\347\225\245.png" | Bin ...1\347\247\273\346\265\201\347\250\213.png" | Bin ...346\216\247\345\210\266\345\217\260-0.png" | Bin ...5\346\216\247\345\210\266\345\217\260.png" | Bin ...345\255\220\346\270\205\345\215\225 01.md" | 6859 +++-------------- .../public_sys-resources/icon-caution.gif" | Bin 580 -> 0 bytes .../public_sys-resources/icon-danger.gif" | Bin 580 -> 0 bytes .../public_sys-resources/icon-note.gif" | Bin 394 -> 0 bytes .../public_sys-resources/icon-notice.gif" | Bin 406 -> 0 bytes .../public_sys-resources/icon-tip.gif" | Bin 253 -> 0 bytes .../public_sys-resources/icon-warning.gif" | Bin 580 -> 0 bytes .../public_sys-resources/icon-caution.gif" | Bin 580 -> 0 bytes .../public_sys-resources/icon-danger.gif" | Bin 580 -> 0 bytes .../public_sys-resources/icon-note.gif" | Bin 394 -> 0 bytes .../public_sys-resources/icon-notice.gif" | Bin 406 -> 0 bytes .../public_sys-resources/icon-tip.gif" | Bin 253 -> 0 bytes .../public_sys-resources/icon-warning.gif" | Bin 580 -> 0 bytes 75 files changed, 1916 insertions(+), 7019 deletions(-) delete mode 100644 "docs/zh/CANN 5.0.2 \346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225/public_sys-resources/icon-caution.gif" delete mode 100644 "docs/zh/CANN 5.0.2 \346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225/public_sys-resources/icon-danger.gif" delete mode 100644 "docs/zh/CANN 5.0.2 \346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225/public_sys-resources/icon-note.gif" delete mode 100644 "docs/zh/CANN 5.0.2 \346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225/public_sys-resources/icon-notice.gif" delete mode 100644 "docs/zh/CANN 5.0.2 \346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225/public_sys-resources/icon-tip.gif" delete mode 100644 "docs/zh/CANN 5.0.2 \346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225/public_sys-resources/icon-warning.gif" rename "docs/zh/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225.md" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225 01/FrameworkPTAdapter 2.0.2 PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225 01.md" (99%) rename "docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227.md" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227 01/FrameworkPTAdapter 2.0.2 PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227 01.md" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/zh-cn_image_0000001106176216.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227 01/figures/zh-cn_image_0000001152776305.png" (100%) create mode 100644 "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227 01/figures/\345\234\250\347\272\277\346\216\250\347\220\206\346\265\201\347\250\213\345\233\276.png" create mode 100644 "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227 01/figures/\346\235\203\351\207\215\346\233\264\346\226\260\346\265\201\347\250\213\347\244\272\346\204\217\345\233\276.png" delete mode 100644 "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/public_sys-resources/icon-caution.gif" delete mode 100644 "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/public_sys-resources/icon-danger.gif" delete mode 100644 "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/public_sys-resources/icon-note.gif" delete mode 100644 "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/public_sys-resources/icon-notice.gif" delete mode 100644 "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/public_sys-resources/icon-tip.gif" delete mode 100644 "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/public_sys-resources/icon-warning.gif" rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/PyTorch.md" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01.md" (95%) create mode 100644 "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/1234.png" rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ1.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ1.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ10-1.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ10-1.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ10.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ10.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ11.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ11.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ12.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ12.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ13.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ13.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ14.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ14.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ15.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ15.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ18-1.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ18-1.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ18.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ18.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ19.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ19.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ2.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ2.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ3.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ3.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ4.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ4.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ5.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ5.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ6-1.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ6-1.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ6.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ6.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ7.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ7.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ8-1.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ8-1.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ8.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ8.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ9-1.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ9-1.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ9.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ9.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/Performance-Config.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/Performance-Config.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/Pth\346\226\207\344\273\266.jpg" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/Pth\346\226\207\344\273\266.jpg" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/Socket-Configuration.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/Socket-Configuration.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/pytorch\351\200\202\351\205\215\351\200\273\350\276\221\347\273\223\346\236\204\345\233\276-\344\274\230\345\214\226.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/pytorch\351\200\202\351\205\215\351\200\273\350\276\221\347\273\223\346\236\204\345\233\276-\344\274\230\345\214\226.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/zh-cn_image_0000001106016350.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/zh-cn_image_0000001106016350.png" (100%) create mode 100644 "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/zh-cn_image_0000001106176216.png" rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/zh-cn_image_0000001106176222.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/zh-cn_image_0000001106176222.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/zh-cn_image_0000001152616281.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/zh-cn_image_0000001152616281.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/zh-cn_image_0000001152616289.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/zh-cn_image_0000001152616289.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/zh-cn_image_0000001152736233.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/zh-cn_image_0000001152736233.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/\345\220\257\345\212\250\351\241\271\345\267\245\345\205\267-1.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/\345\220\257\345\212\250\351\241\271\345\267\245\345\205\267-1.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/\345\220\257\345\212\250\351\241\271\345\267\245\345\205\267.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/\345\220\257\345\212\250\351\241\271\345\267\245\345\205\267.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/\346\214\207\345\256\232\347\256\227\345\255\220\345\210\235\345\247\213\345\214\226\346\226\271\345\274\217.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/\346\214\207\345\256\232\347\256\227\345\255\220\345\210\235\345\247\213\345\214\226\346\226\271\345\274\217.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/\347\216\257\345\242\203\345\207\206\345\244\207\346\265\201\347\250\213\345\233\276.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/\347\216\257\345\242\203\345\207\206\345\244\207\346\265\201\347\250\213\345\233\276.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/\350\256\276\347\275\256\347\224\265\346\272\220\347\255\226\347\225\245-2.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/\350\256\276\347\275\256\347\224\265\346\272\220\347\255\226\347\225\245-2.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/\350\256\276\347\275\256\347\224\265\346\272\220\347\255\226\347\225\245.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/\350\256\276\347\275\256\347\224\265\346\272\220\347\255\226\347\225\245.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/\350\277\201\347\247\273\346\265\201\347\250\213.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/\350\277\201\347\247\273\346\265\201\347\250\213.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/\350\277\234\347\250\213\347\231\273\345\275\225\346\216\247\345\210\266\345\217\260-0.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/\350\277\234\347\250\213\347\231\273\345\275\225\346\216\247\345\210\266\345\217\260-0.png" (100%) rename "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/\350\277\234\347\250\213\347\231\273\345\275\225\346\216\247\345\210\266\345\217\260.png" => "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/\350\277\234\347\250\213\347\231\273\345\275\225\346\216\247\345\210\266\345\217\260.png" (100%) delete mode 100644 "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225 01/public_sys-resources/icon-caution.gif" delete mode 100644 "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225 01/public_sys-resources/icon-danger.gif" delete mode 100644 "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225 01/public_sys-resources/icon-note.gif" delete mode 100644 "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225 01/public_sys-resources/icon-notice.gif" delete mode 100644 "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225 01/public_sys-resources/icon-tip.gif" delete mode 100644 "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225 01/public_sys-resources/icon-warning.gif" delete mode 100644 "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/public_sys-resources/icon-caution.gif" delete mode 100644 "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/public_sys-resources/icon-danger.gif" delete mode 100644 "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/public_sys-resources/icon-note.gif" delete mode 100644 "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/public_sys-resources/icon-notice.gif" delete mode 100644 "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/public_sys-resources/icon-tip.gif" delete mode 100644 "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/public_sys-resources/icon-warning.gif" diff --git "a/docs/zh/CANN 5.0.2 \346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225/CANN 5.0.2 \346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225.md" "b/docs/zh/CANN 5.0.2 \346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225/CANN 5.0.2 \346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225.md" index 631fb006388..6abf227b1aa 100644 --- "a/docs/zh/CANN 5.0.2 \346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225/CANN 5.0.2 \346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225.md" +++ "b/docs/zh/CANN 5.0.2 \346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225/CANN 5.0.2 \346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225.md" @@ -1,142 +1,150 @@ # ONNX算子规格清单 -- [Abs](#Abs.md) -- [Acos](#Acos.md) -- [Acosh](#Acosh.md) -- [AdaptiveMaxPool2D](#AdaptiveMaxPool2D.md) -- [Add](#Add.md) -- [Addcmul](#Addcmul.md) -- [AffineGrid](#AffineGrid.md) -- [And](#And.md) -- [Argmax](#Argmax.md) -- [Argmin](#Argmin.md) -- [AscendRequantS16](#AscendRequantS16.md) -- [AscendRequant](#AscendRequant.md) -- [AscendQuant](#AscendQuant.md) -- [AscendDequantS16](#AscendDequantS16.md) -- [AscendDequant](#AscendDequant.md) -- [AscendAntiQuant](#AscendAntiQuant.md) -- [Asin](#Asin.md) -- [Asinh](#Asinh.md) -- [Atan](#Atan.md) -- [Atanh](#Atanh.md) -- [AveragePool](#AveragePool.md) -- [BatchNormalization](#BatchNormalization.md) -- [BatchMatMul](#BatchMatMul.md) -- [BatchMultiClassNMS](#BatchMultiClassNMS.md) -- [Cast](#Cast.md) -- [Ceil](#Ceil.md) -- [Celu](#Celu.md) -- [Concat](#Concat.md) -- [Clip](#Clip.md) -- [ConvTranspose](#ConvTranspose.md) -- [Cumsum](#Cumsum.md) -- [Conv](#Conv.md) -- [Constant](#Constant.md) -- [ConstantOfShape](#ConstantOfShape.md) -- [Cos](#Cos.md) -- [Cosh](#Cosh.md) -- [Det](#Det.md) -- [DepthToSpace](#DepthToSpace.md) -- [Div](#Div.md) -- [Dropout](#Dropout.md) -- [elu](#elu.md) -- [EmbeddingBag](#EmbeddingBag.md) -- [Equal](#Equal.md) -- [Erf](#Erf.md) -- [Exp](#Exp.md) -- [Expand](#Expand.md) -- [Flatten](#Flatten.md) -- [Floor](#Floor.md) -- [Gather](#Gather.md) -- [GatherND](#GatherND.md) -- [GatherElements](#GatherElements.md) -- [Gemm](#Gemm.md) -- [GlobalAveragePool](#GlobalAveragePool.md) -- [GlobalMaxPool](#GlobalMaxPool.md) -- [Greater](#Greater.md) -- [GreaterOrEqual](#GreaterOrEqual.md) -- [Gru](#Gru.md) -- [HardSigmoid](#HardSigmoid.md) -- [hardmax](#hardmax.md) -- [Identity](#Identity.md) -- [If](#If.md) -- [Less](#Less.md) -- [LeakyRelu](#LeakyRelu.md) -- [LessOrEqual](#LessOrEqual.md) -- [Log](#Log.md) -- [LogSoftMax](#LogSoftMax.md) -- [LpNormalization](#LpNormalization.md) -- [LRN](#LRN.md) -- [LSTM](#LSTM.md) -- [MatMul](#MatMul.md) -- [Max](#Max.md) -- [MaxPool](#MaxPool.md) -- [MaxRoiPool](#MaxRoiPool.md) -- [Mean](#Mean.md) -- [MeanVarianceNormalization](#MeanVarianceNormalization.md) -- [Min](#Min.md) -- [Mod](#Mod.md) -- [Mul](#Mul.md) -- [Multinomial](#Multinomial.md) -- [Neg](#Neg.md) -- [NonMaxSuppression](#NonMaxSuppression.md) -- [NonZero](#NonZero.md) -- [Not](#Not.md) -- [OneHot](#OneHot.md) -- [Or](#Or.md) -- [randomUniform](#randomUniform.md) -- [Range](#Range.md) -- [Reciprocal](#Reciprocal.md) -- [ReduceL1](#ReduceL1.md) -- [ReduceL2](#ReduceL2.md) -- [ReduceMin](#ReduceMin.md) -- [ReduceMean](#ReduceMean.md) -- [ReduceProd](#ReduceProd.md) -- [ReduceSumSquare](#ReduceSumSquare.md) -- [Resize](#Resize.md) -- [Relu](#Relu.md) -- [ReduceSum](#ReduceSum.md) -- [ReduceMax](#ReduceMax.md) -- [Reshape](#Reshape.md) -- [ReverseSequence](#ReverseSequence.md) -- [RoiExtractor](#RoiExtractor.md) -- [RoiAlign](#RoiAlign.md) -- [Round](#Round.md) -- [PRelu](#PRelu.md) -- [ScatterND](#ScatterND.md) -- [Selu](#Selu.md) -- [Shape](#Shape.md) -- [Sigmoid](#Sigmoid.md) -- [Slice](#Slice.md) -- [Softmax](#Softmax.md) -- [Softsign](#Softsign.md) -- [Softplus](#Softplus.md) -- [SpaceToDepth](#SpaceToDepth.md) -- [Split](#Split.md) -- [Sqrt](#Sqrt.md) -- [Squeeze](#Squeeze.md) -- [Sub](#Sub.md) -- [Sign](#Sign.md) -- [Sin](#Sin.md) -- [Sinh](#Sinh.md) -- [Size](#Size.md) -- [Sum](#Sum.md) -- [Tanh](#Tanh.md) -- [Tile](#Tile.md) -- [ThresholdedRelu](#ThresholdedRelu.md) -- [TopK](#TopK.md) -- [Transpose](#Transpose.md) -- [pad](#pad.md) -- [Pow](#Pow.md) -- [Unsqueeze](#Unsqueeze.md) -- [Where](#Where.md) -

Abs

- -## 功能 + + + + + + + + +- [Abs](#Abs) +- [Acos](#Acos) +- [Acosh](#Acosh) +- [AdaptiveMaxPool2D](#AdaptiveMaxPool2D) +- [Add](#Add) +- [Addcmul](#Addcmul) +- [AffineGrid](#AffineGrid) +- [And](#And) +- [Argmax](#Argmax) +- [Argmin](#Argmin) +- [AscendRequantS16](#AscendRequantS16) +- [AscendRequant](#AscendRequant) +- [AscendQuant](#AscendQuant) +- [AscendDequantS16](#AscendDequantS16) +- [AscendDequant](#AscendDequant) +- [AscendAntiQuant](#AscendAntiQuant) +- [Asin](#Asin) +- [Asinh](#Asinh) +- [Atan](#Atan) +- [Atanh](#Atanh) +- [AveragePool](#AveragePool) +- [BatchNormalization](#BatchNormalization) +- [BatchMatMul](#BatchMatMul) +- [BatchMultiClassNMS](#BatchMultiClassNMS) +- [Cast](#Cast) +- [Ceil](#Ceil) +- [Celu](#Celu) +- [Concat](#Concat) +- [Clip](#Clip) +- [ConvTranspose](#ConvTranspose) +- [Cumsum](#Cumsum) +- [Conv](#Conv) +- [Constant](#Constant) +- [ConstantOfShape](#ConstantOfShape) +- [Cos](#Cos) +- [Cosh](#Cosh) +- [Det](#Det) +- [DepthToSpace](#DepthToSpace) +- [Div](#Div) +- [Dropout](#Dropout) +- [elu](#elu) +- [EmbeddingBag](#EmbeddingBag) +- [Equal](#Equal) +- [Erf](#Erf) +- [Exp](#Exp) +- [Expand](#Expand) +- [Flatten](#Flatten) +- [Floor](#Floor) +- [Gather](#Gather) +- [GatherND](#GatherND) +- [GatherElements](#GatherElements) +- [Gemm](#Gemm) +- [GlobalAveragePool](#GlobalAveragePool) +- [GlobalMaxPool](#GlobalMaxPool) +- [Greater](#Greater) +- [GreaterOrEqual](#GreaterOrEqual) +- [Gru](#Gru) +- [HardSigmoid](#HardSigmoid) +- [hardmax](#hardmax) +- [Identity](#Identity) +- [If](#If) +- [Less](#Less) +- [LeakyRelu](#LeakyRelu) +- [LessOrEqual](#LessOrEqual) +- [Log](#Log) +- [LogSoftMax](#LogSoftMax) +- [LpNormalization](#LpNormalization) +- [LRN](#LRN) +- [LSTM](#LSTM) +- [MatMul](#MatMul) +- [Max](#Max) +- [MaxPool](#MaxPool) +- [MaxRoiPool](#MaxRoiPool) +- [Mean](#Mean) +- [MeanVarianceNormalization](#MeanVarianceNormalization) +- [Min](#Min) +- [Mod](#Mod) +- [Mul](#Mul) +- [Multinomial](#Multinomial) +- [Neg](#Neg) +- [NonMaxSuppression](#NonMaxSuppression) +- [NonZero](#NonZero) +- [Not](#Not) +- [OneHot](#OneHot) +- [Or](#Or) +- [randomUniform](#randomUniform) +- [Range](#Range) +- [Reciprocal](#Reciprocal) +- [ReduceL1](#ReduceL1) +- [ReduceL2](#ReduceL2) +- [ReduceMin](#ReduceMin) +- [ReduceMean](#ReduceMean) +- [ReduceProd](#ReduceProd) +- [ReduceSumSquare](#ReduceSumSquare) +- [Resize](#Resize) +- [Relu](#Relu) +- [ReduceSum](#ReduceSum) +- [ReduceMax](#ReduceMax) +- [Reshape](#Reshape) +- [ReverseSequence](#ReverseSequence) +- [RoiExtractor](#RoiExtractor) +- [RoiAlign](#RoiAlign) +- [Round](#Round) +- [PRelu](#PRelu) +- [ScatterND](#ScatterND) +- [Selu](#Selu) +- [Shape](#Shape) +- [Sigmoid](#Sigmoid) +- [Slice](#Slice) +- [Softmax](#Softmax) +- [Softsign](#Softsign) +- [Softplus](#Softplus) +- [SpaceToDepth](#SpaceToDepth) +- [Split](#Split) +- [Sqrt](#Sqrt) +- [Squeeze](#Squeeze) +- [Sub](#Sub) +- [Sign](#Sign) +- [Sin](#Sin) +- [Sinh](#Sinh) +- [Size](#Size) +- [Sum](#Sum) +- [Tanh](#Tanh) +- [Tile](#Tile) +- [ThresholdedRelu](#ThresholdedRelu) +- [TopK](#TopK) +- [Transpose](#Transpose) +- [pad](#pad) +- [Pow](#Pow) +- [Unsqueeze](#Unsqueeze) +- [Where](#Where) +## Abs + +### 功能 对输入张量取绝对值 -## 边界 +### 边界 【输入】 @@ -150,17 +158,17 @@ x:一个tensor,数据类型:float16、float32、double、int8、int16、in y:一个tensor,数据类型和shape与输入一致" -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Acos

+## Acos -## 功能 +### 功能 计算输入张量的反余弦值 -## 边界 +### 边界 【输入】 @@ -174,17 +182,17 @@ x:一个tensor,数据类型:float16、float32、double y:一个tensor,数据类型和shape与输入一致 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Acosh

+## Acosh -## 功能 +### 功能 计算输入张量的反双曲余弦值 -## 边界 +### 边界 【输入】 @@ -198,17 +206,17 @@ x:一个tensor,数据类型:float16、float32、double y:一个tensor,数据类型和shape与输入一致 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

AdaptiveMaxPool2D

+## AdaptiveMaxPool2D -## 功能 +### 功能 对输入进行2d自适应最大池化计算 -## 边界 +### 边界 【输入】 @@ -230,17 +238,17 @@ y:一个tensor,数据类型:与x类型一致 argmax:一个tensor,数据类型:int -## 支持的ONNX版本 +### 支持的ONNX版本 自定义算子,无对应onnx版本 -

Add

+## Add -## 功能 +### 功能 按元素求和按元素求和 -## 边界 +### 边界 【输入】 @@ -254,17 +262,17 @@ B:一个张量,数据类型与A相同 C:一个张量,数据类型与A相同 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Addcmul

+## Addcmul -## 功能 +### 功能 元素级计算\(x2 \* x3\) \* value + input\_data -## 边界 +### 边界 【输入】 @@ -284,17 +292,17 @@ value: 一个tensor,类型与inpu\_data相同 y:一个tensor,数据类型:y与输入相同 -## 支持的ONNX版本 +### 支持的ONNX版本 自定义算子,无对应onnx版本 -

AffineGrid

+## AffineGrid -## 功能 +### 功能 给定一批矩阵,生成采样网络 -## 边界 +### 边界 【输入】 @@ -316,17 +324,17 @@ align\_corners:bool型 y:一个tensor,数据类型:int -## 支持的ONNX版本 +### 支持的ONNX版本 自定义算子,无对应onnx版本 -

And

+## And -## 功能 +### 功能 逻辑与 -## 边界 +### 边界 【输入】 @@ -342,17 +350,17 @@ x2:一个tensor,数据类型:bool y:一个张量,和输入x同样的type和shape -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Argmax

+## Argmax -## 功能 +### 功能 返回指定轴上最大值所对应的索引 -## 边界 +### 边界 【输入】 @@ -376,17 +384,17 @@ keep\_dim:可选,keep\_dim默认为1,支持1或0。 算子不支持atc工具参数--precision\_mode=must\_keep\_origin\_dtype时fp32类型输入 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Argmin

+## Argmin -## 功能 +### 功能 返回输入张量指定轴上最小值对应的索引 -## 边界 +### 边界 【输入】 @@ -408,17 +416,17 @@ axis:数据类型为int,含义:指定计算轴;取值范围:\[-r, r-1\ 算子不支持atc工具参数--precision\_mode=must\_keep\_origin\_dtype时fp32类型输入 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

AscendRequantS16

+## AscendRequantS16 -## 功能 +### 功能 重新量化算子 -## 边界 +### 边界 【输入】 @@ -446,17 +454,17 @@ y0:一个tensor,数据类型:int8 y1:一个tensor,数据类型:int16 -## 支持的ONNX版本 +### 支持的ONNX版本 自定义算子,无对应onnx版本 -

AscendRequant

+## AscendRequant -## 功能 +### 功能 重新量化算子 -## 边界 +### 边界 【输入】 @@ -478,17 +486,17 @@ relu\_flag:bool型 y:一个tensor,数据类型:int8 -## 支持的ONNX版本 +### 支持的ONNX版本 自定义算子,无对应onnx版本 -

AscendQuant

+## AscendQuant -## 功能 +### 功能 量化算子 -## 边界 +### 边界 【输入】 @@ -514,17 +522,17 @@ round\_mode: string y:一个tensor,数据类型:int8 -## 支持的ONNX版本 +### 支持的ONNX版本 自定义算子,无对应onnx版本 -

AscendDequantS16

+## AscendDequantS16 -## 功能 +### 功能 反量化算子 -## 边界 +### 边界 【输入】 @@ -548,17 +556,17 @@ relu\_flag:bool型 y:一个tensor,数据类型:int16 -## 支持的ONNX版本 +### 支持的ONNX版本 自定义算子,无对应onnx版本 -

AscendDequant

+## AscendDequant -## 功能 +### 功能 反量化算子 -## 边界 +### 边界 【输入】 @@ -584,17 +592,17 @@ dtype:float y:一个tensor,数据类型:float16,float -## 支持的ONNX版本 +### 支持的ONNX版本 自定义算子,无对应onnx版本 -

AscendAntiQuant

+## AscendAntiQuant -## 功能 +### 功能 反量化算子 -## 边界 +### 边界 【输入】 @@ -620,17 +628,17 @@ round\_mode: string y:一个tensor,数据类型:float16,float -## 支持的ONNX版本 +### 支持的ONNX版本 自定义算子,无对应onnx版本 -

Asin

+## Asin -## 功能 +### 功能 计算输入张量的反正弦 -## 边界 +### 边界 【输入】 @@ -644,17 +652,17 @@ x1:一个tensor,数据类型:float16、float32、double y:一个tensor,数据类型和shape与输入一致 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Asinh

+## Asinh -## 功能 +### 功能 计算输入张量双曲反正弦 -## 边界 +### 边界 【输入】 @@ -666,17 +674,17 @@ x:一个tensor,数据类型:float16、float32、double y:一个tenso,数据类型和shape与输入一致 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Atan

+## Atan -## 功能 +### 功能 计算输入张量的反正切值 -## 边界 +### 边界 【输入】 @@ -690,17 +698,17 @@ x:一个tensor,数据类型:float16、float32、double y:一个tensor,数据类型和shape与输入一致 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Atanh

+## Atanh -## 功能 +### 功能 计算输入张量的双曲反正切 -## 边界 +### 边界 【输入】 @@ -714,17 +722,17 @@ x:一个tensor,数据类型:float16、float32、double y:一个tensor,数据类型和shape与输入一致 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

AveragePool

+## AveragePool -## 功能 +### 功能 平均池化层 -## 边界 +### 边界 【输入】 @@ -780,17 +788,17 @@ ceil\_mode参数仅在auto\_pad='NOTSET'时生效; auto\_pad属性值SAME\_UPPER, SAME\_LOWER统一使用的TBE的SAME属性,即TBE算子没有根据这个属性区分pad的填充位置,可能会带来精度问题 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

BatchNormalization

+## BatchNormalization -## 功能 +### 功能 标准化张量 -## 边界 +### 边界 【输入】 @@ -826,17 +834,17 @@ epsilon:可选,数据类型:float32,指定一个小值与var相加,以 momentum:float32,该参数暂不支持 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

BatchMatMul

+## BatchMatMul -## 功能 +### 功能 将两个输入执行矩阵乘 -## 边界 +### 边界 【输入】 @@ -860,17 +868,17 @@ adj\_x2:bool型 y:一个tensor,数据类型:float16,float,int32 -## 支持的ONNX版本 +### 支持的ONNX版本 自定义算子,无对应onnx版本 -

BatchMultiClassNMS

+## BatchMultiClassNMS -## 功能 +### 功能 为输入boxes和输入score计算nms -## 边界 +### 边界 【输入】 @@ -912,17 +920,17 @@ nmsed\_classes:一个tensor,数据类型:float16 nmsed\_num:一个tensor,数据类型:float16 -## 支持的ONNX版本 +### 支持的ONNX版本 自定义算子,无对应onnx版本 -

Cast

+## Cast -## 功能 +### 功能 将输入数据的type转换为指定的type -## 边界 +### 边界 【输入】 @@ -938,17 +946,17 @@ y:一个tensor,输出的数据类型为属性指定的类型,数据类型 to:数据类型:int,必选,指定目标数据类型,取值范围:在指定的数据类型范围内 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Ceil

+## Ceil -## 功能 +### 功能 对输入张量向上取整 -## 边界 +### 边界 【输入】 @@ -962,19 +970,19 @@ x:一个tensor,数据类型:float16、float32、double y:一个tensor,数据类型和shape与输入一致 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Celu

+## Celu -## 功能 +### 功能 连续可微的指数线性单位:对输入张量X按元素执行线性单位,使用公式: max\(0,x\) + min\(0,alpha\*\(exp\(x/alpha\)-1\)\) -## 边界 +### 边界 【输入】 @@ -988,17 +996,17 @@ Y:tensor\(float\) alpha:float,默认值:1.0 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Concat

+## Concat -## 功能 +### 功能 对多个张量Concat -## 边界 +### 边界 【输入】 @@ -1012,17 +1020,17 @@ concat\_result:张量,与输入张量类型一致 axis:指定哪一个轴进行concat操作,负数表示从后往前对维度计数,取值范围为\[-r, r - 1\],r=rank\(inputs\) -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Clip

+## Clip -## 功能 +### 功能 将张量值剪辑到指定的最小值和最大值之间 -## 边界 +### 边界 【输入】 @@ -1040,17 +1048,17 @@ max:一个scalar Y:一个张量,剪辑后的输出,数据类型和shape与输入一致 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

ConvTranspose

+## ConvTranspose -## 功能 +### 功能 转置卷积 -## 边界 +### 边界 【输入】 @@ -1098,17 +1106,17 @@ output\_shape支持限制:实现部分功能。现在支持output shape的大 属性auto\_pad不支持 "SAME\_UPPER","SAME\_LOWER" -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Cumsum

+## Cumsum -## 功能 +### 功能 计算输入张量在给定axis上面的累加和 -## 边界 +### 边界 【输入】 @@ -1130,17 +1138,17 @@ exclusive:int,默认为0,含义:是否返回不包括顶层元素的和 reverse:int,默认为0,含义:是否反方向求和 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Conv

+## Conv -## 功能 +### 功能 卷积 -## 边界 +### 边界 【输入】 @@ -1178,17 +1186,17 @@ strides:4个整数的列表,指定沿高度H和宽度W的卷积步长。H和 不支持atc工具--precision\_mode=must\_keep\_origin\_dtype参数时输入类型为fp32和fp64 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v9/v10/v11/v12/v13 -

Constant

+## Constant -## 功能 +### 功能 构建constant节点张量 -## 边界 +### 边界 【输入】 @@ -1208,17 +1216,17 @@ value:输出张量的值 sparse\_value:不支持 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

ConstantOfShape

+## ConstantOfShape -## 功能 +### 功能 用给定的值和shape生成张量 -## 边界 +### 边界 【输入】 @@ -1236,17 +1244,17 @@ value:指定输出tensor的数据和类型 x:1<=len\(shape\)<=8 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v9/v10/v11/v12/v13 -

Cos

+## Cos -## 功能 +### 功能 计算输入张量的余弦值 -## 边界 +### 边界 【输入】 @@ -1260,17 +1268,17 @@ x:一个tensor,数据类型:float16、float32、double y:一个tensor,数据类型和shape与输入一致 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Cosh

+## Cosh -## 功能 +### 功能 计算输入张量的双曲余弦 -## 边界 +### 边界 【输入】 @@ -1284,17 +1292,17 @@ X1:一个tensor,数据类型:float16、float、double y:一个张量,数据类型和shape与输入一致 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Det

+## Det -## 功能 +### 功能 计算方形矩阵行列式 -## 边界 +### 边界 【输入】 @@ -1308,17 +1316,17 @@ x:tensor,数据类型:float16、float32 y:一个张量,和输入x同样的type和shape -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

DepthToSpace

+## DepthToSpace -## 功能 +### 功能 将数据由深度重排到空间数据块 -## 边界 +### 边界 【输入】 @@ -1338,17 +1346,17 @@ blocksize:int,必选 指定被移动的块的大小 mode: string 指定是depth-column-row还是column-row-depth排列,默认DCR -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Div

+## Div -## 功能 +### 功能 按元素进行除法运算 -## 边界 +### 边界 【输入】 @@ -1368,17 +1376,17 @@ y:一个tensor,数据类型和输入一致 输入、输出的type相同 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Dropout

+## Dropout -## 功能 +### 功能 拷贝或者屏蔽输入数据 -## 边界 +### 边界 【输入】 @@ -1398,17 +1406,17 @@ output:一个张量 mask: 一个张量 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

elu

+## elu -## 功能 +### 功能 elu激活函数 -## 边界 +### 边界 【输入】 @@ -1426,17 +1434,17 @@ y:一个张量,和输入x同样的type和shape alpha:float,默认为1.0,含义:系数 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

EmbeddingBag

+## EmbeddingBag -## 功能 +### 功能 计算embedding函数的反向输出 -## 边界 +### 边界 【输入】 @@ -1468,17 +1476,17 @@ include\_last\_offset:bool型 y:一个tensor,数据类型:float32 -## 支持的ONNX版本 +### 支持的ONNX版本 自定义算子,无对应onnx版本 -

Equal

+## Equal -## 功能 +### 功能 判断两个输入张量对应位置是否相等 -## 边界 +### 边界 【输入】 @@ -1498,17 +1506,17 @@ y:一个tensor ,数据类型:bool 输入X1、X2的数据类型和格式相同,支持如下数据类型:bool、uint8、int8、int16、int32、int64、float16、float32、double -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Erf

+## Erf -## 功能 +### 功能 高斯误差函数 -## 边界 +### 边界 【输入】 @@ -1522,17 +1530,17 @@ x:一个tensor,数据类型:float16、float32 y:一个tensor,数据类型和格式与输入一致 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v9/v10/v11/v12/v13 -

Exp

+## Exp -## 功能 +### 功能 计算输入张量的指数 -## 边界 +### 边界 【输入】 @@ -1546,17 +1554,17 @@ x:一个tensor,数据类型:float16、float32 y:一个tensor,数据类型和shape与输入一致 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Expand

+## Expand -## 功能 +### 功能 将输入tensor广播到指定shape -## 边界 +### 边界 【输入】 @@ -1576,17 +1584,17 @@ y:一个张量,和输入x同样的type和shape 需要修改模型将输入shape由placeholder改为const类型,可以使用onnxsimplifier简化模型 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Flatten

+## Flatten -## 功能 +### 功能 将张量展平 -## 边界 +### 边界 【输入】 @@ -1600,17 +1608,17 @@ input:多维张量,数据类型:int8、uint8、int16、uint16、int32、ui axis:int,该参数暂不支持负值索引 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Floor

+## Floor -## 功能 +### 功能 对输入张量向下取整 -## 边界 +### 边界 【输入】 @@ -1624,17 +1632,17 @@ x:一个tensor,数据类型:float16、float32、double y:一个tensor,数据类型和shape与输入一致 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Gather

+## Gather -## 功能 +### 功能 根据相应的轴从“x”中收集切片 -## 边界 +### 边界 【输入】 @@ -1658,17 +1666,17 @@ axis:数据类型:int,指定gather的轴,取值范围为\[-r, r-1\](r 不支持indices为负值的索引 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

GatherND

+## GatherND -## 功能 +### 功能 将输入数据切片输出 -## 边界 +### 边界 【输入】 @@ -1692,17 +1700,17 @@ batch\_dims:int,默认为0 批处理轴的数量 不支持atc工具参数--precision\_mode=must\_keep\_origin\_dtype时double的输入 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v11/v12/v13 -

GatherElements

+## GatherElements -## 功能 +### 功能 获取索引位置的元素产生输出 -## 边界 +### 边界 【输入】 @@ -1722,17 +1730,17 @@ output:一个张量,与indices的shape相同 axis:int,默认为0 指定聚集的轴 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Gemm

+## Gemm -## 功能 +### 功能 全连接层 -## 边界 +### 边界 【输入】 @@ -1760,17 +1768,17 @@ beta:float,该参数暂不支持 v8/v9/v10版本不支持atc工具参数--precision\_mode=must\_keep\_origin\_dtype时fp32类型输入 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

GlobalAveragePool

+## GlobalAveragePool -## 功能 +### 功能 全局平均池化 -## 边界 +### 边界 【输入】 @@ -1780,17 +1788,17 @@ X:一个张量,数据类型:float16、float32,格式为NCHW Y:池化输出张量,数据类型与X相同,格式为NCHW -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

GlobalMaxPool

+## GlobalMaxPool -## 功能 +### 功能 全局最大池化算子 -## 边界 +### 边界 【输入】 @@ -1804,17 +1812,17 @@ x:前一个节点的输出tensor,类型:float16, float32, double output:池化后的张量 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Greater

+## Greater -## 功能 +### 功能 按元素比较输入x1和x2的大小,若x1\>x2,对应位置返回true -## 边界 +### 边界 【输入】 @@ -1830,17 +1838,17 @@ x2:一个tensor,数据类型:float16、float32、int32、int8、uint8 y:一个tensor,数据类型:bool -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

GreaterOrEqual

+## GreaterOrEqual -## 功能 +### 功能 按元素比较输入x1和x2的大小,若x1\>=x2,对应位置返回true -## 边界 +### 边界 【输入】 @@ -1856,17 +1864,17 @@ x2:一个tensor,数据类型:float16、float32、int32、int8、uint8等 y:一个tensor,数据类型:bool -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v12 -

Gru

+## Gru -## 功能 +### 功能 计算单层GRU -## 边界 +### 边界 【输入】 @@ -1910,17 +1918,17 @@ layout: linear\_before\_reset: -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

HardSigmoid

+## HardSigmoid -## 功能 +### 功能 HardSigmoid接受一个输入数据\(张量\)并生成一个输出数据\(张量\),HardSigmoid函数y = max\(0, min\(1, alpha \* x + beta\)\)应用于张量元素方面。 -## 边界 +### 边界 【输入】 @@ -1940,17 +1948,17 @@ alpha:float,默认值:0.2 beta:float,默认值:0.2 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v1/v6/v8/v9/v10/v11/v12/v13 -

hardmax

+## hardmax -## 功能 +### 功能 计算hardmax结果,如果元素是指定axis的最大元素则设为1,否则为0 -## 边界 +### 边界 【输入】 @@ -1968,17 +1976,17 @@ y:一个张量,和输入x同样的type和shape axis:int,默认为-1,含义:指定计算轴 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Identity

+## Identity -## 功能 +### 功能 恒等操作 -## 边界 +### 边界 【输入】 @@ -1992,17 +2000,17 @@ x:tensor,数据类型:float16、float32 y:一个张量,和输入x同样的type和shape -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

If

+## If -## 功能 +### 功能 逻辑控制判断算子 -## 边界 +### 边界 【输入】 @@ -2022,17 +2030,17 @@ then\_branch:条件为真的分支 y:tensor或者tensor序列 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Less

+## Less -## 功能 +### 功能 按元素比较输入x1和x2的大小,若x1 +### 边界 【输入】 @@ -2048,17 +2056,17 @@ x2:一个tensor,数据类型:float16、float32、int32、int8、uint8 y:一个tensor,数据类型:bool -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

LeakyRelu

+## LeakyRelu -## 功能 +### 功能 对输入张量用leakrelu函数激活 -## 边界 +### 边界 【输入】 @@ -2076,17 +2084,17 @@ y: 一个tensor,数据类型和shape与输入一致 alpha:数据类型为float,默认0.01,表示leakage系数 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

LessOrEqual

+## LessOrEqual -## 功能 +### 功能 小于等于计算 -## 边界 +### 边界 【输入】 @@ -2102,17 +2110,17 @@ y:tensor,数据类型:float16、float32 y:一个张量,和输入x同样的shape,数据类型:bool -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v12/v13 -

Log

+## Log -## 功能 +### 功能 计算输入的自然对数 -## 边界 +### 边界 【输入】 @@ -2126,17 +2134,17 @@ x:一个tensor,数据类型:float16、float32 y:一个tensor,数据类型与输入一致 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

LogSoftMax

+## LogSoftMax -## 功能 +### 功能 对输入张量计算logsoftmax值 -## 边界 +### 边界 【输入】 @@ -2154,17 +2162,17 @@ y:一个tensor,数据类型和shape与输入一致 axis:数据类型为int;指定计算的轴,取值范围:\[-r, r-1\],r为输入的秩 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

LpNormalization

+## LpNormalization -## 功能 +### 功能 给定一个矩阵,沿给定的轴应用LpNormalization。 -## 边界 +### 边界 【输入】 @@ -2184,17 +2192,17 @@ axis:int,默认值:-1 p:int,默认值:2 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v1/v8/v9/v10/v11/v12/v13 -

LRN

+## LRN -## 功能 +### 功能 对输入张量做局部响应归一化 -## 边界 +### 边界 【输入】 @@ -2218,17 +2226,17 @@ bias:float size:int,求和的通道数,只支持奇数 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

LSTM

+## LSTM -## 功能 +### 功能 计算单层LSTM。这个操作符通常通过一些自定义实现\(如CuDNN\)来支持。 -## 边界 +### 边界 【输入3-8】 @@ -2274,17 +2282,17 @@ input\_forget: int,默认值:0 layout: int,默认值:0 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

MatMul

+## MatMul -## 功能 +### 功能 矩阵乘 -## 边界 +### 边界 【输入】 @@ -2306,17 +2314,17 @@ y:一个2D的tensor,数据类型:float16 只支持ND和2D的矩阵乘 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Max

+## Max -## 功能 +### 功能 元素级比较输入tensor的大小 -## 边界 +### 边界 【输入】 @@ -2330,17 +2338,17 @@ data\_0:tensor的列表,类型:float16、float32,int8,int16,int32等 max:一个张量,和输入x同样的type和shape(广播后的shape) -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

MaxPool

+## MaxPool -## 功能 +### 功能 最大池化 -## 边界 +### 边界 【输入】 @@ -2389,17 +2397,17 @@ kernel\_shape\_H或kernel\_shape\_W取值超过\[1,255\],或者ksizeH \* ksize auto\_pad属性是VALID时,ceil\_mode属性值必须为0 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

MaxRoiPool

+## MaxRoiPool -## 功能 +### 功能 ROI最大池消耗一个输入张量X和感兴趣区域\(ROI\),以便在每个ROI上应用最大池,从而产生输出的4-D形状张量\(num\_roi, channels, pooled\_shape\[0\], pooled\_shape\[1\]\)。 -## 边界 +### 边界 【输入】 @@ -2423,17 +2431,17 @@ spatial\_scale: float,默认值:1.0 不支持atc工具参数--precision\_mode=must\_keep\_origin\_dtype时fp32类型输入 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/13 -

Mean

+## Mean -## 功能 +### 功能 每个输入张量的元素均值\(支持numpy风格的广播\)。所有输入和输出必须具有相同的数据类型。该操作符支持多向\(即numpy风格\)广播。 -## 边界 +### 边界 【输入1-∞】 @@ -2443,17 +2451,17 @@ data\_0:,类型:tensor\(float16\), tensor\(float\), tensor\(double\), tens mean:,类型:tensor\(float16\), tensor\(float\), tensor\(double\), tensor\(bfloat16\) -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

MeanVarianceNormalization

+## MeanVarianceNormalization -## 功能 +### 功能 一个均值标准化函数:使用公式对输入张量X进行均值方差标准化:\(X-EX\)/sqrt\(E\(X-EX\)^2\) -## 边界 +### 边界 【输入】 @@ -2467,17 +2475,17 @@ Y:,类型:tensor\(float16\), tensor\(float\), tensor\(bfloat16\) axes: list of ints,默认值:\['0', '2', '3'\] -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v9/v10/v11/v12/v13 -

Min

+## Min -## 功能 +### 功能 计算输入tensors的最小值 -## 边界 +### 边界 【输入】 @@ -2491,17 +2499,17 @@ x:tensor列表,数据类型:float16、float32 y:计算出最小值的tensor -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Mod

+## Mod -## 功能 +### 功能 执行元素二进制模数\(支持numpy风格的广播\)。余数的符号与除数的符号相同。 -## 边界 +### 边界 【输入】 @@ -2521,17 +2529,17 @@ fmod:,类型:int,默认值:0 当输入类型为浮点时,fmod不支持为0 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v10/v11/v12/v13 -

Mul

+## Mul -## 功能 +### 功能 矩阵点乘 -## 边界 +### 边界 【输入】 @@ -2543,17 +2551,17 @@ B:一个张量,数据类型:float16、float32、uint8、int8、int16、int C:一个张量,数据类型与输入张量一致 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Multinomial

+## Multinomial -## 功能 +### 功能 返回Multinomial采样结果矩阵 -## 边界 +### 边界 【输入】 @@ -2575,17 +2583,17 @@ sample\_size:int,默认为1,含义:采样次数 seed:float,随机数种子 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Neg

+## Neg -## 功能 +### 功能 求输入的负数 -## 边界 +### 边界 【输入】 @@ -2599,17 +2607,17 @@ x:一个tensor,数据类型:float16、float32、int32 y:一个tensor,数据类型与输入一致 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

NonMaxSuppression

+## NonMaxSuppression -## 功能 +### 功能 过滤掉与先前选定的框有较高重叠的“交集-并集”\(IOU\)框。移除得分小于score\_threshold的边界框。边界框格式由属性center\_point\_box表示。注意,该算法不知道原点在坐标系中的位置,更普遍地说,它对坐标系的正交变换和平移是不变的;因此,平移或反射坐标系统的结果在相同的方框被算法选择。selected\_indices输出是一组整数,索引到表示所选框的边界框的输入集合中。然后,可以使用Gather或gatherd操作获得与所选索引对应的边框坐标。 -## 边界 +### 边界 【输入2-5】 @@ -2631,17 +2639,17 @@ selected\_indices: tensor\(int64\) center\_point\_box: int 默认值:0 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v10/v11/v12/v13 -

NonZero

+## NonZero -## 功能 +### 功能 返回非零元素的索引(按行大顺序-按维) -## 边界 +### 边界 【输入】 @@ -2655,17 +2663,17 @@ x:一个tensor,数据类型:float16、float32、int32、int8、uint8等 y:一个tensor,数据类型:int64 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v9/v10/v11/v12/v13 -

Not

+## Not -## 功能 +### 功能 逻辑非 -## 边界 +### 边界 【输入】 @@ -2679,17 +2687,17 @@ x:一个tensor,数据类型:bool y:一个tensor,数据类型:bool -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

OneHot

+## OneHot -## 功能 +### 功能 根据输入生成一热编码张量 -## 边界 +### 边界 【输入】 @@ -2717,17 +2725,17 @@ y:一个tensor,数据类型与value输入的类型一致 算子属性不支持axis<-1 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v9/v10/v11/v12/v13 -

Or

+## Or -## 功能 +### 功能 逻辑或 -## 边界 +### 边界 【输入】 @@ -2743,17 +2751,17 @@ X2:一个tensor,数据类型:bool y:一个tensor,数据类型:bool -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

randomUniform

+## randomUniform -## 功能 +### 功能 生成具有从均匀分布绘制的随机值的张量 -## 边界 +### 边界 【属性】 @@ -2775,17 +2783,17 @@ shape:输出的形状 y:一个tensor,数据类型与dtype属性指定类型一致 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Range

+## Range -## 功能 +### 功能 产生一个连续序列的tensor -## 边界 +### 边界 【输入】 @@ -2803,17 +2811,17 @@ delta:scalar,数据类型:float16、float32 y:一个张量,和输入x同样的type -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Reciprocal

+## Reciprocal -## 功能 +### 功能 将输入张量取倒数 -## 边界 +### 边界 【输入】 @@ -2827,17 +2835,17 @@ lx:一个tensor,数据类型:float16、float32、double y:一个tensor,数据类型和shape与输入一致 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

ReduceL1

+## ReduceL1 -## 功能 +### 功能 沿所提供的轴计算输入张量元素的L1范数。如果keepdim等于1,得到的张量的秩与输入的相同。如果keepdim等于0,那么得到的张量就会被精简维数。上述行为与numpy类似,只是numpy默认keepdim为False而不是True。 -## 边界 +### 边界 【输入】 @@ -2853,17 +2861,17 @@ axes: list of ints keepdims: int,默认值:1 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

ReduceL2

+## ReduceL2 -## 功能 +### 功能 沿所提供的轴计算输入张量元素的L2范数。如果keepdim等于1,得到的张量的秩与输入的相同。如果keepdim等于0,那么得到的张量就会被精简维数。上述行为与numpy类似,只是numpy默认keepdim为False而不是True。 -## 边界 +### 边界 【输入】 @@ -2879,17 +2887,17 @@ axes: list of ints keepdims: int,默认值:1 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

ReduceMin

+## ReduceMin -## 功能 +### 功能 计算输入张量指定方向的最小值 -## 边界 +### 边界 【输入】 @@ -2909,17 +2917,17 @@ axes:数据类型为listInt;含义:指定计算轴;取值范围:\[-r, keepdims:数据类型为int;含义:是否保留缩减后的维度;默认为1 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

ReduceMean

+## ReduceMean -## 功能 +### 功能 计算输入张量的指定维度的元素的均值 -## 边界 +### 边界 【输入】 @@ -2939,17 +2947,17 @@ axes:一个1D的整数列表,含义:指定精减的维度,取值范围 keepdims:数据类型为int,默认为1,含义:是否保留缩减后的维度 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

ReduceProd

+## ReduceProd -## 功能 +### 功能 计算输入张量的元素沿所提供的轴的乘积。如果keepdim等于1,得到的张量的秩与输入的相同。如果keepdim等于0,那么得到的张量就会被精简维数。 -## 边界 +### 边界 【输入】 @@ -2965,17 +2973,17 @@ axes: list of ints keepdims: int,默认值:1 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

ReduceSumSquare

+## ReduceSumSquare -## 功能 +### 功能 沿所提供的轴计算输入张量元素的平方和。如果keepdim等于1,得到的张量的秩与输入的相同。如果keepdim等于0,那么得到的张量就会被精简维数。上述行为与numpy类似,只是numpy默认keepdim为False而不是True。 -## 边界 +### 边界 【输入】 @@ -2991,17 +2999,17 @@ axes: list of ints keepdims: int,默认值:1 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v1/v8/v9/v10/v11/v12/v13 -

Resize

+## Resize -## 功能 +### 功能 调整输入tensor大小 -## 边界 +### 边界 【输入】 @@ -3037,17 +3045,17 @@ nearest\_mode:str,默认为round\_prefer\_floor,含义:最近邻算子 目前仅支持nearest和linear插值方式来处理图片,并且需要修改模型将输入scales或sizes由placeholder改为const类型,可以使用onnxsimplifier简化模型 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v10/v11/v12 -

Relu

+## Relu -## 功能 +### 功能 整流线性单位函数 -## 边界 +### 边界 【输入】 @@ -3057,17 +3065,17 @@ X:输入张量,数据类型:float32、int32、uint8、int16、int8、uint1 Y:输出张量,数据类型与X一致 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

ReduceSum

+## ReduceSum -## 功能 +### 功能 计算输入张量指定维度的元素的和 -## 边界 +### 边界 【输入】 @@ -3087,17 +3095,17 @@ axes:一个1D的整数列表,含义:指定精减的维度,取值范围 keepdims:数据类型为int,默认为1,含义:是否保留缩减后的维度 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

ReduceMax

+## ReduceMax -## 功能 +### 功能 计算输入张量指定方向的最大值 -## 边界 +### 边界 【输入】 @@ -3117,17 +3125,17 @@ axes:数据类型为listInt;含义:指定计算轴;取值范围:\[-r, keepdims:数据类型为int;含义:是否保留缩减后的维度;默认为1 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Reshape

+## Reshape -## 功能 +### 功能 改变输入维度 -## 边界 +### 边界 【输入】 @@ -3141,17 +3149,17 @@ shape:一个张量,定义了输出张量的形状,int64 reshaped:一个张量 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

ReverseSequence

+## ReverseSequence -## 功能 +### 功能 根据指定长度对batch序列进行排序 -## 边界 +### 边界 【输入】 @@ -3173,17 +3181,17 @@ batch\_axis:int,默认为1,含义:指定batch轴 time\_axis:int,默认为1,含义:指定time轴 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v10/v11/v12/v13 -

RoiExtractor

+## RoiExtractor -## 功能 +### 功能 从特征映射列表中获取ROI特征矩阵 -## 边界 +### 边界 【输入】 @@ -3219,17 +3227,17 @@ aligned:bool型 y:一个tensor,数据类型:float32,float16 -## 支持的ONNX版本 +### 支持的ONNX版本 自定义算子,无对应onnx版本 -

RoiAlign

+## RoiAlign -## 功能 +### 功能 在每个roi区域进行池化处理 -## 边界 +### 边界 【输入】 @@ -3265,17 +3273,17 @@ batch\_indices数据类型只能写int32不能写int64 不支持atc工具参数--precision\_mode=must\_keep\_origin\_dtype时fp32,fp64的输入 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v10/v11/v12/v13 -

Round

+## Round -## 功能 +### 功能 对输入张量做四舍五入的运算 -## 边界 +### 边界 【输入】 @@ -3289,17 +3297,17 @@ x:一个tensor,数据类型:float16、float32、double y:一个tensor,数据类型和shape与输入一致 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

PRelu

+## PRelu -## 功能 +### 功能 PRelu激活函数 -## 边界 +### 边界 【输入】 @@ -3319,17 +3327,17 @@ y:一个张量,和输入x同样的type和shape slope必须是1维,当输入x的shape是1维时,slope的维度值必须为1;输入x的shape是其他维度时,slope的维度值可以为1或者为输入x的shape\[1\] -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

ScatterND

+## ScatterND -## 功能 +### 功能 创建data的拷贝,同时在指定indices处根据updates更新 -## 边界 +### 边界 【输入】 @@ -3347,17 +3355,17 @@ updates:tensor,rank = q + r - indices\_shape\[-1\] - 1,数据类型:floa y:一个张量,和输入x同样的type和shape -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v11 -

Selu

+## Selu -## 功能 +### 功能 在元素级别使用指数线性单位函数y = gamma \* \(alpha \* e^x - alpha\) for x <= 0, y = gamma \* x for x \> 0 生成张量 -## 边界 +### 边界 【输入】 @@ -3377,17 +3385,17 @@ gamma:乘数因子 y:与输入类型相同的tensor -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Shape

+## Shape -## 功能 +### 功能 获取输入tensor的shape -## 边界 +### 边界 【输入】 @@ -3399,17 +3407,17 @@ x:一个tensor y:输入tensor的shape,数据类型为int64的tensor -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Sigmoid

+## Sigmoid -## 功能 +### 功能 对输入做sigmoid -## 边界 +### 边界 【输入】 @@ -3423,17 +3431,17 @@ x:数据类型支持float16、float32 y:数据类型和输入x一致 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Slice

+## Slice -## 功能 +### 功能 获取输入tensor的切片 -## 边界 +### 边界 【输入】 @@ -3457,17 +3465,17 @@ y:切片后的张量数据,数据类型和输入一致 x:输入tensor维度不能为1 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Softmax

+## Softmax -## 功能 +### 功能 对输入进行softmax -## 边界 +### 边界 【输入】 @@ -3485,17 +3493,17 @@ y:一个tensor,类型和shape与输入x一致 axis:Int,可选,表示进行softmax的方向,默认值为-1,范围为\[ -len\(x.shape\), len\(x.shape\)-1\] -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Softsign

+## Softsign -## 功能 +### 功能 计算输入张量的softsign\(x/\(1+|x|\)\) -## 边界 +### 边界 【输入】 @@ -3509,17 +3517,17 @@ x:一个tensor,数据类型:float16、float32、double y:一个tensor,数据类型和shape与输入一致 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Softplus

+## Softplus -## 功能 +### 功能 计算softplus -## 边界 +### 边界 【输入】 @@ -3539,17 +3547,17 @@ Y:1D的张量 输入、输出的数据类型一致 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

SpaceToDepth

+## SpaceToDepth -## 功能 +### 功能 SpaceToDepth将空间数据块重新排列成深度。更具体地说,这个op输出一个输入张量的副本,其中高度和宽度维度的值移动到深度维度。 -## 边界 +### 边界 【输入】 @@ -3563,17 +3571,17 @@ output:tensor\(uint8\), tensor\(uint16\), tensor\(uint32\), tensor\(uint64\), blocksize: int -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Split

+## Split -## 功能 +### 功能 将输入切分成多个输出 -## 边界 +### 边界 【输入】 @@ -3601,17 +3609,17 @@ split的所有元素之和必须等于axis指定的切分方向的size axis在\[ -len\(x.shape\), len\(x.shape\)-1\] 之间 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Sqrt

+## Sqrt -## 功能 +### 功能 计算元素的平方根 -## 边界 +### 边界 【输入】 @@ -3631,17 +3639,17 @@ y:一个tensor 如果x小于0,返回Nan -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Squeeze

+## Squeeze -## 功能 +### 功能 从输入中去除尺寸为1的维度 -## 边界 +### 边界 【输入】 @@ -3657,17 +3665,17 @@ y:一个tensor,数据类型和输入一致 axes:一个数据类型为int32或者int64的整形列表,指定维度的维度值需要为1;取值范围为\[-r, r-1\](r表示输入张量的秩,负数表示从后面计算维度);含义:指定要去除的维度 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Sub

+## Sub -## 功能 +### 功能 进行张量的减法运算 -## 边界 +### 边界 【输入】 @@ -3687,17 +3695,17 @@ y:一个张量,数据类型和输入一致 输入、输出的shape和dtype相同,支持的数据类型:int32、float16、float32 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Sign

+## Sign -## 功能 +### 功能 逐元素计算输入tensor的符号 -## 边界 +### 边界 【输入】 @@ -3711,17 +3719,17 @@ x:tensor,数据类型:float16、float32 y:一个张量,和输入x同样的type和shape -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Sin

+## Sin -## 功能 +### 功能 计算输入张量的正弦值 -## 边界 +### 边界 【输入】 @@ -3735,17 +3743,17 @@ x:一个tensor,数据类型:float16、float32、double y:一个tensor,数据类型和shape与输入一致 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Sinh

+## Sinh -## 功能 +### 功能 计算输入张量双曲正弦值 -## 边界 +### 边界 【输入】 @@ -3759,17 +3767,17 @@ x:一个tensor,数据类型:float16、float32、double y:一个tensor,数据类型和shape与输入一致 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Size

+## Size -## 功能 +### 功能 计算输入tensor的元素个数 -## 边界 +### 边界 【输入】 @@ -3783,17 +3791,17 @@ x:tensor,数据类型:float16、float32 y:一个int64的scalar -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Sum

+## Sum -## 功能 +### 功能 求和 -## 边界 +### 边界 【输入】 @@ -3807,17 +3815,17 @@ x:tensor序列,数据类型:float16、float32 y:一个张量,和输入x同样的type和shape -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Tanh

+## Tanh -## 功能 +### 功能 计算输入的双曲正切值 -## 边界 +### 边界 【输入】 @@ -3831,17 +3839,17 @@ x:一个tensor,数据类型:float16、float32 y:一个tensor,数据类型与输入一致 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Tile

+## Tile -## 功能 +### 功能 将输入张量沿指定维度重复 -## 边界 +### 边界 【输入】 @@ -3857,17 +3865,17 @@ repeats:一个1D的int64的tensor,size和输入的维度数一样 y:输出的tensor,type和维度与输入一致,output\_dim\[i\] = input\_dim\[i\] \* repeats\[i\] -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

ThresholdedRelu

+## ThresholdedRelu -## 功能 +### 功能 当x \> alpha时y = x,否则y=0 -## 边界 +### 边界 【输入】 @@ -3885,17 +3893,17 @@ y:一个张量,和输入x同样的type和shape alpha:float,默认为1.0,含义:阈值 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v10/v11/v12/v13 -

TopK

+## TopK -## 功能 +### 功能 返回指定轴的k个最大或最小值 -## 边界 +### 边界 【输入】 @@ -3921,17 +3929,17 @@ largest:int,默认为1,含义:返回k个最大/最小值 sorted:int,默认为1,含义:是否升序 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Transpose

+## Transpose -## 功能 +### 功能 转置 -## 边界 +### 边界 【输入】 @@ -3945,17 +3953,17 @@ transposed:转置之后的张量 perm:整数列表, 张量data的维度排列 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

pad

+## pad -## 功能 +### 功能 对输入tensor做填充 -## 边界 +### 边界 【输入】 @@ -3975,17 +3983,17 @@ y:数据类型和输入x一致 当mode值为constant时,目前仅支持constant\_value=0 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Pow

+## Pow -## 功能 +### 功能 计算输入x1的x2次幂 -## 边界 +### 边界 【输入】 @@ -4001,17 +4009,17 @@ x2:一个tensor,数据类型和输入x1一致 y:数据类型和输入x1一致 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 -

Unsqueeze

+## Unsqueeze -## 功能 +### 功能 在输入张量(数据)的形状中插入一维项 -## 边界 +### 边界 【输入】 @@ -4029,17 +4037,17 @@ y:一个tensor,数据类型和输入x一致 axes:ListInt,表示在指定的维度进行插1维项,取值范围为\[-input\_rank, input\_rank\],input\_rank为输入张量的秩,axes的内容不可以重复 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/10/v11/v12 -

Where

+## Where -## 功能 +### 功能 根据条件从两个输入中选择元素 -## 边界 +### 边界 【输入】 @@ -4055,7 +4063,7 @@ y:一个tensor,条件为false时从y中选取元素,和x的数据类型一 一个tensor,数据类型和输入x一致 -## 支持的ONNX版本 +### 支持的ONNX版本 Opset v8/v9/v10/v11/v12/v13 diff --git "a/docs/zh/CANN 5.0.2 \346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225/public_sys-resources/icon-caution.gif" "b/docs/zh/CANN 5.0.2 \346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225/public_sys-resources/icon-caution.gif" deleted file mode 100644 index 6e90d7cfc2193e39e10bb58c38d01a23f045d571..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 580 zcmV-K0=xZ3Nk%w1VIu$?0Hp~4{QBgqmQ+MG9K51r{QB&)np^||1PlfQ%(86!{`~yv zv{XhUWKt}AZaiE{EOcHp{O-j3`t;<+eEiycJT4p@77X;(jQsMfB$R?oG%6hQ z+MMLZbQBH@)Vg&1^3?qHb(5!%>3r0+`eq=&V&E}0Dypi0000000000 z00000A^8LW000R9EC2ui03!e$000L5z=Uu}ED8YtqjJd<+B}(9bIOb$3-31_h|V>=0A{ z1Hh0#H30>fNT})^fRU_83uewx9oRr{f{Sx1Ml`t)EQ zGkHZ67&~y{W5Jpq4H_WfuLxp*3<7O}GEl;1ESe36fLNs=B0&LQM1Buf(R)qg(BRd`t1OPjI1m_q4 diff --git "a/docs/zh/CANN 5.0.2 \346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225/public_sys-resources/icon-danger.gif" "b/docs/zh/CANN 5.0.2 \346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225/public_sys-resources/icon-danger.gif" deleted file mode 100644 index 6e90d7cfc2193e39e10bb58c38d01a23f045d571..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 580 zcmV-K0=xZ3Nk%w1VIu$?0Hp~4{QBgqmQ+MG9K51r{QB&)np^||1PlfQ%(86!{`~yv zv{XhUWKt}AZaiE{EOcHp{O-j3`t;<+eEiycJT4p@77X;(jQsMfB$R?oG%6hQ z+MMLZbQBH@)Vg&1^3?qHb(5!%>3r0+`eq=&V&E}0Dypi0000000000 z00000A^8LW000R9EC2ui03!e$000L5z=Uu}ED8YtqjJd<+B}(9bIOb$3-31_h|V>=0A{ z1Hh0#H30>fNT})^fRU_83uewx9oRr{f{Sx1Ml`t)EQ zGkHZ67&~y{W5Jpq4H_WfuLxp*3<7O}GEl;1ESe36fLNs=B0&LQM1Buf(R)qg(BRd`t1OPjI1m_q4 diff --git "a/docs/zh/CANN 5.0.2 \346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225/public_sys-resources/icon-note.gif" "b/docs/zh/CANN 5.0.2 \346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225/public_sys-resources/icon-note.gif" deleted file mode 100644 index 6314297e45c1de184204098efd4814d6dc8b1cda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 394 zcmZ?wbhEHblx7fPSjxcg=ii?@_wH=jwxy=7CMGH-B`L+l$wfv=#>UF#$gv|VY%C^b zCQFtrnKN(Bo_%|sJbO}7RAORe!otL&qo<>yq_Sq+8Xqqo5h0P3w3Lvb5E(g{p01vl zxR@)KuDH0l^z`+-dH3eaw=XqSH7aTIx{kzVBN;X&hha0dQSgWuiw0NWUvMRmkD|> diff --git "a/docs/zh/CANN 5.0.2 \346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225/public_sys-resources/icon-notice.gif" "b/docs/zh/CANN 5.0.2 \346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225/public_sys-resources/icon-notice.gif" deleted file mode 100644 index 86024f61b691400bea99e5b1f506d9d9aef36e27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 406 zcmV;H0crk6Nk%w1VIu$@0J8u9|NsB@_xJDb@8;&_*4Ea}&d#;9wWXz{jEszHYim+c zQaU<1At50E0000000000A^8Le000gEEC2ui03!e%000R7038S%NU)&51O^i-Tu6`s z0)`MFE@;3YqD6xSC^kTNu_J>91{PH8XfZ(p1pp2-SU@u3#{mEUC}_}tg3+I#{z}{Ok@D_ZUDg- zt0stin4;pC8M{WLSlRH*1pzqEw1}3oOskyNN?j;7HD{BBZ*OEcv4HK!6Bk6beR+04 z&8}k>SkTusVTDmkyOz#5fCA$JTPGJVQvr3uZ?QzzPQFvD0rGf_PdrcF`pMs}p^BcF zKtKTd`0wipR%nKN&Wj+V}pX;WC3SdJV!a_8Qi zE7z`U*|Y^H0^}fB$R?oG%6hQ z+MMLZbQBH@)Vg&1^3?qHb(5!%>3r0+`eq=&V&E}0Dypi0000000000 z00000A^8LW000R9EC2ui03!e$000L5z=Uu}ED8YtqjJd<+B}(9bIOb$3-31_h|V>=0A{ z1Hh0#H30>fNT})^fRU_83uewx9oRr{f{Sx1Ml`t)EQ zGkHZ67&~y{W5Jpq4H_WfuLxp*3<7O}GEl;1ESe36fLNs=B0&LQM1Buf(R)qg(BRd`t1OPjI1m_q4 diff --git "a/docs/zh/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225.md" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225 01/FrameworkPTAdapter 2.0.2 PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225 01.md" similarity index 99% rename from "docs/zh/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225.md" rename to "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225 01/FrameworkPTAdapter 2.0.2 PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225 01.md" index 7c4505ad1a6..9c0580cd687 100644 --- "a/docs/zh/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225.md" +++ "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225 01/FrameworkPTAdapter 2.0.2 PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225 01.md" @@ -173,21 +173,21 @@

torch.linspace

-

+

23

torch.logspace

-

+

24

torch.eye

-

+

25

@@ -229,7 +229,7 @@

torch.quantize_per_tensor

-

+

31

@@ -481,14 +481,14 @@

torch.bernoulli

-

+

8

torch.multinomial

-

+

9

@@ -915,7 +915,7 @@

torch.log10

-

+

35

@@ -1216,7 +1216,7 @@

torch.allclose

-

+

78

@@ -1279,7 +1279,7 @@

torch.kthvalue

-

+

87

@@ -1433,7 +1433,7 @@

torch.cross

-

+

109

@@ -1447,7 +1447,7 @@

torch.cummin

-

+

111

@@ -1461,7 +1461,7 @@

torch.cumsum

-

+

113

@@ -1482,7 +1482,7 @@

torch.diagflat

-

+

116

@@ -1538,7 +1538,7 @@

torch.renorm

-

+

124

@@ -1720,7 +1720,7 @@

torch.slogdet

-

+

150

@@ -1783,7 +1783,7 @@

torch.mv

-

+

159

@@ -1811,7 +1811,7 @@

torch.qr

-

+

163

@@ -1860,7 +1860,7 @@

torch.trapz

-

+

170

@@ -2147,7 +2147,7 @@

torch.Tensor.addcmul_

-

+

24

@@ -2196,7 +2196,7 @@

torch.Tensor.allclose

-

+

31

@@ -2539,7 +2539,7 @@

torch.Tensor.cross

-

+

80

@@ -2560,7 +2560,7 @@

torch.Tensor.cummin

-

+

83

@@ -2574,7 +2574,7 @@

torch.Tensor.cumsum

-

+

85

@@ -2623,7 +2623,7 @@

torch.Tensor.diagflat

-

+

92

@@ -2749,14 +2749,14 @@

torch.Tensor.erfc

-

+

110

torch.Tensor.erfc_

-

+

111

@@ -3022,14 +3022,14 @@

torch.Tensor.index_copy_

-

+

149

torch.Tensor.index_copy

-

+

150

@@ -3169,7 +3169,7 @@

torch.Tensor.kthvalue

-

+

170

@@ -3239,14 +3239,14 @@

torch.Tensor.log10

-

+

180

torch.Tensor.log10_

-

+

181

@@ -3512,7 +3512,7 @@

torch.Tensor.mv

-

+

219

@@ -3701,7 +3701,7 @@

torch.Tensor.qr

-

+

246

@@ -4905,7 +4905,7 @@

torch.nn.Conv3d

-

+

60

@@ -4940,14 +4940,14 @@

torch.nn.Fold

-

+

65

torch.nn.MaxPool1d

-

+

66

@@ -4961,7 +4961,7 @@

torch.nn.MaxPool3d

-

+

68

@@ -4975,7 +4975,7 @@

torch.nn.MaxUnpool2d

-

+

70

@@ -5003,7 +5003,7 @@

torch.nn.AvgPool3d

-

+

74

@@ -5381,7 +5381,7 @@

torch.nn.InstanceNorm3d

-

+

128

@@ -5395,7 +5395,7 @@

torch.nn.LocalResponseNorm

-

+

130

@@ -5563,21 +5563,21 @@

torch.nn.Dropout2d

-

+

154

torch.nn.Dropout3d

-

+

155

torch.nn.AlphaDropout

-

+

156

@@ -5612,7 +5612,7 @@

torch.nn.CosineSimilarity

-

+

161

@@ -5647,7 +5647,7 @@

torch.nn.CTCLoss

-

+

166

@@ -5661,7 +5661,7 @@

torch.nn.PoissonNLLLoss

-

+

168

@@ -6739,7 +6739,7 @@

torch.nn.functional.conv3d

-

+

4

@@ -6774,7 +6774,7 @@

torch.nn.functional.fold

-

+

9

@@ -6795,14 +6795,14 @@

torch.nn.functional.avg_pool3d

-

+

12

torch.nn.functional.max_pool1d

-

+

13

@@ -6816,7 +6816,7 @@

torch.nn.functional.max_pool3d

-

+

15

@@ -6865,7 +6865,7 @@

torch.nn.functional.adaptive_max_pool2d

-

+

22

@@ -6893,7 +6893,7 @@

torch.nn.functional.adaptive_avg_pool3d

-

+

26

@@ -6991,7 +6991,7 @@

torch.nn.functional.prelu

-

+

40

@@ -7012,7 +7012,7 @@

torch.nn.functional.glu

-

+

43

@@ -7033,7 +7033,7 @@

torch.nn.functional.hardshrink

-

+

46

@@ -7054,7 +7054,7 @@

torch.nn.functional.softplus

-

+

49

@@ -7124,14 +7124,14 @@

torch.nn.functional.layer_norm

-

+

59

torch.nn.functional.local_response_norm

-

+

60

@@ -7201,7 +7201,7 @@

torch.nn.functional.one_hot

-

+

70

@@ -7215,14 +7215,14 @@

torch.nn.functional.cosine_similarity

-

+

72

torch.nn.functional.pdist

-

+

73

@@ -7257,7 +7257,7 @@

torch.nn.functional.cross_entropy

-

+

78

@@ -7306,7 +7306,7 @@

torch.nn.functional.multilabel_margin_loss

-

+

85

@@ -7341,7 +7341,7 @@

torch.nn.functional.soft_margin_loss

-

+

90

diff --git "a/docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227.md" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227 01/FrameworkPTAdapter 2.0.2 PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227 01.md" similarity index 100% rename from "docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227.md" rename to "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227 01/FrameworkPTAdapter 2.0.2 PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227 01.md" diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/zh-cn_image_0000001106176216.png" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227 01/figures/zh-cn_image_0000001152776305.png" similarity index 100% rename from "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/zh-cn_image_0000001106176216.png" rename to "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227 01/figures/zh-cn_image_0000001152776305.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227 01/figures/\345\234\250\347\272\277\346\216\250\347\220\206\346\265\201\347\250\213\345\233\276.png" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227 01/figures/\345\234\250\347\272\277\346\216\250\347\220\206\346\265\201\347\250\213\345\233\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..9ddcc9d912b91bcb3b47dc6fcb1a8b1d86398c90 GIT binary patch literal 16410 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 literal 0 HcmV?d00001 diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227 01/figures/\346\235\203\351\207\215\346\233\264\346\226\260\346\265\201\347\250\213\347\244\272\346\204\217\345\233\276.png" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227 01/figures/\346\235\203\351\207\215\346\233\264\346\226\260\346\265\201\347\250\213\347\244\272\346\204\217\345\233\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..87b61f83d611b35ea15d0f069b71245d72ee7a0a GIT binary patch literal 10725 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 w=OKWe!7V+AX)+s5MIvDm@@CKf4eDurzyJUM literal 0 HcmV?d00001 diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01.md" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01.md" index 03b1254f10b..50013c7b352 100644 --- "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01.md" +++ "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01.md" @@ -14,32 +14,30 @@ - [概述](#概述.md) - [实现过程](#实现过程.md) - [FAQ](#FAQ.md) - - [Pillow==5.3.0安装失败](#Pillow-5-3-0安装失败.md) - - [pip3.7 install torchvision安装失败](#pip3-7-install-torchvision安装失败.md) - - [安装“torch-\*.whl ”提示“torch 1.5.0xxxx”与“torchvision”所依赖的版本不匹配](#安装-torch--whl-提示-torch-1-5-0xxxx-与-torchvision-所依赖的版本不匹配.md) - - [执行算子功能验证用例,结果成功,但会报一个错误“THPModule\_npu\_shutdown failed.”](#执行算子功能验证用例-结果成功-但会报一个错误-THPModule_npu_shutdown-failed.md) + - [Pillow==5.3.0安装失败](#Pillow==5.3.0安装失败.md) + - [pip3.7 install torchvision安装失败](#pip3.7 install torchvision安装失败.md) + - [安装“torch-\*.whl ”提示“torch 1.5.0xxxx”与“torchvision”所依赖的版本不匹配](#安装torch-\*.whl提示torch 1.5.0xxxx与torchvision所依赖的版本不匹配.md) + - [执行算子功能验证用例,结果成功,但会报一个错误“THPModule\_npu\_shutdown failed.”](#执行算子功能验证用例,结果成功,但会报一个错误THPModule\_npu\_shutdown failed.md) - [如何查看测试的运行日志](#如何查看测试的运行日志.md) - - [测试运行输出的NPU错误码是什么意思,有无对应的含义解释?](#测试运行输出的NPU错误码是什么意思-有无对应的含义解释.md) - - [为什么我实现的“自定义TBE算子”无法调用到?](#为什么我实现的-自定义TBE算子-无法调用到.md) - - [如何确定“TBE算子”是否被“PyTorch适配”正确调用?](#如何确定-TBE算子-是否被-PyTorch适配-正确调用.md) - - [PyTorch编译失败,提示“error: ld returned 1 exit status”](#PyTorch编译失败-提示-error-ld-returned-1-exit-status.md) - - [PyTorch编译失败,提示“error: call of overload ....”](#PyTorch编译失败-提示-error-call-of-overload.md) + - [测试运行输出的NPU错误码是什么意思,有无对应的含义解释?](#测试运行输出的NPU错误码是什么意思,有无对应的含义解释?.md) + - [为什么我实现的“自定义TBE算子”无法调用到?](#为什么我实现的自定义TBE算子无法调用到?.md) + - [如何确定“TBE算子”是否被“PyTorch适配”正确调用?](#如何确定TBE算子是否被PyTorch适配正确调用?.md) + - [PyTorch编译失败,提示“error: ld returned 1 exit status”](#PyTorch编译失败,提示error: ld returned 1 exit status.md) + - [PyTorch编译失败,提示“error: call of overload ....”](#PyTorch编译失败,提示error: call of overload.md) - [附录](#附录.md) - [CMake安装方法](#CMake安装方法.md) - [自定义算子导出方法](#自定义算子导出方法.md) -

简介

- -## 概述 +## 简介 用户通过完成TBE自定义算子适配PyTorch框架,实现PyTorch框架中算子在昇腾AI处理器上运行。 -

算子开发流程

+## 算子开发流程 Pytorch算子开发包含TBE算子开发和PyTorch框架下的算子适配。 1. TBE算子开发:昇腾AI软件栈中不包含相应的算子,需要先完成TBE算子的开发,再进行PyTorch框架下的算子适配。 - TBE算子开发流程及方法请参见《CANN TBE自定义算子开发指南](https://support.huawei.com/enterprise/zh/doc/EDOC1100191916)》。 + TBE算子开发流程及方法请参见《[CANN TBE自定义算子开发指南](https://support.huawei.com/enterprise/zh/doc/EDOC1100191916)》。 2. PyTorch框架下的算子适配:昇腾AI软件栈中已实现了相应的TBE算子,可直接进行PyTorch框架适配。 @@ -48,96 +46,31 @@ Pytorch算子开发包含TBE算子开发和PyTorch框架下的算子适配。 **图 1** PyTorch框架下的算子适配流程 ![](figures/PyTorch框架下的算子适配流程.png "PyTorch框架下的算子适配流程") - **表 1** 算子开发步骤详解 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

序号

-

步骤

-

描述

-

参考

-

1

-

环境准备

-

准备算子开发及运行验证所依赖的开发环境与运行环境。

-

算子开发准备

-

2

-

算子速查

-

查看TBE算子支持列表和PyTorch算子适配列表。

-
  • 当前昇腾AI处理器支持的算子列表及支持的算子的详细规格约束。
  • 当前PyTorch适配的算子列表
-

3

-

获取PyTorch源码

-

获取昇腾社区PyTorch源码。

-

算子适配开发

-

-

-

-

4

-

注册算子开发

-

将算子分发到昇腾AI处理器。

-

5

-

算子适配层开发

-

算子适配层开发,将基于第三方框架的算子属性映射成适配昇腾AI处理器的算子属性。

-

6

-

编译安装PyTorch框架

-

编译适配开发后的Pytorch源码,并安装编译的源码包。

-

7

-

算子验证

-

在真实的硬件环境中验证算子功能。

-

算子功能验证

-
- -

算子开发准备

+| 序号 | 步骤 | 描述 | 参考 | +| ---- | ------------------- | ------------------------------------------------------------ | -------------------------------- | +| 1 | 环境准备 | 准备算子开发及运行验证所依赖的开发环境与运行环境。 | [算子开发准备](#算子开发准备.md) | +| 2 | 算子速查 | 查看TBE算子支持列表和PyTorch算子适配列表。当前昇腾AI处理器支持的算子列表及支持的算子的详细规格约束;当前PyTorch适配的算子列表。 | [算子开发准备](#算子开发准备.md) | +| 3 | 获取PyTorch源码 | 获取昇腾社区PyTorch源码。 | [算子适配开发](#算子适配开发.md) | +| 4 | 注册算子开发 | 将算子分发到昇腾AI处理器。 | [算子适配开发](#算子适配开发.md) | +| 5 | 算子适配层开发 | 算子适配层开发,将基于第三方框架的算子属性映射成适配昇腾AI处理器的算子属性。 | [算子适配开发](#算子适配开发.md) | +| 6 | 编译安装PyTorch框架 | 编译适配开发后的Pytorch源码,并安装编译的源码包。 | [算子适配开发](#算子适配开发.md) | +| 7 | 算子验证 | 在真实的硬件环境中验证算子功能。 | [算子功能验证](#算子功能验证.md) | + +## 算子开发准备 - **[环境准备](#环境准备.md)** - **[算子速查](#算子速查.md)** +### 环境准备 -

环境准备

- -## 前提条件 +**前提条件** -- 已完成CANN开发或运行环境的安装,具体操作请参考《CANN 软件安装指南](https://support.huawei.com/enterprise/zh/ascend-computing/cann-pid-251168373)》。 +- 已完成CANN开发或运行环境的安装,具体操作请参考《[CANN 软件安装指南](https://support.huawei.com/enterprise/zh/ascend-computing/cann-pid-251168373)》。 - 需安装3.12.0以上版本的CMake,安装方法请参考[CMake安装方法](#CMake安装方法.md)。 -- 需确保已安装7.3.0以上版本的gcc,7.3.0版本gcc具体安装及使用方式请参见《CANN 软件安装指南](https://support.huawei.com/enterprise/zh/ascend-computing/cann-pid-251168373)》中的“安装7.3.0版本gcc”章节。 +- 需确保已安装7.3.0以上版本的gcc,7.3.0版本gcc具体安装及使用方式请参见《[CANN 软件安装指南](https://support.huawei.com/enterprise/zh/ascend-computing/cann-pid-251168373)》中的“安装7.3.0版本gcc”章节。 - 需确保环境中已安装git工具,以Ubuntu和CentOS系统为例,命令如下: - Ubuntu系统 @@ -149,7 +82,7 @@ Pytorch算子开发包含TBE算子开发和PyTorch框架下的算子适配。 -## 安装PyTorch依赖环境 +**安装PyTorch依赖环境** 如果使用非root用户安装Python及其依赖,用户需要在每句命令结尾加上**--user**,保证安装的正常进行。命令示例为:**pip3.7 install pyyaml --user** @@ -162,37 +95,35 @@ pip3.7 install Pillow==5.3.0 >![](public_sys-resources/icon-note.gif) **说明:** >若以上过程出错,请参考[FAQ](#FAQ.md)尝试解决问题。 -

算子速查

+### 算子速查 进行算子开发时,您可以查询当前昇腾AI处理器中支持的算子列表和当前PyTorch适配的算子列表。根据查询结果进行算子开发或PyTorch算子适配。 - 当前昇腾AI处理器中支持的算子以及对应的算子约束可以通过以下两种方式查询。 - - 命令行开发方式下,您可以参见《CANN 算子清单 \(Ascend 910\)](https://support.huawei.com/enterprise/zh/doc/EDOC1100191920)》进行离线查询。 - - MindStudio开发方式下,您可以通过MindStudio进行在线查询,详细查看方法可参见《MindStudio 用户指南](https://support.huaweicloud.com/mindstudio301/index.html)》中的“算子&模型速查”章节。 + - 命令行开发方式下,您可以参见《[CANN 算子清单 \(Ascend 910\)](https://support.huawei.com/enterprise/zh/doc/EDOC1100191920)》进行离线查询。 + - MindStudio开发方式下,您可以通过MindStudio进行在线查询,详细查看方法可参见《[MindStudio 用户指南](https://support.huaweicloud.com/mindstudio301/index.html)》中的“算子&模型速查”章节。 +- 当前PyTorch适配的算子列表可以参见《[PyTorch适配算子清单](https://support.huawei.com/enterprise/zh/doc/EDOC1100191773)》 -- 当前PyTorch适配的算子列表可以参见《PyTorch适配算子清单](https://support.huawei.com/enterprise/zh/doc/EDOC1100191773)》 +## 算子适配开发 -

算子适配开发

+- **[前提条件](#前提条件.md)** -- **[前提条件](#前提条件.md)** +- **[获取PyTorch源码](#获取PyTorch源码.md)** -- **[获取PyTorch源码](#获取PyTorch源码.md)** +- **[注册算子开发](#注册算子开发.md)** -- **[注册算子开发](#注册算子开发.md)** +- **[算子适配开发](#算子适配开发-0.md)** -- **[算子适配开发](#算子适配开发-0.md)** +- **[编译安装PyTorch框架](#编译安装PyTorch框架.md)** -- **[编译安装PyTorch框架](#编译安装PyTorch框架.md)** +### 前提条件 +1. 完成开发及运行环境准备及相关依赖的安装,详情请参见[环境准备](#环境准备.md)。 +2. 完成相关的TBE算子开发及部署,详情请参见《[CANN TBE自定义算子开发指南](https://support.huawei.com/enterprise/zh/doc/EDOC1100191916)》。 -

前提条件

+### 获取PyTorch源码 -1. 完成开发及运行环境准备及相关依赖的安装,详情请参见[环境准备](#zh-cn_topic_0000001125736787.md)。 -2. 完成相关的TBE算子开发及部署,详情请参见《CANN TBE自定义算子开发指南](https://support.huawei.com/enterprise/zh/doc/EDOC1100191916)》。 - -

获取PyTorch源码

- -从gitee上获取适配昇腾AI处理器的PyTorch源代码,获取地址为: [https://gitee.com/ascend/pytorch](https://gitee.com/ascend/pytorch) 。用户可以通过执行下面git命令行下载源代码。 +从gitee上获取适配昇腾AI处理器的PyTorch源代码,获取地址为:[https://gitee.com/ascend/pytorch](https://gitee.com/ascend/pytorch) 。用户可以通过执行下面git命令行下载源代码。 ``` git clone https://gitee.com/ascend/pytorch.git --deepth=1 @@ -203,13 +134,13 @@ git clone https://gitee.com/ascend/pytorch.git --deepth=1 >![](public_sys-resources/icon-note.gif) **说明:** >如无权限获取代码,请联系华为技术支持申请加入“Ascend”组织。 -

注册算子开发

+### 注册算子开发 -## 概述 +#### 概述 当前制定的NPU适配派发原则是NPU算子的派发不经过框架公共函数,直接派发成NPU适配的函数,即算子执行调用栈中只包含NPU适配的函数调用,不包含框架公共函数。PyTorch框架在编译时,会根据 native\_functions.yaml 的定义,按框架中定义的类型和设备分发原则,生成相应的新算子的中间层的调用说明。对于NPU,会生成在 build/aten/src/ATen/NPUType.cpp。 -## 注册算子开发方法 +#### 注册算子开发方法 1. 打开native\_functions.yaml文件。 @@ -255,7 +186,7 @@ git clone https://gitee.com/ascend/pytorch.git --deepth=1 >该格式供参考,算子适配开发过程中的函数名需与NPU\_Adapt\_Fun\_Name保持一致。 -## 示例 +#### 示例 以torch.add\(\)算子为例介绍注册算子开发过程。 @@ -339,15 +270,13 @@ git clone https://gitee.com/ascend/pytorch.git --deepth=1 supports_named_tensor: True ``` +### 算子适配开发 - -

算子适配开发

- -## 简介 +#### 简介 用户通过开发算子适配插件,实现PyTorch原生算子的输入参数、输出参数和属性的格式转换,使转换后的格式与TBE算子的输入参数、输出参数和属性的格式相同。适配昇腾AI处理器的PyTorch源代码中提供了适配关联、类型转换和判别、处理动态shape等相关的方法供用户使用。 -## 适配插件实现 +#### 适配插件实现 1. 创建适配插件文件 @@ -369,7 +298,7 @@ git clone https://gitee.com/ascend/pytorch.git --deepth=1 实现算子适配主题函数,根据TBE算子原型构造得到对应的input、output、attr。 -## 示例 +#### 示例 以torch.add\(\)算子为例介绍算子适配开发过程。 @@ -527,9 +456,9 @@ git clone https://gitee.com/ascend/pytorch.git --deepth=1 >![](public_sys-resources/icon-note.gif) **说明:** >AddKernelNpu.cpp的详细实现代码请参见pytorch/aten/src/ATen/native/npu/AddKernelNpu.cpp文档。 -

编译安装PyTorch框架

+### 编译安装PyTorch框架 -## 编译PyTorch框架 +#### 编译PyTorch框架 1. 进入PyTorch工作目录 :“pytorch“。 2. 给脚本文件赋权限: @@ -545,7 +474,7 @@ git clone https://gitee.com/ascend/pytorch.git --deepth=1 >![](public_sys-resources/icon-note.gif) **说明:** >首次编译持续的时间较长,可能超过30分钟,建议:若无必要,无需执行"make clean"。 -## 安装PyTorch框架 +#### 安装PyTorch框架 1. 将[编译安装PyTorch框架](#编译安装PyTorch框架.md)生成的torch-\*.whl包上传到服务器任一路径。 2. 进入torch-\*.whl 所在的目录,使用pip命令完成torch安装。 @@ -567,34 +496,33 @@ git clone https://gitee.com/ascend/pytorch.git --deepth=1 >1. 修改代码之后,需要重新执行“编译”和“安装”PyTorch过程。 >2. 安装过程中,可能会出现错误提示"torchvision 0.6.0" 版本不匹配,此问题无影响,忽略即可。 -

算子功能验证

+## 算子功能验证 - **[概述](#概述.md)** - **[实现过程](#实现过程.md)** +### 概述 -

概述

- -## 简介 +#### 简介 完成算子适配开发后,可通过运行适配昇腾处理器的PyTorch算子,验证算子运行结果是否正确。 算子功能验证会覆盖算子开发的所有交付件,包含实现文件,算子原型定义、算子信息库以及算子适配插件。本节仅对验证的方法做介绍。 -## 测试用例及测试工具 +#### 测试用例及测试工具 进行自定义算子功能验证,通过PyTorch前端构造自定义算子的函数并运行验证。 在https://gitee.com/ascend/pytorch中 "pytorch/test/test\_npu/test\_network\_ops"目录下提供了测试用例及测试工具,供用户参考。 -

实现过程

+### 实现过程 -## 简介 +#### 简介 本章通过具体例子,完成PyTorch算子的功能测试步骤。 -## 操作步骤 +#### 操作步骤 1. 设置环境变量。 @@ -674,93 +602,91 @@ git clone https://gitee.com/ascend/pytorch.git --deepth=1 python3.7.5 testcase_add.py ``` +## FAQ -

FAQ

+- **[Pillow==5.3.0安装失败](#Pillow==5.3.0安装失败.md)** -- **[Pillow==5.3.0安装失败](#Pillow-5-3-0安装失败.md)** +- **[pip3.7 install torchvision安装失败](#pip3.7 install torchvision安装失败.md)** -- **[pip3.7 install torchvision安装失败](#pip3-7-install-torchvision安装失败.md)** +- **[安装“torch-\*.whl ”提示“torch 1.5.0xxxx”与“torchvision”所依赖的版本不匹配](#安装torch-\*.whl提示torch 1.5.0xxxx与torchvision所依赖的版本不匹配.md)** -- **[安装“torch-\*.whl ”提示“torch 1.5.0xxxx”与“torchvision”所依赖的版本不匹配](#安装-torch--whl-提示-torch-1-5-0xxxx-与-torchvision-所依赖的版本不匹配.md)** - -- **[执行算子功能验证用例,结果成功,但会报一个错误“THPModule\_npu\_shutdown failed.”](#执行算子功能验证用例-结果成功-但会报一个错误-THPModule_npu_shutdown-failed.md)** +- **[执行算子功能验证用例,结果成功,但会报一个错误“THPModule\_npu\_shutdown failed.”](#执行算子功能验证用例,结果成功,但会报一个错误THPModule\_npu\_shutdown failed.md)** - **[如何查看测试的运行日志](#如何查看测试的运行日志.md)** -- **[测试运行输出的NPU错误码是什么意思,有无对应的含义解释?](#测试运行输出的NPU错误码是什么意思-有无对应的含义解释.md)** - -- **[为什么我实现的“自定义TBE算子”无法调用到?](#为什么我实现的-自定义TBE算子-无法调用到.md)** +- **[测试运行输出的NPU错误码是什么意思,有无对应的含义解释?](#测试运行输出的NPU错误码是什么意思,有无对应的含义解释?.md)** -- **[如何确定“TBE算子”是否被“PyTorch适配”正确调用?](#如何确定-TBE算子-是否被-PyTorch适配-正确调用.md)** +- **[为什么我实现的“自定义TBE算子”无法调用到?](#为什么我实现的自定义TBE算子无法调用到?.md)** -- **[PyTorch编译失败,提示“error: ld returned 1 exit status”](#PyTorch编译失败-提示-error-ld-returned-1-exit-status.md)** +- **[如何确定“TBE算子”是否被“PyTorch适配”正确调用?](#如何确定TBE算子是否被PyTorch适配正确调用?.md)** -- **[PyTorch编译失败,提示“error: call of overload ....”](#PyTorch编译失败-提示-error-call-of-overload.md)** +- **[PyTorch编译失败,提示“error: ld returned 1 exit status”](#PyTorch编译失败,提示error: ld returned 1 exit status.md)** +- **[PyTorch编译失败,提示“error: call of overload ....”](#PyTorch编译失败,提示error: call of overload.md)** -

Pillow==5.3.0安装失败

+### Pillow==5.3.0安装失败 -## 现象描述 +**现象描述** pillow==5.3.0安装失败。 -## 可能原因 +**可能原因** 缺少必要的依赖,如:libjpeg、python-devel、 zlib-devel 、libjpeg-turbo-devel等等。 -## 处理方法 +**处理方法** apt-get install libjpeg python-devel zlib-devel libjpeg-turbo-devel。 -

pip3.7 install torchvision安装失败

+### pip3.7 install torchvision安装失败 -## 现象描述 +**现象描述** pip3.7 install torchvision安装失败。 -## 可能原因 +**可能原因** torch与torchvision版本不匹配。 -## 处理方法 +**处理方法** pip3.7 install torchvision --no-deps -

安装“torch-\*.whl ”提示“torch 1.5.0xxxx”与“torchvision”所依赖的版本不匹配

+### 安装“torch-\*.whl ”提示“torch 1.5.0xxxx”与“torchvision”所依赖的版本不匹配 -## 现象描述 +**现象描述** 安装“torch-\*.whl”时,提示"ERROR:torchvision 0.6.0 has requirement torch==1.5.0, but you'll have torch 1.5.0a0+1977093 which is incompatible"。 ![](figures/zh-cn_image_0000001172886189.png) -但实际安装成功 +但实际安装成功。 -## 可能原因 +**可能原因** 安装torch时,会自动触发torchvision进行依赖版本检查,环境中安装的torchvision版本为0.6.0,检查时发现我们安装的torch-\*.whl的版本号与要求的1.5.0不一致,所以提示了一条错误 。 -## 处理方法 +**处理方法** 对实际结果无影响,无需处理。 -

执行算子功能验证用例,结果成功,但会报一个错误“THPModule\_npu\_shutdown failed.”

+### 执行算子功能验证用例,结果成功,但会报一个错误“THPModule\_npu\_shutdown failed.” -## 现象描述 +**现象描述** 执行算子功能验证用例,结果成功,但会报一个错误“THPModule\_npu\_shutdown failed.”。 ![](figures/zh-cn_image_0000001173046107.png) -## 可能原因 +**可能原因** 可能是框架影响,待进一步定位 。 -## 处理方法 +**处理方法** 对实际结果无影响,无需处理,忽略此问题。 -

如何查看测试的运行日志

+### 如何查看测试的运行日志 测试运行过程提示错误,但直接可参考的信息太少,如何才能看到更详细的运行日志? @@ -786,30 +712,29 @@ pip3.7 install torchvision --no-deps 设置完成后,直接运行测试用例,就可以将相关的日志输出到屏幕,为了方便查看和回溯,建议根据需要使用[2](#zh-cn_topic_0000001125315889_li168732325719)运行。 -2. 运行测试用例时,将日志重定向到指定文件。 +2. 运行测试用例时,将日志重定向到指定文件。 ``` python3.7.5 add_testcase.py > test_log.txt ``` - -

测试运行输出的NPU错误码是什么意思,有无对应的含义解释?

+### 测试运行输出的NPU错误码是什么意思,有无对应的含义解释? 参考“[错误码定义](https://support.huaweicloud.com/adevg-A300_3000_3010/atlasdevelopment_01_0256.html)”。 -

为什么我实现的“自定义TBE算子”无法调用到?

+### 为什么我实现的“自定义TBE算子”无法调用到? -## 现象描述 +**现象描述** 完成“自定义TBE算子”开发,和“PyTorch”适配开发,但执行测试用例,发现无法调用到新开发的算子。 -## 可能原因 +**可能原因** 1. 环境变量没有正确设置; 2. yaml存在错误,导致没有正确分发; 3. 自定义TBE算子实现存在问题,导致无法调用到。 -## 处理方法 +**处理方法** 1. 参考“[算子功能验证](#算子功能验证.md)”章节,完成运行环境设置,特别注意: @@ -856,7 +781,7 @@ pip3.7 install torchvision --no-deps -

如何确定“TBE算子”是否被“PyTorch适配”正确调用?

+### 如何确定“TBE算子”是否被“PyTorch适配”正确调用? 不管是“custom”算子,还是“built-in”算子,在安装后,都是以\*.py源码的方式存放在安装目录下,所以我们可以通过编辑源码,在API入口增加日志的方式,打印输出入参,确定输入的参数是否正确。 @@ -905,16 +830,15 @@ pip3.7 install torchvision --no-deps ![](figures/zh-cn_image_0000001126846512.png) +### PyTorch编译失败,提示“error: ld returned 1 exit status” -

PyTorch编译失败,提示“error: ld returned 1 exit status”

- -## 现象描述 +**现象描述** PyTorch编译失败,提示“ error: ld returned 1 exit status”。 ![](figures/zh-cn_image_0000001127006338.png) -## 可能原因 +**可能原因** 通过日志分析,大概原因为XxxxKernelNpu.cpp中实现的适配函数,与PyTorch框架算子要求的分发实现接口参数不匹配。在上面的例子中,是“binary\_cross\_entropy\_npu”,打开对应的XxxxKernelNpu.cpp文件,找到相应的适配函数。 @@ -922,13 +846,13 @@ PyTorch编译失败,提示“ error: ld returned 1 exit status”。 可以看出实现中,最后一个参数是"int" ,与要求的“long”不匹配。 -## 处理方法 +**处理方法** 修改XxxxKernelNpu.cpp中实现的适配函数,在上面的例子中,修改“binary\_cross\_entropy\_npu”方法最后一个参数类型为“int64\_t”\(cpp中“long”的类型使用"int64\_t"\)。 -

PyTorch编译失败,提示“error: call of overload ....”

+### PyTorch编译失败,提示“error: call of overload ....” -## 现象描述 +**现象描述** PyTorch编译失败,提示“error: call of overload ....” @@ -936,7 +860,7 @@ PyTorch编译失败,提示“error: call of overload ....” ![](figures/zh-cn_image_0000001126846514.png) -## 可能原因 +**可能原因** 通过日志分析,错误出在XxxxKernelNpu.cpp中30行位置,NPUAttrDesc的参数不合法。在上面的例子中,是“binary\_cross\_entropy\_attr”,打开对应的XxxxKernelNpu.cpp文件,找到相应的适配函数。 @@ -944,20 +868,20 @@ PyTorch编译失败,提示“error: call of overload ....” 可以看出实现中,NPUAttrDesc的入参,第二个参数是"int" ,与NPUAttrDesc定义不匹配。 -## 处理方法 +**处理方法** -1、将binary\_cross\_entropy\_attr\(\)中错误的行代码替换为上面的注释中的代码 +1. 将binary\_cross\_entropy\_attr\(\)中错误的行代码替换为上面的注释中的代码。 -2、binary\_cross\_entropy\_attr\(\)入参类型修改为 int64\_t。 +2. binary\_cross\_entropy\_attr\(\)入参类型修改为 int64\_t。 -

附录

-- **[CMake安装方法](#CMake安装方法.md)** +## 附录 -- **[自定义算子导出方法](#自定义算子导出方法.md)** +- **[CMake安装方法](#CMake安装方法.md)** +- **[自定义算子导出方法](#自定义算子导出方法.md)** -

CMake安装方法

+### CMake安装方法 CMake版本升级为3.12.1的方法 @@ -995,18 +919,17 @@ CMake版本升级为3.12.1的方法 如显示“cmake version 3.12.1”则表示安装成功。 +### 自定义算子导出方法 -

自定义算子导出方法

- -## 简介 +#### 简介 PyTorch训练模型中包含自定义算子,将自定义算子导出成onnx单算子模型,方便转移到其他AI框架中使用。自定义算子导出有三种形式,适配NPU的TBE算子导出、C++算子导出、纯Python算子导出。 -## 前提条件 +#### 前提条件 安装PyTorch框架。 -## TBE算子导出 +#### TBE算子导出 TBE算子导出有两种方式。 @@ -1161,7 +1084,7 @@ TBE算子导出有两种方式。 >![](public_sys-resources/icon-note.gif) **说明:** >详细实现代码请参见[test\_custom\_ops\_npu\_demo.py](https://gitee.com/ascend/pytorch/blob/master/test/test_npu/test_onnx/torch.onnx/custom_ops_demo/test_custom_ops_npu_demo.py),如无权限获取代码,请联系华为技术支持申请加入“Ascend”组织。 -## C++算子导出 +#### C++算子导出 1. 自定义算子 @@ -1227,7 +1150,7 @@ TBE算子导出有两种方式。 >![](public_sys-resources/icon-note.gif) **说明:** >详细实现代码请参见[test\_custom\_ops\_demo.py](https://gitee.com/ascend/pytorch/blob/master/test/test_npu/test_onnx/torch.onnx/custom_ops_demo/test_custom_ops_demo.py),如无权限获取代码,请联系华为技术支持申请加入“Ascend”组织。 -## 纯Python算子导出 +#### 纯Python算子导出 1. 自定义算子 diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/public_sys-resources/icon-caution.gif" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/public_sys-resources/icon-caution.gif" deleted file mode 100644 index 6e90d7cfc2193e39e10bb58c38d01a23f045d571..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 580 zcmV-K0=xZ3Nk%w1VIu$?0Hp~4{QBgqmQ+MG9K51r{QB&)np^||1PlfQ%(86!{`~yv zv{XhUWKt}AZaiE{EOcHp{O-j3`t;<+eEiycJT4p@77X;(jQsMfB$R?oG%6hQ z+MMLZbQBH@)Vg&1^3?qHb(5!%>3r0+`eq=&V&E}0Dypi0000000000 z00000A^8LW000R9EC2ui03!e$000L5z=Uu}ED8YtqjJd<+B}(9bIOb$3-31_h|V>=0A{ z1Hh0#H30>fNT})^fRU_83uewx9oRr{f{Sx1Ml`t)EQ zGkHZ67&~y{W5Jpq4H_WfuLxp*3<7O}GEl;1ESe36fLNs=B0&LQM1Buf(R)qg(BRd`t1OPjI1m_q4 diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/public_sys-resources/icon-danger.gif" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/public_sys-resources/icon-danger.gif" deleted file mode 100644 index 6e90d7cfc2193e39e10bb58c38d01a23f045d571..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 580 zcmV-K0=xZ3Nk%w1VIu$?0Hp~4{QBgqmQ+MG9K51r{QB&)np^||1PlfQ%(86!{`~yv zv{XhUWKt}AZaiE{EOcHp{O-j3`t;<+eEiycJT4p@77X;(jQsMfB$R?oG%6hQ z+MMLZbQBH@)Vg&1^3?qHb(5!%>3r0+`eq=&V&E}0Dypi0000000000 z00000A^8LW000R9EC2ui03!e$000L5z=Uu}ED8YtqjJd<+B}(9bIOb$3-31_h|V>=0A{ z1Hh0#H30>fNT})^fRU_83uewx9oRr{f{Sx1Ml`t)EQ zGkHZ67&~y{W5Jpq4H_WfuLxp*3<7O}GEl;1ESe36fLNs=B0&LQM1Buf(R)qg(BRd`t1OPjI1m_q4 diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/public_sys-resources/icon-note.gif" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/public_sys-resources/icon-note.gif" deleted file mode 100644 index 6314297e45c1de184204098efd4814d6dc8b1cda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 394 zcmZ?wbhEHblx7fPSjxcg=ii?@_wH=jwxy=7CMGH-B`L+l$wfv=#>UF#$gv|VY%C^b zCQFtrnKN(Bo_%|sJbO}7RAORe!otL&qo<>yq_Sq+8Xqqo5h0P3w3Lvb5E(g{p01vl zxR@)KuDH0l^z`+-dH3eaw=XqSH7aTIx{kzVBN;X&hha0dQSgWuiw0NWUvMRmkD|> diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/public_sys-resources/icon-notice.gif" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227 01/public_sys-resources/icon-notice.gif" deleted file mode 100644 index 86024f61b691400bea99e5b1f506d9d9aef36e27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 406 zcmV;H0crk6Nk%w1VIu$@0J8u9|NsB@_xJDb@8;&_*4Ea}&d#;9wWXz{jEszHYim+c zQaU<1At50E0000000000A^8Le000gEEC2ui03!e%000R7038S%NU)&51O^i-Tu6`s z0)`MFE@;3YqD6xSC^kTNu_J>91{PH8XfZ(p1pp2-SU@u3#{mEUC}_}tg3+I#{z}{Ok@D_ZUDg- zt0stin4;pC8M{WLSlRH*1pzqEw1}3oOskyNN?j;7HD{BBZ*OEcv4HK!6Bk6beR+04 z&8}k>SkTusVTDmkyOz#5fCA$JTPGJVQvr3uZ?QzzPQFvD0rGf_PdrcF`pMs}p^BcF zKtKTd`0wipR%nKN&Wj+V}pX;WC3SdJV!a_8Qi zE7z`U*|Y^H0^}fB$R?oG%6hQ z+MMLZbQBH@)Vg&1^3?qHb(5!%>3r0+`eq=&V&E}0Dypi0000000000 z00000A^8LW000R9EC2ui03!e$000L5z=Uu}ED8YtqjJd<+B}(9bIOb$3-31_h|V>=0A{ z1Hh0#H30>fNT})^fRU_83uewx9oRr{f{Sx1Ml`t)EQ zGkHZ67&~y{W5Jpq4H_WfuLxp*3<7O}GEl;1ESe36fLNs=B0&LQM1Buf(R)qg(BRd`t1OPjI1m_q4 diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/PyTorch.md" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01.md" similarity index 95% rename from "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/PyTorch.md" rename to "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01.md" index 9b2ed1e77be..82c6aca110f 100644 --- "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/PyTorch.md" +++ "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01.md" @@ -6,7 +6,7 @@ - [环境准备](#环境准备.md) - [简介](#简介.md) - [手动编译安装](#手动编译安装.md) - - [获取软件包](#获取软件包.md) + - [前提条件](#前提条件.md) - [安装PyTorch框架](#安装PyTorch框架.md) - [配置环境变量](#配置环境变量.md) - [安装混合精度模块](#安装混合精度模块.md) @@ -31,21 +31,21 @@ - [(可选)安装指定版本OpenCV库](#(可选)安装指定版本OpenCV库.md) - [模型训练](#模型训练.md) - [性能调优和分析](#性能调优和分析.md) - - [前提条件](#前提条件.md) + - [前提条件](#前提条件-2.md) - [调测过程](#调测过程.md) - [总体思路](#总体思路.md) - [采集训练过程相关数据](#采集训练过程相关数据.md) - - [性能优化](#性能优化-2.md) + - [性能优化](#性能优化-3.md) - [亲和库](#亲和库.md) - [来源介绍](#来源介绍.md) - - [功能介绍](#功能介绍-3.md) + - [功能介绍](#功能介绍-4.md) - [精度调测](#精度调测.md) - - [前提条件](#前提条件-4.md) - - [调测过程](#调测过程-5.md) - - [总体思路](#总体思路-6.md) + - [前提条件](#前提条件-5.md) + - [调测过程](#调测过程-6.md) + - [总体思路](#总体思路-7.md) - [精度调优方法](#精度调优方法.md) - [模型保存与转换](#模型保存与转换.md) - - [简介](#简介-7.md) + - [简介](#简介-8.md) - [模型保存](#模型保存.md) - [导出ONNX模型](#导出ONNX模型.md) - [样例说明](#样例说明.md) @@ -56,7 +56,7 @@ - [分布式训练修改](#分布式训练修改.md) - [脚本执行](#脚本执行.md) - [ShuffleNet模型调优示例](#ShuffleNet模型调优示例.md) - - [样例获取](#样例获取-8.md) + - [样例获取](#样例获取-9.md) - [模型评估](#模型评估.md) - [网络迁移](#网络迁移.md) - [网络调测](#网络调测.md) @@ -94,6 +94,7 @@ - [加载权重时遇到报错“load state\_dict error.”](#加载权重时遇到报错-load-state_dict-error.md) - [模型分布式训练常见问题](#模型分布式训练常见问题.md) - [在进行模型分布式训练时遇到报错“host not found.”](#在进行模型分布式训练时遇到报错-host-not-found.md) + - [在进行模型分布式训练时遇到报错“RuntimeError:connect\(\) timed out.”](#在进行模型分布式训练时遇到报错-RuntimeError-connect()-timed-out.md)

概述

当前阶段针对PyTorch框架实现的对接适配昇腾AI处理器的方案为在线对接方案。 @@ -107,7 +108,7 @@ ![](figures/pytorch适配逻辑结构图-优化.png) -当前选择在线对接适配方案的主要原因有一下几点: +当前选择在线对接适配方案的主要原因有以下几点: 1. 最大限度的继承PyTorch框架动态图的特性。 2. 最大限度的继承GPU在PyTorch上的使用方式,可以使用户在将模型移植到昇腾AI处理器设备进行训练时,在开发方式和代码重用方面做到最小的改动。 @@ -236,7 +237,7 @@

手动编译安装

-- **[获取软件包](#获取软件包.md)** +- **[前提条件](#前提条件.md)** - **[安装PyTorch框架](#安装PyTorch框架.md)** @@ -245,49 +246,27 @@ - **[安装混合精度模块](#安装混合精度模块.md)** -

获取软件包

+

前提条件

## 前提条件 - 已完成CANN开发或运行环境的安装,具体操作请参考《CANN 软件安装指南》。 - 需安装3.12.0以上版本的CMake,安装方法请参考[CMake安装方法](#CMake安装方法.md)。 - 需确保已安装7.3.0以上版本的gcc,7.3.0版本gcc具体安装及使用方式请参见《CANN 软件安装指南》中的“安装7.3.0版本gcc”章节。 -- 需确保环境中已安装git工具,以Ubuntu和CentOS系统为例,命令如下: +- 需确保环境中已安装patch、git工具,以Ubuntu和CentOS系统为例,命令如下: - Ubuntu系统 + **apt-get install patch** + **apt-get install git** - CentOS系统 - **yum install git** + **yum install patch** + **yum install git** -## 获取软件包 - -当前适配昇腾AI处理器的PyTorch及混合精度模块Apex是通过patch化解耦方式发布,需要先获取对应的patch文件。另外Apex提供了包含融合优化功能的whl包,需和patch方式发布的Apex配合使用。请先获取ascend-pytorch-master.zip和ascend-apex-npu-master.zip,解压后得到源码文件。,其它证书文件请详阅下载包。 - -**表 1** 获取软件包 - - - - - - - - - - - - - -

软件包

-

获取链接

-

ascend-pytorch-master.zip

-

获取链接

-

ascend-apex-npu-master.zip

-

获取链接

-

安装PyTorch框架

@@ -305,44 +284,92 @@ 若以上过程报错,请参考[FAQ](#FAQ.md)尝试解决问题。 -3. 将源码包ascend-pytorch-master.zip上传至服务器并解压,源码主要目录结构如下。 +3. 获取PyTorch源代码。 - ``` - pytorch - │ ├─build # 编译构建目录 - │ ├─build.sh - │ ├─dist # 编译结果文件存放目录 - │ ├─patch # - │ ├─npu.patch - │ ├─src # 源码目录 - │ ├─test # 测试用例存放目录 - │ ├─README.md - ``` + 1. 运行如下命令,获取适配昇腾AI处理器的PyTorch源代码。 + + ``` + git clone https://gitee.com/ascend/pytorch.git + ``` -4. 编译安装PyTorch。 - 1. 进入“build“文件夹目录,执行以下命令,将DOS格式的脚本文件转换成UNIX格式。 + 下载的源码主要目录结构如下所示: ``` - dos2unix *.sh + pytorch + │ ├─patch # 昇腾AI处理器适配补丁目录 + │ ├─npu.patch + │ ├─scripts # 编译构建目录 + │ ├─gen.sh + │ ├─src # 源码目录 + │ ├─test # 测试用例存放目录 + │ ├─README.md ``` - 2. 执行如下命令编译PyTorch,编译完成后将在“dist“文件夹下生成“.whl”格式的安装文件。 + 2. 运行如下命令,进入“pytorch“目录,并获取原生PyTorch源代码。 ``` - bash build.sh + cd pytorch + git clone -b v1.5.0 --depth=1 https://github.com/pytorch/pytorch.git ``` - 3. 进入“dist“文件夹目录,执行如下命令安装。 + 下载原生pytorch源码后,代码主要目录结构如下所示: ``` - pip3 install --upgrade torch-1.5.0+ascend.post2-cp37-cp37m-linux_{arch}.whl + pytorch + │ ├─patch # 昇腾AI处理器适配补丁目录 + │ ├─npu.patch + │ ├─pytorch # 原生pytorch代码目录 + │ ├─scripts # 编译构建目录 + │ ├─gen.sh + │ ├─src # 源码目录 + │ ├─test # 测试用例存放目录 + │ ├─README.md ``` - _**\{arch\}**_表示架构信息,为aarch64或x86\_64。 + 3. 运行如下命令,进入原生pytorch代码目录“pytorch“,并获取PyTorch被动依赖代码。 - >![](public_sys-resources/icon-note.gif) **说明:** - >若环境中已安装了PyTorch或需要对PyTorch进行升级时,需要先卸载环境中已安装的PyTorch软件包再执行[\#ZH-CN\_TOPIC\_0000001152776301/li1017121316306](#li1017121316306)。 + ``` + cd pytorch + git submodule sync + git submodule update --init --recursive + ``` + + + >![](public_sys-resources/icon-note.gif) **说明:** + >受网络波动影响,源码获取时间可能较长,下载过程中请耐心等待。 下载完成之后若没有报错,即生成了PyTorch及其依赖的第三方代码。 + +4. 编译生成适配昇腾AI处理器的PyTorch安装包。 + 1. 进入“pytorch/scripts“文件夹,执行转换脚本,生成适配昇腾AI处理器的全量代码。 + + ``` + cd ../scripts + bash gen.sh + ``` + + 将在"pytorch/pytorch"目录中生成适配昇腾AI处理器的全量代码。 + 2. 进入适配后的全量代码目录,即“pytorch/pytorch“目录,编译生成pytorch的二进制安装包。 + + ``` + cd ../pytorch + bash build.sh + ``` + + 生成的二进制包在当前的dist目录下,即“pytorch/pytorch/dist”文件夹目录下。 + + +5. 安装PyTorch。 + + 进入“pytorch/pytorch/dist“文件夹目录,执行如下命令安装。 + + ``` + pip3 install --upgrade torch-1.5.0+ascend-cp37-cp37m-linux_{arch}.whl + ``` + + _**\{arch\}**_表示架构信息,为aarch64或x86\_64。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >若环境中已安装了PyTorch或需要对PyTorch进行升级时,需要先卸载环境中已安装的PyTorch软件包再执行[5. 安装PyTorch。](#li49671667141)。

配置环境变量

@@ -389,15 +416,18 @@ print(result)""" export LD_LIBRARY_PATH=/usr/local/python3.7.5/lib/:${path_lib}:$LD_LIBRARY_PATH export TASK_QUEUE_ENABLE=1 +# (可选)当系统为openeuler时,需设置此命令,取消CPU绑核。 +# unset GOMP_CPU_AFFINITY + # 请依据实际,在下列场景中选择合适的HCCL初始化方式,并配置相应环境变量。具体如下: # 场景一:单机场景 export HCCL_WHITELIST_DISABLE=1 # 关闭HCCL通信白名单 # 场景二:多机场景。 export HCCL_WHITELIST_DISABLE=1 # 关闭HCCL通信白名单 -export HCCL_IF_IP="10.136.181.111" # “10.136.181.111”为示例使用的host网卡IP,请根据实际修改。需要保证使用的网卡IP在集群内是互通的。 +export HCCL_IF_IP="1.1.1.1" # “1.1.1.1”为示例使用的host网卡IP,请根据实际修改。需要保证使用的网卡IP在集群内是互通的。 ``` -相关参数介绍参见下表。 +相关参数介绍参见下[表1](#table42017516135)。 **表 1** 环境变量说明 @@ -459,6 +489,11 @@ export HCCL_IF_IP="10.136.181.111" # “10.136.181.111”为示例使用的host

缺省时,按照以下优先级选定host通信网卡名:docker/local以外网卡(网卡名字字典序升序排列) >docker 网卡 > local网卡

+

unset GOMP_CPU_AFFINITY

+ +

(可选)当系统为openeuler时,需设置此命令,取消CPU绑核。

+ + @@ -472,44 +507,92 @@ export HCCL_IF_IP="10.136.181.111" # “10.136.181.111”为示例使用的host ## 安装流程 1. 以root或非root用户登录服务器。 -2. 将源码包ascend-apex-npu-master.zip上传至服务器并解压,源码主要目录结构如下。 +2. 获取apex源代码。 - ``` - apex-npu - │ ├─build # 编译构建目录 - │ ├─build.sh - │ ├─dist # 编译结果文件存放目录 - │ ├─patch - │ ├─npu.patch - │ ├─src # 源码目录 - │ ├─tests # 测试用例存放目录 - │ ├─README.zh.md - ``` + 1. 运行如下命令,获取适配昇腾AI处理器的apex源代码。 + + ``` + git clone https://gitee.com/ascend/apex.git + ``` -3. 编译安装apex。 - 1. 进入“build“文件夹目录,执行以下命令,将DOS格式的脚本文件转换成UNIX格式。 + 下载的源码主要目录结构如下所示: ``` - dos2unix *.sh + apex + │ ├─patch # 昇腾AI处理器适配补丁目录 + │ ├─npu.patch + │ ├─scripts # 编译构建目录 + │ ├─gen.sh + │ ├─src # 源码目录 + │ ├─tests # 测试用例存放目录 + │ ├─README.md ``` - 2. 执行如下命令编译apex,编译完成后将在“dist“文件夹下生成“.whl”格式的安装文件。 + 2. 运行如下命令,进入“apex“目录,并获取原生apex源代码。 ``` - bash build.sh + cd apex + git clone https://github.com/NVIDIA/apex.git ``` - 3. 进入“dist“文件夹目录,执行如下命令安装。 + 下载原生apex源码后,代码主要目录结构如下所示: ``` - pip3.7 install --upgrade apex-0.1+ascend-cp37-cp37m-linux_{arch}.whl + apex + │ ├─apex # 原生apex代码目录 + │ ├─patch # 昇腾AI处理器适配补丁目录 + │ ├─npu.patch + │ ├─scripts # 编译构建目录 + │ ├─gen.sh + │ ├─src # 源码目录 + │ ├─tests # 测试用例存放目录 + │ ├─README.md ``` - _**\{arch\}**_表示架构信息,为aarch64或x86\_64。 + 3. 进入原生pytorch代码目录,即“apex/apex“目录。切换至commitid为4ef930c1c884fdca5f472ab2ce7cb9b505d26c1a的代码分支。 - >![](public_sys-resources/icon-note.gif) **说明:** - >若环境中已安装了Apex或需要对Apex进行升级时,需要先卸载环境中已安装的Apex软件包再执行[3](#li9608181712216)。 + ``` + cd apex + git checkout 4ef930c1c884fdca5f472ab2ce7cb9b505d26c1a + cd .. + ``` + + + >![](public_sys-resources/icon-note.gif) **说明:** + >受网络波动影响,源码获取时间可能较长,下载过程中请耐心等待。 + +3. 编译生成适配昇腾AI处理器的apex安装包。 + 1. 进入“apex/scripts“文件夹,执行转换脚本,生成适配昇腾AI处理器的全量代码。 + + ``` + cd ../scripts + bash gen.sh + ``` + + 将在"apex/apex"目录中生成适配昇腾AI处理器的全量代码。 + + 2. 进入适配后的全量代码目录,即“apex/apex“目录,编译生成apex的二进制安装包。 + ``` + cd ../apex + python3 setup.py --cpp_ext --npu_float_status bdist_wheel + ``` + + 生成的二进制包在当前的dist目录下,即“apex/apex/dist”文件夹目录下。 + + +4. 安装apex。 + + 进入“apex/apex/dist“文件夹目录,执行如下命令安装。 + + ``` + pip3.7 install --upgrade apex-0.1+ascend-cp37-cp37m-linux_{arch}.whl + ``` + + _**\{arch\}**_表示架构信息,为aarch64或x86\_64。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >若环境中已安装了Apex或需要对Apex进行升级时,需要先卸载环境中已安装的Apex软件包再执行[4](#li425495374416)。

使用Ascend Hub镜像

@@ -1074,7 +1157,7 @@ def main():

动态Loss Scale功能

-

动态计算loss Scale值并判读是否溢出。

+

动态计算loss Scale值并判断是否溢出。

@@ -1210,7 +1293,7 @@ def main():

conservative

-

按需快速动态调整CPU频率, 比 ondemand 的调整更保守。

+

按需快速动态调整CPU频率, 比ondemand的调整更保守。

schedutil

@@ -1339,14 +1422,14 @@ def main():

性能调优和分析

-- **[前提条件](#前提条件.md)** +- **[前提条件](#前提条件-2.md)** - **[调测过程](#调测过程.md)** - **[亲和库](#亲和库.md)** -

前提条件

+

前提条件

1. 参见[样例说明](#样例说明.md)改造开源代码,使模型能够正常运行,包括数据预处理,前向计算,loss计算,混合精度,反向计算,参数更新等。 2. 模型迁移阶段优先关注模型是否能跑通,现有算子是否能满足,如果遇到不满足的算子需参见《PyTorch算子开发指南》进行算子适配开发。 @@ -1358,7 +1441,7 @@ def main(): - **[采集训练过程相关数据](#采集训练过程相关数据.md)** -- **[性能优化](#性能优化-2.md)** +- **[性能优化](#性能优化-3.md)**

总体思路

@@ -1461,7 +1544,7 @@ def main(): 6. 分析TaskInfo中额外的task,尤其关注transdata。 -

性能优化

+

性能优化

## 算子瓶颈优化 @@ -1509,14 +1592,14 @@ def main(): - **[来源介绍](#来源介绍.md)** -- **[功能介绍](#功能介绍-3.md)** +- **[功能介绍](#功能介绍-4.md)**

来源介绍

针对公版模型中常见的网络结构和函数,我们针对性地对其进行了优化,使得运算性能大幅度提升,同时,将其集成到Pytorch框架中,便于模型性能调优中使用。 -

功能介绍

+

功能介绍

函数名

@@ -1563,23 +1646,23 @@ def main():

精度调测

-- **[前提条件](#前提条件-4.md)** +- **[前提条件](#前提条件-5.md)** -- **[调测过程](#调测过程-5.md)** +- **[调测过程](#调测过程-6.md)** -

前提条件

+

前提条件

优先在同等语义和超参下,跑一定的epoch(推荐完整epoch数的20%),使精度,loss等对齐GPU相应水平,完成后再对齐最终精度。 -

调测过程

+

调测过程

-- **[总体思路](#总体思路-6.md)** +- **[总体思路](#总体思路-7.md)** - **[精度调优方法](#精度调优方法.md)** -

总体思路

+

总体思路

精度问题排查需要找出是哪一步出现的问题,主要以下几个方面: @@ -1678,14 +1761,14 @@ def main():

模型保存与转换

-- **[简介](#简介-7.md)** +- **[简介](#简介-8.md)** - **[模型保存](#模型保存.md)** - **[导出ONNX模型](#导出ONNX模型.md)** -

简介

+

简介

模型训练完成后,通过Pytorch提供的接口保存模型文件并导出ONNX模型,然后通过ATC工具将其转换为适配昇腾AI处理器的.om文件用于离线推理。 @@ -1701,7 +1784,7 @@ def main(): Pytorch在训练过程中,通常使用torch.save\(\)来保存Checkpoint文件,根据模型文件的后续用途会保存为两种格式的模型文件: -- .pth或.pt扩展名的文件:用于在线推理或导出ONNX格式模型,仅保存模型参数,不保存模型结构,以便压缩文件的体积,可以用Netron等可视化工具打开,一般如下图所示。 +- .pth或.pt扩展名的文件:用于在线推理或导出ONNX格式模型,仅保存模型参数,不保存模型结构,以便压缩文件的体积,可以用Netron等可视化工具打开,一般如[图1](#fig315704722610)所示。 **图 1** Pth文件 ![](figures/Pth文件.jpg "Pth文件") @@ -2454,7 +2537,7 @@ python3.7 main.py /home/data/resnet50/imagenet --addr='10.174.216.194' --seed 49

ShuffleNet模型调优示例

-- **[样例获取](#样例获取-8.md)** +- **[样例获取](#样例获取-9.md)** - **[模型评估](#模型评估.md)** @@ -2463,7 +2546,7 @@ python3.7 main.py /home/data/resnet50/imagenet --addr='10.174.216.194' --seed 49 - **[网络调测](#网络调测.md)** -

样例获取

+

样例获取

## 样例获取 @@ -2565,13 +2648,13 @@ python3.7 main.py /home/data/resnet50/imagenet --addr='10.174.216.194' --seed 49 详细说明如下: -1. 由于原生实现的torch.transpose\(x, 1, 2\).contiguous\(\)是使用了View类框架算子transpose,造成了非连续场景,如[copy瓶颈优化](#性能优化-2.md)所描述Copy瓶颈,使用channel\_shuffle\_index\_select,在语义相同的情况下使用计算类算子替换框架类算子,从而减少耗时。 +1. 由于原生实现的torch.transpose\(x, 1, 2\).contiguous\(\)是使用了View类框架算子transpose,造成了非连续场景,如[copy瓶颈优化](#性能优化-3.md)所描述Copy瓶颈,使用channel\_shuffle\_index\_select,在语义相同的情况下使用计算类算子替换框架类算子,从而减少耗时。 -2. 由于shufflenetv2中含有大量的chunk操作,而chunk操作在Pytorch中为框架类算子,其结果会将一个tensor分割为几个等长的非连续的tensor,而非连续转连续这个操作目前耗时较长,故使用计算类算子消除非连续,如[copy瓶颈优化](#性能优化-2.md)所描述Copy瓶颈。 +2. 由于shufflenetv2中含有大量的chunk操作,而chunk操作在Pytorch中为框架类算子,其结果会将一个tensor分割为几个等长的非连续的tensor,而非连续转连续这个操作目前耗时较长,故使用计算类算子消除非连续,如[copy瓶颈优化](#性能优化-3.md)所描述Copy瓶颈。 3. 适配层在适配算子时默认指定输出格式为输入格式,但是concat不支持C轴非16整数倍的5HD的格式,会转为4D进行处理,又由于concat后面接的是gatherv2算子,也是仅支持4D格式的算子,所以导致数据格式转换过程为5HD-\>4D-\>concat-\>5HD-\>4D-\>gatherv2-\>5HD,解决方法是修改concat输出格式,当非16整数倍时指定输出格式为4D,优化后数据格式转换过程为5HD-\>4D-\>concat-\>gatherv2-\>5HD,当前针对ShuffleNet的做法具体可参考pytorch/aten/src/ATen/native/npu/CatKernelNpu.cpp 第121行。 -4. 设置weight初始化格式避免计算过程中反复的transdata,如[copy瓶颈优化](#性能优化-2.md)所描述框架瓶颈。 +4. 设置weight初始化格式避免计算过程中反复的transdata,如[copy瓶颈优化](#性能优化-3.md)所描述框架瓶颈。 5. 修复了DWCONV weight输出格式指定,避免一些不必要5HD-\>4D。 @@ -3438,7 +3521,7 @@ pip3.7 install pillow==5.3.0安装失败。 ## 处理方法 -一般可通过重启服务器和所有npu device解决该问题;若重启后仍然存在该问题,检查安装的driver和fireware版本是否匹配,更换正确版本的driver和fireware或者向华为工程师报告求助解决。 +一般可通过重启服务器和所有npu device解决该问题;若重启后仍然存在该问题,检查安装的driver和firmware版本是否匹配,更换正确版本的driver和firmware或者向华为工程师报告求助解决。

在模型运行时遇到报错“TVM/te/cce error.”

@@ -3818,6 +3901,8 @@ return result - **[在进行模型分布式训练时遇到报错“host not found.”](#在进行模型分布式训练时遇到报错-host-not-found.md)** +- **[在进行模型分布式训练时遇到报错“RuntimeError:connect\(\) timed out.”](#在进行模型分布式训练时遇到报错-RuntimeError-connect()-timed-out.md)** +

在进行模型分布式训练时遇到报错“host not found.”

@@ -3833,3 +3918,17 @@ return result 在运行脚本中设置正确的IP地址,对于单机情况,设置为本机的IP即可;对于多机情况,每个服务器上脚本中的IP需要设置为master节点的IP。 +

在进行模型分布式训练时遇到报错“RuntimeError:connect\(\) timed out.”

+ +## 现象描述 + +![](figures/1234.png) + +## 可能原因 + +模型进行分布式训练时,系统防火墙可能会阻截HCCL的集合通信端口的通信。需要根据报错信息,排查通信端口的开放情况,并进行相应设置。 + +## 理方法 + +查询出被系统防火墙阻截的集合通信端口,并开放相应端口。 + diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/1234.png" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/1234.png" new file mode 100644 index 0000000000000000000000000000000000000000..9c65147ed3a49d6e808aa8a514aeffa026c56c96 GIT binary patch literal 52544 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

&jBX(aP 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 QWgm5f05xpF>Hq)$ literal 0 HcmV?d00001 diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ1.png" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ1.png" similarity index 100% rename from "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ1.png" rename to "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ1.png" diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ10-1.png" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ10-1.png" similarity index 100% rename from "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ10-1.png" rename to "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ10-1.png" diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ10.png" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ10.png" similarity index 100% rename from "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ10.png" rename to "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ10.png" diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ11.png" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ11.png" similarity index 100% rename from "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ11.png" rename to "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ11.png" diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ12.png" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ12.png" similarity index 100% rename from "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ12.png" rename to "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ12.png" diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ13.png" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ13.png" similarity index 100% rename from "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ13.png" rename to "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ13.png" diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ14.png" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ14.png" similarity index 100% rename from "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ14.png" rename to "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ14.png" diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ15.png" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ15.png" similarity index 100% rename from "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ15.png" rename to "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ15.png" diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ18-1.png" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ18-1.png" similarity index 100% rename from "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ18-1.png" rename to "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ18-1.png" diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ18.png" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ18.png" similarity index 100% rename from "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ18.png" rename to "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ18.png" diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ19.png" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ19.png" similarity index 100% rename from "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ19.png" rename to "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ19.png" diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ2.png" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ2.png" similarity index 100% rename from "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ2.png" rename to "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ2.png" diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ3.png" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ3.png" similarity index 100% rename from "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ3.png" rename to "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ3.png" diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ4.png" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ4.png" similarity index 100% rename from "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ4.png" rename to "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ4.png" diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ5.png" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ5.png" similarity index 100% rename from "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ5.png" rename to "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ5.png" diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ6-1.png" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ6-1.png" similarity index 100% rename from "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ6-1.png" rename to "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ6-1.png" diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ6.png" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ6.png" similarity index 100% rename from "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ6.png" rename to "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ6.png" diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ7.png" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ7.png" similarity index 100% rename from "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ7.png" rename to "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ7.png" diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ8-1.png" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ8-1.png" similarity index 100% rename from "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ8-1.png" rename to "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ8-1.png" diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ8.png" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ8.png" similarity index 100% rename from "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ8.png" rename to "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ8.png" diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ9-1.png" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ9-1.png" similarity index 100% rename from "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ9-1.png" rename to "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ9-1.png" diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ9.png" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ9.png" similarity index 100% rename from "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/FAQ9.png" rename to "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/FAQ9.png" diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/Performance-Config.png" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/Performance-Config.png" similarity index 100% rename from "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/Performance-Config.png" rename to "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/Performance-Config.png" diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/Pth\346\226\207\344\273\266.jpg" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/Pth\346\226\207\344\273\266.jpg" similarity index 100% rename from "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/Pth\346\226\207\344\273\266.jpg" rename to "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/Pth\346\226\207\344\273\266.jpg" diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/Socket-Configuration.png" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/Socket-Configuration.png" similarity index 100% rename from "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/Socket-Configuration.png" rename to "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/Socket-Configuration.png" diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/pytorch\351\200\202\351\205\215\351\200\273\350\276\221\347\273\223\346\236\204\345\233\276-\344\274\230\345\214\226.png" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/pytorch\351\200\202\351\205\215\351\200\273\350\276\221\347\273\223\346\236\204\345\233\276-\344\274\230\345\214\226.png" similarity index 100% rename from "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/pytorch\351\200\202\351\205\215\351\200\273\350\276\221\347\273\223\346\236\204\345\233\276-\344\274\230\345\214\226.png" rename to "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/pytorch\351\200\202\351\205\215\351\200\273\350\276\221\347\273\223\346\236\204\345\233\276-\344\274\230\345\214\226.png" diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/zh-cn_image_0000001106016350.png" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/zh-cn_image_0000001106016350.png" similarity index 100% rename from "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/zh-cn_image_0000001106016350.png" rename to "docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/zh-cn_image_0000001106016350.png" diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/zh-cn_image_0000001106176216.png" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227 01/figures/zh-cn_image_0000001106176216.png" new file mode 100644 index 0000000000000000000000000000000000000000..ede83f4bc1b0ed21a9c746c358c45681d5ffb49a GIT binary patch literal 44685 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�?u!6&8m4K9^Xrk6@rWIZL-`X$m^~&HfHk=z*|=T(zypGLpr18=I7fvp ziB+CyeU)+Z6fjGEohP4S6UO>zm<*Tp6<6$Uii#6@kcXZE?L}OIKyst&D-=Bt7Z@BOeiXtuk4Hb6^}s%gw0gao`AABC0R#>f ze4&6~!BD^^{1}LuV?_&)4PZ3>oVK@!mpiPWyeLD+9i%Ew{UkdHo68&f;C?hS$lB!o zL0lDSB<77=bla*@+QnO+rScNm%!Hbgii$K0CA9h(xdVG&5L_Y9WhAm`YG8bIjj_Br z9sg0Xk@v5z-Q4v9SA{N^UTru+d9@WqrKt7#Ly`fKiE-vA)=}c_v)8zr zp2@|B!jZpDQkv_GXBROxz?*;a+KkFxVSEmEut7~?zl7g>-tz%MFyND86@clkl9`W` zIJ8gp3eNV^M5@yMn=&X*!&R9|n0qy>-`c&ueDA}g&1Pq7EX-h?e8L;kF+AybL zi?BYjNvy*8b8$oUylM$V*(D2)hNMIHEu@)2h}pAkj8h6rtyf_h|9fh-oriS2a7AzE z%=Hr)1sW^6@ca9zg%6Y}CyJm7g?_gxt^b!mN}ulQQGQP~*n8{i{>;_qSZfS7-D|mI zBrd^>Z7!M^*?%`@>7q(1^GR~xRxQ0pG0w^}_eo*w{h(9Ko{7S=!BYaH}yoH_%#Q@Q~hU<%C_Jm**k zyP~@GmXJ0fTwXCKmxf6l8aP^NEAw2kI z^b7g^)pimL%=GMdYwS+vg~bvvE+%(ptWpoKjui^du^D?`p9{lnX*VgxNn(Lk zfmZtDrTg=*4BA)NnLW#*A`CkLA;bcX|7|Z7aJl=ufW@r+yep_ zMrQRm%&O);h8b5YhH`)0Jrs;ixOd*Q{c)14Zh*>f{Kp9X?uxW6MxPw2!Rx4GAO}Db zLu6G!2%q#nk|-&C3QwkbE#NkAk3DOTlOD2jLh7+5HvOrtOS#Hi9Ec43R0Xc1q0-cX zGUc7Te7dD;`cgTg7GE62= zfjK%_jAXXg#Uu*;n=x1qXSP-Ac{)&9vP56&b@%?0Nr7iQB|6j4z$<#0DF%yOyOM z`;S*jm)T1c#$)>i3;B+RvXhDw+<)y=^c{^Q|6M34(XtB8LxEeWF z!F=!c(&25vX*}H@X0YE@Y*%|3lev+p!dwO+I#@#R5s@fj7aGpSvlQhlwf z_TBK;4E96js7=4AL-My5S}429h}z)*%cA_vQWacP=|2;J7cr6df&5pDJU&7~^^OCV z5ysX*i{o+OvSePIA+K&yHkv(U4_0BX*u~-Ew=t0Yc!Wt+){9?;?&1Co3q=G%)CF~` z;72{LQkr58QXk1n^7#`}Z7K6^+5D`nMxXPzX96qt^BHB-c$4PH4fvD?WYsD3{2nQ{ zNi`@B6Zkf;eSm2Z9S+fxqd15%{9L}#?(xH|H9$r!`PI1Lfuj83 zu9}LUMuQ4erTLac-HaAD9UdnM|D7DY`Syt|*&G8riy+< zXQ;!zIr0QMoLQ%RxDhIgN*!O;$v&`f)36R@Ih!v(yERhv&!h+$oilZmbw(7_U5@D| zGmiWW9ewR2X;{$jrqqkB^~+nw61Pt{c1nD@h(l1kO%Zfgk`-L|4%=H)5!xwR99mq^ zHJRm!bAw1seLv$e_LMA%#CAf5 z_4d5^3{@Wl^Ya)mgdGUD@sdfJb(^i1|5CBX8JD<)9JVK}HSt7~l)K zCz+aA47EfN9S=L>b8_@3w~{ZnYd9QAp3^b-*qCu%R4K1S#Cn~3IuN|e!FtQjI!HOG zLF34zU}ElS=2e6C=FL_|)GwdE77$=>*+59PYNAwf3E5&IyLjl&I&q2>3j>C;SLOSgwxgPVr8gEHDLE&Xt zf_AoY+(oaM{)~Ck-Ga}$-LMfUMe4(+0pxSiUQU)}eeGN}(iL7h)IgaM6GEUcwnP7w znb8p7gysB4N?`%fl)uU;2}~0a9DB&YFJLs(u)v)$tp#=oBKJpb`v8{%jg@&87X%42 z{JQLJ?DbM0kIi=o9LL|08%w(;OTnAF9$+4cgbG#?+b5}s^U?+;l^@;DNCW(fI;YvF z2=r$vcYuC(_n;eJkQNevJ|`H2UVy(t4YT=^BO1A)^p6ob@<#5JE%vrapCH{jdBiix zap@&l-zWLYVS>3mZoM4W2vX~x3h5I5EVs|}D!FmMb{*{_;`h? z3$A6MWfF;hjSkjarzQUrQpJ?yYAc=EC4}-`&2r5$o}9xj3dbx`cilj4b&k1LY5EEb zXLzBrB+u&0Y#E5M^Ctl|pxN4Jl@wTBv^h9zm!n0n`t=V7o-efqrr!Q&FH*nqEx>zp z*NZ+dJK;+5v`Ub{t(U@5iQxBr&a1Pg5s|>w^N4q-wbl&)+w#b!05AQtg)^h82m3at z=YL(l$#t$zw|wcAO-Kx~f=T~5>)M^?yr{aC^a6UIrhSSZL?g;F&TYy=bQ z@Sb?$s$KhO$IzGXrQ+ir4TwHQHE|Nidnx2}`tl;{xGZ3Iv-(nrX=fjgDNd+(XpfrJ z&qQhi-P&8nk*;oGY;{l%Q!esT=sFo*l0fmKdvZ)ay1tfsKip2=HXp1)h5llB63J>w zeW(bTGsjmrSd2jxNw`Bbe-X<{eudo_6snm3 zdJoc{nv;xblk;HTDs=FZLHti)Ls|M6FbfC15c}sJUCdt7adZevHH24nh4nUe={Y&JiAj{EIt37MkZJ>|H2)sPl_ijA6VzfplGP z&>O(Onerd=;<#RH0H(6FH-echsx7EPRFfka=%YO1QzQ^nBC;4xSeS}nB_lmQrBSS*vVM3R z^&w(irK(>gET5B=jyb8b^jsH`YkiI7`i(;wp@!C5#Hn{F)&a!8YXf1jEzUbNc=$jym?tMoGi1eosr2cM>1jp_ztCK-b%ClCNgmE%UCiU(KQ4 zlO%-r!4X0hS922m)52_gZ_5{`2>p7!7yg#S^qfP>IN#w3>?7}=L6o6FZW1?NjOmx0 z-15?%zNMS)a<1i(P`8nCii4Ukly}k(cZf!-F+|{52v*md(Aq7!)h?}fy&dBvk1LFC zZZ)ToD!&DgOL)2E{&4@0=_w$eZ+_qbkp4F^?^_L+A#iNX7SrgPKPl+O`X6xOzR>Ucz(PDK94t3X z4&VGx4e(-{e}b$g8M~DIQZxTFCLZmEo)8Wz3}dyt+@X(tRX7zpf;9gOp(KlzoCh70 z^w(|?oR!SNZ;Vawk;ul9`oVCAIJ91qb8tFpO|qkfM)bwtcoj~EHjfP$DZMA%~turG~}^q z?4z?eGi+#acIpE`e=1`12|W!FkBOZH^0X#aNs@T_Rc-dV#+;PcG7$HHpKwK9$8%xc zo&mPj;fE}kZ?=$h>~e*__)=QgK+P8Qt)aHOg;hr--=7R2Gw`w<+-UL8cw50~Mw9$_ zYDmzw5^T5Nu|hT4;2DjK^Fe3IfCT(SJQ%e#=47gpyj!p z#Io}s)g3SRW6#yj8F2Y?l6GgO!cw`f!L5wi2Zu>j&q&w(_KALYPZG(VPF$b`!RBiv z<=W?^nrRl5>y}X7GuyXWMn#MtWTx8pFh}>Cl`IbNQiNLUP4>Sm(9 zVn1R#M9Vvob$*4wDYTCyKSYQ8>JuAyiKkX9A_B-wv{4&MN3~x#%~Qro&!IVioizFGuRe;PFkLYuksf|s`r8L zZ~o2hGA~GXUgQl}V=?0AL5)xe%?-Z37fU1k2KP@SZs6b-xE-!MgX8^+vQ~VHsBYG? zgDqN^XxEmDUcb4nIDEFMu!nR(5-(XjsU@Emy>1Ct_?cM>tRRU^C{tkfl}JO<32E05 zaUr4}uEpXmR&KGCZ{rsZJ*U4>H6>BR7K;GMO+Ld;^<;Dt(-9Is8Y;^VFE`5oZc~?S+`6mMX0oxbK;>ijQgnqftp^i&Xll64b$?e251qj zY1LTTQesy7aYYp1|HYepB`M{U>|XtoeEobg(plMB>8|jvX0xZowA)!Fg}ab%BoV{< zTZP+dMFNF)ZQoAdC!BiLWdHFm`HG0+_yyBX(T1dLytUp6KlO-IJNkTigmvCC!SRjw zFJPyvYIfUk$yR}XJtLzI>T@N^_mK9(EKfUg_{fY6X9}rTg>A&LfEP&H4!1ih1HfHq zm3(S`7GDiNIYMw~A?59g0_WhUIEywXeN%X^W;f#{qw~+Ri=YQG8k^2p9b!d#z(Gdh zhrh^ddOa6VP3jnZ_)lJo9`@En?%GNx$y98zY#RDJ-;E8Bb;L@c(~GDuroJC+J^w%w zu$2W+P)9o@>O68Z($3y4X$~K-5CD5@YpebpO z^jXs(bm^{}atDEpJhkb_1$kF&D26q4xsLpWf)6gmgrCoa3*4#gkohrkfZE{_o-f<= z=*GgeWQPsaPj;HnkzF#^kbA;yeA)}3c#tv7_|eoPU(sW4#2#LxlT8k3%BUsvCD1CV z(=3}yK7>gs_XBRP>W=vV_qq}C$D89`g$Mq19`&c*mba$wtbgzKy=W^o?+IkMBG3I< z|D=fV<5{S(W%{Z50J57MOl-mYLK|wYNq1Z66KokCMiHRx!0vmsZx%K=2A&W7(g}-* zI`Ndgr(Kl)06(Sgk~>|p?|U|z)$dk77?^dJB+vN@yQhDu5_b#3A}VcC&)zg!XwH{z z{J|)q|C>ALS|y~?e^Vrs|F3=bj;+I)q187jJ+7h(wjg_%CED6we_Fn^z*RL%$ER-D%;2R((6`2gxQP&qBtCbX@cL0( zjwp_j!QJdkKGh+(0W?=p68@C`WS9MK1(#bCnRcb`%e?R!n%JfFDB;ggx7lOk(|3b0 zOtIL|F)7l1X z?=tOpCxkg_u0248k=lv)aRcN?U+$EnZ*Jno4h?z4N1Ry-+Lx`*`feBVU;n9P3jF`= zs#l*q4Ln+?EVYw9Hb!{+wd-Bej~`&MT(a8~xc@KD|!j+Fqltz2J{vRsAAu4{1+{ z#}2$I%2t~Ut~53~n-T3QFM-53^JMNuQ0wo1*<-Tmf17GfNVi*$t5BYNc~#|}ZMG_E zF_kwdQ~(97XO66yZ1W(w!9+%jdCJx_2{AkR_(a=1J5t4hrlf2}-@BUTK|Y0C)%5R> zZ%g<6Z+&+(TyalWIqu!&#s+#%T3QYD?^70&bdz!uyDJYW>Sen`_1&f~cDF>IZy)%# z?`hXxxY#!(O%j?+w6s0`0fpwNxgT<$g)V3WoC4u}xM#ffvRyn!JiC78y88&yKP`Lc zg(4Xuvgk(D*ww+#z|+~zt^ZYD3@mX@|4k|Ca>l6Hp>|DZht7V}$6U38)-fkOCU;=n z=fg!iCVP0tWHW(}5{uiqCmsbG96wPf-=jCQ)j9G=w(p#%pOruSCC7g;b==c{_43)O zpnp-j%O1aqGrlhy&@)@s|6B9FcPsxX#jsRT4a%pa`23e55`OH{qv$9$_Pue}QN?=x zZEK@;{I||uclO;IQPgd)=v~?f$H6$=!IH!SXH@|2Y^;24qn9R-lV7ls$=HFVg)6O~rc#EW?Y33mDe#LB@%g?rfzpDvLp+@abG{NeZEqau<_6i=>#qs`VH`iocHr$(RtXKlj5pLoqDf5h0thR$Wc#0#}Z0mj{#IO@?on< z!lDW@XVZv}bl^hbXGyNKrs%tDO4?sbvKuvKhPv2^z+fCq3n#baa1u17nufgiE;&op zqa^4HP4EGi4JFq{05k^ zCHI?~(eRtz-wv|j?!~Mym{5(s1X|Vk&p(r2Ku^;>M}dkBK zacjYzYb+(xLCGdRyvNnBF~p`fVpk&^KD%O;IL2zA*r&WblD<};)LyWl<=(Z?KEAq) zXG2J!{79b|+qvtZVZ{;feu`A9d&!`TSZ6hy){}o{%(-UbkPptmQDmnVlAhca}ex za1CNc-<4|8BUI`S){+nM9O4saJ7m@UG?ye1LuZj71?KV1T+uQ%G!Sm5iKWdqkSXfNEjL5u2Pha!AvgVRzHYaOfyqzv=H2X5SyF%!>NCjBlhvd$6_8 z1{639NAlwghK9o5LB4OaO9atP+Ml|({bGY-cwWD8xXk^V&!zE14|>DlITm9G`6R>R zoZ;b;xonZa;CpC&K#RF>a0#RqG~#G%xpCe0bz#A4!ndL(_N)l!&8!+2*N8lzTBhz?eH@(~eF5HjQ939&IPQ>k z|CRzEa-7LOhT)iYuPxE2KV3NgWIG~iQX_j7`SEwC=12ZnvWvHf@nN1EM*c22P!MS- z+@>dF#ov(`uH{8fL(j`mjdC8ejT7yb1V>hp4_1R;r;dy+zWi{q`*~^PT`+5m7w5R3UgZ zZsU&Up-q0(BfaY1T>MWxQgj8)-S>F8{e9;RE6cEKk@1`4h}jzDZwcu~@dYe(A@=Kr znT2JsldCeT^ln%f_)1KPaVb@jCUk7%)5mLu6Rt*;VLGa_ZQaTJ6>oTn6GE58Im*d} zGh2pIE3Jk3D}+}VrqzbAAdv#Yt*7^*DYAen_OGx zkP#4#L6_|97CjRBOaEBd=03}VcD!EQd!gKGakI+aJ>C0{e-o`tR;j)W_jj4Hl1s1^ z!*K#~uPGfjOVokQUdT5|?}h04j5}nz%26Fcj+4+bosMm`Jqxa+>s@IZ$mZ|2Zs=g& zl^%C_(YzJwvw;7o-bQz?52O3wb${h~33j=G>?dwd2%ex{!;jv*hnZ8agBcmPea7q4 z1xN3sNSvfu<+Mq^I}_`(BhPIOG3p;;wDv@2V1$>&ZCX_%ulf(siKQep0|v#6!^>$$KLlvAX<5z5R6xJ(t&yFvKp8#$+#isf>UO*}3Oq zV4o23J_X4&Gsp+K=*#ZUJ39XHa%6p5(yN`=!~LI3753pg{U?GoU155C0!gU{%okU@ zLmC-UwW|QOyejw$ZGiDm0=b546*gR;vOWP)^!E(Y&QA8I{5d5P(E^hCi^=-=L%(v^ zbwAD=4MszSt&uQiq9@e;rT#DnU$K)n+AcCq0{2HN~bz9EPv?eFa~NUJc^|OotOV zJ=2U^e#N8t75g75-^MI!WFiCGPL*0>w#@hJhy-|U+_ z?*d#Mb$#{YOvWCl8k^Vfp`jlPQ&H7W=;CIQ!Tfsp22^E6>&wuw4+d2h*!}_JRXVg$ zI{Vw=q*P%3V9lP>7R&AC#EBZKj&)cwJC;r0+JE!!Y+UtzSGl=?v3%>wlv;a?8~wVH zLG)X+@%x=;BnMB`s0>#LDAZl?=qpgCqzHSl^~=JY&CPdBo<{WytQ=OzwShveQ)9a* z*S?I?t3l(2A5J^;{TeQCdNF8ztGn#loELueAh^`W5L87QVwd zXfzPYjg|OO)!*?n>sB%ck!Q(%fDibTS9K9%;Jp!8dmbJV;>wXe(scb$yAr|6bVNJk zGRiU}wd$@R2Q><%^i#aM!}l48t%{rwvyUjZ86adjgksN0RANh^H}HAdkcz?s^Ns~i ze~050&!~F?*+&M+YfizXnCY5}@Yj!=jlxysre*M4&0=O%wGn+)1HdA*v*N6w_0p7M z$n2~Y3hC*~rRaZ1*g!v(qWV=-CN=FWkQ71u9AswII3P zHD#AWFG0bzRd)CEpXw#4zv+9L-0RdNUW@VvZlEtL?^J%a*ZWYzLZ@0sz`#>QBJ-Y- z!SEfuJPIaM<+FWAV|Qkqao$ksPYGTUHV53i=oQ;TloHj+&oMeur}0iU`Mi_=F}+B& zAZd}jaMsXo@fF3BaltD;Hp+|16z|^~hmaNbRAC&n&y&;3lA)tRk9h{do}F}kC-?;N z3)vh=??Pt#^321ZzB6(B2>mA21=b4&v=!)$!kH}N98P}pJClEBsNmx&=^fi@$cx7m z(C#JQi`3OTIv%Rch)3tnPfN;$(bMD*^sU9z%m3Kqo->KBP$$9X%ulpE^#P$PDzNkZ zEPRxFJ6_v4mas=9pC(Hr*UoFevX@OyL>4nCiA?;2a#2&`_H>#LV|koB zPEog^Qb9Ygsjm1l!jY$zQxMDi;?|gD`VjZTT(r7=ap{$9BBOG$<(s(AnvR+b_~Qv6v6oei1Nwo#e{jm zsPMAVx4rigM*=fi`ozt-7!yTW{&bx1!RyAqyO+hL#&rx26a_I|P1PsK)jYty-lt@n zM1f@a>Tg8QA86Q{{~EpsqH7~kLb<$^@UY(y7}2;)9s?>XT^?3I1g{M4EhSJ5S!++Y ztd7dBSZxvU`18!daf$fp7gyXg*a1a9x`nAC*#c`2G))m)Z%u_x8^0zmQFUxsB$LaVtZVpWPC@=V!{tjR^NQCO3ISVE%`UTg zr!K*Ek+tLrQOA$ntY#~H*opGJ+%^#M`iJO01Y}KUwuY!k-T_p zAP1#*w}j0Tre12^#l3K!n1E*(EpT!$KGKc-XRKSAXLx6hyuPT+)W_!cc`Pm0M` zCk`dfpP)F;e#^&@(K8DfpjJBdBSvK%?*0kNS5wR?PF13lhtr<+od|f3!8#UrH1Jam zxfF=91n^(#)<(lmUJdu~F5J?mB>J656%^Eg@Ug+@C?EwL6lg@QskqJECk;yfOr09k zS7kULGFE&ji&~1YasPG?=SqVWwTfpyBWU*jad+qyUL%F?sfS8Gs2Y?mh(#Nk3GXsG zSD2p5l4dFDthLCHi_1>Mi>Qvn`CmqD+UVlbpHlnKx3p9!etGsa4_A+e6c#Y~&F_+($cU ziezoSn!^*}OI{yNZB-_+(_ST&`c9#*N#y-e>81^MwV-?JQi@BWOFf@sg3x)GV%}## z@uinzl6aYG%r@QnJ+Kp7UvoR3TKyl3FJF2vYIbR+%`4d_y=Xi+&Rg2(-|{ON$XYXu zm}gx+tlW*Z`rLkXSIo|`9t1k|n*4zH!cnW!1a_G{t554;nuX7CwI%!I0~Rvt+r1?H z=&CIJU-c+K?vFBt@+pL|4}kZn>=Y(bk-SxNZNj+vP}FmXSyh5})ge?+dj%&K|@Z4pIBkI#dpX+s%3n=tgk*1R@5N7~_h$Xkl4T$XMz!;?fuEjFO;exa?k?rHGJ8HUyV+C1cH-0M zAF-{_L1|L@NnoX-P%2*9Ym^b4g+ZFt%M<@arM_D;k!FWhJa-8!Lr-}P+q~6?n$owo zM}DsWsRfT-`|>jt#fLuPmpLO(@}SSD10Ubz&+u)oPVa7MW$`wXueoHa1^piQVz&Sl zLT&0)RrU$Iyj@T;YF4jfcBn*XlTwjPEeOQl`c^|GAdc(Z>0moPm!Ct&k2`K#v>_tf zLN_K5Jc&d}rfCRT@cQ*H!ylbat48f1Sz|jd`My$XyuZMn|D;EjkdBe3 z^#Jj+9Y?UdD$z+Q%hWz^IV$yU&V^!Qe@m=+cLXw9qp<0r4B`E(v@d4l%>g!V)W#8 zNhn-Q&mvemK33R?Gw&vxPtg+fOi|A}(&ZWtv0@k}uWI8Q><>b@f+*f4+ADxjE-0dc}WVIqa#X&t)2~`|OmUP!SQOaK=i};rot%@04{7 zwqR_G8PrUdkRQOw*<^Il+B?NAr`%#)I~m+x**X;|$ZH$E|3lHFNSpR`Ce=_DC{&#? z1tqlH@-;4s_6aKK_#GFa1BbrfcxOu%XutnIdC4{Jmu}WX>(AQj^i<6~lH|Gk9uf6| zU-&Y0ycaE7 zvVuFuVOXAe9JECrD_%fpYX)aIobVXus?xZ34@O`5PmSPndB(5$hI@-__=UuCvBfat z60h_4>sO6F;huKG-uyA*uk*Z<^PQzvu(|9gq6N2BCLr#`+lJ%r-b zzt5^;oO$qYsEp9ZNXkD7gWJv4`$zm~Jdl6XMmFnBqK~WJP*2cGg|QGNM|saCe+Q8t z#`~syQsAO~gacHo=gywAV{(@Z_7}>k*q)*O`n)t5CIlojtGGArVx5o0Ppkxdj2U7>ISbRlbTVM85If91 z+9lAgg#A4q_f1{CLiB7{{Z2i@!%_TqzqZw4y1TjD9x^A88x^C${ zyl(3t(wAz$`S-1^`D4E)o<2~Z=sxSMAO4in;QWVGs-0Z&A1v{2J zUGj=pVD?$|h`lnNMD{*C$294UMx5;q;)X(ZC*#5Dr{51Op*9&(b@xd{dmVIau`gUh z?4~q_zTj>tg_)T;CZ$SpxY<$^N`-2+$jn{;V6j$%(y8F1XlInJvI)*YEXudq&gWLc ztbj)vT~KQLY7iTD4lnStQDrEapEA!bZmj61=+|~Ec3BL_Hql9w z6u{sWKg#FqFjKgQ#}eKJFi>hO-_g}(IySOq741LwM&~VNy8Ch0xWCIJ35C)%?;v&e z;Bo&BQ`(c~m%os0f}@-<5M< zk(~L$%|XYcFfXy6cFjIevn5pv0hSTI7p>MDnOx?oNW{wd)VYD=m(p=}USWI>26t#% z)|P`qUrsyM`Acu-G6`DxhTb_nC~@I)>+tS8)JVXqKNQUpBK6eU@~I{vcL>S;2M}$S zY~$OH?^Q9@|5clo__ydvgMsDdkMmR&dvOb8&R+JS`|R^`UIo}$L>1NI=}#xQ5#d9n zpRidYPx;iF(p{u6vTZqVyZ#JEasLOqj-Sq^>FEA5YL&UyJe02FO4}<&KmWTqeEiud7(`i$~`*sVn(S%pmeJnipFXD;Teuwp9vuZ9T}=GG zZ`L?J_}}OG(3D^Gr!G=Q!Z-Vn-tqp@6HF^dkU3F-_=(hq*yE7W;Za#0kEYic>0>41 zW=?A$*356_LcyK<)^Lm6#+$QbANYSrd~UUavJ{t(DCTkM4boCYur#8ar9JLxC3qv- zFXa?7te99W+OCrQ`ZV7z#t?lIRblsimMPBGT6!uRYci)LWreCPk z|HB$Syt24d1!8AqR;A%m)4C5C51iwP$Ez&}>MxasBq1U5Mq>tW>aLZ*k`6c;n5C?z)y>cKTW%o-i3ZK9?}J#V3N2 zkmZwkP8?kQa>O|UB7=GW^K{^7EuSBK&V62Rl6XeCd5J7O)IzT2mi9;0foUfxcc6$O z{=vSQeq}7~bfc^RFy1A!ez;H#A?c{0qv}!*J z*p=p}D&(S2F3e38;RBw!>73vnk|cai)9tWZsH;Ji5_?6ZAEZX4nWxRvZBzwCiLMIE z_BgfIi^EXjV5_I=guXp`!>Pj>``R4A2q?k$5pd6RNu+bB-3}4C*<{!rRwn^B$D&ka z!y?bI$2(97l9(W%TFiiYn0g!A0lw7X76L7M%sU~7{u}1#^b{egfL-9#<|rm~V!XWs z@r3kV+OZ(yFw6)m*(goUw1j~KiicS`>W}q<>w^3)OxGMvU1km#>hD!K`(SgNl(JS0nz*q7iwSM$7 z#Y-r!JN33}E{M4cb}OW|eNfz=eC~yYR)ZVTF4)QJmaH&y?%KHzk_wdnR%nO!M7Hqw z6sCkVSnPZ*iO{&Ecm2u@K8X_;aKBqA4PT;-JpKx__%x@DIn+x&yA*k*9G$O>NNJ}I z+>ve;*!3$vp6HM3Ow&{t0YdR5%RVL4_YfqlkdXaeb^NsPwpDjB*+Q%nQ0qX_ZlWcy zwX0YyiJxqmR|;Z}*K7ikcCG>@2 zl09olFQYb6q<8vasb^d*Sh0>nBq_5=2ktd|Tz`SZkE~SfFL*P}Nyw$9?yF>nC z7102CGO~+=MfgA#VoW2!n0I5Y<|NK*fuu=k;N_b%y1Ge!oWcfz1z?3TxKo$lE88ha z`U9}a6_IF|KGL8?LIq(AjC|+dW_^@a%A3o~D%rUye=izFl{N@qxMpIT;C{3F-yf2O z{}woo0hg(75XUQ{cPwC*u-mJE8!qF**|Z7Sbx@amZ{v{As`A3xY!NF?PX{S-YHc8V zt!Y4ZKJuFnDdg!3Nc2?S*E4h3{B&OosuqXs6AbueAZ(?1oVDN+ZK!Grb3q+rH6=^rrF!ve7Ku98og^db zC}f8RK&J=*qe``!(9XhlPj9bSl)?r5xzuw4-m=cCg=316B6V3b``}T+?=gtzLE*Wm z@rr8b2{d>gY6?0@#f^T$WQT~tKB2ZE9vZ@aI+cGdY>u?tZZcgK2nM=;Ui_P);NCdy zyL|uSoshr^OIpfg?cXZaINfU@L-5Y~!NRSGb>fZbq1=tOm9tfd9&{>$|1Bux)83SP z6sE#Zb6dXvD*UeL-iae$r%c!1>^!}ktKuHD0xem!(>I9h-> zxyxv{n45$|socGppfRnqd|Mr3$q^P)jlKE(1Av-nVCA>$d^meW_Q`pc%GVUI1qGus zXJd8_V}gP78bwac!@1X#o&kPj5*67=&xF$*+6O>`M01JOZcHKbX%VVMVk|lE{^DUT zqXHL8Z#e;&Cc+M)USV#^&U$gII&R`N&F5?@VAesE1DGNb&3@3P40D)8LGInj**}J1 zgNg#PUcS4NRP80e=7-_@c2cd)Aun(edO3$mwa43oLnm-)+V zK!sLh33Ojz-xAeBac1=Z9{5|I?2LhzY^($D3ObPw^#nX1#LK#?Y%Kf$b{vtsx%@Vy zSB8$sAa6^JpugCDsDScSct|IT7<5Li+aNpBL1G6QG+F+_ufP5$udBo8r?Y|MQOiA( zvAyU`L(NZzELJy$?E3XWNWLGVN^-uT>l@qn(Pp#bWIgS1V~Nn~TBMoGN{pV!7W=R@4P{!Q z`LtgvRA|(1kfDoWo9^yea%E0Ode`G6lPsWtzn^H8;uCz8|9qY%z&aq#*Upf3P~I%S zzApwt=`W{P({zMnU)B%5;{d`|X$1 z%%6%Ok5I}eI<*L@_C3&@UmWZwv*yF;B3YQ&LlQ3FiLuU9Ez{7Il{}tWk{Wwyp8Ypa z1LQ+@I$Tg@p!q*;g<{X@!8~J3lUzwQl?HQfsw%Ac7Qk`J|8FNa8B z^t_p@ru`t83>jUB-PXEwaudKc_1Mz$h;csSS?n*ZPrKQFxd1Am+&i87`qw4xdhf8n z3@FCO9Ir@_;r6#Tx&) zIek0*DlP%?`HG!YrQg`W)aWJ5%KDoJj+D%Wx2np{X+`WXq@b+bN#obbBX1h*;n1P1 zp)wemXt7(q6W9!=m1LvBpnr~O)ggzIq@$9g$xF@eGWoE`o#oy>`5_e1%9RRJa|&6% za;BrVr}}~Ryy=18y2}xvh3(OzwnnX3l6V*b9TLBBIT~6gnY=ZBqtb7fK$)b z-B48#)AaFMW;|P?0U8w0`bLJkZ7#Qzx&L}B1<-r}Dzlv?WWRw1yjG97je`#i zq3mn@z;#u-f}(N2N_GzCv_vk#^dDT*}>*nvCjv4f-hgW z)QO(!pLYL+rbqTnsy20+s=G?G^$^*J--QXc>O`XMMh zec~qhq|srcID{YmTwSVQci1Swa~&3Pej$(-vWP6#t4C@>LfPp9Iudfc`6dQ5CT5HE zt^+>c;`qH{LcuSCr9GF1W!|8L)O}XDfE4KS4SPb?0Fz6_WuAjL8J32v zmzf2|Dt97d1QEP_scgYk^aFol5$7G`rx|CooWmi&7kgkTFCL;RGNnpPsz2^;H05gQ80;6rRx)n0P*Aa;!oeH26nl1mSw*0mU z$9|q@aNW5`$L4<`=1~8CGHjp6f7K7xcx*BLh`R580L9;S{Ue(3zU8Fb{BkaRqDONg z^gBdy6&d@V>)W9)L3EjTvh-3XKVInqszLKs#JA?3-)TiWrCJr~dMLvHc1Q)DG9g6NDE6evXTQF0Fq$O*Q znOkK^KZSGE80K>|I^C?jfSaLRkm{4C(rMQ@>lBo0e`sP-v!;F!5>bN^J#N@>k5qt1jQcZJ6$92+gIIB>;=0d*YE{{F~Bh7g4 zp}X^`Lov;%`J^3)M-8-M)~xItUS8Z4dQ)}|QXev!_Y_g{fLlj_NIvJT-pO6S9OD}` z2h&}61B{MsN{5%t9slYJu|Fxf^7PiX#O>FkurcPsy;rM~lzRN{AC@iJ9qyDr3syQJ z=FHXQ%-+Z9&c;LjYVD1#Y`fN+$sf8LlqO2gJ#e0Uz@nxvc;65G-vH?s~s`SA%r0TpB{$GB-fXF zsI4ySJnEhW3s@9(1Fx%`*IgnXK&Pl$8o3k90@H2!P5E8KkY{TAbT+ySu{(}9jF>yP zlvLVZa}HksbYDBr&a6=Znvu4<@;DzvAIigVr&VLRWlj>y@YK6sTSZQFC9~LO?%oA8 z!TzqHOkqt8Joit+18Br`$gN<`W!XCeS8$?uCw_yP$n?8j4va4-(tS(F_HD z^i#d!F;!4B^sAycU*IFDp2Nl+tYTGpE-*G)a&O7h!nMM7Ac|q|r>vQf48R6-SH`ru zd*7=UO6|ATUV!V!-Fo6vgST&7FfzJPwmfGsO#BnEE47C8id0oF(v4Io=-eo^=ryvZ zTK2!{e9*6V1URQ<%3*KeMMt4GQ8XFkixVM!8D5c!fOEfsm0S zFY8nVOA`u-kcJ1!6{gtHnUx$@2`cpo^awyJT4z!838U1$mqm)d`PEbR19NisR5e*nM#auhlGLmw{0r5IUL$nSBlS59L@y z_rlw2_i?aN=*1%$Q`Ht=_mY2osoBAjvav(ie&N=!u^01?66CK)Uw(;O%UWJ97Iz6W zXXNOU3pKr|V$bSIVsnAi;<*tsCGNLPbF`)|>KRwpX&$T>E6cuc24+7#P7oCQqFr+D zgy?hkILl;9u^+@b*U)*l4P&&1@~oDRa!FP-%1z7?8s6{}l#xV^-YC545- zF6jTxe`?5tD;f;`i#hty5P}z*&B3dSr56Xf)L3^ec%xbq31%hqLHi)HumkQ@EEVbn zC}jTF{)1I&GpngI_gL!Ldd6XxfSG!F!St^T9pr{E{H^*8JoW&i5aTxM8E2JLGcbL5 zA$>`6D{LU@11w}p5^cvx6j|n?0}~#6a7Sl3!Ds7V0ro>g@-|zU59e597GJ!-lDs<} z&;(Vy2^L^Jhso5vy9^7i=$?ROYql!?R=4-iw=Sy68@cJr80uYLk#e+woJE`xSh?A> zEDx_`Gl{zOrssOS(q&Lx7RElvNo9sLWPv*`tWH^%;N?wBHZBHVWLz{%ob#k}dm$%T z9(cy_H==5RtTw~2GUscahCg^wDheNlmZo*G$yfru3eW&*9QVq)r%e4aB!vEWlrJJ1 z5v@CA5$0D6Y88nro)CJM(E^_s)@y;f#JcT#@HR1tlg~l9*lo#D(B)WJQwtiJ3o$8i zZO-GGx2Xzb{GiPsG^FuclEpMJXf)AE0D~8lS%sXaA@W3pAeElV1RROp(Ws4<8s~>L zu%8a1S5P^8y}s1tZ_DeovoX!hC)wc2#=+^N26B2)2^bKK(GD9^knt zr}VdDf%{%BR(`q-+^tkN2y>^bi9RSL)Xqayh{lc2pKPK8vV;708C(L3Hn-fC1cEQQ zDyG@8C%DM@q1k6`yttrf)`nu)6Il^2ncp7n0ms#1mtj)7gJ5^%(W{bN1Q_u=$mD0W zZ5`Bk<*@-P_R0{(6mmfgCyNgMi@P zkzg`eigzB3clUz$>X%=Ao$t6z=a1gmiaExOr)^{W~tbfilKS9i|CaU;618$z#8SwIP@N-vc-hn{@n>aF~kDjOS4@N>;PS>XOKC}qtK>O-iJRy>nurT++eE>aE|o4XiKh+whw@WMJ%DxH$)BTa z-AYeIUfbDfky0ce8Bodzj^tf1FXI$dq2sZuWM#S1M$d{^w<%rmcRn_s_3aJLVgWkVXxY8HvGJ)y;etjQDht>H9UC96A}X?cIQ5IsP>=BG0Aq>7qG}*~ z*vB}GAd5EsFdv%)zJ}!aXnvF+f62&}>U-*ZthSmHCrTe0p?;M;f%STfIqPn80N%K~ zRY%vGAuW8q=Fo@mJ^q`oc6-RrU!(d=_b>Rw5she0-5)h=WhaJ1HhucH_C75KWA#kC zF`2GyfWC9nQ1knO!FmF-vv`=P#)6gZ>cGZ(bG+<-3!sPB!6-rdPl|HVC)Kcy*&%no z@gJi91%ABO{lDsbX2US9&H{jhb0L647$U1?*P{TO`M2%O9E>o|1<5Oj1Qmc=sHfs_L0{TONfB;` zWLnDs=0&8O_|j^4>b_rYiEwF8GQjJj<~{5ZYVFW&bCo#F7d~eGpx|z}O2zy4`h4QZ zg;?El!Vz=n+=TkI{jE~iRrsQQ-UVF5Nz?hdbOgc5jp zJ}|VxeZ0)8aJMCWV`0;mGKoyciIWlz@6S$7JlA5{5MWyX)TA!96P?@+VYr->AAysJ zif$F+MnV?kDofxg&iZ5!TTDAmj4drpkY@2*r-KXs%0R+yW%zfT+x!l(c%q4Dop{nx z z^h6c5^2$-I$KsnEqu{CY$9eU2ucCMV9xg&^Rvk;opGZ5r@+nItW{%8fC8|V-7H304 zUr^bHS_deNS)t0R->2wKdh?imzs`<^=B{TiY{x9CPb0A;1rPY$9IpJ*`qFAI?e0O$+z9H^P88EF3x=n`UqXQp}?Vf72jG~w)QpJyW(FUtps(UGB zCvsrbME1em6ii#DUB@z1IKu^s_K{|@`WHS`{kfO+ zK_WbeYyYnoe?3qH~s+_L{i-HZ5WF8?pU<9S@DOgYEfr z_9^=m#Zwv2(r_1!>^8$+snpa?Xv6sTD)_3x%dqtqusy&@mLR_B78{rj9hm$gEIqRJ zKPas~@N7b|LdIh;^M50-!r&yy522W<{|p*FF?ybhRi|<#|M?mf7d5P5Pj73j;GXyW zmurlFG6sHFBY^jt=fu~jF%yUmh&p)~qlP;ec4iIXYbb8o;*8_NDn3cm8J6lfDa}AM zvrMw;!R`z&RaWllFNgkmUs!n`|9-!BG+BFv3pXF=l|)TbPzf}y2xh!c*Jq&Cu8CM1 zU3Tn294}~{?7r0lp|jk4DsR5D*QS)bd48P@EL69N7cqJo4B3ccOE<0=*pvhtG$O@L z+H!qD4V9++SFLn9UdAitkrlGcl4~W|Y-)t3w7nUCM@Qr?Z@QBUDNPVMfk-;-l|aT& zr}FycqbCoIg>f=FNc)7-W4B4pC?-?gs|Qx4IOz_TI@)Bq zQcg%+)upmbiMx)eSyZJJxfVEm(L3VtGLQ1xTWhDduQ6-9qy=}Gy9yI@Lywn&3% z6zB7jRnytcKL|_92zRcMwq3U>xQib+wD(+~)PGo7Ka!+ac_ZHf*K;x`!w8=@Gt~C4ZCo$SZ};c`6Z^|!6REOkK6Ejkb>}$tm!1c#zQX-OjC5rv=6X%* zY*MI)sdq)M-yIrNdcg=K3%3P&@4ovI$lkTQFVQR!KgaV_;|CqA-^zXN*Mrdl0_$d% z=A7BEHsX_5#vUeylHf85T$ff3W)5Lhb6{^=*}^(bNZR~3JX3ee@X4)Kd(A7k0%6XIqK+@2U|-dpUo4mjx5T zOTm3pg9JC}cK5>zr6z=j{20HhV%9Za2PjlcaI@w`_S(d_xWDmi&aXnAm7++9B~jis z9?1i^CBGCxUb^w-=_&?Okw#j@kEF=sQ4>n>mevy>8n5y*eR)7n*DI0@PLDF!L zJc@8!h?;kgB~1#%MO@4~U;#=RJ~D-VOCqE9(RS{n_5qGIPO@o1G?}Wj>ca#d#X7XM z3ynI;N+XMD_Q0DStb&u#<5&Zmp*Np4KN`AVR8T?+XD7COT5tKzTgNe9ndRHAlP09m zjFNCkt*~rOElMN5YUcs+W;LU)dR461J+VDQ&u+7cGuYi?5^meFCQ}x2Et5ynAl~;A zhe(-zCdP*oWj}|-0EcWzSEW0|eY}IBR65HIp-Xs@C!U1r!$(If7gp*nsvl-EYrv$o zolB^Xu1uouvD*<_ig#ya1f9bh{JrThs9$Xr6)93Na2m&M^hI@`x*%pV+8jGqT_p4_ zldrO)t7}&E>|tJ)9KMD~YWS4SE{N@j#)sD$+H7tIQa~LKnxd#Bv7}|iIlWb<^WJqsgZm-9<;%AY zlb|#7Ro~4s^7C@)7Xt!%HglhkbV%md1j=#&(EwQ!w zmzHB@u=??y4cV{7Z7MziAOV+4EWi6{;I*uphn{DCM#Q8D(^t5nklUO5aJJGTG5mut zaZ_HcJ#PHiwM}A|-wV03bf!%$!M82UH&$2Pa|oOT%6z7jmowB zz{t^^&VRJJG&Pw%F$^dFI3p9PnXUQ_9P>Dk+JEo_U3!SWJU4yw_ga}+wANQnqzTZE zFD70~gtIyl1by(ui(HDh%B?}i7IEUW)A+$US^8f_v6x0cm01UF+g;6_;l^X0q37gz zU10q?r118AIC)XGw>hvik%w;Y7+!(vGJdNX)9+m!_{|QK4@AV9nPzLn*eAq)12UTRL$*`Z&Q zpD&igJpm5Q3k$`2#gI9ySLEI@r6f)UZH!XN#HUCPpjD}^pNa{UGP@FlbJ>;ps~No+ z;W#*@1N9g*p_L}T)FQon^GH$uOw21%JyLarIzqTo^A>S(3DZl7ctN$|^!b{jbY<1C zm$Veuq={^voP^;qsS|vh2GyVVJz~S{nok8SlrE5@voilC zy9Jh&f#+wNI=sM!c&Uqv;y{_(FvA%UW%4+yIg#f)N#i8@KOk7Gs#26H_v4exp-nG! zLZI=_eXO7TGPb!|0%8!kypODm4SSZMs%IA?visKNsD{c?Rklqk9Y)y3oHlwL#NC4ma6)xom z)E_HAXR9+H+`{FhnnRqjO4p8*rJg0SJ@s^jzM?wJF{~l?PUwn{Wi_-APsy;2Nr5>b z=6TI(!*COroArOwjS{db)U0by@+6wS@4|TDkJ9x1(&5Jl+Br>-Hk>vtzyt8k+f_fq zW=cpY=`|$2^OU^&Dy}->2ETo!-6typ*>mB6(mYPHRMBUyisIV%r$vJQ*1u1qCiTMm zU+ea9m%CYAzs8~)cwP5{oT^XP^YA&cv>OLB2jaU7_x1~O#Lg3fdttXx*dJd9>B?>m zEAx6d&MCaP2+${#jWD!{q*j3I!yVf3ji&TMKh4sJhFV}7(+v;{OsAot`*TRM)}vQ&Y~K#aF!F=sI{>-YM5;Pa!| z;yA8wLoBr#)o9(9=$x(=*DqvWa7_s*Gid&;ruOY}4$n(0AM7D|-@Dg}e{jKhsLEH* z37A1gqx~R@t~oS2X4zCGE_>YT%3ArY585jCG3aUPZh{wKBlk(~oP7BWsaUF|Rvn+d zkec;wCP+(W-KN6Bq&Oo`mqX^P+)SV_>1qDbzTpJ7t|TkpGURKMHc+p9p0C?h)ycX{ z!A4xaMQ!hZQRV-%1W1yoX+L|&%d7SL+tKPP+`|Rkn$-mb;2d)wS|CoH$a)=Zbda*1 zsswt{OfFAd=BdpB9nfDss8>`2D4Q7VGKNT9SPcKLD2D8+5srwB-r&=CR-H^gS9bCB zle?`*zSwkTTkNJE{;`{I=gsr*ky_wAIPgQMoblZ~;2DY2r>s?VnmZBaqE9^gAX0>F z$f}gfPFPjwoniM{_EUF(l0pQ02VC)d9l4~l=DHqS0eydLwWir=0sWi@?NEaMS|g|6 zZu0$X{{6V#`Ew@;e(86vM3+gLdU%uVspdp_)SRAPR)bbD9=Fva!lRwXeN-PsXSe4! z@d$EtWB>LgijsiCe!9o|>G{a3!EP|Skj@PH+iLZ>f7q?+9bMOh!-DT0^Zvv>`PcAQ z*#Ed$nC)S#4@icH~-;PvlCy;!|rm>w_L)dKA`;r9a^V6V+m#*ut&OO zsh@4dEOFiUK!o|1mOky}I+8uh&J*=;!7^ zq?pqm@%tm-mJbxVVE{g5$9Ar`t{yPf(4dESn45Pd?Hya&lQ?~f*TB-+6pIyK9)(GA zURLuLK{|{vw z6-d4k+Y;poW8;qee-Y>e-(D;j(muS%U7D|0kCt72>^rf{dJTMus3w+CzR#7h-X;Zi z_6>c+5A{vzh}iwJCtLq$-OW2<^~nM43pcE(7uT|I=hTNibJvB&WIS`FaN~%d8J0Gd ziL@Wjyk#X%H+=(}Zj>^AB@fvvK0i-N!F5wUd%~%AW5b(y~`aImrhPDrx zwa@#~?2g+k6_N+(n{<|QX5nfRpQA&|eV3r%oCYITk~Vi6TTn0De2TB$vy0j$y~j6V z7y6J@5G(f8-^1$9xI^b+C!0UqDK-{PMVj|oP}%WMJz;!^$R-BE*K3mcb6tPJMJ2vi&RgBdpFI&hwK9ydFyfmj+{7SIU0b8i9Yx(oO*-PX9 zBgwCKln|pGZndE2?b+ZuSY1kH9?lVAEhRn+_RN}bx*F?GnH}^teR)eszrYH7EbuuG z)*l^{I=1^Oy04Y^e(>g#YJ6Jr1mC}M1`#gLYcEr@cx&EX3FN)7|g zu7`&;_;LT*V+)o@--g5%s{n&Y{A;MyQ?WK1ku4%_fR*70wX86FH5%?a1~=s#FLyB- zq39#qk-dNyw7gW|Tl15Fem}kAI=Th5`tn=X2U({cJxJI)nG%mup%wwfg@r(Vss`pi zskHZ5u*rJ7&PW^aGcB?ND6Q8c=s%+*?o~%dFQyL9{MyFkh?mRn&3--y2Ar6EcA&M2 zcXx63QHrJ7apW1)=C@?5X(qGb@Vy`Fl3MG2lHtp{cX!JLbd~c0{RTln*LA3tweI(ywvj9@&#Ge-b zcbL#tlFGWfcS_9>wr)4Lzap#Y;d>OmZ#geGnE-cK;Yj266Bf@#g#YNjcJ zXB`P=H_EHaX1=}MH@xm9rzwVdPnv@gljDKq@np7|X@zKPL3#4)D3_Io*Xt-2hU|~n z1$0OEM>gZs1rt^dCMbay)wvG1zi^^O>V3mcrpv=GEZvKSoI7RaL-0V}FTmz7{{4q> zTtkG=l&;Ke+}rj(7XlRLA-MeoHV>Ec#?3k6O;f)Q}UeD!XvPUh|+{4I7 zOhit-;FX%yTiLjT$Zag^h|5aU&vVtzRWww3IiIiS|5U;qss>bJL>$r_QQt99>8Fsskt5xu5tiX<#-xTQ#IRYC+*i zyS5l(V&f#HUdEBe8DEuIDV838Zr6#i>ePv71lF#3Z)*sfmg=6Z$#+AwiCH3hGG zSY4+J(%Z?(f5NciP-{fMf&MX!&6#3*JVCWh8`Z(UXm>4H-pqturH@+=+4gBn!L!`) zj_cRPhKGEr&5++0rnOF$7n9n?2>k>JNChKJbh4-lvwar2Y)6L$D$5zY5MMfn zOPd&#v2qx_oxlUGuF5=n0T6m^4xfv2Y6?w zHqqXFYpEZlz21erO;uB7#j-+IlC!0`*0(LV_I11E)i(8$49ikT2Zqls6W<3H8YOh8 zQQu-pAzMjb?or#}P3*|fn&IUN*8&2|RXn0fY6NnYv=k7p2_J-?q!tc>`XJdBk6++v zW;npM;uZd@UTe)a>~(1(DJOt|R19NF_c^*zmEL4c+G{x1K0Yf>rJ*u0nLvF6S`~w3 z+ooFLKTu+GG0}#|LKwxMb4?Fap`c9JXpe`YgDu6C1V^S^tve>>n>3*xR-O;{mL%y; z8Nm<|_HZ}R(G)dX*IV-FY81I?P z%9}o7^}aR;IY!58360(;O!*tf+jPcP_ITlqEUd~Xt|<_ zcc0;)#NKbC@`2|8_m0%Micr^ly7U}?0`R<+dOt1dw4-c-w=3(Xr5n}0p1CoLm>g1cuO)?9PjL>i zBd2^k)e0y^lo_GH9vGDTZnGZJS2in%f$LCUyT@^`W`^WghrIYQ59&AyNE0=*(?%-L zH*uHxi^x8Xb%g4_+Bv(3j$i4d*O=(-Y#8+McOBm&yit(TM+lS(q>*@;~sp zTIQ7;C){)XdBc~igDY~)+Edd5gc{F0l~=(rNOU$;2V;UP03L|HO_3hwV=l`AJ4z#I zS3#efjZfck=TA+SmRpw}Tw&5{E3eLQ*a0A19#w_uKPidlMCz`U1%IA-k+tifvW?T7 z{Fo36U|kW`nE&xwTU1B;4ayOpO%!{KG^R5PW;EcfL~uW;J8s+ohpN?yDSJEb9E%Om zJ<{nU+ZV}I_Qx53ulT7$#J`Yf9Aw+j!iQKtVqLPBKHjrJeyohhBH-e>#x?uk#$2nr za&;|L!K(h8NG#^oO913qg+KR#x1=KlM|kdggPQk75F~~ZVKC_ap4nM8x`%xFDbGt{ zeNVbk(A9rmt8gfK&Xd6^0Q-X8lv4L?n#sPwKwv>qn^ie3QdAtP$BgMGvTL`>Et4f<`;o0F zW1-z~#TCvb{Z%qjh1BNKw4;(5k0+$QmSZ9ni(TX3+w$C$Iq%#na~h#T096#4l2>FjyNnRjzRlOfZLK^7E7-2)a}(euzt8fay8-a zyeZFa@JzhSX6=Wq;H*^s*=;OL*PQ%nN~r_7KX`^*=% zQ2~(?vxxir-Yq|RNS2RcS{Z4C1TkmczP&K6lg7I=hlpd`{Uy`?DX6uFcVkwkwMuvq zoF3q&{Ig%94L~}LBs1?V822d#G}$`mQ8ARu6aG?b-%rLU!%~)0F7lA$D4^QZjATm> zb5i+jp@9oNGxlyBmkPl?j#WNJ&X&44$%t?BFoxZzL7q_ghTX~H^tjc}ZolCt-V)MDMfR~y8V@f$E>k{c~ z>(ZOO-i*lUz{6w4gnj`ReS`e2U zIJho?$sMWUbMe*QLwfA>93gCF48+Od~biRmlw4y&Ei{avGj^^5D4_5aq~?E!Hm_N8lmSJTIbVofNH8Z{`I?#kPE!uTi#v*-WXj z@$Eafq` zjbPTSxqf1m%d1(ZS9his{dlyIH^=*Rm;cJgF?m`RA)*&kudk`EbgF{oYMe|6s`p+H z=7^HaPsAgie@gt?t#}filpkPukGNaFYJ$~=>ACvjb2zMc5gcM6=LnXb&pp+8LwXpB zX)0{W4t$p#xG6%^yi;fJiP3pSCiBba+_!Z9pTVR(A46u6;+HEeF|x*$y2X|cFP0jp7gU+;dX@JksOJ?4+?rADFol%J<$j52#8~JyP5{xnrr3 z8PT1r-*66Wj1Q&+eJ_z+)JMrB8Ortu%I1z)fe~|}Qx2S*X#@kx7s!7p=KA!*mNOFH zhU^Rk#s{8{zj0aD2(HT>1Qz~JU0)uSWY)&rzD%j5Wu_G~nNgXcl}m19nTDpc%;cJs zOYTxyxdJn7YKo+mR+i)zl^JfhrO=|7nwcx^q~wC2ga{(*cbu8`eZT9wuJ3P=`LzVwQh5GXb>B^(Dx_W~BJKU(GK(a|qZft;^7KVnL z3vN7quhV8+3?waMv;-iK@MBlrQGyoE11&;P8cYmkhg$J!#kIu(@26<> z>bNx0Esx5+(X5MUw4Ea8_Lpm4DZ_n?Q#+k@82GN!8_D0mjX=pcQ0yuqb zI4E)csGa@P6V!#TtY16ex>L;WIJ~jQ=d8{>C3JcnKmErAT{ zdNv9D0{>Ww%m>s%hpS&*MZ%vw_HFR&#l$cdrAiO(SQ(taJCOqcpt)}TLgjh*l;iC6 z=%E4lmFOl#VdIvUZNwHau>CX$SK7%|apCO*F2j)4Q`&_+BY!#LHEO?;OZ-agQJm}~ z*WW|6fs((?=H9ux(*;5v9zF`zv0w3_16>5x@w>KJuy;t6ktXiaBlH)Q=-0?~*DDRT z`0e_FFYKcpm^g;ZS|nqcC}`evoxa^ zxpei!XS^G0X6P+p=Jaj~?GEPA7>htbrvhqlK1W{&eTh#{>Qzhq^X?eRQ@He{CE#(z}NV255(VQR-oVV z$jm30Tp>eZihrf;UqkJ{uAt-;5xk_qV{xH)+>7_=W%)cQZ1{{$7rG#wg8P0W zL<)ltU1$YzJ==cL!5cD{3JtFRhv3zWqUn&P%3{xA=i~5Wf8PgPc%L8?!+r{NjDk9igIUL$H}_ig zOp$UZ9>;vLLVj8M0hy-K6UMD5RcgBOo3iG?4dAVH&e#MkE1b@nf>ok>+EO6L%8=#Y zv3Oy$R{rK0+*l}?d<%k-+QuMs52gnLXGg&umu1f>YTJw zus=!?$_0G3UR@x9NhtrW3G+RLir<$ld7hh&PY{k)WA!B;Z z+T7@JeY`RDt!bRec&4qW&0LxxY4;D5S8z36p@onUUjZqY;SRAyVugluGR)ulB=`9 zs+B(~g|55iez*>0Wu)m<8R~vtT47H&A^Fv0t(KoC3LyRvl0W`*x|cZk$T&#O_Iq+& znT>rir~|rHy2)qiAIdWhI1j^Tnn-Gd+w^qnt-q+Wa41(|4b zWf0oRm%gTVf7F&AKD%Gb91$L>v9Isfnv$~KE(Kn&Pq;k+d7u&m>ICpd@I-E45n7WA zd6GV8SBOEtgB4e|wpyo3HY#JDdMh>zO9B=e%aliCEH>?i+<%vpH==l;`UVs0Mhtw~ zGwmpFECci9Xkq6>sfsr3IV81b%ScUpCAEsrt7qhE#izlXblVN7r$7b2o6{u)@p*#b6ZV5s|kMgJFP$XHnH0|+;3Zga*k zIc=LI`oLC*S(T?I__KR4Zb|IQ|GfG?n>p}-Wh)X(wqJF`wSTmD6Q*;odpYg%A7b}p z=xWB&VWTw%miBDPvKmGSl9+;Y@3D1td9!-^FAx{u(thRt2QK|H7$Cme|H5yq(kw^a z^|m}xr3$`s<`PbeaCF+IVsK)xLvmXV`G3&Tix7a7mU;Dh`h$2ofm7Dg5tw>?d`&C* z3^_AXXEfaBaJfaG&wd^-)~vYJsk$ZO@n7b5q% z%MgqpJxO%L^qTtAqbyutO! zfmBK0Z@BiR*t(PP^Qr@@-)*<4nzR32xHLCm;nmepDzN0mM<@B#u zlRPg7ae3tqcr1iD%*gcc4~>hGY9WUK4T$vlL#@JRHseO$G7e#gbkfrB?;ir(HshHJ z%l8u+P1dPZo)S)5W=eX1GBcTXu72W`kU1cOZw}_cNVz?QU*YS=(um^=NokV{)}_vW z3d-0ndmAopNc%nRP+?1~sdWbAUd-8x2#l&9UK0HqT{f5K;!NjZCJO8MU zyF~uI5tXjhiTg`&ZoQf{S28^w)M9Qr&nutVC%w=l>kp2zrTeoXAB4)yWZ3NjxX&;| zM_8CRh-ww@^}8_mU>?LKuAsvwbCO%qVnuFs)l-jyuY_B@Y8wf_{_+t}n8)>J>vNl26CUrsTg}QC`|VV3c}LeOOk~!&?xO zRs$+Ut~^cR#kR^qyckVk&uG!l4qSpPX00NDNuvR)^QQzAf&B%~OrUuZr3W_5 zb^RPbh0#LZy^Y&Q=#Y&EpHD`V+R)60x4c>Uy&R0FbTsc@Th3l~NFH1B{Q;5l{N?g= z&A^%?D%ahdm-aBymnBIbt$c9~^^51)Fr3p-jt1%7F!IJCsH%|;FZ0wU(XaTx;`m{e zhM6p<=}6XS!w-BUYHKsHIse8SwqT{7tCkzCW~~SIb%;(o^OFvVLxO;)M(%XuXo9 z2U>u;(TAo@OJI{{j{kBKdr-8_X6v?3wtjBEeA$^k*t8pWMtd1U)mhaGbF5j&dGC~- z%gB@Iw`)#n`1dnxY0X}gr{usNk}h=Rl{Ku?{>=N=$nEG5sv?j0A|^@#%#Q_JopziT zc3V8d8YSQs_BDbdiaLTeJAOJt2+r4s3`{BNt=2_y#v450ij0J<(V7gY@|Ed1NuIs8 z&aUmY7R*YsQ3fmvm$(2{Qa|$eYu;}JG?U|)*hSSu1y6gF{!p0L<0F)(uHWRt*r>J^ zZIH)1(Xj{*ov0j`(JNN)Lh(rAZ(IV(%{BjuQr2 z(y4FG<%Mo@nA6F!rZyR$P;3UVlxk_-mm zc1eV~R>G4yGHl02kWwDh-sZ!WKWvVgM;cg{?*9&lsvfTPCw>;^?x!#{d-;X)%$I}_dFU;Px6@~S#Xy#e!-3ObV_F9;n z4`rRsWoqq{YO=CC*Cm(rfQmt!RCXvn+%Xt{!pA+rRCB??>QInQA+mfyZ{;K;+oG8c zLRuT)7Y@0%b6E?O`}Ievz4B5=Zg>|wcZ+d*SXUpr^FY_`Og}a zjCWL9A!AhkHR|@{hn8954P`k?_dDE%0OkyR(3Z?b|0Ye5$GspF35S;X$!E%BwmCx5pKN+g1#nN;Yc8q7&Z-SUKSJ3D`-qmv++tB)A@q-i>vkuQFwV{ zRYlP}X}YrW*7hNq8zDn+LT)8Rn^^~Y8MaP9?cp%RZicqRuU5q9hvjZ5QgK)09x(NQ zAh*#jT9`N|kE!Udc2T`Oa|pKI{bEG)Z-xfZPh^`O3F|q+M=LKs$JU&$Ehf+nJ0CYz z?|h!=43Z!%VpS#70k(@D#kj+@rqpMsy6&9x00>rYtTSDlLdcCLCs zWmhgO-jv!wosH}bRjy}rE^Miq-N03x=kP}XDj#T~3=|iYR-6S&r}*LRyGMJ62 zPBxvO0J-2mJ)}W}5NVAC2s*1xSa#tR&LE|zs-zzph3TBKpFoBZZH6iD!Z1BjXgS}H z)-N&2d_qLbZ#g1*IX&m_+>4f>&;wz40Fy_Sp?npAwsV3}ST|z&%S7ag#j5P+rxLqf zkoV1_P`CB3m)K$1YLb6vz19Z}_{uQapQ?Z9uQ*fv**!ccFQY7kOICY%EkL_nLgqve z(ce((Cu3eC30Wygh_{v2SHNYct>$T3?a-;SEV=a8WD9g-vMk)Du+CwInZCzafHmeeqfU&YL0vuL+Syqs<# zvZ9H$LB8yrh#yl1qfk2~9(+Ic#0S=RjqZ`lJNX)QxFG(e(cuv3FdoUPu$5iYX`9u#Vok1l*Mp}U?P(aSrdp94d z_CT?&*Az%94v&6)0`HL+;F+Z;j;w;-SQ?{*e+G)cFkQ^4b)gJ_kHOxY!)$bITNJBRAflom=iu`5BAI$V%DJ)PWamrL|^wP998*q7+1e{#= zH|6Gik&oU5(feWHyBlFc)C9D8Q~q9EGA~yX`Tqxj9$fY}{;UK2?|DVE z;(xq1fUmlRmn9layVwM|dwq>uYbier%JxM5SYk;8FlZMo|C2wOKHmQ`&AYZfVik9J zkSGdQv#Cn?SMazxKTEPc2$N^hN+Wh-lZd+jtO#XmnUQediqDuZ_{F)FI~7D73=G zX?h}gZ=X>S{1{@xUWI5^R`h6G(g7xrF5gOD;}J;@H<$%!4DG>(_B$ zVw^CO6n17N{SqLz#8|G0AE+yyzg0qF?hrDlz)NXSg{zjdBI$VpEq#XS@b!E@?usuT`y{xa& z5hkPfvpvG=QI+Ph7g@)Y`3XO_OY(KCLOU2ZUftWctA@Mf!+!v6W{&i9ZQcvrn9sSN z6o5Q%yqZkZHKjvJU=VGJ$RJ#r=d>!u>X_U@A&~J(=-A{j91J@?n~QG5dZM!6$uCgZ z#LnAGq!#Kl4>swy(8>JBOFxbGE;KydXH-E~_&qLoBzQMJ_N#xcz;weu@F}PB=?}AD z3TVcyv;@o>$(OUr>=?y{9?9h5G5(eOcoawaM93^tUL*p$n<1i^NrBlu#!B&0Fj++|0-w!NtN{Wk&U@hMd&PgeFbNju;d1m*0@f@@$9M2V?zdCPHbHp!3wG%w=8H6t?Lh8QMm0wX^C4Q(QfEK z=$9$-*$jz?=t0PR&JETW?a{$Aa+6}^c~|~plP^PeZy>zCEP}7shui@{GF(0;!b|MS z+Nxz){gw?fgb-mGjhU0N`jlOYtHQ`1XU-DSG!4?ve8(^M{8Q2O72F zE5Oh!BTZ^LYPtzd>TF|mfkqUm4p(=S>E^IqN_SzQjN8KB?rkEmYgo)lv17&*nT)!N z)n81yV7vz*={Mu3Kc~XOSl@;w1xx3TH{J@r)rC&>QYtumc^AWUH3^ zX>|o;kvAxIZbU_~F)RC3j(Upg6zPN1oDGg@cGVd3`a1%x;ItC45YO+K z?-3HuOfxsopmp$ei~Hu%_IGzXENUd!QcouQr*XGJzj1=zM(2BU=E9AVlyvdHlXC-T zBwxcu)OJm#o+@-9pqNy4|2?x*?t`}$pr$~CC|g{+bv9N<3IUkl=NE}aI}NHD)@|)% z~?x1Z&10dkbA%5+t#glmD)}%2Ht5(1=WnTy%Ii$F)BxVbr)vHr9T~&F{!H z^LjEryeEbj78Bk9m)FuB;2&@0oUz%CwQ4ybZiwChB~?lqK$Y2g5=-2 zktD%Iy*{7?dSfxv1ev@MY~9{WuChf&)QS~N%bsaE@m!F}cNn2rnm?%1sU@v}k7veh zaA)-Uq0#a}!?<+sou-%Z?zou8mxpL1;_i9St$6t=rRZ+lgO0m#%SDp;Inr!~Quj>> zr1H`NvA=lKKFzV>A=iG_cBrs%;ZTo|btv@D*He2KT17K_D9v8)e#=3K|R!ZZ?cU86rp*q^0;5_Zhkonkp+78kq`0Yw-cLkq| zQ&mPu$QP7bn-sBC@Pg&ROs^h)ZPImVhpdB3yAcNru&P6D(P5MJ`N9)bGb2T?Fqs8E z(&3}X!&nL10{3&n>nUChoENU6lPj?s`z6~7k~`13w9$sex(eNTVJq+$vug*ieGc(% z6`0M}T}cBfhVAaA*5A#)DZJM>6NFpF>aHY;@0$#NkBbt;5{zEP1Ciz79avCLjI>S(}t~+E)+k z7+Wpfjk!}WU$|>^Tb3hzwd#RPpjj&hxcqys|GxUaySXL646Xt=MH3VzBpEki8op3Z-hnEdikda3hFfk&Sz9NRI;LKWSty<0i%;X3>9CQR5x#hq zeWey1!kJNAiHn=M?sghbWcFOnHo52VpHGs0@7qoHlJ=t^sD+P&goA1huj{;bQ7spW zSb7^OP8sfZO1843S^_hR6I++4|CiwKe%i<}c?dJ-)96C;uw0lMLRnEo?E~g(hKJ;z z`INN#!9JctH7V%!I$luL| znF2+Inn^t5jie$SZfzL+)#p^+k9m zXWx$PgBEuDMzwek+e-3vsTk;F9S@@^x5*t~3-Z*d;R%x?sqL?s#!&hrC~wjMK_cUkPwUR=b@z`! zvOc4DlGuVw`4CNxN2s@@M;uEY*fA+2B*QLvJkrw9Ae`{PBWj**npBOneRy9>b>_n3 zk)}k_Oa$(}?i=V0vol8JZJXrZE?tQm&9$%<#h=O`Oi!*|;piOS7LSk~S$nAY-KT&^ z*Vb7QYh(k`@TU!M&z|Hs#yngd)n*OClrmH~&xV?zF?Or1ikq=^fWOb5%teq_1=0T2x+=QwO;tCo9=r$ZMC}n+{^*V7Zfc{o+FLCdSA6k z>Z=9Ci!WSsqcOFbCw95J(0BvshujZNb%730_nf8!!8uRsga)1j@khmZpSWUMwe5p< zZ$TjIS4;293>{Awe7bo3sP7I{!UcKUhA)VO5{#YsMZ2*#Fb)d3YEPesr(;=_3BUxn&|U&^g$$5gpRqr`agitaXE+o6G#yjuyBUZoD-I!g zmO_;34?TW^$quYJ{xn_gQ%78Byb~NbJU{zwt=CyfehM_+k?$vL4m{Wh@ zz`RbQ3vh0l`|;|Fo`w&GIk)L)=AQD!A9CCiv!vi40f}TEE!xg){xs^@BTQ9IS}9!W z@-5FceS-7HzzJz8|HSv@ycu<$g()a^bKbg})9kw}s{2N@!8)O!)Nc>qrnW+4OR$pqAgI6jHDRpMnpOo2yoy;j*m~z;<+x%bIN!5YN$mBBz z*_$0!T^)U)=suY?Upl8Kft@18G&hwS;2wsb%H2qglsiet+17#|w==XH5BkTQJ+ilY ztm)jcZ&9yLd7J&b5l`8>P@JuHTl7J$FqEILn!e(uIEae=S;*;ZsVP`~K-e;tzr1vJ zTT^-oTJlHjtc&u6$)qZc?(*z#l?wYPYRV6f1bYhV!^1!6yi~eLmkV`Yi^=aYI!LJ- zI~)Ey*+$!^fY^ggY0C{GJUrTddK$hJ-iJQrn|ytMi%P+O3txubm)A$Qrau8$a1k$E zTBP{((CDWuCXiy9QuiEbPyTorch原生算子 +- [PyTorch算子\(由昇腾开发\)](#PyTorch算子\(由昇腾开发\).md) +## PyTorch原生算子 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

序号

-

PyTorch 原生算子

-

昇腾适配算子

-

1

-

dropout

-

dropout_npu

-

2

-

dropout_

-

dropout_npu_

-

3

-

abs

-

abs_npu

-

4

-

abs_

-

abs_npu_

-

5

-

abs.out

-

abs_out_npu

-

6

-

acos

-

acos_npu

-

7

-

acos_

-

acos_npu_

-

8

-

acos.out

-

acos_out_npu

-

9

-

adaptive_avg_pool1d

-

adaptive_avg_pool1d_npu

-

10

-

add.Tensor

-

add_npu

-

11

-

add_.Tensor

-

add_npu_

-

12

-

add.out

-

add_out_npu

-

13

-

add.Scalar

-

add_npu

-

14

-

add_.Scalar

-

add_npu_

-

15

-

addmv

-

addmv_npu

-

16

-

addmv_

-

addmv_npu_

-

17

-

addmv.out

-

addmv_out_npu

-

18

-

addr

-

addr_npu

-

19

-

addr_

-

addr_npu_

-

20

-

addr.out

-

addr_out_npu

-

21

-

affine_grid_generator

-

affine_grid_generator_npu

-

22

-

affine_grid_generator_backward

-

affine_grid_generator_backward_npu

-

23

-

all.dim

-

all_npu

-

24

-

all.out

-

all_out_npu

-

25

-

any.dim

-

any_npu

-

26

-

any.out

-

any_out_npu

-

27

-

arange

-

arange_npu

-

28

-

arange.start

-

arange_npu

-

29

-

arange.start_step

-

arange_npu

-

30

-

arange.out

-

arange_out_npu

-

31

-

arange.start_out

-

arange_out_npu

-

32

-

_dim_arange

-

_dim_arange_npu

-

33

-

argmax

-

argmax_npu

-

34

-

argmin

-

argmin_npu

-

35

-

as_strided

-

as_strided_npu

-

36

-

as_strided_

-

as_strided_npu_

-

37

-

asin

-

asin_npu

-

38

-

asin_

-

asin_npu_

-

39

-

asin.out

-

asin_out_npu

-

40

-

atan

-

atan_npu

-

41

-

atan_

-

atan_npu_

-

42

-

atan.out

-

atan_out_npu

-

43

-

baddbmm

-

baddbmm_npu

-

44

-

baddbmm_

-

baddbmm_npu_

-

45

-

baddbmm.out

-

baddbmm_out_npu

-

46

-

bartlett_window

-

bartlett_window_npu

-

47

-

bartlett_window.periodic

-

bartlett_window_npu

-

48

-

batch_norm

-

batch_norm_npu_

-

49

-

_batch_norm_impl_index

-

_batch_norm_impl_index_npu

-

50

-

_batch_norm_impl_index_backward

-

_batch_norm_impl_index_backward_npu

-

51

-

bernoulli

-

bernoulli_npu

-

52

-

bernoulli_.Tensor

-

bernoulli_npu_

-

53

-

bernoulli_.float

-

bernoulli_npu_

-

54

-

binary_cross_entropy

-

binary_cross_entropy_npu

-

55

-

binary_cross_entropy.out

-

binary_cross_entropy_out_npu

-

56

-

binary_cross_entropy_backward

-

binary_cross_entropy_backward_npu

-

57

-

binary_cross_entropy_backward.grad_input

-

binary_cross_entropy_backward_out_npu

-

58

-

binary_cross_entropy_with_logits

-

binary_cross_entropy_with_logits_npu

-

59

-

binary_cross_entropy_with_logits_backward

-

binary_cross_entropy_with_logits_backward_npu

-

60

-

bitwise_not

-

bitwise_not_npu

-

61

-

bitwise_not_

-

bitwise_not_npu_

-

62

-

bitwise_not.out

-

bitwise_not_out_npu

-

63

-

logical_not

-

logical_not_npu

-

64

-

logical_not_

-

logical_not_npu_

-

65

-

logical_not.out

-

logical_not_out_npu

-

66

-

logical_and

-

logical_and_npu

-

67

-

logical_and_

-

logical_and_npu_

-

68

-

logical_and.out

-

logical_and_out_npu

-

69

-

logical_or

-

logical_or_npu

-

70

-

logical_or_

-

logical_or_npu_

-

71

-

logical_or.out

-

logical_or_out_npu

-

72

-

blackman_window

-

blackman_window_npu

-

73

-

blackman_window.periodic

-

blackman_window_npu

-

74

-

bmm

-

bmm_npu

-

75

-

bmm.out

-

bmm_out_npu

-

76

-

cat

-

cat_npu

-

77

-

cat.out

-

cat_out_npu

-

78

-

cat.names

-

cat_npu

-

79

-

cat.names_out

-

cat_out_npu

-

80

-

ceil

-

ceil_npu

-

81

-

ceil_

-

ceil_npu_

-

82

-

ceil.out

-

ceil_out_npu

-

83

-

clamp

-

clamp_npu

-

84

-

clamp_

-

clamp_npu_

-

85

-

clamp.out

-

clamp_out_npu

-

86

-

clamp_max

-

clamp_max_npu

-

87

-

clamp_max_

-

clamp_max_npu_

-

88

-

clamp_max.out

-

clamp_max_out_npu

-

89

-

clamp_min

-

clamp_min_npu

-

90

-

clamp_min_

-

clamp_min_npu_

-

91

-

clamp_min.out

-

clamp_min_out_npu

-

92

-

constant_pad_nd

-

constant_pad_nd_npu

-

93

-

contiguous

-

contiguous_npu

-

94

-

convolution

-

convolution_npu

-

95

-

_convolution

-

_convolution_npu

-

96

-

_convolution_nogroup

-

_convolution_nogroup_npu

-

97

-

conv2d

-

conv2d_npu_

-

98

-

conv3d

-

_conv3d_npu

-

99

-

conv_tbc

-

conv_tbc_npu

-

100

-

conv_tbc_backward

-

conv_tbc_backward_npu

-

101

-

conv_transpose2d.input

-

conv_transpose2d_npu_

-

102

-

copy_

-

copy_npu_

-

103

-

cos

-

cos_npu

-

104

-

cos_

-

cos_npu_

-

105

-

cos.out

-

cos_out_npu

-

106

-

cosh

-

cosh_npu

-

107

-

cosh_

-

cosh_npu_

-

108

-

cosh.out

-

cosh_out_npu

-

109

-

cummin

-

cummin_npu

-

110

-

cummin.out

-

cummin_out_npu

-

111

-

cummin.dimname

-

cummin_npu

-

112

-

cummin.dimname_out

-

cummin_out_npu

-

113

-

cumprod

-

cumprod_npu

-

114

-

cumprod.out

-

cumprod_out_npu

-

115

-

cumprod.dimname

-

cumprod_npu

-

116

-

cumprod.dimname_out

-

cumprod_out_npu

-

117

-

ctc_loss.IntList

-

ctc_loss_npu

-

118

-

ctc_loss.Tensor

-

ctc_loss_npu

-

119

-

_ctc_loss

-

ctc_loss_npu

-

120

-

_ctc_loss_backward

-

ctc_loss_backward_npu

-

121

-

fill_diagonal_

-

fill_diagonal_npu_

-

122

-

div.Tensor

-

div_npu

-

123

-

div_.Tensor

-

div_npu_

-

124

-

div.out

-

div_out_npu

-

125

-

div.Scalar

-

div_npu

-

126

-

div_.Scalar

-

div_npu_

-

127

-

dot

-

dot_npu

-

128

-

dot.out

-

dot_out_npu

-

129

-

embedding

-

embedding_npu

-

130

-

embedding_backward

-

embedding_backward_npu

-

131

-

embedding_dense_backward

-

embedding_dense_backward_npu

-

132

-

embedding_renorm_

-

embedding_renorm_npu_

-

133

-

_embedding_bag

-

_embedding_bag_npu

-

134

-

empty.memory_format

-

empty_npu

-

135

-

resize_

-

resize_npu_

-

136

-

empty_like

-

empty_like_npu

-

137

-

empty_strided

-

empty_strided_npu

-

138

-

erf

-

erf_npu

-

139

-

erf_

-

erf_npu_

-

140

-

erf.out

-

erf_out_npu

-

141

-

exp

-

exp_npu

-

142

-

exp_

-

exp_npu_

-

143

-

exp.out

-

exp_out_npu

-

144

-

expm1

-

expm1_npu

-

145

-

expm1_

-

expm1_npu_

-

146

-

expm1.out

-

expm1_out_npu

-

147

-

eye

-

eye_npu

-

148

-

eye.m

-

eye_npu

-

149

-

eye.out

-

eye_out_npu

-

150

-

eye.m_out

-

eye_out_npu

-

151

-

fill_.Scalar

-

fill_npu_

-

152

-

fill_.Tensor

-

fill_npu_

-

153

-

floor

-

floor_npu

-

154

-

floor_

-

floor_npu_

-

155

-

floor.out

-

floor_out_npu

-

156

-

floor_divide

-

floor_divide_npu

-

157

-

floor_divide_.Tensor

-

floor_divide_npu_

-

158

-

floor_divide.out

-

floor_divide_out_npu

-

159

-

floor_divide.Scalar

-

floor_divide_npu

-

160

-

floor_divide_.Scalar

-

floor_divide_npu_

-

161

-

frac

-

frac_npu

-

162

-

frac_

-

frac_npu_

-

163

-

frac.out

-

frac_out_npu

-

164

-

full.names

-

full_npu

-

165

-

full

-

full_npu

-

166

-

full.out

-

full_out_npu

-

167

-

grid_sampler

-

grid_sampler_npu

-

168

-

grid_sampler_3d

-

grid_sampler_3d_npu

-

169

-

grid_sampler_3d_backward

-

grid_sampler_3d_backward_npu

-

170

-

hann_window

-

hann_window_npu

-

171

-

hann_window.periodic

-

hann_window_npu

-

172

-

hamming_window

-

hamming_window_npu

-

173

-

hamming_window.periodic

-

hamming_window_npu

-

174

-

hamming_window.periodic_alpha

-

hamming_window_npu

-

175

-

hamming_window.periodic_alpha_beta

-

hamming_window_npu

-

176

-

ger

-

ger_npu

-

177

-

ger.out

-

ger_out_npu

-

178

-

index.Tensor

-

index_npu

-

179

-

index_put_

-

index_put_npu_

-

180

-

index_put

-

index_put_npu

-

181

-

_index_put_impl_

-

_index_put_impl_npu_

-

182

-

inverse

-

inverse_npu

-

183

-

inverse.out

-

inverse_out_npu

-

184

-

isclose

-

isclose_npu

-

185

-

isnan

-

isnan_npu

-

186

-

is_nonzero

-

is_nonzero_npu

-

187

-

kl_div

-

kl_div_npu

-

188

-

kl_div_backward

-

kl_div_backward_npu

-

189

-

kthvalue

-

kthvalue_npu

-

190

-

kthvalue.values

-

kthvalue_out_npu

-

191

-

kthvalue.dimname

-

kthvalue_npu

-

192

-

kthvalue.dimname_out

-

kthvalue_out_npu

-

193

-

native_layer_norm

-

layer_norm_npu

-

194

-

native_layer_norm_backward

-

layer_norm_backward_npu

-

195

-

linspace

-

linspace_npu

-

196

-

linspace.out

-

linspace_out_npu

-

197

-

log

-

log_npu

-

198

-

log_

-

log_npu_

-

199

-

log.out

-

log_out_npu

-

200

-

log10

-

log10_npu

-

201

-

log10_

-

log10_npu_

-

202

-

log10.out

-

log10_out_npu

-

203

-

log1p

-

log1p_npu

-

204

-

log1p_

-

log1p_npu_

-

205

-

log1p.out

-

log1p_out_npu

-

206

-

log2

-

log2_npu

-

207

-

log2_

-

log2_npu_

-

208

-

log2.out

-

log2_out_npu

-

209

-

logspace

-

logspace_npu

-

210

-

logspace.out

-

logspace_out_npu

-

211

-

log_softmax.int

-

log_softmax_npu

-

212

-

log_softmax.Dimname

-

log_softmax_npu

-

213

-

_log_softmax

-

_log_softmax_npu

-

214

-

_log_softmax_backward_data

-

_log_softmax_backward_npu

-

215

-

logsumexp

-

logsumexp_npu

-

216

-

logsumexp.out

-

logsumexp_out_npu

-

217

-

logsumexp.names

-

logsumexp_npu

-

218

-

logsumexp.names_out

-

logsumexp_out_npu

-

219

-

matmul

-

matmul_npu

-

220

-

matmul.out

-

matmul_out_npu

-

221

-

matrix_power

-

matrix_power_npu

-

222

-

max.dim

-

max_npu

-

223

-

max.dim_max

-

max_out_npu

-

224

-

max_values

-

max_npu

-

225

-

max.names_dim

-

max_npu

-

226

-

max.names_dim_max

-

max_out_npu

-

227

-

max_values.names

-

max_npu

-

228

-

max_pool2d

-

max_pool2d_npu

-

229

-

quantized_max_pool2d

-

quantized_max_pool2d_npu

-

230

-

mean

-

mean_npu

-

231

-

mean.dim

-

mean_npu

-

232

-

mean.out

-

mean_out_npu

-

233

-

mean.names_dim

-

mean_npu

-

234

-

mean.names_out

-

mean_out_npu

-

235

-

median.dim

-

median_npu

-

236

-

median.dim_values

-

median_out_npu

-

237

-

median.names_dim

-

median_npu

-

238

-

median.names_dim_values

-

median_out_npu

-

239

-

min.dim

-

min_npu

-

240

-

min.dim_min

-

min_out_npu

-

241

-

min_values

-

min_npu

-

242

-

min.names_dim

-

min_npu

-

243

-

min.names_dim_min

-

min_out_npu

-

244

-

min_values.names

-

min_npu

-

245

-

mm

-

mm_npu

-

246

-

mm.out

-

mm_out_npu

-

247

-

mode

-

mode_npu

-

248

-

mode.values

-

mode_out_npu

-

249

-

mul.Tensor

-

mul_npu

-

250

-

mul_.Tensor

-

mul_npu_

-

251

-

mul.out

-

mul_out_npu

-

252

-

mul.Scalar

-

mul_npu

-

253

-

mul_.Scalar

-

mul_npu_

-

254

-

mv

-

mv_npu

-

255

-

mv.out

-

mv_out_npu

-

256

-

narrow_copy

-

narrow_copy_npu

-

257

-

native_batch_norm

-

batch_norm_npu

-

258

-

native_batch_norm_backward

-

batch_norm_backward_npu

-

259

-

_nnpack_spatial_convolution

-

_nnpack_spatial_convolution_npu

-

260

-

ones.names

-

ones_npu

-

261

-

ones

-

ones_npu

-

262

-

ones.out

-

ones_out_npu

-

263

-

ones_like

-

ones_like_npu

-

264

-

cdist

-

cdist_npu

-

265

-

_cdist_forward

-

_cdist_forward_npu

-

266

-

_cdist_backward

-

_cdist_backward_npu

-

267

-

pdist

-

pdist_npu

-

268

-

_pdist_forward

-

_pdist_forward_npu

-

269

-

randperm

-

randperm_npu

-

270

-

randperm.generator

-

randperm_npu

-

271

-

randperm.out

-

randperm_out_npu

-

272

-

randperm.generator_out

-

randperm_out_npu

-

273

-

range.step

-

range_npu

-

274

-

range

-

range_npu

-

275

-

range.out

-

range_out_npu

-

276

-

reciprocal

-

reciprocal_npu

-

277

-

reciprocal_

-

reciprocal_npu_

-

278

-

reciprocal.out

-

reciprocal_out_npu

-

279

-

neg

-

neg_npu

-

280

-

neg_

-

neg_npu_

-

281

-

neg.out

-

neg_out_npu

-

282

-

repeat

-

repeat_npu

-

283

-

repeat_interleave.self_int

-

repeat_interleave_npu

-

284

-

round

-

round_npu

-

285

-

round_

-

round_npu_

-

286

-

round.out

-

round_out_npu

-

287

-

relu

-

relu_npu

-

288

-

relu_

-

relu_npu_

-

289

-

prelu

-

prelu_npu

-

290

-

prelu_backward

-

prelu_backward_npu

-

291

-

gelu

-

gelu_npu

-

292

-

gelu_backward

-

gelu_backward_npu

-

293

-

hardshrink

-

hardshrink_npu

-

294

-

hardshrink_backward

-

hardshrink_backward_npu

-

295

-

rsqrt

-

rsqrt_npu

-

296

-

rsqrt_

-

rsqrt_npu_

-

297

-

rsqrt.out

-

rsqrt_out_npu

-

298

-

selu

-

selu_npu

-

299

-

selu_

-

selu_npu_

-

300

-

celu

-

celu_npu

-

301

-

celu_

-

celu_npu_

-

302

-

sigmoid

-

sigmoid_npu

-

303

-

sigmoid_

-

sigmoid_npu_

-

304

-

sigmoid.out

-

sigmoid_out_npu

-

305

-

sin

-

sin_npu

-

306

-

sin_

-

sin_npu_

-

307

-

sin.out

-

sin_out_npu

-

308

-

sinh

-

sinh_npu

-

309

-

sinh_

-

sinh_npu_

-

310

-

sinh.out

-

sinh_out_npu

-

311

-

slogdet

-

slogdet_npu

-

312

-

softmax.int

-

softmax_npu

-

313

-

softmax.Dimname

-

softmax_npu

-

314

-

_softmax

-

_softmax_npu

-

315

-

_softmax_backward_data

-

_softmax_backward_npu

-

316

-

stack

-

stack_npu

-

317

-

stack.out

-

stack_out_npu

-

318

-

sum

-

sum_npu

-

319

-

sum.dim_IntList

-

sum_npu

-

320

-

sum.dim_DimnameList

-

sum_npu

-

321

-

sum.IntList_out

-

sum_out_npu

-

322

-

sum.DimnameList_out

-

sum_out_npu

-

323

-

sqrt

-

sqrt_npu

-

324

-

sqrt_

-

sqrt_npu_

-

325

-

sqrt.out

-

sqrt_out_npu

-

326

-

std

-

std_npu

-

327

-

std.dim

-

std_dim_npu

-

328

-

std_mean

-

std_mean_npu

-

329

-

std_mean.dim

-

std_mean_dim_npu

-

330

-

std_mean.names_dim

-

std_mean_names_npu

-

331

-

std.out

-

std_out_npu

-

332

-

std.names_dim

-

std_names_npu

-

333

-

std.names_out

-

std_out_npu

-

334

-

prod

-

prod_npu

-

335

-

prod.dim_int

-

prod_npu

-

336

-

prod.int_out

-

prod_out_npu

-

337

-

prod.dim_Dimname

-

prod_npu

-

338

-

prod.Dimname_out

-

prod_out_npu

-

339

-

tan

-

tan_npu

-

340

-

tan_

-

tan_npu_

-

341

-

tan.out

-

tan_out_npu

-

342

-

tanh

-

tanh_npu

-

343

-

tanh_

-

tanh_npu_

-

344

-

tanh.out

-

tanh_out_npu

-

345

-

threshold

-

threshold_npu

-

346

-

threshold_

-

threshold_npu_

-

347

-

threshold.out

-

threshold_out_npu

-

348

-

threshold_backward

-

threshold_backward_npu

-

349

-

one_hot

-

one_hot_npu1

-

350

-

flip

-

flip_npu

-

351

-

roll

-

roll_npu

-

352

-

true_divide.Tensor

-

true_divide_npu

-

353

-

true_divide_.Tensor

-

true_divide_npu_

-

354

-

true_divide.out

-

true_divide_out_npu

-

355

-

true_divide.Scalar

-

true_divide_npu

-

356

-

true_divide_.Scalar

-

true_divide_npu_

-

357

-

trunc

-

trunc_npu

-

358

-

trunc_

-

trunc_npu_

-

359

-

trunc.out

-

trunc_out_npu

-

360

-

_unique2

-

_unique2_npu

-

361

-

var

-

var_npu

-

362

-

var.dim

-

var_npu

-

363

-

var.out

-

var_out_npu

-

364

-

var.names_dim

-

var_npu

-

365

-

var.names_out

-

var_out_npu

-

366

-

var_mean

-

var_mean_npu

-

367

-

var_mean.dim

-

var_mean_npu

-

368

-

var_mean.names_dim

-

var_mean_npu

-

369

-

where.self

-

where_npu

-

370

-

where

-

where_npu

-

371

-

_s_where

-

_s_where_npu

-

372

-

zeros.names

-

zeros_npu

-

373

-

zeros

-

zeros_npu

-

374

-

zeros.out

-

zeros_out_npu

-

375

-

zeros_like

-

zeros_like_npu

-

376

-

norm.ScalarOpt_dtype

-

norm_npu

-

377

-

norm.Scalar

-

norm_npu

-

378

-

norm.ScalarOpt_dim_dtype

-

norm_npu

-

379

-

norm.ScalarOpt_dim

-

norm_npu

-

380

-

norm.dtype_out

-

norm_out_npu

-

381

-

norm.out

-

norm_out_npu

-

382

-

clone

-

clone_npu

-

383

-

resize_as_

-

resize_as_npu_

-

384

-

pow.Tensor_Scalar_out

-

pow_out_npu

-

385

-

pow.Tensor_Scalar

-

pow_npu

-

386

-

zero_

-

zero_npu_

-

387

-

sub.out

-

sub_out_npu

-

388

-

sub.Tensor

-

sub_npu

-

389

-

sub_.Tensor

-

sub_npu_

-

390

-

sub.Scalar

-

sub_npu

-

391

-

sub_.Scalar

-

sub_npu_

-

392

-

rsub.Tensor

-

rsub_npu

-

393

-

rsub.Scalar

-

rsub_npu

-

394

-

addmm.out

-

addmm_out_npu

-

395

-

addmm

-

addmm_npu

-

396

-

addmm_

-

addmm_npu_

-

397

-

quantize_per_tensor

-

quantize_per_tensor_npu

-

398

-

quantize_per_channel

-

quantize_per_channel_npu

-

399

-

to.dtype_layout

-

to_npu

-

400

-

to.device

-

to_device_npu

-

401

-

to.dtype

-

to_dtype_npu

-

402

-

to.other

-

to_other_npu

-

403

-

_local_scalar_dense

-

_local_scalar_dense_npu

-

404

-

lstm.input

-

lstm_npu

-

405

-

lstm.data

-

lstm_npu

-

406

-

gru.input

-

gru_npu_

-

407

-

_pack_padded_sequence

-

_pack_padded_sequence_npu

-

408

-

_pad_packed_sequence

-

_pad_packed_sequence_npu

-

409

-

set_.source_Storage

-

set_npu_

-

410

-

set_.source_Storage_storage_offset

-

set_npu_

-

411

-

set_.source_Tensor

-

set_npu_

-

412

-

set_

-

set_npu_

-

413

-

masked_fill_.Scalar

-

masked_fill_npu_

-

414

-

masked_fill_.Tensor

-

masked_fill_npu_

-

415

-

masked_scatter_

-

masked_scatter_npu_

-

416

-

view

-

view_npu

-

417

-

put_

-

put_npu_

-

418

-

index_add_

-

index_add_npu_

-

419

-

index_add

-

index_add_npu

-

420

-

index_add.dimname

-

index_add_npu

-

421

-

index_fill_.int_Scalar

-

index_fill_npu_

-

422

-

index_fill.int_Scalar

-

index_fill_npu

-

423

-

index_fill_.int_Tensor

-

index_fill_npu_

-

424

-

index_fill.int_Tensor

-

index_fill_npu

-

425

-

scatter_.src

-

scatter_npu_

-

426

-

scatter_.value

-

scatter_npu_

-

427

-

scatter_add_

-

scatter_add_npu_

-

428

-

scatter_add

-

scatter_add_npu

-

429

-

scatter_add.dimname

-

scatter_add_npu

-

430

-

lt_.Scalar

-

lt_npu_

-

431

-

lt_.Tensor

-

lt_npu_

-

432

-

gt_.Scalar

-

gt_npu_

-

433

-

gt_.Tensor

-

gt_npu_

-

434

-

le_.Scalar

-

le_npu_

-

435

-

le_.Tensor

-

le_npu_

-

436

-

ge_.Scalar

-

ge_npu_

-

437

-

ge_.Tensor

-

ge_npu_

-

438

-

eq_.Scalar

-

eq_npu_

-

439

-

eq_.Tensor

-

eq_npu_

-

440

-

ne_.Scalar

-

ne_npu_

-

441

-

ne_.Tensor

-

ne_npu_

-

442

-

bitwise_and.Tensor_out

-

bitwise_and_out_npu

-

443

-

bitwise_and.Scalar_out

-

bitwise_and_out_npu

-

444

-

bitwise_and.Scalar

-

bitwise_and_npu

-

445

-

bitwise_and.Tensor

-

bitwise_and_npu

-

446

-

bitwise_and_.Scalar

-

bitwise_and_npu_

-

447

-

bitwise_and_.Tensor

-

bitwise_and_npu_

-

448

-

__and__.Scalar

-

__and___npu

-

449

-

__and__.Tensor

-

__and___npu

-

450

-

bitwise_or.Tensor_out

-

bitwise_or_out_npu

-

451

-

bitwise_or.Scalar_out

-

bitwise_or_out_npu

-

452

-

bitwise_or.Scalar

-

bitwise_or_npu

-

453

-

bitwise_or.Tensor

-

bitwise_or_npu

-

454

-

bitwise_or_.Scalar

-

bitwise_or_npu_

-

455

-

bitwise_or_.Tensor

-

bitwise_or_npu_

-

456

-

__or__.Scalar

-

__or___npu

-

457

-

__or__.Tensor

-

__or___npu

-

458

-

__ior__.Scalar

-

__ior___npu

-

459

-

__ior__.Tensor

-

__ior___npu

-

460

-

bitwise_xor.Tensor_out

-

bitwise_xor_out_npu

-

461

-

bitwise_xor.Scalar_out

-

bitwise_xor_out_npu

-

462

-

bitwise_xor.Scalar

-

bitwise_xor_npu

-

463

-

bitwise_xor.Tensor

-

bitwise_xor_npu

-

464

-

bitwise_xor_.Scalar

-

bitwise_xor_npu_

-

465

-

bitwise_xor_.Tensor

-

bitwise_xor_npu_

-

466

-

__xor__.Scalar

-

__xor___npu

-

467

-

__xor__.Tensor

-

__xor___npu

-

468

-

atan2_

-

atan2_npu_

-

469

-

tril_

-

tril_npu_

-

470

-

triu_

-

triu_npu_

-

471

-

renorm_

-

renorm_npu_

-

472

-

pow_.Scalar

-

pow_npu_

-

473

-

pow_.Tensor

-

pow_npu_

-

474

-

lerp_.Scalar

-

lerp_npu_

-

475

-

lerp_.Tensor

-

lerp_npu_

-

476

-

fmod_.Scalar

-

fmod_npu_

-

477

-

fmod_.Tensor

-

fmod_npu_

-

478

-

remainder_.Scalar

-

remainder_npu_

-

479

-

remainder_.Tensor

-

remainder_npu_

-

480

-

addbmm_

-

addbmm_npu_

-

481

-

addbmm.out

-

addbmm_out_npu

-

482

-

addbmm

-

addbmm_npu

-

483

-

addcdiv_

-

addcdiv_npu_

-

484

-

random_.from

-

random_npu_

-

485

-

random_.to

-

random_npu_

-

486

-

random_

-

random_npu_

-

487

-

uniform_

-

uniform_npu_

-

488

-

diag.out

-

diag_out_npu

-

489

-

diag

-

diag_npu

-

490

-

cross.out

-

cross_out_npu

-

491

-

cross

-

cross_npu

-

492

-

triu.out

-

triu_out_npu

-

493

-

triu

-

triu_npu

-

494

-

tril.out

-

tril_out_npu

-

495

-

tril

-

tril_npu

-

496

-

ne.Scalar_out

-

ne_out_npu

-

497

-

ne.Scalar

-

ne_npu

-

498

-

ne.Tensor_out

-

ne_out_npu

-

499

-

ne.Tensor

-

ne_npu

-

500

-

eq.Scalar_out

-

eq_out_npu

-

501

-

eq.Scalar

-

eq_npu

-

502

-

eq.Tensor_out

-

eq_out_npu

-

503

-

eq.Tensor

-

eq_npu

-

504

-

ge.Scalar_out

-

ge_out_npu

-

505

-

ge.Scalar

-

ge_npu

-

506

-

ge.Tensor_out

-

ge_out_npu

-

507

-

ge.Tensor

-

ge_npu

-

508

-

le.Scalar_out

-

le_out_npu

-

509

-

le.Scalar

-

le_npu

-

510

-

le.Tensor_out

-

le_out_npu

-

511

-

le.Tensor

-

le_npu

-

512

-

gt.Scalar_out

-

gt_out_npu

-

513

-

gt.Scalar

-

gt_npu

-

514

-

gt.Tensor_out

-

gt_out_npu

-

515

-

gt.Tensor

-

gt_npu

-

516

-

lt.Scalar_out

-

lt_out_npu

-

517

-

lt.Scalar

-

lt_npu

-

518

-

lt.Tensor_out

-

lt_out_npu

-

519

-

lt.Tensor

-

lt_npu

-

520

-

take.out

-

take_out_npu

-

521

-

take

-

take_npu

-

522

-

index_select.out

-

index_select_out_npu

-

523

-

index_select

-

index_select_npu

-

524

-

index_select.dimname_out

-

index_select_out_npu

-

525

-

index_select.dimname

-

index_select_npu

-

526

-

masked_select.out

-

masked_select_out_npu

-

527

-

masked_select

-

masked_select_npu

-

528

-

nonzero.out

-

nonzero_out_npu

-

529

-

nonzero

-

nonzero_npu

-

530

-

gather.out

-

gather_out_npu

-

531

-

gather

-

gather_npu

-

532

-

gather.dimname_out

-

gather_out_npu

-

533

-

gather.dimname

-

gather_npu

-

534

-

addcmul.out

-

addcmul_out_npu

-

535

-

addcmul

-

addcmul_npu

-

536

-

addcmul_

-

addcmul_npu_

-

537

-

addcdiv.out

-

addcdiv_out_npu

-

538

-

addcdiv

-

addcdiv_npu

-

539

-

qr.Q

-

qr_out_npu

-

540

-

qr

-

qr_npu

-

541

-

multinomial.out

-

multinomial_out_npu

-

542

-

multinomial

-

multinomial_npu

-

543

-

erfinv

-

erfinv_npu

-

544

-

erfinv_

-

erfinv_npu_

-

545

-

erfinv.out

-

erfinv_out_npu

-

546

-

sign

-

sign_npu

-

547

-

sign_

-

sign_npu_

-

548

-

sign.out

-

sign_out_npu

-

549

-

atan2.out

-

atan2_out_npu

-

550

-

atan2

-

atan2_npu

-

551

-

lerp.Scalar_out

-

lerp_out_npu

-

552

-

lerp.Tensor_out

-

lerp_out_npu

-

553

-

lerp.Scalar

-

lerp_npu

-

554

-

lerp.Tensor

-

lerp_npu

-

555

-

histc.out

-

histc_out_npu

-

556

-

histc

-

histc_npu

-

557

-

fmod.Scalar_out

-

fmod_out_npu

-

558

-

fmod.Scalar

-

fmod_npu

-

559

-

fmod.Tensor_out

-

fmod_out_npu

-

560

-

fmod.Tensor

-

fmod_npu

-

561

-

remainder.Scalar_out

-

remainder_out_npu

-

562

-

remainder.Scalar

-

remainder_npu

-

563

-

remainder.Tensor_out

-

remainder_out_npu

-

564

-

remainder.Tensor

-

remainder_npu

-

565

-

min.out

-

min_out_npu

-

566

-

min.other

-

min_npu

-

567

-

min

-

min_npu

-

568

-

max.out

-

max_out_npu

-

569

-

max.other

-

max_npu

-

570

-

max

-

max_npu

-

571

-

median

-

median_npu

-

572

-

sort.values

-

sort_out_npu

-

573

-

sort

-

sort_npu

-

574

-

sort.dimname_values

-

sort_out_npu

-

575

-

sort.dimname

-

sort_npu

-

576

-

argsort

-

argsort_npu

-

577

-

argsort.dimname

-

argsort_npu

-

578

-

topk.values

-

topk_out_npu

-

579

-

topk

-

topk_npu

-

580

-

all

-

all_npu

-

581

-

any

-

any_npu

-

582

-

renorm.out

-

renorm_out_npu

-

583

-

renorm

-

renorm_npu

-

584

-

unfold

-

unfold

-

585

-

equal

-

equal_npu

-

586

-

pow.Tensor_Tensor_out

-

pow_out_npu

-

587

-

pow.Tensor_Tensor

-

pow_npu

-

588

-

pow.Scalar_out

-

pow_out_npu

-

589

-

pow.Scalar

-

pow_npu

-

590

-

normal_

-

normal_npu_

-

591

-

normal.Tensor_float_out

-

normal_out_npu

-

592

-

normal.Tensor_float

-

normal_npu

-

593

-

normal.float_Tensor_out

-

normal_out_npu

-

594

-

normal.float_Tensor

-

normal_npu

-

595

-

normal.Tensor_Tensor_out

-

normal_out_npu

-

596

-

normal.Tensor_Tensor

-

normal_npu

-

597

-

normal.float_float

-

normal_npu

-

598

-

normal.float_float_out

-

normal_out_npu

-

599

-

_addr

-

_addr_npu

-

600

-

_addr_

-

_addr_npu_

-

601

-

_addr.out

-

_addr_out_npu

-

602

-

_cumsum

-

_cumsum_npu

-

603

-

_cumsum.out

-

_cumsum_out_npu

-

604

-

_cumprod

-

_cumprod_npu

-

605

-

_cumprod.out

-

_cumprod_out_npu

-

606

-

_var

-

_var_npu

-

607

-

_amp_non_finite_check_and_unscale_

-

_amp_non_finite_check_and_unscale_npu_

-

608

-

_cat

-

_cat_npu

-

609

-

_cat.out

-

_cat_out_npu

-

610

-

_max

-

_max_npu

-

611

-

_max.max

-

_max_out_npu

-

612

-

_min

-

_min_npu

-

613

-

_min.min

-

_min_out_npu

-

614

-

mse_loss.out

-

mse_loss_out_npu

-

615

-

mse_loss

-

mse_loss_npu

-

616

-

mse_loss_backward.grad_input

-

mse_loss_backward_out_npu

-

617

-

mse_loss_backward

-

mse_loss_backward_npu

-

618

-

l1_loss.out

-

l1_loss_out_npu

-

619

-

l1_loss

-

l1_loss_npu

-

620

-

l1_loss_backward.grad_input

-

l1_loss_backward_out_npu

-

621

-

l1_loss_backward

-

l1_loss_backward_npu

-

622

-

multilabel_margin_loss.out

-

multilabel_margin_loss_out_npu

-

623

-

multilabel_margin_loss

-

multilabel_margin_loss_npu

-

624

-

multilabel_margin_loss_forward.output

-

multilabel_margin_loss_forward_out_npu

-

625

-

multilabel_margin_loss_forward

-

multilabel_margin_loss_forward_npu

-

626

-

nll_loss.out

-

nll_loss_out_npu

-

627

-

nll_loss

-

nll_loss_npu

-

628

-

nll_loss_forward.output

-

nll_loss_forward_out_npu

-

629

-

nll_loss_forward

-

nll_loss_forward_npu

-

630

-

nll_loss_backward.grad_input

-

nll_loss_backward_out_npu

-

631

-

nll_loss_backward

-

nll_loss_backward_npu

-

632

-

nll_loss2d.out

-

nll_loss2d_out_npu

-

633

-

nll_loss2d

-

nll_loss2d_npu

-

634

-

nll_loss2d_forward.output

-

nll_loss2d_forward_out_npu

-

635

-

nll_loss2d_forward

-

nll_loss2d_forward_npu

-

636

-

nll_loss2d_backward.grad_input

-

nll_loss2d_backward_out_npu

-

637

-

nll_loss2d_backward

-

nll_loss2d_backward_npu

-

638

-

smooth_l1_loss.out

-

smooth_l1_loss_out_npu

-

639

-

smooth_l1_loss

-

smooth_l1_loss_npu

-

640

-

smooth_l1_loss_backward.grad_input

-

smooth_l1_loss_backward_out_npu

-

641

-

smooth_l1_loss_backward

-

smooth_l1_loss_backward_npu

-

642

-

soft_margin_loss.out

-

soft_margin_loss_out_npu

-

643

-

soft_margin_loss

-

soft_margin_loss_npu

-

644

-

soft_margin_loss_backward.grad_input

-

soft_margin_loss_backward_out_npu

-

645

-

soft_margin_loss_backward

-

soft_margin_loss_backward_npu

-

646

-

elu.out

-

elu_out_npu

-

647

-

elu

-

elu_npu

-

648

-

elu_backward.grad_input

-

elu_backward_out_npu

-

649

-

elu_backward

-

elu_backward_npu

-

650

-

elu_

-

elu_npu_

-

651

-

glu.out

-

glu_out_npu

-

652

-

glu

-

glu_npu

-

653

-

glu_backward.grad_input

-

glu_backward_out_npu

-

654

-

glu_backward

-

glu_backward_npu

-

655

-

hardsigmoid.out

-

hardsigmoid_out_npu

-

656

-

hardsigmoid

-

hardsigmoid_npu

-

657

-

hardsigmoid_

-

hardsigmoid_npu_

-

658

-

hardsigmoid_backward

-

hardsigmoid_backward_npu

-

659

-

hardtanh.out

-

hardtanh_out_npu

-

660

-

hardtanh

-

hardtanh_npu

-

661

-

hardtanh_backward.grad_input

-

hardtanh_backward_out_npu

-

662

-

hardtanh_backward

-

hardtanh_backward_npu

-

663

-

hardtanh_

-

hardtanh_npu_

-

664

-

leaky_relu.out

-

leaky_relu_out_npu

-

665

-

leaky_relu

-

leaky_relu_npu

-

666

-

leaky_relu_backward

-

leaky_relu_backward_npu

-

667

-

leaky_relu_

-

leaky_relu_npu_

-

668

-

log_sigmoid.out

-

log_sigmoid_out_npu

-

669

-

log_sigmoid

-

log_sigmoid_npu

-

670

-

log_sigmoid_forward.output

-

log_sigmoid_forward_out_npu

-

671

-

log_sigmoid_forward

-

log_sigmoid_forward_npu

-

672

-

log_sigmoid_backward.grad_input

-

log_sigmoid_backward_out_npu

-

673

-

log_sigmoid_backward

-

log_sigmoid_backward_npu

-

674

-

softplus.out

-

softplus_out_npu

-

675

-

softplus

-

softplus_npu

-

676

-

softplus_backward.grad_input

-

softplus_backward_out_npu

-

677

-

softplus_backward

-

softplus_backward_npu

-

678

-

softshrink.out

-

softshrink_out_npu

-

679

-

softshrink

-

softshrink_npu

-

680

-

softshrink_backward.grad_input

-

softshrink_backward_out_npu

-

681

-

softshrink_backward

-

softshrink_backward_npu

-

682

-

adaptive_avg_pool2d.out

-

adaptive_avg_pool2d_out_npu

-

683

-

adaptive_avg_pool2d

-

adaptive_avg_pool2d_npu

-

684

-

_adaptive_avg_pool2d

-

_adaptive_avg_pool2d_npu

-

685

-

_adaptive_avg_pool2d_backward

-

adaptive_avg_pool2d_backward_npu

-

686

-

adaptive_avg_pool3d.out

-

adaptive_avg_pool3d_out_npu

-

687

-

adaptive_avg_pool3d

-

adaptive_avg_pool3d_npu

-

688

-

adaptive_avg_pool3d_backward.grad_input

-

adaptive_avg_pool3d_backward_out_npu

-

689

-

adaptive_avg_pool3d_backward

-

adaptive_avg_pool3d_backward_npu

-

690

-

adaptive_max_pool2d.out

-

adaptive_max_pool2d_out_npu

-

691

-

adaptive_max_pool2d

-

adaptive_max_pool2d_npu

-

692

-

adaptive_max_pool2d_backward.grad_input

-

adaptive_max_pool2d_backward_out_npu

-

693

-

adaptive_max_pool2d_backward

-

adaptive_max_pool2d_backward_npu

-

694

-

avg_pool2d.out

-

avg_pool2d_out_npu

-

695

-

avg_pool2d

-

avg_pool2d_npu

-

696

-

avg_pool2d_backward.grad_input

-

avg_pool2d_backward_out_npu

-

697

-

avg_pool2d_backward

-

avg_pool2d_backward_npu

-

698

-

avg_pool3d.out

-

avg_pool3d_out_npu

-

699

-

avg_pool3d

-

avg_pool3d_npu

-

700

-

avg_pool3d_backward.grad_input

-

avg_pool3d_backward_out_npu

-

701

-

avg_pool3d_backward

-

avg_pool3d_backward_npu

-

702

-

max_pool2d_with_indices.out

-

max_pool2d_with_indices_out_npu

-

703

-

max_pool2d_with_indices

-

max_pool2d_with_indices_npu

-

704

-

max_pool2d_with_indices_backward.grad_input

-

max_pool2d_with_indices_backward_out_npu

-

705

-

max_pool2d_with_indices_backward

-

max_pool2d_with_indices_backward_npu

-

706

-

max_pool3d_with_indices.out

-

max_pool3d_with_indices_out_npu

-

707

-

max_pool3d_with_indices

-

max_pool3d_with_indices_npu

-

708

-

max_pool3d_with_indices_backward.grad_input

-

max_pool3d_with_indices_backward_out_npu

-

709

-

max_pool3d_with_indices_backward

-

max_pool3d_with_indices_backward_npu

-

710

-

reflection_pad2d.out

-

reflection_pad2d_out_npu

-

711

-

reflection_pad2d

-

reflection_pad2d_npu

-

712

-

replication_pad2d.out

-

replication_pad2d_out_npu

-

713

-

replication_pad2d

-

replication_pad2d_npu

-

714

-

upsample_linear1d.out

-

upsample_linear1d_out_npu

-

715

-

upsample_linear1d

-

upsample_linear1d_npu

-

716

-

upsample_linear1d_backward

-

upsample_linear1d_backward_npu

-

717

-

upsample_bilinear2d.out

-

upsample_bilinear2d_out_npu

-

718

-

upsample_bilinear2d

-

upsample_bilinear2d_npu

-

719

-

upsample_bilinear2d_backward.grad_input

-

upsample_bilinear2d_backward_out_npu

-

720

-

upsample_bilinear2d_backward

-

upsample_bilinear2d_backward_npu

-

721

-

upsample_bicubic2d.out

-

upsample_bicubic2d_out_npu

-

722

-

upsample_bicubic2d

-

upsample_bicubic2d_npu

-

723

-

upsample_bicubic2d_backward.grad_input

-

upsample_bicubic2d_backward_out_npu

-

724

-

upsample_bicubic2d_backward

-

upsample_bicubic2d_backward_npu

-

725

-

upsample_trilinear3d.out

-

upsample_trilinear3d_out_npu

-

726

-

upsample_trilinear3d

-

upsample_trilinear3d_npu

-

727

-

upsample_trilinear3d_backward.grad_input

-

upsample_trilinear3d_backward_out_npu

-

728

-

upsample_trilinear3d_backward

-

upsample_trilinear3d_backward_npu

-

729

-

upsample_nearest1d.out

-

upsample_nearest1d_out_npu

-

730

-

upsample_nearest1d

-

upsample_nearest1d_npu

-

731

-

upsample_nearest1d_backward.grad_input

-

upsample_nearest1d_backward_out_npu

-

732

-

upsample_nearest1d_backward

-

upsample_nearest1d_backward_npu

-

733

-

upsample_nearest2d.out

-

upsample_nearest2d_out_npu

-

734

-

upsample_nearest2d

-

upsample_nearest2d_npu

-

735

-

upsample_nearest2d_backward.grad_input

-

upsample_nearest2d_backward_out_npu

-

736

-

upsample_nearest2d_backward

-

upsample_nearest2d_backward_npu

-

737

-

upsample_nearest3d.out

-

upsample_nearest3d_out_npu

-

738

-

upsample_nearest3d

-

upsample_nearest3d_npu

-

739

-

upsample_nearest3d_backward.grad_input

-

upsample_nearest3d_backward_out_npu

-

740

-

upsample_nearest3d_backward

-

upsample_nearest3d_backward_npu

-

741

-

sigmoid_backward.grad_input

-

sigmoid_backward_out_npu

-

742

-

sigmoid_backward

-

sigmoid_backward_npu

-

743

-

tanh_backward.grad_input

-

tanh_backward_out_npu

-

744

-

tanh_backward

-

tanh_backward_npu

-

745

-

slow_conv_transpose2d.out

-

slow_conv_transpose2d_out_npu

-

746

-

slow_conv_transpose2d

-

slow_conv_transpose2d_npu

-

747

-

slow_conv_transpose2d_backward.grad_output

-

slow_conv_transpose2d_backward_out_npu

-

748

-

slow_conv_transpose2d_backward.output_mask

-

slow_conv_transpose2d_backward_npu

-

749

-

thnn_conv2d.out

-

thnn_conv2d_out_npu

-

750

-

thnn_conv2d

-

thnn_conv2d_npu

-

751

-

thnn_conv2d_forward.output

-

thnn_conv2d_forward_out_npu

-

752

-

thnn_conv2d_forward

-

thnn_conv2d_forward_npu

-

753

-

thnn_conv2d_backward.output_mask

-

thnn_conv2d_backward_npu

-

754

-

thnn_conv_depthwise2d.out

-

thnn_conv_depthwise2d_out_npu

-

755

-

thnn_conv_depthwise2d

-

thnn_conv_depthwise2d_npu

-

756

-

thnn_conv_depthwise2d_forward.out

-

thnn_conv_depthwise2d_forward_out_npu

-

757

-

thnn_conv_depthwise2d_forward

-

thnn_conv_depthwise2d_forward_npu

-

758

-

thnn_conv_depthwise2d_backward.grad_input

-

thnn_conv_depthwise2d_backward_out_npu

-

759

-

thnn_conv_depthwise2d_backward.output_mask

-

thnn_conv_depthwise2d_backward_npu

-

760

-

slow_conv_dilated2d

-

slow_conv_dilated2d_npu

-

761

-

slow_conv_dilated2d_backward

-

slow_conv_dilated2d_backward_npu

-

762

-

col2im.out

-

im2col_backward_out_npu

-

763

-

col2im

-

im2col_backward_npu

-

764

-

col2im_backward.grad_input

-

col2im_backward_out_npu

-

765

-

col2im_backward

-

col2im_backward_npu

-

766

-

im2col.out

-

im2col_out_npu

-

767

-

im2col

-

im2col_npu

-

768

-

im2col_backward.grad_input

-

im2col_backward_out_npu

-

769

-

im2col_backward

-

im2col_backward_npu

-

770

-

isfinite

-

isfinite_npu

-
+| 序号 | PyTorch 原生算子 | 昇腾适配算子 | +| ---- | ------------------------------------------- | --------------------------------------------- | +| 1 | dropout | dropout_npu | +| 2 | dropout_ | dropout_npu_ | +| 3 | abs | abs_npu | +| 4 | abs_ | abs_npu_ | +| 5 | abs.out | abs_out_npu | +| 6 | acos | acos_npu | +| 7 | acos_ | acos_npu_ | +| 8 | acos.out | acos_out_npu | +| 9 | adaptive_avg_pool1d | adaptive_avg_pool1d_npu | +| 10 | add.Tensor | add_npu | +| 11 | add_.Tensor | add_npu_ | +| 12 | add.out | add_out_npu | +| 13 | add.Scalar | add_npu | +| 14 | add_.Scalar | add_npu_ | +| 15 | addmv | addmv_npu | +| 16 | addmv_ | addmv_npu_ | +| 17 | addmv.out | addmv_out_npu | +| 18 | addr | addr_npu | +| 19 | addr_ | addr_npu_ | +| 20 | addr.out | addr_out_npu | +| 21 | affine_grid_generator | affine_grid_generator_npu | +| 22 | affine_grid_generator_backward | affine_grid_generator_backward_npu | +| 23 | all.dim | all_npu | +| 24 | all.out | all_out_npu | +| 25 | any.dim | any_npu | +| 26 | any.out | any_out_npu | +| 27 | arange | arange_npu | +| 28 | arange.start | arange_npu | +| 29 | arange.start_step | arange_npu | +| 30 | arange.out | arange_out_npu | +| 31 | arange.start_out | arange_out_npu | +| 32 | _dim_arange | _dim_arange_npu | +| 33 | argmax | argmax_npu | +| 34 | argmin | argmin_npu | +| 35 | as_strided | as_strided_npu | +| 36 | as_strided_ | as_strided_npu_ | +| 37 | asin | asin_npu | +| 38 | asin_ | asin_npu_ | +| 39 | asin.out | asin_out_npu | +| 40 | atan | atan_npu | +| 41 | atan_ | atan_npu_ | +| 42 | atan.out | atan_out_npu | +| 43 | baddbmm | baddbmm_npu | +| 44 | baddbmm_ | baddbmm_npu_ | +| 45 | baddbmm.out | baddbmm_out_npu | +| 46 | bartlett_window | bartlett_window_npu | +| 47 | bartlett_window.periodic | bartlett_window_npu | +| 48 | batch_norm | batch_norm_npu_ | +| 49 | _batch_norm_impl_index | _batch_norm_impl_index_npu | +| 50 | _batch_norm_impl_index_backward | _batch_norm_impl_index_backward_npu | +| 51 | bernoulli | bernoulli_npu | +| 52 | bernoulli_.Tensor | bernoulli_npu_ | +| 53 | bernoulli_.float | bernoulli_npu_ | +| 54 | binary_cross_entropy | binary_cross_entropy_npu | +| 55 | binary_cross_entropy.out | binary_cross_entropy_out_npu | +| 56 | binary_cross_entropy_backward | binary_cross_entropy_backward_npu | +| 57 | binary_cross_entropy_backward.grad_input | binary_cross_entropy_backward_out_npu | +| 58 | binary_cross_entropy_with_logits | binary_cross_entropy_with_logits_npu | +| 59 | binary_cross_entropy_with_logits_backward | binary_cross_entropy_with_logits_backward_npu | +| 60 | bitwise_not | bitwise_not_npu | +| 61 | bitwise_not_ | bitwise_not_npu_ | +| 62 | bitwise_not.out | bitwise_not_out_npu | +| 63 | logical_not | logical_not_npu | +| 64 | logical_not_ | logical_not_npu_ | +| 65 | logical_not.out | logical_not_out_npu | +| 66 | logical_and | logical_and_npu | +| 67 | logical_and_ | logical_and_npu_ | +| 68 | logical_and.out | logical_and_out_npu | +| 69 | logical_or | logical_or_npu | +| 70 | logical_or_ | logical_or_npu_ | +| 71 | logical_or.out | logical_or_out_npu | +| 72 | blackman_window | blackman_window_npu | +| 73 | blackman_window.periodic | blackman_window_npu | +| 74 | bmm | bmm_npu | +| 75 | bmm.out | bmm_out_npu | +| 76 | cat | cat_npu | +| 77 | cat.out | cat_out_npu | +| 78 | cat.names | cat_npu | +| 79 | cat.names_out | cat_out_npu | +| 80 | ceil | ceil_npu | +| 81 | ceil_ | ceil_npu_ | +| 82 | ceil.out | ceil_out_npu | +| 83 | clamp | clamp_npu | +| 84 | clamp_ | clamp_npu_ | +| 85 | clamp.out | clamp_out_npu | +| 86 | clamp_max | clamp_max_npu | +| 87 | clamp_max_ | clamp_max_npu_ | +| 88 | clamp_max.out | clamp_max_out_npu | +| 89 | clamp_min | clamp_min_npu | +| 90 | clamp_min_ | clamp_min_npu_ | +| 91 | clamp_min.out | clamp_min_out_npu | +| 92 | constant_pad_nd | constant_pad_nd_npu | +| 93 | contiguous | contiguous_npu | +| 94 | convolution | convolution_npu | +| 95 | _convolution | _convolution_npu | +| 96 | _convolution_nogroup | _convolution_nogroup_npu | +| 97 | conv2d | conv2d_npu_ | +| 98 | conv3d | _conv3d_npu | +| 99 | conv_tbc | conv_tbc_npu | +| 100 | conv_tbc_backward | conv_tbc_backward_npu | +| 101 | conv_transpose2d.input | conv_transpose2d_npu_ | +| 102 | copy_ | copy_npu_ | +| 103 | cos | cos_npu | +| 104 | cos_ | cos_npu_ | +| 105 | cos.out | cos_out_npu | +| 106 | cosh | cosh_npu | +| 107 | cosh_ | cosh_npu_ | +| 108 | cosh.out | cosh_out_npu | +| 109 | cummin | cummin_npu | +| 110 | cummin.out | cummin_out_npu | +| 111 | cummin.dimname | cummin_npu | +| 112 | cummin.dimname_out | cummin_out_npu | +| 113 | cumprod | cumprod_npu | +| 114 | cumprod.out | cumprod_out_npu | +| 115 | cumprod.dimname | cumprod_npu | +| 116 | cumprod.dimname_out | cumprod_out_npu | +| 117 | ctc_loss.IntList | ctc_loss_npu | +| 118 | ctc_loss.Tensor | ctc_loss_npu | +| 119 | _ctc_loss | ctc_loss_npu | +| 120 | _ctc_loss_backward | ctc_loss_backward_npu | +| 121 | fill_diagonal_ | fill_diagonal_npu_ | +| 122 | div.Tensor | div_npu | +| 123 | div_.Tensor | div_npu_ | +| 124 | div.out | div_out_npu | +| 125 | div.Scalar | div_npu | +| 126 | div_.Scalar | div_npu_ | +| 127 | dot | dot_npu | +| 128 | dot.out | dot_out_npu | +| 129 | embedding | embedding_npu | +| 130 | embedding_backward | embedding_backward_npu | +| 131 | embedding_dense_backward | embedding_dense_backward_npu | +| 132 | embedding_renorm_ | embedding_renorm_npu_ | +| 133 | _embedding_bag | _embedding_bag_npu | +| 134 | empty.memory_format | empty_npu | +| 135 | resize_ | resize_npu_ | +| 136 | empty_like | empty_like_npu | +| 137 | empty_strided | empty_strided_npu | +| 138 | erf | erf_npu | +| 139 | erf_ | erf_npu_ | +| 140 | erf.out | erf_out_npu | +| 141 | exp | exp_npu | +| 142 | exp_ | exp_npu_ | +| 143 | exp.out | exp_out_npu | +| 144 | expm1 | expm1_npu | +| 145 | expm1_ | expm1_npu_ | +| 146 | expm1.out | expm1_out_npu | +| 147 | eye | eye_npu | +| 148 | eye.m | eye_npu | +| 149 | eye.out | eye_out_npu | +| 150 | eye.m_out | eye_out_npu | +| 151 | fill_.Scalar | fill_npu_ | +| 152 | fill_.Tensor | fill_npu_ | +| 153 | floor | floor_npu | +| 154 | floor_ | floor_npu_ | +| 155 | floor.out | floor_out_npu | +| 156 | floor_divide | floor_divide_npu | +| 157 | floor_divide_.Tensor | floor_divide_npu_ | +| 158 | floor_divide.out | floor_divide_out_npu | +| 159 | floor_divide.Scalar | floor_divide_npu | +| 160 | floor_divide_.Scalar | floor_divide_npu_ | +| 161 | frac | frac_npu | +| 162 | frac_ | frac_npu_ | +| 163 | frac.out | frac_out_npu | +| 164 | full.names | full_npu | +| 165 | full | full_npu | +| 166 | full.out | full_out_npu | +| 167 | grid_sampler | grid_sampler_npu | +| 168 | grid_sampler_3d | grid_sampler_3d_npu | +| 169 | grid_sampler_3d_backward | grid_sampler_3d_backward_npu | +| 170 | hann_window | hann_window_npu | +| 171 | hann_window.periodic | hann_window_npu | +| 172 | hamming_window | hamming_window_npu | +| 173 | hamming_window.periodic | hamming_window_npu | +| 174 | hamming_window.periodic_alpha | hamming_window_npu | +| 175 | hamming_window.periodic_alpha_beta | hamming_window_npu | +| 176 | ger | ger_npu | +| 177 | ger.out | ger_out_npu | +| 178 | index.Tensor | index_npu | +| 179 | index_put_ | index_put_npu_ | +| 180 | index_put | index_put_npu | +| 181 | _index_put_impl_ | _index_put_impl_npu_ | +| 182 | inverse | inverse_npu | +| 183 | inverse.out | inverse_out_npu | +| 184 | isclose | isclose_npu | +| 185 | isnan | isnan_npu | +| 186 | is_nonzero | is_nonzero_npu | +| 187 | kl_div | kl_div_npu | +| 188 | kl_div_backward | kl_div_backward_npu | +| 189 | kthvalue | kthvalue_npu | +| 190 | kthvalue.values | kthvalue_out_npu | +| 191 | kthvalue.dimname | kthvalue_npu | +| 192 | kthvalue.dimname_out | kthvalue_out_npu | +| 193 | native_layer_norm | layer_norm_npu | +| 194 | native_layer_norm_backward | layer_norm_backward_npu | +| 195 | linspace | linspace_npu | +| 196 | linspace.out | linspace_out_npu | +| 197 | log | log_npu | +| 198 | log_ | log_npu_ | +| 199 | log.out | log_out_npu | +| 200 | log10 | log10_npu | +| 201 | log10_ | log10_npu_ | +| 202 | log10.out | log10_out_npu | +| 203 | log1p | log1p_npu | +| 204 | log1p_ | log1p_npu_ | +| 205 | log1p.out | log1p_out_npu | +| 206 | log2 | log2_npu | +| 207 | log2_ | log2_npu_ | +| 208 | log2.out | log2_out_npu | +| 209 | logspace | logspace_npu | +| 210 | logspace.out | logspace_out_npu | +| 211 | log_softmax.int | log_softmax_npu | +| 212 | log_softmax.Dimname | log_softmax_npu | +| 213 | _log_softmax | _log_softmax_npu | +| 214 | _log_softmax_backward_data | _log_softmax_backward_npu | +| 215 | logsumexp | logsumexp_npu | +| 216 | logsumexp.out | logsumexp_out_npu | +| 217 | logsumexp.names | logsumexp_npu | +| 218 | logsumexp.names_out | logsumexp_out_npu | +| 219 | matmul | matmul_npu | +| 220 | matmul.out | matmul_out_npu | +| 221 | matrix_power | matrix_power_npu | +| 222 | max.dim | max_npu | +| 223 | max.dim_max | max_out_npu | +| 224 | max_values | max_npu | +| 225 | max.names_dim | max_npu | +| 226 | max.names_dim_max | max_out_npu | +| 227 | max_values.names | max_npu | +| 228 | max_pool2d | max_pool2d_npu | +| 229 | quantized_max_pool2d | quantized_max_pool2d_npu | +| 230 | mean | mean_npu | +| 231 | mean.dim | mean_npu | +| 232 | mean.out | mean_out_npu | +| 233 | mean.names_dim | mean_npu | +| 234 | mean.names_out | mean_out_npu | +| 235 | median.dim | median_npu | +| 236 | median.dim_values | median_out_npu | +| 237 | median.names_dim | median_npu | +| 238 | median.names_dim_values | median_out_npu | +| 239 | min.dim | min_npu | +| 240 | min.dim_min | min_out_npu | +| 241 | min_values | min_npu | +| 242 | min.names_dim | min_npu | +| 243 | min.names_dim_min | min_out_npu | +| 244 | min_values.names | min_npu | +| 245 | mm | mm_npu | +| 246 | mm.out | mm_out_npu | +| 247 | mode | mode_npu | +| 248 | mode.values | mode_out_npu | +| 249 | mul.Tensor | mul_npu | +| 250 | mul_.Tensor | mul_npu_ | +| 251 | mul.out | mul_out_npu | +| 252 | mul.Scalar | mul_npu | +| 253 | mul_.Scalar | mul_npu_ | +| 254 | mv | mv_npu | +| 255 | mv.out | mv_out_npu | +| 256 | narrow_copy | narrow_copy_npu | +| 257 | native_batch_norm | batch_norm_npu | +| 258 | native_batch_norm_backward | batch_norm_backward_npu | +| 259 | _nnpack_spatial_convolution | _nnpack_spatial_convolution_npu | +| 260 | ones.names | ones_npu | +| 261 | ones | ones_npu | +| 262 | ones.out | ones_out_npu | +| 263 | ones_like | ones_like_npu | +| 264 | cdist | cdist_npu | +| 265 | _cdist_forward | _cdist_forward_npu | +| 266 | _cdist_backward | _cdist_backward_npu | +| 267 | pdist | pdist_npu | +| 268 | _pdist_forward | _pdist_forward_npu | +| 269 | randperm | randperm_npu | +| 270 | randperm.generator | randperm_npu | +| 271 | randperm.out | randperm_out_npu | +| 272 | randperm.generator_out | randperm_out_npu | +| 273 | range.step | range_npu | +| 274 | range | range_npu | +| 275 | range.out | range_out_npu | +| 276 | reciprocal | reciprocal_npu | +| 277 | reciprocal_ | reciprocal_npu_ | +| 278 | reciprocal.out | reciprocal_out_npu | +| 279 | neg | neg_npu | +| 280 | neg_ | neg_npu_ | +| 281 | neg.out | neg_out_npu | +| 282 | repeat | repeat_npu | +| 283 | repeat_interleave.self_int | repeat_interleave_npu | +| 284 | round | round_npu | +| 285 | round_ | round_npu_ | +| 286 | round.out | round_out_npu | +| 287 | relu | relu_npu | +| 288 | relu_ | relu_npu_ | +| 289 | prelu | prelu_npu | +| 290 | prelu_backward | prelu_backward_npu | +| 291 | gelu | gelu_npu | +| 292 | gelu_backward | gelu_backward_npu | +| 293 | hardshrink | hardshrink_npu | +| 294 | hardshrink_backward | hardshrink_backward_npu | +| 295 | rsqrt | rsqrt_npu | +| 296 | rsqrt_ | rsqrt_npu_ | +| 297 | rsqrt.out | rsqrt_out_npu | +| 298 | selu | selu_npu | +| 299 | selu_ | selu_npu_ | +| 300 | celu | celu_npu | +| 301 | celu_ | celu_npu_ | +| 302 | sigmoid | sigmoid_npu | +| 303 | sigmoid_ | sigmoid_npu_ | +| 304 | sigmoid.out | sigmoid_out_npu | +| 305 | sin | sin_npu | +| 306 | sin_ | sin_npu_ | +| 307 | sin.out | sin_out_npu | +| 308 | sinh | sinh_npu | +| 309 | sinh_ | sinh_npu_ | +| 310 | sinh.out | sinh_out_npu | +| 311 | slogdet | slogdet_npu | +| 312 | softmax.int | softmax_npu | +| 313 | softmax.Dimname | softmax_npu | +| 314 | _softmax | _softmax_npu | +| 315 | _softmax_backward_data | _softmax_backward_npu | +| 316 | stack | stack_npu | +| 317 | stack.out | stack_out_npu | +| 318 | sum | sum_npu | +| 319 | sum.dim_IntList | sum_npu | +| 320 | sum.dim_DimnameList | sum_npu | +| 321 | sum.IntList_out | sum_out_npu | +| 322 | sum.DimnameList_out | sum_out_npu | +| 323 | sqrt | sqrt_npu | +| 324 | sqrt_ | sqrt_npu_ | +| 325 | sqrt.out | sqrt_out_npu | +| 326 | std | std_npu | +| 327 | std.dim | std_dim_npu | +| 328 | std_mean | std_mean_npu | +| 329 | std_mean.dim | std_mean_dim_npu | +| 330 | std_mean.names_dim | std_mean_names_npu | +| 331 | std.out | std_out_npu | +| 332 | std.names_dim | std_names_npu | +| 333 | std.names_out | std_out_npu | +| 334 | prod | prod_npu | +| 335 | prod.dim_int | prod_npu | +| 336 | prod.int_out | prod_out_npu | +| 337 | prod.dim_Dimname | prod_npu | +| 338 | prod.Dimname_out | prod_out_npu | +| 339 | tan | tan_npu | +| 340 | tan_ | tan_npu_ | +| 341 | tan.out | tan_out_npu | +| 342 | tanh | tanh_npu | +| 343 | tanh_ | tanh_npu_ | +| 344 | tanh.out | tanh_out_npu | +| 345 | threshold | threshold_npu | +| 346 | threshold_ | threshold_npu_ | +| 347 | threshold.out | threshold_out_npu | +| 348 | threshold_backward | threshold_backward_npu | +| 349 | one_hot | one_hot_npu1 | +| 350 | flip | flip_npu | +| 351 | roll | roll_npu | +| 352 | true_divide.Tensor | true_divide_npu | +| 353 | true_divide_.Tensor | true_divide_npu_ | +| 354 | true_divide.out | true_divide_out_npu | +| 355 | true_divide.Scalar | true_divide_npu | +| 356 | true_divide_.Scalar | true_divide_npu_ | +| 357 | trunc | trunc_npu | +| 358 | trunc_ | trunc_npu_ | +| 359 | trunc.out | trunc_out_npu | +| 360 | _unique2 | _unique2_npu | +| 361 | var | var_npu | +| 362 | var.dim | var_npu | +| 363 | var.out | var_out_npu | +| 364 | var.names_dim | var_npu | +| 365 | var.names_out | var_out_npu | +| 366 | var_mean | var_mean_npu | +| 367 | var_mean.dim | var_mean_npu | +| 368 | var_mean.names_dim | var_mean_npu | +| 369 | where.self | where_npu | +| 370 | where | where_npu | +| 371 | _s_where | _s_where_npu | +| 372 | zeros.names | zeros_npu | +| 373 | zeros | zeros_npu | +| 374 | zeros.out | zeros_out_npu | +| 375 | zeros_like | zeros_like_npu | +| 376 | norm.ScalarOpt_dtype | norm_npu | +| 377 | norm.Scalar | norm_npu | +| 378 | norm.ScalarOpt_dim_dtype | norm_npu | +| 379 | norm.ScalarOpt_dim | norm_npu | +| 380 | norm.dtype_out | norm_out_npu | +| 381 | norm.out | norm_out_npu | +| 382 | clone | clone_npu | +| 383 | resize_as_ | resize_as_npu_ | +| 384 | pow.Tensor_Scalar_out | pow_out_npu | +| 385 | pow.Tensor_Scalar | pow_npu | +| 386 | zero_ | zero_npu_ | +| 387 | sub.out | sub_out_npu | +| 388 | sub.Tensor | sub_npu | +| 389 | sub_.Tensor | sub_npu_ | +| 390 | sub.Scalar | sub_npu | +| 391 | sub_.Scalar | sub_npu_ | +| 392 | rsub.Tensor | rsub_npu | +| 393 | rsub.Scalar | rsub_npu | +| 394 | addmm.out | addmm_out_npu | +| 395 | addmm | addmm_npu | +| 396 | addmm_ | addmm_npu_ | +| 397 | quantize_per_tensor | quantize_per_tensor_npu | +| 398 | quantize_per_channel | quantize_per_channel_npu | +| 399 | to.dtype_layout | to_npu | +| 400 | to.device | to_device_npu | +| 401 | to.dtype | to_dtype_npu | +| 402 | to.other | to_other_npu | +| 403 | _local_scalar_dense | _local_scalar_dense_npu | +| 404 | lstm.input | lstm_npu | +| 405 | lstm.data | lstm_npu | +| 406 | gru.input | gru_npu_ | +| 407 | _pack_padded_sequence | _pack_padded_sequence_npu | +| 408 | _pad_packed_sequence | _pad_packed_sequence_npu | +| 409 | set_.source_Storage | set_npu_ | +| 410 | set_.source_Storage_storage_offset | set_npu_ | +| 411 | set_.source_Tensor | set_npu_ | +| 412 | set_ | set_npu_ | +| 413 | masked_fill_.Scalar | masked_fill_npu_ | +| 414 | masked_fill_.Tensor | masked_fill_npu_ | +| 415 | masked_scatter_ | masked_scatter_npu_ | +| 416 | view | view_npu | +| 417 | put_ | put_npu_ | +| 418 | index_add_ | index_add_npu_ | +| 419 | index_add | index_add_npu | +| 420 | index_add.dimname | index_add_npu | +| 421 | index_fill_.int_Scalar | index_fill_npu_ | +| 422 | index_fill.int_Scalar | index_fill_npu | +| 423 | index_fill_.int_Tensor | index_fill_npu_ | +| 424 | index_fill.int_Tensor | index_fill_npu | +| 425 | scatter_.src | scatter_npu_ | +| 426 | scatter_.value | scatter_npu_ | +| 427 | scatter_add_ | scatter_add_npu_ | +| 428 | scatter_add | scatter_add_npu | +| 429 | scatter_add.dimname | scatter_add_npu | +| 430 | lt_.Scalar | lt_npu_ | +| 431 | lt_.Tensor | lt_npu_ | +| 432 | gt_.Scalar | gt_npu_ | +| 433 | gt_.Tensor | gt_npu_ | +| 434 | le_.Scalar | le_npu_ | +| 435 | le_.Tensor | le_npu_ | +| 436 | ge_.Scalar | ge_npu_ | +| 437 | ge_.Tensor | ge_npu_ | +| 438 | eq_.Scalar | eq_npu_ | +| 439 | eq_.Tensor | eq_npu_ | +| 440 | ne_.Scalar | ne_npu_ | +| 441 | ne_.Tensor | ne_npu_ | +| 442 | bitwise_and.Tensor_out | bitwise_and_out_npu | +| 443 | bitwise_and.Scalar_out | bitwise_and_out_npu | +| 444 | bitwise_and.Scalar | bitwise_and_npu | +| 445 | bitwise_and.Tensor | bitwise_and_npu | +| 446 | bitwise_and_.Scalar | bitwise_and_npu_ | +| 447 | bitwise_and_.Tensor | bitwise_and_npu_ | +| 448 | __and__.Scalar | __and___npu | +| 449 | __and__.Tensor | __and___npu | +| 450 | bitwise_or.Tensor_out | bitwise_or_out_npu | +| 451 | bitwise_or.Scalar_out | bitwise_or_out_npu | +| 452 | bitwise_or.Scalar | bitwise_or_npu | +| 453 | bitwise_or.Tensor | bitwise_or_npu | +| 454 | bitwise_or_.Scalar | bitwise_or_npu_ | +| 455 | bitwise_or_.Tensor | bitwise_or_npu_ | +| 456 | __or__.Scalar | __or___npu | +| 457 | __or__.Tensor | __or___npu | +| 458 | __ior__.Scalar | __ior___npu | +| 459 | __ior__.Tensor | __ior___npu | +| 460 | bitwise_xor.Tensor_out | bitwise_xor_out_npu | +| 461 | bitwise_xor.Scalar_out | bitwise_xor_out_npu | +| 462 | bitwise_xor.Scalar | bitwise_xor_npu | +| 463 | bitwise_xor.Tensor | bitwise_xor_npu | +| 464 | bitwise_xor_.Scalar | bitwise_xor_npu_ | +| 465 | bitwise_xor_.Tensor | bitwise_xor_npu_ | +| 466 | __xor__.Scalar | __xor___npu | +| 467 | __xor__.Tensor | __xor___npu | +| 468 | atan2_ | atan2_npu_ | +| 469 | tril_ | tril_npu_ | +| 470 | triu_ | triu_npu_ | +| 471 | renorm_ | renorm_npu_ | +| 472 | pow_.Scalar | pow_npu_ | +| 473 | pow_.Tensor | pow_npu_ | +| 474 | lerp_.Scalar | lerp_npu_ | +| 475 | lerp_.Tensor | lerp_npu_ | +| 476 | fmod_.Scalar | fmod_npu_ | +| 477 | fmod_.Tensor | fmod_npu_ | +| 478 | remainder_.Scalar | remainder_npu_ | +| 479 | remainder_.Tensor | remainder_npu_ | +| 480 | addbmm_ | addbmm_npu_ | +| 481 | addbmm.out | addbmm_out_npu | +| 482 | addbmm | addbmm_npu | +| 483 | addcdiv_ | addcdiv_npu_ | +| 484 | random_.from | random_npu_ | +| 485 | random_.to | random_npu_ | +| 486 | random_ | random_npu_ | +| 487 | uniform_ | uniform_npu_ | +| 488 | diag.out | diag_out_npu | +| 489 | diag | diag_npu | +| 490 | cross.out | cross_out_npu | +| 491 | cross | cross_npu | +| 492 | triu.out | triu_out_npu | +| 493 | triu | triu_npu | +| 494 | tril.out | tril_out_npu | +| 495 | tril | tril_npu | +| 496 | ne.Scalar_out | ne_out_npu | +| 497 | ne.Scalar | ne_npu | +| 498 | ne.Tensor_out | ne_out_npu | +| 499 | ne.Tensor | ne_npu | +| 500 | eq.Scalar_out | eq_out_npu | +| 501 | eq.Scalar | eq_npu | +| 502 | eq.Tensor_out | eq_out_npu | +| 503 | eq.Tensor | eq_npu | +| 504 | ge.Scalar_out | ge_out_npu | +| 505 | ge.Scalar | ge_npu | +| 506 | ge.Tensor_out | ge_out_npu | +| 507 | ge.Tensor | ge_npu | +| 508 | le.Scalar_out | le_out_npu | +| 509 | le.Scalar | le_npu | +| 510 | le.Tensor_out | le_out_npu | +| 511 | le.Tensor | le_npu | +| 512 | gt.Scalar_out | gt_out_npu | +| 513 | gt.Scalar | gt_npu | +| 514 | gt.Tensor_out | gt_out_npu | +| 515 | gt.Tensor | gt_npu | +| 516 | lt.Scalar_out | lt_out_npu | +| 517 | lt.Scalar | lt_npu | +| 518 | lt.Tensor_out | lt_out_npu | +| 519 | lt.Tensor | lt_npu | +| 520 | take.out | take_out_npu | +| 521 | take | take_npu | +| 522 | index_select.out | index_select_out_npu | +| 523 | index_select | index_select_npu | +| 524 | index_select.dimname_out | index_select_out_npu | +| 525 | index_select.dimname | index_select_npu | +| 526 | masked_select.out | masked_select_out_npu | +| 527 | masked_select | masked_select_npu | +| 528 | nonzero.out | nonzero_out_npu | +| 529 | nonzero | nonzero_npu | +| 530 | gather.out | gather_out_npu | +| 531 | gather | gather_npu | +| 532 | gather.dimname_out | gather_out_npu | +| 533 | gather.dimname | gather_npu | +| 534 | addcmul.out | addcmul_out_npu | +| 535 | addcmul | addcmul_npu | +| 536 | addcmul_ | addcmul_npu_ | +| 537 | addcdiv.out | addcdiv_out_npu | +| 538 | addcdiv | addcdiv_npu | +| 539 | qr.Q | qr_out_npu | +| 540 | qr | qr_npu | +| 541 | multinomial.out | multinomial_out_npu | +| 542 | multinomial | multinomial_npu | +| 543 | erfinv | erfinv_npu | +| 544 | erfinv_ | erfinv_npu_ | +| 545 | erfinv.out | erfinv_out_npu | +| 546 | sign | sign_npu | +| 547 | sign_ | sign_npu_ | +| 548 | sign.out | sign_out_npu | +| 549 | atan2.out | atan2_out_npu | +| 550 | atan2 | atan2_npu | +| 551 | lerp.Scalar_out | lerp_out_npu | +| 552 | lerp.Tensor_out | lerp_out_npu | +| 553 | lerp.Scalar | lerp_npu | +| 554 | lerp.Tensor | lerp_npu | +| 555 | histc.out | histc_out_npu | +| 556 | histc | histc_npu | +| 557 | fmod.Scalar_out | fmod_out_npu | +| 558 | fmod.Scalar | fmod_npu | +| 559 | fmod.Tensor_out | fmod_out_npu | +| 560 | fmod.Tensor | fmod_npu | +| 561 | remainder.Scalar_out | remainder_out_npu | +| 562 | remainder.Scalar | remainder_npu | +| 563 | remainder.Tensor_out | remainder_out_npu | +| 564 | remainder.Tensor | remainder_npu | +| 565 | min.out | min_out_npu | +| 566 | min.other | min_npu | +| 567 | min | min_npu | +| 568 | max.out | max_out_npu | +| 569 | max.other | max_npu | +| 570 | max | max_npu | +| 571 | median | median_npu | +| 572 | sort.values | sort_out_npu | +| 573 | sort | sort_npu | +| 574 | sort.dimname_values | sort_out_npu | +| 575 | sort.dimname | sort_npu | +| 576 | argsort | argsort_npu | +| 577 | argsort.dimname | argsort_npu | +| 578 | topk.values | topk_out_npu | +| 579 | topk | topk_npu | +| 580 | all | all_npu | +| 581 | any | any_npu | +| 582 | renorm.out | renorm_out_npu | +| 583 | renorm | renorm_npu | +| 584 | unfold | unfold | +| 585 | equal | equal_npu | +| 586 | pow.Tensor_Tensor_out | pow_out_npu | +| 587 | pow.Tensor_Tensor | pow_npu | +| 588 | pow.Scalar_out | pow_out_npu | +| 589 | pow.Scalar | pow_npu | +| 590 | normal_ | normal_npu_ | +| 591 | normal.Tensor_float_out | normal_out_npu | +| 592 | normal.Tensor_float | normal_npu | +| 593 | normal.float_Tensor_out | normal_out_npu | +| 594 | normal.float_Tensor | normal_npu | +| 595 | normal.Tensor_Tensor_out | normal_out_npu | +| 596 | normal.Tensor_Tensor | normal_npu | +| 597 | normal.float_float | normal_npu | +| 598 | normal.float_float_out | normal_out_npu | +| 599 | _addr | _addr_npu | +| 600 | _addr_ | _addr_npu_ | +| 601 | _addr.out | _addr_out_npu | +| 602 | _cumsum | _cumsum_npu | +| 603 | _cumsum.out | _cumsum_out_npu | +| 604 | _cumprod | _cumprod_npu | +| 605 | _cumprod.out | _cumprod_out_npu | +| 606 | _var | _var_npu | +| 607 | _amp_non_finite_check_and_unscale_ | _amp_non_finite_check_and_unscale_npu_ | +| 608 | _cat | _cat_npu | +| 609 | _cat.out | _cat_out_npu | +| 610 | _max | _max_npu | +| 611 | _max.max | _max_out_npu | +| 612 | _min | _min_npu | +| 613 | _min.min | _min_out_npu | +| 614 | mse_loss.out | mse_loss_out_npu | +| 615 | mse_loss | mse_loss_npu | +| 616 | mse_loss_backward.grad_input | mse_loss_backward_out_npu | +| 617 | mse_loss_backward | mse_loss_backward_npu | +| 618 | l1_loss.out | l1_loss_out_npu | +| 619 | l1_loss | l1_loss_npu | +| 620 | l1_loss_backward.grad_input | l1_loss_backward_out_npu | +| 621 | l1_loss_backward | l1_loss_backward_npu | +| 622 | multilabel_margin_loss.out | multilabel_margin_loss_out_npu | +| 623 | multilabel_margin_loss | multilabel_margin_loss_npu | +| 624 | multilabel_margin_loss_forward.output | multilabel_margin_loss_forward_out_npu | +| 625 | multilabel_margin_loss_forward | multilabel_margin_loss_forward_npu | +| 626 | nll_loss.out | nll_loss_out_npu | +| 627 | nll_loss | nll_loss_npu | +| 628 | nll_loss_forward.output | nll_loss_forward_out_npu | +| 629 | nll_loss_forward | nll_loss_forward_npu | +| 630 | nll_loss_backward.grad_input | nll_loss_backward_out_npu | +| 631 | nll_loss_backward | nll_loss_backward_npu | +| 632 | nll_loss2d.out | nll_loss2d_out_npu | +| 633 | nll_loss2d | nll_loss2d_npu | +| 634 | nll_loss2d_forward.output | nll_loss2d_forward_out_npu | +| 635 | nll_loss2d_forward | nll_loss2d_forward_npu | +| 636 | nll_loss2d_backward.grad_input | nll_loss2d_backward_out_npu | +| 637 | nll_loss2d_backward | nll_loss2d_backward_npu | +| 638 | smooth_l1_loss.out | smooth_l1_loss_out_npu | +| 639 | smooth_l1_loss | smooth_l1_loss_npu | +| 640 | smooth_l1_loss_backward.grad_input | smooth_l1_loss_backward_out_npu | +| 641 | smooth_l1_loss_backward | smooth_l1_loss_backward_npu | +| 642 | soft_margin_loss.out | soft_margin_loss_out_npu | +| 643 | soft_margin_loss | soft_margin_loss_npu | +| 644 | soft_margin_loss_backward.grad_input | soft_margin_loss_backward_out_npu | +| 645 | soft_margin_loss_backward | soft_margin_loss_backward_npu | +| 646 | elu.out | elu_out_npu | +| 647 | elu | elu_npu | +| 648 | elu_backward.grad_input | elu_backward_out_npu | +| 649 | elu_backward | elu_backward_npu | +| 650 | elu_ | elu_npu_ | +| 651 | glu.out | glu_out_npu | +| 652 | glu | glu_npu | +| 653 | glu_backward.grad_input | glu_backward_out_npu | +| 654 | glu_backward | glu_backward_npu | +| 655 | hardsigmoid.out | hardsigmoid_out_npu | +| 656 | hardsigmoid | hardsigmoid_npu | +| 657 | hardsigmoid_ | hardsigmoid_npu_ | +| 658 | hardsigmoid_backward | hardsigmoid_backward_npu | +| 659 | hardtanh.out | hardtanh_out_npu | +| 660 | hardtanh | hardtanh_npu | +| 661 | hardtanh_backward.grad_input | hardtanh_backward_out_npu | +| 662 | hardtanh_backward | hardtanh_backward_npu | +| 663 | hardtanh_ | hardtanh_npu_ | +| 664 | leaky_relu.out | leaky_relu_out_npu | +| 665 | leaky_relu | leaky_relu_npu | +| 666 | leaky_relu_backward | leaky_relu_backward_npu | +| 667 | leaky_relu_ | leaky_relu_npu_ | +| 668 | log_sigmoid.out | log_sigmoid_out_npu | +| 669 | log_sigmoid | log_sigmoid_npu | +| 670 | log_sigmoid_forward.output | log_sigmoid_forward_out_npu | +| 671 | log_sigmoid_forward | log_sigmoid_forward_npu | +| 672 | log_sigmoid_backward.grad_input | log_sigmoid_backward_out_npu | +| 673 | log_sigmoid_backward | log_sigmoid_backward_npu | +| 674 | softplus.out | softplus_out_npu | +| 675 | softplus | softplus_npu | +| 676 | softplus_backward.grad_input | softplus_backward_out_npu | +| 677 | softplus_backward | softplus_backward_npu | +| 678 | softshrink.out | softshrink_out_npu | +| 679 | softshrink | softshrink_npu | +| 680 | softshrink_backward.grad_input | softshrink_backward_out_npu | +| 681 | softshrink_backward | softshrink_backward_npu | +| 682 | adaptive_avg_pool2d.out | adaptive_avg_pool2d_out_npu | +| 683 | adaptive_avg_pool2d | adaptive_avg_pool2d_npu | +| 684 | _adaptive_avg_pool2d | _adaptive_avg_pool2d_npu | +| 685 | _adaptive_avg_pool2d_backward | adaptive_avg_pool2d_backward_npu | +| 686 | adaptive_avg_pool3d.out | adaptive_avg_pool3d_out_npu | +| 687 | adaptive_avg_pool3d | adaptive_avg_pool3d_npu | +| 688 | adaptive_avg_pool3d_backward.grad_input | adaptive_avg_pool3d_backward_out_npu | +| 689 | adaptive_avg_pool3d_backward | adaptive_avg_pool3d_backward_npu | +| 690 | adaptive_max_pool2d.out | adaptive_max_pool2d_out_npu | +| 691 | adaptive_max_pool2d | adaptive_max_pool2d_npu | +| 692 | adaptive_max_pool2d_backward.grad_input | adaptive_max_pool2d_backward_out_npu | +| 693 | adaptive_max_pool2d_backward | adaptive_max_pool2d_backward_npu | +| 694 | avg_pool2d.out | avg_pool2d_out_npu | +| 695 | avg_pool2d | avg_pool2d_npu | +| 696 | avg_pool2d_backward.grad_input | avg_pool2d_backward_out_npu | +| 697 | avg_pool2d_backward | avg_pool2d_backward_npu | +| 698 | avg_pool3d.out | avg_pool3d_out_npu | +| 699 | avg_pool3d | avg_pool3d_npu | +| 700 | avg_pool3d_backward.grad_input | avg_pool3d_backward_out_npu | +| 701 | avg_pool3d_backward | avg_pool3d_backward_npu | +| 702 | max_pool2d_with_indices.out | max_pool2d_with_indices_out_npu | +| 703 | max_pool2d_with_indices | max_pool2d_with_indices_npu | +| 704 | max_pool2d_with_indices_backward.grad_input | max_pool2d_with_indices_backward_out_npu | +| 705 | max_pool2d_with_indices_backward | max_pool2d_with_indices_backward_npu | +| 706 | max_pool3d_with_indices.out | max_pool3d_with_indices_out_npu | +| 707 | max_pool3d_with_indices | max_pool3d_with_indices_npu | +| 708 | max_pool3d_with_indices_backward.grad_input | max_pool3d_with_indices_backward_out_npu | +| 709 | max_pool3d_with_indices_backward | max_pool3d_with_indices_backward_npu | +| 710 | reflection_pad2d.out | reflection_pad2d_out_npu | +| 711 | reflection_pad2d | reflection_pad2d_npu | +| 712 | replication_pad2d.out | replication_pad2d_out_npu | +| 713 | replication_pad2d | replication_pad2d_npu | +| 714 | upsample_linear1d.out | upsample_linear1d_out_npu | +| 715 | upsample_linear1d | upsample_linear1d_npu | +| 716 | upsample_linear1d_backward | upsample_linear1d_backward_npu | +| 717 | upsample_bilinear2d.out | upsample_bilinear2d_out_npu | +| 718 | upsample_bilinear2d | upsample_bilinear2d_npu | +| 719 | upsample_bilinear2d_backward.grad_input | upsample_bilinear2d_backward_out_npu | +| 720 | upsample_bilinear2d_backward | upsample_bilinear2d_backward_npu | +| 721 | upsample_bicubic2d.out | upsample_bicubic2d_out_npu | +| 722 | upsample_bicubic2d | upsample_bicubic2d_npu | +| 723 | upsample_bicubic2d_backward.grad_input | upsample_bicubic2d_backward_out_npu | +| 724 | upsample_bicubic2d_backward | upsample_bicubic2d_backward_npu | +| 725 | upsample_trilinear3d.out | upsample_trilinear3d_out_npu | +| 726 | upsample_trilinear3d | upsample_trilinear3d_npu | +| 727 | upsample_trilinear3d_backward.grad_input | upsample_trilinear3d_backward_out_npu | +| 728 | upsample_trilinear3d_backward | upsample_trilinear3d_backward_npu | +| 729 | upsample_nearest1d.out | upsample_nearest1d_out_npu | +| 730 | upsample_nearest1d | upsample_nearest1d_npu | +| 731 | upsample_nearest1d_backward.grad_input | upsample_nearest1d_backward_out_npu | +| 732 | upsample_nearest1d_backward | upsample_nearest1d_backward_npu | +| 733 | upsample_nearest2d.out | upsample_nearest2d_out_npu | +| 734 | upsample_nearest2d | upsample_nearest2d_npu | +| 735 | upsample_nearest2d_backward.grad_input | upsample_nearest2d_backward_out_npu | +| 736 | upsample_nearest2d_backward | upsample_nearest2d_backward_npu | +| 737 | upsample_nearest3d.out | upsample_nearest3d_out_npu | +| 738 | upsample_nearest3d | upsample_nearest3d_npu | +| 739 | upsample_nearest3d_backward.grad_input | upsample_nearest3d_backward_out_npu | +| 740 | upsample_nearest3d_backward | upsample_nearest3d_backward_npu | +| 741 | sigmoid_backward.grad_input | sigmoid_backward_out_npu | +| 742 | sigmoid_backward | sigmoid_backward_npu | +| 743 | tanh_backward.grad_input | tanh_backward_out_npu | +| 744 | tanh_backward | tanh_backward_npu | +| 745 | slow_conv_transpose2d.out | slow_conv_transpose2d_out_npu | +| 746 | slow_conv_transpose2d | slow_conv_transpose2d_npu | +| 747 | slow_conv_transpose2d_backward.grad_output | slow_conv_transpose2d_backward_out_npu | +| 748 | slow_conv_transpose2d_backward.output_mask | slow_conv_transpose2d_backward_npu | +| 749 | thnn_conv2d.out | thnn_conv2d_out_npu | +| 750 | thnn_conv2d | thnn_conv2d_npu | +| 751 | thnn_conv2d_forward.output | thnn_conv2d_forward_out_npu | +| 752 | thnn_conv2d_forward | thnn_conv2d_forward_npu | +| 753 | thnn_conv2d_backward.output_mask | thnn_conv2d_backward_npu | +| 754 | thnn_conv_depthwise2d.out | thnn_conv_depthwise2d_out_npu | +| 755 | thnn_conv_depthwise2d | thnn_conv_depthwise2d_npu | +| 756 | thnn_conv_depthwise2d_forward.out | thnn_conv_depthwise2d_forward_out_npu | +| 757 | thnn_conv_depthwise2d_forward | thnn_conv_depthwise2d_forward_npu | +| 758 | thnn_conv_depthwise2d_backward.grad_input | thnn_conv_depthwise2d_backward_out_npu | +| 759 | thnn_conv_depthwise2d_backward.output_mask | thnn_conv_depthwise2d_backward_npu | +| 760 | slow_conv_dilated2d | slow_conv_dilated2d_npu | +| 761 | slow_conv_dilated2d_backward | slow_conv_dilated2d_backward_npu | +| 762 | col2im.out | im2col_backward_out_npu | +| 763 | col2im | im2col_backward_npu | +| 764 | col2im_backward.grad_input | col2im_backward_out_npu | +| 765 | col2im_backward | col2im_backward_npu | +| 766 | im2col.out | im2col_out_npu | +| 767 | im2col | im2col_npu | +| 768 | im2col_backward.grad_input | im2col_backward_out_npu | +| 769 | im2col_backward | im2col_backward_npu | +| 770 | isfinite | isfinite_npu | -

PyTorch算子\(由昇腾开发\)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

序号

-

PyTorch 算子(由昇腾开发)

-

昇腾适配算子

-

1

-

npu_convolution_transpose

-

npu_convolution_transpose

-

2

-

npu_conv_transpose2d

-

convolution_transpose_npu

-

3

-

npu_convolution_transpose_backward

-

convolution_transpose_backward_npu

-

4

-

npu_convolution

-

npu_convolution

-

5

-

npu_convolution_backward

-

npu_convolution_backward

-

6

-

npu_conv2d

-

conv2d_npu

-

7

-

npu_conv2d.out

-

conv2d_out_npu

-

8

-

npu_conv2d_backward

-

conv2d_backward_npu

-

9

-

npu_conv3d

-

conv3d_npu

-

10

-

npu_conv3d.out

-

conv3d_out_npu

-

11

-

npu_conv3d_backward

-

conv3d_backward_npu

-

12

-

one_

-

one_npu_

-

13

-

npu_sort_v2.out

-

sort_without_indices_out_npu

-

14

-

npu_sort_v2

-

sort_without_indices_npu

-

15

-

npu_format_cast

-

format_cast_npu

-

16

-

npu_format_cast_.acl_format

-

format_cast_npu_

-

17

-

npu_format_cast_.src

-

format_cast_npu_

-

18

-

npu_transpose_to_contiguous

-

transpose_to_contiguous_npu

-

19

-

npu_transpose

-

transpose_npu

-

20

-

npu_transpose.out

-

transpose_out_npu

-

21

-

npu_broadcast

-

broadcast_npu

-

22

-

npu_broadcast.out

-

broadcast_out_npu

-

23

-

npu_dtype_cast

-

dtype_cast_npu

-

24

-

npu_dtype_cast_.Tensor

-

dtype_cast_npu_

-

25

-

npu_roi_alignbk

-

roi_align_backward_npu

-

26

-

empty_with_format

-

empty_with_format_npu

-

27

-

empty_with_format.names

-

empty_with_format_npu

-

28

-

copy_memory_

-

copy_memory_npu_

-

29

-

npu_one_hot

-

one_hot_npu

-

30

-

npu_stride_add

-

stride_add_npu

-

31

-

npu_softmax_cross_entropy_with_logits

-

softmax_cross_entropy_with_logits_npu

-

32

-

npu_softmax_cross_entropy_with_logits_backward

-

softmax_cross_entropy_with_logits_backward_npu

-

33

-

npu_ps_roi_pooling

-

ps_roi_pooling_npu

-

34

-

npu_ps_roi_pooling_backward

-

ps_roi_pooling_backward_npu

-

35

-

npu_roi_align

-

roi_align_npu

-

36

-

npu_nms_v4

-

nms_v4_npu

-

37

-

npu_lstm

-

lstm_npu

-

38

-

npu_lstm_backward

-

lstm_backward_npu

-

39

-

npu_iou

-

iou_npu

-

40

-

npu_ptiou

-

ptiou_npu

-

41

-

npu_nms_with_mask

-

nms_with_mask_npu

-

42

-

npu_pad

-

pad_npu

-

43

-

npu_bounding_box_encode

-

bounding_box_encode_npu

-

44

-

npu_bounding_box_decode

-

bounding_box_decode_npu

-

45

-

npu_gru

-

gru_npu

-

46

-

npu_gru_backward

-

gru_backward_npu

-

47

-

npu_set_.source_Storage_storage_offset_format

-

set_npu_

-

48

-

npu_random_choice_with_mask

-

random_choice_with_mask_npu

-

49

-

npu_batch_nms

-

batch_nms_npu

-

50

-

npu_slice

-

slice_npu

-

51

-

npu_slice.out

-

slice_out_npu

-

52

-

npu_dropoutV2

-

dropout_v2_npu

-

53

-

npu_dropoutV2_backward

-

dropout_v2_backward_npu

-

54

-

_npu_dropout

-

_dropout_npu

-

55

-

_npu_dropout_inplace

-

_dropout_npu_inplace

-

56

-

npu_dropout_backward

-

dropout_backward_npu

-

57

-

npu_indexing

-

indexing_npu

-

58

-

npu_indexing.out

-

indexing_out_npu

-

59

-

npu_ifmr

-

ifmr_npu

-

60

-

npu_max.dim

-

max_v1_npu

-

61

-

npu_max.names_dim

-

max_v1_npu

-

62

-

npu_scatter

-

scatter_npu

-

63

-

npu_max_backward

-

max_backward_npu

-

64

-

npu_apply_adam

-

apply_adam_npu

-

65

-

npu_layer_norm_eval

-

layer_norm_eval_npu

-

66

-

npu_alloc_float_status

-

alloc_float_status_npu

-

67

-

npu_get_float_status

-

get_float_status_npu

-

68

-

npu_clear_float_status

-

clear_float_status_npu

-

69

-

npu_confusion_transpose

-

confusion_transpose_npu

-

70

-

npu_confusion_transpose_backward

-

confusion_transpose_backward_npu

-

71

-

npu_bmmV2

-

bmm_v2_npu

-

72

-

fast_gelu

-

fast_gelu_npu

-

73

-

fast_gelu_backward

-

fast_gelu_backward_npu

-

74

-

npu_sub_sample

-

sub_sample_npu

-

75

-

npu_deformable_conv2d

-

deformable_conv2d_npu

-

76

-

npu_deformable_conv2dbk

-

deformable_conv2d_backward_npu

-

77

-

npu_mish

-

mish_npu

-

78

-

npu_anchor_response_flags

-

anchor_response_flags_npu

-

79

-

npu_yolo_boxes_encode

-

yolo_boxes_encode_npu

-

80

-

npu_grid_assign_positive

-

grid_assign_positive_npu

-

81

-

npu_mish_backward

-

mish_backward_npu

-

82

-

npu_normalize_batch

-

normalize_batch_npu

-

83

-

npu_masked_fill_range

-

masked_fill_range_npu

-
+ +## PyTorch算子\(由昇腾开发\) + +| 序号 | PyTorch 算子(由昇腾开发) | 昇腾适配算子 | +| :--: | ---------------------------------------------- | ---------------------------------------------- | +| 1 | npu_convolution_transpose | npu_convolution_transpose | +| 2 | npu_conv_transpose2d | convolution_transpose_npu | +| 3 | npu_convolution_transpose_backward | convolution_transpose_backward_npu | +| 4 | npu_convolution | npu_convolution | +| 5 | npu_convolution_backward | npu_convolution_backward | +| 6 | npu_conv2d | conv2d_npu | +| 7 | npu_conv2d.out | conv2d_out_npu | +| 8 | npu_conv2d_backward | conv2d_backward_npu | +| 9 | npu_conv3d | conv3d_npu | +| 10 | npu_conv3d.out | conv3d_out_npu | +| 11 | npu_conv3d_backward | conv3d_backward_npu | +| 12 | one_ | one_npu_ | +| 13 | npu_sort_v2.out | sort_without_indices_out_npu | +| 14 | npu_sort_v2 | sort_without_indices_npu | +| 15 | npu_format_cast | format_cast_npu | +| 16 | npu_format_cast_.acl_format | format_cast_npu_ | +| 17 | npu_format_cast_.src | format_cast_npu_ | +| 18 | npu_transpose_to_contiguous | transpose_to_contiguous_npu | +| 19 | npu_transpose | transpose_npu | +| 20 | npu_transpose.out | transpose_out_npu | +| 21 | npu_broadcast | broadcast_npu | +| 22 | npu_broadcast.out | broadcast_out_npu | +| 23 | npu_dtype_cast | dtype_cast_npu | +| 24 | npu_dtype_cast_.Tensor | dtype_cast_npu_ | +| 25 | npu_roi_alignbk | roi_align_backward_npu | +| 26 | empty_with_format | empty_with_format_npu | +| 27 | empty_with_format.names | empty_with_format_npu | +| 28 | copy_memory_ | copy_memory_npu_ | +| 29 | npu_one_hot | one_hot_npu | +| 30 | npu_stride_add | stride_add_npu | +| 31 | npu_softmax_cross_entropy_with_logits | softmax_cross_entropy_with_logits_npu | +| 32 | npu_softmax_cross_entropy_with_logits_backward | softmax_cross_entropy_with_logits_backward_npu | +| 33 | npu_ps_roi_pooling | ps_roi_pooling_npu | +| 34 | npu_ps_roi_pooling_backward | ps_roi_pooling_backward_npu | +| 35 | npu_roi_align | roi_align_npu | +| 36 | npu_nms_v4 | nms_v4_npu | +| 37 | npu_lstm | lstm_npu | +| 38 | npu_lstm_backward | lstm_backward_npu | +| 39 | npu_iou | iou_npu | +| 40 | npu_ptiou | ptiou_npu | +| 41 | npu_nms_with_mask | nms_with_mask_npu | +| 42 | npu_pad | pad_npu | +| 43 | npu_bounding_box_encode | bounding_box_encode_npu | +| 44 | npu_bounding_box_decode | bounding_box_decode_npu | +| 45 | npu_gru | gru_npu | +| 46 | npu_gru_backward | gru_backward_npu | +| 47 | npu_set_.source_Storage_storage_offset_format | set_npu_ | +| 48 | npu_random_choice_with_mask | random_choice_with_mask_npu | +| 49 | npu_batch_nms | batch_nms_npu | +| 50 | npu_slice | slice_npu | +| 51 | npu_slice.out | slice_out_npu | +| 52 | npu_dropoutV2 | dropout_v2_npu | +| 53 | npu_dropoutV2_backward | dropout_v2_backward_npu | +| 54 | _npu_dropout | _dropout_npu | +| 55 | _npu_dropout_inplace | _dropout_npu_inplace | +| 56 | npu_dropout_backward | dropout_backward_npu | +| 57 | npu_indexing | indexing_npu | +| 58 | npu_indexing.out | indexing_out_npu | +| 59 | npu_ifmr | ifmr_npu | +| 60 | npu_max.dim | max_v1_npu | +| 61 | npu_max.names_dim | max_v1_npu | +| 62 | npu_scatter | scatter_npu | +| 63 | npu_max_backward | max_backward_npu | +| 64 | npu_apply_adam | apply_adam_npu | +| 65 | npu_layer_norm_eval | layer_norm_eval_npu | +| 66 | npu_alloc_float_status | alloc_float_status_npu | +| 67 | npu_get_float_status | get_float_status_npu | +| 68 | npu_clear_float_status | clear_float_status_npu | +| 69 | npu_confusion_transpose | confusion_transpose_npu | +| 70 | npu_confusion_transpose_backward | confusion_transpose_backward_npu | +| 71 | npu_bmmV2 | bmm_v2_npu | +| 72 | fast_gelu | fast_gelu_npu | +| 73 | fast_gelu_backward | fast_gelu_backward_npu | +| 74 | npu_sub_sample | sub_sample_npu | +| 75 | npu_deformable_conv2d | deformable_conv2d_npu | +| 76 | npu_deformable_conv2dbk | deformable_conv2d_backward_npu | +| 77 | npu_mish | mish_npu | +| 78 | npu_anchor_response_flags | anchor_response_flags_npu | +| 79 | npu_yolo_boxes_encode | yolo_boxes_encode_npu | +| 80 | npu_grid_assign_positive | grid_assign_positive_npu | +| 81 | npu_mish_backward | mish_backward_npu | +| 82 | npu_normalize_batch | normalize_batch_npu | +| 83 | npu_masked_fill_range | masked_fill_range_npu | + diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225 01/public_sys-resources/icon-caution.gif" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225 01/public_sys-resources/icon-caution.gif" deleted file mode 100644 index 6e90d7cfc2193e39e10bb58c38d01a23f045d571..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 580 zcmV-K0=xZ3Nk%w1VIu$?0Hp~4{QBgqmQ+MG9K51r{QB&)np^||1PlfQ%(86!{`~yv zv{XhUWKt}AZaiE{EOcHp{O-j3`t;<+eEiycJT4p@77X;(jQsMfB$R?oG%6hQ z+MMLZbQBH@)Vg&1^3?qHb(5!%>3r0+`eq=&V&E}0Dypi0000000000 z00000A^8LW000R9EC2ui03!e$000L5z=Uu}ED8YtqjJd<+B}(9bIOb$3-31_h|V>=0A{ z1Hh0#H30>fNT})^fRU_83uewx9oRr{f{Sx1Ml`t)EQ zGkHZ67&~y{W5Jpq4H_WfuLxp*3<7O}GEl;1ESe36fLNs=B0&LQM1Buf(R)qg(BRd`t1OPjI1m_q4 diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225 01/public_sys-resources/icon-danger.gif" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225 01/public_sys-resources/icon-danger.gif" deleted file mode 100644 index 6e90d7cfc2193e39e10bb58c38d01a23f045d571..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 580 zcmV-K0=xZ3Nk%w1VIu$?0Hp~4{QBgqmQ+MG9K51r{QB&)np^||1PlfQ%(86!{`~yv zv{XhUWKt}AZaiE{EOcHp{O-j3`t;<+eEiycJT4p@77X;(jQsMfB$R?oG%6hQ z+MMLZbQBH@)Vg&1^3?qHb(5!%>3r0+`eq=&V&E}0Dypi0000000000 z00000A^8LW000R9EC2ui03!e$000L5z=Uu}ED8YtqjJd<+B}(9bIOb$3-31_h|V>=0A{ z1Hh0#H30>fNT})^fRU_83uewx9oRr{f{Sx1Ml`t)EQ zGkHZ67&~y{W5Jpq4H_WfuLxp*3<7O}GEl;1ESe36fLNs=B0&LQM1Buf(R)qg(BRd`t1OPjI1m_q4 diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225 01/public_sys-resources/icon-note.gif" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225 01/public_sys-resources/icon-note.gif" deleted file mode 100644 index 6314297e45c1de184204098efd4814d6dc8b1cda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 394 zcmZ?wbhEHblx7fPSjxcg=ii?@_wH=jwxy=7CMGH-B`L+l$wfv=#>UF#$gv|VY%C^b zCQFtrnKN(Bo_%|sJbO}7RAORe!otL&qo<>yq_Sq+8Xqqo5h0P3w3Lvb5E(g{p01vl zxR@)KuDH0l^z`+-dH3eaw=XqSH7aTIx{kzVBN;X&hha0dQSgWuiw0NWUvMRmkD|> diff --git "a/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225 01/public_sys-resources/icon-notice.gif" "b/docs/zh/FrameworkPTAdapter 2.0.2 PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225 01/public_sys-resources/icon-notice.gif" deleted file mode 100644 index 86024f61b691400bea99e5b1f506d9d9aef36e27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 406 zcmV;H0crk6Nk%w1VIu$@0J8u9|NsB@_xJDb@8;&_*4Ea}&d#;9wWXz{jEszHYim+c zQaU<1At50E0000000000A^8Le000gEEC2ui03!e%000R7038S%NU)&51O^i-Tu6`s z0)`MFE@;3YqD6xSC^kTNu_J>91{PH8XfZ(p1pp2-SU@u3#{mEUC}_}tg3+I#{z}{Ok@D_ZUDg- zt0stin4;pC8M{WLSlRH*1pzqEw1}3oOskyNN?j;7HD{BBZ*OEcv4HK!6Bk6beR+04 z&8}k>SkTusVTDmkyOz#5fCA$JTPGJVQvr3uZ?QzzPQFvD0rGf_PdrcF`pMs}p^BcF zKtKTd`0wipR%nKN&Wj+V}pX;WC3SdJV!a_8Qi zE7z`U*|Y^H0^}fB$R?oG%6hQ z+MMLZbQBH@)Vg&1^3?qHb(5!%>3r0+`eq=&V&E}0Dypi0000000000 z00000A^8LW000R9EC2ui03!e$000L5z=Uu}ED8YtqjJd<+B}(9bIOb$3-31_h|V>=0A{ z1Hh0#H30>fNT})^fRU_83uewx9oRr{f{Sx1Ml`t)EQ zGkHZ67&~y{W5Jpq4H_WfuLxp*3<7O}GEl;1ESe36fLNs=B0&LQM1Buf(R)qg(BRd`t1OPjI1m_q4 diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/public_sys-resources/icon-caution.gif" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/public_sys-resources/icon-caution.gif" deleted file mode 100644 index 6e90d7cfc2193e39e10bb58c38d01a23f045d571..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 580 zcmV-K0=xZ3Nk%w1VIu$?0Hp~4{QBgqmQ+MG9K51r{QB&)np^||1PlfQ%(86!{`~yv zv{XhUWKt}AZaiE{EOcHp{O-j3`t;<+eEiycJT4p@77X;(jQsMfB$R?oG%6hQ z+MMLZbQBH@)Vg&1^3?qHb(5!%>3r0+`eq=&V&E}0Dypi0000000000 z00000A^8LW000R9EC2ui03!e$000L5z=Uu}ED8YtqjJd<+B}(9bIOb$3-31_h|V>=0A{ z1Hh0#H30>fNT})^fRU_83uewx9oRr{f{Sx1Ml`t)EQ zGkHZ67&~y{W5Jpq4H_WfuLxp*3<7O}GEl;1ESe36fLNs=B0&LQM1Buf(R)qg(BRd`t1OPjI1m_q4 diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/public_sys-resources/icon-danger.gif" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/public_sys-resources/icon-danger.gif" deleted file mode 100644 index 6e90d7cfc2193e39e10bb58c38d01a23f045d571..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 580 zcmV-K0=xZ3Nk%w1VIu$?0Hp~4{QBgqmQ+MG9K51r{QB&)np^||1PlfQ%(86!{`~yv zv{XhUWKt}AZaiE{EOcHp{O-j3`t;<+eEiycJT4p@77X;(jQsMfB$R?oG%6hQ z+MMLZbQBH@)Vg&1^3?qHb(5!%>3r0+`eq=&V&E}0Dypi0000000000 z00000A^8LW000R9EC2ui03!e$000L5z=Uu}ED8YtqjJd<+B}(9bIOb$3-31_h|V>=0A{ z1Hh0#H30>fNT})^fRU_83uewx9oRr{f{Sx1Ml`t)EQ zGkHZ67&~y{W5Jpq4H_WfuLxp*3<7O}GEl;1ESe36fLNs=B0&LQM1Buf(R)qg(BRd`t1OPjI1m_q4 diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/public_sys-resources/icon-note.gif" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/public_sys-resources/icon-note.gif" deleted file mode 100644 index 6314297e45c1de184204098efd4814d6dc8b1cda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 394 zcmZ?wbhEHblx7fPSjxcg=ii?@_wH=jwxy=7CMGH-B`L+l$wfv=#>UF#$gv|VY%C^b zCQFtrnKN(Bo_%|sJbO}7RAORe!otL&qo<>yq_Sq+8Xqqo5h0P3w3Lvb5E(g{p01vl zxR@)KuDH0l^z`+-dH3eaw=XqSH7aTIx{kzVBN;X&hha0dQSgWuiw0NWUvMRmkD|> diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/public_sys-resources/icon-notice.gif" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/public_sys-resources/icon-notice.gif" deleted file mode 100644 index 86024f61b691400bea99e5b1f506d9d9aef36e27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 406 zcmV;H0crk6Nk%w1VIu$@0J8u9|NsB@_xJDb@8;&_*4Ea}&d#;9wWXz{jEszHYim+c zQaU<1At50E0000000000A^8Le000gEEC2ui03!e%000R7038S%NU)&51O^i-Tu6`s z0)`MFE@;3YqD6xSC^kTNu_J>91{PH8XfZ(p1pp2-SU@u3#{mEUC}_}tg3+I#{z}{Ok@D_ZUDg- zt0stin4;pC8M{WLSlRH*1pzqEw1}3oOskyNN?j;7HD{BBZ*OEcv4HK!6Bk6beR+04 z&8}k>SkTusVTDmkyOz#5fCA$JTPGJVQvr3uZ?QzzPQFvD0rGf_PdrcF`pMs}p^BcF zKtKTd`0wipR%nKN&Wj+V}pX;WC3SdJV!a_8Qi zE7z`U*|Y^H0^}fB$R?oG%6hQ z+MMLZbQBH@)Vg&1^3?qHb(5!%>3r0+`eq=&V&E}0Dypi0000000000 z00000A^8LW000R9EC2ui03!e$000L5z=Uu}ED8YtqjJd<+B}(9bIOb$3-31_h|V>=0A{ z1Hh0#H30>fNT})^fRU_83uewx9oRr{f{Sx1Ml`t)EQ zGkHZ67&~y{W5Jpq4H_WfuLxp*3<7O}GEl;1ESe36fLNs=B0&LQM1Buf(R)qg(BRd`t1OPjI1m_q4 -- Gitee