Loading current.txt +2 −1 Original line number Diff line number Diff line Loading @@ -631,7 +631,8 @@ ac429fca0da4ce91218768ec31b64ded88251f8a26d8c4f27c06abdc5b1926d9 android.hardwar 65c16331e57f6dd68b3971f06f78fe9e3209afb60630c31705aa355f9a52bf0d android.hardware.neuralnetworks@1.3::IBuffer d1f382d14e1384b907d5bb5780df7f01934650d556fedbed2f15a90773c657d6 android.hardware.neuralnetworks@1.3::IDevice 4167dc3ad35e9cd0d2057d4868c7675ae2c3c9d05bbd614c1f5dccfa5fd68797 android.hardware.neuralnetworks@1.3::IExecutionCallback 7d23020248194abbee8091cc624f39a5a6d7ccba338b172d5d2d3df0cceffbee android.hardware.neuralnetworks@1.3::IPreparedModel 29e26e83399b69c7998b787bd30426dd5baa2da350effca76bbee1ba877355c9 android.hardware.neuralnetworks@1.3::IFencedExecutionCallback 384fd9fd6e4d43ea11d407e52ea81da5242c3c5f4b458b8707d8feb652a13e36 android.hardware.neuralnetworks@1.3::IPreparedModel 0439a1fbbec7f16e5e4c653d85ac685d51bfafbae15b8f8cca530acdd7d6a8ce android.hardware.neuralnetworks@1.3::IPreparedModelCallback 5f1a4e0c29fc686ed476f9f04eed35e4405d21288cb2746b978d6891de5cc37d android.hardware.neuralnetworks@1.3::types 3e01d4446cd69fd1c48f8572efd97487bc179564b32bd795800b97bbe10be37b android.hardware.wifi@1.4::IWifi Loading neuralnetworks/1.3/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ hidl_interface { "IBuffer.hal", "IDevice.hal", "IExecutionCallback.hal", "IFencedExecutionCallback.hal", "IPreparedModel.hal", "IPreparedModelCallback.hal", ], Loading neuralnetworks/1.3/IFencedExecutionCallback.hal 0 → 100644 +48 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 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. */ package android.hardware.neuralnetworks@1.3; import @1.2::Timing; import ErrorStatus; /** * IFencedExecutionCallback can be used to query the error status result * and duration information from an IPreparedModel::executeFenced call. */ interface IFencedExecutionCallback { /** * The getExecutionInfo method is used by the clients to query error status * result and duration information. The method must only be called after the actual * evaluation has finished or resulted in an runtime error, as indicated by the status * of the sync fence returned by the IPreparedModel::executeFenced call, otherwise * GENERAL_FAILURE must be returned. * * @return status Error status returned from the asynchronously dispatched execution * must be: * - NONE if the asynchronous execution was successful * - DEVICE_UNAVAILABLE if driver is offline or busy * - GENERAL_FAILURE if the asynchronous task resulted in an * unspecified error * @return timing Duration of execution. Unless MeasureTiming::YES was passed when * launching the execution and status is NONE, all times must * be reported as UINT64_MAX. A driver may choose to report * any time as UINT64_MAX, indicating that particular measurement is * not available. */ getExecutionInfo() generates (ErrorStatus status, Timing timing); }; neuralnetworks/1.3/IPreparedModel.hal +56 −1 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import ErrorStatus; import OptionalTimePoint; import Request; import IExecutionCallback; import IFencedExecutionCallback; /** * IPreparedModel describes a model that has been prepared for execution and Loading Loading @@ -91,7 +92,8 @@ interface IPreparedModel extends @1.2::IPreparedModel { * execution cannot be finished by the deadline, the * execution must be aborted. * @param callback A callback object used to return the error status of * the execution. The callback object's notify function must * the execution, shape information of model output operands, and * duration of execution. The callback object's notify function must * be called exactly once, even if the execution was * unsuccessful. * @return status Error status of the call, must be: Loading Loading @@ -187,4 +189,57 @@ interface IPreparedModel extends @1.2::IPreparedModel { OptionalTimePoint deadline) generates (ErrorStatus status, vec<OutputShape> outputShapes, Timing timing); /** * Launch a fenced asynchronous execution on a prepared model. * * The execution is performed asynchronously with respect to the caller. * executeFenced must fully validate the request, and only accept one that is * guaranteed to be completed, unless a hardware failure or kernel panic happens on the device. * If there is an error during validation, executeFenced must immediately return with * the corresponding ErrorStatus. If the request is valid and there is no error launching, * executeFenced must dispatch an asynchronous task to perform the execution in the * background, and immediately return with ErrorStatus::NONE, a sync_fence that will be * signaled once the execution is completed, and a callback that can be used by the client * to query the duration and runtime error status. If the task has finished * before the call returns, empty handle may be returned for the sync fence. If the * asynchronous task fails to launch, executeFenced must immediately return with * ErrorStatus::GENERAL_FAILURE, and empty handle for the sync fence and nullptr * for callback. The execution must wait for all the sync fences (if any) in wait_for to be * signaled before starting the actual execution. * * If any of sync fences in wait_for changes to error status after the executeFenced * call succeeds, the driver must immediately set the returned sync fence to error status. * * When the asynchronous task has finished its execution, it must * immediately signal the sync_fence created when dispatching. After * the sync_fence is signaled, the task must not modify the content of * any data object referenced by 'request' (described by the * {@link @1.0::DataLocation} of a {@link @1.0::RequestArgument}). * * Any number of calls to the executeFenced, execute* and executeSynchronously* * functions, in any combination, may be made concurrently, even on the same * IPreparedModel object. * * @param request The input and output information on which the prepared * model is to be executed. * @param waitFor A vector of sync fence file descriptors. * Execution must not start until all sync fences have been signaled. * @param measure Specifies whether or not to measure duration of the execution. * The duration runs from the time the driver sees the call * to the executeFenced function to the time sync_fence is triggered. * @return status Error status of the call, must be: * - NONE if task is successfully launched * - DEVICE_UNAVAILABLE if driver is offline or busy * - GENERAL_FAILURE if there is an unspecified error * - INVALID_ARGUMENT if one of the input arguments is invalid, including * fences in error states. * @return syncFence The sync fence that will be triggered when the task is completed. * The sync fence will be set to error if a critical error, * e.g. hardware failure or kernel panic, occurs when doing execution. * @return callback The IFencedExecutionCallback can be used to query information like duration * and error status when the execution is completed. */ executeFenced(Request request, vec<handle> waitFor, MeasureTiming measure) generates (ErrorStatus status, handle syncFence, IFencedExecutionCallback callback); }; Loading
current.txt +2 −1 Original line number Diff line number Diff line Loading @@ -631,7 +631,8 @@ ac429fca0da4ce91218768ec31b64ded88251f8a26d8c4f27c06abdc5b1926d9 android.hardwar 65c16331e57f6dd68b3971f06f78fe9e3209afb60630c31705aa355f9a52bf0d android.hardware.neuralnetworks@1.3::IBuffer d1f382d14e1384b907d5bb5780df7f01934650d556fedbed2f15a90773c657d6 android.hardware.neuralnetworks@1.3::IDevice 4167dc3ad35e9cd0d2057d4868c7675ae2c3c9d05bbd614c1f5dccfa5fd68797 android.hardware.neuralnetworks@1.3::IExecutionCallback 7d23020248194abbee8091cc624f39a5a6d7ccba338b172d5d2d3df0cceffbee android.hardware.neuralnetworks@1.3::IPreparedModel 29e26e83399b69c7998b787bd30426dd5baa2da350effca76bbee1ba877355c9 android.hardware.neuralnetworks@1.3::IFencedExecutionCallback 384fd9fd6e4d43ea11d407e52ea81da5242c3c5f4b458b8707d8feb652a13e36 android.hardware.neuralnetworks@1.3::IPreparedModel 0439a1fbbec7f16e5e4c653d85ac685d51bfafbae15b8f8cca530acdd7d6a8ce android.hardware.neuralnetworks@1.3::IPreparedModelCallback 5f1a4e0c29fc686ed476f9f04eed35e4405d21288cb2746b978d6891de5cc37d android.hardware.neuralnetworks@1.3::types 3e01d4446cd69fd1c48f8572efd97487bc179564b32bd795800b97bbe10be37b android.hardware.wifi@1.4::IWifi Loading
neuralnetworks/1.3/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ hidl_interface { "IBuffer.hal", "IDevice.hal", "IExecutionCallback.hal", "IFencedExecutionCallback.hal", "IPreparedModel.hal", "IPreparedModelCallback.hal", ], Loading
neuralnetworks/1.3/IFencedExecutionCallback.hal 0 → 100644 +48 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 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. */ package android.hardware.neuralnetworks@1.3; import @1.2::Timing; import ErrorStatus; /** * IFencedExecutionCallback can be used to query the error status result * and duration information from an IPreparedModel::executeFenced call. */ interface IFencedExecutionCallback { /** * The getExecutionInfo method is used by the clients to query error status * result and duration information. The method must only be called after the actual * evaluation has finished or resulted in an runtime error, as indicated by the status * of the sync fence returned by the IPreparedModel::executeFenced call, otherwise * GENERAL_FAILURE must be returned. * * @return status Error status returned from the asynchronously dispatched execution * must be: * - NONE if the asynchronous execution was successful * - DEVICE_UNAVAILABLE if driver is offline or busy * - GENERAL_FAILURE if the asynchronous task resulted in an * unspecified error * @return timing Duration of execution. Unless MeasureTiming::YES was passed when * launching the execution and status is NONE, all times must * be reported as UINT64_MAX. A driver may choose to report * any time as UINT64_MAX, indicating that particular measurement is * not available. */ getExecutionInfo() generates (ErrorStatus status, Timing timing); };
neuralnetworks/1.3/IPreparedModel.hal +56 −1 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import ErrorStatus; import OptionalTimePoint; import Request; import IExecutionCallback; import IFencedExecutionCallback; /** * IPreparedModel describes a model that has been prepared for execution and Loading Loading @@ -91,7 +92,8 @@ interface IPreparedModel extends @1.2::IPreparedModel { * execution cannot be finished by the deadline, the * execution must be aborted. * @param callback A callback object used to return the error status of * the execution. The callback object's notify function must * the execution, shape information of model output operands, and * duration of execution. The callback object's notify function must * be called exactly once, even if the execution was * unsuccessful. * @return status Error status of the call, must be: Loading Loading @@ -187,4 +189,57 @@ interface IPreparedModel extends @1.2::IPreparedModel { OptionalTimePoint deadline) generates (ErrorStatus status, vec<OutputShape> outputShapes, Timing timing); /** * Launch a fenced asynchronous execution on a prepared model. * * The execution is performed asynchronously with respect to the caller. * executeFenced must fully validate the request, and only accept one that is * guaranteed to be completed, unless a hardware failure or kernel panic happens on the device. * If there is an error during validation, executeFenced must immediately return with * the corresponding ErrorStatus. If the request is valid and there is no error launching, * executeFenced must dispatch an asynchronous task to perform the execution in the * background, and immediately return with ErrorStatus::NONE, a sync_fence that will be * signaled once the execution is completed, and a callback that can be used by the client * to query the duration and runtime error status. If the task has finished * before the call returns, empty handle may be returned for the sync fence. If the * asynchronous task fails to launch, executeFenced must immediately return with * ErrorStatus::GENERAL_FAILURE, and empty handle for the sync fence and nullptr * for callback. The execution must wait for all the sync fences (if any) in wait_for to be * signaled before starting the actual execution. * * If any of sync fences in wait_for changes to error status after the executeFenced * call succeeds, the driver must immediately set the returned sync fence to error status. * * When the asynchronous task has finished its execution, it must * immediately signal the sync_fence created when dispatching. After * the sync_fence is signaled, the task must not modify the content of * any data object referenced by 'request' (described by the * {@link @1.0::DataLocation} of a {@link @1.0::RequestArgument}). * * Any number of calls to the executeFenced, execute* and executeSynchronously* * functions, in any combination, may be made concurrently, even on the same * IPreparedModel object. * * @param request The input and output information on which the prepared * model is to be executed. * @param waitFor A vector of sync fence file descriptors. * Execution must not start until all sync fences have been signaled. * @param measure Specifies whether or not to measure duration of the execution. * The duration runs from the time the driver sees the call * to the executeFenced function to the time sync_fence is triggered. * @return status Error status of the call, must be: * - NONE if task is successfully launched * - DEVICE_UNAVAILABLE if driver is offline or busy * - GENERAL_FAILURE if there is an unspecified error * - INVALID_ARGUMENT if one of the input arguments is invalid, including * fences in error states. * @return syncFence The sync fence that will be triggered when the task is completed. * The sync fence will be set to error if a critical error, * e.g. hardware failure or kernel panic, occurs when doing execution. * @return callback The IFencedExecutionCallback can be used to query information like duration * and error status when the execution is completed. */ executeFenced(Request request, vec<handle> waitFor, MeasureTiming measure) generates (ErrorStatus status, handle syncFence, IFencedExecutionCallback callback); };