mindspore 2.1.0__cp37-cp37m-manylinux1_x86_64.whl → 2.2.11__cp37-cp37m-manylinux1_x86_64.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.
- mindspore/.commit_id +1 -1
- mindspore/__init__.py +4 -1
- mindspore/_akg/akg/build_module.py +5 -6
- mindspore/_akg/akg/composite/build_module.py +139 -22
- mindspore/_akg/akg/composite/split_stitch.py +10 -11
- mindspore/_akg/akg/ms/info_version_adapt.py +67 -1
- mindspore/_akg/akg/tvm/api.py +4 -3
- mindspore/_akg/akg/tvm/autotvm/__init__.py +1 -2
- mindspore/_akg/akg/tvm/autotvm/graph_tuner/base_graph_tuner.py +1 -5
- mindspore/_akg/akg/tvm/autotvm/measure/__init__.py +1 -1
- mindspore/_akg/akg/tvm/autotvm/measure/measure.py +1 -10
- mindspore/_akg/akg/tvm/autotvm/measure/measure_methods.py +1 -372
- mindspore/_akg/akg/tvm/build_module.py +16 -1
- mindspore/_akg/akg/tvm/contrib/graph_runtime.py +0 -53
- mindspore/_akg/akg/tvm/hybrid/parser.py +7 -6
- mindspore/_akg/akg/tvm/ir_builder.py +1 -1
- mindspore/_akg/akg/tvm/module.py +1 -2
- mindspore/_akg/akg/tvm/stmt.py +2 -2
- mindspore/_akg/akg/utils/ascend_profilier/cann_file_parser.py +76 -0
- mindspore/_akg/akg/utils/ascend_profilier/file_manager.py +56 -0
- mindspore/_akg/akg/utils/ascend_profilier/op_summary_bean.py +23 -0
- mindspore/_akg/akg/utils/ascend_profilier/op_summary_headers.py +8 -0
- mindspore/_akg/akg/utils/ascend_profilier/op_summary_parser.py +42 -0
- mindspore/_akg/akg/utils/ascend_profilier/path_manager.py +65 -0
- mindspore/_akg/akg/utils/composite_op_helper.py +16 -12
- mindspore/_akg/akg/utils/dump_ascend_meta.py +22 -3
- mindspore/_akg/akg/utils/kernel_exec.py +98 -274
- mindspore/_akg/akg/utils/result_analysis.py +4 -24
- mindspore/_akg/akg/utils/tbe_codegen_utils.py +219 -0
- mindspore/_akg/akg/utils/util.py +56 -1
- mindspore/_c_dataengine.cpython-37m-x86_64-linux-gnu.so +0 -0
- mindspore/_c_expression.cpython-37m-x86_64-linux-gnu.so +0 -0
- mindspore/_c_mindrecord.cpython-37m-x86_64-linux-gnu.so +0 -0
- mindspore/_check_jit_forbidden_api.py +3 -1
- mindspore/_checkparam.py +23 -29
- mindspore/_extends/graph_kernel/__init__.py +0 -1
- mindspore/_extends/graph_kernel/model/graph_split.py +84 -76
- mindspore/_extends/graph_kernel/model/model_builder.py +9 -50
- mindspore/_extends/graph_kernel/splitter.py +4 -11
- mindspore/_extends/parallel_compile/akg_compiler/akg_process.py +122 -15
- mindspore/_extends/parallel_compile/akg_compiler/build_tbe_kernel.py +84 -67
- mindspore/_extends/parallel_compile/akg_compiler/tbe_topi.py +4 -2
- mindspore/_extends/parallel_compile/akg_compiler/util.py +10 -7
- mindspore/_extends/parallel_compile/tbe_compiler/tbe_adapter.py +2 -2
- mindspore/_extends/parallel_compile/tbe_compiler/tbe_helper.py +6 -5
- mindspore/_extends/parallel_compile/tbe_compiler/tbe_job.py +1 -1
- mindspore/_extends/parallel_compile/tbe_compiler/tbe_job_manager.py +1 -1
- mindspore/_extends/parse/__init__.py +13 -15
- mindspore/_extends/parse/namespace.py +7 -33
- mindspore/_extends/parse/parser.py +67 -72
- mindspore/_extends/parse/resources.py +1 -1
- mindspore/_extends/parse/standard_method.py +86 -106
- mindspore/_extends/parse/trope.py +1 -1
- mindspore/_extends/remote/kernel_build_server.py +25 -7
- mindspore/_extends/remote/kernel_build_server_akg_v2.py +55 -0
- mindspore/_install_custom.py +43 -0
- mindspore/_mindspore_offline_debug.cpython-37m-x86_64-linux-gnu.so +0 -0
- mindspore/amp.py +47 -11
- mindspore/bin/cache_admin +0 -0
- mindspore/bin/cache_server +0 -0
- mindspore/boost/boost.py +1 -8
- mindspore/boost/boost_cell_wrapper.py +3 -2
- mindspore/boost/grad_accumulation.py +1 -1
- mindspore/boost/group_loss_scale_manager.py +8 -7
- mindspore/common/__init__.py +5 -3
- mindspore/common/_jit_fallback_utils.py +6 -0
- mindspore/common/_register_for_adapter.py +2 -0
- mindspore/common/_register_for_tensor.py +2 -2
- mindspore/common/_stub_tensor.py +13 -0
- mindspore/common/_utils.py +29 -0
- mindspore/common/api.py +174 -259
- mindspore/common/auto_dynamic_shape.py +494 -0
- mindspore/common/dtype.py +18 -11
- mindspore/common/dump.py +6 -4
- mindspore/common/initializer.py +14 -14
- mindspore/common/jit_config.py +33 -15
- mindspore/common/lazy_inline.py +126 -7
- mindspore/common/mindir_util.py +101 -0
- mindspore/common/parameter.py +51 -41
- mindspore/common/seed.py +4 -4
- mindspore/common/sparse_tensor.py +13 -14
- mindspore/common/tensor.py +243 -165
- mindspore/communication/__init__.py +7 -4
- mindspore/communication/_comm_helper.py +83 -4
- mindspore/communication/management.py +152 -84
- mindspore/config/op_info.config +14 -3
- mindspore/config/super_bar_config.json +4 -2
- mindspore/context.py +152 -61
- mindspore/dataset/__init__.py +5 -5
- mindspore/dataset/audio/__init__.py +2 -2
- mindspore/dataset/audio/transforms.py +52 -52
- mindspore/dataset/callback/ds_callback.py +16 -2
- mindspore/dataset/core/config.py +68 -51
- mindspore/dataset/engine/cache_client.py +33 -7
- mindspore/dataset/engine/datasets.py +250 -112
- mindspore/dataset/engine/datasets_audio.py +43 -211
- mindspore/dataset/engine/datasets_standard_format.py +16 -35
- mindspore/dataset/engine/datasets_text.py +43 -67
- mindspore/dataset/engine/datasets_user_defined.py +86 -100
- mindspore/dataset/engine/datasets_vision.py +219 -1029
- mindspore/dataset/engine/iterators.py +11 -4
- mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +4 -0
- mindspore/dataset/engine/obs/util.py +3 -0
- mindspore/dataset/engine/samplers.py +1 -1
- mindspore/dataset/engine/validators.py +19 -5
- mindspore/dataset/text/__init__.py +3 -3
- mindspore/dataset/text/transforms.py +101 -127
- mindspore/dataset/text/utils.py +205 -138
- mindspore/dataset/transforms/__init__.py +1 -1
- mindspore/dataset/transforms/py_transforms_util.py +40 -12
- mindspore/dataset/transforms/transforms.py +95 -40
- mindspore/dataset/utils/browse_dataset.py +8 -2
- mindspore/dataset/utils/line_reader.py +17 -19
- mindspore/dataset/vision/__init__.py +3 -3
- mindspore/dataset/vision/c_transforms.py +6 -3
- mindspore/dataset/vision/transforms.py +409 -287
- mindspore/dataset/vision/utils.py +13 -14
- mindspore/dataset/vision/validators.py +11 -1
- mindspore/experimental/map_parameter.py +14 -0
- mindspore/{nn/optim_ex → experimental/optim}/__init__.py +30 -29
- mindspore/{nn/optim_ex → experimental/optim}/adam.py +60 -67
- mindspore/{nn/optim_ex → experimental/optim}/adamw.py +181 -203
- mindspore/experimental/optim/lr_scheduler.py +1427 -0
- mindspore/{nn/optim_ex → experimental/optim}/optimizer.py +252 -259
- mindspore/{nn/optim_ex → experimental/optim}/sgd.py +147 -152
- mindspore/gen_ops.py +273 -0
- mindspore/include/OWNERS +0 -1
- mindspore/include/api/data_type.h +2 -1
- mindspore/include/api/graph.h +0 -15
- mindspore/include/api/kernel.h +2 -0
- mindspore/include/api/kernel_api.h +37 -12
- mindspore/include/api/model.h +17 -14
- mindspore/include/api/status.h +8 -3
- mindspore/include/api/types.h +37 -4
- mindspore/include/c_api/ms/abstract.h +67 -0
- mindspore/include/c_api/ms/attribute.h +197 -0
- mindspore/include/c_api/ms/base/handle_types.h +43 -0
- mindspore/include/c_api/ms/base/macros.h +32 -0
- mindspore/include/c_api/ms/base/status.h +33 -0
- mindspore/include/c_api/ms/base/types.h +282 -0
- mindspore/include/c_api/ms/context.h +102 -0
- mindspore/include/c_api/ms/graph.h +160 -0
- mindspore/include/c_api/ms/node.h +606 -0
- mindspore/include/c_api/ms/tensor.h +161 -0
- mindspore/include/c_api/ms/value.h +84 -0
- mindspore/include/dataset/constants.h +6 -5
- mindspore/include/dataset/execute.h +23 -13
- mindspore/include/dataset/text.h +26 -26
- mindspore/include/dataset/transforms.h +13 -13
- mindspore/include/dataset/vision.h +60 -60
- mindspore/include/dataset/vision_ascend.h +5 -6
- mindspore/include/dataset/vision_lite.h +17 -17
- mindspore/include/mindapi/base/type_id.h +1 -0
- mindspore/include/mindapi/base/types.h +1 -0
- mindspore/lib/libdnnl.so.2 +0 -0
- mindspore/lib/libjemalloc.so.2 +0 -0
- mindspore/lib/libmindspore.so +0 -0
- mindspore/lib/libmindspore_backend.so +0 -0
- mindspore/lib/libmindspore_common.so +0 -0
- mindspore/lib/libmindspore_core.so +0 -0
- mindspore/lib/libmindspore_glog.so.0 +0 -0
- mindspore/lib/libmindspore_gpr.so.15 +0 -0
- mindspore/lib/libmindspore_grpc++.so.1 +0 -0
- mindspore/lib/libmindspore_grpc.so.15 +0 -0
- mindspore/lib/libmindspore_shared_lib.so +0 -0
- mindspore/lib/libnnacl.so +0 -0
- mindspore/lib/libopencv_core.so.4.5 +0 -0
- mindspore/lib/libopencv_imgcodecs.so.4.5 +0 -0
- mindspore/lib/libopencv_imgproc.so.4.5 +0 -0
- mindspore/lib/libps_cache.so +0 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/config/ascend310/aic-ascend310-ops-info.json +123 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/config/ascend310p/aic-ascend310p-ops-info.json +123 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/config/ascend910/aic-ascend910-ops-info.json +158 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/config/ascend910b/aic-ascend910b-ops-info.json +37 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/custom_aicore_ops_impl/add_dsl.py +46 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/custom_aicore_ops_impl/add_tik.py +51 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/custom_aicore_ops_impl/kv_cache_mgr.py +241 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/custom_aicore_ops_impl/matmul_tik.py +212 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/vector_core/tbe/custom_aicore_ops_impl/add_dsl.py +46 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/vector_core/tbe/custom_aicore_ops_impl/add_tik.py +51 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/vector_core/tbe/custom_aicore_ops_impl/kv_cache_mgr.py +241 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/vector_core/tbe/custom_aicore_ops_impl/matmul_tik.py +212 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_proto/libop_proto.so +0 -0
- mindspore/lib/plugin/ascend/custom_aicpu_ops/op_impl/cpu/aicpu_kernel/impl/libcust_aicpu_kernels.so +0 -0
- mindspore/lib/plugin/ascend/custom_aicpu_ops/op_impl/cpu/aicpu_kernel/impl/libcust_cpu_kernels.so +0 -0
- mindspore/lib/plugin/ascend/custom_aicpu_ops/op_impl/cpu/config/cust_aicpu_kernel.json +8998 -0
- mindspore/lib/plugin/ascend/custom_aicpu_ops/op_proto/libcust_op_proto.so +0 -0
- mindspore/lib/plugin/ascend/libakg.so +0 -0
- mindspore/lib/plugin/ascend/libascend_collective.so +0 -0
- mindspore/lib/plugin/ascend/libdvpp_utils.so +0 -0
- mindspore/lib/plugin/ascend/libhccl_plugin.so +0 -0
- mindspore/lib/plugin/ascend/libmindspore_aicpu_kernels.so +0 -0
- mindspore/lib/plugin/ascend/libmindspore_cpu_kernels.so +0 -0
- mindspore/lib/plugin/cpu/libakg.so +0 -0
- mindspore/lib/plugin/gpu/libcuda_ops.so.10 +0 -0
- mindspore/lib/plugin/gpu/libcuda_ops.so.11 +0 -0
- mindspore/lib/plugin/gpu10.1/libakg.so +0 -0
- mindspore/lib/plugin/gpu10.1/libnccl.so.2 +0 -0
- mindspore/lib/plugin/gpu11.1/libakg.so +0 -0
- mindspore/lib/plugin/gpu11.1/libnccl.so.2 +0 -0
- mindspore/lib/plugin/gpu11.6/libakg.so +0 -0
- mindspore/lib/plugin/gpu11.6/libnccl.so.2 +0 -0
- mindspore/lib/plugin/libmindspore_ascend.so.1 +0 -0
- mindspore/lib/plugin/libmindspore_ascend.so.2 +0 -0
- mindspore/lib/plugin/libmindspore_gpu.so.10.1 +0 -0
- mindspore/lib/plugin/libmindspore_gpu.so.11.1 +0 -0
- mindspore/lib/plugin/libmindspore_gpu.so.11.6 +0 -0
- mindspore/mindrecord/tools/imagenet_to_mr.py +1 -1
- mindspore/mindrecord/tools/mnist_to_mr.py +2 -2
- mindspore/nn/__init__.py +0 -2
- mindspore/nn/cell.py +313 -74
- mindspore/nn/dynamic_lr.py +21 -21
- mindspore/nn/layer/activation.py +22 -30
- mindspore/nn/layer/basic.py +15 -13
- mindspore/nn/layer/channel_shuffle.py +1 -1
- mindspore/nn/layer/container.py +271 -9
- mindspore/nn/layer/conv.py +323 -204
- mindspore/nn/layer/dense.py +8 -5
- mindspore/nn/layer/embedding.py +33 -27
- mindspore/nn/layer/flash_attention.py +61 -95
- mindspore/nn/layer/image.py +8 -6
- mindspore/nn/layer/math.py +16 -25
- mindspore/nn/layer/normalization.py +107 -66
- mindspore/nn/layer/padding.py +1 -1
- mindspore/nn/layer/pooling.py +131 -109
- mindspore/nn/layer/rnn_cells.py +27 -22
- mindspore/nn/layer/rnns.py +13 -16
- mindspore/nn/layer/thor_layer.py +1 -1
- mindspore/nn/layer/transformer.py +221 -154
- mindspore/nn/learning_rate_schedule.py +9 -1
- mindspore/nn/loss/loss.py +235 -174
- mindspore/nn/optim/ada_grad.py +2 -1
- mindspore/nn/optim/adadelta.py +1 -0
- mindspore/nn/optim/adafactor.py +2 -1
- mindspore/nn/optim/adam.py +7 -4
- mindspore/nn/optim/adamax.py +3 -2
- mindspore/nn/optim/adasum.py +2 -2
- mindspore/nn/optim/asgd.py +2 -3
- mindspore/nn/optim/ftrl.py +6 -5
- mindspore/nn/optim/lamb.py +7 -4
- mindspore/nn/optim/lars.py +1 -1
- mindspore/nn/optim/lazyadam.py +5 -3
- mindspore/nn/optim/momentum.py +2 -1
- mindspore/nn/optim/optimizer.py +53 -4
- mindspore/nn/optim/proximal_ada_grad.py +3 -4
- mindspore/nn/optim/rmsprop.py +4 -3
- mindspore/nn/optim/rprop.py +23 -12
- mindspore/nn/optim/sgd.py +26 -11
- mindspore/nn/optim/thor.py +9 -7
- mindspore/nn/probability/bijector/bijector.py +5 -5
- mindspore/nn/probability/bijector/power_transform.py +27 -27
- mindspore/nn/probability/bijector/softplus.py +3 -3
- mindspore/nn/probability/distribution/_utils/custom_ops.py +3 -3
- mindspore/nn/probability/distribution/bernoulli.py +5 -5
- mindspore/nn/probability/distribution/beta.py +3 -3
- mindspore/nn/probability/distribution/categorical.py +7 -7
- mindspore/nn/probability/distribution/cauchy.py +0 -1
- mindspore/nn/probability/distribution/distribution.py +3 -3
- mindspore/nn/probability/distribution/gamma.py +3 -3
- mindspore/nn/probability/distribution/geometric.py +4 -4
- mindspore/nn/probability/distribution/gumbel.py +4 -4
- mindspore/nn/probability/distribution/log_normal.py +2 -2
- mindspore/nn/probability/distribution/logistic.py +2 -2
- mindspore/nn/probability/distribution/poisson.py +4 -4
- mindspore/nn/probability/distribution/transformed_distribution.py +3 -3
- mindspore/nn/probability/distribution/uniform.py +6 -6
- mindspore/nn/wrap/__init__.py +4 -2
- mindspore/nn/wrap/cell_wrapper.py +87 -34
- mindspore/nn/wrap/grad_reducer.py +8 -5
- mindspore/nn/wrap/loss_scale.py +105 -42
- mindspore/numpy/array_creations.py +1 -2
- mindspore/numpy/array_ops.py +3 -2
- mindspore/numpy/utils_const.py +5 -5
- mindspore/offline_debug/convert_async.py +2 -2
- mindspore/ops/_grad_experimental/__init__.py +0 -5
- mindspore/ops/_grad_experimental/grad_array_ops.py +2 -3
- mindspore/ops/_grad_experimental/grad_comm_ops.py +15 -2
- mindspore/ops/_grad_experimental/grad_debug_ops.py +0 -37
- mindspore/ops/_grad_experimental/grad_implementations.py +11 -1
- mindspore/ops/_grad_experimental/grad_inner_ops.py +2 -216
- mindspore/ops/_grad_experimental/grad_math_ops.py +19 -199
- mindspore/ops/_grad_experimental/grad_sparse.py +15 -0
- mindspore/ops/_grad_experimental/grad_sparse_ops.py +3 -3
- mindspore/ops/_op_impl/_custom_op/dsd_back_impl.py +1 -1
- mindspore/ops/_op_impl/aicpu/__init__.py +14 -2
- mindspore/ops/_op_impl/aicpu/add.py +3 -3
- mindspore/ops/_op_impl/aicpu/bias_add_grad.py +0 -1
- mindspore/ops/_op_impl/aicpu/count_nonzero.py +43 -0
- mindspore/ops/_op_impl/{_custom_op/flash_attention/constants.py → aicpu/eps.py} +18 -27
- mindspore/ops/_op_impl/aicpu/gamma.py +2 -2
- mindspore/ops/_op_impl/aicpu/linear_sum_assignment.py +21 -2
- mindspore/ops/_op_impl/aicpu/log_uniform_candidate_sampler.py +6 -3
- mindspore/ops/_op_impl/aicpu/lu_unpack_grad.py +0 -1
- mindspore/ops/_op_impl/aicpu/multinomial.py +3 -3
- mindspore/ops/_op_impl/aicpu/parameterized_truncated_normal.py +15 -7
- mindspore/ops/_op_impl/aicpu/random_categorical.py +39 -19
- mindspore/ops/_op_impl/aicpu/random_choice_with_mask.py +5 -2
- mindspore/ops/_op_impl/aicpu/random_poisson.py +103 -52
- mindspore/ops/_op_impl/aicpu/random_shuffle.py +17 -15
- mindspore/ops/_op_impl/aicpu/{sparseaddmm.py → sparse_addmm.py} +2 -2
- mindspore/ops/_op_impl/aicpu/{sparsesparsemaximum.py → sparse_sparse_maximum.py} +4 -4
- mindspore/ops/_op_impl/aicpu/standard_laplace.py +5 -5
- mindspore/ops/_op_impl/aicpu/standard_normal.py +5 -5
- mindspore/ops/_op_impl/aicpu/truncated_normal.py +9 -7
- mindspore/ops/_op_impl/aicpu/uniform.py +5 -3
- mindspore/ops/_op_impl/aicpu/uniform_candidate_sampler.py +8 -4
- mindspore/ops/_op_impl/aicpu/uniform_int.py +5 -5
- mindspore/ops/_op_impl/aicpu/uniform_real.py +4 -4
- mindspore/ops/_op_impl/tbe/__init__.py +4 -4
- mindspore/ops/_op_impl/tbe/inplace_index_add.py +7 -3
- mindspore/ops/_op_impl/tbe/trans_data_ds.py +2 -0
- mindspore/ops/_primitive_cache.py +1 -1
- mindspore/ops/_tracefunc.py +45 -13
- mindspore/ops/_utils/utils.py +6 -1
- mindspore/ops/_vmap/vmap_array_ops.py +3 -3
- mindspore/ops/_vmap/vmap_base.py +3 -3
- mindspore/ops/_vmap/vmap_convolution_ops.py +1 -1
- mindspore/ops/_vmap/vmap_grad_math_ops.py +6 -4
- mindspore/ops/_vmap/vmap_math_ops.py +5 -2
- mindspore/ops/_vmap/vmap_nn_ops.py +61 -7
- mindspore/ops/arg_dtype_cast.py +54 -0
- mindspore/ops/composite/base.py +37 -10
- mindspore/ops/composite/math_ops.py +5 -4
- mindspore/ops/composite/multitype_ops/_compile_utils.py +275 -73
- mindspore/ops/composite/multitype_ops/_constexpr_utils.py +16 -9
- mindspore/ops/composite/multitype_ops/add_impl.py +43 -4
- mindspore/ops/composite/multitype_ops/getitem_impl.py +42 -4
- mindspore/ops/composite/multitype_ops/ones_like_impl.py +6 -0
- mindspore/ops/composite/multitype_ops/setitem_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/zeros_like_impl.py +9 -0
- mindspore/ops/deprecated.py +304 -0
- mindspore/ops/function/__init__.py +4 -1
- mindspore/ops/function/array_func.py +174 -193
- mindspore/ops/function/clip_func.py +81 -13
- mindspore/ops/function/debug_func.py +1 -1
- mindspore/ops/function/grad/grad_func.py +18 -9
- mindspore/ops/function/image_func.py +10 -4
- mindspore/ops/function/linalg_func.py +5 -5
- mindspore/ops/function/math_func.py +575 -386
- mindspore/ops/function/nn_func.py +568 -260
- mindspore/ops/function/random_func.py +88 -57
- mindspore/ops/function/sparse_func.py +1 -1
- mindspore/ops/function/sparse_unary_func.py +14 -12
- mindspore/ops/function/vmap_func.py +6 -5
- mindspore/ops/functional.py +15 -10
- mindspore/ops/op_info_register.py +244 -25
- mindspore/ops/operations/__init__.py +31 -19
- mindspore/ops/operations/_grad_ops.py +71 -7
- mindspore/ops/operations/_inner_ops.py +350 -17
- mindspore/ops/operations/_quant_ops.py +4 -8
- mindspore/ops/operations/_sequence_ops.py +42 -0
- mindspore/ops/operations/array_ops.py +68 -282
- mindspore/ops/operations/comm_ops.py +107 -59
- mindspore/ops/operations/custom_ops.py +94 -70
- mindspore/ops/operations/debug_ops.py +8 -4
- mindspore/ops/operations/image_ops.py +18 -12
- mindspore/ops/operations/inner_ops.py +26 -3
- mindspore/ops/operations/math_ops.py +192 -144
- mindspore/ops/operations/nn_ops.py +857 -489
- mindspore/ops/operations/other_ops.py +0 -22
- mindspore/ops/operations/random_ops.py +53 -111
- mindspore/ops/operations/sparse_ops.py +3 -1
- mindspore/ops/primitive.py +24 -18
- mindspore/parallel/_auto_parallel_context.py +68 -8
- mindspore/parallel/_cost_model_context.py +2 -2
- mindspore/parallel/_offload_context.py +17 -3
- mindspore/parallel/_parallel_serialization.py +12 -5
- mindspore/parallel/_ps_context.py +12 -0
- mindspore/parallel/_tensor.py +18 -13
- mindspore/parallel/_transformer/layers.py +5 -3
- mindspore/parallel/_transformer/loss.py +1 -0
- mindspore/parallel/_transformer/moe.py +2 -2
- mindspore/parallel/_transformer/op_parallel_config.py +12 -1
- mindspore/parallel/_transformer/transformer.py +23 -3
- mindspore/parallel/_utils.py +11 -7
- mindspore/parallel/algo_parameter_config.py +85 -5
- mindspore/parallel/checkpoint_transform.py +19 -12
- mindspore/parallel/shard.py +21 -14
- mindspore/profiler/common/struct_type.py +3 -3
- mindspore/profiler/common/util.py +4 -2
- mindspore/profiler/envprofiling.py +1 -1
- mindspore/profiler/parser/aicpu_data_parser.py +5 -3
- mindspore/profiler/parser/ascend_flops_generator.py +2 -2
- mindspore/profiler/parser/ascend_fpbp_generator.py +1 -1
- mindspore/profiler/parser/ascend_hccl_generator.py +249 -12
- mindspore/profiler/parser/ascend_msprof_exporter.py +150 -255
- mindspore/profiler/parser/ascend_msprof_generator.py +204 -17
- mindspore/profiler/parser/ascend_op_generator.py +6 -6
- mindspore/profiler/parser/ascend_steptrace_generator.py +6 -4
- mindspore/profiler/parser/ascend_timeline_generator.py +14 -187
- mindspore/profiler/parser/base_timeline_generator.py +10 -8
- mindspore/profiler/parser/cpu_gpu_timeline_generator.py +16 -12
- mindspore/profiler/parser/flops_parser.py +15 -11
- mindspore/profiler/parser/framework_parser.py +38 -22
- mindspore/profiler/parser/hccl_parser.py +16 -12
- mindspore/profiler/parser/integrator.py +22 -11
- mindspore/profiler/parser/memory_usage_parser.py +2 -2
- mindspore/profiler/parser/minddata_analyzer.py +12 -14
- mindspore/profiler/parser/minddata_pipeline_parser.py +1 -1
- mindspore/profiler/parser/msadvisor_parser.py +8 -4
- mindspore/profiler/parser/op_intermediate_parser.py +5 -2
- mindspore/profiler/parser/optime_parser.py +1 -1
- mindspore/profiler/parser/profiler_info.py +21 -2
- mindspore/profiler/parser/step_trace_parser.py +11 -14
- mindspore/profiler/profiling.py +179 -89
- mindspore/rewrite/api/node.py +102 -19
- mindspore/rewrite/api/node_type.py +5 -1
- mindspore/rewrite/api/pattern_engine.py +1 -1
- mindspore/rewrite/api/scoped_value.py +9 -17
- mindspore/rewrite/api/symbol_tree.py +131 -47
- mindspore/rewrite/ast_helpers/__init__.py +2 -1
- mindspore/rewrite/ast_helpers/ast_finder.py +129 -0
- mindspore/rewrite/ast_helpers/ast_modifier.py +116 -104
- mindspore/rewrite/ast_transformers/flatten_recursive_stmt.py +93 -46
- mindspore/rewrite/common/rewrite_elog.py +5 -1
- mindspore/rewrite/namer.py +33 -24
- mindspore/rewrite/namespace.py +14 -5
- mindspore/{_extends/graph_kernel/expanders/complex → rewrite/node}/__init__.py +9 -9
- mindspore/rewrite/node/call_function.py +79 -0
- mindspore/rewrite/node/cell_container.py +135 -0
- mindspore/rewrite/node/control_flow.py +88 -0
- mindspore/rewrite/{node.py → node/node.py} +273 -234
- mindspore/rewrite/node/node_manager.py +254 -0
- mindspore/rewrite/{topological_manager.py → node/node_topological_manager.py} +13 -46
- mindspore/rewrite/parsers/arguments_parser.py +22 -21
- mindspore/rewrite/parsers/assign_parser.py +216 -221
- mindspore/rewrite/parsers/attribute_parser.py +9 -7
- mindspore/rewrite/parsers/class_def_parser.py +174 -113
- mindspore/rewrite/parsers/constant_parser.py +9 -6
- mindspore/rewrite/parsers/container_parser.py +9 -7
- mindspore/rewrite/parsers/for_parser.py +42 -21
- mindspore/rewrite/parsers/function_def_parser.py +24 -16
- mindspore/rewrite/parsers/if_parser.py +28 -24
- mindspore/rewrite/parsers/module_parser.py +196 -25
- mindspore/rewrite/{parser.py → parsers/parser.py} +4 -2
- mindspore/rewrite/{parser_register.py → parsers/parser_register.py} +1 -1
- mindspore/rewrite/parsers/return_parser.py +6 -6
- mindspore/rewrite/sparsify/sparse_transformer.py +12 -3
- mindspore/rewrite/sparsify/utils.py +1 -1
- mindspore/rewrite/symbol_tree.py +523 -578
- mindspore/rewrite/symbol_tree_builder.py +9 -193
- mindspore/rewrite/symbol_tree_dumper.py +2 -2
- mindspore/run_check/_check_version.py +6 -4
- mindspore/{ops/bprop_mindir → safeguard}/__init__.py +4 -3
- mindspore/safeguard/rewrite_obfuscation.py +541 -0
- mindspore/scipy/linalg.py +1 -1
- mindspore/scipy/ops.py +55 -5
- mindspore/scipy/optimize/__init__.py +3 -2
- mindspore/scipy/optimize/linear_sum_assignment.py +38 -33
- mindspore/scipy/optimize/minimize.py +7 -3
- mindspore/train/_utils.py +7 -3
- mindspore/train/amp.py +323 -123
- mindspore/train/anf_ir_pb2.py +14 -2
- mindspore/train/callback/_backup_and_restore.py +2 -12
- mindspore/train/callback/_callback.py +29 -4
- mindspore/train/callback/_checkpoint.py +23 -8
- mindspore/train/callback/_early_stop.py +2 -2
- mindspore/train/callback/_landscape.py +4 -4
- mindspore/train/callback/_loss_monitor.py +2 -2
- mindspore/train/callback/_on_request_exit.py +2 -2
- mindspore/train/callback/_reduce_lr_on_plateau.py +3 -4
- mindspore/train/callback/_summary_collector.py +15 -8
- mindspore/train/callback/_time_monitor.py +58 -5
- mindspore/train/data_sink.py +5 -11
- mindspore/train/dataset_helper.py +84 -57
- mindspore/train/loss_scale_manager.py +2 -2
- mindspore/train/metrics/__init__.py +3 -3
- mindspore/train/metrics/cosine_similarity.py +1 -1
- mindspore/train/metrics/hausdorff_distance.py +3 -2
- mindspore/train/metrics/mean_surface_distance.py +3 -2
- mindspore/train/metrics/metric.py +39 -19
- mindspore/train/metrics/roc.py +2 -2
- mindspore/train/metrics/root_mean_square_surface_distance.py +4 -3
- mindspore/train/mind_ir_pb2.py +85 -36
- mindspore/train/model.py +187 -47
- mindspore/train/serialization.py +487 -161
- mindspore/train/summary/_summary_adapter.py +1 -1
- mindspore/train/summary/_writer_pool.py +3 -2
- mindspore/train/summary/summary_record.py +37 -17
- mindspore/train/train_thor/convert_utils.py +3 -3
- mindspore/train/train_thor/dataset_helper.py +1 -1
- mindspore/version.py +1 -1
- {mindspore-2.1.0.dist-info → mindspore-2.2.11.dist-info}/METADATA +8 -8
- {mindspore-2.1.0.dist-info → mindspore-2.2.11.dist-info}/RECORD +488 -539
- {mindspore-2.1.0.dist-info → mindspore-2.2.11.dist-info}/entry_points.txt +0 -1
- mindspore/_akg/akg/tvm/contrib/debugger/__init__.py +0 -16
- mindspore/_akg/akg/tvm/contrib/debugger/debug_result.py +0 -274
- mindspore/_akg/akg/tvm/contrib/debugger/debug_runtime.py +0 -259
- mindspore/_akg/akg/tvm/contrib/peak.py +0 -341
- mindspore/_akg/akg/tvm/contrib/rpc.py +0 -25
- mindspore/_akg/akg/tvm/contrib/xcode.py +0 -257
- mindspore/_akg/akg/tvm/exec/__init__.py +0 -17
- mindspore/_akg/akg/tvm/exec/autotvm_log_editor.py +0 -60
- mindspore/_akg/akg/tvm/exec/measure_peak.py +0 -48
- mindspore/_akg/akg/tvm/exec/query_rpc_tracker.py +0 -48
- mindspore/_akg/akg/tvm/exec/rpc_proxy.py +0 -98
- mindspore/_akg/akg/tvm/exec/rpc_server.py +0 -88
- mindspore/_akg/akg/tvm/exec/rpc_tracker.py +0 -62
- mindspore/_akg/akg/tvm/rpc/__init__.py +0 -29
- mindspore/_akg/akg/tvm/rpc/base.py +0 -182
- mindspore/_akg/akg/tvm/rpc/client.py +0 -436
- mindspore/_akg/akg/tvm/rpc/proxy.py +0 -595
- mindspore/_akg/akg/tvm/rpc/server.py +0 -413
- mindspore/_akg/akg/tvm/rpc/tornado_util.py +0 -121
- mindspore/_akg/akg/tvm/rpc/tracker.py +0 -431
- mindspore/_extends/graph_kernel/expander.py +0 -80
- mindspore/_extends/graph_kernel/expanders/__init__.py +0 -54
- mindspore/_extends/graph_kernel/expanders/_utils.py +0 -269
- mindspore/_extends/graph_kernel/expanders/addn.py +0 -33
- mindspore/_extends/graph_kernel/expanders/batchnorm.py +0 -152
- mindspore/_extends/graph_kernel/expanders/batchnorm_grad.py +0 -105
- mindspore/_extends/graph_kernel/expanders/clip_by_norm_no_div_sum.py +0 -33
- mindspore/_extends/graph_kernel/expanders/complex/abs.py +0 -30
- mindspore/_extends/graph_kernel/expanders/complex/add.py +0 -44
- mindspore/_extends/graph_kernel/expanders/complex/div.py +0 -62
- mindspore/_extends/graph_kernel/expanders/complex/mul.py +0 -52
- mindspore/_extends/graph_kernel/expanders/complex/real_div.py +0 -62
- mindspore/_extends/graph_kernel/expanders/complex/sub.py +0 -45
- mindspore/_extends/graph_kernel/expanders/conv2d.py +0 -200
- mindspore/_extends/graph_kernel/expanders/dropout_grad.py +0 -30
- mindspore/_extends/graph_kernel/expanders/equal_count.py +0 -50
- mindspore/_extends/graph_kernel/expanders/erfc.py +0 -35
- mindspore/_extends/graph_kernel/expanders/expand_dims.py +0 -50
- mindspore/_extends/graph_kernel/expanders/fused_adam.py +0 -44
- mindspore/_extends/graph_kernel/expanders/fused_adam_weight_decay.py +0 -47
- mindspore/_extends/graph_kernel/expanders/fused_mul_add.py +0 -28
- mindspore/_extends/graph_kernel/expanders/gelu_grad.py +0 -70
- mindspore/_extends/graph_kernel/expanders/gkdropout.py +0 -40
- mindspore/_extends/graph_kernel/expanders/identity.py +0 -25
- mindspore/_extends/graph_kernel/expanders/layernorm.py +0 -93
- mindspore/_extends/graph_kernel/expanders/layernorm_grad.py +0 -113
- mindspore/_extends/graph_kernel/expanders/logsoftmax.py +0 -46
- mindspore/_extends/graph_kernel/expanders/logsoftmax_grad.py +0 -36
- mindspore/_extends/graph_kernel/expanders/matmul.py +0 -80
- mindspore/_extends/graph_kernel/expanders/maximum_grad.py +0 -59
- mindspore/_extends/graph_kernel/expanders/minimum_grad.py +0 -80
- mindspore/_extends/graph_kernel/expanders/oneslike.py +0 -26
- mindspore/_extends/graph_kernel/expanders/reduce_mean.py +0 -43
- mindspore/_extends/graph_kernel/expanders/relu_grad.py +0 -32
- mindspore/_extends/graph_kernel/expanders/sigmoid_cross_entropy_with_logits.py +0 -41
- mindspore/_extends/graph_kernel/expanders/sigmoid_cross_entropy_with_logits_grad.py +0 -35
- mindspore/_extends/graph_kernel/expanders/sigmoid_grad.py +0 -31
- mindspore/_extends/graph_kernel/expanders/slice.py +0 -35
- mindspore/_extends/graph_kernel/expanders/softmax_cross_entropy_with_logits.py +0 -42
- mindspore/_extends/graph_kernel/expanders/softmax_grad_ext.py +0 -41
- mindspore/_extends/graph_kernel/expanders/softsign.py +0 -28
- mindspore/_extends/graph_kernel/expanders/sqrt_grad.py +0 -29
- mindspore/_extends/graph_kernel/expanders/square_sum_all.py +0 -44
- mindspore/_extends/graph_kernel/expanders/square_sum_v1.py +0 -37
- mindspore/_extends/graph_kernel/expanders/squared_difference.py +0 -43
- mindspore/_extends/graph_kernel/expanders/tanh_grad.py +0 -31
- mindspore/_extends/graph_kernel/model/op_infer.py +0 -506
- mindspore/dataset/datapreprocess/__init__.py +0 -20
- mindspore/dataset/datapreprocess/preprocess_imagenet_validate_dataset.py +0 -54
- mindspore/include/api/net.h +0 -142
- mindspore/nn/lr_scheduler.py +0 -262
- mindspore/ops/_grad_experimental/grad_image_ops.py +0 -248
- mindspore/ops/_grad_experimental/grad_linalg_ops.py +0 -181
- mindspore/ops/_grad_experimental/grad_other_ops.py +0 -72
- mindspore/ops/_grad_experimental/grad_scalar_ops.py +0 -112
- mindspore/ops/_grad_experimental/grad_sequence_ops.py +0 -351
- mindspore/ops/_op_impl/_custom_op/flash_attention/attention.py +0 -350
- mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_bwd.py +0 -409
- mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_fwd.py +0 -578
- mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_impl.py +0 -199
- mindspore/ops/_op_impl/_custom_op/flash_attention/tik_ops_utils.py +0 -446
- mindspore/ops/_op_impl/_custom_op/flash_attention/tiling_strategy/__init__.py +0 -0
- mindspore/ops/_op_impl/_custom_op/flash_attention/tiling_strategy/sparse_tiling.py +0 -45
- mindspore/ops/_op_impl/_custom_op/flash_attention/tiling_strategy/strategy.py +0 -67
- mindspore/ops/_op_impl/_custom_op/flash_attention/tiling_strategy/wukong_tiling.py +0 -62
- mindspore/ops/bprop_mindir/BNTrainingReduce_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Broadcast_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Depend_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/DepthwiseConv2dNative_bprop.mindir +0 -138
- mindspore/ops/bprop_mindir/EmbeddingLookup_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Load_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/ScatterNonAliasingAdd_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/SparseGatherV2_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/SparseSoftmaxCrossEntropyWithLogits_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Switch_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/TransShape_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/TupleGetItem_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Unique_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Unstack_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/generate_mindir.py +0 -114
- mindspore/rewrite/node_visitor.py +0 -44
- /mindspore/{ops/_op_impl/_custom_op/flash_attention → _akg/akg/utils/ascend_profilier}/__init__.py +0 -0
- {mindspore-2.1.0.dist-info → mindspore-2.2.11.dist-info}/WHEEL +0 -0
- {mindspore-2.1.0.dist-info → mindspore-2.2.11.dist-info}/top_level.txt +0 -0
|
@@ -1,341 +0,0 @@
|
|
|
1
|
-
# Licensed to the Apache Software Foundation (ASF) under one
|
|
2
|
-
# or more contributor license agreements. See the NOTICE file
|
|
3
|
-
# distributed with this work for additional information
|
|
4
|
-
# regarding copyright ownership. The ASF licenses this file
|
|
5
|
-
# to you under the Apache License, Version 2.0 (the
|
|
6
|
-
# "License"); you may not use this file except in compliance
|
|
7
|
-
# with the License. You may obtain a copy of the License at
|
|
8
|
-
#
|
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
#
|
|
11
|
-
# Unless required by applicable law or agreed to in writing,
|
|
12
|
-
# software distributed under the License is distributed on an
|
|
13
|
-
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
-
# KIND, either express or implied. See the License for the
|
|
15
|
-
# specific language governing permissions and limitations
|
|
16
|
-
# under the License.
|
|
17
|
-
# pylint: disable=invalid-name
|
|
18
|
-
"""measure bandwidth and compute peak"""
|
|
19
|
-
|
|
20
|
-
import logging
|
|
21
|
-
import tvm
|
|
22
|
-
from . import util
|
|
23
|
-
from .. import rpc
|
|
24
|
-
|
|
25
|
-
def _convert_to_remote(func, remote):
|
|
26
|
-
""" convert module function to remote rpc function"""
|
|
27
|
-
temp = util.tempdir()
|
|
28
|
-
path_dso = temp.relpath("tmp_func.tar")
|
|
29
|
-
func.export_library(path_dso)
|
|
30
|
-
|
|
31
|
-
remote.upload(path_dso)
|
|
32
|
-
func = remote.load_module("tmp_func.tar")
|
|
33
|
-
return func
|
|
34
|
-
|
|
35
|
-
def measure_bandwidth_sum(total_item, item_per_thread, stride,
|
|
36
|
-
base_type, bits, lanes,
|
|
37
|
-
target, target_host, remote, ctx, n_times):
|
|
38
|
-
""" measure memory bandwidth of gpu by product reduction for a given type
|
|
39
|
-
|
|
40
|
-
The IR for measurement is
|
|
41
|
-
|
|
42
|
-
for each thread
|
|
43
|
-
for i in 1..num_per_thread:
|
|
44
|
-
y[global_id] = y[global_id] * x[base + i * stride]
|
|
45
|
-
|
|
46
|
-
Parameters
|
|
47
|
-
----------
|
|
48
|
-
total_item: int
|
|
49
|
-
number of elements in input array
|
|
50
|
-
item_per_thread: int
|
|
51
|
-
number of elements each thread accumulates
|
|
52
|
-
stride: int
|
|
53
|
-
stride in memory access
|
|
54
|
-
base_type: str
|
|
55
|
-
can be "int", "float"
|
|
56
|
-
bits: int
|
|
57
|
-
can be 16, 32
|
|
58
|
-
lanes: int
|
|
59
|
-
lane of the vector type, can be 1, 2, 4, 8, 16
|
|
60
|
-
target: :any:`tvm.target.Target`
|
|
61
|
-
the target and option of the compilation.
|
|
62
|
-
target_host : str or :any:`tvm.target.Target`
|
|
63
|
-
host compilation target
|
|
64
|
-
ctx: TVMcontext
|
|
65
|
-
the context of array
|
|
66
|
-
remote: tvm.rpc.RPCSession
|
|
67
|
-
remote rpc session
|
|
68
|
-
n_times: int
|
|
69
|
-
number of runs for taking mean
|
|
70
|
-
|
|
71
|
-
Returns
|
|
72
|
-
-------
|
|
73
|
-
GBPS: float
|
|
74
|
-
gigabyte per second
|
|
75
|
-
"""
|
|
76
|
-
n, m = total_item, item_per_thread
|
|
77
|
-
n //= lanes
|
|
78
|
-
|
|
79
|
-
base_type = str(base_type) + str(bits)
|
|
80
|
-
dtype = base_type if lanes == 1 else base_type + "x" + str(lanes)
|
|
81
|
-
|
|
82
|
-
k = tvm.reduce_axis((0, m), name="k")
|
|
83
|
-
|
|
84
|
-
x = tvm.placeholder((n,), dtype=dtype, name="x")
|
|
85
|
-
op = tvm.comm_reducer(lambda x, y: x*y, lambda t: tvm.const(1, dtype=t), name="sum")
|
|
86
|
-
y = tvm.compute((n // m,),
|
|
87
|
-
lambda i: op(x[i // stride * stride * m + i % stride + k * stride], axis=k))
|
|
88
|
-
s = tvm.create_schedule(y.op)
|
|
89
|
-
|
|
90
|
-
yo, yi = s[y].split(y.op.axis[0], target.max_num_threads)
|
|
91
|
-
s[y].bind(yo, tvm.thread_axis("blockIdx.x"))
|
|
92
|
-
s[y].bind(yi, tvm.thread_axis("threadIdx.x"))
|
|
93
|
-
s[y].unroll(k)
|
|
94
|
-
|
|
95
|
-
try:
|
|
96
|
-
func = tvm.build(s, [x, y], target, target_host=target_host)
|
|
97
|
-
|
|
98
|
-
x = tvm.nd.empty((n,), dtype=dtype, ctx=ctx)
|
|
99
|
-
y = tvm.nd.empty((n // m,), dtype=dtype, ctx=ctx)
|
|
100
|
-
|
|
101
|
-
func = _convert_to_remote(func, remote)
|
|
102
|
-
time_f = func.time_evaluator(func.entry_name, ctx, number=n_times)
|
|
103
|
-
time = time_f(x, y).mean
|
|
104
|
-
except tvm._ffi.base.TVMError:
|
|
105
|
-
# build error (occur when device does not support half)
|
|
106
|
-
return -1
|
|
107
|
-
|
|
108
|
-
return 1.0 * (total_item * bits / 8) / 1e9 / time
|
|
109
|
-
|
|
110
|
-
def measure_bandwidth_all_types(total_item, item_per_thread, n_times,
|
|
111
|
-
target, target_host, remote, ctx, verbose=True):
|
|
112
|
-
""" measure memory bandwidth for all types
|
|
113
|
-
|
|
114
|
-
Parameters
|
|
115
|
-
----------
|
|
116
|
-
total_item: int
|
|
117
|
-
number of elements in input array
|
|
118
|
-
item_per_thread: int
|
|
119
|
-
number of elements each thread accmulates
|
|
120
|
-
n_times: int
|
|
121
|
-
number of runs for averaging
|
|
122
|
-
target: :any:`tvm.target.Target`
|
|
123
|
-
the target and option of the compilation.
|
|
124
|
-
target_host : str or :any:`tvm.target.Target`
|
|
125
|
-
host compilation target
|
|
126
|
-
remote: tvm.rpc.RPCSession
|
|
127
|
-
remote rpc session
|
|
128
|
-
ctx: TVMcontext
|
|
129
|
-
the context of array
|
|
130
|
-
verbose: bool
|
|
131
|
-
whether outputs immediate result
|
|
132
|
-
|
|
133
|
-
Returns
|
|
134
|
-
-------
|
|
135
|
-
result: list
|
|
136
|
-
a list of (type_name, GBPS) pairs
|
|
137
|
-
"""
|
|
138
|
-
max_threads = target.max_num_threads
|
|
139
|
-
|
|
140
|
-
result = []
|
|
141
|
-
for base_type in ["float"]:
|
|
142
|
-
for bits in [32]:
|
|
143
|
-
for lanes in [1, 2, 4, 8, 16]:
|
|
144
|
-
max_speed = -1e9
|
|
145
|
-
# try different strides
|
|
146
|
-
for stride in [max_threads, total_item // (lanes * item_per_thread)]:
|
|
147
|
-
speed = measure_bandwidth_sum(total_item, item_per_thread, stride,
|
|
148
|
-
base_type, bits, lanes, target,
|
|
149
|
-
target_host, remote, ctx, n_times)
|
|
150
|
-
max_speed = max(max_speed, speed)
|
|
151
|
-
type_name = base_type + str(bits)
|
|
152
|
-
result.append(["%sx%d" % (type_name, lanes), max_speed])
|
|
153
|
-
if verbose:
|
|
154
|
-
logging.info("\t%-10s %.2f GBPS", result[-1][0], result[-1][1])
|
|
155
|
-
return result
|
|
156
|
-
|
|
157
|
-
def measure_compute_mad(total_item, item_per_thread, base_type, bits, lanes,
|
|
158
|
-
target, target_host, remote, ctx, n_times):
|
|
159
|
-
""" measure peak compute speed by computing mad for a type
|
|
160
|
-
|
|
161
|
-
The IR for measurement is
|
|
162
|
-
|
|
163
|
-
for each thread
|
|
164
|
-
for i in 1..item_per_thread
|
|
165
|
-
x = mad(x, x, y)
|
|
166
|
-
y = mad(y, y, x)
|
|
167
|
-
|
|
168
|
-
Parameters
|
|
169
|
-
----------
|
|
170
|
-
total_item: int
|
|
171
|
-
number of elements in input array
|
|
172
|
-
item_per_thread: int
|
|
173
|
-
number of operations each thread does
|
|
174
|
-
base_type: str
|
|
175
|
-
can be "int", "float"
|
|
176
|
-
bits: int
|
|
177
|
-
can be 16, 32
|
|
178
|
-
lanes: int
|
|
179
|
-
lane of the vector type, can be 1, 2, 4, 8, 16
|
|
180
|
-
target: :any:`tvm.target.Target`
|
|
181
|
-
the target and option of the compilation.
|
|
182
|
-
target_host : str or :any:`tvm.target.Target`
|
|
183
|
-
host compilation target
|
|
184
|
-
remote: tvm.rpc.RPCSession
|
|
185
|
-
if it is not None, use remote rpc session
|
|
186
|
-
ctx: TVMcontext
|
|
187
|
-
the context of array
|
|
188
|
-
n_times: int
|
|
189
|
-
number of runs for taking mean
|
|
190
|
-
|
|
191
|
-
Returns
|
|
192
|
-
-------
|
|
193
|
-
GOPS: float
|
|
194
|
-
giga operation per second
|
|
195
|
-
"""
|
|
196
|
-
|
|
197
|
-
n = total_item
|
|
198
|
-
|
|
199
|
-
if bits >= 64 or lanes >= 16:
|
|
200
|
-
n //= 2
|
|
201
|
-
|
|
202
|
-
max_threads = target.max_num_threads
|
|
203
|
-
|
|
204
|
-
base_type = str(base_type) + str(bits)
|
|
205
|
-
dtype = base_type if lanes == 1 else base_type + "x" + str(lanes)
|
|
206
|
-
|
|
207
|
-
def extern(ins, outs):
|
|
208
|
-
# pylint: disable=unused-argument
|
|
209
|
-
"""construct measurement function by building IR directly"""
|
|
210
|
-
ib = tvm.ir_builder.create()
|
|
211
|
-
|
|
212
|
-
bx = tvm.thread_axis("blockIdx.x")
|
|
213
|
-
tx = tvm.thread_axis("threadIdx.x")
|
|
214
|
-
|
|
215
|
-
ib.scope_attr(bx, "thread_extent", n // max_threads)
|
|
216
|
-
ib.scope_attr(tx, "thread_extent", max_threads)
|
|
217
|
-
|
|
218
|
-
idx = bx.var * max_threads + tx.var
|
|
219
|
-
|
|
220
|
-
a = ib.allocate(dtype, (1), name='a', scope='local')
|
|
221
|
-
b = ib.allocate(dtype, (1), name='b', scope='local')
|
|
222
|
-
|
|
223
|
-
a[0] = outs[0].vload(idx, dtype)
|
|
224
|
-
b[0] = outs[0].vload(idx, dtype)
|
|
225
|
-
|
|
226
|
-
if base_type.find('float') != -1:
|
|
227
|
-
mad_func = lambda x, y: (x * x + y)
|
|
228
|
-
else:
|
|
229
|
-
mad_func = lambda x, y: y * y + x
|
|
230
|
-
|
|
231
|
-
for _ in range(item_per_thread // 4 // lanes):
|
|
232
|
-
a[0] = mad_func(a[0], b[0])
|
|
233
|
-
b[0] = mad_func(b[0], a[0])
|
|
234
|
-
|
|
235
|
-
ib.emit(outs[0].vstore(idx, b[0]))
|
|
236
|
-
return ib.get()
|
|
237
|
-
|
|
238
|
-
y = tvm.extern((n,), [], extern, name="y", dtype=dtype)
|
|
239
|
-
s = tvm.create_schedule(y.op)
|
|
240
|
-
|
|
241
|
-
try:
|
|
242
|
-
func = tvm.build(s, [y], target, target_host=target_host)
|
|
243
|
-
func = _convert_to_remote(func, remote)
|
|
244
|
-
time_f = func.time_evaluator(func.entry_name, ctx, number=n_times)
|
|
245
|
-
y = tvm.nd.empty((n,), dtype=dtype, ctx=ctx)
|
|
246
|
-
time = time_f(y).mean
|
|
247
|
-
except tvm._ffi.base.TVMError:
|
|
248
|
-
# build error (occur when device does not support half)
|
|
249
|
-
return -1
|
|
250
|
-
|
|
251
|
-
return 1.0 * (n * item_per_thread) / 1e9 / time
|
|
252
|
-
|
|
253
|
-
def measure_compute_all_types(total_item, item_per_thread, n_times,
|
|
254
|
-
target, target_host, remote, ctx, verbose=True):
|
|
255
|
-
""" measure peak flops for all types
|
|
256
|
-
|
|
257
|
-
Parameters
|
|
258
|
-
----------
|
|
259
|
-
total_item: int
|
|
260
|
-
number of elements in input array
|
|
261
|
-
item_per_thread: int
|
|
262
|
-
number of elements each thread accmulates
|
|
263
|
-
n_times: int
|
|
264
|
-
number of runs for averaging
|
|
265
|
-
target: :any:`tvm.target.Target`
|
|
266
|
-
the target and option of the compilation.
|
|
267
|
-
target_host : str or :any:`tvm.target.Target`
|
|
268
|
-
host compilation target
|
|
269
|
-
remote: tvm.rpc.RPCSession
|
|
270
|
-
remote rpc session
|
|
271
|
-
ctx: TVMcontext
|
|
272
|
-
the context of array
|
|
273
|
-
verbose: bool
|
|
274
|
-
whether outputs immediate result
|
|
275
|
-
|
|
276
|
-
Returns
|
|
277
|
-
-------
|
|
278
|
-
result: list
|
|
279
|
-
a list of (type_name, GFLOPS/GIOPS) pairs
|
|
280
|
-
"""
|
|
281
|
-
result = []
|
|
282
|
-
for base_type in ["float", "int"]:
|
|
283
|
-
for bits in [16, 32, 64]:
|
|
284
|
-
for lanes in [1, 2, 4, 8, 16]:
|
|
285
|
-
if base_type == 'int' and bits != 32: # only measure int32
|
|
286
|
-
continue
|
|
287
|
-
|
|
288
|
-
max_speed = -1e9
|
|
289
|
-
for per_thread in [item_per_thread//2, item_per_thread, item_per_thread*2]:
|
|
290
|
-
speed = measure_compute_mad(total_item, per_thread,
|
|
291
|
-
base_type, bits, lanes, target,
|
|
292
|
-
target_host, remote, ctx, n_times)
|
|
293
|
-
max_speed = max(max_speed, speed)
|
|
294
|
-
type_name = base_type + str(bits)
|
|
295
|
-
result.append(["%sx%d" % (type_name, lanes), max_speed])
|
|
296
|
-
|
|
297
|
-
unit = "GFLOPS" if base_type == "float" else "GIOPS"
|
|
298
|
-
|
|
299
|
-
if verbose:
|
|
300
|
-
logging.info("\t%-10s %.2f %s", result[-1][0], result[-1][1], unit)
|
|
301
|
-
|
|
302
|
-
return result
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
def measure_peak_all(target, target_host, host, port):
|
|
306
|
-
"""measure memory bandwidth and peak compute for gpu devices
|
|
307
|
-
|
|
308
|
-
Parameters
|
|
309
|
-
----------
|
|
310
|
-
target: str or :any:`tvm.target.Target`
|
|
311
|
-
target_host: str
|
|
312
|
-
host: str
|
|
313
|
-
port: int
|
|
314
|
-
"""
|
|
315
|
-
|
|
316
|
-
target = tvm.target.create(target)
|
|
317
|
-
remote = rpc.connect(host, port)
|
|
318
|
-
n_times = 20
|
|
319
|
-
|
|
320
|
-
bandwidth_total_item = 1 << 25
|
|
321
|
-
bandwidth_item_per_thread = 32
|
|
322
|
-
|
|
323
|
-
compute_total_item = 1 << 21
|
|
324
|
-
compute_item_per_thread = 4096
|
|
325
|
-
|
|
326
|
-
if str(target).startswith("opencl"):
|
|
327
|
-
ctx = remote.cl()
|
|
328
|
-
elif str(target).startswith("cuda"):
|
|
329
|
-
ctx = remote.gpu()
|
|
330
|
-
elif str(target).startswith("metal"):
|
|
331
|
-
ctx = remote.metal()
|
|
332
|
-
else:
|
|
333
|
-
raise RuntimeError("Unsupported target")
|
|
334
|
-
|
|
335
|
-
logging.info("========== measure memory bandwidth ==========")
|
|
336
|
-
measure_bandwidth_all_types(bandwidth_total_item, bandwidth_item_per_thread,
|
|
337
|
-
n_times, target, target_host, remote, ctx)
|
|
338
|
-
|
|
339
|
-
logging.info("========== measure peak compute ==========")
|
|
340
|
-
measure_compute_all_types(compute_total_item, compute_item_per_thread,
|
|
341
|
-
n_times, target, target_host, remote, ctx)
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# Licensed to the Apache Software Foundation (ASF) under one
|
|
2
|
-
# or more contributor license agreements. See the NOTICE file
|
|
3
|
-
# distributed with this work for additional information
|
|
4
|
-
# regarding copyright ownership. The ASF licenses this file
|
|
5
|
-
# to you under the Apache License, Version 2.0 (the
|
|
6
|
-
# "License"); you may not use this file except in compliance
|
|
7
|
-
# with the License. You may obtain a copy of the License at
|
|
8
|
-
#
|
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
#
|
|
11
|
-
# Unless required by applicable law or agreed to in writing,
|
|
12
|
-
# software distributed under the License is distributed on an
|
|
13
|
-
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
-
# KIND, either express or implied. See the License for the
|
|
15
|
-
# specific language governing permissions and limitations
|
|
16
|
-
# under the License.
|
|
17
|
-
"""Deprecation RPC module"""
|
|
18
|
-
# pylint: disable=unused-import
|
|
19
|
-
from __future__ import absolute_import as _abs
|
|
20
|
-
import warnings
|
|
21
|
-
from ..rpc import Server, RPCSession, LocalSession, TrackerSession, connect, connect_tracker
|
|
22
|
-
|
|
23
|
-
warnings.warn(
|
|
24
|
-
"Please use tvm.rpc instead of tvm.conrtib.rpc. tvm.contrib.rpc is going to be removed in 0.5",
|
|
25
|
-
DeprecationWarning)
|
|
@@ -1,257 +0,0 @@
|
|
|
1
|
-
# Licensed to the Apache Software Foundation (ASF) under one
|
|
2
|
-
# or more contributor license agreements. See the NOTICE file
|
|
3
|
-
# distributed with this work for additional information
|
|
4
|
-
# regarding copyright ownership. The ASF licenses this file
|
|
5
|
-
# to you under the Apache License, Version 2.0 (the
|
|
6
|
-
# "License"); you may not use this file except in compliance
|
|
7
|
-
# with the License. You may obtain a copy of the License at
|
|
8
|
-
#
|
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
#
|
|
11
|
-
# Unless required by applicable law or agreed to in writing,
|
|
12
|
-
# software distributed under the License is distributed on an
|
|
13
|
-
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
-
# KIND, either express or implied. See the License for the
|
|
15
|
-
# specific language governing permissions and limitations
|
|
16
|
-
# under the License.
|
|
17
|
-
# pylint: disable=invalid-name
|
|
18
|
-
"""Utility to invoke Xcode compiler toolchain"""
|
|
19
|
-
from __future__ import absolute_import as _abs
|
|
20
|
-
|
|
21
|
-
import os
|
|
22
|
-
import sys
|
|
23
|
-
import subprocess
|
|
24
|
-
from .._ffi.base import py_str
|
|
25
|
-
from . import util
|
|
26
|
-
|
|
27
|
-
def xcrun(cmd):
|
|
28
|
-
"""Run xcrun and return the output.
|
|
29
|
-
|
|
30
|
-
Parameters
|
|
31
|
-
----------
|
|
32
|
-
cmd : list of str
|
|
33
|
-
The command sequence.
|
|
34
|
-
|
|
35
|
-
Returns
|
|
36
|
-
-------
|
|
37
|
-
out : str
|
|
38
|
-
The output string.
|
|
39
|
-
"""
|
|
40
|
-
cmd = ["xcrun"] + cmd
|
|
41
|
-
proc = subprocess.Popen(cmd,
|
|
42
|
-
stdout=subprocess.PIPE,
|
|
43
|
-
stderr=subprocess.STDOUT)
|
|
44
|
-
(out, _) = proc.communicate()
|
|
45
|
-
return out.strip()
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
def codesign(lib):
|
|
49
|
-
"""Codesign the shared libary
|
|
50
|
-
|
|
51
|
-
This is an required step for library to be loaded in
|
|
52
|
-
the app.
|
|
53
|
-
|
|
54
|
-
Parameters
|
|
55
|
-
----------
|
|
56
|
-
lib : The path to the library.
|
|
57
|
-
"""
|
|
58
|
-
if "TVM_IOS_CODESIGN" not in os.environ:
|
|
59
|
-
raise RuntimeError("Require environment variable TVM_IOS_CODESIGN "
|
|
60
|
-
" to be the signature")
|
|
61
|
-
signature = os.environ["TVM_IOS_CODESIGN"]
|
|
62
|
-
cmd = ["codesign", "--force", "--sign", signature]
|
|
63
|
-
cmd += [lib]
|
|
64
|
-
proc = subprocess.Popen(cmd,
|
|
65
|
-
stdout=subprocess.PIPE,
|
|
66
|
-
stderr=subprocess.STDOUT)
|
|
67
|
-
(out, _) = proc.communicate()
|
|
68
|
-
if proc.returncode != 0:
|
|
69
|
-
msg = "Codesign error:\n"
|
|
70
|
-
msg += py_str(out)
|
|
71
|
-
raise RuntimeError(msg)
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
def create_dylib(output, objects, arch, sdk="macosx"):
|
|
75
|
-
"""Create dynamic library.
|
|
76
|
-
|
|
77
|
-
Parameters
|
|
78
|
-
----------
|
|
79
|
-
output : str
|
|
80
|
-
The target shared library.
|
|
81
|
-
|
|
82
|
-
objects : list
|
|
83
|
-
List of object files.
|
|
84
|
-
|
|
85
|
-
options : str
|
|
86
|
-
The additional options.
|
|
87
|
-
|
|
88
|
-
arch : str
|
|
89
|
-
Target major architectures
|
|
90
|
-
|
|
91
|
-
sdk : str
|
|
92
|
-
The sdk to be used.
|
|
93
|
-
"""
|
|
94
|
-
clang = xcrun(["-sdk", sdk, "-find", "clang"])
|
|
95
|
-
sdk_path = xcrun(["-sdk", sdk, "--show-sdk-path"])
|
|
96
|
-
cmd = [clang]
|
|
97
|
-
cmd += ["-dynamiclib"]
|
|
98
|
-
cmd += ["-arch", arch]
|
|
99
|
-
cmd += ["-isysroot", sdk_path]
|
|
100
|
-
cmd += ["-o", output]
|
|
101
|
-
if isinstance(objects, str):
|
|
102
|
-
cmd += [objects]
|
|
103
|
-
else:
|
|
104
|
-
cmd += objects
|
|
105
|
-
|
|
106
|
-
proc = subprocess.Popen(
|
|
107
|
-
cmd, stdout=subprocess.PIPE,
|
|
108
|
-
stderr=subprocess.STDOUT)
|
|
109
|
-
(out, _) = proc.communicate()
|
|
110
|
-
|
|
111
|
-
if proc.returncode != 0:
|
|
112
|
-
msg = "Compilation error:\n"
|
|
113
|
-
msg += py_str(out)
|
|
114
|
-
raise RuntimeError(msg)
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
# assign so as default output format
|
|
118
|
-
create_dylib.output_format = "dylib"
|
|
119
|
-
|
|
120
|
-
def compile_metal(code, path_target=None, sdk="macosx"):
|
|
121
|
-
"""Compile metal with CLI tool from env.
|
|
122
|
-
|
|
123
|
-
Parameters
|
|
124
|
-
----------
|
|
125
|
-
code : str
|
|
126
|
-
The cuda code.
|
|
127
|
-
|
|
128
|
-
path_target : str, optional
|
|
129
|
-
Output file.
|
|
130
|
-
|
|
131
|
-
sdk : str, optional
|
|
132
|
-
The target platform SDK.
|
|
133
|
-
|
|
134
|
-
Return
|
|
135
|
-
------
|
|
136
|
-
metallib : bytearray
|
|
137
|
-
The bytearray of the metallib
|
|
138
|
-
"""
|
|
139
|
-
temp = util.tempdir()
|
|
140
|
-
temp_code = temp.relpath("my_lib.metal")
|
|
141
|
-
temp_ir = temp.relpath("my_lib.air")
|
|
142
|
-
temp_target = temp.relpath("my_lib.metallib")
|
|
143
|
-
|
|
144
|
-
with open(temp_code, "w") as out_file:
|
|
145
|
-
out_file.write(code)
|
|
146
|
-
file_target = path_target if path_target else temp_target
|
|
147
|
-
|
|
148
|
-
# See:
|
|
149
|
-
# - https://developer.apple.com/documentation/metal/gpu_functions_libraries/building_a_library_with_metal_s_command-line_tools#overview # pylint: disable=line-too-long
|
|
150
|
-
#
|
|
151
|
-
# xcrun -sdk macosx metal -c MyLibrary.metal -o MyLibrary.air
|
|
152
|
-
# xcrun -sdk macosx metallib MyLibrary.air -o MyLibrary.metallib
|
|
153
|
-
cmd1 = ["xcrun", "-sdk", sdk, "metal", "-O3"]
|
|
154
|
-
cmd1 += ["-c", temp_code, "-o", temp_ir]
|
|
155
|
-
cmd2 = ["xcrun", "-sdk", sdk, "metallib"]
|
|
156
|
-
cmd2 += [temp_ir, "-o", file_target]
|
|
157
|
-
proc = subprocess.Popen(
|
|
158
|
-
' '.join(cmd1) + ";" + ' '.join(cmd2),
|
|
159
|
-
shell=True,
|
|
160
|
-
stdout=subprocess.PIPE,
|
|
161
|
-
stderr=subprocess.STDOUT)
|
|
162
|
-
(out, _) = proc.communicate()
|
|
163
|
-
if proc.returncode != 0:
|
|
164
|
-
sys.stderr.write("Compilation error:\n")
|
|
165
|
-
sys.stderr.write(py_str(out))
|
|
166
|
-
sys.stderr.flush()
|
|
167
|
-
libbin = None
|
|
168
|
-
else:
|
|
169
|
-
libbin = bytearray(open(file_target, "rb").read())
|
|
170
|
-
return libbin
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
class XCodeRPCServer(object):
|
|
174
|
-
"""Wrapper for RPC server
|
|
175
|
-
|
|
176
|
-
Parameters
|
|
177
|
-
----------
|
|
178
|
-
cmd : list of str
|
|
179
|
-
The command to run
|
|
180
|
-
|
|
181
|
-
lock: FileLock
|
|
182
|
-
Lock on the path
|
|
183
|
-
"""
|
|
184
|
-
def __init__(self, cmd, lock):
|
|
185
|
-
self.proc = subprocess.Popen(cmd)
|
|
186
|
-
self.lock = lock
|
|
187
|
-
|
|
188
|
-
def join(self):
|
|
189
|
-
"""Wait server to finish and release its resource
|
|
190
|
-
"""
|
|
191
|
-
self.proc.wait()
|
|
192
|
-
self.lock.release()
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
def popen_test_rpc(host,
|
|
196
|
-
port,
|
|
197
|
-
key,
|
|
198
|
-
destination,
|
|
199
|
-
libs=None,
|
|
200
|
-
options=None):
|
|
201
|
-
"""Launch rpc server via xcodebuild test through another process.
|
|
202
|
-
|
|
203
|
-
Parameters
|
|
204
|
-
----------
|
|
205
|
-
host : str
|
|
206
|
-
The address of RPC proxy host.
|
|
207
|
-
|
|
208
|
-
port : int
|
|
209
|
-
The port of RPC proxy host
|
|
210
|
-
|
|
211
|
-
key : str
|
|
212
|
-
The key of the RPC server
|
|
213
|
-
|
|
214
|
-
destination : str
|
|
215
|
-
Destination device of deployment, as in xcodebuild
|
|
216
|
-
|
|
217
|
-
libs : list of str
|
|
218
|
-
List of files to be packed into app/Frameworks/tvm
|
|
219
|
-
These can be dylibs that can be loaed remoted by RPC.
|
|
220
|
-
|
|
221
|
-
options : list of str
|
|
222
|
-
Additional options to xcodebuild
|
|
223
|
-
|
|
224
|
-
Returns
|
|
225
|
-
-------
|
|
226
|
-
proc : Popen
|
|
227
|
-
The test rpc server process.
|
|
228
|
-
Don't do wait() on proc, since it can terminate normally.
|
|
229
|
-
"""
|
|
230
|
-
if "TVM_IOS_RPC_ROOT" in os.environ:
|
|
231
|
-
rpc_root = os.environ["TVM_IOS_RPC_ROOT"]
|
|
232
|
-
else:
|
|
233
|
-
curr_path = os.path.dirname(os.path.realpath(os.path.expanduser(__file__)))
|
|
234
|
-
rpc_root = os.path.join(curr_path, "../../../apps/ios_rpc")
|
|
235
|
-
proj_path = os.path.realpath(os.path.join(rpc_root, "tvmrpc.xcodeproj"))
|
|
236
|
-
if not os.path.exists(proj_path):
|
|
237
|
-
raise RuntimeError("Cannot find tvmrpc.xcodeproj in %s," +
|
|
238
|
-
(" please set env TVM_IOS_RPC_ROOT correctly" % rpc_root))
|
|
239
|
-
|
|
240
|
-
# Lock the path so only one file can run
|
|
241
|
-
lock = util.filelock(os.path.join(rpc_root, "ios_rpc.lock"))
|
|
242
|
-
|
|
243
|
-
with open(os.path.join(rpc_root, "rpc_config.txt"), "w") as fo:
|
|
244
|
-
fo.write("%s %d %s\n" % (host, port, key))
|
|
245
|
-
libs = libs if libs else []
|
|
246
|
-
for file_name in libs:
|
|
247
|
-
fo.write("%s\n" % file_name)
|
|
248
|
-
|
|
249
|
-
cmd = ["xcrun", "xcodebuild",
|
|
250
|
-
"-scheme", "tvmrpc",
|
|
251
|
-
"-project", proj_path,
|
|
252
|
-
"-destination", destination]
|
|
253
|
-
if options:
|
|
254
|
-
cmd += options
|
|
255
|
-
cmd += ["test"]
|
|
256
|
-
|
|
257
|
-
return XCodeRPCServer(cmd, lock)
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# Licensed to the Apache Software Foundation (ASF) under one
|
|
2
|
-
# or more contributor license agreements. See the NOTICE file
|
|
3
|
-
# distributed with this work for additional information
|
|
4
|
-
# regarding copyright ownership. The ASF licenses this file
|
|
5
|
-
# to you under the Apache License, Version 2.0 (the
|
|
6
|
-
# "License"); you may not use this file except in compliance
|
|
7
|
-
# with the License. You may obtain a copy of the License at
|
|
8
|
-
#
|
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
#
|
|
11
|
-
# Unless required by applicable law or agreed to in writing,
|
|
12
|
-
# software distributed under the License is distributed on an
|
|
13
|
-
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
-
# KIND, either express or implied. See the License for the
|
|
15
|
-
# specific language governing permissions and limitations
|
|
16
|
-
# under the License.
|
|
17
|
-
"""Namespace of executables python files that directly run throw cmd"""
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
# Licensed to the Apache Software Foundation (ASF) under one
|
|
2
|
-
# or more contributor license agreements. See the NOTICE file
|
|
3
|
-
# distributed with this work for additional information
|
|
4
|
-
# regarding copyright ownership. The ASF licenses this file
|
|
5
|
-
# to you under the Apache License, Version 2.0 (the
|
|
6
|
-
# "License"); you may not use this file except in compliance
|
|
7
|
-
# with the License. You may obtain a copy of the License at
|
|
8
|
-
#
|
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
#
|
|
11
|
-
# Unless required by applicable law or agreed to in writing,
|
|
12
|
-
# software distributed under the License is distributed on an
|
|
13
|
-
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
-
# KIND, either express or implied. See the License for the
|
|
15
|
-
# specific language governing permissions and limitations
|
|
16
|
-
# under the License.
|
|
17
|
-
# pylint: disable=invalid-name
|
|
18
|
-
"""Pick best log entries from a large file and store them to a small file"""
|
|
19
|
-
|
|
20
|
-
import argparse
|
|
21
|
-
import os
|
|
22
|
-
import logging
|
|
23
|
-
import warnings
|
|
24
|
-
|
|
25
|
-
from .. import autotvm
|
|
26
|
-
|
|
27
|
-
if __name__ == '__main__':
|
|
28
|
-
parser = argparse.ArgumentParser()
|
|
29
|
-
parser.add_argument("--act", type=str, choices=['pick-best'], required=True,
|
|
30
|
-
help="The action")
|
|
31
|
-
parser.add_argument("--i", type=str, help="The input file or directory", required=True)
|
|
32
|
-
parser.add_argument("--o", type=str, help="The output file")
|
|
33
|
-
|
|
34
|
-
args = parser.parse_args()
|
|
35
|
-
logging.basicConfig(level=logging.INFO)
|
|
36
|
-
|
|
37
|
-
if args.act == 'pick-best':
|
|
38
|
-
if os.path.isfile(args.i):
|
|
39
|
-
args.o = args.o or args.i + ".best.log"
|
|
40
|
-
autotvm.record.pick_best(args.i, args.o)
|
|
41
|
-
elif os.path.isdir(args.i):
|
|
42
|
-
args.o = args.o or "best.log"
|
|
43
|
-
tmp_filename = args.o + ".tmp"
|
|
44
|
-
|
|
45
|
-
with open(tmp_filename, 'w') as tmp_fout:
|
|
46
|
-
for filename in os.listdir(args.i):
|
|
47
|
-
if filename.endswith(".log"):
|
|
48
|
-
try:
|
|
49
|
-
autotvm.record.pick_best(filename, tmp_fout)
|
|
50
|
-
except Exception: # pylint: disable=broad-except
|
|
51
|
-
warnings.warn("Ignore invalid file %s" % filename)
|
|
52
|
-
|
|
53
|
-
logging.info("Run final filter...")
|
|
54
|
-
autotvm.record.pick_best(tmp_filename, args.o)
|
|
55
|
-
os.remove(tmp_filename)
|
|
56
|
-
logging.info("Output to %s ...", args.o)
|
|
57
|
-
else:
|
|
58
|
-
raise ValueError("Invalid input file: " + args.i)
|
|
59
|
-
else:
|
|
60
|
-
raise ValueError("Invalid action " + args.act)
|