History log of /frameworks/ml/nn/runtime/Manager.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
f4ececdcf4879279e0559b5111e0e0b32f25e0de 16-Oct-2017 Jean-Luc Brouillet <jeanluc@google.com> Handle errors on getCapabilities

If the driver can't handle the call, don't use it.

Bug: 67310896
Test: System tests and VTS tests
Change-Id: Ia44b324a0f6116395967812d05c22b99b131608d
/frameworks/ml/nn/runtime/Manager.h
e3178825b8686f3300a895572691a2e8c1f0676b 05-Oct-2017 David Gross <dgross@google.com> Asynchronus partitioned execution, plus minor code cleanup.

Partioned execution is now asynchronous end-to-end, although
the individual execution steps are serialized with respect to
one another.

Other changes:
- Minor code cleanup per comments from previous CL
https://googleplex-android-review.git.corp.google.com/#/c/platform/frameworks/ml/+/3000624/
including comments on memory management for
inter-partition temporaries.
- Remove "simulation" form of partitioning, and renumber
values of debug.nn.partition property accordingly.
- Fix android:nn:wrapper::Event -- add missing contructor
and fix comment.

Bug: 63905942
Test: mma (user)
mma (userdebug)
ml/nn/runtime/tests (userdebug)
(and spot check that debug.nn.partition unspecified,
0, and 1 exhibits the correct control over
partitioning behavior)

Change-Id: I5767d2144c4a42258444a6445866529919d4fe8d
/frameworks/ml/nn/runtime/Manager.h
a2a03635c8f215cb75be68ff1939bf4dec285ef8 03-Oct-2017 David Gross <dgross@google.com> Make partitioning and execution of partitioned plan the default.

Also, rename the debug.nn.partition.test property to
debug.nn.partition, and slightly change the interpretation of its
values:
2: the default: partitioned execution, with a fallback to
non-partitioned execution if there is a partitioning failure
3: a new value: partitioned execution, with NO fallback to
non-partitioned execution if there is a partitioning failure

Bug: 63905942
Test: mma (user)
ml/nn/runtime/tests (user)
(no new failures, logcat looks plausible,
debug.nn.partition 0 and 3 have no effect)
mma (userdebug)
ml/nn/runtime/tests (userdebug)
(with debug.nn.partition unspecified, 0, 1, 2, and 3;
no new failures, logcat looks plausible; also tried
manually introducing failures several places in the
partitioning process to ensure that simulation/fallback
behavior works properly for different values of
debug.nn.partition)

Change-Id: I04c71d7009aa0d1c971833a2af5816ff5830ecc9
/frameworks/ml/nn/runtime/Manager.h
b93885e8526dbbd336ed1a24f8ef8ba0007524dd 02-Oct-2017 David Gross <dgross@google.com> Handle HIDL transport error calling IDevice::getSupportedOperations().

If HIDL transport error when calling IDevice::getSupportedOperations(),
behave as if no operations are supported.

Per

https://source.android.com/devices/architecture/hidl-cpp/functions#transport

this is needed to prevent killing the client when a transport error
occurs.

This fixes the GeneratedTests.mobilenet_quantized failure

Abort message: 'Status.cpp:149] Failed HIDL return status not checked:
Status(EX_TRANSACTION_FAILED): 'FAILED_TRANSACTION: ''

discussed here

https://groups.google.com/a/google.com/d/topic/android-ml-dev/LlHRQZrBQyc/discussion

which is because of trying to pass a too-large Model across HIDL.

Bug: 63905942
Bug: 67310896
Test: mma (user)
mma (userdebug)
ml/nn/runtime/tests (userdebug)
(with debug.nn.partition.test 0, 1, and 2;
mobilenet_quantized is fixed;
no new failures, logcat looks plausible)

Change-Id: I77274e17a54845b2dbb0dbce2ea5a08166681d8d
/frameworks/ml/nn/runtime/Manager.h
1f4381539b7e89c42336ee7cd1addb9a4c317b34 28-Sep-2017 David Gross <dgross@google.com> Finish implementing single-partition graphs.

This includes wiring up the partitioning algorithm
to the NN API compilation and execution phases under
debug.nn.partition.test=2: When we have a single-
partition graph, we rely on the device selection and
compilation performed by the partitioning algorithm,
rather than doing it at execution time as we were
before.

Bug: 63905942
Test: mma (user)
mma (userdebug)
ml/nn/runtime/tests (userdebug)
(with debug.nn.partition.test 0, 1, and 2;
no new failures, logcat looks plausible,
compilation happens at the expected times)

Change-Id: I6cd8b53625588d5aca81c87cc8600735e384b8e0
/frameworks/ml/nn/runtime/Manager.h
ef22aa5727b96e9a0863ef71cfbe3dbdac339408 16-Sep-2017 Jean-Luc Brouillet <jeanluc@google.com> Create mutiple sample test drivers

Create multiple sample test drivers to better test partitioning.

Bug: 63905942
Test: Compiled, ran runtimte/tests and VTS tests.

Change-Id: I037aeb82a849592f3a931bcdc558f32010aa1146
/frameworks/ml/nn/runtime/Manager.h
dae4833386d34864ae16e4bfa2169844a55c8ea5 22-Sep-2017 David Gross <dgross@google.com> Move some debugging capabilities under #ifdef NN_DEBUGGABLE.

This makes them available under eng and userdebug but not user.

Bug: 63905942
Test: mm (userdebug and user)

Change-Id: I196c5df77290ed44a040e935adbf567f818e979d
/frameworks/ml/nn/runtime/Manager.h
7d6ac906f000f3afe418e92c0a4ae36b2ea1143e 23-Sep-2017 Jean-Luc Brouillet <jeanluc@google.com> Remove operationTuple.

Removed operationTuple from Model in the HAL, as the data type was
redundant information.

Removed supportedOperationTuples from Capabilities, as real drivers need
more complex restrictions than this provided. For the OC-MR1, we'll just
rely on getSupportedNodes.

Also removed the unused cachesCompilation.

Bug: 63905942
Test: Compiled and ran tests, incl. vts.

Change-Id: I84433d1e0e5211ac2f77317f3752171d85a5ab04
/frameworks/ml/nn/runtime/Manager.h
4a2553eb1574c04ee5614d52a1de54a9a73760f4 19-Sep-2017 David Gross <dgross@google.com> Testing fix: Modify SampleDriver behavior under property control.

Use the property "debug.nn.sample.supported" to govern the way
Device interacts with the sample driver, to pretend that it doesn't
support all operation tuples, or to pretend that it needs to be
invoked on a graph (and possibly doesn't support every node in
the graph).

Bug: 63905942
Test: mm

Change-Id: I031b4043c279e23c769ac708bbb8ca12189d5dba
/frameworks/ml/nn/runtime/Manager.h
91e8417c4c395e3922d12abfd956b93b71121976 14-Sep-2017 Jean-Luc Brouillet <jeanluc@google.com> Partition the requests to run on multiple devices.

Partition the request so that subgraphs can run on the best device.
Also respects the capabilities of a device so that we don't try
to run a device incapable to run a graph.

Bug: 63905942
Test: Compiled and ran unit tests. We'll want more advance tests.

Change-Id: I8662fa719661e5b68c47cd75703edb5937fc8f0a
/frameworks/ml/nn/runtime/Manager.h
7612f29b31f97f3b15769264131566b36dea9a25 12-Sep-2017 Jean-Luc Brouillet <jeanluc@google.com> Remove the initialization and shutdown APIs.

Initialize the list of drivers as needed rather than
requiring an API call. This initialization will be
triggered when compiling the first model.

Bug: 63905942
Test: Compiled and ran the unit tests.

Change-Id: I1893a9f9d96d9d241916de3a7dd3cb7a54e33b06
/frameworks/ml/nn/runtime/Manager.h
707dbd2d55f5dacf78ffb3ad7c8b3f37c2e9d758 25-Jul-2017 Jean-Luc Brouillet <jeanluc@google.com> Pass the model as an HIDL component.

Major rework where instead of serializing the model and
passing it in a shared memory, we pass it via HIDL.

The runtime/test code does two run, one goes through the
default CPU path, the other through any available driver.

Note: The code in hardware/../sample was written by Michael Buttler.

Bug: 63905942
Test: Runs both the CPU path and through the sample driver.
Change-Id: Ie3ee975d33056ba299895b13193f4698a690dd04
/frameworks/ml/nn/runtime/Manager.h
96775128e3bcfdc5be51b62edc50309c83861fe8 12-Jul-2017 Jean-Luc Brouillet <jeanluc@google.com> First implementation of the Neural Networks API.

This first version can run a simple query on the CPU either
via the fallback path or through a simulated driver.

This code has many deficiencies: single threaded, not all
validation are done, not going through HIDL, and not
enough unit tests. Expect more changes!

Test: Compiled and ran the unit tests

Change-Id: I9f6a485a2e7207aeb5f91a2904dcb4b7fd8a6f65
/frameworks/ml/nn/runtime/Manager.h