riscv: add bf16 BinaryOp inference (#7222)
riscv: add bf16 BinaryOp inference
Update binaryop_riscv.cpp
riscv: share BinaryOp functors with bf16 and keep scalar b in fp32
The bf16 functors lived in binaryop_bf16s.h under a fixed namespace, so the rvv, xtheadvector and zvfbfmin objects defined identical inline functor symbols with different ISA code. Move the fp32 functor table into binaryop_functor.h following the x86 functor header: no namespace in the header, NCNN_FORCEINLINE members, each includer wraps it and keeps its own op switch. The bf16 kernels use e16m4/f32m8 to reuse those functors, and dispatch to zvfbfmin per row like x86 binaryop.
forward_inplace_bf16s rounded the scalar b to bf16 before computing; pass it as float to a dedicated scalar-b kernel, as arm does.
Co-Authored-By: Claude Opus 5.5 (1M context) noreply@anthropic.com
Co-authored-by: nihui shuizhuyuanluo@126.com Co-authored-by: nihui nihuini@tencent.com Co-authored-by: Claude Opus 5.5 (1M context) noreply@anthropic.com
版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9
京公网安备 11010802047560号
ncnn
ncnn is a high-performance neural network inference framework optimized for mobile, embedded, and desktop deployment. It has no third-party runtime dependencies, runs across CPU and Vulkan GPU backends, and provides tools such as pnnx for converting PyTorch and ONNX models to ncnn. Developers can deploy deep learning models efficiently on phones, PCs, browsers, and edge devices. ncnn is currently being used in many Tencent applications, such as QQ, Qzone, WeChat, Pitu, and so on.
ncnn 是一个面向移动端、嵌入式和桌面端部署优化的高性能神经网络推理框架。 ncnn 无第三方运行时依赖,支持 CPU 和 Vulkan GPU 后端,并提供 pnnx 等工具将 PyTorch 和 ONNX 模型转换为 ncnn 模型。 基于 ncnn,开发者可以将深度学习模型高效部署到手机、PC、浏览器和边缘设备上。 ncnn 目前已在腾讯多款应用中使用,如:QQ,Qzone,微信,天天 P 图等。
Quick Start
The recommended beginner path is PyTorch -> pnnx -> ncnn.
Install pnnx in a PyTorch environment
Export a PyTorch model to ncnn
This generates
model.ncnn.paramandmodel.ncnn.bin.Run with ncnn C++ API
Or use Python
See pnnx, use ncnn with PyTorch or ONNX, Python API, and examples for complete workflows.
Community
637093648 (超多大佬)
答案:卷卷卷卷卷(已满)
https://t.me/ncnnyes
https://discord.gg/YRsxgmF
677104663 (超多大佬)
答案:multi-level intermediate representation
818998520 (新群!)
Download & Build status
https://github.com/Tencent/ncnn/releases/latest
how to build ncnn library on Linux / Windows / macOS / Raspberry Pi3, Pi4 / POWER / Android / NVIDIA Jetson / iOS / WebAssembly / AllWinner D1 / Loongson 2K1000
Build
Use the prebuilt packages above when possible. To build from source, see the full how to build ncnn library guide for Linux, Windows, macOS, Android, iOS, WebAssembly, HarmonyOS, Raspberry Pi, Jetson, and embedded targets.
Common Linux build:
Model Conversion
pnnx.export(model, "model.pt", (input_tensor,))orpnnx model.pt inputshape=[...]pnnx model.onnxncnnoptimize model.param model.bin new.param new.bin flagUse Netron to inspect
.param,.onnx, and.pnnx.paramgraphs.Features
.paramand.binmodels.Model and Workload Coverage
ncnn is still strong for classic and mobile CNN workloads, but current usage is broader than CNN-only deployment.
For operator-level detail, see supported PyTorch operator status, supported ONNX operator status, and operation param weight table.
Project Examples
Documentation And FAQ
License
BSD 3 Clause