Fix incompatibility between OpenVino with musl libc

This commit is contained in:
He Sun 2020-03-16 22:23:08 +08:00 committed by Tate, Hongliang Tian
parent 23817fc659
commit 8842af88f3
3 changed files with 35 additions and 2 deletions

@ -0,0 +1,32 @@
From 2e6be0606c79f11d0bc7400dc97732431ea42c00 Mon Sep 17 00:00:00 2001
From: He Sun <bochang.sh@antfin.com>
Date: Fri, 20 Mar 2020 15:52:08 +0800
Subject: [PATCH] Fix passing pre-increment parameter cpu to CPU_ISSET_S
Fix the incompatibility between OpenVINO and musl libc. The problem is
that the CPU_ISSET_S macro defined in musl libc is not quite robust: it
expands the first argument more than once (Glibc's counterpart does not
have this issue). So if the first argument has any side effect, then the
macro will have unexpected consequences. Unfortunately, this is exactly
what happens in the orignal code of OpenVINO.
---
inference-engine/src/mkldnn_plugin/mkldnn_streams.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/inference-engine/src/mkldnn_plugin/mkldnn_streams.cpp b/inference-engine/src/mkldnn_plugin/mkldnn_streams.cpp
index a0c2159..7a9c3e8 100644
--- a/inference-engine/src/mkldnn_plugin/mkldnn_streams.cpp
+++ b/inference-engine/src/mkldnn_plugin/mkldnn_streams.cpp
@@ -78,7 +78,8 @@ bool pin_thread_to_vacant_core(int thr_idx, int hyperthreads, int ncores, const
// Find index of 'cpu_idx'-th bit that equals to 1
int mapped_idx = -1;
while (cpu_idx >= 0) {
- if (CPU_ISSET_S(++mapped_idx, size, proc_mask))
+ ++mapped_idx;
+ if (CPU_ISSET_S(mapped_idx, size, proc_mask))
--cpu_idx;
}
--
2.7.4

@ -64,6 +64,7 @@ build_openvino() {
pushd openvino_src
git clone https://github.com/opencv/dldt .
git checkout tags/2019_R3 -b 2019_R3
git apply ../0001-Fix-passing-pre-increment-parameter-cpu-to-CPU_ISSET.patch
cd inference-engine
git submodule init
git submodule update --recursive

@ -9,8 +9,8 @@ rm -rf occlum_context
mkdir occlum_context
cd occlum_context
occlum init
jq '.process.default_mmap_size = "192MB"' Occlum.json > temp_Occlum.json
mv temp_Occlum.json Occlum.json
jq '.vm.user_space_size = "320MB"' Occlum.json > temp_Occlum.json
jq '.process.default_mmap_size = "256MB"' temp_Occlum.json > Occlum.json
# 2. Copy files into Occlum Workspace and Build
cp ../$inference_bin/$benchmark image/bin