mindspore 2.4.10__cp39-cp39-win_amd64.whl → 2.6.0rc1__cp39-cp39-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/__init__.py +13 -6
- mindspore/_c_dataengine.cp39-win_amd64.pyd +0 -0
- mindspore/_c_expression.cp39-win_amd64.pyd +0 -0
- mindspore/_c_mindrecord.cp39-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/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/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/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_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/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/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/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/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 +562 -393
- {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
|
@@ -0,0 +1,461 @@
|
|
|
1
|
+
# Copyright 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
|
+
This module defines the PyboostInnerPrimGenerator class, which is responsible for generating Python primitive
|
|
17
|
+
wrappers for Pyboost operations. The generator constructs Python function definitions based on operator prototypes,
|
|
18
|
+
generates necessary import statements, and writes the generated content into Python source files.
|
|
19
|
+
|
|
20
|
+
The primary functionality is to take operator prototypes, extract relevant fields, and create Python function wrappers
|
|
21
|
+
that can be used to call the Pyboost primitive implementations.
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
import os
|
|
25
|
+
|
|
26
|
+
import common.template as template
|
|
27
|
+
import common.gen_constants as K
|
|
28
|
+
from common.template import Template
|
|
29
|
+
from common.gen_utils import save_file
|
|
30
|
+
from common.base_generator import BaseGenerator
|
|
31
|
+
from common.op_proto import OpProto
|
|
32
|
+
from pyboost.op_template_parser import OpTemplateParser
|
|
33
|
+
from pyboost import pyboost_utils
|
|
34
|
+
import api.op_api_proto as op_api_proto
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class TensorFuncRegCppGenerator(BaseGenerator):
|
|
38
|
+
"""
|
|
39
|
+
Generates C++ tensor function registration code for different backends (Ascend, CPU, GPU).
|
|
40
|
+
|
|
41
|
+
This class is responsible for generating header and implementation files required to register
|
|
42
|
+
tensor functions, including device-specific dispatchers and function definitions.
|
|
43
|
+
"""
|
|
44
|
+
|
|
45
|
+
def __init__(self):
|
|
46
|
+
self.TENSOR_FUNC_CC_REG = template.TENSOR_FUNC_CC_REG
|
|
47
|
+
self.TENSOR_FUNC_CALL_BODY = template.TENSOR_FUNC_CALL_BODY
|
|
48
|
+
self.TENSOR_FUNC_OVERLOAD_CALL_BODY = template.TENSOR_FUNC_OVERLOAD_CALL_BODY
|
|
49
|
+
self.TENSOR_API_HEADER = template.TENSOR_API_HEADER
|
|
50
|
+
self.TENSOR_API_SOURCE = template.TENSOR_API_SOURCE
|
|
51
|
+
self.TENSOR_FUNC_UTILS = template.TENSOR_FUNC_UTILS
|
|
52
|
+
self.TENSOR_FUNC_UT_BODY = template.TENSOR_FUNC_UT_BODY
|
|
53
|
+
self.TENSOR_FUNC_UT_OVERLOAD_BODY = template.TENSOR_FUNC_UT_OVERLOAD_BODY
|
|
54
|
+
self.TENSOR_CPP_METHOD = template.TENSOR_CPP_METHOD
|
|
55
|
+
|
|
56
|
+
self.func_def_reg = Template(
|
|
57
|
+
"tensor_class->def(\"${func_name}\", TensorMethod${cpp_func_name});\n")
|
|
58
|
+
self.single_case_template = Template(
|
|
59
|
+
'case ${case_id}:\n'
|
|
60
|
+
' ${device_dispatcher}\n'
|
|
61
|
+
' break;\n'
|
|
62
|
+
)
|
|
63
|
+
self.single_case_in_ut_template = Template(
|
|
64
|
+
'case ${case_id}:\n'
|
|
65
|
+
' ${device_dispatcher}\n'
|
|
66
|
+
)
|
|
67
|
+
self.device_dispatcher_template = Template(
|
|
68
|
+
'if (backend == kAscendDevice || backend == kDavinciDevice) {\n'
|
|
69
|
+
' ${ascend_dispatcher}\n'
|
|
70
|
+
'} else if (backend == kCPUDevice) {\n'
|
|
71
|
+
' ${cpu_dispatcher}\n'
|
|
72
|
+
'} else if (backend == kGPUDevice) {\n'
|
|
73
|
+
' ${gpu_dispatcher}\n'
|
|
74
|
+
'} else {\n'
|
|
75
|
+
' MS_LOG(ERROR) << "Device target is not supported!";\n'
|
|
76
|
+
' return py::none();\n'
|
|
77
|
+
'}'
|
|
78
|
+
)
|
|
79
|
+
self.pyboost_return_template = Template(
|
|
80
|
+
'${arg_handler_processor}\n'
|
|
81
|
+
'MS_LOG(INFO) << "Call Tensor${class_name}";\n'
|
|
82
|
+
'auto res = mindspore::pynative::'
|
|
83
|
+
'${pyboost_function}(mindspore::prim::kPrim${class_name}, parse_args.src_types_, ${convert_args});\n'
|
|
84
|
+
'trace::Capture(parse_args.arg_list_, "${class_name}", &res);\n'
|
|
85
|
+
'return res;\n'
|
|
86
|
+
)
|
|
87
|
+
self.callback_python_template = Template(
|
|
88
|
+
'MS_LOG(INFO) << "Callback python method: ${py_method}";\n'
|
|
89
|
+
'py::function fn = python_adapter::GetPyFn(\"mindspore.ops.tensor_method\", \"${py_method}\");\n'
|
|
90
|
+
'py::object res = fn(self, *py_args, **py_kwargs);\n'
|
|
91
|
+
'return res;\n'
|
|
92
|
+
)
|
|
93
|
+
self.callback_python_in_ut_template = Template(
|
|
94
|
+
'MS_LOG(INFO) << "Callback python method in UT: ${py_method}";\n'
|
|
95
|
+
'fn = python_adapter::GetPyFn(\"mindspore.ops.tensor_method\", \"${py_method}\");\n'
|
|
96
|
+
'res = fn(self, *py_args, **py_kwargs);\n'
|
|
97
|
+
'break;\n'
|
|
98
|
+
)
|
|
99
|
+
self.header_func_header_template = Template(
|
|
100
|
+
"py::object TensorMethod${cpp_func_name}"
|
|
101
|
+
"(const py::object &self, const py::args &py_args, const py::kwargs &py_kwargs);\n"
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
def generate(self, work_path, op_protos, func_protos_data, alias_func_mapping):
|
|
105
|
+
"""
|
|
106
|
+
Generates C++ header and source files for tensor function registrations.
|
|
107
|
+
|
|
108
|
+
Args:
|
|
109
|
+
work_path (str): The directory where the generated files will be saved.
|
|
110
|
+
op_protos (list): A list of tensor op prototypes.
|
|
111
|
+
func_protos_data (dict): Dictionary mapping function names to lists of TensorFuncProto objects.
|
|
112
|
+
alias_func_mapping (dict): A dictionary mapping function name to its alias function names.
|
|
113
|
+
"""
|
|
114
|
+
|
|
115
|
+
all_op_func_data, single_op_func_data, overload_op_func_data, op_class_name_set = \
|
|
116
|
+
op_api_proto.categorize_func_data(func_protos_data)
|
|
117
|
+
|
|
118
|
+
tensor_method_list = self._get_op_enum_name_list(op_protos)
|
|
119
|
+
func_call_body_list = []
|
|
120
|
+
self._create_single_op_source_files(
|
|
121
|
+
single_op_func_data, func_call_body_list)
|
|
122
|
+
self._create_overload_op_source_files(
|
|
123
|
+
overload_op_func_data, func_call_body_list)
|
|
124
|
+
merge_func_call_body = pyboost_utils.merge_strings_by_chunk_size(
|
|
125
|
+
func_call_body_list)
|
|
126
|
+
ops_inc_head_set = set()
|
|
127
|
+
for op_class_name in op_class_name_set:
|
|
128
|
+
ops_inc_head_set.add(template.OP_DEF_INC_HEAD_TEMPLATE.replace(prefix_char=op_class_name[0].lower()))
|
|
129
|
+
for i, func_body_chunk_str in enumerate(merge_func_call_body):
|
|
130
|
+
tensor_api_source = self.TENSOR_API_SOURCE.replace(
|
|
131
|
+
ops_inc=list(sorted(ops_inc_head_set)),
|
|
132
|
+
tenosr_func_call_body=func_body_chunk_str)
|
|
133
|
+
save_file(os.path.join(work_path, K.TENSOR_API_PATH), f"tensor_api_{i}.cc",
|
|
134
|
+
tensor_api_source)
|
|
135
|
+
|
|
136
|
+
func_def_body_list, tensor_cpp_methods_list, tensor_api_declaration_list = self._get_sorted_func_def_body(
|
|
137
|
+
all_op_func_data, alias_func_mapping)
|
|
138
|
+
tensor_api_header = self.TENSOR_API_HEADER.replace(
|
|
139
|
+
tensor_api_declaration_list=tensor_api_declaration_list)
|
|
140
|
+
save_file(os.path.join(work_path, K.TENSOR_API_PATH), f"tensor_api.h",
|
|
141
|
+
tensor_api_header)
|
|
142
|
+
self._generate_func_name_for_stub_tensor(
|
|
143
|
+
work_path, tensor_cpp_methods_list)
|
|
144
|
+
func_cc_reg = self.TENSOR_FUNC_CC_REG.replace(
|
|
145
|
+
func_def_body=func_def_body_list)
|
|
146
|
+
tensor_methods = self.TENSOR_FUNC_UTILS.replace(
|
|
147
|
+
tensor_methods=tensor_method_list)
|
|
148
|
+
|
|
149
|
+
save_file(os.path.join(work_path, K.TENSOR_FUNC_REGISTER_PATH),
|
|
150
|
+
"tensor_func_utils.h", tensor_methods)
|
|
151
|
+
save_file(os.path.join(work_path, K.TENSOR_API_PATH),
|
|
152
|
+
"tensor_func_reg.cc", func_cc_reg)
|
|
153
|
+
|
|
154
|
+
def _get_op_enum_name_list(self, op_protos):
|
|
155
|
+
"""
|
|
156
|
+
Extracts operation class names and returns them as a formatted list.
|
|
157
|
+
|
|
158
|
+
Args:
|
|
159
|
+
op_protos (list): A list of operation prototype objects, where each object has an `op_class`
|
|
160
|
+
with a `name` attribute.
|
|
161
|
+
|
|
162
|
+
Returns:
|
|
163
|
+
str: A list of formatted strings, where each string is of the form 'k<name>,\n', where <name>
|
|
164
|
+
is the class name from the `op_class` attribute.
|
|
165
|
+
|
|
166
|
+
"""
|
|
167
|
+
tensor_method_list = ""
|
|
168
|
+
for op_proto in op_protos:
|
|
169
|
+
if op_proto.op_dispatch is None or not op_proto.op_dispatch.enable:
|
|
170
|
+
continue
|
|
171
|
+
class_name = op_proto.op_class.name
|
|
172
|
+
tensor_method_list += f"k{class_name}Reg,\n"
|
|
173
|
+
return tensor_method_list
|
|
174
|
+
|
|
175
|
+
def _generate_func_name_for_stub_tensor(self, work_path, tensor_cpp_methods_list):
|
|
176
|
+
"""
|
|
177
|
+
Generates a Python file containing tensor C++ function methods list and saves it to the specified path.
|
|
178
|
+
|
|
179
|
+
This function takes a list of C++ tensor methods, formats them into a Python script as a string,
|
|
180
|
+
and writes this script to a file named `_tensor_cpp_method.py` under the provided working path.
|
|
181
|
+
|
|
182
|
+
Args:
|
|
183
|
+
work_path (str): The base directory where the generated file will be saved.
|
|
184
|
+
tensor_cpp_methods_list (list): A list of tensor C++ method definitions to be included in the Python file.
|
|
185
|
+
"""
|
|
186
|
+
tensor_cpp_methods_str = self.TENSOR_CPP_METHOD.replace(
|
|
187
|
+
tensor_cpp_methods_list_str=str(tensor_cpp_methods_list))
|
|
188
|
+
save_file(os.path.join(work_path, K.ADD_TENSOR_DOCS_PY_PATH),
|
|
189
|
+
"_tensor_cpp_method.py", tensor_cpp_methods_str)
|
|
190
|
+
|
|
191
|
+
def _get_sorted_func_def_body(self, all_op_func_data, alias_func_mapping):
|
|
192
|
+
"""
|
|
193
|
+
Generate sorted function definitions and headers for operations.
|
|
194
|
+
|
|
195
|
+
This function processes a dictionary of operation function data and an alias mapping,
|
|
196
|
+
producing two lists: one containing function definition bodies and another containing
|
|
197
|
+
function header definitions.
|
|
198
|
+
|
|
199
|
+
Args:
|
|
200
|
+
all_op_func_data (dict): A dictionary where keys are function API names (str), and
|
|
201
|
+
values are lists of function prototypes.
|
|
202
|
+
alias_func_mapping (dict): A mapping of function names to a list of their alias names.
|
|
203
|
+
|
|
204
|
+
Returns:
|
|
205
|
+
tuple: A tuple containing two lists:
|
|
206
|
+
- func_def_body_list (list of str): A list of formatted function definition strings.
|
|
207
|
+
- tensor_cpp_methods_list (list of str): A list of formatted function header strings.
|
|
208
|
+
"""
|
|
209
|
+
func_def_body_list = []
|
|
210
|
+
tensor_cpp_methods_list = []
|
|
211
|
+
tensor_api_declaration_list = ""
|
|
212
|
+
for func_api_name, func_protos in all_op_func_data.items():
|
|
213
|
+
cpp_func_name = pyboost_utils.format_func_api_name(func_api_name)
|
|
214
|
+
if len(func_protos) == 1:
|
|
215
|
+
func_proto = func_protos[0]
|
|
216
|
+
func_name = func_proto.func_name
|
|
217
|
+
func_def_body_list.append(self.func_def_reg.replace(
|
|
218
|
+
func_name=func_name, cpp_func_name=cpp_func_name))
|
|
219
|
+
tensor_cpp_methods_list.append(func_name)
|
|
220
|
+
tensor_api_declaration_list += self.header_func_header_template.replace(
|
|
221
|
+
cpp_func_name=cpp_func_name)
|
|
222
|
+
if func_name in alias_func_mapping:
|
|
223
|
+
for alias_func_name in alias_func_mapping[func_name]:
|
|
224
|
+
func_def_body_list.append(
|
|
225
|
+
self.func_def_reg.replace(func_name=alias_func_name, cpp_func_name=cpp_func_name))
|
|
226
|
+
tensor_cpp_methods_list.append(alias_func_name)
|
|
227
|
+
elif len(func_protos) > 1:
|
|
228
|
+
func_def_body_list.append(
|
|
229
|
+
self.func_def_reg.replace(func_name=func_api_name, cpp_func_name=cpp_func_name))
|
|
230
|
+
tensor_cpp_methods_list.append(func_api_name)
|
|
231
|
+
tensor_api_declaration_list += self.header_func_header_template.replace(
|
|
232
|
+
cpp_func_name=cpp_func_name)
|
|
233
|
+
if func_api_name in alias_func_mapping:
|
|
234
|
+
for alias_func_name in alias_func_mapping[func_api_name]:
|
|
235
|
+
func_def_body_list.append(self.func_def_reg.replace(func_name=alias_func_name,
|
|
236
|
+
cpp_func_name=cpp_func_name))
|
|
237
|
+
tensor_cpp_methods_list.append(alias_func_name)
|
|
238
|
+
return func_def_body_list, tensor_cpp_methods_list, tensor_api_declaration_list
|
|
239
|
+
|
|
240
|
+
def _create_single_op_source_files(self, single_op_func_data, func_call_body_list):
|
|
241
|
+
"""
|
|
242
|
+
Generates the list of call body strings for single operation functions.
|
|
243
|
+
|
|
244
|
+
Args:
|
|
245
|
+
single_op_func_data (dict): Dictionary of tensor function prototypes with only one definition.
|
|
246
|
+
|
|
247
|
+
Returns:
|
|
248
|
+
list: Updated str list for generating C++ function call bodies.
|
|
249
|
+
"""
|
|
250
|
+
for func_api_name, func_proto in single_op_func_data.items():
|
|
251
|
+
func_name = func_proto.func_name
|
|
252
|
+
cpp_func_name = pyboost_utils.format_func_api_name(func_api_name)
|
|
253
|
+
device_dispatcher_str = self._get_device_dispatchers_str(
|
|
254
|
+
func_proto)
|
|
255
|
+
signature_str = self._generate_single_signature_str(
|
|
256
|
+
func_proto.op_proto, func_proto.kw_only_args, func_proto.varargs
|
|
257
|
+
)
|
|
258
|
+
op_args = func_proto.op_proto.op_args
|
|
259
|
+
max_size = len(op_args)
|
|
260
|
+
self_index = self._get_input_tensor_index(func_proto)
|
|
261
|
+
ut_body = self.TENSOR_FUNC_UT_BODY.replace(
|
|
262
|
+
py_method=func_proto.py_method)
|
|
263
|
+
tensor_func_single_call_body = self.TENSOR_FUNC_CALL_BODY.replace(cpp_func_name=cpp_func_name,
|
|
264
|
+
func_name=func_name,
|
|
265
|
+
device_dispatcher=device_dispatcher_str,
|
|
266
|
+
signatures=signature_str,
|
|
267
|
+
max_args=max_size,
|
|
268
|
+
self_index=self_index,
|
|
269
|
+
ut_body=ut_body)
|
|
270
|
+
func_call_body_list.append(tensor_func_single_call_body)
|
|
271
|
+
|
|
272
|
+
def _create_overload_op_source_files(self, overload_op_func_data, func_call_body_list):
|
|
273
|
+
"""
|
|
274
|
+
Generates the list of call body strings for overloaded operation functions.
|
|
275
|
+
|
|
276
|
+
Args:
|
|
277
|
+
overload_op_func_data (dict): Dictionary of tensor function prototypes with overloaded definitions.
|
|
278
|
+
|
|
279
|
+
Returns:
|
|
280
|
+
list: Updated str list for generating C++ function call bodies.
|
|
281
|
+
"""
|
|
282
|
+
for func_api_name, func_protos in overload_op_func_data.items():
|
|
283
|
+
tensor_func_overload_call_body = self._get_overload_func_call_str(
|
|
284
|
+
func_api_name, func_protos)
|
|
285
|
+
func_call_body_list.append(tensor_func_overload_call_body)
|
|
286
|
+
|
|
287
|
+
def _get_overload_func_call_str(self, func_api_name, func_protos):
|
|
288
|
+
"""
|
|
289
|
+
Generates C++ call body string for overloaded tensor functions.
|
|
290
|
+
|
|
291
|
+
Args:
|
|
292
|
+
func_api_name (str): Name of the function API.
|
|
293
|
+
func_protos (list): List of TensorFuncProto objects representing the function prototypes.
|
|
294
|
+
|
|
295
|
+
Returns:
|
|
296
|
+
str: Generated call body string for the overloaded functions.
|
|
297
|
+
"""
|
|
298
|
+
signatures_str = self._generate_func_signatures_list_str(func_protos)
|
|
299
|
+
dispatch_cases = self._get_dispatch_cases(func_protos)
|
|
300
|
+
ut_dispatch_cases = self._get_ut_dispatch_cases(func_protos)
|
|
301
|
+
ut_overload_body = self.TENSOR_FUNC_UT_OVERLOAD_BODY.replace(
|
|
302
|
+
ut_dispatch_cases=ut_dispatch_cases)
|
|
303
|
+
|
|
304
|
+
max_size = 0
|
|
305
|
+
self_index = 0
|
|
306
|
+
for tensor_proto in func_protos:
|
|
307
|
+
op_proto = tensor_proto.op_proto
|
|
308
|
+
op_args = op_proto.op_args
|
|
309
|
+
max_size = max(len(op_args), max_size)
|
|
310
|
+
self_index = self._get_input_tensor_index(tensor_proto)
|
|
311
|
+
cpp_func_name = pyboost_utils.format_func_api_name(func_api_name)
|
|
312
|
+
overload_func_call_str = self.TENSOR_FUNC_OVERLOAD_CALL_BODY.replace(cpp_func_name=cpp_func_name,
|
|
313
|
+
func_name=func_api_name,
|
|
314
|
+
signatures=signatures_str,
|
|
315
|
+
dispatch_cases=dispatch_cases,
|
|
316
|
+
max_args=max_size,
|
|
317
|
+
self_index=self_index,
|
|
318
|
+
ut_overload_body=ut_overload_body)
|
|
319
|
+
return overload_func_call_str
|
|
320
|
+
|
|
321
|
+
def _generate_func_signatures_list_str(self, func_protos) -> str:
|
|
322
|
+
"""
|
|
323
|
+
Generates function signatures as a string from the given prototypes.
|
|
324
|
+
|
|
325
|
+
Args:
|
|
326
|
+
func_protos (list): List of TensorFuncProto objects representing the function prototypes.
|
|
327
|
+
|
|
328
|
+
Returns:
|
|
329
|
+
str: Generated function signatures string.
|
|
330
|
+
"""
|
|
331
|
+
sig_str = ''
|
|
332
|
+
first_sig = True
|
|
333
|
+
for tensor_proto in func_protos:
|
|
334
|
+
op_proto = tensor_proto.op_proto
|
|
335
|
+
if not first_sig:
|
|
336
|
+
sig_str += ',\n'
|
|
337
|
+
first_sig = False
|
|
338
|
+
sig_str += self._generate_single_signature_str(
|
|
339
|
+
op_proto, tensor_proto.kw_only_args, tensor_proto.varargs)
|
|
340
|
+
return sig_str
|
|
341
|
+
|
|
342
|
+
def _generate_single_signature_str(self, op_proto: OpProto, kw_only_args, varargs) -> str:
|
|
343
|
+
op_parser = OpTemplateParser(op_proto)
|
|
344
|
+
return op_parser.generate_signature_str(kw_only_args, varargs, is_tensor_api=True)
|
|
345
|
+
|
|
346
|
+
def _get_input_tensor_index(self, func_proto):
|
|
347
|
+
"""
|
|
348
|
+
Get index of input.
|
|
349
|
+
|
|
350
|
+
Args:
|
|
351
|
+
func_proto (TensorFuncProto): Function prototype to generate dispatch strings for.
|
|
352
|
+
|
|
353
|
+
Returns:
|
|
354
|
+
int: Index of input.
|
|
355
|
+
"""
|
|
356
|
+
op_name = func_proto.op_proto.op_class.name
|
|
357
|
+
op_args = func_proto.op_proto.op_args
|
|
358
|
+
if op_name in K.INPUT_NAME_MAP:
|
|
359
|
+
self_index = [i for i in range(
|
|
360
|
+
len(op_args)) if op_args[i].arg_name == K.INPUT_NAME_MAP[op_name]]
|
|
361
|
+
else:
|
|
362
|
+
self_index = [i for i in range(
|
|
363
|
+
len(op_args)) if op_args[i].arg_name in K.INPUT_ARGS_NAME]
|
|
364
|
+
if len(self_index) != 1:
|
|
365
|
+
raise ValueError(
|
|
366
|
+
f'There must be only one field named \'input\'. But got {len(self_index)} in {op_name}')
|
|
367
|
+
return self_index
|
|
368
|
+
|
|
369
|
+
def _get_dispatch_cases(self, func_protos):
|
|
370
|
+
"""
|
|
371
|
+
Generates C++ switch-case statements for dispatching tensor function calls.
|
|
372
|
+
|
|
373
|
+
Args:
|
|
374
|
+
func_protos (list): List of TensorFuncProto objects representing the function prototypes.
|
|
375
|
+
|
|
376
|
+
Returns:
|
|
377
|
+
str: Generated switch-case dispatch statements.
|
|
378
|
+
"""
|
|
379
|
+
dispatch_cases_str = ''
|
|
380
|
+
for idx, func_proto in enumerate(func_protos):
|
|
381
|
+
device_dispatcher_str = self._get_device_dispatchers_str(
|
|
382
|
+
func_proto)
|
|
383
|
+
dispatch_cases_str += self.single_case_template.replace(case_id=idx,
|
|
384
|
+
device_dispatcher=device_dispatcher_str)
|
|
385
|
+
dispatch_cases_str += 'default:\n'
|
|
386
|
+
dispatch_cases_str += ' return py::none();'
|
|
387
|
+
return dispatch_cases_str
|
|
388
|
+
|
|
389
|
+
def _get_ut_dispatch_cases(self, func_protos):
|
|
390
|
+
"""
|
|
391
|
+
Generates C++ switch-case statements for dispatching tensor function calls.
|
|
392
|
+
|
|
393
|
+
Args:
|
|
394
|
+
func_protos (list): List of TensorFuncProto objects representing the function prototypes.
|
|
395
|
+
|
|
396
|
+
Returns:
|
|
397
|
+
str: Generated switch-case dispatch statements.
|
|
398
|
+
"""
|
|
399
|
+
dispatch_cases_str = ''
|
|
400
|
+
for idx, func_proto in enumerate(func_protos):
|
|
401
|
+
device_dispatcher_str = self.callback_python_in_ut_template.replace(
|
|
402
|
+
py_method=func_proto.py_method)
|
|
403
|
+
dispatch_cases_str += self.single_case_in_ut_template.replace(case_id=idx,
|
|
404
|
+
device_dispatcher=device_dispatcher_str)
|
|
405
|
+
dispatch_cases_str += 'default:\n'
|
|
406
|
+
dispatch_cases_str += ' res = py::none();'
|
|
407
|
+
return dispatch_cases_str
|
|
408
|
+
|
|
409
|
+
def _get_device_dispatchers_str(self, func_proto):
|
|
410
|
+
"""
|
|
411
|
+
Generates device-specific dispatch strings for the given function prototype.
|
|
412
|
+
|
|
413
|
+
Args:
|
|
414
|
+
func_proto (TensorFuncProto): Function prototype to generate dispatch strings for.
|
|
415
|
+
|
|
416
|
+
Returns:
|
|
417
|
+
str: Generated device-specific dispatch string.
|
|
418
|
+
"""
|
|
419
|
+
ascend_dispatcher_str = self._get_single_device_dispatcher_str(
|
|
420
|
+
func_proto, 'ascend')
|
|
421
|
+
cpu_dispatcher_str = self._get_single_device_dispatcher_str(
|
|
422
|
+
func_proto, 'cpu')
|
|
423
|
+
gpu_dispatcher_str = self._get_single_device_dispatcher_str(
|
|
424
|
+
func_proto, 'gpu')
|
|
425
|
+
device_dispatcher_str = self.device_dispatcher_template.replace(ascend_dispatcher=ascend_dispatcher_str,
|
|
426
|
+
cpu_dispatcher=cpu_dispatcher_str,
|
|
427
|
+
gpu_dispatcher=gpu_dispatcher_str)
|
|
428
|
+
return device_dispatcher_str
|
|
429
|
+
|
|
430
|
+
def _get_single_device_dispatcher_str(self, func_proto, device):
|
|
431
|
+
"""
|
|
432
|
+
Generates the dispatch string for a specific device.
|
|
433
|
+
|
|
434
|
+
Args:
|
|
435
|
+
func_proto (TensorFuncProto): Function prototype to generate the dispatcher for.
|
|
436
|
+
device (str): Device type ('ascend', 'cpu', 'gpu').
|
|
437
|
+
|
|
438
|
+
Returns:
|
|
439
|
+
str: Generated device dispatcher string.
|
|
440
|
+
"""
|
|
441
|
+
func_proto_device = getattr(func_proto, device)
|
|
442
|
+
if func_proto_device == 'pyboost':
|
|
443
|
+
arg_handler_processor_str = self._get_arg_handler_processor(func_proto.func_name, func_proto.op_proto)
|
|
444
|
+
op_parser = OpTemplateParser(func_proto.op_proto)
|
|
445
|
+
op_pyboost_func_name = op_parser.get_pyboost_func_name() + "_OP"
|
|
446
|
+
convert_args_str = op_parser.get_convert_args_str(func_proto.op_proto, is_tensor_api=True)
|
|
447
|
+
self_index = op_parser.get_input_tensor_index(func_proto.op_proto)
|
|
448
|
+
return self.pyboost_return_template.replace(arg_handler_processor=arg_handler_processor_str,
|
|
449
|
+
class_name=func_proto.op_proto.op_class.name,
|
|
450
|
+
pyboost_function=op_pyboost_func_name,
|
|
451
|
+
self_index=self_index,
|
|
452
|
+
convert_args=convert_args_str)
|
|
453
|
+
|
|
454
|
+
if func_proto_device == 'py_method':
|
|
455
|
+
return self.callback_python_template.replace(py_method=func_proto.py_method)
|
|
456
|
+
|
|
457
|
+
raise TypeError("Only support pyboost or python_method.")
|
|
458
|
+
|
|
459
|
+
def _get_arg_handler_processor(self, func_name, op_proto):
|
|
460
|
+
op_parser = OpTemplateParser(op_proto)
|
|
461
|
+
return op_parser.get_arg_handler_processor(func_name, op_proto, is_tensor_api=True)
|
|
File without changes
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Copyright 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
|
+
This module contains the constant strings used in generating ops files.
|
|
17
|
+
|
|
18
|
+
Constants:
|
|
19
|
+
PY_LICENSE: License strings used for .py files
|
|
20
|
+
CC_LICENSE: License strings used for .h/.cc files
|
|
21
|
+
......
|
|
22
|
+
Other constant strings in the module are used for generation paths
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
import os
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
WORK_DIR = os.path.normpath(os.path.join(
|
|
29
|
+
os.path.dirname(os.path.realpath(__file__)), '../../../../../'))
|
|
30
|
+
|
|
31
|
+
PY_MS_DIR = "mindspore/python/mindspore"
|
|
32
|
+
PY_OPS_GEN_PATH = "mindspore/python/mindspore/ops_generate"
|
|
33
|
+
PY_AUTO_GEN_PATH = "mindspore/python/mindspore/ops/auto_generate"
|
|
34
|
+
|
|
35
|
+
# op_def
|
|
36
|
+
OP_DEF_AUTO_GENERATE_PATH = "op_def/auto_generate"
|
|
37
|
+
MS_OP_DEF_AUTO_GENERATE_PATH = "mindspore/ops/op_def/auto_generate"
|
|
38
|
+
MS_OP_DEF_YAML_PATH = "mindspore/ops/op_def/yaml"
|
|
39
|
+
MS_OP_DEF_FUNC_OP_YAML_PATH = "mindspore/ops/op_def/func_op"
|
|
40
|
+
MS_OP_DEPRECATED_DEF_YAML_PATH = "mindspore/ops/op_def/deprecated"
|
|
41
|
+
MS_OP_API_YAML_PATH = "mindspore/ops/api_def"
|
|
42
|
+
MS_TENSOR_METHOD_DOC_YAML_PATH = "mindspore/ops/api_def/method_doc"
|
|
43
|
+
MS_MINT_FUNC_DOC_YAML_PATH = "mindspore/ops/api_def/function_doc"
|
|
44
|
+
MS_MINT_FUNC_OVERLOAD_PATH = "mindspore/python/mindspore/ops"
|
|
45
|
+
PYBOOST_NATIVE_GRAD_FUNC_GEN_PATH = "mindspore/ccsrc/pynative/grad/function/auto_generate"
|
|
46
|
+
PYBOOST_AUTO_GRAD_FUNC_GEN_PATH = "mindspore/ccsrc/pynative/op_function/auto_generate"
|
|
47
|
+
PIPELINE_PYBOOST_FUNC_GEN_PATH = "mindspore/ccsrc/pynative/op_function/auto_generate"
|
|
48
|
+
FUNCTIONAL_OVERLOAD_GEN_PATH = "mindspore/ccsrc/frontend/operator/composite/auto_generate"
|
|
49
|
+
PYBOOST_GRAD_FUNC_GEN_PATH = "mindspore/ccsrc/pyboost/grad_functions/auto_generate"
|
|
50
|
+
TENSOR_FUNC_REGISTER_PATH = "mindspore/ccsrc/pynative/op_function/auto_generate"
|
|
51
|
+
TENSOR_API_PATH = "mindspore/ccsrc/pybind_api/ir/tensor_api/auto_generate"
|
|
52
|
+
ADD_TENSOR_DOCS_PY_PATH = "mindspore/python/mindspore/common"
|
|
53
|
+
ADD_MINT_DOCS_PY_PATH = "mindspore/python/mindspore/mint"
|
|
54
|
+
TENSOR_PY_CC_PATH = "mindspore/ccsrc/pybind_api/ir/tensor_register/auto_generate"
|
|
55
|
+
|
|
56
|
+
# yaml keys def
|
|
57
|
+
OP_KEYS = {'args', 'args_signature', 'returns', 'function',
|
|
58
|
+
'class', 'view', 'dispatch', 'labels', 'bprop_expander'}
|
|
59
|
+
ARG_KEYS = {'dtype', 'default', 'prim_init', 'type_cast', 'arg_handler'}
|
|
60
|
+
RETURN_KEYS = {'dtype', 'inplace', 'type_cast'}
|
|
61
|
+
ARG_SIGNATURE_KEYS = {'rw_write', 'rw_read', 'rw_ref', 'dtype_group'}
|
|
62
|
+
CLASS_KEYS = {'name', 'disable'}
|
|
63
|
+
FUNCTION_KEYS = {'name', 'disable'}
|
|
64
|
+
DISPATCH_KEYS = {'enable', 'is_comm_op', 'Ascend', 'GPU', 'CPU'}
|
|
65
|
+
TENSOR_FUNC_KEYS = {'op_yaml', 'py_method', 'kwonlyargs',
|
|
66
|
+
'varargs', 'alias', 'Ascend', 'GPU', 'CPU', 'interface'}
|
|
67
|
+
|
|
68
|
+
# func signature parsing
|
|
69
|
+
ARG_HANDLER_MAP = {"to_2d_paddings": "int|tuple[int]|list[int]",
|
|
70
|
+
"dtype_to_type_id": "type",
|
|
71
|
+
"to_kernel_size": "int|tuple[int]|list[int]",
|
|
72
|
+
"to_strides": "int|tuple[int]|list[int]",
|
|
73
|
+
"str_to_enum": "str",
|
|
74
|
+
"to_pair": "int|tuple[int]|list[int]|float",
|
|
75
|
+
"to_dilations": "tuple[int]|list[int]|int",
|
|
76
|
+
"to_output_padding": "int|tuple[int]|list[int]",
|
|
77
|
+
"to_rates": "int|tuple[int]|list[int]"}
|
|
78
|
+
INPUT_ARGS_NAME = {"input", "x", "input_x"}
|
|
79
|
+
INPUT_NAME_MAP = {"DeprecatedExpandAs": "input"}
|
|
80
|
+
|
|
81
|
+
# infer
|
|
82
|
+
MS_OPS_FUNC_IMPL_PATH = "mindspore/ops/infer/ops_func_impl"
|
|
83
|
+
|
|
84
|
+
# view
|
|
85
|
+
MS_OPS_VIEW_PATH = "mindspore/ops/view"
|
|
86
|
+
|
|
87
|
+
# kernel
|
|
88
|
+
MS_OPS_KERNEL_PATH = "mindspore/ops/kernel"
|
|
89
|
+
MS_PYBOOST_FUNCTIONS_AUTO_GEN_PATH = "mindspore/ccsrc/pyboost/functions/auto_generate"
|
|
90
|
+
MS_COMMON_PYBOOST_KERNEL_PATH = os.path.join(MS_OPS_KERNEL_PATH, "common/pyboost")
|
|
91
|
+
MS_PYBOOST_BASE_PATH = "mindspore/ccsrc/pyboost"
|