Browse Source

fix(lite): fix lite type define error

GitOrigin-RevId: 1033859364
release-1.7
Megvii Engine Team 3 years ago
parent
commit
3a7bc37fbd
17 changed files with 205 additions and 66 deletions
  1. +2
    -47
      lite/example/CMakeLists.txt
  2. +44
    -0
      lite/example/c_example/CMakeLists.txt
  3. +89
    -0
      lite/example/c_example/main.c
  4. +47
    -0
      lite/example/cpp_example/CMakeLists.txt
  5. +1
    -1
      lite/example/cpp_example/example.h
  6. +6
    -2
      lite/example/cpp_example/main.cpp
  7. +0
    -0
      lite/example/cpp_example/mge/README.md
  8. +1
    -1
      lite/example/cpp_example/mge/basic.cpp
  9. +1
    -1
      lite/example/cpp_example/mge/cpu_affinity.cpp
  10. +1
    -1
      lite/example/cpp_example/mge/device_io.cpp
  11. +1
    -1
      lite/example/cpp_example/mge/lite_c_interface.cpp
  12. +1
    -1
      lite/example/cpp_example/mge/network_share_weights.cpp
  13. +1
    -1
      lite/example/cpp_example/mge/reset_io.cpp
  14. +1
    -1
      lite/example/cpp_example/mge/user_allocator.cpp
  15. +1
    -1
      lite/example/cpp_example/mge/user_cryption.cpp
  16. +0
    -0
      lite/example/cpp_example/npy.h
  17. +8
    -8
      lite/include/lite/common_enum_c.h

+ 2
- 47
lite/example/CMakeLists.txt View File

@@ -1,47 +1,2 @@
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)

+ 44
- 0
lite/example/c_example/CMakeLists.txt View File

@@ -0,0 +1,44 @@
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)

+ 89
- 0
lite/example/c_example/main.c View File

@@ -0,0 +1,89 @@
/**
* \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}}}

+ 47
- 0
lite/example/cpp_example/CMakeLists.txt View File

@@ -0,0 +1,47 @@
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)

lite/example/example.h → lite/example/cpp_example/example.h View File

@@ -1,5 +1,5 @@
/**
* \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.

lite/example/main.cpp → lite/example/cpp_example/main.cpp View File

@@ -1,5 +1,5 @@
/**
* \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;

lite/example/mge/README.md → lite/example/cpp_example/mge/README.md View File


lite/example/mge/basic.cpp → lite/example/cpp_example/mge/basic.cpp View File

@@ -1,5 +1,5 @@
/**
* \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.

lite/example/mge/cpu_affinity.cpp → lite/example/cpp_example/mge/cpu_affinity.cpp View File

@@ -1,5 +1,5 @@
/**
* \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.

lite/example/mge/device_io.cpp → lite/example/cpp_example/mge/device_io.cpp View File

@@ -1,5 +1,5 @@
/**
* \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.

lite/example/mge/lite_c_interface.cpp → lite/example/cpp_example/mge/lite_c_interface.cpp View File

@@ -1,5 +1,5 @@
/**
* \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.

lite/example/mge/network_share_weights.cpp → lite/example/cpp_example/mge/network_share_weights.cpp View File

@@ -1,5 +1,5 @@
/**
* \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.

lite/example/mge/reset_io.cpp → lite/example/cpp_example/mge/reset_io.cpp View File

@@ -1,5 +1,5 @@
/**
* \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.

lite/example/mge/user_allocator.cpp → lite/example/cpp_example/mge/user_allocator.cpp View File

@@ -1,5 +1,5 @@
/**
* \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.

lite/example/mge/user_cryption.cpp → lite/example/cpp_example/mge/user_cryption.cpp View File

@@ -1,5 +1,5 @@
/**
* \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.

lite/example/npy.h → lite/example/cpp_example/npy.h View File


+ 8
- 8
lite/include/lite/common_enum_c.h View File

@@ -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,


Loading…
Cancel
Save