mindspore 2.4.1__cp311-cp311-win_amd64.whl → 2.5.0__cp311-cp311-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 +8 -3
- mindspore/_c_dataengine.cp311-win_amd64.pyd +0 -0
- mindspore/_c_expression.cp311-win_amd64.pyd +0 -0
- mindspore/_c_mindrecord.cp311-win_amd64.pyd +0 -0
- mindspore/_checkparam.py +0 -5
- mindspore/_extends/parallel_compile/akg_compiler/gen_custom_op_files.py +1 -1
- mindspore/_extends/parse/compile_config.py +64 -0
- mindspore/_extends/parse/deprecated/__init__.py +0 -0
- mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +375 -0
- mindspore/_extends/parse/parser.py +23 -5
- mindspore/_extends/parse/standard_method.py +123 -27
- mindspore/_extends/pijit/pijit_func_white_list.py +1 -1
- mindspore/amp.py +7 -1
- 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/boost_cell_wrapper.py +136 -41
- mindspore/c1.dll +0 -0
- mindspore/c1xx.dll +0 -0
- mindspore/c2.dll +0 -0
- mindspore/common/__init__.py +3 -1
- mindspore/common/_register_for_tensor.py +0 -1
- mindspore/common/_stub_tensor.py +25 -4
- mindspore/common/_tensor_cpp_method.py +17 -0
- mindspore/common/_tensor_docs.py +6132 -0
- mindspore/common/api.py +99 -25
- mindspore/common/dtype.py +34 -34
- mindspore/common/dump.py +2 -1
- mindspore/common/file_system.py +8 -1
- mindspore/common/generator.py +2 -0
- mindspore/common/hook_handle.py +3 -1
- mindspore/common/initializer.py +3 -4
- mindspore/common/lazy_inline.py +8 -2
- mindspore/common/mindir_util.py +10 -2
- mindspore/common/parameter.py +30 -27
- mindspore/common/tensor.py +713 -1337
- mindspore/communication/__init__.py +1 -1
- mindspore/communication/_comm_helper.py +10 -0
- mindspore/communication/comm_func.py +215 -173
- mindspore/communication/management.py +23 -20
- mindspore/context.py +292 -193
- mindspore/dataset/__init__.py +23 -19
- mindspore/dataset/callback/ds_callback.py +2 -1
- mindspore/dataset/core/config.py +84 -3
- mindspore/dataset/engine/cache_admin.py +3 -3
- mindspore/dataset/engine/cache_client.py +5 -4
- mindspore/dataset/engine/datasets.py +192 -149
- mindspore/dataset/engine/datasets_audio.py +14 -0
- mindspore/dataset/engine/datasets_standard_format.py +28 -11
- mindspore/dataset/engine/datasets_text.py +38 -1
- mindspore/dataset/engine/datasets_user_defined.py +125 -65
- mindspore/dataset/engine/datasets_vision.py +81 -8
- mindspore/dataset/engine/iterators.py +281 -63
- mindspore/dataset/engine/obs/util.py +8 -0
- mindspore/dataset/engine/queue.py +40 -0
- mindspore/dataset/engine/samplers.py +26 -2
- mindspore/dataset/engine/serializer_deserializer.py +1 -1
- mindspore/dataset/engine/validators.py +43 -11
- mindspore/dataset/transforms/py_transforms_util.py +17 -0
- mindspore/dataset/transforms/transforms.py +29 -12
- 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 +94 -0
- mindspore/device_context/ascend/op_precision.py +193 -0
- mindspore/device_context/ascend/op_tuning.py +127 -0
- mindspore/device_context/cpu/__init__.py +25 -0
- 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 +134 -0
- mindspore/dnnl.dll +0 -0
- mindspore/dpcmi.dll +0 -0
- mindspore/experimental/llm_boost/__init__.py +3 -2
- 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 +239 -64
- mindspore/experimental/llm_boost/atb/llama_boost.py +52 -30
- mindspore/experimental/llm_boost/atb/qwen_boost.py +47 -24
- mindspore/experimental/llm_boost/register.py +1 -0
- mindspore/experimental/optim/adadelta.py +26 -22
- mindspore/experimental/optim/adam.py +3 -0
- mindspore/experimental/optim/lr_scheduler.py +33 -24
- mindspore/experimental/optim/radam.py +33 -30
- mindspore/hal/device.py +28 -0
- mindspore/hal/event.py +17 -0
- mindspore/hal/memory.py +94 -3
- mindspore/hal/stream.py +91 -6
- mindspore/include/api/context.h +1 -2
- mindspore/include/dataset/constants.h +2 -2
- mindspore/jpeg62.dll +0 -0
- mindspore/log.py +12 -0
- mindspore/mindrecord/__init__.py +1 -1
- 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.dll +0 -0
- mindspore/mindspore_common.dll +0 -0
- mindspore/mindspore_core.dll +0 -0
- mindspore/mindspore_glog.dll +0 -0
- mindspore/mindspore_ops.dll +0 -0
- mindspore/mint/__init__.py +824 -218
- mindspore/mint/distributed/__init__.py +66 -4
- mindspore/mint/distributed/distributed.py +2594 -44
- mindspore/mint/linalg/__init__.py +6 -0
- mindspore/mint/nn/__init__.py +473 -14
- mindspore/mint/nn/functional.py +486 -11
- mindspore/mint/nn/layer/__init__.py +17 -4
- mindspore/mint/nn/layer/_functions.py +330 -0
- mindspore/mint/nn/layer/activation.py +169 -1
- mindspore/mint/nn/layer/basic.py +123 -0
- mindspore/mint/nn/layer/conv.py +727 -0
- mindspore/mint/nn/layer/normalization.py +215 -19
- mindspore/mint/nn/layer/padding.py +797 -0
- mindspore/mint/nn/layer/pooling.py +170 -0
- mindspore/mint/optim/__init__.py +2 -1
- mindspore/mint/optim/adam.py +223 -0
- mindspore/mint/optim/adamw.py +26 -19
- 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 +2 -0
- mindspore/nn/cell.py +142 -21
- mindspore/nn/dynamic_lr.py +2 -1
- mindspore/nn/layer/activation.py +6 -6
- mindspore/nn/layer/basic.py +35 -25
- mindspore/nn/layer/channel_shuffle.py +3 -3
- mindspore/nn/layer/conv.py +3 -0
- mindspore/nn/layer/embedding.py +3 -3
- mindspore/nn/layer/normalization.py +8 -7
- mindspore/nn/layer/padding.py +4 -3
- mindspore/nn/layer/pooling.py +55 -23
- 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 +48 -26
- mindspore/nn/learning_rate_schedule.py +5 -3
- mindspore/nn/loss/loss.py +31 -36
- mindspore/nn/optim/ada_grad.py +1 -0
- mindspore/nn/optim/adadelta.py +2 -2
- mindspore/nn/optim/adam.py +1 -1
- mindspore/nn/optim/lars.py +1 -4
- mindspore/nn/optim/optimizer.py +1 -1
- mindspore/nn/optim/rprop.py +2 -2
- mindspore/nn/optim/thor.py +2 -1
- mindspore/nn/utils/__init__.py +22 -0
- mindspore/nn/utils/init.py +73 -0
- mindspore/nn/wrap/cell_wrapper.py +4 -6
- mindspore/nn/wrap/loss_scale.py +3 -4
- mindspore/numpy/array_creations.py +60 -62
- mindspore/numpy/array_ops.py +148 -143
- mindspore/numpy/logic_ops.py +41 -42
- mindspore/numpy/math_ops.py +361 -359
- mindspore/numpy/utils.py +16 -16
- mindspore/numpy/utils_const.py +4 -4
- mindspore/opencv_core452.dll +0 -0
- mindspore/opencv_imgcodecs452.dll +0 -0
- mindspore/opencv_imgproc452.dll +0 -0
- mindspore/ops/__init__.py +2 -1
- mindspore/ops/_grad_experimental/grad_comm_ops.py +107 -8
- mindspore/ops/_grad_experimental/grad_debug_ops.py +6 -1
- mindspore/ops/_grad_experimental/grad_inner_ops.py +9 -0
- mindspore/ops/_grad_experimental/grad_math_ops.py +2 -1
- mindspore/ops/_op_impl/cpu/__init__.py +1 -0
- mindspore/ops/_op_impl/cpu/raise_op.py +28 -0
- mindspore/ops/_vmap/vmap_array_ops.py +20 -19
- mindspore/ops/_vmap/vmap_base.py +0 -2
- mindspore/ops/_vmap/vmap_grad_nn_ops.py +19 -13
- mindspore/ops/_vmap/vmap_math_ops.py +11 -9
- mindspore/ops/_vmap/vmap_nn_ops.py +20 -34
- mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +149 -12
- mindspore/ops/auto_generate/gen_arg_handler.py +0 -61
- mindspore/ops/auto_generate/gen_extend_func.py +554 -60
- mindspore/ops/auto_generate/gen_ops_def.py +1621 -115
- mindspore/ops/auto_generate/gen_ops_prim.py +8027 -3411
- mindspore/ops/auto_generate/pyboost_inner_prim.py +183 -79
- mindspore/ops/composite/base.py +1 -1
- mindspore/ops/composite/multitype_ops/_compile_utils.py +229 -30
- mindspore/ops/composite/multitype_ops/pow_impl.py +0 -29
- mindspore/ops/function/__init__.py +12 -0
- mindspore/ops/function/array_func.py +561 -159
- mindspore/ops/function/clip_func.py +64 -0
- mindspore/ops/function/debug_func.py +28 -20
- mindspore/ops/function/image_func.py +1 -1
- mindspore/ops/function/linalg_func.py +5 -4
- mindspore/ops/function/math_func.py +1664 -294
- mindspore/ops/function/nn_func.py +988 -317
- mindspore/ops/function/parameter_func.py +3 -56
- mindspore/ops/function/random_func.py +243 -33
- mindspore/ops/function/sparse_unary_func.py +1 -1
- mindspore/ops/functional.py +18 -5
- mindspore/ops/functional_overload.py +897 -0
- mindspore/ops/operations/__init__.py +3 -2
- mindspore/ops/operations/_embedding_cache_ops.py +4 -4
- mindspore/ops/operations/_grad_ops.py +2 -34
- mindspore/ops/operations/_infer_ops.py +2 -1
- mindspore/ops/operations/_inner_ops.py +38 -8
- mindspore/ops/operations/array_ops.py +45 -303
- mindspore/ops/operations/comm_ops.py +23 -17
- mindspore/ops/operations/custom_ops.py +7 -49
- mindspore/ops/operations/debug_ops.py +42 -47
- mindspore/ops/operations/inner_ops.py +6 -4
- mindspore/ops/operations/linalg_ops.py +3 -2
- mindspore/ops/operations/manually_defined/ops_def.py +185 -104
- mindspore/ops/operations/math_ops.py +11 -216
- mindspore/ops/operations/nn_ops.py +153 -310
- mindspore/ops/primitive.py +23 -21
- mindspore/ops/tensor_method.py +1669 -0
- mindspore/ops_generate/aclnn_kernel_register_auto_cc_generator.py +110 -0
- mindspore/ops_generate/add_tensor_docs_generator.py +54 -0
- mindspore/ops_generate/arg_handler.py +0 -61
- mindspore/ops_generate/auto_grad_impl_cc_generator.py +135 -0
- mindspore/ops_generate/auto_grad_reg_cc_generator.py +93 -0
- mindspore/ops_generate/base_generator.py +11 -0
- mindspore/ops_generate/cpp_create_prim_instance_helper_generator.py +108 -0
- mindspore/ops_generate/functional_map_cpp_generator.py +491 -0
- mindspore/ops_generate/functional_overload_py_generator.py +110 -0
- mindspore/ops_generate/functions_cc_generator.py +233 -0
- mindspore/ops_generate/gen_aclnn_implement.py +110 -114
- mindspore/ops_generate/gen_constants.py +157 -3
- mindspore/ops_generate/gen_ops.py +245 -990
- mindspore/ops_generate/gen_pyboost_func.py +97 -998
- mindspore/ops_generate/gen_utils.py +119 -33
- mindspore/ops_generate/lite_ops_cpp_generator.py +155 -0
- mindspore/ops_generate/op_api_proto.py +206 -0
- mindspore/ops_generate/op_def_py_generator.py +131 -0
- mindspore/ops_generate/op_prim_py_generator.py +480 -0
- mindspore/ops_generate/op_proto.py +373 -108
- mindspore/ops_generate/op_template_parser.py +436 -0
- mindspore/ops_generate/ops_def_cc_generator.py +288 -0
- mindspore/ops_generate/ops_def_h_generator.py +74 -0
- mindspore/ops_generate/ops_name_h_generator.py +68 -0
- mindspore/ops_generate/ops_primitive_h_generator.py +81 -0
- mindspore/ops_generate/pyboost_functions_cpp_generator.py +370 -0
- mindspore/ops_generate/pyboost_functions_h_generator.py +68 -0
- mindspore/ops_generate/pyboost_functions_py_generator.py +148 -0
- mindspore/ops_generate/pyboost_grad_function_cpp_generator.py +154 -0
- mindspore/ops_generate/pyboost_inner_prim_generator.py +131 -0
- mindspore/ops_generate/pyboost_native_grad_functions_generator.py +268 -0
- mindspore/ops_generate/pyboost_op_cpp_code_generator.py +851 -0
- mindspore/ops_generate/pyboost_overload_functions_cpp_generator.py +344 -0
- mindspore/ops_generate/pyboost_utils.py +92 -33
- mindspore/ops_generate/template.py +294 -44
- mindspore/ops_generate/tensor_func_reg_cpp_generator.py +422 -0
- mindspore/parallel/__init__.py +3 -3
- mindspore/parallel/_auto_parallel_context.py +44 -34
- mindspore/parallel/_cell_wrapper.py +22 -3
- mindspore/parallel/_parallel_serialization.py +13 -2
- mindspore/parallel/_utils.py +4 -2
- mindspore/parallel/algo_parameter_config.py +1 -1
- mindspore/parallel/checkpoint_transform.py +44 -0
- mindspore/parallel/cluster/process_entity/_api.py +131 -37
- mindspore/parallel/cluster/process_entity/_utils.py +41 -6
- mindspore/parallel/cluster/run.py +20 -3
- mindspore/parallel/parameter_broadcast.py +1 -1
- mindspore/parallel/shard.py +3 -0
- mindspore/parallel/transform_safetensors.py +119 -253
- mindspore/pgodb140.dll +0 -0
- mindspore/pgort140.dll +0 -0
- mindspore/profiler/__init__.py +17 -4
- mindspore/profiler/analysis/__init__.py +0 -0
- mindspore/profiler/analysis/parser/__init__.py +0 -0
- mindspore/profiler/analysis/parser/ascend_cann_parser.py +166 -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 +261 -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 +84 -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 +260 -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 +333 -0
- mindspore/profiler/analysis/viewer/ascend_integrate_viewer.py +87 -0
- mindspore/profiler/analysis/viewer/ascend_kernel_details_viewer.py +252 -0
- mindspore/profiler/analysis/viewer/ascend_memory_viewer.py +313 -0
- mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +322 -0
- mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +265 -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 +97 -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 +138 -0
- mindspore/profiler/common/command_executor.py +90 -0
- mindspore/profiler/common/constant.py +174 -3
- mindspore/profiler/common/file_manager.py +208 -0
- mindspore/profiler/common/log.py +130 -0
- mindspore/profiler/common/msprof_cmd_tool.py +202 -0
- mindspore/profiler/common/path_manager.py +371 -0
- mindspore/profiler/common/process_bar.py +168 -0
- mindspore/profiler/common/process_pool.py +9 -3
- mindspore/profiler/common/profiler_context.py +476 -0
- mindspore/profiler/common/profiler_info.py +304 -0
- mindspore/profiler/common/profiler_output_path.py +284 -0
- mindspore/profiler/common/profiler_parameters.py +210 -0
- mindspore/profiler/common/profiler_path_manager.py +120 -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 +270 -37
- mindspore/profiler/envprofiler.py +138 -0
- mindspore/profiler/mstx.py +199 -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 +309 -0
- mindspore/profiler/profiler.py +580 -93
- mindspore/profiler/profiler_action_controller.py +187 -0
- mindspore/profiler/profiler_interface.py +114 -0
- mindspore/profiler/schedule.py +208 -0
- mindspore/rewrite/api/symbol_tree.py +1 -2
- mindspore/run_check/_check_version.py +18 -13
- mindspore/runtime/__init__.py +37 -0
- mindspore/runtime/device.py +27 -0
- mindspore/runtime/event.py +209 -0
- mindspore/runtime/executor.py +148 -0
- mindspore/runtime/memory.py +392 -0
- mindspore/runtime/stream.py +460 -0
- mindspore/runtime/thread_bind_core.py +401 -0
- 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 +2 -2
- mindspore/train/_utils.py +53 -18
- mindspore/train/amp.py +8 -4
- mindspore/train/callback/_checkpoint.py +32 -18
- mindspore/train/callback/_early_stop.py +1 -1
- mindspore/train/callback/_flops_collector.py +105 -69
- mindspore/train/callback/_history.py +1 -1
- mindspore/train/callback/_summary_collector.py +44 -6
- mindspore/train/callback/_tft_register.py +37 -15
- mindspore/train/dataset_helper.py +11 -11
- mindspore/train/metrics/precision.py +4 -5
- mindspore/train/mind_ir_pb2.py +167 -46
- mindspore/train/model.py +13 -14
- mindspore/train/serialization.py +461 -72
- mindspore/train/summary/summary_record.py +1 -2
- mindspore/train/train_thor/model_thor.py +1 -1
- mindspore/turbojpeg.dll +0 -0
- mindspore/utils/__init__.py +4 -2
- mindspore/utils/dryrun.py +138 -0
- mindspore/utils/runtime_execution_order_check.py +550 -0
- mindspore/vcmeta.dll +0 -0
- mindspore/vcruntime140.dll +0 -0
- mindspore/vcruntime140_1.dll +0 -0
- mindspore/version.py +1 -1
- {mindspore-2.4.1.dist-info → mindspore-2.5.0.dist-info}/METADATA +3 -4
- {mindspore-2.4.1.dist-info → mindspore-2.5.0.dist-info}/RECORD +391 -265
- {mindspore-2.4.1.dist-info → mindspore-2.5.0.dist-info}/entry_points.txt +1 -1
- mindspore/common/_tensor_overload.py +0 -139
- mindspore/mindspore_np_dtype.dll +0 -0
- mindspore/profiler/envprofiling.py +0 -254
- mindspore/profiler/profiling.py +0 -1926
- {mindspore-2.4.1.dist-info → mindspore-2.5.0.dist-info}/WHEEL +0 -0
- {mindspore-2.4.1.dist-info → mindspore-2.5.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,344 @@
|
|
|
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 PyboostFunctionsGenerator class for generating C++ functions for PyBoost operations.
|
|
17
|
+
|
|
18
|
+
The generator processes operator prototypes and constructs the necessary function definitions, including
|
|
19
|
+
conversions for optional parameters and tensor arguments. It generates the registration code and includes
|
|
20
|
+
the necessary header files for the generated functions.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
import os
|
|
24
|
+
import template
|
|
25
|
+
from template import Template
|
|
26
|
+
import gen_constants as K
|
|
27
|
+
import pyboost_utils
|
|
28
|
+
import op_api_proto
|
|
29
|
+
from gen_utils import save_file
|
|
30
|
+
from op_proto import OpProto
|
|
31
|
+
from op_template_parser import OpTemplateParser
|
|
32
|
+
from base_generator import BaseGenerator
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class PyboostOverloadFunctionsGenerator(BaseGenerator):
|
|
36
|
+
"""
|
|
37
|
+
Generates PyBoost overload functions cpp code based on operator prototypes.
|
|
38
|
+
|
|
39
|
+
This class processes operator prototypes (`op_protos`) to create the necessary C++ function definitions for
|
|
40
|
+
PyBoost operations. It constructs function bodies, handles optional value conversions, and generates
|
|
41
|
+
registration code and header inclusions.
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
def __init__(self):
|
|
45
|
+
self.PYBOOST_OVERLOAD_FUNCTIONS_TEMPLATE = template.PYBOOST_OVERLOAD_FUNCTIONS_CC_TEMPLATE
|
|
46
|
+
self.PYBOOST_MINT_CLASS_DEF = template.PYBOOST_MINT_CLASS_DEF
|
|
47
|
+
self.PYBOOST_OVERLOAD_MINT_CLASS_DEF = template.PYBOOST_OVERLOAD_MINT_CLASS_DEF
|
|
48
|
+
self.TENSOR_FUNC_UT_BODY = template.TENSOR_FUNC_UT_BODY
|
|
49
|
+
self.TENSOR_FUNC_UT_OVERLOAD_BODY = template.TENSOR_FUNC_UT_OVERLOAD_BODY
|
|
50
|
+
|
|
51
|
+
self.single_case_template = Template(
|
|
52
|
+
'case ${case_id}:\n'
|
|
53
|
+
' ${device_dispatcher}\n'
|
|
54
|
+
' break;\n'
|
|
55
|
+
)
|
|
56
|
+
self.device_dispatcher_template = Template(
|
|
57
|
+
'if (backend == kAscendDevice || backend == kDavinciDevice) {\n'
|
|
58
|
+
' ${ascend_dispatcher}\n'
|
|
59
|
+
'} else if (backend == kCPUDevice) {\n'
|
|
60
|
+
' ${cpu_dispatcher}\n'
|
|
61
|
+
'} else if (backend == kGPUDevice) {\n'
|
|
62
|
+
' ${gpu_dispatcher}\n'
|
|
63
|
+
'} else {\n'
|
|
64
|
+
' MS_LOG(ERROR) << "Device target is not supported!";\n'
|
|
65
|
+
' return py::none();\n'
|
|
66
|
+
'}'
|
|
67
|
+
)
|
|
68
|
+
self.pyboost_return_template = Template(
|
|
69
|
+
'${arg_handler_processor}\n'
|
|
70
|
+
'MS_LOG(INFO) << "Call Tensor${class_name}";\n'
|
|
71
|
+
'return mindspore::tensor::ToPython(${pyboost_base_func_name}_Base(${prim_name}, arg_list));\n'
|
|
72
|
+
)
|
|
73
|
+
self.callback_python_template = Template(
|
|
74
|
+
'MS_LOG(INFO) << "Callback python method: ${py_method}";\n'
|
|
75
|
+
'py::function fn = python_adapter::GetPyFn(\"mindspore.ops.tensor_method\", \"${py_method}\");\n'
|
|
76
|
+
'py::object res = fn(*args, **kwargs);\n'
|
|
77
|
+
'return res;\n'
|
|
78
|
+
)
|
|
79
|
+
self.pybind_register_template = Template(
|
|
80
|
+
'(void)py::class_<${cpp_func_name}Functional, Functional, std::shared_ptr<${cpp_func_name}Functional>>\n'
|
|
81
|
+
' (*m, "${cpp_func_name}Functional_")\n'
|
|
82
|
+
' .def("__call__", &${cpp_func_name}Functional::Call, "Call ${cpp_func_name} functional.");\n'
|
|
83
|
+
'm->attr("_${mint_func_name}_instance") = ${mint_func_name}_instance;'
|
|
84
|
+
)
|
|
85
|
+
self.callback_python_in_ut_template = Template(
|
|
86
|
+
'MS_LOG(INFO) << "Callback python method in UT: ${py_method}";\n'
|
|
87
|
+
'fn = python_adapter::GetPyFn(\"mindspore.ops.tensor_method\", \"${py_method}\");\n'
|
|
88
|
+
'res = fn(*args, **kwargs);\n'
|
|
89
|
+
'break;\n'
|
|
90
|
+
)
|
|
91
|
+
self.single_case_in_ut_template = Template(
|
|
92
|
+
'case ${case_id}:\n'
|
|
93
|
+
' ${device_dispatcher}\n'
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
def generate(self, work_path, op_protos, mint_func_protos_data, alias_func_mapping):
|
|
97
|
+
"""
|
|
98
|
+
Generates the C++ PyBoost functions and writes them to the specified files.
|
|
99
|
+
|
|
100
|
+
This method processes a list of operator prototypes (`op_protos`), extracting necessary information
|
|
101
|
+
such as operator names, arguments, and conversion types. It constructs the function definitions, includes,
|
|
102
|
+
and registration code. The generated content is saved to the specified path as a C++ source file.
|
|
103
|
+
|
|
104
|
+
Args:
|
|
105
|
+
work_path (str): The file path where the generated files will be saved.
|
|
106
|
+
op_protos (list): A list of operator prototypes containing information about the operators to be processed.
|
|
107
|
+
mint_func_protos_data (dict): A dict of tensor prototypes containing device-related information.
|
|
108
|
+
alias_func_mapping (dict): A dict mapping from api name to its alias api name.
|
|
109
|
+
|
|
110
|
+
Returns:
|
|
111
|
+
None
|
|
112
|
+
"""
|
|
113
|
+
|
|
114
|
+
mint_classes_def_list = []
|
|
115
|
+
|
|
116
|
+
_, single_mint_func_data, overload_mint_func_data = op_api_proto.categorize_func_data(mint_func_protos_data)
|
|
117
|
+
single_func_call_body_list, single_cpp_class_name_list = (
|
|
118
|
+
self._get_single_func_call_body_list(single_mint_func_data))
|
|
119
|
+
overload_func_call_body_list, overload_cpp_class_name_list = (
|
|
120
|
+
self._get_overload_func_call_body_list(overload_mint_func_data))
|
|
121
|
+
|
|
122
|
+
mint_classes_def_list.extend(single_func_call_body_list)
|
|
123
|
+
mint_classes_def_list.extend(overload_func_call_body_list)
|
|
124
|
+
|
|
125
|
+
cpp_class_name_list = single_cpp_class_name_list + overload_cpp_class_name_list
|
|
126
|
+
mint_classes_reg_list = (
|
|
127
|
+
self._get_mint_func_reg_list(single_mint_func_data, overload_mint_func_data, cpp_class_name_list))
|
|
128
|
+
|
|
129
|
+
pyboost_overload_file_str = (
|
|
130
|
+
self.PYBOOST_OVERLOAD_FUNCTIONS_TEMPLATE.replace(mint_func_classes_def=mint_classes_def_list,
|
|
131
|
+
pybind_register_code=mint_classes_reg_list))
|
|
132
|
+
save_path = os.path.join(work_path, K.PIPELINE_PYBOOST_FUNC_GEN_PATH)
|
|
133
|
+
file_name = "pyboost_overload_functions.cc"
|
|
134
|
+
save_file(save_path, file_name, pyboost_overload_file_str)
|
|
135
|
+
|
|
136
|
+
def _get_single_func_call_body_list(self, single_op_func_data):
|
|
137
|
+
"""
|
|
138
|
+
Generates the list of call body strings for single operation functions.
|
|
139
|
+
|
|
140
|
+
Args:
|
|
141
|
+
single_op_func_data (dict): Dictionary of tensor function prototypes with only one definition.
|
|
142
|
+
|
|
143
|
+
Returns:
|
|
144
|
+
func_call_body_list (list): Updated str list for generating C++ function call bodies.
|
|
145
|
+
cpp_class_name_list (list): The list of non-overloaded c++ functional classes' names.
|
|
146
|
+
"""
|
|
147
|
+
func_call_body_list, cpp_class_name_list = [], []
|
|
148
|
+
for _, func_proto in single_op_func_data.items():
|
|
149
|
+
func_name = func_proto.func_name
|
|
150
|
+
class_name = func_proto.op_proto.op_class.name
|
|
151
|
+
device_dispatcher_str = self._get_device_dispatchers_str(func_proto)
|
|
152
|
+
signature_str = self._generate_single_signature_str(
|
|
153
|
+
func_proto.op_proto, func_proto.kw_only_args, func_proto.varargs)
|
|
154
|
+
op_args = func_proto.op_proto.op_args
|
|
155
|
+
max_size = len(op_args)
|
|
156
|
+
ut_body = self.TENSOR_FUNC_UT_BODY.replace(py_method=func_proto.py_method)
|
|
157
|
+
func_call_body_list.append(self.PYBOOST_MINT_CLASS_DEF.replace(
|
|
158
|
+
class_name=class_name,
|
|
159
|
+
func_name=func_name,
|
|
160
|
+
device_dispatcher=device_dispatcher_str,
|
|
161
|
+
signatures=signature_str,
|
|
162
|
+
max_args=max_size,
|
|
163
|
+
ut_body=ut_body))
|
|
164
|
+
cpp_class_name_list.append(class_name)
|
|
165
|
+
return func_call_body_list, cpp_class_name_list
|
|
166
|
+
|
|
167
|
+
def _get_overload_func_call_body_list(self, overload_op_func_data):
|
|
168
|
+
"""
|
|
169
|
+
Generates the list of call body strings for overloaded operation functions.
|
|
170
|
+
|
|
171
|
+
Args:
|
|
172
|
+
overload_op_func_data (dict): Dictionary of tensor function prototypes with overloaded definitions.
|
|
173
|
+
|
|
174
|
+
Returns:
|
|
175
|
+
func_call_body_list (list): Updated str list for generating C++ function call bodies.
|
|
176
|
+
cpp_class_name_list (list): The list of overloaded c++ functional classes' names.
|
|
177
|
+
"""
|
|
178
|
+
func_call_body_list, cpp_class_name_list = [], []
|
|
179
|
+
for func_api_name, func_protos in overload_op_func_data.items():
|
|
180
|
+
func_call_body_list.append(
|
|
181
|
+
self._get_overload_func_call_str(func_api_name, func_protos, cpp_class_name_list))
|
|
182
|
+
return func_call_body_list, cpp_class_name_list
|
|
183
|
+
|
|
184
|
+
def _get_overload_func_call_str(self, func_api_name, func_protos, cpp_class_name_list):
|
|
185
|
+
"""
|
|
186
|
+
Generates C++ call body string for overloaded tensor functions.
|
|
187
|
+
|
|
188
|
+
Args:
|
|
189
|
+
func_api_name (str): Name of the function API.
|
|
190
|
+
func_protos (list): List of TensorFuncProto objects representing the function prototypes.
|
|
191
|
+
|
|
192
|
+
Returns:
|
|
193
|
+
str: Generated call body string for the overloaded functions.
|
|
194
|
+
"""
|
|
195
|
+
signatures_str = self._generate_func_signatures_str(func_protos)
|
|
196
|
+
dispatch_cases = self._get_dispatch_cases(func_protos)
|
|
197
|
+
ut_dispatch_cases = self._get_ut_dispatch_cases(func_protos)
|
|
198
|
+
ut_overload_body = self.TENSOR_FUNC_UT_OVERLOAD_BODY.replace(ut_dispatch_cases=ut_dispatch_cases)
|
|
199
|
+
|
|
200
|
+
max_size = 0
|
|
201
|
+
for tensor_proto in func_protos:
|
|
202
|
+
op_proto = tensor_proto.op_proto
|
|
203
|
+
op_args = op_proto.op_args
|
|
204
|
+
max_size = max(len(op_args), max_size)
|
|
205
|
+
cpp_func_name = pyboost_utils.format_func_api_name(func_api_name)
|
|
206
|
+
cpp_class_name_list.append(cpp_func_name)
|
|
207
|
+
overload_func_call_str = self.PYBOOST_OVERLOAD_MINT_CLASS_DEF.replace(cpp_func_name=cpp_func_name,
|
|
208
|
+
func_name=func_api_name,
|
|
209
|
+
signatures=signatures_str,
|
|
210
|
+
dispatch_cases=dispatch_cases,
|
|
211
|
+
max_args=max_size,
|
|
212
|
+
ut_overload_body=ut_overload_body)
|
|
213
|
+
return overload_func_call_str
|
|
214
|
+
|
|
215
|
+
def _generate_func_signatures_str(self, func_protos) -> str:
|
|
216
|
+
"""
|
|
217
|
+
Generates function signatures as a string from the given prototypes.
|
|
218
|
+
|
|
219
|
+
Args:
|
|
220
|
+
func_protos (list): List of TensorFuncProto objects representing the function prototypes.
|
|
221
|
+
|
|
222
|
+
Returns:
|
|
223
|
+
str: Generated function signatures string.
|
|
224
|
+
"""
|
|
225
|
+
sig_str = ''
|
|
226
|
+
first_sig = True
|
|
227
|
+
for tensor_proto in func_protos:
|
|
228
|
+
op_proto = tensor_proto.op_proto
|
|
229
|
+
if not first_sig:
|
|
230
|
+
sig_str += ',\n'
|
|
231
|
+
first_sig = False
|
|
232
|
+
sig_str += self._generate_single_signature_str(op_proto, tensor_proto.kw_only_args, tensor_proto.varargs)
|
|
233
|
+
return sig_str
|
|
234
|
+
|
|
235
|
+
def _generate_single_signature_str(self, op_proto: OpProto, kw_only_args, varargs) -> str:
|
|
236
|
+
op_parser = OpTemplateParser(op_proto)
|
|
237
|
+
return op_parser.generate_signature_str(kw_only_args, varargs, is_tensor_api=False)
|
|
238
|
+
|
|
239
|
+
def _get_dispatch_cases(self, func_protos):
|
|
240
|
+
"""
|
|
241
|
+
Generates C++ switch-case statements for dispatching tensor function calls.
|
|
242
|
+
|
|
243
|
+
Args:
|
|
244
|
+
func_protos (list): List of TensorFuncProto objects representing the function prototypes.
|
|
245
|
+
|
|
246
|
+
Returns:
|
|
247
|
+
str: Generated switch-case dispatch statements.
|
|
248
|
+
"""
|
|
249
|
+
dispatch_cases_str = ''
|
|
250
|
+
for idx, func_proto in enumerate(func_protos):
|
|
251
|
+
device_dispatcher_str = self._get_device_dispatchers_str(func_proto)
|
|
252
|
+
dispatch_cases_str += self.single_case_template.replace(case_id=idx,
|
|
253
|
+
device_dispatcher=device_dispatcher_str)
|
|
254
|
+
dispatch_cases_str += 'default:\n'
|
|
255
|
+
dispatch_cases_str += ' return py::none();'
|
|
256
|
+
return dispatch_cases_str
|
|
257
|
+
|
|
258
|
+
def _get_ut_dispatch_cases(self, func_protos):
|
|
259
|
+
"""
|
|
260
|
+
Generates C++ switch-case statements for dispatching tensor function calls.
|
|
261
|
+
|
|
262
|
+
Args:
|
|
263
|
+
func_protos (list): List of TensorFuncProto objects representing the function prototypes.
|
|
264
|
+
|
|
265
|
+
Returns:
|
|
266
|
+
str: Generated switch-case dispatch statements.
|
|
267
|
+
"""
|
|
268
|
+
dispatch_cases_str = ''
|
|
269
|
+
for idx, func_proto in enumerate(func_protos):
|
|
270
|
+
device_dispatcher_str = self.callback_python_in_ut_template.replace(py_method=func_proto.py_method)
|
|
271
|
+
dispatch_cases_str += self.single_case_in_ut_template.replace(case_id=idx,
|
|
272
|
+
device_dispatcher=device_dispatcher_str)
|
|
273
|
+
dispatch_cases_str += 'default:\n'
|
|
274
|
+
dispatch_cases_str += ' res = py::none();'
|
|
275
|
+
return dispatch_cases_str
|
|
276
|
+
|
|
277
|
+
def _get_device_dispatchers_str(self, func_proto):
|
|
278
|
+
"""
|
|
279
|
+
Generates device-specific dispatch strings for the given function prototype.
|
|
280
|
+
|
|
281
|
+
Args:
|
|
282
|
+
func_proto (TensorFuncProto): Function prototype to generate dispatch strings for.
|
|
283
|
+
|
|
284
|
+
Returns:
|
|
285
|
+
str: Generated device-specific dispatch string.
|
|
286
|
+
"""
|
|
287
|
+
ascend_dispatcher_str = self._get_single_device_dispatcher_str(func_proto, 'ascend')
|
|
288
|
+
cpu_dispatcher_str = self._get_single_device_dispatcher_str(func_proto, 'cpu')
|
|
289
|
+
gpu_dispatcher_str = self._get_single_device_dispatcher_str(func_proto, 'gpu')
|
|
290
|
+
device_dispatcher_str = self.device_dispatcher_template.replace(ascend_dispatcher=ascend_dispatcher_str,
|
|
291
|
+
cpu_dispatcher=cpu_dispatcher_str,
|
|
292
|
+
gpu_dispatcher=gpu_dispatcher_str)
|
|
293
|
+
return device_dispatcher_str
|
|
294
|
+
|
|
295
|
+
def _get_single_device_dispatcher_str(self, func_proto, device):
|
|
296
|
+
"""
|
|
297
|
+
Generates the dispatch string for a specific device.
|
|
298
|
+
|
|
299
|
+
Args:
|
|
300
|
+
func_proto (TensorFuncProto): Function prototype to generate the dispatcher for.
|
|
301
|
+
device (str): Device type ('ascend', 'cpu', 'gpu').
|
|
302
|
+
|
|
303
|
+
Returns:
|
|
304
|
+
str: Generated device dispatcher string.
|
|
305
|
+
"""
|
|
306
|
+
func_proto_device = getattr(func_proto, device)
|
|
307
|
+
if func_proto_device == 'pyboost':
|
|
308
|
+
arg_handler_processor_str = self._get_arg_handler_processor(func_proto.func_name, func_proto.op_proto)
|
|
309
|
+
op_parser = OpTemplateParser(func_proto.op_proto)
|
|
310
|
+
op_pyboost_func_name = op_parser.get_pyboost_func_name()
|
|
311
|
+
prim_name = f"prim::kPrim{func_proto.op_proto.op_class.name}"
|
|
312
|
+
return self.pyboost_return_template.replace(arg_handler_processor=arg_handler_processor_str,
|
|
313
|
+
class_name=func_proto.op_proto.op_class.name,
|
|
314
|
+
prim_name=prim_name,
|
|
315
|
+
pyboost_base_func_name=op_pyboost_func_name)
|
|
316
|
+
if func_proto_device == 'py_method':
|
|
317
|
+
return self.callback_python_template.replace(py_method=func_proto.py_method)
|
|
318
|
+
|
|
319
|
+
raise TypeError("Only support pyboost or python_method.")
|
|
320
|
+
|
|
321
|
+
def _get_arg_handler_processor(self, func_name, op_proto):
|
|
322
|
+
op_parser = OpTemplateParser(op_proto)
|
|
323
|
+
return op_parser.get_arg_handler_processor(func_name, op_proto, is_tensor_api=False)
|
|
324
|
+
|
|
325
|
+
def _get_mint_func_reg_list(self, single_mint_func_data, overload_mint_func_data, cpp_class_names):
|
|
326
|
+
"""
|
|
327
|
+
Generates the list of pybind definition strings for mint functions.
|
|
328
|
+
|
|
329
|
+
Args:
|
|
330
|
+
single_mint_func_data (dict): Dictionary of single mint function data.
|
|
331
|
+
overload_mint_func_data (dict): Dictionary of overload mint function data.
|
|
332
|
+
cpp_class_names (list): List of C++ class names.
|
|
333
|
+
|
|
334
|
+
Returns:
|
|
335
|
+
list: list of strs for generating pybind definitions of mint functions' API.
|
|
336
|
+
"""
|
|
337
|
+
# the order of single_mint_func_data/overload_mint_func_data matters
|
|
338
|
+
mint_func_names = list(single_mint_func_data.keys()) + list(overload_mint_func_data.keys())
|
|
339
|
+
|
|
340
|
+
mint_func_reg_list = []
|
|
341
|
+
for mint_func_name, cpp_func_name in zip(mint_func_names, cpp_class_names):
|
|
342
|
+
mint_func_reg_list.append(self.pybind_register_template.replace(mint_func_name=mint_func_name,
|
|
343
|
+
cpp_func_name=cpp_func_name))
|
|
344
|
+
return mint_func_reg_list
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
import os
|
|
18
18
|
import logging
|
|
19
19
|
from gen_utils import safe_load_yaml
|
|
20
|
+
from op_proto import OpProto
|
|
20
21
|
|
|
21
22
|
|
|
22
23
|
def is_optional_param(op_arg):
|
|
@@ -163,11 +164,11 @@ def tuple_input_to_cpp_type(dtype: str):
|
|
|
163
164
|
'tuple[float]': 'float',
|
|
164
165
|
'tuple[bool]': 'bool',
|
|
165
166
|
'tuple[str]': 'string',
|
|
166
|
-
'tuple[tensor]': 'TensorPtr',
|
|
167
|
+
'tuple[tensor]': 'mindspore::tensor::TensorPtr',
|
|
167
168
|
'list[int]': 'int64_t',
|
|
168
169
|
'list[float]': 'float',
|
|
169
170
|
'list[bool]': 'bool',
|
|
170
|
-
'list[tensor]': 'TensorPtr',
|
|
171
|
+
'list[tensor]': 'mindspore::tensor::TensorPtr',
|
|
171
172
|
}
|
|
172
173
|
return types_map.get(dtype)
|
|
173
174
|
|
|
@@ -187,14 +188,14 @@ def get_input_dtype(dtype: str, optional):
|
|
|
187
188
|
Convert type
|
|
188
189
|
"""
|
|
189
190
|
# add more type here
|
|
190
|
-
value_tuple = 'ValueTuplePtr'
|
|
191
|
+
value_tuple = 'mindspore::ValueTuplePtr'
|
|
191
192
|
type_convert = {
|
|
192
|
-
'int': 'Int64ImmPtr',
|
|
193
|
-
'float': 'FP32ImmPtr',
|
|
194
|
-
'bool': 'BoolImmPtr',
|
|
195
|
-
'number': 'ScalarPtr',
|
|
196
|
-
'str': 'StringImmPtr',
|
|
197
|
-
'tensor': 'BaseTensorPtr',
|
|
193
|
+
'int': 'mindspore::Int64ImmPtr',
|
|
194
|
+
'float': 'mindspore::FP32ImmPtr',
|
|
195
|
+
'bool': 'mindspore::BoolImmPtr',
|
|
196
|
+
'number': 'mindspore::ScalarPtr',
|
|
197
|
+
'str': 'mindspore::StringImmPtr',
|
|
198
|
+
'tensor': 'mindspore::tensor::BaseTensorPtr',
|
|
198
199
|
'tuple[int]': value_tuple,
|
|
199
200
|
'tuple[float]': value_tuple,
|
|
200
201
|
'tuple[bool]': value_tuple,
|
|
@@ -204,14 +205,14 @@ def get_input_dtype(dtype: str, optional):
|
|
|
204
205
|
'list[bool]': value_tuple,
|
|
205
206
|
'list[tensor]': value_tuple,
|
|
206
207
|
}
|
|
207
|
-
value_tuple_optional = 'std::optional<ValueTuplePtr>'
|
|
208
|
+
value_tuple_optional = 'std::optional<mindspore::ValueTuplePtr>'
|
|
208
209
|
optional_type_convert = {
|
|
209
|
-
'int': 'std::optional<Int64ImmPtr>',
|
|
210
|
-
'float': 'std::optional<FP32ImmPtr>',
|
|
211
|
-
'bool': 'std::optional<BoolImmPtr>',
|
|
212
|
-
'number': 'std::optional<ScalarPtr>',
|
|
213
|
-
'str': 'std::optional<StringImmPtr>',
|
|
214
|
-
'tensor': 'std::optional<BaseTensorPtr>',
|
|
210
|
+
'int': 'std::optional<mindspore::Int64ImmPtr>',
|
|
211
|
+
'float': 'std::optional<mindspore::FP32ImmPtr>',
|
|
212
|
+
'bool': 'std::optional<mindspore::BoolImmPtr>',
|
|
213
|
+
'number': 'std::optional<mindspore::ScalarPtr>',
|
|
214
|
+
'str': 'std::optional<mindspore::StringImmPtr>',
|
|
215
|
+
'tensor': 'std::optional<mindspore::tensor::BaseTensorPtr>',
|
|
215
216
|
'tuple[int]': value_tuple_optional,
|
|
216
217
|
'tuple[float]': value_tuple_optional,
|
|
217
218
|
'tuple[bool]': value_tuple_optional,
|
|
@@ -239,9 +240,9 @@ def get_return_type(dtype: str):
|
|
|
239
240
|
"""
|
|
240
241
|
# add more type here
|
|
241
242
|
type_convert = {
|
|
242
|
-
'tuple[tensor]': 'std::vector<tensor::TensorPtr>',
|
|
243
|
-
'list[tensor]': 'std::vector<tensor::TensorPtr>',
|
|
244
|
-
'tensor': 'tensor::TensorPtr',
|
|
243
|
+
'tuple[tensor]': 'std::vector<mindspore::tensor::TensorPtr>',
|
|
244
|
+
'list[tensor]': 'std::vector<mindspore::tensor::TensorPtr>',
|
|
245
|
+
'tensor': 'mindspore::tensor::TensorPtr',
|
|
245
246
|
}
|
|
246
247
|
if dtype in type_convert:
|
|
247
248
|
return type_convert[dtype]
|
|
@@ -266,11 +267,10 @@ def get_op_name(operator_name, class_def):
|
|
|
266
267
|
"""
|
|
267
268
|
Get op name for python class Primitive or c++ OpDef name.
|
|
268
269
|
"""
|
|
270
|
+
if class_def:
|
|
271
|
+
return class_def
|
|
272
|
+
|
|
269
273
|
class_name = ''.join(word.capitalize() for word in operator_name.split('_'))
|
|
270
|
-
if class_def is not None:
|
|
271
|
-
item = class_def.get("name")
|
|
272
|
-
if item is not None:
|
|
273
|
-
class_name = item
|
|
274
274
|
return class_name
|
|
275
275
|
|
|
276
276
|
|
|
@@ -278,10 +278,6 @@ def get_pyboost_name(operator_name):
|
|
|
278
278
|
return 'pyboost_' + operator_name
|
|
279
279
|
|
|
280
280
|
|
|
281
|
-
def convert_python_func_name_to_c(func_name: str) -> str:
|
|
282
|
-
return ''.join(word.capitalize() for word in func_name.split('_'))
|
|
283
|
-
|
|
284
|
-
|
|
285
281
|
def get_const_number_convert(arg_name, op_arg):
|
|
286
282
|
cpp_type = number_input_to_cpp_type(op_arg.arg_dtype)
|
|
287
283
|
if op_arg.is_type_id:
|
|
@@ -297,8 +293,8 @@ def get_tuple_input_convert(arg_name, arg_type):
|
|
|
297
293
|
:return:
|
|
298
294
|
"""
|
|
299
295
|
cpp_type = tuple_input_to_cpp_type(arg_type)
|
|
300
|
-
if cpp_type == "TensorPtr":
|
|
301
|
-
cpp_type = "BaseTensorPtr"
|
|
296
|
+
if cpp_type == "mindspore::tensor::TensorPtr":
|
|
297
|
+
cpp_type = "mindspore::tensor::BaseTensorPtr"
|
|
302
298
|
return f"std::vector<{cpp_type}> {arg_name}_vector = ConvertValueTupleToVector<{cpp_type}>({arg_name});\n"
|
|
303
299
|
|
|
304
300
|
|
|
@@ -311,12 +307,52 @@ def is_pyboost_enable(operator_data):
|
|
|
311
307
|
return False
|
|
312
308
|
|
|
313
309
|
|
|
310
|
+
def format_func_api_name(func_api_name):
|
|
311
|
+
"""
|
|
312
|
+
Converts a snake_case string to PascalCase format with the first letter capitalized.
|
|
313
|
+
Additionally, it preserves the trailing underscore. In special cases, such as double
|
|
314
|
+
underscore names (e.g., __add__), it converts them into PascalCase.
|
|
315
|
+
|
|
316
|
+
Args:
|
|
317
|
+
func_api_name (str): The input snake_case string.
|
|
318
|
+
|
|
319
|
+
Returns:
|
|
320
|
+
str: The converted PascalCase string.
|
|
321
|
+
"""
|
|
322
|
+
# Check if the string ends with '_'
|
|
323
|
+
is_one_underscore = func_api_name.endswith('_')
|
|
324
|
+
|
|
325
|
+
# Check if it is a double-underscore name (special method names)
|
|
326
|
+
is_double_underscore = func_api_name.startswith('__') and func_api_name.endswith('__')
|
|
327
|
+
|
|
328
|
+
# If it is a double-underscore name, remove the leading and trailing underscores
|
|
329
|
+
if is_double_underscore:
|
|
330
|
+
func_api_name = func_api_name[2:-2]
|
|
331
|
+
|
|
332
|
+
# If the original name ends with '_' but is not a double-underscore name, remove the trailing '_'
|
|
333
|
+
if is_one_underscore and not is_double_underscore:
|
|
334
|
+
func_api_name = func_api_name[:-1]
|
|
335
|
+
|
|
336
|
+
# Convert snake_case to PascalCase
|
|
337
|
+
formatted_func_api_name = ''.join(x.capitalize() for x in func_api_name.split('_'))
|
|
338
|
+
|
|
339
|
+
# If the original name ends with '_' but is not a double-underscore name, append the trailing underscore
|
|
340
|
+
if is_one_underscore and not is_double_underscore:
|
|
341
|
+
formatted_func_api_name += '_'
|
|
342
|
+
|
|
343
|
+
# If the original name is a double-underscore name, add a 'Magic' suffix.
|
|
344
|
+
if is_double_underscore:
|
|
345
|
+
formatted_func_api_name += 'Magic'
|
|
346
|
+
|
|
347
|
+
return formatted_func_api_name
|
|
348
|
+
|
|
349
|
+
|
|
314
350
|
def convert_types(inputs):
|
|
315
351
|
'''convert type to acl type'''
|
|
316
352
|
inputs_dtypes = {}
|
|
317
353
|
flag = False
|
|
318
354
|
for i in inputs:
|
|
319
|
-
inputs_dtypes[i] =
|
|
355
|
+
inputs_dtypes[i] = i.arg_dtype
|
|
320
356
|
if inputs_dtypes[i] != 'tensor':
|
|
321
357
|
flag = True
|
|
322
358
|
if 'tuple' in inputs_dtypes[i]:
|
|
@@ -338,16 +374,39 @@ def convert_types(inputs):
|
|
|
338
374
|
return inputs_dtypes, flag
|
|
339
375
|
|
|
340
376
|
|
|
341
|
-
def get_dtypes(
|
|
377
|
+
def get_dtypes(op_proto: OpProto):
|
|
342
378
|
"""get op inputs and outputs dtypes"""
|
|
343
|
-
inputs =
|
|
344
|
-
outputs =
|
|
379
|
+
inputs = op_proto.op_args
|
|
380
|
+
outputs = op_proto.op_returns
|
|
345
381
|
inputs_dtypes, flag_in = convert_types(inputs)
|
|
346
382
|
outputs_dtypes, flag_out = convert_types(outputs)
|
|
347
383
|
none_tensor_exist = (flag_in or flag_out)
|
|
348
384
|
return inputs_dtypes, outputs_dtypes, none_tensor_exist
|
|
349
385
|
|
|
350
386
|
|
|
387
|
+
def merge_strings_by_chunk_size(string_list, chunk_size=50):
|
|
388
|
+
"""
|
|
389
|
+
Merges a list of strings into smaller chunks, with each chunk having a specified maximum size.
|
|
390
|
+
|
|
391
|
+
Args:
|
|
392
|
+
string_list (list of str): A list of strings to be merged.
|
|
393
|
+
chunk_size (int, optional): The maximum size of each merged chunk. Defaults to 50.
|
|
394
|
+
|
|
395
|
+
Returns:
|
|
396
|
+
list of str: A list of merged strings, where each string contains up to `chunk_size` characters.
|
|
397
|
+
|
|
398
|
+
Example:
|
|
399
|
+
>>> strings = ["Hello", "world", "this", "is", "a", "test"]
|
|
400
|
+
>>> merge_strings_by_chunk_size(strings, chunk_size=2)
|
|
401
|
+
['Helloworld', 'thisis', 'atest']
|
|
402
|
+
"""
|
|
403
|
+
merged_strings = [
|
|
404
|
+
"".join(string_list[i:i + chunk_size]) # Merge the current grouped string
|
|
405
|
+
for i in range(0, len(string_list), chunk_size)
|
|
406
|
+
]
|
|
407
|
+
return merged_strings
|
|
408
|
+
|
|
409
|
+
|
|
351
410
|
class AclnnUtils:
|
|
352
411
|
"""
|
|
353
412
|
aclnn utils
|