/*
-// Copyright (c) 2016 Intel Corporation
+// Copyright (c) 2016-2019 Intel Corporation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
});
}
-void cldnn_get_primitive_ids(cldnn_topology topology, char* ids, size_t size, size_t* size_ret, cldnn_status* status)
+static void primitive_id_vector_to_char_array(
+ char* names,
+ size_t size,
+ size_t* size_ret,
+ cldnn_status* status,
+ const std::vector<primitive_id>& vec)
{
- return exception_handler(CLDNN_ERROR, status, [&]()
+ *size_ret = std::accumulate(
+ std::begin(vec),
+ std::end(vec),
+ size_t(1), // final zero symbol
+ [](size_t acc, const cldnn::primitive_id& id)
{
- SHOULD_NOT_BE_NULL(topology, "Topology");
- auto ids_size = api_cast(topology)->get_primitives().size();
- SHOULD_NOT_EQUAL_0(ids_size, "Primitives number");
- auto& primitives_ids = api_cast(topology)->get_primitives_id();
- *size_ret = std::accumulate(
- std::begin(primitives_ids),
- std::end(primitives_ids),
- size_t(1), //final zero symbol
- [](size_t acc, const cldnn::primitive_id& id)
- {
- return acc + id.size() + 1; // plus zero symbol
- });
+ return acc + id.size() + 1; // plus zero symbol
+ });
- if (size < *size_ret)
- {
- if (status) *status = CLDNN_INVALID_ARG;
- return;
- }
+ if (size < *size_ret)
+ {
+ if (status) *status = CLDNN_INVALID_ARG;
+ return;
+ }
- size_t i = 0;
- for (auto& id : primitives_ids)
- {
- // workaround for Microsoft VC++
+ size_t i = 0;
+ for (auto& id : vec)
+ {
+ // workaround for Microsoft VC++
#if defined _MSC_VER
#pragma warning(push)
#pragma warning(disable: 4996)
#endif
- i += id.copy(ids + i, size - i - 2);
+ i += id.copy(names + i, size - i - 2);
#if defined _MSC_VER
#pragma warning(pop)
#endif
- ids[i++] = 0; // plus zero symbol
- assert(i < size);
- }
- ids[i] = 0; // final zero symbol
+ names[i++] = 0; // plus zero symbol
+ assert(i < size);
+ }
+ names[i] = 0; // final zero symbol
+}
+
+void cldnn_get_primitive_ids(cldnn_topology topology, char* ids, size_t size, size_t* size_ret, cldnn_status* status)
+{
+ return exception_handler(CLDNN_ERROR, status, [&]()
+ {
+ SHOULD_NOT_BE_NULL(topology, "Topology");
+ auto ids_size = api_cast(topology)->get_primitives().size();
+ SHOULD_NOT_EQUAL_0(ids_size, "Primitives number");
+ auto&& primitives_ids = api_cast(topology)->get_primitives_id();
+ primitive_id_vector_to_char_array(ids, size, size_ret, status, primitives_ids);
});
}
void cldnn_retain_engine(cldnn_engine engine, cldnn_status* status)
{
- exception_handler(CLDNN_ERROR, status, [&]()
- {
+ exception_handler(CLDNN_ERROR, status, [&]()
+ {
SHOULD_NOT_BE_NULL(engine, "Engine");
- api_cast(engine)->add_ref();
+ api_cast(engine)->add_ref();
});
}
void cldnn_release_engine(cldnn_engine engine, cldnn_status* status)
{
- exception_handler(CLDNN_ERROR, status, [&]()
- {
+ exception_handler(CLDNN_ERROR, status, [&]()
+ {
SHOULD_NOT_BE_NULL(engine, "Engine");
- api_cast(engine)->release();
+ api_cast(engine)->release();
});
}
void cldnn_retain_event(cldnn_event event, cldnn_status* status)
{
- exception_handler(CLDNN_ERROR, status, [&]()
- {
+ exception_handler(CLDNN_ERROR, status, [&]()
+ {
SHOULD_NOT_BE_NULL(event, "Event");
- api_cast(event)->add_ref();
+ api_cast(event)->add_ref();
});
}
void cldnn_release_event(cldnn_event event, cldnn_status* status)
{
- exception_handler(CLDNN_ERROR, status, [&]()
- {
+ exception_handler(CLDNN_ERROR, status, [&]()
+ {
SHOULD_NOT_BE_NULL(event, "Event");
- api_cast(event)->release();
+ api_cast(event)->release();
});
}
{
exception_handler(CLDNN_ERROR, status, [&]()
{
+ SHOULD_NOT_BE_NULL(mem, "Mem");
auto mem_size = api_cast(mem)->size();
SHOULD_NOT_BE_NULL(network, "Network");
SHOULD_NOT_BE_NULL(id, "Id");
- SHOULD_NOT_BE_NULL(mem, "Mem");
SHOULD_NOT_EQUAL_0(mem_size, "Memory size");
api_cast(network)->set_input_data(id, *api_cast(mem));
});
float cldnn_get_learning_rate(cldnn_network network, cldnn_status* status)
{
- return exception_handler<float>(CLDNN_ERROR, status, 0, [&]()
+ return exception_handler<float>(CLDNN_ERROR, status, 0, [&]()
{
return api_cast(network)->get_learning_rate();
});
cldnn_program cldnn_get_network_program(cldnn_network network, cldnn_status* status)
{
return exception_handler<cldnn_program>(CLDNN_ERROR, status, nullptr, [&]()
- {
+ {
SHOULD_NOT_BE_NULL(network, "Network");
refcounted_obj_ptr<cldnn::program_impl> ptr{const_cast<cldnn::program_impl*>(&api_cast(network)->get_program())};
return api_cast(ptr.detach());
size_t i = 0;
for (const auto c : prim_info)
{
- info[i++] = c;
+ info[i++] = c;
assert(i < size);
}
info[i] = 0; // final zero symbol
{
exception_handler(CLDNN_ERROR, status, [&]()
{
- auto output_size = api_cast(network)->get_output_ids().size();
- SHOULD_NOT_BE_NULL(network, "Network");
- SHOULD_NOT_EQUAL_0(output_size, "Output size");
+ SHOULD_NOT_BE_NULL(network, "Network");
auto&& output_ids = api_cast(network)->get_output_ids();
- *size_ret = std::accumulate(
- std::begin(output_ids),
- std::end(output_ids),
- size_t(1), // final zero symbol
- [](size_t acc, const cldnn::primitive_id& id)
- {
- return acc + id.size() + 1; // plus zero symbol
- });
-
- if(size < *size_ret)
- {
- if (status) *status = CLDNN_INVALID_ARG;
- return;
- }
-
- size_t i = 0;
- for(auto& id: output_ids)
- {
-// workaround for Microsoft VC++
-#if defined _MSC_VER
-#pragma warning(push)
-#pragma warning(disable: 4996)
-#endif
- i += id.copy(names + i, size - i - 2);
-#if defined _MSC_VER
-#pragma warning(pop)
-#endif
- names[i++] = 0; // plus zero symbol
- assert(i < size);
- }
- names[i] = 0; // final zero symbol
+ SHOULD_NOT_EQUAL_0(output_ids.size(), "Output size");
+ primitive_id_vector_to_char_array(names, size, size_ret, status, output_ids);
});
}
{
exception_handler(CLDNN_ERROR, status, [&]()
{
- auto primitives_size = api_cast(network)->get_executed_primitive_ids().size();
SHOULD_NOT_BE_NULL(network, "Network");
- SHOULD_NOT_EQUAL_0(primitives_size, "Primitives size");
auto&& primitive_ids = api_cast(network)->get_executed_primitive_ids();
- *size_ret = std::accumulate(
- std::begin(primitive_ids),
- std::end(primitive_ids),
- size_t(1), // final zero symbol
- [](size_t acc, const cldnn::primitive_id& id)
- {
- return acc + id.size() + 1; // plus zero symbol
- });
-
- if (size < *size_ret)
- {
- if (status) *status = CLDNN_INVALID_ARG;
- return;
- }
-
- size_t i = 0;
- for (auto& id : primitive_ids)
- {
- // workaround for Microsoft VC++
-#if defined _MSC_VER
-#pragma warning(push)
-#pragma warning(disable: 4996)
-#endif
- i += id.copy(names + i, size - i - 2);
-#if defined _MSC_VER
-#pragma warning(pop)
-#endif
- names[i++] = 0; // plus zero symbol
- assert(i < size);
- }
- names[i] = 0; // final zero symbol
+ SHOULD_NOT_EQUAL_0(primitive_ids.size(), "Primitives size");
+ primitive_id_vector_to_char_array(names, size, size_ret, status, primitive_ids);
});
}
{
exception_handler(CLDNN_ERROR, status, [&]()
{
- auto primitives_size = api_cast(network)->get_all_primitive_ids().size();
SHOULD_NOT_BE_NULL(network, "Network");
- SHOULD_NOT_EQUAL_0(primitives_size, "Primitives size");
auto&& primitive_ids = api_cast(network)->get_all_primitive_ids();
- *size_ret = std::accumulate(
- std::begin(primitive_ids),
- std::end(primitive_ids),
- size_t(1), // final zero symbol
- [](size_t acc, const cldnn::primitive_id& id)
- {
- return acc + id.size() + 1; // plus zero symbol
- });
-
- if (size < *size_ret)
- {
- if (status) *status = CLDNN_INVALID_ARG;
- return;
- }
-
- size_t i = 0;
- for (auto& id : primitive_ids)
- {
- // workaround for Microsoft VC++
-#if defined _MSC_VER
-#pragma warning(push)
-#pragma warning(disable: 4996)
-#endif
- i += id.copy(names + i, size - i - 2);
-#if defined _MSC_VER
-#pragma warning(pop)
-#endif
- names[i++] = 0; // plus zero symbol
- assert(i < size);
- }
- names[i] = 0; // final zero symbol
+ SHOULD_NOT_EQUAL_0(primitive_ids.size(), "Primitives size");
+ primitive_id_vector_to_char_array(names, size, size_ret, status, primitive_ids);
});
}
{
exception_handler(CLDNN_ERROR, status, [&]()
{
- auto primitives_size = api_cast(network)->get_all_primitive_org_ids().size();
SHOULD_NOT_BE_NULL(network, "Network");
- SHOULD_NOT_EQUAL_0(primitives_size, "Primitives size");
auto&& primitive_ids = api_cast(network)->get_all_primitive_org_ids();
- *size_ret = std::accumulate(
- std::begin(primitive_ids),
- std::end(primitive_ids),
- size_t(1), // final zero symbol
- [](size_t acc, const cldnn::primitive_id& id)
- {
- return acc + id.size() + 1; // plus zero symbol
- });
-
- if (size < *size_ret)
- {
- if (status) *status = CLDNN_INVALID_ARG;
- return;
- }
-
- size_t i = 0;
- for (auto& id : primitive_ids)
- {
- // workaround for Microsoft VC++
-#if defined _MSC_VER
-#pragma warning(push)
-#pragma warning(disable: 4996)
-#endif
- i += id.copy(names + i, size - i - 2);
-#if defined _MSC_VER
-#pragma warning(pop)
-#endif
- names[i++] = 0; // plus zero symbol
- assert(i < size);
- }
- names[i] = 0; // final zero symbol
+ SHOULD_NOT_EQUAL_0(primitive_ids.size(), "Primitives size");
+ primitive_id_vector_to_char_array(names, size, size_ret, status, primitive_ids);
});
}
return exception_handler<cldnn_memory>(CLDNN_ERROR, status, nullptr, [&]()
{
cldnn::layout layout_obj(layout);
- if (layout_obj.bytes_count() > size)
+ if (layout_obj.bytes_count() > size)
throw std::invalid_argument("buffer size does not match layout size");
return api_cast(new cldnn::simple_attached_memory(layout_obj, pointer));
});
PRIMITIVE_TYPE_ID_CALL_IMPL(concatenation)
PRIMITIVE_TYPE_ID_CALL_IMPL(eltwise)
PRIMITIVE_TYPE_ID_CALL_IMPL(fully_connected)
+PRIMITIVE_TYPE_ID_CALL_IMPL(fused_conv_bn_scale)
+PRIMITIVE_TYPE_ID_CALL_IMPL(fused_conv_eltwise)
PRIMITIVE_TYPE_ID_CALL_IMPL(input_layout)
PRIMITIVE_TYPE_ID_CALL_IMPL(lookup_table)
PRIMITIVE_TYPE_ID_CALL_IMPL(lrn)
PRIMITIVE_TYPE_ID_CALL_IMPL(roi_pooling)
PRIMITIVE_TYPE_ID_CALL_IMPL(prior_box)
PRIMITIVE_TYPE_ID_CALL_IMPL(detection_output)
+PRIMITIVE_TYPE_ID_CALL_IMPL(detection_output_sort)
PRIMITIVE_TYPE_ID_CALL_IMPL(normalize)
PRIMITIVE_TYPE_ID_CALL_IMPL(generic_layer)
PRIMITIVE_TYPE_ID_CALL_IMPL(custom_gpu_primitive)
PRIMITIVE_TYPE_ID_CALL_IMPL(gemm)
PRIMITIVE_TYPE_ID_CALL_IMPL(select)
PRIMITIVE_TYPE_ID_CALL_IMPL(index_select)
+PRIMITIVE_TYPE_ID_CALL_IMPL(condition)
+PRIMITIVE_TYPE_ID_CALL_IMPL(pyramid_roi_align)
+PRIMITIVE_TYPE_ID_CALL_IMPL(contract)
+PRIMITIVE_TYPE_ID_CALL_IMPL(one_hot)
+PRIMITIVE_TYPE_ID_CALL_IMPL(gather)
+PRIMITIVE_TYPE_ID_CALL_IMPL(depth_to_space)
+PRIMITIVE_TYPE_ID_CALL_IMPL(shuffle_channels)
+PRIMITIVE_TYPE_ID_CALL_IMPL(strided_slice)
+PRIMITIVE_TYPE_ID_CALL_IMPL(reverse_sequence)