我一直在用benchmark_model基準測試Exynos 7420上的tensorflow模型。我想按照Pete Warden's blog的速度測試量化,但還是無法通過量化代碼來編譯benchmark_model,因爲它們會破壞很多東西。Android上的基準量化
我已經按照這個stack overflow thread列出的指導原則:
// tensorflow /工具/基準/ BUILD cc_binary
deps = [":benchmark_model_lib",
"//tensorflow/contrib/quantization/kernels:quantized_ops",
],
// tensorflow /的contrib /量化/粒/ BUILD:
deps = [
"//tensorflow/contrib/quantization:cc_array_ops",
"//tensorflow/contrib/quantization:cc_math_ops",
"//tensorflow/contrib/quantization:cc_nn_ops",
#"//tensorflow/core",
#"//tensorflow/core:framework",
#"//tensorflow/core:lib",
#"//tensorflow/core/kernels:concat_lib_hdrs",
#"//tensorflow/core/kernels:conv_ops",
#"//tensorflow/core/kernels:eigen_helpers",
#"//tensorflow/core/kernels:ops_util",
#"//tensorflow/core/kernels:pooling_ops",
"//third_party/eigen3",
"@gemmlowp//:eight_bit_int_gemm",
],
然後運行:
巴澤勒建立-c選擇--cxxopt =' - S td = gnu ++ 11' - crosstool_top = // external:android/crosstool --cpu = armeabi-v7a --host_crosstool_top = @ bazel_tools // tools/cpp:toolchain tensorflow/tools/benchmark:benchmark_model --verbose_failures
哪個(跟隨鏈接後的所有其他說明)成功與例外,它無法鏈接到pthread。
我試過在tensorflow/tensorflow.bzl tfcopts()中刪除-lpthread,在tensorflow/tools/proto_text/BUILD和tensorflow/cc/BUILD中也是這樣。
def tf_copts():
return (["-fno-exceptions", "-DEIGEN_AVOID_STL_ARRAY"] +
if_cuda(["-DGOOGLE_CUDA=1"]) +
if_android_arm(["-mfpu=neon"]) +
select({"//tensorflow:android": [
"-std=c++11",
"-DMIN_LOG_LEVEL=0",
"-DTF_LEAN_BINARY",
"-O2",
],
"//tensorflow:darwin": [],
"//tensorflow:ios": ["-std=c++11",],
#"//conditions:default": ["-lpthread"]}))
"//conditions:default": []}))
仍然收到鏈接錯誤。
external/androidndk/ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: cannot find -lpthread
collect2: error: ld returned 1 exit status
任何幫助非常感謝,我相當卡住。
ENV:
- 的Ubuntu 14.04
- tensorflow提交#4462
- android_ndk_r11c
- Android的SDK-linux的r24.4.1
- 的Python 2.7.12 ::連續分析,公司
- ./configure不支持GCP,HDFS或GPU
好了,現在正在工作,是的,我們仍在優化量化的操作,所以不要將當前的速度作爲您可以獲得的最大值。 –