Vengineerの妄想

人生を妄想しています。

OpenVINOのソースコードを覗いてみた(その2)



Movidiusの推論エンジンは、ここのvpu

Plugin だけじゃなくて、Graph Transformerもあるよ。

推論エンジンは、ここ
using namespace InferenceEngine;
using namespace vpu::MyriadPlugin;

..... 途中略

INFERENCE_PLUGIN_API(StatusCode) CreatePluginEngine(IInferencePlugin *&plugin, ResponseDesc *resp) noexcept {
    try {
        plugin = make_ie_compatible_plugin({1, 6, CI_BUILD_NUMBER, "myriadPlugin"}, std::make_shared<Engine>());
        return OK;
    }
    catch (std::exception &ex) {
        return DescriptionBuffer(GENERAL_ERROR, resp) << ex.what();
    }
}

の InferenceEngine::vpu::MyraidPlugin::CreatePluginEngine の中で、myriadPluginを呼び出している感じ。

myraidPlugin は、ここで見つけられるようになっていますね。

        case TargetDevice::eMYRIAD:
#ifdef ENABLE_MYRIAD
            pluginVec.push_back("myriadPlugin");
#endif
            break;

同じところには、myraidPlugin の他に
 ・MKLDNNPlugin
 ・OpenVXPluginCVE
 ・OpenVXPlugin
 ・clDNNPlugin
 ・dliaPlugin"
 ・GNAPlugin
 ・HeteroPlugin
があるけど、
 ・MKLDNNPlugin
 ・clDNNPlugin
 ・GNAPlugin
 ・HeteroPlugin
は実装があるみたいだけど、
 ・OpenVXPluginCVE
 ・OpenVXPlugin
 ・dliaPlugin"
この3つは公開されていません。

OpenVX はIntelの独自実装のようなので公開はできないでしょうね。

dliaPlugin は、下記のように FPGA ようですね。
        case TargetDevice::eFPGA:
#ifdef ENABLE_DLIA
            pluginVec.push_back("dliaPlugin");
#endif
#ifdef ENABLE_OPENVX
            pluginVec.push_back("OpenVXPlugin");
#endif
            break;
なので、ここも公開されませんね。