Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor state.dart (part 2) #596

Closed
wants to merge 50 commits into from
Closed
Changes from 1 commit
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
ada5786
move main_screen.dart into a separate folder
d-uzlov Oct 26, 2022
2cf0706
extract downloading screen into a separate class
d-uzlov Oct 26, 2022
7a30db9
extract ready screen into a separate class
d-uzlov Oct 26, 2022
6161510
extract aborting screen into a separate class
d-uzlov Oct 26, 2022
1711d08
move firebaseManager out of state
d-uzlov Oct 27, 2022
56db9a2
move boardDecoder out of state
d-uzlov Oct 27, 2022
26e4e9d
refactor state.dart
d-uzlov Oct 27, 2022
2e5255d
try to isolate state usage in ui
d-uzlov Oct 27, 2022
61c0649
refactor result screen
d-uzlov Oct 27, 2022
a0f92c0
refactor result screen
d-uzlov Oct 27, 2022
2b47f60
refactor config manager
d-uzlov Oct 27, 2022
683a9fa
refactor config manager
d-uzlov Oct 27, 2022
3d49ad6
refactor config manager
d-uzlov Oct 27, 2022
46f344e
refactor config manager
d-uzlov Oct 28, 2022
26dfc4c
refactor benchmarkstate
d-uzlov Oct 28, 2022
f2774be
refactor result manager
d-uzlov Oct 28, 2022
74c653e
refactor state.dart
d-uzlov Oct 28, 2022
288883f
refactor benchmarkstate, configmanager, taskrunner
d-uzlov Oct 28, 2022
1ec9391
refactor benchmarkstate
d-uzlov Oct 28, 2022
190682b
make resourcemanager private
d-uzlov Oct 28, 2022
69a962f
refactor benchmarkstate
d-uzlov Oct 28, 2022
4ea6914
extract lastresultmanager
d-uzlov Oct 28, 2022
454d781
refactor result restoration
d-uzlov Oct 28, 2022
6b520c2
refactor task selection saving
d-uzlov Oct 28, 2022
a96bcdc
add lastresultmanager provider
d-uzlov Oct 28, 2022
b2fa7c7
refactor benchmarkstate
d-uzlov Oct 28, 2022
5657c2f
move benchmarklist into tasklistmanager
d-uzlov Oct 28, 2022
49e6dbd
remove benchmarks getter from benchmarkstate
d-uzlov Oct 28, 2022
840af29
refactor benchmarkstate
d-uzlov Oct 28, 2022
4a1b9a4
use explicit state in benchmarkstate
d-uzlov Oct 29, 2022
8cbb57a
fix result restoration
d-uzlov Oct 29, 2022
7b681e9
fix aborting
d-uzlov Oct 29, 2022
55cee40
fix task selection saving
d-uzlov Oct 29, 2022
5e83d49
fix result history saving
d-uzlov Oct 29, 2022
41abe22
refactor starting benchmark
d-uzlov Oct 29, 2022
be3a49f
refactor benchmarkstate
d-uzlov Oct 29, 2022
8136d0b
fix result restoration on startup
d-uzlov Oct 29, 2022
f904b7e
refactor benchmarkstate
d-uzlov Oct 29, 2022
40e45c6
rename benchmarkstate to appstate
d-uzlov Oct 29, 2022
57659b7
move appstate to state folder
d-uzlov Oct 29, 2022
ae85106
extract appstatehelper
d-uzlov Oct 29, 2022
425dd12
refactor appstate
d-uzlov Oct 29, 2022
637a279
add documentation for appstate
d-uzlov Oct 29, 2022
9f1948c
add documentation to some classes
d-uzlov Oct 29, 2022
4b80e71
rename runMode readable field
d-uzlov Oct 29, 2022
6727432
move loadgenlogfilename to class level
d-uzlov Oct 29, 2022
ceb9837
fix fast mode cooldown duration
d-uzlov Oct 29, 2022
97e013b
fix config reading on first launch
d-uzlov Oct 30, 2022
b7207cb
adjust documentation in appstate
d-uzlov Oct 30, 2022
c551df3
Merge commit '38327317a45fd0593fb92240b14c4c0e99a46292' into 556/refa…
d-uzlov Oct 31, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
move benchmarklist into tasklistmanager
d-uzlov committed Oct 28, 2022

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
commit 5657c2fd835f771bc734f607ef22ce47bc5f1efc
33 changes: 14 additions & 19 deletions flutter/lib/benchmark/state.dart
Original file line number Diff line number Diff line change
@@ -6,12 +6,12 @@ import 'package:flutter/foundation.dart' show ChangeNotifier;
import 'package:wakelock/wakelock.dart';

import 'package:mlperfbench/backend/bridge/isolate.dart';
import 'package:mlperfbench/backend/list.dart';
import 'package:mlperfbench/build_info.dart';
import 'package:mlperfbench/resources/config_manager.dart';
import 'package:mlperfbench/resources/resource_manager.dart';
import 'package:mlperfbench/resources/validation_helper.dart';
import 'package:mlperfbench/state/last_result_manager.dart';
import 'package:mlperfbench/state/task_list_manager.dart';
import 'package:mlperfbench/state/task_runner.dart';
import 'package:mlperfbench/store.dart';
import 'benchmark.dart';
@@ -26,7 +26,7 @@ enum BenchmarkStateEnum {

class BenchmarkState extends ChangeNotifier {
final Store _store;
final BackendInfo backendInfo;
final TaskListManager taskListManager;
final ResourceManager _resourceManager;
final ConfigManager _configManager;
final TaskRunner taskRunner;
@@ -39,9 +39,7 @@ class BenchmarkState extends ChangeNotifier {
// null - downloading/waiting; false - running; true - done
bool? _doneRunning;

List<Benchmark> get benchmarks => _middle.benchmarks;

late BenchmarkList _middle;
List<Benchmark> get benchmarks => taskListManager.taskList.benchmarks;

BenchmarkStateEnum get state {
if (!_resourceManager.done) return BenchmarkStateEnum.downloading;
@@ -61,14 +59,14 @@ class BenchmarkState extends ChangeNotifier {
ValidationHelper get validator {
return ValidationHelper(
resourceManager: _resourceManager,
middle: _middle,
middle: taskListManager.taskList,
selectedRunModes: taskRunner.selectedRunModes,
);
}

BenchmarkState(
this._store,
this.backendInfo,
this.taskListManager,
this._resourceManager,
this._configManager,
this.taskRunner,
@@ -118,7 +116,7 @@ class BenchmarkState extends ChangeNotifier {
await Wakelock.enable();
print('start loading resources');
await _resourceManager.handleResources(
_middle.listResources(
taskListManager.taskList.listResources(
modes: [taskRunner.perfMode, taskRunner.accuracyMode],
skipInactive: false,
),
@@ -134,15 +132,15 @@ class BenchmarkState extends ChangeNotifier {
static Future<BenchmarkState> create({
required Store store,
required BridgeIsolate bridgeIsolate,
required BackendInfo backendInfo,
required TaskListManager taskListManager,
required ResourceManager resourceManager,
required ConfigManager configManager,
required TaskRunner taskRunner,
required LastResultManager lastResultManager,
}) async {
final result = BenchmarkState(
store,
backendInfo,
taskListManager,
resourceManager,
configManager,
taskRunner,
@@ -168,19 +166,16 @@ class BenchmarkState extends ChangeNotifier {
stackTrace = null;
taskConfigFailedToLoad = false;

_middle = BenchmarkList(
appConfig: _configManager.currentConfig,
backendConfig: backendInfo.settings.benchmarkSetting,
);
_middle.restoreSelection(
taskListManager.setAppConfig(_configManager.currentConfig);
taskListManager.taskList.restoreSelection(
BenchmarkList.deserializeTaskSelection(_store.taskSelection));
restoreLastResult();
deferredLoadResources();
}

Future<void> saveTaskSelection() async {
_store.taskSelection =
BenchmarkList.serializeTaskSelection(_middle.getTaskSelection());
_store.taskSelection = BenchmarkList.serializeTaskSelection(
taskListManager.taskList.getTaskSelection());
}

Future<void> runBenchmarks() async {
@@ -199,8 +194,8 @@ class BenchmarkState extends ChangeNotifier {
try {
// we want last result to be null in case an exception is thrown
lastResultManager.value = null;
lastResultManager.value =
await taskRunner.runBenchmarks(_middle, currentLogDir);
lastResultManager.value = await taskRunner.runBenchmarks(
taskListManager.taskList, currentLogDir);
print('Benchmarks finished');

_doneRunning = taskRunner.aborting ? null : true;
5 changes: 4 additions & 1 deletion flutter/lib/main.dart
Original file line number Diff line number Diff line change
@@ -17,6 +17,7 @@ import 'package:mlperfbench/resources/resource_manager.dart';
import 'package:mlperfbench/resources/result_manager.dart';
import 'package:mlperfbench/resources/utils.dart';
import 'package:mlperfbench/state/last_result_manager.dart';
import 'package:mlperfbench/state/task_list_manager.dart';
import 'package:mlperfbench/state/task_runner.dart';
import 'package:mlperfbench/store.dart';
import 'package:mlperfbench/ui/root/main_screen/main_screen.dart';
@@ -74,10 +75,12 @@ Future<void> launchUi() async {
backendInfo: backendInfo,
);
final lastResultManager = LastResultManager(store);
final taskListManager =
TaskListManager(backendSettings: backendInfo.settings);
final benchmarkState = await BenchmarkState.create(
store: store,
bridgeIsolate: bridgeIsolate,
backendInfo: backendInfo,
taskListManager: taskListManager,
resourceManager: resourceManager,
configManager: configManager,
taskRunner: taskRunner,
20 changes: 20 additions & 0 deletions flutter/lib/state/task_list_manager.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import 'package:mlperfbench/benchmark/benchmark.dart';
import 'package:mlperfbench/protos/backend_setting.pb.dart' as pb;
import 'package:mlperfbench/protos/mlperf_task.pb.dart' as pb;

class TaskListManager {
final pb.BackendSetting backendSettings;

TaskListManager({
required this.backendSettings,
});

late BenchmarkList taskList;

void setAppConfig(pb.MLPerfConfig config) {
taskList = BenchmarkList(
appConfig: config,
backendConfig: backendSettings.benchmarkSetting,
);
}
}