MNN
MNN copied to clipboard
MNN内存泄漏检查
平台(如果交叉编译请再附上交叉编译目标平台):
linux,x86_64
Github版本:
2.8.2
编译方式:
cd build
cmake ..
make
运行命令
./MNNV2Basic.out test.mnn 2 0 3 1
即循环两次,使用opencl推理,线程数为1
内存检查日志
==3421355== 72 bytes in 1 blocks are still reachable in loss record 457 of 541
==3421355== at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==3421355== by 0x57CCDA1: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355== by 0x57D0503: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355== by 0x4881023: ??? (in /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0)
==3421355== by 0x4881FEA: clGetPlatformIDs (in /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0)
==3421355== by 0x3A2B83: cl::Platform::get(std::vector<cl::Platform, std::allocator<cl::Platform> >*, int) (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x3A79EC: MNN::OpenCLRuntime::OpenCLRuntime(MNN::BackendConfig::PrecisionMode, int, int, int, int) (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x38DB7A: MNN::OpenCL::CLRuntimeCreator::onCreate(MNN::Backend::Info const&) const (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x155C09: std::once_flag::_Prepare_execution::_Prepare_execution<std::call_once<MNN::registerBackend()::{lambda()#1}>(std::once_flag&, MNN::registerBackend()::{lambda()#1}&&)::{lambda()#1}>(MNN::registerBackend()::{lambda()#1}&)::{lambda()#1}::_FUN() (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x4D36EE7: __pthread_once_slow (pthread_once.c:116)
==3421355== by 0x155E8C: MNN::MNNGetExtraRuntimeCreator(MNNForwardType) (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x18703A: MNN::Schedule::getApprociateType(MNN::ScheduleConfig const&) (in ./mnn/build/MNNV2Basic.out)
==3421355==
==3421355== 72 bytes in 1 blocks are still reachable in loss record 458 of 541
==3421355== at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==3421355== by 0x57CCF33: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355== by 0x57D0503: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355== by 0x4881023: ??? (in /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0)
==3421355== by 0x4881FEA: clGetPlatformIDs (in /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0)
==3421355== by 0x3A2B83: cl::Platform::get(std::vector<cl::Platform, std::allocator<cl::Platform> >*, int) (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x3A79EC: MNN::OpenCLRuntime::OpenCLRuntime(MNN::BackendConfig::PrecisionMode, int, int, int, int) (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x38DB7A: MNN::OpenCL::CLRuntimeCreator::onCreate(MNN::Backend::Info const&) const (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x155C09: std::once_flag::_Prepare_execution::_Prepare_execution<std::call_once<MNN::registerBackend()::{lambda()#1}>(std::once_flag&, MNN::registerBackend()::{lambda()#1}&&)::{lambda()#1}>(MNN::registerBackend()::{lambda()#1}&)::{lambda()#1}::_FUN() (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x4D36EE7: __pthread_once_slow (pthread_once.c:116)
==3421355== by 0x155E8C: MNN::MNNGetExtraRuntimeCreator(MNNForwardType) (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x18703A: MNN::Schedule::getApprociateType(MNN::ScheduleConfig const&) (in ./mnn/build/MNNV2Basic.out)
==3421355==
==3421355== 72 bytes in 1 blocks are possibly lost in loss record 459 of 541
==3421355== at 0x4848899: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==3421355== by 0x5AF8172: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355== by 0x59AD299: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355== by 0x59A8314: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355== by 0x5956D5E: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355== by 0x57D04FA: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355== by 0x4881023: ??? (in /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0)
==3421355== by 0x4881FEA: clGetPlatformIDs (in /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0)
==3421355== by 0x3A2B83: cl::Platform::get(std::vector<cl::Platform, std::allocator<cl::Platform> >*, int) (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x3A79EC: MNN::OpenCLRuntime::OpenCLRuntime(MNN::BackendConfig::PrecisionMode, int, int, int, int) (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x38DB7A: MNN::OpenCL::CLRuntimeCreator::onCreate(MNN::Backend::Info const&) const (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x155C09: std::once_flag::_Prepare_execution::_Prepare_execution<std::call_once<MNN::registerBackend()::{lambda()#1}>(std::once_flag&, MNN::registerBackend()::{lambda()#1}&&)::{lambda()#1}>(MNN::registerBackend()::{lambda()#1}&)::{lambda()#1}::_FUN() (in ./mnn/build/MNNV2Basic.out)
==3421355==
==3421355== 72 bytes in 1 blocks are possibly lost in loss record 460 of 541
==3421355== at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==3421355== by 0x59B73A0: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355== by 0x59B78A1: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355== by 0x59B79FA: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355== by 0x59577B1: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355== by 0x57D04FA: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355== by 0x4881023: ??? (in /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0)
==3421355== by 0x4881FEA: clGetPlatformIDs (in /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0)
==3421355== by 0x3A2B83: cl::Platform::get(std::vector<cl::Platform, std::allocator<cl::Platform> >*, int) (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x3A79EC: MNN::OpenCLRuntime::OpenCLRuntime(MNN::BackendConfig::PrecisionMode, int, int, int, int) (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x38DB7A: MNN::OpenCL::CLRuntimeCreator::onCreate(MNN::Backend::Info const&) const (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x155C09: std::once_flag::_Prepare_execution::_Prepare_execution<std::call_once<MNN::registerBackend()::{lambda()#1}>(std::once_flag&, MNN::registerBackend()::{lambda()#1}&&)::{lambda()#1}>(MNN::registerBackend()::{lambda()#1}&)::{lambda()#1}::_FUN() (in ./mnn/build/MNNV2Basic.out)
==3421355==
==3421355== 80 bytes in 1 blocks are still reachable in loss record 461 of 541
==3421355== at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==3421355== by 0x5B4ADC1: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355== by 0x5955772: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355== by 0x57D04FA: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355== by 0x4881023: ??? (in /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0)
==3421355== by 0x4881FEA: clGetPlatformIDs (in /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0)
==3421355== by 0x3A2B83: cl::Platform::get(std::vector<cl::Platform, std::allocator<cl::Platform> >*, int) (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x3A79EC: MNN::OpenCLRuntime::OpenCLRuntime(MNN::BackendConfig::PrecisionMode, int, int, int, int) (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x38DB7A: MNN::OpenCL::CLRuntimeCreator::onCreate(MNN::Backend::Info const&) const (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x155C09: std::once_flag::_Prepare_execution::_Prepare_execution<std::call_once<MNN::registerBackend()::{lambda()#1}>(std::once_flag&, MNN::registerBackend()::{lambda()#1}&&)::{lambda()#1}>(MNN::registerBackend()::{lambda()#1}&)::{lambda()#1}::_FUN() (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x4D36EE7: __pthread_once_slow (pthread_once.c:116)
==3421355== by 0x155E8C: MNN::MNNGetExtraRuntimeCreator(MNNForwardType) (in ./mnn/build/MNNV2Basic.out)
==3421355==
==3421355== 80 bytes in 1 blocks are still reachable in loss record 462 of 541
==3421355== at 0x4848899: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==3421355== by 0x57CCE02: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355== by 0x57D0503: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355== by 0x4881023: ??? (in /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0)
==3421355== by 0x4881FEA: clGetPlatformIDs (in /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0)
==3421355== by 0x3A2B83: cl::Platform::get(std::vector<cl::Platform, std::allocator<cl::Platform> >*, int) (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x3A79EC: MNN::OpenCLRuntime::OpenCLRuntime(MNN::BackendConfig::PrecisionMode, int, int, int, int) (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x38DB7A: MNN::OpenCL::CLRuntimeCreator::onCreate(MNN::Backend::Info const&) const (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x155C09: std::once_flag::_Prepare_execution::_Prepare_execution<std::call_once<MNN::registerBackend()::{lambda()#1}>(std::once_flag&, MNN::registerBackend()::{lambda()#1}&&)::{lambda()#1}>(MNN::registerBackend()::{lambda()#1}&)::{lambda()#1}::_FUN() (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x4D36EE7: __pthread_once_slow (pthread_once.c:116)
==3421355== by 0x155E8C: MNN::MNNGetExtraRuntimeCreator(MNNForwardType) (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x18703A: MNN::Schedule::getApprociateType(MNN::ScheduleConfig const&) (in ./mnn/build/MNNV2Basic.out)
==3421355==
==3421355== 88 bytes in 1 blocks are still reachable in loss record 463 of 541
==3421355== at 0x4848899: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==3421355== by 0x57E8869: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355== by 0x57CDF0E: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355== by 0x3A951E: MNN::OpenCLRuntime::setCache(std::pair<void const*, unsigned long>) (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x393982: MNN::OpenCL::CLRuntime::onSetCache(void const*, unsigned long) (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x16FB25: MNN::Interpreter::createMultiPathSession(std::vector<MNN::ScheduleConfig, std::allocator<MNN::ScheduleConfig> > const&, std::pair<std::map<MNNForwardType, std::shared_ptr<MNN::Runtime>, std::less<MNNForwardType>, std::allocator<std::pair<MNNForwardType const, std::shared_ptr<MNN::Runtime> > > >, std::shared_ptr<MNN::Runtime> > const&) (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x16FEC3: MNN::Interpreter::createMultiPathSession(std::vector<MNN::ScheduleConfig, std::allocator<MNN::ScheduleConfig> > const&) (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x1708AB: MNN::Interpreter::createSession(MNN::ScheduleConfig const&) (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x1536E2: test_main(int, char const**) [clone .isra.0] (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x145BDC: main (in ./mnn/build/MNNV2Basic.out)
==3421355==
==3421355== 120 bytes in 1 blocks are still reachable in loss record 464 of 541
==3421355== at 0x4848899: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==3421355== by 0x5AD5939: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355== by 0x5ACD737: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355== by 0x5956F79: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355== by 0x57D04FA: ??? (in /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.545.29.06)
==3421355== by 0x4881023: ??? (in /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0)
==3421355== by 0x4881FEA: clGetPlatformIDs (in /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0)
==3421355== by 0x3A2B83: cl::Platform::get(std::vector<cl::Platform, std::allocator<cl::Platform> >*, int) (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x3A79EC: MNN::OpenCLRuntime::OpenCLRuntime(MNN::BackendConfig::PrecisionMode, int, int, int, int) (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x38DB7A: MNN::OpenCL::CLRuntimeCreator::onCreate(MNN::Backend::Info const&) const (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x155C09: std::once_flag::_Prepare_execution::_Prepare_execution<std::call_once<MNN::registerBackend()::{lambda()#1}>(std::once_flag&, MNN::registerBackend()::{lambda()#1}&&)::{lambda()#1}>(MNN::registerBackend()::{lambda()#1}&)::{lambda()#1}::_FUN() (in ./mnn/build/MNNV2Basic.out)
==3421355== by 0x4D36EE7: __pthread_once_slow (pthread_once.c:116)
==3421355==
==3421355== LEAK SUMMARY:
==3421355== definitely lost: 0 bytes in 0 blocks
==3421355== indirectly lost: 0 bytes in 0 blocks
==3421355== possibly lost: 2,120 bytes in 15 blocks
==3421355== still reachable: 3,497,681 bytes in 554 blocks
==3421355== suppressed: 0 bytes in 0 blocks
其中
==3421355== possibly lost: 2,120 bytes in 15 blocks
==3421355== still reachable: 3,497,681 bytes in 554 blocks
是否表示存在内存泄漏问题