コード例 #1
0
ファイル: threads.py プロジェクト: zeta1999/embedded-ai.bench
    def test_threads(self):
        import sys

        sys.path.append("..")
        from utils.device import get_adb_devices

        config = dict()
        config["benchmark_platform"] = ["android-armv7", "android-armv8"]
        config["model_names"] = ["caffe_mobilenetv1", "caffe_mobilenetv2"]
        config["support_backend"] = ["ARM"]

        device_serials = list(map(lambda t: t, get_adb_devices()))
        logger.info(device_serials)
        device_threads = dict()
        for didx in range(len(device_serials)):
            thread_idx = didx
            ser = device_serials[didx]
            logger.info("didx(from1):{}/{}".format(didx, len(device_serials)))
            device_threads[ser] = MyThread(
                func=run_bench_for_test,
                func_args_tuple=(config, ser, thread_idx),
                device_serial=ser,
                thread_idx=thread_idx,
            )
        assert len(device_serials) == len(device_threads)

        for didx in range(len(device_threads)):
            ser = device_serials[didx]
            device_threads[ser].start()

        for didx in range(len(device_threads)):
            ser = device_serials[didx]
            device_threads[ser].join()

        bench_dict = dict()
        for didx in range(len(device_serials)):
            ser = device_serials[didx]
            t = device_threads[ser]
            t_bench_dict = t.get_result()
            bench_dict[ser] = t_bench_dict[ser]
        return bench_dict
コード例 #2
0
ファイル: engine.py プロジェクト: ppl21847/embedded-ai.bench
    def prepare_devices(self):
        logger.info("==== {} ====".format(self.prepare_devices.__name__))

        device_status_dict = get_adb_devices(True)
        serial_num_list = list(device_status_dict.keys())
        logger.debug(serial_num_list)

        device_dict = dict()
        for sidx in range(len(serial_num_list)):
            ser = serial_num_list[sidx]
            device_status = device_status_dict[ser]
            if device_status != "device":
                logger.info("device {} status is {}, skipped".format(  # noqa
                    ser, device_status)  # noqa
                            )
                continue
            device_dict[ser] = dict()
            device_dict[ser]["status"] = device_status
            device_dict[ser]["cpu_max_freqs"] = get_cpu_max_freqs(ser)  # noqa
            cpu_max_freqs = get_cpu_max_freqs(ser)
            cpu_valid_freqs = list(
                filter(lambda freq: freq is not None, cpu_max_freqs))  # noqa
            big_cores_idx = get_target_freq_idx(max(cpu_valid_freqs), ser,
                                                cpu_max_freqs)
            big_cores_idx_str = ",".join(big_cores_idx)
            little_cores_idx = get_target_freq_idx(min(cpu_valid_freqs), ser,
                                                   cpu_max_freqs)
            little_cores_idx_str = ",".join(little_cores_idx)
            device_dict[ser]["big_cores_idx"] = big_cores_idx_str
            device_dict[ser]["little_cores_idx"] = little_cores_idx_str  # noqa
            if self.config["power_mode"] == "big_cores":
                device_dict[ser]["bind_cpu_idx"] = big_cores_idx_str  # noqa
            elif self.config["power_mode"] == "little_cores":
                device_dict[ser]["bind_cpu_idx"] = little_cores_idx_str  # noqa
            elif self.config["power_mode"] == "no_bind":
                device_dict[ser]["bind_cpu_idx"] = ",".join(
                    map(str, range(len(cpu_max_freqs))))
            else:
                logger.info("Unsupported power_mode:{}".format(
                    self.config["power_mode"])  # noqa
                            )
                exit(1)

            # battery level
            device_dict[ser]["battery_level"] = get_battery_level(ser)  # noqa

            # system version
            device_dict[ser]["system_version"] = get_system_version(
                ser)  # noqa

            # imie
            device_dict[ser]["imei"] = get_imei(ser)  # noqa

            # ro.board.platform, ro.board.chiptype, ro.board.hardware
            device_dict[ser]["soc_code"] = get_soc_code(ser)  # noqa

            # soc info
            device_dict[ser]["soc_info"] = get_soc_info_from_soc_code(
                device_dict[ser]["soc_code"])

            # product
            device_dict[ser]["product"] = get_product(ser)  # noqa

        logger.debug(device_dict)
        logger.info("len(device_dict):{}".format(len(device_dict)))
        return device_dict
コード例 #3
0
    def prepare_devices(self):
        logger.info("==== {} ====".format(self.prepare_devices.__name__))

        device_status_dict = get_adb_devices(True)
        serial_num_list = list(device_status_dict.keys())
        logger.debug(serial_num_list)

        device_dict = dict()
        for sidx in range(len(serial_num_list)):
            device_serial_num = serial_num_list[sidx]
            device_status = device_status_dict[device_serial_num]
            if device_status != "device":
                logger.info(
                    "device {} status is {}, skipped".format(
                        device_serial_num, device_status
                    )
                )
                continue
            device_dict[device_serial_num] = dict()
            device_dict[device_serial_num]["status"] = device_status
            device_dict[device_serial_num]["cpu_max_freqs"] = get_cpu_max_freqs(  # noqa
                device_serial_num
            )
            cpu_max_freqs = get_cpu_max_freqs(device_serial_num)
            cpu_valid_freqs = list(
                filter(lambda freq: freq is not None, cpu_max_freqs)
            )  # noqa
            big_cores_idx = get_target_freq_idx(
                max(cpu_valid_freqs), device_serial_num, cpu_max_freqs
            )
            big_cores_idx_str = ",".join(big_cores_idx)
            little_cores_idx = get_target_freq_idx(
                min(cpu_valid_freqs), device_serial_num, cpu_max_freqs
            )
            little_cores_idx_str = ",".join(little_cores_idx)
            device_dict[device_serial_num]["big_cores_idx"] = big_cores_idx_str
            device_dict[device_serial_num][
                "little_cores_idx"
            ] = little_cores_idx_str  # noqa
            if self.config["power_mode"] == "big_cores":
                device_dict[device_serial_num][
                    "bind_cpu_idx"
                ] = big_cores_idx_str  # noqa
            elif self.config["power_mode"] == "little_cores":
                device_dict[device_serial_num][
                    "bind_cpu_idx"
                ] = little_cores_idx_str  # noqa
            elif self.config["power_mode"] == "no_bind":
                device_dict[device_serial_num]["bind_cpu_idx"] = ",".join(
                    map(str, range(len(cpu_max_freqs)))
                )
            else:
                logger.info(
                    "Unsupported power_mode:{}".format(
                        self.config["power_mode"]
                    )  # noqa
                )
                exit(1)

            # battery level
            device_dict[device_serial_num]["battery_level"] = get_battery_level(  # noqa
                device_serial_num
            )

            # system version
            device_dict[device_serial_num][
                "system_version"
            ] = get_system_version(  # noqa
                device_serial_num
            )

            # imie
            device_dict[device_serial_num]["imei"] = get_imei(device_serial_num)  # noqa

            # ro.board.platform, ro.board.chiptype, ro.board.hardware
            device_soc_cmd = (
                "adb -s {} shell getprop |"
                " grep 'ro.board.platform'".format(device_serial_num)
            )
            cmd_handls = run_cmds([device_soc_cmd])
            soc = cmd_handls[device_soc_cmd][0]
            soc = soc.split(": ")[1].strip().replace("[", "").replace("]", "")  # noqa
            device_dict[device_serial_num]["soc"] = soc
            logger.debug(soc)

            # product
            device_product_cmd = (
                "adb -s {} shell getprop | "
                "grep 'ro.product.model'".format(device_serial_num)
            )
            cmd_handle = run_cmd(device_product_cmd)
            product = cmd_handle[0]
            product = (
                product.split(": ")[1].strip().replace("[", "").replace("]", "")  # noqa
            )  # noqa
            device_dict[device_serial_num]["product"] = product
            logger.debug(product)

        logger.debug(device_dict)
        logger.info("len(device_dict):{}".format(len(device_dict)))
        return device_dict