DoubangoTelecom / ultimateALPR-SDK

World's fastest ANPR / ALPR implementation for CPUs, GPUs, VPUs and NPUs using deep learning (Tensorflow, Tensorflow lite, TensorRT, OpenVX, OpenVINO). Multi-Charset (Latin, Korean, Chinese) & Multi-OS (Jetson, Android, Raspberry Pi, Linux, Windows) & Multi-Arch (ARM, x86).
https://www.doubango.org/webapps/alpr/
Other
617 stars 158 forks source link

Running in VM #160

Closed VizDock closed 3 years ago

VizDock commented 3 years ago

Hi I know it's not directly related to your SDK, but is it possible theoretically to use sdk with openvino (CPU) on vmware ESX, windows 10 vm?

I have googled alot but only thing I found was some testing of vmware team and dell team which they performed on ESX v7, but I have v6.7. 2 x CPU Intel(R) Xeon(R) CPU E5-2687W v2 @ 3.40GHz Again, I know that question is related to openvino, but maybe you can advise based on your knowledge so that I don't spend too much time experimenting in impossible direction :) Thanks

martonsz85 commented 3 years ago

In theory virtualization shouldn't be a problem, but that CPU in particular won't work. It doesn't support the AVX2 instruction set extension, which is required. I, too, have a few servers with Xeon CPUs from that era, and I couldn't make it work. I had to run it on an i3.

DoubangoTelecom commented 3 years ago

Hi I know it's not directly related to your SDK, but is it possible theoretically to use sdk with openvino (CPU) on vmware ESX, windows 10 vm?

I have googled alot but only thing I found was some testing of vmware team and dell team which they performed on ESX v7, but I have v6.7. 2 x CPU Intel(R) Xeon(R) CPU E5-2687W v2 @ 3.40GHz Again, I know that question is related to openvino, but maybe you can advise based on your knowledge so that I don't spend too much time experimenting in impossible direction :) Thanks

You'll not be able to enable OpenVINO on that CPU using this project. In our code you have:

#if COMPV_ARCH_X86
    if (config.openvino_enabled) {
        if (CompVCpu::isEnabled(kCpuFlagAVX2) && CompVCpu::isEnabled(kCpuFlagFMA3)) { // https://software.intel.com/content/www/us/en/develop/tools/openvino-toolkit/hardware.html
            UltAlprPluginPtr vino_ = nullptr;
            COMPV_CHECK_CODE_NOP(UltAlprPlugin::newObj(&vino_, config));
            if (vino_) {
                COMPV_DEBUG_INFO_EX(THIS_CLASSNAME, "We have managed to create OpenVINO detector/classifier. Ignoring Tensorflow detector/classifier.");
                detector_ = *vino_;
            }
            else {
                COMPV_DEBUG_ERROR_EX(THIS_CLASSNAME, "Failed to create OpenVINO detector/classifier. Fallback to Tensorflow detector/classifier. Check https://github.com/DoubangoTelecom/ultimateALPR-SDK/issues/113 for more information on how to fix this issue.");
            }
        }
        else {
            COMPV_DEBUG_ERROR_EX(THIS_CLASSNAME, "OpenVINO requires AVX2 and FMA3, your CPU doesn't support these features. Check https://software.intel.com/content/www/us/en/develop/tools/openvino-toolkit/hardware.html.");
        }
    }
#endif /* ULTIMATE_ALPR_HAVE_OPENVINO */
DoubangoTelecom commented 3 years ago

In theory virtualization shouldn't be a problem, but that CPU in particular won't work. It doesn't support the AVX2 instruction set extension, which is required. I, too, have a few servers with Xeon CPUs from that era, and I couldn't make it work. I had to run it on an i3.

You're right. Intel documentation says SSE4.2 but we noticed crashes on some CPUs when AVX2 or FMA3 are missing. This is why we disable OpenVINO when these features are missing.