def benchmark_model(flags): configs = format_model_config(flags) clear_build_dirs(configs[YAMLKeyword.library_name]) target_socs = configs[YAMLKeyword.target_socs] device_list = DeviceManager.list_devices(flags.device_yml) if target_socs and TargetSOCTag.all not in target_socs: device_list = [dev for dev in device_list if dev[YAMLKeyword.target_socs].lower() in target_socs] for target_abi in configs[YAMLKeyword.target_abis]: if flags.target_socs == TargetSOCTag.random: target_devices = sh_commands.choose_a_random_device( device_list, target_abi) else: target_devices = device_list # build benchmark_model binary for dev in target_devices: if target_abi in dev[YAMLKeyword.target_abis]: toolchain = infer_toolchain(target_abi) build_benchmark_model(configs, target_abi, toolchain, not flags.disable_openmp, flags.mace_lib_type) device = DeviceWrapper(dev) start_time = time.time() with device.lock(): device.bm_specific_target(flags, configs, target_abi) elapse_minutes = (time.time() - start_time) / 60 print("Elapse time: %f minutes." % elapse_minutes) else: six.print_('There is no abi %s with soc %s' % (target_abi, dev[YAMLKeyword.target_socs]), file=sys.stderr)
def main(unused_args): target = FLAGS.target host_bin_path, bin_name = sh_commands.bazel_target_to_bin(target) target_abis = FLAGS.target_abis.split(',') dana_util = DanaUtil() for target_abi in target_abis: toolchain = infer_toolchain(target_abi) sh_commands.bazel_build(target, abi=target_abi, toolchain=toolchain, enable_neon=FLAGS.enable_neon, enable_quantize=FLAGS.enable_quantize, enable_bfloat16=FLAGS.enable_bfloat16, enable_fp16=FLAGS.enable_fp16, enable_rpcmem=FLAGS.enable_rpcmem, enable_hta=FLAGS.enable_hta, address_sanitizer=FLAGS.address_sanitizer, debug_mode=FLAGS.debug_mode) if FLAGS.run_target: target_devices = DeviceManager.list_devices(FLAGS.device_yml) if FLAGS.target_socs != TargetSOCTag.all and \ FLAGS.target_socs != TargetSOCTag.random: target_socs = set(FLAGS.target_socs.split(',')) target_devices = \ [dev for dev in target_devices if dev[YAMLKeyword.target_socs] in target_socs] if FLAGS.target_socs == TargetSOCTag.random: target_devices = sh_commands.choose_a_random_device( target_devices, target_abi) for dev in target_devices: if target_abi not in dev[YAMLKeyword.target_abis]: print("Skip device %s which does not support ABI %s" % (dev, target_abi)) continue device_wrapper = DeviceWrapper(dev) stdouts = device_wrapper.run( target_abi, host_bin_path, bin_name, args=FLAGS.args, opencl_profiling=True, vlog_level=FLAGS.vlog_level, out_of_range_check=True, address_sanitizer=FLAGS.address_sanitizer, simpleperf=FLAGS.simpleperf) globals()[FLAGS.stdout_processor](stdouts, dev, target_abi) if dana_util.service_available(): report_run_statistics(stdouts=stdouts, device=dev['device_name'], soc=dev['target_socs'], abi=target_abi, dana_util=dana_util)
def run_mace(flags): configs = format_model_config(flags) clear_build_dirs(configs[YAMLKeyword.library_name]) target_socs = configs[YAMLKeyword.target_socs] device_list = DeviceManager.list_devices(flags.device_yml) if target_socs and TargetSOCTag.all not in target_socs: device_list = [dev for dev in device_list if dev[YAMLKeyword.target_socs].lower() in target_socs] for target_abi in configs[YAMLKeyword.target_abis]: if flags.target_socs == TargetSOCTag.random: target_devices = sh_commands.choose_a_random_device( device_list, target_abi) else: target_devices = device_list # build target for dev in target_devices: if target_abi in dev[YAMLKeyword.target_abis]: # get toolchain toolchain = infer_toolchain(target_abi) device = DeviceWrapper(dev) if flags.example: build_example(configs, target_abi, toolchain, not flags.disable_openmp, flags.mace_lib_type, flags.cl_binary_to_code, device) else: build_mace_run(configs, target_abi, toolchain, not flags.disable_openmp, flags.address_sanitizer, flags.mace_lib_type) # run start_time = time.time() with device.lock(): device.run_specify_abi(flags, configs, target_abi) elapse_minutes = (time.time() - start_time) / 60 print("Elapse time: %f minutes." % elapse_minutes) elif dev[YAMLKeyword.device_name] != SystemType.host: six.print_('The device with soc %s do not support abi %s' % (dev[YAMLKeyword.target_socs], target_abi), file=sys.stderr) # package the output files package_path = sh_commands.packaging_lib(BUILD_OUTPUT_DIR, configs[YAMLKeyword.library_name]) print_package_summary(package_path)
def main(unused_args): target = FLAGS.target host_bin_path, bin_name = sh_commands.bazel_target_to_bin(target) target_abis = FLAGS.target_abis.split(',') for target_abi in target_abis: toolchain = infer_toolchain(target_abi) sh_commands.bazel_build(target, abi=target_abi, toolchain=toolchain, enable_neon=FLAGS.enable_neon, address_sanitizer=FLAGS.address_sanitizer) if FLAGS.run_target: target_devices = DeviceManager.list_devices(FLAGS.device_yml) if FLAGS.target_socs != TargetSOCTag.all and\ FLAGS.target_socs != TargetSOCTag.random: target_socs = set(FLAGS.target_socs.split(',')) target_devices = \ [dev for dev in target_devices if dev[YAMLKeyword.target_socs] in target_socs] if FLAGS.target_socs == TargetSOCTag.random: target_devices = sh_commands.choose_a_random_device( target_devices, target_abi) for dev in target_devices: if target_abi not in dev[YAMLKeyword.target_abis]: print("Skip device %s which does not support ABI %s" % (dev, target_abi)) continue device_wrapper = DeviceWrapper(dev) stdouts = device_wrapper.run( target_abi, host_bin_path, bin_name, args=FLAGS.args, opencl_profiling=True, vlog_level=0, out_of_range_check=True, address_sanitizer=FLAGS.address_sanitizer, simpleperf=FLAGS.simpleperf) globals()[FLAGS.stdout_processor](stdouts, dev, target_abi)