• Michał Karzyński's avatar
    [ONNX] Add MatMulInteger op (#3011) · e51c5824
    Michał Karzyński authored
    * Unit tests for MatMulInteger
    
    * Add ONNX MatMulInteger op
    
    * Add QuantizedLinearMatmulInteger builder
    
    * Additional unit test
    
    * Exclude tests on nVidia GPU backend
    
    * Add 4D test case
    
    * Enable >2D MatMulInteger
    
    * Refactoring to MatMulFactory - step 1
    
    * Refactoring to MatMulFactory - step 2
    
    * Remove `using namespace ngraph` to make `Node` unambiguous.
    
    * Disable quantized ops tests on GPU backend
    
    * Remove unused `includes`
    
    * Remove redundant dynamic_pointer_cast
    
    * Remove redundant `move`
    
    * Add const correctness
    
    * Code review comments
    
    * Style apply
    
    * Add documentation
    
    * Use more complex shapes in tests
    e51c5824
matmul_integer_4d.prototxt 1.55 KB
ir_version: 5
producer_name: "nGraph ONNX Importer"
graph {
  node {
    input: "a"
    input: "b"
    input: "a_zero_point"
    input: "b_zero_point"
    output: "y"
    name: "node1"
    op_type: "MatMulInteger"
    doc_string: "MatMulInteger"
    domain: ""
  }
  name: "test"
  input {
    name: "a"
    type {
      tensor_type {
        elem_type: 2
        shape {
          dim {
            dim_value: 1
          }
          dim {
            dim_value: 2
          }
          dim {
            dim_value: 3
          }
          dim {
            dim_value: 4
          }
        }
      }
    }
  }
  input {
    name: "b"
    type {
      tensor_type {
        elem_type: 2
        shape {
          dim {
            dim_value: 1
          }
          dim {
            dim_value: 2
          }
          dim {
            dim_value: 4
          }
          dim {
            dim_value: 3
          }
        }
      }
    }
  }
  input {
    name: "a_zero_point"
    type {
      tensor_type {
        elem_type: 2
        shape {
        }
      }
    }
  }
  input {
    name: "b_zero_point"
    type {
      tensor_type {
        elem_type: 2
        shape {
        }
      }
    }
  }
  output {
    name: "y"
    type {
      tensor_type {
        elem_type: 6
        shape {
          dim {
            dim_value: 1
          }
          dim {
            dim_value: 2
          }
          dim {
            dim_value: 3
          }
          dim {
            dim_value: 3
          }
        }
      }
    }
  }
}
opset_import {
  domain: ""
  version: 10
}