Publishing 2019 R1 content
[platform/upstream/dldt.git] / inference-engine / src / gna_plugin / dnn_memory.cpp
1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
3 //
4 // dnn_memory.cpp : memory manipulation routines
5 //
6
7 #include <cstdio>
8 #include <cstdlib>
9 #include "dnn_memory.hpp"
10 #include "gna-api.h"
11
12 void MemoryAssign(void **ptr_dest,
13                   void **ptr_memory,
14                   uint32_t num_bytes_needed,
15                   uint32_t *ptr_num_bytes_used,
16                   uint32_t num_memory_bytes,
17                   const char *name) {
18     if (*ptr_num_bytes_used + ALIGN(num_bytes_needed, 64) > num_memory_bytes) {
19         fprintf(stderr,
20                 "Out of memory in %s (%d+ALIGN(%d)>%d)!\n",
21                 name,
22                 *ptr_num_bytes_used,
23                 num_bytes_needed,
24                 num_memory_bytes);
25         throw -1;
26     } else {
27         uint8_t *ptr_bytes = reinterpret_cast<uint8_t *>(*ptr_memory);
28         *ptr_dest = *ptr_memory;
29         *ptr_memory = ptr_bytes + ALIGN(num_bytes_needed, 64);
30         *ptr_num_bytes_used += ALIGN(num_bytes_needed, 64);
31     }
32 }