## Copyright (c) 2021 Intel Corporation
##
## Licensed under the Apache License, Version 2.0 (the "License");
## you may not use this file except in compliance with the License.
## You may obtain a copy of the License at
##
##    http://www.apache.org/licenses/LICENSE-2.0
##
## Unless required by applicable law or agreed to in writing, software
## distributed under the License is distributed on an "AS IS" BASIS,
## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
## See the License for the specific language governing permissions and
## limitations under the License.
##
#
-
  version:
    name: '1.6.0'
  
  precisions: &common_precisions
    names: int8, uint8, fp32
    valid_mixed_precisions: []
  
  ops: &common_ops
    int8: ['Gather', 'MatMul', 'Attention', 'Conv', 'EmbedLayerNormalization', 'FusedConv']
    fp32: ['*'] # '*' means all op types
  
  capabilities: &common_capabilities
    int8: &ref_1_6 {
          'Conv': &key_1_6_0 {
            'weight': {
                        'dtype': ['uint8', 'fp32'],
                        'scheme': ['asym'],
                        'granularity': ['per_channel'],
                        'algorithm': ['minmax']
                        },
            'activation': {
                        'dtype': ['uint8', 'fp32'],
                        'scheme': ['asym'],
                        'granularity': ['per_tensor'],
                        'algorithm': ['minmax']
                        }
                    },
          'FusedConv': {
            'weight': {
                        'dtype': ['uint8', 'fp32'],
                        'scheme': ['asym'],
                        'granularity': ['per_channel'],
                        'algorithm': ['minmax']
                        },
            'activation': {
                        'dtype': ['uint8', 'fp32'],
                        'scheme': ['asym'],
                        'granularity': ['per_tensor'],
                        'algorithm': ['minmax']
                        }
                    },
          'MatMul': {
            'weight': {
                        'dtype': ['int8', 'fp32'],
                        'scheme': ['sym'],
                        'granularity': ['per_tensor'],
                        'algorithm': ['minmax']
                        },
            'activation': {
                        'dtype': ['uint8', 'fp32'],
                        'scheme': ['asym'],
                        'granularity': ['per_tensor'],
                        'algorithm': ['minmax']
                        }
                    },
          'default': {
            'weight': {
                        'dtype': ['int8', 'fp32'],
                        'scheme': ['sym'],
                        'algorithm': ['minmax'],
                        'granularity': ['per_tensor']
                    },
            'activation': {
                        'dtype': ['uint8', 'fp32'],
                        'scheme': ['asym'],
                        'algorithm': ['minmax'],
                        'granularity': ['per_tensor']
                        }
                    }
          }

  graph_optimization: &default_optimization # from onnxruntime graph_optimization_level
    level: 'ENABLE_EXTENDED'         # choices are ['DISABLE_ALL', 'ENABLE_BASIC', 'ENABLE_EXTENDED', 'ENABLE_ALL']    
-
  version:
    name: '1.8.0'

  precisions:
    <<: *common_precisions

  ops:
    <<: *common_ops

  capabilities:
    int8: {
          'Conv': {
            'weight': {
                        'dtype': ['uint8', 'fp32'],
                        'scheme': ['asym'],
                        'granularity': ['per_channel'],
                        'algorithm': ['minmax']
                        },
            'activation': {
                        'dtype': ['uint8', 'fp32'],
                        'scheme': ['asym'],
                        'granularity': ['per_tensor'],
                        'algorithm': ['minmax']
                        }
                    },
          'FusedConv': {
            'weight': {
                        'dtype': ['uint8', 'fp32'],
                        'scheme': ['asym'],
                        'granularity': ['per_channel'],
                        'algorithm': ['minmax']
                        },
            'activation': {
                        'dtype': ['uint8', 'fp32'],
                        'scheme': ['asym'],
                        'granularity': ['per_tensor'],
                        'algorithm': ['minmax']
                        }
                    },
          'MatMul': {
            'weight': {
                        'dtype': ['int8', 'fp32'],
                        'scheme': ['sym'],
                        'granularity': ['per_channel'],
                        'algorithm': ['minmax']
                        },
            'activation': {
                        'dtype': ['uint8', 'fp32'],
                        'scheme': ['asym'],
                        'granularity': ['per_tensor'],
                        'algorithm': ['minmax']
                        }
                    },
          'default': {
            'weight': {
                        'dtype': ['int8', 'fp32'],
                        'scheme': ['sym'],
                        'algorithm': ['minmax'],
                        'granularity': ['per_tensor']
                    },
            'activation': {
                        'dtype': ['uint8', 'fp32'],
                        'scheme': ['asym'],
                        'algorithm': ['minmax'],
                        'granularity': ['per_tensor']
                        }
                    }
          }

  graph_optimization:
    <<: *default_optimization
-
  version:
    name: 'default'

  precisions:
    <<: *common_precisions

  ops:
    <<: *common_ops

  capabilities:
    <<: *common_capabilities

  graph_optimization:
    <<: *default_optimization
