提交 3a7bc37f 编写于 作者: M Megvii Engine Team

fix(lite): fix lite type define error

GitOrigin-RevId: 10338593644b2c917ff5ca4553f941dfe4fbbc24
上级 8cb20186
file (GLOB_RECURSE SOURCES ./*.cpp)
add_executable(lite_examples ${SOURCES})
if(LITE_BUILD_WITH_RKNPU)
#rknn sdk1.0.0 depend on libc++_shared, use gold to remove NEEDED so symbol check
target_link_options(lite_examples PRIVATE "-fuse-ld=gold")
endif()
target_link_libraries(lite_examples lite_static)
if(LITE_BUILD_WITH_MGE AND MGE_WITH_ROCM)
# FIXME: hip obj can not find cpp obj only through lite_static
target_link_libraries(lite_examples megdnn)
endif()
if(UNIX)
if(APPLE OR ANDROID)
target_link_libraries(lite_examples dl)
else()
target_link_libraries(lite_examples dl rt)
endif()
endif()
install (TARGETS lite_examples
EXPORT ${LITE_EXPORT_TARGETS}
RUNTIME DESTINATION lite/bin)
# add lite_examples_depends_shared for CI check symbol export valid
add_executable(lite_examples_depends_shared ${SOURCES})
if(LITE_BUILD_WITH_RKNPU)
#rknn sdk1.0.0 depend on libc++_shared, use gold to remove NEEDED so symbol check
target_link_options(lite_examples_depends_shared PRIVATE "-fuse-ld=gold")
endif()
target_link_libraries(lite_examples_depends_shared lite_shared)
if(UNIX)
if(APPLE OR ANDROID)
target_link_libraries(lite_examples_depends_shared dl)
else()
target_link_libraries(lite_examples_depends_shared dl rt)
endif()
endif()
install (TARGETS lite_examples_depends_shared
EXPORT ${LITE_EXPORT_TARGETS}
RUNTIME DESTINATION lite/bin)
add_subdirectory(cpp_example)
add_subdirectory(c_example)
add_executable(lite_c_examples ./main.c)
if(LITE_BUILD_WITH_RKNPU)
#rknn sdk1.0.0 depend on libc++_shared, use gold to remove NEEDED so symbol check
target_link_options(lite_c_examples PRIVATE "-fuse-ld=gold")
endif()
target_link_libraries(lite_c_examples lite_static)
if(LITE_BUILD_WITH_MGE AND MGE_WITH_ROCM)
# FIXME: hip obj can not find cpp obj only through lite_static
target_link_libraries(lite_c_examples megdnn)
endif()
if(UNIX)
if(APPLE OR ANDROID)
target_link_libraries(lite_c_examples dl)
else()
target_link_libraries(lite_c_examples dl rt)
endif()
endif()
install (TARGETS lite_c_examples
EXPORT ${LITE_EXPORT_TARGETS}
RUNTIME DESTINATION lite/bin)
# add lite_examples_depends_shared for CI check symbol export valid
add_executable(lite_c_examples_depends_shared ./main.c)
if(LITE_BUILD_WITH_RKNPU)
#rknn sdk1.0.0 depend on libc++_shared, use gold to remove NEEDED so symbol check
target_link_options(lite_c_examples_depends_shared PRIVATE "-fuse-ld=gold")
endif()
target_link_libraries(lite_c_examples_depends_shared lite_shared)
if(UNIX)
if(APPLE OR ANDROID)
target_link_libraries(lite_c_examples_depends_shared dl)
else()
target_link_libraries(lite_c_examples_depends_shared dl rt)
endif()
endif()
install (TARGETS lite_c_examples_depends_shared
EXPORT ${LITE_EXPORT_TARGETS}
RUNTIME DESTINATION lite/bin)
/**
* \file example/c_example/main.c
* MegEngine is Licensed under the Apache License, Version 2.0 (the "License")
*
* Copyright (c) 2014-2021 Megvii Inc. All rights reserved.
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT ARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*/
#include "lite-c/global_c.h"
#include "lite-c/network_c.h"
#include "lite-c/tensor_c.h"
#include <stdio.h>
#include <string.h>
#define LITE_CAPI_CHECK(_expr) \
do { \
int _ret = (_expr); \
if (_ret) { \
fprintf(stderr, "error msg: %s", LITE_get_last_error()); \
return -1; \
} \
} while (0)
int basic_c_interface(const char* mode_path) {
//! create and load the network
LiteNetwork c_network;
LITE_CAPI_CHECK(
LITE_make_network(&c_network, *default_config(), *default_network_io()));
LITE_CAPI_CHECK(LITE_load_model_from_path(c_network, mode_path));
//! set input data to input tensor
LiteTensor c_input_tensor;
LITE_CAPI_CHECK(
LITE_get_io_tensor(c_network, "data", LITE_IO, &c_input_tensor));
void* dst_ptr;
size_t length_in_byte;
LITE_CAPI_CHECK(LITE_get_tensor_total_size_in_byte(c_input_tensor,
&length_in_byte));
LITE_CAPI_CHECK(LITE_get_tensor_memory(c_input_tensor, &dst_ptr));
//! copy or forward data to network
memset(dst_ptr, 5, length_in_byte);
//! forward
LITE_CAPI_CHECK(LITE_forward(c_network));
LITE_CAPI_CHECK(LITE_wait(c_network));
//! get the output data or read tensor data
const char* output_name;
LiteTensor c_output_tensor;
//! get the first output tensor name
LITE_CAPI_CHECK(LITE_get_output_name(c_network, 0, &output_name));
LITE_CAPI_CHECK(LITE_get_io_tensor(c_network, output_name, LITE_IO,
&c_output_tensor));
void* output_ptr;
size_t length_output_in_byte;
LITE_CAPI_CHECK(LITE_get_tensor_memory(c_output_tensor, &output_ptr));
LITE_CAPI_CHECK(LITE_get_tensor_total_size_in_byte(c_output_tensor,
&length_output_in_byte));
size_t out_length = length_output_in_byte / sizeof(float);
printf("length=%zu\n", out_length);
float max = -1.0f;
float sum = 0.0f;
for (size_t i = 0; i < out_length; i++) {
float data = ((float*)(output_ptr))[i];
sum += data;
if (max < data)
max = data;
}
printf("max=%e, sum=%e\n", max, sum);
return 0;
}
int main(int argc, char** argv) {
if (argc < 2) {
printf("usage: lite_c_examples <model file> , just test C interface "
"build.\n");
return -1;
}
return basic_c_interface(argv[1]);
}
// vim: syntax=cpp.doxygen foldmethod=marker foldmarker=f{{{,f}}}
file (GLOB_RECURSE SOURCES ./*.cpp)
add_executable(lite_examples ${SOURCES})
if(LITE_BUILD_WITH_RKNPU)
#rknn sdk1.0.0 depend on libc++_shared, use gold to remove NEEDED so symbol check
target_link_options(lite_examples PRIVATE "-fuse-ld=gold")
endif()
target_link_libraries(lite_examples lite_static)
if(LITE_BUILD_WITH_MGE AND MGE_WITH_ROCM)
# FIXME: hip obj can not find cpp obj only through lite_static
target_link_libraries(lite_examples megdnn)
endif()
if(UNIX)
if(APPLE OR ANDROID)
target_link_libraries(lite_examples dl)
else()
target_link_libraries(lite_examples dl rt)
endif()
endif()
install (TARGETS lite_examples
EXPORT ${LITE_EXPORT_TARGETS}
RUNTIME DESTINATION lite/bin)
# add lite_examples_depends_shared for CI check symbol export valid
add_executable(lite_examples_depends_shared ${SOURCES})
if(LITE_BUILD_WITH_RKNPU)
#rknn sdk1.0.0 depend on libc++_shared, use gold to remove NEEDED so symbol check
target_link_options(lite_examples_depends_shared PRIVATE "-fuse-ld=gold")
endif()
target_link_libraries(lite_examples_depends_shared lite_shared)
if(UNIX)
if(APPLE OR ANDROID)
target_link_libraries(lite_examples_depends_shared dl)
else()
target_link_libraries(lite_examples_depends_shared dl rt)
endif()
endif()
install (TARGETS lite_examples_depends_shared
EXPORT ${LITE_EXPORT_TARGETS}
RUNTIME DESTINATION lite/bin)
/**
* \file example/example.cpp
* \file example/cpp_example/example.cpp
* MegEngine is Licensed under the Apache License, Version 2.0 (the "License")
*
* Copyright (c) 2014-2021 Megvii Inc. All rights reserved.
......
/**
* \file example/example.cpp
* \file example/cpp_example/cpp_example/example.cpp
* MegEngine is Licensed under the Apache License, Version 2.0 (the "License")
*
* Copyright (c) 2014-2021 Megvii Inc. All rights reserved.
......@@ -133,7 +133,11 @@ int main(int argc, char** argv) {
auto example = (*map)[args.example_name];
if (example) {
printf("Begin to run %s example.\n", args.example_name.c_str());
return example(args);
if (example(args)) {
return 0;
} else {
return -1;
}
} else {
printf("The example of %s is not registed.", args.example_name.c_str());
return -1;
......
/**
* \file example/basic.cpp
* \file example/cpp_example/basic.cpp
* MegEngine is Licensed under the Apache License, Version 2.0 (the "License")
*
* Copyright (c) 2014-2021 Megvii Inc. All rights reserved.
......
/**
* \file example/cpu_affinity.cpp
* \file example/cpp_example/cpu_affinity.cpp
* MegEngine is Licensed under the Apache License, Version 2.0 (the "License")
*
* Copyright (c) 2014-2021 Megvii Inc. All rights reserved.
......
/**
* \file example/device_io.cpp
* \file example/cpp_example/device_io.cpp
* MegEngine is Licensed under the Apache License, Version 2.0 (the "License")
*
* Copyright (c) 2014-2021 Megvii Inc. All rights reserved.
......
/**
* \file example/basic_c_interface.cpp
* \file example/cpp_example/basic_c_interface.cpp
* MegEngine is Licensed under the Apache License, Version 2.0 (the "License")
*
* Copyright (c) 2014-2021 Megvii Inc. All rights reserved.
......
/**
* \file example/network_share_weights.cpp
* \file example/cpp_example/network_share_weights.cpp
* MegEngine is Licensed under the Apache License, Version 2.0 (the "License")
*
* Copyright (c) 2014-2021 Megvii Inc. All rights reserved.
......
/**
* \file example/reset_io.cpp
* \file example/cpp_example/reset_io.cpp
* MegEngine is Licensed under the Apache License, Version 2.0 (the "License")
*
* Copyright (c) 2014-2021 Megvii Inc. All rights reserved.
......
/**
* \file example/user_allocator.cpp
* \file example/cpp_example/user_allocator.cpp
* MegEngine is Licensed under the Apache License, Version 2.0 (the "License")
*
* Copyright (c) 2014-2021 Megvii Inc. All rights reserved.
......
/**
* \file example/user_cryption.cpp
* \file example/cpp_example/user_cryption.cpp
* MegEngine is Licensed under the Apache License, Version 2.0 (the "License")
*
* Copyright (c) 2014-2021 Megvii Inc. All rights reserved.
......
......@@ -15,18 +15,18 @@
/*!
* \brief The log level.
*/
typedef enum LiteLogLevel {
typedef enum {
DEBUG = 0, /*!< The lowest level and most verbose */
INFO = 1, /*!< The lowest level and most verbose */
WARN = 2, /*!< Print only warning and errors */
ERROR = 3, /*!< Print only errors */
} LiteLogLevel;
typedef enum LiteBackend {
typedef enum {
LITE_DEFAULT = 0, //! default backend is mge
} LiteBackend;
typedef enum LiteDeviceType {
typedef enum {
LITE_CPU = 0,
LITE_CUDA = 1,
LITE_ATLAS = 3,
......@@ -36,7 +36,7 @@ typedef enum LiteDeviceType {
LITE_DEVICE_DEFAULT = 5,
} LiteDeviceType;
typedef enum LiteDataType {
typedef enum {
LITE_FLOAT = 0,
LITE_HALF = 1,
LITE_INT = 2,
......@@ -46,9 +46,9 @@ typedef enum LiteDataType {
LITE_UINT = 6,
LITE_UINT16 = 7,
LITE_INT64 = 8,
} LiteCDataType;
} LiteDataType;
typedef enum LiteTensorPhase {
typedef enum {
//! Tensor maybe input or output
LITE_IO = 0,
//! Tensor is input
......@@ -61,7 +61,7 @@ typedef enum LiteTensorPhase {
* \brief the input and output type, include SHAPE and VALUE
* sometimes user only need the shape of the output tensor
*/
typedef enum LiteIOType {
typedef enum {
LITE_IO_VALUE = 0,
LITE_IO_SHAPE = 1,
} LiteIOType;
......@@ -88,7 +88,7 @@ typedef enum LiteIOType {
* 5. LITE_ALGO_PROFILE | LITE_ALGO_OPTIMIZED | LITE_ALGO_REPRODUCIBLE means:
* profile the best algorithm form the optimzed and reproducible algorithms
*/
typedef enum LiteAlgoSelectStrategy {
typedef enum {
LITE_ALGO_HEURISTIC = 1 << 0,
LITE_ALGO_PROFILE = 1 << 1,
LITE_ALGO_REPRODUCIBLE = 1 << 2,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册