Loading neuralnetworks/1.0/Android.bp +7 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ filegroup { srcs: [ "types.hal", "IDevice.hal", "IEvent.hal", "IPreparedModel.hal", ], } Loading @@ -19,6 +20,7 @@ genrule { out: [ "android/hardware/neuralnetworks/1.0/types.cpp", "android/hardware/neuralnetworks/1.0/DeviceAll.cpp", "android/hardware/neuralnetworks/1.0/EventAll.cpp", "android/hardware/neuralnetworks/1.0/PreparedModelAll.cpp", ], } Loading @@ -38,6 +40,11 @@ genrule { "android/hardware/neuralnetworks/1.0/BnHwDevice.h", "android/hardware/neuralnetworks/1.0/BpHwDevice.h", "android/hardware/neuralnetworks/1.0/BsDevice.h", "android/hardware/neuralnetworks/1.0/IEvent.h", "android/hardware/neuralnetworks/1.0/IHwEvent.h", "android/hardware/neuralnetworks/1.0/BnHwEvent.h", "android/hardware/neuralnetworks/1.0/BpHwEvent.h", "android/hardware/neuralnetworks/1.0/BsEvent.h", "android/hardware/neuralnetworks/1.0/IPreparedModel.h", "android/hardware/neuralnetworks/1.0/IHwPreparedModel.h", "android/hardware/neuralnetworks/1.0/BnHwPreparedModel.h", Loading neuralnetworks/1.0/IEvent.hal 0 → 100644 +49 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* This HAL is a work in progress */ package android.hardware.neuralnetworks@1.0; /** * The IEvent interface is a callback object passed by the * Neuralnetworks runtime to the vendor service. It is used as a * synchronization primitive between one or more runtime threads and a * single asynchronous vendor thread. An event object is passed as an * argument to a HIDL call that is expected to take a non-trivial * amount of time. When the asynchronous execution thread has * completed its computation, it must call "notify" on the event to * indicate to the Neuralnetworks runtime whether the computation was * successful or not, and that the corresponding output is ready to be * consumed if the execution was successful. * * TODO: Mention that "notify" is also called by a runtime thread * during CPU fallback execution? Depends on whether the HIDL comments * are strictly for vendors or not. */ interface IEvent { /** * IEvent::notify is called by the server thread (i.e. the thread doing the * work) to mark the event as completed so that any threads requiring the * corresponding resources can continue executing. * * @param status Status of the execution associated with the Event. * Should be SUCCESS or ERROR. */ oneway notify(Status status); }; neuralnetworks/1.0/IPreparedModel.hal +3 −2 Original line number Diff line number Diff line Loading @@ -18,8 +18,9 @@ package android.hardware.neuralnetworks@1.0; import IEvent; interface IPreparedModel { // TODO: The execution is synchronous. Change that to have a callback on completion. // Multiple threads can call this execute function concurrently. execute(Request request) generates(bool success); execute(Request request, IEvent event) generates(bool success); }; neuralnetworks/1.0/types.hal +5 −0 Original line number Diff line number Diff line Loading @@ -181,3 +181,8 @@ struct Request { vec<InputOutputInfo> outputs; vec<memory> pools; }; enum Status : uint32_t { SUCCESS, ERROR, }; neuralnetworks/1.0/vts/functional/Android.bp +4 −1 Original line number Diff line number Diff line Loading @@ -16,7 +16,10 @@ cc_test { name: "VtsHalNeuralnetworksV1_0TargetTest", srcs: ["VtsHalNeuralnetworksV1_0TargetTest.cpp"], srcs: [ "Event.cpp", "VtsHalNeuralnetworksV1_0TargetTest.cpp", ], defaults: ["VtsHalTargetTestDefaults"], static_libs: [ "android.hardware.neuralnetworks@1.0", Loading Loading
neuralnetworks/1.0/Android.bp +7 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ filegroup { srcs: [ "types.hal", "IDevice.hal", "IEvent.hal", "IPreparedModel.hal", ], } Loading @@ -19,6 +20,7 @@ genrule { out: [ "android/hardware/neuralnetworks/1.0/types.cpp", "android/hardware/neuralnetworks/1.0/DeviceAll.cpp", "android/hardware/neuralnetworks/1.0/EventAll.cpp", "android/hardware/neuralnetworks/1.0/PreparedModelAll.cpp", ], } Loading @@ -38,6 +40,11 @@ genrule { "android/hardware/neuralnetworks/1.0/BnHwDevice.h", "android/hardware/neuralnetworks/1.0/BpHwDevice.h", "android/hardware/neuralnetworks/1.0/BsDevice.h", "android/hardware/neuralnetworks/1.0/IEvent.h", "android/hardware/neuralnetworks/1.0/IHwEvent.h", "android/hardware/neuralnetworks/1.0/BnHwEvent.h", "android/hardware/neuralnetworks/1.0/BpHwEvent.h", "android/hardware/neuralnetworks/1.0/BsEvent.h", "android/hardware/neuralnetworks/1.0/IPreparedModel.h", "android/hardware/neuralnetworks/1.0/IHwPreparedModel.h", "android/hardware/neuralnetworks/1.0/BnHwPreparedModel.h", Loading
neuralnetworks/1.0/IEvent.hal 0 → 100644 +49 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* This HAL is a work in progress */ package android.hardware.neuralnetworks@1.0; /** * The IEvent interface is a callback object passed by the * Neuralnetworks runtime to the vendor service. It is used as a * synchronization primitive between one or more runtime threads and a * single asynchronous vendor thread. An event object is passed as an * argument to a HIDL call that is expected to take a non-trivial * amount of time. When the asynchronous execution thread has * completed its computation, it must call "notify" on the event to * indicate to the Neuralnetworks runtime whether the computation was * successful or not, and that the corresponding output is ready to be * consumed if the execution was successful. * * TODO: Mention that "notify" is also called by a runtime thread * during CPU fallback execution? Depends on whether the HIDL comments * are strictly for vendors or not. */ interface IEvent { /** * IEvent::notify is called by the server thread (i.e. the thread doing the * work) to mark the event as completed so that any threads requiring the * corresponding resources can continue executing. * * @param status Status of the execution associated with the Event. * Should be SUCCESS or ERROR. */ oneway notify(Status status); };
neuralnetworks/1.0/IPreparedModel.hal +3 −2 Original line number Diff line number Diff line Loading @@ -18,8 +18,9 @@ package android.hardware.neuralnetworks@1.0; import IEvent; interface IPreparedModel { // TODO: The execution is synchronous. Change that to have a callback on completion. // Multiple threads can call this execute function concurrently. execute(Request request) generates(bool success); execute(Request request, IEvent event) generates(bool success); };
neuralnetworks/1.0/types.hal +5 −0 Original line number Diff line number Diff line Loading @@ -181,3 +181,8 @@ struct Request { vec<InputOutputInfo> outputs; vec<memory> pools; }; enum Status : uint32_t { SUCCESS, ERROR, };
neuralnetworks/1.0/vts/functional/Android.bp +4 −1 Original line number Diff line number Diff line Loading @@ -16,7 +16,10 @@ cc_test { name: "VtsHalNeuralnetworksV1_0TargetTest", srcs: ["VtsHalNeuralnetworksV1_0TargetTest.cpp"], srcs: [ "Event.cpp", "VtsHalNeuralnetworksV1_0TargetTest.cpp", ], defaults: ["VtsHalTargetTestDefaults"], static_libs: [ "android.hardware.neuralnetworks@1.0", Loading