Datenlord · 1月2日 · 新疆

开源周报第三期

本文为达坦科技DatenLord新系列文章【开源周报】的第三篇。

设立这一系列的初衷,是为了更透明地分享达坦科技开源项目的成长轨迹。在这里,我们不仅会同步项目近期的核心开发进展与技术突破,更将通过路线图为您揭示未来的演进方向。

📍 项目地址与参与

GitHub 仓库:https://github.com/open-rdma/...

我们诚挚邀请所有对高性能网络、Rust系统编程或RDMA技术感兴趣的朋友点击链接关注、支持我们的项目。开源的力量源于社区。您的每一次关注、讨论或代码贡献,都是项目前进的重要动力。期待与您携手,共建更完善的高性能基础设施生态。

01、本周进展

本周核心目标:完善RCCL仿真模式测试框架,修复发现的bug,推进高压测试稳定性

本周主要围绕RCCL仿真模式测试展开工作,建立了完善的测试框架,发现并修复了多个关键bug,但在高压测试中遇到了仿真器稳定性问题。

  1. 建立基础测试框架 (commit: 0c3e32a)

实现:

  • 创建统一测试脚本,支持基本的一键运行
  • 实现test_common.sh,包含信号处理、仿真器管理、日志收集
  • 为RCCL和基础测试创建专用脚本

当前状态:

  • 框架初步可用,但功能有限
  • 需要进一步完善错误处理和测试验证
  1. 修复基础测试中的状态机问题 (commit: ca025d5)

问题描述:

  • 回环测试(loopback)中的RDMA连接状态机实现不正确
  • 缺少从INIT到RTR再到RTS的完整状态转换
  • 静态缓冲区分配无法适应不同大小的传输需求

修复内容:

  • 在loopback.c中实现了完整的RC连接状态机:
  • 正确实现了INIT→RTR→RTS的状态转换
  • 添加了状态检查和错误处理
  • 支持动态缓冲区分配,根据传输大小申请适当内存
  • 优化了send_recv.c中的缓冲区管理

效果:

  • 基础测试现在能正确建立RC连接
  • 支持更大规模的数据传输测试
  • 为发现仿真器高压问题提供了测试基础
  1. 修复虚拟地址到物理地址转换问题 (commit: d75e3b4)

问题:仿真模式下virt_to_phys_range函数无法正确翻译地址

解决:测试程序需要sudo权限读取/proc/self/pagemap

状态:已修复

  1. 实现匿名大页检测功能 (commit: 7590fc1)

背景:

  • 驱动要求注册的MR必须使用2MB大页内存
  • 需要验证RCCL通过hack_libc分配的内存确实是大页

实现内容:

  • 在rdma_utils/pagemaps.rs中实现了check_addr_is_anon_hugepage函数
  • 通过读取/proc/self/pagemap检查指定地址是否为匿名大页
  • 在内存注册时增加大页验证,非大页内存拒绝注册

意义:

  • 确保RCCL测试使用的内存满足驱动要求
  • 提前发现内存分配问题,避免后续运行错误

02、发现的关键问题

  1. 仿真器高压稳定性问题

现象: 在高压运行普通sim测试(传输2MB数据)时,仿真器出现断言失败:

INFO cocotb: ImmAssert failed in mkBsvTopWithoutHardIpInstance.topLevelDmaChannelMux @time=18331000: "/home/peng/projects/rdma_all/open-rdma-rtl/src/FullyPipelineChecker.bsv", line 118, column 25
INFO cocotb: -- DataStream checkFullyPipeline Failed:
name = mkTopLevelDmaChannelMux muxInst write, lastBeatCnt=9140, curBeatCnt=9163, delta=23

分析:

  • checkFullyPipeline检查失败,DMA通道的数据流出现了23个beat的差异
  • 可能是流水线控制逻辑在高负载下出现竞争条件
  • 暂时关闭fullcheck检查后,测试可以运行但1小时未完成

后续计划:

  • 调研cocotb仿真器行为,确认是否是仿真器代码问题
  • 调试硬件RTL代码,检查流水线控制逻辑
  • 分析高压场景下的时序和竞争条件
  1. NCCL重复注册MR问题

问题:

  • NCCL会注册两个映射到同一个物理页的MR
  • 这会导致同一个物理页面被重复pin/unpin
  • 可能影响硬件的MTT和PGT管理逻辑

当前状态:

  • 已初步修改代码避免重复pin/unpin同一物理页面
  • 可能需要调整向硬件注册MTT和PGT的逻辑
  • 修改后的代码还需要进一步验证正确性
  1. Post Recv WR时找不到QP问题

现象:

  • 在post接收WR时系统提示找不到对应的QP
  • 但QP明明在前面已经成功注册过
  • 可能是QP查找逻辑或状态管理存在问题

后续计划:

  • 深入调试QP管理代码
  • 检查QP生命周期管理和查找逻辑

03、下周规划

短期任务(最高优先级)

  1. 解决仿真器高压稳定性问题
  • 深入分析checkFullyPipeline失败的根因
  • 测试cocotb仿真器行为
  1. 完成RCCL sim模式测试
  • 修复NCCL重复注册MR问题
  • 验证当前修改的正确性
  • 完善MTT/PGT注册逻辑
  • 解决post recv时找不到QP问题
  • 定位找不到QP的根本原因
  • 修复QP状态管理或查找逻辑

中期任务

  1. 完善测试框架
  • 增加更多测试用例和场景
  • 实现测试结果自动验证
  • 添加性能基准测试
  1. 推进RCCL完整功能支持
  • 在所有bug修复完成后,验证RCCL完整功能
  • 支持更多collective操作测试

长期任务

  1. Driver 重构
  • 优化代码架构,提升可维护性
  • 重构核心模块,使得模块对外接口更为简洁同时正确处理错误
  1. GPU 内存注册支持
  • 调研 dma-buf 内核接口的实现细节
  • 设计内核模块中的 GPU 内存映射机制
  • 实现 ibv_reg_dmabuf_mr verbs 支持

04、本周总结

本周继续推进在RCCL在驱动的仿真模式下的测试:

成果:

  • 建立了基础测试框架,支持简单的一键运行
  • 修复了基础测试中的状态机问题
  • 实现了匿名大页检测
  • 发现了仿真器高压稳定性问题

挑战:

  • 仿真器在高压测试下出现流水线检查失败,需要深入调试
  • NCCL重复注册和QP查找问题需要进一步分析

达坦科技始终致力于打造高性能AI+Cloud基础设施平台,积极推动AI应用的落地。达坦科技通过软硬件深度融合的方式,提供AI推理引擎和高性能网络,为AI应用提供弹性、便利、经济的基础设施服务,以此满足不同行业客户对AI+Cloud的需求。

公众号:达坦科技DatenLord

DatenLord官网:

https://datenlord.github.io/z...

知乎账号:

https://www.zhihu.com/org/da-...

B站:

https://space.bilibili.com/20...

邮箱:info@datenlord.com

如果您有兴趣加入达坦科技Rust前沿技术交流群、硬件敏捷开发和验证方法学讨论群或AI Infra 交流群,请添加小助手微信:DatenLord_Tech

推荐阅读
关注数
9
文章数
40
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息