|
| 1 | +# Changelog |
| 2 | + |
| 3 | +All notable changes to OVMobileBench will be documented in this file. |
| 4 | + |
| 5 | +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), |
| 6 | +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 7 | + |
| 8 | +## [Unreleased] |
| 9 | + |
| 10 | +### Added |
| 11 | + |
| 12 | +- **Three flexible OpenVINO distribution modes** |
| 13 | + - **Build mode**: Build OpenVINO from source with custom configurations |
| 14 | + - **Install mode**: Use existing OpenVINO installation directory |
| 15 | + - **Link mode**: Download OpenVINO archives with "latest" auto-detection support |
| 16 | +- **Automatic platform detection** for downloading appropriate OpenVINO builds |
| 17 | +- **Comprehensive test coverage** for new OpenVINO modes with 46 new tests |
| 18 | +- **New documentation**: `docs/openvino-modes.md` with detailed usage examples |
| 19 | +- **Support for `archive_url: "latest"`** to automatically fetch the latest OpenVINO build |
| 20 | +- **Enhanced architecture documentation** with Mermaid diagrams |
| 21 | +- **Android SDK/NDK installer module** for automated setup |
| 22 | +- **SSH device support** for Linux ARM devices using Paramiko |
| 23 | +- **Temperature monitoring** and performance tuning capabilities |
| 24 | +- **GitHub Actions CI/CD** integration with automated testing |
| 25 | +- **Device abstraction layer** supporting Android (ADB) and Linux (SSH) |
| 26 | +- **Matrix testing capabilities** for parameter sweep benchmarking |
| 27 | +- **JSON and CSV report generation** with detailed metrics |
| 28 | +- **Pre-commit hooks** for code quality enforcement |
| 29 | +- **Pydantic-based configuration** with strong typing and validation |
| 30 | +- **Typer CLI framework** for modern command-line interface |
| 31 | +- **Pure Python adbutils** integration (no external ADB binary required) |
| 32 | +- **Benchmark result parsing** with detailed metrics extraction |
| 33 | +- **Artifact management system** for organized storage of builds and results |
| 34 | +- **Custom exception hierarchy** for better error handling |
| 35 | +- **Structured logging** with multiple verbosity levels |
| 36 | +- **Docker support** for development environment (planned) |
| 37 | +- **Web dashboard** for real-time monitoring (planned) |
| 38 | + |
| 39 | +### Changed |
| 40 | + |
| 41 | +- **Configuration schema**: `build` section renamed to `openvino` with new `mode` field |
| 42 | +- **Updated example YAML files** to demonstrate all three OpenVINO modes |
| 43 | +- **Improved configuration documentation** with mode-specific examples |
| 44 | +- **Enhanced pipeline** to handle OpenVINO distribution flexibly |
| 45 | +- **Modernized architecture documentation** with professional diagrams |
| 46 | +- **Updated pre-commit hooks** to latest versions |
| 47 | +- **Improved device abstraction** with pure Python adbutils |
| 48 | +- **Enhanced error handling** with custom exception hierarchy |
| 49 | +- **Refactored builders** to support multiple platforms |
| 50 | +- **Better separation of concerns** in pipeline stages |
| 51 | +- **Improved test organization** with dedicated test files per module |
| 52 | + |
| 53 | +### Fixed |
| 54 | + |
| 55 | +- **Unified YAML comment formatting** across example configurations |
| 56 | +- **Pre-commit hook compliance** for all new code |
| 57 | +- **ADB connection stability** issues on newer Android versions |
| 58 | +- **Memory leaks** in long-running benchmarks |
| 59 | +- **Report generation** for large datasets |
| 60 | +- **SSH timeout issues** on slow network connections |
| 61 | +- **CMake cache corruption** on interrupted builds |
| 62 | +- **Path handling** for Windows compatibility |
| 63 | +- **Unicode handling** in benchmark output parsing |
| 64 | +- **Timezone issues** in timestamp generation |
| 65 | + |
| 66 | +### Security |
| 67 | + |
| 68 | +- **No hardcoded credentials** - all secrets via environment variables |
| 69 | +- **Input validation** using Pydantic schemas |
| 70 | +- **Command injection prevention** with parameterized shell commands |
| 71 | +- **Path traversal prevention** in file operations |
| 72 | +- **Secure SSH key handling** for Linux devices |
| 73 | + |
| 74 | +### Deprecated |
| 75 | + |
| 76 | +- **Old configuration format** with `build.enabled` field - use `openvino.mode` instead |
| 77 | +- **Direct ADB binary calls** - replaced with adbutils Python library |
| 78 | +- **Manual device detection** - now automatic with device abstraction layer |
| 79 | + |
| 80 | +### Migration Guide |
| 81 | + |
| 82 | +To migrate from the old configuration format to the new one: |
| 83 | + |
| 84 | +**Old format (deprecated):** |
| 85 | + |
| 86 | +```yaml |
| 87 | +build: |
| 88 | + enabled: true |
| 89 | + openvino_repo: "/path/to/openvino" |
| 90 | + openvino_commit: "HEAD" |
| 91 | + build_type: "Release" |
| 92 | +``` |
| 93 | +
|
| 94 | +**New format (current):** |
| 95 | +
|
| 96 | +```yaml |
| 97 | +openvino: |
| 98 | + mode: "build" # or "install" or "link" |
| 99 | + source_dir: "/path/to/openvino" |
| 100 | + commit: "HEAD" |
| 101 | + build_type: "Release" |
| 102 | +``` |
| 103 | +
|
| 104 | +### Key Features |
| 105 | +
|
| 106 | +- **End-to-end automation**: From build to report generation |
| 107 | +- **Multi-platform support**: Android, Linux ARM, iOS (planned) |
| 108 | +- **Flexible OpenVINO distribution**: Three modes to suit different workflows |
| 109 | +- **Matrix testing**: Comprehensive parameter sweep capabilities |
| 110 | +- **Device abstraction**: Uniform interface for different device types |
| 111 | +- **Rich reporting**: Multiple output formats with detailed metrics |
| 112 | +- **CI/CD ready**: GitHub Actions integration included |
| 113 | +- **Extensible architecture**: Plugin system for custom devices and reports |
| 114 | +- **Production ready**: Comprehensive testing and error handling |
| 115 | +
|
| 116 | +### Supported Platforms |
| 117 | +
|
| 118 | +**Host Platforms:** |
| 119 | +
|
| 120 | +- Linux (x86_64, ARM64) |
| 121 | +- macOS (x86_64, Apple Silicon) |
| 122 | +- Windows (x86_64, ARM64) |
| 123 | +
|
| 124 | +**Target Devices:** |
| 125 | +
|
| 126 | +- Android devices (ARM64, x86_64) via ADB |
| 127 | +- Linux ARM devices (Raspberry Pi, Jetson) via SSH |
| 128 | +- iOS devices (planned) |
| 129 | +
|
| 130 | +**OpenVINO Versions:** |
| 131 | +
|
| 132 | +- 2024.x releases |
| 133 | +- Nightly builds |
| 134 | +- Custom builds from source |
| 135 | +
|
| 136 | +### Requirements |
| 137 | +
|
| 138 | +- Python 3.11+ |
| 139 | +- CMake 3.24+ (for build mode) |
| 140 | +- Ninja 1.11+ (for build mode) |
| 141 | +- Android NDK r26d+ (for Android targets) |
| 142 | +- SSH access (for Linux targets) |
| 143 | +
|
| 144 | +## Contributors |
| 145 | +
|
| 146 | +- Alexander Nesterov (@allnes) - Project Lead |
| 147 | +- Community contributors via GitHub |
| 148 | +
|
| 149 | +## Links |
| 150 | +
|
| 151 | +- [GitHub Repository](https://github.com/embedded-dev-research/OVMobileBench) |
| 152 | +- [Documentation](https://github.com/embedded-dev-research/OVMobileBench/tree/main/docs) |
| 153 | +- [Issue Tracker](https://github.com/embedded-dev-research/OVMobileBench/issues) |
| 154 | +- [Discussions](https://github.com/embedded-dev-research/OVMobileBench/discussions) |
0 commit comments