为了优化GPU初始化时间,MNN将当前机型编译好的program转成二进制、Auto-tuning出的最佳配置进行记录,并存储成Cache文件。之后初始化的时候加载Cache文件读取二进制版program(无需编译源码)和tune好的配置信息(无需再次Auto-tuning),从而大大提高初始化速度。如果应用仅限某种或某几种特定机型,可以事先生成好该机型的...
默认关闭,开启后,编译Metal部分,可以通过指定MNN_FORWARD_METAL利用GPU进行推理,仅限iOS或macOS上开启。 MNN_ARM82 默认关闭,开启后,编译Arm8.2部分,用Arm8.2+扩展指令集实现半精度浮点计算(fp16)和int8(sdot)加速 使用Arm82+扩展指令的方法如下: // 创建session需要的配置MNN::ScheduleConfig config;// 选择Back...
ARM Mali GPU并没有很友好的Texture处理器和L1 Cache(官方未提及),官方开源项目采用Buffer-object存储模式,可见目前Buffer-object对ARM Mali GPU更有优势。 MNN OpenCL2020年之前已经支持Image-object,今年新增了对Buffer-object内存对象格式的支持,针对不同硬件平台和算法模型,MNN OpenCL目前框架内支持根据实验经验化,...
GPU下MNN的这个性能就碾压NCNN了,看来NCNN的Vulkan还是有待打磨。 【后话】 从我有限的MNN使用来看,NCNN在使用上要比MNN更方便一点,很多操作都跟直观,最重要的是NCNN的互动性很好,qq群交流氛围很好,很多问题能及时得到解决。而MNN的钉钉群真的就跟打卡一样,感觉项目归属感不强。从性能来看MNN是很优秀的,但感...
默认关闭,开启后,编译Vulkan部分,可以通过指定MNN_FORWARD_VULKAN利用GPU进行推理。 MNN_METAL 默认关闭,开启后,编译Metal部分,可以通过指定MNN_FORWARD_METAL利用GPU进行推理,仅限iOS或macOS上开启。 MNN_ARM82 默认关闭,开启后,编译Arm8.2部分,用Arm8.2+扩展指令集实现半精度浮点计算(fp16)和int8(sdot)加速 ...
MNN提供了详细的编译和部署指南。例如,通过配置不同的编译选项(如-DMNN_LOW_MEMORY=true、-DMNN_BUILD_LLM=true等),可以针对端侧设备优化性能。8.性能测试与对比 在实际测试中,MNN-LLM的CPU解码速度比其他方案快20-50%,尤其是在Prefill阶段快于其他方案1倍以上。GPU性能在小模型上快于其他方案30%以上。
支持 CNN、RNN、GAN 等常用网络;支持 86 个 TensorflowOp、34 个 CaffeOp ;各计算设备支持的 MNN Op 数:CPU 71 个,Metal 55 个,OpenCL 40 个,Vulkan 35 个;支持 iOS 8.0+、Android 4.3+ 和具有POSIX接口的嵌入式设备;支持异构设备混合计算,目前支持 CPU 和 GPU,可以动态导入 GPU Op 插件,...
(version: 11.2, archs: sm_70) -- message -D_FORCE_INLINES -Wno-deprecated-gpu-targets -w -O3 -gencode arch=compute_60,code=sm_60 -gencode arch=compute_61,code=sm_61 -gencode arch=compute_62,code=sm_62 -gencode arch=compute_70,code=sm_70 -gencode arch=compute_72,code=sm_72 ...
网络中有可能需要做多路并行,比如 CPU、GPU 各一路,这样之前按整个网络算出来的内存地址就无效了。 MNN 采用一种灵活而简单的策略,解决了资源预分配与复用的问题: 1.计算一遍数据依赖,为每个 Tensor 计算引用计数 2.针对每个算子,把资源管理与计算的代码分开,其中资源管理的代码包括: (1)计算输出大小 (...