mindspore 2.3.0__cp310-cp310-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1400) hide show
  1. mindspore/.commit_id +1 -0
  2. mindspore/ConcurrencyCheck.dll +0 -0
  3. mindspore/CppBuildInsights.dll +0 -0
  4. mindspore/CppCoreCheck.dll +0 -0
  5. mindspore/EnumIndex.dll +0 -0
  6. mindspore/EspXEngine.dll +0 -0
  7. mindspore/HResultCheck.dll +0 -0
  8. mindspore/KernelTraceControl.dll +0 -0
  9. mindspore/LocalESPC.dll +0 -0
  10. mindspore/Microsoft.Diagnostics.Tracing.EventSource.dll +0 -0
  11. mindspore/Microsoft.VisualStudio.RemoteControl.dll +0 -0
  12. mindspore/Microsoft.VisualStudio.Telemetry.dll +0 -0
  13. mindspore/Microsoft.VisualStudio.Utilities.Internal.dll +0 -0
  14. mindspore/Newtonsoft.Json.dll +0 -0
  15. mindspore/System.Runtime.CompilerServices.Unsafe.dll +0 -0
  16. mindspore/VariantClear.dll +0 -0
  17. mindspore/__init__.py +51 -0
  18. mindspore/_c_dataengine.cp310-win_amd64.pyd +0 -0
  19. mindspore/_c_expression.cp310-win_amd64.pyd +0 -0
  20. mindspore/_c_mindrecord.cp310-win_amd64.pyd +0 -0
  21. mindspore/_check_jit_forbidden_api.py +106 -0
  22. mindspore/_checkparam.py +1378 -0
  23. mindspore/_extends/__init__.py +23 -0
  24. mindspore/_extends/builtin_operations.py +224 -0
  25. mindspore/_extends/graph_kernel/__init__.py +17 -0
  26. mindspore/_extends/graph_kernel/model/__init__.py +19 -0
  27. mindspore/_extends/graph_kernel/model/graph_parallel.py +311 -0
  28. mindspore/_extends/graph_kernel/model/graph_split.py +1348 -0
  29. mindspore/_extends/graph_kernel/model/model.py +553 -0
  30. mindspore/_extends/graph_kernel/model/model_builder.py +216 -0
  31. mindspore/_extends/graph_kernel/parallel_estimate.py +60 -0
  32. mindspore/_extends/graph_kernel/splitter.py +140 -0
  33. mindspore/_extends/graph_kernel/utils.py +28 -0
  34. mindspore/_extends/parallel_compile/__init__.py +19 -0
  35. mindspore/_extends/parallel_compile/akg_compiler/__init__.py +19 -0
  36. mindspore/_extends/parallel_compile/akg_compiler/akg_process.py +269 -0
  37. mindspore/_extends/parallel_compile/akg_compiler/build_tbe_kernel.py +529 -0
  38. mindspore/_extends/parallel_compile/akg_compiler/compiler.py +56 -0
  39. mindspore/_extends/parallel_compile/akg_compiler/gen_custom_op_files.py +96 -0
  40. mindspore/_extends/parallel_compile/akg_compiler/get_file_path.py +36 -0
  41. mindspore/_extends/parallel_compile/akg_compiler/tbe_topi.py +556 -0
  42. mindspore/_extends/parallel_compile/akg_compiler/util.py +159 -0
  43. mindspore/_extends/parse/__init__.py +49 -0
  44. mindspore/_extends/parse/compile_config.py +258 -0
  45. mindspore/_extends/parse/namespace.py +136 -0
  46. mindspore/_extends/parse/parser.py +1446 -0
  47. mindspore/_extends/parse/resources.py +213 -0
  48. mindspore/_extends/parse/standard_method.py +4437 -0
  49. mindspore/_extends/parse/trope.py +97 -0
  50. mindspore/_extends/pijit/__init__.py +23 -0
  51. mindspore/_extends/pijit/pijit_func_white_list.py +343 -0
  52. mindspore/_extends/remote/__init__.py +19 -0
  53. mindspore/_extends/remote/kernel_build_server.py +199 -0
  54. mindspore/_extends/remote/kernel_build_server_akg.py +55 -0
  55. mindspore/_extends/remote/kernel_build_server_akg_v2.py +55 -0
  56. mindspore/_extends/remote/kernel_build_server_ascend.py +75 -0
  57. mindspore/_extends/utils.py +68 -0
  58. mindspore/_install_custom.py +43 -0
  59. mindspore/_profiler.py +30 -0
  60. mindspore/amp.py +419 -0
  61. mindspore/atlprov.dll +0 -0
  62. mindspore/avcodec-59.dll +0 -0
  63. mindspore/avdevice-59.dll +0 -0
  64. mindspore/avfilter-8.dll +0 -0
  65. mindspore/avformat-59.dll +0 -0
  66. mindspore/avutil-57.dll +0 -0
  67. mindspore/boost/__init__.py +42 -0
  68. mindspore/boost/adasum.py +319 -0
  69. mindspore/boost/base.py +535 -0
  70. mindspore/boost/boost.py +400 -0
  71. mindspore/boost/boost_cell_wrapper.py +790 -0
  72. mindspore/boost/dim_reduce.py +323 -0
  73. mindspore/boost/grad_accumulation.py +79 -0
  74. mindspore/boost/grad_freeze.py +382 -0
  75. mindspore/boost/group_loss_scale_manager.py +166 -0
  76. mindspore/boost/less_batch_normalization.py +174 -0
  77. mindspore/c1.dll +0 -0
  78. mindspore/c1xx.dll +0 -0
  79. mindspore/c2.dll +0 -0
  80. mindspore/cfgpersist.dll +0 -0
  81. mindspore/clang_rt.asan_dbg_dynamic-x86_64.dll +0 -0
  82. mindspore/clang_rt.asan_dynamic-x86_64.dll +0 -0
  83. mindspore/common/__init__.py +84 -0
  84. mindspore/common/_auto_dynamic.py +68 -0
  85. mindspore/common/_decorator.py +50 -0
  86. mindspore/common/_jit_fallback_utils.py +110 -0
  87. mindspore/common/_monad.py +25 -0
  88. mindspore/common/_register_for_adapter.py +74 -0
  89. mindspore/common/_register_for_recompute.py +48 -0
  90. mindspore/common/_register_for_tensor.py +45 -0
  91. mindspore/common/_stub_tensor.py +210 -0
  92. mindspore/common/_utils.py +122 -0
  93. mindspore/common/api.py +2049 -0
  94. mindspore/common/auto_dynamic_shape.py +507 -0
  95. mindspore/common/dtype.py +422 -0
  96. mindspore/common/dump.py +131 -0
  97. mindspore/common/file_system.py +48 -0
  98. mindspore/common/generator.py +260 -0
  99. mindspore/common/hook_handle.py +155 -0
  100. mindspore/common/initializer.py +880 -0
  101. mindspore/common/jit_config.py +98 -0
  102. mindspore/common/lazy_inline.py +240 -0
  103. mindspore/common/mindir_util.py +111 -0
  104. mindspore/common/mutable.py +234 -0
  105. mindspore/common/no_inline.py +54 -0
  106. mindspore/common/np_dtype.py +25 -0
  107. mindspore/common/parameter.py +1048 -0
  108. mindspore/common/recompute.py +262 -0
  109. mindspore/common/seed.py +260 -0
  110. mindspore/common/sparse_tensor.py +1171 -0
  111. mindspore/common/symbol.py +122 -0
  112. mindspore/common/tensor.py +4859 -0
  113. mindspore/communication/__init__.py +37 -0
  114. mindspore/communication/_comm_helper.py +466 -0
  115. mindspore/communication/_hccl_management.py +297 -0
  116. mindspore/communication/comm_func.py +1140 -0
  117. mindspore/communication/management.py +673 -0
  118. mindspore/config/op_info.config +533 -0
  119. mindspore/context.py +1976 -0
  120. mindspore/d3dcompiler_47.dll +0 -0
  121. mindspore/dataset/__init__.py +90 -0
  122. mindspore/dataset/audio/__init__.py +61 -0
  123. mindspore/dataset/audio/transforms.py +3690 -0
  124. mindspore/dataset/audio/utils.py +386 -0
  125. mindspore/dataset/audio/validators.py +1172 -0
  126. mindspore/dataset/callback/__init__.py +20 -0
  127. mindspore/dataset/callback/ds_callback.py +368 -0
  128. mindspore/dataset/callback/validators.py +32 -0
  129. mindspore/dataset/core/__init__.py +13 -0
  130. mindspore/dataset/core/config.py +1088 -0
  131. mindspore/dataset/core/datatypes.py +101 -0
  132. mindspore/dataset/core/py_util_helpers.py +65 -0
  133. mindspore/dataset/core/validator_helpers.py +774 -0
  134. mindspore/dataset/debug/__init__.py +21 -0
  135. mindspore/dataset/debug/debug_hook.py +97 -0
  136. mindspore/dataset/debug/pre_defined_hook.py +67 -0
  137. mindspore/dataset/engine/__init__.py +124 -0
  138. mindspore/dataset/engine/cache_admin.py +47 -0
  139. mindspore/dataset/engine/cache_client.py +129 -0
  140. mindspore/dataset/engine/datasets.py +4554 -0
  141. mindspore/dataset/engine/datasets_audio.py +911 -0
  142. mindspore/dataset/engine/datasets_standard_format.py +493 -0
  143. mindspore/dataset/engine/datasets_text.py +2161 -0
  144. mindspore/dataset/engine/datasets_user_defined.py +1114 -0
  145. mindspore/dataset/engine/datasets_vision.py +4816 -0
  146. mindspore/dataset/engine/iterators.py +342 -0
  147. mindspore/dataset/engine/obs/__init__.py +23 -0
  148. mindspore/dataset/engine/obs/config_loader.py +68 -0
  149. mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +508 -0
  150. mindspore/dataset/engine/obs/util.py +475 -0
  151. mindspore/dataset/engine/offload.py +596 -0
  152. mindspore/dataset/engine/queue.py +250 -0
  153. mindspore/dataset/engine/samplers.py +895 -0
  154. mindspore/dataset/engine/serializer_deserializer.py +159 -0
  155. mindspore/dataset/engine/validators.py +2875 -0
  156. mindspore/dataset/text/__init__.py +54 -0
  157. mindspore/dataset/text/transforms.py +1703 -0
  158. mindspore/dataset/text/utils.py +715 -0
  159. mindspore/dataset/text/validators.py +642 -0
  160. mindspore/dataset/transforms/__init__.py +48 -0
  161. mindspore/dataset/transforms/c_transforms.py +638 -0
  162. mindspore/dataset/transforms/py_transforms.py +393 -0
  163. mindspore/dataset/transforms/py_transforms_util.py +255 -0
  164. mindspore/dataset/transforms/transforms.py +1260 -0
  165. mindspore/dataset/transforms/validators.py +410 -0
  166. mindspore/dataset/utils/__init__.py +19 -0
  167. mindspore/dataset/utils/browse_dataset.py +190 -0
  168. mindspore/dataset/utils/line_reader.py +124 -0
  169. mindspore/dataset/vision/__init__.py +68 -0
  170. mindspore/dataset/vision/c_transforms.py +2641 -0
  171. mindspore/dataset/vision/py_transforms.py +2120 -0
  172. mindspore/dataset/vision/py_transforms_util.py +1660 -0
  173. mindspore/dataset/vision/transforms.py +7295 -0
  174. mindspore/dataset/vision/utils.py +863 -0
  175. mindspore/dataset/vision/validators.py +1482 -0
  176. mindspore/default_config.py +2 -0
  177. mindspore/dnnl.dll +0 -0
  178. mindspore/dpcmi.dll +0 -0
  179. mindspore/experimental/__init__.py +20 -0
  180. mindspore/experimental/map_parameter.py +309 -0
  181. mindspore/experimental/optim/__init__.py +40 -0
  182. mindspore/experimental/optim/adadelta.py +161 -0
  183. mindspore/experimental/optim/adagrad.py +168 -0
  184. mindspore/experimental/optim/adam.py +193 -0
  185. mindspore/experimental/optim/adamax.py +170 -0
  186. mindspore/experimental/optim/adamw.py +205 -0
  187. mindspore/experimental/optim/asgd.py +153 -0
  188. mindspore/experimental/optim/lr_scheduler.py +1371 -0
  189. mindspore/experimental/optim/nadam.py +157 -0
  190. mindspore/experimental/optim/optimizer.py +259 -0
  191. mindspore/experimental/optim/radam.py +194 -0
  192. mindspore/experimental/optim/rmsprop.py +154 -0
  193. mindspore/experimental/optim/rprop.py +164 -0
  194. mindspore/experimental/optim/sgd.py +156 -0
  195. mindspore/hal/__init__.py +40 -0
  196. mindspore/hal/_ascend.py +57 -0
  197. mindspore/hal/_base.py +57 -0
  198. mindspore/hal/_cpu.py +56 -0
  199. mindspore/hal/_gpu.py +57 -0
  200. mindspore/hal/device.py +356 -0
  201. mindspore/hal/event.py +179 -0
  202. mindspore/hal/memory.py +326 -0
  203. mindspore/hal/stream.py +339 -0
  204. mindspore/include/OWNERS +7 -0
  205. mindspore/include/api/allocator.h +97 -0
  206. mindspore/include/api/callback/callback.h +93 -0
  207. mindspore/include/api/callback/ckpt_saver.h +41 -0
  208. mindspore/include/api/callback/loss_monitor.h +33 -0
  209. mindspore/include/api/callback/lr_scheduler.h +51 -0
  210. mindspore/include/api/callback/time_monitor.h +34 -0
  211. mindspore/include/api/callback/train_accuracy.h +37 -0
  212. mindspore/include/api/cell.h +90 -0
  213. mindspore/include/api/cfg.h +82 -0
  214. mindspore/include/api/context.h +602 -0
  215. mindspore/include/api/data_type.h +47 -0
  216. mindspore/include/api/delegate.h +178 -0
  217. mindspore/include/api/delegate_api.h +75 -0
  218. mindspore/include/api/dual_abi_helper.h +208 -0
  219. mindspore/include/api/format.h +28 -0
  220. mindspore/include/api/graph.h +46 -0
  221. mindspore/include/api/kernel.h +58 -0
  222. mindspore/include/api/kernel_api.h +168 -0
  223. mindspore/include/api/metrics/accuracy.h +36 -0
  224. mindspore/include/api/metrics/metrics.h +41 -0
  225. mindspore/include/api/model.h +438 -0
  226. mindspore/include/api/model_group.h +79 -0
  227. mindspore/include/api/model_parallel_runner.h +168 -0
  228. mindspore/include/api/serialization.h +185 -0
  229. mindspore/include/api/status.h +192 -0
  230. mindspore/include/api/types.h +431 -0
  231. mindspore/include/api/visible.h +41 -0
  232. mindspore/include/c_api/context_c.h +179 -0
  233. mindspore/include/c_api/data_type_c.h +52 -0
  234. mindspore/include/c_api/format_c.h +46 -0
  235. mindspore/include/c_api/model_c.h +347 -0
  236. mindspore/include/c_api/ms/abstract.h +67 -0
  237. mindspore/include/c_api/ms/attribute.h +197 -0
  238. mindspore/include/c_api/ms/base/handle_types.h +43 -0
  239. mindspore/include/c_api/ms/base/macros.h +32 -0
  240. mindspore/include/c_api/ms/base/status.h +33 -0
  241. mindspore/include/c_api/ms/base/types.h +283 -0
  242. mindspore/include/c_api/ms/context.h +102 -0
  243. mindspore/include/c_api/ms/graph.h +160 -0
  244. mindspore/include/c_api/ms/node.h +606 -0
  245. mindspore/include/c_api/ms/tensor.h +161 -0
  246. mindspore/include/c_api/ms/value.h +84 -0
  247. mindspore/include/c_api/status_c.h +79 -0
  248. mindspore/include/c_api/tensor_c.h +146 -0
  249. mindspore/include/c_api/types_c.h +67 -0
  250. mindspore/include/dataset/config.h +163 -0
  251. mindspore/include/dataset/constants.h +363 -0
  252. mindspore/include/dataset/execute.h +196 -0
  253. mindspore/include/dataset/text.h +1092 -0
  254. mindspore/include/dataset/transforms.h +638 -0
  255. mindspore/include/dataset/vision.h +2125 -0
  256. mindspore/include/dataset/vision_ascend.h +206 -0
  257. mindspore/include/dataset/vision_lite.h +625 -0
  258. mindspore/jpeg62.dll +0 -0
  259. mindspore/log.py +633 -0
  260. mindspore/mindrecord/__init__.py +43 -0
  261. mindspore/mindrecord/common/__init__.py +17 -0
  262. mindspore/mindrecord/common/constant.py +20 -0
  263. mindspore/mindrecord/common/enums.py +44 -0
  264. mindspore/mindrecord/common/exceptions.py +311 -0
  265. mindspore/mindrecord/config.py +809 -0
  266. mindspore/mindrecord/filereader.py +174 -0
  267. mindspore/mindrecord/filewriter.py +705 -0
  268. mindspore/mindrecord/mindpage.py +210 -0
  269. mindspore/mindrecord/shardheader.py +141 -0
  270. mindspore/mindrecord/shardindexgenerator.py +74 -0
  271. mindspore/mindrecord/shardreader.py +117 -0
  272. mindspore/mindrecord/shardsegment.py +128 -0
  273. mindspore/mindrecord/shardutils.py +185 -0
  274. mindspore/mindrecord/shardwriter.py +237 -0
  275. mindspore/mindrecord/tools/__init__.py +17 -0
  276. mindspore/mindrecord/tools/cifar10.py +140 -0
  277. mindspore/mindrecord/tools/cifar100.py +153 -0
  278. mindspore/mindrecord/tools/cifar100_to_mr.py +185 -0
  279. mindspore/mindrecord/tools/cifar10_to_mr.py +177 -0
  280. mindspore/mindrecord/tools/csv_to_mr.py +200 -0
  281. mindspore/mindrecord/tools/imagenet_to_mr.py +206 -0
  282. mindspore/mindrecord/tools/mnist_to_mr.py +259 -0
  283. mindspore/mindrecord/tools/tfrecord_to_mr.py +360 -0
  284. mindspore/mindspore_backend.dll +0 -0
  285. mindspore/mindspore_common.dll +0 -0
  286. mindspore/mindspore_core.dll +0 -0
  287. mindspore/mindspore_glog.dll +0 -0
  288. mindspore/mindspore_np_dtype.dll +0 -0
  289. mindspore/mindspore_shared_lib.dll +0 -0
  290. mindspore/mint/__init__.py +1137 -0
  291. mindspore/mint/linalg/__init__.py +22 -0
  292. mindspore/mint/nn/__init__.py +512 -0
  293. mindspore/mint/nn/functional.py +573 -0
  294. mindspore/mint/optim/__init__.py +24 -0
  295. mindspore/mint/optim/adamw.py +185 -0
  296. mindspore/msobj140.dll +0 -0
  297. mindspore/mspdb140.dll +0 -0
  298. mindspore/mspdbcore.dll +0 -0
  299. mindspore/mspdbst.dll +0 -0
  300. mindspore/mspft140.dll +0 -0
  301. mindspore/msvcdis140.dll +0 -0
  302. mindspore/msvcp140.dll +0 -0
  303. mindspore/msvcp140_1.dll +0 -0
  304. mindspore/msvcp140_2.dll +0 -0
  305. mindspore/msvcp140_atomic_wait.dll +0 -0
  306. mindspore/msvcp140_codecvt_ids.dll +0 -0
  307. mindspore/multiprocessing/__init__.py +72 -0
  308. mindspore/nn/__init__.py +48 -0
  309. mindspore/nn/cell.py +2605 -0
  310. mindspore/nn/dynamic_lr.py +482 -0
  311. mindspore/nn/extend/__init__.py +29 -0
  312. mindspore/nn/extend/basic.py +140 -0
  313. mindspore/nn/extend/embedding.py +143 -0
  314. mindspore/nn/extend/layer/__init__.py +27 -0
  315. mindspore/nn/extend/layer/normalization.py +109 -0
  316. mindspore/nn/extend/pooling.py +117 -0
  317. mindspore/nn/grad/__init__.py +21 -0
  318. mindspore/nn/grad/cell_grad.py +196 -0
  319. mindspore/nn/layer/__init__.py +63 -0
  320. mindspore/nn/layer/activation.py +1655 -0
  321. mindspore/nn/layer/basic.py +1519 -0
  322. mindspore/nn/layer/channel_shuffle.py +90 -0
  323. mindspore/nn/layer/combined.py +248 -0
  324. mindspore/nn/layer/container.py +734 -0
  325. mindspore/nn/layer/conv.py +1505 -0
  326. mindspore/nn/layer/dense.py +204 -0
  327. mindspore/nn/layer/embedding.py +751 -0
  328. mindspore/nn/layer/embedding_service.py +531 -0
  329. mindspore/nn/layer/embedding_service_layer.py +393 -0
  330. mindspore/nn/layer/image.py +661 -0
  331. mindspore/nn/layer/math.py +1069 -0
  332. mindspore/nn/layer/normalization.py +1177 -0
  333. mindspore/nn/layer/padding.py +894 -0
  334. mindspore/nn/layer/pooling.py +2148 -0
  335. mindspore/nn/layer/rnn_cells.py +388 -0
  336. mindspore/nn/layer/rnns.py +849 -0
  337. mindspore/nn/layer/thor_layer.py +963 -0
  338. mindspore/nn/layer/timedistributed.py +155 -0
  339. mindspore/nn/layer/transformer.py +823 -0
  340. mindspore/nn/learning_rate_schedule.py +512 -0
  341. mindspore/nn/loss/__init__.py +36 -0
  342. mindspore/nn/loss/loss.py +2846 -0
  343. mindspore/nn/metrics.py +53 -0
  344. mindspore/nn/optim/__init__.py +44 -0
  345. mindspore/nn/optim/_dist_optimizer_registry.py +111 -0
  346. mindspore/nn/optim/ada_grad.py +217 -0
  347. mindspore/nn/optim/adadelta.py +206 -0
  348. mindspore/nn/optim/adafactor.py +448 -0
  349. mindspore/nn/optim/adam.py +1297 -0
  350. mindspore/nn/optim/adamax.py +220 -0
  351. mindspore/nn/optim/adasum.py +548 -0
  352. mindspore/nn/optim/asgd.py +216 -0
  353. mindspore/nn/optim/ftrl.py +401 -0
  354. mindspore/nn/optim/lamb.py +296 -0
  355. mindspore/nn/optim/lars.py +202 -0
  356. mindspore/nn/optim/lazyadam.py +533 -0
  357. mindspore/nn/optim/momentum.py +239 -0
  358. mindspore/nn/optim/optimizer.py +1034 -0
  359. mindspore/nn/optim/proximal_ada_grad.py +242 -0
  360. mindspore/nn/optim/rmsprop.py +264 -0
  361. mindspore/nn/optim/rprop.py +251 -0
  362. mindspore/nn/optim/sgd.py +237 -0
  363. mindspore/nn/optim/thor.py +1310 -0
  364. mindspore/nn/probability/__init__.py +22 -0
  365. mindspore/nn/probability/bijector/__init__.py +35 -0
  366. mindspore/nn/probability/bijector/bijector.py +337 -0
  367. mindspore/nn/probability/bijector/exp.py +65 -0
  368. mindspore/nn/probability/bijector/gumbel_cdf.py +144 -0
  369. mindspore/nn/probability/bijector/invert.py +126 -0
  370. mindspore/nn/probability/bijector/power_transform.py +196 -0
  371. mindspore/nn/probability/bijector/scalar_affine.py +167 -0
  372. mindspore/nn/probability/bijector/softplus.py +189 -0
  373. mindspore/nn/probability/bnn_layers/__init__.py +29 -0
  374. mindspore/nn/probability/bnn_layers/_util.py +46 -0
  375. mindspore/nn/probability/bnn_layers/bnn_cell_wrapper.py +112 -0
  376. mindspore/nn/probability/bnn_layers/conv_variational.py +267 -0
  377. mindspore/nn/probability/bnn_layers/dense_variational.py +302 -0
  378. mindspore/nn/probability/bnn_layers/layer_distribution.py +123 -0
  379. mindspore/nn/probability/distribution/__init__.py +56 -0
  380. mindspore/nn/probability/distribution/_utils/__init__.py +34 -0
  381. mindspore/nn/probability/distribution/_utils/custom_ops.py +96 -0
  382. mindspore/nn/probability/distribution/_utils/utils.py +362 -0
  383. mindspore/nn/probability/distribution/bernoulli.py +334 -0
  384. mindspore/nn/probability/distribution/beta.py +391 -0
  385. mindspore/nn/probability/distribution/categorical.py +435 -0
  386. mindspore/nn/probability/distribution/cauchy.py +383 -0
  387. mindspore/nn/probability/distribution/distribution.py +827 -0
  388. mindspore/nn/probability/distribution/exponential.py +350 -0
  389. mindspore/nn/probability/distribution/gamma.py +391 -0
  390. mindspore/nn/probability/distribution/geometric.py +335 -0
  391. mindspore/nn/probability/distribution/gumbel.py +257 -0
  392. mindspore/nn/probability/distribution/half_normal.py +133 -0
  393. mindspore/nn/probability/distribution/laplace.py +128 -0
  394. mindspore/nn/probability/distribution/log_normal.py +272 -0
  395. mindspore/nn/probability/distribution/logistic.py +379 -0
  396. mindspore/nn/probability/distribution/normal.py +336 -0
  397. mindspore/nn/probability/distribution/poisson.py +288 -0
  398. mindspore/nn/probability/distribution/student_t.py +149 -0
  399. mindspore/nn/probability/distribution/transformed_distribution.py +235 -0
  400. mindspore/nn/probability/distribution/uniform.py +375 -0
  401. mindspore/nn/reinforcement/__init__.py +24 -0
  402. mindspore/nn/reinforcement/_batch_read_write.py +142 -0
  403. mindspore/nn/reinforcement/_tensors_queue.py +152 -0
  404. mindspore/nn/reinforcement/tensor_array.py +145 -0
  405. mindspore/nn/sparse/__init__.py +23 -0
  406. mindspore/nn/sparse/sparse.py +147 -0
  407. mindspore/nn/wrap/__init__.py +49 -0
  408. mindspore/nn/wrap/cell_wrapper.py +979 -0
  409. mindspore/nn/wrap/grad_reducer.py +608 -0
  410. mindspore/nn/wrap/loss_scale.py +680 -0
  411. mindspore/numpy/__init__.py +121 -0
  412. mindspore/numpy/array_creations.py +2734 -0
  413. mindspore/numpy/array_ops.py +2625 -0
  414. mindspore/numpy/dtypes.py +185 -0
  415. mindspore/numpy/fft.py +431 -0
  416. mindspore/numpy/logic_ops.py +935 -0
  417. mindspore/numpy/math_ops.py +5910 -0
  418. mindspore/numpy/utils.py +214 -0
  419. mindspore/numpy/utils_const.py +565 -0
  420. mindspore/opencv_core452.dll +0 -0
  421. mindspore/opencv_imgcodecs452.dll +0 -0
  422. mindspore/opencv_imgproc452.dll +0 -0
  423. mindspore/ops/__init__.py +54 -0
  424. mindspore/ops/_constants.py +30 -0
  425. mindspore/ops/_grad_experimental/__init__.py +31 -0
  426. mindspore/ops/_grad_experimental/grad_array_ops.py +830 -0
  427. mindspore/ops/_grad_experimental/grad_base.py +143 -0
  428. mindspore/ops/_grad_experimental/grad_comm_ops.py +670 -0
  429. mindspore/ops/_grad_experimental/grad_debug_ops.py +31 -0
  430. mindspore/ops/_grad_experimental/grad_implementations.py +203 -0
  431. mindspore/ops/_grad_experimental/grad_inner_ops.py +79 -0
  432. mindspore/ops/_grad_experimental/grad_math_ops.py +824 -0
  433. mindspore/ops/_grad_experimental/grad_nn_ops.py +231 -0
  434. mindspore/ops/_grad_experimental/grad_quant_ops.py +238 -0
  435. mindspore/ops/_grad_experimental/grad_sparse.py +342 -0
  436. mindspore/ops/_grad_experimental/grad_sparse_ops.py +399 -0
  437. mindspore/ops/_grad_experimental/taylor_rule.py +220 -0
  438. mindspore/ops/_op_impl/__init__.py +23 -0
  439. mindspore/ops/_op_impl/_custom_op/__init__.py +39 -0
  440. mindspore/ops/_op_impl/_custom_op/_basic.py +158 -0
  441. mindspore/ops/_op_impl/_custom_op/batch_matmul_impl.py +279 -0
  442. mindspore/ops/_op_impl/_custom_op/batchnorm_fold.py +156 -0
  443. mindspore/ops/_op_impl/_custom_op/batchnorm_fold2.py +109 -0
  444. mindspore/ops/_op_impl/_custom_op/batchnorm_fold2_grad.py +125 -0
  445. mindspore/ops/_op_impl/_custom_op/batchnorm_fold2_grad_reduce.py +105 -0
  446. mindspore/ops/_op_impl/_custom_op/batchnorm_fold_grad.py +124 -0
  447. mindspore/ops/_op_impl/_custom_op/cholesky_trsm_impl.py +116 -0
  448. mindspore/ops/_op_impl/_custom_op/correction_mul.py +89 -0
  449. mindspore/ops/_op_impl/_custom_op/correction_mul_grad.py +196 -0
  450. mindspore/ops/_op_impl/_custom_op/dsd_back_impl.py +366 -0
  451. mindspore/ops/_op_impl/_custom_op/dsd_impl.py +162 -0
  452. mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perchannel.py +136 -0
  453. mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perchannel_grad.py +206 -0
  454. mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perchannel_grad_reduce.py +88 -0
  455. mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perlayer.py +128 -0
  456. mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perlayer_grad.py +199 -0
  457. mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perlayer_grad_reduce.py +88 -0
  458. mindspore/ops/_op_impl/_custom_op/fake_quant_perchannel.py +156 -0
  459. mindspore/ops/_op_impl/_custom_op/fake_quant_perchannel_grad.py +184 -0
  460. mindspore/ops/_op_impl/_custom_op/fake_quant_perlayer.py +143 -0
  461. mindspore/ops/_op_impl/_custom_op/fake_quant_perlayer_grad.py +169 -0
  462. mindspore/ops/_op_impl/_custom_op/fused_abs_max1_impl.py +548 -0
  463. mindspore/ops/_op_impl/_custom_op/img2col_impl.py +881 -0
  464. mindspore/ops/_op_impl/_custom_op/matmul_cube_dense_left_impl.py +278 -0
  465. mindspore/ops/_op_impl/_custom_op/matmul_cube_dense_right_impl.py +200 -0
  466. mindspore/ops/_op_impl/_custom_op/matmul_cube_fracz_left_cast_impl.py +334 -0
  467. mindspore/ops/_op_impl/_custom_op/matmul_cube_fracz_right_mul_impl.py +255 -0
  468. mindspore/ops/_op_impl/_custom_op/matmul_cube_impl.py +222 -0
  469. mindspore/ops/_op_impl/_custom_op/matmul_dds_grad_impl.py +644 -0
  470. mindspore/ops/_op_impl/_custom_op/matmul_dds_impl.py +488 -0
  471. mindspore/ops/_op_impl/_custom_op/matrix_combine_impl.py +87 -0
  472. mindspore/ops/_op_impl/_custom_op/minmax_update_perchannel.py +129 -0
  473. mindspore/ops/_op_impl/_custom_op/minmax_update_perlayer.py +121 -0
  474. mindspore/ops/_op_impl/_custom_op/transpose02314_impl.py +352 -0
  475. mindspore/ops/_op_impl/aicpu/__init__.py +441 -0
  476. mindspore/ops/_op_impl/aicpu/abs.py +36 -0
  477. mindspore/ops/_op_impl/aicpu/acos.py +32 -0
  478. mindspore/ops/_op_impl/aicpu/acos_grad.py +33 -0
  479. mindspore/ops/_op_impl/aicpu/acosh.py +34 -0
  480. mindspore/ops/_op_impl/aicpu/acosh_grad.py +35 -0
  481. mindspore/ops/_op_impl/aicpu/adaptive_avg_pool_2d.py +34 -0
  482. mindspore/ops/_op_impl/aicpu/adaptive_avg_pool_2d_grad.py +34 -0
  483. mindspore/ops/_op_impl/aicpu/adaptive_avg_pool_3d.py +39 -0
  484. mindspore/ops/_op_impl/aicpu/adaptive_avg_pool_3d_grad.py +39 -0
  485. mindspore/ops/_op_impl/aicpu/adaptive_max_pool_2d.py +37 -0
  486. mindspore/ops/_op_impl/aicpu/adaptive_max_pool_2d_grad.py +37 -0
  487. mindspore/ops/_op_impl/aicpu/adaptive_max_pool_3d.py +42 -0
  488. mindspore/ops/_op_impl/aicpu/adaptive_max_pool_3d_grad.py +152 -0
  489. mindspore/ops/_op_impl/aicpu/add.py +43 -0
  490. mindspore/ops/_op_impl/aicpu/add_n.py +41 -0
  491. mindspore/ops/_op_impl/aicpu/add_v2.py +40 -0
  492. mindspore/ops/_op_impl/aicpu/addcdiv.py +41 -0
  493. mindspore/ops/_op_impl/aicpu/addcmul.py +47 -0
  494. mindspore/ops/_op_impl/aicpu/adjust_contrastv2.py +32 -0
  495. mindspore/ops/_op_impl/aicpu/adjust_hue.py +31 -0
  496. mindspore/ops/_op_impl/aicpu/adjust_saturation.py +32 -0
  497. mindspore/ops/_op_impl/aicpu/affine_grid.py +33 -0
  498. mindspore/ops/_op_impl/aicpu/affine_grid_grad.py +35 -0
  499. mindspore/ops/_op_impl/aicpu/angle.py +31 -0
  500. mindspore/ops/_op_impl/aicpu/arg_max.py +75 -0
  501. mindspore/ops/_op_impl/aicpu/arg_min.py +75 -0
  502. mindspore/ops/_op_impl/aicpu/argmax_with_value.py +43 -0
  503. mindspore/ops/_op_impl/aicpu/argmin_with_value.py +43 -0
  504. mindspore/ops/_op_impl/aicpu/asin.py +32 -0
  505. mindspore/ops/_op_impl/aicpu/asin_grad.py +33 -0
  506. mindspore/ops/_op_impl/aicpu/asinh.py +34 -0
  507. mindspore/ops/_op_impl/aicpu/asinh_grad.py +35 -0
  508. mindspore/ops/_op_impl/aicpu/atanh.py +34 -0
  509. mindspore/ops/_op_impl/aicpu/avgpool_grad_v1.py +37 -0
  510. mindspore/ops/_op_impl/aicpu/avgpool_v1.py +36 -0
  511. mindspore/ops/_op_impl/aicpu/bartlett_window.py +36 -0
  512. mindspore/ops/_op_impl/aicpu/batch_matmul.py +43 -0
  513. mindspore/ops/_op_impl/aicpu/batch_norm_grad_grad.py +49 -0
  514. mindspore/ops/_op_impl/aicpu/bernoulli.py +48 -0
  515. mindspore/ops/_op_impl/aicpu/bessel_i0.py +31 -0
  516. mindspore/ops/_op_impl/aicpu/betainc.py +31 -0
  517. mindspore/ops/_op_impl/aicpu/bias_add.py +44 -0
  518. mindspore/ops/_op_impl/aicpu/bias_add_grad.py +42 -0
  519. mindspore/ops/_op_impl/aicpu/bincount.py +33 -0
  520. mindspore/ops/_op_impl/aicpu/blackman_window.py +36 -0
  521. mindspore/ops/_op_impl/aicpu/broadcast_to.py +58 -0
  522. mindspore/ops/_op_impl/aicpu/bucketize.py +34 -0
  523. mindspore/ops/_op_impl/aicpu/cache_swap_table.py +102 -0
  524. mindspore/ops/_op_impl/aicpu/cast.py +225 -0
  525. mindspore/ops/_op_impl/aicpu/cauchy.py +33 -0
  526. mindspore/ops/_op_impl/aicpu/channel_shuffle.py +40 -0
  527. mindspore/ops/_op_impl/aicpu/check_numerics.py +33 -0
  528. mindspore/ops/_op_impl/aicpu/cholesky.py +32 -0
  529. mindspore/ops/_op_impl/aicpu/cholesky_inverse.py +31 -0
  530. mindspore/ops/_op_impl/aicpu/cholesky_solve.py +33 -0
  531. mindspore/ops/_op_impl/aicpu/choleskygrad.py +32 -0
  532. mindspore/ops/_op_impl/aicpu/coalesce.py +37 -0
  533. mindspore/ops/_op_impl/aicpu/col2im.py +38 -0
  534. mindspore/ops/_op_impl/aicpu/combined_non_max_suppression.py +42 -0
  535. mindspore/ops/_op_impl/aicpu/compare_and_bitpack.py +37 -0
  536. mindspore/ops/_op_impl/aicpu/complex.py +32 -0
  537. mindspore/ops/_op_impl/aicpu/complex_abs.py +31 -0
  538. mindspore/ops/_op_impl/aicpu/compute_accidental_hits.py +44 -0
  539. mindspore/ops/_op_impl/aicpu/concat.py +57 -0
  540. mindspore/ops/_op_impl/aicpu/concat_offset.py +42 -0
  541. mindspore/ops/_op_impl/aicpu/concat_offset_v1.py +31 -0
  542. mindspore/ops/_op_impl/aicpu/conj.py +42 -0
  543. mindspore/ops/_op_impl/aicpu/conjugate_transpose.py +58 -0
  544. mindspore/ops/_op_impl/aicpu/cos.py +34 -0
  545. mindspore/ops/_op_impl/aicpu/cosh.py +34 -0
  546. mindspore/ops/_op_impl/aicpu/count_nonzero.py +43 -0
  547. mindspore/ops/_op_impl/aicpu/crop_and_resize.py +69 -0
  548. mindspore/ops/_op_impl/aicpu/crop_and_resize_grad_boxes.py +68 -0
  549. mindspore/ops/_op_impl/aicpu/crop_and_resize_grad_image.py +38 -0
  550. mindspore/ops/_op_impl/aicpu/cross.py +42 -0
  551. mindspore/ops/_op_impl/aicpu/csr_sparse_matrix_to_dense.py +48 -0
  552. mindspore/ops/_op_impl/aicpu/csr_sparse_matrix_to_sparse_tensor.py +51 -0
  553. mindspore/ops/_op_impl/aicpu/ctc_greedy_decoder.py +35 -0
  554. mindspore/ops/_op_impl/aicpu/ctc_loss_v2.py +43 -0
  555. mindspore/ops/_op_impl/aicpu/ctc_loss_v2_grad.py +45 -0
  556. mindspore/ops/_op_impl/aicpu/ctcloss.py +38 -0
  557. mindspore/ops/_op_impl/aicpu/cummax.py +41 -0
  558. mindspore/ops/_op_impl/aicpu/cumprod.py +58 -0
  559. mindspore/ops/_op_impl/aicpu/cumsum.py +58 -0
  560. mindspore/ops/_op_impl/aicpu/cumulative_logsumexp.py +36 -0
  561. mindspore/ops/_op_impl/aicpu/data_format_vec_permute.py +32 -0
  562. mindspore/ops/_op_impl/aicpu/deformable_offsets.py +38 -0
  563. mindspore/ops/_op_impl/aicpu/deformable_offsets_grad.py +43 -0
  564. mindspore/ops/_op_impl/aicpu/dense_to_csr_sparse_matrix.py +49 -0
  565. mindspore/ops/_op_impl/aicpu/dense_to_dense_set_operation.py +45 -0
  566. mindspore/ops/_op_impl/aicpu/dense_to_sparse_set_operation.py +48 -0
  567. mindspore/ops/_op_impl/aicpu/depth_to_space.py +44 -0
  568. mindspore/ops/_op_impl/aicpu/diag.py +36 -0
  569. mindspore/ops/_op_impl/aicpu/diag_part.py +36 -0
  570. mindspore/ops/_op_impl/aicpu/diagonal.py +35 -0
  571. mindspore/ops/_op_impl/aicpu/digamma.py +31 -0
  572. mindspore/ops/_op_impl/aicpu/div.py +41 -0
  573. mindspore/ops/_op_impl/aicpu/div_no_nan.py +35 -0
  574. mindspore/ops/_op_impl/aicpu/dropout2d.py +42 -0
  575. mindspore/ops/_op_impl/aicpu/dropout3d.py +42 -0
  576. mindspore/ops/_op_impl/aicpu/dropout_genmask.py +41 -0
  577. mindspore/ops/_op_impl/aicpu/dropout_genmask_v3.py +32 -0
  578. mindspore/ops/_op_impl/aicpu/dynamic_stitch.py +42 -0
  579. mindspore/ops/_op_impl/aicpu/edit_distance.py +56 -0
  580. mindspore/ops/_op_impl/aicpu/eig.py +35 -0
  581. mindspore/ops/_op_impl/aicpu/embedding_lookup.py +102 -0
  582. mindspore/ops/_op_impl/aicpu/end_of_sequence.py +30 -0
  583. mindspore/ops/_op_impl/aicpu/environ_create.py +28 -0
  584. mindspore/ops/_op_impl/aicpu/environ_destroy_all.py +28 -0
  585. mindspore/ops/_op_impl/aicpu/environ_get.py +41 -0
  586. mindspore/ops/_op_impl/aicpu/environ_set.py +40 -0
  587. mindspore/ops/_op_impl/aicpu/eps.py +32 -0
  588. mindspore/ops/_op_impl/aicpu/equal.py +41 -0
  589. mindspore/ops/_op_impl/aicpu/exp.py +37 -0
  590. mindspore/ops/_op_impl/aicpu/expand.py +45 -0
  591. mindspore/ops/_op_impl/aicpu/expand_dims.py +42 -0
  592. mindspore/ops/_op_impl/aicpu/expm1.py +34 -0
  593. mindspore/ops/_op_impl/aicpu/extract_glimpse.py +35 -0
  594. mindspore/ops/_op_impl/aicpu/eye.py +44 -0
  595. mindspore/ops/_op_impl/aicpu/fft_with_size.py +47 -0
  596. mindspore/ops/_op_impl/aicpu/fill_diagonal.py +39 -0
  597. mindspore/ops/_op_impl/aicpu/fill_v2.py +58 -0
  598. mindspore/ops/_op_impl/aicpu/flatten.py +43 -0
  599. mindspore/ops/_op_impl/aicpu/floor_div.py +38 -0
  600. mindspore/ops/_op_impl/aicpu/fmax.py +36 -0
  601. mindspore/ops/_op_impl/aicpu/fmin.py +37 -0
  602. mindspore/ops/_op_impl/aicpu/fractional_avg_pool.py +41 -0
  603. mindspore/ops/_op_impl/aicpu/fractional_avg_pool_grad.py +41 -0
  604. mindspore/ops/_op_impl/aicpu/fractional_max_pool.py +41 -0
  605. mindspore/ops/_op_impl/aicpu/fractional_max_pool3d_grad_with_fixed_ksize.py +43 -0
  606. mindspore/ops/_op_impl/aicpu/fractional_max_pool3d_with_fixed_ksize.py +65 -0
  607. mindspore/ops/_op_impl/aicpu/fractional_max_pool_grad.py +42 -0
  608. mindspore/ops/_op_impl/aicpu/fractional_max_pool_grad_with_fixed_ksize.py +42 -0
  609. mindspore/ops/_op_impl/aicpu/fractional_max_pool_with_fixed_ksize.py +49 -0
  610. mindspore/ops/_op_impl/aicpu/fse_decode.py +43 -0
  611. mindspore/ops/_op_impl/aicpu/fused_sparse_adam.py +46 -0
  612. mindspore/ops/_op_impl/aicpu/fused_sparse_ftrl.py +41 -0
  613. mindspore/ops/_op_impl/aicpu/fused_sparse_lazy_adam.py +46 -0
  614. mindspore/ops/_op_impl/aicpu/fused_sparse_proximal_adagrad.py +39 -0
  615. mindspore/ops/_op_impl/aicpu/gamma.py +38 -0
  616. mindspore/ops/_op_impl/aicpu/gather.py +46 -0
  617. mindspore/ops/_op_impl/aicpu/gather_d.py +79 -0
  618. mindspore/ops/_op_impl/aicpu/gather_d_grad_v2.py +79 -0
  619. mindspore/ops/_op_impl/aicpu/gather_grad.py +54 -0
  620. mindspore/ops/_op_impl/aicpu/gather_nd.py +56 -0
  621. mindspore/ops/_op_impl/aicpu/gcd.py +32 -0
  622. mindspore/ops/_op_impl/aicpu/generate_eod_mask.py +38 -0
  623. mindspore/ops/_op_impl/aicpu/geqrf.py +32 -0
  624. mindspore/ops/_op_impl/aicpu/get_next.py +39 -0
  625. mindspore/ops/_op_impl/aicpu/glu.py +33 -0
  626. mindspore/ops/_op_impl/aicpu/glu_grad.py +34 -0
  627. mindspore/ops/_op_impl/aicpu/greater.py +41 -0
  628. mindspore/ops/_op_impl/aicpu/greater_equal.py +41 -0
  629. mindspore/ops/_op_impl/aicpu/grid_sampler_2d.py +35 -0
  630. mindspore/ops/_op_impl/aicpu/grid_sampler_2d_grad.py +38 -0
  631. mindspore/ops/_op_impl/aicpu/grid_sampler_3d.py +34 -0
  632. mindspore/ops/_op_impl/aicpu/grid_sampler_3d_grad.py +38 -0
  633. mindspore/ops/_op_impl/aicpu/hamming_window.py +57 -0
  634. mindspore/ops/_op_impl/aicpu/hard_sigmoid.py +32 -0
  635. mindspore/ops/_op_impl/aicpu/hard_sigmoid_grad.py +33 -0
  636. mindspore/ops/_op_impl/aicpu/heaviside.py +40 -0
  637. mindspore/ops/_op_impl/aicpu/histogram.py +35 -0
  638. mindspore/ops/_op_impl/aicpu/hsv_to_rgb.py +32 -0
  639. mindspore/ops/_op_impl/aicpu/hypot.py +32 -0
  640. mindspore/ops/_op_impl/aicpu/identity.py +42 -0
  641. mindspore/ops/_op_impl/aicpu/identity_n.py +41 -0
  642. mindspore/ops/_op_impl/aicpu/igamma.py +30 -0
  643. mindspore/ops/_op_impl/aicpu/igammac.py +30 -0
  644. mindspore/ops/_op_impl/aicpu/igammagrada.py +30 -0
  645. mindspore/ops/_op_impl/aicpu/im2col.py +43 -0
  646. mindspore/ops/_op_impl/aicpu/imag.py +31 -0
  647. mindspore/ops/_op_impl/aicpu/index_fill.py +54 -0
  648. mindspore/ops/_op_impl/aicpu/index_put.py +50 -0
  649. mindspore/ops/_op_impl/aicpu/init_data_set_queue.py +27 -0
  650. mindspore/ops/_op_impl/aicpu/inplace_index_add.py +39 -0
  651. mindspore/ops/_op_impl/aicpu/instance_norm_v2.py +41 -0
  652. mindspore/ops/_op_impl/aicpu/instance_norm_v2_grad.py +44 -0
  653. mindspore/ops/_op_impl/aicpu/is_finite.py +40 -0
  654. mindspore/ops/_op_impl/aicpu/is_inf.py +31 -0
  655. mindspore/ops/_op_impl/aicpu/is_nan.py +31 -0
  656. mindspore/ops/_op_impl/aicpu/kldivloss.py +34 -0
  657. mindspore/ops/_op_impl/aicpu/kldivlossgrad.py +35 -0
  658. mindspore/ops/_op_impl/aicpu/layer_norm_grad_grad.py +47 -0
  659. mindspore/ops/_op_impl/aicpu/lcm.py +32 -0
  660. mindspore/ops/_op_impl/aicpu/left_shift.py +38 -0
  661. mindspore/ops/_op_impl/aicpu/less.py +41 -0
  662. mindspore/ops/_op_impl/aicpu/less_equal.py +41 -0
  663. mindspore/ops/_op_impl/aicpu/lgamma.py +33 -0
  664. mindspore/ops/_op_impl/aicpu/linear_sum_assignment.py +57 -0
  665. mindspore/ops/_op_impl/aicpu/linspace.py +33 -0
  666. mindspore/ops/_op_impl/aicpu/list_diff.py +50 -0
  667. mindspore/ops/_op_impl/aicpu/log.py +37 -0
  668. mindspore/ops/_op_impl/aicpu/log1p.py +34 -0
  669. mindspore/ops/_op_impl/aicpu/log_matrix_determinant.py +31 -0
  670. mindspore/ops/_op_impl/aicpu/log_normal_reverse.py +33 -0
  671. mindspore/ops/_op_impl/aicpu/log_uniform_candidate_sampler.py +37 -0
  672. mindspore/ops/_op_impl/aicpu/logical_xor.py +30 -0
  673. mindspore/ops/_op_impl/aicpu/logit.py +33 -0
  674. mindspore/ops/_op_impl/aicpu/logit_grad.py +34 -0
  675. mindspore/ops/_op_impl/aicpu/logspace.py +36 -0
  676. mindspore/ops/_op_impl/aicpu/lower_bound.py +47 -0
  677. mindspore/ops/_op_impl/aicpu/lstsq.py +34 -0
  678. mindspore/ops/_op_impl/aicpu/lu.py +39 -0
  679. mindspore/ops/_op_impl/aicpu/lu_solve.py +32 -0
  680. mindspore/ops/_op_impl/aicpu/lu_unpack.py +114 -0
  681. mindspore/ops/_op_impl/aicpu/lu_unpack_grad.py +49 -0
  682. mindspore/ops/_op_impl/aicpu/masked_fill.py +42 -0
  683. mindspore/ops/_op_impl/aicpu/masked_scatter.py +40 -0
  684. mindspore/ops/_op_impl/aicpu/masked_select.py +31 -0
  685. mindspore/ops/_op_impl/aicpu/masked_select_grad.py +35 -0
  686. mindspore/ops/_op_impl/aicpu/matmul.py +39 -0
  687. mindspore/ops/_op_impl/aicpu/matrix_band_part.py +59 -0
  688. mindspore/ops/_op_impl/aicpu/matrix_determinant.py +30 -0
  689. mindspore/ops/_op_impl/aicpu/matrix_diag_part_v3.py +54 -0
  690. mindspore/ops/_op_impl/aicpu/matrix_diag_v3.py +56 -0
  691. mindspore/ops/_op_impl/aicpu/matrix_exp.py +34 -0
  692. mindspore/ops/_op_impl/aicpu/matrix_inverse.py +31 -0
  693. mindspore/ops/_op_impl/aicpu/matrix_logarithm.py +31 -0
  694. mindspore/ops/_op_impl/aicpu/matrix_power.py +37 -0
  695. mindspore/ops/_op_impl/aicpu/matrix_set_diag_v3.py +54 -0
  696. mindspore/ops/_op_impl/aicpu/matrix_solve.py +35 -0
  697. mindspore/ops/_op_impl/aicpu/matrix_solve_ls.py +36 -0
  698. mindspore/ops/_op_impl/aicpu/matrix_triangular_solve.py +36 -0
  699. mindspore/ops/_op_impl/aicpu/max_pool3d_grad_with_argmax.py +60 -0
  700. mindspore/ops/_op_impl/aicpu/max_pool3d_with_argmax.py +59 -0
  701. mindspore/ops/_op_impl/aicpu/max_unpool2d.py +57 -0
  702. mindspore/ops/_op_impl/aicpu/max_unpool2d_grad.py +58 -0
  703. mindspore/ops/_op_impl/aicpu/max_unpool3d.py +57 -0
  704. mindspore/ops/_op_impl/aicpu/max_unpool3d_grad.py +58 -0
  705. mindspore/ops/_op_impl/aicpu/maximum_grad_grad.py +40 -0
  706. mindspore/ops/_op_impl/aicpu/maxpool_grad_v1.py +46 -0
  707. mindspore/ops/_op_impl/aicpu/maxpool_v1.py +42 -0
  708. mindspore/ops/_op_impl/aicpu/median.py +39 -0
  709. mindspore/ops/_op_impl/aicpu/median_grad.py +45 -0
  710. mindspore/ops/_op_impl/aicpu/meshgrid.py +41 -0
  711. mindspore/ops/_op_impl/aicpu/minimum_grad_grad.py +40 -0
  712. mindspore/ops/_op_impl/aicpu/mirror_pad.py +50 -0
  713. mindspore/ops/_op_impl/aicpu/mirror_pad_grad.py +48 -0
  714. mindspore/ops/_op_impl/aicpu/mul.py +43 -0
  715. mindspore/ops/_op_impl/aicpu/mul_no_nan.py +42 -0
  716. mindspore/ops/_op_impl/aicpu/multi_margin_loss.py +37 -0
  717. mindspore/ops/_op_impl/aicpu/multi_margin_loss_grad.py +41 -0
  718. mindspore/ops/_op_impl/aicpu/multilabel_margin_loss_grad.py +37 -0
  719. mindspore/ops/_op_impl/aicpu/multinomial.py +47 -0
  720. mindspore/ops/_op_impl/aicpu/multinomial_with_replacement.py +35 -0
  721. mindspore/ops/_op_impl/aicpu/mvlgamma.py +32 -0
  722. mindspore/ops/_op_impl/aicpu/mvlgamma_grad.py +33 -0
  723. mindspore/ops/_op_impl/aicpu/nan_to_num.py +34 -0
  724. mindspore/ops/_op_impl/aicpu/neg.py +36 -0
  725. mindspore/ops/_op_impl/aicpu/nextafter.py +32 -0
  726. mindspore/ops/_op_impl/aicpu/nllloss.py +38 -0
  727. mindspore/ops/_op_impl/aicpu/nllloss_grad.py +39 -0
  728. mindspore/ops/_op_impl/aicpu/no_repeat_ngram.py +34 -0
  729. mindspore/ops/_op_impl/aicpu/non_deterministic_ints.py +33 -0
  730. mindspore/ops/_op_impl/aicpu/non_max_suppression.py +36 -0
  731. mindspore/ops/_op_impl/aicpu/non_max_suppression_with_overlaps.py +35 -0
  732. mindspore/ops/_op_impl/aicpu/non_zero.py +43 -0
  733. mindspore/ops/_op_impl/aicpu/not_equal.py +39 -0
  734. mindspore/ops/_op_impl/aicpu/nth_element.py +39 -0
  735. mindspore/ops/_op_impl/aicpu/nuclear_norm.py +33 -0
  736. mindspore/ops/_op_impl/aicpu/one_hot.py +116 -0
  737. mindspore/ops/_op_impl/aicpu/ones_like.py +39 -0
  738. mindspore/ops/_op_impl/aicpu/orgqr.py +34 -0
  739. mindspore/ops/_op_impl/aicpu/pad_and_shift.py +33 -0
  740. mindspore/ops/_op_impl/aicpu/pad_v3.py +61 -0
  741. mindspore/ops/_op_impl/aicpu/pad_v3_grad.py +59 -0
  742. mindspore/ops/_op_impl/aicpu/padding.py +41 -0
  743. mindspore/ops/_op_impl/aicpu/parameterized_truncated_normal.py +54 -0
  744. mindspore/ops/_op_impl/aicpu/pdist_grad.py +33 -0
  745. mindspore/ops/_op_impl/aicpu/poisson.py +37 -0
  746. mindspore/ops/_op_impl/aicpu/polar.py +32 -0
  747. mindspore/ops/_op_impl/aicpu/polygamma.py +34 -0
  748. mindspore/ops/_op_impl/aicpu/pow.py +39 -0
  749. mindspore/ops/_op_impl/aicpu/print_tensor.py +39 -0
  750. mindspore/ops/_op_impl/aicpu/priority_replay_buffer.py +113 -0
  751. mindspore/ops/_op_impl/aicpu/qr.py +36 -0
  752. mindspore/ops/_op_impl/aicpu/quant_dtype_cast.py +40 -0
  753. mindspore/ops/_op_impl/aicpu/quantile.py +35 -0
  754. mindspore/ops/_op_impl/aicpu/ragged_range.py +49 -0
  755. mindspore/ops/_op_impl/aicpu/ragged_tensor_to_sparse.py +73 -0
  756. mindspore/ops/_op_impl/aicpu/ragged_tensor_to_tensor.py +74 -0
  757. mindspore/ops/_op_impl/aicpu/random_categorical.py +68 -0
  758. mindspore/ops/_op_impl/aicpu/random_choice_with_mask.py +36 -0
  759. mindspore/ops/_op_impl/aicpu/random_gamma.py +38 -0
  760. mindspore/ops/_op_impl/aicpu/random_poisson.py +134 -0
  761. mindspore/ops/_op_impl/aicpu/random_shuffle.py +47 -0
  762. mindspore/ops/_op_impl/aicpu/randperm.py +38 -0
  763. mindspore/ops/_op_impl/aicpu/randperm_v2.py +41 -0
  764. mindspore/ops/_op_impl/aicpu/range.py +36 -0
  765. mindspore/ops/_op_impl/aicpu/range_v2.py +35 -0
  766. mindspore/ops/_op_impl/aicpu/real.py +31 -0
  767. mindspore/ops/_op_impl/aicpu/real_div.py +40 -0
  768. mindspore/ops/_op_impl/aicpu/reciprocal.py +34 -0
  769. mindspore/ops/_op_impl/aicpu/reciprocal_grad.py +35 -0
  770. mindspore/ops/_op_impl/aicpu/reduce_mean.py +57 -0
  771. mindspore/ops/_op_impl/aicpu/reduce_prod.py +57 -0
  772. mindspore/ops/_op_impl/aicpu/reduce_sum.py +57 -0
  773. mindspore/ops/_op_impl/aicpu/relu_grad_v3.py +41 -0
  774. mindspore/ops/_op_impl/aicpu/relu_v3.py +38 -0
  775. mindspore/ops/_op_impl/aicpu/reservoir_replay_buffer.py +96 -0
  776. mindspore/ops/_op_impl/aicpu/reshape.py +42 -0
  777. mindspore/ops/_op_impl/aicpu/resize_area.py +40 -0
  778. mindspore/ops/_op_impl/aicpu/resize_bicubic.py +20 -0
  779. mindspore/ops/_op_impl/aicpu/resize_bicubic_grad.py +19 -0
  780. mindspore/ops/_op_impl/aicpu/resize_bilinear.py +32 -0
  781. mindspore/ops/_op_impl/aicpu/resize_bilinear_grad.py +32 -0
  782. mindspore/ops/_op_impl/aicpu/resize_nearest_neighbor_v2.py +36 -0
  783. mindspore/ops/_op_impl/aicpu/resize_nearest_neighbor_v2_grad.py +35 -0
  784. mindspore/ops/_op_impl/aicpu/resize_v2.py +68 -0
  785. mindspore/ops/_op_impl/aicpu/resize_v2_grad.py +68 -0
  786. mindspore/ops/_op_impl/aicpu/reverse_sequence.py +55 -0
  787. mindspore/ops/_op_impl/aicpu/reversev2.py +54 -0
  788. mindspore/ops/_op_impl/aicpu/rgb_to_hsv.py +32 -0
  789. mindspore/ops/_op_impl/aicpu/right_shift.py +38 -0
  790. mindspore/ops/_op_impl/aicpu/rnnt_loss.py +35 -0
  791. mindspore/ops/_op_impl/aicpu/round.py +34 -0
  792. mindspore/ops/_op_impl/aicpu/rsqrt.py +33 -0
  793. mindspore/ops/_op_impl/aicpu/rsqrt_grad.py +36 -0
  794. mindspore/ops/_op_impl/aicpu/sample_distorted_bounding_box_v2.py +49 -0
  795. mindspore/ops/_op_impl/aicpu/scale_and_translate.py +52 -0
  796. mindspore/ops/_op_impl/aicpu/scale_and_translate_grad.py +36 -0
  797. mindspore/ops/_op_impl/aicpu/scatter.py +79 -0
  798. mindspore/ops/_op_impl/aicpu/scatter_add_with_axis.py +53 -0
  799. mindspore/ops/_op_impl/aicpu/scatter_elements.py +39 -0
  800. mindspore/ops/_op_impl/aicpu/scatter_nd.py +59 -0
  801. mindspore/ops/_op_impl/aicpu/scatter_nd_max.py +54 -0
  802. mindspore/ops/_op_impl/aicpu/scatter_nd_min.py +54 -0
  803. mindspore/ops/_op_impl/aicpu/scatter_nd_update.py +59 -0
  804. mindspore/ops/_op_impl/aicpu/search_sorted.py +44 -0
  805. mindspore/ops/_op_impl/aicpu/segment_max.py +52 -0
  806. mindspore/ops/_op_impl/aicpu/segment_mean.py +56 -0
  807. mindspore/ops/_op_impl/aicpu/segment_min.py +52 -0
  808. mindspore/ops/_op_impl/aicpu/segment_prod.py +56 -0
  809. mindspore/ops/_op_impl/aicpu/segment_sum.py +56 -0
  810. mindspore/ops/_op_impl/aicpu/select.py +45 -0
  811. mindspore/ops/_op_impl/aicpu/self_adjoint_eig.py +34 -0
  812. mindspore/ops/_op_impl/aicpu/sequence_add.py +34 -0
  813. mindspore/ops/_op_impl/aicpu/sequence_add_offset.py +34 -0
  814. mindspore/ops/_op_impl/aicpu/sequence_addn.py +38 -0
  815. mindspore/ops/_op_impl/aicpu/sequence_concat.py +40 -0
  816. mindspore/ops/_op_impl/aicpu/sequence_stack.py +40 -0
  817. mindspore/ops/_op_impl/aicpu/set_size.py +38 -0
  818. mindspore/ops/_op_impl/aicpu/sign.py +36 -0
  819. mindspore/ops/_op_impl/aicpu/sin.py +34 -0
  820. mindspore/ops/_op_impl/aicpu/sinc.py +43 -0
  821. mindspore/ops/_op_impl/aicpu/sinh.py +34 -0
  822. mindspore/ops/_op_impl/aicpu/slice.py +59 -0
  823. mindspore/ops/_op_impl/aicpu/slice_grad.py +76 -0
  824. mindspore/ops/_op_impl/aicpu/smooth_l1_loss.py +35 -0
  825. mindspore/ops/_op_impl/aicpu/smooth_l1_loss_grad.py +37 -0
  826. mindspore/ops/_op_impl/aicpu/sort.py +39 -0
  827. mindspore/ops/_op_impl/aicpu/space_to_depth.py +44 -0
  828. mindspore/ops/_op_impl/aicpu/sparse_addmm.py +87 -0
  829. mindspore/ops/_op_impl/aicpu/sparse_apply_adagrad_da.py +80 -0
  830. mindspore/ops/_op_impl/aicpu/sparse_apply_centered_rms_prop.py +105 -0
  831. mindspore/ops/_op_impl/aicpu/sparse_apply_momentum.py +80 -0
  832. mindspore/ops/_op_impl/aicpu/sparse_apply_proximal_gradient_descent.py +79 -0
  833. mindspore/ops/_op_impl/aicpu/sparse_concat.py +59 -0
  834. mindspore/ops/_op_impl/aicpu/sparse_cross.py +42 -0
  835. mindspore/ops/_op_impl/aicpu/sparse_dense_cwise_add.py +58 -0
  836. mindspore/ops/_op_impl/aicpu/sparse_dense_cwise_div.py +58 -0
  837. mindspore/ops/_op_impl/aicpu/sparse_dense_cwise_mul.py +58 -0
  838. mindspore/ops/_op_impl/aicpu/sparse_fill_empty_rows.py +63 -0
  839. mindspore/ops/_op_impl/aicpu/sparse_fill_empty_rows_grad.py +45 -0
  840. mindspore/ops/_op_impl/aicpu/sparse_matrix_mat_mul.py +56 -0
  841. mindspore/ops/_op_impl/aicpu/sparse_matrix_nnz.py +81 -0
  842. mindspore/ops/_op_impl/aicpu/sparse_matrix_transpose.py +116 -0
  843. mindspore/ops/_op_impl/aicpu/sparse_reorder.py +56 -0
  844. mindspore/ops/_op_impl/aicpu/sparse_reshape.py +34 -0
  845. mindspore/ops/_op_impl/aicpu/sparse_segment_mean_grad.py +36 -0
  846. mindspore/ops/_op_impl/aicpu/sparse_segment_mean_with_num_segments.py +44 -0
  847. mindspore/ops/_op_impl/aicpu/sparse_segment_sqrt_n.py +43 -0
  848. mindspore/ops/_op_impl/aicpu/sparse_segment_sqrt_n_grad.py +38 -0
  849. mindspore/ops/_op_impl/aicpu/sparse_segment_sqrt_n_with_num_segments.py +44 -0
  850. mindspore/ops/_op_impl/aicpu/sparse_segment_sum.py +49 -0
  851. mindspore/ops/_op_impl/aicpu/sparse_segment_sum_with_num_segments.py +68 -0
  852. mindspore/ops/_op_impl/aicpu/sparse_slice.py +63 -0
  853. mindspore/ops/_op_impl/aicpu/sparse_slice_grad.py +61 -0
  854. mindspore/ops/_op_impl/aicpu/sparse_softmax.py +33 -0
  855. mindspore/ops/_op_impl/aicpu/sparse_softmax_cross_entropy_with_logits_v2.py +35 -0
  856. mindspore/ops/_op_impl/aicpu/sparse_sparse_maximum.py +53 -0
  857. mindspore/ops/_op_impl/aicpu/sparse_sparse_minimum.py +53 -0
  858. mindspore/ops/_op_impl/aicpu/sparse_tensor_dense_add.py +84 -0
  859. mindspore/ops/_op_impl/aicpu/sparse_tensor_dense_mat_mul.py +190 -0
  860. mindspore/ops/_op_impl/aicpu/sparse_tensor_to_csr_sparse_matrix.py +51 -0
  861. mindspore/ops/_op_impl/aicpu/sparse_to_dense_v2.py +73 -0
  862. mindspore/ops/_op_impl/aicpu/split.py +45 -0
  863. mindspore/ops/_op_impl/aicpu/sqrt.py +34 -0
  864. mindspore/ops/_op_impl/aicpu/sqrt_grad.py +35 -0
  865. mindspore/ops/_op_impl/aicpu/square.py +35 -0
  866. mindspore/ops/_op_impl/aicpu/squared_difference.py +37 -0
  867. mindspore/ops/_op_impl/aicpu/squeeze.py +42 -0
  868. mindspore/ops/_op_impl/aicpu/sspaddmm.py +97 -0
  869. mindspore/ops/_op_impl/aicpu/stack.py +45 -0
  870. mindspore/ops/_op_impl/aicpu/stack_push_pop.py +87 -0
  871. mindspore/ops/_op_impl/aicpu/standard_laplace.py +34 -0
  872. mindspore/ops/_op_impl/aicpu/standard_normal.py +34 -0
  873. mindspore/ops/_op_impl/aicpu/stateless_dropout_genmask.py +37 -0
  874. mindspore/ops/_op_impl/aicpu/stft.py +70 -0
  875. mindspore/ops/_op_impl/aicpu/strided_slice.py +43 -0
  876. mindspore/ops/_op_impl/aicpu/strided_slice_grad.py +50 -0
  877. mindspore/ops/_op_impl/aicpu/strided_slice_v2.py +93 -0
  878. mindspore/ops/_op_impl/aicpu/strided_slice_v2_grad.py +66 -0
  879. mindspore/ops/_op_impl/aicpu/sub.py +41 -0
  880. mindspore/ops/_op_impl/aicpu/sub_and_filter.py +36 -0
  881. mindspore/ops/_op_impl/aicpu/tan.py +34 -0
  882. mindspore/ops/_op_impl/aicpu/tanh.py +34 -0
  883. mindspore/ops/_op_impl/aicpu/tanh_grad.py +35 -0
  884. mindspore/ops/_op_impl/aicpu/tensor_scatter_update.py +59 -0
  885. mindspore/ops/_op_impl/aicpu/tile.py +56 -0
  886. mindspore/ops/_op_impl/aicpu/topk.py +34 -0
  887. mindspore/ops/_op_impl/aicpu/trace.py +40 -0
  888. mindspore/ops/_op_impl/aicpu/tracegrad.py +41 -0
  889. mindspore/ops/_op_impl/aicpu/trans_data.py +35 -0
  890. mindspore/ops/_op_impl/aicpu/transpose.py +58 -0
  891. mindspore/ops/_op_impl/aicpu/tridiagonal_matmul.py +42 -0
  892. mindspore/ops/_op_impl/aicpu/tridiagonal_solve.py +35 -0
  893. mindspore/ops/_op_impl/aicpu/tril.py +42 -0
  894. mindspore/ops/_op_impl/aicpu/tril_indices.py +34 -0
  895. mindspore/ops/_op_impl/aicpu/triplet_margin_loss.py +62 -0
  896. mindspore/ops/_op_impl/aicpu/triu.py +43 -0
  897. mindspore/ops/_op_impl/aicpu/triu_indices.py +34 -0
  898. mindspore/ops/_op_impl/aicpu/truncated_normal.py +39 -0
  899. mindspore/ops/_op_impl/aicpu/uniform.py +36 -0
  900. mindspore/ops/_op_impl/aicpu/uniform_candidate_sampler.py +41 -0
  901. mindspore/ops/_op_impl/aicpu/uniform_int.py +36 -0
  902. mindspore/ops/_op_impl/aicpu/uniform_real.py +33 -0
  903. mindspore/ops/_op_impl/aicpu/unique.py +31 -0
  904. mindspore/ops/_op_impl/aicpu/unique_consecutive.py +47 -0
  905. mindspore/ops/_op_impl/aicpu/unique_with_pad.py +32 -0
  906. mindspore/ops/_op_impl/aicpu/unravel_index.py +32 -0
  907. mindspore/ops/_op_impl/aicpu/unsorted_segment_prod.py +53 -0
  908. mindspore/ops/_op_impl/aicpu/unsorted_segment_sum.py +57 -0
  909. mindspore/ops/_op_impl/aicpu/unstack.py +45 -0
  910. mindspore/ops/_op_impl/aicpu/update_cache.py +44 -0
  911. mindspore/ops/_op_impl/aicpu/upper_bound.py +47 -0
  912. mindspore/ops/_op_impl/aicpu/upsample_nearest_3d.py +42 -0
  913. mindspore/ops/_op_impl/aicpu/upsample_nearest_3d_grad.py +49 -0
  914. mindspore/ops/_op_impl/aicpu/upsample_trilinear_3d.py +40 -0
  915. mindspore/ops/_op_impl/aicpu/upsample_trilinear_3d_grad.py +50 -0
  916. mindspore/ops/_op_impl/aicpu/xdivy.py +35 -0
  917. mindspore/ops/_op_impl/aicpu/xlogy.py +33 -0
  918. mindspore/ops/_op_impl/aicpu/zeros_like.py +42 -0
  919. mindspore/ops/_op_impl/aicpu/zeta.py +31 -0
  920. mindspore/ops/_op_impl/akg/__init__.py +19 -0
  921. mindspore/ops/_op_impl/akg/ascend/__init__.py +48 -0
  922. mindspore/ops/_op_impl/akg/ascend/abs.py +35 -0
  923. mindspore/ops/_op_impl/akg/ascend/add.py +42 -0
  924. mindspore/ops/_op_impl/akg/ascend/add_n.py +37 -0
  925. mindspore/ops/_op_impl/akg/ascend/batchmatmul.py +33 -0
  926. mindspore/ops/_op_impl/akg/ascend/cast.py +46 -0
  927. mindspore/ops/_op_impl/akg/ascend/equal.py +35 -0
  928. mindspore/ops/_op_impl/akg/ascend/exp.py +35 -0
  929. mindspore/ops/_op_impl/akg/ascend/expand_dims.py +33 -0
  930. mindspore/ops/_op_impl/akg/ascend/greater.py +34 -0
  931. mindspore/ops/_op_impl/akg/ascend/greater_equal.py +35 -0
  932. mindspore/ops/_op_impl/akg/ascend/less.py +31 -0
  933. mindspore/ops/_op_impl/akg/ascend/less_equal.py +35 -0
  934. mindspore/ops/_op_impl/akg/ascend/load_im2col.py +33 -0
  935. mindspore/ops/_op_impl/akg/ascend/log.py +34 -0
  936. mindspore/ops/_op_impl/akg/ascend/maximum.py +36 -0
  937. mindspore/ops/_op_impl/akg/ascend/minimum.py +39 -0
  938. mindspore/ops/_op_impl/akg/ascend/mul.py +41 -0
  939. mindspore/ops/_op_impl/akg/ascend/neg.py +37 -0
  940. mindspore/ops/_op_impl/akg/ascend/pow.py +35 -0
  941. mindspore/ops/_op_impl/akg/ascend/prod_force_se_a.py +33 -0
  942. mindspore/ops/_op_impl/akg/ascend/real_div.py +36 -0
  943. mindspore/ops/_op_impl/akg/ascend/reciprocal.py +32 -0
  944. mindspore/ops/_op_impl/akg/ascend/reduce_max.py +32 -0
  945. mindspore/ops/_op_impl/akg/ascend/reduce_min.py +32 -0
  946. mindspore/ops/_op_impl/akg/ascend/reduce_sum.py +37 -0
  947. mindspore/ops/_op_impl/akg/ascend/rsqrt.py +35 -0
  948. mindspore/ops/_op_impl/akg/ascend/select.py +37 -0
  949. mindspore/ops/_op_impl/akg/ascend/sqrt.py +35 -0
  950. mindspore/ops/_op_impl/akg/ascend/square.py +35 -0
  951. mindspore/ops/_op_impl/akg/ascend/sub.py +42 -0
  952. mindspore/ops/_op_impl/akg/cpu/__init__.py +23 -0
  953. mindspore/ops/_op_impl/akg/cpu/coo2csr.py +29 -0
  954. mindspore/ops/_op_impl/akg/cpu/csr2coo.py +29 -0
  955. mindspore/ops/_op_impl/akg/cpu/csr_gather.py +33 -0
  956. mindspore/ops/_op_impl/akg/cpu/csr_mm.py +34 -0
  957. mindspore/ops/_op_impl/akg/cpu/csr_mul.py +33 -0
  958. mindspore/ops/_op_impl/akg/cpu/csr_mv.py +33 -0
  959. mindspore/ops/_op_impl/akg/cpu/csr_reduce_sum.py +31 -0
  960. mindspore/ops/_op_impl/akg/gpu/__init__.py +24 -0
  961. mindspore/ops/_op_impl/akg/gpu/coo2csr.py +29 -0
  962. mindspore/ops/_op_impl/akg/gpu/csr2coo.py +29 -0
  963. mindspore/ops/_op_impl/akg/gpu/csr_div.py +36 -0
  964. mindspore/ops/_op_impl/akg/gpu/csr_gather.py +33 -0
  965. mindspore/ops/_op_impl/akg/gpu/csr_mm.py +37 -0
  966. mindspore/ops/_op_impl/akg/gpu/csr_mul.py +36 -0
  967. mindspore/ops/_op_impl/akg/gpu/csr_mv.py +36 -0
  968. mindspore/ops/_op_impl/akg/gpu/csr_reduce_sum.py +33 -0
  969. mindspore/ops/_op_impl/cpu/__init__.py +78 -0
  970. mindspore/ops/_op_impl/cpu/adam.py +49 -0
  971. mindspore/ops/_op_impl/cpu/adam_weight_decay.py +47 -0
  972. mindspore/ops/_op_impl/cpu/arg_max.py +30 -0
  973. mindspore/ops/_op_impl/cpu/arg_max_with_value.py +31 -0
  974. mindspore/ops/_op_impl/cpu/arg_min_with_value.py +31 -0
  975. mindspore/ops/_op_impl/cpu/buffer_append.py +28 -0
  976. mindspore/ops/_op_impl/cpu/buffer_get.py +28 -0
  977. mindspore/ops/_op_impl/cpu/buffer_sample.py +28 -0
  978. mindspore/ops/_op_impl/cpu/cast.py +171 -0
  979. mindspore/ops/_op_impl/cpu/concat_offset.py +38 -0
  980. mindspore/ops/_op_impl/cpu/conv2d.py +30 -0
  981. mindspore/ops/_op_impl/cpu/conv3d.py +30 -0
  982. mindspore/ops/_op_impl/cpu/div.py +32 -0
  983. mindspore/ops/_op_impl/cpu/dropout.py +31 -0
  984. mindspore/ops/_op_impl/cpu/dropout_grad.py +30 -0
  985. mindspore/ops/_op_impl/cpu/dynamic_shape.py +42 -0
  986. mindspore/ops/_op_impl/cpu/dynamic_stitch.py +41 -0
  987. mindspore/ops/_op_impl/cpu/equal_count.py +30 -0
  988. mindspore/ops/_op_impl/cpu/gather_d.py +49 -0
  989. mindspore/ops/_op_impl/cpu/gather_d_grad.py +38 -0
  990. mindspore/ops/_op_impl/cpu/gather_d_grad_v2.py +40 -0
  991. mindspore/ops/_op_impl/cpu/gather_v2.py +40 -0
  992. mindspore/ops/_op_impl/cpu/hsigmoid.py +33 -0
  993. mindspore/ops/_op_impl/cpu/hsigmoid_grad.py +34 -0
  994. mindspore/ops/_op_impl/cpu/hswish.py +32 -0
  995. mindspore/ops/_op_impl/cpu/hswish_grad.py +33 -0
  996. mindspore/ops/_op_impl/cpu/identity_n.py +40 -0
  997. mindspore/ops/_op_impl/cpu/is_finite.py +39 -0
  998. mindspore/ops/_op_impl/cpu/l2loss.py +30 -0
  999. mindspore/ops/_op_impl/cpu/layer_norm.py +36 -0
  1000. mindspore/ops/_op_impl/cpu/layer_norm_grad.py +38 -0
  1001. mindspore/ops/_op_impl/cpu/maximum.py +35 -0
  1002. mindspore/ops/_op_impl/cpu/maximum_grad.py +47 -0
  1003. mindspore/ops/_op_impl/cpu/minimum.py +40 -0
  1004. mindspore/ops/_op_impl/cpu/minimum_grad.py +51 -0
  1005. mindspore/ops/_op_impl/cpu/mirror_pad.py +36 -0
  1006. mindspore/ops/_op_impl/cpu/mirror_pad_grad.py +36 -0
  1007. mindspore/ops/_op_impl/cpu/mul.py +32 -0
  1008. mindspore/ops/_op_impl/cpu/one_hot.py +31 -0
  1009. mindspore/ops/_op_impl/cpu/pad.py +32 -0
  1010. mindspore/ops/_op_impl/cpu/pow.py +32 -0
  1011. mindspore/ops/_op_impl/cpu/priority_replay_buffer.py +42 -0
  1012. mindspore/ops/_op_impl/cpu/pyexecute.py +29 -0
  1013. mindspore/ops/_op_impl/cpu/pyfunc.py +29 -0
  1014. mindspore/ops/_op_impl/cpu/range.py +34 -0
  1015. mindspore/ops/_op_impl/cpu/real_div.py +33 -0
  1016. mindspore/ops/_op_impl/cpu/reduce_all.py +29 -0
  1017. mindspore/ops/_op_impl/cpu/reduce_any.py +29 -0
  1018. mindspore/ops/_op_impl/cpu/reduce_max.py +32 -0
  1019. mindspore/ops/_op_impl/cpu/reduce_mean.py +40 -0
  1020. mindspore/ops/_op_impl/cpu/reduce_min.py +32 -0
  1021. mindspore/ops/_op_impl/cpu/reduce_prod.py +40 -0
  1022. mindspore/ops/_op_impl/cpu/reduce_std.py +31 -0
  1023. mindspore/ops/_op_impl/cpu/reduce_sum.py +41 -0
  1024. mindspore/ops/_op_impl/cpu/space_to_batch_nd.py +38 -0
  1025. mindspore/ops/_op_impl/cpu/sparse_slice.py +62 -0
  1026. mindspore/ops/_op_impl/cpu/sparse_slice_grad.py +60 -0
  1027. mindspore/ops/_op_impl/cpu/split.py +34 -0
  1028. mindspore/ops/_op_impl/cpu/sspaddmm.py +95 -0
  1029. mindspore/ops/_op_impl/cpu/stack.py +38 -0
  1030. mindspore/ops/_op_impl/cpu/sub.py +32 -0
  1031. mindspore/ops/_op_impl/cpu/tensor_copy_slices.py +41 -0
  1032. mindspore/ops/_op_impl/cpu/tile.py +37 -0
  1033. mindspore/ops/_op_impl/cpu/top_k.py +31 -0
  1034. mindspore/ops/_op_impl/cpu/transpose.py +39 -0
  1035. mindspore/ops/_primitive_cache.py +90 -0
  1036. mindspore/ops/_register_for_op.py +73 -0
  1037. mindspore/ops/_utils/__init__.py +20 -0
  1038. mindspore/ops/_utils/utils.py +147 -0
  1039. mindspore/ops/_vmap/__init__.py +25 -0
  1040. mindspore/ops/_vmap/vmap_array_ops.py +2151 -0
  1041. mindspore/ops/_vmap/vmap_base.py +533 -0
  1042. mindspore/ops/_vmap/vmap_convolution_ops.py +441 -0
  1043. mindspore/ops/_vmap/vmap_debug_ops.py +50 -0
  1044. mindspore/ops/_vmap/vmap_grad_math_ops.py +274 -0
  1045. mindspore/ops/_vmap/vmap_grad_nn_ops.py +806 -0
  1046. mindspore/ops/_vmap/vmap_image_ops.py +194 -0
  1047. mindspore/ops/_vmap/vmap_math_ops.py +977 -0
  1048. mindspore/ops/_vmap/vmap_nn_ops.py +2209 -0
  1049. mindspore/ops/_vmap/vmap_other_ops.py +105 -0
  1050. mindspore/ops/_vmap/vmap_random_ops.py +122 -0
  1051. mindspore/ops/_vmap/vmap_sparse_ops.py +89 -0
  1052. mindspore/ops/auto_generate/__init__.py +31 -0
  1053. mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +231 -0
  1054. mindspore/ops/auto_generate/gen_arg_dtype_cast.py +250 -0
  1055. mindspore/ops/auto_generate/gen_arg_handler.py +197 -0
  1056. mindspore/ops/auto_generate/gen_extend_func.py +980 -0
  1057. mindspore/ops/auto_generate/gen_ops_def.py +6443 -0
  1058. mindspore/ops/auto_generate/gen_ops_prim.py +13167 -0
  1059. mindspore/ops/auto_generate/pyboost_inner_prim.py +429 -0
  1060. mindspore/ops/composite/__init__.py +71 -0
  1061. mindspore/ops/composite/base.py +1281 -0
  1062. mindspore/ops/composite/env_ops.py +41 -0
  1063. mindspore/ops/composite/math_ops.py +125 -0
  1064. mindspore/ops/composite/multitype_ops/__init__.py +77 -0
  1065. mindspore/ops/composite/multitype_ops/_compile_utils.py +1458 -0
  1066. mindspore/ops/composite/multitype_ops/_constexpr_utils.py +897 -0
  1067. mindspore/ops/composite/multitype_ops/add_impl.py +606 -0
  1068. mindspore/ops/composite/multitype_ops/bitwise_and_impl.py +56 -0
  1069. mindspore/ops/composite/multitype_ops/bitwise_or_impl.py +56 -0
  1070. mindspore/ops/composite/multitype_ops/bitwise_xor_impl.py +56 -0
  1071. mindspore/ops/composite/multitype_ops/div_impl.py +189 -0
  1072. mindspore/ops/composite/multitype_ops/equal_impl.py +335 -0
  1073. mindspore/ops/composite/multitype_ops/floordiv_impl.py +88 -0
  1074. mindspore/ops/composite/multitype_ops/getitem_impl.py +400 -0
  1075. mindspore/ops/composite/multitype_ops/greater_equal_impl.py +109 -0
  1076. mindspore/ops/composite/multitype_ops/greater_impl.py +110 -0
  1077. mindspore/ops/composite/multitype_ops/in_impl.py +196 -0
  1078. mindspore/ops/composite/multitype_ops/left_shift_impl.py +37 -0
  1079. mindspore/ops/composite/multitype_ops/less_equal_impl.py +111 -0
  1080. mindspore/ops/composite/multitype_ops/less_impl.py +112 -0
  1081. mindspore/ops/composite/multitype_ops/logic_not_impl.py +113 -0
  1082. mindspore/ops/composite/multitype_ops/logical_and_impl.py +60 -0
  1083. mindspore/ops/composite/multitype_ops/logical_or_impl.py +61 -0
  1084. mindspore/ops/composite/multitype_ops/mod_impl.py +86 -0
  1085. mindspore/ops/composite/multitype_ops/mul_impl.py +294 -0
  1086. mindspore/ops/composite/multitype_ops/negative_impl.py +79 -0
  1087. mindspore/ops/composite/multitype_ops/not_equal_impl.py +290 -0
  1088. mindspore/ops/composite/multitype_ops/not_in_impl.py +196 -0
  1089. mindspore/ops/composite/multitype_ops/ones_like_impl.py +96 -0
  1090. mindspore/ops/composite/multitype_ops/pow_impl.py +87 -0
  1091. mindspore/ops/composite/multitype_ops/right_shift_impl.py +37 -0
  1092. mindspore/ops/composite/multitype_ops/setitem_impl.py +884 -0
  1093. mindspore/ops/composite/multitype_ops/sub_impl.py +116 -0
  1094. mindspore/ops/composite/multitype_ops/uadd_impl.py +29 -0
  1095. mindspore/ops/composite/multitype_ops/zeros_like_impl.py +228 -0
  1096. mindspore/ops/deprecated.py +315 -0
  1097. mindspore/ops/extend/__init__.py +53 -0
  1098. mindspore/ops/extend/array_func.py +218 -0
  1099. mindspore/ops/extend/math_func.py +76 -0
  1100. mindspore/ops/extend/nn_func.py +308 -0
  1101. mindspore/ops/function/__init__.py +760 -0
  1102. mindspore/ops/function/array_func.py +6889 -0
  1103. mindspore/ops/function/clip_func.py +384 -0
  1104. mindspore/ops/function/debug_func.py +69 -0
  1105. mindspore/ops/function/fft_func.py +31 -0
  1106. mindspore/ops/function/grad/__init__.py +34 -0
  1107. mindspore/ops/function/grad/grad_func.py +1424 -0
  1108. mindspore/ops/function/image_func.py +292 -0
  1109. mindspore/ops/function/linalg_func.py +416 -0
  1110. mindspore/ops/function/math_func.py +11877 -0
  1111. mindspore/ops/function/nn_func.py +8175 -0
  1112. mindspore/ops/function/other_func.py +114 -0
  1113. mindspore/ops/function/parameter_func.py +134 -0
  1114. mindspore/ops/function/random_func.py +1539 -0
  1115. mindspore/ops/function/reshard_func.py +102 -0
  1116. mindspore/ops/function/sparse_func.py +884 -0
  1117. mindspore/ops/function/sparse_unary_func.py +2422 -0
  1118. mindspore/ops/function/spectral_func.py +150 -0
  1119. mindspore/ops/function/vmap_func.py +116 -0
  1120. mindspore/ops/functional.py +454 -0
  1121. mindspore/ops/op_info_register.py +1572 -0
  1122. mindspore/ops/operations/__init__.py +717 -0
  1123. mindspore/ops/operations/_csr_ops.py +403 -0
  1124. mindspore/ops/operations/_custom_grad.py +181 -0
  1125. mindspore/ops/operations/_embedding_cache_ops.py +307 -0
  1126. mindspore/ops/operations/_grad_ops.py +3052 -0
  1127. mindspore/ops/operations/_infer_ops.py +19 -0
  1128. mindspore/ops/operations/_inner_ops.py +2567 -0
  1129. mindspore/ops/operations/_map_tensor_ops.py +112 -0
  1130. mindspore/ops/operations/_ms_kernel.py +601 -0
  1131. mindspore/ops/operations/_ocr_ops.py +379 -0
  1132. mindspore/ops/operations/_opaque_predicate_registry.py +41 -0
  1133. mindspore/ops/operations/_pyfunc_registry.py +58 -0
  1134. mindspore/ops/operations/_quant_ops.py +1844 -0
  1135. mindspore/ops/operations/_rl_inner_ops.py +1231 -0
  1136. mindspore/ops/operations/_scalar_ops.py +106 -0
  1137. mindspore/ops/operations/_sequence_ops.py +1155 -0
  1138. mindspore/ops/operations/_sparse_grad_ops.py +56 -0
  1139. mindspore/ops/operations/_tensor_array.py +359 -0
  1140. mindspore/ops/operations/_thor_ops.py +807 -0
  1141. mindspore/ops/operations/array_ops.py +6258 -0
  1142. mindspore/ops/operations/comm_ops.py +1996 -0
  1143. mindspore/ops/operations/control_ops.py +127 -0
  1144. mindspore/ops/operations/custom_ops.py +1065 -0
  1145. mindspore/ops/operations/debug_ops.py +646 -0
  1146. mindspore/ops/operations/image_ops.py +1041 -0
  1147. mindspore/ops/operations/inner_ops.py +697 -0
  1148. mindspore/ops/operations/linalg_ops.py +95 -0
  1149. mindspore/ops/operations/manually_defined/__init__.py +24 -0
  1150. mindspore/ops/operations/manually_defined/_inner.py +61 -0
  1151. mindspore/ops/operations/manually_defined/ops_def.py +2016 -0
  1152. mindspore/ops/operations/math_ops.py +5306 -0
  1153. mindspore/ops/operations/nn_ops.py +9669 -0
  1154. mindspore/ops/operations/other_ops.py +871 -0
  1155. mindspore/ops/operations/random_ops.py +1243 -0
  1156. mindspore/ops/operations/reshard_ops.py +53 -0
  1157. mindspore/ops/operations/rl_ops.py +288 -0
  1158. mindspore/ops/operations/sparse_ops.py +2753 -0
  1159. mindspore/ops/operations/spectral_ops.py +111 -0
  1160. mindspore/ops/primitive.py +1034 -0
  1161. mindspore/ops/signature.py +54 -0
  1162. mindspore/ops/silent_check.py +162 -0
  1163. mindspore/ops/vm_impl_registry.py +91 -0
  1164. mindspore/ops_generate/__init__.py +27 -0
  1165. mindspore/ops_generate/arg_dtype_cast.py +250 -0
  1166. mindspore/ops_generate/arg_handler.py +197 -0
  1167. mindspore/ops_generate/gen_aclnn_implement.py +263 -0
  1168. mindspore/ops_generate/gen_ops.py +1084 -0
  1169. mindspore/ops_generate/gen_ops_inner_prim.py +131 -0
  1170. mindspore/ops_generate/gen_pyboost_func.py +968 -0
  1171. mindspore/ops_generate/gen_utils.py +209 -0
  1172. mindspore/ops_generate/op_proto.py +138 -0
  1173. mindspore/ops_generate/pyboost_utils.py +354 -0
  1174. mindspore/ops_generate/template.py +239 -0
  1175. mindspore/parallel/__init__.py +28 -0
  1176. mindspore/parallel/_auto_parallel_context.py +1466 -0
  1177. mindspore/parallel/_cell_wrapper.py +91 -0
  1178. mindspore/parallel/_cost_model_context.py +700 -0
  1179. mindspore/parallel/_dp_allreduce_fusion.py +159 -0
  1180. mindspore/parallel/_offload_context.py +275 -0
  1181. mindspore/parallel/_parallel_serialization.py +533 -0
  1182. mindspore/parallel/_ps_context.py +242 -0
  1183. mindspore/parallel/_recovery_context.py +110 -0
  1184. mindspore/parallel/_tensor.py +660 -0
  1185. mindspore/parallel/_transformer/__init__.py +35 -0
  1186. mindspore/parallel/_transformer/layers.py +765 -0
  1187. mindspore/parallel/_transformer/loss.py +251 -0
  1188. mindspore/parallel/_transformer/moe.py +693 -0
  1189. mindspore/parallel/_transformer/op_parallel_config.py +222 -0
  1190. mindspore/parallel/_transformer/transformer.py +3119 -0
  1191. mindspore/parallel/_utils.py +600 -0
  1192. mindspore/parallel/algo_parameter_config.py +400 -0
  1193. mindspore/parallel/checkpoint_transform.py +643 -0
  1194. mindspore/parallel/cluster/__init__.py +15 -0
  1195. mindspore/parallel/cluster/process_entity/__init__.py +18 -0
  1196. mindspore/parallel/cluster/process_entity/_api.py +344 -0
  1197. mindspore/parallel/cluster/process_entity/_utils.py +126 -0
  1198. mindspore/parallel/cluster/run.py +136 -0
  1199. mindspore/parallel/mpi/__init__.py +14 -0
  1200. mindspore/parallel/mpi/_mpi_config.py +116 -0
  1201. mindspore/parallel/parameter_broadcast.py +152 -0
  1202. mindspore/parallel/shard.py +350 -0
  1203. mindspore/perf_msvcbuildinsights.dll +0 -0
  1204. mindspore/pgodb140.dll +0 -0
  1205. mindspore/pgort140.dll +0 -0
  1206. mindspore/profiler/__init__.py +27 -0
  1207. mindspore/profiler/common/__init__.py +14 -0
  1208. mindspore/profiler/common/exceptions/__init__.py +14 -0
  1209. mindspore/profiler/common/exceptions/error_code.py +83 -0
  1210. mindspore/profiler/common/exceptions/exceptions.py +286 -0
  1211. mindspore/profiler/common/process_pool.py +41 -0
  1212. mindspore/profiler/common/singleton.py +28 -0
  1213. mindspore/profiler/common/struct_type.py +118 -0
  1214. mindspore/profiler/common/util.py +444 -0
  1215. mindspore/profiler/common/validator/__init__.py +14 -0
  1216. mindspore/profiler/common/validator/validate_path.py +84 -0
  1217. mindspore/profiler/envprofiling.py +256 -0
  1218. mindspore/profiler/parser/__init__.py +14 -0
  1219. mindspore/profiler/parser/aicpu_data_parser.py +272 -0
  1220. mindspore/profiler/parser/ascend_analysis/__init__.py +14 -0
  1221. mindspore/profiler/parser/ascend_analysis/constant.py +53 -0
  1222. mindspore/profiler/parser/ascend_analysis/file_manager.py +159 -0
  1223. mindspore/profiler/parser/ascend_analysis/function_event.py +161 -0
  1224. mindspore/profiler/parser/ascend_analysis/fwk_cann_parser.py +131 -0
  1225. mindspore/profiler/parser/ascend_analysis/fwk_file_parser.py +85 -0
  1226. mindspore/profiler/parser/ascend_analysis/msprof_timeline_parser.py +57 -0
  1227. mindspore/profiler/parser/ascend_analysis/profiler_info_parser.py +116 -0
  1228. mindspore/profiler/parser/ascend_analysis/tlv_decoder.py +86 -0
  1229. mindspore/profiler/parser/ascend_analysis/trace_event_manager.py +68 -0
  1230. mindspore/profiler/parser/ascend_cluster_generator.py +116 -0
  1231. mindspore/profiler/parser/ascend_communicate_generator.py +314 -0
  1232. mindspore/profiler/parser/ascend_flops_generator.py +116 -0
  1233. mindspore/profiler/parser/ascend_fpbp_generator.py +82 -0
  1234. mindspore/profiler/parser/ascend_hccl_generator.py +271 -0
  1235. mindspore/profiler/parser/ascend_integrate_generator.py +42 -0
  1236. mindspore/profiler/parser/ascend_memory_generator.py +185 -0
  1237. mindspore/profiler/parser/ascend_msprof_exporter.py +281 -0
  1238. mindspore/profiler/parser/ascend_msprof_generator.py +187 -0
  1239. mindspore/profiler/parser/ascend_op_generator.py +334 -0
  1240. mindspore/profiler/parser/ascend_steptrace_generator.py +94 -0
  1241. mindspore/profiler/parser/ascend_timeline_generator.py +543 -0
  1242. mindspore/profiler/parser/base_timeline_generator.py +489 -0
  1243. mindspore/profiler/parser/container.py +229 -0
  1244. mindspore/profiler/parser/cpu_gpu_timeline_generator.py +684 -0
  1245. mindspore/profiler/parser/flops_parser.py +531 -0
  1246. mindspore/profiler/parser/framework_enum.py +111 -0
  1247. mindspore/profiler/parser/framework_parser.py +854 -0
  1248. mindspore/profiler/parser/framework_struct.py +61 -0
  1249. mindspore/profiler/parser/hccl_parser.py +573 -0
  1250. mindspore/profiler/parser/hwts_log_parser.py +122 -0
  1251. mindspore/profiler/parser/integrator.py +526 -0
  1252. mindspore/profiler/parser/memory_usage_parser.py +431 -0
  1253. mindspore/profiler/parser/minddata_analyzer.py +800 -0
  1254. mindspore/profiler/parser/minddata_parser.py +186 -0
  1255. mindspore/profiler/parser/minddata_pipeline_parser.py +299 -0
  1256. mindspore/profiler/parser/msadvisor_analyzer.py +82 -0
  1257. mindspore/profiler/parser/msadvisor_parser.py +240 -0
  1258. mindspore/profiler/parser/op_intermediate_parser.py +149 -0
  1259. mindspore/profiler/parser/optime_parser.py +250 -0
  1260. mindspore/profiler/parser/profiler_info.py +141 -0
  1261. mindspore/profiler/parser/step_trace_parser.py +666 -0
  1262. mindspore/profiler/profiling.py +2054 -0
  1263. mindspore/rewrite/__init__.py +29 -0
  1264. mindspore/rewrite/api/__init__.py +17 -0
  1265. mindspore/rewrite/api/node.py +519 -0
  1266. mindspore/rewrite/api/node_type.py +53 -0
  1267. mindspore/rewrite/api/pattern_engine.py +490 -0
  1268. mindspore/rewrite/api/scoped_value.py +181 -0
  1269. mindspore/rewrite/api/symbol_tree.py +497 -0
  1270. mindspore/rewrite/ast_helpers/__init__.py +25 -0
  1271. mindspore/rewrite/ast_helpers/ast_converter.py +143 -0
  1272. mindspore/rewrite/ast_helpers/ast_finder.py +404 -0
  1273. mindspore/rewrite/ast_helpers/ast_flattener.py +268 -0
  1274. mindspore/rewrite/ast_helpers/ast_modifier.py +605 -0
  1275. mindspore/rewrite/ast_helpers/ast_replacer.py +79 -0
  1276. mindspore/rewrite/common/__init__.py +19 -0
  1277. mindspore/rewrite/common/config.py +24 -0
  1278. mindspore/rewrite/common/error_log.py +39 -0
  1279. mindspore/rewrite/common/event.py +28 -0
  1280. mindspore/rewrite/common/namer.py +271 -0
  1281. mindspore/rewrite/common/namespace.py +118 -0
  1282. mindspore/rewrite/common/observable.py +44 -0
  1283. mindspore/rewrite/common/observer.py +54 -0
  1284. mindspore/rewrite/node/__init__.py +22 -0
  1285. mindspore/rewrite/node/call_function.py +95 -0
  1286. mindspore/rewrite/node/cell_container.py +139 -0
  1287. mindspore/rewrite/node/control_flow.py +113 -0
  1288. mindspore/rewrite/node/node.py +1428 -0
  1289. mindspore/rewrite/node/node_manager.py +283 -0
  1290. mindspore/rewrite/node/node_topological_manager.py +223 -0
  1291. mindspore/rewrite/parsers/__init__.py +29 -0
  1292. mindspore/rewrite/parsers/arguments_parser.py +63 -0
  1293. mindspore/rewrite/parsers/assign_parser.py +852 -0
  1294. mindspore/rewrite/parsers/attribute_parser.py +57 -0
  1295. mindspore/rewrite/parsers/class_def_parser.py +289 -0
  1296. mindspore/rewrite/parsers/constant_parser.py +104 -0
  1297. mindspore/rewrite/parsers/container_parser.py +88 -0
  1298. mindspore/rewrite/parsers/expr_parser.py +55 -0
  1299. mindspore/rewrite/parsers/for_parser.py +61 -0
  1300. mindspore/rewrite/parsers/function_def_parser.py +84 -0
  1301. mindspore/rewrite/parsers/if_parser.py +85 -0
  1302. mindspore/rewrite/parsers/module_parser.py +117 -0
  1303. mindspore/rewrite/parsers/parser.py +43 -0
  1304. mindspore/rewrite/parsers/parser_register.py +86 -0
  1305. mindspore/rewrite/parsers/return_parser.py +37 -0
  1306. mindspore/rewrite/parsers/while_parser.py +59 -0
  1307. mindspore/rewrite/sparsify/__init__.py +0 -0
  1308. mindspore/rewrite/sparsify/sparse_transformer.py +457 -0
  1309. mindspore/rewrite/sparsify/sparsify.py +112 -0
  1310. mindspore/rewrite/sparsify/utils.py +179 -0
  1311. mindspore/rewrite/symbol_tree/__init__.py +20 -0
  1312. mindspore/rewrite/symbol_tree/symbol_tree.py +1819 -0
  1313. mindspore/rewrite/symbol_tree/symbol_tree_builder.py +76 -0
  1314. mindspore/rewrite/symbol_tree/symbol_tree_dumper.py +142 -0
  1315. mindspore/run_check/__init__.py +20 -0
  1316. mindspore/run_check/_check_version.py +574 -0
  1317. mindspore/run_check/run_check.py +66 -0
  1318. mindspore/safeguard/__init__.py +18 -0
  1319. mindspore/safeguard/rewrite_obfuscation.py +531 -0
  1320. mindspore/swresample-4.dll +0 -0
  1321. mindspore/swscale-6.dll +0 -0
  1322. mindspore/tbbmalloc.dll +0 -0
  1323. mindspore/tinyxml2.dll +0 -0
  1324. mindspore/train/__init__.py +47 -0
  1325. mindspore/train/_utils.py +439 -0
  1326. mindspore/train/amp.py +817 -0
  1327. mindspore/train/anf_ir_pb2.py +1517 -0
  1328. mindspore/train/callback/__init__.py +44 -0
  1329. mindspore/train/callback/_backup_and_restore.py +117 -0
  1330. mindspore/train/callback/_callback.py +613 -0
  1331. mindspore/train/callback/_checkpoint.py +751 -0
  1332. mindspore/train/callback/_cluster_monitor.py +201 -0
  1333. mindspore/train/callback/_dataset_graph.py +150 -0
  1334. mindspore/train/callback/_early_stop.py +239 -0
  1335. mindspore/train/callback/_flops_collector.py +238 -0
  1336. mindspore/train/callback/_history.py +92 -0
  1337. mindspore/train/callback/_lambda_callback.py +80 -0
  1338. mindspore/train/callback/_landscape.py +1049 -0
  1339. mindspore/train/callback/_loss_monitor.py +107 -0
  1340. mindspore/train/callback/_lr_scheduler_callback.py +76 -0
  1341. mindspore/train/callback/_mindio_ttp.py +443 -0
  1342. mindspore/train/callback/_on_request_exit.py +195 -0
  1343. mindspore/train/callback/_reduce_lr_on_plateau.py +226 -0
  1344. mindspore/train/callback/_summary_collector.py +1184 -0
  1345. mindspore/train/callback/_time_monitor.py +141 -0
  1346. mindspore/train/checkpoint_pb2.py +233 -0
  1347. mindspore/train/data_sink.py +219 -0
  1348. mindspore/train/dataset_helper.py +688 -0
  1349. mindspore/train/lineage_pb2.py +1260 -0
  1350. mindspore/train/loss_scale_manager.py +213 -0
  1351. mindspore/train/memory_profiling_pb2.py +298 -0
  1352. mindspore/train/metrics/__init__.py +175 -0
  1353. mindspore/train/metrics/accuracy.py +133 -0
  1354. mindspore/train/metrics/auc.py +129 -0
  1355. mindspore/train/metrics/bleu_score.py +170 -0
  1356. mindspore/train/metrics/confusion_matrix.py +700 -0
  1357. mindspore/train/metrics/cosine_similarity.py +109 -0
  1358. mindspore/train/metrics/dice.py +116 -0
  1359. mindspore/train/metrics/error.py +175 -0
  1360. mindspore/train/metrics/fbeta.py +167 -0
  1361. mindspore/train/metrics/hausdorff_distance.py +333 -0
  1362. mindspore/train/metrics/loss.py +97 -0
  1363. mindspore/train/metrics/mean_surface_distance.py +189 -0
  1364. mindspore/train/metrics/metric.py +373 -0
  1365. mindspore/train/metrics/occlusion_sensitivity.py +225 -0
  1366. mindspore/train/metrics/perplexity.py +133 -0
  1367. mindspore/train/metrics/precision.py +160 -0
  1368. mindspore/train/metrics/recall.py +159 -0
  1369. mindspore/train/metrics/roc.py +223 -0
  1370. mindspore/train/metrics/root_mean_square_surface_distance.py +191 -0
  1371. mindspore/train/metrics/topk.py +167 -0
  1372. mindspore/train/mind_ir_pb2.py +1903 -0
  1373. mindspore/train/model.py +2176 -0
  1374. mindspore/train/node_strategy_pb2.py +653 -0
  1375. mindspore/train/print_pb2.py +184 -0
  1376. mindspore/train/profiling_parallel_pb2.py +151 -0
  1377. mindspore/train/serialization.py +3101 -0
  1378. mindspore/train/summary/__init__.py +23 -0
  1379. mindspore/train/summary/_lineage_adapter.py +41 -0
  1380. mindspore/train/summary/_summary_adapter.py +496 -0
  1381. mindspore/train/summary/_writer_pool.py +207 -0
  1382. mindspore/train/summary/enums.py +56 -0
  1383. mindspore/train/summary/summary_record.py +581 -0
  1384. mindspore/train/summary/writer.py +167 -0
  1385. mindspore/train/summary_pb2.py +1165 -0
  1386. mindspore/train/train_thor/__init__.py +20 -0
  1387. mindspore/train/train_thor/convert_utils.py +268 -0
  1388. mindspore/train/train_thor/dataset_helper.py +192 -0
  1389. mindspore/train/train_thor/model_thor.py +257 -0
  1390. mindspore/turbojpeg.dll +0 -0
  1391. mindspore/vcmeta.dll +0 -0
  1392. mindspore/vcomp140.dll +0 -0
  1393. mindspore/vcruntime140.dll +0 -0
  1394. mindspore/vcruntime140_1.dll +0 -0
  1395. mindspore/version.py +1 -0
  1396. mindspore-2.3.0.dist-info/METADATA +351 -0
  1397. mindspore-2.3.0.dist-info/RECORD +1400 -0
  1398. mindspore-2.3.0.dist-info/WHEEL +5 -0
  1399. mindspore-2.3.0.dist-info/entry_points.txt +4 -0
  1400. mindspore-2.3.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,1065 @@
1
+ # Copyright 2021-2024 Huawei Technologies Co., Ltd
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # ============================================================================
15
+
16
+ """Custom operator"""
17
+ from __future__ import absolute_import
18
+ import json
19
+ import os
20
+ import re
21
+ import ast
22
+ import hashlib
23
+ import stat
24
+ import inspect
25
+ import importlib
26
+ import platform
27
+ import subprocess
28
+ import numpy as np
29
+ import mindspore as ms
30
+ from mindspore._c_expression import Oplib, typing
31
+ from mindspore import context
32
+ from mindspore.common import Tensor
33
+ from mindspore.common import dtype as mstype
34
+ from mindspore.ops import DataType
35
+ from mindspore import log as logger
36
+ from mindspore import ops
37
+ from mindspore.communication.management import get_rank, GlobalComm
38
+ from ._ms_kernel import determine_variable_usage
39
+ from ._custom_grad import autodiff_bprop
40
+ from ._pyfunc_registry import add_pyfunc
41
+
42
+ if platform.system() != "Windows":
43
+ import fcntl
44
+
45
+ KEY_ATTR = "attr"
46
+ KEY_NAME = "name"
47
+ INPUT_NAMES = "input_names"
48
+ ATTR_NAMES = "attr_names"
49
+ AUTO_DIFF = "autodiff"
50
+ IMPLY_TYPE = "imply_type"
51
+ FUSION_TYPE = "fusion_type"
52
+ MS_KERNEL_FLAG = "ms_kernel_flag"
53
+ AKG = "AKG"
54
+ TBE = "TBE"
55
+ CUDA = "CUDA"
56
+ AICORE = "AiCore"
57
+ CPU = "CPU"
58
+ GPU = "GPU"
59
+ ASCEND = "Ascend"
60
+ HYBRID_TYPE = "hybrid"
61
+ OP_NAME = "op_name"
62
+
63
+
64
+ def _get_cache_path():
65
+ """
66
+ Automatically get the path to kernel_meta
67
+
68
+ Returns:
69
+ str, the path to the dir of kernel_meta.
70
+ """
71
+ cache_path = os.getenv('MS_COMPILER_CACHE_PATH')
72
+ if cache_path is None:
73
+ cache_path = "./akg_kernel_meta/"
74
+ elif cache_path[-1] != "/":
75
+ cache_path = cache_path + "/"
76
+
77
+ if not os.path.exists(cache_path):
78
+ os.makedirs(cache_path, exist_ok=True)
79
+
80
+ return cache_path
81
+
82
+
83
+ def _compile_aot(file):
84
+ """
85
+ Automatically compile the source file for custom aot
86
+
87
+ Args:
88
+ file (str): The path to the source file.
89
+
90
+ Returns:
91
+ str, the path to the compiled library.
92
+ """
93
+ cache_path = _get_cache_path()
94
+ # for distributed case, we create folders separately to avoid conflict
95
+ if GlobalComm.INITED:
96
+ cache_path = os.path.join(cache_path, "rank_" + str(get_rank()), "")
97
+ os.makedirs(cache_path, exist_ok=True)
98
+
99
+ res_path = importlib.util.find_spec("mindspore").origin
100
+ find_pos = res_path.find("__init__.py")
101
+ if find_pos == -1:
102
+ raise RuntimeError(
103
+ "Find module mindspore __init__.py file failed!")
104
+ include_file = "-I{}include/api/".format(res_path[:find_pos])
105
+
106
+ file_name = file.split('/')[-1]
107
+ func_path = cache_path + file_name + ".so"
108
+ include_file = "{} -I{}".format(include_file, file[:file.rindex('/')])
109
+
110
+ if func_path not in Custom.compiled_bin:
111
+ Custom.compiled_bin.append(func_path)
112
+
113
+ if file.endswith("cpp") or file.endswith("cc"):
114
+ cmd = ["g++", "-std=c++17", "--shared", "-fPIC", "-D_GLIBCXX_USE_CXX11_ABI=0"]
115
+ cmd += [include_file, "-o", func_path, file]
116
+ elif file.endswith("cu"):
117
+ cmd = ["nvcc"]
118
+ cmd += ["--shared", "-Xcompiler", "-fPIC", "-O3", "-gencode", "arch=compute_70, code=sm_70"]
119
+ cmd += ["--use_fast_math", "--expt-relaxed-constexpr"]
120
+ cmd += ["-D_GLIBCXX_USE_CXX11_ABI=0"]
121
+
122
+ def _get_cuda_bare_metal_version():
123
+ raw_output = subprocess.check_output(["nvcc", "-V"],
124
+ universal_newlines=True)
125
+ output = raw_output.split()
126
+ release_idx = output.index("release") + 1
127
+ release = output[release_idx].split(".")
128
+ version_idx = release_idx + 1
129
+ version = output[version_idx].split(".")
130
+ version_middle = version[1] if len(version) > 1 else 0
131
+ version_minor = version[2] if len(version) > 2 else 0
132
+
133
+ return int(release[0]), int(version_middle), int(version_minor)
134
+
135
+ v_major, v_mid, v_minor = _get_cuda_bare_metal_version()
136
+ if v_major >= 11:
137
+ cmd += ["-gencode", "arch=compute_80,code=sm_80", "--expt-extended-lambda"]
138
+ elif v_major == 10 and not (v_mid >= 1 and v_minor >= 168):
139
+ logger.warning("The current version of nvcc, V{}.{}.{}, might have unfixed issues with std string, "
140
+ "which will lead to errors in aot custom op with attrs."
141
+ "The version higher than V10.1.168 is recommended".format(v_major, v_mid, v_minor))
142
+ cmd += [include_file, "-o", func_path, file]
143
+ else:
144
+ raise ValueError("The source file must be a cc/cpp/cu file, but get: {}".format(file))
145
+
146
+ proc = subprocess.Popen(
147
+ cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
148
+
149
+ (out, _) = proc.communicate(timeout=30)
150
+
151
+ if proc.returncode != 0:
152
+ msg = "Compilation error in compiling {}:\n".format(file)
153
+ msg += out.decode('utf-8')
154
+ raise RuntimeError(msg)
155
+
156
+ return func_path
157
+
158
+
159
+ class Custom(ops.PrimitiveWithInfer):
160
+ r"""
161
+ `Custom` primitive is used for user defined operators and is to enhance the expressive ability of built-in
162
+ primitives. You can construct a `Custom` object with a predefined function, which describes the computation
163
+ logic of a user defined operator. You can also construct another `Custom` object with another predefined
164
+ function if needed. Then these `Custom` objects can be directly used in neural networks.
165
+ Detailed description and introduction of user-defined operators, including correct writing of parameters,
166
+ please refer to `Custom Operators Tutorial
167
+ <https://www.mindspore.cn/tutorials/experts/en/master/operation/op_custom.html>`_ .
168
+
169
+ .. warning::
170
+ - This is an experimental API that is subject to change.
171
+
172
+ .. note::
173
+ The supported platforms are determined by the input `func_type`. The supported platforms are as follows:
174
+
175
+ - "hybrid": supports ["GPU", "CPU"].
176
+ - "akg": supports ["GPU", "CPU"].
177
+ - "aot": supports ["GPU", "CPU", "ASCEDN"].
178
+ - "pyfunc": supports ["CPU"].
179
+ - "julia": supports ["CPU"].
180
+
181
+ Args:
182
+ func (Union[function, str]):
183
+
184
+ - function: If func is of function type, then func should be a Python function which describes the
185
+ computation logic of a user defined operator. The function can be one of the following:
186
+
187
+ 1. A AKG operator implementation function, which can use ir builder/tvm compute/hybrid grammar.
188
+ 2. A pure python function
189
+ 3. An kernel decorated function written by the Hybrid DSL.
190
+
191
+ - str: If func is of str type, then str should be a path of file along with a function name.
192
+ This could be used when func_type is "aot" or "julia".
193
+
194
+ 1. for "aot":
195
+
196
+ a) GPU/CPU platform.
197
+ "aot" means ahead of time, in which case Custom directly launches user defined "xxx.so" file as an
198
+ operator. Users need to compile a handwriting "xxx.cu"/"xxx.cc" file into "xxx.so" ahead of time,
199
+ and offer the path of the file along with a function name.
200
+
201
+ - "xxx.so" file generation:
202
+
203
+ 1) GPU Platform: Given user defined "xxx.cu" file (ex. "{path}/add.cu"), use nvcc command to compile
204
+ it.(ex. "nvcc --shared -Xcompiler -fPIC -o add.so add.cu")
205
+
206
+ 2) CPU Platform: Given user defined "xxx.cc" file (ex. "{path}/add.cc"), use g++/gcc command to
207
+ compile it.(ex. "g++ --shared -fPIC -o add.so add.cc")
208
+
209
+ - Define a "xxx.cc"/"xxx.cu" file:
210
+
211
+ "aot" is a cross-platform identity. The functions defined in "xxx.cc" or "xxx.cu" share
212
+ the same args. Typically, the function should be as:
213
+
214
+ .. code-block::
215
+
216
+ int func(int nparam, void **params, int *ndims, int64_t **shapes, const char **dtypes,
217
+ void *stream, void *extra)
218
+
219
+ Parameters:
220
+
221
+ - nparam(int): total number of inputs plus outputs; suppose the operator has 2 inputs and 3 outputs,
222
+ then nparam=5
223
+ - params(void \*\*): a pointer to the array of inputs and outputs' pointer; the pointer type of
224
+ inputs and outputs is void \* ; suppose the operator has 2 inputs and 3 outputs, then the first
225
+ input's pointer is params[0] and the second output's pointer is params[3]
226
+ - ndims(int \*): a pointer to the array of inputs and outputs' dimension num; suppose params[i] is a
227
+ 1024x1024 tensor and params[j] is a 77x83x4 tensor, then ndims[i]=2, ndims[j]=3.
228
+ - shapes(int64_t \*\*): a pointer to the array of inputs and outputs' shapes(int64_t \*); the ith
229
+ input's jth dimension's size is shapes[i][j](0<=j<ndims[i]); suppose params[i] is a 2x3 tensor and
230
+ params[j] is a 3x3x4 tensor, then shapes[i][0]=2, shapes[j][2]=4.
231
+ - dtypes(const char \*\*): a pointer to the array of inputs and outputs' types(const char \*);
232
+ (ex. "float32", "float16", "float", "float64", "int", "int8", "int16", "int32", "int64", "uint",
233
+ "uint8", "uint16", "uint32", "uint64", "bool")
234
+ - stream(void \*): stream pointer, only used in cuda file
235
+ - extra(void \*): used for further extension
236
+
237
+ Return Value(int):
238
+
239
+ - 0: MindSpore will continue to run if this aot kernel is successfully executed
240
+ - others: MindSpore will raise exception and exit
241
+
242
+ Examples: see details in tests/st/ops/graph_kernel/custom/aot_test_files/
243
+
244
+ - Use it in Custom:
245
+
246
+ .. code-block::
247
+
248
+ Custom(func="{dir_path}/{file_name}:{func_name}",...)
249
+ (ex. Custom(func="./reorganize.so:CustomReorganize", out_shape=[1], out_dtype=mstype.float32,
250
+ "aot"))
251
+
252
+ b) ASCEND platform
253
+ Before using Custom operators on the ASCEND platform, users must first develop custom operators
254
+ based on Ascend C and compile them. For operator development, you can refer to the tutorial on
255
+ `Quick Start for End-to-End Operator Development
256
+ <https://www.hiascend.com/document/detail/zh/canncommercial/70RC1/operatordev/Ascendcopdevg/atlas_ascendc_10_0022.html>`_,
257
+ and for compiling custom operators, you can use the `Offline Compilation of Ascend C Custom Operators
258
+ <https://www.mindspore.cn/tutorials/experts/en/master/operation/op_custom_ascendc.html>` tool.
259
+ When passing the operator's name into the func parameter, taking AddCustom as an example for the
260
+ name given in the custom operator implementation, there are several ways to use it:
261
+
262
+ - Usin TBE: func="AddCustom"
263
+ - Using AclNN: func="aclnnAddCustom"
264
+ - Inferring the shape of the operator through C++ derivation: func="infer_shape.cc:aclnnAddCustom",
265
+ where infer_shape.cc is the shape derivation implemented in C++.
266
+
267
+ 2. for "julia":
268
+
269
+ Currently "julia" supports CPU(linux only) platform.
270
+ For julia use JIT compiler, and julia support c api to call julia code.
271
+ The Custom can directly launches user defined "xxx.jl" file as an operator.
272
+ Users need to write a "xxx.jl" file which include modules and functions,
273
+ and offer the path of the file along with a module name and function name.
274
+
275
+ Examples: see details in tests/st/ops/graph_kernel/custom/julia_test_files/
276
+
277
+ - Use it in Custom:
278
+
279
+ .. code-block::
280
+
281
+ Custom(func="{dir_path}/{file_name}:{module_name}:{func_name}",...)
282
+ (ex. Custom(func="./add.jl:Add:add", out_shape=[1], out_dtype=mstype.float32, "julia"))
283
+
284
+ out_shape (Union[function, list, tuple]): The output shape infer function or the value of output shape of
285
+ `func`. Default: ``None`` .
286
+
287
+ If func has single output, then the value of output shape is a list or tuple of int.
288
+
289
+ If func has multiple outputs, then the value of output shape is a tuple, each item represents the shape
290
+ of each output.
291
+
292
+ The input can be None only when the func_type input is "hybrid". In this case, the automatic infer
293
+ shape mechanic will be enabled.
294
+
295
+ out_dtype (Union[function, :class:`mindspore.dtype`, tuple[:class:`mindspore.dtype`]]): The output data type
296
+ infer function or the value of output data type of `func`. Default: ``None`` .
297
+
298
+ If func has single output, then the value of output shape is a `mindspore.dtype`.
299
+
300
+ If func has multiple outputs, then the value of output shape is a tuple of `mindspore.dtype`, each item
301
+ represents the data type of each output.
302
+
303
+ The input can be None only when the func_type input is "hybrid". In this case, the automatic infer
304
+ value mechanic will be enabled.
305
+
306
+ func_type (str): The implementation type of `func`, should be one of
307
+
308
+ [ ``"hybrid"`` , ``"akg"`` , ``"aot"`` , ``"pyfunc"`` , ``"julia"`` ].
309
+
310
+ bprop (function): The back propagation function of `func`. Default: ``None`` .
311
+ reg_info (Union[str, dict, list, tuple]): Represents the registration information(reg info) of `func` with
312
+ json format of type str or dict. The reg info specifies supported data types and formats of inputs and
313
+ outputs, attributes and target of `func`. Default: ``None`` .
314
+
315
+ If reg info is a list or tuple, then each item should be with json format of type str or dict, which
316
+ represents the registration information of `func` in a specific target. You need to invoke `CustomRegOp`
317
+ or the subclass of `RegOp` to generate the reg info for `func`. Then you can invoke
318
+ `custom_info_register` to bind the reg info to `func` or just pass the reg info to `reg_info` parameter.
319
+ The `reg_info` parameter takes higher priority than `custom_info_register` and the reg info in a
320
+ specific target will be registered only once.
321
+
322
+ If reg info is not set, then we will infer the data types and formats from the inputs of `Custom` operator.
323
+
324
+ Please note that, if `func_type` is "tbe" or the `func` only supports some specified data types and formats,
325
+ or it has attribute inputs, then you should set the reg info for `func`.
326
+
327
+ Inputs:
328
+ - **input** (Union(tuple, list)) - The input tuple or list is made up of multiple tensors, and attributes
329
+ value(optional).
330
+
331
+ Outputs:
332
+ Tensor or tuple[Tensor], execution results.
333
+
334
+ Raises:
335
+ TypeError: If the type of `func` is invalid or the type of register information for `func` is invalid.
336
+ ValueError: If `func_type` is invalid.
337
+ ValueError: If the register information is invalid, including the target is not supported, the input numbers
338
+ or the attributes of `func` differs in different targets.
339
+
340
+ Supported Platforms:
341
+ ``GPU`` ``CPU`` ``ASCEND``
342
+
343
+ Examples:
344
+ >>> import numpy as np
345
+ >>> from mindspore import Tensor, ops
346
+ >>> from mindspore.ops import CustomRegOp, custom_info_register, DataType, kernel
347
+ >>> from mindspore import dtype as mstype
348
+ >>> from mindspore.nn import Cell
349
+ >>> input_x = Tensor(np.ones([16, 16]).astype(np.float32))
350
+ >>> input_y = Tensor(np.ones([16, 16]).astype(np.float32))
351
+ >>>
352
+ >>> # Example, func_type = "hybrid"
353
+ >>> # This is the default func_type in Custom,
354
+ >>> # and both out_shape and out_dtype can be None(default value).
355
+ >>> # In this case, the input func must be a function written in the Hybrid DSL
356
+ >>> # and decorated by @kernel.
357
+ >>> @kernel
358
+ ... def add_script(a, b):
359
+ ... c = output_tensor(a.shape, a.dtype)
360
+ ... for i0 in range(a.shape[0]):
361
+ ... for i1 in range(a.shape[1]):
362
+ ... c[i0, i1] = a[i0, i1] + b[i0, i1]
363
+ ... return c
364
+ >>>
365
+ >>> test_op_hybrid = ops.Custom(add_script)
366
+ >>> output = test_op_hybrid(input_x, input_y)
367
+ >>> # the result will be a 16 * 16 tensor with all elements 2
368
+ >>> print(output.shape)
369
+ (16, 16)
370
+ >>> # Example, func_type = "aot"
371
+ >>> def test_aot(x, y, out_shapes, out_types):
372
+ ... program = ops.Custom("./reorganize.so:CustomReorganize", out_shapes, out_types, "aot")
373
+ ... out = program(x, y)
374
+ ... return out
375
+ >>>
376
+ >>> # Example, func_type = "pyfunc"
377
+ >>> def func_multi_output(x1, x2):
378
+ ... return (x1 + x2), (x1 - x2)
379
+ >>>
380
+ >>> test_pyfunc = ops.Custom(func_multi_output, lambda x, _: (x, x), lambda x, _: (x, x), "pyfunc")
381
+ >>> output = test_pyfunc(input_x, input_y)
382
+ >>>
383
+ >>> # Example, func_type = "julia"
384
+ >>> # julia code:
385
+ >>> # add.jl
386
+ >>> # module Add
387
+ >>> # function add(x, y, z)
388
+ >>> # z .= x + y
389
+ >>> # return z
390
+ >>> # end
391
+ >>> # end
392
+ >>> def test_julia(x, y, out_shapes, out_types):
393
+ ... program = ops.Custom("./add.jl:Add:add", out_shapes, out_types, "julia")
394
+ ... out = program(x, y)
395
+ ... return out
396
+ """
397
+
398
+ registered_func = {}
399
+ attr_dict = {} # Save input_names and attr_names for func.
400
+ compiled_bin = [] # Save names for compiled bin.
401
+ tbe_path_checked = [] # Save paths for tbe functions which is safe to be imported as module.
402
+ tbe_path_failed = [] # Save paths for tbe functions which fail to be imported as module.
403
+ op_path_in_cache = [] # Save paths for op functions created in the cached.
404
+ custom_aot_warning = True # Flag to enable warnings about custom aot path white list
405
+
406
+ def __init__(self, func, out_shape=None, out_dtype=None, func_type="hybrid", bprop=None, reg_info=None):
407
+ super().__init__("Custom")
408
+
409
+ self.supported_targets = [ASCEND, GPU, CPU]
410
+ self.supported_func_type = ["hybrid", "akg", "tbe", "aicpu", "aot", "pyfunc", "julia"]
411
+ self.log_prefix = "For '{}', 'func_type': {}, 'func': {}".format(self.name, func_type, func)
412
+ self.func = func
413
+ self.func_type = func_type
414
+ self.func_name = ""
415
+ self.uniq_name = ""
416
+ self.imply_path = ""
417
+ self.func_source_str = ""
418
+ self._func_compile_attrs = {}
419
+ self._is_ms_kernel = False
420
+ self.out_shape = out_shape
421
+
422
+ self._check_platform()
423
+ self._check_func()
424
+ self._update_func_info(reg_info)
425
+ self.add_prim_attr("func_name", self.func_name)
426
+ self.add_prim_attr("uniq_name", self.uniq_name)
427
+ if self.func_type == HYBRID_TYPE:
428
+ self.add_prim_attr("func_compile_attrs", self._func_compile_attrs)
429
+
430
+ self.add_prim_attr("imply_path", self.imply_path)
431
+ if self.func_type == "pyfunc":
432
+ func_id = id(self.func)
433
+ add_pyfunc(func_id, self.func)
434
+ self.add_prim_attr("fn_id", func_id)
435
+
436
+ if self.out_shape is None and self.func_type == "aot":
437
+ self.add_prim_attr("cpp_infer_shape", True)
438
+ self.out_dtype = out_dtype
439
+ self.bprop = bprop
440
+ self.fake_output = False
441
+ self.single_scalar_output = False
442
+ if not self.out_dtype:
443
+ self.fake_output = True
444
+ elif not self.out_shape:
445
+ self.single_scalar_output = True
446
+ self.add_prim_attr("fake_output", self.fake_output)
447
+ self.add_prim_attr("single_scalar_output", self.single_scalar_output)
448
+
449
+ # Register info
450
+ self._register_info(reg_info)
451
+
452
+ if func_type == "akg":
453
+ self._set_akg_kernel_type()
454
+
455
+ if not self.bprop and self.func_type == HYBRID_TYPE:
456
+ self._hybrid_autodiff(func_type)
457
+
458
+ self.add_prim_attr("func_type", self.func_type)
459
+ self._update_attr()
460
+
461
+ def __infer__(self, *args):
462
+ if callable(self.out_shape):
463
+ infer_shape = self.out_shape(*(x["shape"] for x in args))
464
+ else:
465
+ infer_shape = self.out_shape
466
+
467
+ if callable(self.out_dtype):
468
+ infer_dtype = self.out_dtype(*(x["dtype"] for x in args))
469
+ else:
470
+ infer_dtype = self.out_dtype
471
+
472
+ infer_value = None
473
+
474
+ # deal with the case of ms script
475
+ # enable auto infer function if any infer information is missing
476
+ if self._is_ms_kernel and (infer_dtype is None or infer_shape is None):
477
+ logger.info("{}, 'out_shape' or 'out_dtype' is None, infer the output shape and output dtype "
478
+ "automatically. There might be some Python RuntimeWarning but it wouldn't influence the "
479
+ "result.".format(self.log_prefix))
480
+
481
+ auto_infer_result = self._auto_infer(*args)
482
+
483
+ # use automatically inferred shape/dtype if the input infer values are null
484
+ infer_shape = auto_infer_result[0] if infer_shape is None else infer_shape
485
+ infer_dtype = auto_infer_result[1] if infer_dtype is None else infer_dtype
486
+ infer_value = auto_infer_result[2]
487
+
488
+ # deal with case that the custom op is of type pyfunc with empty output
489
+ if self.func_type == "pyfunc":
490
+ if infer_shape == ():
491
+ logger.warning("{}, 'out_shape' is an empty tuple. Add a placeholder instead. "
492
+ "Not recommend to use it as it could be any uninitialized data.".format(self.log_prefix))
493
+ infer_shape = (1,)
494
+ if infer_dtype == ():
495
+ logger.warning("{}, 'out_dtype' is an empty tuple. Add a placeholder instead. "
496
+ "Not recommend to use it as it could be any uninitialized data.".format(self.log_prefix))
497
+ infer_dtype = mstype.int32
498
+ if self.func_type == "aot":
499
+ if infer_shape is None:
500
+ logger.warning("{}, 'out_shape' is None. Add a placeholder instead. "
501
+ "A CPP version of infer shape function is required "
502
+ "in this case.".format(self.log_prefix))
503
+ infer_shape = (1,)
504
+ # after all automatic infer information fulfillment, throw error if infer_shape/infer_dtype is still None
505
+ if not isinstance(infer_shape, (tuple, list)):
506
+ raise TypeError("{}, 'out_shape' must be one of [tuple, list, function], but got {}"
507
+ .format(self.log_prefix, type(infer_shape)))
508
+
509
+ if not isinstance(infer_dtype, (typing.Type, tuple, list)):
510
+ raise TypeError("{}, 'out_dtype' must be one of [mindspore.dtype, tuple, list, function], but got {}"
511
+ .format(self.log_prefix, type(infer_dtype)))
512
+
513
+ out = {
514
+ "shape": infer_shape,
515
+ "dtype": infer_dtype,
516
+ "value": infer_value,
517
+ }
518
+ return out
519
+
520
+ def get_bprop(self):
521
+ """return back propagation function"""
522
+ return self.bprop
523
+
524
+ def _set_akg_kernel_type(self):
525
+ self.add_prim_attr('func_source_str', self.func_source_str)
526
+ if "ir_builder" in self.func_source_str:
527
+ self.func_type = "ir_builder"
528
+ elif "compute" in self.func_source_str:
529
+ self.func_type = "tvm_compute"
530
+ else:
531
+ self.func_type = HYBRID_TYPE
532
+ self._hybrid_func_analyser()
533
+
534
+ def _check_julia_func(self):
535
+ """Check the validity of julia func"""
536
+ if not isinstance(self.func, str):
537
+ raise TypeError("{}, 'func' must be of type str, but got {}".format(self.log_prefix, type(self.func)))
538
+ if self.func.count(':') != 2:
539
+ raise ValueError("{}, the format of 'func' must be file:module:func".format(self.log_prefix))
540
+ source_file, module, func = self.func.split(':')
541
+ with open(source_file, 'r') as f:
542
+ jl = f.read()
543
+ if 'module ' + module not in jl:
544
+ raise Exception("{}, module {} is not found in source file {}!"
545
+ .format(self.log_prefix, module, source_file))
546
+ if 'function ' + func not in jl:
547
+ raise Exception("{}, function {} is not found in source file {}!"
548
+ .format(self.log_prefix, func, source_file))
549
+
550
+ def _check_aot_func(self):
551
+ """Check the source code and bin lib for aot type custom op"""
552
+ if not isinstance(self.func, str):
553
+ raise TypeError("{}, 'func' must be of type str, but got {}".format(
554
+ self.log_prefix, type(self.func)))
555
+ file_name_list = self.func.split(":")
556
+ if len(file_name_list) != 2:
557
+ if callable(self.out_shape):
558
+ return
559
+ raise TypeError(
560
+ "{}, 'func' should be like 'file_name:func_name', but got {}".format(
561
+ self.log_prefix, self.func))
562
+ file_path = os.path.abspath(file_name_list[0])
563
+ if os.environ.get('MS_CUSTOM_AOT_WHITE_LIST') is None:
564
+ if Custom.custom_aot_warning:
565
+ logger.info("{}, no white list is set and it might cause problems. "
566
+ "Set the legal path of the file in MS_CUSTOM_AOT_WHITE_LIST"
567
+ .format(self.log_prefix))
568
+ Custom.custom_aot_warning = False
569
+ else:
570
+ legal_path = os.path.abspath(os.environ.get('MS_CUSTOM_AOT_WHITE_LIST'))
571
+ if legal_path not in file_path:
572
+ raise TypeError(
573
+ "{}, the legal path for the file is {}, but the file is {}".format(
574
+ self.log_prefix, legal_path, file_path))
575
+ if file_path.endswith(("cu", "cpp", "cc")):
576
+ file_path = _compile_aot(file_path)
577
+ self.func = file_path + ":" + file_name_list[1]
578
+
579
+ def _check_platform(self):
580
+ """check the platform"""
581
+ if platform.system() != 'Linux':
582
+ raise Exception("Custom op only supported on Linux platform currently.")
583
+
584
+ def _check_func(self):
585
+ """Check the validity of func_type and type of func"""
586
+ if self.func_type not in self.supported_func_type:
587
+ raise ValueError("{}, 'func_type' must be one of {}, but got {}"
588
+ .format(self.log_prefix, self.supported_func_type, self.func_type))
589
+ if self.func_type == "aot":
590
+ self._check_aot_func()
591
+
592
+ elif self.func_type == "julia":
593
+ self._check_julia_func()
594
+ elif self.func_type == HYBRID_TYPE:
595
+ if not hasattr(self.func, MS_KERNEL_FLAG):
596
+ raise TypeError("{}, 'func' must be a function decorated by kernel".format(self.log_prefix))
597
+ self._is_ms_kernel = True
598
+ self._func_compile_attrs = getattr(self.func, "compile_attrs", {})
599
+ elif self.func_type == "akg":
600
+ if hasattr(self.func, MS_KERNEL_FLAG):
601
+ logger.warning("{}. To have a better user experience, the mode hybrid is suggested "
602
+ "for the input function with decorator @kernel. "
603
+ "To enable this mode, set the 'func_type' to be \"hybrid\"".format(self.log_prefix))
604
+ elif self.func_type == "pyfunc":
605
+ if hasattr(self.func, MS_KERNEL_FLAG):
606
+ logger.warning("{}. Now you are using the function with decorator @kernel in the mode pyfunc. "
607
+ "The kernel will be executed as a native python function, which might lead to "
608
+ "low efficiency. To accelerate the kernel, set the 'func_type' to be \"hybrid\""
609
+ .format(self.log_prefix))
610
+ elif self.func_type == "tbe":
611
+ if not callable(self.func):
612
+ raise TypeError("{}, 'func' must be of type function, but got {}"
613
+ .format(self.log_prefix, type(self.func)))
614
+
615
+ def _update_func_imply_path(self):
616
+ """Update op_imply_path of func"""
617
+ file_path = os.path.realpath(inspect.getfile(self.func))
618
+
619
+ if not self.func_type == "tbe":
620
+ # Custom ops with type other than tbe doesn't need to import from the path
621
+ # use the file path directly
622
+ return file_path
623
+ # For the custom op of type tbe, the kernel compiler will import the module from file path.
624
+ # we will try import in the initialization,
625
+ if file_path in Custom.tbe_path_checked:
626
+ logger.info("The file of {} has already been checked good to be imported.".format(self.func_name))
627
+ return file_path
628
+
629
+ if file_path not in Custom.tbe_path_failed:
630
+ # As a single file might include multiply functions
631
+ # we will not try the file path which already failed in previous trials
632
+ try:
633
+ mod_spec = importlib.util.spec_from_file_location(
634
+ self.func_name, file_path)
635
+ custom_mod = importlib.util.module_from_spec(mod_spec)
636
+ mod_spec.loader.exec_module(custom_mod)
637
+ except (ImportError, RecursionError):
638
+ Custom.tbe_path_failed.append(file_path)
639
+ else:
640
+ Custom.tbe_path_checked.append(file_path)
641
+ return file_path
642
+
643
+ # Create a new file for each tbe function
644
+ op_imply_path = os.path.realpath(_get_cache_path() + self.func_name + ".py")
645
+ if op_imply_path in Custom.op_path_in_cache:
646
+ logger.info("The new file of {} has already been created.".format(self.func_name))
647
+ return op_imply_path
648
+
649
+ logger.warning("Fail to import the original source file. Create a new source file for {}. "
650
+ "The new file will not include the dependency for the op function. "
651
+ "Check the definition of the function {} "
652
+ "in the file: {}".format(self.func_name, self.func_name, op_imply_path))
653
+
654
+ Custom.op_path_in_cache.append(op_imply_path)
655
+
656
+ if os.path.exists(op_imply_path):
657
+ try:
658
+ os.remove(op_imply_path)
659
+ except FileNotFoundError:
660
+ logger.warning("Fail to remove the existing file. Check the definition of the function {} "
661
+ "in the file: {}".format(self.func_name, op_imply_path))
662
+
663
+ with open(op_imply_path, 'at') as file:
664
+ if platform.system() != "Windows":
665
+ fcntl.flock(file.fileno(), fcntl.LOCK_EX)
666
+ file.seek(0, 2)
667
+ if file.tell() == 0:
668
+ file.write(self.func_source_str)
669
+ os.chmod(op_imply_path, stat.S_IRUSR | stat.S_IWUSR)
670
+ return op_imply_path
671
+
672
+ def _update_func_info(self, reg_info):
673
+ """Update information of func"""
674
+ if callable(self.func):
675
+ # For the func_type other then hybrid, get the original function if func is decorated
676
+ if "__wrapped__" in self.func.__dict__ and self.func_type not in ["hybrid", "pyfunc"]:
677
+ self.func = self.func.__dict__["__wrapped__"]
678
+ # func name
679
+ self.func_name = self.func.__name__
680
+
681
+ # source code of func, not include the decorator before def
682
+ self.func_source_str = inspect.getsource(self.func)
683
+ index = self.func_source_str.find("def ")
684
+ if index != -1:
685
+ self.func_source_str = self.func_source_str[index:]
686
+
687
+ # update path of func for TBE type of custom op
688
+ self.imply_path = self._update_func_imply_path()
689
+ if self._is_ms_kernel:
690
+ # static check for the Hybrid DSL in hybrid
691
+ root = ast.parse(self.func_source_str)
692
+ inplace_assign_output = determine_variable_usage(root, self.func_name)
693
+ if inplace_assign_output:
694
+ self.add_prim_attr("inplace_assign_output",
695
+ " ".join((str(j)
696
+ for i in inplace_assign_output
697
+ for j in i)))
698
+ self.add_prim_attr('func_source_str', self.func_source_str)
699
+
700
+ # unique func name
701
+ sha256 = hashlib.sha256()
702
+ sha256.update(self.imply_path.encode("utf-8"))
703
+ sha256.update(self.func_source_str.encode("utf-8"))
704
+ hash_str = sha256.hexdigest()
705
+ self.uniq_name = self.name + "_" + self.func_name + "_" + hash_str
706
+ elif isinstance(self.func, str):
707
+ # func name
708
+ self.func_name = self.func
709
+ # uniq func name
710
+ prefix = self.name
711
+ if reg_info is None:
712
+ reg_info = {}
713
+ reg_info_list = self._get_expanded_list(reg_info)
714
+ for reg_info_item in reg_info_list:
715
+ if not isinstance(reg_info_item, (str, dict)):
716
+ continue
717
+ if isinstance(reg_info_item, str):
718
+ reg_info_item = json.loads(reg_info_item)
719
+ prefix = "_".join([prefix, reg_info_item.get(OP_NAME, "")])
720
+ self.uniq_name = prefix + "_" + self.func_name
721
+ else:
722
+ raise TypeError("For '{}', 'func' must be of type function or str, but got {}"
723
+ .format(self.name, type(self.func)))
724
+
725
+ def _update_reg_attrs(self, reg_info):
726
+ """Update op attrs in reg_info."""
727
+ output_name_list = []
728
+ for _, item in enumerate(reg_info.get("outputs", [])):
729
+ if isinstance(item, dict) and item.get(KEY_NAME):
730
+ output_name_list.append(item.get(KEY_NAME))
731
+ if output_name_list:
732
+ self.add_prim_attr("output_names", output_name_list)
733
+
734
+ if isinstance(reg_info.get(OP_NAME), str):
735
+ self.add_prim_attr("reg_op_name", reg_info.get(OP_NAME))
736
+
737
+ if self.func_type == "aicpu":
738
+ self.uniq_name = reg_info[OP_NAME]
739
+ self.add_prim_attr("uniq_name", self.uniq_name)
740
+
741
+ if self.func_type in ["aot", "aicpu"]:
742
+ if reg_info.get(KEY_ATTR) is not None and isinstance(reg_info[KEY_ATTR], list):
743
+ for item in reg_info[KEY_ATTR]:
744
+ if isinstance(item, dict) and item.get("value") is not None:
745
+ self.add_prim_attr(item[KEY_NAME], item["value"])
746
+
747
+ def _register_info(self, info):
748
+ """Register reg_info."""
749
+ reg_info = info
750
+ if reg_info is None and hasattr(self.func, "reg_info"):
751
+ reg_info = getattr(self.func, "reg_info")
752
+ if self.func_type == "aicpu" and reg_info is None:
753
+ raise ValueError("{}, the registration information must be set, but current is None. Use 'CustomRegOp' to "
754
+ "generate the registration information, then pass it to 'reg_info'"
755
+ .format(self.log_prefix))
756
+ reg_info_list = self._get_expanded_list(reg_info)
757
+ for reg_info in reg_info_list:
758
+ if not isinstance(reg_info, (str, dict)):
759
+ continue
760
+ if isinstance(reg_info, str):
761
+ reg_info = json.loads(reg_info)
762
+ if self.fake_output:
763
+ reg_info["outputs"].append(dict({"index": 0, KEY_NAME: "y", "param_type": "required"}))
764
+ new_dtype_format = []
765
+ for i in reg_info["dtype_format"]:
766
+ new_dtype_format.append(i + (DataType.I32_Default,))
767
+ reg_info["dtype_format"] = new_dtype_format
768
+
769
+ self._update_reg_attrs(reg_info)
770
+
771
+ target = self._get_target(reg_info)
772
+ # Reg info for func is only registered once for a certain target
773
+ if self._has_registered(target):
774
+ continue
775
+ # Register
776
+ reg_info = self._reformat_reg_info(reg_info, target)
777
+ reg_info_str = json.dumps(reg_info)
778
+ op_lib = Oplib()
779
+ if not op_lib.reg_op(reg_info_str, self.imply_path):
780
+ raise ValueError("{}, the registration information is registered failed. Use 'CustomRegOp' to "
781
+ "generate the registration information, then pass it to 'reg_info' or use "
782
+ "'custom_info_register' to bind it to 'func' if 'func' is a function."
783
+ .format(self.log_prefix))
784
+ self._save_attr(reg_info)
785
+ self._save_register_status(target)
786
+
787
+ def _get_expanded_list(self, data):
788
+ """Recursive function to parse elements in list or tuple."""
789
+ data_list = []
790
+ if isinstance(data, (list, tuple)):
791
+ for i in data:
792
+ tmp_list = self._get_expanded_list(i)
793
+ for ii in tmp_list:
794
+ data_list.append(ii)
795
+ else:
796
+ data_list.append(data)
797
+ return data_list
798
+
799
+ def _get_registered_targets(self):
800
+ """Get the registered targets of func."""
801
+ targets = []
802
+ if callable(self.func):
803
+ targets = getattr(self.func, "registered_targets", [])
804
+ elif isinstance(self.func, str):
805
+ targets = Custom.registered_func.get(self.uniq_name, [])
806
+ if not isinstance(targets, list):
807
+ targets = [targets]
808
+ return targets
809
+
810
+ def _has_registered(self, target):
811
+ """Check if registration information is registered in target."""
812
+ registered_targets = self._get_registered_targets()
813
+ return target in registered_targets
814
+
815
+ def _save_register_status(self, target):
816
+ """Save registration status for target."""
817
+ if callable(self.func):
818
+ registered_targets = getattr(self.func, "registered_targets", [])
819
+ registered_targets.append(target)
820
+ setattr(self.func, "registered_targets", registered_targets)
821
+ elif isinstance(self.func, str):
822
+ func_name = self.uniq_name
823
+ if isinstance(Custom.registered_func.get(func_name), list):
824
+ Custom.registered_func.get(func_name).append(target)
825
+ else:
826
+ Custom.registered_func[func_name] = [target]
827
+
828
+ def _reformat_reg_info(self, reg_info, target):
829
+ """Reformat registration information."""
830
+ if not isinstance(reg_info, dict):
831
+ raise TypeError("{}, the registration information must be of type dict, but got {} with type {}. Use "
832
+ "'CustomRegOp' to generate the registration information, then pass it to 'reg_info' or "
833
+ "use 'custom_info_register' to bind it to 'func' if 'func' is a function."
834
+ .format(self.log_prefix, reg_info, type(reg_info)))
835
+ reg_info[OP_NAME] = self.uniq_name
836
+ reg_info[IMPLY_TYPE] = self._get_imply_type(reg_info, target)
837
+ if not isinstance(reg_info.get(FUSION_TYPE), str) or not reg_info[FUSION_TYPE].strip():
838
+ reg_info[FUSION_TYPE] = "OPAQUE"
839
+ # Supplement necessary info for TBE if these information is missing in reg_info
840
+ if reg_info[IMPLY_TYPE] == TBE:
841
+ if reg_info.get(KEY_ATTR) is not None and isinstance(reg_info[KEY_ATTR], list):
842
+ for i, item in enumerate(reg_info[KEY_ATTR]):
843
+ if isinstance(item, dict) and item.get("value") is None:
844
+ reg_info[KEY_ATTR][i]["value"] = "all"
845
+ reg_info["async_flag"] = reg_info.get("async_flag", False)
846
+ reg_info["binfile"] = "%s.so" % self.func_name
847
+ reg_info["compute_cost"] = reg_info.get("compute_cost", 10)
848
+ reg_info["kernel"] = self.func_name
849
+ reg_info["partial_flag"] = reg_info.get("partial_flag", True)
850
+ reg_info["needCheckSupport"] = reg_info.get("need_check_supported", False)
851
+ # Supplement necessary info for AKG if these information is missing in reg_info
852
+ if reg_info[IMPLY_TYPE] == AKG:
853
+ target_to_processor = {ASCEND: AICORE, GPU: CUDA, CPU: CPU}
854
+ reg_info["processor"] = reg_info.get("processor", target_to_processor.get(target))
855
+ return reg_info
856
+
857
+ def _get_target(self, reg_info):
858
+ """Get target information."""
859
+ target = None
860
+ if isinstance(reg_info, dict):
861
+ # Get target from reg_info["target"]
862
+ target = reg_info.get("target")
863
+ # Infer target from reg_info["processor"], reg_info generated from AkgGpuRegOp or AkgAscendRegOp
864
+ # will have the processor information.
865
+ if target not in self.supported_targets:
866
+ processor_to_target = {AICORE: ASCEND, CUDA: GPU, CPU: CPU}
867
+ target = processor_to_target.get(reg_info.get("processor"))
868
+ # Infer target from reg_info[IMPLY_TYPE]
869
+ if target not in self.supported_targets:
870
+ imply_type_to_target = {TBE: ASCEND, GPU: GPU, CPU: CPU}
871
+ target = imply_type_to_target.get(reg_info.get(IMPLY_TYPE))
872
+ # Infer target from func_type
873
+ if target not in self.supported_targets:
874
+ func_type_to_target = {"tbe": ASCEND, "pyfunc": CPU}
875
+ target = func_type_to_target.get(self.func_type)
876
+ if target not in self.supported_targets:
877
+ raise ValueError("{}, target set in registration information must be one of {}, but got {}"
878
+ .format(self.log_prefix, self.supported_targets, target))
879
+ return target
880
+
881
+ def _get_imply_type(self, reg_info, target):
882
+ """Get imply_typ information."""
883
+ # Get imply_type from reg_info[IMPLY_TYPE]
884
+ if isinstance(reg_info, dict) and isinstance(reg_info.get(IMPLY_TYPE), str) and \
885
+ reg_info[IMPLY_TYPE].strip():
886
+ return reg_info[IMPLY_TYPE]
887
+ # Infer imply_type from func_type
888
+ func_type_to_imply_type = {"hybrid": AKG, "akg": AKG, "tbe": TBE, "aicpu": "AiCPU", "pyfunc": target,
889
+ "julia": target, "aot": "BiSheng" if target == ASCEND else target}
890
+ return func_type_to_imply_type.get(self.func_type, AKG)
891
+
892
+ def _save_attr(self, reg_info):
893
+ """Save input_names and attr_names of current func."""
894
+ if not isinstance(reg_info, dict):
895
+ return
896
+
897
+ def _get_value_list(key):
898
+ value = reg_info.get(key, [])
899
+ if not isinstance(value, (list, tuple)):
900
+ value = [value]
901
+ return value
902
+
903
+ tensor_inputs = _get_value_list("inputs")
904
+ attr = _get_value_list(KEY_ATTR)
905
+ input_names = [] # include tensor input names and attr input names
906
+ attr_names = []
907
+ pure_input_names = []
908
+ for item in tensor_inputs:
909
+ if isinstance(item, dict) and item.get(KEY_NAME) is not None:
910
+ input_names.append(item[KEY_NAME])
911
+ pure_input_names.append(item[KEY_NAME])
912
+ # attr is converted from inputs only when graph mode or when inputs name is also in reg info
913
+ attr_to_input_safe = bool(input_names) or context.get_context("mode") == ms.GRAPH_MODE
914
+ for item in attr:
915
+ if isinstance(item, dict) and item.get(KEY_NAME) is not None:
916
+ # for custom op with function tbe, we always add attrs to inputs as we don't
917
+ # deal with attr value here and leave them to the backend process to fit the
918
+ # usual process of tbe op compiling in mindspore
919
+ # for the rest cases, namely aot and aicpu, if we find values for attrs, we
920
+ # have already add them as prim attr of the op in the fun _update_reg_attrs
921
+ # add attr name to input name only when the value of attr is None in reg info
922
+ # as we need to get values of attrs from inputs
923
+ if attr_to_input_safe and (self.func_type == "tbe" or item.get("value", None) is None):
924
+ input_names.append(item[KEY_NAME])
925
+ attr_names.append(item[KEY_NAME])
926
+ cur_attr = {INPUT_NAMES: input_names, ATTR_NAMES: attr_names, "pure_input_names": pure_input_names}
927
+ # If func does not have attr, save current attr.
928
+ # Else, check if current attr is same as previous saved one.
929
+ prev_attr_names = attr_names
930
+ if callable(self.func):
931
+ func_attr = getattr(self.func, "func_attr", None)
932
+ if not isinstance(func_attr, dict):
933
+ setattr(self.func, "func_attr", cur_attr)
934
+ else:
935
+ prev_attr_names = func_attr.get(ATTR_NAMES)
936
+ elif isinstance(self.func, str):
937
+ func_attr = Custom.attr_dict.get(self.func)
938
+ if not isinstance(func_attr, dict):
939
+ Custom.attr_dict[self.func] = cur_attr
940
+ else:
941
+ prev_attr_names = func_attr.get(ATTR_NAMES)
942
+ if attr_names != prev_attr_names:
943
+ raise ValueError("{}, attr names set in registration information must be the same as previous saved one, "
944
+ "but got {} vs {}".format(self.log_prefix, attr_names, prev_attr_names))
945
+
946
+ def _add_prim_target(self):
947
+ """Add primitive_target to primitive's attr."""
948
+ registered_targets = self._get_registered_targets()
949
+ if self.func_type == "pyfunc":
950
+ self.set_device(CPU)
951
+ if registered_targets and registered_targets != [CPU]:
952
+ logger.warning("{}, only supports CPU platform, but got registered target {}. "
953
+ "We will run it on CPU".format(self.log_prefix, registered_targets))
954
+ elif self.func_type == "aot":
955
+ if len(registered_targets) != 1:
956
+ logger.info("{}, target will be set according to context.".format(self.log_prefix))
957
+ elif registered_targets == [GPU]:
958
+ self.set_device(GPU)
959
+ elif registered_targets == [CPU]:
960
+ self.set_device(CPU)
961
+ elif self.func_type == "julia":
962
+ self.set_device(CPU)
963
+ device_target = context.get_context('device_target')
964
+ if device_target == CPU:
965
+ pass
966
+ elif device_target == GPU and registered_targets and registered_targets == [CPU]:
967
+ logger.warning("{}, only supports CPU platform, but got registered target {}. "
968
+ "We will run it on CPU".format(self.log_prefix, registered_targets))
969
+ else:
970
+ raise ValueError("{}, only supports CPU platform, but got target {}."
971
+ .format(self.log_prefix, device_target))
972
+
973
+ def _update_attr(self):
974
+ """Add input_names, attr_names, primitive_target to primitive's attr."""
975
+
976
+ def _add_prim_attr(key):
977
+ value = func_attr.get(key)
978
+ if value:
979
+ self.add_prim_attr(key, value)
980
+
981
+ func_attr = {}
982
+ if callable(self.func):
983
+ inputs_num = len(inspect.signature(self.func).parameters)
984
+ self.add_prim_attr("inputs_num", inputs_num)
985
+ func_attr = getattr(self.func, "func_attr", None)
986
+ elif isinstance(self.func, str):
987
+ func_attr = Custom.attr_dict.get(self.func)
988
+ if isinstance(func_attr, dict):
989
+ _add_prim_attr(INPUT_NAMES)
990
+ _add_prim_attr(ATTR_NAMES)
991
+ _add_prim_attr("pure_input_names")
992
+ self._add_prim_target()
993
+ if callable(self.func) and callable(self.out_shape):
994
+ if hasattr(self.out_shape, "type") and getattr(self.out_shape, "type") == AUTO_DIFF:
995
+ self.add_prim_attr(AUTO_DIFF, True)
996
+ else:
997
+ self.add_prim_attr(AUTO_DIFF, False)
998
+
999
+ def _hybrid_autodiff(self, input_func_type):
1000
+ """generate backward op for a custom hybrid op"""
1001
+ inputs_num = len(inspect.signature(self.func).parameters)
1002
+ if inputs_num == 0:
1003
+ logger.warning("{}, 'func' with no input has no backward operator.".format(self.log_prefix))
1004
+ elif inputs_num > 10:
1005
+ logger.warning("{}, currently automatic differentiation for 'func' with more than 10 inputs is not "
1006
+ "supported.".format(self.log_prefix))
1007
+ else:
1008
+ grad_func = autodiff_bprop(inputs_num)
1009
+
1010
+ def infer_func(*args):
1011
+ return args[:inputs_num]
1012
+
1013
+ setattr(infer_func, "type", AUTO_DIFF)
1014
+ op = Custom(func=self.func, out_shape=infer_func, out_dtype=infer_func,
1015
+ func_type=input_func_type, bprop=True)
1016
+ self.bprop = grad_func(op)
1017
+
1018
+ def _hybrid_func_analyser(self):
1019
+ """analyze hybrid source string and add corresponding attrs."""
1020
+ args = {val: idx for idx, val in enumerate(list(inspect.signature(self.func).parameters))}
1021
+ return_num = self.func_source_str.count('return')
1022
+ if return_num != 1:
1023
+ logger.warning("{}, source code of 'func' should have only one 'return' syntax, but got {}"
1024
+ .format(self.log_prefix, return_num))
1025
+ else:
1026
+ sentences = [s for s in self.func_source_str.split('\n') if s.count("return") == 1]
1027
+ symbols = re.sub(r"return|\s|\[|\]|\(|\)", "", sentences[-1]).split(',')
1028
+ inplace_assign_output = [[idx, args[val]] if val in args else [idx, -1]
1029
+ for idx, val in enumerate(symbols)]
1030
+
1031
+ if any(i[1] != -1 for i in inplace_assign_output):
1032
+ self.add_prim_attr("inplace_assign_output", " ".join(
1033
+ (str(j) for i in inplace_assign_output for j in i)))
1034
+
1035
+ def _auto_infer(self, *args):
1036
+ """
1037
+ the automatic infer function for functions with @kernel decorator
1038
+ """
1039
+ fake_input = []
1040
+ enable_infer_value = True
1041
+ for arg in args:
1042
+ if arg["value"] is not None:
1043
+ fake_input.append(arg["value"].asnumpy())
1044
+ else:
1045
+ arg_dtype = arg["dtype"]
1046
+ # if any value is missing from input, disable infer value
1047
+ enable_infer_value = False
1048
+ if isinstance(arg_dtype, mstype.TensorType):
1049
+ arg_dtype = arg_dtype.element_type()
1050
+ fake_arg = np.zeros(arg["shape"]).astype(
1051
+ mstype.dtype_to_nptype(arg_dtype))
1052
+ fake_input.append(fake_arg)
1053
+
1054
+ fake_output = self.func(*fake_input)
1055
+
1056
+ if hasattr(fake_output, 'shape'):
1057
+ infer_shape = fake_output.shape
1058
+ infer_dtype = mstype.TensorType(mstype.pytype_to_dtype(fake_output.dtype))
1059
+ else:
1060
+ infer_shape = (1,)
1061
+ infer_dtype = mstype.pytype_to_dtype(fake_output.dtype)
1062
+
1063
+ infer_value = Tensor(fake_output) if enable_infer_value else None
1064
+
1065
+ return infer_shape, infer_dtype, infer_value