summaryrefslogtreecommitdiff
path: root/inference-engine/thirdparty/mkl-dnn/tests/only_pooling.c
diff options
context:
space:
mode:
Diffstat (limited to 'inference-engine/thirdparty/mkl-dnn/tests/only_pooling.c')
-rw-r--r--inference-engine/thirdparty/mkl-dnn/tests/only_pooling.c154
1 files changed, 0 insertions, 154 deletions
diff --git a/inference-engine/thirdparty/mkl-dnn/tests/only_pooling.c b/inference-engine/thirdparty/mkl-dnn/tests/only_pooling.c
deleted file mode 100644
index 692d2931d..000000000
--- a/inference-engine/thirdparty/mkl-dnn/tests/only_pooling.c
+++ /dev/null
@@ -1,154 +0,0 @@
-/*******************************************************************************
-* Copyright 2016-2018 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.
-*******************************************************************************/
-
-#include <stdio.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <stddef.h>
-#include <assert.h>
-
-#include "mkldnn.h"
-
-typedef float real_t;
-
-#define CHECK(f) do { \
- mkldnn_status_t s = f; \
- if (s != mkldnn_success) { \
- printf("[%s:%d] error: %s returns %d\n", __FILE__, __LINE__, #f, s); \
- exit(2); \
- } \
-} while(0)
-
-static size_t tensor_size(const mkldnn_tensor_desc_t *t)
-{
- size_t size = 1;
- for (size_t i = 0; i < t->ndims; ++i)
- size *= t->dims[i];
- return size;
-}
-
-static void init_src(int dim[4], real_t *x)
-{
- int N = dim[0], C = dim[1], H = dim[2], W = dim[3];
- for (int n = 0; n < N; n += 1)
- for (int c = 0; c < C; c += 1)
- for (int h = 2; h+2 <= H; h += 2)
- for (int w = 2; w+2 <= W; w += 2)
- x[w + W*h + c*W*H + n*W*H*C] = c*n;
-}
-
-static int check_dst(int dim[4], const real_t *x)
-{
- int n_errors = 0;
- int N = dim[0], C = dim[1], H = dim[2], W = dim[3];
- for (int n = 0; n < N; ++n)
- for (int c = 0; c < C; ++c)
- for (int h = 0; h < H; ++h)
- for (int w = 0; w < W; ++w)
- {
- if (x[w + W*h + c*W*H + n*W*H*C] != c*n) n_errors += 1;
- }
- return n_errors;
-}
-
-static int doit() {
- /* AlexNet: p1
- * {16, 96, 55, 55} -> {16, 96, 27, 27}
- * pad: {0, 0}
- * strides: {2, 2}
- * kernel: {3, 3}
- */
-
- mkldnn_engine_t engine;
- CHECK(mkldnn_engine_create(&engine, mkldnn_cpu, 0 /* idx */));
-
- /* first describe user data and create data descriptors for future
- * pooling w/ the specified format -- we do not want to do a reorder */
- int p1_src_sizes[4] = { 16, 96, 55, 55 };
- mkldnn_tensor_desc_t p1_src_tz;
- mkldnn_memory_desc_t p1_src_md;
- mkldnn_memory_primitive_desc_t p1_src_pd;
- mkldnn_primitive_t p1_src;
- CHECK(mkldnn_tensor_desc_init(&p1_src_tz, 4, p1_src_sizes));
- CHECK(mkldnn_memory_desc_init(&p1_src_md, &p1_src_tz, mkldnn_f32, mkldnn_nchw));
- CHECK(mkldnn_memory_primitive_desc_init(&p1_src_pd, &p1_src_md, engine));
- real_t *src = (real_t*)calloc(tensor_size(&p1_src_md.tensor_desc), sizeof(real_t));
- CHECK(mkldnn_memory_create(&p1_src, &p1_src_pd, src));
-
- int p1_dst_sizes[4] = { 16, 96, 27, 27 };
- mkldnn_tensor_desc_t p1_dst_tz;
- mkldnn_memory_desc_t p1_dst_md;
- mkldnn_memory_primitive_desc_t p1_dst_pd;
- mkldnn_primitive_t p1_dst;
- CHECK(mkldnn_tensor_desc_init(&p1_dst_tz, 4, p1_dst_sizes));
- CHECK(mkldnn_memory_desc_init(&p1_dst_md, &p1_dst_tz, mkldnn_f32, mkldnn_nchw));
- CHECK(mkldnn_memory_primitive_desc_init(&p1_dst_pd, &p1_dst_md, engine));
- real_t *dst = (real_t*)calloc(tensor_size(&p1_dst_md.tensor_desc), sizeof(real_t));
- CHECK(mkldnn_memory_create(&p1_dst, &p1_dst_pd, dst));
-
- int strides[] = { 2, 2 };
- int kernel [] = { 3, 3 };
- int32_t padding[] = { 0, 0 };
- mkldnn_pooling_desc_t p1_desc;
- mkldnn_pooling_primitive_desc_t p1_pd;
- CHECK(mkldnn_pooling_desc_init(&p1_desc, mkldnn_forward, mkldnn_pooling_max,
- &p1_src_md, &p1_dst_md, strides, kernel, padding, mkldnn_padding_zero));
- CHECK(mkldnn_pooling_primitive_desc_init(&p1_pd, &p1_desc, engine));
-
- mkldnn_primitive_t p1_indices;
- CHECK(mkldnn_memory_create(&p1_indices, &p1_pd.indices_primitive_desc, NULL));
-
- /* create a pooling */
- mkldnn_primitive_t p1;
- mkldnn_primitive_at_t p1_srcs[] = {
- mkldnn_primitive_at(p1_src, 0),
- mkldnn_primitive_at(p1_indices, 0)
- };
- const_mkldnn_primitive_t p1_dsts[] = { p1_dst };
-
- CHECK(mkldnn_primitive_create(&p1, &p1_pd, p1_srcs, p1_dsts));
-
- assert(mkldnn_memory_primitive_desc_equal(&p1_pd.src_primitive_desc, &p1_src_pd));
- assert(mkldnn_memory_primitive_desc_equal(&p1_pd.dst_primitive_desc, &p1_dst_pd));
-
- init_src(p1_src_sizes, src);
-
- /* let us build a net */
- mkldnn_stream_t stream;
- CHECK(mkldnn_stream_create(&stream));
- CHECK(mkldnn_stream_submit(stream, 1, &p1, NULL));
- CHECK(mkldnn_stream_wait(stream, 1, NULL));
-
- /* clean-up */
- CHECK(mkldnn_stream_destroy(stream));
- mkldnn_primitive_destroy(p1);
- mkldnn_primitive_destroy(p1_src);
- mkldnn_primitive_destroy(p1_indices);
- mkldnn_primitive_destroy(p1_dst);
- mkldnn_engine_destroy(engine);
-
- int n_errors = check_dst(p1_dst_sizes, dst);
-
- free(src);
- free(dst);
-
- return n_errors;
-}
-
-int main(int argc, char **argv) {
- int rc = doit();
- return rc;
-}