Skip to content

Commit 3ee08ac

Browse files
authored
Merge pull request #3130 from alibaba/feature/sync
MNN:Sync: Sync Interal 3.0.2
2 parents 85291d0 + c7e8d70 commit 3ee08ac

File tree

158 files changed

+6702
-5785
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

158 files changed

+6702
-5785
lines changed

.gitignore

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -361,10 +361,3 @@ pymnn_build/
361361

362362
# mnncompress generated
363363
MNN_compression_pb2.py
364-
365-
# model path
366-
model/
367-
368-
# datasets
369-
datasets/*
370-
!datasets/*.sh

3rd_party/OpenCLHeaders/CL/cl2.hpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3810,6 +3810,24 @@ class Buffer : public Memory
38103810
}
38113811
}
38123812

3813+
Buffer(
3814+
const Context& context,
3815+
cl_mem_flags flags,
3816+
const cl_import_properties_arm *properties,
3817+
void *memory,
3818+
size_type size,
3819+
cl_int* err = NULL)
3820+
{
3821+
cl_int error;
3822+
object_ = ::clImportMemoryARM(context(), flags, properties, memory, size, &error);
3823+
3824+
detail::errHandler(error, __CREATE_BUFFER_ERR);
3825+
if (err != NULL) {
3826+
*err = error;
3827+
}
3828+
}
3829+
3830+
38133831
/*!
38143832
* \brief Construct a Buffer from a host container via iterators using a specified context.
38153833
* IteratorType must be random access.

3rd_party/OpenCLHeaders/CL/cl_ext.h

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,23 @@ typedef struct _cl_mem_android_native_buffer_host_ptr
430430
} cl_mem_android_native_buffer_host_ptr;
431431

432432

433+
/*********************************
434+
* cl_qcom_ahardwarebuffer_host_ptr extension
435+
*********************************/
436+
437+
#define CL_MEM_ANDROID_AHARDWAREBUFFER_HOST_PTR_QCOM 0x4119
438+
439+
typedef struct _cl_mem_ahardwarebuffer_host_ptr
440+
{
441+
/* Type of external memory allocation. */
442+
/* Must be CL_MEM_ANDROID_AHARDWAREBUFFER_HOST_PTR_QCOM for Android Hardware buffers. */
443+
cl_mem_ext_host_ptr ext_host_ptr;
444+
445+
/* Virtual pointer to the android hardware buffer */
446+
void* ahb_ptr;
447+
448+
} cl_mem_ahardwarebuffer_host_ptr;
449+
433450
/******************************************
434451
* cl_img_yuv_image extension *
435452
******************************************/
@@ -583,6 +600,11 @@ typedef intptr_t cl_import_properties_arm;
583600

584601
/* Protected DMA BUF memory type value for CL_IMPORT_TYPE_ARM property */
585602
#define CL_IMPORT_TYPE_PROTECTED_ARM 0x40B5
603+
#define CL_IMPORT_TYPE_ANDROID_HARDWARE_BUFFER_ARM 0x41E2
604+
#define CL_IMPORT_DMA_BUF_DATA_CONSISTENCY_WITH_HOST_ARM 0x41E3
605+
#define CL_IMPORT_MEMORY_WHOLE_ALLOCATION_ARM SIZE_MAX
606+
#define CL_IMPORT_ANDROID_HARDWARE_BUFFER_PLANE_INDEX_ARM 0x41EF
607+
#define CL_IMPORT_ANDROID_HARDWARE_BUFFER_LAYER_INDEX_ARM 0x41F0
586608

587609
/* This extension adds a new function that allows for direct memory import into
588610
* OpenCL via the clImportMemoryARM function.

CMakeLists.txt

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,7 @@ endif()
2020
project(MNN VERSION ${MNN_VERSION} LANGUAGES C CXX ASM)
2121
# complier options
2222
set(CMAKE_C_STANDARD 99)
23-
IF (NOT (CMAKE_CXX_STANDARD EQUAL 17))
24-
set(CMAKE_CXX_STANDARD 11)
25-
ENDIF()
23+
set(CMAKE_CXX_STANDARD 11)
2624
set(CMAKE_MODULE_PATH
2725
${CMAKE_MODULE_PATH}
2826
"${CMAKE_CURRENT_LIST_DIR}/cmake"
@@ -49,7 +47,7 @@ option(MNN_BUILD_TOOLS "Build tools/cpp or not" ON)
4947
option(MNN_BUILD_QUANTOOLS "Build Quantized Tools or not" OFF)
5048
option(MNN_EVALUATION "Build Evaluation Tools or not" OFF)
5149
option(MNN_BUILD_CONVERTER "Build Converter" OFF)
52-
option(MNN_SUPPORT_DEPRECATED_OP "Enable MNN's tflite quantized op" ON)
50+
option(MNN_SUPPORT_DEPRECATED_OP "Enable MNN's tflite quantized op" OFF)
5351
option(MNN_DEBUG_MEMORY "MNN Debug Memory Access" OFF)
5452
option(MNN_DEBUG_TENSOR_SIZE "Enable Tensor Size" OFF)
5553
option(MNN_GPU_TRACE "Enable MNN Gpu Debug" OFF)
@@ -74,6 +72,7 @@ option(MNN_JNI "Build MNN Jni for java to use" OFF)
7472
option(MNN_SUPPORT_BF16 "Enable MNN's bf16 op" OFF)
7573
option(MNN_LOW_MEMORY "Build MNN support low memory for weight quant model." OFF)
7674
option(MNN_CPU_WEIGHT_DEQUANT_GEMM "Build MNN CPU weight dequant related gemm kernels." OFF)
75+
option(MNN_BUILD_AUDIO "Build audio api in MNN." OFF)
7776

7877
IF (OHOS AND MNN_INTERNAL)
7978
include($ENV{NODE_PATH}/@ali/tcpkg/tcpkg.cmake)
@@ -192,6 +191,9 @@ endif()
192191
if(MNN_SUPPORT_TRANSFORMER_FUSE)
193192
add_definitions(-DMNN_SUPPORT_TRANSFORMER_FUSE)
194193
endif()
194+
if(MNN_BUILD_AUDIO)
195+
add_definitions(-DMNN_BUILD_AUDIO)
196+
endif()
195197
# debug options
196198
if(MNN_DEBUG_MEMORY)
197199
add_definitions(-DMNN_DEBUG_MEMORY)
@@ -287,7 +289,7 @@ if(CMAKE_SYSTEM_NAME MATCHES "^Android")
287289
endif()
288290
option(MNN_USE_CPP11 "Enable MNN use c++11" ON)
289291
if (NOT MSVC)
290-
if((MNN_CUDA AND MNN_SUPPORT_TRANSFORMER_FUSE) OR (CMAKE_CXX_STANDARD EQUAL 17))
292+
if(MNN_CUDA AND MNN_SUPPORT_TRANSFORMER_FUSE)
291293
set(CMAKE_CXX_STANDARD 17)
292294
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
293295
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
@@ -463,6 +465,10 @@ IF(MNN_BUILD_OPENCV)
463465
list(APPEND MNN_EXTRA_HEADERS ${MNN_CV_HDRS})
464466
list(APPEND MNN_EXTRA_HEADERS ${MNN_CV_IMGHDRS})
465467
ENDIF()
468+
IF(MNN_BUILD_AUDIO)
469+
file(GLOB MNN_AUDIO_HDRS ${CMAKE_CURRENT_SOURCE_DIR}/tools/audio/include/audio/*.hpp PARENT_SCOPE)
470+
list(APPEND MNN_EXTRA_HEADERS ${MNN_AUDIO_HDRS})
471+
ENDIF()
466472
IF(MNN_BUILD_LLM)
467473
file(GLOB MNN_LLM_HDRS ${CMAKE_CURRENT_SOURCE_DIR}/transformers/llm/engine/include/llm/*)
468474
list(APPEND MNN_EXTRA_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/transformers/llm/engine/include/llm/llm.hpp)
@@ -775,6 +781,14 @@ IF(MNN_BUILD_OPENCV AND NOT MNN_SEP_BUILD)
775781
ENDIF()
776782
target_sources(MNN PRIVATE $<TARGET_OBJECTS:MNNOpenCV>)
777783
ENDIF()
784+
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/tools/audio)
785+
IF(MNN_BUILD_AUDIO AND NOT MNN_SEP_BUILD)
786+
IF(MSVC)
787+
target_compile_definitions(MNNAudio PRIVATE "-DBUILDING_MNN_DLL" INTERFACE "-DUSING_MNN_DLL")
788+
ENDIF()
789+
message(STATUC "### build MNNAudio into MNN")
790+
target_sources(MNN PRIVATE $<TARGET_OBJECTS:MNNAudio>)
791+
ENDIF()
778792

779793

780794
if(CMAKE_SYSTEM_NAME MATCHES "^Linux")
@@ -884,6 +898,14 @@ ELSE()
884898
SET_SOURCE_FILES_PROPERTIES(${HDR} PROPERTIES MACOSX_PACKAGE_LOCATION Headers/cv/imgproc )
885899
ENDFOREACH()
886900
ENDIF()
901+
IF(MNN_BUILD_AUDIO)
902+
if (NOT MNN_AAPL_FMWK)
903+
INSTALL(FILES ${MNN_AUDIO_HDRS} DESTINATION include/MNN/audio)
904+
endif()
905+
FOREACH(HDR ${MNN_AUDIO_HDRS})
906+
SET_SOURCE_FILES_PROPERTIES(${HDR} PROPERTIES MACOSX_PACKAGE_LOCATION Headers/audio/ )
907+
ENDFOREACH()
908+
ENDIF()
887909
IF(MNN_BUILD_LLM)
888910
if (NOT MNN_AAPL_FMWK)
889911
INSTALL(FILES ${MNN_LLM_HDRS} DESTINATION include/MNN/llm)

docs/compile/cmake.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ MNN使用CMake构建项目,CMake中的宏定义列表如下:
1616
| MNN_BUILD_QUANTOOLS | 是否构建MNN的量化工具,默认为`OFF` |
1717
| MNN_EVALUATION | 是否构建MNN的评估工具,默认为`OFF` |
1818
| MNN_BUILD_CONVERTER | 是否构建MNN的转换工具,默认为`OFF` |
19-
| MNN_SUPPORT_DEPRECATED_OP | 是否支持Tflite的量化算子,默认为`ON` |
19+
| MNN_SUPPORT_DEPRECATED_OP | 是否支持Tflite的量化算子等已经废弃的算子,用于兼容历史模型(1.1.0版本之前),默认为`OFF` |
2020
| MNN_DEBUG_MEMORY | 是否开启MNN内存调试,默认为`OFF` |
2121
| MNN_DEBUG_TENSOR_SIZE | 是否开启MNN tensor size调试,默认为`OFF` |
2222
| MNN_GPU_TRACE | 是否开启MNN GPU调试,默认为`OFF` |
@@ -32,6 +32,7 @@ MNN使用CMake构建项目,CMake中的宏定义列表如下:
3232
| MNN_ENABLE_COVERAGE | 是否开启MNN的代码覆盖率,默认为`OFF` |
3333
| MNN_BUILD_PROTOBUFFER | 是否使用MNN中的`protobuffer`,默认为`ON` |
3434
| MNN_BUILD_OPENCV | 是否构建MNN的OpenCV功能,默认为`OFF` |
35+
| MNN_BUILD_AUDIO | 是否构建MNN的Audio功能,默认为`OFF` |
3536
| MNN_INTERNAL | 是否构建MNN的一些内部功能,如:日志;默认为`OFF` |
3637
| MNN_JNI | 是否构建MNN的JNI支持,默认为`OFF` |
3738
| MNN_METAL | 是否构建`Metal`后端,默认为`OFF` |
@@ -79,6 +80,7 @@ MNN使用CMake构建项目,CMake中的宏定义列表如下:
7980
| MNN_CVCORE | 构建MNN的OpenCV功能是否开启`core`功能,默认为`ON` |
8081
| MNN_OPENCV_TEST | 构建MNN的OpenCV功能是否开启单元测试,默认为`OFF` |
8182
| MNN_OPENCV_BENCH | 构建MNN的OpenCV功能是否开启性能benchmark,默认为`OFF` |
83+
| MNN_AUDIO_TEST | 构建MNN的Audio功能是否开启单元测试,默认为`OFF` |
8284
| MNN_VULKAN_IMAGE | 构建MNN的Vulkan后端时采用Image内存模式,以便支持FP16和部分移动端上GPU的加速,默认为`ON` |
8385
| MNN_LOW_MEMORY | 是否支持低内存模式,支持低内存模式使用权值量化模型并设置`low_memory`则会使用计算时反量化,默认为`OFF` |
8486
| MNN_CPU_WEIGHT_DEQUANT_GEMM | 是否编译CPU权重反量化的矩阵乘Kernel, 如果打开该编译宏并且在CPU推理时设置MNN::BackendConfig::MemoryMode=Memory_Normal,就会使用权重反量化算子进行权重量化模型的推理,默认为`OFF` |

docs/compile/other.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,19 @@
133133
- `libMNNOpenCV.so` MNN OpenCV函数库
134134
- `opencv_test` MNN OpenCV单元测试
135135
- `opencv_bench` MNN OpenCV性能测试
136+
## MNN Audio库
137+
- 相关编译选项
138+
- `MNN_BUILD_AUDIO` 是否编译Audio函数接口
139+
- `MNN_AUDIO_TEST` 是否编译Audio单元测试
140+
- 编译命令
141+
```bash
142+
mkdir build && cd build
143+
cmake .. -MNN_BUILD_AUDIO=ON -MNN_AUDIO_TEST=ON
144+
make -j4
145+
```
146+
- 编译产物
147+
- `libMNNAudio.so` MNN Audio函数库
148+
- `audio_test` MNN Audio单元测试
136149

137150
## 示例工程
138151
- 相关编译选项

0 commit comments

Comments
 (0)