XiaoMi / mobile-ai-bench

Benchmarking Neural Network Inference on Mobile Devices
Apache License 2.0
363 stars 58 forks source link

I need help about adding sdm865 in mobile-ai-bench. #41

Open WangFengtu1996 opened 4 years ago

WangFengtu1996 commented 4 years ago

Hi,all I want to add sdm865(android) in the mobile-ai-bench. could i get helping?? Thanks for your help.

WangFengtu1996 commented 4 years ago

Lark20200429-213911

WangFengtu1996 commented 4 years ago

The about picture is about my log.

lee-bin commented 4 years ago

@TUT-jiayou You don't need to add an android device to mobile-ai-bench, it runs on the android device if it is connected successfully. As for the benchmark, maybe you could add some debug information to find out where it returns early.

WangFengtu1996 commented 4 years ago

when I connect with sdm865 by adb, I get the soc is kano. So, I change the code function or method _create_adb_device(self, adb) int the file aibench/python/device/device_manager.py .

   def _create_adb_device(self, adb):
        adb_device = AdbDevice(adb)
        # TODO(luxuhui@xiaomi.com): optimize this match after qualcomm release
        # newer socs
        # print("WFT, The device soc is %s" % adb_device.target_soc)
        if re.match("kona", adb_device.target_soc, re.I):
            adb_device = QualcommAdbDevice(adb)
            print("Find qualcomm adb device:%s" % adb[0])
        elif re.match("sdm\\d+$|msm\\d+$|msmnile", adb_device.target_soc, re.I):
            # ["sdm845", "sdm660", "msm8998", "msm8996", "msmnile"]
            adb_device = QualcommAdbDevice(adb)
            print("Find qualcomm adb device:%s" % adb[0])
        elif re.match("kirin\\d+$", adb_device.target_soc, re.I):
            # ["kirin980", "kirin970", "kirin960"]
            adb_device = HuaweiAdbDevice(adb)
            print("Find huawei adb device:%s" % adb[0])
        else:
            print("Find adb device:%s" % adb[0])

        return adb_device

But I also get the error, because of the model_benchmark error run.

WARNING: linker: Warning: "/data/local/tmp/aibench/model_benchmark" unused DT entry: DT_RPATH (type 0xf arg 0x150b) (ignoring)
[ INFO:0] calling android_getCpuFeatures() ...
[ INFO:0] calling android_getCpuFeatures() ... Done (1f7ff)

When I run in the sdm845 through ADB, I got the soc sdm845. So I can get the reuslt.

WARNING: linker: "/data/local/tmp/aibench/model_benchmark" unused DT entry: type 0xf arg 0x1954
I benchmark.cc:91 sleep 10s
I benchmark.cc:95 benchmarking: 2,3,2,0,
building snpe with model_name: inception_v3_1548901793.dlc device_type:1
snpe build ok
I benchmark.cc:131 the Prepare status  is 0
I benchmark.cc:108 1:2,3,2,0,2288.654,91.147

Maybe the Android NDK or my android system influence??

lee-bin commented 4 years ago

@TUT-jiayou I checked the adb logcat and found the error as follows,

04-30 15:06:37.497 14011 14011 E SYMPHONY: FATAL        0 t72c3ba3ed0 /home/host/build/aarch64-android-gcc4.9/SecondParty/symphony/src/symphony/src/lib/runtime.cc:468 runtime_init() This version of Symphony is targeted to Snapdragon(TM) platforms
04-30 15:06:37.497 14011 14011 E SYMPHONY: t72c3ba3ed0 /home/host/build/aarch64-android-gcc4.9/SecondParty/symphony/src/symphony/src/lib/runtime.cc:468 **********
04-30 15:06:37.497 14011 14011 E SYMPHONY: t72c3ba3ed0 /home/host/build/aarch64-android-gcc4.9/SecondParty/symphony/src/symphony/src/lib/runtime.cc:468 - Terminating with exit(1)
04-30 15:06:37.497 14011 14011 E SYMPHONY: t72c3ba3ed0 /home/host/build/aarch64-android-gcc4.9/SecondParty/symphony/src/symphony/src/lib/runtime.cc:468 **********

Maybe the SNPE version is too old. You may try using the latest SNPE or wait until we resolve it. Contribution is strongly welcome.

WangFengtu1996 commented 4 years ago

Oh, There is a differentence higher SNPE version with the version that I am using. A lot of packages change the name, and the compiler tool is different. Before it is gcc, now it is clang. So, I think that I need help.