| ## Copyright 2022 The IREE Authors | |
| # | |
| # Licensed under the Apache License v2.0 with LLVM Exceptions. | |
| # See https://llvm.org/LICENSE.txt for license information. | |
| # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| """Defines IREE RISC-V benchmarks.""" | |
| from typing import List | |
| from benchmark_suites.iree import benchmark_presets, module_execution_configs, utils | |
| from e2e_test_framework import unique_ids | |
| from e2e_test_framework.definitions import common_definitions, iree_definitions | |
| from e2e_test_framework.device_specs import riscv_specs | |
| from e2e_test_framework.models import tflite_models, tf_models, torch_models | |
| class Linux_RV64_Benchmarks(object): | |
| """Benchmarks RV64 on Linux devices.""" | |
| RV64_CPU_TARGET = iree_definitions.CompileTarget( | |
| target_backend=iree_definitions.TargetBackend.LLVM_CPU, | |
| target_architecture=common_definitions.DeviceArchitecture.RV64_GENERIC, | |
| target_abi=iree_definitions.TargetABI.LINUX_GNU, | |
| ) | |
| DEFAULT_COMPILE_CONFIG = iree_definitions.CompileConfig.build( | |
| id=unique_ids.IREE_COMPILE_CONFIG_LINUX_RV64_GENERIC_DEFAULTS, | |
| tags=["default-flags"], | |
| compile_targets=[RV64_CPU_TARGET], | |
| ) | |
| MODELS = [ | |
| tf_models.MINILM_L12_H384_UNCASED_INT32_SEQLEN128, | |
| tflite_models.DEEPLABV3_FP32, | |
| tflite_models.EFFICIENTNET_INT8, | |
| tflite_models.MOBILEBERT_FP32, | |
| tflite_models.MOBILEBERT_INT8, | |
| tflite_models.MOBILENET_V1, | |
| tflite_models.MOBILENET_V2_INT8, | |
| tflite_models.PERSON_DETECT_INT8, | |
| # PyTorch model are disabled due to https://github.com/openxla/iree/issues/14993. | |
| # torch_models.MODEL_CLIP_TEXT_SEQLEN64_FP32_TORCH, | |
| ] | |
| def generate( | |
| self, | |
| ) -> List[iree_definitions.E2EModelRunConfig]: | |
| """Generates IREE compile and run configs.""" | |
| gen_configs = [ | |
| iree_definitions.ModuleGenerationConfig.build( | |
| compile_config=self.DEFAULT_COMPILE_CONFIG, | |
| imported_model=iree_definitions.ImportedModel.from_model(model), | |
| ) | |
| for model in self.MODELS | |
| ] | |
| run_configs = utils.generate_e2e_model_run_configs( | |
| module_generation_configs=gen_configs, | |
| module_execution_configs=[ | |
| module_execution_configs.ELF_LOCAL_SYNC_CONFIG, | |
| module_execution_configs.get_elf_system_scheduling_local_task_config( | |
| thread_num=2 | |
| ), | |
| ], | |
| device_specs=[riscv_specs.EMULATOR_RISCV_64], | |
| presets=[benchmark_presets.RISCV], | |
| ) | |
| return run_configs | |
| class Linux_RV32_Benchmarks(object): | |
| """Benchmarks RV32 on Linux devices.""" | |
| RV32_CPU_TARGET = iree_definitions.CompileTarget( | |
| target_backend=iree_definitions.TargetBackend.LLVM_CPU, | |
| target_architecture=common_definitions.DeviceArchitecture.RV32_GENERIC, | |
| target_abi=iree_definitions.TargetABI.LINUX_GNU, | |
| ) | |
| DEFAULT_COMPILE_CONFIG = iree_definitions.CompileConfig.build( | |
| id=unique_ids.IREE_COMPILE_CONFIG_LINUX_RV32_GENERIC_DEFAULTS, | |
| tags=["default-flags"], | |
| compile_targets=[RV32_CPU_TARGET], | |
| ) | |
| MODELS = [ | |
| tflite_models.EFFICIENTNET_INT8, | |
| tflite_models.MOBILEBERT_INT8, | |
| tflite_models.PERSON_DETECT_INT8, | |
| tflite_models.MOBILENET_V2_INT8, | |
| ] | |
| def generate( | |
| self, | |
| ) -> List[iree_definitions.E2EModelRunConfig]: | |
| """Generates IREE compile and run configs.""" | |
| gen_configs = [ | |
| iree_definitions.ModuleGenerationConfig.build( | |
| compile_config=self.DEFAULT_COMPILE_CONFIG, | |
| imported_model=iree_definitions.ImportedModel.from_model(model), | |
| ) | |
| for model in self.MODELS | |
| ] | |
| run_configs = utils.generate_e2e_model_run_configs( | |
| module_generation_configs=gen_configs, | |
| module_execution_configs=[module_execution_configs.ELF_LOCAL_SYNC_CONFIG], | |
| device_specs=[riscv_specs.EMULATOR_RISCV_32], | |
| presets=[benchmark_presets.RISCV], | |
| ) | |
| return run_configs |