73 lines
3.4 KiB
Markdown
73 lines
3.4 KiB
Markdown
# Calculet NPU 接口测试报告
|
||
|
||
测试日期:2026-08-01
|
||
测试方式:OpenVPN + SSH,容器内 CalRT C++ API 与 llama.cpp 服务实测
|
||
|
||
## 环境
|
||
|
||
- 远端系统:Ubuntu 24.04,Linux 7.0.0-28-generic,x86_64
|
||
- CPU:32 逻辑核
|
||
- 内存:约 96 GB
|
||
- PCIe 设备:`20f5:c001`
|
||
- 内核驱动:`calculet_pci`
|
||
- 设备节点:`/dev/calculet0`
|
||
- Runtime:`libcalrt-linux-x86_64.so.0.7.6`
|
||
- 模型镜像:`calculet-llama:v0.4.8-release`
|
||
- 模型:Qwen3-30B-A3B,双芯片,40960 context
|
||
|
||
## CalRT C++ API 结果
|
||
|
||
| 测试项 | 接口/行为 | 结果 |
|
||
| --- | --- | --- |
|
||
| 设备刷新 | `CalrtDevice::RefreshDevice()` | 通过 |
|
||
| 创建设备 | `CreatePCIeDevice()` | 通过 |
|
||
| Runtime 状态 | `Status()` | `CalrtSuccess (0)` |
|
||
| 设备名称 | `Name()` | `calculet0` |
|
||
| 设备信息 | `GetDevInfo()` | PCIe、DRAM 32768 MB、SRAM 18 MB、1000 MHz |
|
||
| 工作状态 | `GetDeviceRunningStatus()` | `TAKEN (2)` |
|
||
| 内存用量 | `GetMemoryUsage()` | 已用 1024 MiB;总量返回异常,见问题 1 |
|
||
| 固件信息 | `GetFirmwareInfo()` | 通过,返回 0 |
|
||
| 设备内存分配 | `CreateBuf(4096, 12)` | 通过 |
|
||
| Host 到 Device | `WriteToDevice()` | 通过,返回 0 |
|
||
| Device 到 Host | `ReadFromDevice()` | 通过,返回 0 |
|
||
| 数据一致性 | 4096 字节逐字节比较 | 通过 |
|
||
| 设备内存释放 | `FreeBuf()` | 已执行 |
|
||
|
||
## 模型服务结果
|
||
|
||
- CalcoreRT 初始化成功。
|
||
- CalRT 初始化成功。
|
||
- 双芯片模型配置成功。
|
||
- `/health`:HTTP 200,约 0.10 秒。
|
||
- `/v1/models`:HTTP 200,模型可见。
|
||
- `/v1/chat/completions` 非流式:HTTP 200,回答正确。
|
||
- `/v1/chat/completions` 流式:SSE 分片正常返回。
|
||
- 27 token 首次 prefill:184.27 token/s。
|
||
- 246 token 生成:58.25 token/s。
|
||
- 正确内容请求端到端耗时:4.41 秒。
|
||
|
||
## 发现的问题
|
||
|
||
1. `GetMemoryUsage()` 返回的总 DRAM 值约为 `3.05176e-05 MiB`,与 `GetDevInfo()` 的 32768 MB 明显矛盾。疑似 CalRT 0.7.6 的单位换算、返回类型或 ABI 问题。
|
||
2. `chat_template_kwargs.enable_thinking=false` 未生效。Qwen3 仍返回 `reasoning_content`,短 `max_tokens` 请求可能耗尽预算并导致 `content` 为空。
|
||
3. user2 的 rootless Podman pause process 会随短 SSH 会话退出而失效,出现 `invalid internal status` 和残留锁错误。单一持续 SSH 会话或一次性 `podman run --rm` 可规避;建议配置 user lingering 或修复 Podman 会话生命周期。
|
||
4. 文档称 user2 无 sudo 权限,但该账号实际属于 `sudo` 组。建议对方核对最小权限配置。
|
||
|
||
## 未执行接口
|
||
|
||
以下接口可能改变共享设备状态、清除配置或直接操作寄存器,本轮未执行:
|
||
|
||
- 设备复位、CCU 复位
|
||
- 清除设备配置或全部设备内存
|
||
- 设置电源模式
|
||
- 寄存器写入及未提供安全地址范围的寄存器读取
|
||
- 注册固定 DRAM/SRAM/同步单元地址
|
||
- 使用非本测试模型执行完整 calbin configure/infer 流程
|
||
|
||
## 首轮接口测试收尾与当前状态
|
||
|
||
- 首轮模型服务已停止,8031 端口已关闭;一次性测试容器已退出并删除。
|
||
- 随后为执行全量资料归档,测试方重新连接了 VPN,并保留本地认证配置用于断点续传。
|
||
- 远端当前保留 `/home/user2/calculet-analysis-export` 归档目录及三个顶层分析文件;没有测试二进制或 NPU 占用进程。
|
||
- 详细远端影响和后续清理范围见 `Calculet-NPU-远端环境变更与交接说明-20260801.md`。
|