Interface IWorker | Barracuda | 0.7.1-preview
docs.unity3d.com
    Show / Hide Table of Contents

    Interface IWorker

    Public interface for Workers. A worker is able to schedule models execution for a given backend. Use WorkerFactory to instantiate a worker.

    Inherited Members
    IDisposable.Dispose()
    Namespace: Unity.Barracuda
    Syntax
    public interface IWorker : IDisposable

    Methods

    Execute()

    Non-blocking API that schedules network execution in one go Remark: This API will only be non-blocking for GPU inference.

    Declaration
    void Execute()

    Execute(IDictionary<String, Tensor>)

    Non-blocking API that schedules network execution in one go, using the provider tensor dictionary for inputs. Remark: This API will only be non-blocking for GPU inference.

    Declaration
    void Execute(IDictionary<string, Tensor> inputs)
    Parameters
    Type Name Description
    IDictionary<String, Tensor> inputs

    Execute(Tensor)

    Non-blocking API that schedules network execution in one go, using the provider tensor as input. Remark: This API will only be non-blocking for GPU inference. Useful when network have only one input as input name is not needed.

    Declaration
    void Execute(Tensor input)
    Parameters
    Type Name Description
    Tensor input

    ExecuteAsync()

    Non-blocking API that schedules network execution one layer at the time. Remark: This API will only be non-blocking for GPU inference. Check GetAsyncProgress() for progress.

    Declaration
    IEnumerator ExecuteAsync()
    Returns
    Type Description
    IEnumerator

    ExecuteAsync(IDictionary<String, Tensor>)

    Non-blocking API that schedules network execution one layer at the time, using the provider tensor dictionary for inputs. Remark: This API will only be non-blocking for GPU inference. Check GetAsyncProgress() for progress.

    Declaration
    IEnumerator ExecuteAsync(IDictionary<string, Tensor> inputs)
    Parameters
    Type Name Description
    IDictionary<String, Tensor> inputs
    Returns
    Type Description
    IEnumerator

    ExecuteAsync(Tensor)

    Non-blocking API that schedules network execution one layer at the time, using the provider tensor as input. Remark: This API will only be non-blocking for GPU inference. Useful when network have only one input as input name is not needed. Check GetAsyncProgress() for progress.

    Declaration
    IEnumerator ExecuteAsync(Tensor input)
    Parameters
    Type Name Description
    Tensor input
    Returns
    Type Description
    IEnumerator

    GetAsyncProgress()

    Progress of the scheduling, 0.0 = 0%, 1.0 = 100%

    Declaration
    float GetAsyncProgress()
    Returns
    Type Description
    Single

    PeekConstants(String)

    Returns references to constants tensors for a layer. This reference might be valid only until the next Execute() or Dispose() method is called on the worker. IMPORTANT: if you want tensor to outlive the worker, use CopyOutput() method or follow with TakeOwnership() call on the tensor, also worker Execute() or PrepareForInput() should have been called at least once for the tensors to exist.

    Declaration
    Tensor[] PeekConstants(string layerName)
    Parameters
    Type Name Description
    String layerName
    Returns
    Type Description
    Tensor[]

    PeekOutput()

    Returns a reference to the first output tensor. This reference will be valid only until the next Execute() or Dispose() method is called on the worker. Useful when network has only one output. IMPORTANT: if you want tensor to outlive the worker, use CopyOutput() method or follow with TakeOwnership() call on the tensor.

    Declaration
    Tensor PeekOutput()
    Returns
    Type Description
    Tensor

    PeekOutput(String)

    Returns a reference to output tensor by name. This reference will be valid only until the next Execute() or Dispose() method is called on the worker. IMPORTANT: if you want tensor to outlive the worker, use CopyOutput() method or follow with TakeOwnership() call on the tensor.

    Declaration
    Tensor PeekOutput(string name)
    Parameters
    Type Name Description
    String name
    Returns
    Type Description
    Tensor

    PrepareForInput(IDictionary<String, TensorShape>)

    Optional method to prepare network for particular input dimensions

    Declaration
    void PrepareForInput(IDictionary<string, TensorShape> inputShapes)
    Parameters
    Type Name Description
    IDictionary<String, TensorShape> inputShapes

    SetInput(String, Tensor)

    Specify tensor value for the named input of the network.

    Declaration
    void SetInput(string name, Tensor x)
    Parameters
    Type Name Description
    String name
    Tensor x

    SetInput(Tensor)

    Specify single tensor value as the input for the network. Useful when network has only one input and caller does not need to know input's name.

    Declaration
    void SetInput(Tensor x)
    Parameters
    Type Name Description
    Tensor x

    Summary()

    Returns a string summary after execution.

    Declaration
    string Summary()
    Returns
    Type Description
    String

    WaitForCompletion()

    Wait for completion of part of the network that was scheduled via ExecuteAsync()

    Declaration
    void WaitForCompletion()

    Extension Methods

    DeprecatedWorkerExtensions.AddInput(IWorker, Tensor)
    DeprecatedWorkerExtensions.AddInput(IWorker, String, Tensor)
    DeprecatedWorkerExtensions.Peek(IWorker)
    DeprecatedWorkerExtensions.Peek(IWorker, String)
    DeprecatedWorkerExtensions.FetchAndTakeOwnership(IWorker)
    DeprecatedWorkerExtensions.FetchAndTakeOwnership(IWorker, String)
    DeprecatedWorkerExtensions.Fetch(IWorker)
    DeprecatedWorkerExtensions.Fetch(IWorker, String)
    WorkerExtensions.CopyOutput(IWorker)
    WorkerExtensions.CopyOutput(IWorker, String)
    WorkerExtensions.ExecuteAndWaitForCompletion(IWorker, Tensor)
    WorkerExtensions.ExecuteAndWaitForCompletion(IWorker, IDictionary<String, Tensor>)
    Back to top
    Copyright © 2023 Unity Technologies — Terms of use
    • Legal
    • Privacy Policy
    • Cookies
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)
    "Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
    Generated by DocFX on 18 October 2023