[GNA] Safety fixes (#2158)
authorDenis Orlov <denis.orlov@intel.com>
Tue, 15 Sep 2020 08:24:17 +0000 (11:24 +0300)
committerGitHub <noreply@github.com>
Tue, 15 Sep 2020 08:24:17 +0000 (11:24 +0300)
inference-engine/src/gna_plugin/gna_graph_compiler.cpp
inference-engine/src/gna_plugin/gna_plugin.hpp
inference-engine/src/gna_plugin/gna_slope_scale.h
inference-engine/src/gna_plugin/optimizer/gna_pass_manager.cpp

index 3c463b5..84e0c70 100644 (file)
@@ -542,9 +542,11 @@ void GNAGraphCompiler::PowerPrimitive(InferenceEngine::CNNLayerPtr layer) {
         connectInput(layer, ptr_inputs, num_data_bytes_in, 0, 0);
 
         if (gnaFlags->sw_fp32) {
+            IE_ASSERT(quantized == nullptr);
             gnamem->readonly().push_value(ptr_weights, power.scale, num_rows_out, 64);
             gnamem->readonly().push_value(ptr_biases, power.offset, num_rows_out, 64);
         } else {
+            IE_ASSERT(quantized != nullptr);
             auto quantizedScale = FLOAT_TO_INT16(std::min(quantized->_weights_quant.scale * power.scale,
                 static_cast<float>(INT16_MAX)));
             auto quantizedOffset = FLOAT_TO_INT32(std::min(quantized->_dst_quant.scale * power.offset,
index 839d9ab..54bf674 100644 (file)
@@ -33,7 +33,7 @@ class GNAPlugin : public InferenceEngine::IInferencePlugin {
  protected:
     std::string _pluginName = "GNA";
 
-    Config config;
+    Config config {};
     std::shared_ptr<GNAPluginNS::backend::AMIntelDNN> dnn;
     std::shared_ptr<GNAPluginNS::GNAFlags> gnaFlags;
     std::shared_ptr<GNAPluginNS::gna_memory_type> gnamem;
index a4b9f0e..967bdeb 100644 (file)
@@ -7,9 +7,9 @@
 #include <cstdint>
 
 typedef struct {
-    double slope;
+    double slope {};
     uint64_t slope_scale = 0;
-    uint32_t slope_scale_index;
+    uint32_t slope_scale_index {};
 } pwl_gna_slope_scale_t;
 
 pwl_gna_slope_scale_t gna_slope(const double slope, const double in_scale, const double out_scale);
index 4cd259d..ff55abc 100644 (file)
@@ -294,6 +294,9 @@ void SubstituteSoftSignPass::run() {
     };
     auto getNthChild = [](CNNLayerPtr l, int N) {
         auto first = getInputTo(l->outData.front()).begin();
+        auto last = getInputTo(l->outData.front()).end();
+        IE_ASSERT(first != last);
+        IE_ASSERT(N <= std::distance(first, last));
         std::advance(first, N);
         return first->second;
     };
@@ -1119,6 +1122,7 @@ void EltwiseSplitOverChannelsPass::run() {
         for (size_t k = 0; k != totalSplits; k++) {
             auto eltwiseRaw = std::make_shared<EltwiseLayer>(
                     LayerParams{l->name + "/eltwise/" + std::to_string(k), "Eltwise", Precision::FP32});
+            IE_ASSERT(eltwiseRaw != nullptr);
             eltwiseRaw->_operation = masterEltwise->_operation;
             eltwiseRaw->coeff = masterEltwise->coeff;
             auto eltwise = quantized ? InferenceEngine::injectData<QuantizedLayerParams>(eltwiseRaw) : eltwiseRaw;