Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OV Performance Hints (CPU and GPU logic for selecting the actual configs), while AUTO/MULTI are passing them thru) #6993

Merged
merged 43 commits into from
Sep 13, 2021

Conversation

myshevts
Copy link
Contributor

@myshevts myshevts commented Aug 9, 2021

For the GPU (until Auto-Batching) the logic is very simple (and mimicks the benchmark_app), for the CPU in contrast the network-based heuristics selects the #streams.

@ArtemySkrebkov-intel and @rzubarev fyi

@myshevts myshevts requested review from a team as code owners August 9, 2021 16:35
@myshevts myshevts requested review from a team August 9, 2021 16:35
@openvino-pushbot openvino-pushbot added category: CPU OpenVINO CPU plugin category: GPU OpenVINO GPU plugin category: inference OpenVINO Runtime library - Inference category: MULTI OpenVINO MULTI device plugin category: IE Tests OpenVINO Test: plugins and common labels Aug 9, 2021
@ilya-lavrenov ilya-lavrenov added this to the 2022.1 milestone Aug 9, 2021
@myshevts myshevts force-pushed the perf-hints-master branch 4 times, most recently from 296825c to 193375b Compare August 11, 2021 14:37
inference-engine/samples/benchmark_app/main.cpp Outdated Show resolved Hide resolved
inference-engine/samples/benchmark_app/main.cpp Outdated Show resolved Hide resolved
inference-engine/samples/benchmark_app/main.cpp Outdated Show resolved Hide resolved
inference-engine/src/mkldnn_plugin/mkldnn_plugin.cpp Outdated Show resolved Hide resolved
inference-engine/src/plugin_api/ie_performance_hints.hpp Outdated Show resolved Hide resolved
@myshevts
Copy link
Contributor Author

@mashoujiang fyi, this PR passes the perf hints thru the AUTO (and MULTI)

@myshevts myshevts force-pushed the perf-hints-master branch 4 times, most recently from ab27fff to 2f79fd4 Compare August 18, 2021 11:59
@myshevts myshevts requested a review from a team as a code owner August 18, 2021 11:59
Copy link
Contributor

@wangleis wangleis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AUTO plugin only pass hints instead of fullconfig need handle in following PR.

@myshevts myshevts requested a review from a team September 7, 2021 15:52
tools/benchmark_tool/README.md Outdated Show resolved Hide resolved
tools/benchmark_tool/openvino/tools/benchmark/main.py Outdated Show resolved Hide resolved
Copy link
Contributor

@vladimir-paramuzov vladimir-paramuzov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In general LGTM. Minor comment left

Copy link
Contributor

@dmitry-gorokhov dmitry-gorokhov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No major objections

@myshevts myshevts merged commit 3bec324 into openvinotoolkit:master Sep 13, 2021
akuporos pushed a commit to akuporos/openvino that referenced this pull request Sep 29, 2021
…igs), while AUTO/MULTI are passing them thru) (openvinotoolkit#6993)

* rebasing the perf-modes-2021.3 to the 2021.4

Caveats:
the (explicit) setting #streams is not disabled (as it was before for experiments with DLBenchmark), and the logic slighlty differ (streamsSet)

(cherry picked from commit 1ae1edc)

* overriding streams (to force the TPUT mode to the DLBenchnark)

(cherry picked from commit 7f506cd)

* disabling reducing #streams to fully mimic baseline c4df94d of the 2021.3 (before experiments)

(cherry picked from commit 85073dd)

* clang/identation

(cherry picked from commit 050a415)

* splitting the Transformation to general and CPU specific.

Now hopefully,this fully mimics the  baseline c4df94d of the 2021.3 (before experiments), as the streams reduce num (as well as early exit on GRU/LSTM/TensorIterator) is deisabled

(cherry picked from commit e98b2c1)

* disabling GRU/LSTM/TI + reducing of streams + 5D considered compute-limited only for int8

(cherry picked from commit 32b8d80)

* refactored to avoid compute_limited_ratio, reverted the reducing #streams, removed LSTM from limitations

(cherry picked from commit f2b9721)

* isa-based threshold logic

(cherry picked from commit b218457)

* mode->hint

(cherry picked from commit ec20aa8)

* optional PERFORMANCE_HINT_NUM_REQUESTS

(cherry picked from commit 5a3883e)

* moving the perfHints to the common OV config class + initial tests (CPU only, as the actual AUTO/MULTI should be accommodated on the master)

(cherry picked from commit (then fixed)45bafe7d527f466507dea0693aeed51be4ebf776)

* AUTO support for PerfHints

* MULTI support for PerfHints

* Enabling Perf hints for the GPU plugin

* brushing settings output a bit

* disabling "throughput" perf hint being default (until OV 2.0)

* uncommenting the logic which was disabled to force the DLBenchmark to use the throughput mode by default

* removing dead and experimental code, and debug printfs

* clang/code-style

* code-review remarks

* Moved the output of the actual params that the hint produced to the right place

* aligning MULTI's GetConfig beh to HETERO's as captured in the preso (CVS-59960) ratified with the ArchForum

* clang

* benchmark_app brushing

* Update inference-engine/samples/benchmark_app/README.md

* propagating the perf hints thru one more scenario in the merged AUTO-MULTI

* fixed mispint

* Python benchmark_app update for perf hints

* addresssing reviewers comments on the python benchmark_app

* simplifying/brushing logic a bit

* refactor the heuristic to the separate file (to be shared with iGPU soon)

* refactor conversion of modes to the specific GPU config per feedback from Vladimir
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
category: CPU OpenVINO CPU plugin category: GPU OpenVINO GPU plugin category: IE Tests OpenVINO Test: plugins and common category: inference OpenVINO Runtime library - Inference category: MULTI OpenVINO MULTI device plugin
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants