mindspore 2.4.10__cp310-cp310-win_amd64.whl → 2.6.0rc1__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.
Potentially problematic release.
This version of mindspore might be problematic. Click here for more details.
- mindspore/.commit_id +1 -1
- mindspore/Microsoft.VisualStudio.Telemetry.dll +0 -0
- mindspore/Newtonsoft.Json.dll +0 -0
- mindspore/__init__.py +13 -6
- mindspore/_c_dataengine.cp310-win_amd64.pyd +0 -0
- mindspore/_c_expression.cp310-win_amd64.pyd +0 -0
- mindspore/_c_mindrecord.cp310-win_amd64.pyd +0 -0
- mindspore/_check_jit_forbidden_api.py +3 -0
- mindspore/_checkparam.py +3 -38
- mindspore/_deprecated/__init__.py +17 -0
- mindspore/_deprecated/jit.py +198 -0
- mindspore/_extends/builtin_operations.py +1 -1
- mindspore/_extends/parallel_compile/akg_compiler/gen_custom_op_files.py +1 -1
- mindspore/_extends/parse/__init__.py +6 -7
- mindspore/_extends/parse/compile_config.py +83 -0
- mindspore/_extends/parse/deprecated/__init__.py +0 -0
- mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +394 -0
- mindspore/_extends/parse/jit_fallback_modules/__init__.py +0 -0
- mindspore/_extends/parse/jit_fallback_modules/check_utils.py +123 -0
- mindspore/_extends/parse/jit_fallback_modules/third_party_modules.py +50 -0
- mindspore/_extends/parse/parser.py +46 -197
- mindspore/_extends/parse/resources.py +1 -5
- mindspore/_extends/parse/standard_method.py +217 -98
- mindspore/_extends/pijit/__init__.py +2 -2
- mindspore/_extends/pijit/pijit_func_white_list.py +17 -12
- mindspore/_extends/pijit/tensor_func_list.py +27 -0
- mindspore/_extends/utils.py +1 -1
- mindspore/amp.py +11 -5
- mindspore/atlprov.dll +0 -0
- mindspore/avcodec-59.dll +0 -0
- mindspore/avdevice-59.dll +0 -0
- mindspore/avfilter-8.dll +0 -0
- mindspore/avformat-59.dll +0 -0
- mindspore/avutil-57.dll +0 -0
- mindspore/boost/__init__.py +2 -2
- mindspore/boost/base.py +3 -7
- mindspore/boost/boost_cell_wrapper.py +138 -43
- mindspore/c1.dll +0 -0
- mindspore/c1xx.dll +0 -0
- mindspore/c2.dll +0 -0
- mindspore/common/__init__.py +6 -3
- mindspore/common/_grad_function.py +56 -0
- mindspore/common/_pijit_context.py +14 -5
- mindspore/common/_register_for_tensor.py +1 -2
- mindspore/common/_stub_tensor.py +30 -14
- mindspore/common/_tensor_cpp_method.py +17 -0
- mindspore/common/_tensor_docs.py +4760 -0
- mindspore/common/api.py +435 -371
- mindspore/common/auto_dynamic_shape.py +41 -44
- mindspore/common/dtype.py +39 -36
- mindspore/common/dump.py +9 -6
- mindspore/common/file_system.py +9 -1
- mindspore/common/generator.py +2 -0
- mindspore/common/hook_handle.py +6 -2
- mindspore/common/initializer.py +13 -10
- mindspore/common/jit_begin_end.py +94 -0
- mindspore/common/jit_config.py +6 -1
- mindspore/common/jit_context.py +76 -0
- mindspore/common/jit_trace.py +378 -0
- mindspore/common/lazy_inline.py +9 -3
- mindspore/common/mindir_util.py +10 -2
- mindspore/common/mutable.py +5 -4
- mindspore/common/parameter.py +135 -52
- mindspore/common/seed.py +2 -2
- mindspore/common/sparse_tensor.py +23 -17
- mindspore/common/tensor.py +951 -1992
- mindspore/communication/__init__.py +7 -5
- mindspore/communication/_comm_helper.py +52 -2
- mindspore/communication/comm_func.py +240 -181
- mindspore/communication/management.py +95 -26
- mindspore/context.py +314 -566
- mindspore/dataset/__init__.py +65 -37
- mindspore/dataset/audio/__init__.py +2 -8
- mindspore/dataset/audio/transforms.py +3 -17
- mindspore/dataset/callback/ds_callback.py +2 -1
- mindspore/dataset/core/config.py +87 -6
- mindspore/dataset/engine/cache_admin.py +3 -3
- mindspore/dataset/engine/cache_client.py +6 -5
- mindspore/dataset/engine/datasets.py +292 -267
- mindspore/dataset/engine/datasets_audio.py +22 -8
- mindspore/dataset/engine/datasets_standard_format.py +46 -27
- mindspore/dataset/engine/datasets_text.py +78 -48
- mindspore/dataset/engine/datasets_user_defined.py +182 -116
- mindspore/dataset/engine/datasets_vision.py +120 -44
- mindspore/dataset/engine/iterators.py +283 -63
- mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +1 -1
- mindspore/dataset/engine/obs/util.py +8 -0
- mindspore/dataset/engine/queue.py +40 -0
- mindspore/dataset/engine/samplers.py +289 -43
- mindspore/dataset/engine/serializer_deserializer.py +3 -2
- mindspore/dataset/engine/validators.py +53 -11
- mindspore/dataset/text/__init__.py +7 -6
- mindspore/dataset/text/transforms.py +6 -5
- mindspore/dataset/text/utils.py +3 -3
- mindspore/dataset/transforms/__init__.py +0 -9
- mindspore/dataset/transforms/py_transforms_util.py +17 -0
- mindspore/dataset/transforms/transforms.py +31 -14
- mindspore/dataset/utils/browse_dataset.py +1 -1
- mindspore/dataset/vision/__init__.py +2 -9
- mindspore/dataset/vision/transforms.py +202 -158
- mindspore/dataset/vision/utils.py +7 -5
- mindspore/dataset/vision/validators.py +1 -2
- mindspore/device_context/__init__.py +21 -0
- mindspore/device_context/ascend/__init__.py +25 -0
- mindspore/device_context/ascend/device.py +72 -0
- mindspore/device_context/ascend/op_debug.py +153 -0
- mindspore/device_context/ascend/op_precision.py +193 -0
- mindspore/device_context/ascend/op_tuning.py +123 -0
- mindspore/{ops_generate/gen_constants.py → device_context/cpu/__init__.py} +6 -17
- mindspore/device_context/cpu/device.py +62 -0
- mindspore/device_context/cpu/op_tuning.py +43 -0
- mindspore/device_context/gpu/__init__.py +21 -0
- mindspore/device_context/gpu/device.py +70 -0
- mindspore/device_context/gpu/op_precision.py +67 -0
- mindspore/device_context/gpu/op_tuning.py +175 -0
- mindspore/device_manager.py +170 -0
- mindspore/dnnl.dll +0 -0
- mindspore/dpcmi.dll +0 -0
- mindspore/experimental/es/embedding_service.py +35 -27
- mindspore/experimental/llm_boost/__init__.py +1 -0
- mindspore/experimental/llm_boost/ascend_native/__init__.py +22 -0
- mindspore/experimental/llm_boost/ascend_native/llama_boost_ascend_native.py +211 -0
- mindspore/experimental/llm_boost/ascend_native/llm_boost.py +52 -0
- mindspore/experimental/llm_boost/atb/boost_base.py +2 -3
- mindspore/experimental/llm_boost/atb/llama_boost.py +6 -1
- mindspore/experimental/llm_boost/register.py +1 -0
- mindspore/experimental/map_parameter.py +4 -4
- mindspore/experimental/optim/adadelta.py +6 -6
- mindspore/experimental/optim/adagrad.py +4 -4
- mindspore/experimental/optim/adam.py +7 -0
- mindspore/experimental/optim/adamax.py +4 -4
- mindspore/experimental/optim/adamw.py +4 -0
- mindspore/experimental/optim/asgd.py +1 -1
- mindspore/experimental/optim/lr_scheduler.py +73 -46
- mindspore/experimental/optim/radam.py +34 -31
- mindspore/experimental/optim/rprop.py +1 -1
- mindspore/experimental/optim/sgd.py +1 -1
- mindspore/hal/contiguous_tensors_handle.py +6 -10
- mindspore/hal/device.py +55 -53
- mindspore/hal/event.py +52 -52
- mindspore/hal/memory.py +157 -117
- mindspore/hal/stream.py +150 -109
- mindspore/include/api/context.h +0 -1
- mindspore/include/dataset/constants.h +7 -4
- mindspore/include/dataset/execute.h +2 -2
- mindspore/jpeg62.dll +0 -0
- mindspore/log.py +50 -0
- mindspore/mindrecord/__init__.py +21 -8
- mindspore/mindrecord/config.py +17 -316
- mindspore/mindrecord/filereader.py +1 -9
- mindspore/mindrecord/filewriter.py +5 -15
- mindspore/mindrecord/mindpage.py +1 -9
- mindspore/mindspore_backend_common.dll +0 -0
- mindspore/mindspore_backend_manager.dll +0 -0
- mindspore/mindspore_common.dll +0 -0
- mindspore/mindspore_core.dll +0 -0
- mindspore/mindspore_dump.dll +0 -0
- mindspore/mindspore_frontend.dll +0 -0
- mindspore/mindspore_glog.dll +0 -0
- mindspore/mindspore_memory_pool.dll +0 -0
- mindspore/mindspore_ms_backend.dll +0 -0
- mindspore/mindspore_ops.dll +0 -0
- mindspore/{mindspore_backend.dll → mindspore_ops_host.dll} +0 -0
- mindspore/mindspore_ops_kernel_common.dll +0 -0
- mindspore/mindspore_profiler.dll +0 -0
- mindspore/mindspore_pyboost.dll +0 -0
- mindspore/mindspore_pynative.dll +0 -0
- mindspore/mindspore_res_manager.dll +0 -0
- mindspore/mindspore_runtime_pipeline.dll +0 -0
- mindspore/mint/__init__.py +796 -759
- mindspore/mint/distributed/__init__.py +70 -4
- mindspore/mint/distributed/distributed.py +2679 -44
- mindspore/mint/linalg/__init__.py +8 -0
- mindspore/mint/nn/__init__.py +743 -22
- mindspore/mint/nn/functional.py +716 -23
- mindspore/mint/nn/layer/__init__.py +21 -4
- mindspore/mint/nn/layer/_functions.py +334 -0
- mindspore/mint/nn/layer/activation.py +276 -1
- mindspore/mint/nn/layer/basic.py +123 -0
- mindspore/mint/nn/layer/conv.py +921 -0
- mindspore/mint/nn/layer/normalization.py +223 -28
- mindspore/mint/nn/layer/padding.py +797 -0
- mindspore/mint/nn/layer/pooling.py +235 -0
- mindspore/mint/optim/__init__.py +3 -1
- mindspore/mint/optim/adam.py +223 -0
- mindspore/mint/optim/adamw.py +26 -19
- mindspore/mint/optim/sgd.py +171 -0
- mindspore/mint/special/__init__.py +2 -1
- mindspore/msobj140.dll +0 -0
- mindspore/mspdb140.dll +0 -0
- mindspore/mspdbcore.dll +0 -0
- mindspore/mspdbst.dll +0 -0
- mindspore/mspft140.dll +0 -0
- mindspore/msvcdis140.dll +0 -0
- mindspore/msvcp140_1.dll +0 -0
- mindspore/msvcp140_2.dll +0 -0
- mindspore/msvcp140_atomic_wait.dll +0 -0
- mindspore/msvcp140_codecvt_ids.dll +0 -0
- mindspore/multiprocessing/__init__.py +5 -0
- mindspore/nn/__init__.py +4 -1
- mindspore/nn/cell.py +1370 -189
- mindspore/nn/dynamic_lr.py +2 -1
- mindspore/nn/layer/activation.py +29 -27
- mindspore/nn/layer/basic.py +51 -35
- mindspore/nn/layer/channel_shuffle.py +3 -3
- mindspore/nn/layer/container.py +1 -1
- mindspore/nn/layer/conv.py +22 -17
- mindspore/nn/layer/embedding.py +12 -11
- mindspore/nn/layer/normalization.py +56 -49
- mindspore/nn/layer/padding.py +4 -3
- mindspore/nn/layer/pooling.py +120 -42
- mindspore/nn/layer/rnn_cells.py +1 -1
- mindspore/nn/layer/rnns.py +2 -1
- mindspore/nn/layer/timedistributed.py +5 -5
- mindspore/nn/layer/transformer.py +59 -36
- mindspore/nn/learning_rate_schedule.py +8 -4
- mindspore/nn/loss/loss.py +58 -55
- mindspore/nn/optim/ada_grad.py +7 -5
- mindspore/nn/optim/adadelta.py +11 -9
- mindspore/nn/optim/adafactor.py +1 -1
- mindspore/nn/optim/adam.py +17 -13
- mindspore/nn/optim/adamax.py +8 -7
- mindspore/nn/optim/adasum.py +5 -5
- mindspore/nn/optim/asgd.py +1 -1
- mindspore/nn/optim/ftrl.py +11 -9
- mindspore/nn/optim/lamb.py +1 -1
- mindspore/nn/optim/lars.py +1 -4
- mindspore/nn/optim/lazyadam.py +12 -10
- mindspore/nn/optim/momentum.py +7 -6
- mindspore/nn/optim/optimizer.py +3 -3
- mindspore/nn/optim/proximal_ada_grad.py +12 -10
- mindspore/nn/optim/rmsprop.py +13 -12
- mindspore/nn/optim/rprop.py +11 -9
- mindspore/nn/optim/sgd.py +9 -6
- mindspore/nn/optim/tft_wrapper.py +5 -2
- mindspore/nn/optim/thor.py +2 -1
- mindspore/nn/probability/bijector/bijector.py +17 -11
- mindspore/nn/probability/bijector/gumbel_cdf.py +5 -5
- mindspore/nn/probability/bijector/invert.py +2 -2
- mindspore/nn/probability/bijector/scalar_affine.py +3 -3
- mindspore/nn/probability/bijector/softplus.py +3 -2
- mindspore/nn/probability/distribution/beta.py +3 -3
- mindspore/nn/probability/distribution/categorical.py +1 -1
- mindspore/nn/probability/distribution/cauchy.py +4 -2
- mindspore/nn/probability/distribution/exponential.py +6 -7
- mindspore/nn/probability/distribution/gamma.py +2 -2
- mindspore/nn/probability/distribution/gumbel.py +2 -2
- mindspore/nn/probability/distribution/half_normal.py +5 -3
- mindspore/nn/probability/distribution/logistic.py +5 -3
- mindspore/nn/probability/distribution/poisson.py +1 -1
- mindspore/nn/probability/distribution/uniform.py +5 -3
- mindspore/nn/reinforcement/_tensors_queue.py +1 -1
- mindspore/nn/reinforcement/tensor_array.py +1 -1
- mindspore/nn/utils/init.py +13 -11
- mindspore/nn/wrap/__init__.py +6 -6
- mindspore/nn/wrap/cell_wrapper.py +181 -122
- mindspore/nn/wrap/grad_reducer.py +45 -36
- mindspore/nn/wrap/loss_scale.py +6 -7
- mindspore/numpy/array_creations.py +63 -65
- mindspore/numpy/array_ops.py +149 -144
- mindspore/numpy/logic_ops.py +41 -42
- mindspore/numpy/math_ops.py +365 -363
- mindspore/numpy/utils.py +17 -18
- mindspore/numpy/utils_const.py +5 -6
- mindspore/opencv_core452.dll +0 -0
- mindspore/opencv_imgcodecs452.dll +0 -0
- mindspore/opencv_imgproc452.dll +0 -0
- mindspore/ops/__init__.py +5 -3
- mindspore/ops/_grad_experimental/grad_comm_ops.py +112 -16
- mindspore/ops/_grad_experimental/grad_debug_ops.py +14 -2
- mindspore/ops/_grad_experimental/grad_inner_ops.py +9 -0
- mindspore/ops/_grad_experimental/grad_math_ops.py +2 -1
- mindspore/ops/_grad_experimental/taylor_rule.py +29 -0
- mindspore/ops/_op_impl/cpu/__init__.py +1 -0
- mindspore/ops/_op_impl/cpu/raise_op.py +28 -0
- mindspore/ops/_register_for_op.py +0 -11
- mindspore/{ops_generate → ops/_utils}/arg_dtype_cast.py +123 -4
- mindspore/{ops_generate → ops/_utils}/arg_handler.py +3 -65
- mindspore/ops/_vmap/vmap_array_ops.py +27 -25
- mindspore/ops/_vmap/vmap_base.py +0 -2
- mindspore/ops/_vmap/vmap_grad_nn_ops.py +21 -14
- mindspore/ops/_vmap/vmap_math_ops.py +15 -16
- mindspore/ops/_vmap/vmap_nn_ops.py +29 -42
- mindspore/ops/auto_generate/__init__.py +4 -3
- mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +236 -46
- mindspore/ops/auto_generate/gen_extend_func.py +764 -124
- mindspore/ops/auto_generate/gen_ops_def.py +4018 -2264
- mindspore/ops/auto_generate/gen_ops_prim.py +15463 -5037
- mindspore/ops/auto_generate/pyboost_inner_prim.py +221 -87
- mindspore/ops/composite/__init__.py +2 -1
- mindspore/ops/composite/base.py +20 -25
- mindspore/ops/composite/math_ops.py +6 -16
- mindspore/ops/composite/multitype_ops/__init__.py +5 -2
- mindspore/ops/composite/multitype_ops/_compile_utils.py +228 -30
- mindspore/ops/composite/multitype_ops/_constexpr_utils.py +1 -2
- mindspore/ops/composite/multitype_ops/add_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/bitwise_and_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/bitwise_or_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/bitwise_xor_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/div_impl.py +6 -4
- mindspore/ops/composite/multitype_ops/equal_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/floordiv_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/getitem_impl.py +3 -2
- mindspore/ops/composite/multitype_ops/greater_equal_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/greater_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/in_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/invert_impl.py +50 -0
- mindspore/ops/composite/multitype_ops/left_shift_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/less_equal_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/less_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/logic_not_impl.py +3 -2
- mindspore/ops/composite/multitype_ops/logical_and_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/logical_or_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/mod_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/mul_impl.py +3 -2
- mindspore/ops/composite/multitype_ops/negative_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/not_equal_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/not_in_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/ones_like_impl.py +18 -0
- mindspore/ops/composite/multitype_ops/pow_impl.py +2 -30
- mindspore/ops/composite/multitype_ops/right_shift_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/setitem_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/sub_impl.py +2 -1
- mindspore/ops/function/__init__.py +40 -2
- mindspore/ops/function/_add_attr_func.py +58 -0
- mindspore/ops/function/array_func.py +2089 -2403
- mindspore/ops/function/clip_func.py +80 -23
- mindspore/ops/function/debug_func.py +57 -57
- mindspore/ops/function/grad/__init__.py +1 -0
- mindspore/ops/function/grad/grad_func.py +104 -71
- mindspore/ops/function/image_func.py +2 -2
- mindspore/ops/function/linalg_func.py +47 -78
- mindspore/ops/function/math_func.py +4501 -3802
- mindspore/ops/function/nn_func.py +1726 -620
- mindspore/ops/function/other_func.py +159 -1
- mindspore/ops/function/parameter_func.py +18 -84
- mindspore/ops/function/random_func.py +440 -387
- mindspore/ops/function/reshard_func.py +4 -70
- mindspore/ops/function/sparse_func.py +3 -3
- mindspore/ops/function/sparse_unary_func.py +6 -6
- mindspore/ops/function/spectral_func.py +25 -58
- mindspore/ops/function/vmap_func.py +24 -17
- mindspore/ops/functional.py +22 -7
- mindspore/ops/functional_overload.py +1440 -0
- mindspore/ops/op_info_register.py +32 -244
- mindspore/ops/operations/__init__.py +13 -7
- mindspore/ops/operations/_custom_ops_utils.py +247 -0
- mindspore/ops/operations/_embedding_cache_ops.py +4 -4
- mindspore/ops/operations/_grad_ops.py +2 -43
- mindspore/ops/operations/_infer_ops.py +2 -1
- mindspore/ops/operations/_inner_ops.py +43 -84
- mindspore/ops/operations/_ms_kernel.py +4 -10
- mindspore/ops/operations/_rl_inner_ops.py +1 -1
- mindspore/ops/operations/_scalar_ops.py +3 -2
- mindspore/ops/operations/_sequence_ops.py +1 -1
- mindspore/ops/operations/_tensor_array.py +1 -1
- mindspore/ops/operations/array_ops.py +81 -324
- mindspore/ops/operations/comm_ops.py +154 -108
- mindspore/ops/operations/custom_ops.py +232 -78
- mindspore/ops/operations/debug_ops.py +153 -59
- mindspore/ops/operations/inner_ops.py +7 -5
- mindspore/ops/operations/linalg_ops.py +1 -57
- mindspore/ops/operations/manually_defined/_inner.py +1 -1
- mindspore/ops/operations/manually_defined/ops_def.py +928 -180
- mindspore/ops/operations/math_ops.py +32 -234
- mindspore/ops/operations/nn_ops.py +210 -498
- mindspore/ops/operations/other_ops.py +62 -9
- mindspore/ops/operations/random_ops.py +13 -7
- mindspore/ops/operations/reshard_ops.py +1 -1
- mindspore/ops/operations/sparse_ops.py +2 -2
- mindspore/ops/primitive.py +66 -53
- mindspore/ops/tensor_method.py +1888 -0
- mindspore/ops_generate/__init__.py +0 -5
- mindspore/ops_generate/aclnn/__init__.py +0 -0
- mindspore/ops_generate/aclnn/aclnn_kernel_register_auto_cc_generator.py +135 -0
- mindspore/ops_generate/aclnn/gen_aclnn_implement.py +257 -0
- mindspore/ops_generate/api/__init__.py +0 -0
- mindspore/ops_generate/api/add_tensor_docs_generator.py +56 -0
- mindspore/ops_generate/api/cpp_create_prim_instance_helper_generator.py +105 -0
- mindspore/ops_generate/api/functional_map_cpp_generator.py +504 -0
- mindspore/ops_generate/api/functional_overload_py_generator.py +112 -0
- mindspore/ops_generate/api/functions_cc_generator.py +237 -0
- mindspore/ops_generate/api/gen_api.py +103 -0
- mindspore/ops_generate/api/op_api_proto.py +235 -0
- mindspore/ops_generate/api/tensor_func_reg_cpp_generator.py +461 -0
- mindspore/ops_generate/common/__init__.py +0 -0
- mindspore/ops_generate/common/base_generator.py +11 -0
- mindspore/ops_generate/common/gen_constants.py +91 -0
- mindspore/ops_generate/common/gen_utils.py +348 -0
- mindspore/ops_generate/common/op_proto.py +473 -0
- mindspore/ops_generate/common/template.py +523 -0
- mindspore/ops_generate/gen_ops.py +22 -1069
- mindspore/ops_generate/op_def/__init__.py +0 -0
- mindspore/ops_generate/op_def/gen_op_def.py +90 -0
- mindspore/ops_generate/op_def/lite_ops_cpp_generator.py +191 -0
- mindspore/ops_generate/op_def/ops_def_cc_generator.py +299 -0
- mindspore/ops_generate/op_def/ops_def_h_generator.py +74 -0
- mindspore/ops_generate/op_def/ops_name_h_generator.py +83 -0
- mindspore/ops_generate/op_def/ops_primitive_h_generator.py +125 -0
- mindspore/ops_generate/op_def_py/__init__.py +0 -0
- mindspore/ops_generate/op_def_py/gen_op_def_py.py +47 -0
- mindspore/ops_generate/op_def_py/op_def_py_generator.py +132 -0
- mindspore/ops_generate/op_def_py/op_prim_py_generator.py +489 -0
- mindspore/ops_generate/pyboost/__init__.py +0 -0
- mindspore/ops_generate/pyboost/auto_grad_impl_cc_generator.py +139 -0
- mindspore/ops_generate/pyboost/auto_grad_reg_cc_generator.py +93 -0
- mindspore/ops_generate/pyboost/gen_pyboost_func.py +175 -0
- mindspore/ops_generate/pyboost/op_template_parser.py +517 -0
- mindspore/ops_generate/pyboost/pyboost_functions_cpp_generator.py +407 -0
- mindspore/ops_generate/pyboost/pyboost_functions_h_generator.py +100 -0
- mindspore/ops_generate/pyboost/pyboost_functions_py_generator.py +148 -0
- mindspore/ops_generate/pyboost/pyboost_grad_function_cpp_generator.py +155 -0
- mindspore/ops_generate/pyboost/pyboost_inner_prim_generator.py +132 -0
- mindspore/ops_generate/pyboost/pyboost_native_grad_functions_generator.py +272 -0
- mindspore/ops_generate/pyboost/pyboost_op_cpp_code_generator.py +938 -0
- mindspore/ops_generate/pyboost/pyboost_overload_functions_cpp_generator.py +357 -0
- mindspore/ops_generate/{pyboost_utils.py → pyboost/pyboost_utils.py} +179 -36
- mindspore/ops_generate/resources/__init__.py +0 -0
- mindspore/ops_generate/resources/resource_list.py +30 -0
- mindspore/ops_generate/resources/resource_loader.py +36 -0
- mindspore/ops_generate/resources/resource_manager.py +64 -0
- mindspore/ops_generate/resources/yaml_loader.py +88 -0
- mindspore/ops_generate/tensor_py_cc_generator.py +122 -0
- mindspore/parallel/__init__.py +7 -3
- mindspore/parallel/_auto_parallel_context.py +152 -34
- mindspore/parallel/_cell_wrapper.py +130 -15
- mindspore/parallel/_parallel_serialization.py +107 -5
- mindspore/parallel/_ps_context.py +1 -1
- mindspore/parallel/_recovery_context.py +7 -2
- mindspore/parallel/_tensor.py +142 -18
- mindspore/parallel/_utils.py +199 -23
- mindspore/parallel/algo_parameter_config.py +4 -4
- mindspore/parallel/auto_parallel.py +732 -0
- mindspore/parallel/checkpoint_convert.py +159 -0
- mindspore/parallel/checkpoint_transform.py +698 -35
- mindspore/parallel/cluster/process_entity/_api.py +276 -50
- mindspore/parallel/cluster/process_entity/_utils.py +41 -6
- mindspore/parallel/cluster/run.py +21 -4
- mindspore/parallel/function/__init__.py +24 -0
- mindspore/parallel/function/reshard_func.py +259 -0
- mindspore/parallel/nn/__init__.py +25 -0
- mindspore/parallel/nn/parallel_cell_wrapper.py +263 -0
- mindspore/parallel/nn/parallel_grad_reducer.py +169 -0
- mindspore/parallel/parameter_broadcast.py +25 -14
- mindspore/parallel/shard.py +137 -58
- mindspore/parallel/transform_safetensors.py +363 -305
- mindspore/pgodb140.dll +0 -0
- mindspore/pgort140.dll +0 -0
- mindspore/profiler/__init__.py +22 -5
- mindspore/profiler/analysis/__init__.py +0 -0
- mindspore/profiler/analysis/parser/__init__.py +0 -0
- mindspore/profiler/analysis/parser/ascend_cann_parser.py +170 -0
- mindspore/profiler/analysis/parser/base_parser.py +158 -0
- mindspore/profiler/analysis/parser/framework_cann_relation_parser.py +45 -0
- mindspore/profiler/analysis/parser/ms_framework_parser.py +142 -0
- mindspore/profiler/analysis/parser/ms_minddata_parser.py +145 -0
- mindspore/profiler/analysis/parser/timeline_assembly_factory/__init__.py +0 -0
- mindspore/profiler/analysis/parser/timeline_assembly_factory/ascend_timeline_assembler.py +264 -0
- mindspore/profiler/analysis/parser/timeline_assembly_factory/base_timeline_assembler.py +40 -0
- mindspore/profiler/analysis/parser/timeline_assembly_factory/trace_view_container.py +106 -0
- mindspore/profiler/analysis/parser/timeline_creator/__init__.py +0 -0
- mindspore/profiler/analysis/parser/timeline_creator/base_timeline_creator.py +44 -0
- mindspore/profiler/analysis/parser/timeline_creator/cpu_op_timeline_creator.py +90 -0
- mindspore/profiler/analysis/parser/timeline_creator/fwk_timeline_creator.py +76 -0
- mindspore/profiler/analysis/parser/timeline_creator/msprof_timeline_creator.py +103 -0
- mindspore/profiler/analysis/parser/timeline_creator/scope_layer_timeline_creator.py +134 -0
- mindspore/profiler/analysis/parser/timeline_event/__init__.py +0 -0
- mindspore/profiler/analysis/parser/timeline_event/base_event.py +233 -0
- mindspore/profiler/analysis/parser/timeline_event/cpu_op_event.py +47 -0
- mindspore/profiler/analysis/parser/timeline_event/flow_event.py +36 -0
- mindspore/profiler/analysis/parser/timeline_event/fwk_event.py +415 -0
- mindspore/profiler/analysis/parser/timeline_event/msprof_event.py +73 -0
- mindspore/profiler/analysis/parser/timeline_event/scope_layer_event.py +53 -0
- mindspore/profiler/analysis/parser/timeline_event/timeline_event_pool.py +146 -0
- mindspore/profiler/analysis/task_manager.py +131 -0
- mindspore/profiler/analysis/time_converter.py +84 -0
- mindspore/profiler/analysis/viewer/__init__.py +0 -0
- mindspore/profiler/analysis/viewer/ascend_communication_viewer.py +372 -0
- mindspore/profiler/analysis/viewer/ascend_integrate_viewer.py +87 -0
- mindspore/profiler/analysis/viewer/ascend_kernel_details_viewer.py +250 -0
- mindspore/profiler/analysis/viewer/ascend_memory_viewer.py +320 -0
- mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +327 -0
- mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +376 -0
- mindspore/profiler/analysis/viewer/ascend_timeline_viewer.py +58 -0
- mindspore/profiler/analysis/viewer/base_viewer.py +26 -0
- mindspore/profiler/analysis/viewer/ms_dataset_viewer.py +96 -0
- mindspore/profiler/analysis/viewer/ms_minddata_viewer.py +581 -0
- mindspore/profiler/analysis/work_flow.py +73 -0
- mindspore/profiler/common/ascend_msprof_exporter.py +139 -0
- mindspore/profiler/common/command_executor.py +90 -0
- mindspore/profiler/common/constant.py +186 -3
- mindspore/profiler/common/file_manager.py +208 -0
- mindspore/profiler/common/log.py +130 -0
- mindspore/profiler/common/msprof_cmd_tool.py +221 -0
- mindspore/profiler/common/path_manager.py +395 -0
- mindspore/profiler/common/process_bar.py +168 -0
- mindspore/profiler/common/process_pool.py +9 -3
- mindspore/profiler/common/profiler_context.py +500 -0
- mindspore/profiler/common/profiler_info.py +304 -0
- mindspore/profiler/common/profiler_meta_data.py +74 -0
- mindspore/profiler/common/profiler_output_path.py +284 -0
- mindspore/profiler/common/profiler_parameters.py +251 -0
- mindspore/profiler/common/profiler_path_manager.py +179 -0
- mindspore/profiler/common/record_function.py +76 -0
- mindspore/profiler/common/tlv_decoder.py +76 -0
- mindspore/profiler/common/util.py +75 -2
- mindspore/profiler/dynamic_profiler.py +341 -75
- mindspore/profiler/envprofiler.py +163 -0
- mindspore/profiler/experimental_config.py +197 -0
- mindspore/profiler/mstx.py +242 -0
- mindspore/profiler/platform/__init__.py +21 -0
- mindspore/profiler/platform/base_profiler.py +40 -0
- mindspore/profiler/platform/cpu_profiler.py +124 -0
- mindspore/profiler/platform/gpu_profiler.py +74 -0
- mindspore/profiler/platform/npu_profiler.py +335 -0
- mindspore/profiler/profiler.py +1073 -90
- mindspore/profiler/profiler_action_controller.py +187 -0
- mindspore/profiler/profiler_interface.py +118 -0
- mindspore/profiler/schedule.py +243 -0
- mindspore/rewrite/api/node.py +15 -13
- mindspore/rewrite/api/symbol_tree.py +2 -3
- mindspore/run_check/_check_version.py +27 -20
- mindspore/run_check/run_check.py +1 -1
- mindspore/runtime/__init__.py +37 -0
- mindspore/runtime/device.py +27 -0
- mindspore/runtime/event.py +209 -0
- mindspore/runtime/executor.py +177 -0
- mindspore/runtime/memory.py +409 -0
- mindspore/runtime/stream.py +460 -0
- mindspore/runtime/thread_bind_core.py +401 -0
- mindspore/safeguard/rewrite_obfuscation.py +12 -9
- mindspore/swresample-4.dll +0 -0
- mindspore/swscale-6.dll +0 -0
- mindspore/tbbmalloc.dll +0 -0
- mindspore/tinyxml2.dll +0 -0
- mindspore/train/__init__.py +8 -8
- mindspore/train/_utils.py +88 -25
- mindspore/train/amp.py +9 -5
- mindspore/train/callback/__init__.py +2 -2
- mindspore/train/callback/_callback.py +2 -16
- mindspore/train/callback/_checkpoint.py +53 -55
- mindspore/train/callback/_cluster_monitor.py +14 -18
- mindspore/train/callback/_early_stop.py +1 -1
- mindspore/train/callback/_flops_collector.py +103 -68
- mindspore/train/callback/_history.py +8 -5
- mindspore/train/callback/_lambda_callback.py +2 -2
- mindspore/train/callback/_landscape.py +0 -3
- mindspore/train/callback/_loss_monitor.py +2 -1
- mindspore/train/callback/_on_request_exit.py +6 -5
- mindspore/train/callback/_reduce_lr_on_plateau.py +11 -6
- mindspore/train/callback/_summary_collector.py +52 -19
- mindspore/train/callback/_time_monitor.py +2 -1
- mindspore/train/callback/{_tft_register.py → _train_fault_tolerance.py} +204 -107
- mindspore/train/data_sink.py +25 -2
- mindspore/train/dataset_helper.py +15 -16
- mindspore/train/loss_scale_manager.py +8 -7
- mindspore/train/metrics/accuracy.py +3 -3
- mindspore/train/metrics/confusion_matrix.py +9 -9
- mindspore/train/metrics/error.py +3 -3
- mindspore/train/metrics/hausdorff_distance.py +4 -4
- mindspore/train/metrics/mean_surface_distance.py +3 -3
- mindspore/train/metrics/metric.py +0 -12
- mindspore/train/metrics/occlusion_sensitivity.py +4 -2
- mindspore/train/metrics/precision.py +11 -10
- mindspore/train/metrics/recall.py +9 -9
- mindspore/train/metrics/root_mean_square_surface_distance.py +2 -2
- mindspore/train/mind_ir_pb2.py +174 -46
- mindspore/train/model.py +184 -113
- mindspore/train/serialization.py +622 -978
- mindspore/train/summary/_summary_adapter.py +2 -2
- mindspore/train/summary/summary_record.py +2 -3
- mindspore/train/train_thor/model_thor.py +1 -1
- mindspore/turbojpeg.dll +0 -0
- mindspore/utils/__init__.py +6 -3
- mindspore/utils/dryrun.py +140 -0
- mindspore/utils/hooks.py +81 -0
- mindspore/utils/runtime_execution_order_check.py +550 -0
- mindspore/utils/utils.py +138 -4
- mindspore/vcmeta.dll +0 -0
- mindspore/vcruntime140.dll +0 -0
- mindspore/vcruntime140_1.dll +0 -0
- mindspore/version.py +1 -1
- {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/METADATA +3 -3
- {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/RECORD +587 -418
- {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/entry_points.txt +1 -1
- mindspore/_install_custom.py +0 -43
- mindspore/common/_register_for_adapter.py +0 -74
- mindspore/common/_tensor_overload.py +0 -139
- mindspore/mindspore_np_dtype.dll +0 -0
- mindspore/ops/auto_generate/gen_arg_dtype_cast.py +0 -252
- mindspore/ops/auto_generate/gen_arg_handler.py +0 -197
- mindspore/ops/operations/_opaque_predicate_registry.py +0 -41
- mindspore/ops_generate/gen_aclnn_implement.py +0 -263
- mindspore/ops_generate/gen_ops_inner_prim.py +0 -131
- mindspore/ops_generate/gen_pyboost_func.py +0 -1052
- mindspore/ops_generate/gen_utils.py +0 -209
- mindspore/ops_generate/op_proto.py +0 -145
- mindspore/ops_generate/template.py +0 -261
- mindspore/profiler/envprofiling.py +0 -254
- mindspore/profiler/profiling.py +0 -1926
- {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/WHEEL +0 -0
- {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/top_level.txt +0 -0
|
@@ -1,209 +0,0 @@
|
|
|
1
|
-
# Copyright 2023-2025 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
|
-
Generate operator utils function
|
|
17
|
-
"""
|
|
18
|
-
import os
|
|
19
|
-
import glob
|
|
20
|
-
import hashlib
|
|
21
|
-
import stat
|
|
22
|
-
import yaml
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
py_licence_str = f"""# Copyright 2023 Huawei Technologies Co., Ltd
|
|
26
|
-
#
|
|
27
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
28
|
-
# you may not use this file except in compliance with the License.
|
|
29
|
-
# You may obtain a copy of the License at
|
|
30
|
-
#
|
|
31
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
32
|
-
#
|
|
33
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
34
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
35
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
36
|
-
# See the License for the specific language governing permissions and
|
|
37
|
-
# limitations under the License.
|
|
38
|
-
# ============================================================================
|
|
39
|
-
"""
|
|
40
|
-
|
|
41
|
-
cc_license_str = f"""/**
|
|
42
|
-
* Copyright 2023 Huawei Technologies Co., Ltd
|
|
43
|
-
*
|
|
44
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
45
|
-
* you may not use this file except in compliance with the License.
|
|
46
|
-
* You may obtain a copy of the License at
|
|
47
|
-
*
|
|
48
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
49
|
-
*
|
|
50
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
51
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
52
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
53
|
-
* See the License for the specific language governing permissions and
|
|
54
|
-
* limitations under the License.
|
|
55
|
-
*/"""
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
def convert_dtype_str(dtype_str):
|
|
59
|
-
"""
|
|
60
|
-
Convert dtype str to expression in ops file
|
|
61
|
-
"""
|
|
62
|
-
return 'DT_' + dtype_str.replace('[', '_').replace(']', '').upper()
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
def get_type_str(type_str):
|
|
66
|
-
"""
|
|
67
|
-
Get the unified type str for operator arg dtype.
|
|
68
|
-
"""
|
|
69
|
-
# add more type here
|
|
70
|
-
type_kind_set = {
|
|
71
|
-
'int',
|
|
72
|
-
'float',
|
|
73
|
-
'bool',
|
|
74
|
-
'number',
|
|
75
|
-
'tuple[int]',
|
|
76
|
-
'tuple[float]',
|
|
77
|
-
'tuple[bool]',
|
|
78
|
-
'tuple[tensor]',
|
|
79
|
-
'tuple[str]',
|
|
80
|
-
'list[int]',
|
|
81
|
-
'list[float]',
|
|
82
|
-
'list[bool]',
|
|
83
|
-
'list[tensor]',
|
|
84
|
-
'list[str]',
|
|
85
|
-
'tensor',
|
|
86
|
-
'type',
|
|
87
|
-
}
|
|
88
|
-
if type_str in type_kind_set:
|
|
89
|
-
return "OpDtype." + convert_dtype_str(type_str)
|
|
90
|
-
raise TypeError(f"""Unsupported type {type_str} for args.""")
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
def get_file_md5(file_path):
|
|
94
|
-
"""
|
|
95
|
-
Get the md5 value for file.
|
|
96
|
-
"""
|
|
97
|
-
if not os.path.exists(file_path):
|
|
98
|
-
return ""
|
|
99
|
-
if os.path.isdir(file_path):
|
|
100
|
-
return ""
|
|
101
|
-
with open(file_path, 'rb') as f:
|
|
102
|
-
data = f.read()
|
|
103
|
-
md5_value = hashlib.md5(data).hexdigest()
|
|
104
|
-
return md5_value
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
def check_change_and_replace_file(last_file_path, tmp_file_path):
|
|
108
|
-
"""
|
|
109
|
-
Compare tmp_file with the md5 value of the last generated file.
|
|
110
|
-
If the md5 value is the same, retain the last generated file.
|
|
111
|
-
Otherwise, update the last generated file to tmp_file.
|
|
112
|
-
"""
|
|
113
|
-
last_md5 = get_file_md5(last_file_path)
|
|
114
|
-
tmp_md5 = get_file_md5(tmp_file_path)
|
|
115
|
-
|
|
116
|
-
if last_md5 == tmp_md5:
|
|
117
|
-
os.remove(tmp_file_path)
|
|
118
|
-
else:
|
|
119
|
-
if os.path.exists(last_file_path):
|
|
120
|
-
os.remove(last_file_path)
|
|
121
|
-
os.rename(tmp_file_path, last_file_path)
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
def merge_files_to_one_file(file_paths, merged_file_path):
|
|
125
|
-
"""
|
|
126
|
-
Merge multiple files into one file.
|
|
127
|
-
"""
|
|
128
|
-
merged_content = ''
|
|
129
|
-
file_paths.sort()
|
|
130
|
-
for file_path in file_paths:
|
|
131
|
-
with open(file_path, 'r') as file:
|
|
132
|
-
merged_content += file.read()
|
|
133
|
-
merged_content += '\n'
|
|
134
|
-
with open(merged_file_path, 'w') as file:
|
|
135
|
-
file.write(merged_content)
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
def merge_files(origin_dir, merged_file_path, file_format):
|
|
139
|
-
"""
|
|
140
|
-
Merge multiple files into one file.
|
|
141
|
-
origin_dir: indicates the origin file directory.
|
|
142
|
-
merged_file_path: indicates the merged file path.
|
|
143
|
-
file_format: indicates the format of regular matching.
|
|
144
|
-
Files whose names meet the regular matching in 'origin_dir' directory will be merged into one file.
|
|
145
|
-
"""
|
|
146
|
-
op_yaml_file_names = glob.glob(os.path.join(origin_dir, file_format))
|
|
147
|
-
merge_files_to_one_file(op_yaml_file_names, merged_file_path)
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
def merge_files_append(origin_dir, merged_file_path, file_format):
|
|
151
|
-
"""
|
|
152
|
-
Merge multiple files into one file.
|
|
153
|
-
origin_dir: indicates the origin file directory.
|
|
154
|
-
merged_file_path: indicates the merged file path.
|
|
155
|
-
file_format: indicates the format of regular matching.
|
|
156
|
-
Files whose names meet the regular matching in 'origin_dir' directory will be merged into one file.
|
|
157
|
-
"""
|
|
158
|
-
file_paths = glob.glob(os.path.join(origin_dir, file_format))
|
|
159
|
-
merged_content = ''
|
|
160
|
-
file_paths.sort()
|
|
161
|
-
for file_path in file_paths:
|
|
162
|
-
with open(file_path, 'r') as file:
|
|
163
|
-
merged_content += file.read()
|
|
164
|
-
merged_content += '\n'
|
|
165
|
-
with open(merged_file_path, 'a') as file:
|
|
166
|
-
file.write(merged_content)
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
def safe_load_yaml(yaml_file_path):
|
|
170
|
-
"""
|
|
171
|
-
Load yaml dictionary from file.
|
|
172
|
-
"""
|
|
173
|
-
yaml_str = dict()
|
|
174
|
-
with open(yaml_file_path, 'r') as yaml_file:
|
|
175
|
-
yaml_str.update(yaml.safe_load(yaml_file))
|
|
176
|
-
return yaml_str
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
def get_assign_str_by_type_it(class_name, arg_info, arg_name, dtype):
|
|
180
|
-
"""
|
|
181
|
-
Make type_it(arg, src_types, dst_type) python sentences.
|
|
182
|
-
"""
|
|
183
|
-
assign_str = ""
|
|
184
|
-
type_cast = arg_info.get('type_cast')
|
|
185
|
-
if type_cast is not None:
|
|
186
|
-
type_cast_tuple = tuple(ct.strip() for ct in type_cast.split(","))
|
|
187
|
-
assign_str += f"type_it('{class_name}', '{arg_name}', {arg_name}, "
|
|
188
|
-
if len(type_cast_tuple) == 1:
|
|
189
|
-
assign_str += get_type_str(type_cast_tuple[0]) + ', '
|
|
190
|
-
else:
|
|
191
|
-
assign_str += '(' + ', '.join(get_type_str(ct) for ct in type_cast_tuple) + '), '
|
|
192
|
-
assign_str += get_type_str(dtype) + ')'
|
|
193
|
-
else:
|
|
194
|
-
assign_str = arg_name
|
|
195
|
-
return assign_str
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
def write_file(path, data):
|
|
199
|
-
"""
|
|
200
|
-
write data to path
|
|
201
|
-
:param path:
|
|
202
|
-
:param data:
|
|
203
|
-
:return:
|
|
204
|
-
"""
|
|
205
|
-
flags = os.O_RDWR | os.O_CREAT
|
|
206
|
-
mode = stat.S_IWUSR | stat.S_IRUSR
|
|
207
|
-
fd = os.open(path, flags, mode)
|
|
208
|
-
with os.fdopen(fd, "w") as f:
|
|
209
|
-
f.write(data)
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
# Copyright 2023 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
|
-
"""Op Proto."""
|
|
16
|
-
from pyboost_utils import convert_python_func_name_to_c, is_op_multi_output
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
class Arg:
|
|
20
|
-
def __init__(self, arg_name, arg_dtype, type_cast, is_type_id=False, as_init_arg=False, default=-1, inplace=''):
|
|
21
|
-
self.arg_name = arg_name
|
|
22
|
-
self.arg_dtype = arg_dtype
|
|
23
|
-
self.type_cast = type_cast
|
|
24
|
-
self.is_type_id = is_type_id
|
|
25
|
-
self.as_init_arg = as_init_arg
|
|
26
|
-
self.default = default
|
|
27
|
-
self.inplace = inplace
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
class OpProto:
|
|
31
|
-
"""
|
|
32
|
-
This class defines mindspore op prototype, we parse ops.yaml to the object, to auto generate primitive
|
|
33
|
-
and pyboost function.
|
|
34
|
-
"""
|
|
35
|
-
|
|
36
|
-
def __init__(self,
|
|
37
|
-
operator_name,
|
|
38
|
-
op_args,
|
|
39
|
-
returns,
|
|
40
|
-
class_name,
|
|
41
|
-
is_pyboost,
|
|
42
|
-
is_view,
|
|
43
|
-
cpu,
|
|
44
|
-
gpu,
|
|
45
|
-
ascend,
|
|
46
|
-
prim_init,
|
|
47
|
-
is_dispatch,
|
|
48
|
-
is_multi_output,
|
|
49
|
-
is_comm_op):
|
|
50
|
-
self.operator_name = operator_name
|
|
51
|
-
self.class_name = class_name
|
|
52
|
-
self.op_args = op_args
|
|
53
|
-
self.returns = returns
|
|
54
|
-
self.indexes = {arg.arg_name: index for index, arg in enumerate(op_args)}
|
|
55
|
-
self.pyboost_function_name = "Pyboost_" + self.class_name
|
|
56
|
-
self.is_pyboost = is_pyboost
|
|
57
|
-
self.is_view = is_view
|
|
58
|
-
self.cpu = cpu
|
|
59
|
-
self.gpu = gpu
|
|
60
|
-
self.ascend = ascend
|
|
61
|
-
self.prim_init = prim_init
|
|
62
|
-
self.is_dispatch = is_dispatch
|
|
63
|
-
self.is_multi_output = is_multi_output
|
|
64
|
-
self.is_comm_op = is_comm_op
|
|
65
|
-
|
|
66
|
-
@staticmethod
|
|
67
|
-
def get_device_special_name(dispatch, gpu, cpu, ascend):
|
|
68
|
-
if 'GPU' in dispatch.keys():
|
|
69
|
-
gpu = dispatch['GPU']
|
|
70
|
-
if 'CPU' in dispatch.keys():
|
|
71
|
-
cpu = dispatch['CPU']
|
|
72
|
-
if 'Ascend' in dispatch.keys():
|
|
73
|
-
ascend = dispatch['Ascend']
|
|
74
|
-
return gpu, cpu, ascend
|
|
75
|
-
|
|
76
|
-
@staticmethod
|
|
77
|
-
def load_from_yaml(op_name, yaml):
|
|
78
|
-
"""
|
|
79
|
-
load from yaml
|
|
80
|
-
:param op_name:
|
|
81
|
-
:param yaml:
|
|
82
|
-
:return:
|
|
83
|
-
"""
|
|
84
|
-
if 'args' not in yaml.keys():
|
|
85
|
-
raise TypeError("op define need key 'args'")
|
|
86
|
-
args_dict = yaml.get('args')
|
|
87
|
-
op_args = []
|
|
88
|
-
default_str = 'default'
|
|
89
|
-
is_type_id = False
|
|
90
|
-
prim_init = False
|
|
91
|
-
for arg_name in args_dict.keys():
|
|
92
|
-
arg_dtype = args_dict[arg_name]['dtype']
|
|
93
|
-
if arg_dtype == 'TypeId':
|
|
94
|
-
arg_dtype = 'int'
|
|
95
|
-
default = None
|
|
96
|
-
as_init_arg = False
|
|
97
|
-
is_type_id = False
|
|
98
|
-
type_cast = []
|
|
99
|
-
if default_str in args_dict[arg_name]:
|
|
100
|
-
default = args_dict[arg_name][default_str]
|
|
101
|
-
as_init_arg = True
|
|
102
|
-
if 'prim_init' in args_dict[arg_name]:
|
|
103
|
-
prim_init = args_dict[arg_name]['prim_init']
|
|
104
|
-
if 'type_cast' in args_dict[arg_name]:
|
|
105
|
-
type_cast = [cast_type.strip() for cast_type in args_dict[arg_name]['type_cast'].split(',')]
|
|
106
|
-
arg_handler_key = 'arg_handler'
|
|
107
|
-
if arg_handler_key in args_dict[arg_name] and args_dict[arg_name][arg_handler_key] == 'dtype_to_type_id':
|
|
108
|
-
is_type_id = True
|
|
109
|
-
arg = Arg(arg_name, arg_dtype, type_cast, is_type_id, as_init_arg, default)
|
|
110
|
-
op_args.append(arg)
|
|
111
|
-
if 'returns' not in yaml.keys():
|
|
112
|
-
raise TypeError("op define need key 'returns'")
|
|
113
|
-
|
|
114
|
-
is_pyboost = False
|
|
115
|
-
is_dispatch = False
|
|
116
|
-
is_comm_op = False
|
|
117
|
-
gpu = default_str
|
|
118
|
-
cpu = default_str
|
|
119
|
-
ascend = default_str
|
|
120
|
-
dispatch_key = 'dispatch'
|
|
121
|
-
if dispatch_key in yaml.keys():
|
|
122
|
-
is_dispatch = True
|
|
123
|
-
is_pyboost = yaml[dispatch_key].get('enable')
|
|
124
|
-
gpu, cpu, ascend = OpProto.get_device_special_name(yaml[dispatch_key], gpu, cpu, ascend)
|
|
125
|
-
is_comm_op = yaml[dispatch_key].get('is_comm_op')
|
|
126
|
-
return_dict = yaml['returns']
|
|
127
|
-
class_name = convert_python_func_name_to_c(op_name)
|
|
128
|
-
class_key = 'class'
|
|
129
|
-
if class_key in yaml.keys() and 'name' in yaml[class_key].keys():
|
|
130
|
-
class_name = yaml[class_key]['name']
|
|
131
|
-
return_args = []
|
|
132
|
-
for return_name in return_dict.keys():
|
|
133
|
-
inplace = ''
|
|
134
|
-
if 'inplace' in return_dict[return_name]:
|
|
135
|
-
inplace = return_dict[return_name]['inplace']
|
|
136
|
-
dtype = return_dict[return_name]['dtype']
|
|
137
|
-
arg = Arg(return_name, dtype, type_cast=[], inplace=inplace)
|
|
138
|
-
return_args.append(arg)
|
|
139
|
-
is_multi_output = is_op_multi_output(return_args)
|
|
140
|
-
is_view = False
|
|
141
|
-
if 'view' in yaml.keys():
|
|
142
|
-
is_view = True
|
|
143
|
-
op_proto = OpProto(op_name, op_args, return_args, class_name,
|
|
144
|
-
is_pyboost, is_view, cpu, gpu, ascend, prim_init, is_dispatch, is_multi_output, is_comm_op)
|
|
145
|
-
return op_proto
|
|
@@ -1,261 +0,0 @@
|
|
|
1
|
-
# Copyright 2023 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
|
-
"""Template."""
|
|
16
|
-
import re
|
|
17
|
-
import os
|
|
18
|
-
import gen_constants as K
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
class CppTemplate:
|
|
22
|
-
"""
|
|
23
|
-
template for generate c++ code
|
|
24
|
-
"""
|
|
25
|
-
regular_str = r"(^[^\n\S]*)?\$([^\d\W]\w*|\{,?[^\d\W]\w*\,?})"
|
|
26
|
-
regular_match = re.compile(regular_str, re.MULTILINE)
|
|
27
|
-
|
|
28
|
-
def __init__(self, code_pattern):
|
|
29
|
-
self.code_pattern = code_pattern
|
|
30
|
-
|
|
31
|
-
@staticmethod
|
|
32
|
-
def load_from_file(file_path):
|
|
33
|
-
with open(file_path, "r") as f:
|
|
34
|
-
return CppTemplate(f.read())
|
|
35
|
-
|
|
36
|
-
def replace(self, **kwargs):
|
|
37
|
-
"""
|
|
38
|
-
replace param.
|
|
39
|
-
:param kwargs:
|
|
40
|
-
:return:
|
|
41
|
-
"""
|
|
42
|
-
|
|
43
|
-
def find(key: str):
|
|
44
|
-
if key in kwargs:
|
|
45
|
-
return kwargs[key]
|
|
46
|
-
raise TypeError(f"{key} should be in kwargs!")
|
|
47
|
-
|
|
48
|
-
def add_indent(indent, var):
|
|
49
|
-
return "".join([indent + line + "\n" for data in var for line in str(data).splitlines()]).rstrip()
|
|
50
|
-
|
|
51
|
-
def extract_variable(key):
|
|
52
|
-
start = ""
|
|
53
|
-
end = ""
|
|
54
|
-
if key[0] == "{":
|
|
55
|
-
key = key[1:-1]
|
|
56
|
-
if key[0] == ",":
|
|
57
|
-
start = ","
|
|
58
|
-
key = key[1:]
|
|
59
|
-
if key[-1] == ",":
|
|
60
|
-
end = ", "
|
|
61
|
-
key = key[:-1]
|
|
62
|
-
return find(key), start, end
|
|
63
|
-
|
|
64
|
-
def match_rule(match):
|
|
65
|
-
indent = match.group(1)
|
|
66
|
-
key = match.group(2)
|
|
67
|
-
var, start, end = extract_variable(key)
|
|
68
|
-
if indent is not None:
|
|
69
|
-
if not isinstance(var, list):
|
|
70
|
-
return add_indent(indent, [var])
|
|
71
|
-
return add_indent(indent, var)
|
|
72
|
-
if isinstance(var, list):
|
|
73
|
-
code = ", ".join(str(x) for x in var)
|
|
74
|
-
if not var:
|
|
75
|
-
return code
|
|
76
|
-
return start + code + end
|
|
77
|
-
return str(var)
|
|
78
|
-
|
|
79
|
-
return self.regular_match.sub(match_rule, self.code_pattern)
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
NEW_LINE = "\n"
|
|
83
|
-
WORK_PATH = os.path.join(os.path.dirname(os.path.realpath(__file__)), "../../../../")
|
|
84
|
-
|
|
85
|
-
PYTHON_PRIM_TEMPLATE = CppTemplate("""
|
|
86
|
-
|
|
87
|
-
class _Pyboost${class_name}Prim(${class_name}Prim_):
|
|
88
|
-
def __call__(self, ${input_args}):
|
|
89
|
-
${process_func}
|
|
90
|
-
return _convert_stub(super().__call__(${processed_args}))
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
${func_impl_name}_impl = _Pyboost${class_name}Prim()
|
|
94
|
-
""")
|
|
95
|
-
|
|
96
|
-
IMPORT_PYBOOST_PRIM_HEADER = f"""
|
|
97
|
-
from mindspore.common._stub_tensor import _convert_stub
|
|
98
|
-
from mindspore.ops.auto_generate.gen_arg_handler import *
|
|
99
|
-
"""
|
|
100
|
-
|
|
101
|
-
IMPORT_PYBOOST_FUNC_HEADER = f"""
|
|
102
|
-
from mindspore.common import dtype as mstype
|
|
103
|
-
from mindspore.ops.auto_generate.pyboost_inner_prim import *
|
|
104
|
-
|
|
105
|
-
"""
|
|
106
|
-
|
|
107
|
-
REGISTER_DEFINE_TEMPLATE = CppTemplate(
|
|
108
|
-
"""
|
|
109
|
-
(void)py::class_<${class_name}PrimAdapter, PrimitiveFunctionAdapter, std::shared_ptr<${class_name}PrimAdapter>>(
|
|
110
|
-
*m, "${class_name}Prim_")
|
|
111
|
-
.def(py::init<>())
|
|
112
|
-
.def("__call__", &${class_name}PrimAdapter::Call, "Call ${class_name} op.");
|
|
113
|
-
m->def(\"${pyboost_op_name}\", &mindspore::pynative::${pyboost_cfunc_name}, \"Encrypt the data.\");""")
|
|
114
|
-
REGISTER_TEMPLATE = CppTemplate("void RegisterPyBoostFunction(py::module *m) {${register_func}\n}")
|
|
115
|
-
|
|
116
|
-
REGISTER_PYBOOST_GRAD_DEFINE_TEMPLATE = CppTemplate(
|
|
117
|
-
"MS_REG_PYBOOST_GRAD_OP(${pyboost_op_name}, mindspore::runtime::${pyboost_cfunc_name});\n")
|
|
118
|
-
REGISTER_PYBOOST_GRAD_TEMPLATE = CppTemplate("${register_func}")
|
|
119
|
-
|
|
120
|
-
PYBOOST_FUNCTION_TEMPLATE = CppTemplate.load_from_file(
|
|
121
|
-
os.path.join(WORK_PATH, './mindspore/ccsrc/pipeline/pynative/op_function/template/pyboost_function.tpl'))
|
|
122
|
-
|
|
123
|
-
PYBOOS_COMM_FUNCTION_TEMPLATE = CppTemplate.load_from_file(
|
|
124
|
-
os.path.join(WORK_PATH, './mindspore/ccsrc/pipeline/pynative/op_function/template/pyboost_comm_function.tpl'))
|
|
125
|
-
|
|
126
|
-
PYBOOST_HEADER_TEMPLATE = CppTemplate.load_from_file(
|
|
127
|
-
os.path.join(WORK_PATH, './mindspore/ccsrc/pipeline/pynative/op_function/template/pyboost_function_header.tpl'))
|
|
128
|
-
|
|
129
|
-
PYBOOST_GRAD_FUNCTION_TEMPLATE = CppTemplate.load_from_file(
|
|
130
|
-
os.path.join(WORK_PATH, './mindspore/ccsrc/runtime/pynative/op_function/template/pyboost_grad_function.tpl'))
|
|
131
|
-
|
|
132
|
-
PYBOOST_GRAD_HEADER_TEMPLATE = CppTemplate.load_from_file(
|
|
133
|
-
os.path.join(WORK_PATH, './mindspore/ccsrc/runtime/pynative/op_function/template/pyboost_grad_function_header.tpl'))
|
|
134
|
-
|
|
135
|
-
PYBOOST_NATIVE_GRAD_FUNCTION_TEMPLATE = CppTemplate.load_from_file(
|
|
136
|
-
os.path.join(WORK_PATH, './mindspore/ccsrc/pipeline/pynative/grad/function/template/native_grad_function.tpl'))
|
|
137
|
-
|
|
138
|
-
PYBOOST_NATIVE_GRAD_FUNCTIONS_TEMPLATE = CppTemplate.load_from_file(
|
|
139
|
-
os.path.join(WORK_PATH,
|
|
140
|
-
'./mindspore/ccsrc/pipeline/pynative/grad/function/template/pyboost_native_grad_functions.tpl'))
|
|
141
|
-
|
|
142
|
-
PYBOOST_NATIVE_GRAD_FUNCTIONS_HEADER_TEMPLATE = CppTemplate.load_from_file(
|
|
143
|
-
os.path.join(WORK_PATH,
|
|
144
|
-
'./mindspore/ccsrc/pipeline/pynative/grad/function/template/pyboost_native_grad_functions_header.tpl'))
|
|
145
|
-
|
|
146
|
-
GEN_OPS_DEF_HEADER_TEMPLATE = CppTemplate.load_from_file(
|
|
147
|
-
os.path.join(WORK_PATH, './mindspore/python/mindspore/ops_generate/gen_ops_def_header.tpl'))
|
|
148
|
-
|
|
149
|
-
PYBOOST_BASE_OP_DEFINE_TEMPLATE = CppTemplate.load_from_file(
|
|
150
|
-
os.path.join(WORK_PATH, f'./{K.MS_COMMON_PYBOOST_KERNEL_PATH}/template/pyboost_op_header.tpl'))
|
|
151
|
-
|
|
152
|
-
PYBOOST_OP_REGISTER_TEMPLATE = CppTemplate.load_from_file(
|
|
153
|
-
os.path.join(WORK_PATH, f'./{K.MS_COMMON_PYBOOST_KERNEL_PATH}/template/pyboost_op_register.tpl'))
|
|
154
|
-
|
|
155
|
-
# Ascend op generate
|
|
156
|
-
PYBOOST_ASCEND_OP_HEADER_TEMPLATE = CppTemplate.load_from_file(
|
|
157
|
-
os.path.join(WORK_PATH,
|
|
158
|
-
f'./{K.MS_OPS_KERNEL_PATH}/ascend/pyboost/template/pyboost_aclnn_header_template.tpl'))
|
|
159
|
-
|
|
160
|
-
PYBOOST_ASCEND_OP_SOURCE_TEMPLATE = CppTemplate.load_from_file(
|
|
161
|
-
os.path.join(WORK_PATH,
|
|
162
|
-
f'./{K.MS_OPS_KERNEL_PATH}/ascend/pyboost/template/pyboost_aclnn_source_template.tpl'))
|
|
163
|
-
|
|
164
|
-
PYBOOST_ASCEND_CALL_TEMPLATE = CppTemplate.load_from_file(
|
|
165
|
-
os.path.join(WORK_PATH,
|
|
166
|
-
f'./{K.MS_OPS_KERNEL_PATH}/ascend/pyboost/template/pyboost_ascend_call_template.tpl'))
|
|
167
|
-
|
|
168
|
-
PYBOOST_ASCEND_VIEW_CALL_TEMPLATE = CppTemplate.load_from_file(
|
|
169
|
-
os.path.join(WORK_PATH,
|
|
170
|
-
f'./{K.MS_COMMON_PYBOOST_KERNEL_PATH}/template/'
|
|
171
|
-
'pyboost_view_template.tpl'))
|
|
172
|
-
|
|
173
|
-
PYBOOST_ASCEND_CUSTOMIZE_CALL_TEMPLATE = CppTemplate.load_from_file(
|
|
174
|
-
os.path.join(WORK_PATH,
|
|
175
|
-
f'./{K.MS_OPS_KERNEL_PATH}/ascend/pyboost/template'
|
|
176
|
-
'/pyboost_ascend_customize_call_template.tpl'))
|
|
177
|
-
|
|
178
|
-
# GPU op generate
|
|
179
|
-
PYBOOST_GPU_OP_HEADER_TEMPLATE = CppTemplate.load_from_file(
|
|
180
|
-
os.path.join(WORK_PATH,
|
|
181
|
-
'./mindspore/ops/kernel/gpu/pyboost/template/pyboost_gpu_header_template.tpl'))
|
|
182
|
-
|
|
183
|
-
PYBOOST_GPU_OP_SOURCE_TEMPLATE = CppTemplate.load_from_file(
|
|
184
|
-
os.path.join(WORK_PATH,
|
|
185
|
-
'./mindspore/ops/kernel/gpu/pyboost/template/pyboost_gpu_source_template.tpl'))
|
|
186
|
-
|
|
187
|
-
PYBOOST_GPU_CALL_TEMPLATE = CppTemplate.load_from_file(
|
|
188
|
-
os.path.join(WORK_PATH,
|
|
189
|
-
'./mindspore/ops/kernel/gpu/pyboost/template/pyboost_gpu_call_template.tpl'))
|
|
190
|
-
|
|
191
|
-
PYBOOST_GPU_VIEW_CALL_TEMPLATE = CppTemplate.load_from_file(
|
|
192
|
-
os.path.join(WORK_PATH,
|
|
193
|
-
f'./{K.MS_COMMON_PYBOOST_KERNEL_PATH}/template/pyboost_view_template.tpl'))
|
|
194
|
-
|
|
195
|
-
PYBOOST_GPU_CUSTOMIZE_CALL_TEMPLATE = CppTemplate.load_from_file(
|
|
196
|
-
os.path.join(WORK_PATH,
|
|
197
|
-
'./mindspore/ops/kernel/gpu/pyboost/template'
|
|
198
|
-
'/pyboost_gpu_customize_call_template.tpl'))
|
|
199
|
-
|
|
200
|
-
# CPU op generate
|
|
201
|
-
PYBOOST_CPU_OP_HEADER_TEMPLATE = CppTemplate.load_from_file(
|
|
202
|
-
os.path.join(WORK_PATH,
|
|
203
|
-
f'./{K.MS_OPS_KERNEL_PATH}/cpu/pyboost/template/pyboost_cpu_header_template.tpl'))
|
|
204
|
-
|
|
205
|
-
PYBOOST_CPU_OP_SOURCE_TEMPLATE = CppTemplate.load_from_file(
|
|
206
|
-
os.path.join(WORK_PATH,
|
|
207
|
-
f'./{K.MS_OPS_KERNEL_PATH}/cpu/pyboost/template/pyboost_cpu_source_template.tpl'))
|
|
208
|
-
|
|
209
|
-
PYBOOST_CPU_CALL_TEMPLATE = CppTemplate.load_from_file(
|
|
210
|
-
os.path.join(WORK_PATH,
|
|
211
|
-
f'./{K.MS_OPS_KERNEL_PATH}/cpu/pyboost/template/pyboost_cpu_call_template.tpl'))
|
|
212
|
-
|
|
213
|
-
PYBOOST_CPU_VIEW_CALL_TEMPLATE = CppTemplate.load_from_file(
|
|
214
|
-
os.path.join(WORK_PATH,
|
|
215
|
-
f'./{K.MS_COMMON_PYBOOST_KERNEL_PATH}/template/pyboost_view_template.tpl'))
|
|
216
|
-
|
|
217
|
-
PYBOOST_CPU_CUSTOMIZE_CALL_TEMPLATE = CppTemplate.load_from_file(
|
|
218
|
-
os.path.join(WORK_PATH,
|
|
219
|
-
f'./{K.MS_OPS_KERNEL_PATH}/cpu/pyboost/template'
|
|
220
|
-
'/pyboost_cpu_customize_call_template.tpl'))
|
|
221
|
-
|
|
222
|
-
PYBOOST_PY_FUNC_IMPORT_HEADEAR = CppTemplate(
|
|
223
|
-
"""from mindspore._c_expression import ${class_name}Prim_\n"""
|
|
224
|
-
)
|
|
225
|
-
|
|
226
|
-
PYBOOST_PY_FUNC_TEMPLATE = CppTemplate("""
|
|
227
|
-
def ${func_name}(${func_args}):
|
|
228
|
-
r\"\"\"
|
|
229
|
-
${description}
|
|
230
|
-
\"\"\"
|
|
231
|
-
return ${func_impl_name}_impl(${input_args})\n\n""")
|
|
232
|
-
|
|
233
|
-
OP_PROTO_TEMPLATE = CppTemplate("""
|
|
234
|
-
${class_name}FuncImpl g${class_name}FuncImpl;
|
|
235
|
-
OpDef g${class_name} = {
|
|
236
|
-
/*.name_=*/"${class_name}",
|
|
237
|
-
/*.args_=*/ {
|
|
238
|
-
${input_args}
|
|
239
|
-
},
|
|
240
|
-
/* .returns_ = */ {
|
|
241
|
-
${return_args}
|
|
242
|
-
},
|
|
243
|
-
/*.signatures_ =*/ {
|
|
244
|
-
${signatures}
|
|
245
|
-
},
|
|
246
|
-
/*.indexes_ =*/ {
|
|
247
|
-
${indexes}
|
|
248
|
-
},
|
|
249
|
-
/*.func_impl_=*/g${class_name}FuncImpl,
|
|
250
|
-
/*.enable_dispatch_ =*/${enable_dispatch},
|
|
251
|
-
/*.is_view_ =*/${is_view},
|
|
252
|
-
};
|
|
253
|
-
REGISTER_PRIMITIVE_OP_DEF(${class_name}, &g${class_name});
|
|
254
|
-
""")
|
|
255
|
-
|
|
256
|
-
MULTI_OUTPUT_TEMPLATE = """
|
|
257
|
-
ValuePtrList values;
|
|
258
|
-
(void)std::transform(op->outputs().begin(), op->outputs().end(), std::back_inserter(values),
|
|
259
|
-
[](const auto &value){ return value;});
|
|
260
|
-
auto output_value = std::make_shared<ValueTuple>(values);
|
|
261
|
-
"""
|