struct InferenceEngine::IStreamsExecutor::Config

Overview

Defines IStreamsExecutor configuration. More…

#include <ie_istreams_executor.hpp>

struct Config: public ov::threading::IStreamsExecutor::Config
{
    // construction

    Config(
        std::string name = "StreamsExecutor",
        int streams = 1,
        int threadsPerStream = 0,
        ThreadBindingType threadBindingType = ThreadBindingType::NONE,
        int threadBindingStep = 1,
        int threadBindingOffset = 0,
        int threads = 0,
        PreferredCoreType threadPreferredCoreType = PreferredCoreType::ANY
        );

    Config(const ov::threading::IStreamsExecutor::Config& config);

    // methods

    std::vector<std::string> SupportedKeys() const;
    void SetConfig(const std::string& key, const std::string& value);
    Parameter GetConfig(const std::string& key) const;

    static Config MakeDefaultMultiThreaded(
        const Config& initial,
        const bool fp_intesive = true
        );

    static int GetDefaultNumStreams(const bool enable_hyper_thread = true);

    static int GetHybridNumStreams(
        std::map<std::string, std::string>& config,
        const int stream_mode
        );

    static void UpdateHybridCustomThreads(Config& config);
};

Inherited Members

public:
    // enums

    enum PreferredCoreType;
    enum StreamMode;

    // fields

    std::string _name;
    int _streams = 1;
    int _threadsPerStream = 0;
    ThreadBindingType _threadBindingType = ThreadBindingType::NONE;
    int _threadBindingStep = 1;
    int _threadBindingOffset = 0;
    int _threads = 0;
    int _big_core_streams = 0;
    int _small_core_streams = 0;
    int _threads_per_stream_big = 0;
    int _threads_per_stream_small = 0;
    int _small_core_offset = 0;
    bool _enable_hyper_thread = true;
    int _plugin_task = NOT_USED;
    std::vector<std::vector<int>> _orig_proc_type_table;
    std::vector<std::vector<int>> _proc_type_table;
    std::vector<std::vector<int>> _streams_info_table;
    std::vector<std::vector<int>> _stream_core_ids;
    std::vector<int> _stream_ids;
    bool _cpu_pinning = false;
    bool _streams_changed = false;
    enum ov::threading::IStreamsExecutor::Config::PreferredCoreType _threadPreferredCoreType =             PreferredCoreType::ANY;

    // methods

    void set_property(const ov::AnyMap& properties);
    void set_property(const std::string& key, const ov::Any& value);
    ov::Any get_property(const std::string& key) const;

    static Config make_default_multi_threaded(
        const Config& initial,
        const bool fp_intesive = true
        );

    static int get_default_num_streams(const bool enable_hyper_thread = true);

    static int get_hybrid_num_streams(
        std::map<std::string, std::string>& config,
        const int stream_mode
        );

    static void update_hybrid_custom_threads(Config& config);

Detailed Documentation

Defines IStreamsExecutor configuration.

Construction

Config(
    std::string name = "StreamsExecutor",
    int streams = 1,
    int threadsPerStream = 0,
    ThreadBindingType threadBindingType = ThreadBindingType::NONE,
    int threadBindingStep = 1,
    int threadBindingOffset = 0,
    int threads = 0,
    PreferredCoreType threadPreferredCoreType = PreferredCoreType::ANY
    )

A constructor with arguments.

Parameters:

name

The executor name

streams

Number of streams.

threadsPerStream

Number of threads per stream that executes ov_parallel calls.

threadBindingType

threadBindingStep

threadBindingOffset

threads

threadPreferBigCores

Methods

std::vector<std::string> SupportedKeys() const

Supported Configuration keys.

Returns:

vector of supported configuration keys

void SetConfig(const std::string& key, const std::string& value)

Parses configuration key/value pair.

Parameters:

key

configuration key

value

configuration values

Parameter GetConfig(const std::string& key) const

Return configuration value.

Parameters:

key

configuration key

Returns:

configuration value wrapped into Parameter

static Config MakeDefaultMultiThreaded(
    const Config& initial,
    const bool fp_intesive = true
    )

Create appropriate multithreaded configuration filing unconfigured values from initial configuration using hardware properties.

Parameters:

initial

Inital configuration

fp_intesive

additional hint for the the (Hybrid) core-types selection logic whether the executor should be configured for floating point intensive work (as opposite to int8 intensive)

Returns:

configured values