diff options
author | Mika Raento <mikie@google.com> | 2018-06-04 16:43:25 +0100 |
---|---|---|
committer | Mika Raento <mikie@google.com> | 2018-06-04 16:47:40 +0100 |
commit | fed420cab2704afb2beb69577dbe75392954a57e (patch) | |
tree | 1968264443ad14bd6a54b5b9713ac3736a4c5896 /nn/runtime/test/TestOpenmpSettings.cpp | |
parent | ce54aa2438d52ccee56f4f78e7f815d92ca9a0ce (diff) | |
download | ml-fed420cab2704afb2beb69577dbe75392954a57e.tar.gz |
Openmp blocktime 1->20ms to keep cores enabled
With 1ms blocktime the benchmark app shows 3x performance degradation on
Pixel 2 in float benchmarks (against no blocktime setting).
In testing, 10ms was enough to give results comparable to no setting.
20ms was chosen as to have a 2x margin of safety while not keeping the
threads busywaiting unnecessarily long.
Bug: 109645291
Test: NeuralNetworksTest_static/*Openmp*
Test: Run benchmark app multiple times
Change-Id: Id2a909f6aefdbe29dd746019c2c9541e31d8c754
Diffstat (limited to 'nn/runtime/test/TestOpenmpSettings.cpp')
-rw-r--r-- | nn/runtime/test/TestOpenmpSettings.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/nn/runtime/test/TestOpenmpSettings.cpp b/nn/runtime/test/TestOpenmpSettings.cpp index a021f8db1..3c42bcd99 100644 --- a/nn/runtime/test/TestOpenmpSettings.cpp +++ b/nn/runtime/test/TestOpenmpSettings.cpp @@ -38,26 +38,28 @@ protected: ASSERT_EQ(blocktimeRestored, kOpenmpDefaultBlockTime); } static const int kOpenmpDefaultBlockTime; + static const int kPreferredBlockTime; }; const int OpenmpSettingsTest::kOpenmpDefaultBlockTime = 200; +const int OpenmpSettingsTest::kPreferredBlockTime = 20; using ::android::nn::ScopedOpenmpSettings; -TEST_F(OpenmpSettingsTest, Test1) { +TEST_F(OpenmpSettingsTest, TestkPreferredBlockTime) { ScopedOpenmpSettings s; const int blocktimeSet = kmp_get_blocktime(); - ASSERT_EQ(blocktimeSet, 1); + ASSERT_EQ(blocktimeSet, kPreferredBlockTime); } TEST_F(OpenmpSettingsTest, Test2) { ScopedOpenmpSettings s1; const int blocktimeSet1 = kmp_get_blocktime(); - ASSERT_EQ(blocktimeSet1, 1); + ASSERT_EQ(blocktimeSet1, kPreferredBlockTime); ScopedOpenmpSettings s2; const int blocktimeSet2 = kmp_get_blocktime(); - ASSERT_EQ(blocktimeSet2, 1); + ASSERT_EQ(blocktimeSet2, kPreferredBlockTime); } TEST_F(OpenmpSettingsTest, TestThreaded) { @@ -76,12 +78,12 @@ TEST_F(OpenmpSettingsTest, TestThreaded) { ScopedOpenmpSettings s; const int blocktimeSet1 = kmp_get_blocktime(); - ASSERT_EQ(blocktimeSet1, 1); + ASSERT_EQ(blocktimeSet1, kPreferredBlockTime); usleep(sleepFor); const int blocktimeSet2 = kmp_get_blocktime(); - ASSERT_EQ(blocktimeSet2, 1); + ASSERT_EQ(blocktimeSet2, kPreferredBlockTime); })); } std::for_each(threads.begin(), threads.end(), [](std::thread& t) { |