1/*******************************************************************************
2* Copyright 2022 Intel Corporation
3*
4* Licensed under the Apache License, Version 2.0 (the "License");
5* you may not use this file except in compliance with the License.
6* You may obtain a copy of the License at
7*
8* http://www.apache.org/licenses/LICENSE-2.0
9*
10* Unless required by applicable law or agreed to in writing, software
11* distributed under the License is distributed on an "AS IS" BASIS,
12* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13* See the License for the specific language governing permissions and
14* limitations under the License.
15*******************************************************************************/
16
17#ifndef UTILS_DNNL_QUERY_HPP
18#define UTILS_DNNL_QUERY_HPP
19
20#include <cstdint>
21#include <string>
22
23#include "oneapi/dnnl/dnnl.h"
24
25dnnl_prop_kind_t query_prop_kind(const_dnnl_primitive_desc_t pd);
26dnnl_primitive_kind_t query_prim_kind(const_dnnl_primitive_desc_t pd);
27dnnl_alg_kind_t query_alg_kind(const_dnnl_primitive_desc_t pd);
28
29std::string query_impl_info(const_dnnl_primitive_desc_t pd);
30
31// General interface of quering memory desc.
32const_dnnl_memory_desc_t query_md(
33 const_dnnl_primitive_desc_t pd, dnnl_query_t what, int index = 0);
34// Particular interface of quering through execution argument and its index.
35const_dnnl_memory_desc_t query_md(
36 const_dnnl_primitive_desc_t pd, int index = 0);
37
38dnnl_engine_t query_engine(const_dnnl_primitive_desc_t pd,
39 dnnl_query_t engine_type = dnnl_query_engine);
40
41int64_t query_mem_consumption(const_dnnl_primitive_desc_t pd);
42
43int query_n_inputs(const_dnnl_primitive_desc_t pd);
44int query_n_outputs(const_dnnl_primitive_desc_t pd);
45
46const_dnnl_post_ops_t query_post_ops(const_dnnl_primitive_attr_t attr);
47const_dnnl_post_ops_t query_post_ops(const_dnnl_primitive_desc_t pd);
48const_dnnl_primitive_attr_t query_attr(const_dnnl_primitive_desc_t pd);
49const_dnnl_primitive_desc_t query_pd(dnnl_primitive_t prim);
50
51dnnl_engine_kind_t query_engine_kind(const dnnl_engine_t &engine);
52
53int query_md_ndims(const_dnnl_memory_desc_t md);
54int query_md_inner_nblks(const_dnnl_memory_desc_t md);
55
56dnnl_dim_t query_md_submemory_offset(const_dnnl_memory_desc_t md);
57dnnl_data_type_t query_md_data_type(const_dnnl_memory_desc_t md);
58dnnl_format_kind_t query_md_format_kind(const_dnnl_memory_desc_t md);
59
60const dnnl_dims_t &query_md_dims(const_dnnl_memory_desc_t md);
61const dnnl_dims_t &query_md_padded_dims(const_dnnl_memory_desc_t md);
62const dnnl_dims_t &query_md_padded_offsets(const_dnnl_memory_desc_t md);
63const dnnl_dims_t &query_md_strides(const_dnnl_memory_desc_t md);
64const dnnl_dims_t &query_md_inner_blks(const_dnnl_memory_desc_t md);
65const dnnl_dims_t &query_md_inner_idxs(const_dnnl_memory_desc_t md);
66
67#endif
68