Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a371c157 authored by Michael Butler's avatar Michael Butler Committed by android-build-merger
Browse files

Merge "Removed WIP tag from Neuralnetworks HAL" into oc-mr1-dev am: e9a134b8

am: d970a9ed

Change-Id: If278d0f71f432a67ab8638b5c0e4147496283b60
parents d2d60c6b d970a9ed
Loading
Loading
Loading
Loading
+23 −9
Original line number Diff line number Diff line
@@ -14,8 +14,6 @@
 * limitations under the License.
 */

/* This HAL is a work in progress */

package android.hardware.neuralnetworks@1.0;

import IEvent;
@@ -28,7 +26,10 @@ interface IDevice {
    /**
     * Gets the capabilities of a driver.
     *
     * @return status ErrorStatus::NONE if successful.
     * @return status Error status of the call, must be:
     *                - NONE if successful
     *                - DEVICE_UNAVAILABLE if driver is offline or busy
     *                - GENERAL_FAILURE if there is an unspecified error
     * @return capabilities Capabilities of the driver.
     */
    getCapabilities() generates (ErrorStatus status, Capabilities capabilities);
@@ -43,7 +44,11 @@ interface IDevice {
     *
     * @param model A model whose operations--and their corresponding
     *              operands--are to be verified by the driver.
     * @return status ErrorStatus::NONE if successful.
     * @return status Error status of the call, must be:
     *                - NONE if successful
     *                - DEVICE_UNAVAILABLE if driver is offline or busy
     *                - GENERAL_FAILURE if there is an unspecified error
     *                - INVALID_ARGUMENT when provided model is invalid
     * @return supportedOperations A list of supported operations, where true
     *                             indicates the operation is supported and
     *                             false indicates the operation is not
@@ -60,7 +65,7 @@ interface IDevice {
     * prepareModel is used to make any necessary transformations or alternative
     * representations to a model for execution, possible including
     * transformations on the constant data, optimization on the model's graph,
     * or compilation into the device's native binary.
     * or compilation into the device's native binary format.
     *
     * The only information that may be unknown to the model at this stage is
     * the shape of the tensors, which may only be known at execution time.
@@ -68,7 +73,12 @@ interface IDevice {
     * @param model The model to be prepared for execution.
     * @param event A synchronization callback that must be signaled once the
     *              execution has finished.
     * @return status ErrorStatus::NONE if successful.
     * @return status Error status of the call, must be:
     *                - NONE if preparation task is successfully launched
     *                - DEVICE_UNAVAILABLE if driver is offline or busy
     *                - GENERAL_FAILURE if there is an unspecified error
     *                - INVALID_ARGUMENT when one of the input arguments is
     *                  invalid
     * @return preparedModel A handle to the resultant prepared model.
     */
    prepareModel(Model model, IEvent event)
@@ -77,7 +87,11 @@ interface IDevice {
    /**
     * Returns the current status of a driver.
     *
     * @return status Status of the driver.
     * @return status Status of the driver, one of:
     *                - DeviceStatus::AVAILABLE
     *                - DeviceStatus::BUSY
     *                - DeviceStatus::OFFLINE
     *                - DeviceStatus::UNKNOWN
     */
    getStatus() generates (DeviceStatus status);
};
+5 −3
Original line number Diff line number Diff line
@@ -14,8 +14,6 @@
 * limitations under the License.
 */

/* This HAL is a work in progress */

package android.hardware.neuralnetworks@1.0;

/**
@@ -37,7 +35,11 @@ interface IEvent {
     * the work) to mark the event as completed so that any threads requiring
     * the corresponding output can continue executing.
     *
     * @param status ErrorStatus::NONE if successful.
     * @param status Error status returned from the asynchronous task, must be:
     *               - NONE if asynchronous task was successful
     *               - DEVICE_UNAVAILABLE if driver is offline or busy
     *               - GENERAL_FAILURE if the asynchronous task resulted in an
     *                 unspecified error
     */
    oneway notify(ErrorStatus status);
};
+8 −3
Original line number Diff line number Diff line
@@ -36,11 +36,16 @@ interface IPreparedModel {
     *
     * @param request The input and output information on which the prepared
     *                model is to be executed.
     *                prepared model.
     * @param event A callback used for synchronization that must be signaled
     *              once the execution has finished.
     * @return status ErrorStatus::NONE if the asynchronous task was
     *                successfully launched.
     * @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
     *                - OUTPUT_INSUFFICIENT_SIZE if provided output buffer is
     *                  not large enough to store the resultant values
     *                - INVALID_ARGUMENT when one of the input arguments is
     *                  invalid
     */
    execute(Request request, IEvent event) generates (ErrorStatus status);
};
+11 −3
Original line number Diff line number Diff line
@@ -218,7 +218,7 @@ enum OperationType : int32_t {
     *
     * Inputs:
     * 0: A 4-D tensor, of shape [batches, height, width, depth_in], specifying the input.
     * 1: A 4-D tensor, of shape [depth_out, filter_height, filter_width, depth_in],
     * 1: A 4-D tensor, of shape [1, filter_height, filter_width, depth_out],
     *    specifying the filter.
     * 2: A 1-D tensor, of shape [depth_out], specifying the bias.
     *    For input tensor of {@link OperandType::TENSOR_FLOAT32} type, the bias should
@@ -1105,14 +1105,16 @@ struct Operand {
    /**
     * Quantized scale of the operand.
     *
     * Only applicable if the operand is of type TENSOR_QUANT8_ASYMM.
     * Only applicable if the operand is of type TENSOR_QUANT8_ASYMM or
     * TENSOR_INT32.
     */
    float scale;

    /**
     * Quantized zero-point offset of the operand.
     *
     * Only applicable if the operand is of type TENSOR_QUANT8_ASYMM.
     * Only applicable if the operand is of type TENSOR_QUANT8_ASYMM or
     * TENSOR_INT32.
     */
    int32_t zeroPoint;

@@ -1195,12 +1197,18 @@ struct Model {

    /**
     * A byte buffer containing operand data that were copied into the model.
     *
     * An operand's value must be located here if and only if Operand::lifetime
     * equals OperandLifeTime::CONSTANT_COPY.
     */
    vec<uint8_t> operandValues;

    /**
     * A collection of shared memory pools containing operand data that were
     * registered by the model.
     *
     * An operand's value must be located here if and only if Operand::lifetime
     * equals OperandLifeTime::CONSTANT_REFERENCE.
     */
    vec<memory> pools;
};